ads1115 only
Fork of mbed by
Revision 82:6473597d706e, committed 2014-04-07
- Comitter:
- bogdanm
- Date:
- Mon Apr 07 18:28:36 2014 +0100
- Parent:
- 81:7d30d6019079
- Child:
- 83:8a40adfe8776
- Commit message:
- Release 82 of the mbed library
Main changes:
- support for K64F
- Revisited Nordic code structure
- Test infrastructure improvements
- various bug fixes
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/MK64F12.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,13416 @@ +/* +** ################################################################### +** Processor: MK64FN1M0VMD12 +** Compilers: ARM Compiler +** Freescale C/C++ for Embedded ARM +** GNU C Compiler +** GNU C Compiler - CodeSourcery Sourcery G++ +** IAR ANSI C/C++ Compiler for ARM +** +** Reference manual: K64P144M120SF5RM, Rev.1, July 2013 +** Version: rev. 2.1, 2013-10-29 +** +** Abstract: +** CMSIS Peripheral Access Layer for MK64F12 +** +** Copyright: 1997 - 2013 Freescale, Inc. All Rights Reserved. +** +** http: www.freescale.com +** mail: support@freescale.com +** +** Revisions: +** - rev. 1.0 (2013-08-12) +** Initial version. +** - rev. 2.0 (2013-10-29) +** Register accessor macros added to the memory map. +** Symbols for Processor Expert memory map compatibility added to the memory map. +** Startup file for gcc has been updated according to CMSIS 3.2. +** System initialization updated. +** MCG - registers updated. +** PORTA, PORTB, PORTC, PORTE - registers for digital filter removed. +** - rev. 2.1 (2013-10-29) +** Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled. +** +** ################################################################### +*/ + +/*! + * @file MK64F12.h + * @version 2.1 + * @date 2013-10-29 + * @brief CMSIS Peripheral Access Layer for MK64F12 + * + * CMSIS Peripheral Access Layer for MK64F12 + */ + +#if !defined(MK64F12_H_) +#define MK64F12_H_ /**< Symbol preventing repeated inclusion */ + + + +/* ---------------------------------------------------------------------------- + -- MCU activation + ---------------------------------------------------------------------------- */ + +/* Prevention from multiple including the same memory map */ +#if !defined(MCU_MK64F12) /* Check if memory map has not been already included */ +#define MCU_MK64F12 + +/* Check if another memory map has not been also included */ +#if (defined(MCU_ACTIVE)) + #error MK64F12 memory map: There is already included another memory map. Only one memory map can be included. +#endif /* (defined(MCU_ACTIVE)) */ +#define MCU_ACTIVE + +#include <stdint.h> + +/** Memory map major version (memory maps with equal major version number are + * compatible) */ +#define MCU_MEM_MAP_VERSION 0x0200u +/** Memory map minor version */ +#define MCU_MEM_MAP_VERSION_MINOR 0x0001u + +/** + * @brief Macro to calculate address of an aliased word in the peripheral + * bitband area for a peripheral register and bit (bit band region 0x40000000 to + * 0x400FFFFF). + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Address of the aliased word in the peripheral bitband area. + */ +#define BITBAND_REGADDR(Reg,Bit) (0x42000000u + (32u*((uint32_t)&(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit)))) +/** + * @brief Macro to access a single bit of a peripheral register (bit band region + * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can + * be used for peripherals with 32bit access allowed. + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Value of the targeted bit in the bit band region. + */ +#define BITBAND_REG32(Reg,Bit) (*((uint32_t volatile*)(BITBAND_REGADDR(Reg,Bit)))) +#define BITBAND_REG(Reg,Bit) (BITBAND_REG32(Reg,Bit)) +/** + * @brief Macro to access a single bit of a peripheral register (bit band region + * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can + * be used for peripherals with 16bit access allowed. + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Value of the targeted bit in the bit band region. + */ +#define BITBAND_REG16(Reg,Bit) (*((uint16_t volatile*)(BITBAND_REGADDR(Reg,Bit)))) +/** + * @brief Macro to access a single bit of a peripheral register (bit band region + * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can + * be used for peripherals with 8bit access allowed. + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Value of the targeted bit in the bit band region. + */ +#define BITBAND_REG8(Reg,Bit) (*((uint8_t volatile*)(BITBAND_REGADDR(Reg,Bit)))) + +/* ---------------------------------------------------------------------------- + -- Interrupt vector numbers + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup Interrupt_vector_numbers Interrupt vector numbers + * @{ + */ + +/** Interrupt Number Definitions */ +typedef enum IRQn { + /* Core interrupts */ + NonMaskableInt_IRQn = -14, /**< Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< Cortex-M4 SV Hard Fault Interrupt */ + MemoryManagement_IRQn = -12, /**< Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< Cortex-M4 System Tick Interrupt */ + + /* Device specific interrupts */ + DMA0_IRQn = 0, /**< DMA Channel 0 Transfer Complete */ + DMA1_IRQn = 1, /**< DMA Channel 1 Transfer Complete */ + DMA2_IRQn = 2, /**< DMA Channel 2 Transfer Complete */ + DMA3_IRQn = 3, /**< DMA Channel 3 Transfer Complete */ + DMA4_IRQn = 4, /**< DMA Channel 4 Transfer Complete */ + DMA5_IRQn = 5, /**< DMA Channel 5 Transfer Complete */ + DMA6_IRQn = 6, /**< DMA Channel 6 Transfer Complete */ + DMA7_IRQn = 7, /**< DMA Channel 7 Transfer Complete */ + DMA8_IRQn = 8, /**< DMA Channel 8 Transfer Complete */ + DMA9_IRQn = 9, /**< DMA Channel 9 Transfer Complete */ + DMA10_IRQn = 10, /**< DMA Channel 10 Transfer Complete */ + DMA11_IRQn = 11, /**< DMA Channel 11 Transfer Complete */ + DMA12_IRQn = 12, /**< DMA Channel 12 Transfer Complete */ + DMA13_IRQn = 13, /**< DMA Channel 13 Transfer Complete */ + DMA14_IRQn = 14, /**< DMA Channel 14 Transfer Complete */ + DMA15_IRQn = 15, /**< DMA Channel 15 Transfer Complete */ + DMA_Error_IRQn = 16, /**< DMA Error Interrupt */ + MCM_IRQn = 17, /**< Normal Interrupt */ + FTFE_IRQn = 18, /**< FTFE Command complete interrupt */ + Read_Collision_IRQn = 19, /**< Read Collision Interrupt */ + LVD_LVW_IRQn = 20, /**< Low Voltage Detect, Low Voltage Warning */ + LLW_IRQn = 21, /**< Low Leakage Wakeup */ + Watchdog_IRQn = 22, /**< WDOG Interrupt */ + RNG_IRQn = 23, /**< RNG Interrupt */ + I2C0_IRQn = 24, /**< I2C0 interrupt */ + I2C1_IRQn = 25, /**< I2C1 interrupt */ + SPI0_IRQn = 26, /**< SPI0 Interrupt */ + SPI1_IRQn = 27, /**< SPI1 Interrupt */ + I2S0_Tx_IRQn = 28, /**< I2S0 transmit interrupt */ + I2S0_Rx_IRQn = 29, /**< I2S0 receive interrupt */ + UART0_LON_IRQn = 30, /**< UART0 LON interrupt */ + UART0_RX_TX_IRQn = 31, /**< UART0 Receive/Transmit interrupt */ + UART0_ERR_IRQn = 32, /**< UART0 Error interrupt */ + UART1_RX_TX_IRQn = 33, /**< UART1 Receive/Transmit interrupt */ + UART1_ERR_IRQn = 34, /**< UART1 Error interrupt */ + UART2_RX_TX_IRQn = 35, /**< UART2 Receive/Transmit interrupt */ + UART2_ERR_IRQn = 36, /**< UART2 Error interrupt */ + UART3_RX_TX_IRQn = 37, /**< UART3 Receive/Transmit interrupt */ + UART3_ERR_IRQn = 38, /**< UART3 Error interrupt */ + ADC0_IRQn = 39, /**< ADC0 interrupt */ + CMP0_IRQn = 40, /**< CMP0 interrupt */ + CMP1_IRQn = 41, /**< CMP1 interrupt */ + FTM0_IRQn = 42, /**< FTM0 fault, overflow and channels interrupt */ + FTM1_IRQn = 43, /**< FTM1 fault, overflow and channels interrupt */ + FTM2_IRQn = 44, /**< FTM2 fault, overflow and channels interrupt */ + CMT_IRQn = 45, /**< CMT interrupt */ + RTC_IRQn = 46, /**< RTC interrupt */ + RTC_Seconds_IRQn = 47, /**< RTC seconds interrupt */ + PIT0_IRQn = 48, /**< PIT timer channel 0 interrupt */ + PIT1_IRQn = 49, /**< PIT timer channel 1 interrupt */ + PIT2_IRQn = 50, /**< PIT timer channel 2 interrupt */ + PIT3_IRQn = 51, /**< PIT timer channel 3 interrupt */ + PDB0_IRQn = 52, /**< PDB0 Interrupt */ + USB0_IRQn = 53, /**< USB0 interrupt */ + USBDCD_IRQn = 54, /**< USBDCD Interrupt */ + Reserved71_IRQn = 55, /**< Reserved interrupt 71 */ + DAC0_IRQn = 56, /**< DAC0 interrupt */ + MCG_IRQn = 57, /**< MCG Interrupt */ + LPTimer_IRQn = 58, /**< LPTimer interrupt */ + PORTA_IRQn = 59, /**< Port A interrupt */ + PORTB_IRQn = 60, /**< Port B interrupt */ + PORTC_IRQn = 61, /**< Port C interrupt */ + PORTD_IRQn = 62, /**< Port D interrupt */ + PORTE_IRQn = 63, /**< Port E interrupt */ + SWI_IRQn = 64, /**< Software interrupt */ + SPI2_IRQn = 65, /**< SPI2 Interrupt */ + UART4_RX_TX_IRQn = 66, /**< UART4 Receive/Transmit interrupt */ + UART4_ERR_IRQn = 67, /**< UART4 Error interrupt */ + UART5_RX_TX_IRQn = 68, /**< UART5 Receive/Transmit interrupt */ + UART5_ERR_IRQn = 69, /**< UART5 Error interrupt */ + CMP2_IRQn = 70, /**< CMP2 interrupt */ + FTM3_IRQn = 71, /**< FTM3 fault, overflow and channels interrupt */ + DAC1_IRQn = 72, /**< DAC1 interrupt */ + ADC1_IRQn = 73, /**< ADC1 interrupt */ + I2C2_IRQn = 74, /**< I2C2 interrupt */ + CAN0_ORed_Message_buffer_IRQn = 75, /**< CAN0 OR'd message buffers interrupt */ + CAN0_Bus_Off_IRQn = 76, /**< CAN0 bus off interrupt */ + CAN0_Error_IRQn = 77, /**< CAN0 error interrupt */ + CAN0_Tx_Warning_IRQn = 78, /**< CAN0 Tx warning interrupt */ + CAN0_Rx_Warning_IRQn = 79, /**< CAN0 Rx warning interrupt */ + CAN0_Wake_Up_IRQn = 80, /**< CAN0 wake up interrupt */ + SDHC_IRQn = 81, /**< SDHC interrupt */ + ENET_1588_Timer_IRQn = 82, /**< Ethernet MAC IEEE 1588 Timer Interrupt */ + ENET_Transmit_IRQn = 83, /**< Ethernet MAC Transmit Interrupt */ + ENET_Receive_IRQn = 84, /**< Ethernet MAC Receive Interrupt */ + ENET_Error_IRQn = 85 /**< Ethernet MAC Error and miscelaneous Interrupt */ +} IRQn_Type; + +/*! + * @} + */ /* end of group Interrupt_vector_numbers */ + + +/* ---------------------------------------------------------------------------- + -- Cortex M4 Core Configuration + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup Cortex_Core_Configuration Cortex M4 Core Configuration + * @{ + */ + +#define __MPU_PRESENT 0 /**< Defines if an MPU is present or not */ +#define __NVIC_PRIO_BITS 4 /**< Number of priority bits implemented in the NVIC */ +#define __Vendor_SysTickConfig 0 /**< Vendor specific implementation of SysTickConfig is defined */ +#define __FPU_PRESENT 1 /**< Defines if an FPU is present or not */ + +#include "core_cm4.h" /* Core Peripheral Access Layer */ +#include "system_MK64F12.h" /* Device specific configuration file */ + +/*! + * @} + */ /* end of group Cortex_Core_Configuration */ + + +/* ---------------------------------------------------------------------------- + -- Device Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup Peripheral_access_layer Device Peripheral Access Layer + * @{ + */ + + +/* +** Start of section using anonymous unions +*/ + +#if defined(__ARMCC_VERSION) + #pragma push + #pragma anon_unions +#elif defined(__CWCC__) + #pragma push + #pragma cpp_extensions on +#elif defined(__GNUC__) + /* anonymous unions are enabled by default */ +#elif defined(__IAR_SYSTEMS_ICC__) + #pragma language=extended +#else + #error Not supported compiler type +#endif + +/* ---------------------------------------------------------------------------- + -- ADC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ADC_Peripheral_Access_Layer ADC Peripheral Access Layer + * @{ + */ + +/** ADC - Register Layout Typedef */ +typedef struct { + __IO uint32_t SC1[2]; /**< ADC Status and Control Registers 1, array offset: 0x0, array step: 0x4 */ + __IO uint32_t CFG1; /**< ADC Configuration Register 1, offset: 0x8 */ + __IO uint32_t CFG2; /**< ADC Configuration Register 2, offset: 0xC */ + __I uint32_t R[2]; /**< ADC Data Result Register, array offset: 0x10, array step: 0x4 */ + __IO uint32_t CV1; /**< Compare Value Registers, offset: 0x18 */ + __IO uint32_t CV2; /**< Compare Value Registers, offset: 0x1C */ + __IO uint32_t SC2; /**< Status and Control Register 2, offset: 0x20 */ + __IO uint32_t SC3; /**< Status and Control Register 3, offset: 0x24 */ + __IO uint32_t OFS; /**< ADC Offset Correction Register, offset: 0x28 */ + __IO uint32_t PG; /**< ADC Plus-Side Gain Register, offset: 0x2C */ + __IO uint32_t MG; /**< ADC Minus-Side Gain Register, offset: 0x30 */ + __IO uint32_t CLPD; /**< ADC Plus-Side General Calibration Value Register, offset: 0x34 */ + __IO uint32_t CLPS; /**< ADC Plus-Side General Calibration Value Register, offset: 0x38 */ + __IO uint32_t CLP4; /**< ADC Plus-Side General Calibration Value Register, offset: 0x3C */ + __IO uint32_t CLP3; /**< ADC Plus-Side General Calibration Value Register, offset: 0x40 */ + __IO uint32_t CLP2; /**< ADC Plus-Side General Calibration Value Register, offset: 0x44 */ + __IO uint32_t CLP1; /**< ADC Plus-Side General Calibration Value Register, offset: 0x48 */ + __IO uint32_t CLP0; /**< ADC Plus-Side General Calibration Value Register, offset: 0x4C */ + uint8_t RESERVED_0[4]; + __IO uint32_t CLMD; /**< ADC Minus-Side General Calibration Value Register, offset: 0x54 */ + __IO uint32_t CLMS; /**< ADC Minus-Side General Calibration Value Register, offset: 0x58 */ + __IO uint32_t CLM4; /**< ADC Minus-Side General Calibration Value Register, offset: 0x5C */ + __IO uint32_t CLM3; /**< ADC Minus-Side General Calibration Value Register, offset: 0x60 */ + __IO uint32_t CLM2; /**< ADC Minus-Side General Calibration Value Register, offset: 0x64 */ + __IO uint32_t CLM1; /**< ADC Minus-Side General Calibration Value Register, offset: 0x68 */ + __IO uint32_t CLM0; /**< ADC Minus-Side General Calibration Value Register, offset: 0x6C */ +} ADC_Type, *ADC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- ADC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ADC_Register_Accessor_Macros ADC - Register accessor macros + * @{ + */ + + +/* ADC - Register accessors */ +#define ADC_SC1_REG(base,index) ((base)->SC1[index]) +#define ADC_CFG1_REG(base) ((base)->CFG1) +#define ADC_CFG2_REG(base) ((base)->CFG2) +#define ADC_R_REG(base,index) ((base)->R[index]) +#define ADC_CV1_REG(base) ((base)->CV1) +#define ADC_CV2_REG(base) ((base)->CV2) +#define ADC_SC2_REG(base) ((base)->SC2) +#define ADC_SC3_REG(base) ((base)->SC3) +#define ADC_OFS_REG(base) ((base)->OFS) +#define ADC_PG_REG(base) ((base)->PG) +#define ADC_MG_REG(base) ((base)->MG) +#define ADC_CLPD_REG(base) ((base)->CLPD) +#define ADC_CLPS_REG(base) ((base)->CLPS) +#define ADC_CLP4_REG(base) ((base)->CLP4) +#define ADC_CLP3_REG(base) ((base)->CLP3) +#define ADC_CLP2_REG(base) ((base)->CLP2) +#define ADC_CLP1_REG(base) ((base)->CLP1) +#define ADC_CLP0_REG(base) ((base)->CLP0) +#define ADC_CLMD_REG(base) ((base)->CLMD) +#define ADC_CLMS_REG(base) ((base)->CLMS) +#define ADC_CLM4_REG(base) ((base)->CLM4) +#define ADC_CLM3_REG(base) ((base)->CLM3) +#define ADC_CLM2_REG(base) ((base)->CLM2) +#define ADC_CLM1_REG(base) ((base)->CLM1) +#define ADC_CLM0_REG(base) ((base)->CLM0) + +/*! + * @} + */ /* end of group ADC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- ADC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ADC_Register_Masks ADC Register Masks + * @{ + */ + +/* SC1 Bit Fields */ +#define ADC_SC1_ADCH_MASK 0x1Fu +#define ADC_SC1_ADCH_SHIFT 0 +#define ADC_SC1_ADCH(x) (((uint32_t)(((uint32_t)(x))<<ADC_SC1_ADCH_SHIFT))&ADC_SC1_ADCH_MASK) +#define ADC_SC1_DIFF_MASK 0x20u +#define ADC_SC1_DIFF_SHIFT 5 +#define ADC_SC1_AIEN_MASK 0x40u +#define ADC_SC1_AIEN_SHIFT 6 +#define ADC_SC1_COCO_MASK 0x80u +#define ADC_SC1_COCO_SHIFT 7 +/* CFG1 Bit Fields */ +#define ADC_CFG1_ADICLK_MASK 0x3u +#define ADC_CFG1_ADICLK_SHIFT 0 +#define ADC_CFG1_ADICLK(x) (((uint32_t)(((uint32_t)(x))<<ADC_CFG1_ADICLK_SHIFT))&ADC_CFG1_ADICLK_MASK) +#define ADC_CFG1_MODE_MASK 0xCu +#define ADC_CFG1_MODE_SHIFT 2 +#define ADC_CFG1_MODE(x) (((uint32_t)(((uint32_t)(x))<<ADC_CFG1_MODE_SHIFT))&ADC_CFG1_MODE_MASK) +#define ADC_CFG1_ADLSMP_MASK 0x10u +#define ADC_CFG1_ADLSMP_SHIFT 4 +#define ADC_CFG1_ADIV_MASK 0x60u +#define ADC_CFG1_ADIV_SHIFT 5 +#define ADC_CFG1_ADIV(x) (((uint32_t)(((uint32_t)(x))<<ADC_CFG1_ADIV_SHIFT))&ADC_CFG1_ADIV_MASK) +#define ADC_CFG1_ADLPC_MASK 0x80u +#define ADC_CFG1_ADLPC_SHIFT 7 +/* CFG2 Bit Fields */ +#define ADC_CFG2_ADLSTS_MASK 0x3u +#define ADC_CFG2_ADLSTS_SHIFT 0 +#define ADC_CFG2_ADLSTS(x) (((uint32_t)(((uint32_t)(x))<<ADC_CFG2_ADLSTS_SHIFT))&ADC_CFG2_ADLSTS_MASK) +#define ADC_CFG2_ADHSC_MASK 0x4u +#define ADC_CFG2_ADHSC_SHIFT 2 +#define ADC_CFG2_ADACKEN_MASK 0x8u +#define ADC_CFG2_ADACKEN_SHIFT 3 +#define ADC_CFG2_MUXSEL_MASK 0x10u +#define ADC_CFG2_MUXSEL_SHIFT 4 +/* R Bit Fields */ +#define ADC_R_D_MASK 0xFFFFu +#define ADC_R_D_SHIFT 0 +#define ADC_R_D(x) (((uint32_t)(((uint32_t)(x))<<ADC_R_D_SHIFT))&ADC_R_D_MASK) +/* CV1 Bit Fields */ +#define ADC_CV1_CV_MASK 0xFFFFu +#define ADC_CV1_CV_SHIFT 0 +#define ADC_CV1_CV(x) (((uint32_t)(((uint32_t)(x))<<ADC_CV1_CV_SHIFT))&ADC_CV1_CV_MASK) +/* CV2 Bit Fields */ +#define ADC_CV2_CV_MASK 0xFFFFu +#define ADC_CV2_CV_SHIFT 0 +#define ADC_CV2_CV(x) (((uint32_t)(((uint32_t)(x))<<ADC_CV2_CV_SHIFT))&ADC_CV2_CV_MASK) +/* SC2 Bit Fields */ +#define ADC_SC2_REFSEL_MASK 0x3u +#define ADC_SC2_REFSEL_SHIFT 0 +#define ADC_SC2_REFSEL(x) (((uint32_t)(((uint32_t)(x))<<ADC_SC2_REFSEL_SHIFT))&ADC_SC2_REFSEL_MASK) +#define ADC_SC2_DMAEN_MASK 0x4u +#define ADC_SC2_DMAEN_SHIFT 2 +#define ADC_SC2_ACREN_MASK 0x8u +#define ADC_SC2_ACREN_SHIFT 3 +#define ADC_SC2_ACFGT_MASK 0x10u +#define ADC_SC2_ACFGT_SHIFT 4 +#define ADC_SC2_ACFE_MASK 0x20u +#define ADC_SC2_ACFE_SHIFT 5 +#define ADC_SC2_ADTRG_MASK 0x40u +#define ADC_SC2_ADTRG_SHIFT 6 +#define ADC_SC2_ADACT_MASK 0x80u +#define ADC_SC2_ADACT_SHIFT 7 +/* SC3 Bit Fields */ +#define ADC_SC3_AVGS_MASK 0x3u +#define ADC_SC3_AVGS_SHIFT 0 +#define ADC_SC3_AVGS(x) (((uint32_t)(((uint32_t)(x))<<ADC_SC3_AVGS_SHIFT))&ADC_SC3_AVGS_MASK) +#define ADC_SC3_AVGE_MASK 0x4u +#define ADC_SC3_AVGE_SHIFT 2 +#define ADC_SC3_ADCO_MASK 0x8u +#define ADC_SC3_ADCO_SHIFT 3 +#define ADC_SC3_CALF_MASK 0x40u +#define ADC_SC3_CALF_SHIFT 6 +#define ADC_SC3_CAL_MASK 0x80u +#define ADC_SC3_CAL_SHIFT 7 +/* OFS Bit Fields */ +#define ADC_OFS_OFS_MASK 0xFFFFu +#define ADC_OFS_OFS_SHIFT 0 +#define ADC_OFS_OFS(x) (((uint32_t)(((uint32_t)(x))<<ADC_OFS_OFS_SHIFT))&ADC_OFS_OFS_MASK) +/* PG Bit Fields */ +#define ADC_PG_PG_MASK 0xFFFFu +#define ADC_PG_PG_SHIFT 0 +#define ADC_PG_PG(x) (((uint32_t)(((uint32_t)(x))<<ADC_PG_PG_SHIFT))&ADC_PG_PG_MASK) +/* MG Bit Fields */ +#define ADC_MG_MG_MASK 0xFFFFu +#define ADC_MG_MG_SHIFT 0 +#define ADC_MG_MG(x) (((uint32_t)(((uint32_t)(x))<<ADC_MG_MG_SHIFT))&ADC_MG_MG_MASK) +/* CLPD Bit Fields */ +#define ADC_CLPD_CLPD_MASK 0x3Fu +#define ADC_CLPD_CLPD_SHIFT 0 +#define ADC_CLPD_CLPD(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLPD_CLPD_SHIFT))&ADC_CLPD_CLPD_MASK) +/* CLPS Bit Fields */ +#define ADC_CLPS_CLPS_MASK 0x3Fu +#define ADC_CLPS_CLPS_SHIFT 0 +#define ADC_CLPS_CLPS(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLPS_CLPS_SHIFT))&ADC_CLPS_CLPS_MASK) +/* CLP4 Bit Fields */ +#define ADC_CLP4_CLP4_MASK 0x3FFu +#define ADC_CLP4_CLP4_SHIFT 0 +#define ADC_CLP4_CLP4(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP4_CLP4_SHIFT))&ADC_CLP4_CLP4_MASK) +/* CLP3 Bit Fields */ +#define ADC_CLP3_CLP3_MASK 0x1FFu +#define ADC_CLP3_CLP3_SHIFT 0 +#define ADC_CLP3_CLP3(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP3_CLP3_SHIFT))&ADC_CLP3_CLP3_MASK) +/* CLP2 Bit Fields */ +#define ADC_CLP2_CLP2_MASK 0xFFu +#define ADC_CLP2_CLP2_SHIFT 0 +#define ADC_CLP2_CLP2(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP2_CLP2_SHIFT))&ADC_CLP2_CLP2_MASK) +/* CLP1 Bit Fields */ +#define ADC_CLP1_CLP1_MASK 0x7Fu +#define ADC_CLP1_CLP1_SHIFT 0 +#define ADC_CLP1_CLP1(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP1_CLP1_SHIFT))&ADC_CLP1_CLP1_MASK) +/* CLP0 Bit Fields */ +#define ADC_CLP0_CLP0_MASK 0x3Fu +#define ADC_CLP0_CLP0_SHIFT 0 +#define ADC_CLP0_CLP0(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP0_CLP0_SHIFT))&ADC_CLP0_CLP0_MASK) +/* CLMD Bit Fields */ +#define ADC_CLMD_CLMD_MASK 0x3Fu +#define ADC_CLMD_CLMD_SHIFT 0 +#define ADC_CLMD_CLMD(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLMD_CLMD_SHIFT))&ADC_CLMD_CLMD_MASK) +/* CLMS Bit Fields */ +#define ADC_CLMS_CLMS_MASK 0x3Fu +#define ADC_CLMS_CLMS_SHIFT 0 +#define ADC_CLMS_CLMS(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLMS_CLMS_SHIFT))&ADC_CLMS_CLMS_MASK) +/* CLM4 Bit Fields */ +#define ADC_CLM4_CLM4_MASK 0x3FFu +#define ADC_CLM4_CLM4_SHIFT 0 +#define ADC_CLM4_CLM4(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM4_CLM4_SHIFT))&ADC_CLM4_CLM4_MASK) +/* CLM3 Bit Fields */ +#define ADC_CLM3_CLM3_MASK 0x1FFu +#define ADC_CLM3_CLM3_SHIFT 0 +#define ADC_CLM3_CLM3(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM3_CLM3_SHIFT))&ADC_CLM3_CLM3_MASK) +/* CLM2 Bit Fields */ +#define ADC_CLM2_CLM2_MASK 0xFFu +#define ADC_CLM2_CLM2_SHIFT 0 +#define ADC_CLM2_CLM2(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM2_CLM2_SHIFT))&ADC_CLM2_CLM2_MASK) +/* CLM1 Bit Fields */ +#define ADC_CLM1_CLM1_MASK 0x7Fu +#define ADC_CLM1_CLM1_SHIFT 0 +#define ADC_CLM1_CLM1(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM1_CLM1_SHIFT))&ADC_CLM1_CLM1_MASK) +/* CLM0 Bit Fields */ +#define ADC_CLM0_CLM0_MASK 0x3Fu +#define ADC_CLM0_CLM0_SHIFT 0 +#define ADC_CLM0_CLM0(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM0_CLM0_SHIFT))&ADC_CLM0_CLM0_MASK) + +/*! + * @} + */ /* end of group ADC_Register_Masks */ + + +/* ADC - Peripheral instance base addresses */ +/** Peripheral ADC0 base address */ +#define ADC0_BASE (0x4003B000u) +/** Peripheral ADC0 base pointer */ +#define ADC0 ((ADC_Type *)ADC0_BASE) +#define ADC0_BASE_PTR (ADC0) +/** Peripheral ADC1 base address */ +#define ADC1_BASE (0x400BB000u) +/** Peripheral ADC1 base pointer */ +#define ADC1 ((ADC_Type *)ADC1_BASE) +#define ADC1_BASE_PTR (ADC1) +/** Array initializer of ADC peripheral base pointers */ +#define ADC_BASES { ADC0, ADC1 } + +/* ---------------------------------------------------------------------------- + -- ADC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ADC_Register_Accessor_Macros ADC - Register accessor macros + * @{ + */ + + +/* ADC - Register instance definitions */ +/* ADC0 */ +#define ADC0_SC1A ADC_SC1_REG(ADC0,0) +#define ADC0_SC1B ADC_SC1_REG(ADC0,1) +#define ADC0_CFG1 ADC_CFG1_REG(ADC0) +#define ADC0_CFG2 ADC_CFG2_REG(ADC0) +#define ADC0_RA ADC_R_REG(ADC0,0) +#define ADC0_RB ADC_R_REG(ADC0,1) +#define ADC0_CV1 ADC_CV1_REG(ADC0) +#define ADC0_CV2 ADC_CV2_REG(ADC0) +#define ADC0_SC2 ADC_SC2_REG(ADC0) +#define ADC0_SC3 ADC_SC3_REG(ADC0) +#define ADC0_OFS ADC_OFS_REG(ADC0) +#define ADC0_PG ADC_PG_REG(ADC0) +#define ADC0_MG ADC_MG_REG(ADC0) +#define ADC0_CLPD ADC_CLPD_REG(ADC0) +#define ADC0_CLPS ADC_CLPS_REG(ADC0) +#define ADC0_CLP4 ADC_CLP4_REG(ADC0) +#define ADC0_CLP3 ADC_CLP3_REG(ADC0) +#define ADC0_CLP2 ADC_CLP2_REG(ADC0) +#define ADC0_CLP1 ADC_CLP1_REG(ADC0) +#define ADC0_CLP0 ADC_CLP0_REG(ADC0) +#define ADC0_CLMD ADC_CLMD_REG(ADC0) +#define ADC0_CLMS ADC_CLMS_REG(ADC0) +#define ADC0_CLM4 ADC_CLM4_REG(ADC0) +#define ADC0_CLM3 ADC_CLM3_REG(ADC0) +#define ADC0_CLM2 ADC_CLM2_REG(ADC0) +#define ADC0_CLM1 ADC_CLM1_REG(ADC0) +#define ADC0_CLM0 ADC_CLM0_REG(ADC0) +/* ADC1 */ +#define ADC1_SC1A ADC_SC1_REG(ADC1,0) +#define ADC1_SC1B ADC_SC1_REG(ADC1,1) +#define ADC1_CFG1 ADC_CFG1_REG(ADC1) +#define ADC1_CFG2 ADC_CFG2_REG(ADC1) +#define ADC1_RA ADC_R_REG(ADC1,0) +#define ADC1_RB ADC_R_REG(ADC1,1) +#define ADC1_CV1 ADC_CV1_REG(ADC1) +#define ADC1_CV2 ADC_CV2_REG(ADC1) +#define ADC1_SC2 ADC_SC2_REG(ADC1) +#define ADC1_SC3 ADC_SC3_REG(ADC1) +#define ADC1_OFS ADC_OFS_REG(ADC1) +#define ADC1_PG ADC_PG_REG(ADC1) +#define ADC1_MG ADC_MG_REG(ADC1) +#define ADC1_CLPD ADC_CLPD_REG(ADC1) +#define ADC1_CLPS ADC_CLPS_REG(ADC1) +#define ADC1_CLP4 ADC_CLP4_REG(ADC1) +#define ADC1_CLP3 ADC_CLP3_REG(ADC1) +#define ADC1_CLP2 ADC_CLP2_REG(ADC1) +#define ADC1_CLP1 ADC_CLP1_REG(ADC1) +#define ADC1_CLP0 ADC_CLP0_REG(ADC1) +#define ADC1_CLMD ADC_CLMD_REG(ADC1) +#define ADC1_CLMS ADC_CLMS_REG(ADC1) +#define ADC1_CLM4 ADC_CLM4_REG(ADC1) +#define ADC1_CLM3 ADC_CLM3_REG(ADC1) +#define ADC1_CLM2 ADC_CLM2_REG(ADC1) +#define ADC1_CLM1 ADC_CLM1_REG(ADC1) +#define ADC1_CLM0 ADC_CLM0_REG(ADC1) + +/* ADC - Register array accessors */ +#define ADC0_SC1(index) ADC_SC1_REG(ADC0,index) +#define ADC1_SC1(index) ADC_SC1_REG(ADC1,index) +#define ADC0_R(index) ADC_R_REG(ADC0,index) +#define ADC1_R(index) ADC_R_REG(ADC1,index) + +/*! + * @} + */ /* end of group ADC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group ADC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- AIPS Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AIPS_Peripheral_Access_Layer AIPS Peripheral Access Layer + * @{ + */ + +/** AIPS - Register Layout Typedef */ +typedef struct { + __IO uint32_t MPRA; /**< Master Privilege Register A, offset: 0x0 */ + uint8_t RESERVED_0[28]; + __IO uint32_t PACRA; /**< Peripheral Access Control Register, offset: 0x20 */ + __IO uint32_t PACRB; /**< Peripheral Access Control Register, offset: 0x24 */ + __IO uint32_t PACRC; /**< Peripheral Access Control Register, offset: 0x28 */ + __IO uint32_t PACRD; /**< Peripheral Access Control Register, offset: 0x2C */ + uint8_t RESERVED_1[16]; + __IO uint32_t PACRE; /**< Peripheral Access Control Register, offset: 0x40 */ + __IO uint32_t PACRF; /**< Peripheral Access Control Register, offset: 0x44 */ + __IO uint32_t PACRG; /**< Peripheral Access Control Register, offset: 0x48 */ + __IO uint32_t PACRH; /**< Peripheral Access Control Register, offset: 0x4C */ + __IO uint32_t PACRI; /**< Peripheral Access Control Register, offset: 0x50 */ + __IO uint32_t PACRJ; /**< Peripheral Access Control Register, offset: 0x54 */ + __IO uint32_t PACRK; /**< Peripheral Access Control Register, offset: 0x58 */ + __IO uint32_t PACRL; /**< Peripheral Access Control Register, offset: 0x5C */ + __IO uint32_t PACRM; /**< Peripheral Access Control Register, offset: 0x60 */ + __IO uint32_t PACRN; /**< Peripheral Access Control Register, offset: 0x64 */ + __IO uint32_t PACRO; /**< Peripheral Access Control Register, offset: 0x68 */ + __IO uint32_t PACRP; /**< Peripheral Access Control Register, offset: 0x6C */ + uint8_t RESERVED_2[16]; + __IO uint32_t PACRU; /**< Peripheral Access Control Register, offset: 0x80 */ +} AIPS_Type, *AIPS_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- AIPS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AIPS_Register_Accessor_Macros AIPS - Register accessor macros + * @{ + */ + + +/* AIPS - Register accessors */ +#define AIPS_MPRA_REG(base) ((base)->MPRA) +#define AIPS_PACRA_REG(base) ((base)->PACRA) +#define AIPS_PACRB_REG(base) ((base)->PACRB) +#define AIPS_PACRC_REG(base) ((base)->PACRC) +#define AIPS_PACRD_REG(base) ((base)->PACRD) +#define AIPS_PACRE_REG(base) ((base)->PACRE) +#define AIPS_PACRF_REG(base) ((base)->PACRF) +#define AIPS_PACRG_REG(base) ((base)->PACRG) +#define AIPS_PACRH_REG(base) ((base)->PACRH) +#define AIPS_PACRI_REG(base) ((base)->PACRI) +#define AIPS_PACRJ_REG(base) ((base)->PACRJ) +#define AIPS_PACRK_REG(base) ((base)->PACRK) +#define AIPS_PACRL_REG(base) ((base)->PACRL) +#define AIPS_PACRM_REG(base) ((base)->PACRM) +#define AIPS_PACRN_REG(base) ((base)->PACRN) +#define AIPS_PACRO_REG(base) ((base)->PACRO) +#define AIPS_PACRP_REG(base) ((base)->PACRP) +#define AIPS_PACRU_REG(base) ((base)->PACRU) + +/*! + * @} + */ /* end of group AIPS_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- AIPS Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AIPS_Register_Masks AIPS Register Masks + * @{ + */ + +/* PACRA Bit Fields */ +#define AIPS_PACRA_TP7_MASK 0x1u +#define AIPS_PACRA_TP7_SHIFT 0 +#define AIPS_PACRA_WP7_MASK 0x2u +#define AIPS_PACRA_WP7_SHIFT 1 +#define AIPS_PACRA_SP7_MASK 0x4u +#define AIPS_PACRA_SP7_SHIFT 2 +#define AIPS_PACRA_TP6_MASK 0x10u +#define AIPS_PACRA_TP6_SHIFT 4 +#define AIPS_PACRA_WP6_MASK 0x20u +#define AIPS_PACRA_WP6_SHIFT 5 +#define AIPS_PACRA_SP6_MASK 0x40u +#define AIPS_PACRA_SP6_SHIFT 6 +#define AIPS_PACRA_TP5_MASK 0x100u +#define AIPS_PACRA_TP5_SHIFT 8 +#define AIPS_PACRA_WP5_MASK 0x200u +#define AIPS_PACRA_WP5_SHIFT 9 +#define AIPS_PACRA_SP5_MASK 0x400u +#define AIPS_PACRA_SP5_SHIFT 10 +#define AIPS_PACRA_TP4_MASK 0x1000u +#define AIPS_PACRA_TP4_SHIFT 12 +#define AIPS_PACRA_WP4_MASK 0x2000u +#define AIPS_PACRA_WP4_SHIFT 13 +#define AIPS_PACRA_SP4_MASK 0x4000u +#define AIPS_PACRA_SP4_SHIFT 14 +#define AIPS_PACRA_TP3_MASK 0x10000u +#define AIPS_PACRA_TP3_SHIFT 16 +#define AIPS_PACRA_WP3_MASK 0x20000u +#define AIPS_PACRA_WP3_SHIFT 17 +#define AIPS_PACRA_SP3_MASK 0x40000u +#define AIPS_PACRA_SP3_SHIFT 18 +#define AIPS_PACRA_TP2_MASK 0x100000u +#define AIPS_PACRA_TP2_SHIFT 20 +#define AIPS_PACRA_WP2_MASK 0x200000u +#define AIPS_PACRA_WP2_SHIFT 21 +#define AIPS_PACRA_SP2_MASK 0x400000u +#define AIPS_PACRA_SP2_SHIFT 22 +#define AIPS_PACRA_TP1_MASK 0x1000000u +#define AIPS_PACRA_TP1_SHIFT 24 +#define AIPS_PACRA_WP1_MASK 0x2000000u +#define AIPS_PACRA_WP1_SHIFT 25 +#define AIPS_PACRA_SP1_MASK 0x4000000u +#define AIPS_PACRA_SP1_SHIFT 26 +#define AIPS_PACRA_TP0_MASK 0x10000000u +#define AIPS_PACRA_TP0_SHIFT 28 +#define AIPS_PACRA_WP0_MASK 0x20000000u +#define AIPS_PACRA_WP0_SHIFT 29 +#define AIPS_PACRA_SP0_MASK 0x40000000u +#define AIPS_PACRA_SP0_SHIFT 30 +/* PACRB Bit Fields */ +#define AIPS_PACRB_TP7_MASK 0x1u +#define AIPS_PACRB_TP7_SHIFT 0 +#define AIPS_PACRB_WP7_MASK 0x2u +#define AIPS_PACRB_WP7_SHIFT 1 +#define AIPS_PACRB_SP7_MASK 0x4u +#define AIPS_PACRB_SP7_SHIFT 2 +#define AIPS_PACRB_TP6_MASK 0x10u +#define AIPS_PACRB_TP6_SHIFT 4 +#define AIPS_PACRB_WP6_MASK 0x20u +#define AIPS_PACRB_WP6_SHIFT 5 +#define AIPS_PACRB_SP6_MASK 0x40u +#define AIPS_PACRB_SP6_SHIFT 6 +#define AIPS_PACRB_TP5_MASK 0x100u +#define AIPS_PACRB_TP5_SHIFT 8 +#define AIPS_PACRB_WP5_MASK 0x200u +#define AIPS_PACRB_WP5_SHIFT 9 +#define AIPS_PACRB_SP5_MASK 0x400u +#define AIPS_PACRB_SP5_SHIFT 10 +#define AIPS_PACRB_TP4_MASK 0x1000u +#define AIPS_PACRB_TP4_SHIFT 12 +#define AIPS_PACRB_WP4_MASK 0x2000u +#define AIPS_PACRB_WP4_SHIFT 13 +#define AIPS_PACRB_SP4_MASK 0x4000u +#define AIPS_PACRB_SP4_SHIFT 14 +#define AIPS_PACRB_TP3_MASK 0x10000u +#define AIPS_PACRB_TP3_SHIFT 16 +#define AIPS_PACRB_WP3_MASK 0x20000u +#define AIPS_PACRB_WP3_SHIFT 17 +#define AIPS_PACRB_SP3_MASK 0x40000u +#define AIPS_PACRB_SP3_SHIFT 18 +#define AIPS_PACRB_TP2_MASK 0x100000u +#define AIPS_PACRB_TP2_SHIFT 20 +#define AIPS_PACRB_WP2_MASK 0x200000u +#define AIPS_PACRB_WP2_SHIFT 21 +#define AIPS_PACRB_SP2_MASK 0x400000u +#define AIPS_PACRB_SP2_SHIFT 22 +#define AIPS_PACRB_TP1_MASK 0x1000000u +#define AIPS_PACRB_TP1_SHIFT 24 +#define AIPS_PACRB_WP1_MASK 0x2000000u +#define AIPS_PACRB_WP1_SHIFT 25 +#define AIPS_PACRB_SP1_MASK 0x4000000u +#define AIPS_PACRB_SP1_SHIFT 26 +#define AIPS_PACRB_TP0_MASK 0x10000000u +#define AIPS_PACRB_TP0_SHIFT 28 +#define AIPS_PACRB_WP0_MASK 0x20000000u +#define AIPS_PACRB_WP0_SHIFT 29 +#define AIPS_PACRB_SP0_MASK 0x40000000u +#define AIPS_PACRB_SP0_SHIFT 30 +/* PACRC Bit Fields */ +#define AIPS_PACRC_TP7_MASK 0x1u +#define AIPS_PACRC_TP7_SHIFT 0 +#define AIPS_PACRC_WP7_MASK 0x2u +#define AIPS_PACRC_WP7_SHIFT 1 +#define AIPS_PACRC_SP7_MASK 0x4u +#define AIPS_PACRC_SP7_SHIFT 2 +#define AIPS_PACRC_TP6_MASK 0x10u +#define AIPS_PACRC_TP6_SHIFT 4 +#define AIPS_PACRC_WP6_MASK 0x20u +#define AIPS_PACRC_WP6_SHIFT 5 +#define AIPS_PACRC_SP6_MASK 0x40u +#define AIPS_PACRC_SP6_SHIFT 6 +#define AIPS_PACRC_TP5_MASK 0x100u +#define AIPS_PACRC_TP5_SHIFT 8 +#define AIPS_PACRC_WP5_MASK 0x200u +#define AIPS_PACRC_WP5_SHIFT 9 +#define AIPS_PACRC_SP5_MASK 0x400u +#define AIPS_PACRC_SP5_SHIFT 10 +#define AIPS_PACRC_TP4_MASK 0x1000u +#define AIPS_PACRC_TP4_SHIFT 12 +#define AIPS_PACRC_WP4_MASK 0x2000u +#define AIPS_PACRC_WP4_SHIFT 13 +#define AIPS_PACRC_SP4_MASK 0x4000u +#define AIPS_PACRC_SP4_SHIFT 14 +#define AIPS_PACRC_TP3_MASK 0x10000u +#define AIPS_PACRC_TP3_SHIFT 16 +#define AIPS_PACRC_WP3_MASK 0x20000u +#define AIPS_PACRC_WP3_SHIFT 17 +#define AIPS_PACRC_SP3_MASK 0x40000u +#define AIPS_PACRC_SP3_SHIFT 18 +#define AIPS_PACRC_TP2_MASK 0x100000u +#define AIPS_PACRC_TP2_SHIFT 20 +#define AIPS_PACRC_WP2_MASK 0x200000u +#define AIPS_PACRC_WP2_SHIFT 21 +#define AIPS_PACRC_SP2_MASK 0x400000u +#define AIPS_PACRC_SP2_SHIFT 22 +#define AIPS_PACRC_TP1_MASK 0x1000000u +#define AIPS_PACRC_TP1_SHIFT 24 +#define AIPS_PACRC_WP1_MASK 0x2000000u +#define AIPS_PACRC_WP1_SHIFT 25 +#define AIPS_PACRC_SP1_MASK 0x4000000u +#define AIPS_PACRC_SP1_SHIFT 26 +#define AIPS_PACRC_TP0_MASK 0x10000000u +#define AIPS_PACRC_TP0_SHIFT 28 +#define AIPS_PACRC_WP0_MASK 0x20000000u +#define AIPS_PACRC_WP0_SHIFT 29 +#define AIPS_PACRC_SP0_MASK 0x40000000u +#define AIPS_PACRC_SP0_SHIFT 30 +/* PACRD Bit Fields */ +#define AIPS_PACRD_TP7_MASK 0x1u +#define AIPS_PACRD_TP7_SHIFT 0 +#define AIPS_PACRD_WP7_MASK 0x2u +#define AIPS_PACRD_WP7_SHIFT 1 +#define AIPS_PACRD_SP7_MASK 0x4u +#define AIPS_PACRD_SP7_SHIFT 2 +#define AIPS_PACRD_TP6_MASK 0x10u +#define AIPS_PACRD_TP6_SHIFT 4 +#define AIPS_PACRD_WP6_MASK 0x20u +#define AIPS_PACRD_WP6_SHIFT 5 +#define AIPS_PACRD_SP6_MASK 0x40u +#define AIPS_PACRD_SP6_SHIFT 6 +#define AIPS_PACRD_TP5_MASK 0x100u +#define AIPS_PACRD_TP5_SHIFT 8 +#define AIPS_PACRD_WP5_MASK 0x200u +#define AIPS_PACRD_WP5_SHIFT 9 +#define AIPS_PACRD_SP5_MASK 0x400u +#define AIPS_PACRD_SP5_SHIFT 10 +#define AIPS_PACRD_TP4_MASK 0x1000u +#define AIPS_PACRD_TP4_SHIFT 12 +#define AIPS_PACRD_WP4_MASK 0x2000u +#define AIPS_PACRD_WP4_SHIFT 13 +#define AIPS_PACRD_SP4_MASK 0x4000u +#define AIPS_PACRD_SP4_SHIFT 14 +#define AIPS_PACRD_TP3_MASK 0x10000u +#define AIPS_PACRD_TP3_SHIFT 16 +#define AIPS_PACRD_WP3_MASK 0x20000u +#define AIPS_PACRD_WP3_SHIFT 17 +#define AIPS_PACRD_SP3_MASK 0x40000u +#define AIPS_PACRD_SP3_SHIFT 18 +#define AIPS_PACRD_TP2_MASK 0x100000u +#define AIPS_PACRD_TP2_SHIFT 20 +#define AIPS_PACRD_WP2_MASK 0x200000u +#define AIPS_PACRD_WP2_SHIFT 21 +#define AIPS_PACRD_SP2_MASK 0x400000u +#define AIPS_PACRD_SP2_SHIFT 22 +#define AIPS_PACRD_TP1_MASK 0x1000000u +#define AIPS_PACRD_TP1_SHIFT 24 +#define AIPS_PACRD_WP1_MASK 0x2000000u +#define AIPS_PACRD_WP1_SHIFT 25 +#define AIPS_PACRD_SP1_MASK 0x4000000u +#define AIPS_PACRD_SP1_SHIFT 26 +#define AIPS_PACRD_TP0_MASK 0x10000000u +#define AIPS_PACRD_TP0_SHIFT 28 +#define AIPS_PACRD_WP0_MASK 0x20000000u +#define AIPS_PACRD_WP0_SHIFT 29 +#define AIPS_PACRD_SP0_MASK 0x40000000u +#define AIPS_PACRD_SP0_SHIFT 30 +/* PACRE Bit Fields */ +#define AIPS_PACRE_TP7_MASK 0x1u +#define AIPS_PACRE_TP7_SHIFT 0 +#define AIPS_PACRE_WP7_MASK 0x2u +#define AIPS_PACRE_WP7_SHIFT 1 +#define AIPS_PACRE_SP7_MASK 0x4u +#define AIPS_PACRE_SP7_SHIFT 2 +#define AIPS_PACRE_TP6_MASK 0x10u +#define AIPS_PACRE_TP6_SHIFT 4 +#define AIPS_PACRE_WP6_MASK 0x20u +#define AIPS_PACRE_WP6_SHIFT 5 +#define AIPS_PACRE_SP6_MASK 0x40u +#define AIPS_PACRE_SP6_SHIFT 6 +#define AIPS_PACRE_TP5_MASK 0x100u +#define AIPS_PACRE_TP5_SHIFT 8 +#define AIPS_PACRE_WP5_MASK 0x200u +#define AIPS_PACRE_WP5_SHIFT 9 +#define AIPS_PACRE_SP5_MASK 0x400u +#define AIPS_PACRE_SP5_SHIFT 10 +#define AIPS_PACRE_TP4_MASK 0x1000u +#define AIPS_PACRE_TP4_SHIFT 12 +#define AIPS_PACRE_WP4_MASK 0x2000u +#define AIPS_PACRE_WP4_SHIFT 13 +#define AIPS_PACRE_SP4_MASK 0x4000u +#define AIPS_PACRE_SP4_SHIFT 14 +#define AIPS_PACRE_TP3_MASK 0x10000u +#define AIPS_PACRE_TP3_SHIFT 16 +#define AIPS_PACRE_WP3_MASK 0x20000u +#define AIPS_PACRE_WP3_SHIFT 17 +#define AIPS_PACRE_SP3_MASK 0x40000u +#define AIPS_PACRE_SP3_SHIFT 18 +#define AIPS_PACRE_TP2_MASK 0x100000u +#define AIPS_PACRE_TP2_SHIFT 20 +#define AIPS_PACRE_WP2_MASK 0x200000u +#define AIPS_PACRE_WP2_SHIFT 21 +#define AIPS_PACRE_SP2_MASK 0x400000u +#define AIPS_PACRE_SP2_SHIFT 22 +#define AIPS_PACRE_TP1_MASK 0x1000000u +#define AIPS_PACRE_TP1_SHIFT 24 +#define AIPS_PACRE_WP1_MASK 0x2000000u +#define AIPS_PACRE_WP1_SHIFT 25 +#define AIPS_PACRE_SP1_MASK 0x4000000u +#define AIPS_PACRE_SP1_SHIFT 26 +#define AIPS_PACRE_TP0_MASK 0x10000000u +#define AIPS_PACRE_TP0_SHIFT 28 +#define AIPS_PACRE_WP0_MASK 0x20000000u +#define AIPS_PACRE_WP0_SHIFT 29 +#define AIPS_PACRE_SP0_MASK 0x40000000u +#define AIPS_PACRE_SP0_SHIFT 30 +/* PACRF Bit Fields */ +#define AIPS_PACRF_TP7_MASK 0x1u +#define AIPS_PACRF_TP7_SHIFT 0 +#define AIPS_PACRF_WP7_MASK 0x2u +#define AIPS_PACRF_WP7_SHIFT 1 +#define AIPS_PACRF_SP7_MASK 0x4u +#define AIPS_PACRF_SP7_SHIFT 2 +#define AIPS_PACRF_TP6_MASK 0x10u +#define AIPS_PACRF_TP6_SHIFT 4 +#define AIPS_PACRF_WP6_MASK 0x20u +#define AIPS_PACRF_WP6_SHIFT 5 +#define AIPS_PACRF_SP6_MASK 0x40u +#define AIPS_PACRF_SP6_SHIFT 6 +#define AIPS_PACRF_TP5_MASK 0x100u +#define AIPS_PACRF_TP5_SHIFT 8 +#define AIPS_PACRF_WP5_MASK 0x200u +#define AIPS_PACRF_WP5_SHIFT 9 +#define AIPS_PACRF_SP5_MASK 0x400u +#define AIPS_PACRF_SP5_SHIFT 10 +#define AIPS_PACRF_TP4_MASK 0x1000u +#define AIPS_PACRF_TP4_SHIFT 12 +#define AIPS_PACRF_WP4_MASK 0x2000u +#define AIPS_PACRF_WP4_SHIFT 13 +#define AIPS_PACRF_SP4_MASK 0x4000u +#define AIPS_PACRF_SP4_SHIFT 14 +#define AIPS_PACRF_TP3_MASK 0x10000u +#define AIPS_PACRF_TP3_SHIFT 16 +#define AIPS_PACRF_WP3_MASK 0x20000u +#define AIPS_PACRF_WP3_SHIFT 17 +#define AIPS_PACRF_SP3_MASK 0x40000u +#define AIPS_PACRF_SP3_SHIFT 18 +#define AIPS_PACRF_TP2_MASK 0x100000u +#define AIPS_PACRF_TP2_SHIFT 20 +#define AIPS_PACRF_WP2_MASK 0x200000u +#define AIPS_PACRF_WP2_SHIFT 21 +#define AIPS_PACRF_SP2_MASK 0x400000u +#define AIPS_PACRF_SP2_SHIFT 22 +#define AIPS_PACRF_TP1_MASK 0x1000000u +#define AIPS_PACRF_TP1_SHIFT 24 +#define AIPS_PACRF_WP1_MASK 0x2000000u +#define AIPS_PACRF_WP1_SHIFT 25 +#define AIPS_PACRF_SP1_MASK 0x4000000u +#define AIPS_PACRF_SP1_SHIFT 26 +#define AIPS_PACRF_TP0_MASK 0x10000000u +#define AIPS_PACRF_TP0_SHIFT 28 +#define AIPS_PACRF_WP0_MASK 0x20000000u +#define AIPS_PACRF_WP0_SHIFT 29 +#define AIPS_PACRF_SP0_MASK 0x40000000u +#define AIPS_PACRF_SP0_SHIFT 30 +/* PACRG Bit Fields */ +#define AIPS_PACRG_TP7_MASK 0x1u +#define AIPS_PACRG_TP7_SHIFT 0 +#define AIPS_PACRG_WP7_MASK 0x2u +#define AIPS_PACRG_WP7_SHIFT 1 +#define AIPS_PACRG_SP7_MASK 0x4u +#define AIPS_PACRG_SP7_SHIFT 2 +#define AIPS_PACRG_TP6_MASK 0x10u +#define AIPS_PACRG_TP6_SHIFT 4 +#define AIPS_PACRG_WP6_MASK 0x20u +#define AIPS_PACRG_WP6_SHIFT 5 +#define AIPS_PACRG_SP6_MASK 0x40u +#define AIPS_PACRG_SP6_SHIFT 6 +#define AIPS_PACRG_TP5_MASK 0x100u +#define AIPS_PACRG_TP5_SHIFT 8 +#define AIPS_PACRG_WP5_MASK 0x200u +#define AIPS_PACRG_WP5_SHIFT 9 +#define AIPS_PACRG_SP5_MASK 0x400u +#define AIPS_PACRG_SP5_SHIFT 10 +#define AIPS_PACRG_TP4_MASK 0x1000u +#define AIPS_PACRG_TP4_SHIFT 12 +#define AIPS_PACRG_WP4_MASK 0x2000u +#define AIPS_PACRG_WP4_SHIFT 13 +#define AIPS_PACRG_SP4_MASK 0x4000u +#define AIPS_PACRG_SP4_SHIFT 14 +#define AIPS_PACRG_TP3_MASK 0x10000u +#define AIPS_PACRG_TP3_SHIFT 16 +#define AIPS_PACRG_WP3_MASK 0x20000u +#define AIPS_PACRG_WP3_SHIFT 17 +#define AIPS_PACRG_SP3_MASK 0x40000u +#define AIPS_PACRG_SP3_SHIFT 18 +#define AIPS_PACRG_TP2_MASK 0x100000u +#define AIPS_PACRG_TP2_SHIFT 20 +#define AIPS_PACRG_WP2_MASK 0x200000u +#define AIPS_PACRG_WP2_SHIFT 21 +#define AIPS_PACRG_SP2_MASK 0x400000u +#define AIPS_PACRG_SP2_SHIFT 22 +#define AIPS_PACRG_TP1_MASK 0x1000000u +#define AIPS_PACRG_TP1_SHIFT 24 +#define AIPS_PACRG_WP1_MASK 0x2000000u +#define AIPS_PACRG_WP1_SHIFT 25 +#define AIPS_PACRG_SP1_MASK 0x4000000u +#define AIPS_PACRG_SP1_SHIFT 26 +#define AIPS_PACRG_TP0_MASK 0x10000000u +#define AIPS_PACRG_TP0_SHIFT 28 +#define AIPS_PACRG_WP0_MASK 0x20000000u +#define AIPS_PACRG_WP0_SHIFT 29 +#define AIPS_PACRG_SP0_MASK 0x40000000u +#define AIPS_PACRG_SP0_SHIFT 30 +/* PACRH Bit Fields */ +#define AIPS_PACRH_TP7_MASK 0x1u +#define AIPS_PACRH_TP7_SHIFT 0 +#define AIPS_PACRH_WP7_MASK 0x2u +#define AIPS_PACRH_WP7_SHIFT 1 +#define AIPS_PACRH_SP7_MASK 0x4u +#define AIPS_PACRH_SP7_SHIFT 2 +#define AIPS_PACRH_TP6_MASK 0x10u +#define AIPS_PACRH_TP6_SHIFT 4 +#define AIPS_PACRH_WP6_MASK 0x20u +#define AIPS_PACRH_WP6_SHIFT 5 +#define AIPS_PACRH_SP6_MASK 0x40u +#define AIPS_PACRH_SP6_SHIFT 6 +#define AIPS_PACRH_TP5_MASK 0x100u +#define AIPS_PACRH_TP5_SHIFT 8 +#define AIPS_PACRH_WP5_MASK 0x200u +#define AIPS_PACRH_WP5_SHIFT 9 +#define AIPS_PACRH_SP5_MASK 0x400u +#define AIPS_PACRH_SP5_SHIFT 10 +#define AIPS_PACRH_TP4_MASK 0x1000u +#define AIPS_PACRH_TP4_SHIFT 12 +#define AIPS_PACRH_WP4_MASK 0x2000u +#define AIPS_PACRH_WP4_SHIFT 13 +#define AIPS_PACRH_SP4_MASK 0x4000u +#define AIPS_PACRH_SP4_SHIFT 14 +#define AIPS_PACRH_TP3_MASK 0x10000u +#define AIPS_PACRH_TP3_SHIFT 16 +#define AIPS_PACRH_WP3_MASK 0x20000u +#define AIPS_PACRH_WP3_SHIFT 17 +#define AIPS_PACRH_SP3_MASK 0x40000u +#define AIPS_PACRH_SP3_SHIFT 18 +#define AIPS_PACRH_TP2_MASK 0x100000u +#define AIPS_PACRH_TP2_SHIFT 20 +#define AIPS_PACRH_WP2_MASK 0x200000u +#define AIPS_PACRH_WP2_SHIFT 21 +#define AIPS_PACRH_SP2_MASK 0x400000u +#define AIPS_PACRH_SP2_SHIFT 22 +#define AIPS_PACRH_TP1_MASK 0x1000000u +#define AIPS_PACRH_TP1_SHIFT 24 +#define AIPS_PACRH_WP1_MASK 0x2000000u +#define AIPS_PACRH_WP1_SHIFT 25 +#define AIPS_PACRH_SP1_MASK 0x4000000u +#define AIPS_PACRH_SP1_SHIFT 26 +#define AIPS_PACRH_TP0_MASK 0x10000000u +#define AIPS_PACRH_TP0_SHIFT 28 +#define AIPS_PACRH_WP0_MASK 0x20000000u +#define AIPS_PACRH_WP0_SHIFT 29 +#define AIPS_PACRH_SP0_MASK 0x40000000u +#define AIPS_PACRH_SP0_SHIFT 30 +/* PACRI Bit Fields */ +#define AIPS_PACRI_TP7_MASK 0x1u +#define AIPS_PACRI_TP7_SHIFT 0 +#define AIPS_PACRI_WP7_MASK 0x2u +#define AIPS_PACRI_WP7_SHIFT 1 +#define AIPS_PACRI_SP7_MASK 0x4u +#define AIPS_PACRI_SP7_SHIFT 2 +#define AIPS_PACRI_TP6_MASK 0x10u +#define AIPS_PACRI_TP6_SHIFT 4 +#define AIPS_PACRI_WP6_MASK 0x20u +#define AIPS_PACRI_WP6_SHIFT 5 +#define AIPS_PACRI_SP6_MASK 0x40u +#define AIPS_PACRI_SP6_SHIFT 6 +#define AIPS_PACRI_TP5_MASK 0x100u +#define AIPS_PACRI_TP5_SHIFT 8 +#define AIPS_PACRI_WP5_MASK 0x200u +#define AIPS_PACRI_WP5_SHIFT 9 +#define AIPS_PACRI_SP5_MASK 0x400u +#define AIPS_PACRI_SP5_SHIFT 10 +#define AIPS_PACRI_TP4_MASK 0x1000u +#define AIPS_PACRI_TP4_SHIFT 12 +#define AIPS_PACRI_WP4_MASK 0x2000u +#define AIPS_PACRI_WP4_SHIFT 13 +#define AIPS_PACRI_SP4_MASK 0x4000u +#define AIPS_PACRI_SP4_SHIFT 14 +#define AIPS_PACRI_TP3_MASK 0x10000u +#define AIPS_PACRI_TP3_SHIFT 16 +#define AIPS_PACRI_WP3_MASK 0x20000u +#define AIPS_PACRI_WP3_SHIFT 17 +#define AIPS_PACRI_SP3_MASK 0x40000u +#define AIPS_PACRI_SP3_SHIFT 18 +#define AIPS_PACRI_TP2_MASK 0x100000u +#define AIPS_PACRI_TP2_SHIFT 20 +#define AIPS_PACRI_WP2_MASK 0x200000u +#define AIPS_PACRI_WP2_SHIFT 21 +#define AIPS_PACRI_SP2_MASK 0x400000u +#define AIPS_PACRI_SP2_SHIFT 22 +#define AIPS_PACRI_TP1_MASK 0x1000000u +#define AIPS_PACRI_TP1_SHIFT 24 +#define AIPS_PACRI_WP1_MASK 0x2000000u +#define AIPS_PACRI_WP1_SHIFT 25 +#define AIPS_PACRI_SP1_MASK 0x4000000u +#define AIPS_PACRI_SP1_SHIFT 26 +#define AIPS_PACRI_TP0_MASK 0x10000000u +#define AIPS_PACRI_TP0_SHIFT 28 +#define AIPS_PACRI_WP0_MASK 0x20000000u +#define AIPS_PACRI_WP0_SHIFT 29 +#define AIPS_PACRI_SP0_MASK 0x40000000u +#define AIPS_PACRI_SP0_SHIFT 30 +/* PACRJ Bit Fields */ +#define AIPS_PACRJ_TP7_MASK 0x1u +#define AIPS_PACRJ_TP7_SHIFT 0 +#define AIPS_PACRJ_WP7_MASK 0x2u +#define AIPS_PACRJ_WP7_SHIFT 1 +#define AIPS_PACRJ_SP7_MASK 0x4u +#define AIPS_PACRJ_SP7_SHIFT 2 +#define AIPS_PACRJ_TP6_MASK 0x10u +#define AIPS_PACRJ_TP6_SHIFT 4 +#define AIPS_PACRJ_WP6_MASK 0x20u +#define AIPS_PACRJ_WP6_SHIFT 5 +#define AIPS_PACRJ_SP6_MASK 0x40u +#define AIPS_PACRJ_SP6_SHIFT 6 +#define AIPS_PACRJ_TP5_MASK 0x100u +#define AIPS_PACRJ_TP5_SHIFT 8 +#define AIPS_PACRJ_WP5_MASK 0x200u +#define AIPS_PACRJ_WP5_SHIFT 9 +#define AIPS_PACRJ_SP5_MASK 0x400u +#define AIPS_PACRJ_SP5_SHIFT 10 +#define AIPS_PACRJ_TP4_MASK 0x1000u +#define AIPS_PACRJ_TP4_SHIFT 12 +#define AIPS_PACRJ_WP4_MASK 0x2000u +#define AIPS_PACRJ_WP4_SHIFT 13 +#define AIPS_PACRJ_SP4_MASK 0x4000u +#define AIPS_PACRJ_SP4_SHIFT 14 +#define AIPS_PACRJ_TP3_MASK 0x10000u +#define AIPS_PACRJ_TP3_SHIFT 16 +#define AIPS_PACRJ_WP3_MASK 0x20000u +#define AIPS_PACRJ_WP3_SHIFT 17 +#define AIPS_PACRJ_SP3_MASK 0x40000u +#define AIPS_PACRJ_SP3_SHIFT 18 +#define AIPS_PACRJ_TP2_MASK 0x100000u +#define AIPS_PACRJ_TP2_SHIFT 20 +#define AIPS_PACRJ_WP2_MASK 0x200000u +#define AIPS_PACRJ_WP2_SHIFT 21 +#define AIPS_PACRJ_SP2_MASK 0x400000u +#define AIPS_PACRJ_SP2_SHIFT 22 +#define AIPS_PACRJ_TP1_MASK 0x1000000u +#define AIPS_PACRJ_TP1_SHIFT 24 +#define AIPS_PACRJ_WP1_MASK 0x2000000u +#define AIPS_PACRJ_WP1_SHIFT 25 +#define AIPS_PACRJ_SP1_MASK 0x4000000u +#define AIPS_PACRJ_SP1_SHIFT 26 +#define AIPS_PACRJ_TP0_MASK 0x10000000u +#define AIPS_PACRJ_TP0_SHIFT 28 +#define AIPS_PACRJ_WP0_MASK 0x20000000u +#define AIPS_PACRJ_WP0_SHIFT 29 +#define AIPS_PACRJ_SP0_MASK 0x40000000u +#define AIPS_PACRJ_SP0_SHIFT 30 +/* PACRK Bit Fields */ +#define AIPS_PACRK_TP7_MASK 0x1u +#define AIPS_PACRK_TP7_SHIFT 0 +#define AIPS_PACRK_WP7_MASK 0x2u +#define AIPS_PACRK_WP7_SHIFT 1 +#define AIPS_PACRK_SP7_MASK 0x4u +#define AIPS_PACRK_SP7_SHIFT 2 +#define AIPS_PACRK_TP6_MASK 0x10u +#define AIPS_PACRK_TP6_SHIFT 4 +#define AIPS_PACRK_WP6_MASK 0x20u +#define AIPS_PACRK_WP6_SHIFT 5 +#define AIPS_PACRK_SP6_MASK 0x40u +#define AIPS_PACRK_SP6_SHIFT 6 +#define AIPS_PACRK_TP5_MASK 0x100u +#define AIPS_PACRK_TP5_SHIFT 8 +#define AIPS_PACRK_WP5_MASK 0x200u +#define AIPS_PACRK_WP5_SHIFT 9 +#define AIPS_PACRK_SP5_MASK 0x400u +#define AIPS_PACRK_SP5_SHIFT 10 +#define AIPS_PACRK_TP4_MASK 0x1000u +#define AIPS_PACRK_TP4_SHIFT 12 +#define AIPS_PACRK_WP4_MASK 0x2000u +#define AIPS_PACRK_WP4_SHIFT 13 +#define AIPS_PACRK_SP4_MASK 0x4000u +#define AIPS_PACRK_SP4_SHIFT 14 +#define AIPS_PACRK_TP3_MASK 0x10000u +#define AIPS_PACRK_TP3_SHIFT 16 +#define AIPS_PACRK_WP3_MASK 0x20000u +#define AIPS_PACRK_WP3_SHIFT 17 +#define AIPS_PACRK_SP3_MASK 0x40000u +#define AIPS_PACRK_SP3_SHIFT 18 +#define AIPS_PACRK_TP2_MASK 0x100000u +#define AIPS_PACRK_TP2_SHIFT 20 +#define AIPS_PACRK_WP2_MASK 0x200000u +#define AIPS_PACRK_WP2_SHIFT 21 +#define AIPS_PACRK_SP2_MASK 0x400000u +#define AIPS_PACRK_SP2_SHIFT 22 +#define AIPS_PACRK_TP1_MASK 0x1000000u +#define AIPS_PACRK_TP1_SHIFT 24 +#define AIPS_PACRK_WP1_MASK 0x2000000u +#define AIPS_PACRK_WP1_SHIFT 25 +#define AIPS_PACRK_SP1_MASK 0x4000000u +#define AIPS_PACRK_SP1_SHIFT 26 +#define AIPS_PACRK_TP0_MASK 0x10000000u +#define AIPS_PACRK_TP0_SHIFT 28 +#define AIPS_PACRK_WP0_MASK 0x20000000u +#define AIPS_PACRK_WP0_SHIFT 29 +#define AIPS_PACRK_SP0_MASK 0x40000000u +#define AIPS_PACRK_SP0_SHIFT 30 +/* PACRL Bit Fields */ +#define AIPS_PACRL_TP7_MASK 0x1u +#define AIPS_PACRL_TP7_SHIFT 0 +#define AIPS_PACRL_WP7_MASK 0x2u +#define AIPS_PACRL_WP7_SHIFT 1 +#define AIPS_PACRL_SP7_MASK 0x4u +#define AIPS_PACRL_SP7_SHIFT 2 +#define AIPS_PACRL_TP6_MASK 0x10u +#define AIPS_PACRL_TP6_SHIFT 4 +#define AIPS_PACRL_WP6_MASK 0x20u +#define AIPS_PACRL_WP6_SHIFT 5 +#define AIPS_PACRL_SP6_MASK 0x40u +#define AIPS_PACRL_SP6_SHIFT 6 +#define AIPS_PACRL_TP5_MASK 0x100u +#define AIPS_PACRL_TP5_SHIFT 8 +#define AIPS_PACRL_WP5_MASK 0x200u +#define AIPS_PACRL_WP5_SHIFT 9 +#define AIPS_PACRL_SP5_MASK 0x400u +#define AIPS_PACRL_SP5_SHIFT 10 +#define AIPS_PACRL_TP4_MASK 0x1000u +#define AIPS_PACRL_TP4_SHIFT 12 +#define AIPS_PACRL_WP4_MASK 0x2000u +#define AIPS_PACRL_WP4_SHIFT 13 +#define AIPS_PACRL_SP4_MASK 0x4000u +#define AIPS_PACRL_SP4_SHIFT 14 +#define AIPS_PACRL_TP3_MASK 0x10000u +#define AIPS_PACRL_TP3_SHIFT 16 +#define AIPS_PACRL_WP3_MASK 0x20000u +#define AIPS_PACRL_WP3_SHIFT 17 +#define AIPS_PACRL_SP3_MASK 0x40000u +#define AIPS_PACRL_SP3_SHIFT 18 +#define AIPS_PACRL_TP2_MASK 0x100000u +#define AIPS_PACRL_TP2_SHIFT 20 +#define AIPS_PACRL_WP2_MASK 0x200000u +#define AIPS_PACRL_WP2_SHIFT 21 +#define AIPS_PACRL_SP2_MASK 0x400000u +#define AIPS_PACRL_SP2_SHIFT 22 +#define AIPS_PACRL_TP1_MASK 0x1000000u +#define AIPS_PACRL_TP1_SHIFT 24 +#define AIPS_PACRL_WP1_MASK 0x2000000u +#define AIPS_PACRL_WP1_SHIFT 25 +#define AIPS_PACRL_SP1_MASK 0x4000000u +#define AIPS_PACRL_SP1_SHIFT 26 +#define AIPS_PACRL_TP0_MASK 0x10000000u +#define AIPS_PACRL_TP0_SHIFT 28 +#define AIPS_PACRL_WP0_MASK 0x20000000u +#define AIPS_PACRL_WP0_SHIFT 29 +#define AIPS_PACRL_SP0_MASK 0x40000000u +#define AIPS_PACRL_SP0_SHIFT 30 +/* PACRM Bit Fields */ +#define AIPS_PACRM_TP7_MASK 0x1u +#define AIPS_PACRM_TP7_SHIFT 0 +#define AIPS_PACRM_WP7_MASK 0x2u +#define AIPS_PACRM_WP7_SHIFT 1 +#define AIPS_PACRM_SP7_MASK 0x4u +#define AIPS_PACRM_SP7_SHIFT 2 +#define AIPS_PACRM_TP6_MASK 0x10u +#define AIPS_PACRM_TP6_SHIFT 4 +#define AIPS_PACRM_WP6_MASK 0x20u +#define AIPS_PACRM_WP6_SHIFT 5 +#define AIPS_PACRM_SP6_MASK 0x40u +#define AIPS_PACRM_SP6_SHIFT 6 +#define AIPS_PACRM_TP5_MASK 0x100u +#define AIPS_PACRM_TP5_SHIFT 8 +#define AIPS_PACRM_WP5_MASK 0x200u +#define AIPS_PACRM_WP5_SHIFT 9 +#define AIPS_PACRM_SP5_MASK 0x400u +#define AIPS_PACRM_SP5_SHIFT 10 +#define AIPS_PACRM_TP4_MASK 0x1000u +#define AIPS_PACRM_TP4_SHIFT 12 +#define AIPS_PACRM_WP4_MASK 0x2000u +#define AIPS_PACRM_WP4_SHIFT 13 +#define AIPS_PACRM_SP4_MASK 0x4000u +#define AIPS_PACRM_SP4_SHIFT 14 +#define AIPS_PACRM_TP3_MASK 0x10000u +#define AIPS_PACRM_TP3_SHIFT 16 +#define AIPS_PACRM_WP3_MASK 0x20000u +#define AIPS_PACRM_WP3_SHIFT 17 +#define AIPS_PACRM_SP3_MASK 0x40000u +#define AIPS_PACRM_SP3_SHIFT 18 +#define AIPS_PACRM_TP2_MASK 0x100000u +#define AIPS_PACRM_TP2_SHIFT 20 +#define AIPS_PACRM_WP2_MASK 0x200000u +#define AIPS_PACRM_WP2_SHIFT 21 +#define AIPS_PACRM_SP2_MASK 0x400000u +#define AIPS_PACRM_SP2_SHIFT 22 +#define AIPS_PACRM_TP1_MASK 0x1000000u +#define AIPS_PACRM_TP1_SHIFT 24 +#define AIPS_PACRM_WP1_MASK 0x2000000u +#define AIPS_PACRM_WP1_SHIFT 25 +#define AIPS_PACRM_SP1_MASK 0x4000000u +#define AIPS_PACRM_SP1_SHIFT 26 +#define AIPS_PACRM_TP0_MASK 0x10000000u +#define AIPS_PACRM_TP0_SHIFT 28 +#define AIPS_PACRM_WP0_MASK 0x20000000u +#define AIPS_PACRM_WP0_SHIFT 29 +#define AIPS_PACRM_SP0_MASK 0x40000000u +#define AIPS_PACRM_SP0_SHIFT 30 +/* PACRN Bit Fields */ +#define AIPS_PACRN_TP7_MASK 0x1u +#define AIPS_PACRN_TP7_SHIFT 0 +#define AIPS_PACRN_WP7_MASK 0x2u +#define AIPS_PACRN_WP7_SHIFT 1 +#define AIPS_PACRN_SP7_MASK 0x4u +#define AIPS_PACRN_SP7_SHIFT 2 +#define AIPS_PACRN_TP6_MASK 0x10u +#define AIPS_PACRN_TP6_SHIFT 4 +#define AIPS_PACRN_WP6_MASK 0x20u +#define AIPS_PACRN_WP6_SHIFT 5 +#define AIPS_PACRN_SP6_MASK 0x40u +#define AIPS_PACRN_SP6_SHIFT 6 +#define AIPS_PACRN_TP5_MASK 0x100u +#define AIPS_PACRN_TP5_SHIFT 8 +#define AIPS_PACRN_WP5_MASK 0x200u +#define AIPS_PACRN_WP5_SHIFT 9 +#define AIPS_PACRN_SP5_MASK 0x400u +#define AIPS_PACRN_SP5_SHIFT 10 +#define AIPS_PACRN_TP4_MASK 0x1000u +#define AIPS_PACRN_TP4_SHIFT 12 +#define AIPS_PACRN_WP4_MASK 0x2000u +#define AIPS_PACRN_WP4_SHIFT 13 +#define AIPS_PACRN_SP4_MASK 0x4000u +#define AIPS_PACRN_SP4_SHIFT 14 +#define AIPS_PACRN_TP3_MASK 0x10000u +#define AIPS_PACRN_TP3_SHIFT 16 +#define AIPS_PACRN_WP3_MASK 0x20000u +#define AIPS_PACRN_WP3_SHIFT 17 +#define AIPS_PACRN_SP3_MASK 0x40000u +#define AIPS_PACRN_SP3_SHIFT 18 +#define AIPS_PACRN_TP2_MASK 0x100000u +#define AIPS_PACRN_TP2_SHIFT 20 +#define AIPS_PACRN_WP2_MASK 0x200000u +#define AIPS_PACRN_WP2_SHIFT 21 +#define AIPS_PACRN_SP2_MASK 0x400000u +#define AIPS_PACRN_SP2_SHIFT 22 +#define AIPS_PACRN_TP1_MASK 0x1000000u +#define AIPS_PACRN_TP1_SHIFT 24 +#define AIPS_PACRN_WP1_MASK 0x2000000u +#define AIPS_PACRN_WP1_SHIFT 25 +#define AIPS_PACRN_SP1_MASK 0x4000000u +#define AIPS_PACRN_SP1_SHIFT 26 +#define AIPS_PACRN_TP0_MASK 0x10000000u +#define AIPS_PACRN_TP0_SHIFT 28 +#define AIPS_PACRN_WP0_MASK 0x20000000u +#define AIPS_PACRN_WP0_SHIFT 29 +#define AIPS_PACRN_SP0_MASK 0x40000000u +#define AIPS_PACRN_SP0_SHIFT 30 +/* PACRO Bit Fields */ +#define AIPS_PACRO_TP7_MASK 0x1u +#define AIPS_PACRO_TP7_SHIFT 0 +#define AIPS_PACRO_WP7_MASK 0x2u +#define AIPS_PACRO_WP7_SHIFT 1 +#define AIPS_PACRO_SP7_MASK 0x4u +#define AIPS_PACRO_SP7_SHIFT 2 +#define AIPS_PACRO_TP6_MASK 0x10u +#define AIPS_PACRO_TP6_SHIFT 4 +#define AIPS_PACRO_WP6_MASK 0x20u +#define AIPS_PACRO_WP6_SHIFT 5 +#define AIPS_PACRO_SP6_MASK 0x40u +#define AIPS_PACRO_SP6_SHIFT 6 +#define AIPS_PACRO_TP5_MASK 0x100u +#define AIPS_PACRO_TP5_SHIFT 8 +#define AIPS_PACRO_WP5_MASK 0x200u +#define AIPS_PACRO_WP5_SHIFT 9 +#define AIPS_PACRO_SP5_MASK 0x400u +#define AIPS_PACRO_SP5_SHIFT 10 +#define AIPS_PACRO_TP4_MASK 0x1000u +#define AIPS_PACRO_TP4_SHIFT 12 +#define AIPS_PACRO_WP4_MASK 0x2000u +#define AIPS_PACRO_WP4_SHIFT 13 +#define AIPS_PACRO_SP4_MASK 0x4000u +#define AIPS_PACRO_SP4_SHIFT 14 +#define AIPS_PACRO_TP3_MASK 0x10000u +#define AIPS_PACRO_TP3_SHIFT 16 +#define AIPS_PACRO_WP3_MASK 0x20000u +#define AIPS_PACRO_WP3_SHIFT 17 +#define AIPS_PACRO_SP3_MASK 0x40000u +#define AIPS_PACRO_SP3_SHIFT 18 +#define AIPS_PACRO_TP2_MASK 0x100000u +#define AIPS_PACRO_TP2_SHIFT 20 +#define AIPS_PACRO_WP2_MASK 0x200000u +#define AIPS_PACRO_WP2_SHIFT 21 +#define AIPS_PACRO_SP2_MASK 0x400000u +#define AIPS_PACRO_SP2_SHIFT 22 +#define AIPS_PACRO_TP1_MASK 0x1000000u +#define AIPS_PACRO_TP1_SHIFT 24 +#define AIPS_PACRO_WP1_MASK 0x2000000u +#define AIPS_PACRO_WP1_SHIFT 25 +#define AIPS_PACRO_SP1_MASK 0x4000000u +#define AIPS_PACRO_SP1_SHIFT 26 +#define AIPS_PACRO_TP0_MASK 0x10000000u +#define AIPS_PACRO_TP0_SHIFT 28 +#define AIPS_PACRO_WP0_MASK 0x20000000u +#define AIPS_PACRO_WP0_SHIFT 29 +#define AIPS_PACRO_SP0_MASK 0x40000000u +#define AIPS_PACRO_SP0_SHIFT 30 +/* PACRP Bit Fields */ +#define AIPS_PACRP_TP7_MASK 0x1u +#define AIPS_PACRP_TP7_SHIFT 0 +#define AIPS_PACRP_WP7_MASK 0x2u +#define AIPS_PACRP_WP7_SHIFT 1 +#define AIPS_PACRP_SP7_MASK 0x4u +#define AIPS_PACRP_SP7_SHIFT 2 +#define AIPS_PACRP_TP6_MASK 0x10u +#define AIPS_PACRP_TP6_SHIFT 4 +#define AIPS_PACRP_WP6_MASK 0x20u +#define AIPS_PACRP_WP6_SHIFT 5 +#define AIPS_PACRP_SP6_MASK 0x40u +#define AIPS_PACRP_SP6_SHIFT 6 +#define AIPS_PACRP_TP5_MASK 0x100u +#define AIPS_PACRP_TP5_SHIFT 8 +#define AIPS_PACRP_WP5_MASK 0x200u +#define AIPS_PACRP_WP5_SHIFT 9 +#define AIPS_PACRP_SP5_MASK 0x400u +#define AIPS_PACRP_SP5_SHIFT 10 +#define AIPS_PACRP_TP4_MASK 0x1000u +#define AIPS_PACRP_TP4_SHIFT 12 +#define AIPS_PACRP_WP4_MASK 0x2000u +#define AIPS_PACRP_WP4_SHIFT 13 +#define AIPS_PACRP_SP4_MASK 0x4000u +#define AIPS_PACRP_SP4_SHIFT 14 +#define AIPS_PACRP_TP3_MASK 0x10000u +#define AIPS_PACRP_TP3_SHIFT 16 +#define AIPS_PACRP_WP3_MASK 0x20000u +#define AIPS_PACRP_WP3_SHIFT 17 +#define AIPS_PACRP_SP3_MASK 0x40000u +#define AIPS_PACRP_SP3_SHIFT 18 +#define AIPS_PACRP_TP2_MASK 0x100000u +#define AIPS_PACRP_TP2_SHIFT 20 +#define AIPS_PACRP_WP2_MASK 0x200000u +#define AIPS_PACRP_WP2_SHIFT 21 +#define AIPS_PACRP_SP2_MASK 0x400000u +#define AIPS_PACRP_SP2_SHIFT 22 +#define AIPS_PACRP_TP1_MASK 0x1000000u +#define AIPS_PACRP_TP1_SHIFT 24 +#define AIPS_PACRP_WP1_MASK 0x2000000u +#define AIPS_PACRP_WP1_SHIFT 25 +#define AIPS_PACRP_SP1_MASK 0x4000000u +#define AIPS_PACRP_SP1_SHIFT 26 +#define AIPS_PACRP_TP0_MASK 0x10000000u +#define AIPS_PACRP_TP0_SHIFT 28 +#define AIPS_PACRP_WP0_MASK 0x20000000u +#define AIPS_PACRP_WP0_SHIFT 29 +#define AIPS_PACRP_SP0_MASK 0x40000000u +#define AIPS_PACRP_SP0_SHIFT 30 +/* PACRU Bit Fields */ +#define AIPS_PACRU_TP1_MASK 0x1000000u +#define AIPS_PACRU_TP1_SHIFT 24 +#define AIPS_PACRU_WP1_MASK 0x2000000u +#define AIPS_PACRU_WP1_SHIFT 25 +#define AIPS_PACRU_SP1_MASK 0x4000000u +#define AIPS_PACRU_SP1_SHIFT 26 +#define AIPS_PACRU_TP0_MASK 0x10000000u +#define AIPS_PACRU_TP0_SHIFT 28 +#define AIPS_PACRU_WP0_MASK 0x20000000u +#define AIPS_PACRU_WP0_SHIFT 29 +#define AIPS_PACRU_SP0_MASK 0x40000000u +#define AIPS_PACRU_SP0_SHIFT 30 + +/*! + * @} + */ /* end of group AIPS_Register_Masks */ + + +/* AIPS - Peripheral instance base addresses */ +/** Peripheral AIPS0 base address */ +#define AIPS0_BASE (0x40000000u) +/** Peripheral AIPS0 base pointer */ +#define AIPS0 ((AIPS_Type *)AIPS0_BASE) +#define AIPS0_BASE_PTR (AIPS0) +/** Peripheral AIPS1 base address */ +#define AIPS1_BASE (0x40080000u) +/** Peripheral AIPS1 base pointer */ +#define AIPS1 ((AIPS_Type *)AIPS1_BASE) +#define AIPS1_BASE_PTR (AIPS1) +/** Array initializer of AIPS peripheral base pointers */ +#define AIPS_BASES { AIPS0, AIPS1 } + +/* ---------------------------------------------------------------------------- + -- AIPS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AIPS_Register_Accessor_Macros AIPS - Register accessor macros + * @{ + */ + + +/* AIPS - Register instance definitions */ +/* AIPS0 */ +#define AIPS0_MPRA AIPS_MPRA_REG(AIPS0) +#define AIPS0_PACRA AIPS_PACRA_REG(AIPS0) +#define AIPS0_PACRB AIPS_PACRB_REG(AIPS0) +#define AIPS0_PACRC AIPS_PACRC_REG(AIPS0) +#define AIPS0_PACRD AIPS_PACRD_REG(AIPS0) +#define AIPS0_PACRE AIPS_PACRE_REG(AIPS0) +#define AIPS0_PACRF AIPS_PACRF_REG(AIPS0) +#define AIPS0_PACRG AIPS_PACRG_REG(AIPS0) +#define AIPS0_PACRH AIPS_PACRH_REG(AIPS0) +#define AIPS0_PACRI AIPS_PACRI_REG(AIPS0) +#define AIPS0_PACRJ AIPS_PACRJ_REG(AIPS0) +#define AIPS0_PACRK AIPS_PACRK_REG(AIPS0) +#define AIPS0_PACRL AIPS_PACRL_REG(AIPS0) +#define AIPS0_PACRM AIPS_PACRM_REG(AIPS0) +#define AIPS0_PACRN AIPS_PACRN_REG(AIPS0) +#define AIPS0_PACRO AIPS_PACRO_REG(AIPS0) +#define AIPS0_PACRP AIPS_PACRP_REG(AIPS0) +#define AIPS0_PACRU AIPS_PACRU_REG(AIPS0) +/* AIPS1 */ +#define AIPS1_MPRA AIPS_MPRA_REG(AIPS1) +#define AIPS1_PACRA AIPS_PACRA_REG(AIPS1) +#define AIPS1_PACRB AIPS_PACRB_REG(AIPS1) +#define AIPS1_PACRC AIPS_PACRC_REG(AIPS1) +#define AIPS1_PACRD AIPS_PACRD_REG(AIPS1) +#define AIPS1_PACRE AIPS_PACRE_REG(AIPS1) +#define AIPS1_PACRF AIPS_PACRF_REG(AIPS1) +#define AIPS1_PACRG AIPS_PACRG_REG(AIPS1) +#define AIPS1_PACRH AIPS_PACRH_REG(AIPS1) +#define AIPS1_PACRI AIPS_PACRI_REG(AIPS1) +#define AIPS1_PACRJ AIPS_PACRJ_REG(AIPS1) +#define AIPS1_PACRK AIPS_PACRK_REG(AIPS1) +#define AIPS1_PACRL AIPS_PACRL_REG(AIPS1) +#define AIPS1_PACRM AIPS_PACRM_REG(AIPS1) +#define AIPS1_PACRN AIPS_PACRN_REG(AIPS1) +#define AIPS1_PACRO AIPS_PACRO_REG(AIPS1) +#define AIPS1_PACRP AIPS_PACRP_REG(AIPS1) +#define AIPS1_PACRU AIPS_PACRU_REG(AIPS1) + +/*! + * @} + */ /* end of group AIPS_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group AIPS_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- AXBS Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AXBS_Peripheral_Access_Layer AXBS Peripheral Access Layer + * @{ + */ + +/** AXBS - Register Layout Typedef */ +typedef struct { + struct { /* offset: 0x0, array step: 0x100 */ + __IO uint32_t PRS; /**< Priority Registers Slave, array offset: 0x0, array step: 0x100 */ + uint8_t RESERVED_0[12]; + __IO uint32_t CRS; /**< Control Register, array offset: 0x10, array step: 0x100 */ + uint8_t RESERVED_1[236]; + } SLAVE[5]; + uint8_t RESERVED_0[768]; + __IO uint32_t MGPCR0; /**< Master General Purpose Control Register, offset: 0x800 */ + uint8_t RESERVED_1[252]; + __IO uint32_t MGPCR1; /**< Master General Purpose Control Register, offset: 0x900 */ + uint8_t RESERVED_2[252]; + __IO uint32_t MGPCR2; /**< Master General Purpose Control Register, offset: 0xA00 */ + uint8_t RESERVED_3[252]; + __IO uint32_t MGPCR3; /**< Master General Purpose Control Register, offset: 0xB00 */ + uint8_t RESERVED_4[252]; + __IO uint32_t MGPCR4; /**< Master General Purpose Control Register, offset: 0xC00 */ + uint8_t RESERVED_5[252]; + __IO uint32_t MGPCR5; /**< Master General Purpose Control Register, offset: 0xD00 */ +} AXBS_Type, *AXBS_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- AXBS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AXBS_Register_Accessor_Macros AXBS - Register accessor macros + * @{ + */ + + +/* AXBS - Register accessors */ +#define AXBS_PRS_REG(base,index) ((base)->SLAVE[index].PRS) +#define AXBS_CRS_REG(base,index) ((base)->SLAVE[index].CRS) +#define AXBS_MGPCR0_REG(base) ((base)->MGPCR0) +#define AXBS_MGPCR1_REG(base) ((base)->MGPCR1) +#define AXBS_MGPCR2_REG(base) ((base)->MGPCR2) +#define AXBS_MGPCR3_REG(base) ((base)->MGPCR3) +#define AXBS_MGPCR4_REG(base) ((base)->MGPCR4) +#define AXBS_MGPCR5_REG(base) ((base)->MGPCR5) + +/*! + * @} + */ /* end of group AXBS_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- AXBS Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AXBS_Register_Masks AXBS Register Masks + * @{ + */ + +/* PRS Bit Fields */ +#define AXBS_PRS_M0_MASK 0x7u +#define AXBS_PRS_M0_SHIFT 0 +#define AXBS_PRS_M0(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M0_SHIFT))&AXBS_PRS_M0_MASK) +#define AXBS_PRS_M1_MASK 0x70u +#define AXBS_PRS_M1_SHIFT 4 +#define AXBS_PRS_M1(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M1_SHIFT))&AXBS_PRS_M1_MASK) +#define AXBS_PRS_M2_MASK 0x700u +#define AXBS_PRS_M2_SHIFT 8 +#define AXBS_PRS_M2(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M2_SHIFT))&AXBS_PRS_M2_MASK) +#define AXBS_PRS_M3_MASK 0x7000u +#define AXBS_PRS_M3_SHIFT 12 +#define AXBS_PRS_M3(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M3_SHIFT))&AXBS_PRS_M3_MASK) +#define AXBS_PRS_M4_MASK 0x70000u +#define AXBS_PRS_M4_SHIFT 16 +#define AXBS_PRS_M4(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M4_SHIFT))&AXBS_PRS_M4_MASK) +#define AXBS_PRS_M5_MASK 0x700000u +#define AXBS_PRS_M5_SHIFT 20 +#define AXBS_PRS_M5(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M5_SHIFT))&AXBS_PRS_M5_MASK) +/* CRS Bit Fields */ +#define AXBS_CRS_PARK_MASK 0x7u +#define AXBS_CRS_PARK_SHIFT 0 +#define AXBS_CRS_PARK(x) (((uint32_t)(((uint32_t)(x))<<AXBS_CRS_PARK_SHIFT))&AXBS_CRS_PARK_MASK) +#define AXBS_CRS_PCTL_MASK 0x30u +#define AXBS_CRS_PCTL_SHIFT 4 +#define AXBS_CRS_PCTL(x) (((uint32_t)(((uint32_t)(x))<<AXBS_CRS_PCTL_SHIFT))&AXBS_CRS_PCTL_MASK) +#define AXBS_CRS_ARB_MASK 0x300u +#define AXBS_CRS_ARB_SHIFT 8 +#define AXBS_CRS_ARB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_CRS_ARB_SHIFT))&AXBS_CRS_ARB_MASK) +#define AXBS_CRS_HLP_MASK 0x40000000u +#define AXBS_CRS_HLP_SHIFT 30 +#define AXBS_CRS_RO_MASK 0x80000000u +#define AXBS_CRS_RO_SHIFT 31 +/* MGPCR0 Bit Fields */ +#define AXBS_MGPCR0_AULB_MASK 0x7u +#define AXBS_MGPCR0_AULB_SHIFT 0 +#define AXBS_MGPCR0_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR0_AULB_SHIFT))&AXBS_MGPCR0_AULB_MASK) +/* MGPCR1 Bit Fields */ +#define AXBS_MGPCR1_AULB_MASK 0x7u +#define AXBS_MGPCR1_AULB_SHIFT 0 +#define AXBS_MGPCR1_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR1_AULB_SHIFT))&AXBS_MGPCR1_AULB_MASK) +/* MGPCR2 Bit Fields */ +#define AXBS_MGPCR2_AULB_MASK 0x7u +#define AXBS_MGPCR2_AULB_SHIFT 0 +#define AXBS_MGPCR2_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR2_AULB_SHIFT))&AXBS_MGPCR2_AULB_MASK) +/* MGPCR3 Bit Fields */ +#define AXBS_MGPCR3_AULB_MASK 0x7u +#define AXBS_MGPCR3_AULB_SHIFT 0 +#define AXBS_MGPCR3_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR3_AULB_SHIFT))&AXBS_MGPCR3_AULB_MASK) +/* MGPCR4 Bit Fields */ +#define AXBS_MGPCR4_AULB_MASK 0x7u +#define AXBS_MGPCR4_AULB_SHIFT 0 +#define AXBS_MGPCR4_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR4_AULB_SHIFT))&AXBS_MGPCR4_AULB_MASK) +/* MGPCR5 Bit Fields */ +#define AXBS_MGPCR5_AULB_MASK 0x7u +#define AXBS_MGPCR5_AULB_SHIFT 0 +#define AXBS_MGPCR5_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR5_AULB_SHIFT))&AXBS_MGPCR5_AULB_MASK) + +/*! + * @} + */ /* end of group AXBS_Register_Masks */ + + +/* AXBS - Peripheral instance base addresses */ +/** Peripheral AXBS base address */ +#define AXBS_BASE (0x40004000u) +/** Peripheral AXBS base pointer */ +#define AXBS ((AXBS_Type *)AXBS_BASE) +#define AXBS_BASE_PTR (AXBS) +/** Array initializer of AXBS peripheral base pointers */ +#define AXBS_BASES { AXBS } + +/* ---------------------------------------------------------------------------- + -- AXBS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AXBS_Register_Accessor_Macros AXBS - Register accessor macros + * @{ + */ + + +/* AXBS - Register instance definitions */ +/* AXBS */ +#define AXBS_PRS0 AXBS_PRS_REG(AXBS,0) +#define AXBS_CRS0 AXBS_CRS_REG(AXBS,0) +#define AXBS_PRS1 AXBS_PRS_REG(AXBS,1) +#define AXBS_CRS1 AXBS_CRS_REG(AXBS,1) +#define AXBS_PRS2 AXBS_PRS_REG(AXBS,2) +#define AXBS_CRS2 AXBS_CRS_REG(AXBS,2) +#define AXBS_PRS3 AXBS_PRS_REG(AXBS,3) +#define AXBS_CRS3 AXBS_CRS_REG(AXBS,3) +#define AXBS_PRS4 AXBS_PRS_REG(AXBS,4) +#define AXBS_CRS4 AXBS_CRS_REG(AXBS,4) +#define AXBS_MGPCR0 AXBS_MGPCR0_REG(AXBS) +#define AXBS_MGPCR1 AXBS_MGPCR1_REG(AXBS) +#define AXBS_MGPCR2 AXBS_MGPCR2_REG(AXBS) +#define AXBS_MGPCR3 AXBS_MGPCR3_REG(AXBS) +#define AXBS_MGPCR4 AXBS_MGPCR4_REG(AXBS) +#define AXBS_MGPCR5 AXBS_MGPCR5_REG(AXBS) + +/* AXBS - Register array accessors */ +#define AXBS_PRS(index) AXBS_PRS_REG(AXBS,index) +#define AXBS_CRS(index) AXBS_CRS_REG(AXBS,index) + +/*! + * @} + */ /* end of group AXBS_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group AXBS_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CAN Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAN_Peripheral_Access_Layer CAN Peripheral Access Layer + * @{ + */ + +/** CAN - Register Layout Typedef */ +typedef struct { + __IO uint32_t MCR; /**< Module Configuration Register, offset: 0x0 */ + __IO uint32_t CTRL1; /**< Control 1 register, offset: 0x4 */ + __IO uint32_t TIMER; /**< Free Running Timer, offset: 0x8 */ + uint8_t RESERVED_0[4]; + __IO uint32_t RXMGMASK; /**< Rx Mailboxes Global Mask Register, offset: 0x10 */ + __IO uint32_t RX14MASK; /**< Rx 14 Mask register, offset: 0x14 */ + __IO uint32_t RX15MASK; /**< Rx 15 Mask register, offset: 0x18 */ + __IO uint32_t ECR; /**< Error Counter, offset: 0x1C */ + __IO uint32_t ESR1; /**< Error and Status 1 register, offset: 0x20 */ + uint8_t RESERVED_1[4]; + __IO uint32_t IMASK1; /**< Interrupt Masks 1 register, offset: 0x28 */ + uint8_t RESERVED_2[4]; + __IO uint32_t IFLAG1; /**< Interrupt Flags 1 register, offset: 0x30 */ + __IO uint32_t CTRL2; /**< Control 2 register, offset: 0x34 */ + __I uint32_t ESR2; /**< Error and Status 2 register, offset: 0x38 */ + uint8_t RESERVED_3[8]; + __I uint32_t CRCR; /**< CRC Register, offset: 0x44 */ + __IO uint32_t RXFGMASK; /**< Rx FIFO Global Mask register, offset: 0x48 */ + __I uint32_t RXFIR; /**< Rx FIFO Information Register, offset: 0x4C */ + uint8_t RESERVED_4[48]; + struct { /* offset: 0x80, array step: 0x10 */ + __IO uint32_t CS; /**< Message Buffer 0 CS Register..Message Buffer 15 CS Register, array offset: 0x80, array step: 0x10 */ + __IO uint32_t ID; /**< Message Buffer 0 ID Register..Message Buffer 15 ID Register, array offset: 0x84, array step: 0x10 */ + __IO uint32_t WORD0; /**< Message Buffer 0 WORD0 Register..Message Buffer 15 WORD0 Register, array offset: 0x88, array step: 0x10 */ + __IO uint32_t WORD1; /**< Message Buffer 0 WORD1 Register..Message Buffer 15 WORD1 Register, array offset: 0x8C, array step: 0x10 */ + } MB[16]; + uint8_t RESERVED_5[1792]; + __IO uint32_t RXIMR[16]; /**< Rx Individual Mask Registers, array offset: 0x880, array step: 0x4 */ +} CAN_Type, *CAN_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CAN - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAN_Register_Accessor_Macros CAN - Register accessor macros + * @{ + */ + + +/* CAN - Register accessors */ +#define CAN_MCR_REG(base) ((base)->MCR) +#define CAN_CTRL1_REG(base) ((base)->CTRL1) +#define CAN_TIMER_REG(base) ((base)->TIMER) +#define CAN_RXMGMASK_REG(base) ((base)->RXMGMASK) +#define CAN_RX14MASK_REG(base) ((base)->RX14MASK) +#define CAN_RX15MASK_REG(base) ((base)->RX15MASK) +#define CAN_ECR_REG(base) ((base)->ECR) +#define CAN_ESR1_REG(base) ((base)->ESR1) +#define CAN_IMASK1_REG(base) ((base)->IMASK1) +#define CAN_IFLAG1_REG(base) ((base)->IFLAG1) +#define CAN_CTRL2_REG(base) ((base)->CTRL2) +#define CAN_ESR2_REG(base) ((base)->ESR2) +#define CAN_CRCR_REG(base) ((base)->CRCR) +#define CAN_RXFGMASK_REG(base) ((base)->RXFGMASK) +#define CAN_RXFIR_REG(base) ((base)->RXFIR) +#define CAN_CS_REG(base,index) ((base)->MB[index].CS) +#define CAN_ID_REG(base,index) ((base)->MB[index].ID) +#define CAN_WORD0_REG(base,index) ((base)->MB[index].WORD0) +#define CAN_WORD1_REG(base,index) ((base)->MB[index].WORD1) +#define CAN_RXIMR_REG(base,index) ((base)->RXIMR[index]) + +/*! + * @} + */ /* end of group CAN_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CAN Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAN_Register_Masks CAN Register Masks + * @{ + */ + +/* MCR Bit Fields */ +#define CAN_MCR_MAXMB_MASK 0x7Fu +#define CAN_MCR_MAXMB_SHIFT 0 +#define CAN_MCR_MAXMB(x) (((uint32_t)(((uint32_t)(x))<<CAN_MCR_MAXMB_SHIFT))&CAN_MCR_MAXMB_MASK) +#define CAN_MCR_IDAM_MASK 0x300u +#define CAN_MCR_IDAM_SHIFT 8 +#define CAN_MCR_IDAM(x) (((uint32_t)(((uint32_t)(x))<<CAN_MCR_IDAM_SHIFT))&CAN_MCR_IDAM_MASK) +#define CAN_MCR_AEN_MASK 0x1000u +#define CAN_MCR_AEN_SHIFT 12 +#define CAN_MCR_LPRIOEN_MASK 0x2000u +#define CAN_MCR_LPRIOEN_SHIFT 13 +#define CAN_MCR_IRMQ_MASK 0x10000u +#define CAN_MCR_IRMQ_SHIFT 16 +#define CAN_MCR_SRXDIS_MASK 0x20000u +#define CAN_MCR_SRXDIS_SHIFT 17 +#define CAN_MCR_WAKSRC_MASK 0x80000u +#define CAN_MCR_WAKSRC_SHIFT 19 +#define CAN_MCR_LPMACK_MASK 0x100000u +#define CAN_MCR_LPMACK_SHIFT 20 +#define CAN_MCR_WRNEN_MASK 0x200000u +#define CAN_MCR_WRNEN_SHIFT 21 +#define CAN_MCR_SLFWAK_MASK 0x400000u +#define CAN_MCR_SLFWAK_SHIFT 22 +#define CAN_MCR_SUPV_MASK 0x800000u +#define CAN_MCR_SUPV_SHIFT 23 +#define CAN_MCR_FRZACK_MASK 0x1000000u +#define CAN_MCR_FRZACK_SHIFT 24 +#define CAN_MCR_SOFTRST_MASK 0x2000000u +#define CAN_MCR_SOFTRST_SHIFT 25 +#define CAN_MCR_WAKMSK_MASK 0x4000000u +#define CAN_MCR_WAKMSK_SHIFT 26 +#define CAN_MCR_NOTRDY_MASK 0x8000000u +#define CAN_MCR_NOTRDY_SHIFT 27 +#define CAN_MCR_HALT_MASK 0x10000000u +#define CAN_MCR_HALT_SHIFT 28 +#define CAN_MCR_RFEN_MASK 0x20000000u +#define CAN_MCR_RFEN_SHIFT 29 +#define CAN_MCR_FRZ_MASK 0x40000000u +#define CAN_MCR_FRZ_SHIFT 30 +#define CAN_MCR_MDIS_MASK 0x80000000u +#define CAN_MCR_MDIS_SHIFT 31 +/* CTRL1 Bit Fields */ +#define CAN_CTRL1_PROPSEG_MASK 0x7u +#define CAN_CTRL1_PROPSEG_SHIFT 0 +#define CAN_CTRL1_PROPSEG(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_PROPSEG_SHIFT))&CAN_CTRL1_PROPSEG_MASK) +#define CAN_CTRL1_LOM_MASK 0x8u +#define CAN_CTRL1_LOM_SHIFT 3 +#define CAN_CTRL1_LBUF_MASK 0x10u +#define CAN_CTRL1_LBUF_SHIFT 4 +#define CAN_CTRL1_TSYN_MASK 0x20u +#define CAN_CTRL1_TSYN_SHIFT 5 +#define CAN_CTRL1_BOFFREC_MASK 0x40u +#define CAN_CTRL1_BOFFREC_SHIFT 6 +#define CAN_CTRL1_SMP_MASK 0x80u +#define CAN_CTRL1_SMP_SHIFT 7 +#define CAN_CTRL1_RWRNMSK_MASK 0x400u +#define CAN_CTRL1_RWRNMSK_SHIFT 10 +#define CAN_CTRL1_TWRNMSK_MASK 0x800u +#define CAN_CTRL1_TWRNMSK_SHIFT 11 +#define CAN_CTRL1_LPB_MASK 0x1000u +#define CAN_CTRL1_LPB_SHIFT 12 +#define CAN_CTRL1_CLKSRC_MASK 0x2000u +#define CAN_CTRL1_CLKSRC_SHIFT 13 +#define CAN_CTRL1_ERRMSK_MASK 0x4000u +#define CAN_CTRL1_ERRMSK_SHIFT 14 +#define CAN_CTRL1_BOFFMSK_MASK 0x8000u +#define CAN_CTRL1_BOFFMSK_SHIFT 15 +#define CAN_CTRL1_PSEG2_MASK 0x70000u +#define CAN_CTRL1_PSEG2_SHIFT 16 +#define CAN_CTRL1_PSEG2(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_PSEG2_SHIFT))&CAN_CTRL1_PSEG2_MASK) +#define CAN_CTRL1_PSEG1_MASK 0x380000u +#define CAN_CTRL1_PSEG1_SHIFT 19 +#define CAN_CTRL1_PSEG1(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_PSEG1_SHIFT))&CAN_CTRL1_PSEG1_MASK) +#define CAN_CTRL1_RJW_MASK 0xC00000u +#define CAN_CTRL1_RJW_SHIFT 22 +#define CAN_CTRL1_RJW(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_RJW_SHIFT))&CAN_CTRL1_RJW_MASK) +#define CAN_CTRL1_PRESDIV_MASK 0xFF000000u +#define CAN_CTRL1_PRESDIV_SHIFT 24 +#define CAN_CTRL1_PRESDIV(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_PRESDIV_SHIFT))&CAN_CTRL1_PRESDIV_MASK) +/* TIMER Bit Fields */ +#define CAN_TIMER_TIMER_MASK 0xFFFFu +#define CAN_TIMER_TIMER_SHIFT 0 +#define CAN_TIMER_TIMER(x) (((uint32_t)(((uint32_t)(x))<<CAN_TIMER_TIMER_SHIFT))&CAN_TIMER_TIMER_MASK) +/* RXMGMASK Bit Fields */ +#define CAN_RXMGMASK_MG_MASK 0xFFFFFFFFu +#define CAN_RXMGMASK_MG_SHIFT 0 +#define CAN_RXMGMASK_MG(x) (((uint32_t)(((uint32_t)(x))<<CAN_RXMGMASK_MG_SHIFT))&CAN_RXMGMASK_MG_MASK) +/* RX14MASK Bit Fields */ +#define CAN_RX14MASK_RX14M_MASK 0xFFFFFFFFu +#define CAN_RX14MASK_RX14M_SHIFT 0 +#define CAN_RX14MASK_RX14M(x) (((uint32_t)(((uint32_t)(x))<<CAN_RX14MASK_RX14M_SHIFT))&CAN_RX14MASK_RX14M_MASK) +/* RX15MASK Bit Fields */ +#define CAN_RX15MASK_RX15M_MASK 0xFFFFFFFFu +#define CAN_RX15MASK_RX15M_SHIFT 0 +#define CAN_RX15MASK_RX15M(x) (((uint32_t)(((uint32_t)(x))<<CAN_RX15MASK_RX15M_SHIFT))&CAN_RX15MASK_RX15M_MASK) +/* ECR Bit Fields */ +#define CAN_ECR_TXERRCNT_MASK 0xFFu +#define CAN_ECR_TXERRCNT_SHIFT 0 +#define CAN_ECR_TXERRCNT(x) (((uint32_t)(((uint32_t)(x))<<CAN_ECR_TXERRCNT_SHIFT))&CAN_ECR_TXERRCNT_MASK) +#define CAN_ECR_RXERRCNT_MASK 0xFF00u +#define CAN_ECR_RXERRCNT_SHIFT 8 +#define CAN_ECR_RXERRCNT(x) (((uint32_t)(((uint32_t)(x))<<CAN_ECR_RXERRCNT_SHIFT))&CAN_ECR_RXERRCNT_MASK) +/* ESR1 Bit Fields */ +#define CAN_ESR1_WAKINT_MASK 0x1u +#define CAN_ESR1_WAKINT_SHIFT 0 +#define CAN_ESR1_ERRINT_MASK 0x2u +#define CAN_ESR1_ERRINT_SHIFT 1 +#define CAN_ESR1_BOFFINT_MASK 0x4u +#define CAN_ESR1_BOFFINT_SHIFT 2 +#define CAN_ESR1_RX_MASK 0x8u +#define CAN_ESR1_RX_SHIFT 3 +#define CAN_ESR1_FLTCONF_MASK 0x30u +#define CAN_ESR1_FLTCONF_SHIFT 4 +#define CAN_ESR1_FLTCONF(x) (((uint32_t)(((uint32_t)(x))<<CAN_ESR1_FLTCONF_SHIFT))&CAN_ESR1_FLTCONF_MASK) +#define CAN_ESR1_TX_MASK 0x40u +#define CAN_ESR1_TX_SHIFT 6 +#define CAN_ESR1_IDLE_MASK 0x80u +#define CAN_ESR1_IDLE_SHIFT 7 +#define CAN_ESR1_RXWRN_MASK 0x100u +#define CAN_ESR1_RXWRN_SHIFT 8 +#define CAN_ESR1_TXWRN_MASK 0x200u +#define CAN_ESR1_TXWRN_SHIFT 9 +#define CAN_ESR1_STFERR_MASK 0x400u +#define CAN_ESR1_STFERR_SHIFT 10 +#define CAN_ESR1_FRMERR_MASK 0x800u +#define CAN_ESR1_FRMERR_SHIFT 11 +#define CAN_ESR1_CRCERR_MASK 0x1000u +#define CAN_ESR1_CRCERR_SHIFT 12 +#define CAN_ESR1_ACKERR_MASK 0x2000u +#define CAN_ESR1_ACKERR_SHIFT 13 +#define CAN_ESR1_BIT0ERR_MASK 0x4000u +#define CAN_ESR1_BIT0ERR_SHIFT 14 +#define CAN_ESR1_BIT1ERR_MASK 0x8000u +#define CAN_ESR1_BIT1ERR_SHIFT 15 +#define CAN_ESR1_RWRNINT_MASK 0x10000u +#define CAN_ESR1_RWRNINT_SHIFT 16 +#define CAN_ESR1_TWRNINT_MASK 0x20000u +#define CAN_ESR1_TWRNINT_SHIFT 17 +#define CAN_ESR1_SYNCH_MASK 0x40000u +#define CAN_ESR1_SYNCH_SHIFT 18 +/* IMASK1 Bit Fields */ +#define CAN_IMASK1_BUFLM_MASK 0xFFFFFFFFu +#define CAN_IMASK1_BUFLM_SHIFT 0 +#define CAN_IMASK1_BUFLM(x) (((uint32_t)(((uint32_t)(x))<<CAN_IMASK1_BUFLM_SHIFT))&CAN_IMASK1_BUFLM_MASK) +/* IFLAG1 Bit Fields */ +#define CAN_IFLAG1_BUF0I_MASK 0x1u +#define CAN_IFLAG1_BUF0I_SHIFT 0 +#define CAN_IFLAG1_BUF4TO1I_MASK 0x1Eu +#define CAN_IFLAG1_BUF4TO1I_SHIFT 1 +#define CAN_IFLAG1_BUF4TO1I(x) (((uint32_t)(((uint32_t)(x))<<CAN_IFLAG1_BUF4TO1I_SHIFT))&CAN_IFLAG1_BUF4TO1I_MASK) +#define CAN_IFLAG1_BUF5I_MASK 0x20u +#define CAN_IFLAG1_BUF5I_SHIFT 5 +#define CAN_IFLAG1_BUF6I_MASK 0x40u +#define CAN_IFLAG1_BUF6I_SHIFT 6 +#define CAN_IFLAG1_BUF7I_MASK 0x80u +#define CAN_IFLAG1_BUF7I_SHIFT 7 +#define CAN_IFLAG1_BUF31TO8I_MASK 0xFFFFFF00u +#define CAN_IFLAG1_BUF31TO8I_SHIFT 8 +#define CAN_IFLAG1_BUF31TO8I(x) (((uint32_t)(((uint32_t)(x))<<CAN_IFLAG1_BUF31TO8I_SHIFT))&CAN_IFLAG1_BUF31TO8I_MASK) +/* CTRL2 Bit Fields */ +#define CAN_CTRL2_EACEN_MASK 0x10000u +#define CAN_CTRL2_EACEN_SHIFT 16 +#define CAN_CTRL2_RRS_MASK 0x20000u +#define CAN_CTRL2_RRS_SHIFT 17 +#define CAN_CTRL2_MRP_MASK 0x40000u +#define CAN_CTRL2_MRP_SHIFT 18 +#define CAN_CTRL2_TASD_MASK 0xF80000u +#define CAN_CTRL2_TASD_SHIFT 19 +#define CAN_CTRL2_TASD(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL2_TASD_SHIFT))&CAN_CTRL2_TASD_MASK) +#define CAN_CTRL2_RFFN_MASK 0xF000000u +#define CAN_CTRL2_RFFN_SHIFT 24 +#define CAN_CTRL2_RFFN(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL2_RFFN_SHIFT))&CAN_CTRL2_RFFN_MASK) +#define CAN_CTRL2_WRMFRZ_MASK 0x10000000u +#define CAN_CTRL2_WRMFRZ_SHIFT 28 +/* ESR2 Bit Fields */ +#define CAN_ESR2_IMB_MASK 0x2000u +#define CAN_ESR2_IMB_SHIFT 13 +#define CAN_ESR2_VPS_MASK 0x4000u +#define CAN_ESR2_VPS_SHIFT 14 +#define CAN_ESR2_LPTM_MASK 0x7F0000u +#define CAN_ESR2_LPTM_SHIFT 16 +#define CAN_ESR2_LPTM(x) (((uint32_t)(((uint32_t)(x))<<CAN_ESR2_LPTM_SHIFT))&CAN_ESR2_LPTM_MASK) +/* CRCR Bit Fields */ +#define CAN_CRCR_TXCRC_MASK 0x7FFFu +#define CAN_CRCR_TXCRC_SHIFT 0 +#define CAN_CRCR_TXCRC(x) (((uint32_t)(((uint32_t)(x))<<CAN_CRCR_TXCRC_SHIFT))&CAN_CRCR_TXCRC_MASK) +#define CAN_CRCR_MBCRC_MASK 0x7F0000u +#define CAN_CRCR_MBCRC_SHIFT 16 +#define CAN_CRCR_MBCRC(x) (((uint32_t)(((uint32_t)(x))<<CAN_CRCR_MBCRC_SHIFT))&CAN_CRCR_MBCRC_MASK) +/* RXFGMASK Bit Fields */ +#define CAN_RXFGMASK_FGM_MASK 0xFFFFFFFFu +#define CAN_RXFGMASK_FGM_SHIFT 0 +#define CAN_RXFGMASK_FGM(x) (((uint32_t)(((uint32_t)(x))<<CAN_RXFGMASK_FGM_SHIFT))&CAN_RXFGMASK_FGM_MASK) +/* RXFIR Bit Fields */ +#define CAN_RXFIR_IDHIT_MASK 0x1FFu +#define CAN_RXFIR_IDHIT_SHIFT 0 +#define CAN_RXFIR_IDHIT(x) (((uint32_t)(((uint32_t)(x))<<CAN_RXFIR_IDHIT_SHIFT))&CAN_RXFIR_IDHIT_MASK) +/* CS Bit Fields */ +#define CAN_CS_TIME_STAMP_MASK 0xFFFFu +#define CAN_CS_TIME_STAMP_SHIFT 0 +#define CAN_CS_TIME_STAMP(x) (((uint32_t)(((uint32_t)(x))<<CAN_CS_TIME_STAMP_SHIFT))&CAN_CS_TIME_STAMP_MASK) +#define CAN_CS_DLC_MASK 0xF0000u +#define CAN_CS_DLC_SHIFT 16 +#define CAN_CS_DLC(x) (((uint32_t)(((uint32_t)(x))<<CAN_CS_DLC_SHIFT))&CAN_CS_DLC_MASK) +#define CAN_CS_RTR_MASK 0x100000u +#define CAN_CS_RTR_SHIFT 20 +#define CAN_CS_IDE_MASK 0x200000u +#define CAN_CS_IDE_SHIFT 21 +#define CAN_CS_SRR_MASK 0x400000u +#define CAN_CS_SRR_SHIFT 22 +#define CAN_CS_CODE_MASK 0xF000000u +#define CAN_CS_CODE_SHIFT 24 +#define CAN_CS_CODE(x) (((uint32_t)(((uint32_t)(x))<<CAN_CS_CODE_SHIFT))&CAN_CS_CODE_MASK) +/* ID Bit Fields */ +#define CAN_ID_EXT_MASK 0x3FFFFu +#define CAN_ID_EXT_SHIFT 0 +#define CAN_ID_EXT(x) (((uint32_t)(((uint32_t)(x))<<CAN_ID_EXT_SHIFT))&CAN_ID_EXT_MASK) +#define CAN_ID_STD_MASK 0x1FFC0000u +#define CAN_ID_STD_SHIFT 18 +#define CAN_ID_STD(x) (((uint32_t)(((uint32_t)(x))<<CAN_ID_STD_SHIFT))&CAN_ID_STD_MASK) +#define CAN_ID_PRIO_MASK 0xE0000000u +#define CAN_ID_PRIO_SHIFT 29 +#define CAN_ID_PRIO(x) (((uint32_t)(((uint32_t)(x))<<CAN_ID_PRIO_SHIFT))&CAN_ID_PRIO_MASK) +/* WORD0 Bit Fields */ +#define CAN_WORD0_DATA_BYTE_3_MASK 0xFFu +#define CAN_WORD0_DATA_BYTE_3_SHIFT 0 +#define CAN_WORD0_DATA_BYTE_3(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD0_DATA_BYTE_3_SHIFT))&CAN_WORD0_DATA_BYTE_3_MASK) +#define CAN_WORD0_DATA_BYTE_2_MASK 0xFF00u +#define CAN_WORD0_DATA_BYTE_2_SHIFT 8 +#define CAN_WORD0_DATA_BYTE_2(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD0_DATA_BYTE_2_SHIFT))&CAN_WORD0_DATA_BYTE_2_MASK) +#define CAN_WORD0_DATA_BYTE_1_MASK 0xFF0000u +#define CAN_WORD0_DATA_BYTE_1_SHIFT 16 +#define CAN_WORD0_DATA_BYTE_1(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD0_DATA_BYTE_1_SHIFT))&CAN_WORD0_DATA_BYTE_1_MASK) +#define CAN_WORD0_DATA_BYTE_0_MASK 0xFF000000u +#define CAN_WORD0_DATA_BYTE_0_SHIFT 24 +#define CAN_WORD0_DATA_BYTE_0(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD0_DATA_BYTE_0_SHIFT))&CAN_WORD0_DATA_BYTE_0_MASK) +/* WORD1 Bit Fields */ +#define CAN_WORD1_DATA_BYTE_7_MASK 0xFFu +#define CAN_WORD1_DATA_BYTE_7_SHIFT 0 +#define CAN_WORD1_DATA_BYTE_7(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD1_DATA_BYTE_7_SHIFT))&CAN_WORD1_DATA_BYTE_7_MASK) +#define CAN_WORD1_DATA_BYTE_6_MASK 0xFF00u +#define CAN_WORD1_DATA_BYTE_6_SHIFT 8 +#define CAN_WORD1_DATA_BYTE_6(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD1_DATA_BYTE_6_SHIFT))&CAN_WORD1_DATA_BYTE_6_MASK) +#define CAN_WORD1_DATA_BYTE_5_MASK 0xFF0000u +#define CAN_WORD1_DATA_BYTE_5_SHIFT 16 +#define CAN_WORD1_DATA_BYTE_5(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD1_DATA_BYTE_5_SHIFT))&CAN_WORD1_DATA_BYTE_5_MASK) +#define CAN_WORD1_DATA_BYTE_4_MASK 0xFF000000u +#define CAN_WORD1_DATA_BYTE_4_SHIFT 24 +#define CAN_WORD1_DATA_BYTE_4(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD1_DATA_BYTE_4_SHIFT))&CAN_WORD1_DATA_BYTE_4_MASK) +/* RXIMR Bit Fields */ +#define CAN_RXIMR_MI_MASK 0xFFFFFFFFu +#define CAN_RXIMR_MI_SHIFT 0 +#define CAN_RXIMR_MI(x) (((uint32_t)(((uint32_t)(x))<<CAN_RXIMR_MI_SHIFT))&CAN_RXIMR_MI_MASK) + +/*! + * @} + */ /* end of group CAN_Register_Masks */ + + +/* CAN - Peripheral instance base addresses */ +/** Peripheral CAN0 base address */ +#define CAN0_BASE (0x40024000u) +/** Peripheral CAN0 base pointer */ +#define CAN0 ((CAN_Type *)CAN0_BASE) +#define CAN0_BASE_PTR (CAN0) +/** Array initializer of CAN peripheral base pointers */ +#define CAN_BASES { CAN0 } + +/* ---------------------------------------------------------------------------- + -- CAN - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAN_Register_Accessor_Macros CAN - Register accessor macros + * @{ + */ + + +/* CAN - Register instance definitions */ +/* CAN0 */ +#define CAN0_MCR CAN_MCR_REG(CAN0) +#define CAN0_CTRL1 CAN_CTRL1_REG(CAN0) +#define CAN0_TIMER CAN_TIMER_REG(CAN0) +#define CAN0_RXMGMASK CAN_RXMGMASK_REG(CAN0) +#define CAN0_RX14MASK CAN_RX14MASK_REG(CAN0) +#define CAN0_RX15MASK CAN_RX15MASK_REG(CAN0) +#define CAN0_ECR CAN_ECR_REG(CAN0) +#define CAN0_ESR1 CAN_ESR1_REG(CAN0) +#define CAN0_IMASK1 CAN_IMASK1_REG(CAN0) +#define CAN0_IFLAG1 CAN_IFLAG1_REG(CAN0) +#define CAN0_CTRL2 CAN_CTRL2_REG(CAN0) +#define CAN0_ESR2 CAN_ESR2_REG(CAN0) +#define CAN0_CRCR CAN_CRCR_REG(CAN0) +#define CAN0_RXFGMASK CAN_RXFGMASK_REG(CAN0) +#define CAN0_RXFIR CAN_RXFIR_REG(CAN0) +#define CAN0_CS0 CAN_CS_REG(CAN0,0) +#define CAN0_ID0 CAN_ID_REG(CAN0,0) +#define CAN0_WORD00 CAN_WORD0_REG(CAN0,0) +#define CAN0_WORD10 CAN_WORD1_REG(CAN0,0) +#define CAN0_CS1 CAN_CS_REG(CAN0,1) +#define CAN0_ID1 CAN_ID_REG(CAN0,1) +#define CAN0_WORD01 CAN_WORD0_REG(CAN0,1) +#define CAN0_WORD11 CAN_WORD1_REG(CAN0,1) +#define CAN0_CS2 CAN_CS_REG(CAN0,2) +#define CAN0_ID2 CAN_ID_REG(CAN0,2) +#define CAN0_WORD02 CAN_WORD0_REG(CAN0,2) +#define CAN0_WORD12 CAN_WORD1_REG(CAN0,2) +#define CAN0_CS3 CAN_CS_REG(CAN0,3) +#define CAN0_ID3 CAN_ID_REG(CAN0,3) +#define CAN0_WORD03 CAN_WORD0_REG(CAN0,3) +#define CAN0_WORD13 CAN_WORD1_REG(CAN0,3) +#define CAN0_CS4 CAN_CS_REG(CAN0,4) +#define CAN0_ID4 CAN_ID_REG(CAN0,4) +#define CAN0_WORD04 CAN_WORD0_REG(CAN0,4) +#define CAN0_WORD14 CAN_WORD1_REG(CAN0,4) +#define CAN0_CS5 CAN_CS_REG(CAN0,5) +#define CAN0_ID5 CAN_ID_REG(CAN0,5) +#define CAN0_WORD05 CAN_WORD0_REG(CAN0,5) +#define CAN0_WORD15 CAN_WORD1_REG(CAN0,5) +#define CAN0_CS6 CAN_CS_REG(CAN0,6) +#define CAN0_ID6 CAN_ID_REG(CAN0,6) +#define CAN0_WORD06 CAN_WORD0_REG(CAN0,6) +#define CAN0_WORD16 CAN_WORD1_REG(CAN0,6) +#define CAN0_CS7 CAN_CS_REG(CAN0,7) +#define CAN0_ID7 CAN_ID_REG(CAN0,7) +#define CAN0_WORD07 CAN_WORD0_REG(CAN0,7) +#define CAN0_WORD17 CAN_WORD1_REG(CAN0,7) +#define CAN0_CS8 CAN_CS_REG(CAN0,8) +#define CAN0_ID8 CAN_ID_REG(CAN0,8) +#define CAN0_WORD08 CAN_WORD0_REG(CAN0,8) +#define CAN0_WORD18 CAN_WORD1_REG(CAN0,8) +#define CAN0_CS9 CAN_CS_REG(CAN0,9) +#define CAN0_ID9 CAN_ID_REG(CAN0,9) +#define CAN0_WORD09 CAN_WORD0_REG(CAN0,9) +#define CAN0_WORD19 CAN_WORD1_REG(CAN0,9) +#define CAN0_CS10 CAN_CS_REG(CAN0,10) +#define CAN0_ID10 CAN_ID_REG(CAN0,10) +#define CAN0_WORD010 CAN_WORD0_REG(CAN0,10) +#define CAN0_WORD110 CAN_WORD1_REG(CAN0,10) +#define CAN0_CS11 CAN_CS_REG(CAN0,11) +#define CAN0_ID11 CAN_ID_REG(CAN0,11) +#define CAN0_WORD011 CAN_WORD0_REG(CAN0,11) +#define CAN0_WORD111 CAN_WORD1_REG(CAN0,11) +#define CAN0_CS12 CAN_CS_REG(CAN0,12) +#define CAN0_ID12 CAN_ID_REG(CAN0,12) +#define CAN0_WORD012 CAN_WORD0_REG(CAN0,12) +#define CAN0_WORD112 CAN_WORD1_REG(CAN0,12) +#define CAN0_CS13 CAN_CS_REG(CAN0,13) +#define CAN0_ID13 CAN_ID_REG(CAN0,13) +#define CAN0_WORD013 CAN_WORD0_REG(CAN0,13) +#define CAN0_WORD113 CAN_WORD1_REG(CAN0,13) +#define CAN0_CS14 CAN_CS_REG(CAN0,14) +#define CAN0_ID14 CAN_ID_REG(CAN0,14) +#define CAN0_WORD014 CAN_WORD0_REG(CAN0,14) +#define CAN0_WORD114 CAN_WORD1_REG(CAN0,14) +#define CAN0_CS15 CAN_CS_REG(CAN0,15) +#define CAN0_ID15 CAN_ID_REG(CAN0,15) +#define CAN0_WORD015 CAN_WORD0_REG(CAN0,15) +#define CAN0_WORD115 CAN_WORD1_REG(CAN0,15) +#define CAN0_RXIMR0 CAN_RXIMR_REG(CAN0,0) +#define CAN0_RXIMR1 CAN_RXIMR_REG(CAN0,1) +#define CAN0_RXIMR2 CAN_RXIMR_REG(CAN0,2) +#define CAN0_RXIMR3 CAN_RXIMR_REG(CAN0,3) +#define CAN0_RXIMR4 CAN_RXIMR_REG(CAN0,4) +#define CAN0_RXIMR5 CAN_RXIMR_REG(CAN0,5) +#define CAN0_RXIMR6 CAN_RXIMR_REG(CAN0,6) +#define CAN0_RXIMR7 CAN_RXIMR_REG(CAN0,7) +#define CAN0_RXIMR8 CAN_RXIMR_REG(CAN0,8) +#define CAN0_RXIMR9 CAN_RXIMR_REG(CAN0,9) +#define CAN0_RXIMR10 CAN_RXIMR_REG(CAN0,10) +#define CAN0_RXIMR11 CAN_RXIMR_REG(CAN0,11) +#define CAN0_RXIMR12 CAN_RXIMR_REG(CAN0,12) +#define CAN0_RXIMR13 CAN_RXIMR_REG(CAN0,13) +#define CAN0_RXIMR14 CAN_RXIMR_REG(CAN0,14) +#define CAN0_RXIMR15 CAN_RXIMR_REG(CAN0,15) + +/* CAN - Register array accessors */ +#define CAN0_CS(index) CAN_CS_REG(CAN0,index) +#define CAN0_ID(index) CAN_ID_REG(CAN0,index) +#define CAN0_WORD0(index) CAN_WORD0_REG(CAN0,index) +#define CAN0_WORD1(index) CAN_WORD1_REG(CAN0,index) +#define CAN0_RXIMR(index) CAN_RXIMR_REG(CAN0,index) + +/*! + * @} + */ /* end of group CAN_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CAN_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CAU Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAU_Peripheral_Access_Layer CAU Peripheral Access Layer + * @{ + */ + +/** CAU - Register Layout Typedef */ +typedef struct { + __O uint32_t DIRECT[16]; /**< Direct access register 0..Direct access register 15, array offset: 0x0, array step: 0x4 */ + uint8_t RESERVED_0[2048]; + __O uint32_t LDR_CASR; /**< Status register - Load Register command, offset: 0x840 */ + __O uint32_t LDR_CAA; /**< Accumulator register - Load Register command, offset: 0x844 */ + __O uint32_t LDR_CA[9]; /**< General Purpose Register 0 - Load Register command..General Purpose Register 8 - Load Register command, array offset: 0x848, array step: 0x4 */ + uint8_t RESERVED_1[20]; + __I uint32_t STR_CASR; /**< Status register - Store Register command, offset: 0x880 */ + __I uint32_t STR_CAA; /**< Accumulator register - Store Register command, offset: 0x884 */ + __I uint32_t STR_CA[9]; /**< General Purpose Register 0 - Store Register command..General Purpose Register 8 - Store Register command, array offset: 0x888, array step: 0x4 */ + uint8_t RESERVED_2[20]; + __O uint32_t ADR_CASR; /**< Status register - Add Register command, offset: 0x8C0 */ + __O uint32_t ADR_CAA; /**< Accumulator register - Add to register command, offset: 0x8C4 */ + __O uint32_t ADR_CA[9]; /**< General Purpose Register 0 - Add to register command..General Purpose Register 8 - Add to register command, array offset: 0x8C8, array step: 0x4 */ + uint8_t RESERVED_3[20]; + __O uint32_t RADR_CASR; /**< Status register - Reverse and Add to Register command, offset: 0x900 */ + __O uint32_t RADR_CAA; /**< Accumulator register - Reverse and Add to Register command, offset: 0x904 */ + __O uint32_t RADR_CA[9]; /**< General Purpose Register 0 - Reverse and Add to Register command..General Purpose Register 8 - Reverse and Add to Register command, array offset: 0x908, array step: 0x4 */ + uint8_t RESERVED_4[84]; + __O uint32_t XOR_CASR; /**< Status register - Exclusive Or command, offset: 0x980 */ + __O uint32_t XOR_CAA; /**< Accumulator register - Exclusive Or command, offset: 0x984 */ + __O uint32_t XOR_CA[9]; /**< General Purpose Register 0 - Exclusive Or command..General Purpose Register 8 - Exclusive Or command, array offset: 0x988, array step: 0x4 */ + uint8_t RESERVED_5[20]; + __O uint32_t ROTL_CASR; /**< Status register - Rotate Left command, offset: 0x9C0 */ + __O uint32_t ROTL_CAA; /**< Accumulator register - Rotate Left command, offset: 0x9C4 */ + __O uint32_t ROTL_CA[9]; /**< General Purpose Register 0 - Rotate Left command..General Purpose Register 8 - Rotate Left command, array offset: 0x9C8, array step: 0x4 */ + uint8_t RESERVED_6[276]; + __O uint32_t AESC_CASR; /**< Status register - AES Column Operation command, offset: 0xB00 */ + __O uint32_t AESC_CAA; /**< Accumulator register - AES Column Operation command, offset: 0xB04 */ + __O uint32_t AESC_CA[9]; /**< General Purpose Register 0 - AES Column Operation command..General Purpose Register 8 - AES Column Operation command, array offset: 0xB08, array step: 0x4 */ + uint8_t RESERVED_7[20]; + __O uint32_t AESIC_CASR; /**< Status register - AES Inverse Column Operation command, offset: 0xB40 */ + __O uint32_t AESIC_CAA; /**< Accumulator register - AES Inverse Column Operation command, offset: 0xB44 */ + __O uint32_t AESIC_CA[9]; /**< General Purpose Register 0 - AES Inverse Column Operation command..General Purpose Register 8 - AES Inverse Column Operation command, array offset: 0xB48, array step: 0x4 */ +} CAU_Type, *CAU_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CAU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAU_Register_Accessor_Macros CAU - Register accessor macros + * @{ + */ + + +/* CAU - Register accessors */ +#define CAU_DIRECT_REG(base,index) ((base)->DIRECT[index]) +#define CAU_LDR_CASR_REG(base) ((base)->LDR_CASR) +#define CAU_LDR_CAA_REG(base) ((base)->LDR_CAA) +#define CAU_LDR_CA_REG(base,index) ((base)->LDR_CA[index]) +#define CAU_STR_CASR_REG(base) ((base)->STR_CASR) +#define CAU_STR_CAA_REG(base) ((base)->STR_CAA) +#define CAU_STR_CA_REG(base,index) ((base)->STR_CA[index]) +#define CAU_ADR_CASR_REG(base) ((base)->ADR_CASR) +#define CAU_ADR_CAA_REG(base) ((base)->ADR_CAA) +#define CAU_ADR_CA_REG(base,index) ((base)->ADR_CA[index]) +#define CAU_RADR_CASR_REG(base) ((base)->RADR_CASR) +#define CAU_RADR_CAA_REG(base) ((base)->RADR_CAA) +#define CAU_RADR_CA_REG(base,index) ((base)->RADR_CA[index]) +#define CAU_XOR_CASR_REG(base) ((base)->XOR_CASR) +#define CAU_XOR_CAA_REG(base) ((base)->XOR_CAA) +#define CAU_XOR_CA_REG(base,index) ((base)->XOR_CA[index]) +#define CAU_ROTL_CASR_REG(base) ((base)->ROTL_CASR) +#define CAU_ROTL_CAA_REG(base) ((base)->ROTL_CAA) +#define CAU_ROTL_CA_REG(base,index) ((base)->ROTL_CA[index]) +#define CAU_AESC_CASR_REG(base) ((base)->AESC_CASR) +#define CAU_AESC_CAA_REG(base) ((base)->AESC_CAA) +#define CAU_AESC_CA_REG(base,index) ((base)->AESC_CA[index]) +#define CAU_AESIC_CASR_REG(base) ((base)->AESIC_CASR) +#define CAU_AESIC_CAA_REG(base) ((base)->AESIC_CAA) +#define CAU_AESIC_CA_REG(base,index) ((base)->AESIC_CA[index]) + +/*! + * @} + */ /* end of group CAU_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CAU Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAU_Register_Masks CAU Register Masks + * @{ + */ + +/* LDR_CASR Bit Fields */ +#define CAU_LDR_CASR_IC_MASK 0x1u +#define CAU_LDR_CASR_IC_SHIFT 0 +#define CAU_LDR_CASR_DPE_MASK 0x2u +#define CAU_LDR_CASR_DPE_SHIFT 1 +#define CAU_LDR_CASR_VER_MASK 0xF0000000u +#define CAU_LDR_CASR_VER_SHIFT 28 +#define CAU_LDR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_LDR_CASR_VER_SHIFT))&CAU_LDR_CASR_VER_MASK) +/* STR_CASR Bit Fields */ +#define CAU_STR_CASR_IC_MASK 0x1u +#define CAU_STR_CASR_IC_SHIFT 0 +#define CAU_STR_CASR_DPE_MASK 0x2u +#define CAU_STR_CASR_DPE_SHIFT 1 +#define CAU_STR_CASR_VER_MASK 0xF0000000u +#define CAU_STR_CASR_VER_SHIFT 28 +#define CAU_STR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_STR_CASR_VER_SHIFT))&CAU_STR_CASR_VER_MASK) +/* ADR_CASR Bit Fields */ +#define CAU_ADR_CASR_IC_MASK 0x1u +#define CAU_ADR_CASR_IC_SHIFT 0 +#define CAU_ADR_CASR_DPE_MASK 0x2u +#define CAU_ADR_CASR_DPE_SHIFT 1 +#define CAU_ADR_CASR_VER_MASK 0xF0000000u +#define CAU_ADR_CASR_VER_SHIFT 28 +#define CAU_ADR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_ADR_CASR_VER_SHIFT))&CAU_ADR_CASR_VER_MASK) +/* RADR_CASR Bit Fields */ +#define CAU_RADR_CASR_IC_MASK 0x1u +#define CAU_RADR_CASR_IC_SHIFT 0 +#define CAU_RADR_CASR_DPE_MASK 0x2u +#define CAU_RADR_CASR_DPE_SHIFT 1 +#define CAU_RADR_CASR_VER_MASK 0xF0000000u +#define CAU_RADR_CASR_VER_SHIFT 28 +#define CAU_RADR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_RADR_CASR_VER_SHIFT))&CAU_RADR_CASR_VER_MASK) +/* XOR_CASR Bit Fields */ +#define CAU_XOR_CASR_IC_MASK 0x1u +#define CAU_XOR_CASR_IC_SHIFT 0 +#define CAU_XOR_CASR_DPE_MASK 0x2u +#define CAU_XOR_CASR_DPE_SHIFT 1 +#define CAU_XOR_CASR_VER_MASK 0xF0000000u +#define CAU_XOR_CASR_VER_SHIFT 28 +#define CAU_XOR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_XOR_CASR_VER_SHIFT))&CAU_XOR_CASR_VER_MASK) +/* ROTL_CASR Bit Fields */ +#define CAU_ROTL_CASR_IC_MASK 0x1u +#define CAU_ROTL_CASR_IC_SHIFT 0 +#define CAU_ROTL_CASR_DPE_MASK 0x2u +#define CAU_ROTL_CASR_DPE_SHIFT 1 +#define CAU_ROTL_CASR_VER_MASK 0xF0000000u +#define CAU_ROTL_CASR_VER_SHIFT 28 +#define CAU_ROTL_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_ROTL_CASR_VER_SHIFT))&CAU_ROTL_CASR_VER_MASK) +/* AESC_CASR Bit Fields */ +#define CAU_AESC_CASR_IC_MASK 0x1u +#define CAU_AESC_CASR_IC_SHIFT 0 +#define CAU_AESC_CASR_DPE_MASK 0x2u +#define CAU_AESC_CASR_DPE_SHIFT 1 +#define CAU_AESC_CASR_VER_MASK 0xF0000000u +#define CAU_AESC_CASR_VER_SHIFT 28 +#define CAU_AESC_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_AESC_CASR_VER_SHIFT))&CAU_AESC_CASR_VER_MASK) +/* AESIC_CASR Bit Fields */ +#define CAU_AESIC_CASR_IC_MASK 0x1u +#define CAU_AESIC_CASR_IC_SHIFT 0 +#define CAU_AESIC_CASR_DPE_MASK 0x2u +#define CAU_AESIC_CASR_DPE_SHIFT 1 +#define CAU_AESIC_CASR_VER_MASK 0xF0000000u +#define CAU_AESIC_CASR_VER_SHIFT 28 +#define CAU_AESIC_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_AESIC_CASR_VER_SHIFT))&CAU_AESIC_CASR_VER_MASK) + +/*! + * @} + */ /* end of group CAU_Register_Masks */ + + +/* CAU - Peripheral instance base addresses */ +/** Peripheral CAU base address */ +#define CAU_BASE (0xE0081000u) +/** Peripheral CAU base pointer */ +#define CAU ((CAU_Type *)CAU_BASE) +#define CAU_BASE_PTR (CAU) +/** Array initializer of CAU peripheral base pointers */ +#define CAU_BASES { CAU } + +/* ---------------------------------------------------------------------------- + -- CAU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAU_Register_Accessor_Macros CAU - Register accessor macros + * @{ + */ + + +/* CAU - Register instance definitions */ +/* CAU */ +#define CAU_DIRECT0 CAU_DIRECT_REG(CAU,0) +#define CAU_DIRECT1 CAU_DIRECT_REG(CAU,1) +#define CAU_DIRECT2 CAU_DIRECT_REG(CAU,2) +#define CAU_DIRECT3 CAU_DIRECT_REG(CAU,3) +#define CAU_DIRECT4 CAU_DIRECT_REG(CAU,4) +#define CAU_DIRECT5 CAU_DIRECT_REG(CAU,5) +#define CAU_DIRECT6 CAU_DIRECT_REG(CAU,6) +#define CAU_DIRECT7 CAU_DIRECT_REG(CAU,7) +#define CAU_DIRECT8 CAU_DIRECT_REG(CAU,8) +#define CAU_DIRECT9 CAU_DIRECT_REG(CAU,9) +#define CAU_DIRECT10 CAU_DIRECT_REG(CAU,10) +#define CAU_DIRECT11 CAU_DIRECT_REG(CAU,11) +#define CAU_DIRECT12 CAU_DIRECT_REG(CAU,12) +#define CAU_DIRECT13 CAU_DIRECT_REG(CAU,13) +#define CAU_DIRECT14 CAU_DIRECT_REG(CAU,14) +#define CAU_DIRECT15 CAU_DIRECT_REG(CAU,15) +#define CAU_LDR_CASR CAU_LDR_CASR_REG(CAU) +#define CAU_LDR_CAA CAU_LDR_CAA_REG(CAU) +#define CAU_LDR_CA0 CAU_LDR_CA_REG(CAU,0) +#define CAU_LDR_CA1 CAU_LDR_CA_REG(CAU,1) +#define CAU_LDR_CA2 CAU_LDR_CA_REG(CAU,2) +#define CAU_LDR_CA3 CAU_LDR_CA_REG(CAU,3) +#define CAU_LDR_CA4 CAU_LDR_CA_REG(CAU,4) +#define CAU_LDR_CA5 CAU_LDR_CA_REG(CAU,5) +#define CAU_LDR_CA6 CAU_LDR_CA_REG(CAU,6) +#define CAU_LDR_CA7 CAU_LDR_CA_REG(CAU,7) +#define CAU_LDR_CA8 CAU_LDR_CA_REG(CAU,8) +#define CAU_STR_CASR CAU_STR_CASR_REG(CAU) +#define CAU_STR_CAA CAU_STR_CAA_REG(CAU) +#define CAU_STR_CA0 CAU_STR_CA_REG(CAU,0) +#define CAU_STR_CA1 CAU_STR_CA_REG(CAU,1) +#define CAU_STR_CA2 CAU_STR_CA_REG(CAU,2) +#define CAU_STR_CA3 CAU_STR_CA_REG(CAU,3) +#define CAU_STR_CA4 CAU_STR_CA_REG(CAU,4) +#define CAU_STR_CA5 CAU_STR_CA_REG(CAU,5) +#define CAU_STR_CA6 CAU_STR_CA_REG(CAU,6) +#define CAU_STR_CA7 CAU_STR_CA_REG(CAU,7) +#define CAU_STR_CA8 CAU_STR_CA_REG(CAU,8) +#define CAU_ADR_CASR CAU_ADR_CASR_REG(CAU) +#define CAU_ADR_CAA CAU_ADR_CAA_REG(CAU) +#define CAU_ADR_CA0 CAU_ADR_CA_REG(CAU,0) +#define CAU_ADR_CA1 CAU_ADR_CA_REG(CAU,1) +#define CAU_ADR_CA2 CAU_ADR_CA_REG(CAU,2) +#define CAU_ADR_CA3 CAU_ADR_CA_REG(CAU,3) +#define CAU_ADR_CA4 CAU_ADR_CA_REG(CAU,4) +#define CAU_ADR_CA5 CAU_ADR_CA_REG(CAU,5) +#define CAU_ADR_CA6 CAU_ADR_CA_REG(CAU,6) +#define CAU_ADR_CA7 CAU_ADR_CA_REG(CAU,7) +#define CAU_ADR_CA8 CAU_ADR_CA_REG(CAU,8) +#define CAU_RADR_CASR CAU_RADR_CASR_REG(CAU) +#define CAU_RADR_CAA CAU_RADR_CAA_REG(CAU) +#define CAU_RADR_CA0 CAU_RADR_CA_REG(CAU,0) +#define CAU_RADR_CA1 CAU_RADR_CA_REG(CAU,1) +#define CAU_RADR_CA2 CAU_RADR_CA_REG(CAU,2) +#define CAU_RADR_CA3 CAU_RADR_CA_REG(CAU,3) +#define CAU_RADR_CA4 CAU_RADR_CA_REG(CAU,4) +#define CAU_RADR_CA5 CAU_RADR_CA_REG(CAU,5) +#define CAU_RADR_CA6 CAU_RADR_CA_REG(CAU,6) +#define CAU_RADR_CA7 CAU_RADR_CA_REG(CAU,7) +#define CAU_RADR_CA8 CAU_RADR_CA_REG(CAU,8) +#define CAU_XOR_CASR CAU_XOR_CASR_REG(CAU) +#define CAU_XOR_CAA CAU_XOR_CAA_REG(CAU) +#define CAU_XOR_CA0 CAU_XOR_CA_REG(CAU,0) +#define CAU_XOR_CA1 CAU_XOR_CA_REG(CAU,1) +#define CAU_XOR_CA2 CAU_XOR_CA_REG(CAU,2) +#define CAU_XOR_CA3 CAU_XOR_CA_REG(CAU,3) +#define CAU_XOR_CA4 CAU_XOR_CA_REG(CAU,4) +#define CAU_XOR_CA5 CAU_XOR_CA_REG(CAU,5) +#define CAU_XOR_CA6 CAU_XOR_CA_REG(CAU,6) +#define CAU_XOR_CA7 CAU_XOR_CA_REG(CAU,7) +#define CAU_XOR_CA8 CAU_XOR_CA_REG(CAU,8) +#define CAU_ROTL_CASR CAU_ROTL_CASR_REG(CAU) +#define CAU_ROTL_CAA CAU_ROTL_CAA_REG(CAU) +#define CAU_ROTL_CA0 CAU_ROTL_CA_REG(CAU,0) +#define CAU_ROTL_CA1 CAU_ROTL_CA_REG(CAU,1) +#define CAU_ROTL_CA2 CAU_ROTL_CA_REG(CAU,2) +#define CAU_ROTL_CA3 CAU_ROTL_CA_REG(CAU,3) +#define CAU_ROTL_CA4 CAU_ROTL_CA_REG(CAU,4) +#define CAU_ROTL_CA5 CAU_ROTL_CA_REG(CAU,5) +#define CAU_ROTL_CA6 CAU_ROTL_CA_REG(CAU,6) +#define CAU_ROTL_CA7 CAU_ROTL_CA_REG(CAU,7) +#define CAU_ROTL_CA8 CAU_ROTL_CA_REG(CAU,8) +#define CAU_AESC_CASR CAU_AESC_CASR_REG(CAU) +#define CAU_AESC_CAA CAU_AESC_CAA_REG(CAU) +#define CAU_AESC_CA0 CAU_AESC_CA_REG(CAU,0) +#define CAU_AESC_CA1 CAU_AESC_CA_REG(CAU,1) +#define CAU_AESC_CA2 CAU_AESC_CA_REG(CAU,2) +#define CAU_AESC_CA3 CAU_AESC_CA_REG(CAU,3) +#define CAU_AESC_CA4 CAU_AESC_CA_REG(CAU,4) +#define CAU_AESC_CA5 CAU_AESC_CA_REG(CAU,5) +#define CAU_AESC_CA6 CAU_AESC_CA_REG(CAU,6) +#define CAU_AESC_CA7 CAU_AESC_CA_REG(CAU,7) +#define CAU_AESC_CA8 CAU_AESC_CA_REG(CAU,8) +#define CAU_AESIC_CASR CAU_AESIC_CASR_REG(CAU) +#define CAU_AESIC_CAA CAU_AESIC_CAA_REG(CAU) +#define CAU_AESIC_CA0 CAU_AESIC_CA_REG(CAU,0) +#define CAU_AESIC_CA1 CAU_AESIC_CA_REG(CAU,1) +#define CAU_AESIC_CA2 CAU_AESIC_CA_REG(CAU,2) +#define CAU_AESIC_CA3 CAU_AESIC_CA_REG(CAU,3) +#define CAU_AESIC_CA4 CAU_AESIC_CA_REG(CAU,4) +#define CAU_AESIC_CA5 CAU_AESIC_CA_REG(CAU,5) +#define CAU_AESIC_CA6 CAU_AESIC_CA_REG(CAU,6) +#define CAU_AESIC_CA7 CAU_AESIC_CA_REG(CAU,7) +#define CAU_AESIC_CA8 CAU_AESIC_CA_REG(CAU,8) + +/* CAU - Register array accessors */ +#define CAU_DIRECT(index) CAU_DIRECT_REG(CAU,index) +#define CAU_LDR_CA(index) CAU_LDR_CA_REG(CAU,index) +#define CAU_STR_CA(index) CAU_STR_CA_REG(CAU,index) +#define CAU_ADR_CA(index) CAU_ADR_CA_REG(CAU,index) +#define CAU_RADR_CA(index) CAU_RADR_CA_REG(CAU,index) +#define CAU_XOR_CA(index) CAU_XOR_CA_REG(CAU,index) +#define CAU_ROTL_CA(index) CAU_ROTL_CA_REG(CAU,index) +#define CAU_AESC_CA(index) CAU_AESC_CA_REG(CAU,index) +#define CAU_AESIC_CA(index) CAU_AESIC_CA_REG(CAU,index) + +/*! + * @} + */ /* end of group CAU_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CAU_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CMP Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMP_Peripheral_Access_Layer CMP Peripheral Access Layer + * @{ + */ + +/** CMP - Register Layout Typedef */ +typedef struct { + __IO uint8_t CR0; /**< CMP Control Register 0, offset: 0x0 */ + __IO uint8_t CR1; /**< CMP Control Register 1, offset: 0x1 */ + __IO uint8_t FPR; /**< CMP Filter Period Register, offset: 0x2 */ + __IO uint8_t SCR; /**< CMP Status and Control Register, offset: 0x3 */ + __IO uint8_t DACCR; /**< DAC Control Register, offset: 0x4 */ + __IO uint8_t MUXCR; /**< MUX Control Register, offset: 0x5 */ +} CMP_Type, *CMP_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CMP - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMP_Register_Accessor_Macros CMP - Register accessor macros + * @{ + */ + + +/* CMP - Register accessors */ +#define CMP_CR0_REG(base) ((base)->CR0) +#define CMP_CR1_REG(base) ((base)->CR1) +#define CMP_FPR_REG(base) ((base)->FPR) +#define CMP_SCR_REG(base) ((base)->SCR) +#define CMP_DACCR_REG(base) ((base)->DACCR) +#define CMP_MUXCR_REG(base) ((base)->MUXCR) + +/*! + * @} + */ /* end of group CMP_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CMP Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMP_Register_Masks CMP Register Masks + * @{ + */ + +/* CR0 Bit Fields */ +#define CMP_CR0_HYSTCTR_MASK 0x3u +#define CMP_CR0_HYSTCTR_SHIFT 0 +#define CMP_CR0_HYSTCTR(x) (((uint8_t)(((uint8_t)(x))<<CMP_CR0_HYSTCTR_SHIFT))&CMP_CR0_HYSTCTR_MASK) +#define CMP_CR0_FILTER_CNT_MASK 0x70u +#define CMP_CR0_FILTER_CNT_SHIFT 4 +#define CMP_CR0_FILTER_CNT(x) (((uint8_t)(((uint8_t)(x))<<CMP_CR0_FILTER_CNT_SHIFT))&CMP_CR0_FILTER_CNT_MASK) +/* CR1 Bit Fields */ +#define CMP_CR1_EN_MASK 0x1u +#define CMP_CR1_EN_SHIFT 0 +#define CMP_CR1_OPE_MASK 0x2u +#define CMP_CR1_OPE_SHIFT 1 +#define CMP_CR1_COS_MASK 0x4u +#define CMP_CR1_COS_SHIFT 2 +#define CMP_CR1_INV_MASK 0x8u +#define CMP_CR1_INV_SHIFT 3 +#define CMP_CR1_PMODE_MASK 0x10u +#define CMP_CR1_PMODE_SHIFT 4 +#define CMP_CR1_WE_MASK 0x40u +#define CMP_CR1_WE_SHIFT 6 +#define CMP_CR1_SE_MASK 0x80u +#define CMP_CR1_SE_SHIFT 7 +/* FPR Bit Fields */ +#define CMP_FPR_FILT_PER_MASK 0xFFu +#define CMP_FPR_FILT_PER_SHIFT 0 +#define CMP_FPR_FILT_PER(x) (((uint8_t)(((uint8_t)(x))<<CMP_FPR_FILT_PER_SHIFT))&CMP_FPR_FILT_PER_MASK) +/* SCR Bit Fields */ +#define CMP_SCR_COUT_MASK 0x1u +#define CMP_SCR_COUT_SHIFT 0 +#define CMP_SCR_CFF_MASK 0x2u +#define CMP_SCR_CFF_SHIFT 1 +#define CMP_SCR_CFR_MASK 0x4u +#define CMP_SCR_CFR_SHIFT 2 +#define CMP_SCR_IEF_MASK 0x8u +#define CMP_SCR_IEF_SHIFT 3 +#define CMP_SCR_IER_MASK 0x10u +#define CMP_SCR_IER_SHIFT 4 +#define CMP_SCR_DMAEN_MASK 0x40u +#define CMP_SCR_DMAEN_SHIFT 6 +/* DACCR Bit Fields */ +#define CMP_DACCR_VOSEL_MASK 0x3Fu +#define CMP_DACCR_VOSEL_SHIFT 0 +#define CMP_DACCR_VOSEL(x) (((uint8_t)(((uint8_t)(x))<<CMP_DACCR_VOSEL_SHIFT))&CMP_DACCR_VOSEL_MASK) +#define CMP_DACCR_VRSEL_MASK 0x40u +#define CMP_DACCR_VRSEL_SHIFT 6 +#define CMP_DACCR_DACEN_MASK 0x80u +#define CMP_DACCR_DACEN_SHIFT 7 +/* MUXCR Bit Fields */ +#define CMP_MUXCR_MSEL_MASK 0x7u +#define CMP_MUXCR_MSEL_SHIFT 0 +#define CMP_MUXCR_MSEL(x) (((uint8_t)(((uint8_t)(x))<<CMP_MUXCR_MSEL_SHIFT))&CMP_MUXCR_MSEL_MASK) +#define CMP_MUXCR_PSEL_MASK 0x38u +#define CMP_MUXCR_PSEL_SHIFT 3 +#define CMP_MUXCR_PSEL(x) (((uint8_t)(((uint8_t)(x))<<CMP_MUXCR_PSEL_SHIFT))&CMP_MUXCR_PSEL_MASK) +#define CMP_MUXCR_PSTM_MASK 0x80u +#define CMP_MUXCR_PSTM_SHIFT 7 + +/*! + * @} + */ /* end of group CMP_Register_Masks */ + + +/* CMP - Peripheral instance base addresses */ +/** Peripheral CMP0 base address */ +#define CMP0_BASE (0x40073000u) +/** Peripheral CMP0 base pointer */ +#define CMP0 ((CMP_Type *)CMP0_BASE) +#define CMP0_BASE_PTR (CMP0) +/** Peripheral CMP1 base address */ +#define CMP1_BASE (0x40073008u) +/** Peripheral CMP1 base pointer */ +#define CMP1 ((CMP_Type *)CMP1_BASE) +#define CMP1_BASE_PTR (CMP1) +/** Peripheral CMP2 base address */ +#define CMP2_BASE (0x40073010u) +/** Peripheral CMP2 base pointer */ +#define CMP2 ((CMP_Type *)CMP2_BASE) +#define CMP2_BASE_PTR (CMP2) +/** Array initializer of CMP peripheral base pointers */ +#define CMP_BASES { CMP0, CMP1, CMP2 } + +/* ---------------------------------------------------------------------------- + -- CMP - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMP_Register_Accessor_Macros CMP - Register accessor macros + * @{ + */ + + +/* CMP - Register instance definitions */ +/* CMP0 */ +#define CMP0_CR0 CMP_CR0_REG(CMP0) +#define CMP0_CR1 CMP_CR1_REG(CMP0) +#define CMP0_FPR CMP_FPR_REG(CMP0) +#define CMP0_SCR CMP_SCR_REG(CMP0) +#define CMP0_DACCR CMP_DACCR_REG(CMP0) +#define CMP0_MUXCR CMP_MUXCR_REG(CMP0) +/* CMP1 */ +#define CMP1_CR0 CMP_CR0_REG(CMP1) +#define CMP1_CR1 CMP_CR1_REG(CMP1) +#define CMP1_FPR CMP_FPR_REG(CMP1) +#define CMP1_SCR CMP_SCR_REG(CMP1) +#define CMP1_DACCR CMP_DACCR_REG(CMP1) +#define CMP1_MUXCR CMP_MUXCR_REG(CMP1) +/* CMP2 */ +#define CMP2_CR0 CMP_CR0_REG(CMP2) +#define CMP2_CR1 CMP_CR1_REG(CMP2) +#define CMP2_FPR CMP_FPR_REG(CMP2) +#define CMP2_SCR CMP_SCR_REG(CMP2) +#define CMP2_DACCR CMP_DACCR_REG(CMP2) +#define CMP2_MUXCR CMP_MUXCR_REG(CMP2) + +/*! + * @} + */ /* end of group CMP_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CMP_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CMT Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMT_Peripheral_Access_Layer CMT Peripheral Access Layer + * @{ + */ + +/** CMT - Register Layout Typedef */ +typedef struct { + __IO uint8_t CGH1; /**< CMT Carrier Generator High Data Register 1, offset: 0x0 */ + __IO uint8_t CGL1; /**< CMT Carrier Generator Low Data Register 1, offset: 0x1 */ + __IO uint8_t CGH2; /**< CMT Carrier Generator High Data Register 2, offset: 0x2 */ + __IO uint8_t CGL2; /**< CMT Carrier Generator Low Data Register 2, offset: 0x3 */ + __IO uint8_t OC; /**< CMT Output Control Register, offset: 0x4 */ + __IO uint8_t MSC; /**< CMT Modulator Status and Control Register, offset: 0x5 */ + __IO uint8_t CMD1; /**< CMT Modulator Data Register Mark High, offset: 0x6 */ + __IO uint8_t CMD2; /**< CMT Modulator Data Register Mark Low, offset: 0x7 */ + __IO uint8_t CMD3; /**< CMT Modulator Data Register Space High, offset: 0x8 */ + __IO uint8_t CMD4; /**< CMT Modulator Data Register Space Low, offset: 0x9 */ + __IO uint8_t PPS; /**< CMT Primary Prescaler Register, offset: 0xA */ + __IO uint8_t DMA; /**< CMT Direct Memory Access Register, offset: 0xB */ +} CMT_Type, *CMT_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CMT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMT_Register_Accessor_Macros CMT - Register accessor macros + * @{ + */ + + +/* CMT - Register accessors */ +#define CMT_CGH1_REG(base) ((base)->CGH1) +#define CMT_CGL1_REG(base) ((base)->CGL1) +#define CMT_CGH2_REG(base) ((base)->CGH2) +#define CMT_CGL2_REG(base) ((base)->CGL2) +#define CMT_OC_REG(base) ((base)->OC) +#define CMT_MSC_REG(base) ((base)->MSC) +#define CMT_CMD1_REG(base) ((base)->CMD1) +#define CMT_CMD2_REG(base) ((base)->CMD2) +#define CMT_CMD3_REG(base) ((base)->CMD3) +#define CMT_CMD4_REG(base) ((base)->CMD4) +#define CMT_PPS_REG(base) ((base)->PPS) +#define CMT_DMA_REG(base) ((base)->DMA) + +/*! + * @} + */ /* end of group CMT_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CMT Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMT_Register_Masks CMT Register Masks + * @{ + */ + +/* CGH1 Bit Fields */ +#define CMT_CGH1_PH_MASK 0xFFu +#define CMT_CGH1_PH_SHIFT 0 +#define CMT_CGH1_PH(x) (((uint8_t)(((uint8_t)(x))<<CMT_CGH1_PH_SHIFT))&CMT_CGH1_PH_MASK) +/* CGL1 Bit Fields */ +#define CMT_CGL1_PL_MASK 0xFFu +#define CMT_CGL1_PL_SHIFT 0 +#define CMT_CGL1_PL(x) (((uint8_t)(((uint8_t)(x))<<CMT_CGL1_PL_SHIFT))&CMT_CGL1_PL_MASK) +/* CGH2 Bit Fields */ +#define CMT_CGH2_SH_MASK 0xFFu +#define CMT_CGH2_SH_SHIFT 0 +#define CMT_CGH2_SH(x) (((uint8_t)(((uint8_t)(x))<<CMT_CGH2_SH_SHIFT))&CMT_CGH2_SH_MASK) +/* CGL2 Bit Fields */ +#define CMT_CGL2_SL_MASK 0xFFu +#define CMT_CGL2_SL_SHIFT 0 +#define CMT_CGL2_SL(x) (((uint8_t)(((uint8_t)(x))<<CMT_CGL2_SL_SHIFT))&CMT_CGL2_SL_MASK) +/* OC Bit Fields */ +#define CMT_OC_IROPEN_MASK 0x20u +#define CMT_OC_IROPEN_SHIFT 5 +#define CMT_OC_CMTPOL_MASK 0x40u +#define CMT_OC_CMTPOL_SHIFT 6 +#define CMT_OC_IROL_MASK 0x80u +#define CMT_OC_IROL_SHIFT 7 +/* MSC Bit Fields */ +#define CMT_MSC_MCGEN_MASK 0x1u +#define CMT_MSC_MCGEN_SHIFT 0 +#define CMT_MSC_EOCIE_MASK 0x2u +#define CMT_MSC_EOCIE_SHIFT 1 +#define CMT_MSC_FSK_MASK 0x4u +#define CMT_MSC_FSK_SHIFT 2 +#define CMT_MSC_BASE_MASK 0x8u +#define CMT_MSC_BASE_SHIFT 3 +#define CMT_MSC_EXSPC_MASK 0x10u +#define CMT_MSC_EXSPC_SHIFT 4 +#define CMT_MSC_CMTDIV_MASK 0x60u +#define CMT_MSC_CMTDIV_SHIFT 5 +#define CMT_MSC_CMTDIV(x) (((uint8_t)(((uint8_t)(x))<<CMT_MSC_CMTDIV_SHIFT))&CMT_MSC_CMTDIV_MASK) +#define CMT_MSC_EOCF_MASK 0x80u +#define CMT_MSC_EOCF_SHIFT 7 +/* CMD1 Bit Fields */ +#define CMT_CMD1_MB_MASK 0xFFu +#define CMT_CMD1_MB_SHIFT 0 +#define CMT_CMD1_MB(x) (((uint8_t)(((uint8_t)(x))<<CMT_CMD1_MB_SHIFT))&CMT_CMD1_MB_MASK) +/* CMD2 Bit Fields */ +#define CMT_CMD2_MB_MASK 0xFFu +#define CMT_CMD2_MB_SHIFT 0 +#define CMT_CMD2_MB(x) (((uint8_t)(((uint8_t)(x))<<CMT_CMD2_MB_SHIFT))&CMT_CMD2_MB_MASK) +/* CMD3 Bit Fields */ +#define CMT_CMD3_SB_MASK 0xFFu +#define CMT_CMD3_SB_SHIFT 0 +#define CMT_CMD3_SB(x) (((uint8_t)(((uint8_t)(x))<<CMT_CMD3_SB_SHIFT))&CMT_CMD3_SB_MASK) +/* CMD4 Bit Fields */ +#define CMT_CMD4_SB_MASK 0xFFu +#define CMT_CMD4_SB_SHIFT 0 +#define CMT_CMD4_SB(x) (((uint8_t)(((uint8_t)(x))<<CMT_CMD4_SB_SHIFT))&CMT_CMD4_SB_MASK) +/* PPS Bit Fields */ +#define CMT_PPS_PPSDIV_MASK 0xFu +#define CMT_PPS_PPSDIV_SHIFT 0 +#define CMT_PPS_PPSDIV(x) (((uint8_t)(((uint8_t)(x))<<CMT_PPS_PPSDIV_SHIFT))&CMT_PPS_PPSDIV_MASK) +/* DMA Bit Fields */ +#define CMT_DMA_DMA_MASK 0x1u +#define CMT_DMA_DMA_SHIFT 0 + +/*! + * @} + */ /* end of group CMT_Register_Masks */ + + +/* CMT - Peripheral instance base addresses */ +/** Peripheral CMT base address */ +#define CMT_BASE (0x40062000u) +/** Peripheral CMT base pointer */ +#define CMT ((CMT_Type *)CMT_BASE) +#define CMT_BASE_PTR (CMT) +/** Array initializer of CMT peripheral base pointers */ +#define CMT_BASES { CMT } + +/* ---------------------------------------------------------------------------- + -- CMT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMT_Register_Accessor_Macros CMT - Register accessor macros + * @{ + */ + + +/* CMT - Register instance definitions */ +/* CMT */ +#define CMT_CGH1 CMT_CGH1_REG(CMT) +#define CMT_CGL1 CMT_CGL1_REG(CMT) +#define CMT_CGH2 CMT_CGH2_REG(CMT) +#define CMT_CGL2 CMT_CGL2_REG(CMT) +#define CMT_OC CMT_OC_REG(CMT) +#define CMT_MSC CMT_MSC_REG(CMT) +#define CMT_CMD1 CMT_CMD1_REG(CMT) +#define CMT_CMD2 CMT_CMD2_REG(CMT) +#define CMT_CMD3 CMT_CMD3_REG(CMT) +#define CMT_CMD4 CMT_CMD4_REG(CMT) +#define CMT_PPS CMT_PPS_REG(CMT) +#define CMT_DMA CMT_DMA_REG(CMT) + +/*! + * @} + */ /* end of group CMT_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CMT_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CRC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CRC_Peripheral_Access_Layer CRC Peripheral Access Layer + * @{ + */ + +/** CRC - Register Layout Typedef */ +typedef struct { + union { /* offset: 0x0 */ + struct { /* offset: 0x0 */ + __IO uint16_t DATAL; /**< CRC_DATAL register., offset: 0x0 */ + __IO uint16_t DATAH; /**< CRC_DATAH register., offset: 0x2 */ + } ACCESS16BIT; + __IO uint32_t DATA; /**< CRC Data register, offset: 0x0 */ + struct { /* offset: 0x0 */ + __IO uint8_t DATALL; /**< CRC_DATALL register., offset: 0x0 */ + __IO uint8_t DATALU; /**< CRC_DATALU register., offset: 0x1 */ + __IO uint8_t DATAHL; /**< CRC_DATAHL register., offset: 0x2 */ + __IO uint8_t DATAHU; /**< CRC_DATAHU register., offset: 0x3 */ + } ACCESS8BIT; + }; + union { /* offset: 0x4 */ + struct { /* offset: 0x4 */ + __IO uint16_t GPOLYL; /**< CRC_GPOLYL register., offset: 0x4 */ + __IO uint16_t GPOLYH; /**< CRC_GPOLYH register., offset: 0x6 */ + } GPOLY_ACCESS16BIT; + __IO uint32_t GPOLY; /**< CRC Polynomial register, offset: 0x4 */ + struct { /* offset: 0x4 */ + __IO uint8_t GPOLYLL; /**< CRC_GPOLYLL register., offset: 0x4 */ + __IO uint8_t GPOLYLU; /**< CRC_GPOLYLU register., offset: 0x5 */ + __IO uint8_t GPOLYHL; /**< CRC_GPOLYHL register., offset: 0x6 */ + __IO uint8_t GPOLYHU; /**< CRC_GPOLYHU register., offset: 0x7 */ + } GPOLY_ACCESS8BIT; + }; + union { /* offset: 0x8 */ + __IO uint32_t CTRL; /**< CRC Control register, offset: 0x8 */ + struct { /* offset: 0x8 */ + uint8_t RESERVED_0[3]; + __IO uint8_t CTRLHU; /**< CRC_CTRLHU register., offset: 0xB */ + } CTRL_ACCESS8BIT; + }; +} CRC_Type, *CRC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CRC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CRC_Register_Accessor_Macros CRC - Register accessor macros + * @{ + */ + + +/* CRC - Register accessors */ +#define CRC_DATAL_REG(base) ((base)->ACCESS16BIT.DATAL) +#define CRC_DATAH_REG(base) ((base)->ACCESS16BIT.DATAH) +#define CRC_DATA_REG(base) ((base)->DATA) +#define CRC_DATALL_REG(base) ((base)->ACCESS8BIT.DATALL) +#define CRC_DATALU_REG(base) ((base)->ACCESS8BIT.DATALU) +#define CRC_DATAHL_REG(base) ((base)->ACCESS8BIT.DATAHL) +#define CRC_DATAHU_REG(base) ((base)->ACCESS8BIT.DATAHU) +#define CRC_GPOLYL_REG(base) ((base)->GPOLY_ACCESS16BIT.GPOLYL) +#define CRC_GPOLYH_REG(base) ((base)->GPOLY_ACCESS16BIT.GPOLYH) +#define CRC_GPOLY_REG(base) ((base)->GPOLY) +#define CRC_GPOLYLL_REG(base) ((base)->GPOLY_ACCESS8BIT.GPOLYLL) +#define CRC_GPOLYLU_REG(base) ((base)->GPOLY_ACCESS8BIT.GPOLYLU) +#define CRC_GPOLYHL_REG(base) ((base)->GPOLY_ACCESS8BIT.GPOLYHL) +#define CRC_GPOLYHU_REG(base) ((base)->GPOLY_ACCESS8BIT.GPOLYHU) +#define CRC_CTRL_REG(base) ((base)->CTRL) +#define CRC_CTRLHU_REG(base) ((base)->CTRL_ACCESS8BIT.CTRLHU) + +/*! + * @} + */ /* end of group CRC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CRC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CRC_Register_Masks CRC Register Masks + * @{ + */ + +/* DATAL Bit Fields */ +#define CRC_DATAL_DATAL_MASK 0xFFFFu +#define CRC_DATAL_DATAL_SHIFT 0 +#define CRC_DATAL_DATAL(x) (((uint16_t)(((uint16_t)(x))<<CRC_DATAL_DATAL_SHIFT))&CRC_DATAL_DATAL_MASK) +/* DATAH Bit Fields */ +#define CRC_DATAH_DATAH_MASK 0xFFFFu +#define CRC_DATAH_DATAH_SHIFT 0 +#define CRC_DATAH_DATAH(x) (((uint16_t)(((uint16_t)(x))<<CRC_DATAH_DATAH_SHIFT))&CRC_DATAH_DATAH_MASK) +/* DATA Bit Fields */ +#define CRC_DATA_LL_MASK 0xFFu +#define CRC_DATA_LL_SHIFT 0 +#define CRC_DATA_LL(x) (((uint32_t)(((uint32_t)(x))<<CRC_DATA_LL_SHIFT))&CRC_DATA_LL_MASK) +#define CRC_DATA_LU_MASK 0xFF00u +#define CRC_DATA_LU_SHIFT 8 +#define CRC_DATA_LU(x) (((uint32_t)(((uint32_t)(x))<<CRC_DATA_LU_SHIFT))&CRC_DATA_LU_MASK) +#define CRC_DATA_HL_MASK 0xFF0000u +#define CRC_DATA_HL_SHIFT 16 +#define CRC_DATA_HL(x) (((uint32_t)(((uint32_t)(x))<<CRC_DATA_HL_SHIFT))&CRC_DATA_HL_MASK) +#define CRC_DATA_HU_MASK 0xFF000000u +#define CRC_DATA_HU_SHIFT 24 +#define CRC_DATA_HU(x) (((uint32_t)(((uint32_t)(x))<<CRC_DATA_HU_SHIFT))&CRC_DATA_HU_MASK) +/* DATALL Bit Fields */ +#define CRC_DATALL_DATALL_MASK 0xFFu +#define CRC_DATALL_DATALL_SHIFT 0 +#define CRC_DATALL_DATALL(x) (((uint8_t)(((uint8_t)(x))<<CRC_DATALL_DATALL_SHIFT))&CRC_DATALL_DATALL_MASK) +/* DATALU Bit Fields */ +#define CRC_DATALU_DATALU_MASK 0xFFu +#define CRC_DATALU_DATALU_SHIFT 0 +#define CRC_DATALU_DATALU(x) (((uint8_t)(((uint8_t)(x))<<CRC_DATALU_DATALU_SHIFT))&CRC_DATALU_DATALU_MASK) +/* DATAHL Bit Fields */ +#define CRC_DATAHL_DATAHL_MASK 0xFFu +#define CRC_DATAHL_DATAHL_SHIFT 0 +#define CRC_DATAHL_DATAHL(x) (((uint8_t)(((uint8_t)(x))<<CRC_DATAHL_DATAHL_SHIFT))&CRC_DATAHL_DATAHL_MASK) +/* DATAHU Bit Fields */ +#define CRC_DATAHU_DATAHU_MASK 0xFFu +#define CRC_DATAHU_DATAHU_SHIFT 0 +#define CRC_DATAHU_DATAHU(x) (((uint8_t)(((uint8_t)(x))<<CRC_DATAHU_DATAHU_SHIFT))&CRC_DATAHU_DATAHU_MASK) +/* GPOLYL Bit Fields */ +#define CRC_GPOLYL_GPOLYL_MASK 0xFFFFu +#define CRC_GPOLYL_GPOLYL_SHIFT 0 +#define CRC_GPOLYL_GPOLYL(x) (((uint16_t)(((uint16_t)(x))<<CRC_GPOLYL_GPOLYL_SHIFT))&CRC_GPOLYL_GPOLYL_MASK) +/* GPOLYH Bit Fields */ +#define CRC_GPOLYH_GPOLYH_MASK 0xFFFFu +#define CRC_GPOLYH_GPOLYH_SHIFT 0 +#define CRC_GPOLYH_GPOLYH(x) (((uint16_t)(((uint16_t)(x))<<CRC_GPOLYH_GPOLYH_SHIFT))&CRC_GPOLYH_GPOLYH_MASK) +/* GPOLY Bit Fields */ +#define CRC_GPOLY_LOW_MASK 0xFFFFu +#define CRC_GPOLY_LOW_SHIFT 0 +#define CRC_GPOLY_LOW(x) (((uint32_t)(((uint32_t)(x))<<CRC_GPOLY_LOW_SHIFT))&CRC_GPOLY_LOW_MASK) +#define CRC_GPOLY_HIGH_MASK 0xFFFF0000u +#define CRC_GPOLY_HIGH_SHIFT 16 +#define CRC_GPOLY_HIGH(x) (((uint32_t)(((uint32_t)(x))<<CRC_GPOLY_HIGH_SHIFT))&CRC_GPOLY_HIGH_MASK) +/* GPOLYLL Bit Fields */ +#define CRC_GPOLYLL_GPOLYLL_MASK 0xFFu +#define CRC_GPOLYLL_GPOLYLL_SHIFT 0 +#define CRC_GPOLYLL_GPOLYLL(x) (((uint8_t)(((uint8_t)(x))<<CRC_GPOLYLL_GPOLYLL_SHIFT))&CRC_GPOLYLL_GPOLYLL_MASK) +/* GPOLYLU Bit Fields */ +#define CRC_GPOLYLU_GPOLYLU_MASK 0xFFu +#define CRC_GPOLYLU_GPOLYLU_SHIFT 0 +#define CRC_GPOLYLU_GPOLYLU(x) (((uint8_t)(((uint8_t)(x))<<CRC_GPOLYLU_GPOLYLU_SHIFT))&CRC_GPOLYLU_GPOLYLU_MASK) +/* GPOLYHL Bit Fields */ +#define CRC_GPOLYHL_GPOLYHL_MASK 0xFFu +#define CRC_GPOLYHL_GPOLYHL_SHIFT 0 +#define CRC_GPOLYHL_GPOLYHL(x) (((uint8_t)(((uint8_t)(x))<<CRC_GPOLYHL_GPOLYHL_SHIFT))&CRC_GPOLYHL_GPOLYHL_MASK) +/* GPOLYHU Bit Fields */ +#define CRC_GPOLYHU_GPOLYHU_MASK 0xFFu +#define CRC_GPOLYHU_GPOLYHU_SHIFT 0 +#define CRC_GPOLYHU_GPOLYHU(x) (((uint8_t)(((uint8_t)(x))<<CRC_GPOLYHU_GPOLYHU_SHIFT))&CRC_GPOLYHU_GPOLYHU_MASK) +/* CTRL Bit Fields */ +#define CRC_CTRL_TCRC_MASK 0x1000000u +#define CRC_CTRL_TCRC_SHIFT 24 +#define CRC_CTRL_WAS_MASK 0x2000000u +#define CRC_CTRL_WAS_SHIFT 25 +#define CRC_CTRL_FXOR_MASK 0x4000000u +#define CRC_CTRL_FXOR_SHIFT 26 +#define CRC_CTRL_TOTR_MASK 0x30000000u +#define CRC_CTRL_TOTR_SHIFT 28 +#define CRC_CTRL_TOTR(x) (((uint32_t)(((uint32_t)(x))<<CRC_CTRL_TOTR_SHIFT))&CRC_CTRL_TOTR_MASK) +#define CRC_CTRL_TOT_MASK 0xC0000000u +#define CRC_CTRL_TOT_SHIFT 30 +#define CRC_CTRL_TOT(x) (((uint32_t)(((uint32_t)(x))<<CRC_CTRL_TOT_SHIFT))&CRC_CTRL_TOT_MASK) +/* CTRLHU Bit Fields */ +#define CRC_CTRLHU_TCRC_MASK 0x1u +#define CRC_CTRLHU_TCRC_SHIFT 0 +#define CRC_CTRLHU_WAS_MASK 0x2u +#define CRC_CTRLHU_WAS_SHIFT 1 +#define CRC_CTRLHU_FXOR_MASK 0x4u +#define CRC_CTRLHU_FXOR_SHIFT 2 +#define CRC_CTRLHU_TOTR_MASK 0x30u +#define CRC_CTRLHU_TOTR_SHIFT 4 +#define CRC_CTRLHU_TOTR(x) (((uint8_t)(((uint8_t)(x))<<CRC_CTRLHU_TOTR_SHIFT))&CRC_CTRLHU_TOTR_MASK) +#define CRC_CTRLHU_TOT_MASK 0xC0u +#define CRC_CTRLHU_TOT_SHIFT 6 +#define CRC_CTRLHU_TOT(x) (((uint8_t)(((uint8_t)(x))<<CRC_CTRLHU_TOT_SHIFT))&CRC_CTRLHU_TOT_MASK) + +/*! + * @} + */ /* end of group CRC_Register_Masks */ + + +/* CRC - Peripheral instance base addresses */ +/** Peripheral CRC base address */ +#define CRC_BASE (0x40032000u) +/** Peripheral CRC base pointer */ +#define CRC0 ((CRC_Type *)CRC_BASE) +#define CRC_BASE_PTR (CRC0) +/** Array initializer of CRC peripheral base pointers */ +#define CRC_BASES { CRC0 } + +/* ---------------------------------------------------------------------------- + -- CRC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CRC_Register_Accessor_Macros CRC - Register accessor macros + * @{ + */ + + +/* CRC - Register instance definitions */ +/* CRC */ +#define CRC_DATA CRC_DATA_REG(CRC0) +#define CRC_DATAL CRC_DATAL_REG(CRC0) +#define CRC_DATALL CRC_DATALL_REG(CRC0) +#define CRC_DATALU CRC_DATALU_REG(CRC0) +#define CRC_DATAH CRC_DATAH_REG(CRC0) +#define CRC_DATAHL CRC_DATAHL_REG(CRC0) +#define CRC_DATAHU CRC_DATAHU_REG(CRC0) +#define CRC_GPOLY CRC_GPOLY_REG(CRC0) +#define CRC_GPOLYL CRC_GPOLYL_REG(CRC0) +#define CRC_GPOLYLL CRC_GPOLYLL_REG(CRC0) +#define CRC_GPOLYLU CRC_GPOLYLU_REG(CRC0) +#define CRC_GPOLYH CRC_GPOLYH_REG(CRC0) +#define CRC_GPOLYHL CRC_GPOLYHL_REG(CRC0) +#define CRC_GPOLYHU CRC_GPOLYHU_REG(CRC0) +#define CRC_CTRL CRC_CTRL_REG(CRC0) +#define CRC_CTRLHU CRC_CTRLHU_REG(CRC0) + +/*! + * @} + */ /* end of group CRC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CRC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- DAC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DAC_Peripheral_Access_Layer DAC Peripheral Access Layer + * @{ + */ + +/** DAC - Register Layout Typedef */ +typedef struct { + struct { /* offset: 0x0, array step: 0x2 */ + __IO uint8_t DATL; /**< DAC Data Low Register, array offset: 0x0, array step: 0x2 */ + __IO uint8_t DATH; /**< DAC Data High Register, array offset: 0x1, array step: 0x2 */ + } DAT[16]; + __IO uint8_t SR; /**< DAC Status Register, offset: 0x20 */ + __IO uint8_t C0; /**< DAC Control Register, offset: 0x21 */ + __IO uint8_t C1; /**< DAC Control Register 1, offset: 0x22 */ + __IO uint8_t C2; /**< DAC Control Register 2, offset: 0x23 */ +} DAC_Type, *DAC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- DAC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DAC_Register_Accessor_Macros DAC - Register accessor macros + * @{ + */ + + +/* DAC - Register accessors */ +#define DAC_DATL_REG(base,index) ((base)->DAT[index].DATL) +#define DAC_DATH_REG(base,index) ((base)->DAT[index].DATH) +#define DAC_SR_REG(base) ((base)->SR) +#define DAC_C0_REG(base) ((base)->C0) +#define DAC_C1_REG(base) ((base)->C1) +#define DAC_C2_REG(base) ((base)->C2) + +/*! + * @} + */ /* end of group DAC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- DAC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DAC_Register_Masks DAC Register Masks + * @{ + */ + +/* DATL Bit Fields */ +#define DAC_DATL_DATA0_MASK 0xFFu +#define DAC_DATL_DATA0_SHIFT 0 +#define DAC_DATL_DATA0(x) (((uint8_t)(((uint8_t)(x))<<DAC_DATL_DATA0_SHIFT))&DAC_DATL_DATA0_MASK) +/* DATH Bit Fields */ +#define DAC_DATH_DATA1_MASK 0xFu +#define DAC_DATH_DATA1_SHIFT 0 +#define DAC_DATH_DATA1(x) (((uint8_t)(((uint8_t)(x))<<DAC_DATH_DATA1_SHIFT))&DAC_DATH_DATA1_MASK) +/* SR Bit Fields */ +#define DAC_SR_DACBFRPBF_MASK 0x1u +#define DAC_SR_DACBFRPBF_SHIFT 0 +#define DAC_SR_DACBFRPTF_MASK 0x2u +#define DAC_SR_DACBFRPTF_SHIFT 1 +#define DAC_SR_DACBFWMF_MASK 0x4u +#define DAC_SR_DACBFWMF_SHIFT 2 +/* C0 Bit Fields */ +#define DAC_C0_DACBBIEN_MASK 0x1u +#define DAC_C0_DACBBIEN_SHIFT 0 +#define DAC_C0_DACBTIEN_MASK 0x2u +#define DAC_C0_DACBTIEN_SHIFT 1 +#define DAC_C0_DACBWIEN_MASK 0x4u +#define DAC_C0_DACBWIEN_SHIFT 2 +#define DAC_C0_LPEN_MASK 0x8u +#define DAC_C0_LPEN_SHIFT 3 +#define DAC_C0_DACSWTRG_MASK 0x10u +#define DAC_C0_DACSWTRG_SHIFT 4 +#define DAC_C0_DACTRGSEL_MASK 0x20u +#define DAC_C0_DACTRGSEL_SHIFT 5 +#define DAC_C0_DACRFS_MASK 0x40u +#define DAC_C0_DACRFS_SHIFT 6 +#define DAC_C0_DACEN_MASK 0x80u +#define DAC_C0_DACEN_SHIFT 7 +/* C1 Bit Fields */ +#define DAC_C1_DACBFEN_MASK 0x1u +#define DAC_C1_DACBFEN_SHIFT 0 +#define DAC_C1_DACBFMD_MASK 0x6u +#define DAC_C1_DACBFMD_SHIFT 1 +#define DAC_C1_DACBFMD(x) (((uint8_t)(((uint8_t)(x))<<DAC_C1_DACBFMD_SHIFT))&DAC_C1_DACBFMD_MASK) +#define DAC_C1_DACBFWM_MASK 0x18u +#define DAC_C1_DACBFWM_SHIFT 3 +#define DAC_C1_DACBFWM(x) (((uint8_t)(((uint8_t)(x))<<DAC_C1_DACBFWM_SHIFT))&DAC_C1_DACBFWM_MASK) +#define DAC_C1_DMAEN_MASK 0x80u +#define DAC_C1_DMAEN_SHIFT 7 +/* C2 Bit Fields */ +#define DAC_C2_DACBFUP_MASK 0xFu +#define DAC_C2_DACBFUP_SHIFT 0 +#define DAC_C2_DACBFUP(x) (((uint8_t)(((uint8_t)(x))<<DAC_C2_DACBFUP_SHIFT))&DAC_C2_DACBFUP_MASK) +#define DAC_C2_DACBFRP_MASK 0xF0u +#define DAC_C2_DACBFRP_SHIFT 4 +#define DAC_C2_DACBFRP(x) (((uint8_t)(((uint8_t)(x))<<DAC_C2_DACBFRP_SHIFT))&DAC_C2_DACBFRP_MASK) + +/*! + * @} + */ /* end of group DAC_Register_Masks */ + + +/* DAC - Peripheral instance base addresses */ +/** Peripheral DAC0 base address */ +#define DAC0_BASE (0x400CC000u) +/** Peripheral DAC0 base pointer */ +#define DAC0 ((DAC_Type *)DAC0_BASE) +#define DAC0_BASE_PTR (DAC0) +/** Peripheral DAC1 base address */ +#define DAC1_BASE (0x400CD000u) +/** Peripheral DAC1 base pointer */ +#define DAC1 ((DAC_Type *)DAC1_BASE) +#define DAC1_BASE_PTR (DAC1) +/** Array initializer of DAC peripheral base pointers */ +#define DAC_BASES { DAC0, DAC1 } + +/* ---------------------------------------------------------------------------- + -- DAC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DAC_Register_Accessor_Macros DAC - Register accessor macros + * @{ + */ + + +/* DAC - Register instance definitions */ +/* DAC0 */ +#define DAC0_DAT0L DAC_DATL_REG(DAC0,0) +#define DAC0_DAT0H DAC_DATH_REG(DAC0,0) +#define DAC0_DAT1L DAC_DATL_REG(DAC0,1) +#define DAC0_DAT1H DAC_DATH_REG(DAC0,1) +#define DAC0_DAT2L DAC_DATL_REG(DAC0,2) +#define DAC0_DAT2H DAC_DATH_REG(DAC0,2) +#define DAC0_DAT3L DAC_DATL_REG(DAC0,3) +#define DAC0_DAT3H DAC_DATH_REG(DAC0,3) +#define DAC0_DAT4L DAC_DATL_REG(DAC0,4) +#define DAC0_DAT4H DAC_DATH_REG(DAC0,4) +#define DAC0_DAT5L DAC_DATL_REG(DAC0,5) +#define DAC0_DAT5H DAC_DATH_REG(DAC0,5) +#define DAC0_DAT6L DAC_DATL_REG(DAC0,6) +#define DAC0_DAT6H DAC_DATH_REG(DAC0,6) +#define DAC0_DAT7L DAC_DATL_REG(DAC0,7) +#define DAC0_DAT7H DAC_DATH_REG(DAC0,7) +#define DAC0_DAT8L DAC_DATL_REG(DAC0,8) +#define DAC0_DAT8H DAC_DATH_REG(DAC0,8) +#define DAC0_DAT9L DAC_DATL_REG(DAC0,9) +#define DAC0_DAT9H DAC_DATH_REG(DAC0,9) +#define DAC0_DAT10L DAC_DATL_REG(DAC0,10) +#define DAC0_DAT10H DAC_DATH_REG(DAC0,10) +#define DAC0_DAT11L DAC_DATL_REG(DAC0,11) +#define DAC0_DAT11H DAC_DATH_REG(DAC0,11) +#define DAC0_DAT12L DAC_DATL_REG(DAC0,12) +#define DAC0_DAT12H DAC_DATH_REG(DAC0,12) +#define DAC0_DAT13L DAC_DATL_REG(DAC0,13) +#define DAC0_DAT13H DAC_DATH_REG(DAC0,13) +#define DAC0_DAT14L DAC_DATL_REG(DAC0,14) +#define DAC0_DAT14H DAC_DATH_REG(DAC0,14) +#define DAC0_DAT15L DAC_DATL_REG(DAC0,15) +#define DAC0_DAT15H DAC_DATH_REG(DAC0,15) +#define DAC0_SR DAC_SR_REG(DAC0) +#define DAC0_C0 DAC_C0_REG(DAC0) +#define DAC0_C1 DAC_C1_REG(DAC0) +#define DAC0_C2 DAC_C2_REG(DAC0) +/* DAC1 */ +#define DAC1_DAT0L DAC_DATL_REG(DAC1,0) +#define DAC1_DAT0H DAC_DATH_REG(DAC1,0) +#define DAC1_DAT1L DAC_DATL_REG(DAC1,1) +#define DAC1_DAT1H DAC_DATH_REG(DAC1,1) +#define DAC1_DAT2L DAC_DATL_REG(DAC1,2) +#define DAC1_DAT2H DAC_DATH_REG(DAC1,2) +#define DAC1_DAT3L DAC_DATL_REG(DAC1,3) +#define DAC1_DAT3H DAC_DATH_REG(DAC1,3) +#define DAC1_DAT4L DAC_DATL_REG(DAC1,4) +#define DAC1_DAT4H DAC_DATH_REG(DAC1,4) +#define DAC1_DAT5L DAC_DATL_REG(DAC1,5) +#define DAC1_DAT5H DAC_DATH_REG(DAC1,5) +#define DAC1_DAT6L DAC_DATL_REG(DAC1,6) +#define DAC1_DAT6H DAC_DATH_REG(DAC1,6) +#define DAC1_DAT7L DAC_DATL_REG(DAC1,7) +#define DAC1_DAT7H DAC_DATH_REG(DAC1,7) +#define DAC1_DAT8L DAC_DATL_REG(DAC1,8) +#define DAC1_DAT8H DAC_DATH_REG(DAC1,8) +#define DAC1_DAT9L DAC_DATL_REG(DAC1,9) +#define DAC1_DAT9H DAC_DATH_REG(DAC1,9) +#define DAC1_DAT10L DAC_DATL_REG(DAC1,10) +#define DAC1_DAT10H DAC_DATH_REG(DAC1,10) +#define DAC1_DAT11L DAC_DATL_REG(DAC1,11) +#define DAC1_DAT11H DAC_DATH_REG(DAC1,11) +#define DAC1_DAT12L DAC_DATL_REG(DAC1,12) +#define DAC1_DAT12H DAC_DATH_REG(DAC1,12) +#define DAC1_DAT13L DAC_DATL_REG(DAC1,13) +#define DAC1_DAT13H DAC_DATH_REG(DAC1,13) +#define DAC1_DAT14L DAC_DATL_REG(DAC1,14) +#define DAC1_DAT14H DAC_DATH_REG(DAC1,14) +#define DAC1_DAT15L DAC_DATL_REG(DAC1,15) +#define DAC1_DAT15H DAC_DATH_REG(DAC1,15) +#define DAC1_SR DAC_SR_REG(DAC1) +#define DAC1_C0 DAC_C0_REG(DAC1) +#define DAC1_C1 DAC_C1_REG(DAC1) +#define DAC1_C2 DAC_C2_REG(DAC1) + +/* DAC - Register array accessors */ +#define DAC0_DATL(index) DAC_DATL_REG(DAC0,index) +#define DAC1_DATL(index) DAC_DATL_REG(DAC1,index) +#define DAC0_DATH(index) DAC_DATH_REG(DAC0,index) +#define DAC1_DATH(index) DAC_DATH_REG(DAC1,index) + +/*! + * @} + */ /* end of group DAC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group DAC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- DMA Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMA_Peripheral_Access_Layer DMA Peripheral Access Layer + * @{ + */ + +/** DMA - Register Layout Typedef */ +typedef struct { + __IO uint32_t CR; /**< Control Register, offset: 0x0 */ + __I uint32_t ES; /**< Error Status Register, offset: 0x4 */ + uint8_t RESERVED_0[4]; + __IO uint32_t ERQ; /**< Enable Request Register, offset: 0xC */ + uint8_t RESERVED_1[4]; + __IO uint32_t EEI; /**< Enable Error Interrupt Register, offset: 0x14 */ + __O uint8_t CEEI; /**< Clear Enable Error Interrupt Register, offset: 0x18 */ + __O uint8_t SEEI; /**< Set Enable Error Interrupt Register, offset: 0x19 */ + __O uint8_t CERQ; /**< Clear Enable Request Register, offset: 0x1A */ + __O uint8_t SERQ; /**< Set Enable Request Register, offset: 0x1B */ + __O uint8_t CDNE; /**< Clear DONE Status Bit Register, offset: 0x1C */ + __O uint8_t SSRT; /**< Set START Bit Register, offset: 0x1D */ + __O uint8_t CERR; /**< Clear Error Register, offset: 0x1E */ + __O uint8_t CINT; /**< Clear Interrupt Request Register, offset: 0x1F */ + uint8_t RESERVED_2[4]; + __IO uint32_t INT; /**< Interrupt Request Register, offset: 0x24 */ + uint8_t RESERVED_3[4]; + __IO uint32_t ERR; /**< Error Register, offset: 0x2C */ + uint8_t RESERVED_4[4]; + __I uint32_t HRS; /**< Hardware Request Status Register, offset: 0x34 */ + uint8_t RESERVED_5[12]; + __IO uint32_t EARS; /**< Enable Asynchronous Request in Stop Register, offset: 0x44 */ + uint8_t RESERVED_6[184]; + __IO uint8_t DCHPRI3; /**< Channel n Priority Register, offset: 0x100 */ + __IO uint8_t DCHPRI2; /**< Channel n Priority Register, offset: 0x101 */ + __IO uint8_t DCHPRI1; /**< Channel n Priority Register, offset: 0x102 */ + __IO uint8_t DCHPRI0; /**< Channel n Priority Register, offset: 0x103 */ + __IO uint8_t DCHPRI7; /**< Channel n Priority Register, offset: 0x104 */ + __IO uint8_t DCHPRI6; /**< Channel n Priority Register, offset: 0x105 */ + __IO uint8_t DCHPRI5; /**< Channel n Priority Register, offset: 0x106 */ + __IO uint8_t DCHPRI4; /**< Channel n Priority Register, offset: 0x107 */ + __IO uint8_t DCHPRI11; /**< Channel n Priority Register, offset: 0x108 */ + __IO uint8_t DCHPRI10; /**< Channel n Priority Register, offset: 0x109 */ + __IO uint8_t DCHPRI9; /**< Channel n Priority Register, offset: 0x10A */ + __IO uint8_t DCHPRI8; /**< Channel n Priority Register, offset: 0x10B */ + __IO uint8_t DCHPRI15; /**< Channel n Priority Register, offset: 0x10C */ + __IO uint8_t DCHPRI14; /**< Channel n Priority Register, offset: 0x10D */ + __IO uint8_t DCHPRI13; /**< Channel n Priority Register, offset: 0x10E */ + __IO uint8_t DCHPRI12; /**< Channel n Priority Register, offset: 0x10F */ + uint8_t RESERVED_7[3824]; + struct { /* offset: 0x1000, array step: 0x20 */ + __IO uint32_t SADDR; /**< TCD Source Address, array offset: 0x1000, array step: 0x20 */ + __IO uint16_t SOFF; /**< TCD Signed Source Address Offset, array offset: 0x1004, array step: 0x20 */ + __IO uint16_t ATTR; /**< TCD Transfer Attributes, array offset: 0x1006, array step: 0x20 */ + union { /* offset: 0x1008, array step: 0x20 */ + __IO uint32_t NBYTES_MLNO; /**< TCD Minor Byte Count (Minor Loop Disabled), array offset: 0x1008, array step: 0x20 */ + __IO uint32_t NBYTES_MLOFFNO; /**< TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled), array offset: 0x1008, array step: 0x20 */ + __IO uint32_t NBYTES_MLOFFYES; /**< TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled), array offset: 0x1008, array step: 0x20 */ + }; + __IO uint32_t SLAST; /**< TCD Last Source Address Adjustment, array offset: 0x100C, array step: 0x20 */ + __IO uint32_t DADDR; /**< TCD Destination Address, array offset: 0x1010, array step: 0x20 */ + __IO uint16_t DOFF; /**< TCD Signed Destination Address Offset, array offset: 0x1014, array step: 0x20 */ + union { /* offset: 0x1016, array step: 0x20 */ + __IO uint16_t CITER_ELINKNO; /**< TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled), array offset: 0x1016, array step: 0x20 */ + __IO uint16_t CITER_ELINKYES; /**< TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled), array offset: 0x1016, array step: 0x20 */ + }; + __IO uint32_t DLAST_SGA; /**< TCD Last Destination Address Adjustment/Scatter Gather Address, array offset: 0x1018, array step: 0x20 */ + __IO uint16_t CSR; /**< TCD Control and Status, array offset: 0x101C, array step: 0x20 */ + union { /* offset: 0x101E, array step: 0x20 */ + __IO uint16_t BITER_ELINKNO; /**< TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled), array offset: 0x101E, array step: 0x20 */ + __IO uint16_t BITER_ELINKYES; /**< TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled), array offset: 0x101E, array step: 0x20 */ + }; + } TCD[16]; +} DMA_Type, *DMA_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- DMA - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMA_Register_Accessor_Macros DMA - Register accessor macros + * @{ + */ + + +/* DMA - Register accessors */ +#define DMA_CR_REG(base) ((base)->CR) +#define DMA_ES_REG(base) ((base)->ES) +#define DMA_ERQ_REG(base) ((base)->ERQ) +#define DMA_EEI_REG(base) ((base)->EEI) +#define DMA_CEEI_REG(base) ((base)->CEEI) +#define DMA_SEEI_REG(base) ((base)->SEEI) +#define DMA_CERQ_REG(base) ((base)->CERQ) +#define DMA_SERQ_REG(base) ((base)->SERQ) +#define DMA_CDNE_REG(base) ((base)->CDNE) +#define DMA_SSRT_REG(base) ((base)->SSRT) +#define DMA_CERR_REG(base) ((base)->CERR) +#define DMA_CINT_REG(base) ((base)->CINT) +#define DMA_INT_REG(base) ((base)->INT) +#define DMA_ERR_REG(base) ((base)->ERR) +#define DMA_HRS_REG(base) ((base)->HRS) +#define DMA_EARS_REG(base) ((base)->EARS) +#define DMA_DCHPRI3_REG(base) ((base)->DCHPRI3) +#define DMA_DCHPRI2_REG(base) ((base)->DCHPRI2) +#define DMA_DCHPRI1_REG(base) ((base)->DCHPRI1) +#define DMA_DCHPRI0_REG(base) ((base)->DCHPRI0) +#define DMA_DCHPRI7_REG(base) ((base)->DCHPRI7) +#define DMA_DCHPRI6_REG(base) ((base)->DCHPRI6) +#define DMA_DCHPRI5_REG(base) ((base)->DCHPRI5) +#define DMA_DCHPRI4_REG(base) ((base)->DCHPRI4) +#define DMA_DCHPRI11_REG(base) ((base)->DCHPRI11) +#define DMA_DCHPRI10_REG(base) ((base)->DCHPRI10) +#define DMA_DCHPRI9_REG(base) ((base)->DCHPRI9) +#define DMA_DCHPRI8_REG(base) ((base)->DCHPRI8) +#define DMA_DCHPRI15_REG(base) ((base)->DCHPRI15) +#define DMA_DCHPRI14_REG(base) ((base)->DCHPRI14) +#define DMA_DCHPRI13_REG(base) ((base)->DCHPRI13) +#define DMA_DCHPRI12_REG(base) ((base)->DCHPRI12) +#define DMA_SADDR_REG(base,index) ((base)->TCD[index].SADDR) +#define DMA_SOFF_REG(base,index) ((base)->TCD[index].SOFF) +#define DMA_ATTR_REG(base,index) ((base)->TCD[index].ATTR) +#define DMA_NBYTES_MLNO_REG(base,index) ((base)->TCD[index].NBYTES_MLNO) +#define DMA_NBYTES_MLOFFNO_REG(base,index) ((base)->TCD[index].NBYTES_MLOFFNO) +#define DMA_NBYTES_MLOFFYES_REG(base,index) ((base)->TCD[index].NBYTES_MLOFFYES) +#define DMA_SLAST_REG(base,index) ((base)->TCD[index].SLAST) +#define DMA_DADDR_REG(base,index) ((base)->TCD[index].DADDR) +#define DMA_DOFF_REG(base,index) ((base)->TCD[index].DOFF) +#define DMA_CITER_ELINKNO_REG(base,index) ((base)->TCD[index].CITER_ELINKNO) +#define DMA_CITER_ELINKYES_REG(base,index) ((base)->TCD[index].CITER_ELINKYES) +#define DMA_DLAST_SGA_REG(base,index) ((base)->TCD[index].DLAST_SGA) +#define DMA_CSR_REG(base,index) ((base)->TCD[index].CSR) +#define DMA_BITER_ELINKNO_REG(base,index) ((base)->TCD[index].BITER_ELINKNO) +#define DMA_BITER_ELINKYES_REG(base,index) ((base)->TCD[index].BITER_ELINKYES) + +/*! + * @} + */ /* end of group DMA_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- DMA Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMA_Register_Masks DMA Register Masks + * @{ + */ + +/* CR Bit Fields */ +#define DMA_CR_EDBG_MASK 0x2u +#define DMA_CR_EDBG_SHIFT 1 +#define DMA_CR_ERCA_MASK 0x4u +#define DMA_CR_ERCA_SHIFT 2 +#define DMA_CR_HOE_MASK 0x10u +#define DMA_CR_HOE_SHIFT 4 +#define DMA_CR_HALT_MASK 0x20u +#define DMA_CR_HALT_SHIFT 5 +#define DMA_CR_CLM_MASK 0x40u +#define DMA_CR_CLM_SHIFT 6 +#define DMA_CR_EMLM_MASK 0x80u +#define DMA_CR_EMLM_SHIFT 7 +#define DMA_CR_ECX_MASK 0x10000u +#define DMA_CR_ECX_SHIFT 16 +#define DMA_CR_CX_MASK 0x20000u +#define DMA_CR_CX_SHIFT 17 +/* ES Bit Fields */ +#define DMA_ES_DBE_MASK 0x1u +#define DMA_ES_DBE_SHIFT 0 +#define DMA_ES_SBE_MASK 0x2u +#define DMA_ES_SBE_SHIFT 1 +#define DMA_ES_SGE_MASK 0x4u +#define DMA_ES_SGE_SHIFT 2 +#define DMA_ES_NCE_MASK 0x8u +#define DMA_ES_NCE_SHIFT 3 +#define DMA_ES_DOE_MASK 0x10u +#define DMA_ES_DOE_SHIFT 4 +#define DMA_ES_DAE_MASK 0x20u +#define DMA_ES_DAE_SHIFT 5 +#define DMA_ES_SOE_MASK 0x40u +#define DMA_ES_SOE_SHIFT 6 +#define DMA_ES_SAE_MASK 0x80u +#define DMA_ES_SAE_SHIFT 7 +#define DMA_ES_ERRCHN_MASK 0xF00u +#define DMA_ES_ERRCHN_SHIFT 8 +#define DMA_ES_ERRCHN(x) (((uint32_t)(((uint32_t)(x))<<DMA_ES_ERRCHN_SHIFT))&DMA_ES_ERRCHN_MASK) +#define DMA_ES_CPE_MASK 0x4000u +#define DMA_ES_CPE_SHIFT 14 +#define DMA_ES_ECX_MASK 0x10000u +#define DMA_ES_ECX_SHIFT 16 +#define DMA_ES_VLD_MASK 0x80000000u +#define DMA_ES_VLD_SHIFT 31 +/* ERQ Bit Fields */ +#define DMA_ERQ_ERQ0_MASK 0x1u +#define DMA_ERQ_ERQ0_SHIFT 0 +#define DMA_ERQ_ERQ1_MASK 0x2u +#define DMA_ERQ_ERQ1_SHIFT 1 +#define DMA_ERQ_ERQ2_MASK 0x4u +#define DMA_ERQ_ERQ2_SHIFT 2 +#define DMA_ERQ_ERQ3_MASK 0x8u +#define DMA_ERQ_ERQ3_SHIFT 3 +#define DMA_ERQ_ERQ4_MASK 0x10u +#define DMA_ERQ_ERQ4_SHIFT 4 +#define DMA_ERQ_ERQ5_MASK 0x20u +#define DMA_ERQ_ERQ5_SHIFT 5 +#define DMA_ERQ_ERQ6_MASK 0x40u +#define DMA_ERQ_ERQ6_SHIFT 6 +#define DMA_ERQ_ERQ7_MASK 0x80u +#define DMA_ERQ_ERQ7_SHIFT 7 +#define DMA_ERQ_ERQ8_MASK 0x100u +#define DMA_ERQ_ERQ8_SHIFT 8 +#define DMA_ERQ_ERQ9_MASK 0x200u +#define DMA_ERQ_ERQ9_SHIFT 9 +#define DMA_ERQ_ERQ10_MASK 0x400u +#define DMA_ERQ_ERQ10_SHIFT 10 +#define DMA_ERQ_ERQ11_MASK 0x800u +#define DMA_ERQ_ERQ11_SHIFT 11 +#define DMA_ERQ_ERQ12_MASK 0x1000u +#define DMA_ERQ_ERQ12_SHIFT 12 +#define DMA_ERQ_ERQ13_MASK 0x2000u +#define DMA_ERQ_ERQ13_SHIFT 13 +#define DMA_ERQ_ERQ14_MASK 0x4000u +#define DMA_ERQ_ERQ14_SHIFT 14 +#define DMA_ERQ_ERQ15_MASK 0x8000u +#define DMA_ERQ_ERQ15_SHIFT 15 +/* EEI Bit Fields */ +#define DMA_EEI_EEI0_MASK 0x1u +#define DMA_EEI_EEI0_SHIFT 0 +#define DMA_EEI_EEI1_MASK 0x2u +#define DMA_EEI_EEI1_SHIFT 1 +#define DMA_EEI_EEI2_MASK 0x4u +#define DMA_EEI_EEI2_SHIFT 2 +#define DMA_EEI_EEI3_MASK 0x8u +#define DMA_EEI_EEI3_SHIFT 3 +#define DMA_EEI_EEI4_MASK 0x10u +#define DMA_EEI_EEI4_SHIFT 4 +#define DMA_EEI_EEI5_MASK 0x20u +#define DMA_EEI_EEI5_SHIFT 5 +#define DMA_EEI_EEI6_MASK 0x40u +#define DMA_EEI_EEI6_SHIFT 6 +#define DMA_EEI_EEI7_MASK 0x80u +#define DMA_EEI_EEI7_SHIFT 7 +#define DMA_EEI_EEI8_MASK 0x100u +#define DMA_EEI_EEI8_SHIFT 8 +#define DMA_EEI_EEI9_MASK 0x200u +#define DMA_EEI_EEI9_SHIFT 9 +#define DMA_EEI_EEI10_MASK 0x400u +#define DMA_EEI_EEI10_SHIFT 10 +#define DMA_EEI_EEI11_MASK 0x800u +#define DMA_EEI_EEI11_SHIFT 11 +#define DMA_EEI_EEI12_MASK 0x1000u +#define DMA_EEI_EEI12_SHIFT 12 +#define DMA_EEI_EEI13_MASK 0x2000u +#define DMA_EEI_EEI13_SHIFT 13 +#define DMA_EEI_EEI14_MASK 0x4000u +#define DMA_EEI_EEI14_SHIFT 14 +#define DMA_EEI_EEI15_MASK 0x8000u +#define DMA_EEI_EEI15_SHIFT 15 +/* CEEI Bit Fields */ +#define DMA_CEEI_CEEI_MASK 0xFu +#define DMA_CEEI_CEEI_SHIFT 0 +#define DMA_CEEI_CEEI(x) (((uint8_t)(((uint8_t)(x))<<DMA_CEEI_CEEI_SHIFT))&DMA_CEEI_CEEI_MASK) +#define DMA_CEEI_CAEE_MASK 0x40u +#define DMA_CEEI_CAEE_SHIFT 6 +#define DMA_CEEI_NOP_MASK 0x80u +#define DMA_CEEI_NOP_SHIFT 7 +/* SEEI Bit Fields */ +#define DMA_SEEI_SEEI_MASK 0xFu +#define DMA_SEEI_SEEI_SHIFT 0 +#define DMA_SEEI_SEEI(x) (((uint8_t)(((uint8_t)(x))<<DMA_SEEI_SEEI_SHIFT))&DMA_SEEI_SEEI_MASK) +#define DMA_SEEI_SAEE_MASK 0x40u +#define DMA_SEEI_SAEE_SHIFT 6 +#define DMA_SEEI_NOP_MASK 0x80u +#define DMA_SEEI_NOP_SHIFT 7 +/* CERQ Bit Fields */ +#define DMA_CERQ_CERQ_MASK 0xFu +#define DMA_CERQ_CERQ_SHIFT 0 +#define DMA_CERQ_CERQ(x) (((uint8_t)(((uint8_t)(x))<<DMA_CERQ_CERQ_SHIFT))&DMA_CERQ_CERQ_MASK) +#define DMA_CERQ_CAER_MASK 0x40u +#define DMA_CERQ_CAER_SHIFT 6 +#define DMA_CERQ_NOP_MASK 0x80u +#define DMA_CERQ_NOP_SHIFT 7 +/* SERQ Bit Fields */ +#define DMA_SERQ_SERQ_MASK 0xFu +#define DMA_SERQ_SERQ_SHIFT 0 +#define DMA_SERQ_SERQ(x) (((uint8_t)(((uint8_t)(x))<<DMA_SERQ_SERQ_SHIFT))&DMA_SERQ_SERQ_MASK) +#define DMA_SERQ_SAER_MASK 0x40u +#define DMA_SERQ_SAER_SHIFT 6 +#define DMA_SERQ_NOP_MASK 0x80u +#define DMA_SERQ_NOP_SHIFT 7 +/* CDNE Bit Fields */ +#define DMA_CDNE_CDNE_MASK 0xFu +#define DMA_CDNE_CDNE_SHIFT 0 +#define DMA_CDNE_CDNE(x) (((uint8_t)(((uint8_t)(x))<<DMA_CDNE_CDNE_SHIFT))&DMA_CDNE_CDNE_MASK) +#define DMA_CDNE_CADN_MASK 0x40u +#define DMA_CDNE_CADN_SHIFT 6 +#define DMA_CDNE_NOP_MASK 0x80u +#define DMA_CDNE_NOP_SHIFT 7 +/* SSRT Bit Fields */ +#define DMA_SSRT_SSRT_MASK 0xFu +#define DMA_SSRT_SSRT_SHIFT 0 +#define DMA_SSRT_SSRT(x) (((uint8_t)(((uint8_t)(x))<<DMA_SSRT_SSRT_SHIFT))&DMA_SSRT_SSRT_MASK) +#define DMA_SSRT_SAST_MASK 0x40u +#define DMA_SSRT_SAST_SHIFT 6 +#define DMA_SSRT_NOP_MASK 0x80u +#define DMA_SSRT_NOP_SHIFT 7 +/* CERR Bit Fields */ +#define DMA_CERR_CERR_MASK 0xFu +#define DMA_CERR_CERR_SHIFT 0 +#define DMA_CERR_CERR(x) (((uint8_t)(((uint8_t)(x))<<DMA_CERR_CERR_SHIFT))&DMA_CERR_CERR_MASK) +#define DMA_CERR_CAEI_MASK 0x40u +#define DMA_CERR_CAEI_SHIFT 6 +#define DMA_CERR_NOP_MASK 0x80u +#define DMA_CERR_NOP_SHIFT 7 +/* CINT Bit Fields */ +#define DMA_CINT_CINT_MASK 0xFu +#define DMA_CINT_CINT_SHIFT 0 +#define DMA_CINT_CINT(x) (((uint8_t)(((uint8_t)(x))<<DMA_CINT_CINT_SHIFT))&DMA_CINT_CINT_MASK) +#define DMA_CINT_CAIR_MASK 0x40u +#define DMA_CINT_CAIR_SHIFT 6 +#define DMA_CINT_NOP_MASK 0x80u +#define DMA_CINT_NOP_SHIFT 7 +/* INT Bit Fields */ +#define DMA_INT_INT0_MASK 0x1u +#define DMA_INT_INT0_SHIFT 0 +#define DMA_INT_INT1_MASK 0x2u +#define DMA_INT_INT1_SHIFT 1 +#define DMA_INT_INT2_MASK 0x4u +#define DMA_INT_INT2_SHIFT 2 +#define DMA_INT_INT3_MASK 0x8u +#define DMA_INT_INT3_SHIFT 3 +#define DMA_INT_INT4_MASK 0x10u +#define DMA_INT_INT4_SHIFT 4 +#define DMA_INT_INT5_MASK 0x20u +#define DMA_INT_INT5_SHIFT 5 +#define DMA_INT_INT6_MASK 0x40u +#define DMA_INT_INT6_SHIFT 6 +#define DMA_INT_INT7_MASK 0x80u +#define DMA_INT_INT7_SHIFT 7 +#define DMA_INT_INT8_MASK 0x100u +#define DMA_INT_INT8_SHIFT 8 +#define DMA_INT_INT9_MASK 0x200u +#define DMA_INT_INT9_SHIFT 9 +#define DMA_INT_INT10_MASK 0x400u +#define DMA_INT_INT10_SHIFT 10 +#define DMA_INT_INT11_MASK 0x800u +#define DMA_INT_INT11_SHIFT 11 +#define DMA_INT_INT12_MASK 0x1000u +#define DMA_INT_INT12_SHIFT 12 +#define DMA_INT_INT13_MASK 0x2000u +#define DMA_INT_INT13_SHIFT 13 +#define DMA_INT_INT14_MASK 0x4000u +#define DMA_INT_INT14_SHIFT 14 +#define DMA_INT_INT15_MASK 0x8000u +#define DMA_INT_INT15_SHIFT 15 +/* ERR Bit Fields */ +#define DMA_ERR_ERR0_MASK 0x1u +#define DMA_ERR_ERR0_SHIFT 0 +#define DMA_ERR_ERR1_MASK 0x2u +#define DMA_ERR_ERR1_SHIFT 1 +#define DMA_ERR_ERR2_MASK 0x4u +#define DMA_ERR_ERR2_SHIFT 2 +#define DMA_ERR_ERR3_MASK 0x8u +#define DMA_ERR_ERR3_SHIFT 3 +#define DMA_ERR_ERR4_MASK 0x10u +#define DMA_ERR_ERR4_SHIFT 4 +#define DMA_ERR_ERR5_MASK 0x20u +#define DMA_ERR_ERR5_SHIFT 5 +#define DMA_ERR_ERR6_MASK 0x40u +#define DMA_ERR_ERR6_SHIFT 6 +#define DMA_ERR_ERR7_MASK 0x80u +#define DMA_ERR_ERR7_SHIFT 7 +#define DMA_ERR_ERR8_MASK 0x100u +#define DMA_ERR_ERR8_SHIFT 8 +#define DMA_ERR_ERR9_MASK 0x200u +#define DMA_ERR_ERR9_SHIFT 9 +#define DMA_ERR_ERR10_MASK 0x400u +#define DMA_ERR_ERR10_SHIFT 10 +#define DMA_ERR_ERR11_MASK 0x800u +#define DMA_ERR_ERR11_SHIFT 11 +#define DMA_ERR_ERR12_MASK 0x1000u +#define DMA_ERR_ERR12_SHIFT 12 +#define DMA_ERR_ERR13_MASK 0x2000u +#define DMA_ERR_ERR13_SHIFT 13 +#define DMA_ERR_ERR14_MASK 0x4000u +#define DMA_ERR_ERR14_SHIFT 14 +#define DMA_ERR_ERR15_MASK 0x8000u +#define DMA_ERR_ERR15_SHIFT 15 +/* HRS Bit Fields */ +#define DMA_HRS_HRS0_MASK 0x1u +#define DMA_HRS_HRS0_SHIFT 0 +#define DMA_HRS_HRS1_MASK 0x2u +#define DMA_HRS_HRS1_SHIFT 1 +#define DMA_HRS_HRS2_MASK 0x4u +#define DMA_HRS_HRS2_SHIFT 2 +#define DMA_HRS_HRS3_MASK 0x8u +#define DMA_HRS_HRS3_SHIFT 3 +#define DMA_HRS_HRS4_MASK 0x10u +#define DMA_HRS_HRS4_SHIFT 4 +#define DMA_HRS_HRS5_MASK 0x20u +#define DMA_HRS_HRS5_SHIFT 5 +#define DMA_HRS_HRS6_MASK 0x40u +#define DMA_HRS_HRS6_SHIFT 6 +#define DMA_HRS_HRS7_MASK 0x80u +#define DMA_HRS_HRS7_SHIFT 7 +#define DMA_HRS_HRS8_MASK 0x100u +#define DMA_HRS_HRS8_SHIFT 8 +#define DMA_HRS_HRS9_MASK 0x200u +#define DMA_HRS_HRS9_SHIFT 9 +#define DMA_HRS_HRS10_MASK 0x400u +#define DMA_HRS_HRS10_SHIFT 10 +#define DMA_HRS_HRS11_MASK 0x800u +#define DMA_HRS_HRS11_SHIFT 11 +#define DMA_HRS_HRS12_MASK 0x1000u +#define DMA_HRS_HRS12_SHIFT 12 +#define DMA_HRS_HRS13_MASK 0x2000u +#define DMA_HRS_HRS13_SHIFT 13 +#define DMA_HRS_HRS14_MASK 0x4000u +#define DMA_HRS_HRS14_SHIFT 14 +#define DMA_HRS_HRS15_MASK 0x8000u +#define DMA_HRS_HRS15_SHIFT 15 +/* EARS Bit Fields */ +#define DMA_EARS_EDREQ_0_MASK 0x1u +#define DMA_EARS_EDREQ_0_SHIFT 0 +#define DMA_EARS_EDREQ_1_MASK 0x2u +#define DMA_EARS_EDREQ_1_SHIFT 1 +#define DMA_EARS_EDREQ_2_MASK 0x4u +#define DMA_EARS_EDREQ_2_SHIFT 2 +#define DMA_EARS_EDREQ_3_MASK 0x8u +#define DMA_EARS_EDREQ_3_SHIFT 3 +#define DMA_EARS_EDREQ_4_MASK 0x10u +#define DMA_EARS_EDREQ_4_SHIFT 4 +#define DMA_EARS_EDREQ_5_MASK 0x20u +#define DMA_EARS_EDREQ_5_SHIFT 5 +#define DMA_EARS_EDREQ_6_MASK 0x40u +#define DMA_EARS_EDREQ_6_SHIFT 6 +#define DMA_EARS_EDREQ_7_MASK 0x80u +#define DMA_EARS_EDREQ_7_SHIFT 7 +#define DMA_EARS_EDREQ_8_MASK 0x100u +#define DMA_EARS_EDREQ_8_SHIFT 8 +#define DMA_EARS_EDREQ_9_MASK 0x200u +#define DMA_EARS_EDREQ_9_SHIFT 9 +#define DMA_EARS_EDREQ_10_MASK 0x400u +#define DMA_EARS_EDREQ_10_SHIFT 10 +#define DMA_EARS_EDREQ_11_MASK 0x800u +#define DMA_EARS_EDREQ_11_SHIFT 11 +#define DMA_EARS_EDREQ_12_MASK 0x1000u +#define DMA_EARS_EDREQ_12_SHIFT 12 +#define DMA_EARS_EDREQ_13_MASK 0x2000u +#define DMA_EARS_EDREQ_13_SHIFT 13 +#define DMA_EARS_EDREQ_14_MASK 0x4000u +#define DMA_EARS_EDREQ_14_SHIFT 14 +#define DMA_EARS_EDREQ_15_MASK 0x8000u +#define DMA_EARS_EDREQ_15_SHIFT 15 +/* DCHPRI3 Bit Fields */ +#define DMA_DCHPRI3_CHPRI_MASK 0xFu +#define DMA_DCHPRI3_CHPRI_SHIFT 0 +#define DMA_DCHPRI3_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI3_CHPRI_SHIFT))&DMA_DCHPRI3_CHPRI_MASK) +#define DMA_DCHPRI3_DPA_MASK 0x40u +#define DMA_DCHPRI3_DPA_SHIFT 6 +#define DMA_DCHPRI3_ECP_MASK 0x80u +#define DMA_DCHPRI3_ECP_SHIFT 7 +/* DCHPRI2 Bit Fields */ +#define DMA_DCHPRI2_CHPRI_MASK 0xFu +#define DMA_DCHPRI2_CHPRI_SHIFT 0 +#define DMA_DCHPRI2_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI2_CHPRI_SHIFT))&DMA_DCHPRI2_CHPRI_MASK) +#define DMA_DCHPRI2_DPA_MASK 0x40u +#define DMA_DCHPRI2_DPA_SHIFT 6 +#define DMA_DCHPRI2_ECP_MASK 0x80u +#define DMA_DCHPRI2_ECP_SHIFT 7 +/* DCHPRI1 Bit Fields */ +#define DMA_DCHPRI1_CHPRI_MASK 0xFu +#define DMA_DCHPRI1_CHPRI_SHIFT 0 +#define DMA_DCHPRI1_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI1_CHPRI_SHIFT))&DMA_DCHPRI1_CHPRI_MASK) +#define DMA_DCHPRI1_DPA_MASK 0x40u +#define DMA_DCHPRI1_DPA_SHIFT 6 +#define DMA_DCHPRI1_ECP_MASK 0x80u +#define DMA_DCHPRI1_ECP_SHIFT 7 +/* DCHPRI0 Bit Fields */ +#define DMA_DCHPRI0_CHPRI_MASK 0xFu +#define DMA_DCHPRI0_CHPRI_SHIFT 0 +#define DMA_DCHPRI0_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI0_CHPRI_SHIFT))&DMA_DCHPRI0_CHPRI_MASK) +#define DMA_DCHPRI0_DPA_MASK 0x40u +#define DMA_DCHPRI0_DPA_SHIFT 6 +#define DMA_DCHPRI0_ECP_MASK 0x80u +#define DMA_DCHPRI0_ECP_SHIFT 7 +/* DCHPRI7 Bit Fields */ +#define DMA_DCHPRI7_CHPRI_MASK 0xFu +#define DMA_DCHPRI7_CHPRI_SHIFT 0 +#define DMA_DCHPRI7_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI7_CHPRI_SHIFT))&DMA_DCHPRI7_CHPRI_MASK) +#define DMA_DCHPRI7_DPA_MASK 0x40u +#define DMA_DCHPRI7_DPA_SHIFT 6 +#define DMA_DCHPRI7_ECP_MASK 0x80u +#define DMA_DCHPRI7_ECP_SHIFT 7 +/* DCHPRI6 Bit Fields */ +#define DMA_DCHPRI6_CHPRI_MASK 0xFu +#define DMA_DCHPRI6_CHPRI_SHIFT 0 +#define DMA_DCHPRI6_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI6_CHPRI_SHIFT))&DMA_DCHPRI6_CHPRI_MASK) +#define DMA_DCHPRI6_DPA_MASK 0x40u +#define DMA_DCHPRI6_DPA_SHIFT 6 +#define DMA_DCHPRI6_ECP_MASK 0x80u +#define DMA_DCHPRI6_ECP_SHIFT 7 +/* DCHPRI5 Bit Fields */ +#define DMA_DCHPRI5_CHPRI_MASK 0xFu +#define DMA_DCHPRI5_CHPRI_SHIFT 0 +#define DMA_DCHPRI5_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI5_CHPRI_SHIFT))&DMA_DCHPRI5_CHPRI_MASK) +#define DMA_DCHPRI5_DPA_MASK 0x40u +#define DMA_DCHPRI5_DPA_SHIFT 6 +#define DMA_DCHPRI5_ECP_MASK 0x80u +#define DMA_DCHPRI5_ECP_SHIFT 7 +/* DCHPRI4 Bit Fields */ +#define DMA_DCHPRI4_CHPRI_MASK 0xFu +#define DMA_DCHPRI4_CHPRI_SHIFT 0 +#define DMA_DCHPRI4_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI4_CHPRI_SHIFT))&DMA_DCHPRI4_CHPRI_MASK) +#define DMA_DCHPRI4_DPA_MASK 0x40u +#define DMA_DCHPRI4_DPA_SHIFT 6 +#define DMA_DCHPRI4_ECP_MASK 0x80u +#define DMA_DCHPRI4_ECP_SHIFT 7 +/* DCHPRI11 Bit Fields */ +#define DMA_DCHPRI11_CHPRI_MASK 0xFu +#define DMA_DCHPRI11_CHPRI_SHIFT 0 +#define DMA_DCHPRI11_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI11_CHPRI_SHIFT))&DMA_DCHPRI11_CHPRI_MASK) +#define DMA_DCHPRI11_DPA_MASK 0x40u +#define DMA_DCHPRI11_DPA_SHIFT 6 +#define DMA_DCHPRI11_ECP_MASK 0x80u +#define DMA_DCHPRI11_ECP_SHIFT 7 +/* DCHPRI10 Bit Fields */ +#define DMA_DCHPRI10_CHPRI_MASK 0xFu +#define DMA_DCHPRI10_CHPRI_SHIFT 0 +#define DMA_DCHPRI10_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI10_CHPRI_SHIFT))&DMA_DCHPRI10_CHPRI_MASK) +#define DMA_DCHPRI10_DPA_MASK 0x40u +#define DMA_DCHPRI10_DPA_SHIFT 6 +#define DMA_DCHPRI10_ECP_MASK 0x80u +#define DMA_DCHPRI10_ECP_SHIFT 7 +/* DCHPRI9 Bit Fields */ +#define DMA_DCHPRI9_CHPRI_MASK 0xFu +#define DMA_DCHPRI9_CHPRI_SHIFT 0 +#define DMA_DCHPRI9_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI9_CHPRI_SHIFT))&DMA_DCHPRI9_CHPRI_MASK) +#define DMA_DCHPRI9_DPA_MASK 0x40u +#define DMA_DCHPRI9_DPA_SHIFT 6 +#define DMA_DCHPRI9_ECP_MASK 0x80u +#define DMA_DCHPRI9_ECP_SHIFT 7 +/* DCHPRI8 Bit Fields */ +#define DMA_DCHPRI8_CHPRI_MASK 0xFu +#define DMA_DCHPRI8_CHPRI_SHIFT 0 +#define DMA_DCHPRI8_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI8_CHPRI_SHIFT))&DMA_DCHPRI8_CHPRI_MASK) +#define DMA_DCHPRI8_DPA_MASK 0x40u +#define DMA_DCHPRI8_DPA_SHIFT 6 +#define DMA_DCHPRI8_ECP_MASK 0x80u +#define DMA_DCHPRI8_ECP_SHIFT 7 +/* DCHPRI15 Bit Fields */ +#define DMA_DCHPRI15_CHPRI_MASK 0xFu +#define DMA_DCHPRI15_CHPRI_SHIFT 0 +#define DMA_DCHPRI15_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI15_CHPRI_SHIFT))&DMA_DCHPRI15_CHPRI_MASK) +#define DMA_DCHPRI15_DPA_MASK 0x40u +#define DMA_DCHPRI15_DPA_SHIFT 6 +#define DMA_DCHPRI15_ECP_MASK 0x80u +#define DMA_DCHPRI15_ECP_SHIFT 7 +/* DCHPRI14 Bit Fields */ +#define DMA_DCHPRI14_CHPRI_MASK 0xFu +#define DMA_DCHPRI14_CHPRI_SHIFT 0 +#define DMA_DCHPRI14_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI14_CHPRI_SHIFT))&DMA_DCHPRI14_CHPRI_MASK) +#define DMA_DCHPRI14_DPA_MASK 0x40u +#define DMA_DCHPRI14_DPA_SHIFT 6 +#define DMA_DCHPRI14_ECP_MASK 0x80u +#define DMA_DCHPRI14_ECP_SHIFT 7 +/* DCHPRI13 Bit Fields */ +#define DMA_DCHPRI13_CHPRI_MASK 0xFu +#define DMA_DCHPRI13_CHPRI_SHIFT 0 +#define DMA_DCHPRI13_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI13_CHPRI_SHIFT))&DMA_DCHPRI13_CHPRI_MASK) +#define DMA_DCHPRI13_DPA_MASK 0x40u +#define DMA_DCHPRI13_DPA_SHIFT 6 +#define DMA_DCHPRI13_ECP_MASK 0x80u +#define DMA_DCHPRI13_ECP_SHIFT 7 +/* DCHPRI12 Bit Fields */ +#define DMA_DCHPRI12_CHPRI_MASK 0xFu +#define DMA_DCHPRI12_CHPRI_SHIFT 0 +#define DMA_DCHPRI12_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI12_CHPRI_SHIFT))&DMA_DCHPRI12_CHPRI_MASK) +#define DMA_DCHPRI12_DPA_MASK 0x40u +#define DMA_DCHPRI12_DPA_SHIFT 6 +#define DMA_DCHPRI12_ECP_MASK 0x80u +#define DMA_DCHPRI12_ECP_SHIFT 7 +/* SADDR Bit Fields */ +#define DMA_SADDR_SADDR_MASK 0xFFFFFFFFu +#define DMA_SADDR_SADDR_SHIFT 0 +#define DMA_SADDR_SADDR(x) (((uint32_t)(((uint32_t)(x))<<DMA_SADDR_SADDR_SHIFT))&DMA_SADDR_SADDR_MASK) +/* SOFF Bit Fields */ +#define DMA_SOFF_SOFF_MASK 0xFFFFu +#define DMA_SOFF_SOFF_SHIFT 0 +#define DMA_SOFF_SOFF(x) (((uint16_t)(((uint16_t)(x))<<DMA_SOFF_SOFF_SHIFT))&DMA_SOFF_SOFF_MASK) +/* ATTR Bit Fields */ +#define DMA_ATTR_DSIZE_MASK 0x7u +#define DMA_ATTR_DSIZE_SHIFT 0 +#define DMA_ATTR_DSIZE(x) (((uint16_t)(((uint16_t)(x))<<DMA_ATTR_DSIZE_SHIFT))&DMA_ATTR_DSIZE_MASK) +#define DMA_ATTR_DMOD_MASK 0xF8u +#define DMA_ATTR_DMOD_SHIFT 3 +#define DMA_ATTR_DMOD(x) (((uint16_t)(((uint16_t)(x))<<DMA_ATTR_DMOD_SHIFT))&DMA_ATTR_DMOD_MASK) +#define DMA_ATTR_SSIZE_MASK 0x700u +#define DMA_ATTR_SSIZE_SHIFT 8 +#define DMA_ATTR_SSIZE(x) (((uint16_t)(((uint16_t)(x))<<DMA_ATTR_SSIZE_SHIFT))&DMA_ATTR_SSIZE_MASK) +#define DMA_ATTR_SMOD_MASK 0xF800u +#define DMA_ATTR_SMOD_SHIFT 11 +#define DMA_ATTR_SMOD(x) (((uint16_t)(((uint16_t)(x))<<DMA_ATTR_SMOD_SHIFT))&DMA_ATTR_SMOD_MASK) +/* NBYTES_MLNO Bit Fields */ +#define DMA_NBYTES_MLNO_NBYTES_MASK 0xFFFFFFFFu +#define DMA_NBYTES_MLNO_NBYTES_SHIFT 0 +#define DMA_NBYTES_MLNO_NBYTES(x) (((uint32_t)(((uint32_t)(x))<<DMA_NBYTES_MLNO_NBYTES_SHIFT))&DMA_NBYTES_MLNO_NBYTES_MASK) +/* NBYTES_MLOFFNO Bit Fields */ +#define DMA_NBYTES_MLOFFNO_NBYTES_MASK 0x3FFFFFFFu +#define DMA_NBYTES_MLOFFNO_NBYTES_SHIFT 0 +#define DMA_NBYTES_MLOFFNO_NBYTES(x) (((uint32_t)(((uint32_t)(x))<<DMA_NBYTES_MLOFFNO_NBYTES_SHIFT))&DMA_NBYTES_MLOFFNO_NBYTES_MASK) +#define DMA_NBYTES_MLOFFNO_DMLOE_MASK 0x40000000u +#define DMA_NBYTES_MLOFFNO_DMLOE_SHIFT 30 +#define DMA_NBYTES_MLOFFNO_SMLOE_MASK 0x80000000u +#define DMA_NBYTES_MLOFFNO_SMLOE_SHIFT 31 +/* NBYTES_MLOFFYES Bit Fields */ +#define DMA_NBYTES_MLOFFYES_NBYTES_MASK 0x3FFu +#define DMA_NBYTES_MLOFFYES_NBYTES_SHIFT 0 +#define DMA_NBYTES_MLOFFYES_NBYTES(x) (((uint32_t)(((uint32_t)(x))<<DMA_NBYTES_MLOFFYES_NBYTES_SHIFT))&DMA_NBYTES_MLOFFYES_NBYTES_MASK) +#define DMA_NBYTES_MLOFFYES_MLOFF_MASK 0x3FFFFC00u +#define DMA_NBYTES_MLOFFYES_MLOFF_SHIFT 10 +#define DMA_NBYTES_MLOFFYES_MLOFF(x) (((uint32_t)(((uint32_t)(x))<<DMA_NBYTES_MLOFFYES_MLOFF_SHIFT))&DMA_NBYTES_MLOFFYES_MLOFF_MASK) +#define DMA_NBYTES_MLOFFYES_DMLOE_MASK 0x40000000u +#define DMA_NBYTES_MLOFFYES_DMLOE_SHIFT 30 +#define DMA_NBYTES_MLOFFYES_SMLOE_MASK 0x80000000u +#define DMA_NBYTES_MLOFFYES_SMLOE_SHIFT 31 +/* SLAST Bit Fields */ +#define DMA_SLAST_SLAST_MASK 0xFFFFFFFFu +#define DMA_SLAST_SLAST_SHIFT 0 +#define DMA_SLAST_SLAST(x) (((uint32_t)(((uint32_t)(x))<<DMA_SLAST_SLAST_SHIFT))&DMA_SLAST_SLAST_MASK) +/* DADDR Bit Fields */ +#define DMA_DADDR_DADDR_MASK 0xFFFFFFFFu +#define DMA_DADDR_DADDR_SHIFT 0 +#define DMA_DADDR_DADDR(x) (((uint32_t)(((uint32_t)(x))<<DMA_DADDR_DADDR_SHIFT))&DMA_DADDR_DADDR_MASK) +/* DOFF Bit Fields */ +#define DMA_DOFF_DOFF_MASK 0xFFFFu +#define DMA_DOFF_DOFF_SHIFT 0 +#define DMA_DOFF_DOFF(x) (((uint16_t)(((uint16_t)(x))<<DMA_DOFF_DOFF_SHIFT))&DMA_DOFF_DOFF_MASK) +/* CITER_ELINKNO Bit Fields */ +#define DMA_CITER_ELINKNO_CITER_MASK 0x7FFFu +#define DMA_CITER_ELINKNO_CITER_SHIFT 0 +#define DMA_CITER_ELINKNO_CITER(x) (((uint16_t)(((uint16_t)(x))<<DMA_CITER_ELINKNO_CITER_SHIFT))&DMA_CITER_ELINKNO_CITER_MASK) +#define DMA_CITER_ELINKNO_ELINK_MASK 0x8000u +#define DMA_CITER_ELINKNO_ELINK_SHIFT 15 +/* CITER_ELINKYES Bit Fields */ +#define DMA_CITER_ELINKYES_CITER_MASK 0x1FFu +#define DMA_CITER_ELINKYES_CITER_SHIFT 0 +#define DMA_CITER_ELINKYES_CITER(x) (((uint16_t)(((uint16_t)(x))<<DMA_CITER_ELINKYES_CITER_SHIFT))&DMA_CITER_ELINKYES_CITER_MASK) +#define DMA_CITER_ELINKYES_LINKCH_MASK 0x1E00u +#define DMA_CITER_ELINKYES_LINKCH_SHIFT 9 +#define DMA_CITER_ELINKYES_LINKCH(x) (((uint16_t)(((uint16_t)(x))<<DMA_CITER_ELINKYES_LINKCH_SHIFT))&DMA_CITER_ELINKYES_LINKCH_MASK) +#define DMA_CITER_ELINKYES_ELINK_MASK 0x8000u +#define DMA_CITER_ELINKYES_ELINK_SHIFT 15 +/* DLAST_SGA Bit Fields */ +#define DMA_DLAST_SGA_DLASTSGA_MASK 0xFFFFFFFFu +#define DMA_DLAST_SGA_DLASTSGA_SHIFT 0 +#define DMA_DLAST_SGA_DLASTSGA(x) (((uint32_t)(((uint32_t)(x))<<DMA_DLAST_SGA_DLASTSGA_SHIFT))&DMA_DLAST_SGA_DLASTSGA_MASK) +/* CSR Bit Fields */ +#define DMA_CSR_START_MASK 0x1u +#define DMA_CSR_START_SHIFT 0 +#define DMA_CSR_INTMAJOR_MASK 0x2u +#define DMA_CSR_INTMAJOR_SHIFT 1 +#define DMA_CSR_INTHALF_MASK 0x4u +#define DMA_CSR_INTHALF_SHIFT 2 +#define DMA_CSR_DREQ_MASK 0x8u +#define DMA_CSR_DREQ_SHIFT 3 +#define DMA_CSR_ESG_MASK 0x10u +#define DMA_CSR_ESG_SHIFT 4 +#define DMA_CSR_MAJORELINK_MASK 0x20u +#define DMA_CSR_MAJORELINK_SHIFT 5 +#define DMA_CSR_ACTIVE_MASK 0x40u +#define DMA_CSR_ACTIVE_SHIFT 6 +#define DMA_CSR_DONE_MASK 0x80u +#define DMA_CSR_DONE_SHIFT 7 +#define DMA_CSR_MAJORLINKCH_MASK 0xF00u +#define DMA_CSR_MAJORLINKCH_SHIFT 8 +#define DMA_CSR_MAJORLINKCH(x) (((uint16_t)(((uint16_t)(x))<<DMA_CSR_MAJORLINKCH_SHIFT))&DMA_CSR_MAJORLINKCH_MASK) +#define DMA_CSR_BWC_MASK 0xC000u +#define DMA_CSR_BWC_SHIFT 14 +#define DMA_CSR_BWC(x) (((uint16_t)(((uint16_t)(x))<<DMA_CSR_BWC_SHIFT))&DMA_CSR_BWC_MASK) +/* BITER_ELINKNO Bit Fields */ +#define DMA_BITER_ELINKNO_BITER_MASK 0x7FFFu +#define DMA_BITER_ELINKNO_BITER_SHIFT 0 +#define DMA_BITER_ELINKNO_BITER(x) (((uint16_t)(((uint16_t)(x))<<DMA_BITER_ELINKNO_BITER_SHIFT))&DMA_BITER_ELINKNO_BITER_MASK) +#define DMA_BITER_ELINKNO_ELINK_MASK 0x8000u +#define DMA_BITER_ELINKNO_ELINK_SHIFT 15 +/* BITER_ELINKYES Bit Fields */ +#define DMA_BITER_ELINKYES_BITER_MASK 0x1FFu +#define DMA_BITER_ELINKYES_BITER_SHIFT 0 +#define DMA_BITER_ELINKYES_BITER(x) (((uint16_t)(((uint16_t)(x))<<DMA_BITER_ELINKYES_BITER_SHIFT))&DMA_BITER_ELINKYES_BITER_MASK) +#define DMA_BITER_ELINKYES_LINKCH_MASK 0x1E00u +#define DMA_BITER_ELINKYES_LINKCH_SHIFT 9 +#define DMA_BITER_ELINKYES_LINKCH(x) (((uint16_t)(((uint16_t)(x))<<DMA_BITER_ELINKYES_LINKCH_SHIFT))&DMA_BITER_ELINKYES_LINKCH_MASK) +#define DMA_BITER_ELINKYES_ELINK_MASK 0x8000u +#define DMA_BITER_ELINKYES_ELINK_SHIFT 15 + +/*! + * @} + */ /* end of group DMA_Register_Masks */ + + +/* DMA - Peripheral instance base addresses */ +/** Peripheral DMA base address */ +#define DMA_BASE (0x40008000u) +/** Peripheral DMA base pointer */ +#define DMA0 ((DMA_Type *)DMA_BASE) +#define DMA_BASE_PTR (DMA0) +/** Array initializer of DMA peripheral base pointers */ +#define DMA_BASES { DMA0 } + +/* ---------------------------------------------------------------------------- + -- DMA - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMA_Register_Accessor_Macros DMA - Register accessor macros + * @{ + */ + + +/* DMA - Register instance definitions */ +/* DMA */ +#define DMA_CR DMA_CR_REG(DMA0) +#define DMA_ES DMA_ES_REG(DMA0) +#define DMA_ERQ DMA_ERQ_REG(DMA0) +#define DMA_EEI DMA_EEI_REG(DMA0) +#define DMA_CEEI DMA_CEEI_REG(DMA0) +#define DMA_SEEI DMA_SEEI_REG(DMA0) +#define DMA_CERQ DMA_CERQ_REG(DMA0) +#define DMA_SERQ DMA_SERQ_REG(DMA0) +#define DMA_CDNE DMA_CDNE_REG(DMA0) +#define DMA_SSRT DMA_SSRT_REG(DMA0) +#define DMA_CERR DMA_CERR_REG(DMA0) +#define DMA_CINT DMA_CINT_REG(DMA0) +#define DMA_INT DMA_INT_REG(DMA0) +#define DMA_ERR DMA_ERR_REG(DMA0) +#define DMA_HRS DMA_HRS_REG(DMA0) +#define DMA_EARS DMA_EARS_REG(DMA0) +#define DMA_DCHPRI3 DMA_DCHPRI3_REG(DMA0) +#define DMA_DCHPRI2 DMA_DCHPRI2_REG(DMA0) +#define DMA_DCHPRI1 DMA_DCHPRI1_REG(DMA0) +#define DMA_DCHPRI0 DMA_DCHPRI0_REG(DMA0) +#define DMA_DCHPRI7 DMA_DCHPRI7_REG(DMA0) +#define DMA_DCHPRI6 DMA_DCHPRI6_REG(DMA0) +#define DMA_DCHPRI5 DMA_DCHPRI5_REG(DMA0) +#define DMA_DCHPRI4 DMA_DCHPRI4_REG(DMA0) +#define DMA_DCHPRI11 DMA_DCHPRI11_REG(DMA0) +#define DMA_DCHPRI10 DMA_DCHPRI10_REG(DMA0) +#define DMA_DCHPRI9 DMA_DCHPRI9_REG(DMA0) +#define DMA_DCHPRI8 DMA_DCHPRI8_REG(DMA0) +#define DMA_DCHPRI15 DMA_DCHPRI15_REG(DMA0) +#define DMA_DCHPRI14 DMA_DCHPRI14_REG(DMA0) +#define DMA_DCHPRI13 DMA_DCHPRI13_REG(DMA0) +#define DMA_DCHPRI12 DMA_DCHPRI12_REG(DMA0) +#define DMA_TCD0_SADDR DMA_SADDR_REG(DMA0,0) +#define DMA_TCD0_SOFF DMA_SOFF_REG(DMA0,0) +#define DMA_TCD0_ATTR DMA_ATTR_REG(DMA0,0) +#define DMA_TCD0_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,0) +#define DMA_TCD0_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,0) +#define DMA_TCD0_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,0) +#define DMA_TCD0_SLAST DMA_SLAST_REG(DMA0,0) +#define DMA_TCD0_DADDR DMA_DADDR_REG(DMA0,0) +#define DMA_TCD0_DOFF DMA_DOFF_REG(DMA0,0) +#define DMA_TCD0_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,0) +#define DMA_TCD0_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,0) +#define DMA_TCD0_DLASTSGA DMA_DLAST_SGA_REG(DMA0,0) +#define DMA_TCD0_CSR DMA_CSR_REG(DMA0,0) +#define DMA_TCD0_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,0) +#define DMA_TCD0_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,0) +#define DMA_TCD1_SADDR DMA_SADDR_REG(DMA0,1) +#define DMA_TCD1_SOFF DMA_SOFF_REG(DMA0,1) +#define DMA_TCD1_ATTR DMA_ATTR_REG(DMA0,1) +#define DMA_TCD1_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,1) +#define DMA_TCD1_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,1) +#define DMA_TCD1_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,1) +#define DMA_TCD1_SLAST DMA_SLAST_REG(DMA0,1) +#define DMA_TCD1_DADDR DMA_DADDR_REG(DMA0,1) +#define DMA_TCD1_DOFF DMA_DOFF_REG(DMA0,1) +#define DMA_TCD1_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,1) +#define DMA_TCD1_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,1) +#define DMA_TCD1_DLASTSGA DMA_DLAST_SGA_REG(DMA0,1) +#define DMA_TCD1_CSR DMA_CSR_REG(DMA0,1) +#define DMA_TCD1_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,1) +#define DMA_TCD1_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,1) +#define DMA_TCD2_SADDR DMA_SADDR_REG(DMA0,2) +#define DMA_TCD2_SOFF DMA_SOFF_REG(DMA0,2) +#define DMA_TCD2_ATTR DMA_ATTR_REG(DMA0,2) +#define DMA_TCD2_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,2) +#define DMA_TCD2_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,2) +#define DMA_TCD2_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,2) +#define DMA_TCD2_SLAST DMA_SLAST_REG(DMA0,2) +#define DMA_TCD2_DADDR DMA_DADDR_REG(DMA0,2) +#define DMA_TCD2_DOFF DMA_DOFF_REG(DMA0,2) +#define DMA_TCD2_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,2) +#define DMA_TCD2_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,2) +#define DMA_TCD2_DLASTSGA DMA_DLAST_SGA_REG(DMA0,2) +#define DMA_TCD2_CSR DMA_CSR_REG(DMA0,2) +#define DMA_TCD2_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,2) +#define DMA_TCD2_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,2) +#define DMA_TCD3_SADDR DMA_SADDR_REG(DMA0,3) +#define DMA_TCD3_SOFF DMA_SOFF_REG(DMA0,3) +#define DMA_TCD3_ATTR DMA_ATTR_REG(DMA0,3) +#define DMA_TCD3_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,3) +#define DMA_TCD3_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,3) +#define DMA_TCD3_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,3) +#define DMA_TCD3_SLAST DMA_SLAST_REG(DMA0,3) +#define DMA_TCD3_DADDR DMA_DADDR_REG(DMA0,3) +#define DMA_TCD3_DOFF DMA_DOFF_REG(DMA0,3) +#define DMA_TCD3_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,3) +#define DMA_TCD3_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,3) +#define DMA_TCD3_DLASTSGA DMA_DLAST_SGA_REG(DMA0,3) +#define DMA_TCD3_CSR DMA_CSR_REG(DMA0,3) +#define DMA_TCD3_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,3) +#define DMA_TCD3_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,3) +#define DMA_TCD4_SADDR DMA_SADDR_REG(DMA0,4) +#define DMA_TCD4_SOFF DMA_SOFF_REG(DMA0,4) +#define DMA_TCD4_ATTR DMA_ATTR_REG(DMA0,4) +#define DMA_TCD4_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,4) +#define DMA_TCD4_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,4) +#define DMA_TCD4_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,4) +#define DMA_TCD4_SLAST DMA_SLAST_REG(DMA0,4) +#define DMA_TCD4_DADDR DMA_DADDR_REG(DMA0,4) +#define DMA_TCD4_DOFF DMA_DOFF_REG(DMA0,4) +#define DMA_TCD4_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,4) +#define DMA_TCD4_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,4) +#define DMA_TCD4_DLASTSGA DMA_DLAST_SGA_REG(DMA0,4) +#define DMA_TCD4_CSR DMA_CSR_REG(DMA0,4) +#define DMA_TCD4_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,4) +#define DMA_TCD4_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,4) +#define DMA_TCD5_SADDR DMA_SADDR_REG(DMA0,5) +#define DMA_TCD5_SOFF DMA_SOFF_REG(DMA0,5) +#define DMA_TCD5_ATTR DMA_ATTR_REG(DMA0,5) +#define DMA_TCD5_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,5) +#define DMA_TCD5_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,5) +#define DMA_TCD5_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,5) +#define DMA_TCD5_SLAST DMA_SLAST_REG(DMA0,5) +#define DMA_TCD5_DADDR DMA_DADDR_REG(DMA0,5) +#define DMA_TCD5_DOFF DMA_DOFF_REG(DMA0,5) +#define DMA_TCD5_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,5) +#define DMA_TCD5_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,5) +#define DMA_TCD5_DLASTSGA DMA_DLAST_SGA_REG(DMA0,5) +#define DMA_TCD5_CSR DMA_CSR_REG(DMA0,5) +#define DMA_TCD5_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,5) +#define DMA_TCD5_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,5) +#define DMA_TCD6_SADDR DMA_SADDR_REG(DMA0,6) +#define DMA_TCD6_SOFF DMA_SOFF_REG(DMA0,6) +#define DMA_TCD6_ATTR DMA_ATTR_REG(DMA0,6) +#define DMA_TCD6_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,6) +#define DMA_TCD6_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,6) +#define DMA_TCD6_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,6) +#define DMA_TCD6_SLAST DMA_SLAST_REG(DMA0,6) +#define DMA_TCD6_DADDR DMA_DADDR_REG(DMA0,6) +#define DMA_TCD6_DOFF DMA_DOFF_REG(DMA0,6) +#define DMA_TCD6_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,6) +#define DMA_TCD6_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,6) +#define DMA_TCD6_DLASTSGA DMA_DLAST_SGA_REG(DMA0,6) +#define DMA_TCD6_CSR DMA_CSR_REG(DMA0,6) +#define DMA_TCD6_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,6) +#define DMA_TCD6_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,6) +#define DMA_TCD7_SADDR DMA_SADDR_REG(DMA0,7) +#define DMA_TCD7_SOFF DMA_SOFF_REG(DMA0,7) +#define DMA_TCD7_ATTR DMA_ATTR_REG(DMA0,7) +#define DMA_TCD7_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,7) +#define DMA_TCD7_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,7) +#define DMA_TCD7_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,7) +#define DMA_TCD7_SLAST DMA_SLAST_REG(DMA0,7) +#define DMA_TCD7_DADDR DMA_DADDR_REG(DMA0,7) +#define DMA_TCD7_DOFF DMA_DOFF_REG(DMA0,7) +#define DMA_TCD7_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,7) +#define DMA_TCD7_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,7) +#define DMA_TCD7_DLASTSGA DMA_DLAST_SGA_REG(DMA0,7) +#define DMA_TCD7_CSR DMA_CSR_REG(DMA0,7) +#define DMA_TCD7_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,7) +#define DMA_TCD7_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,7) +#define DMA_TCD8_SADDR DMA_SADDR_REG(DMA0,8) +#define DMA_TCD8_SOFF DMA_SOFF_REG(DMA0,8) +#define DMA_TCD8_ATTR DMA_ATTR_REG(DMA0,8) +#define DMA_TCD8_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,8) +#define DMA_TCD8_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,8) +#define DMA_TCD8_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,8) +#define DMA_TCD8_SLAST DMA_SLAST_REG(DMA0,8) +#define DMA_TCD8_DADDR DMA_DADDR_REG(DMA0,8) +#define DMA_TCD8_DOFF DMA_DOFF_REG(DMA0,8) +#define DMA_TCD8_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,8) +#define DMA_TCD8_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,8) +#define DMA_TCD8_DLASTSGA DMA_DLAST_SGA_REG(DMA0,8) +#define DMA_TCD8_CSR DMA_CSR_REG(DMA0,8) +#define DMA_TCD8_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,8) +#define DMA_TCD8_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,8) +#define DMA_TCD9_SADDR DMA_SADDR_REG(DMA0,9) +#define DMA_TCD9_SOFF DMA_SOFF_REG(DMA0,9) +#define DMA_TCD9_ATTR DMA_ATTR_REG(DMA0,9) +#define DMA_TCD9_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,9) +#define DMA_TCD9_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,9) +#define DMA_TCD9_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,9) +#define DMA_TCD9_SLAST DMA_SLAST_REG(DMA0,9) +#define DMA_TCD9_DADDR DMA_DADDR_REG(DMA0,9) +#define DMA_TCD9_DOFF DMA_DOFF_REG(DMA0,9) +#define DMA_TCD9_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,9) +#define DMA_TCD9_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,9) +#define DMA_TCD9_DLASTSGA DMA_DLAST_SGA_REG(DMA0,9) +#define DMA_TCD9_CSR DMA_CSR_REG(DMA0,9) +#define DMA_TCD9_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,9) +#define DMA_TCD9_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,9) +#define DMA_TCD10_SADDR DMA_SADDR_REG(DMA0,10) +#define DMA_TCD10_SOFF DMA_SOFF_REG(DMA0,10) +#define DMA_TCD10_ATTR DMA_ATTR_REG(DMA0,10) +#define DMA_TCD10_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,10) +#define DMA_TCD10_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,10) +#define DMA_TCD10_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,10) +#define DMA_TCD10_SLAST DMA_SLAST_REG(DMA0,10) +#define DMA_TCD10_DADDR DMA_DADDR_REG(DMA0,10) +#define DMA_TCD10_DOFF DMA_DOFF_REG(DMA0,10) +#define DMA_TCD10_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,10) +#define DMA_TCD10_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,10) +#define DMA_TCD10_DLASTSGA DMA_DLAST_SGA_REG(DMA0,10) +#define DMA_TCD10_CSR DMA_CSR_REG(DMA0,10) +#define DMA_TCD10_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,10) +#define DMA_TCD10_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,10) +#define DMA_TCD11_SADDR DMA_SADDR_REG(DMA0,11) +#define DMA_TCD11_SOFF DMA_SOFF_REG(DMA0,11) +#define DMA_TCD11_ATTR DMA_ATTR_REG(DMA0,11) +#define DMA_TCD11_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,11) +#define DMA_TCD11_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,11) +#define DMA_TCD11_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,11) +#define DMA_TCD11_SLAST DMA_SLAST_REG(DMA0,11) +#define DMA_TCD11_DADDR DMA_DADDR_REG(DMA0,11) +#define DMA_TCD11_DOFF DMA_DOFF_REG(DMA0,11) +#define DMA_TCD11_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,11) +#define DMA_TCD11_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,11) +#define DMA_TCD11_DLASTSGA DMA_DLAST_SGA_REG(DMA0,11) +#define DMA_TCD11_CSR DMA_CSR_REG(DMA0,11) +#define DMA_TCD11_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,11) +#define DMA_TCD11_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,11) +#define DMA_TCD12_SADDR DMA_SADDR_REG(DMA0,12) +#define DMA_TCD12_SOFF DMA_SOFF_REG(DMA0,12) +#define DMA_TCD12_ATTR DMA_ATTR_REG(DMA0,12) +#define DMA_TCD12_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,12) +#define DMA_TCD12_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,12) +#define DMA_TCD12_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,12) +#define DMA_TCD12_SLAST DMA_SLAST_REG(DMA0,12) +#define DMA_TCD12_DADDR DMA_DADDR_REG(DMA0,12) +#define DMA_TCD12_DOFF DMA_DOFF_REG(DMA0,12) +#define DMA_TCD12_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,12) +#define DMA_TCD12_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,12) +#define DMA_TCD12_DLASTSGA DMA_DLAST_SGA_REG(DMA0,12) +#define DMA_TCD12_CSR DMA_CSR_REG(DMA0,12) +#define DMA_TCD12_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,12) +#define DMA_TCD12_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,12) +#define DMA_TCD13_SADDR DMA_SADDR_REG(DMA0,13) +#define DMA_TCD13_SOFF DMA_SOFF_REG(DMA0,13) +#define DMA_TCD13_ATTR DMA_ATTR_REG(DMA0,13) +#define DMA_TCD13_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,13) +#define DMA_TCD13_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,13) +#define DMA_TCD13_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,13) +#define DMA_TCD13_SLAST DMA_SLAST_REG(DMA0,13) +#define DMA_TCD13_DADDR DMA_DADDR_REG(DMA0,13) +#define DMA_TCD13_DOFF DMA_DOFF_REG(DMA0,13) +#define DMA_TCD13_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,13) +#define DMA_TCD13_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,13) +#define DMA_TCD13_DLASTSGA DMA_DLAST_SGA_REG(DMA0,13) +#define DMA_TCD13_CSR DMA_CSR_REG(DMA0,13) +#define DMA_TCD13_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,13) +#define DMA_TCD13_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,13) +#define DMA_TCD14_SADDR DMA_SADDR_REG(DMA0,14) +#define DMA_TCD14_SOFF DMA_SOFF_REG(DMA0,14) +#define DMA_TCD14_ATTR DMA_ATTR_REG(DMA0,14) +#define DMA_TCD14_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,14) +#define DMA_TCD14_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,14) +#define DMA_TCD14_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,14) +#define DMA_TCD14_SLAST DMA_SLAST_REG(DMA0,14) +#define DMA_TCD14_DADDR DMA_DADDR_REG(DMA0,14) +#define DMA_TCD14_DOFF DMA_DOFF_REG(DMA0,14) +#define DMA_TCD14_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,14) +#define DMA_TCD14_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,14) +#define DMA_TCD14_DLASTSGA DMA_DLAST_SGA_REG(DMA0,14) +#define DMA_TCD14_CSR DMA_CSR_REG(DMA0,14) +#define DMA_TCD14_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,14) +#define DMA_TCD14_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,14) +#define DMA_TCD15_SADDR DMA_SADDR_REG(DMA0,15) +#define DMA_TCD15_SOFF DMA_SOFF_REG(DMA0,15) +#define DMA_TCD15_ATTR DMA_ATTR_REG(DMA0,15) +#define DMA_TCD15_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,15) +#define DMA_TCD15_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,15) +#define DMA_TCD15_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,15) +#define DMA_TCD15_SLAST DMA_SLAST_REG(DMA0,15) +#define DMA_TCD15_DADDR DMA_DADDR_REG(DMA0,15) +#define DMA_TCD15_DOFF DMA_DOFF_REG(DMA0,15) +#define DMA_TCD15_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,15) +#define DMA_TCD15_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,15) +#define DMA_TCD15_DLASTSGA DMA_DLAST_SGA_REG(DMA0,15) +#define DMA_TCD15_CSR DMA_CSR_REG(DMA0,15) +#define DMA_TCD15_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,15) +#define DMA_TCD15_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,15) + +/* DMA - Register array accessors */ +#define DMA_SADDR(index) DMA_SADDR_REG(DMA0,index) +#define DMA_SOFF(index) DMA_SOFF_REG(DMA0,index) +#define DMA_ATTR(index) DMA_ATTR_REG(DMA0,index) +#define DMA_NBYTES_MLNO(index) DMA_NBYTES_MLNO_REG(DMA0,index) +#define DMA_NBYTES_MLOFFNO(index) DMA_NBYTES_MLOFFNO_REG(DMA0,index) +#define DMA_NBYTES_MLOFFYES(index) DMA_NBYTES_MLOFFYES_REG(DMA0,index) +#define DMA_SLAST(index) DMA_SLAST_REG(DMA0,index) +#define DMA_DADDR(index) DMA_DADDR_REG(DMA0,index) +#define DMA_DOFF(index) DMA_DOFF_REG(DMA0,index) +#define DMA_CITER_ELINKNO(index) DMA_CITER_ELINKNO_REG(DMA0,index) +#define DMA_CITER_ELINKYES(index) DMA_CITER_ELINKYES_REG(DMA0,index) +#define DMA_DLAST_SGA(index) DMA_DLAST_SGA_REG(DMA0,index) +#define DMA_CSR(index) DMA_CSR_REG(DMA0,index) +#define DMA_BITER_ELINKNO(index) DMA_BITER_ELINKNO_REG(DMA0,index) +#define DMA_BITER_ELINKYES(index) DMA_BITER_ELINKYES_REG(DMA0,index) + +/*! + * @} + */ /* end of group DMA_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group DMA_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- DMAMUX Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMAMUX_Peripheral_Access_Layer DMAMUX Peripheral Access Layer + * @{ + */ + +/** DMAMUX - Register Layout Typedef */ +typedef struct { + __IO uint8_t CHCFG[16]; /**< Channel Configuration register, array offset: 0x0, array step: 0x1 */ +} DMAMUX_Type, *DMAMUX_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- DMAMUX - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMAMUX_Register_Accessor_Macros DMAMUX - Register accessor macros + * @{ + */ + + +/* DMAMUX - Register accessors */ +#define DMAMUX_CHCFG_REG(base,index) ((base)->CHCFG[index]) + +/*! + * @} + */ /* end of group DMAMUX_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- DMAMUX Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMAMUX_Register_Masks DMAMUX Register Masks + * @{ + */ + +/* CHCFG Bit Fields */ +#define DMAMUX_CHCFG_SOURCE_MASK 0x3Fu +#define DMAMUX_CHCFG_SOURCE_SHIFT 0 +#define DMAMUX_CHCFG_SOURCE(x) (((uint8_t)(((uint8_t)(x))<<DMAMUX_CHCFG_SOURCE_SHIFT))&DMAMUX_CHCFG_SOURCE_MASK) +#define DMAMUX_CHCFG_TRIG_MASK 0x40u +#define DMAMUX_CHCFG_TRIG_SHIFT 6 +#define DMAMUX_CHCFG_ENBL_MASK 0x80u +#define DMAMUX_CHCFG_ENBL_SHIFT 7 + +/*! + * @} + */ /* end of group DMAMUX_Register_Masks */ + + +/* DMAMUX - Peripheral instance base addresses */ +/** Peripheral DMAMUX base address */ +#define DMAMUX_BASE (0x40021000u) +/** Peripheral DMAMUX base pointer */ +#define DMAMUX ((DMAMUX_Type *)DMAMUX_BASE) +#define DMAMUX_BASE_PTR (DMAMUX) +/** Array initializer of DMAMUX peripheral base pointers */ +#define DMAMUX_BASES { DMAMUX } + +/* ---------------------------------------------------------------------------- + -- DMAMUX - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMAMUX_Register_Accessor_Macros DMAMUX - Register accessor macros + * @{ + */ + + +/* DMAMUX - Register instance definitions */ +/* DMAMUX */ +#define DMAMUX_CHCFG0 DMAMUX_CHCFG_REG(DMAMUX,0) +#define DMAMUX_CHCFG1 DMAMUX_CHCFG_REG(DMAMUX,1) +#define DMAMUX_CHCFG2 DMAMUX_CHCFG_REG(DMAMUX,2) +#define DMAMUX_CHCFG3 DMAMUX_CHCFG_REG(DMAMUX,3) +#define DMAMUX_CHCFG4 DMAMUX_CHCFG_REG(DMAMUX,4) +#define DMAMUX_CHCFG5 DMAMUX_CHCFG_REG(DMAMUX,5) +#define DMAMUX_CHCFG6 DMAMUX_CHCFG_REG(DMAMUX,6) +#define DMAMUX_CHCFG7 DMAMUX_CHCFG_REG(DMAMUX,7) +#define DMAMUX_CHCFG8 DMAMUX_CHCFG_REG(DMAMUX,8) +#define DMAMUX_CHCFG9 DMAMUX_CHCFG_REG(DMAMUX,9) +#define DMAMUX_CHCFG10 DMAMUX_CHCFG_REG(DMAMUX,10) +#define DMAMUX_CHCFG11 DMAMUX_CHCFG_REG(DMAMUX,11) +#define DMAMUX_CHCFG12 DMAMUX_CHCFG_REG(DMAMUX,12) +#define DMAMUX_CHCFG13 DMAMUX_CHCFG_REG(DMAMUX,13) +#define DMAMUX_CHCFG14 DMAMUX_CHCFG_REG(DMAMUX,14) +#define DMAMUX_CHCFG15 DMAMUX_CHCFG_REG(DMAMUX,15) + +/* DMAMUX - Register array accessors */ +#define DMAMUX_CHCFG(index) DMAMUX_CHCFG_REG(DMAMUX,index) + +/*! + * @} + */ /* end of group DMAMUX_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group DMAMUX_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- ENET Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ENET_Peripheral_Access_Layer ENET Peripheral Access Layer + * @{ + */ + +/** ENET - Register Layout Typedef */ +typedef struct { + uint8_t RESERVED_0[4]; + __IO uint32_t EIR; /**< Interrupt Event Register, offset: 0x4 */ + __IO uint32_t EIMR; /**< Interrupt Mask Register, offset: 0x8 */ + uint8_t RESERVED_1[4]; + __IO uint32_t RDAR; /**< Receive Descriptor Active Register, offset: 0x10 */ + __IO uint32_t TDAR; /**< Transmit Descriptor Active Register, offset: 0x14 */ + uint8_t RESERVED_2[12]; + __IO uint32_t ECR; /**< Ethernet Control Register, offset: 0x24 */ + uint8_t RESERVED_3[24]; + __IO uint32_t MMFR; /**< MII Management Frame Register, offset: 0x40 */ + __IO uint32_t MSCR; /**< MII Speed Control Register, offset: 0x44 */ + uint8_t RESERVED_4[28]; + __IO uint32_t MIBC; /**< MIB Control Register, offset: 0x64 */ + uint8_t RESERVED_5[28]; + __IO uint32_t RCR; /**< Receive Control Register, offset: 0x84 */ + uint8_t RESERVED_6[60]; + __IO uint32_t TCR; /**< Transmit Control Register, offset: 0xC4 */ + uint8_t RESERVED_7[28]; + __IO uint32_t PALR; /**< Physical Address Lower Register, offset: 0xE4 */ + __IO uint32_t PAUR; /**< Physical Address Upper Register, offset: 0xE8 */ + __IO uint32_t OPD; /**< Opcode/Pause Duration Register, offset: 0xEC */ + uint8_t RESERVED_8[40]; + __IO uint32_t IAUR; /**< Descriptor Individual Upper Address Register, offset: 0x118 */ + __IO uint32_t IALR; /**< Descriptor Individual Lower Address Register, offset: 0x11C */ + __IO uint32_t GAUR; /**< Descriptor Group Upper Address Register, offset: 0x120 */ + __IO uint32_t GALR; /**< Descriptor Group Lower Address Register, offset: 0x124 */ + uint8_t RESERVED_9[28]; + __IO uint32_t TFWR; /**< Transmit FIFO Watermark Register, offset: 0x144 */ + uint8_t RESERVED_10[56]; + __IO uint32_t RDSR; /**< Receive Descriptor Ring Start Register, offset: 0x180 */ + __IO uint32_t TDSR; /**< Transmit Buffer Descriptor Ring Start Register, offset: 0x184 */ + __IO uint32_t MRBR; /**< Maximum Receive Buffer Size Register, offset: 0x188 */ + uint8_t RESERVED_11[4]; + __IO uint32_t RSFL; /**< Receive FIFO Section Full Threshold, offset: 0x190 */ + __IO uint32_t RSEM; /**< Receive FIFO Section Empty Threshold, offset: 0x194 */ + __IO uint32_t RAEM; /**< Receive FIFO Almost Empty Threshold, offset: 0x198 */ + __IO uint32_t RAFL; /**< Receive FIFO Almost Full Threshold, offset: 0x19C */ + __IO uint32_t TSEM; /**< Transmit FIFO Section Empty Threshold, offset: 0x1A0 */ + __IO uint32_t TAEM; /**< Transmit FIFO Almost Empty Threshold, offset: 0x1A4 */ + __IO uint32_t TAFL; /**< Transmit FIFO Almost Full Threshold, offset: 0x1A8 */ + __IO uint32_t TIPG; /**< Transmit Inter-Packet Gap, offset: 0x1AC */ + __IO uint32_t FTRL; /**< Frame Truncation Length, offset: 0x1B0 */ + uint8_t RESERVED_12[12]; + __IO uint32_t TACC; /**< Transmit Accelerator Function Configuration, offset: 0x1C0 */ + __IO uint32_t RACC; /**< Receive Accelerator Function Configuration, offset: 0x1C4 */ + uint8_t RESERVED_13[56]; + __IO uint32_t RMON_T_DROP; /**< Count of frames not counted correctly (RMON_T_DROP). NOTE: Counter not implemented (read 0 always) as not applicable., offset: 0x200 */ + __IO uint32_t RMON_T_PACKETS; /**< RMON Tx packet count (RMON_T_PACKETS), offset: 0x204 */ + __IO uint32_t RMON_T_BC_PKT; /**< RMON Tx Broadcast Packets (RMON_T_BC_PKT), offset: 0x208 */ + __IO uint32_t RMON_T_MC_PKT; /**< RMON Tx Multicast Packets (RMON_T_MC_PKT), offset: 0x20C */ + __IO uint32_t RMON_T_CRC_ALIGN; /**< RMON Tx Packets w CRC/Align error (RMON_T_CRC_ALIGN), offset: 0x210 */ + __IO uint32_t RMON_T_UNDERSIZE; /**< RMON Tx Packets < 64 bytes, good CRC (RMON_T_UNDERSIZE), offset: 0x214 */ + __IO uint32_t RMON_T_OVERSIZE; /**< RMON Tx Packets > MAX_FL bytes, good CRC (RMON_T_OVERSIZE), offset: 0x218 */ + __IO uint32_t RMON_T_FRAG; /**< RMON Tx Packets < 64 bytes, bad CRC (RMON_T_FRAG), offset: 0x21C */ + __IO uint32_t RMON_T_JAB; /**< RMON Tx Packets > MAX_FL bytes, bad CRC (RMON_T_JAB), offset: 0x220 */ + __IO uint32_t RMON_T_COL; /**< RMON Tx collision count (RMON_T_COL), offset: 0x224 */ + __IO uint32_t RMON_T_P64; /**< RMON Tx 64 byte packets (RMON_T_P64), offset: 0x228 */ + __IO uint32_t RMON_T_P65TO127; /**< RMON Tx 65 to 127 byte packets (RMON_T_P65TO127), offset: 0x22C */ + __IO uint32_t RMON_T_P128TO255; /**< RMON Tx 128 to 255 byte packets (RMON_T_P128TO255), offset: 0x230 */ + __IO uint32_t RMON_T_P256TO511; /**< RMON Tx 256 to 511 byte packets (RMON_T_P256TO511), offset: 0x234 */ + __IO uint32_t RMON_T_P512TO1023; /**< RMON Tx 512 to 1023 byte packets (RMON_T_P512TO1023), offset: 0x238 */ + __IO uint32_t RMON_T_P1024TO2047; /**< RMON Tx 1024 to 2047 byte packets (RMON_T_P1024TO2047), offset: 0x23C */ + __IO uint32_t RMON_T_P_GTE2048; /**< RMON Tx packets w > 2048 bytes (RMON_T_P_GTE2048), offset: 0x240 */ + __IO uint32_t RMON_T_OCTETS; /**< RMON Tx Octets (RMON_T_OCTETS), offset: 0x244 */ + __IO uint32_t IEEE_T_DROP; /**< Count of frames not counted correctly (IEEE_T_DROP). NOTE: Counter not implemented (read 0 always) as not applicable., offset: 0x248 */ + __IO uint32_t IEEE_T_FRAME_OK; /**< Frames Transmitted OK (IEEE_T_FRAME_OK), offset: 0x24C */ + __IO uint32_t IEEE_T_1COL; /**< Frames Transmitted with Single Collision (IEEE_T_1COL), offset: 0x250 */ + __IO uint32_t IEEE_T_MCOL; /**< Frames Transmitted with Multiple Collisions (IEEE_T_MCOL), offset: 0x254 */ + __IO uint32_t IEEE_T_DEF; /**< Frames Transmitted after Deferral Delay (IEEE_T_DEF), offset: 0x258 */ + __IO uint32_t IEEE_T_LCOL; /**< Frames Transmitted with Late Collision (IEEE_T_LCOL), offset: 0x25C */ + __IO uint32_t IEEE_T_EXCOL; /**< Frames Transmitted with Excessive Collisions (IEEE_T_EXCOL), offset: 0x260 */ + __IO uint32_t IEEE_T_MACERR; /**< Frames Transmitted with Tx FIFO Underrun (IEEE_T_MACERR), offset: 0x264 */ + __IO uint32_t IEEE_T_CSERR; /**< Frames Transmitted with Carrier Sense Error (IEEE_T_CSERR), offset: 0x268 */ + __IO uint32_t IEEE_T_SQE; /**< Frames Transmitted with SQE Error (IEEE_T_SQE). NOTE: Counter not implemented (read 0 always) as no SQE information is available., offset: 0x26C */ + __IO uint32_t IEEE_T_FDXFC; /**< Flow Control Pause frames transmitted (IEEE_T_FDXFC), offset: 0x270 */ + __IO uint32_t IEEE_T_OCTETS_OK; /**< Octet count for Frames Transmitted w/o Error (IEEE_T_OCTETS_OK). NOTE: Counts total octets (includes header and FCS fields)., offset: 0x274 */ + uint8_t RESERVED_14[12]; + __IO uint32_t RMON_R_PACKETS; /**< RMON Rx packet count (RMON_R_PACKETS), offset: 0x284 */ + __IO uint32_t RMON_R_BC_PKT; /**< RMON Rx Broadcast Packets (RMON_R_BC_PKT), offset: 0x288 */ + __IO uint32_t RMON_R_MC_PKT; /**< RMON Rx Multicast Packets (RMON_R_MC_PKT), offset: 0x28C */ + __IO uint32_t RMON_R_CRC_ALIGN; /**< RMON Rx Packets w CRC/Align error (RMON_R_CRC_ALIGN), offset: 0x290 */ + __IO uint32_t RMON_R_UNDERSIZE; /**< RMON Rx Packets < 64 bytes, good CRC (RMON_R_UNDERSIZE), offset: 0x294 */ + __IO uint32_t RMON_R_OVERSIZE; /**< RMON Rx Packets > MAX_FL bytes, good CRC (RMON_R_OVERSIZE), offset: 0x298 */ + __IO uint32_t RMON_R_FRAG; /**< RMON Rx Packets < 64 bytes, bad CRC (RMON_R_FRAG), offset: 0x29C */ + __IO uint32_t RMON_R_JAB; /**< RMON Rx Packets > MAX_FL bytes, bad CRC (RMON_R_JAB), offset: 0x2A0 */ + __IO uint32_t RMON_R_RESVD_0; /**< Reserved (RMON_R_RESVD_0), offset: 0x2A4 */ + __IO uint32_t RMON_R_P64; /**< RMON Rx 64 byte packets (RMON_R_P64), offset: 0x2A8 */ + __IO uint32_t RMON_R_P65TO127; /**< RMON Rx 65 to 127 byte packets (RMON_R_P65TO127), offset: 0x2AC */ + __IO uint32_t RMON_R_P128TO255; /**< RMON Rx 128 to 255 byte packets (RMON_R_P128TO255), offset: 0x2B0 */ + __IO uint32_t RMON_R_P256TO511; /**< RMON Rx 256 to 511 byte packets (RMON_R_P256TO511), offset: 0x2B4 */ + __IO uint32_t RMON_R_P512TO1023; /**< RMON Rx 512 to 1023 byte packets (RMON_R_P512TO1023), offset: 0x2B8 */ + __IO uint32_t RMON_R_P1024TO2047; /**< RMON Rx 1024 to 2047 byte packets (RMON_R_P1024TO2047), offset: 0x2BC */ + __IO uint32_t RMON_R_P_GTE2048; /**< RMON Rx packets w > 2048 bytes (RMON_R_P_GTE2048), offset: 0x2C0 */ + __IO uint32_t RMON_R_OCTETS; /**< RMON Rx Octets (RMON_R_OCTETS), offset: 0x2C4 */ + __IO uint32_t RMON_R_DROP; /**< Count of frames not counted correctly (IEEE_R_DROP). NOTE: Counter increments if a frame with valid/missing SFD character is detected and has been dropped. None of the other counters increments if this counter increments., offset: 0x2C8 */ + __IO uint32_t RMON_R_FRAME_OK; /**< Frames Received OK (IEEE_R_FRAME_OK), offset: 0x2CC */ + __IO uint32_t IEEE_R_CRC; /**< Frames Received with CRC Error (IEEE_R_CRC), offset: 0x2D0 */ + __IO uint32_t IEEE_R_ALIGN; /**< Frames Received with Alignment Error (IEEE_R_ALIGN), offset: 0x2D4 */ + __IO uint32_t IEEE_R_MACERR; /**< Receive Fifo Overflow count (IEEE_R_MACERR), offset: 0x2D8 */ + __IO uint32_t IEEE_R_FDXFC; /**< Flow Control Pause frames received (IEEE_R_FDXFC), offset: 0x2DC */ + __IO uint32_t IEEE_R_OCTETS_OK; /**< Octet count for Frames Rcvd w/o Error (IEEE_R_OCTETS_OK). Counts total octets (includes header and FCS fields)., offset: 0x2E0 */ + uint8_t RESERVED_15[284]; + __IO uint32_t ATCR; /**< Timer Control Register, offset: 0x400 */ + __IO uint32_t ATVR; /**< Timer Value Register, offset: 0x404 */ + __IO uint32_t ATOFF; /**< Timer Offset Register, offset: 0x408 */ + __IO uint32_t ATPER; /**< Timer Period Register, offset: 0x40C */ + __IO uint32_t ATCOR; /**< Timer Correction Register, offset: 0x410 */ + __IO uint32_t ATINC; /**< Time-Stamping Clock Period Register, offset: 0x414 */ + __IO uint32_t ATSTMP; /**< Timestamp of Last Transmitted Frame, offset: 0x418 */ + uint8_t RESERVED_16[488]; + __IO uint32_t TGSR; /**< Timer Global Status Register, offset: 0x604 */ + struct { /* offset: 0x608, array step: 0x8 */ + __IO uint32_t TCSR; /**< Timer Control Status Register, array offset: 0x608, array step: 0x8 */ + __IO uint32_t TCCR; /**< Timer Compare Capture Register, array offset: 0x60C, array step: 0x8 */ + } CHANNEL[4]; +} ENET_Type, *ENET_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- ENET - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ENET_Register_Accessor_Macros ENET - Register accessor macros + * @{ + */ + + +/* ENET - Register accessors */ +#define ENET_EIR_REG(base) ((base)->EIR) +#define ENET_EIMR_REG(base) ((base)->EIMR) +#define ENET_RDAR_REG(base) ((base)->RDAR) +#define ENET_TDAR_REG(base) ((base)->TDAR) +#define ENET_ECR_REG(base) ((base)->ECR) +#define ENET_MMFR_REG(base) ((base)->MMFR) +#define ENET_MSCR_REG(base) ((base)->MSCR) +#define ENET_MIBC_REG(base) ((base)->MIBC) +#define ENET_RCR_REG(base) ((base)->RCR) +#define ENET_TCR_REG(base) ((base)->TCR) +#define ENET_PALR_REG(base) ((base)->PALR) +#define ENET_PAUR_REG(base) ((base)->PAUR) +#define ENET_OPD_REG(base) ((base)->OPD) +#define ENET_IAUR_REG(base) ((base)->IAUR) +#define ENET_IALR_REG(base) ((base)->IALR) +#define ENET_GAUR_REG(base) ((base)->GAUR) +#define ENET_GALR_REG(base) ((base)->GALR) +#define ENET_TFWR_REG(base) ((base)->TFWR) +#define ENET_RDSR_REG(base) ((base)->RDSR) +#define ENET_TDSR_REG(base) ((base)->TDSR) +#define ENET_MRBR_REG(base) ((base)->MRBR) +#define ENET_RSFL_REG(base) ((base)->RSFL) +#define ENET_RSEM_REG(base) ((base)->RSEM) +#define ENET_RAEM_REG(base) ((base)->RAEM) +#define ENET_RAFL_REG(base) ((base)->RAFL) +#define ENET_TSEM_REG(base) ((base)->TSEM) +#define ENET_TAEM_REG(base) ((base)->TAEM) +#define ENET_TAFL_REG(base) ((base)->TAFL) +#define ENET_TIPG_REG(base) ((base)->TIPG) +#define ENET_FTRL_REG(base) ((base)->FTRL) +#define ENET_TACC_REG(base) ((base)->TACC) +#define ENET_RACC_REG(base) ((base)->RACC) +#define ENET_RMON_T_DROP_REG(base) ((base)->RMON_T_DROP) +#define ENET_RMON_T_PACKETS_REG(base) ((base)->RMON_T_PACKETS) +#define ENET_RMON_T_BC_PKT_REG(base) ((base)->RMON_T_BC_PKT) +#define ENET_RMON_T_MC_PKT_REG(base) ((base)->RMON_T_MC_PKT) +#define ENET_RMON_T_CRC_ALIGN_REG(base) ((base)->RMON_T_CRC_ALIGN) +#define ENET_RMON_T_UNDERSIZE_REG(base) ((base)->RMON_T_UNDERSIZE) +#define ENET_RMON_T_OVERSIZE_REG(base) ((base)->RMON_T_OVERSIZE) +#define ENET_RMON_T_FRAG_REG(base) ((base)->RMON_T_FRAG) +#define ENET_RMON_T_JAB_REG(base) ((base)->RMON_T_JAB) +#define ENET_RMON_T_COL_REG(base) ((base)->RMON_T_COL) +#define ENET_RMON_T_P64_REG(base) ((base)->RMON_T_P64) +#define ENET_RMON_T_P65TO127_REG(base) ((base)->RMON_T_P65TO127) +#define ENET_RMON_T_P128TO255_REG(base) ((base)->RMON_T_P128TO255) +#define ENET_RMON_T_P256TO511_REG(base) ((base)->RMON_T_P256TO511) +#define ENET_RMON_T_P512TO1023_REG(base) ((base)->RMON_T_P512TO1023) +#define ENET_RMON_T_P1024TO2047_REG(base) ((base)->RMON_T_P1024TO2047) +#define ENET_RMON_T_P_GTE2048_REG(base) ((base)->RMON_T_P_GTE2048) +#define ENET_RMON_T_OCTETS_REG(base) ((base)->RMON_T_OCTETS) +#define ENET_IEEE_T_DROP_REG(base) ((base)->IEEE_T_DROP) +#define ENET_IEEE_T_FRAME_OK_REG(base) ((base)->IEEE_T_FRAME_OK) +#define ENET_IEEE_T_1COL_REG(base) ((base)->IEEE_T_1COL) +#define ENET_IEEE_T_MCOL_REG(base) ((base)->IEEE_T_MCOL) +#define ENET_IEEE_T_DEF_REG(base) ((base)->IEEE_T_DEF) +#define ENET_IEEE_T_LCOL_REG(base) ((base)->IEEE_T_LCOL) +#define ENET_IEEE_T_EXCOL_REG(base) ((base)->IEEE_T_EXCOL) +#define ENET_IEEE_T_MACERR_REG(base) ((base)->IEEE_T_MACERR) +#define ENET_IEEE_T_CSERR_REG(base) ((base)->IEEE_T_CSERR) +#define ENET_IEEE_T_SQE_REG(base) ((base)->IEEE_T_SQE) +#define ENET_IEEE_T_FDXFC_REG(base) ((base)->IEEE_T_FDXFC) +#define ENET_IEEE_T_OCTETS_OK_REG(base) ((base)->IEEE_T_OCTETS_OK) +#define ENET_RMON_R_PACKETS_REG(base) ((base)->RMON_R_PACKETS) +#define ENET_RMON_R_BC_PKT_REG(base) ((base)->RMON_R_BC_PKT) +#define ENET_RMON_R_MC_PKT_REG(base) ((base)->RMON_R_MC_PKT) +#define ENET_RMON_R_CRC_ALIGN_REG(base) ((base)->RMON_R_CRC_ALIGN) +#define ENET_RMON_R_UNDERSIZE_REG(base) ((base)->RMON_R_UNDERSIZE) +#define ENET_RMON_R_OVERSIZE_REG(base) ((base)->RMON_R_OVERSIZE) +#define ENET_RMON_R_FRAG_REG(base) ((base)->RMON_R_FRAG) +#define ENET_RMON_R_JAB_REG(base) ((base)->RMON_R_JAB) +#define ENET_RMON_R_RESVD_0_REG(base) ((base)->RMON_R_RESVD_0) +#define ENET_RMON_R_P64_REG(base) ((base)->RMON_R_P64) +#define ENET_RMON_R_P65TO127_REG(base) ((base)->RMON_R_P65TO127) +#define ENET_RMON_R_P128TO255_REG(base) ((base)->RMON_R_P128TO255) +#define ENET_RMON_R_P256TO511_REG(base) ((base)->RMON_R_P256TO511) +#define ENET_RMON_R_P512TO1023_REG(base) ((base)->RMON_R_P512TO1023) +#define ENET_RMON_R_P1024TO2047_REG(base) ((base)->RMON_R_P1024TO2047) +#define ENET_RMON_R_P_GTE2048_REG(base) ((base)->RMON_R_P_GTE2048) +#define ENET_RMON_R_OCTETS_REG(base) ((base)->RMON_R_OCTETS) +#define ENET_RMON_R_DROP_REG(base) ((base)->RMON_R_DROP) +#define ENET_RMON_R_FRAME_OK_REG(base) ((base)->RMON_R_FRAME_OK) +#define ENET_IEEE_R_CRC_REG(base) ((base)->IEEE_R_CRC) +#define ENET_IEEE_R_ALIGN_REG(base) ((base)->IEEE_R_ALIGN) +#define ENET_IEEE_R_MACERR_REG(base) ((base)->IEEE_R_MACERR) +#define ENET_IEEE_R_FDXFC_REG(base) ((base)->IEEE_R_FDXFC) +#define ENET_IEEE_R_OCTETS_OK_REG(base) ((base)->IEEE_R_OCTETS_OK) +#define ENET_ATCR_REG(base) ((base)->ATCR) +#define ENET_ATVR_REG(base) ((base)->ATVR) +#define ENET_ATOFF_REG(base) ((base)->ATOFF) +#define ENET_ATPER_REG(base) ((base)->ATPER) +#define ENET_ATCOR_REG(base) ((base)->ATCOR) +#define ENET_ATINC_REG(base) ((base)->ATINC) +#define ENET_ATSTMP_REG(base) ((base)->ATSTMP) +#define ENET_TGSR_REG(base) ((base)->TGSR) +#define ENET_TCSR_REG(base,index) ((base)->CHANNEL[index].TCSR) +#define ENET_TCCR_REG(base,index) ((base)->CHANNEL[index].TCCR) + +/*! + * @} + */ /* end of group ENET_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- ENET Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ENET_Register_Masks ENET Register Masks + * @{ + */ + +/* EIR Bit Fields */ +#define ENET_EIR_TS_TIMER_MASK 0x8000u +#define ENET_EIR_TS_TIMER_SHIFT 15 +#define ENET_EIR_TS_AVAIL_MASK 0x10000u +#define ENET_EIR_TS_AVAIL_SHIFT 16 +#define ENET_EIR_WAKEUP_MASK 0x20000u +#define ENET_EIR_WAKEUP_SHIFT 17 +#define ENET_EIR_PLR_MASK 0x40000u +#define ENET_EIR_PLR_SHIFT 18 +#define ENET_EIR_UN_MASK 0x80000u +#define ENET_EIR_UN_SHIFT 19 +#define ENET_EIR_RL_MASK 0x100000u +#define ENET_EIR_RL_SHIFT 20 +#define ENET_EIR_LC_MASK 0x200000u +#define ENET_EIR_LC_SHIFT 21 +#define ENET_EIR_EBERR_MASK 0x400000u +#define ENET_EIR_EBERR_SHIFT 22 +#define ENET_EIR_MII_MASK 0x800000u +#define ENET_EIR_MII_SHIFT 23 +#define ENET_EIR_RXB_MASK 0x1000000u +#define ENET_EIR_RXB_SHIFT 24 +#define ENET_EIR_RXF_MASK 0x2000000u +#define ENET_EIR_RXF_SHIFT 25 +#define ENET_EIR_TXB_MASK 0x4000000u +#define ENET_EIR_TXB_SHIFT 26 +#define ENET_EIR_TXF_MASK 0x8000000u +#define ENET_EIR_TXF_SHIFT 27 +#define ENET_EIR_GRA_MASK 0x10000000u +#define ENET_EIR_GRA_SHIFT 28 +#define ENET_EIR_BABT_MASK 0x20000000u +#define ENET_EIR_BABT_SHIFT 29 +#define ENET_EIR_BABR_MASK 0x40000000u +#define ENET_EIR_BABR_SHIFT 30 +/* EIMR Bit Fields */ +#define ENET_EIMR_TS_TIMER_MASK 0x8000u +#define ENET_EIMR_TS_TIMER_SHIFT 15 +#define ENET_EIMR_TS_AVAIL_MASK 0x10000u +#define ENET_EIMR_TS_AVAIL_SHIFT 16 +#define ENET_EIMR_WAKEUP_MASK 0x20000u +#define ENET_EIMR_WAKEUP_SHIFT 17 +#define ENET_EIMR_PLR_MASK 0x40000u +#define ENET_EIMR_PLR_SHIFT 18 +#define ENET_EIMR_UN_MASK 0x80000u +#define ENET_EIMR_UN_SHIFT 19 +#define ENET_EIMR_RL_MASK 0x100000u +#define ENET_EIMR_RL_SHIFT 20 +#define ENET_EIMR_LC_MASK 0x200000u +#define ENET_EIMR_LC_SHIFT 21 +#define ENET_EIMR_EBERR_MASK 0x400000u +#define ENET_EIMR_EBERR_SHIFT 22 +#define ENET_EIMR_MII_MASK 0x800000u +#define ENET_EIMR_MII_SHIFT 23 +#define ENET_EIMR_RXB_MASK 0x1000000u +#define ENET_EIMR_RXB_SHIFT 24 +#define ENET_EIMR_RXF_MASK 0x2000000u +#define ENET_EIMR_RXF_SHIFT 25 +#define ENET_EIMR_TXB_MASK 0x4000000u +#define ENET_EIMR_TXB_SHIFT 26 +#define ENET_EIMR_TXF_MASK 0x8000000u +#define ENET_EIMR_TXF_SHIFT 27 +#define ENET_EIMR_GRA_MASK 0x10000000u +#define ENET_EIMR_GRA_SHIFT 28 +#define ENET_EIMR_BABT_MASK 0x20000000u +#define ENET_EIMR_BABT_SHIFT 29 +#define ENET_EIMR_BABR_MASK 0x40000000u +#define ENET_EIMR_BABR_SHIFT 30 +/* RDAR Bit Fields */ +#define ENET_RDAR_RDAR_MASK 0x1000000u +#define ENET_RDAR_RDAR_SHIFT 24 +/* TDAR Bit Fields */ +#define ENET_TDAR_TDAR_MASK 0x1000000u +#define ENET_TDAR_TDAR_SHIFT 24 +/* ECR Bit Fields */ +#define ENET_ECR_RESET_MASK 0x1u +#define ENET_ECR_RESET_SHIFT 0 +#define ENET_ECR_ETHEREN_MASK 0x2u +#define ENET_ECR_ETHEREN_SHIFT 1 +#define ENET_ECR_MAGICEN_MASK 0x4u +#define ENET_ECR_MAGICEN_SHIFT 2 +#define ENET_ECR_SLEEP_MASK 0x8u +#define ENET_ECR_SLEEP_SHIFT 3 +#define ENET_ECR_EN1588_MASK 0x10u +#define ENET_ECR_EN1588_SHIFT 4 +#define ENET_ECR_DBGEN_MASK 0x40u +#define ENET_ECR_DBGEN_SHIFT 6 +#define ENET_ECR_STOPEN_MASK 0x80u +#define ENET_ECR_STOPEN_SHIFT 7 +#define ENET_ECR_DBSWP_MASK 0x100u +#define ENET_ECR_DBSWP_SHIFT 8 +/* MMFR Bit Fields */ +#define ENET_MMFR_DATA_MASK 0xFFFFu +#define ENET_MMFR_DATA_SHIFT 0 +#define ENET_MMFR_DATA(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_DATA_SHIFT))&ENET_MMFR_DATA_MASK) +#define ENET_MMFR_TA_MASK 0x30000u +#define ENET_MMFR_TA_SHIFT 16 +#define ENET_MMFR_TA(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_TA_SHIFT))&ENET_MMFR_TA_MASK) +#define ENET_MMFR_RA_MASK 0x7C0000u +#define ENET_MMFR_RA_SHIFT 18 +#define ENET_MMFR_RA(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_RA_SHIFT))&ENET_MMFR_RA_MASK) +#define ENET_MMFR_PA_MASK 0xF800000u +#define ENET_MMFR_PA_SHIFT 23 +#define ENET_MMFR_PA(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_PA_SHIFT))&ENET_MMFR_PA_MASK) +#define ENET_MMFR_OP_MASK 0x30000000u +#define ENET_MMFR_OP_SHIFT 28 +#define ENET_MMFR_OP(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_OP_SHIFT))&ENET_MMFR_OP_MASK) +#define ENET_MMFR_ST_MASK 0xC0000000u +#define ENET_MMFR_ST_SHIFT 30 +#define ENET_MMFR_ST(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_ST_SHIFT))&ENET_MMFR_ST_MASK) +/* MSCR Bit Fields */ +#define ENET_MSCR_MII_SPEED_MASK 0x7Eu +#define ENET_MSCR_MII_SPEED_SHIFT 1 +#define ENET_MSCR_MII_SPEED(x) (((uint32_t)(((uint32_t)(x))<<ENET_MSCR_MII_SPEED_SHIFT))&ENET_MSCR_MII_SPEED_MASK) +#define ENET_MSCR_DIS_PRE_MASK 0x80u +#define ENET_MSCR_DIS_PRE_SHIFT 7 +#define ENET_MSCR_HOLDTIME_MASK 0x700u +#define ENET_MSCR_HOLDTIME_SHIFT 8 +#define ENET_MSCR_HOLDTIME(x) (((uint32_t)(((uint32_t)(x))<<ENET_MSCR_HOLDTIME_SHIFT))&ENET_MSCR_HOLDTIME_MASK) +/* MIBC Bit Fields */ +#define ENET_MIBC_MIB_CLEAR_MASK 0x20000000u +#define ENET_MIBC_MIB_CLEAR_SHIFT 29 +#define ENET_MIBC_MIB_IDLE_MASK 0x40000000u +#define ENET_MIBC_MIB_IDLE_SHIFT 30 +#define ENET_MIBC_MIB_DIS_MASK 0x80000000u +#define ENET_MIBC_MIB_DIS_SHIFT 31 +/* RCR Bit Fields */ +#define ENET_RCR_LOOP_MASK 0x1u +#define ENET_RCR_LOOP_SHIFT 0 +#define ENET_RCR_DRT_MASK 0x2u +#define ENET_RCR_DRT_SHIFT 1 +#define ENET_RCR_MII_MODE_MASK 0x4u +#define ENET_RCR_MII_MODE_SHIFT 2 +#define ENET_RCR_PROM_MASK 0x8u +#define ENET_RCR_PROM_SHIFT 3 +#define ENET_RCR_BC_REJ_MASK 0x10u +#define ENET_RCR_BC_REJ_SHIFT 4 +#define ENET_RCR_FCE_MASK 0x20u +#define ENET_RCR_FCE_SHIFT 5 +#define ENET_RCR_RMII_MODE_MASK 0x100u +#define ENET_RCR_RMII_MODE_SHIFT 8 +#define ENET_RCR_RMII_10T_MASK 0x200u +#define ENET_RCR_RMII_10T_SHIFT 9 +#define ENET_RCR_PADEN_MASK 0x1000u +#define ENET_RCR_PADEN_SHIFT 12 +#define ENET_RCR_PAUFWD_MASK 0x2000u +#define ENET_RCR_PAUFWD_SHIFT 13 +#define ENET_RCR_CRCFWD_MASK 0x4000u +#define ENET_RCR_CRCFWD_SHIFT 14 +#define ENET_RCR_CFEN_MASK 0x8000u +#define ENET_RCR_CFEN_SHIFT 15 +#define ENET_RCR_MAX_FL_MASK 0x3FFF0000u +#define ENET_RCR_MAX_FL_SHIFT 16 +#define ENET_RCR_MAX_FL(x) (((uint32_t)(((uint32_t)(x))<<ENET_RCR_MAX_FL_SHIFT))&ENET_RCR_MAX_FL_MASK) +#define ENET_RCR_NLC_MASK 0x40000000u +#define ENET_RCR_NLC_SHIFT 30 +#define ENET_RCR_GRS_MASK 0x80000000u +#define ENET_RCR_GRS_SHIFT 31 +/* TCR Bit Fields */ +#define ENET_TCR_GTS_MASK 0x1u +#define ENET_TCR_GTS_SHIFT 0 +#define ENET_TCR_FDEN_MASK 0x4u +#define ENET_TCR_FDEN_SHIFT 2 +#define ENET_TCR_TFC_PAUSE_MASK 0x8u +#define ENET_TCR_TFC_PAUSE_SHIFT 3 +#define ENET_TCR_RFC_PAUSE_MASK 0x10u +#define ENET_TCR_RFC_PAUSE_SHIFT 4 +#define ENET_TCR_ADDSEL_MASK 0xE0u +#define ENET_TCR_ADDSEL_SHIFT 5 +#define ENET_TCR_ADDSEL(x) (((uint32_t)(((uint32_t)(x))<<ENET_TCR_ADDSEL_SHIFT))&ENET_TCR_ADDSEL_MASK) +#define ENET_TCR_ADDINS_MASK 0x100u +#define ENET_TCR_ADDINS_SHIFT 8 +#define ENET_TCR_CRCFWD_MASK 0x200u +#define ENET_TCR_CRCFWD_SHIFT 9 +/* PALR Bit Fields */ +#define ENET_PALR_PADDR1_MASK 0xFFFFFFFFu +#define ENET_PALR_PADDR1_SHIFT 0 +#define ENET_PALR_PADDR1(x) (((uint32_t)(((uint32_t)(x))<<ENET_PALR_PADDR1_SHIFT))&ENET_PALR_PADDR1_MASK) +/* PAUR Bit Fields */ +#define ENET_PAUR_TYPE_MASK 0xFFFFu +#define ENET_PAUR_TYPE_SHIFT 0 +#define ENET_PAUR_TYPE(x) (((uint32_t)(((uint32_t)(x))<<ENET_PAUR_TYPE_SHIFT))&ENET_PAUR_TYPE_MASK) +#define ENET_PAUR_PADDR2_MASK 0xFFFF0000u +#define ENET_PAUR_PADDR2_SHIFT 16 +#define ENET_PAUR_PADDR2(x) (((uint32_t)(((uint32_t)(x))<<ENET_PAUR_PADDR2_SHIFT))&ENET_PAUR_PADDR2_MASK) +/* OPD Bit Fields */ +#define ENET_OPD_PAUSE_DUR_MASK 0xFFFFu +#define ENET_OPD_PAUSE_DUR_SHIFT 0 +#define ENET_OPD_PAUSE_DUR(x) (((uint32_t)(((uint32_t)(x))<<ENET_OPD_PAUSE_DUR_SHIFT))&ENET_OPD_PAUSE_DUR_MASK) +#define ENET_OPD_OPCODE_MASK 0xFFFF0000u +#define ENET_OPD_OPCODE_SHIFT 16 +#define ENET_OPD_OPCODE(x) (((uint32_t)(((uint32_t)(x))<<ENET_OPD_OPCODE_SHIFT))&ENET_OPD_OPCODE_MASK) +/* IAUR Bit Fields */ +#define ENET_IAUR_IADDR1_MASK 0xFFFFFFFFu +#define ENET_IAUR_IADDR1_SHIFT 0 +#define ENET_IAUR_IADDR1(x) (((uint32_t)(((uint32_t)(x))<<ENET_IAUR_IADDR1_SHIFT))&ENET_IAUR_IADDR1_MASK) +/* IALR Bit Fields */ +#define ENET_IALR_IADDR2_MASK 0xFFFFFFFFu +#define ENET_IALR_IADDR2_SHIFT 0 +#define ENET_IALR_IADDR2(x) (((uint32_t)(((uint32_t)(x))<<ENET_IALR_IADDR2_SHIFT))&ENET_IALR_IADDR2_MASK) +/* GAUR Bit Fields */ +#define ENET_GAUR_GADDR1_MASK 0xFFFFFFFFu +#define ENET_GAUR_GADDR1_SHIFT 0 +#define ENET_GAUR_GADDR1(x) (((uint32_t)(((uint32_t)(x))<<ENET_GAUR_GADDR1_SHIFT))&ENET_GAUR_GADDR1_MASK) +/* GALR Bit Fields */ +#define ENET_GALR_GADDR2_MASK 0xFFFFFFFFu +#define ENET_GALR_GADDR2_SHIFT 0 +#define ENET_GALR_GADDR2(x) (((uint32_t)(((uint32_t)(x))<<ENET_GALR_GADDR2_SHIFT))&ENET_GALR_GADDR2_MASK) +/* TFWR Bit Fields */ +#define ENET_TFWR_TFWR_MASK 0x3Fu +#define ENET_TFWR_TFWR_SHIFT 0 +#define ENET_TFWR_TFWR(x) (((uint32_t)(((uint32_t)(x))<<ENET_TFWR_TFWR_SHIFT))&ENET_TFWR_TFWR_MASK) +#define ENET_TFWR_STRFWD_MASK 0x100u +#define ENET_TFWR_STRFWD_SHIFT 8 +/* RDSR Bit Fields */ +#define ENET_RDSR_R_DES_START_MASK 0xFFFFFFF8u +#define ENET_RDSR_R_DES_START_SHIFT 3 +#define ENET_RDSR_R_DES_START(x) (((uint32_t)(((uint32_t)(x))<<ENET_RDSR_R_DES_START_SHIFT))&ENET_RDSR_R_DES_START_MASK) +/* TDSR Bit Fields */ +#define ENET_TDSR_X_DES_START_MASK 0xFFFFFFF8u +#define ENET_TDSR_X_DES_START_SHIFT 3 +#define ENET_TDSR_X_DES_START(x) (((uint32_t)(((uint32_t)(x))<<ENET_TDSR_X_DES_START_SHIFT))&ENET_TDSR_X_DES_START_MASK) +/* MRBR Bit Fields */ +#define ENET_MRBR_R_BUF_SIZE_MASK 0x3FF0u +#define ENET_MRBR_R_BUF_SIZE_SHIFT 4 +#define ENET_MRBR_R_BUF_SIZE(x) (((uint32_t)(((uint32_t)(x))<<ENET_MRBR_R_BUF_SIZE_SHIFT))&ENET_MRBR_R_BUF_SIZE_MASK) +/* RSFL Bit Fields */ +#define ENET_RSFL_RX_SECTION_FULL_MASK 0xFFu +#define ENET_RSFL_RX_SECTION_FULL_SHIFT 0 +#define ENET_RSFL_RX_SECTION_FULL(x) (((uint32_t)(((uint32_t)(x))<<ENET_RSFL_RX_SECTION_FULL_SHIFT))&ENET_RSFL_RX_SECTION_FULL_MASK) +/* RSEM Bit Fields */ +#define ENET_RSEM_RX_SECTION_EMPTY_MASK 0xFFu +#define ENET_RSEM_RX_SECTION_EMPTY_SHIFT 0 +#define ENET_RSEM_RX_SECTION_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_RSEM_RX_SECTION_EMPTY_SHIFT))&ENET_RSEM_RX_SECTION_EMPTY_MASK) +#define ENET_RSEM_STAT_SECTION_EMPTY_MASK 0x1F0000u +#define ENET_RSEM_STAT_SECTION_EMPTY_SHIFT 16 +#define ENET_RSEM_STAT_SECTION_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_RSEM_STAT_SECTION_EMPTY_SHIFT))&ENET_RSEM_STAT_SECTION_EMPTY_MASK) +/* RAEM Bit Fields */ +#define ENET_RAEM_RX_ALMOST_EMPTY_MASK 0xFFu +#define ENET_RAEM_RX_ALMOST_EMPTY_SHIFT 0 +#define ENET_RAEM_RX_ALMOST_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_RAEM_RX_ALMOST_EMPTY_SHIFT))&ENET_RAEM_RX_ALMOST_EMPTY_MASK) +/* RAFL Bit Fields */ +#define ENET_RAFL_RX_ALMOST_FULL_MASK 0xFFu +#define ENET_RAFL_RX_ALMOST_FULL_SHIFT 0 +#define ENET_RAFL_RX_ALMOST_FULL(x) (((uint32_t)(((uint32_t)(x))<<ENET_RAFL_RX_ALMOST_FULL_SHIFT))&ENET_RAFL_RX_ALMOST_FULL_MASK) +/* TSEM Bit Fields */ +#define ENET_TSEM_TX_SECTION_EMPTY_MASK 0xFFu +#define ENET_TSEM_TX_SECTION_EMPTY_SHIFT 0 +#define ENET_TSEM_TX_SECTION_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_TSEM_TX_SECTION_EMPTY_SHIFT))&ENET_TSEM_TX_SECTION_EMPTY_MASK) +/* TAEM Bit Fields */ +#define ENET_TAEM_TX_ALMOST_EMPTY_MASK 0xFFu +#define ENET_TAEM_TX_ALMOST_EMPTY_SHIFT 0 +#define ENET_TAEM_TX_ALMOST_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_TAEM_TX_ALMOST_EMPTY_SHIFT))&ENET_TAEM_TX_ALMOST_EMPTY_MASK) +/* TAFL Bit Fields */ +#define ENET_TAFL_TX_ALMOST_FULL_MASK 0xFFu +#define ENET_TAFL_TX_ALMOST_FULL_SHIFT 0 +#define ENET_TAFL_TX_ALMOST_FULL(x) (((uint32_t)(((uint32_t)(x))<<ENET_TAFL_TX_ALMOST_FULL_SHIFT))&ENET_TAFL_TX_ALMOST_FULL_MASK) +/* TIPG Bit Fields */ +#define ENET_TIPG_IPG_MASK 0x1Fu +#define ENET_TIPG_IPG_SHIFT 0 +#define ENET_TIPG_IPG(x) (((uint32_t)(((uint32_t)(x))<<ENET_TIPG_IPG_SHIFT))&ENET_TIPG_IPG_MASK) +/* FTRL Bit Fields */ +#define ENET_FTRL_TRUNC_FL_MASK 0x3FFFu +#define ENET_FTRL_TRUNC_FL_SHIFT 0 +#define ENET_FTRL_TRUNC_FL(x) (((uint32_t)(((uint32_t)(x))<<ENET_FTRL_TRUNC_FL_SHIFT))&ENET_FTRL_TRUNC_FL_MASK) +/* TACC Bit Fields */ +#define ENET_TACC_SHIFT16_MASK 0x1u +#define ENET_TACC_SHIFT16_SHIFT 0 +#define ENET_TACC_IPCHK_MASK 0x8u +#define ENET_TACC_IPCHK_SHIFT 3 +#define ENET_TACC_PROCHK_MASK 0x10u +#define ENET_TACC_PROCHK_SHIFT 4 +/* RACC Bit Fields */ +#define ENET_RACC_PADREM_MASK 0x1u +#define ENET_RACC_PADREM_SHIFT 0 +#define ENET_RACC_IPDIS_MASK 0x2u +#define ENET_RACC_IPDIS_SHIFT 1 +#define ENET_RACC_PRODIS_MASK 0x4u +#define ENET_RACC_PRODIS_SHIFT 2 +#define ENET_RACC_LINEDIS_MASK 0x40u +#define ENET_RACC_LINEDIS_SHIFT 6 +#define ENET_RACC_SHIFT16_MASK 0x80u +#define ENET_RACC_SHIFT16_SHIFT 7 +/* ATCR Bit Fields */ +#define ENET_ATCR_EN_MASK 0x1u +#define ENET_ATCR_EN_SHIFT 0 +#define ENET_ATCR_OFFEN_MASK 0x4u +#define ENET_ATCR_OFFEN_SHIFT 2 +#define ENET_ATCR_OFFRST_MASK 0x8u +#define ENET_ATCR_OFFRST_SHIFT 3 +#define ENET_ATCR_PEREN_MASK 0x10u +#define ENET_ATCR_PEREN_SHIFT 4 +#define ENET_ATCR_PINPER_MASK 0x80u +#define ENET_ATCR_PINPER_SHIFT 7 +#define ENET_ATCR_RESTART_MASK 0x200u +#define ENET_ATCR_RESTART_SHIFT 9 +#define ENET_ATCR_CAPTURE_MASK 0x800u +#define ENET_ATCR_CAPTURE_SHIFT 11 +#define ENET_ATCR_SLAVE_MASK 0x2000u +#define ENET_ATCR_SLAVE_SHIFT 13 +/* ATVR Bit Fields */ +#define ENET_ATVR_ATIME_MASK 0xFFFFFFFFu +#define ENET_ATVR_ATIME_SHIFT 0 +#define ENET_ATVR_ATIME(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATVR_ATIME_SHIFT))&ENET_ATVR_ATIME_MASK) +/* ATOFF Bit Fields */ +#define ENET_ATOFF_OFFSET_MASK 0xFFFFFFFFu +#define ENET_ATOFF_OFFSET_SHIFT 0 +#define ENET_ATOFF_OFFSET(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATOFF_OFFSET_SHIFT))&ENET_ATOFF_OFFSET_MASK) +/* ATPER Bit Fields */ +#define ENET_ATPER_PERIOD_MASK 0xFFFFFFFFu +#define ENET_ATPER_PERIOD_SHIFT 0 +#define ENET_ATPER_PERIOD(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATPER_PERIOD_SHIFT))&ENET_ATPER_PERIOD_MASK) +/* ATCOR Bit Fields */ +#define ENET_ATCOR_COR_MASK 0x7FFFFFFFu +#define ENET_ATCOR_COR_SHIFT 0 +#define ENET_ATCOR_COR(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATCOR_COR_SHIFT))&ENET_ATCOR_COR_MASK) +/* ATINC Bit Fields */ +#define ENET_ATINC_INC_MASK 0x7Fu +#define ENET_ATINC_INC_SHIFT 0 +#define ENET_ATINC_INC(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATINC_INC_SHIFT))&ENET_ATINC_INC_MASK) +#define ENET_ATINC_INC_CORR_MASK 0x7F00u +#define ENET_ATINC_INC_CORR_SHIFT 8 +#define ENET_ATINC_INC_CORR(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATINC_INC_CORR_SHIFT))&ENET_ATINC_INC_CORR_MASK) +/* ATSTMP Bit Fields */ +#define ENET_ATSTMP_TIMESTAMP_MASK 0xFFFFFFFFu +#define ENET_ATSTMP_TIMESTAMP_SHIFT 0 +#define ENET_ATSTMP_TIMESTAMP(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATSTMP_TIMESTAMP_SHIFT))&ENET_ATSTMP_TIMESTAMP_MASK) +/* TGSR Bit Fields */ +#define ENET_TGSR_TF0_MASK 0x1u +#define ENET_TGSR_TF0_SHIFT 0 +#define ENET_TGSR_TF1_MASK 0x2u +#define ENET_TGSR_TF1_SHIFT 1 +#define ENET_TGSR_TF2_MASK 0x4u +#define ENET_TGSR_TF2_SHIFT 2 +#define ENET_TGSR_TF3_MASK 0x8u +#define ENET_TGSR_TF3_SHIFT 3 +/* TCSR Bit Fields */ +#define ENET_TCSR_TDRE_MASK 0x1u +#define ENET_TCSR_TDRE_SHIFT 0 +#define ENET_TCSR_TMODE_MASK 0x3Cu +#define ENET_TCSR_TMODE_SHIFT 2 +#define ENET_TCSR_TMODE(x) (((uint32_t)(((uint32_t)(x))<<ENET_TCSR_TMODE_SHIFT))&ENET_TCSR_TMODE_MASK) +#define ENET_TCSR_TIE_MASK 0x40u +#define ENET_TCSR_TIE_SHIFT 6 +#define ENET_TCSR_TF_MASK 0x80u +#define ENET_TCSR_TF_SHIFT 7 +/* TCCR Bit Fields */ +#define ENET_TCCR_TCC_MASK 0xFFFFFFFFu +#define ENET_TCCR_TCC_SHIFT 0 +#define ENET_TCCR_TCC(x) (((uint32_t)(((uint32_t)(x))<<ENET_TCCR_TCC_SHIFT))&ENET_TCCR_TCC_MASK) + +/*! + * @} + */ /* end of group ENET_Register_Masks */ + + +/* ENET - Peripheral instance base addresses */ +/** Peripheral ENET base address */ +#define ENET_BASE (0x400C0000u) +/** Peripheral ENET base pointer */ +#define ENET ((ENET_Type *)ENET_BASE) +#define ENET_BASE_PTR (ENET) +/** Array initializer of ENET peripheral base pointers */ +#define ENET_BASES { ENET } + +/* ---------------------------------------------------------------------------- + -- ENET - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ENET_Register_Accessor_Macros ENET - Register accessor macros + * @{ + */ + + +/* ENET - Register instance definitions */ +/* ENET */ +#define ENET_EIR ENET_EIR_REG(ENET) +#define ENET_EIMR ENET_EIMR_REG(ENET) +#define ENET_RDAR ENET_RDAR_REG(ENET) +#define ENET_TDAR ENET_TDAR_REG(ENET) +#define ENET_ECR ENET_ECR_REG(ENET) +#define ENET_MMFR ENET_MMFR_REG(ENET) +#define ENET_MSCR ENET_MSCR_REG(ENET) +#define ENET_MIBC ENET_MIBC_REG(ENET) +#define ENET_RCR ENET_RCR_REG(ENET) +#define ENET_TCR ENET_TCR_REG(ENET) +#define ENET_PALR ENET_PALR_REG(ENET) +#define ENET_PAUR ENET_PAUR_REG(ENET) +#define ENET_OPD ENET_OPD_REG(ENET) +#define ENET_IAUR ENET_IAUR_REG(ENET) +#define ENET_IALR ENET_IALR_REG(ENET) +#define ENET_GAUR ENET_GAUR_REG(ENET) +#define ENET_GALR ENET_GALR_REG(ENET) +#define ENET_TFWR ENET_TFWR_REG(ENET) +#define ENET_RDSR ENET_RDSR_REG(ENET) +#define ENET_TDSR ENET_TDSR_REG(ENET) +#define ENET_MRBR ENET_MRBR_REG(ENET) +#define ENET_RSFL ENET_RSFL_REG(ENET) +#define ENET_RSEM ENET_RSEM_REG(ENET) +#define ENET_RAEM ENET_RAEM_REG(ENET) +#define ENET_RAFL ENET_RAFL_REG(ENET) +#define ENET_TSEM ENET_TSEM_REG(ENET) +#define ENET_TAEM ENET_TAEM_REG(ENET) +#define ENET_TAFL ENET_TAFL_REG(ENET) +#define ENET_TIPG ENET_TIPG_REG(ENET) +#define ENET_FTRL ENET_FTRL_REG(ENET) +#define ENET_TACC ENET_TACC_REG(ENET) +#define ENET_RACC ENET_RACC_REG(ENET) +#define ENET_RMON_T_DROP ENET_RMON_T_DROP_REG(ENET) +#define ENET_RMON_T_PACKETS ENET_RMON_T_PACKETS_REG(ENET) +#define ENET_RMON_T_BC_PKT ENET_RMON_T_BC_PKT_REG(ENET) +#define ENET_RMON_T_MC_PKT ENET_RMON_T_MC_PKT_REG(ENET) +#define ENET_RMON_T_CRC_ALIGN ENET_RMON_T_CRC_ALIGN_REG(ENET) +#define ENET_RMON_T_UNDERSIZE ENET_RMON_T_UNDERSIZE_REG(ENET) +#define ENET_RMON_T_OVERSIZE ENET_RMON_T_OVERSIZE_REG(ENET) +#define ENET_RMON_T_FRAG ENET_RMON_T_FRAG_REG(ENET) +#define ENET_RMON_T_JAB ENET_RMON_T_JAB_REG(ENET) +#define ENET_RMON_T_COL ENET_RMON_T_COL_REG(ENET) +#define ENET_RMON_T_P64 ENET_RMON_T_P64_REG(ENET) +#define ENET_RMON_T_P65TO127 ENET_RMON_T_P65TO127_REG(ENET) +#define ENET_RMON_T_P128TO255 ENET_RMON_T_P128TO255_REG(ENET) +#define ENET_RMON_T_P256TO511 ENET_RMON_T_P256TO511_REG(ENET) +#define ENET_RMON_T_P512TO1023 ENET_RMON_T_P512TO1023_REG(ENET) +#define ENET_RMON_T_P1024TO2047 ENET_RMON_T_P1024TO2047_REG(ENET) +#define ENET_RMON_T_P_GTE2048 ENET_RMON_T_P_GTE2048_REG(ENET) +#define ENET_RMON_T_OCTETS ENET_RMON_T_OCTETS_REG(ENET) +#define ENET_IEEE_T_DROP ENET_IEEE_T_DROP_REG(ENET) +#define ENET_IEEE_T_FRAME_OK ENET_IEEE_T_FRAME_OK_REG(ENET) +#define ENET_IEEE_T_1COL ENET_IEEE_T_1COL_REG(ENET) +#define ENET_IEEE_T_MCOL ENET_IEEE_T_MCOL_REG(ENET) +#define ENET_IEEE_T_DEF ENET_IEEE_T_DEF_REG(ENET) +#define ENET_IEEE_T_LCOL ENET_IEEE_T_LCOL_REG(ENET) +#define ENET_IEEE_T_EXCOL ENET_IEEE_T_EXCOL_REG(ENET) +#define ENET_IEEE_T_MACERR ENET_IEEE_T_MACERR_REG(ENET) +#define ENET_IEEE_T_CSERR ENET_IEEE_T_CSERR_REG(ENET) +#define ENET_IEEE_T_SQE ENET_IEEE_T_SQE_REG(ENET) +#define ENET_IEEE_T_FDXFC ENET_IEEE_T_FDXFC_REG(ENET) +#define ENET_IEEE_T_OCTETS_OK ENET_IEEE_T_OCTETS_OK_REG(ENET) +#define ENET_RMON_R_PACKETS ENET_RMON_R_PACKETS_REG(ENET) +#define ENET_RMON_R_BC_PKT ENET_RMON_R_BC_PKT_REG(ENET) +#define ENET_RMON_R_MC_PKT ENET_RMON_R_MC_PKT_REG(ENET) +#define ENET_RMON_R_CRC_ALIGN ENET_RMON_R_CRC_ALIGN_REG(ENET) +#define ENET_RMON_R_UNDERSIZE ENET_RMON_R_UNDERSIZE_REG(ENET) +#define ENET_RMON_R_OVERSIZE ENET_RMON_R_OVERSIZE_REG(ENET) +#define ENET_RMON_R_FRAG ENET_RMON_R_FRAG_REG(ENET) +#define ENET_RMON_R_JAB ENET_RMON_R_JAB_REG(ENET) +#define ENET_RMON_R_RESVD_0 ENET_RMON_R_RESVD_0_REG(ENET) +#define ENET_RMON_R_P64 ENET_RMON_R_P64_REG(ENET) +#define ENET_RMON_R_P65TO127 ENET_RMON_R_P65TO127_REG(ENET) +#define ENET_RMON_R_P128TO255 ENET_RMON_R_P128TO255_REG(ENET) +#define ENET_RMON_R_P256TO511 ENET_RMON_R_P256TO511_REG(ENET) +#define ENET_RMON_R_P512TO1023 ENET_RMON_R_P512TO1023_REG(ENET) +#define ENET_RMON_R_P1024TO2047 ENET_RMON_R_P1024TO2047_REG(ENET) +#define ENET_RMON_R_P_GTE2048 ENET_RMON_R_P_GTE2048_REG(ENET) +#define ENET_RMON_R_OCTETS ENET_RMON_R_OCTETS_REG(ENET) +#define ENET_IEEE_R_DROP ENET_RMON_R_DROP_REG(ENET) +#define ENET_IEEE_R_FRAME_OK ENET_RMON_R_FRAME_OK_REG(ENET) +#define ENET_IEEE_R_CRC ENET_IEEE_R_CRC_REG(ENET) +#define ENET_IEEE_R_ALIGN ENET_IEEE_R_ALIGN_REG(ENET) +#define ENET_IEEE_R_MACERR ENET_IEEE_R_MACERR_REG(ENET) +#define ENET_IEEE_R_FDXFC ENET_IEEE_R_FDXFC_REG(ENET) +#define ENET_IEEE_R_OCTETS_OK ENET_IEEE_R_OCTETS_OK_REG(ENET) +#define ENET_ATCR ENET_ATCR_REG(ENET) +#define ENET_ATVR ENET_ATVR_REG(ENET) +#define ENET_ATOFF ENET_ATOFF_REG(ENET) +#define ENET_ATPER ENET_ATPER_REG(ENET) +#define ENET_ATCOR ENET_ATCOR_REG(ENET) +#define ENET_ATINC ENET_ATINC_REG(ENET) +#define ENET_ATSTMP ENET_ATSTMP_REG(ENET) +#define ENET_TGSR ENET_TGSR_REG(ENET) +#define ENET_TCSR0 ENET_TCSR_REG(ENET,0) +#define ENET_TCCR0 ENET_TCCR_REG(ENET,0) +#define ENET_TCSR1 ENET_TCSR_REG(ENET,1) +#define ENET_TCCR1 ENET_TCCR_REG(ENET,1) +#define ENET_TCSR2 ENET_TCSR_REG(ENET,2) +#define ENET_TCCR2 ENET_TCCR_REG(ENET,2) +#define ENET_TCSR3 ENET_TCSR_REG(ENET,3) +#define ENET_TCCR3 ENET_TCCR_REG(ENET,3) + +/* ENET - Register array accessors */ +#define ENET_TCSR(index) ENET_TCSR_REG(ENET,index) +#define ENET_TCCR(index) ENET_TCCR_REG(ENET,index) + +/*! + * @} + */ /* end of group ENET_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group ENET_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- EWM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup EWM_Peripheral_Access_Layer EWM Peripheral Access Layer + * @{ + */ + +/** EWM - Register Layout Typedef */ +typedef struct { + __IO uint8_t CTRL; /**< Control Register, offset: 0x0 */ + __O uint8_t SERV; /**< Service Register, offset: 0x1 */ + __IO uint8_t CMPL; /**< Compare Low Register, offset: 0x2 */ + __IO uint8_t CMPH; /**< Compare High Register, offset: 0x3 */ +} EWM_Type, *EWM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- EWM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup EWM_Register_Accessor_Macros EWM - Register accessor macros + * @{ + */ + + +/* EWM - Register accessors */ +#define EWM_CTRL_REG(base) ((base)->CTRL) +#define EWM_SERV_REG(base) ((base)->SERV) +#define EWM_CMPL_REG(base) ((base)->CMPL) +#define EWM_CMPH_REG(base) ((base)->CMPH) + +/*! + * @} + */ /* end of group EWM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- EWM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup EWM_Register_Masks EWM Register Masks + * @{ + */ + +/* CTRL Bit Fields */ +#define EWM_CTRL_EWMEN_MASK 0x1u +#define EWM_CTRL_EWMEN_SHIFT 0 +#define EWM_CTRL_ASSIN_MASK 0x2u +#define EWM_CTRL_ASSIN_SHIFT 1 +#define EWM_CTRL_INEN_MASK 0x4u +#define EWM_CTRL_INEN_SHIFT 2 +#define EWM_CTRL_INTEN_MASK 0x8u +#define EWM_CTRL_INTEN_SHIFT 3 +/* SERV Bit Fields */ +#define EWM_SERV_SERVICE_MASK 0xFFu +#define EWM_SERV_SERVICE_SHIFT 0 +#define EWM_SERV_SERVICE(x) (((uint8_t)(((uint8_t)(x))<<EWM_SERV_SERVICE_SHIFT))&EWM_SERV_SERVICE_MASK) +/* CMPL Bit Fields */ +#define EWM_CMPL_COMPAREL_MASK 0xFFu +#define EWM_CMPL_COMPAREL_SHIFT 0 +#define EWM_CMPL_COMPAREL(x) (((uint8_t)(((uint8_t)(x))<<EWM_CMPL_COMPAREL_SHIFT))&EWM_CMPL_COMPAREL_MASK) +/* CMPH Bit Fields */ +#define EWM_CMPH_COMPAREH_MASK 0xFFu +#define EWM_CMPH_COMPAREH_SHIFT 0 +#define EWM_CMPH_COMPAREH(x) (((uint8_t)(((uint8_t)(x))<<EWM_CMPH_COMPAREH_SHIFT))&EWM_CMPH_COMPAREH_MASK) + +/*! + * @} + */ /* end of group EWM_Register_Masks */ + + +/* EWM - Peripheral instance base addresses */ +/** Peripheral EWM base address */ +#define EWM_BASE (0x40061000u) +/** Peripheral EWM base pointer */ +#define EWM ((EWM_Type *)EWM_BASE) +#define EWM_BASE_PTR (EWM) +/** Array initializer of EWM peripheral base pointers */ +#define EWM_BASES { EWM } + +/* ---------------------------------------------------------------------------- + -- EWM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup EWM_Register_Accessor_Macros EWM - Register accessor macros + * @{ + */ + + +/* EWM - Register instance definitions */ +/* EWM */ +#define EWM_CTRL EWM_CTRL_REG(EWM) +#define EWM_SERV EWM_SERV_REG(EWM) +#define EWM_CMPL EWM_CMPL_REG(EWM) +#define EWM_CMPH EWM_CMPH_REG(EWM) + +/*! + * @} + */ /* end of group EWM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group EWM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- FB Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FB_Peripheral_Access_Layer FB Peripheral Access Layer + * @{ + */ + +/** FB - Register Layout Typedef */ +typedef struct { + struct { /* offset: 0x0, array step: 0xC */ + __IO uint32_t CSAR; /**< Chip Select Address Register, array offset: 0x0, array step: 0xC */ + __IO uint32_t CSMR; /**< Chip Select Mask Register, array offset: 0x4, array step: 0xC */ + __IO uint32_t CSCR; /**< Chip Select Control Register, array offset: 0x8, array step: 0xC */ + } CS[6]; + uint8_t RESERVED_0[24]; + __IO uint32_t CSPMCR; /**< Chip Select port Multiplexing Control Register, offset: 0x60 */ +} FB_Type, *FB_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- FB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FB_Register_Accessor_Macros FB - Register accessor macros + * @{ + */ + + +/* FB - Register accessors */ +#define FB_CSAR_REG(base,index) ((base)->CS[index].CSAR) +#define FB_CSMR_REG(base,index) ((base)->CS[index].CSMR) +#define FB_CSCR_REG(base,index) ((base)->CS[index].CSCR) +#define FB_CSPMCR_REG(base) ((base)->CSPMCR) + +/*! + * @} + */ /* end of group FB_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- FB Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FB_Register_Masks FB Register Masks + * @{ + */ + +/* CSAR Bit Fields */ +#define FB_CSAR_BA_MASK 0xFFFF0000u +#define FB_CSAR_BA_SHIFT 16 +#define FB_CSAR_BA(x) (((uint32_t)(((uint32_t)(x))<<FB_CSAR_BA_SHIFT))&FB_CSAR_BA_MASK) +/* CSMR Bit Fields */ +#define FB_CSMR_V_MASK 0x1u +#define FB_CSMR_V_SHIFT 0 +#define FB_CSMR_WP_MASK 0x100u +#define FB_CSMR_WP_SHIFT 8 +#define FB_CSMR_BAM_MASK 0xFFFF0000u +#define FB_CSMR_BAM_SHIFT 16 +#define FB_CSMR_BAM(x) (((uint32_t)(((uint32_t)(x))<<FB_CSMR_BAM_SHIFT))&FB_CSMR_BAM_MASK) +/* CSCR Bit Fields */ +#define FB_CSCR_BSTW_MASK 0x8u +#define FB_CSCR_BSTW_SHIFT 3 +#define FB_CSCR_BSTR_MASK 0x10u +#define FB_CSCR_BSTR_SHIFT 4 +#define FB_CSCR_BEM_MASK 0x20u +#define FB_CSCR_BEM_SHIFT 5 +#define FB_CSCR_PS_MASK 0xC0u +#define FB_CSCR_PS_SHIFT 6 +#define FB_CSCR_PS(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_PS_SHIFT))&FB_CSCR_PS_MASK) +#define FB_CSCR_AA_MASK 0x100u +#define FB_CSCR_AA_SHIFT 8 +#define FB_CSCR_BLS_MASK 0x200u +#define FB_CSCR_BLS_SHIFT 9 +#define FB_CSCR_WS_MASK 0xFC00u +#define FB_CSCR_WS_SHIFT 10 +#define FB_CSCR_WS(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_WS_SHIFT))&FB_CSCR_WS_MASK) +#define FB_CSCR_WRAH_MASK 0x30000u +#define FB_CSCR_WRAH_SHIFT 16 +#define FB_CSCR_WRAH(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_WRAH_SHIFT))&FB_CSCR_WRAH_MASK) +#define FB_CSCR_RDAH_MASK 0xC0000u +#define FB_CSCR_RDAH_SHIFT 18 +#define FB_CSCR_RDAH(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_RDAH_SHIFT))&FB_CSCR_RDAH_MASK) +#define FB_CSCR_ASET_MASK 0x300000u +#define FB_CSCR_ASET_SHIFT 20 +#define FB_CSCR_ASET(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_ASET_SHIFT))&FB_CSCR_ASET_MASK) +#define FB_CSCR_EXTS_MASK 0x400000u +#define FB_CSCR_EXTS_SHIFT 22 +#define FB_CSCR_SWSEN_MASK 0x800000u +#define FB_CSCR_SWSEN_SHIFT 23 +#define FB_CSCR_SWS_MASK 0xFC000000u +#define FB_CSCR_SWS_SHIFT 26 +#define FB_CSCR_SWS(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_SWS_SHIFT))&FB_CSCR_SWS_MASK) +/* CSPMCR Bit Fields */ +#define FB_CSPMCR_GROUP5_MASK 0xF000u +#define FB_CSPMCR_GROUP5_SHIFT 12 +#define FB_CSPMCR_GROUP5(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP5_SHIFT))&FB_CSPMCR_GROUP5_MASK) +#define FB_CSPMCR_GROUP4_MASK 0xF0000u +#define FB_CSPMCR_GROUP4_SHIFT 16 +#define FB_CSPMCR_GROUP4(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP4_SHIFT))&FB_CSPMCR_GROUP4_MASK) +#define FB_CSPMCR_GROUP3_MASK 0xF00000u +#define FB_CSPMCR_GROUP3_SHIFT 20 +#define FB_CSPMCR_GROUP3(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP3_SHIFT))&FB_CSPMCR_GROUP3_MASK) +#define FB_CSPMCR_GROUP2_MASK 0xF000000u +#define FB_CSPMCR_GROUP2_SHIFT 24 +#define FB_CSPMCR_GROUP2(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP2_SHIFT))&FB_CSPMCR_GROUP2_MASK) +#define FB_CSPMCR_GROUP1_MASK 0xF0000000u +#define FB_CSPMCR_GROUP1_SHIFT 28 +#define FB_CSPMCR_GROUP1(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP1_SHIFT))&FB_CSPMCR_GROUP1_MASK) + +/*! + * @} + */ /* end of group FB_Register_Masks */ + + +/* FB - Peripheral instance base addresses */ +/** Peripheral FB base address */ +#define FB_BASE (0x4000C000u) +/** Peripheral FB base pointer */ +#define FB ((FB_Type *)FB_BASE) +#define FB_BASE_PTR (FB) +/** Array initializer of FB peripheral base pointers */ +#define FB_BASES { FB } + +/* ---------------------------------------------------------------------------- + -- FB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FB_Register_Accessor_Macros FB - Register accessor macros + * @{ + */ + + +/* FB - Register instance definitions */ +/* FB */ +#define FB_CSAR0 FB_CSAR_REG(FB,0) +#define FB_CSMR0 FB_CSMR_REG(FB,0) +#define FB_CSCR0 FB_CSCR_REG(FB,0) +#define FB_CSAR1 FB_CSAR_REG(FB,1) +#define FB_CSMR1 FB_CSMR_REG(FB,1) +#define FB_CSCR1 FB_CSCR_REG(FB,1) +#define FB_CSAR2 FB_CSAR_REG(FB,2) +#define FB_CSMR2 FB_CSMR_REG(FB,2) +#define FB_CSCR2 FB_CSCR_REG(FB,2) +#define FB_CSAR3 FB_CSAR_REG(FB,3) +#define FB_CSMR3 FB_CSMR_REG(FB,3) +#define FB_CSCR3 FB_CSCR_REG(FB,3) +#define FB_CSAR4 FB_CSAR_REG(FB,4) +#define FB_CSMR4 FB_CSMR_REG(FB,4) +#define FB_CSCR4 FB_CSCR_REG(FB,4) +#define FB_CSAR5 FB_CSAR_REG(FB,5) +#define FB_CSMR5 FB_CSMR_REG(FB,5) +#define FB_CSCR5 FB_CSCR_REG(FB,5) +#define FB_CSPMCR FB_CSPMCR_REG(FB) + +/* FB - Register array accessors */ +#define FB_CSAR(index) FB_CSAR_REG(FB,index) +#define FB_CSMR(index) FB_CSMR_REG(FB,index) +#define FB_CSCR(index) FB_CSCR_REG(FB,index) + +/*! + * @} + */ /* end of group FB_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group FB_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- FMC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FMC_Peripheral_Access_Layer FMC Peripheral Access Layer + * @{ + */ + +/** FMC - Register Layout Typedef */ +typedef struct { + __IO uint32_t PFAPR; /**< Flash Access Protection Register, offset: 0x0 */ + __IO uint32_t PFB0CR; /**< Flash Bank 0 Control Register, offset: 0x4 */ + __IO uint32_t PFB1CR; /**< Flash Bank 1 Control Register, offset: 0x8 */ + uint8_t RESERVED_0[244]; + __IO uint32_t TAGVDW0S[4]; /**< Cache Tag Storage, array offset: 0x100, array step: 0x4 */ + __IO uint32_t TAGVDW1S[4]; /**< Cache Tag Storage, array offset: 0x110, array step: 0x4 */ + __IO uint32_t TAGVDW2S[4]; /**< Cache Tag Storage, array offset: 0x120, array step: 0x4 */ + __IO uint32_t TAGVDW3S[4]; /**< Cache Tag Storage, array offset: 0x130, array step: 0x4 */ + uint8_t RESERVED_1[192]; + struct { /* offset: 0x200, array step: index*0x20, index2*0x8 */ + __IO uint32_t DATA_U; /**< Cache Data Storage (upper word), array offset: 0x200, array step: index*0x20, index2*0x8 */ + __IO uint32_t DATA_L; /**< Cache Data Storage (lower word), array offset: 0x204, array step: index*0x20, index2*0x8 */ + } SET[4][4]; +} FMC_Type, *FMC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- FMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FMC_Register_Accessor_Macros FMC - Register accessor macros + * @{ + */ + + +/* FMC - Register accessors */ +#define FMC_PFAPR_REG(base) ((base)->PFAPR) +#define FMC_PFB0CR_REG(base) ((base)->PFB0CR) +#define FMC_PFB1CR_REG(base) ((base)->PFB1CR) +#define FMC_TAGVDW0S_REG(base,index) ((base)->TAGVDW0S[index]) +#define FMC_TAGVDW1S_REG(base,index) ((base)->TAGVDW1S[index]) +#define FMC_TAGVDW2S_REG(base,index) ((base)->TAGVDW2S[index]) +#define FMC_TAGVDW3S_REG(base,index) ((base)->TAGVDW3S[index]) +#define FMC_DATA_U_REG(base,index,index2) ((base)->SET[index][index2].DATA_U) +#define FMC_DATA_L_REG(base,index,index2) ((base)->SET[index][index2].DATA_L) + +/*! + * @} + */ /* end of group FMC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- FMC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FMC_Register_Masks FMC Register Masks + * @{ + */ + +/* PFAPR Bit Fields */ +#define FMC_PFAPR_M0AP_MASK 0x3u +#define FMC_PFAPR_M0AP_SHIFT 0 +#define FMC_PFAPR_M0AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M0AP_SHIFT))&FMC_PFAPR_M0AP_MASK) +#define FMC_PFAPR_M1AP_MASK 0xCu +#define FMC_PFAPR_M1AP_SHIFT 2 +#define FMC_PFAPR_M1AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M1AP_SHIFT))&FMC_PFAPR_M1AP_MASK) +#define FMC_PFAPR_M2AP_MASK 0x30u +#define FMC_PFAPR_M2AP_SHIFT 4 +#define FMC_PFAPR_M2AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M2AP_SHIFT))&FMC_PFAPR_M2AP_MASK) +#define FMC_PFAPR_M3AP_MASK 0xC0u +#define FMC_PFAPR_M3AP_SHIFT 6 +#define FMC_PFAPR_M3AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M3AP_SHIFT))&FMC_PFAPR_M3AP_MASK) +#define FMC_PFAPR_M4AP_MASK 0x300u +#define FMC_PFAPR_M4AP_SHIFT 8 +#define FMC_PFAPR_M4AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M4AP_SHIFT))&FMC_PFAPR_M4AP_MASK) +#define FMC_PFAPR_M5AP_MASK 0xC00u +#define FMC_PFAPR_M5AP_SHIFT 10 +#define FMC_PFAPR_M5AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M5AP_SHIFT))&FMC_PFAPR_M5AP_MASK) +#define FMC_PFAPR_M6AP_MASK 0x3000u +#define FMC_PFAPR_M6AP_SHIFT 12 +#define FMC_PFAPR_M6AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M6AP_SHIFT))&FMC_PFAPR_M6AP_MASK) +#define FMC_PFAPR_M7AP_MASK 0xC000u +#define FMC_PFAPR_M7AP_SHIFT 14 +#define FMC_PFAPR_M7AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M7AP_SHIFT))&FMC_PFAPR_M7AP_MASK) +#define FMC_PFAPR_M0PFD_MASK 0x10000u +#define FMC_PFAPR_M0PFD_SHIFT 16 +#define FMC_PFAPR_M1PFD_MASK 0x20000u +#define FMC_PFAPR_M1PFD_SHIFT 17 +#define FMC_PFAPR_M2PFD_MASK 0x40000u +#define FMC_PFAPR_M2PFD_SHIFT 18 +#define FMC_PFAPR_M3PFD_MASK 0x80000u +#define FMC_PFAPR_M3PFD_SHIFT 19 +#define FMC_PFAPR_M4PFD_MASK 0x100000u +#define FMC_PFAPR_M4PFD_SHIFT 20 +#define FMC_PFAPR_M5PFD_MASK 0x200000u +#define FMC_PFAPR_M5PFD_SHIFT 21 +#define FMC_PFAPR_M6PFD_MASK 0x400000u +#define FMC_PFAPR_M6PFD_SHIFT 22 +#define FMC_PFAPR_M7PFD_MASK 0x800000u +#define FMC_PFAPR_M7PFD_SHIFT 23 +/* PFB0CR Bit Fields */ +#define FMC_PFB0CR_B0SEBE_MASK 0x1u +#define FMC_PFB0CR_B0SEBE_SHIFT 0 +#define FMC_PFB0CR_B0IPE_MASK 0x2u +#define FMC_PFB0CR_B0IPE_SHIFT 1 +#define FMC_PFB0CR_B0DPE_MASK 0x4u +#define FMC_PFB0CR_B0DPE_SHIFT 2 +#define FMC_PFB0CR_B0ICE_MASK 0x8u +#define FMC_PFB0CR_B0ICE_SHIFT 3 +#define FMC_PFB0CR_B0DCE_MASK 0x10u +#define FMC_PFB0CR_B0DCE_SHIFT 4 +#define FMC_PFB0CR_CRC_MASK 0xE0u +#define FMC_PFB0CR_CRC_SHIFT 5 +#define FMC_PFB0CR_CRC(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_CRC_SHIFT))&FMC_PFB0CR_CRC_MASK) +#define FMC_PFB0CR_B0MW_MASK 0x60000u +#define FMC_PFB0CR_B0MW_SHIFT 17 +#define FMC_PFB0CR_B0MW(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_B0MW_SHIFT))&FMC_PFB0CR_B0MW_MASK) +#define FMC_PFB0CR_S_B_INV_MASK 0x80000u +#define FMC_PFB0CR_S_B_INV_SHIFT 19 +#define FMC_PFB0CR_CINV_WAY_MASK 0xF00000u +#define FMC_PFB0CR_CINV_WAY_SHIFT 20 +#define FMC_PFB0CR_CINV_WAY(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_CINV_WAY_SHIFT))&FMC_PFB0CR_CINV_WAY_MASK) +#define FMC_PFB0CR_CLCK_WAY_MASK 0xF000000u +#define FMC_PFB0CR_CLCK_WAY_SHIFT 24 +#define FMC_PFB0CR_CLCK_WAY(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_CLCK_WAY_SHIFT))&FMC_PFB0CR_CLCK_WAY_MASK) +#define FMC_PFB0CR_B0RWSC_MASK 0xF0000000u +#define FMC_PFB0CR_B0RWSC_SHIFT 28 +#define FMC_PFB0CR_B0RWSC(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_B0RWSC_SHIFT))&FMC_PFB0CR_B0RWSC_MASK) +/* PFB1CR Bit Fields */ +#define FMC_PFB1CR_B1SEBE_MASK 0x1u +#define FMC_PFB1CR_B1SEBE_SHIFT 0 +#define FMC_PFB1CR_B1IPE_MASK 0x2u +#define FMC_PFB1CR_B1IPE_SHIFT 1 +#define FMC_PFB1CR_B1DPE_MASK 0x4u +#define FMC_PFB1CR_B1DPE_SHIFT 2 +#define FMC_PFB1CR_B1ICE_MASK 0x8u +#define FMC_PFB1CR_B1ICE_SHIFT 3 +#define FMC_PFB1CR_B1DCE_MASK 0x10u +#define FMC_PFB1CR_B1DCE_SHIFT 4 +#define FMC_PFB1CR_B1MW_MASK 0x60000u +#define FMC_PFB1CR_B1MW_SHIFT 17 +#define FMC_PFB1CR_B1MW(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB1CR_B1MW_SHIFT))&FMC_PFB1CR_B1MW_MASK) +#define FMC_PFB1CR_B1RWSC_MASK 0xF0000000u +#define FMC_PFB1CR_B1RWSC_SHIFT 28 +#define FMC_PFB1CR_B1RWSC(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB1CR_B1RWSC_SHIFT))&FMC_PFB1CR_B1RWSC_MASK) +/* TAGVDW0S Bit Fields */ +#define FMC_TAGVDW0S_valid_MASK 0x1u +#define FMC_TAGVDW0S_valid_SHIFT 0 +#define FMC_TAGVDW0S_tag_MASK 0x7FFE0u +#define FMC_TAGVDW0S_tag_SHIFT 5 +#define FMC_TAGVDW0S_tag(x) (((uint32_t)(((uint32_t)(x))<<FMC_TAGVDW0S_tag_SHIFT))&FMC_TAGVDW0S_tag_MASK) +/* TAGVDW1S Bit Fields */ +#define FMC_TAGVDW1S_valid_MASK 0x1u +#define FMC_TAGVDW1S_valid_SHIFT 0 +#define FMC_TAGVDW1S_tag_MASK 0x7FFE0u +#define FMC_TAGVDW1S_tag_SHIFT 5 +#define FMC_TAGVDW1S_tag(x) (((uint32_t)(((uint32_t)(x))<<FMC_TAGVDW1S_tag_SHIFT))&FMC_TAGVDW1S_tag_MASK) +/* TAGVDW2S Bit Fields */ +#define FMC_TAGVDW2S_valid_MASK 0x1u +#define FMC_TAGVDW2S_valid_SHIFT 0 +#define FMC_TAGVDW2S_tag_MASK 0x7FFE0u +#define FMC_TAGVDW2S_tag_SHIFT 5 +#define FMC_TAGVDW2S_tag(x) (((uint32_t)(((uint32_t)(x))<<FMC_TAGVDW2S_tag_SHIFT))&FMC_TAGVDW2S_tag_MASK) +/* TAGVDW3S Bit Fields */ +#define FMC_TAGVDW3S_valid_MASK 0x1u +#define FMC_TAGVDW3S_valid_SHIFT 0 +#define FMC_TAGVDW3S_tag_MASK 0x7FFE0u +#define FMC_TAGVDW3S_tag_SHIFT 5 +#define FMC_TAGVDW3S_tag(x) (((uint32_t)(((uint32_t)(x))<<FMC_TAGVDW3S_tag_SHIFT))&FMC_TAGVDW3S_tag_MASK) +/* DATA_U Bit Fields */ +#define FMC_DATA_U_data_MASK 0xFFFFFFFFu +#define FMC_DATA_U_data_SHIFT 0 +#define FMC_DATA_U_data(x) (((uint32_t)(((uint32_t)(x))<<FMC_DATA_U_data_SHIFT))&FMC_DATA_U_data_MASK) +/* DATA_L Bit Fields */ +#define FMC_DATA_L_data_MASK 0xFFFFFFFFu +#define FMC_DATA_L_data_SHIFT 0 +#define FMC_DATA_L_data(x) (((uint32_t)(((uint32_t)(x))<<FMC_DATA_L_data_SHIFT))&FMC_DATA_L_data_MASK) + +/*! + * @} + */ /* end of group FMC_Register_Masks */ + + +/* FMC - Peripheral instance base addresses */ +/** Peripheral FMC base address */ +#define FMC_BASE (0x4001F000u) +/** Peripheral FMC base pointer */ +#define FMC ((FMC_Type *)FMC_BASE) +#define FMC_BASE_PTR (FMC) +/** Array initializer of FMC peripheral base pointers */ +#define FMC_BASES { FMC } + +/* ---------------------------------------------------------------------------- + -- FMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FMC_Register_Accessor_Macros FMC - Register accessor macros + * @{ + */ + + +/* FMC - Register instance definitions */ +/* FMC */ +#define FMC_PFAPR FMC_PFAPR_REG(FMC) +#define FMC_PFB0CR FMC_PFB0CR_REG(FMC) +#define FMC_PFB1CR FMC_PFB1CR_REG(FMC) +#define FMC_TAGVDW0S0 FMC_TAGVDW0S_REG(FMC,0) +#define FMC_TAGVDW0S1 FMC_TAGVDW0S_REG(FMC,1) +#define FMC_TAGVDW0S2 FMC_TAGVDW0S_REG(FMC,2) +#define FMC_TAGVDW0S3 FMC_TAGVDW0S_REG(FMC,3) +#define FMC_TAGVDW1S0 FMC_TAGVDW1S_REG(FMC,0) +#define FMC_TAGVDW1S1 FMC_TAGVDW1S_REG(FMC,1) +#define FMC_TAGVDW1S2 FMC_TAGVDW1S_REG(FMC,2) +#define FMC_TAGVDW1S3 FMC_TAGVDW1S_REG(FMC,3) +#define FMC_TAGVDW2S0 FMC_TAGVDW2S_REG(FMC,0) +#define FMC_TAGVDW2S1 FMC_TAGVDW2S_REG(FMC,1) +#define FMC_TAGVDW2S2 FMC_TAGVDW2S_REG(FMC,2) +#define FMC_TAGVDW2S3 FMC_TAGVDW2S_REG(FMC,3) +#define FMC_TAGVDW3S0 FMC_TAGVDW3S_REG(FMC,0) +#define FMC_TAGVDW3S1 FMC_TAGVDW3S_REG(FMC,1) +#define FMC_TAGVDW3S2 FMC_TAGVDW3S_REG(FMC,2) +#define FMC_TAGVDW3S3 FMC_TAGVDW3S_REG(FMC,3) +#define FMC_DATAW0S0U FMC_DATA_U_REG(FMC,0,0) +#define FMC_DATAW0S0L FMC_DATA_L_REG(FMC,0,0) +#define FMC_DATAW0S1U FMC_DATA_U_REG(FMC,0,1) +#define FMC_DATAW0S1L FMC_DATA_L_REG(FMC,0,1) +#define FMC_DATAW0S2U FMC_DATA_U_REG(FMC,0,2) +#define FMC_DATAW0S2L FMC_DATA_L_REG(FMC,0,2) +#define FMC_DATAW0S3U FMC_DATA_U_REG(FMC,0,3) +#define FMC_DATAW0S3L FMC_DATA_L_REG(FMC,0,3) +#define FMC_DATAW1S0U FMC_DATA_U_REG(FMC,1,0) +#define FMC_DATAW1S0L FMC_DATA_L_REG(FMC,1,0) +#define FMC_DATAW1S1U FMC_DATA_U_REG(FMC,1,1) +#define FMC_DATAW1S1L FMC_DATA_L_REG(FMC,1,1) +#define FMC_DATAW1S2U FMC_DATA_U_REG(FMC,1,2) +#define FMC_DATAW1S2L FMC_DATA_L_REG(FMC,1,2) +#define FMC_DATAW1S3U FMC_DATA_U_REG(FMC,1,3) +#define FMC_DATAW1S3L FMC_DATA_L_REG(FMC,1,3) +#define FMC_DATAW2S0U FMC_DATA_U_REG(FMC,2,0) +#define FMC_DATAW2S0L FMC_DATA_L_REG(FMC,2,0) +#define FMC_DATAW2S1U FMC_DATA_U_REG(FMC,2,1) +#define FMC_DATAW2S1L FMC_DATA_L_REG(FMC,2,1) +#define FMC_DATAW2S2U FMC_DATA_U_REG(FMC,2,2) +#define FMC_DATAW2S2L FMC_DATA_L_REG(FMC,2,2) +#define FMC_DATAW2S3U FMC_DATA_U_REG(FMC,2,3) +#define FMC_DATAW2S3L FMC_DATA_L_REG(FMC,2,3) +#define FMC_DATAW3S0U FMC_DATA_U_REG(FMC,3,0) +#define FMC_DATAW3S0L FMC_DATA_L_REG(FMC,3,0) +#define FMC_DATAW3S1U FMC_DATA_U_REG(FMC,3,1) +#define FMC_DATAW3S1L FMC_DATA_L_REG(FMC,3,1) +#define FMC_DATAW3S2U FMC_DATA_U_REG(FMC,3,2) +#define FMC_DATAW3S2L FMC_DATA_L_REG(FMC,3,2) +#define FMC_DATAW3S3U FMC_DATA_U_REG(FMC,3,3) +#define FMC_DATAW3S3L FMC_DATA_L_REG(FMC,3,3) + +/* FMC - Register array accessors */ +#define FMC_TAGVDW0S(index) FMC_TAGVDW0S_REG(FMC,index) +#define FMC_TAGVDW1S(index) FMC_TAGVDW1S_REG(FMC,index) +#define FMC_TAGVDW2S(index) FMC_TAGVDW2S_REG(FMC,index) +#define FMC_TAGVDW3S(index) FMC_TAGVDW3S_REG(FMC,index) +#define FMC_DATA_U(index,index2) FMC_DATA_U_REG(FMC,index,index2) +#define FMC_DATA_L(index,index2) FMC_DATA_L_REG(FMC,index,index2) + +/*! + * @} + */ /* end of group FMC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group FMC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- FTFE Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTFE_Peripheral_Access_Layer FTFE Peripheral Access Layer + * @{ + */ + +/** FTFE - Register Layout Typedef */ +typedef struct { + __IO uint8_t FSTAT; /**< Flash Status Register, offset: 0x0 */ + __IO uint8_t FCNFG; /**< Flash Configuration Register, offset: 0x1 */ + __I uint8_t FSEC; /**< Flash Security Register, offset: 0x2 */ + __I uint8_t FOPT; /**< Flash Option Register, offset: 0x3 */ + __IO uint8_t FCCOB3; /**< Flash Common Command Object Registers, offset: 0x4 */ + __IO uint8_t FCCOB2; /**< Flash Common Command Object Registers, offset: 0x5 */ + __IO uint8_t FCCOB1; /**< Flash Common Command Object Registers, offset: 0x6 */ + __IO uint8_t FCCOB0; /**< Flash Common Command Object Registers, offset: 0x7 */ + __IO uint8_t FCCOB7; /**< Flash Common Command Object Registers, offset: 0x8 */ + __IO uint8_t FCCOB6; /**< Flash Common Command Object Registers, offset: 0x9 */ + __IO uint8_t FCCOB5; /**< Flash Common Command Object Registers, offset: 0xA */ + __IO uint8_t FCCOB4; /**< Flash Common Command Object Registers, offset: 0xB */ + __IO uint8_t FCCOBB; /**< Flash Common Command Object Registers, offset: 0xC */ + __IO uint8_t FCCOBA; /**< Flash Common Command Object Registers, offset: 0xD */ + __IO uint8_t FCCOB9; /**< Flash Common Command Object Registers, offset: 0xE */ + __IO uint8_t FCCOB8; /**< Flash Common Command Object Registers, offset: 0xF */ + __IO uint8_t FPROT3; /**< Program Flash Protection Registers, offset: 0x10 */ + __IO uint8_t FPROT2; /**< Program Flash Protection Registers, offset: 0x11 */ + __IO uint8_t FPROT1; /**< Program Flash Protection Registers, offset: 0x12 */ + __IO uint8_t FPROT0; /**< Program Flash Protection Registers, offset: 0x13 */ + uint8_t RESERVED_0[2]; + __IO uint8_t FEPROT; /**< EEPROM Protection Register, offset: 0x16 */ + __IO uint8_t FDPROT; /**< Data Flash Protection Register, offset: 0x17 */ +} FTFE_Type, *FTFE_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- FTFE - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTFE_Register_Accessor_Macros FTFE - Register accessor macros + * @{ + */ + + +/* FTFE - Register accessors */ +#define FTFE_FSTAT_REG(base) ((base)->FSTAT) +#define FTFE_FCNFG_REG(base) ((base)->FCNFG) +#define FTFE_FSEC_REG(base) ((base)->FSEC) +#define FTFE_FOPT_REG(base) ((base)->FOPT) +#define FTFE_FCCOB3_REG(base) ((base)->FCCOB3) +#define FTFE_FCCOB2_REG(base) ((base)->FCCOB2) +#define FTFE_FCCOB1_REG(base) ((base)->FCCOB1) +#define FTFE_FCCOB0_REG(base) ((base)->FCCOB0) +#define FTFE_FCCOB7_REG(base) ((base)->FCCOB7) +#define FTFE_FCCOB6_REG(base) ((base)->FCCOB6) +#define FTFE_FCCOB5_REG(base) ((base)->FCCOB5) +#define FTFE_FCCOB4_REG(base) ((base)->FCCOB4) +#define FTFE_FCCOBB_REG(base) ((base)->FCCOBB) +#define FTFE_FCCOBA_REG(base) ((base)->FCCOBA) +#define FTFE_FCCOB9_REG(base) ((base)->FCCOB9) +#define FTFE_FCCOB8_REG(base) ((base)->FCCOB8) +#define FTFE_FPROT3_REG(base) ((base)->FPROT3) +#define FTFE_FPROT2_REG(base) ((base)->FPROT2) +#define FTFE_FPROT1_REG(base) ((base)->FPROT1) +#define FTFE_FPROT0_REG(base) ((base)->FPROT0) +#define FTFE_FEPROT_REG(base) ((base)->FEPROT) +#define FTFE_FDPROT_REG(base) ((base)->FDPROT) + +/*! + * @} + */ /* end of group FTFE_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- FTFE Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTFE_Register_Masks FTFE Register Masks + * @{ + */ + +/* FSTAT Bit Fields */ +#define FTFE_FSTAT_MGSTAT0_MASK 0x1u +#define FTFE_FSTAT_MGSTAT0_SHIFT 0 +#define FTFE_FSTAT_FPVIOL_MASK 0x10u +#define FTFE_FSTAT_FPVIOL_SHIFT 4 +#define FTFE_FSTAT_ACCERR_MASK 0x20u +#define FTFE_FSTAT_ACCERR_SHIFT 5 +#define FTFE_FSTAT_RDCOLERR_MASK 0x40u +#define FTFE_FSTAT_RDCOLERR_SHIFT 6 +#define FTFE_FSTAT_CCIF_MASK 0x80u +#define FTFE_FSTAT_CCIF_SHIFT 7 +/* FCNFG Bit Fields */ +#define FTFE_FCNFG_EEERDY_MASK 0x1u +#define FTFE_FCNFG_EEERDY_SHIFT 0 +#define FTFE_FCNFG_RAMRDY_MASK 0x2u +#define FTFE_FCNFG_RAMRDY_SHIFT 1 +#define FTFE_FCNFG_PFLSH_MASK 0x4u +#define FTFE_FCNFG_PFLSH_SHIFT 2 +#define FTFE_FCNFG_SWAP_MASK 0x8u +#define FTFE_FCNFG_SWAP_SHIFT 3 +#define FTFE_FCNFG_ERSSUSP_MASK 0x10u +#define FTFE_FCNFG_ERSSUSP_SHIFT 4 +#define FTFE_FCNFG_ERSAREQ_MASK 0x20u +#define FTFE_FCNFG_ERSAREQ_SHIFT 5 +#define FTFE_FCNFG_RDCOLLIE_MASK 0x40u +#define FTFE_FCNFG_RDCOLLIE_SHIFT 6 +#define FTFE_FCNFG_CCIE_MASK 0x80u +#define FTFE_FCNFG_CCIE_SHIFT 7 +/* FSEC Bit Fields */ +#define FTFE_FSEC_SEC_MASK 0x3u +#define FTFE_FSEC_SEC_SHIFT 0 +#define FTFE_FSEC_SEC(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FSEC_SEC_SHIFT))&FTFE_FSEC_SEC_MASK) +#define FTFE_FSEC_FSLACC_MASK 0xCu +#define FTFE_FSEC_FSLACC_SHIFT 2 +#define FTFE_FSEC_FSLACC(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FSEC_FSLACC_SHIFT))&FTFE_FSEC_FSLACC_MASK) +#define FTFE_FSEC_MEEN_MASK 0x30u +#define FTFE_FSEC_MEEN_SHIFT 4 +#define FTFE_FSEC_MEEN(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FSEC_MEEN_SHIFT))&FTFE_FSEC_MEEN_MASK) +#define FTFE_FSEC_KEYEN_MASK 0xC0u +#define FTFE_FSEC_KEYEN_SHIFT 6 +#define FTFE_FSEC_KEYEN(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FSEC_KEYEN_SHIFT))&FTFE_FSEC_KEYEN_MASK) +/* FOPT Bit Fields */ +#define FTFE_FOPT_OPT_MASK 0xFFu +#define FTFE_FOPT_OPT_SHIFT 0 +#define FTFE_FOPT_OPT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FOPT_OPT_SHIFT))&FTFE_FOPT_OPT_MASK) +/* FCCOB3 Bit Fields */ +#define FTFE_FCCOB3_CCOBn_MASK 0xFFu +#define FTFE_FCCOB3_CCOBn_SHIFT 0 +#define FTFE_FCCOB3_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB3_CCOBn_SHIFT))&FTFE_FCCOB3_CCOBn_MASK) +/* FCCOB2 Bit Fields */ +#define FTFE_FCCOB2_CCOBn_MASK 0xFFu +#define FTFE_FCCOB2_CCOBn_SHIFT 0 +#define FTFE_FCCOB2_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB2_CCOBn_SHIFT))&FTFE_FCCOB2_CCOBn_MASK) +/* FCCOB1 Bit Fields */ +#define FTFE_FCCOB1_CCOBn_MASK 0xFFu +#define FTFE_FCCOB1_CCOBn_SHIFT 0 +#define FTFE_FCCOB1_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB1_CCOBn_SHIFT))&FTFE_FCCOB1_CCOBn_MASK) +/* FCCOB0 Bit Fields */ +#define FTFE_FCCOB0_CCOBn_MASK 0xFFu +#define FTFE_FCCOB0_CCOBn_SHIFT 0 +#define FTFE_FCCOB0_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB0_CCOBn_SHIFT))&FTFE_FCCOB0_CCOBn_MASK) +/* FCCOB7 Bit Fields */ +#define FTFE_FCCOB7_CCOBn_MASK 0xFFu +#define FTFE_FCCOB7_CCOBn_SHIFT 0 +#define FTFE_FCCOB7_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB7_CCOBn_SHIFT))&FTFE_FCCOB7_CCOBn_MASK) +/* FCCOB6 Bit Fields */ +#define FTFE_FCCOB6_CCOBn_MASK 0xFFu +#define FTFE_FCCOB6_CCOBn_SHIFT 0 +#define FTFE_FCCOB6_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB6_CCOBn_SHIFT))&FTFE_FCCOB6_CCOBn_MASK) +/* FCCOB5 Bit Fields */ +#define FTFE_FCCOB5_CCOBn_MASK 0xFFu +#define FTFE_FCCOB5_CCOBn_SHIFT 0 +#define FTFE_FCCOB5_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB5_CCOBn_SHIFT))&FTFE_FCCOB5_CCOBn_MASK) +/* FCCOB4 Bit Fields */ +#define FTFE_FCCOB4_CCOBn_MASK 0xFFu +#define FTFE_FCCOB4_CCOBn_SHIFT 0 +#define FTFE_FCCOB4_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB4_CCOBn_SHIFT))&FTFE_FCCOB4_CCOBn_MASK) +/* FCCOBB Bit Fields */ +#define FTFE_FCCOBB_CCOBn_MASK 0xFFu +#define FTFE_FCCOBB_CCOBn_SHIFT 0 +#define FTFE_FCCOBB_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOBB_CCOBn_SHIFT))&FTFE_FCCOBB_CCOBn_MASK) +/* FCCOBA Bit Fields */ +#define FTFE_FCCOBA_CCOBn_MASK 0xFFu +#define FTFE_FCCOBA_CCOBn_SHIFT 0 +#define FTFE_FCCOBA_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOBA_CCOBn_SHIFT))&FTFE_FCCOBA_CCOBn_MASK) +/* FCCOB9 Bit Fields */ +#define FTFE_FCCOB9_CCOBn_MASK 0xFFu +#define FTFE_FCCOB9_CCOBn_SHIFT 0 +#define FTFE_FCCOB9_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB9_CCOBn_SHIFT))&FTFE_FCCOB9_CCOBn_MASK) +/* FCCOB8 Bit Fields */ +#define FTFE_FCCOB8_CCOBn_MASK 0xFFu +#define FTFE_FCCOB8_CCOBn_SHIFT 0 +#define FTFE_FCCOB8_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB8_CCOBn_SHIFT))&FTFE_FCCOB8_CCOBn_MASK) +/* FPROT3 Bit Fields */ +#define FTFE_FPROT3_PROT_MASK 0xFFu +#define FTFE_FPROT3_PROT_SHIFT 0 +#define FTFE_FPROT3_PROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FPROT3_PROT_SHIFT))&FTFE_FPROT3_PROT_MASK) +/* FPROT2 Bit Fields */ +#define FTFE_FPROT2_PROT_MASK 0xFFu +#define FTFE_FPROT2_PROT_SHIFT 0 +#define FTFE_FPROT2_PROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FPROT2_PROT_SHIFT))&FTFE_FPROT2_PROT_MASK) +/* FPROT1 Bit Fields */ +#define FTFE_FPROT1_PROT_MASK 0xFFu +#define FTFE_FPROT1_PROT_SHIFT 0 +#define FTFE_FPROT1_PROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FPROT1_PROT_SHIFT))&FTFE_FPROT1_PROT_MASK) +/* FPROT0 Bit Fields */ +#define FTFE_FPROT0_PROT_MASK 0xFFu +#define FTFE_FPROT0_PROT_SHIFT 0 +#define FTFE_FPROT0_PROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FPROT0_PROT_SHIFT))&FTFE_FPROT0_PROT_MASK) +/* FEPROT Bit Fields */ +#define FTFE_FEPROT_EPROT_MASK 0xFFu +#define FTFE_FEPROT_EPROT_SHIFT 0 +#define FTFE_FEPROT_EPROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FEPROT_EPROT_SHIFT))&FTFE_FEPROT_EPROT_MASK) +/* FDPROT Bit Fields */ +#define FTFE_FDPROT_DPROT_MASK 0xFFu +#define FTFE_FDPROT_DPROT_SHIFT 0 +#define FTFE_FDPROT_DPROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FDPROT_DPROT_SHIFT))&FTFE_FDPROT_DPROT_MASK) + +/*! + * @} + */ /* end of group FTFE_Register_Masks */ + + +/* FTFE - Peripheral instance base addresses */ +/** Peripheral FTFE base address */ +#define FTFE_BASE (0x40020000u) +/** Peripheral FTFE base pointer */ +#define FTFE ((FTFE_Type *)FTFE_BASE) +#define FTFE_BASE_PTR (FTFE) +/** Array initializer of FTFE peripheral base pointers */ +#define FTFE_BASES { FTFE } + +/* ---------------------------------------------------------------------------- + -- FTFE - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTFE_Register_Accessor_Macros FTFE - Register accessor macros + * @{ + */ + + +/* FTFE - Register instance definitions */ +/* FTFE */ +#define FTFE_FSTAT FTFE_FSTAT_REG(FTFE) +#define FTFE_FCNFG FTFE_FCNFG_REG(FTFE) +#define FTFE_FSEC FTFE_FSEC_REG(FTFE) +#define FTFE_FOPT FTFE_FOPT_REG(FTFE) +#define FTFE_FCCOB3 FTFE_FCCOB3_REG(FTFE) +#define FTFE_FCCOB2 FTFE_FCCOB2_REG(FTFE) +#define FTFE_FCCOB1 FTFE_FCCOB1_REG(FTFE) +#define FTFE_FCCOB0 FTFE_FCCOB0_REG(FTFE) +#define FTFE_FCCOB7 FTFE_FCCOB7_REG(FTFE) +#define FTFE_FCCOB6 FTFE_FCCOB6_REG(FTFE) +#define FTFE_FCCOB5 FTFE_FCCOB5_REG(FTFE) +#define FTFE_FCCOB4 FTFE_FCCOB4_REG(FTFE) +#define FTFE_FCCOBB FTFE_FCCOBB_REG(FTFE) +#define FTFE_FCCOBA FTFE_FCCOBA_REG(FTFE) +#define FTFE_FCCOB9 FTFE_FCCOB9_REG(FTFE) +#define FTFE_FCCOB8 FTFE_FCCOB8_REG(FTFE) +#define FTFE_FPROT3 FTFE_FPROT3_REG(FTFE) +#define FTFE_FPROT2 FTFE_FPROT2_REG(FTFE) +#define FTFE_FPROT1 FTFE_FPROT1_REG(FTFE) +#define FTFE_FPROT0 FTFE_FPROT0_REG(FTFE) +#define FTFE_FEPROT FTFE_FEPROT_REG(FTFE) +#define FTFE_FDPROT FTFE_FDPROT_REG(FTFE) + +/*! + * @} + */ /* end of group FTFE_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group FTFE_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- FTM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTM_Peripheral_Access_Layer FTM Peripheral Access Layer + * @{ + */ + +/** FTM - Register Layout Typedef */ +typedef struct { + __IO uint32_t SC; /**< Status And Control, offset: 0x0 */ + __IO uint32_t CNT; /**< Counter, offset: 0x4 */ + __IO uint32_t MOD; /**< Modulo, offset: 0x8 */ + struct { /* offset: 0xC, array step: 0x8 */ + __IO uint32_t CnSC; /**< Channel (n) Status And Control, array offset: 0xC, array step: 0x8 */ + __IO uint32_t CnV; /**< Channel (n) Value, array offset: 0x10, array step: 0x8 */ + } CONTROLS[8]; + __IO uint32_t CNTIN; /**< Counter Initial Value, offset: 0x4C */ + __IO uint32_t STATUS; /**< Capture And Compare Status, offset: 0x50 */ + __IO uint32_t MODE; /**< Features Mode Selection, offset: 0x54 */ + __IO uint32_t SYNC; /**< Synchronization, offset: 0x58 */ + __IO uint32_t OUTINIT; /**< Initial State For Channels Output, offset: 0x5C */ + __IO uint32_t OUTMASK; /**< Output Mask, offset: 0x60 */ + __IO uint32_t COMBINE; /**< Function For Linked Channels, offset: 0x64 */ + __IO uint32_t DEADTIME; /**< Deadtime Insertion Control, offset: 0x68 */ + __IO uint32_t EXTTRIG; /**< FTM External Trigger, offset: 0x6C */ + __IO uint32_t POL; /**< Channels Polarity, offset: 0x70 */ + __IO uint32_t FMS; /**< Fault Mode Status, offset: 0x74 */ + __IO uint32_t FILTER; /**< Input Capture Filter Control, offset: 0x78 */ + __IO uint32_t FLTCTRL; /**< Fault Control, offset: 0x7C */ + __IO uint32_t QDCTRL; /**< Quadrature Decoder Control And Status, offset: 0x80 */ + __IO uint32_t CONF; /**< Configuration, offset: 0x84 */ + __IO uint32_t FLTPOL; /**< FTM Fault Input Polarity, offset: 0x88 */ + __IO uint32_t SYNCONF; /**< Synchronization Configuration, offset: 0x8C */ + __IO uint32_t INVCTRL; /**< FTM Inverting Control, offset: 0x90 */ + __IO uint32_t SWOCTRL; /**< FTM Software Output Control, offset: 0x94 */ + __IO uint32_t PWMLOAD; /**< FTM PWM Load, offset: 0x98 */ +} FTM_Type, *FTM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- FTM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTM_Register_Accessor_Macros FTM - Register accessor macros + * @{ + */ + + +/* FTM - Register accessors */ +#define FTM_SC_REG(base) ((base)->SC) +#define FTM_CNT_REG(base) ((base)->CNT) +#define FTM_MOD_REG(base) ((base)->MOD) +#define FTM_CnSC_REG(base,index) ((base)->CONTROLS[index].CnSC) +#define FTM_CnV_REG(base,index) ((base)->CONTROLS[index].CnV) +#define FTM_CNTIN_REG(base) ((base)->CNTIN) +#define FTM_STATUS_REG(base) ((base)->STATUS) +#define FTM_MODE_REG(base) ((base)->MODE) +#define FTM_SYNC_REG(base) ((base)->SYNC) +#define FTM_OUTINIT_REG(base) ((base)->OUTINIT) +#define FTM_OUTMASK_REG(base) ((base)->OUTMASK) +#define FTM_COMBINE_REG(base) ((base)->COMBINE) +#define FTM_DEADTIME_REG(base) ((base)->DEADTIME) +#define FTM_EXTTRIG_REG(base) ((base)->EXTTRIG) +#define FTM_POL_REG(base) ((base)->POL) +#define FTM_FMS_REG(base) ((base)->FMS) +#define FTM_FILTER_REG(base) ((base)->FILTER) +#define FTM_FLTCTRL_REG(base) ((base)->FLTCTRL) +#define FTM_QDCTRL_REG(base) ((base)->QDCTRL) +#define FTM_CONF_REG(base) ((base)->CONF) +#define FTM_FLTPOL_REG(base) ((base)->FLTPOL) +#define FTM_SYNCONF_REG(base) ((base)->SYNCONF) +#define FTM_INVCTRL_REG(base) ((base)->INVCTRL) +#define FTM_SWOCTRL_REG(base) ((base)->SWOCTRL) +#define FTM_PWMLOAD_REG(base) ((base)->PWMLOAD) + +/*! + * @} + */ /* end of group FTM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- FTM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTM_Register_Masks FTM Register Masks + * @{ + */ + +/* SC Bit Fields */ +#define FTM_SC_PS_MASK 0x7u +#define FTM_SC_PS_SHIFT 0 +#define FTM_SC_PS(x) (((uint32_t)(((uint32_t)(x))<<FTM_SC_PS_SHIFT))&FTM_SC_PS_MASK) +#define FTM_SC_CLKS_MASK 0x18u +#define FTM_SC_CLKS_SHIFT 3 +#define FTM_SC_CLKS(x) (((uint32_t)(((uint32_t)(x))<<FTM_SC_CLKS_SHIFT))&FTM_SC_CLKS_MASK) +#define FTM_SC_CPWMS_MASK 0x20u +#define FTM_SC_CPWMS_SHIFT 5 +#define FTM_SC_TOIE_MASK 0x40u +#define FTM_SC_TOIE_SHIFT 6 +#define FTM_SC_TOF_MASK 0x80u +#define FTM_SC_TOF_SHIFT 7 +/* CNT Bit Fields */ +#define FTM_CNT_COUNT_MASK 0xFFFFu +#define FTM_CNT_COUNT_SHIFT 0 +#define FTM_CNT_COUNT(x) (((uint32_t)(((uint32_t)(x))<<FTM_CNT_COUNT_SHIFT))&FTM_CNT_COUNT_MASK) +/* MOD Bit Fields */ +#define FTM_MOD_MOD_MASK 0xFFFFu +#define FTM_MOD_MOD_SHIFT 0 +#define FTM_MOD_MOD(x) (((uint32_t)(((uint32_t)(x))<<FTM_MOD_MOD_SHIFT))&FTM_MOD_MOD_MASK) +/* CnSC Bit Fields */ +#define FTM_CnSC_DMA_MASK 0x1u +#define FTM_CnSC_DMA_SHIFT 0 +#define FTM_CnSC_ELSA_MASK 0x4u +#define FTM_CnSC_ELSA_SHIFT 2 +#define FTM_CnSC_ELSB_MASK 0x8u +#define FTM_CnSC_ELSB_SHIFT 3 +#define FTM_CnSC_MSA_MASK 0x10u +#define FTM_CnSC_MSA_SHIFT 4 +#define FTM_CnSC_MSB_MASK 0x20u +#define FTM_CnSC_MSB_SHIFT 5 +#define FTM_CnSC_CHIE_MASK 0x40u +#define FTM_CnSC_CHIE_SHIFT 6 +#define FTM_CnSC_CHF_MASK 0x80u +#define FTM_CnSC_CHF_SHIFT 7 +/* CnV Bit Fields */ +#define FTM_CnV_VAL_MASK 0xFFFFu +#define FTM_CnV_VAL_SHIFT 0 +#define FTM_CnV_VAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_CnV_VAL_SHIFT))&FTM_CnV_VAL_MASK) +/* CNTIN Bit Fields */ +#define FTM_CNTIN_INIT_MASK 0xFFFFu +#define FTM_CNTIN_INIT_SHIFT 0 +#define FTM_CNTIN_INIT(x) (((uint32_t)(((uint32_t)(x))<<FTM_CNTIN_INIT_SHIFT))&FTM_CNTIN_INIT_MASK) +/* STATUS Bit Fields */ +#define FTM_STATUS_CH0F_MASK 0x1u +#define FTM_STATUS_CH0F_SHIFT 0 +#define FTM_STATUS_CH1F_MASK 0x2u +#define FTM_STATUS_CH1F_SHIFT 1 +#define FTM_STATUS_CH2F_MASK 0x4u +#define FTM_STATUS_CH2F_SHIFT 2 +#define FTM_STATUS_CH3F_MASK 0x8u +#define FTM_STATUS_CH3F_SHIFT 3 +#define FTM_STATUS_CH4F_MASK 0x10u +#define FTM_STATUS_CH4F_SHIFT 4 +#define FTM_STATUS_CH5F_MASK 0x20u +#define FTM_STATUS_CH5F_SHIFT 5 +#define FTM_STATUS_CH6F_MASK 0x40u +#define FTM_STATUS_CH6F_SHIFT 6 +#define FTM_STATUS_CH7F_MASK 0x80u +#define FTM_STATUS_CH7F_SHIFT 7 +/* MODE Bit Fields */ +#define FTM_MODE_FTMEN_MASK 0x1u +#define FTM_MODE_FTMEN_SHIFT 0 +#define FTM_MODE_INIT_MASK 0x2u +#define FTM_MODE_INIT_SHIFT 1 +#define FTM_MODE_WPDIS_MASK 0x4u +#define FTM_MODE_WPDIS_SHIFT 2 +#define FTM_MODE_PWMSYNC_MASK 0x8u +#define FTM_MODE_PWMSYNC_SHIFT 3 +#define FTM_MODE_CAPTEST_MASK 0x10u +#define FTM_MODE_CAPTEST_SHIFT 4 +#define FTM_MODE_FAULTM_MASK 0x60u +#define FTM_MODE_FAULTM_SHIFT 5 +#define FTM_MODE_FAULTM(x) (((uint32_t)(((uint32_t)(x))<<FTM_MODE_FAULTM_SHIFT))&FTM_MODE_FAULTM_MASK) +#define FTM_MODE_FAULTIE_MASK 0x80u +#define FTM_MODE_FAULTIE_SHIFT 7 +/* SYNC Bit Fields */ +#define FTM_SYNC_CNTMIN_MASK 0x1u +#define FTM_SYNC_CNTMIN_SHIFT 0 +#define FTM_SYNC_CNTMAX_MASK 0x2u +#define FTM_SYNC_CNTMAX_SHIFT 1 +#define FTM_SYNC_REINIT_MASK 0x4u +#define FTM_SYNC_REINIT_SHIFT 2 +#define FTM_SYNC_SYNCHOM_MASK 0x8u +#define FTM_SYNC_SYNCHOM_SHIFT 3 +#define FTM_SYNC_TRIG0_MASK 0x10u +#define FTM_SYNC_TRIG0_SHIFT 4 +#define FTM_SYNC_TRIG1_MASK 0x20u +#define FTM_SYNC_TRIG1_SHIFT 5 +#define FTM_SYNC_TRIG2_MASK 0x40u +#define FTM_SYNC_TRIG2_SHIFT 6 +#define FTM_SYNC_SWSYNC_MASK 0x80u +#define FTM_SYNC_SWSYNC_SHIFT 7 +/* OUTINIT Bit Fields */ +#define FTM_OUTINIT_CH0OI_MASK 0x1u +#define FTM_OUTINIT_CH0OI_SHIFT 0 +#define FTM_OUTINIT_CH1OI_MASK 0x2u +#define FTM_OUTINIT_CH1OI_SHIFT 1 +#define FTM_OUTINIT_CH2OI_MASK 0x4u +#define FTM_OUTINIT_CH2OI_SHIFT 2 +#define FTM_OUTINIT_CH3OI_MASK 0x8u +#define FTM_OUTINIT_CH3OI_SHIFT 3 +#define FTM_OUTINIT_CH4OI_MASK 0x10u +#define FTM_OUTINIT_CH4OI_SHIFT 4 +#define FTM_OUTINIT_CH5OI_MASK 0x20u +#define FTM_OUTINIT_CH5OI_SHIFT 5 +#define FTM_OUTINIT_CH6OI_MASK 0x40u +#define FTM_OUTINIT_CH6OI_SHIFT 6 +#define FTM_OUTINIT_CH7OI_MASK 0x80u +#define FTM_OUTINIT_CH7OI_SHIFT 7 +/* OUTMASK Bit Fields */ +#define FTM_OUTMASK_CH0OM_MASK 0x1u +#define FTM_OUTMASK_CH0OM_SHIFT 0 +#define FTM_OUTMASK_CH1OM_MASK 0x2u +#define FTM_OUTMASK_CH1OM_SHIFT 1 +#define FTM_OUTMASK_CH2OM_MASK 0x4u +#define FTM_OUTMASK_CH2OM_SHIFT 2 +#define FTM_OUTMASK_CH3OM_MASK 0x8u +#define FTM_OUTMASK_CH3OM_SHIFT 3 +#define FTM_OUTMASK_CH4OM_MASK 0x10u +#define FTM_OUTMASK_CH4OM_SHIFT 4 +#define FTM_OUTMASK_CH5OM_MASK 0x20u +#define FTM_OUTMASK_CH5OM_SHIFT 5 +#define FTM_OUTMASK_CH6OM_MASK 0x40u +#define FTM_OUTMASK_CH6OM_SHIFT 6 +#define FTM_OUTMASK_CH7OM_MASK 0x80u +#define FTM_OUTMASK_CH7OM_SHIFT 7 +/* COMBINE Bit Fields */ +#define FTM_COMBINE_COMBINE0_MASK 0x1u +#define FTM_COMBINE_COMBINE0_SHIFT 0 +#define FTM_COMBINE_COMP0_MASK 0x2u +#define FTM_COMBINE_COMP0_SHIFT 1 +#define FTM_COMBINE_DECAPEN0_MASK 0x4u +#define FTM_COMBINE_DECAPEN0_SHIFT 2 +#define FTM_COMBINE_DECAP0_MASK 0x8u +#define FTM_COMBINE_DECAP0_SHIFT 3 +#define FTM_COMBINE_DTEN0_MASK 0x10u +#define FTM_COMBINE_DTEN0_SHIFT 4 +#define FTM_COMBINE_SYNCEN0_MASK 0x20u +#define FTM_COMBINE_SYNCEN0_SHIFT 5 +#define FTM_COMBINE_FAULTEN0_MASK 0x40u +#define FTM_COMBINE_FAULTEN0_SHIFT 6 +#define FTM_COMBINE_COMBINE1_MASK 0x100u +#define FTM_COMBINE_COMBINE1_SHIFT 8 +#define FTM_COMBINE_COMP1_MASK 0x200u +#define FTM_COMBINE_COMP1_SHIFT 9 +#define FTM_COMBINE_DECAPEN1_MASK 0x400u +#define FTM_COMBINE_DECAPEN1_SHIFT 10 +#define FTM_COMBINE_DECAP1_MASK 0x800u +#define FTM_COMBINE_DECAP1_SHIFT 11 +#define FTM_COMBINE_DTEN1_MASK 0x1000u +#define FTM_COMBINE_DTEN1_SHIFT 12 +#define FTM_COMBINE_SYNCEN1_MASK 0x2000u +#define FTM_COMBINE_SYNCEN1_SHIFT 13 +#define FTM_COMBINE_FAULTEN1_MASK 0x4000u +#define FTM_COMBINE_FAULTEN1_SHIFT 14 +#define FTM_COMBINE_COMBINE2_MASK 0x10000u +#define FTM_COMBINE_COMBINE2_SHIFT 16 +#define FTM_COMBINE_COMP2_MASK 0x20000u +#define FTM_COMBINE_COMP2_SHIFT 17 +#define FTM_COMBINE_DECAPEN2_MASK 0x40000u +#define FTM_COMBINE_DECAPEN2_SHIFT 18 +#define FTM_COMBINE_DECAP2_MASK 0x80000u +#define FTM_COMBINE_DECAP2_SHIFT 19 +#define FTM_COMBINE_DTEN2_MASK 0x100000u +#define FTM_COMBINE_DTEN2_SHIFT 20 +#define FTM_COMBINE_SYNCEN2_MASK 0x200000u +#define FTM_COMBINE_SYNCEN2_SHIFT 21 +#define FTM_COMBINE_FAULTEN2_MASK 0x400000u +#define FTM_COMBINE_FAULTEN2_SHIFT 22 +#define FTM_COMBINE_COMBINE3_MASK 0x1000000u +#define FTM_COMBINE_COMBINE3_SHIFT 24 +#define FTM_COMBINE_COMP3_MASK 0x2000000u +#define FTM_COMBINE_COMP3_SHIFT 25 +#define FTM_COMBINE_DECAPEN3_MASK 0x4000000u +#define FTM_COMBINE_DECAPEN3_SHIFT 26 +#define FTM_COMBINE_DECAP3_MASK 0x8000000u +#define FTM_COMBINE_DECAP3_SHIFT 27 +#define FTM_COMBINE_DTEN3_MASK 0x10000000u +#define FTM_COMBINE_DTEN3_SHIFT 28 +#define FTM_COMBINE_SYNCEN3_MASK 0x20000000u +#define FTM_COMBINE_SYNCEN3_SHIFT 29 +#define FTM_COMBINE_FAULTEN3_MASK 0x40000000u +#define FTM_COMBINE_FAULTEN3_SHIFT 30 +/* DEADTIME Bit Fields */ +#define FTM_DEADTIME_DTVAL_MASK 0x3Fu +#define FTM_DEADTIME_DTVAL_SHIFT 0 +#define FTM_DEADTIME_DTVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_DEADTIME_DTVAL_SHIFT))&FTM_DEADTIME_DTVAL_MASK) +#define FTM_DEADTIME_DTPS_MASK 0xC0u +#define FTM_DEADTIME_DTPS_SHIFT 6 +#define FTM_DEADTIME_DTPS(x) (((uint32_t)(((uint32_t)(x))<<FTM_DEADTIME_DTPS_SHIFT))&FTM_DEADTIME_DTPS_MASK) +/* EXTTRIG Bit Fields */ +#define FTM_EXTTRIG_CH2TRIG_MASK 0x1u +#define FTM_EXTTRIG_CH2TRIG_SHIFT 0 +#define FTM_EXTTRIG_CH3TRIG_MASK 0x2u +#define FTM_EXTTRIG_CH3TRIG_SHIFT 1 +#define FTM_EXTTRIG_CH4TRIG_MASK 0x4u +#define FTM_EXTTRIG_CH4TRIG_SHIFT 2 +#define FTM_EXTTRIG_CH5TRIG_MASK 0x8u +#define FTM_EXTTRIG_CH5TRIG_SHIFT 3 +#define FTM_EXTTRIG_CH0TRIG_MASK 0x10u +#define FTM_EXTTRIG_CH0TRIG_SHIFT 4 +#define FTM_EXTTRIG_CH1TRIG_MASK 0x20u +#define FTM_EXTTRIG_CH1TRIG_SHIFT 5 +#define FTM_EXTTRIG_INITTRIGEN_MASK 0x40u +#define FTM_EXTTRIG_INITTRIGEN_SHIFT 6 +#define FTM_EXTTRIG_TRIGF_MASK 0x80u +#define FTM_EXTTRIG_TRIGF_SHIFT 7 +/* POL Bit Fields */ +#define FTM_POL_POL0_MASK 0x1u +#define FTM_POL_POL0_SHIFT 0 +#define FTM_POL_POL1_MASK 0x2u +#define FTM_POL_POL1_SHIFT 1 +#define FTM_POL_POL2_MASK 0x4u +#define FTM_POL_POL2_SHIFT 2 +#define FTM_POL_POL3_MASK 0x8u +#define FTM_POL_POL3_SHIFT 3 +#define FTM_POL_POL4_MASK 0x10u +#define FTM_POL_POL4_SHIFT 4 +#define FTM_POL_POL5_MASK 0x20u +#define FTM_POL_POL5_SHIFT 5 +#define FTM_POL_POL6_MASK 0x40u +#define FTM_POL_POL6_SHIFT 6 +#define FTM_POL_POL7_MASK 0x80u +#define FTM_POL_POL7_SHIFT 7 +/* FMS Bit Fields */ +#define FTM_FMS_FAULTF0_MASK 0x1u +#define FTM_FMS_FAULTF0_SHIFT 0 +#define FTM_FMS_FAULTF1_MASK 0x2u +#define FTM_FMS_FAULTF1_SHIFT 1 +#define FTM_FMS_FAULTF2_MASK 0x4u +#define FTM_FMS_FAULTF2_SHIFT 2 +#define FTM_FMS_FAULTF3_MASK 0x8u +#define FTM_FMS_FAULTF3_SHIFT 3 +#define FTM_FMS_FAULTIN_MASK 0x20u +#define FTM_FMS_FAULTIN_SHIFT 5 +#define FTM_FMS_WPEN_MASK 0x40u +#define FTM_FMS_WPEN_SHIFT 6 +#define FTM_FMS_FAULTF_MASK 0x80u +#define FTM_FMS_FAULTF_SHIFT 7 +/* FILTER Bit Fields */ +#define FTM_FILTER_CH0FVAL_MASK 0xFu +#define FTM_FILTER_CH0FVAL_SHIFT 0 +#define FTM_FILTER_CH0FVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FILTER_CH0FVAL_SHIFT))&FTM_FILTER_CH0FVAL_MASK) +#define FTM_FILTER_CH1FVAL_MASK 0xF0u +#define FTM_FILTER_CH1FVAL_SHIFT 4 +#define FTM_FILTER_CH1FVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FILTER_CH1FVAL_SHIFT))&FTM_FILTER_CH1FVAL_MASK) +#define FTM_FILTER_CH2FVAL_MASK 0xF00u +#define FTM_FILTER_CH2FVAL_SHIFT 8 +#define FTM_FILTER_CH2FVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FILTER_CH2FVAL_SHIFT))&FTM_FILTER_CH2FVAL_MASK) +#define FTM_FILTER_CH3FVAL_MASK 0xF000u +#define FTM_FILTER_CH3FVAL_SHIFT 12 +#define FTM_FILTER_CH3FVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FILTER_CH3FVAL_SHIFT))&FTM_FILTER_CH3FVAL_MASK) +/* FLTCTRL Bit Fields */ +#define FTM_FLTCTRL_FAULT0EN_MASK 0x1u +#define FTM_FLTCTRL_FAULT0EN_SHIFT 0 +#define FTM_FLTCTRL_FAULT1EN_MASK 0x2u +#define FTM_FLTCTRL_FAULT1EN_SHIFT 1 +#define FTM_FLTCTRL_FAULT2EN_MASK 0x4u +#define FTM_FLTCTRL_FAULT2EN_SHIFT 2 +#define FTM_FLTCTRL_FAULT3EN_MASK 0x8u +#define FTM_FLTCTRL_FAULT3EN_SHIFT 3 +#define FTM_FLTCTRL_FFLTR0EN_MASK 0x10u +#define FTM_FLTCTRL_FFLTR0EN_SHIFT 4 +#define FTM_FLTCTRL_FFLTR1EN_MASK 0x20u +#define FTM_FLTCTRL_FFLTR1EN_SHIFT 5 +#define FTM_FLTCTRL_FFLTR2EN_MASK 0x40u +#define FTM_FLTCTRL_FFLTR2EN_SHIFT 6 +#define FTM_FLTCTRL_FFLTR3EN_MASK 0x80u +#define FTM_FLTCTRL_FFLTR3EN_SHIFT 7 +#define FTM_FLTCTRL_FFVAL_MASK 0xF00u +#define FTM_FLTCTRL_FFVAL_SHIFT 8 +#define FTM_FLTCTRL_FFVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FLTCTRL_FFVAL_SHIFT))&FTM_FLTCTRL_FFVAL_MASK) +/* QDCTRL Bit Fields */ +#define FTM_QDCTRL_QUADEN_MASK 0x1u +#define FTM_QDCTRL_QUADEN_SHIFT 0 +#define FTM_QDCTRL_TOFDIR_MASK 0x2u +#define FTM_QDCTRL_TOFDIR_SHIFT 1 +#define FTM_QDCTRL_QUADIR_MASK 0x4u +#define FTM_QDCTRL_QUADIR_SHIFT 2 +#define FTM_QDCTRL_QUADMODE_MASK 0x8u +#define FTM_QDCTRL_QUADMODE_SHIFT 3 +#define FTM_QDCTRL_PHBPOL_MASK 0x10u +#define FTM_QDCTRL_PHBPOL_SHIFT 4 +#define FTM_QDCTRL_PHAPOL_MASK 0x20u +#define FTM_QDCTRL_PHAPOL_SHIFT 5 +#define FTM_QDCTRL_PHBFLTREN_MASK 0x40u +#define FTM_QDCTRL_PHBFLTREN_SHIFT 6 +#define FTM_QDCTRL_PHAFLTREN_MASK 0x80u +#define FTM_QDCTRL_PHAFLTREN_SHIFT 7 +/* CONF Bit Fields */ +#define FTM_CONF_NUMTOF_MASK 0x1Fu +#define FTM_CONF_NUMTOF_SHIFT 0 +#define FTM_CONF_NUMTOF(x) (((uint32_t)(((uint32_t)(x))<<FTM_CONF_NUMTOF_SHIFT))&FTM_CONF_NUMTOF_MASK) +#define FTM_CONF_BDMMODE_MASK 0xC0u +#define FTM_CONF_BDMMODE_SHIFT 6 +#define FTM_CONF_BDMMODE(x) (((uint32_t)(((uint32_t)(x))<<FTM_CONF_BDMMODE_SHIFT))&FTM_CONF_BDMMODE_MASK) +#define FTM_CONF_GTBEEN_MASK 0x200u +#define FTM_CONF_GTBEEN_SHIFT 9 +#define FTM_CONF_GTBEOUT_MASK 0x400u +#define FTM_CONF_GTBEOUT_SHIFT 10 +/* FLTPOL Bit Fields */ +#define FTM_FLTPOL_FLT0POL_MASK 0x1u +#define FTM_FLTPOL_FLT0POL_SHIFT 0 +#define FTM_FLTPOL_FLT1POL_MASK 0x2u +#define FTM_FLTPOL_FLT1POL_SHIFT 1 +#define FTM_FLTPOL_FLT2POL_MASK 0x4u +#define FTM_FLTPOL_FLT2POL_SHIFT 2 +#define FTM_FLTPOL_FLT3POL_MASK 0x8u +#define FTM_FLTPOL_FLT3POL_SHIFT 3 +/* SYNCONF Bit Fields */ +#define FTM_SYNCONF_HWTRIGMODE_MASK 0x1u +#define FTM_SYNCONF_HWTRIGMODE_SHIFT 0 +#define FTM_SYNCONF_CNTINC_MASK 0x4u +#define FTM_SYNCONF_CNTINC_SHIFT 2 +#define FTM_SYNCONF_INVC_MASK 0x10u +#define FTM_SYNCONF_INVC_SHIFT 4 +#define FTM_SYNCONF_SWOC_MASK 0x20u +#define FTM_SYNCONF_SWOC_SHIFT 5 +#define FTM_SYNCONF_SYNCMODE_MASK 0x80u +#define FTM_SYNCONF_SYNCMODE_SHIFT 7 +#define FTM_SYNCONF_SWRSTCNT_MASK 0x100u +#define FTM_SYNCONF_SWRSTCNT_SHIFT 8 +#define FTM_SYNCONF_SWWRBUF_MASK 0x200u +#define FTM_SYNCONF_SWWRBUF_SHIFT 9 +#define FTM_SYNCONF_SWOM_MASK 0x400u +#define FTM_SYNCONF_SWOM_SHIFT 10 +#define FTM_SYNCONF_SWINVC_MASK 0x800u +#define FTM_SYNCONF_SWINVC_SHIFT 11 +#define FTM_SYNCONF_SWSOC_MASK 0x1000u +#define FTM_SYNCONF_SWSOC_SHIFT 12 +#define FTM_SYNCONF_HWRSTCNT_MASK 0x10000u +#define FTM_SYNCONF_HWRSTCNT_SHIFT 16 +#define FTM_SYNCONF_HWWRBUF_MASK 0x20000u +#define FTM_SYNCONF_HWWRBUF_SHIFT 17 +#define FTM_SYNCONF_HWOM_MASK 0x40000u +#define FTM_SYNCONF_HWOM_SHIFT 18 +#define FTM_SYNCONF_HWINVC_MASK 0x80000u +#define FTM_SYNCONF_HWINVC_SHIFT 19 +#define FTM_SYNCONF_HWSOC_MASK 0x100000u +#define FTM_SYNCONF_HWSOC_SHIFT 20 +/* INVCTRL Bit Fields */ +#define FTM_INVCTRL_INV0EN_MASK 0x1u +#define FTM_INVCTRL_INV0EN_SHIFT 0 +#define FTM_INVCTRL_INV1EN_MASK 0x2u +#define FTM_INVCTRL_INV1EN_SHIFT 1 +#define FTM_INVCTRL_INV2EN_MASK 0x4u +#define FTM_INVCTRL_INV2EN_SHIFT 2 +#define FTM_INVCTRL_INV3EN_MASK 0x8u +#define FTM_INVCTRL_INV3EN_SHIFT 3 +/* SWOCTRL Bit Fields */ +#define FTM_SWOCTRL_CH0OC_MASK 0x1u +#define FTM_SWOCTRL_CH0OC_SHIFT 0 +#define FTM_SWOCTRL_CH1OC_MASK 0x2u +#define FTM_SWOCTRL_CH1OC_SHIFT 1 +#define FTM_SWOCTRL_CH2OC_MASK 0x4u +#define FTM_SWOCTRL_CH2OC_SHIFT 2 +#define FTM_SWOCTRL_CH3OC_MASK 0x8u +#define FTM_SWOCTRL_CH3OC_SHIFT 3 +#define FTM_SWOCTRL_CH4OC_MASK 0x10u +#define FTM_SWOCTRL_CH4OC_SHIFT 4 +#define FTM_SWOCTRL_CH5OC_MASK 0x20u +#define FTM_SWOCTRL_CH5OC_SHIFT 5 +#define FTM_SWOCTRL_CH6OC_MASK 0x40u +#define FTM_SWOCTRL_CH6OC_SHIFT 6 +#define FTM_SWOCTRL_CH7OC_MASK 0x80u +#define FTM_SWOCTRL_CH7OC_SHIFT 7 +#define FTM_SWOCTRL_CH0OCV_MASK 0x100u +#define FTM_SWOCTRL_CH0OCV_SHIFT 8 +#define FTM_SWOCTRL_CH1OCV_MASK 0x200u +#define FTM_SWOCTRL_CH1OCV_SHIFT 9 +#define FTM_SWOCTRL_CH2OCV_MASK 0x400u +#define FTM_SWOCTRL_CH2OCV_SHIFT 10 +#define FTM_SWOCTRL_CH3OCV_MASK 0x800u +#define FTM_SWOCTRL_CH3OCV_SHIFT 11 +#define FTM_SWOCTRL_CH4OCV_MASK 0x1000u +#define FTM_SWOCTRL_CH4OCV_SHIFT 12 +#define FTM_SWOCTRL_CH5OCV_MASK 0x2000u +#define FTM_SWOCTRL_CH5OCV_SHIFT 13 +#define FTM_SWOCTRL_CH6OCV_MASK 0x4000u +#define FTM_SWOCTRL_CH6OCV_SHIFT 14 +#define FTM_SWOCTRL_CH7OCV_MASK 0x8000u +#define FTM_SWOCTRL_CH7OCV_SHIFT 15 +/* PWMLOAD Bit Fields */ +#define FTM_PWMLOAD_CH0SEL_MASK 0x1u +#define FTM_PWMLOAD_CH0SEL_SHIFT 0 +#define FTM_PWMLOAD_CH1SEL_MASK 0x2u +#define FTM_PWMLOAD_CH1SEL_SHIFT 1 +#define FTM_PWMLOAD_CH2SEL_MASK 0x4u +#define FTM_PWMLOAD_CH2SEL_SHIFT 2 +#define FTM_PWMLOAD_CH3SEL_MASK 0x8u +#define FTM_PWMLOAD_CH3SEL_SHIFT 3 +#define FTM_PWMLOAD_CH4SEL_MASK 0x10u +#define FTM_PWMLOAD_CH4SEL_SHIFT 4 +#define FTM_PWMLOAD_CH5SEL_MASK 0x20u +#define FTM_PWMLOAD_CH5SEL_SHIFT 5 +#define FTM_PWMLOAD_CH6SEL_MASK 0x40u +#define FTM_PWMLOAD_CH6SEL_SHIFT 6 +#define FTM_PWMLOAD_CH7SEL_MASK 0x80u +#define FTM_PWMLOAD_CH7SEL_SHIFT 7 +#define FTM_PWMLOAD_LDOK_MASK 0x200u +#define FTM_PWMLOAD_LDOK_SHIFT 9 + +/*! + * @} + */ /* end of group FTM_Register_Masks */ + + +/* FTM - Peripheral instance base addresses */ +/** Peripheral FTM0 base address */ +#define FTM0_BASE (0x40038000u) +/** Peripheral FTM0 base pointer */ +#define FTM0 ((FTM_Type *)FTM0_BASE) +#define FTM0_BASE_PTR (FTM0) +/** Peripheral FTM1 base address */ +#define FTM1_BASE (0x40039000u) +/** Peripheral FTM1 base pointer */ +#define FTM1 ((FTM_Type *)FTM1_BASE) +#define FTM1_BASE_PTR (FTM1) +/** Peripheral FTM2 base address */ +#define FTM2_BASE (0x4003A000u) +/** Peripheral FTM2 base pointer */ +#define FTM2 ((FTM_Type *)FTM2_BASE) +#define FTM2_BASE_PTR (FTM2) +/** Peripheral FTM3 base address */ +#define FTM3_BASE (0x400B9000u) +/** Peripheral FTM3 base pointer */ +#define FTM3 ((FTM_Type *)FTM3_BASE) +#define FTM3_BASE_PTR (FTM3) +/** Array initializer of FTM peripheral base pointers */ +#define FTM_BASES { FTM0, FTM1, FTM2, FTM3 } + +/* ---------------------------------------------------------------------------- + -- FTM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTM_Register_Accessor_Macros FTM - Register accessor macros + * @{ + */ + + +/* FTM - Register instance definitions */ +/* FTM0 */ +#define FTM0_SC FTM_SC_REG(FTM0) +#define FTM0_CNT FTM_CNT_REG(FTM0) +#define FTM0_MOD FTM_MOD_REG(FTM0) +#define FTM0_C0SC FTM_CnSC_REG(FTM0,0) +#define FTM0_C0V FTM_CnV_REG(FTM0,0) +#define FTM0_C1SC FTM_CnSC_REG(FTM0,1) +#define FTM0_C1V FTM_CnV_REG(FTM0,1) +#define FTM0_C2SC FTM_CnSC_REG(FTM0,2) +#define FTM0_C2V FTM_CnV_REG(FTM0,2) +#define FTM0_C3SC FTM_CnSC_REG(FTM0,3) +#define FTM0_C3V FTM_CnV_REG(FTM0,3) +#define FTM0_C4SC FTM_CnSC_REG(FTM0,4) +#define FTM0_C4V FTM_CnV_REG(FTM0,4) +#define FTM0_C5SC FTM_CnSC_REG(FTM0,5) +#define FTM0_C5V FTM_CnV_REG(FTM0,5) +#define FTM0_C6SC FTM_CnSC_REG(FTM0,6) +#define FTM0_C6V FTM_CnV_REG(FTM0,6) +#define FTM0_C7SC FTM_CnSC_REG(FTM0,7) +#define FTM0_C7V FTM_CnV_REG(FTM0,7) +#define FTM0_CNTIN FTM_CNTIN_REG(FTM0) +#define FTM0_STATUS FTM_STATUS_REG(FTM0) +#define FTM0_MODE FTM_MODE_REG(FTM0) +#define FTM0_SYNC FTM_SYNC_REG(FTM0) +#define FTM0_OUTINIT FTM_OUTINIT_REG(FTM0) +#define FTM0_OUTMASK FTM_OUTMASK_REG(FTM0) +#define FTM0_COMBINE FTM_COMBINE_REG(FTM0) +#define FTM0_DEADTIME FTM_DEADTIME_REG(FTM0) +#define FTM0_EXTTRIG FTM_EXTTRIG_REG(FTM0) +#define FTM0_POL FTM_POL_REG(FTM0) +#define FTM0_FMS FTM_FMS_REG(FTM0) +#define FTM0_FILTER FTM_FILTER_REG(FTM0) +#define FTM0_FLTCTRL FTM_FLTCTRL_REG(FTM0) +#define FTM0_QDCTRL FTM_QDCTRL_REG(FTM0) +#define FTM0_CONF FTM_CONF_REG(FTM0) +#define FTM0_FLTPOL FTM_FLTPOL_REG(FTM0) +#define FTM0_SYNCONF FTM_SYNCONF_REG(FTM0) +#define FTM0_INVCTRL FTM_INVCTRL_REG(FTM0) +#define FTM0_SWOCTRL FTM_SWOCTRL_REG(FTM0) +#define FTM0_PWMLOAD FTM_PWMLOAD_REG(FTM0) +/* FTM1 */ +#define FTM1_SC FTM_SC_REG(FTM1) +#define FTM1_CNT FTM_CNT_REG(FTM1) +#define FTM1_MOD FTM_MOD_REG(FTM1) +#define FTM1_C0SC FTM_CnSC_REG(FTM1,0) +#define FTM1_C0V FTM_CnV_REG(FTM1,0) +#define FTM1_C1SC FTM_CnSC_REG(FTM1,1) +#define FTM1_C1V FTM_CnV_REG(FTM1,1) +#define FTM1_CNTIN FTM_CNTIN_REG(FTM1) +#define FTM1_STATUS FTM_STATUS_REG(FTM1) +#define FTM1_MODE FTM_MODE_REG(FTM1) +#define FTM1_SYNC FTM_SYNC_REG(FTM1) +#define FTM1_OUTINIT FTM_OUTINIT_REG(FTM1) +#define FTM1_OUTMASK FTM_OUTMASK_REG(FTM1) +#define FTM1_COMBINE FTM_COMBINE_REG(FTM1) +#define FTM1_DEADTIME FTM_DEADTIME_REG(FTM1) +#define FTM1_EXTTRIG FTM_EXTTRIG_REG(FTM1) +#define FTM1_POL FTM_POL_REG(FTM1) +#define FTM1_FMS FTM_FMS_REG(FTM1) +#define FTM1_FILTER FTM_FILTER_REG(FTM1) +#define FTM1_FLTCTRL FTM_FLTCTRL_REG(FTM1) +#define FTM1_QDCTRL FTM_QDCTRL_REG(FTM1) +#define FTM1_CONF FTM_CONF_REG(FTM1) +#define FTM1_FLTPOL FTM_FLTPOL_REG(FTM1) +#define FTM1_SYNCONF FTM_SYNCONF_REG(FTM1) +#define FTM1_INVCTRL FTM_INVCTRL_REG(FTM1) +#define FTM1_SWOCTRL FTM_SWOCTRL_REG(FTM1) +#define FTM1_PWMLOAD FTM_PWMLOAD_REG(FTM1) +/* FTM2 */ +#define FTM2_SC FTM_SC_REG(FTM2) +#define FTM2_CNT FTM_CNT_REG(FTM2) +#define FTM2_MOD FTM_MOD_REG(FTM2) +#define FTM2_C0SC FTM_CnSC_REG(FTM2,0) +#define FTM2_C0V FTM_CnV_REG(FTM2,0) +#define FTM2_C1SC FTM_CnSC_REG(FTM2,1) +#define FTM2_C1V FTM_CnV_REG(FTM2,1) +#define FTM2_CNTIN FTM_CNTIN_REG(FTM2) +#define FTM2_STATUS FTM_STATUS_REG(FTM2) +#define FTM2_MODE FTM_MODE_REG(FTM2) +#define FTM2_SYNC FTM_SYNC_REG(FTM2) +#define FTM2_OUTINIT FTM_OUTINIT_REG(FTM2) +#define FTM2_OUTMASK FTM_OUTMASK_REG(FTM2) +#define FTM2_COMBINE FTM_COMBINE_REG(FTM2) +#define FTM2_DEADTIME FTM_DEADTIME_REG(FTM2) +#define FTM2_EXTTRIG FTM_EXTTRIG_REG(FTM2) +#define FTM2_POL FTM_POL_REG(FTM2) +#define FTM2_FMS FTM_FMS_REG(FTM2) +#define FTM2_FILTER FTM_FILTER_REG(FTM2) +#define FTM2_FLTCTRL FTM_FLTCTRL_REG(FTM2) +#define FTM2_QDCTRL FTM_QDCTRL_REG(FTM2) +#define FTM2_CONF FTM_CONF_REG(FTM2) +#define FTM2_FLTPOL FTM_FLTPOL_REG(FTM2) +#define FTM2_SYNCONF FTM_SYNCONF_REG(FTM2) +#define FTM2_INVCTRL FTM_INVCTRL_REG(FTM2) +#define FTM2_SWOCTRL FTM_SWOCTRL_REG(FTM2) +#define FTM2_PWMLOAD FTM_PWMLOAD_REG(FTM2) +/* FTM3 */ +#define FTM3_SC FTM_SC_REG(FTM3) +#define FTM3_CNT FTM_CNT_REG(FTM3) +#define FTM3_MOD FTM_MOD_REG(FTM3) +#define FTM3_C0SC FTM_CnSC_REG(FTM3,0) +#define FTM3_C0V FTM_CnV_REG(FTM3,0) +#define FTM3_C1SC FTM_CnSC_REG(FTM3,1) +#define FTM3_C1V FTM_CnV_REG(FTM3,1) +#define FTM3_C2SC FTM_CnSC_REG(FTM3,2) +#define FTM3_C2V FTM_CnV_REG(FTM3,2) +#define FTM3_C3SC FTM_CnSC_REG(FTM3,3) +#define FTM3_C3V FTM_CnV_REG(FTM3,3) +#define FTM3_C4SC FTM_CnSC_REG(FTM3,4) +#define FTM3_C4V FTM_CnV_REG(FTM3,4) +#define FTM3_C5SC FTM_CnSC_REG(FTM3,5) +#define FTM3_C5V FTM_CnV_REG(FTM3,5) +#define FTM3_C6SC FTM_CnSC_REG(FTM3,6) +#define FTM3_C6V FTM_CnV_REG(FTM3,6) +#define FTM3_C7SC FTM_CnSC_REG(FTM3,7) +#define FTM3_C7V FTM_CnV_REG(FTM3,7) +#define FTM3_CNTIN FTM_CNTIN_REG(FTM3) +#define FTM3_STATUS FTM_STATUS_REG(FTM3) +#define FTM3_MODE FTM_MODE_REG(FTM3) +#define FTM3_SYNC FTM_SYNC_REG(FTM3) +#define FTM3_OUTINIT FTM_OUTINIT_REG(FTM3) +#define FTM3_OUTMASK FTM_OUTMASK_REG(FTM3) +#define FTM3_COMBINE FTM_COMBINE_REG(FTM3) +#define FTM3_DEADTIME FTM_DEADTIME_REG(FTM3) +#define FTM3_EXTTRIG FTM_EXTTRIG_REG(FTM3) +#define FTM3_POL FTM_POL_REG(FTM3) +#define FTM3_FMS FTM_FMS_REG(FTM3) +#define FTM3_FILTER FTM_FILTER_REG(FTM3) +#define FTM3_FLTCTRL FTM_FLTCTRL_REG(FTM3) +#define FTM3_QDCTRL FTM_QDCTRL_REG(FTM3) +#define FTM3_CONF FTM_CONF_REG(FTM3) +#define FTM3_FLTPOL FTM_FLTPOL_REG(FTM3) +#define FTM3_SYNCONF FTM_SYNCONF_REG(FTM3) +#define FTM3_INVCTRL FTM_INVCTRL_REG(FTM3) +#define FTM3_SWOCTRL FTM_SWOCTRL_REG(FTM3) +#define FTM3_PWMLOAD FTM_PWMLOAD_REG(FTM3) + +/* FTM - Register array accessors */ +#define FTM0_CnSC(index) FTM_CnSC_REG(FTM0,index) +#define FTM1_CnSC(index) FTM_CnSC_REG(FTM1,index) +#define FTM2_CnSC(index) FTM_CnSC_REG(FTM2,index) +#define FTM3_CnSC(index) FTM_CnSC_REG(FTM3,index) +#define FTM0_CnV(index) FTM_CnV_REG(FTM0,index) +#define FTM1_CnV(index) FTM_CnV_REG(FTM1,index) +#define FTM2_CnV(index) FTM_CnV_REG(FTM2,index) +#define FTM3_CnV(index) FTM_CnV_REG(FTM3,index) + +/*! + * @} + */ /* end of group FTM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group FTM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- GPIO Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup GPIO_Peripheral_Access_Layer GPIO Peripheral Access Layer + * @{ + */ + +/** GPIO - Register Layout Typedef */ +typedef struct { + __IO uint32_t PDOR; /**< Port Data Output Register, offset: 0x0 */ + __O uint32_t PSOR; /**< Port Set Output Register, offset: 0x4 */ + __O uint32_t PCOR; /**< Port Clear Output Register, offset: 0x8 */ + __O uint32_t PTOR; /**< Port Toggle Output Register, offset: 0xC */ + __I uint32_t PDIR; /**< Port Data Input Register, offset: 0x10 */ + __IO uint32_t PDDR; /**< Port Data Direction Register, offset: 0x14 */ +} GPIO_Type, *GPIO_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- GPIO - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup GPIO_Register_Accessor_Macros GPIO - Register accessor macros + * @{ + */ + + +/* GPIO - Register accessors */ +#define GPIO_PDOR_REG(base) ((base)->PDOR) +#define GPIO_PSOR_REG(base) ((base)->PSOR) +#define GPIO_PCOR_REG(base) ((base)->PCOR) +#define GPIO_PTOR_REG(base) ((base)->PTOR) +#define GPIO_PDIR_REG(base) ((base)->PDIR) +#define GPIO_PDDR_REG(base) ((base)->PDDR) + +/*! + * @} + */ /* end of group GPIO_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- GPIO Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup GPIO_Register_Masks GPIO Register Masks + * @{ + */ + +/* PDOR Bit Fields */ +#define GPIO_PDOR_PDO_MASK 0xFFFFFFFFu +#define GPIO_PDOR_PDO_SHIFT 0 +#define GPIO_PDOR_PDO(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PDOR_PDO_SHIFT))&GPIO_PDOR_PDO_MASK) +/* PSOR Bit Fields */ +#define GPIO_PSOR_PTSO_MASK 0xFFFFFFFFu +#define GPIO_PSOR_PTSO_SHIFT 0 +#define GPIO_PSOR_PTSO(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PSOR_PTSO_SHIFT))&GPIO_PSOR_PTSO_MASK) +/* PCOR Bit Fields */ +#define GPIO_PCOR_PTCO_MASK 0xFFFFFFFFu +#define GPIO_PCOR_PTCO_SHIFT 0 +#define GPIO_PCOR_PTCO(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PCOR_PTCO_SHIFT))&GPIO_PCOR_PTCO_MASK) +/* PTOR Bit Fields */ +#define GPIO_PTOR_PTTO_MASK 0xFFFFFFFFu +#define GPIO_PTOR_PTTO_SHIFT 0 +#define GPIO_PTOR_PTTO(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PTOR_PTTO_SHIFT))&GPIO_PTOR_PTTO_MASK) +/* PDIR Bit Fields */ +#define GPIO_PDIR_PDI_MASK 0xFFFFFFFFu +#define GPIO_PDIR_PDI_SHIFT 0 +#define GPIO_PDIR_PDI(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PDIR_PDI_SHIFT))&GPIO_PDIR_PDI_MASK) +/* PDDR Bit Fields */ +#define GPIO_PDDR_PDD_MASK 0xFFFFFFFFu +#define GPIO_PDDR_PDD_SHIFT 0 +#define GPIO_PDDR_PDD(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PDDR_PDD_SHIFT))&GPIO_PDDR_PDD_MASK) + +/*! + * @} + */ /* end of group GPIO_Register_Masks */ + + +/* GPIO - Peripheral instance base addresses */ +/** Peripheral PTA base address */ +#define PTA_BASE (0x400FF000u) +/** Peripheral PTA base pointer */ +#define PTA ((GPIO_Type *)PTA_BASE) +#define PTA_BASE_PTR (PTA) +/** Peripheral PTB base address */ +#define PTB_BASE (0x400FF040u) +/** Peripheral PTB base pointer */ +#define PTB ((GPIO_Type *)PTB_BASE) +#define PTB_BASE_PTR (PTB) +/** Peripheral PTC base address */ +#define PTC_BASE (0x400FF080u) +/** Peripheral PTC base pointer */ +#define PTC ((GPIO_Type *)PTC_BASE) +#define PTC_BASE_PTR (PTC) +/** Peripheral PTD base address */ +#define PTD_BASE (0x400FF0C0u) +/** Peripheral PTD base pointer */ +#define PTD ((GPIO_Type *)PTD_BASE) +#define PTD_BASE_PTR (PTD) +/** Peripheral PTE base address */ +#define PTE_BASE (0x400FF100u) +/** Peripheral PTE base pointer */ +#define PTE ((GPIO_Type *)PTE_BASE) +#define PTE_BASE_PTR (PTE) +/** Array initializer of GPIO peripheral base pointers */ +#define GPIO_BASES { PTA, PTB, PTC, PTD, PTE } + +/* ---------------------------------------------------------------------------- + -- GPIO - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup GPIO_Register_Accessor_Macros GPIO - Register accessor macros + * @{ + */ + + +/* GPIO - Register instance definitions */ +/* PTA */ +#define GPIOA_PDOR GPIO_PDOR_REG(PTA) +#define GPIOA_PSOR GPIO_PSOR_REG(PTA) +#define GPIOA_PCOR GPIO_PCOR_REG(PTA) +#define GPIOA_PTOR GPIO_PTOR_REG(PTA) +#define GPIOA_PDIR GPIO_PDIR_REG(PTA) +#define GPIOA_PDDR GPIO_PDDR_REG(PTA) +/* PTB */ +#define GPIOB_PDOR GPIO_PDOR_REG(PTB) +#define GPIOB_PSOR GPIO_PSOR_REG(PTB) +#define GPIOB_PCOR GPIO_PCOR_REG(PTB) +#define GPIOB_PTOR GPIO_PTOR_REG(PTB) +#define GPIOB_PDIR GPIO_PDIR_REG(PTB) +#define GPIOB_PDDR GPIO_PDDR_REG(PTB) +/* PTC */ +#define GPIOC_PDOR GPIO_PDOR_REG(PTC) +#define GPIOC_PSOR GPIO_PSOR_REG(PTC) +#define GPIOC_PCOR GPIO_PCOR_REG(PTC) +#define GPIOC_PTOR GPIO_PTOR_REG(PTC) +#define GPIOC_PDIR GPIO_PDIR_REG(PTC) +#define GPIOC_PDDR GPIO_PDDR_REG(PTC) +/* PTD */ +#define GPIOD_PDOR GPIO_PDOR_REG(PTD) +#define GPIOD_PSOR GPIO_PSOR_REG(PTD) +#define GPIOD_PCOR GPIO_PCOR_REG(PTD) +#define GPIOD_PTOR GPIO_PTOR_REG(PTD) +#define GPIOD_PDIR GPIO_PDIR_REG(PTD) +#define GPIOD_PDDR GPIO_PDDR_REG(PTD) +/* PTE */ +#define GPIOE_PDOR GPIO_PDOR_REG(PTE) +#define GPIOE_PSOR GPIO_PSOR_REG(PTE) +#define GPIOE_PCOR GPIO_PCOR_REG(PTE) +#define GPIOE_PTOR GPIO_PTOR_REG(PTE) +#define GPIOE_PDIR GPIO_PDIR_REG(PTE) +#define GPIOE_PDDR GPIO_PDDR_REG(PTE) + +/*! + * @} + */ /* end of group GPIO_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group GPIO_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- I2C Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2C_Peripheral_Access_Layer I2C Peripheral Access Layer + * @{ + */ + +/** I2C - Register Layout Typedef */ +typedef struct { + __IO uint8_t A1; /**< I2C Address Register 1, offset: 0x0 */ + __IO uint8_t F; /**< I2C Frequency Divider register, offset: 0x1 */ + __IO uint8_t C1; /**< I2C Control Register 1, offset: 0x2 */ + __IO uint8_t S; /**< I2C Status register, offset: 0x3 */ + __IO uint8_t D; /**< I2C Data I/O register, offset: 0x4 */ + __IO uint8_t C2; /**< I2C Control Register 2, offset: 0x5 */ + __IO uint8_t FLT; /**< I2C Programmable Input Glitch Filter register, offset: 0x6 */ + __IO uint8_t RA; /**< I2C Range Address register, offset: 0x7 */ + __IO uint8_t SMB; /**< I2C SMBus Control and Status register, offset: 0x8 */ + __IO uint8_t A2; /**< I2C Address Register 2, offset: 0x9 */ + __IO uint8_t SLTH; /**< I2C SCL Low Timeout Register High, offset: 0xA */ + __IO uint8_t SLTL; /**< I2C SCL Low Timeout Register Low, offset: 0xB */ +} I2C_Type, *I2C_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- I2C - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2C_Register_Accessor_Macros I2C - Register accessor macros + * @{ + */ + + +/* I2C - Register accessors */ +#define I2C_A1_REG(base) ((base)->A1) +#define I2C_F_REG(base) ((base)->F) +#define I2C_C1_REG(base) ((base)->C1) +#define I2C_S_REG(base) ((base)->S) +#define I2C_D_REG(base) ((base)->D) +#define I2C_C2_REG(base) ((base)->C2) +#define I2C_FLT_REG(base) ((base)->FLT) +#define I2C_RA_REG(base) ((base)->RA) +#define I2C_SMB_REG(base) ((base)->SMB) +#define I2C_A2_REG(base) ((base)->A2) +#define I2C_SLTH_REG(base) ((base)->SLTH) +#define I2C_SLTL_REG(base) ((base)->SLTL) + +/*! + * @} + */ /* end of group I2C_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- I2C Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2C_Register_Masks I2C Register Masks + * @{ + */ + +/* A1 Bit Fields */ +#define I2C_A1_AD_MASK 0xFEu +#define I2C_A1_AD_SHIFT 1 +#define I2C_A1_AD(x) (((uint8_t)(((uint8_t)(x))<<I2C_A1_AD_SHIFT))&I2C_A1_AD_MASK) +/* F Bit Fields */ +#define I2C_F_ICR_MASK 0x3Fu +#define I2C_F_ICR_SHIFT 0 +#define I2C_F_ICR(x) (((uint8_t)(((uint8_t)(x))<<I2C_F_ICR_SHIFT))&I2C_F_ICR_MASK) +#define I2C_F_MULT_MASK 0xC0u +#define I2C_F_MULT_SHIFT 6 +#define I2C_F_MULT(x) (((uint8_t)(((uint8_t)(x))<<I2C_F_MULT_SHIFT))&I2C_F_MULT_MASK) +/* C1 Bit Fields */ +#define I2C_C1_DMAEN_MASK 0x1u +#define I2C_C1_DMAEN_SHIFT 0 +#define I2C_C1_WUEN_MASK 0x2u +#define I2C_C1_WUEN_SHIFT 1 +#define I2C_C1_RSTA_MASK 0x4u +#define I2C_C1_RSTA_SHIFT 2 +#define I2C_C1_TXAK_MASK 0x8u +#define I2C_C1_TXAK_SHIFT 3 +#define I2C_C1_TX_MASK 0x10u +#define I2C_C1_TX_SHIFT 4 +#define I2C_C1_MST_MASK 0x20u +#define I2C_C1_MST_SHIFT 5 +#define I2C_C1_IICIE_MASK 0x40u +#define I2C_C1_IICIE_SHIFT 6 +#define I2C_C1_IICEN_MASK 0x80u +#define I2C_C1_IICEN_SHIFT 7 +/* S Bit Fields */ +#define I2C_S_RXAK_MASK 0x1u +#define I2C_S_RXAK_SHIFT 0 +#define I2C_S_IICIF_MASK 0x2u +#define I2C_S_IICIF_SHIFT 1 +#define I2C_S_SRW_MASK 0x4u +#define I2C_S_SRW_SHIFT 2 +#define I2C_S_RAM_MASK 0x8u +#define I2C_S_RAM_SHIFT 3 +#define I2C_S_ARBL_MASK 0x10u +#define I2C_S_ARBL_SHIFT 4 +#define I2C_S_BUSY_MASK 0x20u +#define I2C_S_BUSY_SHIFT 5 +#define I2C_S_IAAS_MASK 0x40u +#define I2C_S_IAAS_SHIFT 6 +#define I2C_S_TCF_MASK 0x80u +#define I2C_S_TCF_SHIFT 7 +/* D Bit Fields */ +#define I2C_D_DATA_MASK 0xFFu +#define I2C_D_DATA_SHIFT 0 +#define I2C_D_DATA(x) (((uint8_t)(((uint8_t)(x))<<I2C_D_DATA_SHIFT))&I2C_D_DATA_MASK) +/* C2 Bit Fields */ +#define I2C_C2_AD_MASK 0x7u +#define I2C_C2_AD_SHIFT 0 +#define I2C_C2_AD(x) (((uint8_t)(((uint8_t)(x))<<I2C_C2_AD_SHIFT))&I2C_C2_AD_MASK) +#define I2C_C2_RMEN_MASK 0x8u +#define I2C_C2_RMEN_SHIFT 3 +#define I2C_C2_SBRC_MASK 0x10u +#define I2C_C2_SBRC_SHIFT 4 +#define I2C_C2_HDRS_MASK 0x20u +#define I2C_C2_HDRS_SHIFT 5 +#define I2C_C2_ADEXT_MASK 0x40u +#define I2C_C2_ADEXT_SHIFT 6 +#define I2C_C2_GCAEN_MASK 0x80u +#define I2C_C2_GCAEN_SHIFT 7 +/* FLT Bit Fields */ +#define I2C_FLT_FLT_MASK 0xFu +#define I2C_FLT_FLT_SHIFT 0 +#define I2C_FLT_FLT(x) (((uint8_t)(((uint8_t)(x))<<I2C_FLT_FLT_SHIFT))&I2C_FLT_FLT_MASK) +#define I2C_FLT_STARTF_MASK 0x10u +#define I2C_FLT_STARTF_SHIFT 4 +#define I2C_FLT_SSIE_MASK 0x20u +#define I2C_FLT_SSIE_SHIFT 5 +#define I2C_FLT_STOPF_MASK 0x40u +#define I2C_FLT_STOPF_SHIFT 6 +#define I2C_FLT_SHEN_MASK 0x80u +#define I2C_FLT_SHEN_SHIFT 7 +/* RA Bit Fields */ +#define I2C_RA_RAD_MASK 0xFEu +#define I2C_RA_RAD_SHIFT 1 +#define I2C_RA_RAD(x) (((uint8_t)(((uint8_t)(x))<<I2C_RA_RAD_SHIFT))&I2C_RA_RAD_MASK) +/* SMB Bit Fields */ +#define I2C_SMB_SHTF2IE_MASK 0x1u +#define I2C_SMB_SHTF2IE_SHIFT 0 +#define I2C_SMB_SHTF2_MASK 0x2u +#define I2C_SMB_SHTF2_SHIFT 1 +#define I2C_SMB_SHTF1_MASK 0x4u +#define I2C_SMB_SHTF1_SHIFT 2 +#define I2C_SMB_SLTF_MASK 0x8u +#define I2C_SMB_SLTF_SHIFT 3 +#define I2C_SMB_TCKSEL_MASK 0x10u +#define I2C_SMB_TCKSEL_SHIFT 4 +#define I2C_SMB_SIICAEN_MASK 0x20u +#define I2C_SMB_SIICAEN_SHIFT 5 +#define I2C_SMB_ALERTEN_MASK 0x40u +#define I2C_SMB_ALERTEN_SHIFT 6 +#define I2C_SMB_FACK_MASK 0x80u +#define I2C_SMB_FACK_SHIFT 7 +/* A2 Bit Fields */ +#define I2C_A2_SAD_MASK 0xFEu +#define I2C_A2_SAD_SHIFT 1 +#define I2C_A2_SAD(x) (((uint8_t)(((uint8_t)(x))<<I2C_A2_SAD_SHIFT))&I2C_A2_SAD_MASK) +/* SLTH Bit Fields */ +#define I2C_SLTH_SSLT_MASK 0xFFu +#define I2C_SLTH_SSLT_SHIFT 0 +#define I2C_SLTH_SSLT(x) (((uint8_t)(((uint8_t)(x))<<I2C_SLTH_SSLT_SHIFT))&I2C_SLTH_SSLT_MASK) +/* SLTL Bit Fields */ +#define I2C_SLTL_SSLT_MASK 0xFFu +#define I2C_SLTL_SSLT_SHIFT 0 +#define I2C_SLTL_SSLT(x) (((uint8_t)(((uint8_t)(x))<<I2C_SLTL_SSLT_SHIFT))&I2C_SLTL_SSLT_MASK) + +/*! + * @} + */ /* end of group I2C_Register_Masks */ + + +/* I2C - Peripheral instance base addresses */ +/** Peripheral I2C0 base address */ +#define I2C0_BASE (0x40066000u) +/** Peripheral I2C0 base pointer */ +#define I2C0 ((I2C_Type *)I2C0_BASE) +#define I2C0_BASE_PTR (I2C0) +/** Peripheral I2C1 base address */ +#define I2C1_BASE (0x40067000u) +/** Peripheral I2C1 base pointer */ +#define I2C1 ((I2C_Type *)I2C1_BASE) +#define I2C1_BASE_PTR (I2C1) +/** Peripheral I2C2 base address */ +#define I2C2_BASE (0x400E6000u) +/** Peripheral I2C2 base pointer */ +#define I2C2 ((I2C_Type *)I2C2_BASE) +#define I2C2_BASE_PTR (I2C2) +/** Array initializer of I2C peripheral base pointers */ +#define I2C_BASES { I2C0, I2C1, I2C2 } + +/* ---------------------------------------------------------------------------- + -- I2C - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2C_Register_Accessor_Macros I2C - Register accessor macros + * @{ + */ + + +/* I2C - Register instance definitions */ +/* I2C0 */ +#define I2C0_A1 I2C_A1_REG(I2C0) +#define I2C0_F I2C_F_REG(I2C0) +#define I2C0_C1 I2C_C1_REG(I2C0) +#define I2C0_S I2C_S_REG(I2C0) +#define I2C0_D I2C_D_REG(I2C0) +#define I2C0_C2 I2C_C2_REG(I2C0) +#define I2C0_FLT I2C_FLT_REG(I2C0) +#define I2C0_RA I2C_RA_REG(I2C0) +#define I2C0_SMB I2C_SMB_REG(I2C0) +#define I2C0_A2 I2C_A2_REG(I2C0) +#define I2C0_SLTH I2C_SLTH_REG(I2C0) +#define I2C0_SLTL I2C_SLTL_REG(I2C0) +/* I2C1 */ +#define I2C1_A1 I2C_A1_REG(I2C1) +#define I2C1_F I2C_F_REG(I2C1) +#define I2C1_C1 I2C_C1_REG(I2C1) +#define I2C1_S I2C_S_REG(I2C1) +#define I2C1_D I2C_D_REG(I2C1) +#define I2C1_C2 I2C_C2_REG(I2C1) +#define I2C1_FLT I2C_FLT_REG(I2C1) +#define I2C1_RA I2C_RA_REG(I2C1) +#define I2C1_SMB I2C_SMB_REG(I2C1) +#define I2C1_A2 I2C_A2_REG(I2C1) +#define I2C1_SLTH I2C_SLTH_REG(I2C1) +#define I2C1_SLTL I2C_SLTL_REG(I2C1) +/* I2C2 */ +#define I2C2_A1 I2C_A1_REG(I2C2) +#define I2C2_F I2C_F_REG(I2C2) +#define I2C2_C1 I2C_C1_REG(I2C2) +#define I2C2_S I2C_S_REG(I2C2) +#define I2C2_D I2C_D_REG(I2C2) +#define I2C2_C2 I2C_C2_REG(I2C2) +#define I2C2_FLT I2C_FLT_REG(I2C2) +#define I2C2_RA I2C_RA_REG(I2C2) +#define I2C2_SMB I2C_SMB_REG(I2C2) +#define I2C2_A2 I2C_A2_REG(I2C2) +#define I2C2_SLTH I2C_SLTH_REG(I2C2) +#define I2C2_SLTL I2C_SLTL_REG(I2C2) + +/*! + * @} + */ /* end of group I2C_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group I2C_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- I2S Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2S_Peripheral_Access_Layer I2S Peripheral Access Layer + * @{ + */ + +/** I2S - Register Layout Typedef */ +typedef struct { + __IO uint32_t TCSR; /**< SAI Transmit Control Register, offset: 0x0 */ + __IO uint32_t TCR1; /**< SAI Transmit Configuration 1 Register, offset: 0x4 */ + __IO uint32_t TCR2; /**< SAI Transmit Configuration 2 Register, offset: 0x8 */ + __IO uint32_t TCR3; /**< SAI Transmit Configuration 3 Register, offset: 0xC */ + __IO uint32_t TCR4; /**< SAI Transmit Configuration 4 Register, offset: 0x10 */ + __IO uint32_t TCR5; /**< SAI Transmit Configuration 5 Register, offset: 0x14 */ + uint8_t RESERVED_0[8]; + __O uint32_t TDR[2]; /**< SAI Transmit Data Register, array offset: 0x20, array step: 0x4 */ + uint8_t RESERVED_1[24]; + __I uint32_t TFR[2]; /**< SAI Transmit FIFO Register, array offset: 0x40, array step: 0x4 */ + uint8_t RESERVED_2[24]; + __IO uint32_t TMR; /**< SAI Transmit Mask Register, offset: 0x60 */ + uint8_t RESERVED_3[28]; + __IO uint32_t RCSR; /**< SAI Receive Control Register, offset: 0x80 */ + __IO uint32_t RCR1; /**< SAI Receive Configuration 1 Register, offset: 0x84 */ + __IO uint32_t RCR2; /**< SAI Receive Configuration 2 Register, offset: 0x88 */ + __IO uint32_t RCR3; /**< SAI Receive Configuration 3 Register, offset: 0x8C */ + __IO uint32_t RCR4; /**< SAI Receive Configuration 4 Register, offset: 0x90 */ + __IO uint32_t RCR5; /**< SAI Receive Configuration 5 Register, offset: 0x94 */ + uint8_t RESERVED_4[8]; + __I uint32_t RDR[2]; /**< SAI Receive Data Register, array offset: 0xA0, array step: 0x4 */ + uint8_t RESERVED_5[24]; + __I uint32_t RFR[2]; /**< SAI Receive FIFO Register, array offset: 0xC0, array step: 0x4 */ + uint8_t RESERVED_6[24]; + __IO uint32_t RMR; /**< SAI Receive Mask Register, offset: 0xE0 */ + uint8_t RESERVED_7[28]; + __IO uint32_t MCR; /**< SAI MCLK Control Register, offset: 0x100 */ + __IO uint32_t MDR; /**< SAI MCLK Divide Register, offset: 0x104 */ +} I2S_Type, *I2S_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- I2S - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2S_Register_Accessor_Macros I2S - Register accessor macros + * @{ + */ + + +/* I2S - Register accessors */ +#define I2S_TCSR_REG(base) ((base)->TCSR) +#define I2S_TCR1_REG(base) ((base)->TCR1) +#define I2S_TCR2_REG(base) ((base)->TCR2) +#define I2S_TCR3_REG(base) ((base)->TCR3) +#define I2S_TCR4_REG(base) ((base)->TCR4) +#define I2S_TCR5_REG(base) ((base)->TCR5) +#define I2S_TDR_REG(base,index) ((base)->TDR[index]) +#define I2S_TFR_REG(base,index) ((base)->TFR[index]) +#define I2S_TMR_REG(base) ((base)->TMR) +#define I2S_RCSR_REG(base) ((base)->RCSR) +#define I2S_RCR1_REG(base) ((base)->RCR1) +#define I2S_RCR2_REG(base) ((base)->RCR2) +#define I2S_RCR3_REG(base) ((base)->RCR3) +#define I2S_RCR4_REG(base) ((base)->RCR4) +#define I2S_RCR5_REG(base) ((base)->RCR5) +#define I2S_RDR_REG(base,index) ((base)->RDR[index]) +#define I2S_RFR_REG(base,index) ((base)->RFR[index]) +#define I2S_RMR_REG(base) ((base)->RMR) +#define I2S_MCR_REG(base) ((base)->MCR) +#define I2S_MDR_REG(base) ((base)->MDR) + +/*! + * @} + */ /* end of group I2S_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- I2S Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2S_Register_Masks I2S Register Masks + * @{ + */ + +/* TCSR Bit Fields */ +#define I2S_TCSR_FRDE_MASK 0x1u +#define I2S_TCSR_FRDE_SHIFT 0 +#define I2S_TCSR_FWDE_MASK 0x2u +#define I2S_TCSR_FWDE_SHIFT 1 +#define I2S_TCSR_FRIE_MASK 0x100u +#define I2S_TCSR_FRIE_SHIFT 8 +#define I2S_TCSR_FWIE_MASK 0x200u +#define I2S_TCSR_FWIE_SHIFT 9 +#define I2S_TCSR_FEIE_MASK 0x400u +#define I2S_TCSR_FEIE_SHIFT 10 +#define I2S_TCSR_SEIE_MASK 0x800u +#define I2S_TCSR_SEIE_SHIFT 11 +#define I2S_TCSR_WSIE_MASK 0x1000u +#define I2S_TCSR_WSIE_SHIFT 12 +#define I2S_TCSR_FRF_MASK 0x10000u +#define I2S_TCSR_FRF_SHIFT 16 +#define I2S_TCSR_FWF_MASK 0x20000u +#define I2S_TCSR_FWF_SHIFT 17 +#define I2S_TCSR_FEF_MASK 0x40000u +#define I2S_TCSR_FEF_SHIFT 18 +#define I2S_TCSR_SEF_MASK 0x80000u +#define I2S_TCSR_SEF_SHIFT 19 +#define I2S_TCSR_WSF_MASK 0x100000u +#define I2S_TCSR_WSF_SHIFT 20 +#define I2S_TCSR_SR_MASK 0x1000000u +#define I2S_TCSR_SR_SHIFT 24 +#define I2S_TCSR_FR_MASK 0x2000000u +#define I2S_TCSR_FR_SHIFT 25 +#define I2S_TCSR_BCE_MASK 0x10000000u +#define I2S_TCSR_BCE_SHIFT 28 +#define I2S_TCSR_DBGE_MASK 0x20000000u +#define I2S_TCSR_DBGE_SHIFT 29 +#define I2S_TCSR_STOPE_MASK 0x40000000u +#define I2S_TCSR_STOPE_SHIFT 30 +#define I2S_TCSR_TE_MASK 0x80000000u +#define I2S_TCSR_TE_SHIFT 31 +/* TCR1 Bit Fields */ +#define I2S_TCR1_TFW_MASK 0x7u +#define I2S_TCR1_TFW_SHIFT 0 +#define I2S_TCR1_TFW(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR1_TFW_SHIFT))&I2S_TCR1_TFW_MASK) +/* TCR2 Bit Fields */ +#define I2S_TCR2_DIV_MASK 0xFFu +#define I2S_TCR2_DIV_SHIFT 0 +#define I2S_TCR2_DIV(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR2_DIV_SHIFT))&I2S_TCR2_DIV_MASK) +#define I2S_TCR2_BCD_MASK 0x1000000u +#define I2S_TCR2_BCD_SHIFT 24 +#define I2S_TCR2_BCP_MASK 0x2000000u +#define I2S_TCR2_BCP_SHIFT 25 +#define I2S_TCR2_MSEL_MASK 0xC000000u +#define I2S_TCR2_MSEL_SHIFT 26 +#define I2S_TCR2_MSEL(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR2_MSEL_SHIFT))&I2S_TCR2_MSEL_MASK) +#define I2S_TCR2_BCI_MASK 0x10000000u +#define I2S_TCR2_BCI_SHIFT 28 +#define I2S_TCR2_BCS_MASK 0x20000000u +#define I2S_TCR2_BCS_SHIFT 29 +#define I2S_TCR2_SYNC_MASK 0xC0000000u +#define I2S_TCR2_SYNC_SHIFT 30 +#define I2S_TCR2_SYNC(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR2_SYNC_SHIFT))&I2S_TCR2_SYNC_MASK) +/* TCR3 Bit Fields */ +#define I2S_TCR3_WDFL_MASK 0x1Fu +#define I2S_TCR3_WDFL_SHIFT 0 +#define I2S_TCR3_WDFL(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR3_WDFL_SHIFT))&I2S_TCR3_WDFL_MASK) +#define I2S_TCR3_TCE_MASK 0x30000u +#define I2S_TCR3_TCE_SHIFT 16 +#define I2S_TCR3_TCE(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR3_TCE_SHIFT))&I2S_TCR3_TCE_MASK) +/* TCR4 Bit Fields */ +#define I2S_TCR4_FSD_MASK 0x1u +#define I2S_TCR4_FSD_SHIFT 0 +#define I2S_TCR4_FSP_MASK 0x2u +#define I2S_TCR4_FSP_SHIFT 1 +#define I2S_TCR4_FSE_MASK 0x8u +#define I2S_TCR4_FSE_SHIFT 3 +#define I2S_TCR4_MF_MASK 0x10u +#define I2S_TCR4_MF_SHIFT 4 +#define I2S_TCR4_SYWD_MASK 0x1F00u +#define I2S_TCR4_SYWD_SHIFT 8 +#define I2S_TCR4_SYWD(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR4_SYWD_SHIFT))&I2S_TCR4_SYWD_MASK) +#define I2S_TCR4_FRSZ_MASK 0x1F0000u +#define I2S_TCR4_FRSZ_SHIFT 16 +#define I2S_TCR4_FRSZ(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR4_FRSZ_SHIFT))&I2S_TCR4_FRSZ_MASK) +/* TCR5 Bit Fields */ +#define I2S_TCR5_FBT_MASK 0x1F00u +#define I2S_TCR5_FBT_SHIFT 8 +#define I2S_TCR5_FBT(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR5_FBT_SHIFT))&I2S_TCR5_FBT_MASK) +#define I2S_TCR5_W0W_MASK 0x1F0000u +#define I2S_TCR5_W0W_SHIFT 16 +#define I2S_TCR5_W0W(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR5_W0W_SHIFT))&I2S_TCR5_W0W_MASK) +#define I2S_TCR5_WNW_MASK 0x1F000000u +#define I2S_TCR5_WNW_SHIFT 24 +#define I2S_TCR5_WNW(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR5_WNW_SHIFT))&I2S_TCR5_WNW_MASK) +/* TDR Bit Fields */ +#define I2S_TDR_TDR_MASK 0xFFFFFFFFu +#define I2S_TDR_TDR_SHIFT 0 +#define I2S_TDR_TDR(x) (((uint32_t)(((uint32_t)(x))<<I2S_TDR_TDR_SHIFT))&I2S_TDR_TDR_MASK) +/* TFR Bit Fields */ +#define I2S_TFR_RFP_MASK 0xFu +#define I2S_TFR_RFP_SHIFT 0 +#define I2S_TFR_RFP(x) (((uint32_t)(((uint32_t)(x))<<I2S_TFR_RFP_SHIFT))&I2S_TFR_RFP_MASK) +#define I2S_TFR_WFP_MASK 0xF0000u +#define I2S_TFR_WFP_SHIFT 16 +#define I2S_TFR_WFP(x) (((uint32_t)(((uint32_t)(x))<<I2S_TFR_WFP_SHIFT))&I2S_TFR_WFP_MASK) +/* TMR Bit Fields */ +#define I2S_TMR_TWM_MASK 0xFFFFFFFFu +#define I2S_TMR_TWM_SHIFT 0 +#define I2S_TMR_TWM(x) (((uint32_t)(((uint32_t)(x))<<I2S_TMR_TWM_SHIFT))&I2S_TMR_TWM_MASK) +/* RCSR Bit Fields */ +#define I2S_RCSR_FRDE_MASK 0x1u +#define I2S_RCSR_FRDE_SHIFT 0 +#define I2S_RCSR_FWDE_MASK 0x2u +#define I2S_RCSR_FWDE_SHIFT 1 +#define I2S_RCSR_FRIE_MASK 0x100u +#define I2S_RCSR_FRIE_SHIFT 8 +#define I2S_RCSR_FWIE_MASK 0x200u +#define I2S_RCSR_FWIE_SHIFT 9 +#define I2S_RCSR_FEIE_MASK 0x400u +#define I2S_RCSR_FEIE_SHIFT 10 +#define I2S_RCSR_SEIE_MASK 0x800u +#define I2S_RCSR_SEIE_SHIFT 11 +#define I2S_RCSR_WSIE_MASK 0x1000u +#define I2S_RCSR_WSIE_SHIFT 12 +#define I2S_RCSR_FRF_MASK 0x10000u +#define I2S_RCSR_FRF_SHIFT 16 +#define I2S_RCSR_FWF_MASK 0x20000u +#define I2S_RCSR_FWF_SHIFT 17 +#define I2S_RCSR_FEF_MASK 0x40000u +#define I2S_RCSR_FEF_SHIFT 18 +#define I2S_RCSR_SEF_MASK 0x80000u +#define I2S_RCSR_SEF_SHIFT 19 +#define I2S_RCSR_WSF_MASK 0x100000u +#define I2S_RCSR_WSF_SHIFT 20 +#define I2S_RCSR_SR_MASK 0x1000000u +#define I2S_RCSR_SR_SHIFT 24 +#define I2S_RCSR_FR_MASK 0x2000000u +#define I2S_RCSR_FR_SHIFT 25 +#define I2S_RCSR_BCE_MASK 0x10000000u +#define I2S_RCSR_BCE_SHIFT 28 +#define I2S_RCSR_DBGE_MASK 0x20000000u +#define I2S_RCSR_DBGE_SHIFT 29 +#define I2S_RCSR_STOPE_MASK 0x40000000u +#define I2S_RCSR_STOPE_SHIFT 30 +#define I2S_RCSR_RE_MASK 0x80000000u +#define I2S_RCSR_RE_SHIFT 31 +/* RCR1 Bit Fields */ +#define I2S_RCR1_RFW_MASK 0x7u +#define I2S_RCR1_RFW_SHIFT 0 +#define I2S_RCR1_RFW(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR1_RFW_SHIFT))&I2S_RCR1_RFW_MASK) +/* RCR2 Bit Fields */ +#define I2S_RCR2_DIV_MASK 0xFFu +#define I2S_RCR2_DIV_SHIFT 0 +#define I2S_RCR2_DIV(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR2_DIV_SHIFT))&I2S_RCR2_DIV_MASK) +#define I2S_RCR2_BCD_MASK 0x1000000u +#define I2S_RCR2_BCD_SHIFT 24 +#define I2S_RCR2_BCP_MASK 0x2000000u +#define I2S_RCR2_BCP_SHIFT 25 +#define I2S_RCR2_MSEL_MASK 0xC000000u +#define I2S_RCR2_MSEL_SHIFT 26 +#define I2S_RCR2_MSEL(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR2_MSEL_SHIFT))&I2S_RCR2_MSEL_MASK) +#define I2S_RCR2_BCI_MASK 0x10000000u +#define I2S_RCR2_BCI_SHIFT 28 +#define I2S_RCR2_BCS_MASK 0x20000000u +#define I2S_RCR2_BCS_SHIFT 29 +#define I2S_RCR2_SYNC_MASK 0xC0000000u +#define I2S_RCR2_SYNC_SHIFT 30 +#define I2S_RCR2_SYNC(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR2_SYNC_SHIFT))&I2S_RCR2_SYNC_MASK) +/* RCR3 Bit Fields */ +#define I2S_RCR3_WDFL_MASK 0x1Fu +#define I2S_RCR3_WDFL_SHIFT 0 +#define I2S_RCR3_WDFL(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR3_WDFL_SHIFT))&I2S_RCR3_WDFL_MASK) +#define I2S_RCR3_RCE_MASK 0x30000u +#define I2S_RCR3_RCE_SHIFT 16 +#define I2S_RCR3_RCE(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR3_RCE_SHIFT))&I2S_RCR3_RCE_MASK) +/* RCR4 Bit Fields */ +#define I2S_RCR4_FSD_MASK 0x1u +#define I2S_RCR4_FSD_SHIFT 0 +#define I2S_RCR4_FSP_MASK 0x2u +#define I2S_RCR4_FSP_SHIFT 1 +#define I2S_RCR4_FSE_MASK 0x8u +#define I2S_RCR4_FSE_SHIFT 3 +#define I2S_RCR4_MF_MASK 0x10u +#define I2S_RCR4_MF_SHIFT 4 +#define I2S_RCR4_SYWD_MASK 0x1F00u +#define I2S_RCR4_SYWD_SHIFT 8 +#define I2S_RCR4_SYWD(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR4_SYWD_SHIFT))&I2S_RCR4_SYWD_MASK) +#define I2S_RCR4_FRSZ_MASK 0x1F0000u +#define I2S_RCR4_FRSZ_SHIFT 16 +#define I2S_RCR4_FRSZ(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR4_FRSZ_SHIFT))&I2S_RCR4_FRSZ_MASK) +/* RCR5 Bit Fields */ +#define I2S_RCR5_FBT_MASK 0x1F00u +#define I2S_RCR5_FBT_SHIFT 8 +#define I2S_RCR5_FBT(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR5_FBT_SHIFT))&I2S_RCR5_FBT_MASK) +#define I2S_RCR5_W0W_MASK 0x1F0000u +#define I2S_RCR5_W0W_SHIFT 16 +#define I2S_RCR5_W0W(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR5_W0W_SHIFT))&I2S_RCR5_W0W_MASK) +#define I2S_RCR5_WNW_MASK 0x1F000000u +#define I2S_RCR5_WNW_SHIFT 24 +#define I2S_RCR5_WNW(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR5_WNW_SHIFT))&I2S_RCR5_WNW_MASK) +/* RDR Bit Fields */ +#define I2S_RDR_RDR_MASK 0xFFFFFFFFu +#define I2S_RDR_RDR_SHIFT 0 +#define I2S_RDR_RDR(x) (((uint32_t)(((uint32_t)(x))<<I2S_RDR_RDR_SHIFT))&I2S_RDR_RDR_MASK) +/* RFR Bit Fields */ +#define I2S_RFR_RFP_MASK 0xFu +#define I2S_RFR_RFP_SHIFT 0 +#define I2S_RFR_RFP(x) (((uint32_t)(((uint32_t)(x))<<I2S_RFR_RFP_SHIFT))&I2S_RFR_RFP_MASK) +#define I2S_RFR_WFP_MASK 0xF0000u +#define I2S_RFR_WFP_SHIFT 16 +#define I2S_RFR_WFP(x) (((uint32_t)(((uint32_t)(x))<<I2S_RFR_WFP_SHIFT))&I2S_RFR_WFP_MASK) +/* RMR Bit Fields */ +#define I2S_RMR_RWM_MASK 0xFFFFFFFFu +#define I2S_RMR_RWM_SHIFT 0 +#define I2S_RMR_RWM(x) (((uint32_t)(((uint32_t)(x))<<I2S_RMR_RWM_SHIFT))&I2S_RMR_RWM_MASK) +/* MCR Bit Fields */ +#define I2S_MCR_MICS_MASK 0x3000000u +#define I2S_MCR_MICS_SHIFT 24 +#define I2S_MCR_MICS(x) (((uint32_t)(((uint32_t)(x))<<I2S_MCR_MICS_SHIFT))&I2S_MCR_MICS_MASK) +#define I2S_MCR_MOE_MASK 0x40000000u +#define I2S_MCR_MOE_SHIFT 30 +#define I2S_MCR_DUF_MASK 0x80000000u +#define I2S_MCR_DUF_SHIFT 31 +/* MDR Bit Fields */ +#define I2S_MDR_DIVIDE_MASK 0xFFFu +#define I2S_MDR_DIVIDE_SHIFT 0 +#define I2S_MDR_DIVIDE(x) (((uint32_t)(((uint32_t)(x))<<I2S_MDR_DIVIDE_SHIFT))&I2S_MDR_DIVIDE_MASK) +#define I2S_MDR_FRACT_MASK 0xFF000u +#define I2S_MDR_FRACT_SHIFT 12 +#define I2S_MDR_FRACT(x) (((uint32_t)(((uint32_t)(x))<<I2S_MDR_FRACT_SHIFT))&I2S_MDR_FRACT_MASK) + +/*! + * @} + */ /* end of group I2S_Register_Masks */ + + +/* I2S - Peripheral instance base addresses */ +/** Peripheral I2S0 base address */ +#define I2S0_BASE (0x4002F000u) +/** Peripheral I2S0 base pointer */ +#define I2S0 ((I2S_Type *)I2S0_BASE) +#define I2S0_BASE_PTR (I2S0) +/** Array initializer of I2S peripheral base pointers */ +#define I2S_BASES { I2S0 } + +/* ---------------------------------------------------------------------------- + -- I2S - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2S_Register_Accessor_Macros I2S - Register accessor macros + * @{ + */ + + +/* I2S - Register instance definitions */ +/* I2S0 */ +#define I2S0_TCSR I2S_TCSR_REG(I2S0) +#define I2S0_TCR1 I2S_TCR1_REG(I2S0) +#define I2S0_TCR2 I2S_TCR2_REG(I2S0) +#define I2S0_TCR3 I2S_TCR3_REG(I2S0) +#define I2S0_TCR4 I2S_TCR4_REG(I2S0) +#define I2S0_TCR5 I2S_TCR5_REG(I2S0) +#define I2S0_TDR0 I2S_TDR_REG(I2S0,0) +#define I2S0_TDR1 I2S_TDR_REG(I2S0,1) +#define I2S0_TFR0 I2S_TFR_REG(I2S0,0) +#define I2S0_TFR1 I2S_TFR_REG(I2S0,1) +#define I2S0_TMR I2S_TMR_REG(I2S0) +#define I2S0_RCSR I2S_RCSR_REG(I2S0) +#define I2S0_RCR1 I2S_RCR1_REG(I2S0) +#define I2S0_RCR2 I2S_RCR2_REG(I2S0) +#define I2S0_RCR3 I2S_RCR3_REG(I2S0) +#define I2S0_RCR4 I2S_RCR4_REG(I2S0) +#define I2S0_RCR5 I2S_RCR5_REG(I2S0) +#define I2S0_RDR0 I2S_RDR_REG(I2S0,0) +#define I2S0_RDR1 I2S_RDR_REG(I2S0,1) +#define I2S0_RFR0 I2S_RFR_REG(I2S0,0) +#define I2S0_RFR1 I2S_RFR_REG(I2S0,1) +#define I2S0_RMR I2S_RMR_REG(I2S0) +#define I2S0_MCR I2S_MCR_REG(I2S0) +#define I2S0_MDR I2S_MDR_REG(I2S0) + +/* I2S - Register array accessors */ +#define I2S0_TDR(index) I2S_TDR_REG(I2S0,index) +#define I2S0_TFR(index) I2S_TFR_REG(I2S0,index) +#define I2S0_RDR(index) I2S_RDR_REG(I2S0,index) +#define I2S0_RFR(index) I2S_RFR_REG(I2S0,index) + +/*! + * @} + */ /* end of group I2S_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group I2S_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- LLWU Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LLWU_Peripheral_Access_Layer LLWU Peripheral Access Layer + * @{ + */ + +/** LLWU - Register Layout Typedef */ +typedef struct { + __IO uint8_t PE1; /**< LLWU Pin Enable 1 register, offset: 0x0 */ + __IO uint8_t PE2; /**< LLWU Pin Enable 2 register, offset: 0x1 */ + __IO uint8_t PE3; /**< LLWU Pin Enable 3 register, offset: 0x2 */ + __IO uint8_t PE4; /**< LLWU Pin Enable 4 register, offset: 0x3 */ + __IO uint8_t ME; /**< LLWU Module Enable register, offset: 0x4 */ + __IO uint8_t F1; /**< LLWU Flag 1 register, offset: 0x5 */ + __IO uint8_t F2; /**< LLWU Flag 2 register, offset: 0x6 */ + __I uint8_t F3; /**< LLWU Flag 3 register, offset: 0x7 */ + __IO uint8_t FILT1; /**< LLWU Pin Filter 1 register, offset: 0x8 */ + __IO uint8_t FILT2; /**< LLWU Pin Filter 2 register, offset: 0x9 */ + __IO uint8_t RST; /**< LLWU Reset Enable register, offset: 0xA */ +} LLWU_Type, *LLWU_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- LLWU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LLWU_Register_Accessor_Macros LLWU - Register accessor macros + * @{ + */ + + +/* LLWU - Register accessors */ +#define LLWU_PE1_REG(base) ((base)->PE1) +#define LLWU_PE2_REG(base) ((base)->PE2) +#define LLWU_PE3_REG(base) ((base)->PE3) +#define LLWU_PE4_REG(base) ((base)->PE4) +#define LLWU_ME_REG(base) ((base)->ME) +#define LLWU_F1_REG(base) ((base)->F1) +#define LLWU_F2_REG(base) ((base)->F2) +#define LLWU_F3_REG(base) ((base)->F3) +#define LLWU_FILT1_REG(base) ((base)->FILT1) +#define LLWU_FILT2_REG(base) ((base)->FILT2) +#define LLWU_RST_REG(base) ((base)->RST) + +/*! + * @} + */ /* end of group LLWU_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- LLWU Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LLWU_Register_Masks LLWU Register Masks + * @{ + */ + +/* PE1 Bit Fields */ +#define LLWU_PE1_WUPE0_MASK 0x3u +#define LLWU_PE1_WUPE0_SHIFT 0 +#define LLWU_PE1_WUPE0(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE0_SHIFT))&LLWU_PE1_WUPE0_MASK) +#define LLWU_PE1_WUPE1_MASK 0xCu +#define LLWU_PE1_WUPE1_SHIFT 2 +#define LLWU_PE1_WUPE1(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE1_SHIFT))&LLWU_PE1_WUPE1_MASK) +#define LLWU_PE1_WUPE2_MASK 0x30u +#define LLWU_PE1_WUPE2_SHIFT 4 +#define LLWU_PE1_WUPE2(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE2_SHIFT))&LLWU_PE1_WUPE2_MASK) +#define LLWU_PE1_WUPE3_MASK 0xC0u +#define LLWU_PE1_WUPE3_SHIFT 6 +#define LLWU_PE1_WUPE3(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE3_SHIFT))&LLWU_PE1_WUPE3_MASK) +/* PE2 Bit Fields */ +#define LLWU_PE2_WUPE4_MASK 0x3u +#define LLWU_PE2_WUPE4_SHIFT 0 +#define LLWU_PE2_WUPE4(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE4_SHIFT))&LLWU_PE2_WUPE4_MASK) +#define LLWU_PE2_WUPE5_MASK 0xCu +#define LLWU_PE2_WUPE5_SHIFT 2 +#define LLWU_PE2_WUPE5(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE5_SHIFT))&LLWU_PE2_WUPE5_MASK) +#define LLWU_PE2_WUPE6_MASK 0x30u +#define LLWU_PE2_WUPE6_SHIFT 4 +#define LLWU_PE2_WUPE6(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE6_SHIFT))&LLWU_PE2_WUPE6_MASK) +#define LLWU_PE2_WUPE7_MASK 0xC0u +#define LLWU_PE2_WUPE7_SHIFT 6 +#define LLWU_PE2_WUPE7(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE7_SHIFT))&LLWU_PE2_WUPE7_MASK) +/* PE3 Bit Fields */ +#define LLWU_PE3_WUPE8_MASK 0x3u +#define LLWU_PE3_WUPE8_SHIFT 0 +#define LLWU_PE3_WUPE8(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE8_SHIFT))&LLWU_PE3_WUPE8_MASK) +#define LLWU_PE3_WUPE9_MASK 0xCu +#define LLWU_PE3_WUPE9_SHIFT 2 +#define LLWU_PE3_WUPE9(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE9_SHIFT))&LLWU_PE3_WUPE9_MASK) +#define LLWU_PE3_WUPE10_MASK 0x30u +#define LLWU_PE3_WUPE10_SHIFT 4 +#define LLWU_PE3_WUPE10(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE10_SHIFT))&LLWU_PE3_WUPE10_MASK) +#define LLWU_PE3_WUPE11_MASK 0xC0u +#define LLWU_PE3_WUPE11_SHIFT 6 +#define LLWU_PE3_WUPE11(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE11_SHIFT))&LLWU_PE3_WUPE11_MASK) +/* PE4 Bit Fields */ +#define LLWU_PE4_WUPE12_MASK 0x3u +#define LLWU_PE4_WUPE12_SHIFT 0 +#define LLWU_PE4_WUPE12(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE12_SHIFT))&LLWU_PE4_WUPE12_MASK) +#define LLWU_PE4_WUPE13_MASK 0xCu +#define LLWU_PE4_WUPE13_SHIFT 2 +#define LLWU_PE4_WUPE13(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE13_SHIFT))&LLWU_PE4_WUPE13_MASK) +#define LLWU_PE4_WUPE14_MASK 0x30u +#define LLWU_PE4_WUPE14_SHIFT 4 +#define LLWU_PE4_WUPE14(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE14_SHIFT))&LLWU_PE4_WUPE14_MASK) +#define LLWU_PE4_WUPE15_MASK 0xC0u +#define LLWU_PE4_WUPE15_SHIFT 6 +#define LLWU_PE4_WUPE15(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE15_SHIFT))&LLWU_PE4_WUPE15_MASK) +/* ME Bit Fields */ +#define LLWU_ME_WUME0_MASK 0x1u +#define LLWU_ME_WUME0_SHIFT 0 +#define LLWU_ME_WUME1_MASK 0x2u +#define LLWU_ME_WUME1_SHIFT 1 +#define LLWU_ME_WUME2_MASK 0x4u +#define LLWU_ME_WUME2_SHIFT 2 +#define LLWU_ME_WUME3_MASK 0x8u +#define LLWU_ME_WUME3_SHIFT 3 +#define LLWU_ME_WUME4_MASK 0x10u +#define LLWU_ME_WUME4_SHIFT 4 +#define LLWU_ME_WUME5_MASK 0x20u +#define LLWU_ME_WUME5_SHIFT 5 +#define LLWU_ME_WUME6_MASK 0x40u +#define LLWU_ME_WUME6_SHIFT 6 +#define LLWU_ME_WUME7_MASK 0x80u +#define LLWU_ME_WUME7_SHIFT 7 +/* F1 Bit Fields */ +#define LLWU_F1_WUF0_MASK 0x1u +#define LLWU_F1_WUF0_SHIFT 0 +#define LLWU_F1_WUF1_MASK 0x2u +#define LLWU_F1_WUF1_SHIFT 1 +#define LLWU_F1_WUF2_MASK 0x4u +#define LLWU_F1_WUF2_SHIFT 2 +#define LLWU_F1_WUF3_MASK 0x8u +#define LLWU_F1_WUF3_SHIFT 3 +#define LLWU_F1_WUF4_MASK 0x10u +#define LLWU_F1_WUF4_SHIFT 4 +#define LLWU_F1_WUF5_MASK 0x20u +#define LLWU_F1_WUF5_SHIFT 5 +#define LLWU_F1_WUF6_MASK 0x40u +#define LLWU_F1_WUF6_SHIFT 6 +#define LLWU_F1_WUF7_MASK 0x80u +#define LLWU_F1_WUF7_SHIFT 7 +/* F2 Bit Fields */ +#define LLWU_F2_WUF8_MASK 0x1u +#define LLWU_F2_WUF8_SHIFT 0 +#define LLWU_F2_WUF9_MASK 0x2u +#define LLWU_F2_WUF9_SHIFT 1 +#define LLWU_F2_WUF10_MASK 0x4u +#define LLWU_F2_WUF10_SHIFT 2 +#define LLWU_F2_WUF11_MASK 0x8u +#define LLWU_F2_WUF11_SHIFT 3 +#define LLWU_F2_WUF12_MASK 0x10u +#define LLWU_F2_WUF12_SHIFT 4 +#define LLWU_F2_WUF13_MASK 0x20u +#define LLWU_F2_WUF13_SHIFT 5 +#define LLWU_F2_WUF14_MASK 0x40u +#define LLWU_F2_WUF14_SHIFT 6 +#define LLWU_F2_WUF15_MASK 0x80u +#define LLWU_F2_WUF15_SHIFT 7 +/* F3 Bit Fields */ +#define LLWU_F3_MWUF0_MASK 0x1u +#define LLWU_F3_MWUF0_SHIFT 0 +#define LLWU_F3_MWUF1_MASK 0x2u +#define LLWU_F3_MWUF1_SHIFT 1 +#define LLWU_F3_MWUF2_MASK 0x4u +#define LLWU_F3_MWUF2_SHIFT 2 +#define LLWU_F3_MWUF3_MASK 0x8u +#define LLWU_F3_MWUF3_SHIFT 3 +#define LLWU_F3_MWUF4_MASK 0x10u +#define LLWU_F3_MWUF4_SHIFT 4 +#define LLWU_F3_MWUF5_MASK 0x20u +#define LLWU_F3_MWUF5_SHIFT 5 +#define LLWU_F3_MWUF6_MASK 0x40u +#define LLWU_F3_MWUF6_SHIFT 6 +#define LLWU_F3_MWUF7_MASK 0x80u +#define LLWU_F3_MWUF7_SHIFT 7 +/* FILT1 Bit Fields */ +#define LLWU_FILT1_FILTSEL_MASK 0xFu +#define LLWU_FILT1_FILTSEL_SHIFT 0 +#define LLWU_FILT1_FILTSEL(x) (((uint8_t)(((uint8_t)(x))<<LLWU_FILT1_FILTSEL_SHIFT))&LLWU_FILT1_FILTSEL_MASK) +#define LLWU_FILT1_FILTE_MASK 0x60u +#define LLWU_FILT1_FILTE_SHIFT 5 +#define LLWU_FILT1_FILTE(x) (((uint8_t)(((uint8_t)(x))<<LLWU_FILT1_FILTE_SHIFT))&LLWU_FILT1_FILTE_MASK) +#define LLWU_FILT1_FILTF_MASK 0x80u +#define LLWU_FILT1_FILTF_SHIFT 7 +/* FILT2 Bit Fields */ +#define LLWU_FILT2_FILTSEL_MASK 0xFu +#define LLWU_FILT2_FILTSEL_SHIFT 0 +#define LLWU_FILT2_FILTSEL(x) (((uint8_t)(((uint8_t)(x))<<LLWU_FILT2_FILTSEL_SHIFT))&LLWU_FILT2_FILTSEL_MASK) +#define LLWU_FILT2_FILTE_MASK 0x60u +#define LLWU_FILT2_FILTE_SHIFT 5 +#define LLWU_FILT2_FILTE(x) (((uint8_t)(((uint8_t)(x))<<LLWU_FILT2_FILTE_SHIFT))&LLWU_FILT2_FILTE_MASK) +#define LLWU_FILT2_FILTF_MASK 0x80u +#define LLWU_FILT2_FILTF_SHIFT 7 +/* RST Bit Fields */ +#define LLWU_RST_RSTFILT_MASK 0x1u +#define LLWU_RST_RSTFILT_SHIFT 0 +#define LLWU_RST_LLRSTE_MASK 0x2u +#define LLWU_RST_LLRSTE_SHIFT 1 + +/*! + * @} + */ /* end of group LLWU_Register_Masks */ + + +/* LLWU - Peripheral instance base addresses */ +/** Peripheral LLWU base address */ +#define LLWU_BASE (0x4007C000u) +/** Peripheral LLWU base pointer */ +#define LLWU ((LLWU_Type *)LLWU_BASE) +#define LLWU_BASE_PTR (LLWU) +/** Array initializer of LLWU peripheral base pointers */ +#define LLWU_BASES { LLWU } + +/* ---------------------------------------------------------------------------- + -- LLWU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LLWU_Register_Accessor_Macros LLWU - Register accessor macros + * @{ + */ + + +/* LLWU - Register instance definitions */ +/* LLWU */ +#define LLWU_PE1 LLWU_PE1_REG(LLWU) +#define LLWU_PE2 LLWU_PE2_REG(LLWU) +#define LLWU_PE3 LLWU_PE3_REG(LLWU) +#define LLWU_PE4 LLWU_PE4_REG(LLWU) +#define LLWU_ME LLWU_ME_REG(LLWU) +#define LLWU_F1 LLWU_F1_REG(LLWU) +#define LLWU_F2 LLWU_F2_REG(LLWU) +#define LLWU_F3 LLWU_F3_REG(LLWU) +#define LLWU_FILT1 LLWU_FILT1_REG(LLWU) +#define LLWU_FILT2 LLWU_FILT2_REG(LLWU) +#define LLWU_RST LLWU_RST_REG(LLWU) + +/*! + * @} + */ /* end of group LLWU_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group LLWU_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- LPTMR Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LPTMR_Peripheral_Access_Layer LPTMR Peripheral Access Layer + * @{ + */ + +/** LPTMR - Register Layout Typedef */ +typedef struct { + __IO uint32_t CSR; /**< Low Power Timer Control Status Register, offset: 0x0 */ + __IO uint32_t PSR; /**< Low Power Timer Prescale Register, offset: 0x4 */ + __IO uint32_t CMR; /**< Low Power Timer Compare Register, offset: 0x8 */ + __IO uint32_t CNR; /**< Low Power Timer Counter Register, offset: 0xC */ +} LPTMR_Type, *LPTMR_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- LPTMR - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LPTMR_Register_Accessor_Macros LPTMR - Register accessor macros + * @{ + */ + + +/* LPTMR - Register accessors */ +#define LPTMR_CSR_REG(base) ((base)->CSR) +#define LPTMR_PSR_REG(base) ((base)->PSR) +#define LPTMR_CMR_REG(base) ((base)->CMR) +#define LPTMR_CNR_REG(base) ((base)->CNR) + +/*! + * @} + */ /* end of group LPTMR_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- LPTMR Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LPTMR_Register_Masks LPTMR Register Masks + * @{ + */ + +/* CSR Bit Fields */ +#define LPTMR_CSR_TEN_MASK 0x1u +#define LPTMR_CSR_TEN_SHIFT 0 +#define LPTMR_CSR_TMS_MASK 0x2u +#define LPTMR_CSR_TMS_SHIFT 1 +#define LPTMR_CSR_TFC_MASK 0x4u +#define LPTMR_CSR_TFC_SHIFT 2 +#define LPTMR_CSR_TPP_MASK 0x8u +#define LPTMR_CSR_TPP_SHIFT 3 +#define LPTMR_CSR_TPS_MASK 0x30u +#define LPTMR_CSR_TPS_SHIFT 4 +#define LPTMR_CSR_TPS(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_CSR_TPS_SHIFT))&LPTMR_CSR_TPS_MASK) +#define LPTMR_CSR_TIE_MASK 0x40u +#define LPTMR_CSR_TIE_SHIFT 6 +#define LPTMR_CSR_TCF_MASK 0x80u +#define LPTMR_CSR_TCF_SHIFT 7 +/* PSR Bit Fields */ +#define LPTMR_PSR_PCS_MASK 0x3u +#define LPTMR_PSR_PCS_SHIFT 0 +#define LPTMR_PSR_PCS(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_PSR_PCS_SHIFT))&LPTMR_PSR_PCS_MASK) +#define LPTMR_PSR_PBYP_MASK 0x4u +#define LPTMR_PSR_PBYP_SHIFT 2 +#define LPTMR_PSR_PRESCALE_MASK 0x78u +#define LPTMR_PSR_PRESCALE_SHIFT 3 +#define LPTMR_PSR_PRESCALE(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_PSR_PRESCALE_SHIFT))&LPTMR_PSR_PRESCALE_MASK) +/* CMR Bit Fields */ +#define LPTMR_CMR_COMPARE_MASK 0xFFFFu +#define LPTMR_CMR_COMPARE_SHIFT 0 +#define LPTMR_CMR_COMPARE(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_CMR_COMPARE_SHIFT))&LPTMR_CMR_COMPARE_MASK) +/* CNR Bit Fields */ +#define LPTMR_CNR_COUNTER_MASK 0xFFFFu +#define LPTMR_CNR_COUNTER_SHIFT 0 +#define LPTMR_CNR_COUNTER(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_CNR_COUNTER_SHIFT))&LPTMR_CNR_COUNTER_MASK) + +/*! + * @} + */ /* end of group LPTMR_Register_Masks */ + + +/* LPTMR - Peripheral instance base addresses */ +/** Peripheral LPTMR0 base address */ +#define LPTMR0_BASE (0x40040000u) +/** Peripheral LPTMR0 base pointer */ +#define LPTMR0 ((LPTMR_Type *)LPTMR0_BASE) +#define LPTMR0_BASE_PTR (LPTMR0) +/** Array initializer of LPTMR peripheral base pointers */ +#define LPTMR_BASES { LPTMR0 } + +/* ---------------------------------------------------------------------------- + -- LPTMR - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LPTMR_Register_Accessor_Macros LPTMR - Register accessor macros + * @{ + */ + + +/* LPTMR - Register instance definitions */ +/* LPTMR0 */ +#define LPTMR0_CSR LPTMR_CSR_REG(LPTMR0) +#define LPTMR0_PSR LPTMR_PSR_REG(LPTMR0) +#define LPTMR0_CMR LPTMR_CMR_REG(LPTMR0) +#define LPTMR0_CNR LPTMR_CNR_REG(LPTMR0) + +/*! + * @} + */ /* end of group LPTMR_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group LPTMR_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- MCG Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCG_Peripheral_Access_Layer MCG Peripheral Access Layer + * @{ + */ + +/** MCG - Register Layout Typedef */ +typedef struct { + __IO uint8_t C1; /**< MCG Control 1 Register, offset: 0x0 */ + __IO uint8_t C2; /**< MCG Control 2 Register, offset: 0x1 */ + __IO uint8_t C3; /**< MCG Control 3 Register, offset: 0x2 */ + __IO uint8_t C4; /**< MCG Control 4 Register, offset: 0x3 */ + __IO uint8_t C5; /**< MCG Control 5 Register, offset: 0x4 */ + __IO uint8_t C6; /**< MCG Control 6 Register, offset: 0x5 */ + __IO uint8_t S; /**< MCG Status Register, offset: 0x6 */ + uint8_t RESERVED_0[1]; + __IO uint8_t SC; /**< MCG Status and Control Register, offset: 0x8 */ + uint8_t RESERVED_1[1]; + __IO uint8_t ATCVH; /**< MCG Auto Trim Compare Value High Register, offset: 0xA */ + __IO uint8_t ATCVL; /**< MCG Auto Trim Compare Value Low Register, offset: 0xB */ + __IO uint8_t C7; /**< MCG Control 7 Register, offset: 0xC */ + __IO uint8_t C8; /**< MCG Control 8 Register, offset: 0xD */ + __I uint8_t C9; /**< MCG Control 9 Register, offset: 0xE */ +} MCG_Type, *MCG_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- MCG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCG_Register_Accessor_Macros MCG - Register accessor macros + * @{ + */ + + +/* MCG - Register accessors */ +#define MCG_C1_REG(base) ((base)->C1) +#define MCG_C2_REG(base) ((base)->C2) +#define MCG_C3_REG(base) ((base)->C3) +#define MCG_C4_REG(base) ((base)->C4) +#define MCG_C5_REG(base) ((base)->C5) +#define MCG_C6_REG(base) ((base)->C6) +#define MCG_S_REG(base) ((base)->S) +#define MCG_SC_REG(base) ((base)->SC) +#define MCG_ATCVH_REG(base) ((base)->ATCVH) +#define MCG_ATCVL_REG(base) ((base)->ATCVL) +#define MCG_C7_REG(base) ((base)->C7) +#define MCG_C8_REG(base) ((base)->C8) +#define MCG_C9_REG(base) ((base)->C9) + +/*! + * @} + */ /* end of group MCG_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- MCG Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCG_Register_Masks MCG Register Masks + * @{ + */ + +/* C1 Bit Fields */ +#define MCG_C1_IREFSTEN_MASK 0x1u +#define MCG_C1_IREFSTEN_SHIFT 0 +#define MCG_C1_IRCLKEN_MASK 0x2u +#define MCG_C1_IRCLKEN_SHIFT 1 +#define MCG_C1_IREFS_MASK 0x4u +#define MCG_C1_IREFS_SHIFT 2 +#define MCG_C1_FRDIV_MASK 0x38u +#define MCG_C1_FRDIV_SHIFT 3 +#define MCG_C1_FRDIV(x) (((uint8_t)(((uint8_t)(x))<<MCG_C1_FRDIV_SHIFT))&MCG_C1_FRDIV_MASK) +#define MCG_C1_CLKS_MASK 0xC0u +#define MCG_C1_CLKS_SHIFT 6 +#define MCG_C1_CLKS(x) (((uint8_t)(((uint8_t)(x))<<MCG_C1_CLKS_SHIFT))&MCG_C1_CLKS_MASK) +/* C2 Bit Fields */ +#define MCG_C2_IRCS_MASK 0x1u +#define MCG_C2_IRCS_SHIFT 0 +#define MCG_C2_LP_MASK 0x2u +#define MCG_C2_LP_SHIFT 1 +#define MCG_C2_EREFS0_MASK 0x4u +#define MCG_C2_EREFS0_SHIFT 2 +#define MCG_C2_HGO0_MASK 0x8u +#define MCG_C2_HGO0_SHIFT 3 +#define MCG_C2_RANGE0_MASK 0x30u +#define MCG_C2_RANGE0_SHIFT 4 +#define MCG_C2_RANGE0(x) (((uint8_t)(((uint8_t)(x))<<MCG_C2_RANGE0_SHIFT))&MCG_C2_RANGE0_MASK) +#define MCG_C2_FCFTRIM_MASK 0x40u +#define MCG_C2_FCFTRIM_SHIFT 6 +#define MCG_C2_LOCRE0_MASK 0x80u +#define MCG_C2_LOCRE0_SHIFT 7 +/* C3 Bit Fields */ +#define MCG_C3_SCTRIM_MASK 0xFFu +#define MCG_C3_SCTRIM_SHIFT 0 +#define MCG_C3_SCTRIM(x) (((uint8_t)(((uint8_t)(x))<<MCG_C3_SCTRIM_SHIFT))&MCG_C3_SCTRIM_MASK) +/* C4 Bit Fields */ +#define MCG_C4_SCFTRIM_MASK 0x1u +#define MCG_C4_SCFTRIM_SHIFT 0 +#define MCG_C4_FCTRIM_MASK 0x1Eu +#define MCG_C4_FCTRIM_SHIFT 1 +#define MCG_C4_FCTRIM(x) (((uint8_t)(((uint8_t)(x))<<MCG_C4_FCTRIM_SHIFT))&MCG_C4_FCTRIM_MASK) +#define MCG_C4_DRST_DRS_MASK 0x60u +#define MCG_C4_DRST_DRS_SHIFT 5 +#define MCG_C4_DRST_DRS(x) (((uint8_t)(((uint8_t)(x))<<MCG_C4_DRST_DRS_SHIFT))&MCG_C4_DRST_DRS_MASK) +#define MCG_C4_DMX32_MASK 0x80u +#define MCG_C4_DMX32_SHIFT 7 +/* C5 Bit Fields */ +#define MCG_C5_PRDIV0_MASK 0x1Fu +#define MCG_C5_PRDIV0_SHIFT 0 +#define MCG_C5_PRDIV0(x) (((uint8_t)(((uint8_t)(x))<<MCG_C5_PRDIV0_SHIFT))&MCG_C5_PRDIV0_MASK) +#define MCG_C5_PLLSTEN0_MASK 0x20u +#define MCG_C5_PLLSTEN0_SHIFT 5 +#define MCG_C5_PLLCLKEN0_MASK 0x40u +#define MCG_C5_PLLCLKEN0_SHIFT 6 +/* C6 Bit Fields */ +#define MCG_C6_VDIV0_MASK 0x1Fu +#define MCG_C6_VDIV0_SHIFT 0 +#define MCG_C6_VDIV0(x) (((uint8_t)(((uint8_t)(x))<<MCG_C6_VDIV0_SHIFT))&MCG_C6_VDIV0_MASK) +#define MCG_C6_CME0_MASK 0x20u +#define MCG_C6_CME0_SHIFT 5 +#define MCG_C6_PLLS_MASK 0x40u +#define MCG_C6_PLLS_SHIFT 6 +#define MCG_C6_LOLIE0_MASK 0x80u +#define MCG_C6_LOLIE0_SHIFT 7 +/* S Bit Fields */ +#define MCG_S_IRCST_MASK 0x1u +#define MCG_S_IRCST_SHIFT 0 +#define MCG_S_OSCINIT0_MASK 0x2u +#define MCG_S_OSCINIT0_SHIFT 1 +#define MCG_S_CLKST_MASK 0xCu +#define MCG_S_CLKST_SHIFT 2 +#define MCG_S_CLKST(x) (((uint8_t)(((uint8_t)(x))<<MCG_S_CLKST_SHIFT))&MCG_S_CLKST_MASK) +#define MCG_S_IREFST_MASK 0x10u +#define MCG_S_IREFST_SHIFT 4 +#define MCG_S_PLLST_MASK 0x20u +#define MCG_S_PLLST_SHIFT 5 +#define MCG_S_LOCK0_MASK 0x40u +#define MCG_S_LOCK0_SHIFT 6 +#define MCG_S_LOLS0_MASK 0x80u +#define MCG_S_LOLS0_SHIFT 7 +/* SC Bit Fields */ +#define MCG_SC_LOCS0_MASK 0x1u +#define MCG_SC_LOCS0_SHIFT 0 +#define MCG_SC_FCRDIV_MASK 0xEu +#define MCG_SC_FCRDIV_SHIFT 1 +#define MCG_SC_FCRDIV(x) (((uint8_t)(((uint8_t)(x))<<MCG_SC_FCRDIV_SHIFT))&MCG_SC_FCRDIV_MASK) +#define MCG_SC_FLTPRSRV_MASK 0x10u +#define MCG_SC_FLTPRSRV_SHIFT 4 +#define MCG_SC_ATMF_MASK 0x20u +#define MCG_SC_ATMF_SHIFT 5 +#define MCG_SC_ATMS_MASK 0x40u +#define MCG_SC_ATMS_SHIFT 6 +#define MCG_SC_ATME_MASK 0x80u +#define MCG_SC_ATME_SHIFT 7 +/* ATCVH Bit Fields */ +#define MCG_ATCVH_ATCVH_MASK 0xFFu +#define MCG_ATCVH_ATCVH_SHIFT 0 +#define MCG_ATCVH_ATCVH(x) (((uint8_t)(((uint8_t)(x))<<MCG_ATCVH_ATCVH_SHIFT))&MCG_ATCVH_ATCVH_MASK) +/* ATCVL Bit Fields */ +#define MCG_ATCVL_ATCVL_MASK 0xFFu +#define MCG_ATCVL_ATCVL_SHIFT 0 +#define MCG_ATCVL_ATCVL(x) (((uint8_t)(((uint8_t)(x))<<MCG_ATCVL_ATCVL_SHIFT))&MCG_ATCVL_ATCVL_MASK) +/* C7 Bit Fields */ +#define MCG_C7_OSCSEL_MASK 0x3u +#define MCG_C7_OSCSEL_SHIFT 0 +#define MCG_C7_OSCSEL(x) (((uint8_t)(((uint8_t)(x))<<MCG_C7_OSCSEL_SHIFT))&MCG_C7_OSCSEL_MASK) +/* C8 Bit Fields */ +#define MCG_C8_LOCS1_MASK 0x1u +#define MCG_C8_LOCS1_SHIFT 0 +#define MCG_C8_CME1_MASK 0x20u +#define MCG_C8_CME1_SHIFT 5 +#define MCG_C8_LOLRE_MASK 0x40u +#define MCG_C8_LOLRE_SHIFT 6 +#define MCG_C8_LOCRE1_MASK 0x80u +#define MCG_C8_LOCRE1_SHIFT 7 + +/*! + * @} + */ /* end of group MCG_Register_Masks */ + + +/* MCG - Peripheral instance base addresses */ +/** Peripheral MCG base address */ +#define MCG_BASE (0x40064000u) +/** Peripheral MCG base pointer */ +#define MCG ((MCG_Type *)MCG_BASE) +#define MCG_BASE_PTR (MCG) +/** Array initializer of MCG peripheral base pointers */ +#define MCG_BASES { MCG } + +/* ---------------------------------------------------------------------------- + -- MCG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCG_Register_Accessor_Macros MCG - Register accessor macros + * @{ + */ + + +/* MCG - Register instance definitions */ +/* MCG */ +#define MCG_C1 MCG_C1_REG(MCG) +#define MCG_C2 MCG_C2_REG(MCG) +#define MCG_C3 MCG_C3_REG(MCG) +#define MCG_C4 MCG_C4_REG(MCG) +#define MCG_C5 MCG_C5_REG(MCG) +#define MCG_C6 MCG_C6_REG(MCG) +#define MCG_S MCG_S_REG(MCG) +#define MCG_SC MCG_SC_REG(MCG) +#define MCG_ATCVH MCG_ATCVH_REG(MCG) +#define MCG_ATCVL MCG_ATCVL_REG(MCG) +#define MCG_C7 MCG_C7_REG(MCG) +#define MCG_C8 MCG_C8_REG(MCG) +#define MCG_C9 MCG_C9_REG(MCG) + +/*! + * @} + */ /* end of group MCG_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group MCG_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- MCM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCM_Peripheral_Access_Layer MCM Peripheral Access Layer + * @{ + */ + +/** MCM - Register Layout Typedef */ +typedef struct { + uint8_t RESERVED_0[8]; + __I uint16_t PLASC; /**< Crossbar Switch (AXBS) Slave Configuration, offset: 0x8 */ + __I uint16_t PLAMC; /**< Crossbar Switch (AXBS) Master Configuration, offset: 0xA */ + __I uint32_t PLACR; /**< Crossbar Switch (AXBS) Control Register, offset: 0xC */ + __IO uint32_t ISR; /**< Interrupt Status Register, offset: 0x10 */ + __IO uint32_t ETBCC; /**< ETB Counter Control register, offset: 0x14 */ + __IO uint32_t ETBRL; /**< ETB Reload register, offset: 0x18 */ + __I uint32_t ETBCNT; /**< ETB Counter Value register, offset: 0x1C */ + uint8_t RESERVED_1[16]; + __IO uint32_t PID; /**< Process ID register, offset: 0x30 */ +} MCM_Type, *MCM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- MCM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCM_Register_Accessor_Macros MCM - Register accessor macros + * @{ + */ + + +/* MCM - Register accessors */ +#define MCM_PLASC_REG(base) ((base)->PLASC) +#define MCM_PLAMC_REG(base) ((base)->PLAMC) +#define MCM_PLACR_REG(base) ((base)->PLACR) +#define MCM_ISR_REG(base) ((base)->ISR) +#define MCM_ETBCC_REG(base) ((base)->ETBCC) +#define MCM_ETBRL_REG(base) ((base)->ETBRL) +#define MCM_ETBCNT_REG(base) ((base)->ETBCNT) +#define MCM_PID_REG(base) ((base)->PID) + +/*! + * @} + */ /* end of group MCM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- MCM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCM_Register_Masks MCM Register Masks + * @{ + */ + +/* PLASC Bit Fields */ +#define MCM_PLASC_ASC_MASK 0xFFu +#define MCM_PLASC_ASC_SHIFT 0 +#define MCM_PLASC_ASC(x) (((uint16_t)(((uint16_t)(x))<<MCM_PLASC_ASC_SHIFT))&MCM_PLASC_ASC_MASK) +/* PLAMC Bit Fields */ +#define MCM_PLAMC_AMC_MASK 0xFFu +#define MCM_PLAMC_AMC_SHIFT 0 +#define MCM_PLAMC_AMC(x) (((uint16_t)(((uint16_t)(x))<<MCM_PLAMC_AMC_SHIFT))&MCM_PLAMC_AMC_MASK) +/* PLACR Bit Fields */ +#define MCM_PLACR_ARB_MASK 0x200u +#define MCM_PLACR_ARB_SHIFT 9 +/* ISR Bit Fields */ +#define MCM_ISR_IRQ_MASK 0x2u +#define MCM_ISR_IRQ_SHIFT 1 +#define MCM_ISR_NMI_MASK 0x4u +#define MCM_ISR_NMI_SHIFT 2 +#define MCM_ISR_DHREQ_MASK 0x8u +#define MCM_ISR_DHREQ_SHIFT 3 +#define MCM_ISR_FIOC_MASK 0x100u +#define MCM_ISR_FIOC_SHIFT 8 +#define MCM_ISR_FDZC_MASK 0x200u +#define MCM_ISR_FDZC_SHIFT 9 +#define MCM_ISR_FOFC_MASK 0x400u +#define MCM_ISR_FOFC_SHIFT 10 +#define MCM_ISR_FUFC_MASK 0x800u +#define MCM_ISR_FUFC_SHIFT 11 +#define MCM_ISR_FIXC_MASK 0x1000u +#define MCM_ISR_FIXC_SHIFT 12 +#define MCM_ISR_FIDC_MASK 0x8000u +#define MCM_ISR_FIDC_SHIFT 15 +#define MCM_ISR_FIOCE_MASK 0x1000000u +#define MCM_ISR_FIOCE_SHIFT 24 +#define MCM_ISR_FDZCE_MASK 0x2000000u +#define MCM_ISR_FDZCE_SHIFT 25 +#define MCM_ISR_FOFCE_MASK 0x4000000u +#define MCM_ISR_FOFCE_SHIFT 26 +#define MCM_ISR_FUFCE_MASK 0x8000000u +#define MCM_ISR_FUFCE_SHIFT 27 +#define MCM_ISR_FIXCE_MASK 0x10000000u +#define MCM_ISR_FIXCE_SHIFT 28 +#define MCM_ISR_FIDCE_MASK 0x80000000u +#define MCM_ISR_FIDCE_SHIFT 31 +/* ETBCC Bit Fields */ +#define MCM_ETBCC_CNTEN_MASK 0x1u +#define MCM_ETBCC_CNTEN_SHIFT 0 +#define MCM_ETBCC_RSPT_MASK 0x6u +#define MCM_ETBCC_RSPT_SHIFT 1 +#define MCM_ETBCC_RSPT(x) (((uint32_t)(((uint32_t)(x))<<MCM_ETBCC_RSPT_SHIFT))&MCM_ETBCC_RSPT_MASK) +#define MCM_ETBCC_RLRQ_MASK 0x8u +#define MCM_ETBCC_RLRQ_SHIFT 3 +#define MCM_ETBCC_ETDIS_MASK 0x10u +#define MCM_ETBCC_ETDIS_SHIFT 4 +#define MCM_ETBCC_ITDIS_MASK 0x20u +#define MCM_ETBCC_ITDIS_SHIFT 5 +/* ETBRL Bit Fields */ +#define MCM_ETBRL_RELOAD_MASK 0x7FFu +#define MCM_ETBRL_RELOAD_SHIFT 0 +#define MCM_ETBRL_RELOAD(x) (((uint32_t)(((uint32_t)(x))<<MCM_ETBRL_RELOAD_SHIFT))&MCM_ETBRL_RELOAD_MASK) +/* ETBCNT Bit Fields */ +#define MCM_ETBCNT_COUNTER_MASK 0x7FFu +#define MCM_ETBCNT_COUNTER_SHIFT 0 +#define MCM_ETBCNT_COUNTER(x) (((uint32_t)(((uint32_t)(x))<<MCM_ETBCNT_COUNTER_SHIFT))&MCM_ETBCNT_COUNTER_MASK) +/* PID Bit Fields */ +#define MCM_PID_PID_MASK 0xFFu +#define MCM_PID_PID_SHIFT 0 +#define MCM_PID_PID(x) (((uint32_t)(((uint32_t)(x))<<MCM_PID_PID_SHIFT))&MCM_PID_PID_MASK) + +/*! + * @} + */ /* end of group MCM_Register_Masks */ + + +/* MCM - Peripheral instance base addresses */ +/** Peripheral MCM base address */ +#define MCM_BASE (0xE0080000u) +/** Peripheral MCM base pointer */ +#define MCM ((MCM_Type *)MCM_BASE) +#define MCM_BASE_PTR (MCM) +/** Array initializer of MCM peripheral base pointers */ +#define MCM_BASES { MCM } + +/* ---------------------------------------------------------------------------- + -- MCM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCM_Register_Accessor_Macros MCM - Register accessor macros + * @{ + */ + + +/* MCM - Register instance definitions */ +/* MCM */ +#define MCM_PLASC MCM_PLASC_REG(MCM) +#define MCM_PLAMC MCM_PLAMC_REG(MCM) +#define MCM_PLACR MCM_PLACR_REG(MCM) +#define MCM_ISCR MCM_ISR_REG(MCM) +#define MCM_ETBCC MCM_ETBCC_REG(MCM) +#define MCM_ETBRL MCM_ETBRL_REG(MCM) +#define MCM_ETBCNT MCM_ETBCNT_REG(MCM) +#define MCM_PID MCM_PID_REG(MCM) + +/*! + * @} + */ /* end of group MCM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group MCM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- MPU Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MPU_Peripheral_Access_Layer MPU Peripheral Access Layer + * @{ + */ + +/** MPU - Register Layout Typedef */ +typedef struct { + __IO uint32_t CESR; /**< Control/Error Status Register, offset: 0x0 */ + uint8_t RESERVED_0[12]; + struct { /* offset: 0x10, array step: 0x8 */ + __I uint32_t EAR; /**< Error Address Register, slave port n, array offset: 0x10, array step: 0x8 */ + __I uint32_t EDR; /**< Error Detail Register, slave port n, array offset: 0x14, array step: 0x8 */ + } SP[5]; + uint8_t RESERVED_1[968]; + __IO uint32_t WORD[12][4]; /**< Region Descriptor n, Word 0..Region Descriptor n, Word 3, array offset: 0x400, array step: index*0x10, index2*0x4 */ + uint8_t RESERVED_2[832]; + __IO uint32_t RGDAAC[12]; /**< Region Descriptor Alternate Access Control n, array offset: 0x800, array step: 0x4 */ +} MPU_Type, *MPU_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- MPU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MPU_Register_Accessor_Macros MPU - Register accessor macros + * @{ + */ + + +/* MPU - Register accessors */ +#define MPU_CESR_REG(base) ((base)->CESR) +#define MPU_EAR_REG(base,index) ((base)->SP[index].EAR) +#define MPU_EDR_REG(base,index) ((base)->SP[index].EDR) +#define MPU_WORD_REG(base,index,index2) ((base)->WORD[index][index2]) +#define MPU_RGDAAC_REG(base,index) ((base)->RGDAAC[index]) + +/*! + * @} + */ /* end of group MPU_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- MPU Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MPU_Register_Masks MPU Register Masks + * @{ + */ + +/* CESR Bit Fields */ +#define MPU_CESR_VLD_MASK 0x1u +#define MPU_CESR_VLD_SHIFT 0 +#define MPU_CESR_NRGD_MASK 0xF00u +#define MPU_CESR_NRGD_SHIFT 8 +#define MPU_CESR_NRGD(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_NRGD_SHIFT))&MPU_CESR_NRGD_MASK) +#define MPU_CESR_NSP_MASK 0xF000u +#define MPU_CESR_NSP_SHIFT 12 +#define MPU_CESR_NSP(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_NSP_SHIFT))&MPU_CESR_NSP_MASK) +#define MPU_CESR_HRL_MASK 0xF0000u +#define MPU_CESR_HRL_SHIFT 16 +#define MPU_CESR_HRL(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_HRL_SHIFT))&MPU_CESR_HRL_MASK) +#define MPU_CESR_SPERR_MASK 0xF8000000u +#define MPU_CESR_SPERR_SHIFT 27 +#define MPU_CESR_SPERR(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_SPERR_SHIFT))&MPU_CESR_SPERR_MASK) +/* EAR Bit Fields */ +#define MPU_EAR_EADDR_MASK 0xFFFFFFFFu +#define MPU_EAR_EADDR_SHIFT 0 +#define MPU_EAR_EADDR(x) (((uint32_t)(((uint32_t)(x))<<MPU_EAR_EADDR_SHIFT))&MPU_EAR_EADDR_MASK) +/* EDR Bit Fields */ +#define MPU_EDR_ERW_MASK 0x1u +#define MPU_EDR_ERW_SHIFT 0 +#define MPU_EDR_EATTR_MASK 0xEu +#define MPU_EDR_EATTR_SHIFT 1 +#define MPU_EDR_EATTR(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EATTR_SHIFT))&MPU_EDR_EATTR_MASK) +#define MPU_EDR_EMN_MASK 0xF0u +#define MPU_EDR_EMN_SHIFT 4 +#define MPU_EDR_EMN(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EMN_SHIFT))&MPU_EDR_EMN_MASK) +#define MPU_EDR_EPID_MASK 0xFF00u +#define MPU_EDR_EPID_SHIFT 8 +#define MPU_EDR_EPID(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EPID_SHIFT))&MPU_EDR_EPID_MASK) +#define MPU_EDR_EACD_MASK 0xFFFF0000u +#define MPU_EDR_EACD_SHIFT 16 +#define MPU_EDR_EACD(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EACD_SHIFT))&MPU_EDR_EACD_MASK) +/* WORD Bit Fields */ +#define MPU_WORD_VLD_MASK 0x1u +#define MPU_WORD_VLD_SHIFT 0 +#define MPU_WORD_M0UM_MASK 0x7u +#define MPU_WORD_M0UM_SHIFT 0 +#define MPU_WORD_M0UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M0UM_SHIFT))&MPU_WORD_M0UM_MASK) +#define MPU_WORD_M0SM_MASK 0x18u +#define MPU_WORD_M0SM_SHIFT 3 +#define MPU_WORD_M0SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M0SM_SHIFT))&MPU_WORD_M0SM_MASK) +#define MPU_WORD_M0PE_MASK 0x20u +#define MPU_WORD_M0PE_SHIFT 5 +#define MPU_WORD_ENDADDR_MASK 0xFFFFFFE0u +#define MPU_WORD_ENDADDR_SHIFT 5 +#define MPU_WORD_ENDADDR(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_ENDADDR_SHIFT))&MPU_WORD_ENDADDR_MASK) +#define MPU_WORD_SRTADDR_MASK 0xFFFFFFE0u +#define MPU_WORD_SRTADDR_SHIFT 5 +#define MPU_WORD_SRTADDR(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_SRTADDR_SHIFT))&MPU_WORD_SRTADDR_MASK) +#define MPU_WORD_M1UM_MASK 0x1C0u +#define MPU_WORD_M1UM_SHIFT 6 +#define MPU_WORD_M1UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M1UM_SHIFT))&MPU_WORD_M1UM_MASK) +#define MPU_WORD_M1SM_MASK 0x600u +#define MPU_WORD_M1SM_SHIFT 9 +#define MPU_WORD_M1SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M1SM_SHIFT))&MPU_WORD_M1SM_MASK) +#define MPU_WORD_M1PE_MASK 0x800u +#define MPU_WORD_M1PE_SHIFT 11 +#define MPU_WORD_M2UM_MASK 0x7000u +#define MPU_WORD_M2UM_SHIFT 12 +#define MPU_WORD_M2UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M2UM_SHIFT))&MPU_WORD_M2UM_MASK) +#define MPU_WORD_M2SM_MASK 0x18000u +#define MPU_WORD_M2SM_SHIFT 15 +#define MPU_WORD_M2SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M2SM_SHIFT))&MPU_WORD_M2SM_MASK) +#define MPU_WORD_PIDMASK_MASK 0xFF0000u +#define MPU_WORD_PIDMASK_SHIFT 16 +#define MPU_WORD_PIDMASK(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_PIDMASK_SHIFT))&MPU_WORD_PIDMASK_MASK) +#define MPU_WORD_M2PE_MASK 0x20000u +#define MPU_WORD_M2PE_SHIFT 17 +#define MPU_WORD_M3UM_MASK 0x1C0000u +#define MPU_WORD_M3UM_SHIFT 18 +#define MPU_WORD_M3UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M3UM_SHIFT))&MPU_WORD_M3UM_MASK) +#define MPU_WORD_M3SM_MASK 0x600000u +#define MPU_WORD_M3SM_SHIFT 21 +#define MPU_WORD_M3SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M3SM_SHIFT))&MPU_WORD_M3SM_MASK) +#define MPU_WORD_M3PE_MASK 0x800000u +#define MPU_WORD_M3PE_SHIFT 23 +#define MPU_WORD_PID_MASK 0xFF000000u +#define MPU_WORD_PID_SHIFT 24 +#define MPU_WORD_PID(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_PID_SHIFT))&MPU_WORD_PID_MASK) +#define MPU_WORD_M4WE_MASK 0x1000000u +#define MPU_WORD_M4WE_SHIFT 24 +#define MPU_WORD_M4RE_MASK 0x2000000u +#define MPU_WORD_M4RE_SHIFT 25 +#define MPU_WORD_M5WE_MASK 0x4000000u +#define MPU_WORD_M5WE_SHIFT 26 +#define MPU_WORD_M5RE_MASK 0x8000000u +#define MPU_WORD_M5RE_SHIFT 27 +#define MPU_WORD_M6WE_MASK 0x10000000u +#define MPU_WORD_M6WE_SHIFT 28 +#define MPU_WORD_M6RE_MASK 0x20000000u +#define MPU_WORD_M6RE_SHIFT 29 +#define MPU_WORD_M7WE_MASK 0x40000000u +#define MPU_WORD_M7WE_SHIFT 30 +#define MPU_WORD_M7RE_MASK 0x80000000u +#define MPU_WORD_M7RE_SHIFT 31 +/* RGDAAC Bit Fields */ +#define MPU_RGDAAC_M0UM_MASK 0x7u +#define MPU_RGDAAC_M0UM_SHIFT 0 +#define MPU_RGDAAC_M0UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M0UM_SHIFT))&MPU_RGDAAC_M0UM_MASK) +#define MPU_RGDAAC_M0SM_MASK 0x18u +#define MPU_RGDAAC_M0SM_SHIFT 3 +#define MPU_RGDAAC_M0SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M0SM_SHIFT))&MPU_RGDAAC_M0SM_MASK) +#define MPU_RGDAAC_M0PE_MASK 0x20u +#define MPU_RGDAAC_M0PE_SHIFT 5 +#define MPU_RGDAAC_M1UM_MASK 0x1C0u +#define MPU_RGDAAC_M1UM_SHIFT 6 +#define MPU_RGDAAC_M1UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M1UM_SHIFT))&MPU_RGDAAC_M1UM_MASK) +#define MPU_RGDAAC_M1SM_MASK 0x600u +#define MPU_RGDAAC_M1SM_SHIFT 9 +#define MPU_RGDAAC_M1SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M1SM_SHIFT))&MPU_RGDAAC_M1SM_MASK) +#define MPU_RGDAAC_M1PE_MASK 0x800u +#define MPU_RGDAAC_M1PE_SHIFT 11 +#define MPU_RGDAAC_M2UM_MASK 0x7000u +#define MPU_RGDAAC_M2UM_SHIFT 12 +#define MPU_RGDAAC_M2UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M2UM_SHIFT))&MPU_RGDAAC_M2UM_MASK) +#define MPU_RGDAAC_M2SM_MASK 0x18000u +#define MPU_RGDAAC_M2SM_SHIFT 15 +#define MPU_RGDAAC_M2SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M2SM_SHIFT))&MPU_RGDAAC_M2SM_MASK) +#define MPU_RGDAAC_M2PE_MASK 0x20000u +#define MPU_RGDAAC_M2PE_SHIFT 17 +#define MPU_RGDAAC_M3UM_MASK 0x1C0000u +#define MPU_RGDAAC_M3UM_SHIFT 18 +#define MPU_RGDAAC_M3UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M3UM_SHIFT))&MPU_RGDAAC_M3UM_MASK) +#define MPU_RGDAAC_M3SM_MASK 0x600000u +#define MPU_RGDAAC_M3SM_SHIFT 21 +#define MPU_RGDAAC_M3SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M3SM_SHIFT))&MPU_RGDAAC_M3SM_MASK) +#define MPU_RGDAAC_M3PE_MASK 0x800000u +#define MPU_RGDAAC_M3PE_SHIFT 23 +#define MPU_RGDAAC_M4WE_MASK 0x1000000u +#define MPU_RGDAAC_M4WE_SHIFT 24 +#define MPU_RGDAAC_M4RE_MASK 0x2000000u +#define MPU_RGDAAC_M4RE_SHIFT 25 +#define MPU_RGDAAC_M5WE_MASK 0x4000000u +#define MPU_RGDAAC_M5WE_SHIFT 26 +#define MPU_RGDAAC_M5RE_MASK 0x8000000u +#define MPU_RGDAAC_M5RE_SHIFT 27 +#define MPU_RGDAAC_M6WE_MASK 0x10000000u +#define MPU_RGDAAC_M6WE_SHIFT 28 +#define MPU_RGDAAC_M6RE_MASK 0x20000000u +#define MPU_RGDAAC_M6RE_SHIFT 29 +#define MPU_RGDAAC_M7WE_MASK 0x40000000u +#define MPU_RGDAAC_M7WE_SHIFT 30 +#define MPU_RGDAAC_M7RE_MASK 0x80000000u +#define MPU_RGDAAC_M7RE_SHIFT 31 + +/*! + * @} + */ /* end of group MPU_Register_Masks */ + + +/* MPU - Peripheral instance base addresses */ +/** Peripheral MPU base address */ +#define MPU_BASE (0x4000D000u) +/** Peripheral MPU base pointer */ +#define MPU ((MPU_Type *)MPU_BASE) +#define MPU_BASE_PTR (MPU) +/** Array initializer of MPU peripheral base pointers */ +#define MPU_BASES { MPU } + +/* ---------------------------------------------------------------------------- + -- MPU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MPU_Register_Accessor_Macros MPU - Register accessor macros + * @{ + */ + + +/* MPU - Register instance definitions */ +/* MPU */ +#define MPU_CESR MPU_CESR_REG(MPU) +#define MPU_EAR0 MPU_EAR_REG(MPU,0) +#define MPU_EDR0 MPU_EDR_REG(MPU,0) +#define MPU_EAR1 MPU_EAR_REG(MPU,1) +#define MPU_EDR1 MPU_EDR_REG(MPU,1) +#define MPU_EAR2 MPU_EAR_REG(MPU,2) +#define MPU_EDR2 MPU_EDR_REG(MPU,2) +#define MPU_EAR3 MPU_EAR_REG(MPU,3) +#define MPU_EDR3 MPU_EDR_REG(MPU,3) +#define MPU_EAR4 MPU_EAR_REG(MPU,4) +#define MPU_EDR4 MPU_EDR_REG(MPU,4) +#define MPU_RGD0_WORD0 MPU_WORD_REG(MPU,0,0) +#define MPU_RGD0_WORD1 MPU_WORD_REG(MPU,0,1) +#define MPU_RGD0_WORD2 MPU_WORD_REG(MPU,0,2) +#define MPU_RGD0_WORD3 MPU_WORD_REG(MPU,0,3) +#define MPU_RGD1_WORD0 MPU_WORD_REG(MPU,1,0) +#define MPU_RGD1_WORD1 MPU_WORD_REG(MPU,1,1) +#define MPU_RGD1_WORD2 MPU_WORD_REG(MPU,1,2) +#define MPU_RGD1_WORD3 MPU_WORD_REG(MPU,1,3) +#define MPU_RGD2_WORD0 MPU_WORD_REG(MPU,2,0) +#define MPU_RGD2_WORD1 MPU_WORD_REG(MPU,2,1) +#define MPU_RGD2_WORD2 MPU_WORD_REG(MPU,2,2) +#define MPU_RGD2_WORD3 MPU_WORD_REG(MPU,2,3) +#define MPU_RGD3_WORD0 MPU_WORD_REG(MPU,3,0) +#define MPU_RGD3_WORD1 MPU_WORD_REG(MPU,3,1) +#define MPU_RGD3_WORD2 MPU_WORD_REG(MPU,3,2) +#define MPU_RGD3_WORD3 MPU_WORD_REG(MPU,3,3) +#define MPU_RGD4_WORD0 MPU_WORD_REG(MPU,4,0) +#define MPU_RGD4_WORD1 MPU_WORD_REG(MPU,4,1) +#define MPU_RGD4_WORD2 MPU_WORD_REG(MPU,4,2) +#define MPU_RGD4_WORD3 MPU_WORD_REG(MPU,4,3) +#define MPU_RGD5_WORD0 MPU_WORD_REG(MPU,5,0) +#define MPU_RGD5_WORD1 MPU_WORD_REG(MPU,5,1) +#define MPU_RGD5_WORD2 MPU_WORD_REG(MPU,5,2) +#define MPU_RGD5_WORD3 MPU_WORD_REG(MPU,5,3) +#define MPU_RGD6_WORD0 MPU_WORD_REG(MPU,6,0) +#define MPU_RGD6_WORD1 MPU_WORD_REG(MPU,6,1) +#define MPU_RGD6_WORD2 MPU_WORD_REG(MPU,6,2) +#define MPU_RGD6_WORD3 MPU_WORD_REG(MPU,6,3) +#define MPU_RGD7_WORD0 MPU_WORD_REG(MPU,7,0) +#define MPU_RGD7_WORD1 MPU_WORD_REG(MPU,7,1) +#define MPU_RGD7_WORD2 MPU_WORD_REG(MPU,7,2) +#define MPU_RGD7_WORD3 MPU_WORD_REG(MPU,7,3) +#define MPU_RGD8_WORD0 MPU_WORD_REG(MPU,8,0) +#define MPU_RGD8_WORD1 MPU_WORD_REG(MPU,8,1) +#define MPU_RGD8_WORD2 MPU_WORD_REG(MPU,8,2) +#define MPU_RGD8_WORD3 MPU_WORD_REG(MPU,8,3) +#define MPU_RGD9_WORD0 MPU_WORD_REG(MPU,9,0) +#define MPU_RGD9_WORD1 MPU_WORD_REG(MPU,9,1) +#define MPU_RGD9_WORD2 MPU_WORD_REG(MPU,9,2) +#define MPU_RGD9_WORD3 MPU_WORD_REG(MPU,9,3) +#define MPU_RGD10_WORD0 MPU_WORD_REG(MPU,10,0) +#define MPU_RGD10_WORD1 MPU_WORD_REG(MPU,10,1) +#define MPU_RGD10_WORD2 MPU_WORD_REG(MPU,10,2) +#define MPU_RGD10_WORD3 MPU_WORD_REG(MPU,10,3) +#define MPU_RGD11_WORD0 MPU_WORD_REG(MPU,11,0) +#define MPU_RGD11_WORD1 MPU_WORD_REG(MPU,11,1) +#define MPU_RGD11_WORD2 MPU_WORD_REG(MPU,11,2) +#define MPU_RGD11_WORD3 MPU_WORD_REG(MPU,11,3) +#define MPU_RGDAAC0 MPU_RGDAAC_REG(MPU,0) +#define MPU_RGDAAC1 MPU_RGDAAC_REG(MPU,1) +#define MPU_RGDAAC2 MPU_RGDAAC_REG(MPU,2) +#define MPU_RGDAAC3 MPU_RGDAAC_REG(MPU,3) +#define MPU_RGDAAC4 MPU_RGDAAC_REG(MPU,4) +#define MPU_RGDAAC5 MPU_RGDAAC_REG(MPU,5) +#define MPU_RGDAAC6 MPU_RGDAAC_REG(MPU,6) +#define MPU_RGDAAC7 MPU_RGDAAC_REG(MPU,7) +#define MPU_RGDAAC8 MPU_RGDAAC_REG(MPU,8) +#define MPU_RGDAAC9 MPU_RGDAAC_REG(MPU,9) +#define MPU_RGDAAC10 MPU_RGDAAC_REG(MPU,10) +#define MPU_RGDAAC11 MPU_RGDAAC_REG(MPU,11) + +/* MPU - Register array accessors */ +#define MPU_EAR(index) MPU_EAR_REG(MPU,index) +#define MPU_EDR(index) MPU_EDR_REG(MPU,index) +#define MPU_WORD(index,index2) MPU_WORD_REG(MPU,index,index2) +#define MPU_RGDAAC(index) MPU_RGDAAC_REG(MPU,index) + +/*! + * @} + */ /* end of group MPU_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group MPU_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- NV Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup NV_Peripheral_Access_Layer NV Peripheral Access Layer + * @{ + */ + +/** NV - Register Layout Typedef */ +typedef struct { + __I uint8_t BACKKEY3; /**< Backdoor Comparison Key 3., offset: 0x0 */ + __I uint8_t BACKKEY2; /**< Backdoor Comparison Key 2., offset: 0x1 */ + __I uint8_t BACKKEY1; /**< Backdoor Comparison Key 1., offset: 0x2 */ + __I uint8_t BACKKEY0; /**< Backdoor Comparison Key 0., offset: 0x3 */ + __I uint8_t BACKKEY7; /**< Backdoor Comparison Key 7., offset: 0x4 */ + __I uint8_t BACKKEY6; /**< Backdoor Comparison Key 6., offset: 0x5 */ + __I uint8_t BACKKEY5; /**< Backdoor Comparison Key 5., offset: 0x6 */ + __I uint8_t BACKKEY4; /**< Backdoor Comparison Key 4., offset: 0x7 */ + __I uint8_t FPROT3; /**< Non-volatile P-Flash Protection 1 - Low Register, offset: 0x8 */ + __I uint8_t FPROT2; /**< Non-volatile P-Flash Protection 1 - High Register, offset: 0x9 */ + __I uint8_t FPROT1; /**< Non-volatile P-Flash Protection 0 - Low Register, offset: 0xA */ + __I uint8_t FPROT0; /**< Non-volatile P-Flash Protection 0 - High Register, offset: 0xB */ + __I uint8_t FSEC; /**< Non-volatile Flash Security Register, offset: 0xC */ + __I uint8_t FOPT; /**< Non-volatile Flash Option Register, offset: 0xD */ + __I uint8_t FEPROT; /**< Non-volatile EERAM Protection Register, offset: 0xE */ + __I uint8_t FDPROT; /**< Non-volatile D-Flash Protection Register, offset: 0xF */ +} NV_Type, *NV_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- NV - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup NV_Register_Accessor_Macros NV - Register accessor macros + * @{ + */ + + +/* NV - Register accessors */ +#define NV_BACKKEY3_REG(base) ((base)->BACKKEY3) +#define NV_BACKKEY2_REG(base) ((base)->BACKKEY2) +#define NV_BACKKEY1_REG(base) ((base)->BACKKEY1) +#define NV_BACKKEY0_REG(base) ((base)->BACKKEY0) +#define NV_BACKKEY7_REG(base) ((base)->BACKKEY7) +#define NV_BACKKEY6_REG(base) ((base)->BACKKEY6) +#define NV_BACKKEY5_REG(base) ((base)->BACKKEY5) +#define NV_BACKKEY4_REG(base) ((base)->BACKKEY4) +#define NV_FPROT3_REG(base) ((base)->FPROT3) +#define NV_FPROT2_REG(base) ((base)->FPROT2) +#define NV_FPROT1_REG(base) ((base)->FPROT1) +#define NV_FPROT0_REG(base) ((base)->FPROT0) +#define NV_FSEC_REG(base) ((base)->FSEC) +#define NV_FOPT_REG(base) ((base)->FOPT) +#define NV_FEPROT_REG(base) ((base)->FEPROT) +#define NV_FDPROT_REG(base) ((base)->FDPROT) + +/*! + * @} + */ /* end of group NV_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- NV Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup NV_Register_Masks NV Register Masks + * @{ + */ + +/* BACKKEY3 Bit Fields */ +#define NV_BACKKEY3_KEY_MASK 0xFFu +#define NV_BACKKEY3_KEY_SHIFT 0 +#define NV_BACKKEY3_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY3_KEY_SHIFT))&NV_BACKKEY3_KEY_MASK) +/* BACKKEY2 Bit Fields */ +#define NV_BACKKEY2_KEY_MASK 0xFFu +#define NV_BACKKEY2_KEY_SHIFT 0 +#define NV_BACKKEY2_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY2_KEY_SHIFT))&NV_BACKKEY2_KEY_MASK) +/* BACKKEY1 Bit Fields */ +#define NV_BACKKEY1_KEY_MASK 0xFFu +#define NV_BACKKEY1_KEY_SHIFT 0 +#define NV_BACKKEY1_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY1_KEY_SHIFT))&NV_BACKKEY1_KEY_MASK) +/* BACKKEY0 Bit Fields */ +#define NV_BACKKEY0_KEY_MASK 0xFFu +#define NV_BACKKEY0_KEY_SHIFT 0 +#define NV_BACKKEY0_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY0_KEY_SHIFT))&NV_BACKKEY0_KEY_MASK) +/* BACKKEY7 Bit Fields */ +#define NV_BACKKEY7_KEY_MASK 0xFFu +#define NV_BACKKEY7_KEY_SHIFT 0 +#define NV_BACKKEY7_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY7_KEY_SHIFT))&NV_BACKKEY7_KEY_MASK) +/* BACKKEY6 Bit Fields */ +#define NV_BACKKEY6_KEY_MASK 0xFFu +#define NV_BACKKEY6_KEY_SHIFT 0 +#define NV_BACKKEY6_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY6_KEY_SHIFT))&NV_BACKKEY6_KEY_MASK) +/* BACKKEY5 Bit Fields */ +#define NV_BACKKEY5_KEY_MASK 0xFFu +#define NV_BACKKEY5_KEY_SHIFT 0 +#define NV_BACKKEY5_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY5_KEY_SHIFT))&NV_BACKKEY5_KEY_MASK) +/* BACKKEY4 Bit Fields */ +#define NV_BACKKEY4_KEY_MASK 0xFFu +#define NV_BACKKEY4_KEY_SHIFT 0 +#define NV_BACKKEY4_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY4_KEY_SHIFT))&NV_BACKKEY4_KEY_MASK) +/* FPROT3 Bit Fields */ +#define NV_FPROT3_PROT_MASK 0xFFu +#define NV_FPROT3_PROT_SHIFT 0 +#define NV_FPROT3_PROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FPROT3_PROT_SHIFT))&NV_FPROT3_PROT_MASK) +/* FPROT2 Bit Fields */ +#define NV_FPROT2_PROT_MASK 0xFFu +#define NV_FPROT2_PROT_SHIFT 0 +#define NV_FPROT2_PROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FPROT2_PROT_SHIFT))&NV_FPROT2_PROT_MASK) +/* FPROT1 Bit Fields */ +#define NV_FPROT1_PROT_MASK 0xFFu +#define NV_FPROT1_PROT_SHIFT 0 +#define NV_FPROT1_PROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FPROT1_PROT_SHIFT))&NV_FPROT1_PROT_MASK) +/* FPROT0 Bit Fields */ +#define NV_FPROT0_PROT_MASK 0xFFu +#define NV_FPROT0_PROT_SHIFT 0 +#define NV_FPROT0_PROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FPROT0_PROT_SHIFT))&NV_FPROT0_PROT_MASK) +/* FSEC Bit Fields */ +#define NV_FSEC_SEC_MASK 0x3u +#define NV_FSEC_SEC_SHIFT 0 +#define NV_FSEC_SEC(x) (((uint8_t)(((uint8_t)(x))<<NV_FSEC_SEC_SHIFT))&NV_FSEC_SEC_MASK) +#define NV_FSEC_FSLACC_MASK 0xCu +#define NV_FSEC_FSLACC_SHIFT 2 +#define NV_FSEC_FSLACC(x) (((uint8_t)(((uint8_t)(x))<<NV_FSEC_FSLACC_SHIFT))&NV_FSEC_FSLACC_MASK) +#define NV_FSEC_MEEN_MASK 0x30u +#define NV_FSEC_MEEN_SHIFT 4 +#define NV_FSEC_MEEN(x) (((uint8_t)(((uint8_t)(x))<<NV_FSEC_MEEN_SHIFT))&NV_FSEC_MEEN_MASK) +#define NV_FSEC_KEYEN_MASK 0xC0u +#define NV_FSEC_KEYEN_SHIFT 6 +#define NV_FSEC_KEYEN(x) (((uint8_t)(((uint8_t)(x))<<NV_FSEC_KEYEN_SHIFT))&NV_FSEC_KEYEN_MASK) +/* FOPT Bit Fields */ +#define NV_FOPT_LPBOOT_MASK 0x1u +#define NV_FOPT_LPBOOT_SHIFT 0 +#define NV_FOPT_EZPORT_DIS_MASK 0x2u +#define NV_FOPT_EZPORT_DIS_SHIFT 1 +/* FEPROT Bit Fields */ +#define NV_FEPROT_EPROT_MASK 0xFFu +#define NV_FEPROT_EPROT_SHIFT 0 +#define NV_FEPROT_EPROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FEPROT_EPROT_SHIFT))&NV_FEPROT_EPROT_MASK) +/* FDPROT Bit Fields */ +#define NV_FDPROT_DPROT_MASK 0xFFu +#define NV_FDPROT_DPROT_SHIFT 0 +#define NV_FDPROT_DPROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FDPROT_DPROT_SHIFT))&NV_FDPROT_DPROT_MASK) + +/*! + * @} + */ /* end of group NV_Register_Masks */ + + +/* NV - Peripheral instance base addresses */ +/** Peripheral FTFE_FlashConfig base address */ +#define FTFE_FlashConfig_BASE (0x400u) +/** Peripheral FTFE_FlashConfig base pointer */ +#define FTFE_FlashConfig ((NV_Type *)FTFE_FlashConfig_BASE) +#define FTFE_FlashConfig_BASE_PTR (FTFE_FlashConfig) +/** Array initializer of NV peripheral base pointers */ +#define NV_BASES { FTFE_FlashConfig } + +/* ---------------------------------------------------------------------------- + -- NV - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup NV_Register_Accessor_Macros NV - Register accessor macros + * @{ + */ + + +/* NV - Register instance definitions */ +/* FTFE_FlashConfig */ +#define NV_BACKKEY3 NV_BACKKEY3_REG(FTFE_FlashConfig) +#define NV_BACKKEY2 NV_BACKKEY2_REG(FTFE_FlashConfig) +#define NV_BACKKEY1 NV_BACKKEY1_REG(FTFE_FlashConfig) +#define NV_BACKKEY0 NV_BACKKEY0_REG(FTFE_FlashConfig) +#define NV_BACKKEY7 NV_BACKKEY7_REG(FTFE_FlashConfig) +#define NV_BACKKEY6 NV_BACKKEY6_REG(FTFE_FlashConfig) +#define NV_BACKKEY5 NV_BACKKEY5_REG(FTFE_FlashConfig) +#define NV_BACKKEY4 NV_BACKKEY4_REG(FTFE_FlashConfig) +#define NV_FPROT3 NV_FPROT3_REG(FTFE_FlashConfig) +#define NV_FPROT2 NV_FPROT2_REG(FTFE_FlashConfig) +#define NV_FPROT1 NV_FPROT1_REG(FTFE_FlashConfig) +#define NV_FPROT0 NV_FPROT0_REG(FTFE_FlashConfig) +#define NV_FSEC NV_FSEC_REG(FTFE_FlashConfig) +#define NV_FOPT NV_FOPT_REG(FTFE_FlashConfig) +#define NV_FEPROT NV_FEPROT_REG(FTFE_FlashConfig) +#define NV_FDPROT NV_FDPROT_REG(FTFE_FlashConfig) + +/*! + * @} + */ /* end of group NV_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group NV_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- OSC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup OSC_Peripheral_Access_Layer OSC Peripheral Access Layer + * @{ + */ + +/** OSC - Register Layout Typedef */ +typedef struct { + __IO uint8_t CR; /**< OSC Control Register, offset: 0x0 */ +} OSC_Type, *OSC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- OSC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup OSC_Register_Accessor_Macros OSC - Register accessor macros + * @{ + */ + + +/* OSC - Register accessors */ +#define OSC_CR_REG(base) ((base)->CR) + +/*! + * @} + */ /* end of group OSC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- OSC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup OSC_Register_Masks OSC Register Masks + * @{ + */ + +/* CR Bit Fields */ +#define OSC_CR_SC16P_MASK 0x1u +#define OSC_CR_SC16P_SHIFT 0 +#define OSC_CR_SC8P_MASK 0x2u +#define OSC_CR_SC8P_SHIFT 1 +#define OSC_CR_SC4P_MASK 0x4u +#define OSC_CR_SC4P_SHIFT 2 +#define OSC_CR_SC2P_MASK 0x8u +#define OSC_CR_SC2P_SHIFT 3 +#define OSC_CR_EREFSTEN_MASK 0x20u +#define OSC_CR_EREFSTEN_SHIFT 5 +#define OSC_CR_ERCLKEN_MASK 0x80u +#define OSC_CR_ERCLKEN_SHIFT 7 + +/*! + * @} + */ /* end of group OSC_Register_Masks */ + + +/* OSC - Peripheral instance base addresses */ +/** Peripheral OSC base address */ +#define OSC_BASE (0x40065000u) +/** Peripheral OSC base pointer */ +#define OSC ((OSC_Type *)OSC_BASE) +#define OSC_BASE_PTR (OSC) +/** Array initializer of OSC peripheral base pointers */ +#define OSC_BASES { OSC } + +/* ---------------------------------------------------------------------------- + -- OSC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup OSC_Register_Accessor_Macros OSC - Register accessor macros + * @{ + */ + + +/* OSC - Register instance definitions */ +/* OSC */ +#define OSC_CR OSC_CR_REG(OSC) + +/*! + * @} + */ /* end of group OSC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group OSC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- PDB Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PDB_Peripheral_Access_Layer PDB Peripheral Access Layer + * @{ + */ + +/** PDB - Register Layout Typedef */ +typedef struct { + __IO uint32_t SC; /**< Status and Control register, offset: 0x0 */ + __IO uint32_t MOD; /**< Modulus register, offset: 0x4 */ + __I uint32_t CNT; /**< Counter register, offset: 0x8 */ + __IO uint32_t IDLY; /**< Interrupt Delay register, offset: 0xC */ + struct { /* offset: 0x10, array step: 0x28 */ + __IO uint32_t C1; /**< Channel n Control register 1, array offset: 0x10, array step: 0x28 */ + __IO uint32_t S; /**< Channel n Status register, array offset: 0x14, array step: 0x28 */ + __IO uint32_t DLY[2]; /**< Channel n Delay 0 register..Channel n Delay 1 register, array offset: 0x18, array step: index*0x28, index2*0x4 */ + uint8_t RESERVED_0[24]; + } CH[2]; + uint8_t RESERVED_0[240]; + struct { /* offset: 0x150, array step: 0x8 */ + __IO uint32_t INTC; /**< DAC Interval Trigger n Control register, array offset: 0x150, array step: 0x8 */ + __IO uint32_t INT; /**< DAC Interval n register, array offset: 0x154, array step: 0x8 */ + } DAC[2]; + uint8_t RESERVED_1[48]; + __IO uint32_t POEN; /**< Pulse-Out n Enable register, offset: 0x190 */ + __IO uint32_t PODLY[3]; /**< Pulse-Out n Delay register, array offset: 0x194, array step: 0x4 */ +} PDB_Type, *PDB_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- PDB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PDB_Register_Accessor_Macros PDB - Register accessor macros + * @{ + */ + + +/* PDB - Register accessors */ +#define PDB_SC_REG(base) ((base)->SC) +#define PDB_MOD_REG(base) ((base)->MOD) +#define PDB_CNT_REG(base) ((base)->CNT) +#define PDB_IDLY_REG(base) ((base)->IDLY) +#define PDB_C1_REG(base,index) ((base)->CH[index].C1) +#define PDB_S_REG(base,index) ((base)->CH[index].S) +#define PDB_DLY_REG(base,index,index2) ((base)->CH[index].DLY[index2]) +#define PDB_INTC_REG(base,index) ((base)->DAC[index].INTC) +#define PDB_INT_REG(base,index) ((base)->DAC[index].INT) +#define PDB_POEN_REG(base) ((base)->POEN) +#define PDB_PODLY_REG(base,index) ((base)->PODLY[index]) + +/*! + * @} + */ /* end of group PDB_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- PDB Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PDB_Register_Masks PDB Register Masks + * @{ + */ + +/* SC Bit Fields */ +#define PDB_SC_LDOK_MASK 0x1u +#define PDB_SC_LDOK_SHIFT 0 +#define PDB_SC_CONT_MASK 0x2u +#define PDB_SC_CONT_SHIFT 1 +#define PDB_SC_MULT_MASK 0xCu +#define PDB_SC_MULT_SHIFT 2 +#define PDB_SC_MULT(x) (((uint32_t)(((uint32_t)(x))<<PDB_SC_MULT_SHIFT))&PDB_SC_MULT_MASK) +#define PDB_SC_PDBIE_MASK 0x20u +#define PDB_SC_PDBIE_SHIFT 5 +#define PDB_SC_PDBIF_MASK 0x40u +#define PDB_SC_PDBIF_SHIFT 6 +#define PDB_SC_PDBEN_MASK 0x80u +#define PDB_SC_PDBEN_SHIFT 7 +#define PDB_SC_TRGSEL_MASK 0xF00u +#define PDB_SC_TRGSEL_SHIFT 8 +#define PDB_SC_TRGSEL(x) (((uint32_t)(((uint32_t)(x))<<PDB_SC_TRGSEL_SHIFT))&PDB_SC_TRGSEL_MASK) +#define PDB_SC_PRESCALER_MASK 0x7000u +#define PDB_SC_PRESCALER_SHIFT 12 +#define PDB_SC_PRESCALER(x) (((uint32_t)(((uint32_t)(x))<<PDB_SC_PRESCALER_SHIFT))&PDB_SC_PRESCALER_MASK) +#define PDB_SC_DMAEN_MASK 0x8000u +#define PDB_SC_DMAEN_SHIFT 15 +#define PDB_SC_SWTRIG_MASK 0x10000u +#define PDB_SC_SWTRIG_SHIFT 16 +#define PDB_SC_PDBEIE_MASK 0x20000u +#define PDB_SC_PDBEIE_SHIFT 17 +#define PDB_SC_LDMOD_MASK 0xC0000u +#define PDB_SC_LDMOD_SHIFT 18 +#define PDB_SC_LDMOD(x) (((uint32_t)(((uint32_t)(x))<<PDB_SC_LDMOD_SHIFT))&PDB_SC_LDMOD_MASK) +/* MOD Bit Fields */ +#define PDB_MOD_MOD_MASK 0xFFFFu +#define PDB_MOD_MOD_SHIFT 0 +#define PDB_MOD_MOD(x) (((uint32_t)(((uint32_t)(x))<<PDB_MOD_MOD_SHIFT))&PDB_MOD_MOD_MASK) +/* CNT Bit Fields */ +#define PDB_CNT_CNT_MASK 0xFFFFu +#define PDB_CNT_CNT_SHIFT 0 +#define PDB_CNT_CNT(x) (((uint32_t)(((uint32_t)(x))<<PDB_CNT_CNT_SHIFT))&PDB_CNT_CNT_MASK) +/* IDLY Bit Fields */ +#define PDB_IDLY_IDLY_MASK 0xFFFFu +#define PDB_IDLY_IDLY_SHIFT 0 +#define PDB_IDLY_IDLY(x) (((uint32_t)(((uint32_t)(x))<<PDB_IDLY_IDLY_SHIFT))&PDB_IDLY_IDLY_MASK) +/* C1 Bit Fields */ +#define PDB_C1_EN_MASK 0xFFu +#define PDB_C1_EN_SHIFT 0 +#define PDB_C1_EN(x) (((uint32_t)(((uint32_t)(x))<<PDB_C1_EN_SHIFT))&PDB_C1_EN_MASK) +#define PDB_C1_TOS_MASK 0xFF00u +#define PDB_C1_TOS_SHIFT 8 +#define PDB_C1_TOS(x) (((uint32_t)(((uint32_t)(x))<<PDB_C1_TOS_SHIFT))&PDB_C1_TOS_MASK) +#define PDB_C1_BB_MASK 0xFF0000u +#define PDB_C1_BB_SHIFT 16 +#define PDB_C1_BB(x) (((uint32_t)(((uint32_t)(x))<<PDB_C1_BB_SHIFT))&PDB_C1_BB_MASK) +/* S Bit Fields */ +#define PDB_S_ERR_MASK 0xFFu +#define PDB_S_ERR_SHIFT 0 +#define PDB_S_ERR(x) (((uint32_t)(((uint32_t)(x))<<PDB_S_ERR_SHIFT))&PDB_S_ERR_MASK) +#define PDB_S_CF_MASK 0xFF0000u +#define PDB_S_CF_SHIFT 16 +#define PDB_S_CF(x) (((uint32_t)(((uint32_t)(x))<<PDB_S_CF_SHIFT))&PDB_S_CF_MASK) +/* DLY Bit Fields */ +#define PDB_DLY_DLY_MASK 0xFFFFu +#define PDB_DLY_DLY_SHIFT 0 +#define PDB_DLY_DLY(x) (((uint32_t)(((uint32_t)(x))<<PDB_DLY_DLY_SHIFT))&PDB_DLY_DLY_MASK) +/* INTC Bit Fields */ +#define PDB_INTC_TOE_MASK 0x1u +#define PDB_INTC_TOE_SHIFT 0 +#define PDB_INTC_EXT_MASK 0x2u +#define PDB_INTC_EXT_SHIFT 1 +/* INT Bit Fields */ +#define PDB_INT_INT_MASK 0xFFFFu +#define PDB_INT_INT_SHIFT 0 +#define PDB_INT_INT(x) (((uint32_t)(((uint32_t)(x))<<PDB_INT_INT_SHIFT))&PDB_INT_INT_MASK) +/* POEN Bit Fields */ +#define PDB_POEN_POEN_MASK 0xFFu +#define PDB_POEN_POEN_SHIFT 0 +#define PDB_POEN_POEN(x) (((uint32_t)(((uint32_t)(x))<<PDB_POEN_POEN_SHIFT))&PDB_POEN_POEN_MASK) +/* PODLY Bit Fields */ +#define PDB_PODLY_DLY2_MASK 0xFFFFu +#define PDB_PODLY_DLY2_SHIFT 0 +#define PDB_PODLY_DLY2(x) (((uint32_t)(((uint32_t)(x))<<PDB_PODLY_DLY2_SHIFT))&PDB_PODLY_DLY2_MASK) +#define PDB_PODLY_DLY1_MASK 0xFFFF0000u +#define PDB_PODLY_DLY1_SHIFT 16 +#define PDB_PODLY_DLY1(x) (((uint32_t)(((uint32_t)(x))<<PDB_PODLY_DLY1_SHIFT))&PDB_PODLY_DLY1_MASK) + +/*! + * @} + */ /* end of group PDB_Register_Masks */ + + +/* PDB - Peripheral instance base addresses */ +/** Peripheral PDB0 base address */ +#define PDB0_BASE (0x40036000u) +/** Peripheral PDB0 base pointer */ +#define PDB0 ((PDB_Type *)PDB0_BASE) +#define PDB0_BASE_PTR (PDB0) +/** Array initializer of PDB peripheral base pointers */ +#define PDB_BASES { PDB0 } + +/* ---------------------------------------------------------------------------- + -- PDB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PDB_Register_Accessor_Macros PDB - Register accessor macros + * @{ + */ + + +/* PDB - Register instance definitions */ +/* PDB0 */ +#define PDB0_SC PDB_SC_REG(PDB0) +#define PDB0_MOD PDB_MOD_REG(PDB0) +#define PDB0_CNT PDB_CNT_REG(PDB0) +#define PDB0_IDLY PDB_IDLY_REG(PDB0) +#define PDB0_CH0C1 PDB_C1_REG(PDB0,0) +#define PDB0_CH0S PDB_S_REG(PDB0,0) +#define PDB0_CH0DLY0 PDB_DLY_REG(PDB0,0,0) +#define PDB0_CH0DLY1 PDB_DLY_REG(PDB0,0,1) +#define PDB0_CH1C1 PDB_C1_REG(PDB0,1) +#define PDB0_CH1S PDB_S_REG(PDB0,1) +#define PDB0_CH1DLY0 PDB_DLY_REG(PDB0,1,0) +#define PDB0_CH1DLY1 PDB_DLY_REG(PDB0,1,1) +#define PDB0_DACINTC0 PDB_INTC_REG(PDB0,0) +#define PDB0_DACINT0 PDB_INT_REG(PDB0,0) +#define PDB0_DACINTC1 PDB_INTC_REG(PDB0,1) +#define PDB0_DACINT1 PDB_INT_REG(PDB0,1) +#define PDB0_POEN PDB_POEN_REG(PDB0) +#define PDB0_PO0DLY PDB_PODLY_REG(PDB0,0) +#define PDB0_PO1DLY PDB_PODLY_REG(PDB0,1) +#define PDB0_PO2DLY PDB_PODLY_REG(PDB0,2) + +/* PDB - Register array accessors */ +#define PDB0_C1(index) PDB_C1_REG(PDB0,index) +#define PDB0_S(index) PDB_S_REG(PDB0,index) +#define PDB0_DLY(index,index2) PDB_DLY_REG(PDB0,index,index2) +#define PDB0_INTC(index) PDB_INTC_REG(PDB0,index) +#define PDB0_INT(index) PDB_INT_REG(PDB0,index) +#define PDB0_PODLY(index) PDB_PODLY_REG(PDB0,index) + +/*! + * @} + */ /* end of group PDB_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group PDB_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- PIT Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PIT_Peripheral_Access_Layer PIT Peripheral Access Layer + * @{ + */ + +/** PIT - Register Layout Typedef */ +typedef struct { + __IO uint32_t MCR; /**< PIT Module Control Register, offset: 0x0 */ + uint8_t RESERVED_0[252]; + struct { /* offset: 0x100, array step: 0x10 */ + __IO uint32_t LDVAL; /**< Timer Load Value Register, array offset: 0x100, array step: 0x10 */ + __I uint32_t CVAL; /**< Current Timer Value Register, array offset: 0x104, array step: 0x10 */ + __IO uint32_t TCTRL; /**< Timer Control Register, array offset: 0x108, array step: 0x10 */ + __IO uint32_t TFLG; /**< Timer Flag Register, array offset: 0x10C, array step: 0x10 */ + } CHANNEL[4]; +} PIT_Type, *PIT_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- PIT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PIT_Register_Accessor_Macros PIT - Register accessor macros + * @{ + */ + + +/* PIT - Register accessors */ +#define PIT_MCR_REG(base) ((base)->MCR) +#define PIT_LDVAL_REG(base,index) ((base)->CHANNEL[index].LDVAL) +#define PIT_CVAL_REG(base,index) ((base)->CHANNEL[index].CVAL) +#define PIT_TCTRL_REG(base,index) ((base)->CHANNEL[index].TCTRL) +#define PIT_TFLG_REG(base,index) ((base)->CHANNEL[index].TFLG) + +/*! + * @} + */ /* end of group PIT_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- PIT Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PIT_Register_Masks PIT Register Masks + * @{ + */ + +/* MCR Bit Fields */ +#define PIT_MCR_FRZ_MASK 0x1u +#define PIT_MCR_FRZ_SHIFT 0 +#define PIT_MCR_MDIS_MASK 0x2u +#define PIT_MCR_MDIS_SHIFT 1 +/* LDVAL Bit Fields */ +#define PIT_LDVAL_TSV_MASK 0xFFFFFFFFu +#define PIT_LDVAL_TSV_SHIFT 0 +#define PIT_LDVAL_TSV(x) (((uint32_t)(((uint32_t)(x))<<PIT_LDVAL_TSV_SHIFT))&PIT_LDVAL_TSV_MASK) +/* CVAL Bit Fields */ +#define PIT_CVAL_TVL_MASK 0xFFFFFFFFu +#define PIT_CVAL_TVL_SHIFT 0 +#define PIT_CVAL_TVL(x) (((uint32_t)(((uint32_t)(x))<<PIT_CVAL_TVL_SHIFT))&PIT_CVAL_TVL_MASK) +/* TCTRL Bit Fields */ +#define PIT_TCTRL_TEN_MASK 0x1u +#define PIT_TCTRL_TEN_SHIFT 0 +#define PIT_TCTRL_TIE_MASK 0x2u +#define PIT_TCTRL_TIE_SHIFT 1 +#define PIT_TCTRL_CHN_MASK 0x4u +#define PIT_TCTRL_CHN_SHIFT 2 +/* TFLG Bit Fields */ +#define PIT_TFLG_TIF_MASK 0x1u +#define PIT_TFLG_TIF_SHIFT 0 + +/*! + * @} + */ /* end of group PIT_Register_Masks */ + + +/* PIT - Peripheral instance base addresses */ +/** Peripheral PIT base address */ +#define PIT_BASE (0x40037000u) +/** Peripheral PIT base pointer */ +#define PIT ((PIT_Type *)PIT_BASE) +#define PIT_BASE_PTR (PIT) +/** Array initializer of PIT peripheral base pointers */ +#define PIT_BASES { PIT } + +/* ---------------------------------------------------------------------------- + -- PIT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PIT_Register_Accessor_Macros PIT - Register accessor macros + * @{ + */ + + +/* PIT - Register instance definitions */ +/* PIT */ +#define PIT_MCR PIT_MCR_REG(PIT) +#define PIT_LDVAL0 PIT_LDVAL_REG(PIT,0) +#define PIT_CVAL0 PIT_CVAL_REG(PIT,0) +#define PIT_TCTRL0 PIT_TCTRL_REG(PIT,0) +#define PIT_TFLG0 PIT_TFLG_REG(PIT,0) +#define PIT_LDVAL1 PIT_LDVAL_REG(PIT,1) +#define PIT_CVAL1 PIT_CVAL_REG(PIT,1) +#define PIT_TCTRL1 PIT_TCTRL_REG(PIT,1) +#define PIT_TFLG1 PIT_TFLG_REG(PIT,1) +#define PIT_LDVAL2 PIT_LDVAL_REG(PIT,2) +#define PIT_CVAL2 PIT_CVAL_REG(PIT,2) +#define PIT_TCTRL2 PIT_TCTRL_REG(PIT,2) +#define PIT_TFLG2 PIT_TFLG_REG(PIT,2) +#define PIT_LDVAL3 PIT_LDVAL_REG(PIT,3) +#define PIT_CVAL3 PIT_CVAL_REG(PIT,3) +#define PIT_TCTRL3 PIT_TCTRL_REG(PIT,3) +#define PIT_TFLG3 PIT_TFLG_REG(PIT,3) + +/* PIT - Register array accessors */ +#define PIT_LDVAL(index) PIT_LDVAL_REG(PIT,index) +#define PIT_CVAL(index) PIT_CVAL_REG(PIT,index) +#define PIT_TCTRL(index) PIT_TCTRL_REG(PIT,index) +#define PIT_TFLG(index) PIT_TFLG_REG(PIT,index) + +/*! + * @} + */ /* end of group PIT_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group PIT_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- PMC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PMC_Peripheral_Access_Layer PMC Peripheral Access Layer + * @{ + */ + +/** PMC - Register Layout Typedef */ +typedef struct { + __IO uint8_t LVDSC1; /**< Low Voltage Detect Status And Control 1 register, offset: 0x0 */ + __IO uint8_t LVDSC2; /**< Low Voltage Detect Status And Control 2 register, offset: 0x1 */ + __IO uint8_t REGSC; /**< Regulator Status And Control register, offset: 0x2 */ +} PMC_Type, *PMC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- PMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PMC_Register_Accessor_Macros PMC - Register accessor macros + * @{ + */ + + +/* PMC - Register accessors */ +#define PMC_LVDSC1_REG(base) ((base)->LVDSC1) +#define PMC_LVDSC2_REG(base) ((base)->LVDSC2) +#define PMC_REGSC_REG(base) ((base)->REGSC) + +/*! + * @} + */ /* end of group PMC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- PMC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PMC_Register_Masks PMC Register Masks + * @{ + */ + +/* LVDSC1 Bit Fields */ +#define PMC_LVDSC1_LVDV_MASK 0x3u +#define PMC_LVDSC1_LVDV_SHIFT 0 +#define PMC_LVDSC1_LVDV(x) (((uint8_t)(((uint8_t)(x))<<PMC_LVDSC1_LVDV_SHIFT))&PMC_LVDSC1_LVDV_MASK) +#define PMC_LVDSC1_LVDRE_MASK 0x10u +#define PMC_LVDSC1_LVDRE_SHIFT 4 +#define PMC_LVDSC1_LVDIE_MASK 0x20u +#define PMC_LVDSC1_LVDIE_SHIFT 5 +#define PMC_LVDSC1_LVDACK_MASK 0x40u +#define PMC_LVDSC1_LVDACK_SHIFT 6 +#define PMC_LVDSC1_LVDF_MASK 0x80u +#define PMC_LVDSC1_LVDF_SHIFT 7 +/* LVDSC2 Bit Fields */ +#define PMC_LVDSC2_LVWV_MASK 0x3u +#define PMC_LVDSC2_LVWV_SHIFT 0 +#define PMC_LVDSC2_LVWV(x) (((uint8_t)(((uint8_t)(x))<<PMC_LVDSC2_LVWV_SHIFT))&PMC_LVDSC2_LVWV_MASK) +#define PMC_LVDSC2_LVWIE_MASK 0x20u +#define PMC_LVDSC2_LVWIE_SHIFT 5 +#define PMC_LVDSC2_LVWACK_MASK 0x40u +#define PMC_LVDSC2_LVWACK_SHIFT 6 +#define PMC_LVDSC2_LVWF_MASK 0x80u +#define PMC_LVDSC2_LVWF_SHIFT 7 +/* REGSC Bit Fields */ +#define PMC_REGSC_BGBE_MASK 0x1u +#define PMC_REGSC_BGBE_SHIFT 0 +#define PMC_REGSC_REGONS_MASK 0x4u +#define PMC_REGSC_REGONS_SHIFT 2 +#define PMC_REGSC_ACKISO_MASK 0x8u +#define PMC_REGSC_ACKISO_SHIFT 3 +#define PMC_REGSC_BGEN_MASK 0x10u +#define PMC_REGSC_BGEN_SHIFT 4 + +/*! + * @} + */ /* end of group PMC_Register_Masks */ + + +/* PMC - Peripheral instance base addresses */ +/** Peripheral PMC base address */ +#define PMC_BASE (0x4007D000u) +/** Peripheral PMC base pointer */ +#define PMC ((PMC_Type *)PMC_BASE) +#define PMC_BASE_PTR (PMC) +/** Array initializer of PMC peripheral base pointers */ +#define PMC_BASES { PMC } + +/* ---------------------------------------------------------------------------- + -- PMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PMC_Register_Accessor_Macros PMC - Register accessor macros + * @{ + */ + + +/* PMC - Register instance definitions */ +/* PMC */ +#define PMC_LVDSC1 PMC_LVDSC1_REG(PMC) +#define PMC_LVDSC2 PMC_LVDSC2_REG(PMC) +#define PMC_REGSC PMC_REGSC_REG(PMC) + +/*! + * @} + */ /* end of group PMC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group PMC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- PORT Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PORT_Peripheral_Access_Layer PORT Peripheral Access Layer + * @{ + */ + +/** PORT - Register Layout Typedef */ +typedef struct { + __IO uint32_t PCR[32]; /**< Pin Control Register n, array offset: 0x0, array step: 0x4 */ + __O uint32_t GPCLR; /**< Global Pin Control Low Register, offset: 0x80 */ + __O uint32_t GPCHR; /**< Global Pin Control High Register, offset: 0x84 */ + uint8_t RESERVED_0[24]; + __IO uint32_t ISFR; /**< Interrupt Status Flag Register, offset: 0xA0 */ + uint8_t RESERVED_1[28]; + __IO uint32_t DFER; /**< Digital Filter Enable Register, offset: 0xC0 */ + __IO uint32_t DFCR; /**< Digital Filter Clock Register, offset: 0xC4 */ + __IO uint32_t DFWR; /**< Digital Filter Width Register, offset: 0xC8 */ +} PORT_Type, *PORT_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- PORT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PORT_Register_Accessor_Macros PORT - Register accessor macros + * @{ + */ + + +/* PORT - Register accessors */ +#define PORT_PCR_REG(base,index) ((base)->PCR[index]) +#define PORT_GPCLR_REG(base) ((base)->GPCLR) +#define PORT_GPCHR_REG(base) ((base)->GPCHR) +#define PORT_ISFR_REG(base) ((base)->ISFR) +#define PORT_DFER_REG(base) ((base)->DFER) +#define PORT_DFCR_REG(base) ((base)->DFCR) +#define PORT_DFWR_REG(base) ((base)->DFWR) + +/*! + * @} + */ /* end of group PORT_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- PORT Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PORT_Register_Masks PORT Register Masks + * @{ + */ + +/* PCR Bit Fields */ +#define PORT_PCR_PS_MASK 0x1u +#define PORT_PCR_PS_SHIFT 0 +#define PORT_PCR_PE_MASK 0x2u +#define PORT_PCR_PE_SHIFT 1 +#define PORT_PCR_SRE_MASK 0x4u +#define PORT_PCR_SRE_SHIFT 2 +#define PORT_PCR_PFE_MASK 0x10u +#define PORT_PCR_PFE_SHIFT 4 +#define PORT_PCR_ODE_MASK 0x20u +#define PORT_PCR_ODE_SHIFT 5 +#define PORT_PCR_DSE_MASK 0x40u +#define PORT_PCR_DSE_SHIFT 6 +#define PORT_PCR_MUX_MASK 0x700u +#define PORT_PCR_MUX_SHIFT 8 +#define PORT_PCR_MUX(x) (((uint32_t)(((uint32_t)(x))<<PORT_PCR_MUX_SHIFT))&PORT_PCR_MUX_MASK) +#define PORT_PCR_LK_MASK 0x8000u +#define PORT_PCR_LK_SHIFT 15 +#define PORT_PCR_IRQC_MASK 0xF0000u +#define PORT_PCR_IRQC_SHIFT 16 +#define PORT_PCR_IRQC(x) (((uint32_t)(((uint32_t)(x))<<PORT_PCR_IRQC_SHIFT))&PORT_PCR_IRQC_MASK) +#define PORT_PCR_ISF_MASK 0x1000000u +#define PORT_PCR_ISF_SHIFT 24 +/* GPCLR Bit Fields */ +#define PORT_GPCLR_GPWD_MASK 0xFFFFu +#define PORT_GPCLR_GPWD_SHIFT 0 +#define PORT_GPCLR_GPWD(x) (((uint32_t)(((uint32_t)(x))<<PORT_GPCLR_GPWD_SHIFT))&PORT_GPCLR_GPWD_MASK) +#define PORT_GPCLR_GPWE_MASK 0xFFFF0000u +#define PORT_GPCLR_GPWE_SHIFT 16 +#define PORT_GPCLR_GPWE(x) (((uint32_t)(((uint32_t)(x))<<PORT_GPCLR_GPWE_SHIFT))&PORT_GPCLR_GPWE_MASK) +/* GPCHR Bit Fields */ +#define PORT_GPCHR_GPWD_MASK 0xFFFFu +#define PORT_GPCHR_GPWD_SHIFT 0 +#define PORT_GPCHR_GPWD(x) (((uint32_t)(((uint32_t)(x))<<PORT_GPCHR_GPWD_SHIFT))&PORT_GPCHR_GPWD_MASK) +#define PORT_GPCHR_GPWE_MASK 0xFFFF0000u +#define PORT_GPCHR_GPWE_SHIFT 16 +#define PORT_GPCHR_GPWE(x) (((uint32_t)(((uint32_t)(x))<<PORT_GPCHR_GPWE_SHIFT))&PORT_GPCHR_GPWE_MASK) +/* ISFR Bit Fields */ +#define PORT_ISFR_ISF_MASK 0xFFFFFFFFu +#define PORT_ISFR_ISF_SHIFT 0 +#define PORT_ISFR_ISF(x) (((uint32_t)(((uint32_t)(x))<<PORT_ISFR_ISF_SHIFT))&PORT_ISFR_ISF_MASK) +/* DFER Bit Fields */ +#define PORT_DFER_DFE_MASK 0xFFFFFFFFu +#define PORT_DFER_DFE_SHIFT 0 +#define PORT_DFER_DFE(x) (((uint32_t)(((uint32_t)(x))<<PORT_DFER_DFE_SHIFT))&PORT_DFER_DFE_MASK) +/* DFCR Bit Fields */ +#define PORT_DFCR_CS_MASK 0x1u +#define PORT_DFCR_CS_SHIFT 0 +/* DFWR Bit Fields */ +#define PORT_DFWR_FILT_MASK 0x1Fu +#define PORT_DFWR_FILT_SHIFT 0 +#define PORT_DFWR_FILT(x) (((uint32_t)(((uint32_t)(x))<<PORT_DFWR_FILT_SHIFT))&PORT_DFWR_FILT_MASK) + +/*! + * @} + */ /* end of group PORT_Register_Masks */ + + +/* PORT - Peripheral instance base addresses */ +/** Peripheral PORTA base address */ +#define PORTA_BASE (0x40049000u) +/** Peripheral PORTA base pointer */ +#define PORTA ((PORT_Type *)PORTA_BASE) +#define PORTA_BASE_PTR (PORTA) +/** Peripheral PORTB base address */ +#define PORTB_BASE (0x4004A000u) +/** Peripheral PORTB base pointer */ +#define PORTB ((PORT_Type *)PORTB_BASE) +#define PORTB_BASE_PTR (PORTB) +/** Peripheral PORTC base address */ +#define PORTC_BASE (0x4004B000u) +/** Peripheral PORTC base pointer */ +#define PORTC ((PORT_Type *)PORTC_BASE) +#define PORTC_BASE_PTR (PORTC) +/** Peripheral PORTD base address */ +#define PORTD_BASE (0x4004C000u) +/** Peripheral PORTD base pointer */ +#define PORTD ((PORT_Type *)PORTD_BASE) +#define PORTD_BASE_PTR (PORTD) +/** Peripheral PORTE base address */ +#define PORTE_BASE (0x4004D000u) +/** Peripheral PORTE base pointer */ +#define PORTE ((PORT_Type *)PORTE_BASE) +#define PORTE_BASE_PTR (PORTE) +/** Array initializer of PORT peripheral base pointers */ +#define PORT_BASES { PORTA, PORTB, PORTC, PORTD, PORTE } + +/* ---------------------------------------------------------------------------- + -- PORT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PORT_Register_Accessor_Macros PORT - Register accessor macros + * @{ + */ + + +/* PORT - Register instance definitions */ +/* PORTA */ +#define PORTA_PCR0 PORT_PCR_REG(PORTA,0) +#define PORTA_PCR1 PORT_PCR_REG(PORTA,1) +#define PORTA_PCR2 PORT_PCR_REG(PORTA,2) +#define PORTA_PCR3 PORT_PCR_REG(PORTA,3) +#define PORTA_PCR4 PORT_PCR_REG(PORTA,4) +#define PORTA_PCR5 PORT_PCR_REG(PORTA,5) +#define PORTA_PCR6 PORT_PCR_REG(PORTA,6) +#define PORTA_PCR7 PORT_PCR_REG(PORTA,7) +#define PORTA_PCR8 PORT_PCR_REG(PORTA,8) +#define PORTA_PCR9 PORT_PCR_REG(PORTA,9) +#define PORTA_PCR10 PORT_PCR_REG(PORTA,10) +#define PORTA_PCR11 PORT_PCR_REG(PORTA,11) +#define PORTA_PCR12 PORT_PCR_REG(PORTA,12) +#define PORTA_PCR13 PORT_PCR_REG(PORTA,13) +#define PORTA_PCR14 PORT_PCR_REG(PORTA,14) +#define PORTA_PCR15 PORT_PCR_REG(PORTA,15) +#define PORTA_PCR16 PORT_PCR_REG(PORTA,16) +#define PORTA_PCR17 PORT_PCR_REG(PORTA,17) +#define PORTA_PCR18 PORT_PCR_REG(PORTA,18) +#define PORTA_PCR19 PORT_PCR_REG(PORTA,19) +#define PORTA_PCR20 PORT_PCR_REG(PORTA,20) +#define PORTA_PCR21 PORT_PCR_REG(PORTA,21) +#define PORTA_PCR22 PORT_PCR_REG(PORTA,22) +#define PORTA_PCR23 PORT_PCR_REG(PORTA,23) +#define PORTA_PCR24 PORT_PCR_REG(PORTA,24) +#define PORTA_PCR25 PORT_PCR_REG(PORTA,25) +#define PORTA_PCR26 PORT_PCR_REG(PORTA,26) +#define PORTA_PCR27 PORT_PCR_REG(PORTA,27) +#define PORTA_PCR28 PORT_PCR_REG(PORTA,28) +#define PORTA_PCR29 PORT_PCR_REG(PORTA,29) +#define PORTA_PCR30 PORT_PCR_REG(PORTA,30) +#define PORTA_PCR31 PORT_PCR_REG(PORTA,31) +#define PORTA_GPCLR PORT_GPCLR_REG(PORTA) +#define PORTA_GPCHR PORT_GPCHR_REG(PORTA) +#define PORTA_ISFR PORT_ISFR_REG(PORTA) +/* PORTB */ +#define PORTB_PCR0 PORT_PCR_REG(PORTB,0) +#define PORTB_PCR1 PORT_PCR_REG(PORTB,1) +#define PORTB_PCR2 PORT_PCR_REG(PORTB,2) +#define PORTB_PCR3 PORT_PCR_REG(PORTB,3) +#define PORTB_PCR4 PORT_PCR_REG(PORTB,4) +#define PORTB_PCR5 PORT_PCR_REG(PORTB,5) +#define PORTB_PCR6 PORT_PCR_REG(PORTB,6) +#define PORTB_PCR7 PORT_PCR_REG(PORTB,7) +#define PORTB_PCR8 PORT_PCR_REG(PORTB,8) +#define PORTB_PCR9 PORT_PCR_REG(PORTB,9) +#define PORTB_PCR10 PORT_PCR_REG(PORTB,10) +#define PORTB_PCR11 PORT_PCR_REG(PORTB,11) +#define PORTB_PCR12 PORT_PCR_REG(PORTB,12) +#define PORTB_PCR13 PORT_PCR_REG(PORTB,13) +#define PORTB_PCR14 PORT_PCR_REG(PORTB,14) +#define PORTB_PCR15 PORT_PCR_REG(PORTB,15) +#define PORTB_PCR16 PORT_PCR_REG(PORTB,16) +#define PORTB_PCR17 PORT_PCR_REG(PORTB,17) +#define PORTB_PCR18 PORT_PCR_REG(PORTB,18) +#define PORTB_PCR19 PORT_PCR_REG(PORTB,19) +#define PORTB_PCR20 PORT_PCR_REG(PORTB,20) +#define PORTB_PCR21 PORT_PCR_REG(PORTB,21) +#define PORTB_PCR22 PORT_PCR_REG(PORTB,22) +#define PORTB_PCR23 PORT_PCR_REG(PORTB,23) +#define PORTB_PCR24 PORT_PCR_REG(PORTB,24) +#define PORTB_PCR25 PORT_PCR_REG(PORTB,25) +#define PORTB_PCR26 PORT_PCR_REG(PORTB,26) +#define PORTB_PCR27 PORT_PCR_REG(PORTB,27) +#define PORTB_PCR28 PORT_PCR_REG(PORTB,28) +#define PORTB_PCR29 PORT_PCR_REG(PORTB,29) +#define PORTB_PCR30 PORT_PCR_REG(PORTB,30) +#define PORTB_PCR31 PORT_PCR_REG(PORTB,31) +#define PORTB_GPCLR PORT_GPCLR_REG(PORTB) +#define PORTB_GPCHR PORT_GPCHR_REG(PORTB) +#define PORTB_ISFR PORT_ISFR_REG(PORTB) +/* PORTC */ +#define PORTC_PCR0 PORT_PCR_REG(PORTC,0) +#define PORTC_PCR1 PORT_PCR_REG(PORTC,1) +#define PORTC_PCR2 PORT_PCR_REG(PORTC,2) +#define PORTC_PCR3 PORT_PCR_REG(PORTC,3) +#define PORTC_PCR4 PORT_PCR_REG(PORTC,4) +#define PORTC_PCR5 PORT_PCR_REG(PORTC,5) +#define PORTC_PCR6 PORT_PCR_REG(PORTC,6) +#define PORTC_PCR7 PORT_PCR_REG(PORTC,7) +#define PORTC_PCR8 PORT_PCR_REG(PORTC,8) +#define PORTC_PCR9 PORT_PCR_REG(PORTC,9) +#define PORTC_PCR10 PORT_PCR_REG(PORTC,10) +#define PORTC_PCR11 PORT_PCR_REG(PORTC,11) +#define PORTC_PCR12 PORT_PCR_REG(PORTC,12) +#define PORTC_PCR13 PORT_PCR_REG(PORTC,13) +#define PORTC_PCR14 PORT_PCR_REG(PORTC,14) +#define PORTC_PCR15 PORT_PCR_REG(PORTC,15) +#define PORTC_PCR16 PORT_PCR_REG(PORTC,16) +#define PORTC_PCR17 PORT_PCR_REG(PORTC,17) +#define PORTC_PCR18 PORT_PCR_REG(PORTC,18) +#define PORTC_PCR19 PORT_PCR_REG(PORTC,19) +#define PORTC_PCR20 PORT_PCR_REG(PORTC,20) +#define PORTC_PCR21 PORT_PCR_REG(PORTC,21) +#define PORTC_PCR22 PORT_PCR_REG(PORTC,22) +#define PORTC_PCR23 PORT_PCR_REG(PORTC,23) +#define PORTC_PCR24 PORT_PCR_REG(PORTC,24) +#define PORTC_PCR25 PORT_PCR_REG(PORTC,25) +#define PORTC_PCR26 PORT_PCR_REG(PORTC,26) +#define PORTC_PCR27 PORT_PCR_REG(PORTC,27) +#define PORTC_PCR28 PORT_PCR_REG(PORTC,28) +#define PORTC_PCR29 PORT_PCR_REG(PORTC,29) +#define PORTC_PCR30 PORT_PCR_REG(PORTC,30) +#define PORTC_PCR31 PORT_PCR_REG(PORTC,31) +#define PORTC_GPCLR PORT_GPCLR_REG(PORTC) +#define PORTC_GPCHR PORT_GPCHR_REG(PORTC) +#define PORTC_ISFR PORT_ISFR_REG(PORTC) +/* PORTD */ +#define PORTD_PCR0 PORT_PCR_REG(PORTD,0) +#define PORTD_PCR1 PORT_PCR_REG(PORTD,1) +#define PORTD_PCR2 PORT_PCR_REG(PORTD,2) +#define PORTD_PCR3 PORT_PCR_REG(PORTD,3) +#define PORTD_PCR4 PORT_PCR_REG(PORTD,4) +#define PORTD_PCR5 PORT_PCR_REG(PORTD,5) +#define PORTD_PCR6 PORT_PCR_REG(PORTD,6) +#define PORTD_PCR7 PORT_PCR_REG(PORTD,7) +#define PORTD_PCR8 PORT_PCR_REG(PORTD,8) +#define PORTD_PCR9 PORT_PCR_REG(PORTD,9) +#define PORTD_PCR10 PORT_PCR_REG(PORTD,10) +#define PORTD_PCR11 PORT_PCR_REG(PORTD,11) +#define PORTD_PCR12 PORT_PCR_REG(PORTD,12) +#define PORTD_PCR13 PORT_PCR_REG(PORTD,13) +#define PORTD_PCR14 PORT_PCR_REG(PORTD,14) +#define PORTD_PCR15 PORT_PCR_REG(PORTD,15) +#define PORTD_PCR16 PORT_PCR_REG(PORTD,16) +#define PORTD_PCR17 PORT_PCR_REG(PORTD,17) +#define PORTD_PCR18 PORT_PCR_REG(PORTD,18) +#define PORTD_PCR19 PORT_PCR_REG(PORTD,19) +#define PORTD_PCR20 PORT_PCR_REG(PORTD,20) +#define PORTD_PCR21 PORT_PCR_REG(PORTD,21) +#define PORTD_PCR22 PORT_PCR_REG(PORTD,22) +#define PORTD_PCR23 PORT_PCR_REG(PORTD,23) +#define PORTD_PCR24 PORT_PCR_REG(PORTD,24) +#define PORTD_PCR25 PORT_PCR_REG(PORTD,25) +#define PORTD_PCR26 PORT_PCR_REG(PORTD,26) +#define PORTD_PCR27 PORT_PCR_REG(PORTD,27) +#define PORTD_PCR28 PORT_PCR_REG(PORTD,28) +#define PORTD_PCR29 PORT_PCR_REG(PORTD,29) +#define PORTD_PCR30 PORT_PCR_REG(PORTD,30) +#define PORTD_PCR31 PORT_PCR_REG(PORTD,31) +#define PORTD_GPCLR PORT_GPCLR_REG(PORTD) +#define PORTD_GPCHR PORT_GPCHR_REG(PORTD) +#define PORTD_ISFR PORT_ISFR_REG(PORTD) +#define PORTD_DFER PORT_DFER_REG(PORTD) +#define PORTD_DFCR PORT_DFCR_REG(PORTD) +#define PORTD_DFWR PORT_DFWR_REG(PORTD) +/* PORTE */ +#define PORTE_PCR0 PORT_PCR_REG(PORTE,0) +#define PORTE_PCR1 PORT_PCR_REG(PORTE,1) +#define PORTE_PCR2 PORT_PCR_REG(PORTE,2) +#define PORTE_PCR3 PORT_PCR_REG(PORTE,3) +#define PORTE_PCR4 PORT_PCR_REG(PORTE,4) +#define PORTE_PCR5 PORT_PCR_REG(PORTE,5) +#define PORTE_PCR6 PORT_PCR_REG(PORTE,6) +#define PORTE_PCR7 PORT_PCR_REG(PORTE,7) +#define PORTE_PCR8 PORT_PCR_REG(PORTE,8) +#define PORTE_PCR9 PORT_PCR_REG(PORTE,9) +#define PORTE_PCR10 PORT_PCR_REG(PORTE,10) +#define PORTE_PCR11 PORT_PCR_REG(PORTE,11) +#define PORTE_PCR12 PORT_PCR_REG(PORTE,12) +#define PORTE_PCR13 PORT_PCR_REG(PORTE,13) +#define PORTE_PCR14 PORT_PCR_REG(PORTE,14) +#define PORTE_PCR15 PORT_PCR_REG(PORTE,15) +#define PORTE_PCR16 PORT_PCR_REG(PORTE,16) +#define PORTE_PCR17 PORT_PCR_REG(PORTE,17) +#define PORTE_PCR18 PORT_PCR_REG(PORTE,18) +#define PORTE_PCR19 PORT_PCR_REG(PORTE,19) +#define PORTE_PCR20 PORT_PCR_REG(PORTE,20) +#define PORTE_PCR21 PORT_PCR_REG(PORTE,21) +#define PORTE_PCR22 PORT_PCR_REG(PORTE,22) +#define PORTE_PCR23 PORT_PCR_REG(PORTE,23) +#define PORTE_PCR24 PORT_PCR_REG(PORTE,24) +#define PORTE_PCR25 PORT_PCR_REG(PORTE,25) +#define PORTE_PCR26 PORT_PCR_REG(PORTE,26) +#define PORTE_PCR27 PORT_PCR_REG(PORTE,27) +#define PORTE_PCR28 PORT_PCR_REG(PORTE,28) +#define PORTE_PCR29 PORT_PCR_REG(PORTE,29) +#define PORTE_PCR30 PORT_PCR_REG(PORTE,30) +#define PORTE_PCR31 PORT_PCR_REG(PORTE,31) +#define PORTE_GPCLR PORT_GPCLR_REG(PORTE) +#define PORTE_GPCHR PORT_GPCHR_REG(PORTE) +#define PORTE_ISFR PORT_ISFR_REG(PORTE) + +/* PORT - Register array accessors */ +#define PORTA_PCR(index) PORT_PCR_REG(PORTA,index) +#define PORTB_PCR(index) PORT_PCR_REG(PORTB,index) +#define PORTC_PCR(index) PORT_PCR_REG(PORTC,index) +#define PORTD_PCR(index) PORT_PCR_REG(PORTD,index) +#define PORTE_PCR(index) PORT_PCR_REG(PORTE,index) + +/*! + * @} + */ /* end of group PORT_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group PORT_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RCM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RCM_Peripheral_Access_Layer RCM Peripheral Access Layer + * @{ + */ + +/** RCM - Register Layout Typedef */ +typedef struct { + __I uint8_t SRS0; /**< System Reset Status Register 0, offset: 0x0 */ + __I uint8_t SRS1; /**< System Reset Status Register 1, offset: 0x1 */ + uint8_t RESERVED_0[2]; + __IO uint8_t RPFC; /**< Reset Pin Filter Control register, offset: 0x4 */ + __IO uint8_t RPFW; /**< Reset Pin Filter Width register, offset: 0x5 */ + uint8_t RESERVED_1[1]; + __I uint8_t MR; /**< Mode Register, offset: 0x7 */ +} RCM_Type, *RCM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RCM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RCM_Register_Accessor_Macros RCM - Register accessor macros + * @{ + */ + + +/* RCM - Register accessors */ +#define RCM_SRS0_REG(base) ((base)->SRS0) +#define RCM_SRS1_REG(base) ((base)->SRS1) +#define RCM_RPFC_REG(base) ((base)->RPFC) +#define RCM_RPFW_REG(base) ((base)->RPFW) +#define RCM_MR_REG(base) ((base)->MR) + +/*! + * @} + */ /* end of group RCM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RCM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RCM_Register_Masks RCM Register Masks + * @{ + */ + +/* SRS0 Bit Fields */ +#define RCM_SRS0_WAKEUP_MASK 0x1u +#define RCM_SRS0_WAKEUP_SHIFT 0 +#define RCM_SRS0_LVD_MASK 0x2u +#define RCM_SRS0_LVD_SHIFT 1 +#define RCM_SRS0_LOC_MASK 0x4u +#define RCM_SRS0_LOC_SHIFT 2 +#define RCM_SRS0_LOL_MASK 0x8u +#define RCM_SRS0_LOL_SHIFT 3 +#define RCM_SRS0_WDOG_MASK 0x20u +#define RCM_SRS0_WDOG_SHIFT 5 +#define RCM_SRS0_PIN_MASK 0x40u +#define RCM_SRS0_PIN_SHIFT 6 +#define RCM_SRS0_POR_MASK 0x80u +#define RCM_SRS0_POR_SHIFT 7 +/* SRS1 Bit Fields */ +#define RCM_SRS1_JTAG_MASK 0x1u +#define RCM_SRS1_JTAG_SHIFT 0 +#define RCM_SRS1_LOCKUP_MASK 0x2u +#define RCM_SRS1_LOCKUP_SHIFT 1 +#define RCM_SRS1_SW_MASK 0x4u +#define RCM_SRS1_SW_SHIFT 2 +#define RCM_SRS1_MDM_AP_MASK 0x8u +#define RCM_SRS1_MDM_AP_SHIFT 3 +#define RCM_SRS1_EZPT_MASK 0x10u +#define RCM_SRS1_EZPT_SHIFT 4 +#define RCM_SRS1_SACKERR_MASK 0x20u +#define RCM_SRS1_SACKERR_SHIFT 5 +/* RPFC Bit Fields */ +#define RCM_RPFC_RSTFLTSRW_MASK 0x3u +#define RCM_RPFC_RSTFLTSRW_SHIFT 0 +#define RCM_RPFC_RSTFLTSRW(x) (((uint8_t)(((uint8_t)(x))<<RCM_RPFC_RSTFLTSRW_SHIFT))&RCM_RPFC_RSTFLTSRW_MASK) +#define RCM_RPFC_RSTFLTSS_MASK 0x4u +#define RCM_RPFC_RSTFLTSS_SHIFT 2 +/* RPFW Bit Fields */ +#define RCM_RPFW_RSTFLTSEL_MASK 0x1Fu +#define RCM_RPFW_RSTFLTSEL_SHIFT 0 +#define RCM_RPFW_RSTFLTSEL(x) (((uint8_t)(((uint8_t)(x))<<RCM_RPFW_RSTFLTSEL_SHIFT))&RCM_RPFW_RSTFLTSEL_MASK) +/* MR Bit Fields */ +#define RCM_MR_EZP_MS_MASK 0x2u +#define RCM_MR_EZP_MS_SHIFT 1 + +/*! + * @} + */ /* end of group RCM_Register_Masks */ + + +/* RCM - Peripheral instance base addresses */ +/** Peripheral RCM base address */ +#define RCM_BASE (0x4007F000u) +/** Peripheral RCM base pointer */ +#define RCM ((RCM_Type *)RCM_BASE) +#define RCM_BASE_PTR (RCM) +/** Array initializer of RCM peripheral base pointers */ +#define RCM_BASES { RCM } + +/* ---------------------------------------------------------------------------- + -- RCM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RCM_Register_Accessor_Macros RCM - Register accessor macros + * @{ + */ + + +/* RCM - Register instance definitions */ +/* RCM */ +#define RCM_SRS0 RCM_SRS0_REG(RCM) +#define RCM_SRS1 RCM_SRS1_REG(RCM) +#define RCM_RPFC RCM_RPFC_REG(RCM) +#define RCM_RPFW RCM_RPFW_REG(RCM) +#define RCM_MR RCM_MR_REG(RCM) + +/*! + * @} + */ /* end of group RCM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RCM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RFSYS Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFSYS_Peripheral_Access_Layer RFSYS Peripheral Access Layer + * @{ + */ + +/** RFSYS - Register Layout Typedef */ +typedef struct { + __IO uint32_t REG[8]; /**< Register file register, array offset: 0x0, array step: 0x4 */ +} RFSYS_Type, *RFSYS_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RFSYS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFSYS_Register_Accessor_Macros RFSYS - Register accessor macros + * @{ + */ + + +/* RFSYS - Register accessors */ +#define RFSYS_REG_REG(base,index) ((base)->REG[index]) + +/*! + * @} + */ /* end of group RFSYS_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RFSYS Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFSYS_Register_Masks RFSYS Register Masks + * @{ + */ + +/* REG Bit Fields */ +#define RFSYS_REG_LL_MASK 0xFFu +#define RFSYS_REG_LL_SHIFT 0 +#define RFSYS_REG_LL(x) (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_LL_SHIFT))&RFSYS_REG_LL_MASK) +#define RFSYS_REG_LH_MASK 0xFF00u +#define RFSYS_REG_LH_SHIFT 8 +#define RFSYS_REG_LH(x) (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_LH_SHIFT))&RFSYS_REG_LH_MASK) +#define RFSYS_REG_HL_MASK 0xFF0000u +#define RFSYS_REG_HL_SHIFT 16 +#define RFSYS_REG_HL(x) (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_HL_SHIFT))&RFSYS_REG_HL_MASK) +#define RFSYS_REG_HH_MASK 0xFF000000u +#define RFSYS_REG_HH_SHIFT 24 +#define RFSYS_REG_HH(x) (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_HH_SHIFT))&RFSYS_REG_HH_MASK) + +/*! + * @} + */ /* end of group RFSYS_Register_Masks */ + + +/* RFSYS - Peripheral instance base addresses */ +/** Peripheral RFSYS base address */ +#define RFSYS_BASE (0x40041000u) +/** Peripheral RFSYS base pointer */ +#define RFSYS ((RFSYS_Type *)RFSYS_BASE) +#define RFSYS_BASE_PTR (RFSYS) +/** Array initializer of RFSYS peripheral base pointers */ +#define RFSYS_BASES { RFSYS } + +/* ---------------------------------------------------------------------------- + -- RFSYS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFSYS_Register_Accessor_Macros RFSYS - Register accessor macros + * @{ + */ + + +/* RFSYS - Register instance definitions */ +/* RFSYS */ +#define RFSYS_REG0 RFSYS_REG_REG(RFSYS,0) +#define RFSYS_REG1 RFSYS_REG_REG(RFSYS,1) +#define RFSYS_REG2 RFSYS_REG_REG(RFSYS,2) +#define RFSYS_REG3 RFSYS_REG_REG(RFSYS,3) +#define RFSYS_REG4 RFSYS_REG_REG(RFSYS,4) +#define RFSYS_REG5 RFSYS_REG_REG(RFSYS,5) +#define RFSYS_REG6 RFSYS_REG_REG(RFSYS,6) +#define RFSYS_REG7 RFSYS_REG_REG(RFSYS,7) + +/* RFSYS - Register array accessors */ +#define RFSYS_REG(index) RFSYS_REG_REG(RFSYS,index) + +/*! + * @} + */ /* end of group RFSYS_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RFSYS_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RFVBAT Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFVBAT_Peripheral_Access_Layer RFVBAT Peripheral Access Layer + * @{ + */ + +/** RFVBAT - Register Layout Typedef */ +typedef struct { + __IO uint32_t REG[8]; /**< VBAT register file register, array offset: 0x0, array step: 0x4 */ +} RFVBAT_Type, *RFVBAT_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RFVBAT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFVBAT_Register_Accessor_Macros RFVBAT - Register accessor macros + * @{ + */ + + +/* RFVBAT - Register accessors */ +#define RFVBAT_REG_REG(base,index) ((base)->REG[index]) + +/*! + * @} + */ /* end of group RFVBAT_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RFVBAT Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFVBAT_Register_Masks RFVBAT Register Masks + * @{ + */ + +/* REG Bit Fields */ +#define RFVBAT_REG_LL_MASK 0xFFu +#define RFVBAT_REG_LL_SHIFT 0 +#define RFVBAT_REG_LL(x) (((uint32_t)(((uint32_t)(x))<<RFVBAT_REG_LL_SHIFT))&RFVBAT_REG_LL_MASK) +#define RFVBAT_REG_LH_MASK 0xFF00u +#define RFVBAT_REG_LH_SHIFT 8 +#define RFVBAT_REG_LH(x) (((uint32_t)(((uint32_t)(x))<<RFVBAT_REG_LH_SHIFT))&RFVBAT_REG_LH_MASK) +#define RFVBAT_REG_HL_MASK 0xFF0000u +#define RFVBAT_REG_HL_SHIFT 16 +#define RFVBAT_REG_HL(x) (((uint32_t)(((uint32_t)(x))<<RFVBAT_REG_HL_SHIFT))&RFVBAT_REG_HL_MASK) +#define RFVBAT_REG_HH_MASK 0xFF000000u +#define RFVBAT_REG_HH_SHIFT 24 +#define RFVBAT_REG_HH(x) (((uint32_t)(((uint32_t)(x))<<RFVBAT_REG_HH_SHIFT))&RFVBAT_REG_HH_MASK) + +/*! + * @} + */ /* end of group RFVBAT_Register_Masks */ + + +/* RFVBAT - Peripheral instance base addresses */ +/** Peripheral RFVBAT base address */ +#define RFVBAT_BASE (0x4003E000u) +/** Peripheral RFVBAT base pointer */ +#define RFVBAT ((RFVBAT_Type *)RFVBAT_BASE) +#define RFVBAT_BASE_PTR (RFVBAT) +/** Array initializer of RFVBAT peripheral base pointers */ +#define RFVBAT_BASES { RFVBAT } + +/* ---------------------------------------------------------------------------- + -- RFVBAT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFVBAT_Register_Accessor_Macros RFVBAT - Register accessor macros + * @{ + */ + + +/* RFVBAT - Register instance definitions */ +/* RFVBAT */ +#define RFVBAT_REG0 RFVBAT_REG_REG(RFVBAT,0) +#define RFVBAT_REG1 RFVBAT_REG_REG(RFVBAT,1) +#define RFVBAT_REG2 RFVBAT_REG_REG(RFVBAT,2) +#define RFVBAT_REG3 RFVBAT_REG_REG(RFVBAT,3) +#define RFVBAT_REG4 RFVBAT_REG_REG(RFVBAT,4) +#define RFVBAT_REG5 RFVBAT_REG_REG(RFVBAT,5) +#define RFVBAT_REG6 RFVBAT_REG_REG(RFVBAT,6) +#define RFVBAT_REG7 RFVBAT_REG_REG(RFVBAT,7) + +/* RFVBAT - Register array accessors */ +#define RFVBAT_REG(index) RFVBAT_REG_REG(RFVBAT,index) + +/*! + * @} + */ /* end of group RFVBAT_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RFVBAT_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RNG Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RNG_Peripheral_Access_Layer RNG Peripheral Access Layer + * @{ + */ + +/** RNG - Register Layout Typedef */ +typedef struct { + __IO uint32_t CR; /**< RNGA Control Register, offset: 0x0 */ + __I uint32_t SR; /**< RNGA Status Register, offset: 0x4 */ + __O uint32_t ER; /**< RNGA Entropy Register, offset: 0x8 */ + __I uint32_t OR; /**< RNGA Output Register, offset: 0xC */ +} RNG_Type, *RNG_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RNG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RNG_Register_Accessor_Macros RNG - Register accessor macros + * @{ + */ + + +/* RNG - Register accessors */ +#define RNG_CR_REG(base) ((base)->CR) +#define RNG_SR_REG(base) ((base)->SR) +#define RNG_ER_REG(base) ((base)->ER) +#define RNG_OR_REG(base) ((base)->OR) + +/*! + * @} + */ /* end of group RNG_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RNG Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RNG_Register_Masks RNG Register Masks + * @{ + */ + +/* CR Bit Fields */ +#define RNG_CR_GO_MASK 0x1u +#define RNG_CR_GO_SHIFT 0 +#define RNG_CR_HA_MASK 0x2u +#define RNG_CR_HA_SHIFT 1 +#define RNG_CR_INTM_MASK 0x4u +#define RNG_CR_INTM_SHIFT 2 +#define RNG_CR_CLRI_MASK 0x8u +#define RNG_CR_CLRI_SHIFT 3 +#define RNG_CR_SLP_MASK 0x10u +#define RNG_CR_SLP_SHIFT 4 +/* SR Bit Fields */ +#define RNG_SR_SECV_MASK 0x1u +#define RNG_SR_SECV_SHIFT 0 +#define RNG_SR_LRS_MASK 0x2u +#define RNG_SR_LRS_SHIFT 1 +#define RNG_SR_ORU_MASK 0x4u +#define RNG_SR_ORU_SHIFT 2 +#define RNG_SR_ERRI_MASK 0x8u +#define RNG_SR_ERRI_SHIFT 3 +#define RNG_SR_SLP_MASK 0x10u +#define RNG_SR_SLP_SHIFT 4 +#define RNG_SR_OREG_LVL_MASK 0xFF00u +#define RNG_SR_OREG_LVL_SHIFT 8 +#define RNG_SR_OREG_LVL(x) (((uint32_t)(((uint32_t)(x))<<RNG_SR_OREG_LVL_SHIFT))&RNG_SR_OREG_LVL_MASK) +#define RNG_SR_OREG_SIZE_MASK 0xFF0000u +#define RNG_SR_OREG_SIZE_SHIFT 16 +#define RNG_SR_OREG_SIZE(x) (((uint32_t)(((uint32_t)(x))<<RNG_SR_OREG_SIZE_SHIFT))&RNG_SR_OREG_SIZE_MASK) +/* ER Bit Fields */ +#define RNG_ER_EXT_ENT_MASK 0xFFFFFFFFu +#define RNG_ER_EXT_ENT_SHIFT 0 +#define RNG_ER_EXT_ENT(x) (((uint32_t)(((uint32_t)(x))<<RNG_ER_EXT_ENT_SHIFT))&RNG_ER_EXT_ENT_MASK) +/* OR Bit Fields */ +#define RNG_OR_RANDOUT_MASK 0xFFFFFFFFu +#define RNG_OR_RANDOUT_SHIFT 0 +#define RNG_OR_RANDOUT(x) (((uint32_t)(((uint32_t)(x))<<RNG_OR_RANDOUT_SHIFT))&RNG_OR_RANDOUT_MASK) + +/*! + * @} + */ /* end of group RNG_Register_Masks */ + + +/* RNG - Peripheral instance base addresses */ +/** Peripheral RNG base address */ +#define RNG_BASE (0x40029000u) +/** Peripheral RNG base pointer */ +#define RNG ((RNG_Type *)RNG_BASE) +#define RNG_BASE_PTR (RNG) +/** Array initializer of RNG peripheral base pointers */ +#define RNG_BASES { RNG } + +/* ---------------------------------------------------------------------------- + -- RNG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RNG_Register_Accessor_Macros RNG - Register accessor macros + * @{ + */ + + +/* RNG - Register instance definitions */ +/* RNG */ +#define RNG_CR RNG_CR_REG(RNG) +#define RNG_SR RNG_SR_REG(RNG) +#define RNG_ER RNG_ER_REG(RNG) +#define RNG_OR RNG_OR_REG(RNG) + +/*! + * @} + */ /* end of group RNG_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RNG_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RTC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RTC_Peripheral_Access_Layer RTC Peripheral Access Layer + * @{ + */ + +/** RTC - Register Layout Typedef */ +typedef struct { + __IO uint32_t TSR; /**< RTC Time Seconds Register, offset: 0x0 */ + __IO uint32_t TPR; /**< RTC Time Prescaler Register, offset: 0x4 */ + __IO uint32_t TAR; /**< RTC Time Alarm Register, offset: 0x8 */ + __IO uint32_t TCR; /**< RTC Time Compensation Register, offset: 0xC */ + __IO uint32_t CR; /**< RTC Control Register, offset: 0x10 */ + __IO uint32_t SR; /**< RTC Status Register, offset: 0x14 */ + __IO uint32_t LR; /**< RTC Lock Register, offset: 0x18 */ + __IO uint32_t IER; /**< RTC Interrupt Enable Register, offset: 0x1C */ + uint8_t RESERVED_0[2016]; + __IO uint32_t WAR; /**< RTC Write Access Register, offset: 0x800 */ + __IO uint32_t RAR; /**< RTC Read Access Register, offset: 0x804 */ +} RTC_Type, *RTC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RTC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RTC_Register_Accessor_Macros RTC - Register accessor macros + * @{ + */ + + +/* RTC - Register accessors */ +#define RTC_TSR_REG(base) ((base)->TSR) +#define RTC_TPR_REG(base) ((base)->TPR) +#define RTC_TAR_REG(base) ((base)->TAR) +#define RTC_TCR_REG(base) ((base)->TCR) +#define RTC_CR_REG(base) ((base)->CR) +#define RTC_SR_REG(base) ((base)->SR) +#define RTC_LR_REG(base) ((base)->LR) +#define RTC_IER_REG(base) ((base)->IER) +#define RTC_WAR_REG(base) ((base)->WAR) +#define RTC_RAR_REG(base) ((base)->RAR) + +/*! + * @} + */ /* end of group RTC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RTC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RTC_Register_Masks RTC Register Masks + * @{ + */ + +/* TSR Bit Fields */ +#define RTC_TSR_TSR_MASK 0xFFFFFFFFu +#define RTC_TSR_TSR_SHIFT 0 +#define RTC_TSR_TSR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TSR_TSR_SHIFT))&RTC_TSR_TSR_MASK) +/* TPR Bit Fields */ +#define RTC_TPR_TPR_MASK 0xFFFFu +#define RTC_TPR_TPR_SHIFT 0 +#define RTC_TPR_TPR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TPR_TPR_SHIFT))&RTC_TPR_TPR_MASK) +/* TAR Bit Fields */ +#define RTC_TAR_TAR_MASK 0xFFFFFFFFu +#define RTC_TAR_TAR_SHIFT 0 +#define RTC_TAR_TAR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TAR_TAR_SHIFT))&RTC_TAR_TAR_MASK) +/* TCR Bit Fields */ +#define RTC_TCR_TCR_MASK 0xFFu +#define RTC_TCR_TCR_SHIFT 0 +#define RTC_TCR_TCR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TCR_TCR_SHIFT))&RTC_TCR_TCR_MASK) +#define RTC_TCR_CIR_MASK 0xFF00u +#define RTC_TCR_CIR_SHIFT 8 +#define RTC_TCR_CIR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TCR_CIR_SHIFT))&RTC_TCR_CIR_MASK) +#define RTC_TCR_TCV_MASK 0xFF0000u +#define RTC_TCR_TCV_SHIFT 16 +#define RTC_TCR_TCV(x) (((uint32_t)(((uint32_t)(x))<<RTC_TCR_TCV_SHIFT))&RTC_TCR_TCV_MASK) +#define RTC_TCR_CIC_MASK 0xFF000000u +#define RTC_TCR_CIC_SHIFT 24 +#define RTC_TCR_CIC(x) (((uint32_t)(((uint32_t)(x))<<RTC_TCR_CIC_SHIFT))&RTC_TCR_CIC_MASK) +/* CR Bit Fields */ +#define RTC_CR_SWR_MASK 0x1u +#define RTC_CR_SWR_SHIFT 0 +#define RTC_CR_WPE_MASK 0x2u +#define RTC_CR_WPE_SHIFT 1 +#define RTC_CR_SUP_MASK 0x4u +#define RTC_CR_SUP_SHIFT 2 +#define RTC_CR_UM_MASK 0x8u +#define RTC_CR_UM_SHIFT 3 +#define RTC_CR_WPS_MASK 0x10u +#define RTC_CR_WPS_SHIFT 4 +#define RTC_CR_OSCE_MASK 0x100u +#define RTC_CR_OSCE_SHIFT 8 +#define RTC_CR_CLKO_MASK 0x200u +#define RTC_CR_CLKO_SHIFT 9 +#define RTC_CR_SC16P_MASK 0x400u +#define RTC_CR_SC16P_SHIFT 10 +#define RTC_CR_SC8P_MASK 0x800u +#define RTC_CR_SC8P_SHIFT 11 +#define RTC_CR_SC4P_MASK 0x1000u +#define RTC_CR_SC4P_SHIFT 12 +#define RTC_CR_SC2P_MASK 0x2000u +#define RTC_CR_SC2P_SHIFT 13 +/* SR Bit Fields */ +#define RTC_SR_TIF_MASK 0x1u +#define RTC_SR_TIF_SHIFT 0 +#define RTC_SR_TOF_MASK 0x2u +#define RTC_SR_TOF_SHIFT 1 +#define RTC_SR_TAF_MASK 0x4u +#define RTC_SR_TAF_SHIFT 2 +#define RTC_SR_TCE_MASK 0x10u +#define RTC_SR_TCE_SHIFT 4 +/* LR Bit Fields */ +#define RTC_LR_TCL_MASK 0x8u +#define RTC_LR_TCL_SHIFT 3 +#define RTC_LR_CRL_MASK 0x10u +#define RTC_LR_CRL_SHIFT 4 +#define RTC_LR_SRL_MASK 0x20u +#define RTC_LR_SRL_SHIFT 5 +#define RTC_LR_LRL_MASK 0x40u +#define RTC_LR_LRL_SHIFT 6 +/* IER Bit Fields */ +#define RTC_IER_TIIE_MASK 0x1u +#define RTC_IER_TIIE_SHIFT 0 +#define RTC_IER_TOIE_MASK 0x2u +#define RTC_IER_TOIE_SHIFT 1 +#define RTC_IER_TAIE_MASK 0x4u +#define RTC_IER_TAIE_SHIFT 2 +#define RTC_IER_TSIE_MASK 0x10u +#define RTC_IER_TSIE_SHIFT 4 +#define RTC_IER_WPON_MASK 0x80u +#define RTC_IER_WPON_SHIFT 7 +/* WAR Bit Fields */ +#define RTC_WAR_TSRW_MASK 0x1u +#define RTC_WAR_TSRW_SHIFT 0 +#define RTC_WAR_TPRW_MASK 0x2u +#define RTC_WAR_TPRW_SHIFT 1 +#define RTC_WAR_TARW_MASK 0x4u +#define RTC_WAR_TARW_SHIFT 2 +#define RTC_WAR_TCRW_MASK 0x8u +#define RTC_WAR_TCRW_SHIFT 3 +#define RTC_WAR_CRW_MASK 0x10u +#define RTC_WAR_CRW_SHIFT 4 +#define RTC_WAR_SRW_MASK 0x20u +#define RTC_WAR_SRW_SHIFT 5 +#define RTC_WAR_LRW_MASK 0x40u +#define RTC_WAR_LRW_SHIFT 6 +#define RTC_WAR_IERW_MASK 0x80u +#define RTC_WAR_IERW_SHIFT 7 +/* RAR Bit Fields */ +#define RTC_RAR_TSRR_MASK 0x1u +#define RTC_RAR_TSRR_SHIFT 0 +#define RTC_RAR_TPRR_MASK 0x2u +#define RTC_RAR_TPRR_SHIFT 1 +#define RTC_RAR_TARR_MASK 0x4u +#define RTC_RAR_TARR_SHIFT 2 +#define RTC_RAR_TCRR_MASK 0x8u +#define RTC_RAR_TCRR_SHIFT 3 +#define RTC_RAR_CRR_MASK 0x10u +#define RTC_RAR_CRR_SHIFT 4 +#define RTC_RAR_SRR_MASK 0x20u +#define RTC_RAR_SRR_SHIFT 5 +#define RTC_RAR_LRR_MASK 0x40u +#define RTC_RAR_LRR_SHIFT 6 +#define RTC_RAR_IERR_MASK 0x80u +#define RTC_RAR_IERR_SHIFT 7 + +/*! + * @} + */ /* end of group RTC_Register_Masks */ + + +/* RTC - Peripheral instance base addresses */ +/** Peripheral RTC base address */ +#define RTC_BASE (0x4003D000u) +/** Peripheral RTC base pointer */ +#define RTC ((RTC_Type *)RTC_BASE) +#define RTC_BASE_PTR (RTC) +/** Array initializer of RTC peripheral base pointers */ +#define RTC_BASES { RTC } + +/* ---------------------------------------------------------------------------- + -- RTC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RTC_Register_Accessor_Macros RTC - Register accessor macros + * @{ + */ + + +/* RTC - Register instance definitions */ +/* RTC */ +#define RTC_TSR RTC_TSR_REG(RTC) +#define RTC_TPR RTC_TPR_REG(RTC) +#define RTC_TAR RTC_TAR_REG(RTC) +#define RTC_TCR RTC_TCR_REG(RTC) +#define RTC_CR RTC_CR_REG(RTC) +#define RTC_SR RTC_SR_REG(RTC) +#define RTC_LR RTC_LR_REG(RTC) +#define RTC_IER RTC_IER_REG(RTC) +#define RTC_WAR RTC_WAR_REG(RTC) +#define RTC_RAR RTC_RAR_REG(RTC) + +/*! + * @} + */ /* end of group RTC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RTC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- SDHC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SDHC_Peripheral_Access_Layer SDHC Peripheral Access Layer + * @{ + */ + +/** SDHC - Register Layout Typedef */ +typedef struct { + __IO uint32_t DSADDR; /**< DMA System Address register, offset: 0x0 */ + __IO uint32_t BLKATTR; /**< Block Attributes register, offset: 0x4 */ + __IO uint32_t CMDARG; /**< Command Argument register, offset: 0x8 */ + __IO uint32_t XFERTYP; /**< Transfer Type register, offset: 0xC */ + __I uint32_t CMDRSP[4]; /**< Command Response 0..Command Response 3, array offset: 0x10, array step: 0x4 */ + __IO uint32_t DATPORT; /**< Buffer Data Port register, offset: 0x20 */ + __I uint32_t PRSSTAT; /**< Present State register, offset: 0x24 */ + __IO uint32_t PROCTL; /**< Protocol Control register, offset: 0x28 */ + __IO uint32_t SYSCTL; /**< System Control register, offset: 0x2C */ + __IO uint32_t IRQSTAT; /**< Interrupt Status register, offset: 0x30 */ + __IO uint32_t IRQSTATEN; /**< Interrupt Status Enable register, offset: 0x34 */ + __IO uint32_t IRQSIGEN; /**< Interrupt Signal Enable register, offset: 0x38 */ + __I uint32_t AC12ERR; /**< Auto CMD12 Error Status Register, offset: 0x3C */ + __I uint32_t HTCAPBLT; /**< Host Controller Capabilities, offset: 0x40 */ + __IO uint32_t WML; /**< Watermark Level Register, offset: 0x44 */ + uint8_t RESERVED_0[8]; + __O uint32_t FEVT; /**< Force Event register, offset: 0x50 */ + __I uint32_t ADMAES; /**< ADMA Error Status register, offset: 0x54 */ + __IO uint32_t ADSADDR; /**< ADMA System Addressregister, offset: 0x58 */ + uint8_t RESERVED_1[100]; + __IO uint32_t VENDOR; /**< Vendor Specific register, offset: 0xC0 */ + __IO uint32_t MMCBOOT; /**< MMC Boot register, offset: 0xC4 */ + uint8_t RESERVED_2[52]; + __I uint32_t HOSTVER; /**< Host Controller Version, offset: 0xFC */ +} SDHC_Type, *SDHC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- SDHC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SDHC_Register_Accessor_Macros SDHC - Register accessor macros + * @{ + */ + + +/* SDHC - Register accessors */ +#define SDHC_DSADDR_REG(base) ((base)->DSADDR) +#define SDHC_BLKATTR_REG(base) ((base)->BLKATTR) +#define SDHC_CMDARG_REG(base) ((base)->CMDARG) +#define SDHC_XFERTYP_REG(base) ((base)->XFERTYP) +#define SDHC_CMDRSP_REG(base,index) ((base)->CMDRSP[index]) +#define SDHC_DATPORT_REG(base) ((base)->DATPORT) +#define SDHC_PRSSTAT_REG(base) ((base)->PRSSTAT) +#define SDHC_PROCTL_REG(base) ((base)->PROCTL) +#define SDHC_SYSCTL_REG(base) ((base)->SYSCTL) +#define SDHC_IRQSTAT_REG(base) ((base)->IRQSTAT) +#define SDHC_IRQSTATEN_REG(base) ((base)->IRQSTATEN) +#define SDHC_IRQSIGEN_REG(base) ((base)->IRQSIGEN) +#define SDHC_AC12ERR_REG(base) ((base)->AC12ERR) +#define SDHC_HTCAPBLT_REG(base) ((base)->HTCAPBLT) +#define SDHC_WML_REG(base) ((base)->WML) +#define SDHC_FEVT_REG(base) ((base)->FEVT) +#define SDHC_ADMAES_REG(base) ((base)->ADMAES) +#define SDHC_ADSADDR_REG(base) ((base)->ADSADDR) +#define SDHC_VENDOR_REG(base) ((base)->VENDOR) +#define SDHC_MMCBOOT_REG(base) ((base)->MMCBOOT) +#define SDHC_HOSTVER_REG(base) ((base)->HOSTVER) + +/*! + * @} + */ /* end of group SDHC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- SDHC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SDHC_Register_Masks SDHC Register Masks + * @{ + */ + +/* DSADDR Bit Fields */ +#define SDHC_DSADDR_DSADDR_MASK 0xFFFFFFFCu +#define SDHC_DSADDR_DSADDR_SHIFT 2 +#define SDHC_DSADDR_DSADDR(x) (((uint32_t)(((uint32_t)(x))<<SDHC_DSADDR_DSADDR_SHIFT))&SDHC_DSADDR_DSADDR_MASK) +/* BLKATTR Bit Fields */ +#define SDHC_BLKATTR_BLKSIZE_MASK 0x1FFFu +#define SDHC_BLKATTR_BLKSIZE_SHIFT 0 +#define SDHC_BLKATTR_BLKSIZE(x) (((uint32_t)(((uint32_t)(x))<<SDHC_BLKATTR_BLKSIZE_SHIFT))&SDHC_BLKATTR_BLKSIZE_MASK) +#define SDHC_BLKATTR_BLKCNT_MASK 0xFFFF0000u +#define SDHC_BLKATTR_BLKCNT_SHIFT 16 +#define SDHC_BLKATTR_BLKCNT(x) (((uint32_t)(((uint32_t)(x))<<SDHC_BLKATTR_BLKCNT_SHIFT))&SDHC_BLKATTR_BLKCNT_MASK) +/* CMDARG Bit Fields */ +#define SDHC_CMDARG_CMDARG_MASK 0xFFFFFFFFu +#define SDHC_CMDARG_CMDARG_SHIFT 0 +#define SDHC_CMDARG_CMDARG(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDARG_CMDARG_SHIFT))&SDHC_CMDARG_CMDARG_MASK) +/* XFERTYP Bit Fields */ +#define SDHC_XFERTYP_DMAEN_MASK 0x1u +#define SDHC_XFERTYP_DMAEN_SHIFT 0 +#define SDHC_XFERTYP_BCEN_MASK 0x2u +#define SDHC_XFERTYP_BCEN_SHIFT 1 +#define SDHC_XFERTYP_AC12EN_MASK 0x4u +#define SDHC_XFERTYP_AC12EN_SHIFT 2 +#define SDHC_XFERTYP_DTDSEL_MASK 0x10u +#define SDHC_XFERTYP_DTDSEL_SHIFT 4 +#define SDHC_XFERTYP_MSBSEL_MASK 0x20u +#define SDHC_XFERTYP_MSBSEL_SHIFT 5 +#define SDHC_XFERTYP_RSPTYP_MASK 0x30000u +#define SDHC_XFERTYP_RSPTYP_SHIFT 16 +#define SDHC_XFERTYP_RSPTYP(x) (((uint32_t)(((uint32_t)(x))<<SDHC_XFERTYP_RSPTYP_SHIFT))&SDHC_XFERTYP_RSPTYP_MASK) +#define SDHC_XFERTYP_CCCEN_MASK 0x80000u +#define SDHC_XFERTYP_CCCEN_SHIFT 19 +#define SDHC_XFERTYP_CICEN_MASK 0x100000u +#define SDHC_XFERTYP_CICEN_SHIFT 20 +#define SDHC_XFERTYP_DPSEL_MASK 0x200000u +#define SDHC_XFERTYP_DPSEL_SHIFT 21 +#define SDHC_XFERTYP_CMDTYP_MASK 0xC00000u +#define SDHC_XFERTYP_CMDTYP_SHIFT 22 +#define SDHC_XFERTYP_CMDTYP(x) (((uint32_t)(((uint32_t)(x))<<SDHC_XFERTYP_CMDTYP_SHIFT))&SDHC_XFERTYP_CMDTYP_MASK) +#define SDHC_XFERTYP_CMDINX_MASK 0x3F000000u +#define SDHC_XFERTYP_CMDINX_SHIFT 24 +#define SDHC_XFERTYP_CMDINX(x) (((uint32_t)(((uint32_t)(x))<<SDHC_XFERTYP_CMDINX_SHIFT))&SDHC_XFERTYP_CMDINX_MASK) +/* CMDRSP Bit Fields */ +#define SDHC_CMDRSP_CMDRSP0_MASK 0xFFFFFFFFu +#define SDHC_CMDRSP_CMDRSP0_SHIFT 0 +#define SDHC_CMDRSP_CMDRSP0(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDRSP_CMDRSP0_SHIFT))&SDHC_CMDRSP_CMDRSP0_MASK) +#define SDHC_CMDRSP_CMDRSP1_MASK 0xFFFFFFFFu +#define SDHC_CMDRSP_CMDRSP1_SHIFT 0 +#define SDHC_CMDRSP_CMDRSP1(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDRSP_CMDRSP1_SHIFT))&SDHC_CMDRSP_CMDRSP1_MASK) +#define SDHC_CMDRSP_CMDRSP2_MASK 0xFFFFFFFFu +#define SDHC_CMDRSP_CMDRSP2_SHIFT 0 +#define SDHC_CMDRSP_CMDRSP2(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDRSP_CMDRSP2_SHIFT))&SDHC_CMDRSP_CMDRSP2_MASK) +#define SDHC_CMDRSP_CMDRSP3_MASK 0xFFFFFFFFu +#define SDHC_CMDRSP_CMDRSP3_SHIFT 0 +#define SDHC_CMDRSP_CMDRSP3(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDRSP_CMDRSP3_SHIFT))&SDHC_CMDRSP_CMDRSP3_MASK) +/* DATPORT Bit Fields */ +#define SDHC_DATPORT_DATCONT_MASK 0xFFFFFFFFu +#define SDHC_DATPORT_DATCONT_SHIFT 0 +#define SDHC_DATPORT_DATCONT(x) (((uint32_t)(((uint32_t)(x))<<SDHC_DATPORT_DATCONT_SHIFT))&SDHC_DATPORT_DATCONT_MASK) +/* PRSSTAT Bit Fields */ +#define SDHC_PRSSTAT_CIHB_MASK 0x1u +#define SDHC_PRSSTAT_CIHB_SHIFT 0 +#define SDHC_PRSSTAT_CDIHB_MASK 0x2u +#define SDHC_PRSSTAT_CDIHB_SHIFT 1 +#define SDHC_PRSSTAT_DLA_MASK 0x4u +#define SDHC_PRSSTAT_DLA_SHIFT 2 +#define SDHC_PRSSTAT_SDSTB_MASK 0x8u +#define SDHC_PRSSTAT_SDSTB_SHIFT 3 +#define SDHC_PRSSTAT_IPGOFF_MASK 0x10u +#define SDHC_PRSSTAT_IPGOFF_SHIFT 4 +#define SDHC_PRSSTAT_HCKOFF_MASK 0x20u +#define SDHC_PRSSTAT_HCKOFF_SHIFT 5 +#define SDHC_PRSSTAT_PEROFF_MASK 0x40u +#define SDHC_PRSSTAT_PEROFF_SHIFT 6 +#define SDHC_PRSSTAT_SDOFF_MASK 0x80u +#define SDHC_PRSSTAT_SDOFF_SHIFT 7 +#define SDHC_PRSSTAT_WTA_MASK 0x100u +#define SDHC_PRSSTAT_WTA_SHIFT 8 +#define SDHC_PRSSTAT_RTA_MASK 0x200u +#define SDHC_PRSSTAT_RTA_SHIFT 9 +#define SDHC_PRSSTAT_BWEN_MASK 0x400u +#define SDHC_PRSSTAT_BWEN_SHIFT 10 +#define SDHC_PRSSTAT_BREN_MASK 0x800u +#define SDHC_PRSSTAT_BREN_SHIFT 11 +#define SDHC_PRSSTAT_CINS_MASK 0x10000u +#define SDHC_PRSSTAT_CINS_SHIFT 16 +#define SDHC_PRSSTAT_CLSL_MASK 0x800000u +#define SDHC_PRSSTAT_CLSL_SHIFT 23 +#define SDHC_PRSSTAT_DLSL_MASK 0xFF000000u +#define SDHC_PRSSTAT_DLSL_SHIFT 24 +#define SDHC_PRSSTAT_DLSL(x) (((uint32_t)(((uint32_t)(x))<<SDHC_PRSSTAT_DLSL_SHIFT))&SDHC_PRSSTAT_DLSL_MASK) +/* PROCTL Bit Fields */ +#define SDHC_PROCTL_LCTL_MASK 0x1u +#define SDHC_PROCTL_LCTL_SHIFT 0 +#define SDHC_PROCTL_DTW_MASK 0x6u +#define SDHC_PROCTL_DTW_SHIFT 1 +#define SDHC_PROCTL_DTW(x) (((uint32_t)(((uint32_t)(x))<<SDHC_PROCTL_DTW_SHIFT))&SDHC_PROCTL_DTW_MASK) +#define SDHC_PROCTL_D3CD_MASK 0x8u +#define SDHC_PROCTL_D3CD_SHIFT 3 +#define SDHC_PROCTL_EMODE_MASK 0x30u +#define SDHC_PROCTL_EMODE_SHIFT 4 +#define SDHC_PROCTL_EMODE(x) (((uint32_t)(((uint32_t)(x))<<SDHC_PROCTL_EMODE_SHIFT))&SDHC_PROCTL_EMODE_MASK) +#define SDHC_PROCTL_CDTL_MASK 0x40u +#define SDHC_PROCTL_CDTL_SHIFT 6 +#define SDHC_PROCTL_CDSS_MASK 0x80u +#define SDHC_PROCTL_CDSS_SHIFT 7 +#define SDHC_PROCTL_DMAS_MASK 0x300u +#define SDHC_PROCTL_DMAS_SHIFT 8 +#define SDHC_PROCTL_DMAS(x) (((uint32_t)(((uint32_t)(x))<<SDHC_PROCTL_DMAS_SHIFT))&SDHC_PROCTL_DMAS_MASK) +#define SDHC_PROCTL_SABGREQ_MASK 0x10000u +#define SDHC_PROCTL_SABGREQ_SHIFT 16 +#define SDHC_PROCTL_CREQ_MASK 0x20000u +#define SDHC_PROCTL_CREQ_SHIFT 17 +#define SDHC_PROCTL_RWCTL_MASK 0x40000u +#define SDHC_PROCTL_RWCTL_SHIFT 18 +#define SDHC_PROCTL_IABG_MASK 0x80000u +#define SDHC_PROCTL_IABG_SHIFT 19 +#define SDHC_PROCTL_WECINT_MASK 0x1000000u +#define SDHC_PROCTL_WECINT_SHIFT 24 +#define SDHC_PROCTL_WECINS_MASK 0x2000000u +#define SDHC_PROCTL_WECINS_SHIFT 25 +#define SDHC_PROCTL_WECRM_MASK 0x4000000u +#define SDHC_PROCTL_WECRM_SHIFT 26 +/* SYSCTL Bit Fields */ +#define SDHC_SYSCTL_IPGEN_MASK 0x1u +#define SDHC_SYSCTL_IPGEN_SHIFT 0 +#define SDHC_SYSCTL_HCKEN_MASK 0x2u +#define SDHC_SYSCTL_HCKEN_SHIFT 1 +#define SDHC_SYSCTL_PEREN_MASK 0x4u +#define SDHC_SYSCTL_PEREN_SHIFT 2 +#define SDHC_SYSCTL_SDCLKEN_MASK 0x8u +#define SDHC_SYSCTL_SDCLKEN_SHIFT 3 +#define SDHC_SYSCTL_DVS_MASK 0xF0u +#define SDHC_SYSCTL_DVS_SHIFT 4 +#define SDHC_SYSCTL_DVS(x) (((uint32_t)(((uint32_t)(x))<<SDHC_SYSCTL_DVS_SHIFT))&SDHC_SYSCTL_DVS_MASK) +#define SDHC_SYSCTL_SDCLKFS_MASK 0xFF00u +#define SDHC_SYSCTL_SDCLKFS_SHIFT 8 +#define SDHC_SYSCTL_SDCLKFS(x) (((uint32_t)(((uint32_t)(x))<<SDHC_SYSCTL_SDCLKFS_SHIFT))&SDHC_SYSCTL_SDCLKFS_MASK) +#define SDHC_SYSCTL_DTOCV_MASK 0xF0000u +#define SDHC_SYSCTL_DTOCV_SHIFT 16 +#define SDHC_SYSCTL_DTOCV(x) (((uint32_t)(((uint32_t)(x))<<SDHC_SYSCTL_DTOCV_SHIFT))&SDHC_SYSCTL_DTOCV_MASK) +#define SDHC_SYSCTL_RSTA_MASK 0x1000000u +#define SDHC_SYSCTL_RSTA_SHIFT 24 +#define SDHC_SYSCTL_RSTC_MASK 0x2000000u +#define SDHC_SYSCTL_RSTC_SHIFT 25 +#define SDHC_SYSCTL_RSTD_MASK 0x4000000u +#define SDHC_SYSCTL_RSTD_SHIFT 26 +#define SDHC_SYSCTL_INITA_MASK 0x8000000u +#define SDHC_SYSCTL_INITA_SHIFT 27 +/* IRQSTAT Bit Fields */ +#define SDHC_IRQSTAT_CC_MASK 0x1u +#define SDHC_IRQSTAT_CC_SHIFT 0 +#define SDHC_IRQSTAT_TC_MASK 0x2u +#define SDHC_IRQSTAT_TC_SHIFT 1 +#define SDHC_IRQSTAT_BGE_MASK 0x4u +#define SDHC_IRQSTAT_BGE_SHIFT 2 +#define SDHC_IRQSTAT_DINT_MASK 0x8u +#define SDHC_IRQSTAT_DINT_SHIFT 3 +#define SDHC_IRQSTAT_BWR_MASK 0x10u +#define SDHC_IRQSTAT_BWR_SHIFT 4 +#define SDHC_IRQSTAT_BRR_MASK 0x20u +#define SDHC_IRQSTAT_BRR_SHIFT 5 +#define SDHC_IRQSTAT_CINS_MASK 0x40u +#define SDHC_IRQSTAT_CINS_SHIFT 6 +#define SDHC_IRQSTAT_CRM_MASK 0x80u +#define SDHC_IRQSTAT_CRM_SHIFT 7 +#define SDHC_IRQSTAT_CINT_MASK 0x100u +#define SDHC_IRQSTAT_CINT_SHIFT 8 +#define SDHC_IRQSTAT_CTOE_MASK 0x10000u +#define SDHC_IRQSTAT_CTOE_SHIFT 16 +#define SDHC_IRQSTAT_CCE_MASK 0x20000u +#define SDHC_IRQSTAT_CCE_SHIFT 17 +#define SDHC_IRQSTAT_CEBE_MASK 0x40000u +#define SDHC_IRQSTAT_CEBE_SHIFT 18 +#define SDHC_IRQSTAT_CIE_MASK 0x80000u +#define SDHC_IRQSTAT_CIE_SHIFT 19 +#define SDHC_IRQSTAT_DTOE_MASK 0x100000u +#define SDHC_IRQSTAT_DTOE_SHIFT 20 +#define SDHC_IRQSTAT_DCE_MASK 0x200000u +#define SDHC_IRQSTAT_DCE_SHIFT 21 +#define SDHC_IRQSTAT_DEBE_MASK 0x400000u +#define SDHC_IRQSTAT_DEBE_SHIFT 22 +#define SDHC_IRQSTAT_AC12E_MASK 0x1000000u +#define SDHC_IRQSTAT_AC12E_SHIFT 24 +#define SDHC_IRQSTAT_DMAE_MASK 0x10000000u +#define SDHC_IRQSTAT_DMAE_SHIFT 28 +/* IRQSTATEN Bit Fields */ +#define SDHC_IRQSTATEN_CCSEN_MASK 0x1u +#define SDHC_IRQSTATEN_CCSEN_SHIFT 0 +#define SDHC_IRQSTATEN_TCSEN_MASK 0x2u +#define SDHC_IRQSTATEN_TCSEN_SHIFT 1 +#define SDHC_IRQSTATEN_BGESEN_MASK 0x4u +#define SDHC_IRQSTATEN_BGESEN_SHIFT 2 +#define SDHC_IRQSTATEN_DINTSEN_MASK 0x8u +#define SDHC_IRQSTATEN_DINTSEN_SHIFT 3 +#define SDHC_IRQSTATEN_BWRSEN_MASK 0x10u +#define SDHC_IRQSTATEN_BWRSEN_SHIFT 4 +#define SDHC_IRQSTATEN_BRRSEN_MASK 0x20u +#define SDHC_IRQSTATEN_BRRSEN_SHIFT 5 +#define SDHC_IRQSTATEN_CINSEN_MASK 0x40u +#define SDHC_IRQSTATEN_CINSEN_SHIFT 6 +#define SDHC_IRQSTATEN_CRMSEN_MASK 0x80u +#define SDHC_IRQSTATEN_CRMSEN_SHIFT 7 +#define SDHC_IRQSTATEN_CINTSEN_MASK 0x100u +#define SDHC_IRQSTATEN_CINTSEN_SHIFT 8 +#define SDHC_IRQSTATEN_CTOESEN_MASK 0x10000u +#define SDHC_IRQSTATEN_CTOESEN_SHIFT 16 +#define SDHC_IRQSTATEN_CCESEN_MASK 0x20000u +#define SDHC_IRQSTATEN_CCESEN_SHIFT 17 +#define SDHC_IRQSTATEN_CEBESEN_MASK 0x40000u +#define SDHC_IRQSTATEN_CEBESEN_SHIFT 18 +#define SDHC_IRQSTATEN_CIESEN_MASK 0x80000u +#define SDHC_IRQSTATEN_CIESEN_SHIFT 19 +#define SDHC_IRQSTATEN_DTOESEN_MASK 0x100000u +#define SDHC_IRQSTATEN_DTOESEN_SHIFT 20 +#define SDHC_IRQSTATEN_DCESEN_MASK 0x200000u +#define SDHC_IRQSTATEN_DCESEN_SHIFT 21 +#define SDHC_IRQSTATEN_DEBESEN_MASK 0x400000u +#define SDHC_IRQSTATEN_DEBESEN_SHIFT 22 +#define SDHC_IRQSTATEN_AC12ESEN_MASK 0x1000000u +#define SDHC_IRQSTATEN_AC12ESEN_SHIFT 24 +#define SDHC_IRQSTATEN_DMAESEN_MASK 0x10000000u +#define SDHC_IRQSTATEN_DMAESEN_SHIFT 28 +/* IRQSIGEN Bit Fields */ +#define SDHC_IRQSIGEN_CCIEN_MASK 0x1u +#define SDHC_IRQSIGEN_CCIEN_SHIFT 0 +#define SDHC_IRQSIGEN_TCIEN_MASK 0x2u +#define SDHC_IRQSIGEN_TCIEN_SHIFT 1 +#define SDHC_IRQSIGEN_BGEIEN_MASK 0x4u +#define SDHC_IRQSIGEN_BGEIEN_SHIFT 2 +#define SDHC_IRQSIGEN_DINTIEN_MASK 0x8u +#define SDHC_IRQSIGEN_DINTIEN_SHIFT 3 +#define SDHC_IRQSIGEN_BWRIEN_MASK 0x10u +#define SDHC_IRQSIGEN_BWRIEN_SHIFT 4 +#define SDHC_IRQSIGEN_BRRIEN_MASK 0x20u +#define SDHC_IRQSIGEN_BRRIEN_SHIFT 5 +#define SDHC_IRQSIGEN_CINSIEN_MASK 0x40u +#define SDHC_IRQSIGEN_CINSIEN_SHIFT 6 +#define SDHC_IRQSIGEN_CRMIEN_MASK 0x80u +#define SDHC_IRQSIGEN_CRMIEN_SHIFT 7 +#define SDHC_IRQSIGEN_CINTIEN_MASK 0x100u +#define SDHC_IRQSIGEN_CINTIEN_SHIFT 8 +#define SDHC_IRQSIGEN_CTOEIEN_MASK 0x10000u +#define SDHC_IRQSIGEN_CTOEIEN_SHIFT 16 +#define SDHC_IRQSIGEN_CCEIEN_MASK 0x20000u +#define SDHC_IRQSIGEN_CCEIEN_SHIFT 17 +#define SDHC_IRQSIGEN_CEBEIEN_MASK 0x40000u +#define SDHC_IRQSIGEN_CEBEIEN_SHIFT 18 +#define SDHC_IRQSIGEN_CIEIEN_MASK 0x80000u +#define SDHC_IRQSIGEN_CIEIEN_SHIFT 19 +#define SDHC_IRQSIGEN_DTOEIEN_MASK 0x100000u +#define SDHC_IRQSIGEN_DTOEIEN_SHIFT 20 +#define SDHC_IRQSIGEN_DCEIEN_MASK 0x200000u +#define SDHC_IRQSIGEN_DCEIEN_SHIFT 21 +#define SDHC_IRQSIGEN_DEBEIEN_MASK 0x400000u +#define SDHC_IRQSIGEN_DEBEIEN_SHIFT 22 +#define SDHC_IRQSIGEN_AC12EIEN_MASK 0x1000000u +#define SDHC_IRQSIGEN_AC12EIEN_SHIFT 24 +#define SDHC_IRQSIGEN_DMAEIEN_MASK 0x10000000u +#define SDHC_IRQSIGEN_DMAEIEN_SHIFT 28 +/* AC12ERR Bit Fields */ +#define SDHC_AC12ERR_AC12NE_MASK 0x1u +#define SDHC_AC12ERR_AC12NE_SHIFT 0 +#define SDHC_AC12ERR_AC12TOE_MASK 0x2u +#define SDHC_AC12ERR_AC12TOE_SHIFT 1 +#define SDHC_AC12ERR_AC12EBE_MASK 0x4u +#define SDHC_AC12ERR_AC12EBE_SHIFT 2 +#define SDHC_AC12ERR_AC12CE_MASK 0x8u +#define SDHC_AC12ERR_AC12CE_SHIFT 3 +#define SDHC_AC12ERR_AC12IE_MASK 0x10u +#define SDHC_AC12ERR_AC12IE_SHIFT 4 +#define SDHC_AC12ERR_CNIBAC12E_MASK 0x80u +#define SDHC_AC12ERR_CNIBAC12E_SHIFT 7 +/* HTCAPBLT Bit Fields */ +#define SDHC_HTCAPBLT_MBL_MASK 0x70000u +#define SDHC_HTCAPBLT_MBL_SHIFT 16 +#define SDHC_HTCAPBLT_MBL(x) (((uint32_t)(((uint32_t)(x))<<SDHC_HTCAPBLT_MBL_SHIFT))&SDHC_HTCAPBLT_MBL_MASK) +#define SDHC_HTCAPBLT_ADMAS_MASK 0x100000u +#define SDHC_HTCAPBLT_ADMAS_SHIFT 20 +#define SDHC_HTCAPBLT_HSS_MASK 0x200000u +#define SDHC_HTCAPBLT_HSS_SHIFT 21 +#define SDHC_HTCAPBLT_DMAS_MASK 0x400000u +#define SDHC_HTCAPBLT_DMAS_SHIFT 22 +#define SDHC_HTCAPBLT_SRS_MASK 0x800000u +#define SDHC_HTCAPBLT_SRS_SHIFT 23 +#define SDHC_HTCAPBLT_VS33_MASK 0x1000000u +#define SDHC_HTCAPBLT_VS33_SHIFT 24 +/* WML Bit Fields */ +#define SDHC_WML_RDWML_MASK 0xFFu +#define SDHC_WML_RDWML_SHIFT 0 +#define SDHC_WML_RDWML(x) (((uint32_t)(((uint32_t)(x))<<SDHC_WML_RDWML_SHIFT))&SDHC_WML_RDWML_MASK) +#define SDHC_WML_WRWML_MASK 0xFF0000u +#define SDHC_WML_WRWML_SHIFT 16 +#define SDHC_WML_WRWML(x) (((uint32_t)(((uint32_t)(x))<<SDHC_WML_WRWML_SHIFT))&SDHC_WML_WRWML_MASK) +/* FEVT Bit Fields */ +#define SDHC_FEVT_AC12NE_MASK 0x1u +#define SDHC_FEVT_AC12NE_SHIFT 0 +#define SDHC_FEVT_AC12TOE_MASK 0x2u +#define SDHC_FEVT_AC12TOE_SHIFT 1 +#define SDHC_FEVT_AC12CE_MASK 0x4u +#define SDHC_FEVT_AC12CE_SHIFT 2 +#define SDHC_FEVT_AC12EBE_MASK 0x8u +#define SDHC_FEVT_AC12EBE_SHIFT 3 +#define SDHC_FEVT_AC12IE_MASK 0x10u +#define SDHC_FEVT_AC12IE_SHIFT 4 +#define SDHC_FEVT_CNIBAC12E_MASK 0x80u +#define SDHC_FEVT_CNIBAC12E_SHIFT 7 +#define SDHC_FEVT_CTOE_MASK 0x10000u +#define SDHC_FEVT_CTOE_SHIFT 16 +#define SDHC_FEVT_CCE_MASK 0x20000u +#define SDHC_FEVT_CCE_SHIFT 17 +#define SDHC_FEVT_CEBE_MASK 0x40000u +#define SDHC_FEVT_CEBE_SHIFT 18 +#define SDHC_FEVT_CIE_MASK 0x80000u +#define SDHC_FEVT_CIE_SHIFT 19 +#define SDHC_FEVT_DTOE_MASK 0x100000u +#define SDHC_FEVT_DTOE_SHIFT 20 +#define SDHC_FEVT_DCE_MASK 0x200000u +#define SDHC_FEVT_DCE_SHIFT 21 +#define SDHC_FEVT_DEBE_MASK 0x400000u +#define SDHC_FEVT_DEBE_SHIFT 22 +#define SDHC_FEVT_AC12E_MASK 0x1000000u +#define SDHC_FEVT_AC12E_SHIFT 24 +#define SDHC_FEVT_DMAE_MASK 0x10000000u +#define SDHC_FEVT_DMAE_SHIFT 28 +#define SDHC_FEVT_CINT_MASK 0x80000000u +#define SDHC_FEVT_CINT_SHIFT 31 +/* ADMAES Bit Fields */ +#define SDHC_ADMAES_ADMAES_MASK 0x3u +#define SDHC_ADMAES_ADMAES_SHIFT 0 +#define SDHC_ADMAES_ADMAES(x) (((uint32_t)(((uint32_t)(x))<<SDHC_ADMAES_ADMAES_SHIFT))&SDHC_ADMAES_ADMAES_MASK) +#define SDHC_ADMAES_ADMALME_MASK 0x4u +#define SDHC_ADMAES_ADMALME_SHIFT 2 +#define SDHC_ADMAES_ADMADCE_MASK 0x8u +#define SDHC_ADMAES_ADMADCE_SHIFT 3 +/* ADSADDR Bit Fields */ +#define SDHC_ADSADDR_ADSADDR_MASK 0xFFFFFFFCu +#define SDHC_ADSADDR_ADSADDR_SHIFT 2 +#define SDHC_ADSADDR_ADSADDR(x) (((uint32_t)(((uint32_t)(x))<<SDHC_ADSADDR_ADSADDR_SHIFT))&SDHC_ADSADDR_ADSADDR_MASK) +/* VENDOR Bit Fields */ +#define SDHC_VENDOR_EXTDMAEN_MASK 0x1u +#define SDHC_VENDOR_EXTDMAEN_SHIFT 0 +#define SDHC_VENDOR_EXBLKNU_MASK 0x2u +#define SDHC_VENDOR_EXBLKNU_SHIFT 1 +#define SDHC_VENDOR_INTSTVAL_MASK 0xFF0000u +#define SDHC_VENDOR_INTSTVAL_SHIFT 16 +#define SDHC_VENDOR_INTSTVAL(x) (((uint32_t)(((uint32_t)(x))<<SDHC_VENDOR_INTSTVAL_SHIFT))&SDHC_VENDOR_INTSTVAL_MASK) +/* MMCBOOT Bit Fields */ +#define SDHC_MMCBOOT_DTOCVACK_MASK 0xFu +#define SDHC_MMCBOOT_DTOCVACK_SHIFT 0 +#define SDHC_MMCBOOT_DTOCVACK(x) (((uint32_t)(((uint32_t)(x))<<SDHC_MMCBOOT_DTOCVACK_SHIFT))&SDHC_MMCBOOT_DTOCVACK_MASK) +#define SDHC_MMCBOOT_BOOTACK_MASK 0x10u +#define SDHC_MMCBOOT_BOOTACK_SHIFT 4 +#define SDHC_MMCBOOT_BOOTMODE_MASK 0x20u +#define SDHC_MMCBOOT_BOOTMODE_SHIFT 5 +#define SDHC_MMCBOOT_BOOTEN_MASK 0x40u +#define SDHC_MMCBOOT_BOOTEN_SHIFT 6 +#define SDHC_MMCBOOT_AUTOSABGEN_MASK 0x80u +#define SDHC_MMCBOOT_AUTOSABGEN_SHIFT 7 +#define SDHC_MMCBOOT_BOOTBLKCNT_MASK 0xFFFF0000u +#define SDHC_MMCBOOT_BOOTBLKCNT_SHIFT 16 +#define SDHC_MMCBOOT_BOOTBLKCNT(x) (((uint32_t)(((uint32_t)(x))<<SDHC_MMCBOOT_BOOTBLKCNT_SHIFT))&SDHC_MMCBOOT_BOOTBLKCNT_MASK) +/* HOSTVER Bit Fields */ +#define SDHC_HOSTVER_SVN_MASK 0xFFu +#define SDHC_HOSTVER_SVN_SHIFT 0 +#define SDHC_HOSTVER_SVN(x) (((uint32_t)(((uint32_t)(x))<<SDHC_HOSTVER_SVN_SHIFT))&SDHC_HOSTVER_SVN_MASK) +#define SDHC_HOSTVER_VVN_MASK 0xFF00u +#define SDHC_HOSTVER_VVN_SHIFT 8 +#define SDHC_HOSTVER_VVN(x) (((uint32_t)(((uint32_t)(x))<<SDHC_HOSTVER_VVN_SHIFT))&SDHC_HOSTVER_VVN_MASK) + +/*! + * @} + */ /* end of group SDHC_Register_Masks */ + + +/* SDHC - Peripheral instance base addresses */ +/** Peripheral SDHC base address */ +#define SDHC_BASE (0x400B1000u) +/** Peripheral SDHC base pointer */ +#define SDHC ((SDHC_Type *)SDHC_BASE) +#define SDHC_BASE_PTR (SDHC) +/** Array initializer of SDHC peripheral base pointers */ +#define SDHC_BASES { SDHC } + +/* ---------------------------------------------------------------------------- + -- SDHC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SDHC_Register_Accessor_Macros SDHC - Register accessor macros + * @{ + */ + + +/* SDHC - Register instance definitions */ +/* SDHC */ +#define SDHC_DSADDR SDHC_DSADDR_REG(SDHC) +#define SDHC_BLKATTR SDHC_BLKATTR_REG(SDHC) +#define SDHC_CMDARG SDHC_CMDARG_REG(SDHC) +#define SDHC_XFERTYP SDHC_XFERTYP_REG(SDHC) +#define SDHC_CMDRSP0 SDHC_CMDRSP_REG(SDHC,0) +#define SDHC_CMDRSP1 SDHC_CMDRSP_REG(SDHC,1) +#define SDHC_CMDRSP2 SDHC_CMDRSP_REG(SDHC,2) +#define SDHC_CMDRSP3 SDHC_CMDRSP_REG(SDHC,3) +#define SDHC_DATPORT SDHC_DATPORT_REG(SDHC) +#define SDHC_PRSSTAT SDHC_PRSSTAT_REG(SDHC) +#define SDHC_PROCTL SDHC_PROCTL_REG(SDHC) +#define SDHC_SYSCTL SDHC_SYSCTL_REG(SDHC) +#define SDHC_IRQSTAT SDHC_IRQSTAT_REG(SDHC) +#define SDHC_IRQSTATEN SDHC_IRQSTATEN_REG(SDHC) +#define SDHC_IRQSIGEN SDHC_IRQSIGEN_REG(SDHC) +#define SDHC_AC12ERR SDHC_AC12ERR_REG(SDHC) +#define SDHC_HTCAPBLT SDHC_HTCAPBLT_REG(SDHC) +#define SDHC_WML SDHC_WML_REG(SDHC) +#define SDHC_FEVT SDHC_FEVT_REG(SDHC) +#define SDHC_ADMAES SDHC_ADMAES_REG(SDHC) +#define SDHC_ADSADDR SDHC_ADSADDR_REG(SDHC) +#define SDHC_VENDOR SDHC_VENDOR_REG(SDHC) +#define SDHC_MMCBOOT SDHC_MMCBOOT_REG(SDHC) +#define SDHC_HOSTVER SDHC_HOSTVER_REG(SDHC) + +/* SDHC - Register array accessors */ +#define SDHC_CMDRSP(index) SDHC_CMDRSP_REG(SDHC,index) + +/*! + * @} + */ /* end of group SDHC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group SDHC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- SIM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SIM_Peripheral_Access_Layer SIM Peripheral Access Layer + * @{ + */ + +/** SIM - Register Layout Typedef */ +typedef struct { + __IO uint32_t SOPT1; /**< System Options Register 1, offset: 0x0 */ + __IO uint32_t SOPT1CFG; /**< SOPT1 Configuration Register, offset: 0x4 */ + uint8_t RESERVED_0[4092]; + __IO uint32_t SOPT2; /**< System Options Register 2, offset: 0x1004 */ + uint8_t RESERVED_1[4]; + __IO uint32_t SOPT4; /**< System Options Register 4, offset: 0x100C */ + __IO uint32_t SOPT5; /**< System Options Register 5, offset: 0x1010 */ + uint8_t RESERVED_2[4]; + __IO uint32_t SOPT7; /**< System Options Register 7, offset: 0x1018 */ + uint8_t RESERVED_3[8]; + __I uint32_t SDID; /**< System Device Identification Register, offset: 0x1024 */ + __IO uint32_t SCGC1; /**< System Clock Gating Control Register 1, offset: 0x1028 */ + __IO uint32_t SCGC2; /**< System Clock Gating Control Register 2, offset: 0x102C */ + __IO uint32_t SCGC3; /**< System Clock Gating Control Register 3, offset: 0x1030 */ + __IO uint32_t SCGC4; /**< System Clock Gating Control Register 4, offset: 0x1034 */ + __IO uint32_t SCGC5; /**< System Clock Gating Control Register 5, offset: 0x1038 */ + __IO uint32_t SCGC6; /**< System Clock Gating Control Register 6, offset: 0x103C */ + __IO uint32_t SCGC7; /**< System Clock Gating Control Register 7, offset: 0x1040 */ + __IO uint32_t CLKDIV1; /**< System Clock Divider Register 1, offset: 0x1044 */ + __IO uint32_t CLKDIV2; /**< System Clock Divider Register 2, offset: 0x1048 */ + __IO uint32_t FCFG1; /**< Flash Configuration Register 1, offset: 0x104C */ + __I uint32_t FCFG2; /**< Flash Configuration Register 2, offset: 0x1050 */ + __I uint32_t UIDH; /**< Unique Identification Register High, offset: 0x1054 */ + __I uint32_t UIDMH; /**< Unique Identification Register Mid-High, offset: 0x1058 */ + __I uint32_t UIDML; /**< Unique Identification Register Mid Low, offset: 0x105C */ + __I uint32_t UIDL; /**< Unique Identification Register Low, offset: 0x1060 */ +} SIM_Type, *SIM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- SIM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SIM_Register_Accessor_Macros SIM - Register accessor macros + * @{ + */ + + +/* SIM - Register accessors */ +#define SIM_SOPT1_REG(base) ((base)->SOPT1) +#define SIM_SOPT1CFG_REG(base) ((base)->SOPT1CFG) +#define SIM_SOPT2_REG(base) ((base)->SOPT2) +#define SIM_SOPT4_REG(base) ((base)->SOPT4) +#define SIM_SOPT5_REG(base) ((base)->SOPT5) +#define SIM_SOPT7_REG(base) ((base)->SOPT7) +#define SIM_SDID_REG(base) ((base)->SDID) +#define SIM_SCGC1_REG(base) ((base)->SCGC1) +#define SIM_SCGC2_REG(base) ((base)->SCGC2) +#define SIM_SCGC3_REG(base) ((base)->SCGC3) +#define SIM_SCGC4_REG(base) ((base)->SCGC4) +#define SIM_SCGC5_REG(base) ((base)->SCGC5) +#define SIM_SCGC6_REG(base) ((base)->SCGC6) +#define SIM_SCGC7_REG(base) ((base)->SCGC7) +#define SIM_CLKDIV1_REG(base) ((base)->CLKDIV1) +#define SIM_CLKDIV2_REG(base) ((base)->CLKDIV2) +#define SIM_FCFG1_REG(base) ((base)->FCFG1) +#define SIM_FCFG2_REG(base) ((base)->FCFG2) +#define SIM_UIDH_REG(base) ((base)->UIDH) +#define SIM_UIDMH_REG(base) ((base)->UIDMH) +#define SIM_UIDML_REG(base) ((base)->UIDML) +#define SIM_UIDL_REG(base) ((base)->UIDL) + +/*! + * @} + */ /* end of group SIM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- SIM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SIM_Register_Masks SIM Register Masks + * @{ + */ + +/* SOPT1 Bit Fields */ +#define SIM_SOPT1_RAMSIZE_MASK 0xF000u +#define SIM_SOPT1_RAMSIZE_SHIFT 12 +#define SIM_SOPT1_RAMSIZE(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT1_RAMSIZE_SHIFT))&SIM_SOPT1_RAMSIZE_MASK) +#define SIM_SOPT1_OSC32KSEL_MASK 0xC0000u +#define SIM_SOPT1_OSC32KSEL_SHIFT 18 +#define SIM_SOPT1_OSC32KSEL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT1_OSC32KSEL_SHIFT))&SIM_SOPT1_OSC32KSEL_MASK) +#define SIM_SOPT1_USBVSTBY_MASK 0x20000000u +#define SIM_SOPT1_USBVSTBY_SHIFT 29 +#define SIM_SOPT1_USBSSTBY_MASK 0x40000000u +#define SIM_SOPT1_USBSSTBY_SHIFT 30 +#define SIM_SOPT1_USBREGEN_MASK 0x80000000u +#define SIM_SOPT1_USBREGEN_SHIFT 31 +/* SOPT1CFG Bit Fields */ +#define SIM_SOPT1CFG_URWE_MASK 0x1000000u +#define SIM_SOPT1CFG_URWE_SHIFT 24 +#define SIM_SOPT1CFG_UVSWE_MASK 0x2000000u +#define SIM_SOPT1CFG_UVSWE_SHIFT 25 +#define SIM_SOPT1CFG_USSWE_MASK 0x4000000u +#define SIM_SOPT1CFG_USSWE_SHIFT 26 +/* SOPT2 Bit Fields */ +#define SIM_SOPT2_RTCCLKOUTSEL_MASK 0x10u +#define SIM_SOPT2_RTCCLKOUTSEL_SHIFT 4 +#define SIM_SOPT2_CLKOUTSEL_MASK 0xE0u +#define SIM_SOPT2_CLKOUTSEL_SHIFT 5 +#define SIM_SOPT2_CLKOUTSEL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_CLKOUTSEL_SHIFT))&SIM_SOPT2_CLKOUTSEL_MASK) +#define SIM_SOPT2_FBSL_MASK 0x300u +#define SIM_SOPT2_FBSL_SHIFT 8 +#define SIM_SOPT2_FBSL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_FBSL_SHIFT))&SIM_SOPT2_FBSL_MASK) +#define SIM_SOPT2_PTD7PAD_MASK 0x800u +#define SIM_SOPT2_PTD7PAD_SHIFT 11 +#define SIM_SOPT2_TRACECLKSEL_MASK 0x1000u +#define SIM_SOPT2_TRACECLKSEL_SHIFT 12 +#define SIM_SOPT2_PLLFLLSEL_MASK 0x10000u +#define SIM_SOPT2_PLLFLLSEL_SHIFT 16 +#define SIM_SOPT2_USBSRC_MASK 0x40000u +#define SIM_SOPT2_USBSRC_SHIFT 18 +#define SIM_SOPT2_RMIISRC_MASK 0x80000u +#define SIM_SOPT2_RMIISRC_SHIFT 19 +#define SIM_SOPT2_TIMESRC_MASK 0x300000u +#define SIM_SOPT2_TIMESRC_SHIFT 20 +#define SIM_SOPT2_TIMESRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_TIMESRC_SHIFT))&SIM_SOPT2_TIMESRC_MASK) +#define SIM_SOPT2_SDHCSRC_MASK 0x30000000u +#define SIM_SOPT2_SDHCSRC_SHIFT 28 +#define SIM_SOPT2_SDHCSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_SDHCSRC_SHIFT))&SIM_SOPT2_SDHCSRC_MASK) +/* SOPT4 Bit Fields */ +#define SIM_SOPT4_FTM0FLT0_MASK 0x1u +#define SIM_SOPT4_FTM0FLT0_SHIFT 0 +#define SIM_SOPT4_FTM0FLT1_MASK 0x2u +#define SIM_SOPT4_FTM0FLT1_SHIFT 1 +#define SIM_SOPT4_FTM0FLT2_MASK 0x4u +#define SIM_SOPT4_FTM0FLT2_SHIFT 2 +#define SIM_SOPT4_FTM1FLT0_MASK 0x10u +#define SIM_SOPT4_FTM1FLT0_SHIFT 4 +#define SIM_SOPT4_FTM2FLT0_MASK 0x100u +#define SIM_SOPT4_FTM2FLT0_SHIFT 8 +#define SIM_SOPT4_FTM3FLT0_MASK 0x1000u +#define SIM_SOPT4_FTM3FLT0_SHIFT 12 +#define SIM_SOPT4_FTM1CH0SRC_MASK 0xC0000u +#define SIM_SOPT4_FTM1CH0SRC_SHIFT 18 +#define SIM_SOPT4_FTM1CH0SRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT4_FTM1CH0SRC_SHIFT))&SIM_SOPT4_FTM1CH0SRC_MASK) +#define SIM_SOPT4_FTM2CH0SRC_MASK 0x300000u +#define SIM_SOPT4_FTM2CH0SRC_SHIFT 20 +#define SIM_SOPT4_FTM2CH0SRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT4_FTM2CH0SRC_SHIFT))&SIM_SOPT4_FTM2CH0SRC_MASK) +#define SIM_SOPT4_FTM0CLKSEL_MASK 0x1000000u +#define SIM_SOPT4_FTM0CLKSEL_SHIFT 24 +#define SIM_SOPT4_FTM1CLKSEL_MASK 0x2000000u +#define SIM_SOPT4_FTM1CLKSEL_SHIFT 25 +#define SIM_SOPT4_FTM2CLKSEL_MASK 0x4000000u +#define SIM_SOPT4_FTM2CLKSEL_SHIFT 26 +#define SIM_SOPT4_FTM3CLKSEL_MASK 0x8000000u +#define SIM_SOPT4_FTM3CLKSEL_SHIFT 27 +#define SIM_SOPT4_FTM0TRG0SRC_MASK 0x10000000u +#define SIM_SOPT4_FTM0TRG0SRC_SHIFT 28 +#define SIM_SOPT4_FTM0TRG1SRC_MASK 0x20000000u +#define SIM_SOPT4_FTM0TRG1SRC_SHIFT 29 +#define SIM_SOPT4_FTM3TRG0SRC_MASK 0x40000000u +#define SIM_SOPT4_FTM3TRG0SRC_SHIFT 30 +#define SIM_SOPT4_FTM3TRG1SRC_MASK 0x80000000u +#define SIM_SOPT4_FTM3TRG1SRC_SHIFT 31 +/* SOPT5 Bit Fields */ +#define SIM_SOPT5_UART0TXSRC_MASK 0x3u +#define SIM_SOPT5_UART0TXSRC_SHIFT 0 +#define SIM_SOPT5_UART0TXSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_UART0TXSRC_SHIFT))&SIM_SOPT5_UART0TXSRC_MASK) +#define SIM_SOPT5_UART0RXSRC_MASK 0xCu +#define SIM_SOPT5_UART0RXSRC_SHIFT 2 +#define SIM_SOPT5_UART0RXSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_UART0RXSRC_SHIFT))&SIM_SOPT5_UART0RXSRC_MASK) +#define SIM_SOPT5_UART1TXSRC_MASK 0x30u +#define SIM_SOPT5_UART1TXSRC_SHIFT 4 +#define SIM_SOPT5_UART1TXSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_UART1TXSRC_SHIFT))&SIM_SOPT5_UART1TXSRC_MASK) +#define SIM_SOPT5_UART1RXSRC_MASK 0xC0u +#define SIM_SOPT5_UART1RXSRC_SHIFT 6 +#define SIM_SOPT5_UART1RXSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_UART1RXSRC_SHIFT))&SIM_SOPT5_UART1RXSRC_MASK) +/* SOPT7 Bit Fields */ +#define SIM_SOPT7_ADC0TRGSEL_MASK 0xFu +#define SIM_SOPT7_ADC0TRGSEL_SHIFT 0 +#define SIM_SOPT7_ADC0TRGSEL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT7_ADC0TRGSEL_SHIFT))&SIM_SOPT7_ADC0TRGSEL_MASK) +#define SIM_SOPT7_ADC0PRETRGSEL_MASK 0x10u +#define SIM_SOPT7_ADC0PRETRGSEL_SHIFT 4 +#define SIM_SOPT7_ADC0ALTTRGEN_MASK 0x80u +#define SIM_SOPT7_ADC0ALTTRGEN_SHIFT 7 +#define SIM_SOPT7_ADC1TRGSEL_MASK 0xF00u +#define SIM_SOPT7_ADC1TRGSEL_SHIFT 8 +#define SIM_SOPT7_ADC1TRGSEL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT7_ADC1TRGSEL_SHIFT))&SIM_SOPT7_ADC1TRGSEL_MASK) +#define SIM_SOPT7_ADC1PRETRGSEL_MASK 0x1000u +#define SIM_SOPT7_ADC1PRETRGSEL_SHIFT 12 +#define SIM_SOPT7_ADC1ALTTRGEN_MASK 0x8000u +#define SIM_SOPT7_ADC1ALTTRGEN_SHIFT 15 +/* SDID Bit Fields */ +#define SIM_SDID_PINID_MASK 0xFu +#define SIM_SDID_PINID_SHIFT 0 +#define SIM_SDID_PINID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_PINID_SHIFT))&SIM_SDID_PINID_MASK) +#define SIM_SDID_FAMID_MASK 0x70u +#define SIM_SDID_FAMID_SHIFT 4 +#define SIM_SDID_FAMID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_FAMID_SHIFT))&SIM_SDID_FAMID_MASK) +#define SIM_SDID_DIEID_MASK 0xF80u +#define SIM_SDID_DIEID_SHIFT 7 +#define SIM_SDID_DIEID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_DIEID_SHIFT))&SIM_SDID_DIEID_MASK) +#define SIM_SDID_REVID_MASK 0xF000u +#define SIM_SDID_REVID_SHIFT 12 +#define SIM_SDID_REVID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_REVID_SHIFT))&SIM_SDID_REVID_MASK) +#define SIM_SDID_SERIESID_MASK 0xF00000u +#define SIM_SDID_SERIESID_SHIFT 20 +#define SIM_SDID_SERIESID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_SERIESID_SHIFT))&SIM_SDID_SERIESID_MASK) +#define SIM_SDID_SUBFAMID_MASK 0xF000000u +#define SIM_SDID_SUBFAMID_SHIFT 24 +#define SIM_SDID_SUBFAMID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_SUBFAMID_SHIFT))&SIM_SDID_SUBFAMID_MASK) +#define SIM_SDID_FAMILYID_MASK 0xF0000000u +#define SIM_SDID_FAMILYID_SHIFT 28 +#define SIM_SDID_FAMILYID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_FAMILYID_SHIFT))&SIM_SDID_FAMILYID_MASK) +/* SCGC1 Bit Fields */ +#define SIM_SCGC1_I2C2_MASK 0x40u +#define SIM_SCGC1_I2C2_SHIFT 6 +#define SIM_SCGC1_UART4_MASK 0x400u +#define SIM_SCGC1_UART4_SHIFT 10 +#define SIM_SCGC1_UART5_MASK 0x800u +#define SIM_SCGC1_UART5_SHIFT 11 +/* SCGC2 Bit Fields */ +#define SIM_SCGC2_ENET_MASK 0x1u +#define SIM_SCGC2_ENET_SHIFT 0 +#define SIM_SCGC2_DAC0_MASK 0x1000u +#define SIM_SCGC2_DAC0_SHIFT 12 +#define SIM_SCGC2_DAC1_MASK 0x2000u +#define SIM_SCGC2_DAC1_SHIFT 13 +/* SCGC3 Bit Fields */ +#define SIM_SCGC3_RNGA_MASK 0x1u +#define SIM_SCGC3_RNGA_SHIFT 0 +#define SIM_SCGC3_SPI2_MASK 0x1000u +#define SIM_SCGC3_SPI2_SHIFT 12 +#define SIM_SCGC3_SDHC_MASK 0x20000u +#define SIM_SCGC3_SDHC_SHIFT 17 +#define SIM_SCGC3_FTM2_MASK 0x1000000u +#define SIM_SCGC3_FTM2_SHIFT 24 +#define SIM_SCGC3_FTM3_MASK 0x2000000u +#define SIM_SCGC3_FTM3_SHIFT 25 +#define SIM_SCGC3_ADC1_MASK 0x8000000u +#define SIM_SCGC3_ADC1_SHIFT 27 +/* SCGC4 Bit Fields */ +#define SIM_SCGC4_EWM_MASK 0x2u +#define SIM_SCGC4_EWM_SHIFT 1 +#define SIM_SCGC4_CMT_MASK 0x4u +#define SIM_SCGC4_CMT_SHIFT 2 +#define SIM_SCGC4_I2C0_MASK 0x40u +#define SIM_SCGC4_I2C0_SHIFT 6 +#define SIM_SCGC4_I2C1_MASK 0x80u +#define SIM_SCGC4_I2C1_SHIFT 7 +#define SIM_SCGC4_UART0_MASK 0x400u +#define SIM_SCGC4_UART0_SHIFT 10 +#define SIM_SCGC4_UART1_MASK 0x800u +#define SIM_SCGC4_UART1_SHIFT 11 +#define SIM_SCGC4_UART2_MASK 0x1000u +#define SIM_SCGC4_UART2_SHIFT 12 +#define SIM_SCGC4_UART3_MASK 0x2000u +#define SIM_SCGC4_UART3_SHIFT 13 +#define SIM_SCGC4_USBOTG_MASK 0x40000u +#define SIM_SCGC4_USBOTG_SHIFT 18 +#define SIM_SCGC4_CMP_MASK 0x80000u +#define SIM_SCGC4_CMP_SHIFT 19 +#define SIM_SCGC4_VREF_MASK 0x100000u +#define SIM_SCGC4_VREF_SHIFT 20 +/* SCGC5 Bit Fields */ +#define SIM_SCGC5_LPTMR_MASK 0x1u +#define SIM_SCGC5_LPTMR_SHIFT 0 +#define SIM_SCGC5_PORTA_MASK 0x200u +#define SIM_SCGC5_PORTA_SHIFT 9 +#define SIM_SCGC5_PORTB_MASK 0x400u +#define SIM_SCGC5_PORTB_SHIFT 10 +#define SIM_SCGC5_PORTC_MASK 0x800u +#define SIM_SCGC5_PORTC_SHIFT 11 +#define SIM_SCGC5_PORTD_MASK 0x1000u +#define SIM_SCGC5_PORTD_SHIFT 12 +#define SIM_SCGC5_PORTE_MASK 0x2000u +#define SIM_SCGC5_PORTE_SHIFT 13 +/* SCGC6 Bit Fields */ +#define SIM_SCGC6_FTF_MASK 0x1u +#define SIM_SCGC6_FTF_SHIFT 0 +#define SIM_SCGC6_DMAMUX_MASK 0x2u +#define SIM_SCGC6_DMAMUX_SHIFT 1 +#define SIM_SCGC6_FLEXCAN0_MASK 0x10u +#define SIM_SCGC6_FLEXCAN0_SHIFT 4 +#define SIM_SCGC6_RNGA_MASK 0x200u +#define SIM_SCGC6_RNGA_SHIFT 9 +#define SIM_SCGC6_SPI0_MASK 0x1000u +#define SIM_SCGC6_SPI0_SHIFT 12 +#define SIM_SCGC6_SPI1_MASK 0x2000u +#define SIM_SCGC6_SPI1_SHIFT 13 +#define SIM_SCGC6_I2S_MASK 0x8000u +#define SIM_SCGC6_I2S_SHIFT 15 +#define SIM_SCGC6_CRC_MASK 0x40000u +#define SIM_SCGC6_CRC_SHIFT 18 +#define SIM_SCGC6_USBDCD_MASK 0x200000u +#define SIM_SCGC6_USBDCD_SHIFT 21 +#define SIM_SCGC6_PDB_MASK 0x400000u +#define SIM_SCGC6_PDB_SHIFT 22 +#define SIM_SCGC6_PIT_MASK 0x800000u +#define SIM_SCGC6_PIT_SHIFT 23 +#define SIM_SCGC6_FTM0_MASK 0x1000000u +#define SIM_SCGC6_FTM0_SHIFT 24 +#define SIM_SCGC6_FTM1_MASK 0x2000000u +#define SIM_SCGC6_FTM1_SHIFT 25 +#define SIM_SCGC6_FTM2_MASK 0x4000000u +#define SIM_SCGC6_FTM2_SHIFT 26 +#define SIM_SCGC6_ADC0_MASK 0x8000000u +#define SIM_SCGC6_ADC0_SHIFT 27 +#define SIM_SCGC6_RTC_MASK 0x20000000u +#define SIM_SCGC6_RTC_SHIFT 29 +#define SIM_SCGC6_DAC0_MASK 0x80000000u +#define SIM_SCGC6_DAC0_SHIFT 31 +/* SCGC7 Bit Fields */ +#define SIM_SCGC7_FLEXBUS_MASK 0x1u +#define SIM_SCGC7_FLEXBUS_SHIFT 0 +#define SIM_SCGC7_DMA_MASK 0x2u +#define SIM_SCGC7_DMA_SHIFT 1 +#define SIM_SCGC7_MPU_MASK 0x4u +#define SIM_SCGC7_MPU_SHIFT 2 +/* CLKDIV1 Bit Fields */ +#define SIM_CLKDIV1_OUTDIV4_MASK 0xF0000u +#define SIM_CLKDIV1_OUTDIV4_SHIFT 16 +#define SIM_CLKDIV1_OUTDIV4(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV4_SHIFT))&SIM_CLKDIV1_OUTDIV4_MASK) +#define SIM_CLKDIV1_OUTDIV3_MASK 0xF00000u +#define SIM_CLKDIV1_OUTDIV3_SHIFT 20 +#define SIM_CLKDIV1_OUTDIV3(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV3_SHIFT))&SIM_CLKDIV1_OUTDIV3_MASK) +#define SIM_CLKDIV1_OUTDIV2_MASK 0xF000000u +#define SIM_CLKDIV1_OUTDIV2_SHIFT 24 +#define SIM_CLKDIV1_OUTDIV2(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV2_SHIFT))&SIM_CLKDIV1_OUTDIV2_MASK) +#define SIM_CLKDIV1_OUTDIV1_MASK 0xF0000000u +#define SIM_CLKDIV1_OUTDIV1_SHIFT 28 +#define SIM_CLKDIV1_OUTDIV1(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV1_SHIFT))&SIM_CLKDIV1_OUTDIV1_MASK) +/* CLKDIV2 Bit Fields */ +#define SIM_CLKDIV2_USBFRAC_MASK 0x1u +#define SIM_CLKDIV2_USBFRAC_SHIFT 0 +#define SIM_CLKDIV2_USBDIV_MASK 0xEu +#define SIM_CLKDIV2_USBDIV_SHIFT 1 +#define SIM_CLKDIV2_USBDIV(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV2_USBDIV_SHIFT))&SIM_CLKDIV2_USBDIV_MASK) +/* FCFG1 Bit Fields */ +#define SIM_FCFG1_FLASHDIS_MASK 0x1u +#define SIM_FCFG1_FLASHDIS_SHIFT 0 +#define SIM_FCFG1_FLASHDOZE_MASK 0x2u +#define SIM_FCFG1_FLASHDOZE_SHIFT 1 +#define SIM_FCFG1_DEPART_MASK 0xF00u +#define SIM_FCFG1_DEPART_SHIFT 8 +#define SIM_FCFG1_DEPART(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG1_DEPART_SHIFT))&SIM_FCFG1_DEPART_MASK) +#define SIM_FCFG1_EESIZE_MASK 0xF0000u +#define SIM_FCFG1_EESIZE_SHIFT 16 +#define SIM_FCFG1_EESIZE(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG1_EESIZE_SHIFT))&SIM_FCFG1_EESIZE_MASK) +#define SIM_FCFG1_PFSIZE_MASK 0xF000000u +#define SIM_FCFG1_PFSIZE_SHIFT 24 +#define SIM_FCFG1_PFSIZE(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG1_PFSIZE_SHIFT))&SIM_FCFG1_PFSIZE_MASK) +#define SIM_FCFG1_NVMSIZE_MASK 0xF0000000u +#define SIM_FCFG1_NVMSIZE_SHIFT 28 +#define SIM_FCFG1_NVMSIZE(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG1_NVMSIZE_SHIFT))&SIM_FCFG1_NVMSIZE_MASK) +/* FCFG2 Bit Fields */ +#define SIM_FCFG2_MAXADDR1_MASK 0x7F0000u +#define SIM_FCFG2_MAXADDR1_SHIFT 16 +#define SIM_FCFG2_MAXADDR1(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG2_MAXADDR1_SHIFT))&SIM_FCFG2_MAXADDR1_MASK) +#define SIM_FCFG2_PFLSH_MASK 0x800000u +#define SIM_FCFG2_PFLSH_SHIFT 23 +#define SIM_FCFG2_MAXADDR0_MASK 0x7F000000u +#define SIM_FCFG2_MAXADDR0_SHIFT 24 +#define SIM_FCFG2_MAXADDR0(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG2_MAXADDR0_SHIFT))&SIM_FCFG2_MAXADDR0_MASK) +/* UIDH Bit Fields */ +#define SIM_UIDH_UID_MASK 0xFFFFFFFFu +#define SIM_UIDH_UID_SHIFT 0 +#define SIM_UIDH_UID(x) (((uint32_t)(((uint32_t)(x))<<SIM_UIDH_UID_SHIFT))&SIM_UIDH_UID_MASK) +/* UIDMH Bit Fields */ +#define SIM_UIDMH_UID_MASK 0xFFFFFFFFu +#define SIM_UIDMH_UID_SHIFT 0 +#define SIM_UIDMH_UID(x) (((uint32_t)(((uint32_t)(x))<<SIM_UIDMH_UID_SHIFT))&SIM_UIDMH_UID_MASK) +/* UIDML Bit Fields */ +#define SIM_UIDML_UID_MASK 0xFFFFFFFFu +#define SIM_UIDML_UID_SHIFT 0 +#define SIM_UIDML_UID(x) (((uint32_t)(((uint32_t)(x))<<SIM_UIDML_UID_SHIFT))&SIM_UIDML_UID_MASK) +/* UIDL Bit Fields */ +#define SIM_UIDL_UID_MASK 0xFFFFFFFFu +#define SIM_UIDL_UID_SHIFT 0 +#define SIM_UIDL_UID(x) (((uint32_t)(((uint32_t)(x))<<SIM_UIDL_UID_SHIFT))&SIM_UIDL_UID_MASK) + +/*! + * @} + */ /* end of group SIM_Register_Masks */ + + +/* SIM - Peripheral instance base addresses */ +/** Peripheral SIM base address */ +#define SIM_BASE (0x40047000u) +/** Peripheral SIM base pointer */ +#define SIM ((SIM_Type *)SIM_BASE) +#define SIM_BASE_PTR (SIM) +/** Array initializer of SIM peripheral base pointers */ +#define SIM_BASES { SIM } + +/* ---------------------------------------------------------------------------- + -- SIM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SIM_Register_Accessor_Macros SIM - Register accessor macros + * @{ + */ + + +/* SIM - Register instance definitions */ +/* SIM */ +#define SIM_SOPT1 SIM_SOPT1_REG(SIM) +#define SIM_SOPT1CFG SIM_SOPT1CFG_REG(SIM) +#define SIM_SOPT2 SIM_SOPT2_REG(SIM) +#define SIM_SOPT4 SIM_SOPT4_REG(SIM) +#define SIM_SOPT5 SIM_SOPT5_REG(SIM) +#define SIM_SOPT7 SIM_SOPT7_REG(SIM) +#define SIM_SDID SIM_SDID_REG(SIM) +#define SIM_SCGC1 SIM_SCGC1_REG(SIM) +#define SIM_SCGC2 SIM_SCGC2_REG(SIM) +#define SIM_SCGC3 SIM_SCGC3_REG(SIM) +#define SIM_SCGC4 SIM_SCGC4_REG(SIM) +#define SIM_SCGC5 SIM_SCGC5_REG(SIM) +#define SIM_SCGC6 SIM_SCGC6_REG(SIM) +#define SIM_SCGC7 SIM_SCGC7_REG(SIM) +#define SIM_CLKDIV1 SIM_CLKDIV1_REG(SIM) +#define SIM_CLKDIV2 SIM_CLKDIV2_REG(SIM) +#define SIM_FCFG1 SIM_FCFG1_REG(SIM) +#define SIM_FCFG2 SIM_FCFG2_REG(SIM) +#define SIM_UIDH SIM_UIDH_REG(SIM) +#define SIM_UIDMH SIM_UIDMH_REG(SIM) +#define SIM_UIDML SIM_UIDML_REG(SIM) +#define SIM_UIDL SIM_UIDL_REG(SIM) + +/*! + * @} + */ /* end of group SIM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group SIM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- SMC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SMC_Peripheral_Access_Layer SMC Peripheral Access Layer + * @{ + */ + +/** SMC - Register Layout Typedef */ +typedef struct { + __IO uint8_t PMPROT; /**< Power Mode Protection register, offset: 0x0 */ + __IO uint8_t PMCTRL; /**< Power Mode Control register, offset: 0x1 */ + __IO uint8_t VLLSCTRL; /**< VLLS Control register, offset: 0x2 */ + __I uint8_t PMSTAT; /**< Power Mode Status register, offset: 0x3 */ +} SMC_Type, *SMC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- SMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SMC_Register_Accessor_Macros SMC - Register accessor macros + * @{ + */ + + +/* SMC - Register accessors */ +#define SMC_PMPROT_REG(base) ((base)->PMPROT) +#define SMC_PMCTRL_REG(base) ((base)->PMCTRL) +#define SMC_VLLSCTRL_REG(base) ((base)->VLLSCTRL) +#define SMC_PMSTAT_REG(base) ((base)->PMSTAT) + +/*! + * @} + */ /* end of group SMC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- SMC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SMC_Register_Masks SMC Register Masks + * @{ + */ + +/* PMPROT Bit Fields */ +#define SMC_PMPROT_AVLLS_MASK 0x2u +#define SMC_PMPROT_AVLLS_SHIFT 1 +#define SMC_PMPROT_ALLS_MASK 0x8u +#define SMC_PMPROT_ALLS_SHIFT 3 +#define SMC_PMPROT_AVLP_MASK 0x20u +#define SMC_PMPROT_AVLP_SHIFT 5 +/* PMCTRL Bit Fields */ +#define SMC_PMCTRL_STOPM_MASK 0x7u +#define SMC_PMCTRL_STOPM_SHIFT 0 +#define SMC_PMCTRL_STOPM(x) (((uint8_t)(((uint8_t)(x))<<SMC_PMCTRL_STOPM_SHIFT))&SMC_PMCTRL_STOPM_MASK) +#define SMC_PMCTRL_STOPA_MASK 0x8u +#define SMC_PMCTRL_STOPA_SHIFT 3 +#define SMC_PMCTRL_RUNM_MASK 0x60u +#define SMC_PMCTRL_RUNM_SHIFT 5 +#define SMC_PMCTRL_RUNM(x) (((uint8_t)(((uint8_t)(x))<<SMC_PMCTRL_RUNM_SHIFT))&SMC_PMCTRL_RUNM_MASK) +#define SMC_PMCTRL_LPWUI_MASK 0x80u +#define SMC_PMCTRL_LPWUI_SHIFT 7 +/* VLLSCTRL Bit Fields */ +#define SMC_VLLSCTRL_VLLSM_MASK 0x7u +#define SMC_VLLSCTRL_VLLSM_SHIFT 0 +#define SMC_VLLSCTRL_VLLSM(x) (((uint8_t)(((uint8_t)(x))<<SMC_VLLSCTRL_VLLSM_SHIFT))&SMC_VLLSCTRL_VLLSM_MASK) +#define SMC_VLLSCTRL_PORPO_MASK 0x20u +#define SMC_VLLSCTRL_PORPO_SHIFT 5 +/* PMSTAT Bit Fields */ +#define SMC_PMSTAT_PMSTAT_MASK 0x7Fu +#define SMC_PMSTAT_PMSTAT_SHIFT 0 +#define SMC_PMSTAT_PMSTAT(x) (((uint8_t)(((uint8_t)(x))<<SMC_PMSTAT_PMSTAT_SHIFT))&SMC_PMSTAT_PMSTAT_MASK) + +/*! + * @} + */ /* end of group SMC_Register_Masks */ + + +/* SMC - Peripheral instance base addresses */ +/** Peripheral SMC base address */ +#define SMC_BASE (0x4007E000u) +/** Peripheral SMC base pointer */ +#define SMC ((SMC_Type *)SMC_BASE) +#define SMC_BASE_PTR (SMC) +/** Array initializer of SMC peripheral base pointers */ +#define SMC_BASES { SMC } + +/* ---------------------------------------------------------------------------- + -- SMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SMC_Register_Accessor_Macros SMC - Register accessor macros + * @{ + */ + + +/* SMC - Register instance definitions */ +/* SMC */ +#define SMC_PMPROT SMC_PMPROT_REG(SMC) +#define SMC_PMCTRL SMC_PMCTRL_REG(SMC) +#define SMC_VLLSCTRL SMC_VLLSCTRL_REG(SMC) +#define SMC_PMSTAT SMC_PMSTAT_REG(SMC) + +/*! + * @} + */ /* end of group SMC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group SMC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- SPI Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SPI_Peripheral_Access_Layer SPI Peripheral Access Layer + * @{ + */ + +/** SPI - Register Layout Typedef */ +typedef struct { + __IO uint32_t MCR; /**< Module Configuration Register, offset: 0x0 */ + uint8_t RESERVED_0[4]; + __IO uint32_t TCR; /**< Transfer Count Register, offset: 0x8 */ + union { /* offset: 0xC */ + __IO uint32_t CTAR[2]; /**< Clock and Transfer Attributes Register (In Master Mode), array offset: 0xC, array step: 0x4 */ + __IO uint32_t CTAR_SLAVE[1]; /**< Clock and Transfer Attributes Register (In Slave Mode), array offset: 0xC, array step: 0x4 */ + }; + uint8_t RESERVED_1[24]; + __IO uint32_t SR; /**< Status Register, offset: 0x2C */ + __IO uint32_t RSER; /**< DMA/Interrupt Request Select and Enable Register, offset: 0x30 */ + union { /* offset: 0x34 */ + __IO uint32_t PUSHR; /**< PUSH TX FIFO Register In Master Mode, offset: 0x34 */ + __IO uint32_t PUSHR_SLAVE; /**< PUSH TX FIFO Register In Slave Mode, offset: 0x34 */ + }; + __I uint32_t POPR; /**< POP RX FIFO Register, offset: 0x38 */ + __I uint32_t TXFR0; /**< Transmit FIFO Registers, offset: 0x3C */ + __I uint32_t TXFR1; /**< Transmit FIFO Registers, offset: 0x40 */ + __I uint32_t TXFR2; /**< Transmit FIFO Registers, offset: 0x44 */ + __I uint32_t TXFR3; /**< Transmit FIFO Registers, offset: 0x48 */ + uint8_t RESERVED_2[48]; + __I uint32_t RXFR0; /**< Receive FIFO Registers, offset: 0x7C */ + __I uint32_t RXFR1; /**< Receive FIFO Registers, offset: 0x80 */ + __I uint32_t RXFR2; /**< Receive FIFO Registers, offset: 0x84 */ + __I uint32_t RXFR3; /**< Receive FIFO Registers, offset: 0x88 */ +} SPI_Type, *SPI_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- SPI - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SPI_Register_Accessor_Macros SPI - Register accessor macros + * @{ + */ + + +/* SPI - Register accessors */ +#define SPI_MCR_REG(base) ((base)->MCR) +#define SPI_TCR_REG(base) ((base)->TCR) +#define SPI_CTAR_REG(base,index2) ((base)->CTAR[index2]) +#define SPI_CTAR_SLAVE_REG(base,index2) ((base)->CTAR_SLAVE[index2]) +#define SPI_SR_REG(base) ((base)->SR) +#define SPI_RSER_REG(base) ((base)->RSER) +#define SPI_PUSHR_REG(base) ((base)->PUSHR) +#define SPI_PUSHR_SLAVE_REG(base) ((base)->PUSHR_SLAVE) +#define SPI_POPR_REG(base) ((base)->POPR) +#define SPI_TXFR0_REG(base) ((base)->TXFR0) +#define SPI_TXFR1_REG(base) ((base)->TXFR1) +#define SPI_TXFR2_REG(base) ((base)->TXFR2) +#define SPI_TXFR3_REG(base) ((base)->TXFR3) +#define SPI_RXFR0_REG(base) ((base)->RXFR0) +#define SPI_RXFR1_REG(base) ((base)->RXFR1) +#define SPI_RXFR2_REG(base) ((base)->RXFR2) +#define SPI_RXFR3_REG(base) ((base)->RXFR3) + +/*! + * @} + */ /* end of group SPI_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- SPI Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SPI_Register_Masks SPI Register Masks + * @{ + */ + +/* MCR Bit Fields */ +#define SPI_MCR_HALT_MASK 0x1u +#define SPI_MCR_HALT_SHIFT 0 +#define SPI_MCR_SMPL_PT_MASK 0x300u +#define SPI_MCR_SMPL_PT_SHIFT 8 +#define SPI_MCR_SMPL_PT(x) (((uint32_t)(((uint32_t)(x))<<SPI_MCR_SMPL_PT_SHIFT))&SPI_MCR_SMPL_PT_MASK) +#define SPI_MCR_CLR_RXF_MASK 0x400u +#define SPI_MCR_CLR_RXF_SHIFT 10 +#define SPI_MCR_CLR_TXF_MASK 0x800u +#define SPI_MCR_CLR_TXF_SHIFT 11 +#define SPI_MCR_DIS_RXF_MASK 0x1000u +#define SPI_MCR_DIS_RXF_SHIFT 12 +#define SPI_MCR_DIS_TXF_MASK 0x2000u +#define SPI_MCR_DIS_TXF_SHIFT 13 +#define SPI_MCR_MDIS_MASK 0x4000u +#define SPI_MCR_MDIS_SHIFT 14 +#define SPI_MCR_DOZE_MASK 0x8000u +#define SPI_MCR_DOZE_SHIFT 15 +#define SPI_MCR_PCSIS_MASK 0x3F0000u +#define SPI_MCR_PCSIS_SHIFT 16 +#define SPI_MCR_PCSIS(x) (((uint32_t)(((uint32_t)(x))<<SPI_MCR_PCSIS_SHIFT))&SPI_MCR_PCSIS_MASK) +#define SPI_MCR_ROOE_MASK 0x1000000u +#define SPI_MCR_ROOE_SHIFT 24 +#define SPI_MCR_PCSSE_MASK 0x2000000u +#define SPI_MCR_PCSSE_SHIFT 25 +#define SPI_MCR_MTFE_MASK 0x4000000u +#define SPI_MCR_MTFE_SHIFT 26 +#define SPI_MCR_FRZ_MASK 0x8000000u +#define SPI_MCR_FRZ_SHIFT 27 +#define SPI_MCR_DCONF_MASK 0x30000000u +#define SPI_MCR_DCONF_SHIFT 28 +#define SPI_MCR_DCONF(x) (((uint32_t)(((uint32_t)(x))<<SPI_MCR_DCONF_SHIFT))&SPI_MCR_DCONF_MASK) +#define SPI_MCR_CONT_SCKE_MASK 0x40000000u +#define SPI_MCR_CONT_SCKE_SHIFT 30 +#define SPI_MCR_MSTR_MASK 0x80000000u +#define SPI_MCR_MSTR_SHIFT 31 +/* TCR Bit Fields */ +#define SPI_TCR_SPI_TCNT_MASK 0xFFFF0000u +#define SPI_TCR_SPI_TCNT_SHIFT 16 +#define SPI_TCR_SPI_TCNT(x) (((uint32_t)(((uint32_t)(x))<<SPI_TCR_SPI_TCNT_SHIFT))&SPI_TCR_SPI_TCNT_MASK) +/* CTAR Bit Fields */ +#define SPI_CTAR_BR_MASK 0xFu +#define SPI_CTAR_BR_SHIFT 0 +#define SPI_CTAR_BR(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_BR_SHIFT))&SPI_CTAR_BR_MASK) +#define SPI_CTAR_DT_MASK 0xF0u +#define SPI_CTAR_DT_SHIFT 4 +#define SPI_CTAR_DT(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_DT_SHIFT))&SPI_CTAR_DT_MASK) +#define SPI_CTAR_ASC_MASK 0xF00u +#define SPI_CTAR_ASC_SHIFT 8 +#define SPI_CTAR_ASC(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_ASC_SHIFT))&SPI_CTAR_ASC_MASK) +#define SPI_CTAR_CSSCK_MASK 0xF000u +#define SPI_CTAR_CSSCK_SHIFT 12 +#define SPI_CTAR_CSSCK(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_CSSCK_SHIFT))&SPI_CTAR_CSSCK_MASK) +#define SPI_CTAR_PBR_MASK 0x30000u +#define SPI_CTAR_PBR_SHIFT 16 +#define SPI_CTAR_PBR(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_PBR_SHIFT))&SPI_CTAR_PBR_MASK) +#define SPI_CTAR_PDT_MASK 0xC0000u +#define SPI_CTAR_PDT_SHIFT 18 +#define SPI_CTAR_PDT(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_PDT_SHIFT))&SPI_CTAR_PDT_MASK) +#define SPI_CTAR_PASC_MASK 0x300000u +#define SPI_CTAR_PASC_SHIFT 20 +#define SPI_CTAR_PASC(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_PASC_SHIFT))&SPI_CTAR_PASC_MASK) +#define SPI_CTAR_PCSSCK_MASK 0xC00000u +#define SPI_CTAR_PCSSCK_SHIFT 22 +#define SPI_CTAR_PCSSCK(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_PCSSCK_SHIFT))&SPI_CTAR_PCSSCK_MASK) +#define SPI_CTAR_LSBFE_MASK 0x1000000u +#define SPI_CTAR_LSBFE_SHIFT 24 +#define SPI_CTAR_CPHA_MASK 0x2000000u +#define SPI_CTAR_CPHA_SHIFT 25 +#define SPI_CTAR_CPOL_MASK 0x4000000u +#define SPI_CTAR_CPOL_SHIFT 26 +#define SPI_CTAR_FMSZ_MASK 0x78000000u +#define SPI_CTAR_FMSZ_SHIFT 27 +#define SPI_CTAR_FMSZ(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_FMSZ_SHIFT))&SPI_CTAR_FMSZ_MASK) +#define SPI_CTAR_DBR_MASK 0x80000000u +#define SPI_CTAR_DBR_SHIFT 31 +/* CTAR_SLAVE Bit Fields */ +#define SPI_CTAR_SLAVE_CPHA_MASK 0x2000000u +#define SPI_CTAR_SLAVE_CPHA_SHIFT 25 +#define SPI_CTAR_SLAVE_CPOL_MASK 0x4000000u +#define SPI_CTAR_SLAVE_CPOL_SHIFT 26 +#define SPI_CTAR_SLAVE_FMSZ_MASK 0xF8000000u +#define SPI_CTAR_SLAVE_FMSZ_SHIFT 27 +#define SPI_CTAR_SLAVE_FMSZ(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_SLAVE_FMSZ_SHIFT))&SPI_CTAR_SLAVE_FMSZ_MASK) +/* SR Bit Fields */ +#define SPI_SR_POPNXTPTR_MASK 0xFu +#define SPI_SR_POPNXTPTR_SHIFT 0 +#define SPI_SR_POPNXTPTR(x) (((uint32_t)(((uint32_t)(x))<<SPI_SR_POPNXTPTR_SHIFT))&SPI_SR_POPNXTPTR_MASK) +#define SPI_SR_RXCTR_MASK 0xF0u +#define SPI_SR_RXCTR_SHIFT 4 +#define SPI_SR_RXCTR(x) (((uint32_t)(((uint32_t)(x))<<SPI_SR_RXCTR_SHIFT))&SPI_SR_RXCTR_MASK) +#define SPI_SR_TXNXTPTR_MASK 0xF00u +#define SPI_SR_TXNXTPTR_SHIFT 8 +#define SPI_SR_TXNXTPTR(x) (((uint32_t)(((uint32_t)(x))<<SPI_SR_TXNXTPTR_SHIFT))&SPI_SR_TXNXTPTR_MASK) +#define SPI_SR_TXCTR_MASK 0xF000u +#define SPI_SR_TXCTR_SHIFT 12 +#define SPI_SR_TXCTR(x) (((uint32_t)(((uint32_t)(x))<<SPI_SR_TXCTR_SHIFT))&SPI_SR_TXCTR_MASK) +#define SPI_SR_RFDF_MASK 0x20000u +#define SPI_SR_RFDF_SHIFT 17 +#define SPI_SR_RFOF_MASK 0x80000u +#define SPI_SR_RFOF_SHIFT 19 +#define SPI_SR_TFFF_MASK 0x2000000u +#define SPI_SR_TFFF_SHIFT 25 +#define SPI_SR_TFUF_MASK 0x8000000u +#define SPI_SR_TFUF_SHIFT 27 +#define SPI_SR_EOQF_MASK 0x10000000u +#define SPI_SR_EOQF_SHIFT 28 +#define SPI_SR_TXRXS_MASK 0x40000000u +#define SPI_SR_TXRXS_SHIFT 30 +#define SPI_SR_TCF_MASK 0x80000000u +#define SPI_SR_TCF_SHIFT 31 +/* RSER Bit Fields */ +#define SPI_RSER_RFDF_DIRS_MASK 0x10000u +#define SPI_RSER_RFDF_DIRS_SHIFT 16 +#define SPI_RSER_RFDF_RE_MASK 0x20000u +#define SPI_RSER_RFDF_RE_SHIFT 17 +#define SPI_RSER_RFOF_RE_MASK 0x80000u +#define SPI_RSER_RFOF_RE_SHIFT 19 +#define SPI_RSER_TFFF_DIRS_MASK 0x1000000u +#define SPI_RSER_TFFF_DIRS_SHIFT 24 +#define SPI_RSER_TFFF_RE_MASK 0x2000000u +#define SPI_RSER_TFFF_RE_SHIFT 25 +#define SPI_RSER_TFUF_RE_MASK 0x8000000u +#define SPI_RSER_TFUF_RE_SHIFT 27 +#define SPI_RSER_EOQF_RE_MASK 0x10000000u +#define SPI_RSER_EOQF_RE_SHIFT 28 +#define SPI_RSER_TCF_RE_MASK 0x80000000u +#define SPI_RSER_TCF_RE_SHIFT 31 +/* PUSHR Bit Fields */ +#define SPI_PUSHR_TXDATA_MASK 0xFFFFu +#define SPI_PUSHR_TXDATA_SHIFT 0 +#define SPI_PUSHR_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_PUSHR_TXDATA_SHIFT))&SPI_PUSHR_TXDATA_MASK) +#define SPI_PUSHR_PCS_MASK 0x3F0000u +#define SPI_PUSHR_PCS_SHIFT 16 +#define SPI_PUSHR_PCS(x) (((uint32_t)(((uint32_t)(x))<<SPI_PUSHR_PCS_SHIFT))&SPI_PUSHR_PCS_MASK) +#define SPI_PUSHR_CTCNT_MASK 0x4000000u +#define SPI_PUSHR_CTCNT_SHIFT 26 +#define SPI_PUSHR_EOQ_MASK 0x8000000u +#define SPI_PUSHR_EOQ_SHIFT 27 +#define SPI_PUSHR_CTAS_MASK 0x70000000u +#define SPI_PUSHR_CTAS_SHIFT 28 +#define SPI_PUSHR_CTAS(x) (((uint32_t)(((uint32_t)(x))<<SPI_PUSHR_CTAS_SHIFT))&SPI_PUSHR_CTAS_MASK) +#define SPI_PUSHR_CONT_MASK 0x80000000u +#define SPI_PUSHR_CONT_SHIFT 31 +/* PUSHR_SLAVE Bit Fields */ +#define SPI_PUSHR_SLAVE_TXDATA_MASK 0xFFFFFFFFu +#define SPI_PUSHR_SLAVE_TXDATA_SHIFT 0 +#define SPI_PUSHR_SLAVE_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_PUSHR_SLAVE_TXDATA_SHIFT))&SPI_PUSHR_SLAVE_TXDATA_MASK) +/* POPR Bit Fields */ +#define SPI_POPR_RXDATA_MASK 0xFFFFFFFFu +#define SPI_POPR_RXDATA_SHIFT 0 +#define SPI_POPR_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_POPR_RXDATA_SHIFT))&SPI_POPR_RXDATA_MASK) +/* TXFR0 Bit Fields */ +#define SPI_TXFR0_TXDATA_MASK 0xFFFFu +#define SPI_TXFR0_TXDATA_SHIFT 0 +#define SPI_TXFR0_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR0_TXDATA_SHIFT))&SPI_TXFR0_TXDATA_MASK) +#define SPI_TXFR0_TXCMD_TXDATA_MASK 0xFFFF0000u +#define SPI_TXFR0_TXCMD_TXDATA_SHIFT 16 +#define SPI_TXFR0_TXCMD_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR0_TXCMD_TXDATA_SHIFT))&SPI_TXFR0_TXCMD_TXDATA_MASK) +/* TXFR1 Bit Fields */ +#define SPI_TXFR1_TXDATA_MASK 0xFFFFu +#define SPI_TXFR1_TXDATA_SHIFT 0 +#define SPI_TXFR1_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR1_TXDATA_SHIFT))&SPI_TXFR1_TXDATA_MASK) +#define SPI_TXFR1_TXCMD_TXDATA_MASK 0xFFFF0000u +#define SPI_TXFR1_TXCMD_TXDATA_SHIFT 16 +#define SPI_TXFR1_TXCMD_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR1_TXCMD_TXDATA_SHIFT))&SPI_TXFR1_TXCMD_TXDATA_MASK) +/* TXFR2 Bit Fields */ +#define SPI_TXFR2_TXDATA_MASK 0xFFFFu +#define SPI_TXFR2_TXDATA_SHIFT 0 +#define SPI_TXFR2_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR2_TXDATA_SHIFT))&SPI_TXFR2_TXDATA_MASK) +#define SPI_TXFR2_TXCMD_TXDATA_MASK 0xFFFF0000u +#define SPI_TXFR2_TXCMD_TXDATA_SHIFT 16 +#define SPI_TXFR2_TXCMD_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR2_TXCMD_TXDATA_SHIFT))&SPI_TXFR2_TXCMD_TXDATA_MASK) +/* TXFR3 Bit Fields */ +#define SPI_TXFR3_TXDATA_MASK 0xFFFFu +#define SPI_TXFR3_TXDATA_SHIFT 0 +#define SPI_TXFR3_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR3_TXDATA_SHIFT))&SPI_TXFR3_TXDATA_MASK) +#define SPI_TXFR3_TXCMD_TXDATA_MASK 0xFFFF0000u +#define SPI_TXFR3_TXCMD_TXDATA_SHIFT 16 +#define SPI_TXFR3_TXCMD_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR3_TXCMD_TXDATA_SHIFT))&SPI_TXFR3_TXCMD_TXDATA_MASK) +/* RXFR0 Bit Fields */ +#define SPI_RXFR0_RXDATA_MASK 0xFFFFFFFFu +#define SPI_RXFR0_RXDATA_SHIFT 0 +#define SPI_RXFR0_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_RXFR0_RXDATA_SHIFT))&SPI_RXFR0_RXDATA_MASK) +/* RXFR1 Bit Fields */ +#define SPI_RXFR1_RXDATA_MASK 0xFFFFFFFFu +#define SPI_RXFR1_RXDATA_SHIFT 0 +#define SPI_RXFR1_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_RXFR1_RXDATA_SHIFT))&SPI_RXFR1_RXDATA_MASK) +/* RXFR2 Bit Fields */ +#define SPI_RXFR2_RXDATA_MASK 0xFFFFFFFFu +#define SPI_RXFR2_RXDATA_SHIFT 0 +#define SPI_RXFR2_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_RXFR2_RXDATA_SHIFT))&SPI_RXFR2_RXDATA_MASK) +/* RXFR3 Bit Fields */ +#define SPI_RXFR3_RXDATA_MASK 0xFFFFFFFFu +#define SPI_RXFR3_RXDATA_SHIFT 0 +#define SPI_RXFR3_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_RXFR3_RXDATA_SHIFT))&SPI_RXFR3_RXDATA_MASK) + +/*! + * @} + */ /* end of group SPI_Register_Masks */ + + +/* SPI - Peripheral instance base addresses */ +/** Peripheral SPI0 base address */ +#define SPI0_BASE (0x4002C000u) +/** Peripheral SPI0 base pointer */ +#define SPI0 ((SPI_Type *)SPI0_BASE) +#define SPI0_BASE_PTR (SPI0) +/** Peripheral SPI1 base address */ +#define SPI1_BASE (0x4002D000u) +/** Peripheral SPI1 base pointer */ +#define SPI1 ((SPI_Type *)SPI1_BASE) +#define SPI1_BASE_PTR (SPI1) +/** Peripheral SPI2 base address */ +#define SPI2_BASE (0x400AC000u) +/** Peripheral SPI2 base pointer */ +#define SPI2 ((SPI_Type *)SPI2_BASE) +#define SPI2_BASE_PTR (SPI2) +/** Array initializer of SPI peripheral base pointers */ +#define SPI_BASES { SPI0, SPI1, SPI2 } + +/* ---------------------------------------------------------------------------- + -- SPI - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SPI_Register_Accessor_Macros SPI - Register accessor macros + * @{ + */ + + +/* SPI - Register instance definitions */ +/* SPI0 */ +#define SPI0_MCR SPI_MCR_REG(SPI0) +#define SPI0_TCR SPI_TCR_REG(SPI0) +#define SPI0_CTAR0 SPI_CTAR_REG(SPI0,0) +#define SPI0_CTAR0_SLAVE SPI_CTAR_SLAVE_REG(SPI0,0) +#define SPI0_CTAR1 SPI_CTAR_REG(SPI0,1) +#define SPI0_SR SPI_SR_REG(SPI0) +#define SPI0_RSER SPI_RSER_REG(SPI0) +#define SPI0_PUSHR SPI_PUSHR_REG(SPI0) +#define SPI0_PUSHR_SLAVE SPI_PUSHR_SLAVE_REG(SPI0) +#define SPI0_POPR SPI_POPR_REG(SPI0) +#define SPI0_TXFR0 SPI_TXFR0_REG(SPI0) +#define SPI0_TXFR1 SPI_TXFR1_REG(SPI0) +#define SPI0_TXFR2 SPI_TXFR2_REG(SPI0) +#define SPI0_TXFR3 SPI_TXFR3_REG(SPI0) +#define SPI0_RXFR0 SPI_RXFR0_REG(SPI0) +#define SPI0_RXFR1 SPI_RXFR1_REG(SPI0) +#define SPI0_RXFR2 SPI_RXFR2_REG(SPI0) +#define SPI0_RXFR3 SPI_RXFR3_REG(SPI0) +/* SPI1 */ +#define SPI1_MCR SPI_MCR_REG(SPI1) +#define SPI1_TCR SPI_TCR_REG(SPI1) +#define SPI1_CTAR0 SPI_CTAR_REG(SPI1,0) +#define SPI1_CTAR0_SLAVE SPI_CTAR_SLAVE_REG(SPI1,0) +#define SPI1_CTAR1 SPI_CTAR_REG(SPI1,1) +#define SPI1_SR SPI_SR_REG(SPI1) +#define SPI1_RSER SPI_RSER_REG(SPI1) +#define SPI1_PUSHR SPI_PUSHR_REG(SPI1) +#define SPI1_PUSHR_SLAVE SPI_PUSHR_SLAVE_REG(SPI1) +#define SPI1_POPR SPI_POPR_REG(SPI1) +#define SPI1_TXFR0 SPI_TXFR0_REG(SPI1) +#define SPI1_TXFR1 SPI_TXFR1_REG(SPI1) +#define SPI1_TXFR2 SPI_TXFR2_REG(SPI1) +#define SPI1_TXFR3 SPI_TXFR3_REG(SPI1) +#define SPI1_RXFR0 SPI_RXFR0_REG(SPI1) +#define SPI1_RXFR1 SPI_RXFR1_REG(SPI1) +#define SPI1_RXFR2 SPI_RXFR2_REG(SPI1) +#define SPI1_RXFR3 SPI_RXFR3_REG(SPI1) +/* SPI2 */ +#define SPI2_MCR SPI_MCR_REG(SPI2) +#define SPI2_TCR SPI_TCR_REG(SPI2) +#define SPI2_CTAR0 SPI_CTAR_REG(SPI2,0) +#define SPI2_CTAR0_SLAVE SPI_CTAR_SLAVE_REG(SPI2,0) +#define SPI2_CTAR1 SPI_CTAR_REG(SPI2,1) +#define SPI2_SR SPI_SR_REG(SPI2) +#define SPI2_RSER SPI_RSER_REG(SPI2) +#define SPI2_PUSHR SPI_PUSHR_REG(SPI2) +#define SPI2_PUSHR_SLAVE SPI_PUSHR_SLAVE_REG(SPI2) +#define SPI2_POPR SPI_POPR_REG(SPI2) +#define SPI2_TXFR0 SPI_TXFR0_REG(SPI2) +#define SPI2_TXFR1 SPI_TXFR1_REG(SPI2) +#define SPI2_TXFR2 SPI_TXFR2_REG(SPI2) +#define SPI2_TXFR3 SPI_TXFR3_REG(SPI2) +#define SPI2_RXFR0 SPI_RXFR0_REG(SPI2) +#define SPI2_RXFR1 SPI_RXFR1_REG(SPI2) +#define SPI2_RXFR2 SPI_RXFR2_REG(SPI2) +#define SPI2_RXFR3 SPI_RXFR3_REG(SPI2) + +/* SPI - Register array accessors */ +#define SPI0_CTAR(index2) SPI_CTAR_REG(SPI0,index2) +#define SPI1_CTAR(index2) SPI_CTAR_REG(SPI1,index2) +#define SPI2_CTAR(index2) SPI_CTAR_REG(SPI2,index2) +#define SPI0_CTAR_SLAVE(index2) SPI_CTAR_SLAVE_REG(SPI0,index2) +#define SPI1_CTAR_SLAVE(index2) SPI_CTAR_SLAVE_REG(SPI1,index2) +#define SPI2_CTAR_SLAVE(index2) SPI_CTAR_SLAVE_REG(SPI2,index2) + +/*! + * @} + */ /* end of group SPI_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group SPI_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- UART Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup UART_Peripheral_Access_Layer UART Peripheral Access Layer + * @{ + */ + +/** UART - Register Layout Typedef */ +typedef struct { + __IO uint8_t BDH; /**< UART Baud Rate Registers: High, offset: 0x0 */ + __IO uint8_t BDL; /**< UART Baud Rate Registers: Low, offset: 0x1 */ + __IO uint8_t C1; /**< UART Control Register 1, offset: 0x2 */ + __IO uint8_t C2; /**< UART Control Register 2, offset: 0x3 */ + __I uint8_t S1; /**< UART Status Register 1, offset: 0x4 */ + __IO uint8_t S2; /**< UART Status Register 2, offset: 0x5 */ + __IO uint8_t C3; /**< UART Control Register 3, offset: 0x6 */ + __IO uint8_t D; /**< UART Data Register, offset: 0x7 */ + __IO uint8_t MA1; /**< UART Match Address Registers 1, offset: 0x8 */ + __IO uint8_t MA2; /**< UART Match Address Registers 2, offset: 0x9 */ + __IO uint8_t C4; /**< UART Control Register 4, offset: 0xA */ + __IO uint8_t C5; /**< UART Control Register 5, offset: 0xB */ + __I uint8_t ED; /**< UART Extended Data Register, offset: 0xC */ + __IO uint8_t MODEM; /**< UART Modem Register, offset: 0xD */ + __IO uint8_t IR; /**< UART Infrared Register, offset: 0xE */ + uint8_t RESERVED_0[1]; + __IO uint8_t PFIFO; /**< UART FIFO Parameters, offset: 0x10 */ + __IO uint8_t CFIFO; /**< UART FIFO Control Register, offset: 0x11 */ + __IO uint8_t SFIFO; /**< UART FIFO Status Register, offset: 0x12 */ + __IO uint8_t TWFIFO; /**< UART FIFO Transmit Watermark, offset: 0x13 */ + __I uint8_t TCFIFO; /**< UART FIFO Transmit Count, offset: 0x14 */ + __IO uint8_t RWFIFO; /**< UART FIFO Receive Watermark, offset: 0x15 */ + __I uint8_t RCFIFO; /**< UART FIFO Receive Count, offset: 0x16 */ + uint8_t RESERVED_1[1]; + __IO uint8_t C7816; /**< UART 7816 Control Register, offset: 0x18 */ + __IO uint8_t IE7816; /**< UART 7816 Interrupt Enable Register, offset: 0x19 */ + __IO uint8_t IS7816; /**< UART 7816 Interrupt Status Register, offset: 0x1A */ + union { /* offset: 0x1B */ + __IO uint8_t WP7816_T_TYPE0; /**< UART 7816 Wait Parameter Register, offset: 0x1B */ + __IO uint8_t WP7816_T_TYPE1; /**< UART 7816 Wait Parameter Register, offset: 0x1B */ + }; + __IO uint8_t WN7816; /**< UART 7816 Wait N Register, offset: 0x1C */ + __IO uint8_t WF7816; /**< UART 7816 Wait FD Register, offset: 0x1D */ + __IO uint8_t ET7816; /**< UART 7816 Error Threshold Register, offset: 0x1E */ + __IO uint8_t TL7816; /**< UART 7816 Transmit Length Register, offset: 0x1F */ +} UART_Type, *UART_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- UART - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup UART_Register_Accessor_Macros UART - Register accessor macros + * @{ + */ + + +/* UART - Register accessors */ +#define UART_BDH_REG(base) ((base)->BDH) +#define UART_BDL_REG(base) ((base)->BDL) +#define UART_C1_REG(base) ((base)->C1) +#define UART_C2_REG(base) ((base)->C2) +#define UART_S1_REG(base) ((base)->S1) +#define UART_S2_REG(base) ((base)->S2) +#define UART_C3_REG(base) ((base)->C3) +#define UART_D_REG(base) ((base)->D) +#define UART_MA1_REG(base) ((base)->MA1) +#define UART_MA2_REG(base) ((base)->MA2) +#define UART_C4_REG(base) ((base)->C4) +#define UART_C5_REG(base) ((base)->C5) +#define UART_ED_REG(base) ((base)->ED) +#define UART_MODEM_REG(base) ((base)->MODEM) +#define UART_IR_REG(base) ((base)->IR) +#define UART_PFIFO_REG(base) ((base)->PFIFO) +#define UART_CFIFO_REG(base) ((base)->CFIFO) +#define UART_SFIFO_REG(base) ((base)->SFIFO) +#define UART_TWFIFO_REG(base) ((base)->TWFIFO) +#define UART_TCFIFO_REG(base) ((base)->TCFIFO) +#define UART_RWFIFO_REG(base) ((base)->RWFIFO) +#define UART_RCFIFO_REG(base) ((base)->RCFIFO) +#define UART_C7816_REG(base) ((base)->C7816) +#define UART_IE7816_REG(base) ((base)->IE7816) +#define UART_IS7816_REG(base) ((base)->IS7816) +#define UART_WP7816_T_TYPE0_REG(base) ((base)->WP7816_T_TYPE0) +#define UART_WP7816_T_TYPE1_REG(base) ((base)->WP7816_T_TYPE1) +#define UART_WN7816_REG(base) ((base)->WN7816) +#define UART_WF7816_REG(base) ((base)->WF7816) +#define UART_ET7816_REG(base) ((base)->ET7816) +#define UART_TL7816_REG(base) ((base)->TL7816) + +/*! + * @} + */ /* end of group UART_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- UART Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup UART_Register_Masks UART Register Masks + * @{ + */ + +/* BDH Bit Fields */ +#define UART_BDH_SBR_MASK 0x1Fu +#define UART_BDH_SBR_SHIFT 0 +#define UART_BDH_SBR(x) (((uint8_t)(((uint8_t)(x))<<UART_BDH_SBR_SHIFT))&UART_BDH_SBR_MASK) +#define UART_BDH_SBNS_MASK 0x20u +#define UART_BDH_SBNS_SHIFT 5 +#define UART_BDH_RXEDGIE_MASK 0x40u +#define UART_BDH_RXEDGIE_SHIFT 6 +#define UART_BDH_LBKDIE_MASK 0x80u +#define UART_BDH_LBKDIE_SHIFT 7 +/* BDL Bit Fields */ +#define UART_BDL_SBR_MASK 0xFFu +#define UART_BDL_SBR_SHIFT 0 +#define UART_BDL_SBR(x) (((uint8_t)(((uint8_t)(x))<<UART_BDL_SBR_SHIFT))&UART_BDL_SBR_MASK) +/* C1 Bit Fields */ +#define UART_C1_PT_MASK 0x1u +#define UART_C1_PT_SHIFT 0 +#define UART_C1_PE_MASK 0x2u +#define UART_C1_PE_SHIFT 1 +#define UART_C1_ILT_MASK 0x4u +#define UART_C1_ILT_SHIFT 2 +#define UART_C1_WAKE_MASK 0x8u +#define UART_C1_WAKE_SHIFT 3 +#define UART_C1_M_MASK 0x10u +#define UART_C1_M_SHIFT 4 +#define UART_C1_RSRC_MASK 0x20u +#define UART_C1_RSRC_SHIFT 5 +#define UART_C1_UARTSWAI_MASK 0x40u +#define UART_C1_UARTSWAI_SHIFT 6 +#define UART_C1_LOOPS_MASK 0x80u +#define UART_C1_LOOPS_SHIFT 7 +/* C2 Bit Fields */ +#define UART_C2_SBK_MASK 0x1u +#define UART_C2_SBK_SHIFT 0 +#define UART_C2_RWU_MASK 0x2u +#define UART_C2_RWU_SHIFT 1 +#define UART_C2_RE_MASK 0x4u +#define UART_C2_RE_SHIFT 2 +#define UART_C2_TE_MASK 0x8u +#define UART_C2_TE_SHIFT 3 +#define UART_C2_ILIE_MASK 0x10u +#define UART_C2_ILIE_SHIFT 4 +#define UART_C2_RIE_MASK 0x20u +#define UART_C2_RIE_SHIFT 5 +#define UART_C2_TCIE_MASK 0x40u +#define UART_C2_TCIE_SHIFT 6 +#define UART_C2_TIE_MASK 0x80u +#define UART_C2_TIE_SHIFT 7 +/* S1 Bit Fields */ +#define UART_S1_PF_MASK 0x1u +#define UART_S1_PF_SHIFT 0 +#define UART_S1_FE_MASK 0x2u +#define UART_S1_FE_SHIFT 1 +#define UART_S1_NF_MASK 0x4u +#define UART_S1_NF_SHIFT 2 +#define UART_S1_OR_MASK 0x8u +#define UART_S1_OR_SHIFT 3 +#define UART_S1_IDLE_MASK 0x10u +#define UART_S1_IDLE_SHIFT 4 +#define UART_S1_RDRF_MASK 0x20u +#define UART_S1_RDRF_SHIFT 5 +#define UART_S1_TC_MASK 0x40u +#define UART_S1_TC_SHIFT 6 +#define UART_S1_TDRE_MASK 0x80u +#define UART_S1_TDRE_SHIFT 7 +/* S2 Bit Fields */ +#define UART_S2_RAF_MASK 0x1u +#define UART_S2_RAF_SHIFT 0 +#define UART_S2_LBKDE_MASK 0x2u +#define UART_S2_LBKDE_SHIFT 1 +#define UART_S2_BRK13_MASK 0x4u +#define UART_S2_BRK13_SHIFT 2 +#define UART_S2_RWUID_MASK 0x8u +#define UART_S2_RWUID_SHIFT 3 +#define UART_S2_RXINV_MASK 0x10u +#define UART_S2_RXINV_SHIFT 4 +#define UART_S2_MSBF_MASK 0x20u +#define UART_S2_MSBF_SHIFT 5 +#define UART_S2_RXEDGIF_MASK 0x40u +#define UART_S2_RXEDGIF_SHIFT 6 +#define UART_S2_LBKDIF_MASK 0x80u +#define UART_S2_LBKDIF_SHIFT 7 +/* C3 Bit Fields */ +#define UART_C3_PEIE_MASK 0x1u +#define UART_C3_PEIE_SHIFT 0 +#define UART_C3_FEIE_MASK 0x2u +#define UART_C3_FEIE_SHIFT 1 +#define UART_C3_NEIE_MASK 0x4u +#define UART_C3_NEIE_SHIFT 2 +#define UART_C3_ORIE_MASK 0x8u +#define UART_C3_ORIE_SHIFT 3 +#define UART_C3_TXINV_MASK 0x10u +#define UART_C3_TXINV_SHIFT 4 +#define UART_C3_TXDIR_MASK 0x20u +#define UART_C3_TXDIR_SHIFT 5 +#define UART_C3_T8_MASK 0x40u +#define UART_C3_T8_SHIFT 6 +#define UART_C3_R8_MASK 0x80u +#define UART_C3_R8_SHIFT 7 +/* D Bit Fields */ +#define UART_D_RT_MASK 0xFFu +#define UART_D_RT_SHIFT 0 +#define UART_D_RT(x) (((uint8_t)(((uint8_t)(x))<<UART_D_RT_SHIFT))&UART_D_RT_MASK) +/* MA1 Bit Fields */ +#define UART_MA1_MA_MASK 0xFFu +#define UART_MA1_MA_SHIFT 0 +#define UART_MA1_MA(x) (((uint8_t)(((uint8_t)(x))<<UART_MA1_MA_SHIFT))&UART_MA1_MA_MASK) +/* MA2 Bit Fields */ +#define UART_MA2_MA_MASK 0xFFu +#define UART_MA2_MA_SHIFT 0 +#define UART_MA2_MA(x) (((uint8_t)(((uint8_t)(x))<<UART_MA2_MA_SHIFT))&UART_MA2_MA_MASK) +/* C4 Bit Fields */ +#define UART_C4_BRFA_MASK 0x1Fu +#define UART_C4_BRFA_SHIFT 0 +#define UART_C4_BRFA(x) (((uint8_t)(((uint8_t)(x))<<UART_C4_BRFA_SHIFT))&UART_C4_BRFA_MASK) +#define UART_C4_M10_MASK 0x20u +#define UART_C4_M10_SHIFT 5 +#define UART_C4_MAEN2_MASK 0x40u +#define UART_C4_MAEN2_SHIFT 6 +#define UART_C4_MAEN1_MASK 0x80u +#define UART_C4_MAEN1_SHIFT 7 +/* C5 Bit Fields */ +#define UART_C5_LBKDDMAS_MASK 0x8u +#define UART_C5_LBKDDMAS_SHIFT 3 +#define UART_C5_ILDMAS_MASK 0x10u +#define UART_C5_ILDMAS_SHIFT 4 +#define UART_C5_RDMAS_MASK 0x20u +#define UART_C5_RDMAS_SHIFT 5 +#define UART_C5_TCDMAS_MASK 0x40u +#define UART_C5_TCDMAS_SHIFT 6 +#define UART_C5_TDMAS_MASK 0x80u +#define UART_C5_TDMAS_SHIFT 7 +/* ED Bit Fields */ +#define UART_ED_PARITYE_MASK 0x40u +#define UART_ED_PARITYE_SHIFT 6 +#define UART_ED_NOISY_MASK 0x80u +#define UART_ED_NOISY_SHIFT 7 +/* MODEM Bit Fields */ +#define UART_MODEM_TXCTSE_MASK 0x1u +#define UART_MODEM_TXCTSE_SHIFT 0 +#define UART_MODEM_TXRTSE_MASK 0x2u +#define UART_MODEM_TXRTSE_SHIFT 1 +#define UART_MODEM_TXRTSPOL_MASK 0x4u +#define UART_MODEM_TXRTSPOL_SHIFT 2 +#define UART_MODEM_RXRTSE_MASK 0x8u +#define UART_MODEM_RXRTSE_SHIFT 3 +/* IR Bit Fields */ +#define UART_IR_TNP_MASK 0x3u +#define UART_IR_TNP_SHIFT 0 +#define UART_IR_TNP(x) (((uint8_t)(((uint8_t)(x))<<UART_IR_TNP_SHIFT))&UART_IR_TNP_MASK) +#define UART_IR_IREN_MASK 0x4u +#define UART_IR_IREN_SHIFT 2 +/* PFIFO Bit Fields */ +#define UART_PFIFO_RXFIFOSIZE_MASK 0x7u +#define UART_PFIFO_RXFIFOSIZE_SHIFT 0 +#define UART_PFIFO_RXFIFOSIZE(x) (((uint8_t)(((uint8_t)(x))<<UART_PFIFO_RXFIFOSIZE_SHIFT))&UART_PFIFO_RXFIFOSIZE_MASK) +#define UART_PFIFO_RXFE_MASK 0x8u +#define UART_PFIFO_RXFE_SHIFT 3 +#define UART_PFIFO_TXFIFOSIZE_MASK 0x70u +#define UART_PFIFO_TXFIFOSIZE_SHIFT 4 +#define UART_PFIFO_TXFIFOSIZE(x) (((uint8_t)(((uint8_t)(x))<<UART_PFIFO_TXFIFOSIZE_SHIFT))&UART_PFIFO_TXFIFOSIZE_MASK) +#define UART_PFIFO_TXFE_MASK 0x80u +#define UART_PFIFO_TXFE_SHIFT 7 +/* CFIFO Bit Fields */ +#define UART_CFIFO_RXUFE_MASK 0x1u +#define UART_CFIFO_RXUFE_SHIFT 0 +#define UART_CFIFO_TXOFE_MASK 0x2u +#define UART_CFIFO_TXOFE_SHIFT 1 +#define UART_CFIFO_RXOFE_MASK 0x4u +#define UART_CFIFO_RXOFE_SHIFT 2 +#define UART_CFIFO_RXFLUSH_MASK 0x40u +#define UART_CFIFO_RXFLUSH_SHIFT 6 +#define UART_CFIFO_TXFLUSH_MASK 0x80u +#define UART_CFIFO_TXFLUSH_SHIFT 7 +/* SFIFO Bit Fields */ +#define UART_SFIFO_RXUF_MASK 0x1u +#define UART_SFIFO_RXUF_SHIFT 0 +#define UART_SFIFO_TXOF_MASK 0x2u +#define UART_SFIFO_TXOF_SHIFT 1 +#define UART_SFIFO_RXOF_MASK 0x4u +#define UART_SFIFO_RXOF_SHIFT 2 +#define UART_SFIFO_RXEMPT_MASK 0x40u +#define UART_SFIFO_RXEMPT_SHIFT 6 +#define UART_SFIFO_TXEMPT_MASK 0x80u +#define UART_SFIFO_TXEMPT_SHIFT 7 +/* TWFIFO Bit Fields */ +#define UART_TWFIFO_TXWATER_MASK 0xFFu +#define UART_TWFIFO_TXWATER_SHIFT 0 +#define UART_TWFIFO_TXWATER(x) (((uint8_t)(((uint8_t)(x))<<UART_TWFIFO_TXWATER_SHIFT))&UART_TWFIFO_TXWATER_MASK) +/* TCFIFO Bit Fields */ +#define UART_TCFIFO_TXCOUNT_MASK 0xFFu +#define UART_TCFIFO_TXCOUNT_SHIFT 0 +#define UART_TCFIFO_TXCOUNT(x) (((uint8_t)(((uint8_t)(x))<<UART_TCFIFO_TXCOUNT_SHIFT))&UART_TCFIFO_TXCOUNT_MASK) +/* RWFIFO Bit Fields */ +#define UART_RWFIFO_RXWATER_MASK 0xFFu +#define UART_RWFIFO_RXWATER_SHIFT 0 +#define UART_RWFIFO_RXWATER(x) (((uint8_t)(((uint8_t)(x))<<UART_RWFIFO_RXWATER_SHIFT))&UART_RWFIFO_RXWATER_MASK) +/* RCFIFO Bit Fields */ +#define UART_RCFIFO_RXCOUNT_MASK 0xFFu +#define UART_RCFIFO_RXCOUNT_SHIFT 0 +#define UART_RCFIFO_RXCOUNT(x) (((uint8_t)(((uint8_t)(x))<<UART_RCFIFO_RXCOUNT_SHIFT))&UART_RCFIFO_RXCOUNT_MASK) +/* C7816 Bit Fields */ +#define UART_C7816_ISO_7816E_MASK 0x1u +#define UART_C7816_ISO_7816E_SHIFT 0 +#define UART_C7816_TTYPE_MASK 0x2u +#define UART_C7816_TTYPE_SHIFT 1 +#define UART_C7816_INIT_MASK 0x4u +#define UART_C7816_INIT_SHIFT 2 +#define UART_C7816_ANACK_MASK 0x8u +#define UART_C7816_ANACK_SHIFT 3 +#define UART_C7816_ONACK_MASK 0x10u +#define UART_C7816_ONACK_SHIFT 4 +/* IE7816 Bit Fields */ +#define UART_IE7816_RXTE_MASK 0x1u +#define UART_IE7816_RXTE_SHIFT 0 +#define UART_IE7816_TXTE_MASK 0x2u +#define UART_IE7816_TXTE_SHIFT 1 +#define UART_IE7816_GTVE_MASK 0x4u +#define UART_IE7816_GTVE_SHIFT 2 +#define UART_IE7816_INITDE_MASK 0x10u +#define UART_IE7816_INITDE_SHIFT 4 +#define UART_IE7816_BWTE_MASK 0x20u +#define UART_IE7816_BWTE_SHIFT 5 +#define UART_IE7816_CWTE_MASK 0x40u +#define UART_IE7816_CWTE_SHIFT 6 +#define UART_IE7816_WTE_MASK 0x80u +#define UART_IE7816_WTE_SHIFT 7 +/* IS7816 Bit Fields */ +#define UART_IS7816_RXT_MASK 0x1u +#define UART_IS7816_RXT_SHIFT 0 +#define UART_IS7816_TXT_MASK 0x2u +#define UART_IS7816_TXT_SHIFT 1 +#define UART_IS7816_GTV_MASK 0x4u +#define UART_IS7816_GTV_SHIFT 2 +#define UART_IS7816_INITD_MASK 0x10u +#define UART_IS7816_INITD_SHIFT 4 +#define UART_IS7816_BWT_MASK 0x20u +#define UART_IS7816_BWT_SHIFT 5 +#define UART_IS7816_CWT_MASK 0x40u +#define UART_IS7816_CWT_SHIFT 6 +#define UART_IS7816_WT_MASK 0x80u +#define UART_IS7816_WT_SHIFT 7 +/* WP7816_T_TYPE0 Bit Fields */ +#define UART_WP7816_T_TYPE0_WI_MASK 0xFFu +#define UART_WP7816_T_TYPE0_WI_SHIFT 0 +#define UART_WP7816_T_TYPE0_WI(x) (((uint8_t)(((uint8_t)(x))<<UART_WP7816_T_TYPE0_WI_SHIFT))&UART_WP7816_T_TYPE0_WI_MASK) +/* WP7816_T_TYPE1 Bit Fields */ +#define UART_WP7816_T_TYPE1_BWI_MASK 0xFu +#define UART_WP7816_T_TYPE1_BWI_SHIFT 0 +#define UART_WP7816_T_TYPE1_BWI(x) (((uint8_t)(((uint8_t)(x))<<UART_WP7816_T_TYPE1_BWI_SHIFT))&UART_WP7816_T_TYPE1_BWI_MASK) +#define UART_WP7816_T_TYPE1_CWI_MASK 0xF0u +#define UART_WP7816_T_TYPE1_CWI_SHIFT 4 +#define UART_WP7816_T_TYPE1_CWI(x) (((uint8_t)(((uint8_t)(x))<<UART_WP7816_T_TYPE1_CWI_SHIFT))&UART_WP7816_T_TYPE1_CWI_MASK) +/* WN7816 Bit Fields */ +#define UART_WN7816_GTN_MASK 0xFFu +#define UART_WN7816_GTN_SHIFT 0 +#define UART_WN7816_GTN(x) (((uint8_t)(((uint8_t)(x))<<UART_WN7816_GTN_SHIFT))&UART_WN7816_GTN_MASK) +/* WF7816 Bit Fields */ +#define UART_WF7816_GTFD_MASK 0xFFu +#define UART_WF7816_GTFD_SHIFT 0 +#define UART_WF7816_GTFD(x) (((uint8_t)(((uint8_t)(x))<<UART_WF7816_GTFD_SHIFT))&UART_WF7816_GTFD_MASK) +/* ET7816 Bit Fields */ +#define UART_ET7816_RXTHRESHOLD_MASK 0xFu +#define UART_ET7816_RXTHRESHOLD_SHIFT 0 +#define UART_ET7816_RXTHRESHOLD(x) (((uint8_t)(((uint8_t)(x))<<UART_ET7816_RXTHRESHOLD_SHIFT))&UART_ET7816_RXTHRESHOLD_MASK) +#define UART_ET7816_TXTHRESHOLD_MASK 0xF0u +#define UART_ET7816_TXTHRESHOLD_SHIFT 4 +#define UART_ET7816_TXTHRESHOLD(x) (((uint8_t)(((uint8_t)(x))<<UART_ET7816_TXTHRESHOLD_SHIFT))&UART_ET7816_TXTHRESHOLD_MASK) +/* TL7816 Bit Fields */ +#define UART_TL7816_TLEN_MASK 0xFFu +#define UART_TL7816_TLEN_SHIFT 0 +#define UART_TL7816_TLEN(x) (((uint8_t)(((uint8_t)(x))<<UART_TL7816_TLEN_SHIFT))&UART_TL7816_TLEN_MASK) + +/*! + * @} + */ /* end of group UART_Register_Masks */ + + +/* UART - Peripheral instance base addresses */ +/** Peripheral UART0 base address */ +#define UART0_BASE (0x4006A000u) +/** Peripheral UART0 base pointer */ +#define UART0 ((UART_Type *)UART0_BASE) +#define UART0_BASE_PTR (UART0) +/** Peripheral UART1 base address */ +#define UART1_BASE (0x4006B000u) +/** Peripheral UART1 base pointer */ +#define UART1 ((UART_Type *)UART1_BASE) +#define UART1_BASE_PTR (UART1) +/** Peripheral UART2 base address */ +#define UART2_BASE (0x4006C000u) +/** Peripheral UART2 base pointer */ +#define UART2 ((UART_Type *)UART2_BASE) +#define UART2_BASE_PTR (UART2) +/** Peripheral UART3 base address */ +#define UART3_BASE (0x4006D000u) +/** Peripheral UART3 base pointer */ +#define UART3 ((UART_Type *)UART3_BASE) +#define UART3_BASE_PTR (UART3) +/** Peripheral UART4 base address */ +#define UART4_BASE (0x400EA000u) +/** Peripheral UART4 base pointer */ +#define UART4 ((UART_Type *)UART4_BASE) +#define UART4_BASE_PTR (UART4) +/** Peripheral UART5 base address */ +#define UART5_BASE (0x400EB000u) +/** Peripheral UART5 base pointer */ +#define UART5 ((UART_Type *)UART5_BASE) +#define UART5_BASE_PTR (UART5) +/** Array initializer of UART peripheral base pointers */ +#define UART_BASES { UART0, UART1, UART2, UART3, UART4, UART5 } + +/* ---------------------------------------------------------------------------- + -- UART - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup UART_Register_Accessor_Macros UART - Register accessor macros + * @{ + */ + + +/* UART - Register instance definitions */ +/* UART0 */ +#define UART0_BDH UART_BDH_REG(UART0) +#define UART0_BDL UART_BDL_REG(UART0) +#define UART0_C1 UART_C1_REG(UART0) +#define UART0_C2 UART_C2_REG(UART0) +#define UART0_S1 UART_S1_REG(UART0) +#define UART0_S2 UART_S2_REG(UART0) +#define UART0_C3 UART_C3_REG(UART0) +#define UART0_D UART_D_REG(UART0) +#define UART0_MA1 UART_MA1_REG(UART0) +#define UART0_MA2 UART_MA2_REG(UART0) +#define UART0_C4 UART_C4_REG(UART0) +#define UART0_C5 UART_C5_REG(UART0) +#define UART0_ED UART_ED_REG(UART0) +#define UART0_MODEM UART_MODEM_REG(UART0) +#define UART0_IR UART_IR_REG(UART0) +#define UART0_PFIFO UART_PFIFO_REG(UART0) +#define UART0_CFIFO UART_CFIFO_REG(UART0) +#define UART0_SFIFO UART_SFIFO_REG(UART0) +#define UART0_TWFIFO UART_TWFIFO_REG(UART0) +#define UART0_TCFIFO UART_TCFIFO_REG(UART0) +#define UART0_RWFIFO UART_RWFIFO_REG(UART0) +#define UART0_RCFIFO UART_RCFIFO_REG(UART0) +#define UART0_C7816 UART_C7816_REG(UART0) +#define UART0_IE7816 UART_IE7816_REG(UART0) +#define UART0_IS7816 UART_IS7816_REG(UART0) +#define UART0_WP7816T0 UART_WP7816_T_TYPE0_REG(UART0) +#define UART0_WP7816T1 UART_WP7816_T_TYPE1_REG(UART0) +#define UART0_WN7816 UART_WN7816_REG(UART0) +#define UART0_WF7816 UART_WF7816_REG(UART0) +#define UART0_ET7816 UART_ET7816_REG(UART0) +#define UART0_TL7816 UART_TL7816_REG(UART0) +/* UART1 */ +#define UART1_BDH UART_BDH_REG(UART1) +#define UART1_BDL UART_BDL_REG(UART1) +#define UART1_C1 UART_C1_REG(UART1) +#define UART1_C2 UART_C2_REG(UART1) +#define UART1_S1 UART_S1_REG(UART1) +#define UART1_S2 UART_S2_REG(UART1) +#define UART1_C3 UART_C3_REG(UART1) +#define UART1_D UART_D_REG(UART1) +#define UART1_MA1 UART_MA1_REG(UART1) +#define UART1_MA2 UART_MA2_REG(UART1) +#define UART1_C4 UART_C4_REG(UART1) +#define UART1_C5 UART_C5_REG(UART1) +#define UART1_ED UART_ED_REG(UART1) +#define UART1_MODEM UART_MODEM_REG(UART1) +#define UART1_IR UART_IR_REG(UART1) +#define UART1_PFIFO UART_PFIFO_REG(UART1) +#define UART1_CFIFO UART_CFIFO_REG(UART1) +#define UART1_SFIFO UART_SFIFO_REG(UART1) +#define UART1_TWFIFO UART_TWFIFO_REG(UART1) +#define UART1_TCFIFO UART_TCFIFO_REG(UART1) +#define UART1_RWFIFO UART_RWFIFO_REG(UART1) +#define UART1_RCFIFO UART_RCFIFO_REG(UART1) +/* UART2 */ +#define UART2_BDH UART_BDH_REG(UART2) +#define UART2_BDL UART_BDL_REG(UART2) +#define UART2_C1 UART_C1_REG(UART2) +#define UART2_C2 UART_C2_REG(UART2) +#define UART2_S1 UART_S1_REG(UART2) +#define UART2_S2 UART_S2_REG(UART2) +#define UART2_C3 UART_C3_REG(UART2) +#define UART2_D UART_D_REG(UART2) +#define UART2_MA1 UART_MA1_REG(UART2) +#define UART2_MA2 UART_MA2_REG(UART2) +#define UART2_C4 UART_C4_REG(UART2) +#define UART2_C5 UART_C5_REG(UART2) +#define UART2_ED UART_ED_REG(UART2) +#define UART2_MODEM UART_MODEM_REG(UART2) +#define UART2_IR UART_IR_REG(UART2) +#define UART2_PFIFO UART_PFIFO_REG(UART2) +#define UART2_CFIFO UART_CFIFO_REG(UART2) +#define UART2_SFIFO UART_SFIFO_REG(UART2) +#define UART2_TWFIFO UART_TWFIFO_REG(UART2) +#define UART2_TCFIFO UART_TCFIFO_REG(UART2) +#define UART2_RWFIFO UART_RWFIFO_REG(UART2) +#define UART2_RCFIFO UART_RCFIFO_REG(UART2) +/* UART3 */ +#define UART3_BDH UART_BDH_REG(UART3) +#define UART3_BDL UART_BDL_REG(UART3) +#define UART3_C1 UART_C1_REG(UART3) +#define UART3_C2 UART_C2_REG(UART3) +#define UART3_S1 UART_S1_REG(UART3) +#define UART3_S2 UART_S2_REG(UART3) +#define UART3_C3 UART_C3_REG(UART3) +#define UART3_D UART_D_REG(UART3) +#define UART3_MA1 UART_MA1_REG(UART3) +#define UART3_MA2 UART_MA2_REG(UART3) +#define UART3_C4 UART_C4_REG(UART3) +#define UART3_C5 UART_C5_REG(UART3) +#define UART3_ED UART_ED_REG(UART3) +#define UART3_MODEM UART_MODEM_REG(UART3) +#define UART3_IR UART_IR_REG(UART3) +#define UART3_PFIFO UART_PFIFO_REG(UART3) +#define UART3_CFIFO UART_CFIFO_REG(UART3) +#define UART3_SFIFO UART_SFIFO_REG(UART3) +#define UART3_TWFIFO UART_TWFIFO_REG(UART3) +#define UART3_TCFIFO UART_TCFIFO_REG(UART3) +#define UART3_RWFIFO UART_RWFIFO_REG(UART3) +#define UART3_RCFIFO UART_RCFIFO_REG(UART3) +/* UART4 */ +#define UART4_BDH UART_BDH_REG(UART4) +#define UART4_BDL UART_BDL_REG(UART4) +#define UART4_C1 UART_C1_REG(UART4) +#define UART4_C2 UART_C2_REG(UART4) +#define UART4_S1 UART_S1_REG(UART4) +#define UART4_S2 UART_S2_REG(UART4) +#define UART4_C3 UART_C3_REG(UART4) +#define UART4_D UART_D_REG(UART4) +#define UART4_MA1 UART_MA1_REG(UART4) +#define UART4_MA2 UART_MA2_REG(UART4) +#define UART4_C4 UART_C4_REG(UART4) +#define UART4_C5 UART_C5_REG(UART4) +#define UART4_ED UART_ED_REG(UART4) +#define UART4_MODEM UART_MODEM_REG(UART4) +#define UART4_IR UART_IR_REG(UART4) +#define UART4_PFIFO UART_PFIFO_REG(UART4) +#define UART4_CFIFO UART_CFIFO_REG(UART4) +#define UART4_SFIFO UART_SFIFO_REG(UART4) +#define UART4_TWFIFO UART_TWFIFO_REG(UART4) +#define UART4_TCFIFO UART_TCFIFO_REG(UART4) +#define UART4_RWFIFO UART_RWFIFO_REG(UART4) +#define UART4_RCFIFO UART_RCFIFO_REG(UART4) +/* UART5 */ +#define UART5_BDH UART_BDH_REG(UART5) +#define UART5_BDL UART_BDL_REG(UART5) +#define UART5_C1 UART_C1_REG(UART5) +#define UART5_C2 UART_C2_REG(UART5) +#define UART5_S1 UART_S1_REG(UART5) +#define UART5_S2 UART_S2_REG(UART5) +#define UART5_C3 UART_C3_REG(UART5) +#define UART5_D UART_D_REG(UART5) +#define UART5_MA1 UART_MA1_REG(UART5) +#define UART5_MA2 UART_MA2_REG(UART5) +#define UART5_C4 UART_C4_REG(UART5) +#define UART5_C5 UART_C5_REG(UART5) +#define UART5_ED UART_ED_REG(UART5) +#define UART5_MODEM UART_MODEM_REG(UART5) +#define UART5_IR UART_IR_REG(UART5) +#define UART5_PFIFO UART_PFIFO_REG(UART5) +#define UART5_CFIFO UART_CFIFO_REG(UART5) +#define UART5_SFIFO UART_SFIFO_REG(UART5) +#define UART5_TWFIFO UART_TWFIFO_REG(UART5) +#define UART5_TCFIFO UART_TCFIFO_REG(UART5) +#define UART5_RWFIFO UART_RWFIFO_REG(UART5) +#define UART5_RCFIFO UART_RCFIFO_REG(UART5) + +/*! + * @} + */ /* end of group UART_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group UART_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- USB Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USB_Peripheral_Access_Layer USB Peripheral Access Layer + * @{ + */ + +/** USB - Register Layout Typedef */ +typedef struct { + __I uint8_t PERID; /**< Peripheral ID register, offset: 0x0 */ + uint8_t RESERVED_0[3]; + __I uint8_t IDCOMP; /**< Peripheral ID Complement register, offset: 0x4 */ + uint8_t RESERVED_1[3]; + __I uint8_t REV; /**< Peripheral Revision register, offset: 0x8 */ + uint8_t RESERVED_2[3]; + __I uint8_t ADDINFO; /**< Peripheral Additional Info register, offset: 0xC */ + uint8_t RESERVED_3[3]; + __IO uint8_t OTGISTAT; /**< OTG Interrupt Status register, offset: 0x10 */ + uint8_t RESERVED_4[3]; + __IO uint8_t OTGICR; /**< OTG Interrupt Control register, offset: 0x14 */ + uint8_t RESERVED_5[3]; + __IO uint8_t OTGSTAT; /**< OTG Status register, offset: 0x18 */ + uint8_t RESERVED_6[3]; + __IO uint8_t OTGCTL; /**< OTG Control register, offset: 0x1C */ + uint8_t RESERVED_7[99]; + __IO uint8_t ISTAT; /**< Interrupt Status register, offset: 0x80 */ + uint8_t RESERVED_8[3]; + __IO uint8_t INTEN; /**< Interrupt Enable register, offset: 0x84 */ + uint8_t RESERVED_9[3]; + __IO uint8_t ERRSTAT; /**< Error Interrupt Status register, offset: 0x88 */ + uint8_t RESERVED_10[3]; + __IO uint8_t ERREN; /**< Error Interrupt Enable register, offset: 0x8C */ + uint8_t RESERVED_11[3]; + __I uint8_t STAT; /**< Status register, offset: 0x90 */ + uint8_t RESERVED_12[3]; + __IO uint8_t CTL; /**< Control register, offset: 0x94 */ + uint8_t RESERVED_13[3]; + __IO uint8_t ADDR; /**< Address register, offset: 0x98 */ + uint8_t RESERVED_14[3]; + __IO uint8_t BDTPAGE1; /**< BDT Page register 1, offset: 0x9C */ + uint8_t RESERVED_15[3]; + __IO uint8_t FRMNUML; /**< Frame Number register Low, offset: 0xA0 */ + uint8_t RESERVED_16[3]; + __IO uint8_t FRMNUMH; /**< Frame Number register High, offset: 0xA4 */ + uint8_t RESERVED_17[3]; + __IO uint8_t TOKEN; /**< Token register, offset: 0xA8 */ + uint8_t RESERVED_18[3]; + __IO uint8_t SOFTHLD; /**< SOF Threshold register, offset: 0xAC */ + uint8_t RESERVED_19[3]; + __IO uint8_t BDTPAGE2; /**< BDT Page Register 2, offset: 0xB0 */ + uint8_t RESERVED_20[3]; + __IO uint8_t BDTPAGE3; /**< BDT Page Register 3, offset: 0xB4 */ + uint8_t RESERVED_21[11]; + struct { /* offset: 0xC0, array step: 0x4 */ + __IO uint8_t ENDPT; /**< Endpoint Control register, array offset: 0xC0, array step: 0x4 */ + uint8_t RESERVED_0[3]; + } ENDPOINT[16]; + __IO uint8_t USBCTRL; /**< USB Control register, offset: 0x100 */ + uint8_t RESERVED_22[3]; + __I uint8_t OBSERVE; /**< USB OTG Observe register, offset: 0x104 */ + uint8_t RESERVED_23[3]; + __IO uint8_t CONTROL; /**< USB OTG Control register, offset: 0x108 */ + uint8_t RESERVED_24[3]; + __IO uint8_t USBTRC0; /**< USB Transceiver Control register 0, offset: 0x10C */ + uint8_t RESERVED_25[7]; + __IO uint8_t USBFRMADJUST; /**< Frame Adjust Register, offset: 0x114 */ +} USB_Type, *USB_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- USB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USB_Register_Accessor_Macros USB - Register accessor macros + * @{ + */ + + +/* USB - Register accessors */ +#define USB_PERID_REG(base) ((base)->PERID) +#define USB_IDCOMP_REG(base) ((base)->IDCOMP) +#define USB_REV_REG(base) ((base)->REV) +#define USB_ADDINFO_REG(base) ((base)->ADDINFO) +#define USB_OTGISTAT_REG(base) ((base)->OTGISTAT) +#define USB_OTGICR_REG(base) ((base)->OTGICR) +#define USB_OTGSTAT_REG(base) ((base)->OTGSTAT) +#define USB_OTGCTL_REG(base) ((base)->OTGCTL) +#define USB_ISTAT_REG(base) ((base)->ISTAT) +#define USB_INTEN_REG(base) ((base)->INTEN) +#define USB_ERRSTAT_REG(base) ((base)->ERRSTAT) +#define USB_ERREN_REG(base) ((base)->ERREN) +#define USB_STAT_REG(base) ((base)->STAT) +#define USB_CTL_REG(base) ((base)->CTL) +#define USB_ADDR_REG(base) ((base)->ADDR) +#define USB_BDTPAGE1_REG(base) ((base)->BDTPAGE1) +#define USB_FRMNUML_REG(base) ((base)->FRMNUML) +#define USB_FRMNUMH_REG(base) ((base)->FRMNUMH) +#define USB_TOKEN_REG(base) ((base)->TOKEN) +#define USB_SOFTHLD_REG(base) ((base)->SOFTHLD) +#define USB_BDTPAGE2_REG(base) ((base)->BDTPAGE2) +#define USB_BDTPAGE3_REG(base) ((base)->BDTPAGE3) +#define USB_ENDPT_REG(base,index) ((base)->ENDPOINT[index].ENDPT) +#define USB_USBCTRL_REG(base) ((base)->USBCTRL) +#define USB_OBSERVE_REG(base) ((base)->OBSERVE) +#define USB_CONTROL_REG(base) ((base)->CONTROL) +#define USB_USBTRC0_REG(base) ((base)->USBTRC0) +#define USB_USBFRMADJUST_REG(base) ((base)->USBFRMADJUST) + +/*! + * @} + */ /* end of group USB_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- USB Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USB_Register_Masks USB Register Masks + * @{ + */ + +/* PERID Bit Fields */ +#define USB_PERID_ID_MASK 0x3Fu +#define USB_PERID_ID_SHIFT 0 +#define USB_PERID_ID(x) (((uint8_t)(((uint8_t)(x))<<USB_PERID_ID_SHIFT))&USB_PERID_ID_MASK) +/* IDCOMP Bit Fields */ +#define USB_IDCOMP_NID_MASK 0x3Fu +#define USB_IDCOMP_NID_SHIFT 0 +#define USB_IDCOMP_NID(x) (((uint8_t)(((uint8_t)(x))<<USB_IDCOMP_NID_SHIFT))&USB_IDCOMP_NID_MASK) +/* REV Bit Fields */ +#define USB_REV_REV_MASK 0xFFu +#define USB_REV_REV_SHIFT 0 +#define USB_REV_REV(x) (((uint8_t)(((uint8_t)(x))<<USB_REV_REV_SHIFT))&USB_REV_REV_MASK) +/* ADDINFO Bit Fields */ +#define USB_ADDINFO_IEHOST_MASK 0x1u +#define USB_ADDINFO_IEHOST_SHIFT 0 +#define USB_ADDINFO_IRQNUM_MASK 0xF8u +#define USB_ADDINFO_IRQNUM_SHIFT 3 +#define USB_ADDINFO_IRQNUM(x) (((uint8_t)(((uint8_t)(x))<<USB_ADDINFO_IRQNUM_SHIFT))&USB_ADDINFO_IRQNUM_MASK) +/* OTGISTAT Bit Fields */ +#define USB_OTGISTAT_AVBUSCHG_MASK 0x1u +#define USB_OTGISTAT_AVBUSCHG_SHIFT 0 +#define USB_OTGISTAT_B_SESS_CHG_MASK 0x4u +#define USB_OTGISTAT_B_SESS_CHG_SHIFT 2 +#define USB_OTGISTAT_SESSVLDCHG_MASK 0x8u +#define USB_OTGISTAT_SESSVLDCHG_SHIFT 3 +#define USB_OTGISTAT_LINE_STATE_CHG_MASK 0x20u +#define USB_OTGISTAT_LINE_STATE_CHG_SHIFT 5 +#define USB_OTGISTAT_ONEMSEC_MASK 0x40u +#define USB_OTGISTAT_ONEMSEC_SHIFT 6 +#define USB_OTGISTAT_IDCHG_MASK 0x80u +#define USB_OTGISTAT_IDCHG_SHIFT 7 +/* OTGICR Bit Fields */ +#define USB_OTGICR_AVBUSEN_MASK 0x1u +#define USB_OTGICR_AVBUSEN_SHIFT 0 +#define USB_OTGICR_BSESSEN_MASK 0x4u +#define USB_OTGICR_BSESSEN_SHIFT 2 +#define USB_OTGICR_SESSVLDEN_MASK 0x8u +#define USB_OTGICR_SESSVLDEN_SHIFT 3 +#define USB_OTGICR_LINESTATEEN_MASK 0x20u +#define USB_OTGICR_LINESTATEEN_SHIFT 5 +#define USB_OTGICR_ONEMSECEN_MASK 0x40u +#define USB_OTGICR_ONEMSECEN_SHIFT 6 +#define USB_OTGICR_IDEN_MASK 0x80u +#define USB_OTGICR_IDEN_SHIFT 7 +/* OTGSTAT Bit Fields */ +#define USB_OTGSTAT_AVBUSVLD_MASK 0x1u +#define USB_OTGSTAT_AVBUSVLD_SHIFT 0 +#define USB_OTGSTAT_BSESSEND_MASK 0x4u +#define USB_OTGSTAT_BSESSEND_SHIFT 2 +#define USB_OTGSTAT_SESS_VLD_MASK 0x8u +#define USB_OTGSTAT_SESS_VLD_SHIFT 3 +#define USB_OTGSTAT_LINESTATESTABLE_MASK 0x20u +#define USB_OTGSTAT_LINESTATESTABLE_SHIFT 5 +#define USB_OTGSTAT_ONEMSECEN_MASK 0x40u +#define USB_OTGSTAT_ONEMSECEN_SHIFT 6 +#define USB_OTGSTAT_ID_MASK 0x80u +#define USB_OTGSTAT_ID_SHIFT 7 +/* OTGCTL Bit Fields */ +#define USB_OTGCTL_OTGEN_MASK 0x4u +#define USB_OTGCTL_OTGEN_SHIFT 2 +#define USB_OTGCTL_DMLOW_MASK 0x10u +#define USB_OTGCTL_DMLOW_SHIFT 4 +#define USB_OTGCTL_DPLOW_MASK 0x20u +#define USB_OTGCTL_DPLOW_SHIFT 5 +#define USB_OTGCTL_DPHIGH_MASK 0x80u +#define USB_OTGCTL_DPHIGH_SHIFT 7 +/* ISTAT Bit Fields */ +#define USB_ISTAT_USBRST_MASK 0x1u +#define USB_ISTAT_USBRST_SHIFT 0 +#define USB_ISTAT_ERROR_MASK 0x2u +#define USB_ISTAT_ERROR_SHIFT 1 +#define USB_ISTAT_SOFTOK_MASK 0x4u +#define USB_ISTAT_SOFTOK_SHIFT 2 +#define USB_ISTAT_TOKDNE_MASK 0x8u +#define USB_ISTAT_TOKDNE_SHIFT 3 +#define USB_ISTAT_SLEEP_MASK 0x10u +#define USB_ISTAT_SLEEP_SHIFT 4 +#define USB_ISTAT_RESUME_MASK 0x20u +#define USB_ISTAT_RESUME_SHIFT 5 +#define USB_ISTAT_ATTACH_MASK 0x40u +#define USB_ISTAT_ATTACH_SHIFT 6 +#define USB_ISTAT_STALL_MASK 0x80u +#define USB_ISTAT_STALL_SHIFT 7 +/* INTEN Bit Fields */ +#define USB_INTEN_USBRSTEN_MASK 0x1u +#define USB_INTEN_USBRSTEN_SHIFT 0 +#define USB_INTEN_ERROREN_MASK 0x2u +#define USB_INTEN_ERROREN_SHIFT 1 +#define USB_INTEN_SOFTOKEN_MASK 0x4u +#define USB_INTEN_SOFTOKEN_SHIFT 2 +#define USB_INTEN_TOKDNEEN_MASK 0x8u +#define USB_INTEN_TOKDNEEN_SHIFT 3 +#define USB_INTEN_SLEEPEN_MASK 0x10u +#define USB_INTEN_SLEEPEN_SHIFT 4 +#define USB_INTEN_RESUMEEN_MASK 0x20u +#define USB_INTEN_RESUMEEN_SHIFT 5 +#define USB_INTEN_ATTACHEN_MASK 0x40u +#define USB_INTEN_ATTACHEN_SHIFT 6 +#define USB_INTEN_STALLEN_MASK 0x80u +#define USB_INTEN_STALLEN_SHIFT 7 +/* ERRSTAT Bit Fields */ +#define USB_ERRSTAT_PIDERR_MASK 0x1u +#define USB_ERRSTAT_PIDERR_SHIFT 0 +#define USB_ERRSTAT_CRC5EOF_MASK 0x2u +#define USB_ERRSTAT_CRC5EOF_SHIFT 1 +#define USB_ERRSTAT_CRC16_MASK 0x4u +#define USB_ERRSTAT_CRC16_SHIFT 2 +#define USB_ERRSTAT_DFN8_MASK 0x8u +#define USB_ERRSTAT_DFN8_SHIFT 3 +#define USB_ERRSTAT_BTOERR_MASK 0x10u +#define USB_ERRSTAT_BTOERR_SHIFT 4 +#define USB_ERRSTAT_DMAERR_MASK 0x20u +#define USB_ERRSTAT_DMAERR_SHIFT 5 +#define USB_ERRSTAT_BTSERR_MASK 0x80u +#define USB_ERRSTAT_BTSERR_SHIFT 7 +/* ERREN Bit Fields */ +#define USB_ERREN_PIDERREN_MASK 0x1u +#define USB_ERREN_PIDERREN_SHIFT 0 +#define USB_ERREN_CRC5EOFEN_MASK 0x2u +#define USB_ERREN_CRC5EOFEN_SHIFT 1 +#define USB_ERREN_CRC16EN_MASK 0x4u +#define USB_ERREN_CRC16EN_SHIFT 2 +#define USB_ERREN_DFN8EN_MASK 0x8u +#define USB_ERREN_DFN8EN_SHIFT 3 +#define USB_ERREN_BTOERREN_MASK 0x10u +#define USB_ERREN_BTOERREN_SHIFT 4 +#define USB_ERREN_DMAERREN_MASK 0x20u +#define USB_ERREN_DMAERREN_SHIFT 5 +#define USB_ERREN_BTSERREN_MASK 0x80u +#define USB_ERREN_BTSERREN_SHIFT 7 +/* STAT Bit Fields */ +#define USB_STAT_ODD_MASK 0x4u +#define USB_STAT_ODD_SHIFT 2 +#define USB_STAT_TX_MASK 0x8u +#define USB_STAT_TX_SHIFT 3 +#define USB_STAT_ENDP_MASK 0xF0u +#define USB_STAT_ENDP_SHIFT 4 +#define USB_STAT_ENDP(x) (((uint8_t)(((uint8_t)(x))<<USB_STAT_ENDP_SHIFT))&USB_STAT_ENDP_MASK) +/* CTL Bit Fields */ +#define USB_CTL_USBENSOFEN_MASK 0x1u +#define USB_CTL_USBENSOFEN_SHIFT 0 +#define USB_CTL_ODDRST_MASK 0x2u +#define USB_CTL_ODDRST_SHIFT 1 +#define USB_CTL_RESUME_MASK 0x4u +#define USB_CTL_RESUME_SHIFT 2 +#define USB_CTL_HOSTMODEEN_MASK 0x8u +#define USB_CTL_HOSTMODEEN_SHIFT 3 +#define USB_CTL_RESET_MASK 0x10u +#define USB_CTL_RESET_SHIFT 4 +#define USB_CTL_TXSUSPENDTOKENBUSY_MASK 0x20u +#define USB_CTL_TXSUSPENDTOKENBUSY_SHIFT 5 +#define USB_CTL_SE0_MASK 0x40u +#define USB_CTL_SE0_SHIFT 6 +#define USB_CTL_JSTATE_MASK 0x80u +#define USB_CTL_JSTATE_SHIFT 7 +/* ADDR Bit Fields */ +#define USB_ADDR_ADDR_MASK 0x7Fu +#define USB_ADDR_ADDR_SHIFT 0 +#define USB_ADDR_ADDR(x) (((uint8_t)(((uint8_t)(x))<<USB_ADDR_ADDR_SHIFT))&USB_ADDR_ADDR_MASK) +#define USB_ADDR_LSEN_MASK 0x80u +#define USB_ADDR_LSEN_SHIFT 7 +/* BDTPAGE1 Bit Fields */ +#define USB_BDTPAGE1_BDTBA_MASK 0xFEu +#define USB_BDTPAGE1_BDTBA_SHIFT 1 +#define USB_BDTPAGE1_BDTBA(x) (((uint8_t)(((uint8_t)(x))<<USB_BDTPAGE1_BDTBA_SHIFT))&USB_BDTPAGE1_BDTBA_MASK) +/* FRMNUML Bit Fields */ +#define USB_FRMNUML_FRM_MASK 0xFFu +#define USB_FRMNUML_FRM_SHIFT 0 +#define USB_FRMNUML_FRM(x) (((uint8_t)(((uint8_t)(x))<<USB_FRMNUML_FRM_SHIFT))&USB_FRMNUML_FRM_MASK) +/* FRMNUMH Bit Fields */ +#define USB_FRMNUMH_FRM_MASK 0x7u +#define USB_FRMNUMH_FRM_SHIFT 0 +#define USB_FRMNUMH_FRM(x) (((uint8_t)(((uint8_t)(x))<<USB_FRMNUMH_FRM_SHIFT))&USB_FRMNUMH_FRM_MASK) +/* TOKEN Bit Fields */ +#define USB_TOKEN_TOKENENDPT_MASK 0xFu +#define USB_TOKEN_TOKENENDPT_SHIFT 0 +#define USB_TOKEN_TOKENENDPT(x) (((uint8_t)(((uint8_t)(x))<<USB_TOKEN_TOKENENDPT_SHIFT))&USB_TOKEN_TOKENENDPT_MASK) +#define USB_TOKEN_TOKENPID_MASK 0xF0u +#define USB_TOKEN_TOKENPID_SHIFT 4 +#define USB_TOKEN_TOKENPID(x) (((uint8_t)(((uint8_t)(x))<<USB_TOKEN_TOKENPID_SHIFT))&USB_TOKEN_TOKENPID_MASK) +/* SOFTHLD Bit Fields */ +#define USB_SOFTHLD_CNT_MASK 0xFFu +#define USB_SOFTHLD_CNT_SHIFT 0 +#define USB_SOFTHLD_CNT(x) (((uint8_t)(((uint8_t)(x))<<USB_SOFTHLD_CNT_SHIFT))&USB_SOFTHLD_CNT_MASK) +/* BDTPAGE2 Bit Fields */ +#define USB_BDTPAGE2_BDTBA_MASK 0xFFu +#define USB_BDTPAGE2_BDTBA_SHIFT 0 +#define USB_BDTPAGE2_BDTBA(x) (((uint8_t)(((uint8_t)(x))<<USB_BDTPAGE2_BDTBA_SHIFT))&USB_BDTPAGE2_BDTBA_MASK) +/* BDTPAGE3 Bit Fields */ +#define USB_BDTPAGE3_BDTBA_MASK 0xFFu +#define USB_BDTPAGE3_BDTBA_SHIFT 0 +#define USB_BDTPAGE3_BDTBA(x) (((uint8_t)(((uint8_t)(x))<<USB_BDTPAGE3_BDTBA_SHIFT))&USB_BDTPAGE3_BDTBA_MASK) +/* ENDPT Bit Fields */ +#define USB_ENDPT_EPHSHK_MASK 0x1u +#define USB_ENDPT_EPHSHK_SHIFT 0 +#define USB_ENDPT_EPSTALL_MASK 0x2u +#define USB_ENDPT_EPSTALL_SHIFT 1 +#define USB_ENDPT_EPTXEN_MASK 0x4u +#define USB_ENDPT_EPTXEN_SHIFT 2 +#define USB_ENDPT_EPRXEN_MASK 0x8u +#define USB_ENDPT_EPRXEN_SHIFT 3 +#define USB_ENDPT_EPCTLDIS_MASK 0x10u +#define USB_ENDPT_EPCTLDIS_SHIFT 4 +#define USB_ENDPT_RETRYDIS_MASK 0x40u +#define USB_ENDPT_RETRYDIS_SHIFT 6 +#define USB_ENDPT_HOSTWOHUB_MASK 0x80u +#define USB_ENDPT_HOSTWOHUB_SHIFT 7 +/* USBCTRL Bit Fields */ +#define USB_USBCTRL_PDE_MASK 0x40u +#define USB_USBCTRL_PDE_SHIFT 6 +#define USB_USBCTRL_SUSP_MASK 0x80u +#define USB_USBCTRL_SUSP_SHIFT 7 +/* OBSERVE Bit Fields */ +#define USB_OBSERVE_DMPD_MASK 0x10u +#define USB_OBSERVE_DMPD_SHIFT 4 +#define USB_OBSERVE_DPPD_MASK 0x40u +#define USB_OBSERVE_DPPD_SHIFT 6 +#define USB_OBSERVE_DPPU_MASK 0x80u +#define USB_OBSERVE_DPPU_SHIFT 7 +/* CONTROL Bit Fields */ +#define USB_CONTROL_DPPULLUPNONOTG_MASK 0x10u +#define USB_CONTROL_DPPULLUPNONOTG_SHIFT 4 +/* USBTRC0 Bit Fields */ +#define USB_USBTRC0_USB_RESUME_INT_MASK 0x1u +#define USB_USBTRC0_USB_RESUME_INT_SHIFT 0 +#define USB_USBTRC0_SYNC_DET_MASK 0x2u +#define USB_USBTRC0_SYNC_DET_SHIFT 1 +#define USB_USBTRC0_USBRESMEN_MASK 0x20u +#define USB_USBTRC0_USBRESMEN_SHIFT 5 +#define USB_USBTRC0_USBRESET_MASK 0x80u +#define USB_USBTRC0_USBRESET_SHIFT 7 +/* USBFRMADJUST Bit Fields */ +#define USB_USBFRMADJUST_ADJ_MASK 0xFFu +#define USB_USBFRMADJUST_ADJ_SHIFT 0 +#define USB_USBFRMADJUST_ADJ(x) (((uint8_t)(((uint8_t)(x))<<USB_USBFRMADJUST_ADJ_SHIFT))&USB_USBFRMADJUST_ADJ_MASK) + +/*! + * @} + */ /* end of group USB_Register_Masks */ + + +/* USB - Peripheral instance base addresses */ +/** Peripheral USB0 base address */ +#define USB0_BASE (0x40072000u) +/** Peripheral USB0 base pointer */ +#define USB0 ((USB_Type *)USB0_BASE) +#define USB0_BASE_PTR (USB0) +/** Array initializer of USB peripheral base pointers */ +#define USB_BASES { USB0 } + +/* ---------------------------------------------------------------------------- + -- USB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USB_Register_Accessor_Macros USB - Register accessor macros + * @{ + */ + + +/* USB - Register instance definitions */ +/* USB0 */ +#define USB0_PERID USB_PERID_REG(USB0) +#define USB0_IDCOMP USB_IDCOMP_REG(USB0) +#define USB0_REV USB_REV_REG(USB0) +#define USB0_ADDINFO USB_ADDINFO_REG(USB0) +#define USB0_OTGISTAT USB_OTGISTAT_REG(USB0) +#define USB0_OTGICR USB_OTGICR_REG(USB0) +#define USB0_OTGSTAT USB_OTGSTAT_REG(USB0) +#define USB0_OTGCTL USB_OTGCTL_REG(USB0) +#define USB0_ISTAT USB_ISTAT_REG(USB0) +#define USB0_INTEN USB_INTEN_REG(USB0) +#define USB0_ERRSTAT USB_ERRSTAT_REG(USB0) +#define USB0_ERREN USB_ERREN_REG(USB0) +#define USB0_STAT USB_STAT_REG(USB0) +#define USB0_CTL USB_CTL_REG(USB0) +#define USB0_ADDR USB_ADDR_REG(USB0) +#define USB0_BDTPAGE1 USB_BDTPAGE1_REG(USB0) +#define USB0_FRMNUML USB_FRMNUML_REG(USB0) +#define USB0_FRMNUMH USB_FRMNUMH_REG(USB0) +#define USB0_TOKEN USB_TOKEN_REG(USB0) +#define USB0_SOFTHLD USB_SOFTHLD_REG(USB0) +#define USB0_BDTPAGE2 USB_BDTPAGE2_REG(USB0) +#define USB0_BDTPAGE3 USB_BDTPAGE3_REG(USB0) +#define USB0_ENDPT0 USB_ENDPT_REG(USB0,0) +#define USB0_ENDPT1 USB_ENDPT_REG(USB0,1) +#define USB0_ENDPT2 USB_ENDPT_REG(USB0,2) +#define USB0_ENDPT3 USB_ENDPT_REG(USB0,3) +#define USB0_ENDPT4 USB_ENDPT_REG(USB0,4) +#define USB0_ENDPT5 USB_ENDPT_REG(USB0,5) +#define USB0_ENDPT6 USB_ENDPT_REG(USB0,6) +#define USB0_ENDPT7 USB_ENDPT_REG(USB0,7) +#define USB0_ENDPT8 USB_ENDPT_REG(USB0,8) +#define USB0_ENDPT9 USB_ENDPT_REG(USB0,9) +#define USB0_ENDPT10 USB_ENDPT_REG(USB0,10) +#define USB0_ENDPT11 USB_ENDPT_REG(USB0,11) +#define USB0_ENDPT12 USB_ENDPT_REG(USB0,12) +#define USB0_ENDPT13 USB_ENDPT_REG(USB0,13) +#define USB0_ENDPT14 USB_ENDPT_REG(USB0,14) +#define USB0_ENDPT15 USB_ENDPT_REG(USB0,15) +#define USB0_USBCTRL USB_USBCTRL_REG(USB0) +#define USB0_OBSERVE USB_OBSERVE_REG(USB0) +#define USB0_CONTROL USB_CONTROL_REG(USB0) +#define USB0_USBTRC0 USB_USBTRC0_REG(USB0) +#define USB0_USBFRMADJUST USB_USBFRMADJUST_REG(USB0) + +/* USB - Register array accessors */ +#define USB0_ENDPT(index) USB_ENDPT_REG(USB0,index) + +/*! + * @} + */ /* end of group USB_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group USB_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- USBDCD Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USBDCD_Peripheral_Access_Layer USBDCD Peripheral Access Layer + * @{ + */ + +/** USBDCD - Register Layout Typedef */ +typedef struct { + __IO uint32_t CONTROL; /**< Control register, offset: 0x0 */ + __IO uint32_t CLOCK; /**< Clock register, offset: 0x4 */ + __I uint32_t STATUS; /**< Status register, offset: 0x8 */ + uint8_t RESERVED_0[4]; + __IO uint32_t TIMER0; /**< TIMER0 register, offset: 0x10 */ + __IO uint32_t TIMER1; /**< TIMER1 register, offset: 0x14 */ + union { /* offset: 0x18 */ + __IO uint32_t TIMER2_BC11; /**< TIMER2_BC11 register, offset: 0x18 */ + __IO uint32_t TIMER2_BC12; /**< TIMER2_BC12 register, offset: 0x18 */ + }; +} USBDCD_Type, *USBDCD_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- USBDCD - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USBDCD_Register_Accessor_Macros USBDCD - Register accessor macros + * @{ + */ + + +/* USBDCD - Register accessors */ +#define USBDCD_CONTROL_REG(base) ((base)->CONTROL) +#define USBDCD_CLOCK_REG(base) ((base)->CLOCK) +#define USBDCD_STATUS_REG(base) ((base)->STATUS) +#define USBDCD_TIMER0_REG(base) ((base)->TIMER0) +#define USBDCD_TIMER1_REG(base) ((base)->TIMER1) +#define USBDCD_TIMER2_BC11_REG(base) ((base)->TIMER2_BC11) +#define USBDCD_TIMER2_BC12_REG(base) ((base)->TIMER2_BC12) + +/*! + * @} + */ /* end of group USBDCD_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- USBDCD Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USBDCD_Register_Masks USBDCD Register Masks + * @{ + */ + +/* CONTROL Bit Fields */ +#define USBDCD_CONTROL_IACK_MASK 0x1u +#define USBDCD_CONTROL_IACK_SHIFT 0 +#define USBDCD_CONTROL_IF_MASK 0x100u +#define USBDCD_CONTROL_IF_SHIFT 8 +#define USBDCD_CONTROL_IE_MASK 0x10000u +#define USBDCD_CONTROL_IE_SHIFT 16 +#define USBDCD_CONTROL_BC12_MASK 0x20000u +#define USBDCD_CONTROL_BC12_SHIFT 17 +#define USBDCD_CONTROL_START_MASK 0x1000000u +#define USBDCD_CONTROL_START_SHIFT 24 +#define USBDCD_CONTROL_SR_MASK 0x2000000u +#define USBDCD_CONTROL_SR_SHIFT 25 +/* CLOCK Bit Fields */ +#define USBDCD_CLOCK_CLOCK_UNIT_MASK 0x1u +#define USBDCD_CLOCK_CLOCK_UNIT_SHIFT 0 +#define USBDCD_CLOCK_CLOCK_SPEED_MASK 0xFFCu +#define USBDCD_CLOCK_CLOCK_SPEED_SHIFT 2 +#define USBDCD_CLOCK_CLOCK_SPEED(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_CLOCK_CLOCK_SPEED_SHIFT))&USBDCD_CLOCK_CLOCK_SPEED_MASK) +/* STATUS Bit Fields */ +#define USBDCD_STATUS_SEQ_RES_MASK 0x30000u +#define USBDCD_STATUS_SEQ_RES_SHIFT 16 +#define USBDCD_STATUS_SEQ_RES(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_STATUS_SEQ_RES_SHIFT))&USBDCD_STATUS_SEQ_RES_MASK) +#define USBDCD_STATUS_SEQ_STAT_MASK 0xC0000u +#define USBDCD_STATUS_SEQ_STAT_SHIFT 18 +#define USBDCD_STATUS_SEQ_STAT(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_STATUS_SEQ_STAT_SHIFT))&USBDCD_STATUS_SEQ_STAT_MASK) +#define USBDCD_STATUS_ERR_MASK 0x100000u +#define USBDCD_STATUS_ERR_SHIFT 20 +#define USBDCD_STATUS_TO_MASK 0x200000u +#define USBDCD_STATUS_TO_SHIFT 21 +#define USBDCD_STATUS_ACTIVE_MASK 0x400000u +#define USBDCD_STATUS_ACTIVE_SHIFT 22 +/* TIMER0 Bit Fields */ +#define USBDCD_TIMER0_TUNITCON_MASK 0xFFFu +#define USBDCD_TIMER0_TUNITCON_SHIFT 0 +#define USBDCD_TIMER0_TUNITCON(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER0_TUNITCON_SHIFT))&USBDCD_TIMER0_TUNITCON_MASK) +#define USBDCD_TIMER0_TSEQ_INIT_MASK 0x3FF0000u +#define USBDCD_TIMER0_TSEQ_INIT_SHIFT 16 +#define USBDCD_TIMER0_TSEQ_INIT(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER0_TSEQ_INIT_SHIFT))&USBDCD_TIMER0_TSEQ_INIT_MASK) +/* TIMER1 Bit Fields */ +#define USBDCD_TIMER1_TVDPSRC_ON_MASK 0x3FFu +#define USBDCD_TIMER1_TVDPSRC_ON_SHIFT 0 +#define USBDCD_TIMER1_TVDPSRC_ON(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER1_TVDPSRC_ON_SHIFT))&USBDCD_TIMER1_TVDPSRC_ON_MASK) +#define USBDCD_TIMER1_TDCD_DBNC_MASK 0x3FF0000u +#define USBDCD_TIMER1_TDCD_DBNC_SHIFT 16 +#define USBDCD_TIMER1_TDCD_DBNC(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER1_TDCD_DBNC_SHIFT))&USBDCD_TIMER1_TDCD_DBNC_MASK) +/* TIMER2_BC11 Bit Fields */ +#define USBDCD_TIMER2_BC11_CHECK_DM_MASK 0xFu +#define USBDCD_TIMER2_BC11_CHECK_DM_SHIFT 0 +#define USBDCD_TIMER2_BC11_CHECK_DM(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER2_BC11_CHECK_DM_SHIFT))&USBDCD_TIMER2_BC11_CHECK_DM_MASK) +#define USBDCD_TIMER2_BC11_TVDPSRC_CON_MASK 0x3FF0000u +#define USBDCD_TIMER2_BC11_TVDPSRC_CON_SHIFT 16 +#define USBDCD_TIMER2_BC11_TVDPSRC_CON(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER2_BC11_TVDPSRC_CON_SHIFT))&USBDCD_TIMER2_BC11_TVDPSRC_CON_MASK) +/* TIMER2_BC12 Bit Fields */ +#define USBDCD_TIMER2_BC12_TVDMSRC_ON_MASK 0x3FFu +#define USBDCD_TIMER2_BC12_TVDMSRC_ON_SHIFT 0 +#define USBDCD_TIMER2_BC12_TVDMSRC_ON(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER2_BC12_TVDMSRC_ON_SHIFT))&USBDCD_TIMER2_BC12_TVDMSRC_ON_MASK) +#define USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_MASK 0x3FF0000u +#define USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_SHIFT 16 +#define USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_SHIFT))&USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_MASK) + +/*! + * @} + */ /* end of group USBDCD_Register_Masks */ + + +/* USBDCD - Peripheral instance base addresses */ +/** Peripheral USBDCD base address */ +#define USBDCD_BASE (0x40035000u) +/** Peripheral USBDCD base pointer */ +#define USBDCD ((USBDCD_Type *)USBDCD_BASE) +#define USBDCD_BASE_PTR (USBDCD) +/** Array initializer of USBDCD peripheral base pointers */ +#define USBDCD_BASES { USBDCD } + +/* ---------------------------------------------------------------------------- + -- USBDCD - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USBDCD_Register_Accessor_Macros USBDCD - Register accessor macros + * @{ + */ + + +/* USBDCD - Register instance definitions */ +/* USBDCD */ +#define USBDCD_CONTROL USBDCD_CONTROL_REG(USBDCD) +#define USBDCD_CLOCK USBDCD_CLOCK_REG(USBDCD) +#define USBDCD_STATUS USBDCD_STATUS_REG(USBDCD) +#define USBDCD_TIMER0 USBDCD_TIMER0_REG(USBDCD) +#define USBDCD_TIMER1 USBDCD_TIMER1_REG(USBDCD) +#define USBDCD_TIMER2_BC11 USBDCD_TIMER2_BC11_REG(USBDCD) +#define USBDCD_TIMER2_BC12 USBDCD_TIMER2_BC12_REG(USBDCD) + +/*! + * @} + */ /* end of group USBDCD_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group USBDCD_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- VREF Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup VREF_Peripheral_Access_Layer VREF Peripheral Access Layer + * @{ + */ + +/** VREF - Register Layout Typedef */ +typedef struct { + __IO uint8_t TRM; /**< VREF Trim Register, offset: 0x0 */ + __IO uint8_t SC; /**< VREF Status and Control Register, offset: 0x1 */ +} VREF_Type, *VREF_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- VREF - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup VREF_Register_Accessor_Macros VREF - Register accessor macros + * @{ + */ + + +/* VREF - Register accessors */ +#define VREF_TRM_REG(base) ((base)->TRM) +#define VREF_SC_REG(base) ((base)->SC) + +/*! + * @} + */ /* end of group VREF_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- VREF Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup VREF_Register_Masks VREF Register Masks + * @{ + */ + +/* TRM Bit Fields */ +#define VREF_TRM_TRIM_MASK 0x3Fu +#define VREF_TRM_TRIM_SHIFT 0 +#define VREF_TRM_TRIM(x) (((uint8_t)(((uint8_t)(x))<<VREF_TRM_TRIM_SHIFT))&VREF_TRM_TRIM_MASK) +#define VREF_TRM_CHOPEN_MASK 0x40u +#define VREF_TRM_CHOPEN_SHIFT 6 +/* SC Bit Fields */ +#define VREF_SC_MODE_LV_MASK 0x3u +#define VREF_SC_MODE_LV_SHIFT 0 +#define VREF_SC_MODE_LV(x) (((uint8_t)(((uint8_t)(x))<<VREF_SC_MODE_LV_SHIFT))&VREF_SC_MODE_LV_MASK) +#define VREF_SC_VREFST_MASK 0x4u +#define VREF_SC_VREFST_SHIFT 2 +#define VREF_SC_ICOMPEN_MASK 0x20u +#define VREF_SC_ICOMPEN_SHIFT 5 +#define VREF_SC_REGEN_MASK 0x40u +#define VREF_SC_REGEN_SHIFT 6 +#define VREF_SC_VREFEN_MASK 0x80u +#define VREF_SC_VREFEN_SHIFT 7 + +/*! + * @} + */ /* end of group VREF_Register_Masks */ + + +/* VREF - Peripheral instance base addresses */ +/** Peripheral VREF base address */ +#define VREF_BASE (0x40074000u) +/** Peripheral VREF base pointer */ +#define VREF ((VREF_Type *)VREF_BASE) +#define VREF_BASE_PTR (VREF) +/** Array initializer of VREF peripheral base pointers */ +#define VREF_BASES { VREF } + +/* ---------------------------------------------------------------------------- + -- VREF - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup VREF_Register_Accessor_Macros VREF - Register accessor macros + * @{ + */ + + +/* VREF - Register instance definitions */ +/* VREF */ +#define VREF_TRM VREF_TRM_REG(VREF) +#define VREF_SC VREF_SC_REG(VREF) + +/*! + * @} + */ /* end of group VREF_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group VREF_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- WDOG Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup WDOG_Peripheral_Access_Layer WDOG Peripheral Access Layer + * @{ + */ + +/** WDOG - Register Layout Typedef */ +typedef struct { + __IO uint16_t STCTRLH; /**< Watchdog Status and Control Register High, offset: 0x0 */ + __IO uint16_t STCTRLL; /**< Watchdog Status and Control Register Low, offset: 0x2 */ + __IO uint16_t TOVALH; /**< Watchdog Time-out Value Register High, offset: 0x4 */ + __IO uint16_t TOVALL; /**< Watchdog Time-out Value Register Low, offset: 0x6 */ + __IO uint16_t WINH; /**< Watchdog Window Register High, offset: 0x8 */ + __IO uint16_t WINL; /**< Watchdog Window Register Low, offset: 0xA */ + __IO uint16_t REFRESH; /**< Watchdog Refresh register, offset: 0xC */ + __IO uint16_t UNLOCK; /**< Watchdog Unlock register, offset: 0xE */ + __IO uint16_t TMROUTH; /**< Watchdog Timer Output Register High, offset: 0x10 */ + __IO uint16_t TMROUTL; /**< Watchdog Timer Output Register Low, offset: 0x12 */ + __IO uint16_t RSTCNT; /**< Watchdog Reset Count register, offset: 0x14 */ + __IO uint16_t PRESC; /**< Watchdog Prescaler register, offset: 0x16 */ +} WDOG_Type, *WDOG_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- WDOG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup WDOG_Register_Accessor_Macros WDOG - Register accessor macros + * @{ + */ + + +/* WDOG - Register accessors */ +#define WDOG_STCTRLH_REG(base) ((base)->STCTRLH) +#define WDOG_STCTRLL_REG(base) ((base)->STCTRLL) +#define WDOG_TOVALH_REG(base) ((base)->TOVALH) +#define WDOG_TOVALL_REG(base) ((base)->TOVALL) +#define WDOG_WINH_REG(base) ((base)->WINH) +#define WDOG_WINL_REG(base) ((base)->WINL) +#define WDOG_REFRESH_REG(base) ((base)->REFRESH) +#define WDOG_UNLOCK_REG(base) ((base)->UNLOCK) +#define WDOG_TMROUTH_REG(base) ((base)->TMROUTH) +#define WDOG_TMROUTL_REG(base) ((base)->TMROUTL) +#define WDOG_RSTCNT_REG(base) ((base)->RSTCNT) +#define WDOG_PRESC_REG(base) ((base)->PRESC) + +/*! + * @} + */ /* end of group WDOG_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- WDOG Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup WDOG_Register_Masks WDOG Register Masks + * @{ + */ + +/* STCTRLH Bit Fields */ +#define WDOG_STCTRLH_WDOGEN_MASK 0x1u +#define WDOG_STCTRLH_WDOGEN_SHIFT 0 +#define WDOG_STCTRLH_CLKSRC_MASK 0x2u +#define WDOG_STCTRLH_CLKSRC_SHIFT 1 +#define WDOG_STCTRLH_IRQRSTEN_MASK 0x4u +#define WDOG_STCTRLH_IRQRSTEN_SHIFT 2 +#define WDOG_STCTRLH_WINEN_MASK 0x8u +#define WDOG_STCTRLH_WINEN_SHIFT 3 +#define WDOG_STCTRLH_ALLOWUPDATE_MASK 0x10u +#define WDOG_STCTRLH_ALLOWUPDATE_SHIFT 4 +#define WDOG_STCTRLH_DBGEN_MASK 0x20u +#define WDOG_STCTRLH_DBGEN_SHIFT 5 +#define WDOG_STCTRLH_STOPEN_MASK 0x40u +#define WDOG_STCTRLH_STOPEN_SHIFT 6 +#define WDOG_STCTRLH_WAITEN_MASK 0x80u +#define WDOG_STCTRLH_WAITEN_SHIFT 7 +#define WDOG_STCTRLH_TESTWDOG_MASK 0x400u +#define WDOG_STCTRLH_TESTWDOG_SHIFT 10 +#define WDOG_STCTRLH_TESTSEL_MASK 0x800u +#define WDOG_STCTRLH_TESTSEL_SHIFT 11 +#define WDOG_STCTRLH_BYTESEL_MASK 0x3000u +#define WDOG_STCTRLH_BYTESEL_SHIFT 12 +#define WDOG_STCTRLH_BYTESEL(x) (((uint16_t)(((uint16_t)(x))<<WDOG_STCTRLH_BYTESEL_SHIFT))&WDOG_STCTRLH_BYTESEL_MASK) +#define WDOG_STCTRLH_DISTESTWDOG_MASK 0x4000u +#define WDOG_STCTRLH_DISTESTWDOG_SHIFT 14 +/* STCTRLL Bit Fields */ +#define WDOG_STCTRLL_INTFLG_MASK 0x8000u +#define WDOG_STCTRLL_INTFLG_SHIFT 15 +/* TOVALH Bit Fields */ +#define WDOG_TOVALH_TOVALHIGH_MASK 0xFFFFu +#define WDOG_TOVALH_TOVALHIGH_SHIFT 0 +#define WDOG_TOVALH_TOVALHIGH(x) (((uint16_t)(((uint16_t)(x))<<WDOG_TOVALH_TOVALHIGH_SHIFT))&WDOG_TOVALH_TOVALHIGH_MASK) +/* TOVALL Bit Fields */ +#define WDOG_TOVALL_TOVALLOW_MASK 0xFFFFu +#define WDOG_TOVALL_TOVALLOW_SHIFT 0 +#define WDOG_TOVALL_TOVALLOW(x) (((uint16_t)(((uint16_t)(x))<<WDOG_TOVALL_TOVALLOW_SHIFT))&WDOG_TOVALL_TOVALLOW_MASK) +/* WINH Bit Fields */ +#define WDOG_WINH_WINHIGH_MASK 0xFFFFu +#define WDOG_WINH_WINHIGH_SHIFT 0 +#define WDOG_WINH_WINHIGH(x) (((uint16_t)(((uint16_t)(x))<<WDOG_WINH_WINHIGH_SHIFT))&WDOG_WINH_WINHIGH_MASK) +/* WINL Bit Fields */ +#define WDOG_WINL_WINLOW_MASK 0xFFFFu +#define WDOG_WINL_WINLOW_SHIFT 0 +#define WDOG_WINL_WINLOW(x) (((uint16_t)(((uint16_t)(x))<<WDOG_WINL_WINLOW_SHIFT))&WDOG_WINL_WINLOW_MASK) +/* REFRESH Bit Fields */ +#define WDOG_REFRESH_WDOGREFRESH_MASK 0xFFFFu +#define WDOG_REFRESH_WDOGREFRESH_SHIFT 0 +#define WDOG_REFRESH_WDOGREFRESH(x) (((uint16_t)(((uint16_t)(x))<<WDOG_REFRESH_WDOGREFRESH_SHIFT))&WDOG_REFRESH_WDOGREFRESH_MASK) +/* UNLOCK Bit Fields */ +#define WDOG_UNLOCK_WDOGUNLOCK_MASK 0xFFFFu +#define WDOG_UNLOCK_WDOGUNLOCK_SHIFT 0 +#define WDOG_UNLOCK_WDOGUNLOCK(x) (((uint16_t)(((uint16_t)(x))<<WDOG_UNLOCK_WDOGUNLOCK_SHIFT))&WDOG_UNLOCK_WDOGUNLOCK_MASK) +/* TMROUTH Bit Fields */ +#define WDOG_TMROUTH_TIMEROUTHIGH_MASK 0xFFFFu +#define WDOG_TMROUTH_TIMEROUTHIGH_SHIFT 0 +#define WDOG_TMROUTH_TIMEROUTHIGH(x) (((uint16_t)(((uint16_t)(x))<<WDOG_TMROUTH_TIMEROUTHIGH_SHIFT))&WDOG_TMROUTH_TIMEROUTHIGH_MASK) +/* TMROUTL Bit Fields */ +#define WDOG_TMROUTL_TIMEROUTLOW_MASK 0xFFFFu +#define WDOG_TMROUTL_TIMEROUTLOW_SHIFT 0 +#define WDOG_TMROUTL_TIMEROUTLOW(x) (((uint16_t)(((uint16_t)(x))<<WDOG_TMROUTL_TIMEROUTLOW_SHIFT))&WDOG_TMROUTL_TIMEROUTLOW_MASK) +/* RSTCNT Bit Fields */ +#define WDOG_RSTCNT_RSTCNT_MASK 0xFFFFu +#define WDOG_RSTCNT_RSTCNT_SHIFT 0 +#define WDOG_RSTCNT_RSTCNT(x) (((uint16_t)(((uint16_t)(x))<<WDOG_RSTCNT_RSTCNT_SHIFT))&WDOG_RSTCNT_RSTCNT_MASK) +/* PRESC Bit Fields */ +#define WDOG_PRESC_PRESCVAL_MASK 0x700u +#define WDOG_PRESC_PRESCVAL_SHIFT 8 +#define WDOG_PRESC_PRESCVAL(x) (((uint16_t)(((uint16_t)(x))<<WDOG_PRESC_PRESCVAL_SHIFT))&WDOG_PRESC_PRESCVAL_MASK) + +/*! + * @} + */ /* end of group WDOG_Register_Masks */ + + +/* WDOG - Peripheral instance base addresses */ +/** Peripheral WDOG base address */ +#define WDOG_BASE (0x40052000u) +/** Peripheral WDOG base pointer */ +#define WDOG ((WDOG_Type *)WDOG_BASE) +#define WDOG_BASE_PTR (WDOG) +/** Array initializer of WDOG peripheral base pointers */ +#define WDOG_BASES { WDOG } + +/* ---------------------------------------------------------------------------- + -- WDOG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup WDOG_Register_Accessor_Macros WDOG - Register accessor macros + * @{ + */ + + +/* WDOG - Register instance definitions */ +/* WDOG */ +#define WDOG_STCTRLH WDOG_STCTRLH_REG(WDOG) +#define WDOG_STCTRLL WDOG_STCTRLL_REG(WDOG) +#define WDOG_TOVALH WDOG_TOVALH_REG(WDOG) +#define WDOG_TOVALL WDOG_TOVALL_REG(WDOG) +#define WDOG_WINH WDOG_WINH_REG(WDOG) +#define WDOG_WINL WDOG_WINL_REG(WDOG) +#define WDOG_REFRESH WDOG_REFRESH_REG(WDOG) +#define WDOG_UNLOCK WDOG_UNLOCK_REG(WDOG) +#define WDOG_TMROUTH WDOG_TMROUTH_REG(WDOG) +#define WDOG_TMROUTL WDOG_TMROUTL_REG(WDOG) +#define WDOG_RSTCNT WDOG_RSTCNT_REG(WDOG) +#define WDOG_PRESC WDOG_PRESC_REG(WDOG) + +/*! + * @} + */ /* end of group WDOG_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group WDOG_Peripheral_Access_Layer */ + + +/* +** End of section using anonymous unions +*/ + +#if defined(__ARMCC_VERSION) + #pragma pop +#elif defined(__CWCC__) + #pragma pop +#elif defined(__GNUC__) + /* leave anonymous unions enabled */ +#elif defined(__IAR_SYSTEMS_ICC__) + #pragma language=default +#else + #error Not supported compiler type +#endif + +/*! + * @} + */ /* end of group Peripheral_access_layer */ + + +/* ---------------------------------------------------------------------------- + -- Backward Compatibility + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup Backward_Compatibility_Symbols Backward Compatibility + * @{ + */ + +/* No backward compatibility issues. */ + +/*! + * @} + */ /* end of group Backward_Compatibility_Symbols */ + + +#else /* #if !defined(MCU_MK64F12) */ + /* There is already included the same memory map. Check if it is compatible (has the same major version) */ + #if (MCU_MEM_MAP_VERSION != 0x0200u) + #if (!defined(MCU_MEM_MAP_SUPPRESS_VERSION_WARNING)) + #warning There are included two not compatible versions of memory maps. Please check possible differences. + #endif /* (!defined(MCU_MEM_MAP_SUPPRESS_VERSION_WARNING)) */ + #endif /* (MCU_MEM_MAP_VERSION != 0x0200u) */ +#endif /* #if !defined(MCU_MK64F12) */ + +#endif /* #if !defined(MK64F12_H_) */ +/* MK64F12.h, eof. */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,131 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + OSC32KCLK = 0, +} RTCName; + +typedef enum { + UART_0 = 0, + UART_1 = 1, + UART_2 = 2, + UART_3 = 3, + UART_4 = 4, +} UARTName; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +typedef enum { + I2C_0 = 0, + I2C_1 = 1, + I2C_2 = 2, +} I2CName; + +#define TPM_SHIFT 8 +typedef enum { + PWM_1 = (0 << TPM_SHIFT) | (0), // FTM0 CH0 + PWM_2 = (0 << TPM_SHIFT) | (1), // FTM0 CH1 + PWM_3 = (0 << TPM_SHIFT) | (2), // FTM0 CH2 + PWM_4 = (0 << TPM_SHIFT) | (3), // FTM0 CH3 + PWM_5 = (0 << TPM_SHIFT) | (4), // FTM0 CH4 + PWM_6 = (0 << TPM_SHIFT) | (5), // FTM0 CH5 + PWM_7 = (0 << TPM_SHIFT) | (6), // FTM0 CH6 + PWM_8 = (0 << TPM_SHIFT) | (7), // FTM0 CH7 + PWM_9 = (1 << TPM_SHIFT) | (0), // FTM1 CH0 + PWM_10 = (1 << TPM_SHIFT) | (1), // FTM1 CH1 + PWM_11 = (1 << TPM_SHIFT) | (2), // FTM1 CH2 + PWM_12 = (1 << TPM_SHIFT) | (3), // FTM1 CH3 + PWM_13 = (1 << TPM_SHIFT) | (4), // FTM1 CH4 + PWM_14 = (1 << TPM_SHIFT) | (5), // FTM1 CH5 + PWM_15 = (1 << TPM_SHIFT) | (6), // FTM1 CH6 + PWM_16 = (1 << TPM_SHIFT) | (7), // FTM1 CH7 + PWM_17 = (2 << TPM_SHIFT) | (0), // FTM2 CH0 + PWM_18 = (2 << TPM_SHIFT) | (1), // FTM2 CH1 + PWM_19 = (2 << TPM_SHIFT) | (2), // FTM2 CH2 + PWM_20 = (2 << TPM_SHIFT) | (3), // FTM2 CH3 + PWM_21 = (2 << TPM_SHIFT) | (4), // FTM2 CH4 + PWM_22 = (2 << TPM_SHIFT) | (5), // FTM2 CH5 + PWM_23 = (2 << TPM_SHIFT) | (6), // FTM2 CH6 + PWM_24 = (2 << TPM_SHIFT) | (7), // FTM2 CH7 + // could be 4 or could be 3... not sure what register + // this is for... too much abstraction + PWM_25 = (3 << TPM_SHIFT) | (0), // FTM3 CH0 + PWM_26 = (3 << TPM_SHIFT) | (1), // FTM3 CH1 + PWM_27 = (3 << TPM_SHIFT) | (2), // FTM3 CH2 + PWM_28 = (3 << TPM_SHIFT) | (3), // FTM3 CH3 + PWM_29 = (3 << TPM_SHIFT) | (4), // FTM3 CH4 + PWM_30 = (3 << TPM_SHIFT) | (5), // FTM3 CH5 + PWM_31 = (3 << TPM_SHIFT) | (6), // FTM3 CH6 + PWM_32 = (3 << TPM_SHIFT) | (7), // FTM3 CH7 +} PWMName; + +#define ADC_INSTANCE_SHIFT 8 +#define ADC_B_CHANNEL_SHIFT 5 +typedef enum { + ADC0_SE4b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4, + ADC0_SE5b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5, + ADC0_SE6b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6, + ADC0_SE7b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7, + ADC0_SE8 = (0 << ADC_INSTANCE_SHIFT) | 8, + ADC0_SE9 = (0 << ADC_INSTANCE_SHIFT) | 9, + ADC0_SE12 = (0 << ADC_INSTANCE_SHIFT) | 12, + ADC0_SE13 = (0 << ADC_INSTANCE_SHIFT) | 13, + ADC0_SE14 = (0 << ADC_INSTANCE_SHIFT) | 14, + ADC0_SE15 = (0 << ADC_INSTANCE_SHIFT) | 15, + ADC0_SE16 = (0 << ADC_INSTANCE_SHIFT) | 16, + ADC0_SE17 = (0 << ADC_INSTANCE_SHIFT) | 17, + ADC0_SE18 = (0 << ADC_INSTANCE_SHIFT) | 18, + ADC1_SE4b = (1 << ADC_INSTANCE_SHIFT) | 4, + ADC1_SE5b = (1 << ADC_INSTANCE_SHIFT) | 5, + ADC1_SE6b = (1 << ADC_INSTANCE_SHIFT) | 6, + ADC1_SE7b = (1 << ADC_INSTANCE_SHIFT) | 7, + ADC1_SE8 = (1 << ADC_INSTANCE_SHIFT) | 8, + ADC1_SE9 = (1 << ADC_INSTANCE_SHIFT) | 9, + ADC1_SE12 = (1 << ADC_INSTANCE_SHIFT) | 12, + ADC1_SE13 = (1 << ADC_INSTANCE_SHIFT) | 13, + ADC1_SE14 = (1 << ADC_INSTANCE_SHIFT) | 14, + ADC1_SE15 = (1 << ADC_INSTANCE_SHIFT) | 15, + ADC1_SE16 = (1 << ADC_INSTANCE_SHIFT) | 16, + ADC1_SE17 = (1 << ADC_INSTANCE_SHIFT) | 17, + ADC1_SE18 = (1 << ADC_INSTANCE_SHIFT) | 18, +} ADCName; + +typedef enum { + DAC_0 = 0 +} DACName; + + +typedef enum { + SPI_0 = 0, + SPI_1 = 1, + SPI_2 = 2, +} SPIName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,258 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define GPIO_PORT_SHIFT 12 + +typedef enum { + PTA0 = (0 << GPIO_PORT_SHIFT | 0 ), + PTA1 = (0 << GPIO_PORT_SHIFT | 1 ), + PTA2 = (0 << GPIO_PORT_SHIFT | 2 ), + PTA3 = (0 << GPIO_PORT_SHIFT | 3 ), + PTA4 = (0 << GPIO_PORT_SHIFT | 4 ), + PTA5 = (0 << GPIO_PORT_SHIFT | 5 ), + PTA6 = (0 << GPIO_PORT_SHIFT | 6 ), + PTA7 = (0 << GPIO_PORT_SHIFT | 7 ), + PTA8 = (0 << GPIO_PORT_SHIFT | 8 ), + PTA9 = (0 << GPIO_PORT_SHIFT | 9 ), + PTA10 = (0 << GPIO_PORT_SHIFT | 10), + PTA11 = (0 << GPIO_PORT_SHIFT | 11), + PTA12 = (0 << GPIO_PORT_SHIFT | 12), + PTA13 = (0 << GPIO_PORT_SHIFT | 13), + PTA14 = (0 << GPIO_PORT_SHIFT | 14), + PTA15 = (0 << GPIO_PORT_SHIFT | 15), + PTA16 = (0 << GPIO_PORT_SHIFT | 16), + PTA17 = (0 << GPIO_PORT_SHIFT | 17), + PTA18 = (0 << GPIO_PORT_SHIFT | 18), + PTA19 = (0 << GPIO_PORT_SHIFT | 19), + PTA20 = (0 << GPIO_PORT_SHIFT | 20), + PTA21 = (0 << GPIO_PORT_SHIFT | 21), + PTA22 = (0 << GPIO_PORT_SHIFT | 22), + PTA23 = (0 << GPIO_PORT_SHIFT | 23), + PTA24 = (0 << GPIO_PORT_SHIFT | 24), + PTA25 = (0 << GPIO_PORT_SHIFT | 25), + PTA26 = (0 << GPIO_PORT_SHIFT | 26), + PTA27 = (0 << GPIO_PORT_SHIFT | 27), + PTA28 = (0 << GPIO_PORT_SHIFT | 28), + PTA29 = (0 << GPIO_PORT_SHIFT | 29), + PTA30 = (0 << GPIO_PORT_SHIFT | 30), + PTA31 = (0 << GPIO_PORT_SHIFT | 31), + PTB0 = (1 << GPIO_PORT_SHIFT | 0 ), + PTB1 = (1 << GPIO_PORT_SHIFT | 1 ), + PTB2 = (1 << GPIO_PORT_SHIFT | 2 ), + PTB3 = (1 << GPIO_PORT_SHIFT | 3 ), + PTB4 = (1 << GPIO_PORT_SHIFT | 4 ), + PTB5 = (1 << GPIO_PORT_SHIFT | 5 ), + PTB6 = (1 << GPIO_PORT_SHIFT | 6 ), + PTB7 = (1 << GPIO_PORT_SHIFT | 7 ), + PTB8 = (1 << GPIO_PORT_SHIFT | 8 ), + PTB9 = (1 << GPIO_PORT_SHIFT | 9 ), + PTB10 = (1 << GPIO_PORT_SHIFT | 10), + PTB11 = (1 << GPIO_PORT_SHIFT | 11), + PTB12 = (1 << GPIO_PORT_SHIFT | 12), + PTB13 = (1 << GPIO_PORT_SHIFT | 13), + PTB14 = (1 << GPIO_PORT_SHIFT | 14), + PTB15 = (1 << GPIO_PORT_SHIFT | 15), + PTB16 = (1 << GPIO_PORT_SHIFT | 16), + PTB17 = (1 << GPIO_PORT_SHIFT | 17), + PTB18 = (1 << GPIO_PORT_SHIFT | 18), + PTB19 = (1 << GPIO_PORT_SHIFT | 19), + PTB20 = (1 << GPIO_PORT_SHIFT | 20), + PTB21 = (1 << GPIO_PORT_SHIFT | 21), + PTB22 = (1 << GPIO_PORT_SHIFT | 22), + PTB23 = (1 << GPIO_PORT_SHIFT | 23), + PTB24 = (1 << GPIO_PORT_SHIFT | 24), + PTB25 = (1 << GPIO_PORT_SHIFT | 25), + PTB26 = (1 << GPIO_PORT_SHIFT | 26), + PTB27 = (1 << GPIO_PORT_SHIFT | 27), + PTB28 = (1 << GPIO_PORT_SHIFT | 28), + PTB29 = (1 << GPIO_PORT_SHIFT | 29), + PTB30 = (1 << GPIO_PORT_SHIFT | 30), + PTB31 = (1 << GPIO_PORT_SHIFT | 31), + PTC0 = (2 << GPIO_PORT_SHIFT | 0 ), + PTC1 = (2 << GPIO_PORT_SHIFT | 1 ), + PTC2 = (2 << GPIO_PORT_SHIFT | 2 ), + PTC3 = (2 << GPIO_PORT_SHIFT | 3 ), + PTC4 = (2 << GPIO_PORT_SHIFT | 4 ), + PTC5 = (2 << GPIO_PORT_SHIFT | 5 ), + PTC6 = (2 << GPIO_PORT_SHIFT | 6 ), + PTC7 = (2 << GPIO_PORT_SHIFT | 7 ), + PTC8 = (2 << GPIO_PORT_SHIFT | 8 ), + PTC9 = (2 << GPIO_PORT_SHIFT | 9 ), + PTC10 = (2 << GPIO_PORT_SHIFT | 10), + PTC11 = (2 << GPIO_PORT_SHIFT | 11), + PTC12 = (2 << GPIO_PORT_SHIFT | 12), + PTC13 = (2 << GPIO_PORT_SHIFT | 13), + PTC14 = (2 << GPIO_PORT_SHIFT | 14), + PTC15 = (2 << GPIO_PORT_SHIFT | 15), + PTC16 = (2 << GPIO_PORT_SHIFT | 16), + PTC17 = (2 << GPIO_PORT_SHIFT | 17), + PTC18 = (2 << GPIO_PORT_SHIFT | 18), + PTC19 = (2 << GPIO_PORT_SHIFT | 19), + PTC20 = (2 << GPIO_PORT_SHIFT | 20), + PTC21 = (2 << GPIO_PORT_SHIFT | 21), + PTC22 = (2 << GPIO_PORT_SHIFT | 22), + PTC23 = (2 << GPIO_PORT_SHIFT | 23), + PTC24 = (2 << GPIO_PORT_SHIFT | 24), + PTC25 = (2 << GPIO_PORT_SHIFT | 25), + PTC26 = (2 << GPIO_PORT_SHIFT | 26), + PTC27 = (2 << GPIO_PORT_SHIFT | 27), + PTC28 = (2 << GPIO_PORT_SHIFT | 28), + PTC29 = (2 << GPIO_PORT_SHIFT | 29), + PTC30 = (2 << GPIO_PORT_SHIFT | 30), + PTC31 = (2 << GPIO_PORT_SHIFT | 31), + PTD0 = (3 << GPIO_PORT_SHIFT | 0 ), + PTD1 = (3 << GPIO_PORT_SHIFT | 1 ), + PTD2 = (3 << GPIO_PORT_SHIFT | 2 ), + PTD3 = (3 << GPIO_PORT_SHIFT | 3 ), + PTD4 = (3 << GPIO_PORT_SHIFT | 4 ), + PTD5 = (3 << GPIO_PORT_SHIFT | 5 ), + PTD6 = (3 << GPIO_PORT_SHIFT | 6 ), + PTD7 = (3 << GPIO_PORT_SHIFT | 7 ), + PTD8 = (3 << GPIO_PORT_SHIFT | 8 ), + PTD9 = (3 << GPIO_PORT_SHIFT | 9 ), + PTD10 = (3 << GPIO_PORT_SHIFT | 10), + PTD11 = (3 << GPIO_PORT_SHIFT | 11), + PTD12 = (3 << GPIO_PORT_SHIFT | 12), + PTD13 = (3 << GPIO_PORT_SHIFT | 13), + PTD14 = (3 << GPIO_PORT_SHIFT | 14), + PTD15 = (3 << GPIO_PORT_SHIFT | 15), + PTD16 = (3 << GPIO_PORT_SHIFT | 16), + PTD17 = (3 << GPIO_PORT_SHIFT | 17), + PTD18 = (3 << GPIO_PORT_SHIFT | 18), + PTD19 = (3 << GPIO_PORT_SHIFT | 19), + PTD20 = (3 << GPIO_PORT_SHIFT | 20), + PTD21 = (3 << GPIO_PORT_SHIFT | 21), + PTD22 = (3 << GPIO_PORT_SHIFT | 22), + PTD23 = (3 << GPIO_PORT_SHIFT | 23), + PTD24 = (3 << GPIO_PORT_SHIFT | 24), + PTD25 = (3 << GPIO_PORT_SHIFT | 25), + PTD26 = (3 << GPIO_PORT_SHIFT | 26), + PTD27 = (3 << GPIO_PORT_SHIFT | 27), + PTD28 = (3 << GPIO_PORT_SHIFT | 28), + PTD29 = (3 << GPIO_PORT_SHIFT | 29), + PTD30 = (3 << GPIO_PORT_SHIFT | 30), + PTD31 = (3 << GPIO_PORT_SHIFT | 31), + PTE0 = (4 << GPIO_PORT_SHIFT | 0 ), + PTE1 = (4 << GPIO_PORT_SHIFT | 1 ), + PTE2 = (4 << GPIO_PORT_SHIFT | 2 ), + PTE3 = (4 << GPIO_PORT_SHIFT | 3 ), + PTE4 = (4 << GPIO_PORT_SHIFT | 4 ), + PTE5 = (4 << GPIO_PORT_SHIFT | 5 ), + PTE6 = (4 << GPIO_PORT_SHIFT | 6 ), + PTE7 = (4 << GPIO_PORT_SHIFT | 7 ), + PTE8 = (4 << GPIO_PORT_SHIFT | 8 ), + PTE9 = (4 << GPIO_PORT_SHIFT | 9 ), + PTE10 = (4 << GPIO_PORT_SHIFT | 10), + PTE11 = (4 << GPIO_PORT_SHIFT | 11), + PTE12 = (4 << GPIO_PORT_SHIFT | 12), + PTE13 = (4 << GPIO_PORT_SHIFT | 13), + PTE14 = (4 << GPIO_PORT_SHIFT | 14), + PTE15 = (4 << GPIO_PORT_SHIFT | 15), + PTE16 = (4 << GPIO_PORT_SHIFT | 16), + PTE17 = (4 << GPIO_PORT_SHIFT | 17), + PTE18 = (4 << GPIO_PORT_SHIFT | 18), + PTE19 = (4 << GPIO_PORT_SHIFT | 19), + PTE20 = (4 << GPIO_PORT_SHIFT | 20), + PTE21 = (4 << GPIO_PORT_SHIFT | 21), + PTE22 = (4 << GPIO_PORT_SHIFT | 22), + PTE23 = (4 << GPIO_PORT_SHIFT | 23), + PTE24 = (4 << GPIO_PORT_SHIFT | 24), + PTE25 = (4 << GPIO_PORT_SHIFT | 25), + PTE26 = (4 << GPIO_PORT_SHIFT | 26), + PTE27 = (4 << GPIO_PORT_SHIFT | 27), + PTE28 = (4 << GPIO_PORT_SHIFT | 28), + PTE29 = (4 << GPIO_PORT_SHIFT | 29), + PTE30 = (4 << GPIO_PORT_SHIFT | 30), + PTE31 = (4 << GPIO_PORT_SHIFT | 31), + + LED_RED = PTB22, + LED_GREEN = PTE26, + LED_BLUE = PTB21, + + // mbed original LED naming + LED1 = LED_RED, + LED2 = LED_GREEN, + LED3 = LED_BLUE, + LED4 = LED_RED, + + //Push buttons + SW2 = PTC6, + SW3 = PTA4, + + // USB Pins + USBTX = PTB17, + USBRX = PTB16, + + // Arduino Headers + D0 = PTC16, + D1 = PTC17, + D2 = PTB9, + D3 = PTA1, + D4 = PTB23, + D5 = PTA2, + D6 = PTC2, + D7 = PTC3, + D8 = PTA0, + D9 = PTC4, + D10 = PTD0, + D11 = PTD2, + D12 = PTD3, + D13 = PTD1, + D14 = PTE25, + D15 = PTE24, + + I2C_SCL = D15, + I2C_SDA = D14, + + A0 = PTB2, + A1 = PTB3, + A2 = PTB10, + A3 = PTB11, + A4 = PTC10, + A5 = PTC11, + + DAC0_OUT = 0xFEFE, /* DAC does not have Pin Name in RM */ + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + + +typedef enum { + PullNone = 0, + PullDown = 1, + PullUp = 2, + PullDefault = PullUp +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,35 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PortA = 0, + PortB = 1, + PortC = 2, + PortD = 3, + PortE = 4 +} PortName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,58 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 1 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 0 + +#define DEVICE_ERROR_RED 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,13704 @@ +/* +** ################################################################### +** Processor: MK64FN1M0VMD12 +** Compilers: ARM Compiler +** Freescale C/C++ for Embedded ARM +** GNU C Compiler +** GNU C Compiler - CodeSourcery Sourcery G++ +** IAR ANSI C/C++ Compiler for ARM +** +** Reference manual: K64P144M120SF5RM, Rev.2, January 2014 +** Version: rev. 2.3, 2014-01-24 +** +** Abstract: +** CMSIS Peripheral Access Layer for MK64F12 +** +** Copyright: 1997 - 2014 Freescale, Inc. All Rights Reserved. +** +** http: www.freescale.com +** mail: support@freescale.com +** +** Revisions: +** - rev. 1.0 (2013-08-12) +** Initial version. +** - rev. 2.0 (2013-10-29) +** Register accessor macros added to the memory map. +** Symbols for Processor Expert memory map compatibility added to the memory map. +** Startup file for gcc has been updated according to CMSIS 3.2. +** System initialization updated. +** MCG - registers updated. +** PORTA, PORTB, PORTC, PORTE - registers for digital filter removed. +** - rev. 2.1 (2013-10-29) +** Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled. +** - rev. 2.2 (2013-12-09) +** DMA - EARS register removed. +** AIPS0, AIPS1 - MPRA register updated. +** - rev. 2.3 (2014-01-24) +** Update according to reference manual rev. 2 +** ENET, MCG, MCM, SIM, USB - registers updated +** +** ################################################################### +*/ + +/*! + * @file MK64F12.h + * @version 2.3 + * @date 2014-01-24 + * @brief CMSIS Peripheral Access Layer for MK64F12 + * + * CMSIS Peripheral Access Layer for MK64F12 + */ + +#if !defined(MK64F12_H_) +#define MK64F12_H_ /**< Symbol preventing repeated inclusion */ + + +/* ---------------------------------------------------------------------------- + -- MCU activation + ---------------------------------------------------------------------------- */ + +/* Prevention from multiple including the same memory map */ +#if !defined(MCU_MK64F12) /* Check if memory map has not been already included */ +#define MCU_MK64F12 + +/* Check if another memory map has not been also included */ +#if (defined(MCU_ACTIVE)) + #error MK64F12 memory map: There is already included another memory map. Only one memory map can be included. +#endif /* (defined(MCU_ACTIVE)) */ +#define MCU_ACTIVE + +#include <stdint.h> + +/** Memory map major version (memory maps with equal major version number are + * compatible) */ +#define MCU_MEM_MAP_VERSION 0x0200u +/** Memory map minor version */ +#define MCU_MEM_MAP_VERSION_MINOR 0x0003u + +/** + * @brief Macro to calculate address of an aliased word in the peripheral + * bitband area for a peripheral register and bit (bit band region 0x40000000 to + * 0x400FFFFF). + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Address of the aliased word in the peripheral bitband area. + */ +#define BITBAND_REGADDR(Reg,Bit) (0x42000000u + (32u*((uint32_t)&(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit)))) +/** + * @brief Macro to access a single bit of a peripheral register (bit band region + * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can + * be used for peripherals with 32bit access allowed. + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Value of the targeted bit in the bit band region. + */ +#define BITBAND_REG32(Reg,Bit) (*((uint32_t volatile*)(BITBAND_REGADDR(Reg,Bit)))) +#define BITBAND_REG(Reg,Bit) (BITBAND_REG32(Reg,Bit)) +/** + * @brief Macro to access a single bit of a peripheral register (bit band region + * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can + * be used for peripherals with 16bit access allowed. + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Value of the targeted bit in the bit band region. + */ +#define BITBAND_REG16(Reg,Bit) (*((uint16_t volatile*)(BITBAND_REGADDR(Reg,Bit)))) +/** + * @brief Macro to access a single bit of a peripheral register (bit band region + * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can + * be used for peripherals with 8bit access allowed. + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Value of the targeted bit in the bit band region. + */ +#define BITBAND_REG8(Reg,Bit) (*((uint8_t volatile*)(BITBAND_REGADDR(Reg,Bit)))) + +/* ---------------------------------------------------------------------------- + -- Interrupt vector numbers + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup Interrupt_vector_numbers Interrupt vector numbers + * @{ + */ + +/** Interrupt Number Definitions */ +typedef enum IRQn { + /* Core interrupts */ + NonMaskableInt_IRQn = -14, /**< Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< Cortex-M4 SV Hard Fault Interrupt */ + MemoryManagement_IRQn = -12, /**< Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< Cortex-M4 System Tick Interrupt */ + + /* Device specific interrupts */ + DMA0_IRQn = 0, /**< DMA Channel 0 Transfer Complete */ + DMA1_IRQn = 1, /**< DMA Channel 1 Transfer Complete */ + DMA2_IRQn = 2, /**< DMA Channel 2 Transfer Complete */ + DMA3_IRQn = 3, /**< DMA Channel 3 Transfer Complete */ + DMA4_IRQn = 4, /**< DMA Channel 4 Transfer Complete */ + DMA5_IRQn = 5, /**< DMA Channel 5 Transfer Complete */ + DMA6_IRQn = 6, /**< DMA Channel 6 Transfer Complete */ + DMA7_IRQn = 7, /**< DMA Channel 7 Transfer Complete */ + DMA8_IRQn = 8, /**< DMA Channel 8 Transfer Complete */ + DMA9_IRQn = 9, /**< DMA Channel 9 Transfer Complete */ + DMA10_IRQn = 10, /**< DMA Channel 10 Transfer Complete */ + DMA11_IRQn = 11, /**< DMA Channel 11 Transfer Complete */ + DMA12_IRQn = 12, /**< DMA Channel 12 Transfer Complete */ + DMA13_IRQn = 13, /**< DMA Channel 13 Transfer Complete */ + DMA14_IRQn = 14, /**< DMA Channel 14 Transfer Complete */ + DMA15_IRQn = 15, /**< DMA Channel 15 Transfer Complete */ + DMA_Error_IRQn = 16, /**< DMA Error Interrupt */ + MCM_IRQn = 17, /**< Normal Interrupt */ + FTFE_IRQn = 18, /**< FTFE Command complete interrupt */ + Read_Collision_IRQn = 19, /**< Read Collision Interrupt */ + LVD_LVW_IRQn = 20, /**< Low Voltage Detect, Low Voltage Warning */ + LLW_IRQn = 21, /**< Low Leakage Wakeup */ + Watchdog_IRQn = 22, /**< WDOG Interrupt */ + RNG_IRQn = 23, /**< RNG Interrupt */ + I2C0_IRQn = 24, /**< I2C0 interrupt */ + I2C1_IRQn = 25, /**< I2C1 interrupt */ + SPI0_IRQn = 26, /**< SPI0 Interrupt */ + SPI1_IRQn = 27, /**< SPI1 Interrupt */ + I2S0_Tx_IRQn = 28, /**< I2S0 transmit interrupt */ + I2S0_Rx_IRQn = 29, /**< I2S0 receive interrupt */ + UART0_LON_IRQn = 30, /**< UART0 LON interrupt */ + UART0_RX_TX_IRQn = 31, /**< UART0 Receive/Transmit interrupt */ + UART0_ERR_IRQn = 32, /**< UART0 Error interrupt */ + UART1_RX_TX_IRQn = 33, /**< UART1 Receive/Transmit interrupt */ + UART1_ERR_IRQn = 34, /**< UART1 Error interrupt */ + UART2_RX_TX_IRQn = 35, /**< UART2 Receive/Transmit interrupt */ + UART2_ERR_IRQn = 36, /**< UART2 Error interrupt */ + UART3_RX_TX_IRQn = 37, /**< UART3 Receive/Transmit interrupt */ + UART3_ERR_IRQn = 38, /**< UART3 Error interrupt */ + ADC0_IRQn = 39, /**< ADC0 interrupt */ + CMP0_IRQn = 40, /**< CMP0 interrupt */ + CMP1_IRQn = 41, /**< CMP1 interrupt */ + FTM0_IRQn = 42, /**< FTM0 fault, overflow and channels interrupt */ + FTM1_IRQn = 43, /**< FTM1 fault, overflow and channels interrupt */ + FTM2_IRQn = 44, /**< FTM2 fault, overflow and channels interrupt */ + CMT_IRQn = 45, /**< CMT interrupt */ + RTC_IRQn = 46, /**< RTC interrupt */ + RTC_Seconds_IRQn = 47, /**< RTC seconds interrupt */ + PIT0_IRQn = 48, /**< PIT timer channel 0 interrupt */ + PIT1_IRQn = 49, /**< PIT timer channel 1 interrupt */ + PIT2_IRQn = 50, /**< PIT timer channel 2 interrupt */ + PIT3_IRQn = 51, /**< PIT timer channel 3 interrupt */ + PDB0_IRQn = 52, /**< PDB0 Interrupt */ + USB0_IRQn = 53, /**< USB0 interrupt */ + USBDCD_IRQn = 54, /**< USBDCD Interrupt */ + Reserved71_IRQn = 55, /**< Reserved interrupt 71 */ + DAC0_IRQn = 56, /**< DAC0 interrupt */ + MCG_IRQn = 57, /**< MCG Interrupt */ + LPTimer_IRQn = 58, /**< LPTimer interrupt */ + PORTA_IRQn = 59, /**< Port A interrupt */ + PORTB_IRQn = 60, /**< Port B interrupt */ + PORTC_IRQn = 61, /**< Port C interrupt */ + PORTD_IRQn = 62, /**< Port D interrupt */ + PORTE_IRQn = 63, /**< Port E interrupt */ + SWI_IRQn = 64, /**< Software interrupt */ + SPI2_IRQn = 65, /**< SPI2 Interrupt */ + UART4_RX_TX_IRQn = 66, /**< UART4 Receive/Transmit interrupt */ + UART4_ERR_IRQn = 67, /**< UART4 Error interrupt */ + UART5_RX_TX_IRQn = 68, /**< UART5 Receive/Transmit interrupt */ + UART5_ERR_IRQn = 69, /**< UART5 Error interrupt */ + CMP2_IRQn = 70, /**< CMP2 interrupt */ + FTM3_IRQn = 71, /**< FTM3 fault, overflow and channels interrupt */ + DAC1_IRQn = 72, /**< DAC1 interrupt */ + ADC1_IRQn = 73, /**< ADC1 interrupt */ + I2C2_IRQn = 74, /**< I2C2 interrupt */ + CAN0_ORed_Message_buffer_IRQn = 75, /**< CAN0 OR'd message buffers interrupt */ + CAN0_Bus_Off_IRQn = 76, /**< CAN0 bus off interrupt */ + CAN0_Error_IRQn = 77, /**< CAN0 error interrupt */ + CAN0_Tx_Warning_IRQn = 78, /**< CAN0 Tx warning interrupt */ + CAN0_Rx_Warning_IRQn = 79, /**< CAN0 Rx warning interrupt */ + CAN0_Wake_Up_IRQn = 80, /**< CAN0 wake up interrupt */ + SDHC_IRQn = 81, /**< SDHC interrupt */ + ENET_1588_Timer_IRQn = 82, /**< Ethernet MAC IEEE 1588 Timer Interrupt */ + ENET_Transmit_IRQn = 83, /**< Ethernet MAC Transmit Interrupt */ + ENET_Receive_IRQn = 84, /**< Ethernet MAC Receive Interrupt */ + ENET_Error_IRQn = 85 /**< Ethernet MAC Error and miscelaneous Interrupt */ +} IRQn_Type; + +/*! + * @} + */ /* end of group Interrupt_vector_numbers */ + + +/* ---------------------------------------------------------------------------- + -- Cortex M4 Core Configuration + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup Cortex_Core_Configuration Cortex M4 Core Configuration + * @{ + */ + +#define __MPU_PRESENT 0 /**< Defines if an MPU is present or not */ +#define __NVIC_PRIO_BITS 4 /**< Number of priority bits implemented in the NVIC */ +#define __Vendor_SysTickConfig 0 /**< Vendor specific implementation of SysTickConfig is defined */ +#define __FPU_PRESENT 1 /**< Defines if an FPU is present or not */ + +#include "core_cm4.h" /* Core Peripheral Access Layer */ +#include "system_MK64F12.h" /* Device specific configuration file */ + +/*! + * @} + */ /* end of group Cortex_Core_Configuration */ + + +/* ---------------------------------------------------------------------------- + -- Device Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup Peripheral_access_layer Device Peripheral Access Layer + * @{ + */ + + +/* +** Start of section using anonymous unions +*/ + +#if defined(__ARMCC_VERSION) + #pragma push + #pragma anon_unions +#elif defined(__CWCC__) + #pragma push + #pragma cpp_extensions on +#elif defined(__GNUC__) + /* anonymous unions are enabled by default */ +#elif defined(__IAR_SYSTEMS_ICC__) + #pragma language=extended +#else + #error Not supported compiler type +#endif + +/* ---------------------------------------------------------------------------- + -- ADC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ADC_Peripheral_Access_Layer ADC Peripheral Access Layer + * @{ + */ + +/** ADC - Register Layout Typedef */ +typedef struct { + __IO uint32_t SC1[2]; /**< ADC Status and Control Registers 1, array offset: 0x0, array step: 0x4 */ + __IO uint32_t CFG1; /**< ADC Configuration Register 1, offset: 0x8 */ + __IO uint32_t CFG2; /**< ADC Configuration Register 2, offset: 0xC */ + __I uint32_t R[2]; /**< ADC Data Result Register, array offset: 0x10, array step: 0x4 */ + __IO uint32_t CV1; /**< Compare Value Registers, offset: 0x18 */ + __IO uint32_t CV2; /**< Compare Value Registers, offset: 0x1C */ + __IO uint32_t SC2; /**< Status and Control Register 2, offset: 0x20 */ + __IO uint32_t SC3; /**< Status and Control Register 3, offset: 0x24 */ + __IO uint32_t OFS; /**< ADC Offset Correction Register, offset: 0x28 */ + __IO uint32_t PG; /**< ADC Plus-Side Gain Register, offset: 0x2C */ + __IO uint32_t MG; /**< ADC Minus-Side Gain Register, offset: 0x30 */ + __IO uint32_t CLPD; /**< ADC Plus-Side General Calibration Value Register, offset: 0x34 */ + __IO uint32_t CLPS; /**< ADC Plus-Side General Calibration Value Register, offset: 0x38 */ + __IO uint32_t CLP4; /**< ADC Plus-Side General Calibration Value Register, offset: 0x3C */ + __IO uint32_t CLP3; /**< ADC Plus-Side General Calibration Value Register, offset: 0x40 */ + __IO uint32_t CLP2; /**< ADC Plus-Side General Calibration Value Register, offset: 0x44 */ + __IO uint32_t CLP1; /**< ADC Plus-Side General Calibration Value Register, offset: 0x48 */ + __IO uint32_t CLP0; /**< ADC Plus-Side General Calibration Value Register, offset: 0x4C */ + uint8_t RESERVED_0[4]; + __IO uint32_t CLMD; /**< ADC Minus-Side General Calibration Value Register, offset: 0x54 */ + __IO uint32_t CLMS; /**< ADC Minus-Side General Calibration Value Register, offset: 0x58 */ + __IO uint32_t CLM4; /**< ADC Minus-Side General Calibration Value Register, offset: 0x5C */ + __IO uint32_t CLM3; /**< ADC Minus-Side General Calibration Value Register, offset: 0x60 */ + __IO uint32_t CLM2; /**< ADC Minus-Side General Calibration Value Register, offset: 0x64 */ + __IO uint32_t CLM1; /**< ADC Minus-Side General Calibration Value Register, offset: 0x68 */ + __IO uint32_t CLM0; /**< ADC Minus-Side General Calibration Value Register, offset: 0x6C */ +} ADC_Type, *ADC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- ADC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ADC_Register_Accessor_Macros ADC - Register accessor macros + * @{ + */ + + +/* ADC - Register accessors */ +#define ADC_SC1_REG(base,index) ((base)->SC1[index]) +#define ADC_CFG1_REG(base) ((base)->CFG1) +#define ADC_CFG2_REG(base) ((base)->CFG2) +#define ADC_R_REG(base,index) ((base)->R[index]) +#define ADC_CV1_REG(base) ((base)->CV1) +#define ADC_CV2_REG(base) ((base)->CV2) +#define ADC_SC2_REG(base) ((base)->SC2) +#define ADC_SC3_REG(base) ((base)->SC3) +#define ADC_OFS_REG(base) ((base)->OFS) +#define ADC_PG_REG(base) ((base)->PG) +#define ADC_MG_REG(base) ((base)->MG) +#define ADC_CLPD_REG(base) ((base)->CLPD) +#define ADC_CLPS_REG(base) ((base)->CLPS) +#define ADC_CLP4_REG(base) ((base)->CLP4) +#define ADC_CLP3_REG(base) ((base)->CLP3) +#define ADC_CLP2_REG(base) ((base)->CLP2) +#define ADC_CLP1_REG(base) ((base)->CLP1) +#define ADC_CLP0_REG(base) ((base)->CLP0) +#define ADC_CLMD_REG(base) ((base)->CLMD) +#define ADC_CLMS_REG(base) ((base)->CLMS) +#define ADC_CLM4_REG(base) ((base)->CLM4) +#define ADC_CLM3_REG(base) ((base)->CLM3) +#define ADC_CLM2_REG(base) ((base)->CLM2) +#define ADC_CLM1_REG(base) ((base)->CLM1) +#define ADC_CLM0_REG(base) ((base)->CLM0) + +/*! + * @} + */ /* end of group ADC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- ADC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ADC_Register_Masks ADC Register Masks + * @{ + */ + +/* SC1 Bit Fields */ +#define ADC_SC1_ADCH_MASK 0x1Fu +#define ADC_SC1_ADCH_SHIFT 0 +#define ADC_SC1_ADCH(x) (((uint32_t)(((uint32_t)(x))<<ADC_SC1_ADCH_SHIFT))&ADC_SC1_ADCH_MASK) +#define ADC_SC1_DIFF_MASK 0x20u +#define ADC_SC1_DIFF_SHIFT 5 +#define ADC_SC1_AIEN_MASK 0x40u +#define ADC_SC1_AIEN_SHIFT 6 +#define ADC_SC1_COCO_MASK 0x80u +#define ADC_SC1_COCO_SHIFT 7 +/* CFG1 Bit Fields */ +#define ADC_CFG1_ADICLK_MASK 0x3u +#define ADC_CFG1_ADICLK_SHIFT 0 +#define ADC_CFG1_ADICLK(x) (((uint32_t)(((uint32_t)(x))<<ADC_CFG1_ADICLK_SHIFT))&ADC_CFG1_ADICLK_MASK) +#define ADC_CFG1_MODE_MASK 0xCu +#define ADC_CFG1_MODE_SHIFT 2 +#define ADC_CFG1_MODE(x) (((uint32_t)(((uint32_t)(x))<<ADC_CFG1_MODE_SHIFT))&ADC_CFG1_MODE_MASK) +#define ADC_CFG1_ADLSMP_MASK 0x10u +#define ADC_CFG1_ADLSMP_SHIFT 4 +#define ADC_CFG1_ADIV_MASK 0x60u +#define ADC_CFG1_ADIV_SHIFT 5 +#define ADC_CFG1_ADIV(x) (((uint32_t)(((uint32_t)(x))<<ADC_CFG1_ADIV_SHIFT))&ADC_CFG1_ADIV_MASK) +#define ADC_CFG1_ADLPC_MASK 0x80u +#define ADC_CFG1_ADLPC_SHIFT 7 +/* CFG2 Bit Fields */ +#define ADC_CFG2_ADLSTS_MASK 0x3u +#define ADC_CFG2_ADLSTS_SHIFT 0 +#define ADC_CFG2_ADLSTS(x) (((uint32_t)(((uint32_t)(x))<<ADC_CFG2_ADLSTS_SHIFT))&ADC_CFG2_ADLSTS_MASK) +#define ADC_CFG2_ADHSC_MASK 0x4u +#define ADC_CFG2_ADHSC_SHIFT 2 +#define ADC_CFG2_ADACKEN_MASK 0x8u +#define ADC_CFG2_ADACKEN_SHIFT 3 +#define ADC_CFG2_MUXSEL_MASK 0x10u +#define ADC_CFG2_MUXSEL_SHIFT 4 +/* R Bit Fields */ +#define ADC_R_D_MASK 0xFFFFu +#define ADC_R_D_SHIFT 0 +#define ADC_R_D(x) (((uint32_t)(((uint32_t)(x))<<ADC_R_D_SHIFT))&ADC_R_D_MASK) +/* CV1 Bit Fields */ +#define ADC_CV1_CV_MASK 0xFFFFu +#define ADC_CV1_CV_SHIFT 0 +#define ADC_CV1_CV(x) (((uint32_t)(((uint32_t)(x))<<ADC_CV1_CV_SHIFT))&ADC_CV1_CV_MASK) +/* CV2 Bit Fields */ +#define ADC_CV2_CV_MASK 0xFFFFu +#define ADC_CV2_CV_SHIFT 0 +#define ADC_CV2_CV(x) (((uint32_t)(((uint32_t)(x))<<ADC_CV2_CV_SHIFT))&ADC_CV2_CV_MASK) +/* SC2 Bit Fields */ +#define ADC_SC2_REFSEL_MASK 0x3u +#define ADC_SC2_REFSEL_SHIFT 0 +#define ADC_SC2_REFSEL(x) (((uint32_t)(((uint32_t)(x))<<ADC_SC2_REFSEL_SHIFT))&ADC_SC2_REFSEL_MASK) +#define ADC_SC2_DMAEN_MASK 0x4u +#define ADC_SC2_DMAEN_SHIFT 2 +#define ADC_SC2_ACREN_MASK 0x8u +#define ADC_SC2_ACREN_SHIFT 3 +#define ADC_SC2_ACFGT_MASK 0x10u +#define ADC_SC2_ACFGT_SHIFT 4 +#define ADC_SC2_ACFE_MASK 0x20u +#define ADC_SC2_ACFE_SHIFT 5 +#define ADC_SC2_ADTRG_MASK 0x40u +#define ADC_SC2_ADTRG_SHIFT 6 +#define ADC_SC2_ADACT_MASK 0x80u +#define ADC_SC2_ADACT_SHIFT 7 +/* SC3 Bit Fields */ +#define ADC_SC3_AVGS_MASK 0x3u +#define ADC_SC3_AVGS_SHIFT 0 +#define ADC_SC3_AVGS(x) (((uint32_t)(((uint32_t)(x))<<ADC_SC3_AVGS_SHIFT))&ADC_SC3_AVGS_MASK) +#define ADC_SC3_AVGE_MASK 0x4u +#define ADC_SC3_AVGE_SHIFT 2 +#define ADC_SC3_ADCO_MASK 0x8u +#define ADC_SC3_ADCO_SHIFT 3 +#define ADC_SC3_CALF_MASK 0x40u +#define ADC_SC3_CALF_SHIFT 6 +#define ADC_SC3_CAL_MASK 0x80u +#define ADC_SC3_CAL_SHIFT 7 +/* OFS Bit Fields */ +#define ADC_OFS_OFS_MASK 0xFFFFu +#define ADC_OFS_OFS_SHIFT 0 +#define ADC_OFS_OFS(x) (((uint32_t)(((uint32_t)(x))<<ADC_OFS_OFS_SHIFT))&ADC_OFS_OFS_MASK) +/* PG Bit Fields */ +#define ADC_PG_PG_MASK 0xFFFFu +#define ADC_PG_PG_SHIFT 0 +#define ADC_PG_PG(x) (((uint32_t)(((uint32_t)(x))<<ADC_PG_PG_SHIFT))&ADC_PG_PG_MASK) +/* MG Bit Fields */ +#define ADC_MG_MG_MASK 0xFFFFu +#define ADC_MG_MG_SHIFT 0 +#define ADC_MG_MG(x) (((uint32_t)(((uint32_t)(x))<<ADC_MG_MG_SHIFT))&ADC_MG_MG_MASK) +/* CLPD Bit Fields */ +#define ADC_CLPD_CLPD_MASK 0x3Fu +#define ADC_CLPD_CLPD_SHIFT 0 +#define ADC_CLPD_CLPD(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLPD_CLPD_SHIFT))&ADC_CLPD_CLPD_MASK) +/* CLPS Bit Fields */ +#define ADC_CLPS_CLPS_MASK 0x3Fu +#define ADC_CLPS_CLPS_SHIFT 0 +#define ADC_CLPS_CLPS(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLPS_CLPS_SHIFT))&ADC_CLPS_CLPS_MASK) +/* CLP4 Bit Fields */ +#define ADC_CLP4_CLP4_MASK 0x3FFu +#define ADC_CLP4_CLP4_SHIFT 0 +#define ADC_CLP4_CLP4(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP4_CLP4_SHIFT))&ADC_CLP4_CLP4_MASK) +/* CLP3 Bit Fields */ +#define ADC_CLP3_CLP3_MASK 0x1FFu +#define ADC_CLP3_CLP3_SHIFT 0 +#define ADC_CLP3_CLP3(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP3_CLP3_SHIFT))&ADC_CLP3_CLP3_MASK) +/* CLP2 Bit Fields */ +#define ADC_CLP2_CLP2_MASK 0xFFu +#define ADC_CLP2_CLP2_SHIFT 0 +#define ADC_CLP2_CLP2(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP2_CLP2_SHIFT))&ADC_CLP2_CLP2_MASK) +/* CLP1 Bit Fields */ +#define ADC_CLP1_CLP1_MASK 0x7Fu +#define ADC_CLP1_CLP1_SHIFT 0 +#define ADC_CLP1_CLP1(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP1_CLP1_SHIFT))&ADC_CLP1_CLP1_MASK) +/* CLP0 Bit Fields */ +#define ADC_CLP0_CLP0_MASK 0x3Fu +#define ADC_CLP0_CLP0_SHIFT 0 +#define ADC_CLP0_CLP0(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLP0_CLP0_SHIFT))&ADC_CLP0_CLP0_MASK) +/* CLMD Bit Fields */ +#define ADC_CLMD_CLMD_MASK 0x3Fu +#define ADC_CLMD_CLMD_SHIFT 0 +#define ADC_CLMD_CLMD(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLMD_CLMD_SHIFT))&ADC_CLMD_CLMD_MASK) +/* CLMS Bit Fields */ +#define ADC_CLMS_CLMS_MASK 0x3Fu +#define ADC_CLMS_CLMS_SHIFT 0 +#define ADC_CLMS_CLMS(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLMS_CLMS_SHIFT))&ADC_CLMS_CLMS_MASK) +/* CLM4 Bit Fields */ +#define ADC_CLM4_CLM4_MASK 0x3FFu +#define ADC_CLM4_CLM4_SHIFT 0 +#define ADC_CLM4_CLM4(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM4_CLM4_SHIFT))&ADC_CLM4_CLM4_MASK) +/* CLM3 Bit Fields */ +#define ADC_CLM3_CLM3_MASK 0x1FFu +#define ADC_CLM3_CLM3_SHIFT 0 +#define ADC_CLM3_CLM3(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM3_CLM3_SHIFT))&ADC_CLM3_CLM3_MASK) +/* CLM2 Bit Fields */ +#define ADC_CLM2_CLM2_MASK 0xFFu +#define ADC_CLM2_CLM2_SHIFT 0 +#define ADC_CLM2_CLM2(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM2_CLM2_SHIFT))&ADC_CLM2_CLM2_MASK) +/* CLM1 Bit Fields */ +#define ADC_CLM1_CLM1_MASK 0x7Fu +#define ADC_CLM1_CLM1_SHIFT 0 +#define ADC_CLM1_CLM1(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM1_CLM1_SHIFT))&ADC_CLM1_CLM1_MASK) +/* CLM0 Bit Fields */ +#define ADC_CLM0_CLM0_MASK 0x3Fu +#define ADC_CLM0_CLM0_SHIFT 0 +#define ADC_CLM0_CLM0(x) (((uint32_t)(((uint32_t)(x))<<ADC_CLM0_CLM0_SHIFT))&ADC_CLM0_CLM0_MASK) + +/*! + * @} + */ /* end of group ADC_Register_Masks */ + + +/* ADC - Peripheral instance base addresses */ +/** Peripheral ADC0 base address */ +#define ADC0_BASE (0x4003B000u) +/** Peripheral ADC0 base pointer */ +#define ADC0 ((ADC_Type *)ADC0_BASE) +#define ADC0_BASE_PTR (ADC0) +/** Peripheral ADC1 base address */ +#define ADC1_BASE (0x400BB000u) +/** Peripheral ADC1 base pointer */ +#define ADC1 ((ADC_Type *)ADC1_BASE) +#define ADC1_BASE_PTR (ADC1) +/** Array initializer of ADC peripheral base pointers */ +#define ADC_BASES { ADC0, ADC1 } + +/* ---------------------------------------------------------------------------- + -- ADC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ADC_Register_Accessor_Macros ADC - Register accessor macros + * @{ + */ + + +/* ADC - Register instance definitions */ +/* ADC0 */ +#define ADC0_SC1A ADC_SC1_REG(ADC0,0) +#define ADC0_SC1B ADC_SC1_REG(ADC0,1) +#define ADC0_CFG1 ADC_CFG1_REG(ADC0) +#define ADC0_CFG2 ADC_CFG2_REG(ADC0) +#define ADC0_RA ADC_R_REG(ADC0,0) +#define ADC0_RB ADC_R_REG(ADC0,1) +#define ADC0_CV1 ADC_CV1_REG(ADC0) +#define ADC0_CV2 ADC_CV2_REG(ADC0) +#define ADC0_SC2 ADC_SC2_REG(ADC0) +#define ADC0_SC3 ADC_SC3_REG(ADC0) +#define ADC0_OFS ADC_OFS_REG(ADC0) +#define ADC0_PG ADC_PG_REG(ADC0) +#define ADC0_MG ADC_MG_REG(ADC0) +#define ADC0_CLPD ADC_CLPD_REG(ADC0) +#define ADC0_CLPS ADC_CLPS_REG(ADC0) +#define ADC0_CLP4 ADC_CLP4_REG(ADC0) +#define ADC0_CLP3 ADC_CLP3_REG(ADC0) +#define ADC0_CLP2 ADC_CLP2_REG(ADC0) +#define ADC0_CLP1 ADC_CLP1_REG(ADC0) +#define ADC0_CLP0 ADC_CLP0_REG(ADC0) +#define ADC0_CLMD ADC_CLMD_REG(ADC0) +#define ADC0_CLMS ADC_CLMS_REG(ADC0) +#define ADC0_CLM4 ADC_CLM4_REG(ADC0) +#define ADC0_CLM3 ADC_CLM3_REG(ADC0) +#define ADC0_CLM2 ADC_CLM2_REG(ADC0) +#define ADC0_CLM1 ADC_CLM1_REG(ADC0) +#define ADC0_CLM0 ADC_CLM0_REG(ADC0) +/* ADC1 */ +#define ADC1_SC1A ADC_SC1_REG(ADC1,0) +#define ADC1_SC1B ADC_SC1_REG(ADC1,1) +#define ADC1_CFG1 ADC_CFG1_REG(ADC1) +#define ADC1_CFG2 ADC_CFG2_REG(ADC1) +#define ADC1_RA ADC_R_REG(ADC1,0) +#define ADC1_RB ADC_R_REG(ADC1,1) +#define ADC1_CV1 ADC_CV1_REG(ADC1) +#define ADC1_CV2 ADC_CV2_REG(ADC1) +#define ADC1_SC2 ADC_SC2_REG(ADC1) +#define ADC1_SC3 ADC_SC3_REG(ADC1) +#define ADC1_OFS ADC_OFS_REG(ADC1) +#define ADC1_PG ADC_PG_REG(ADC1) +#define ADC1_MG ADC_MG_REG(ADC1) +#define ADC1_CLPD ADC_CLPD_REG(ADC1) +#define ADC1_CLPS ADC_CLPS_REG(ADC1) +#define ADC1_CLP4 ADC_CLP4_REG(ADC1) +#define ADC1_CLP3 ADC_CLP3_REG(ADC1) +#define ADC1_CLP2 ADC_CLP2_REG(ADC1) +#define ADC1_CLP1 ADC_CLP1_REG(ADC1) +#define ADC1_CLP0 ADC_CLP0_REG(ADC1) +#define ADC1_CLMD ADC_CLMD_REG(ADC1) +#define ADC1_CLMS ADC_CLMS_REG(ADC1) +#define ADC1_CLM4 ADC_CLM4_REG(ADC1) +#define ADC1_CLM3 ADC_CLM3_REG(ADC1) +#define ADC1_CLM2 ADC_CLM2_REG(ADC1) +#define ADC1_CLM1 ADC_CLM1_REG(ADC1) +#define ADC1_CLM0 ADC_CLM0_REG(ADC1) + +/* ADC - Register array accessors */ +#define ADC0_SC1(index) ADC_SC1_REG(ADC0,index) +#define ADC1_SC1(index) ADC_SC1_REG(ADC1,index) +#define ADC0_R(index) ADC_R_REG(ADC0,index) +#define ADC1_R(index) ADC_R_REG(ADC1,index) + +/*! + * @} + */ /* end of group ADC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group ADC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- AIPS Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AIPS_Peripheral_Access_Layer AIPS Peripheral Access Layer + * @{ + */ + +/** AIPS - Register Layout Typedef */ +typedef struct { + __IO uint32_t MPRA; /**< Master Privilege Register A, offset: 0x0 */ + uint8_t RESERVED_0[28]; + __IO uint32_t PACRA; /**< Peripheral Access Control Register, offset: 0x20 */ + __IO uint32_t PACRB; /**< Peripheral Access Control Register, offset: 0x24 */ + __IO uint32_t PACRC; /**< Peripheral Access Control Register, offset: 0x28 */ + __IO uint32_t PACRD; /**< Peripheral Access Control Register, offset: 0x2C */ + uint8_t RESERVED_1[16]; + __IO uint32_t PACRE; /**< Peripheral Access Control Register, offset: 0x40 */ + __IO uint32_t PACRF; /**< Peripheral Access Control Register, offset: 0x44 */ + __IO uint32_t PACRG; /**< Peripheral Access Control Register, offset: 0x48 */ + __IO uint32_t PACRH; /**< Peripheral Access Control Register, offset: 0x4C */ + __IO uint32_t PACRI; /**< Peripheral Access Control Register, offset: 0x50 */ + __IO uint32_t PACRJ; /**< Peripheral Access Control Register, offset: 0x54 */ + __IO uint32_t PACRK; /**< Peripheral Access Control Register, offset: 0x58 */ + __IO uint32_t PACRL; /**< Peripheral Access Control Register, offset: 0x5C */ + __IO uint32_t PACRM; /**< Peripheral Access Control Register, offset: 0x60 */ + __IO uint32_t PACRN; /**< Peripheral Access Control Register, offset: 0x64 */ + __IO uint32_t PACRO; /**< Peripheral Access Control Register, offset: 0x68 */ + __IO uint32_t PACRP; /**< Peripheral Access Control Register, offset: 0x6C */ + uint8_t RESERVED_2[16]; + __IO uint32_t PACRU; /**< Peripheral Access Control Register, offset: 0x80 */ +} AIPS_Type, *AIPS_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- AIPS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AIPS_Register_Accessor_Macros AIPS - Register accessor macros + * @{ + */ + + +/* AIPS - Register accessors */ +#define AIPS_MPRA_REG(base) ((base)->MPRA) +#define AIPS_PACRA_REG(base) ((base)->PACRA) +#define AIPS_PACRB_REG(base) ((base)->PACRB) +#define AIPS_PACRC_REG(base) ((base)->PACRC) +#define AIPS_PACRD_REG(base) ((base)->PACRD) +#define AIPS_PACRE_REG(base) ((base)->PACRE) +#define AIPS_PACRF_REG(base) ((base)->PACRF) +#define AIPS_PACRG_REG(base) ((base)->PACRG) +#define AIPS_PACRH_REG(base) ((base)->PACRH) +#define AIPS_PACRI_REG(base) ((base)->PACRI) +#define AIPS_PACRJ_REG(base) ((base)->PACRJ) +#define AIPS_PACRK_REG(base) ((base)->PACRK) +#define AIPS_PACRL_REG(base) ((base)->PACRL) +#define AIPS_PACRM_REG(base) ((base)->PACRM) +#define AIPS_PACRN_REG(base) ((base)->PACRN) +#define AIPS_PACRO_REG(base) ((base)->PACRO) +#define AIPS_PACRP_REG(base) ((base)->PACRP) +#define AIPS_PACRU_REG(base) ((base)->PACRU) + +/*! + * @} + */ /* end of group AIPS_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- AIPS Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AIPS_Register_Masks AIPS Register Masks + * @{ + */ + +/* MPRA Bit Fields */ +#define AIPS_MPRA_MPL5_MASK 0x100u +#define AIPS_MPRA_MPL5_SHIFT 8 +#define AIPS_MPRA_MTW5_MASK 0x200u +#define AIPS_MPRA_MTW5_SHIFT 9 +#define AIPS_MPRA_MTR5_MASK 0x400u +#define AIPS_MPRA_MTR5_SHIFT 10 +#define AIPS_MPRA_MPL4_MASK 0x1000u +#define AIPS_MPRA_MPL4_SHIFT 12 +#define AIPS_MPRA_MTW4_MASK 0x2000u +#define AIPS_MPRA_MTW4_SHIFT 13 +#define AIPS_MPRA_MTR4_MASK 0x4000u +#define AIPS_MPRA_MTR4_SHIFT 14 +#define AIPS_MPRA_MPL3_MASK 0x10000u +#define AIPS_MPRA_MPL3_SHIFT 16 +#define AIPS_MPRA_MTW3_MASK 0x20000u +#define AIPS_MPRA_MTW3_SHIFT 17 +#define AIPS_MPRA_MTR3_MASK 0x40000u +#define AIPS_MPRA_MTR3_SHIFT 18 +#define AIPS_MPRA_MPL2_MASK 0x100000u +#define AIPS_MPRA_MPL2_SHIFT 20 +#define AIPS_MPRA_MTW2_MASK 0x200000u +#define AIPS_MPRA_MTW2_SHIFT 21 +#define AIPS_MPRA_MTR2_MASK 0x400000u +#define AIPS_MPRA_MTR2_SHIFT 22 +#define AIPS_MPRA_MPL1_MASK 0x1000000u +#define AIPS_MPRA_MPL1_SHIFT 24 +#define AIPS_MPRA_MTW1_MASK 0x2000000u +#define AIPS_MPRA_MTW1_SHIFT 25 +#define AIPS_MPRA_MTR1_MASK 0x4000000u +#define AIPS_MPRA_MTR1_SHIFT 26 +#define AIPS_MPRA_MPL0_MASK 0x10000000u +#define AIPS_MPRA_MPL0_SHIFT 28 +#define AIPS_MPRA_MTW0_MASK 0x20000000u +#define AIPS_MPRA_MTW0_SHIFT 29 +#define AIPS_MPRA_MTR0_MASK 0x40000000u +#define AIPS_MPRA_MTR0_SHIFT 30 +/* PACRA Bit Fields */ +#define AIPS_PACRA_TP7_MASK 0x1u +#define AIPS_PACRA_TP7_SHIFT 0 +#define AIPS_PACRA_WP7_MASK 0x2u +#define AIPS_PACRA_WP7_SHIFT 1 +#define AIPS_PACRA_SP7_MASK 0x4u +#define AIPS_PACRA_SP7_SHIFT 2 +#define AIPS_PACRA_TP6_MASK 0x10u +#define AIPS_PACRA_TP6_SHIFT 4 +#define AIPS_PACRA_WP6_MASK 0x20u +#define AIPS_PACRA_WP6_SHIFT 5 +#define AIPS_PACRA_SP6_MASK 0x40u +#define AIPS_PACRA_SP6_SHIFT 6 +#define AIPS_PACRA_TP5_MASK 0x100u +#define AIPS_PACRA_TP5_SHIFT 8 +#define AIPS_PACRA_WP5_MASK 0x200u +#define AIPS_PACRA_WP5_SHIFT 9 +#define AIPS_PACRA_SP5_MASK 0x400u +#define AIPS_PACRA_SP5_SHIFT 10 +#define AIPS_PACRA_TP4_MASK 0x1000u +#define AIPS_PACRA_TP4_SHIFT 12 +#define AIPS_PACRA_WP4_MASK 0x2000u +#define AIPS_PACRA_WP4_SHIFT 13 +#define AIPS_PACRA_SP4_MASK 0x4000u +#define AIPS_PACRA_SP4_SHIFT 14 +#define AIPS_PACRA_TP3_MASK 0x10000u +#define AIPS_PACRA_TP3_SHIFT 16 +#define AIPS_PACRA_WP3_MASK 0x20000u +#define AIPS_PACRA_WP3_SHIFT 17 +#define AIPS_PACRA_SP3_MASK 0x40000u +#define AIPS_PACRA_SP3_SHIFT 18 +#define AIPS_PACRA_TP2_MASK 0x100000u +#define AIPS_PACRA_TP2_SHIFT 20 +#define AIPS_PACRA_WP2_MASK 0x200000u +#define AIPS_PACRA_WP2_SHIFT 21 +#define AIPS_PACRA_SP2_MASK 0x400000u +#define AIPS_PACRA_SP2_SHIFT 22 +#define AIPS_PACRA_TP1_MASK 0x1000000u +#define AIPS_PACRA_TP1_SHIFT 24 +#define AIPS_PACRA_WP1_MASK 0x2000000u +#define AIPS_PACRA_WP1_SHIFT 25 +#define AIPS_PACRA_SP1_MASK 0x4000000u +#define AIPS_PACRA_SP1_SHIFT 26 +#define AIPS_PACRA_TP0_MASK 0x10000000u +#define AIPS_PACRA_TP0_SHIFT 28 +#define AIPS_PACRA_WP0_MASK 0x20000000u +#define AIPS_PACRA_WP0_SHIFT 29 +#define AIPS_PACRA_SP0_MASK 0x40000000u +#define AIPS_PACRA_SP0_SHIFT 30 +/* PACRB Bit Fields */ +#define AIPS_PACRB_TP7_MASK 0x1u +#define AIPS_PACRB_TP7_SHIFT 0 +#define AIPS_PACRB_WP7_MASK 0x2u +#define AIPS_PACRB_WP7_SHIFT 1 +#define AIPS_PACRB_SP7_MASK 0x4u +#define AIPS_PACRB_SP7_SHIFT 2 +#define AIPS_PACRB_TP6_MASK 0x10u +#define AIPS_PACRB_TP6_SHIFT 4 +#define AIPS_PACRB_WP6_MASK 0x20u +#define AIPS_PACRB_WP6_SHIFT 5 +#define AIPS_PACRB_SP6_MASK 0x40u +#define AIPS_PACRB_SP6_SHIFT 6 +#define AIPS_PACRB_TP5_MASK 0x100u +#define AIPS_PACRB_TP5_SHIFT 8 +#define AIPS_PACRB_WP5_MASK 0x200u +#define AIPS_PACRB_WP5_SHIFT 9 +#define AIPS_PACRB_SP5_MASK 0x400u +#define AIPS_PACRB_SP5_SHIFT 10 +#define AIPS_PACRB_TP4_MASK 0x1000u +#define AIPS_PACRB_TP4_SHIFT 12 +#define AIPS_PACRB_WP4_MASK 0x2000u +#define AIPS_PACRB_WP4_SHIFT 13 +#define AIPS_PACRB_SP4_MASK 0x4000u +#define AIPS_PACRB_SP4_SHIFT 14 +#define AIPS_PACRB_TP3_MASK 0x10000u +#define AIPS_PACRB_TP3_SHIFT 16 +#define AIPS_PACRB_WP3_MASK 0x20000u +#define AIPS_PACRB_WP3_SHIFT 17 +#define AIPS_PACRB_SP3_MASK 0x40000u +#define AIPS_PACRB_SP3_SHIFT 18 +#define AIPS_PACRB_TP2_MASK 0x100000u +#define AIPS_PACRB_TP2_SHIFT 20 +#define AIPS_PACRB_WP2_MASK 0x200000u +#define AIPS_PACRB_WP2_SHIFT 21 +#define AIPS_PACRB_SP2_MASK 0x400000u +#define AIPS_PACRB_SP2_SHIFT 22 +#define AIPS_PACRB_TP1_MASK 0x1000000u +#define AIPS_PACRB_TP1_SHIFT 24 +#define AIPS_PACRB_WP1_MASK 0x2000000u +#define AIPS_PACRB_WP1_SHIFT 25 +#define AIPS_PACRB_SP1_MASK 0x4000000u +#define AIPS_PACRB_SP1_SHIFT 26 +#define AIPS_PACRB_TP0_MASK 0x10000000u +#define AIPS_PACRB_TP0_SHIFT 28 +#define AIPS_PACRB_WP0_MASK 0x20000000u +#define AIPS_PACRB_WP0_SHIFT 29 +#define AIPS_PACRB_SP0_MASK 0x40000000u +#define AIPS_PACRB_SP0_SHIFT 30 +/* PACRC Bit Fields */ +#define AIPS_PACRC_TP7_MASK 0x1u +#define AIPS_PACRC_TP7_SHIFT 0 +#define AIPS_PACRC_WP7_MASK 0x2u +#define AIPS_PACRC_WP7_SHIFT 1 +#define AIPS_PACRC_SP7_MASK 0x4u +#define AIPS_PACRC_SP7_SHIFT 2 +#define AIPS_PACRC_TP6_MASK 0x10u +#define AIPS_PACRC_TP6_SHIFT 4 +#define AIPS_PACRC_WP6_MASK 0x20u +#define AIPS_PACRC_WP6_SHIFT 5 +#define AIPS_PACRC_SP6_MASK 0x40u +#define AIPS_PACRC_SP6_SHIFT 6 +#define AIPS_PACRC_TP5_MASK 0x100u +#define AIPS_PACRC_TP5_SHIFT 8 +#define AIPS_PACRC_WP5_MASK 0x200u +#define AIPS_PACRC_WP5_SHIFT 9 +#define AIPS_PACRC_SP5_MASK 0x400u +#define AIPS_PACRC_SP5_SHIFT 10 +#define AIPS_PACRC_TP4_MASK 0x1000u +#define AIPS_PACRC_TP4_SHIFT 12 +#define AIPS_PACRC_WP4_MASK 0x2000u +#define AIPS_PACRC_WP4_SHIFT 13 +#define AIPS_PACRC_SP4_MASK 0x4000u +#define AIPS_PACRC_SP4_SHIFT 14 +#define AIPS_PACRC_TP3_MASK 0x10000u +#define AIPS_PACRC_TP3_SHIFT 16 +#define AIPS_PACRC_WP3_MASK 0x20000u +#define AIPS_PACRC_WP3_SHIFT 17 +#define AIPS_PACRC_SP3_MASK 0x40000u +#define AIPS_PACRC_SP3_SHIFT 18 +#define AIPS_PACRC_TP2_MASK 0x100000u +#define AIPS_PACRC_TP2_SHIFT 20 +#define AIPS_PACRC_WP2_MASK 0x200000u +#define AIPS_PACRC_WP2_SHIFT 21 +#define AIPS_PACRC_SP2_MASK 0x400000u +#define AIPS_PACRC_SP2_SHIFT 22 +#define AIPS_PACRC_TP1_MASK 0x1000000u +#define AIPS_PACRC_TP1_SHIFT 24 +#define AIPS_PACRC_WP1_MASK 0x2000000u +#define AIPS_PACRC_WP1_SHIFT 25 +#define AIPS_PACRC_SP1_MASK 0x4000000u +#define AIPS_PACRC_SP1_SHIFT 26 +#define AIPS_PACRC_TP0_MASK 0x10000000u +#define AIPS_PACRC_TP0_SHIFT 28 +#define AIPS_PACRC_WP0_MASK 0x20000000u +#define AIPS_PACRC_WP0_SHIFT 29 +#define AIPS_PACRC_SP0_MASK 0x40000000u +#define AIPS_PACRC_SP0_SHIFT 30 +/* PACRD Bit Fields */ +#define AIPS_PACRD_TP7_MASK 0x1u +#define AIPS_PACRD_TP7_SHIFT 0 +#define AIPS_PACRD_WP7_MASK 0x2u +#define AIPS_PACRD_WP7_SHIFT 1 +#define AIPS_PACRD_SP7_MASK 0x4u +#define AIPS_PACRD_SP7_SHIFT 2 +#define AIPS_PACRD_TP6_MASK 0x10u +#define AIPS_PACRD_TP6_SHIFT 4 +#define AIPS_PACRD_WP6_MASK 0x20u +#define AIPS_PACRD_WP6_SHIFT 5 +#define AIPS_PACRD_SP6_MASK 0x40u +#define AIPS_PACRD_SP6_SHIFT 6 +#define AIPS_PACRD_TP5_MASK 0x100u +#define AIPS_PACRD_TP5_SHIFT 8 +#define AIPS_PACRD_WP5_MASK 0x200u +#define AIPS_PACRD_WP5_SHIFT 9 +#define AIPS_PACRD_SP5_MASK 0x400u +#define AIPS_PACRD_SP5_SHIFT 10 +#define AIPS_PACRD_TP4_MASK 0x1000u +#define AIPS_PACRD_TP4_SHIFT 12 +#define AIPS_PACRD_WP4_MASK 0x2000u +#define AIPS_PACRD_WP4_SHIFT 13 +#define AIPS_PACRD_SP4_MASK 0x4000u +#define AIPS_PACRD_SP4_SHIFT 14 +#define AIPS_PACRD_TP3_MASK 0x10000u +#define AIPS_PACRD_TP3_SHIFT 16 +#define AIPS_PACRD_WP3_MASK 0x20000u +#define AIPS_PACRD_WP3_SHIFT 17 +#define AIPS_PACRD_SP3_MASK 0x40000u +#define AIPS_PACRD_SP3_SHIFT 18 +#define AIPS_PACRD_TP2_MASK 0x100000u +#define AIPS_PACRD_TP2_SHIFT 20 +#define AIPS_PACRD_WP2_MASK 0x200000u +#define AIPS_PACRD_WP2_SHIFT 21 +#define AIPS_PACRD_SP2_MASK 0x400000u +#define AIPS_PACRD_SP2_SHIFT 22 +#define AIPS_PACRD_TP1_MASK 0x1000000u +#define AIPS_PACRD_TP1_SHIFT 24 +#define AIPS_PACRD_WP1_MASK 0x2000000u +#define AIPS_PACRD_WP1_SHIFT 25 +#define AIPS_PACRD_SP1_MASK 0x4000000u +#define AIPS_PACRD_SP1_SHIFT 26 +#define AIPS_PACRD_TP0_MASK 0x10000000u +#define AIPS_PACRD_TP0_SHIFT 28 +#define AIPS_PACRD_WP0_MASK 0x20000000u +#define AIPS_PACRD_WP0_SHIFT 29 +#define AIPS_PACRD_SP0_MASK 0x40000000u +#define AIPS_PACRD_SP0_SHIFT 30 +/* PACRE Bit Fields */ +#define AIPS_PACRE_TP7_MASK 0x1u +#define AIPS_PACRE_TP7_SHIFT 0 +#define AIPS_PACRE_WP7_MASK 0x2u +#define AIPS_PACRE_WP7_SHIFT 1 +#define AIPS_PACRE_SP7_MASK 0x4u +#define AIPS_PACRE_SP7_SHIFT 2 +#define AIPS_PACRE_TP6_MASK 0x10u +#define AIPS_PACRE_TP6_SHIFT 4 +#define AIPS_PACRE_WP6_MASK 0x20u +#define AIPS_PACRE_WP6_SHIFT 5 +#define AIPS_PACRE_SP6_MASK 0x40u +#define AIPS_PACRE_SP6_SHIFT 6 +#define AIPS_PACRE_TP5_MASK 0x100u +#define AIPS_PACRE_TP5_SHIFT 8 +#define AIPS_PACRE_WP5_MASK 0x200u +#define AIPS_PACRE_WP5_SHIFT 9 +#define AIPS_PACRE_SP5_MASK 0x400u +#define AIPS_PACRE_SP5_SHIFT 10 +#define AIPS_PACRE_TP4_MASK 0x1000u +#define AIPS_PACRE_TP4_SHIFT 12 +#define AIPS_PACRE_WP4_MASK 0x2000u +#define AIPS_PACRE_WP4_SHIFT 13 +#define AIPS_PACRE_SP4_MASK 0x4000u +#define AIPS_PACRE_SP4_SHIFT 14 +#define AIPS_PACRE_TP3_MASK 0x10000u +#define AIPS_PACRE_TP3_SHIFT 16 +#define AIPS_PACRE_WP3_MASK 0x20000u +#define AIPS_PACRE_WP3_SHIFT 17 +#define AIPS_PACRE_SP3_MASK 0x40000u +#define AIPS_PACRE_SP3_SHIFT 18 +#define AIPS_PACRE_TP2_MASK 0x100000u +#define AIPS_PACRE_TP2_SHIFT 20 +#define AIPS_PACRE_WP2_MASK 0x200000u +#define AIPS_PACRE_WP2_SHIFT 21 +#define AIPS_PACRE_SP2_MASK 0x400000u +#define AIPS_PACRE_SP2_SHIFT 22 +#define AIPS_PACRE_TP1_MASK 0x1000000u +#define AIPS_PACRE_TP1_SHIFT 24 +#define AIPS_PACRE_WP1_MASK 0x2000000u +#define AIPS_PACRE_WP1_SHIFT 25 +#define AIPS_PACRE_SP1_MASK 0x4000000u +#define AIPS_PACRE_SP1_SHIFT 26 +#define AIPS_PACRE_TP0_MASK 0x10000000u +#define AIPS_PACRE_TP0_SHIFT 28 +#define AIPS_PACRE_WP0_MASK 0x20000000u +#define AIPS_PACRE_WP0_SHIFT 29 +#define AIPS_PACRE_SP0_MASK 0x40000000u +#define AIPS_PACRE_SP0_SHIFT 30 +/* PACRF Bit Fields */ +#define AIPS_PACRF_TP7_MASK 0x1u +#define AIPS_PACRF_TP7_SHIFT 0 +#define AIPS_PACRF_WP7_MASK 0x2u +#define AIPS_PACRF_WP7_SHIFT 1 +#define AIPS_PACRF_SP7_MASK 0x4u +#define AIPS_PACRF_SP7_SHIFT 2 +#define AIPS_PACRF_TP6_MASK 0x10u +#define AIPS_PACRF_TP6_SHIFT 4 +#define AIPS_PACRF_WP6_MASK 0x20u +#define AIPS_PACRF_WP6_SHIFT 5 +#define AIPS_PACRF_SP6_MASK 0x40u +#define AIPS_PACRF_SP6_SHIFT 6 +#define AIPS_PACRF_TP5_MASK 0x100u +#define AIPS_PACRF_TP5_SHIFT 8 +#define AIPS_PACRF_WP5_MASK 0x200u +#define AIPS_PACRF_WP5_SHIFT 9 +#define AIPS_PACRF_SP5_MASK 0x400u +#define AIPS_PACRF_SP5_SHIFT 10 +#define AIPS_PACRF_TP4_MASK 0x1000u +#define AIPS_PACRF_TP4_SHIFT 12 +#define AIPS_PACRF_WP4_MASK 0x2000u +#define AIPS_PACRF_WP4_SHIFT 13 +#define AIPS_PACRF_SP4_MASK 0x4000u +#define AIPS_PACRF_SP4_SHIFT 14 +#define AIPS_PACRF_TP3_MASK 0x10000u +#define AIPS_PACRF_TP3_SHIFT 16 +#define AIPS_PACRF_WP3_MASK 0x20000u +#define AIPS_PACRF_WP3_SHIFT 17 +#define AIPS_PACRF_SP3_MASK 0x40000u +#define AIPS_PACRF_SP3_SHIFT 18 +#define AIPS_PACRF_TP2_MASK 0x100000u +#define AIPS_PACRF_TP2_SHIFT 20 +#define AIPS_PACRF_WP2_MASK 0x200000u +#define AIPS_PACRF_WP2_SHIFT 21 +#define AIPS_PACRF_SP2_MASK 0x400000u +#define AIPS_PACRF_SP2_SHIFT 22 +#define AIPS_PACRF_TP1_MASK 0x1000000u +#define AIPS_PACRF_TP1_SHIFT 24 +#define AIPS_PACRF_WP1_MASK 0x2000000u +#define AIPS_PACRF_WP1_SHIFT 25 +#define AIPS_PACRF_SP1_MASK 0x4000000u +#define AIPS_PACRF_SP1_SHIFT 26 +#define AIPS_PACRF_TP0_MASK 0x10000000u +#define AIPS_PACRF_TP0_SHIFT 28 +#define AIPS_PACRF_WP0_MASK 0x20000000u +#define AIPS_PACRF_WP0_SHIFT 29 +#define AIPS_PACRF_SP0_MASK 0x40000000u +#define AIPS_PACRF_SP0_SHIFT 30 +/* PACRG Bit Fields */ +#define AIPS_PACRG_TP7_MASK 0x1u +#define AIPS_PACRG_TP7_SHIFT 0 +#define AIPS_PACRG_WP7_MASK 0x2u +#define AIPS_PACRG_WP7_SHIFT 1 +#define AIPS_PACRG_SP7_MASK 0x4u +#define AIPS_PACRG_SP7_SHIFT 2 +#define AIPS_PACRG_TP6_MASK 0x10u +#define AIPS_PACRG_TP6_SHIFT 4 +#define AIPS_PACRG_WP6_MASK 0x20u +#define AIPS_PACRG_WP6_SHIFT 5 +#define AIPS_PACRG_SP6_MASK 0x40u +#define AIPS_PACRG_SP6_SHIFT 6 +#define AIPS_PACRG_TP5_MASK 0x100u +#define AIPS_PACRG_TP5_SHIFT 8 +#define AIPS_PACRG_WP5_MASK 0x200u +#define AIPS_PACRG_WP5_SHIFT 9 +#define AIPS_PACRG_SP5_MASK 0x400u +#define AIPS_PACRG_SP5_SHIFT 10 +#define AIPS_PACRG_TP4_MASK 0x1000u +#define AIPS_PACRG_TP4_SHIFT 12 +#define AIPS_PACRG_WP4_MASK 0x2000u +#define AIPS_PACRG_WP4_SHIFT 13 +#define AIPS_PACRG_SP4_MASK 0x4000u +#define AIPS_PACRG_SP4_SHIFT 14 +#define AIPS_PACRG_TP3_MASK 0x10000u +#define AIPS_PACRG_TP3_SHIFT 16 +#define AIPS_PACRG_WP3_MASK 0x20000u +#define AIPS_PACRG_WP3_SHIFT 17 +#define AIPS_PACRG_SP3_MASK 0x40000u +#define AIPS_PACRG_SP3_SHIFT 18 +#define AIPS_PACRG_TP2_MASK 0x100000u +#define AIPS_PACRG_TP2_SHIFT 20 +#define AIPS_PACRG_WP2_MASK 0x200000u +#define AIPS_PACRG_WP2_SHIFT 21 +#define AIPS_PACRG_SP2_MASK 0x400000u +#define AIPS_PACRG_SP2_SHIFT 22 +#define AIPS_PACRG_TP1_MASK 0x1000000u +#define AIPS_PACRG_TP1_SHIFT 24 +#define AIPS_PACRG_WP1_MASK 0x2000000u +#define AIPS_PACRG_WP1_SHIFT 25 +#define AIPS_PACRG_SP1_MASK 0x4000000u +#define AIPS_PACRG_SP1_SHIFT 26 +#define AIPS_PACRG_TP0_MASK 0x10000000u +#define AIPS_PACRG_TP0_SHIFT 28 +#define AIPS_PACRG_WP0_MASK 0x20000000u +#define AIPS_PACRG_WP0_SHIFT 29 +#define AIPS_PACRG_SP0_MASK 0x40000000u +#define AIPS_PACRG_SP0_SHIFT 30 +/* PACRH Bit Fields */ +#define AIPS_PACRH_TP7_MASK 0x1u +#define AIPS_PACRH_TP7_SHIFT 0 +#define AIPS_PACRH_WP7_MASK 0x2u +#define AIPS_PACRH_WP7_SHIFT 1 +#define AIPS_PACRH_SP7_MASK 0x4u +#define AIPS_PACRH_SP7_SHIFT 2 +#define AIPS_PACRH_TP6_MASK 0x10u +#define AIPS_PACRH_TP6_SHIFT 4 +#define AIPS_PACRH_WP6_MASK 0x20u +#define AIPS_PACRH_WP6_SHIFT 5 +#define AIPS_PACRH_SP6_MASK 0x40u +#define AIPS_PACRH_SP6_SHIFT 6 +#define AIPS_PACRH_TP5_MASK 0x100u +#define AIPS_PACRH_TP5_SHIFT 8 +#define AIPS_PACRH_WP5_MASK 0x200u +#define AIPS_PACRH_WP5_SHIFT 9 +#define AIPS_PACRH_SP5_MASK 0x400u +#define AIPS_PACRH_SP5_SHIFT 10 +#define AIPS_PACRH_TP4_MASK 0x1000u +#define AIPS_PACRH_TP4_SHIFT 12 +#define AIPS_PACRH_WP4_MASK 0x2000u +#define AIPS_PACRH_WP4_SHIFT 13 +#define AIPS_PACRH_SP4_MASK 0x4000u +#define AIPS_PACRH_SP4_SHIFT 14 +#define AIPS_PACRH_TP3_MASK 0x10000u +#define AIPS_PACRH_TP3_SHIFT 16 +#define AIPS_PACRH_WP3_MASK 0x20000u +#define AIPS_PACRH_WP3_SHIFT 17 +#define AIPS_PACRH_SP3_MASK 0x40000u +#define AIPS_PACRH_SP3_SHIFT 18 +#define AIPS_PACRH_TP2_MASK 0x100000u +#define AIPS_PACRH_TP2_SHIFT 20 +#define AIPS_PACRH_WP2_MASK 0x200000u +#define AIPS_PACRH_WP2_SHIFT 21 +#define AIPS_PACRH_SP2_MASK 0x400000u +#define AIPS_PACRH_SP2_SHIFT 22 +#define AIPS_PACRH_TP1_MASK 0x1000000u +#define AIPS_PACRH_TP1_SHIFT 24 +#define AIPS_PACRH_WP1_MASK 0x2000000u +#define AIPS_PACRH_WP1_SHIFT 25 +#define AIPS_PACRH_SP1_MASK 0x4000000u +#define AIPS_PACRH_SP1_SHIFT 26 +#define AIPS_PACRH_TP0_MASK 0x10000000u +#define AIPS_PACRH_TP0_SHIFT 28 +#define AIPS_PACRH_WP0_MASK 0x20000000u +#define AIPS_PACRH_WP0_SHIFT 29 +#define AIPS_PACRH_SP0_MASK 0x40000000u +#define AIPS_PACRH_SP0_SHIFT 30 +/* PACRI Bit Fields */ +#define AIPS_PACRI_TP7_MASK 0x1u +#define AIPS_PACRI_TP7_SHIFT 0 +#define AIPS_PACRI_WP7_MASK 0x2u +#define AIPS_PACRI_WP7_SHIFT 1 +#define AIPS_PACRI_SP7_MASK 0x4u +#define AIPS_PACRI_SP7_SHIFT 2 +#define AIPS_PACRI_TP6_MASK 0x10u +#define AIPS_PACRI_TP6_SHIFT 4 +#define AIPS_PACRI_WP6_MASK 0x20u +#define AIPS_PACRI_WP6_SHIFT 5 +#define AIPS_PACRI_SP6_MASK 0x40u +#define AIPS_PACRI_SP6_SHIFT 6 +#define AIPS_PACRI_TP5_MASK 0x100u +#define AIPS_PACRI_TP5_SHIFT 8 +#define AIPS_PACRI_WP5_MASK 0x200u +#define AIPS_PACRI_WP5_SHIFT 9 +#define AIPS_PACRI_SP5_MASK 0x400u +#define AIPS_PACRI_SP5_SHIFT 10 +#define AIPS_PACRI_TP4_MASK 0x1000u +#define AIPS_PACRI_TP4_SHIFT 12 +#define AIPS_PACRI_WP4_MASK 0x2000u +#define AIPS_PACRI_WP4_SHIFT 13 +#define AIPS_PACRI_SP4_MASK 0x4000u +#define AIPS_PACRI_SP4_SHIFT 14 +#define AIPS_PACRI_TP3_MASK 0x10000u +#define AIPS_PACRI_TP3_SHIFT 16 +#define AIPS_PACRI_WP3_MASK 0x20000u +#define AIPS_PACRI_WP3_SHIFT 17 +#define AIPS_PACRI_SP3_MASK 0x40000u +#define AIPS_PACRI_SP3_SHIFT 18 +#define AIPS_PACRI_TP2_MASK 0x100000u +#define AIPS_PACRI_TP2_SHIFT 20 +#define AIPS_PACRI_WP2_MASK 0x200000u +#define AIPS_PACRI_WP2_SHIFT 21 +#define AIPS_PACRI_SP2_MASK 0x400000u +#define AIPS_PACRI_SP2_SHIFT 22 +#define AIPS_PACRI_TP1_MASK 0x1000000u +#define AIPS_PACRI_TP1_SHIFT 24 +#define AIPS_PACRI_WP1_MASK 0x2000000u +#define AIPS_PACRI_WP1_SHIFT 25 +#define AIPS_PACRI_SP1_MASK 0x4000000u +#define AIPS_PACRI_SP1_SHIFT 26 +#define AIPS_PACRI_TP0_MASK 0x10000000u +#define AIPS_PACRI_TP0_SHIFT 28 +#define AIPS_PACRI_WP0_MASK 0x20000000u +#define AIPS_PACRI_WP0_SHIFT 29 +#define AIPS_PACRI_SP0_MASK 0x40000000u +#define AIPS_PACRI_SP0_SHIFT 30 +/* PACRJ Bit Fields */ +#define AIPS_PACRJ_TP7_MASK 0x1u +#define AIPS_PACRJ_TP7_SHIFT 0 +#define AIPS_PACRJ_WP7_MASK 0x2u +#define AIPS_PACRJ_WP7_SHIFT 1 +#define AIPS_PACRJ_SP7_MASK 0x4u +#define AIPS_PACRJ_SP7_SHIFT 2 +#define AIPS_PACRJ_TP6_MASK 0x10u +#define AIPS_PACRJ_TP6_SHIFT 4 +#define AIPS_PACRJ_WP6_MASK 0x20u +#define AIPS_PACRJ_WP6_SHIFT 5 +#define AIPS_PACRJ_SP6_MASK 0x40u +#define AIPS_PACRJ_SP6_SHIFT 6 +#define AIPS_PACRJ_TP5_MASK 0x100u +#define AIPS_PACRJ_TP5_SHIFT 8 +#define AIPS_PACRJ_WP5_MASK 0x200u +#define AIPS_PACRJ_WP5_SHIFT 9 +#define AIPS_PACRJ_SP5_MASK 0x400u +#define AIPS_PACRJ_SP5_SHIFT 10 +#define AIPS_PACRJ_TP4_MASK 0x1000u +#define AIPS_PACRJ_TP4_SHIFT 12 +#define AIPS_PACRJ_WP4_MASK 0x2000u +#define AIPS_PACRJ_WP4_SHIFT 13 +#define AIPS_PACRJ_SP4_MASK 0x4000u +#define AIPS_PACRJ_SP4_SHIFT 14 +#define AIPS_PACRJ_TP3_MASK 0x10000u +#define AIPS_PACRJ_TP3_SHIFT 16 +#define AIPS_PACRJ_WP3_MASK 0x20000u +#define AIPS_PACRJ_WP3_SHIFT 17 +#define AIPS_PACRJ_SP3_MASK 0x40000u +#define AIPS_PACRJ_SP3_SHIFT 18 +#define AIPS_PACRJ_TP2_MASK 0x100000u +#define AIPS_PACRJ_TP2_SHIFT 20 +#define AIPS_PACRJ_WP2_MASK 0x200000u +#define AIPS_PACRJ_WP2_SHIFT 21 +#define AIPS_PACRJ_SP2_MASK 0x400000u +#define AIPS_PACRJ_SP2_SHIFT 22 +#define AIPS_PACRJ_TP1_MASK 0x1000000u +#define AIPS_PACRJ_TP1_SHIFT 24 +#define AIPS_PACRJ_WP1_MASK 0x2000000u +#define AIPS_PACRJ_WP1_SHIFT 25 +#define AIPS_PACRJ_SP1_MASK 0x4000000u +#define AIPS_PACRJ_SP1_SHIFT 26 +#define AIPS_PACRJ_TP0_MASK 0x10000000u +#define AIPS_PACRJ_TP0_SHIFT 28 +#define AIPS_PACRJ_WP0_MASK 0x20000000u +#define AIPS_PACRJ_WP0_SHIFT 29 +#define AIPS_PACRJ_SP0_MASK 0x40000000u +#define AIPS_PACRJ_SP0_SHIFT 30 +/* PACRK Bit Fields */ +#define AIPS_PACRK_TP7_MASK 0x1u +#define AIPS_PACRK_TP7_SHIFT 0 +#define AIPS_PACRK_WP7_MASK 0x2u +#define AIPS_PACRK_WP7_SHIFT 1 +#define AIPS_PACRK_SP7_MASK 0x4u +#define AIPS_PACRK_SP7_SHIFT 2 +#define AIPS_PACRK_TP6_MASK 0x10u +#define AIPS_PACRK_TP6_SHIFT 4 +#define AIPS_PACRK_WP6_MASK 0x20u +#define AIPS_PACRK_WP6_SHIFT 5 +#define AIPS_PACRK_SP6_MASK 0x40u +#define AIPS_PACRK_SP6_SHIFT 6 +#define AIPS_PACRK_TP5_MASK 0x100u +#define AIPS_PACRK_TP5_SHIFT 8 +#define AIPS_PACRK_WP5_MASK 0x200u +#define AIPS_PACRK_WP5_SHIFT 9 +#define AIPS_PACRK_SP5_MASK 0x400u +#define AIPS_PACRK_SP5_SHIFT 10 +#define AIPS_PACRK_TP4_MASK 0x1000u +#define AIPS_PACRK_TP4_SHIFT 12 +#define AIPS_PACRK_WP4_MASK 0x2000u +#define AIPS_PACRK_WP4_SHIFT 13 +#define AIPS_PACRK_SP4_MASK 0x4000u +#define AIPS_PACRK_SP4_SHIFT 14 +#define AIPS_PACRK_TP3_MASK 0x10000u +#define AIPS_PACRK_TP3_SHIFT 16 +#define AIPS_PACRK_WP3_MASK 0x20000u +#define AIPS_PACRK_WP3_SHIFT 17 +#define AIPS_PACRK_SP3_MASK 0x40000u +#define AIPS_PACRK_SP3_SHIFT 18 +#define AIPS_PACRK_TP2_MASK 0x100000u +#define AIPS_PACRK_TP2_SHIFT 20 +#define AIPS_PACRK_WP2_MASK 0x200000u +#define AIPS_PACRK_WP2_SHIFT 21 +#define AIPS_PACRK_SP2_MASK 0x400000u +#define AIPS_PACRK_SP2_SHIFT 22 +#define AIPS_PACRK_TP1_MASK 0x1000000u +#define AIPS_PACRK_TP1_SHIFT 24 +#define AIPS_PACRK_WP1_MASK 0x2000000u +#define AIPS_PACRK_WP1_SHIFT 25 +#define AIPS_PACRK_SP1_MASK 0x4000000u +#define AIPS_PACRK_SP1_SHIFT 26 +#define AIPS_PACRK_TP0_MASK 0x10000000u +#define AIPS_PACRK_TP0_SHIFT 28 +#define AIPS_PACRK_WP0_MASK 0x20000000u +#define AIPS_PACRK_WP0_SHIFT 29 +#define AIPS_PACRK_SP0_MASK 0x40000000u +#define AIPS_PACRK_SP0_SHIFT 30 +/* PACRL Bit Fields */ +#define AIPS_PACRL_TP7_MASK 0x1u +#define AIPS_PACRL_TP7_SHIFT 0 +#define AIPS_PACRL_WP7_MASK 0x2u +#define AIPS_PACRL_WP7_SHIFT 1 +#define AIPS_PACRL_SP7_MASK 0x4u +#define AIPS_PACRL_SP7_SHIFT 2 +#define AIPS_PACRL_TP6_MASK 0x10u +#define AIPS_PACRL_TP6_SHIFT 4 +#define AIPS_PACRL_WP6_MASK 0x20u +#define AIPS_PACRL_WP6_SHIFT 5 +#define AIPS_PACRL_SP6_MASK 0x40u +#define AIPS_PACRL_SP6_SHIFT 6 +#define AIPS_PACRL_TP5_MASK 0x100u +#define AIPS_PACRL_TP5_SHIFT 8 +#define AIPS_PACRL_WP5_MASK 0x200u +#define AIPS_PACRL_WP5_SHIFT 9 +#define AIPS_PACRL_SP5_MASK 0x400u +#define AIPS_PACRL_SP5_SHIFT 10 +#define AIPS_PACRL_TP4_MASK 0x1000u +#define AIPS_PACRL_TP4_SHIFT 12 +#define AIPS_PACRL_WP4_MASK 0x2000u +#define AIPS_PACRL_WP4_SHIFT 13 +#define AIPS_PACRL_SP4_MASK 0x4000u +#define AIPS_PACRL_SP4_SHIFT 14 +#define AIPS_PACRL_TP3_MASK 0x10000u +#define AIPS_PACRL_TP3_SHIFT 16 +#define AIPS_PACRL_WP3_MASK 0x20000u +#define AIPS_PACRL_WP3_SHIFT 17 +#define AIPS_PACRL_SP3_MASK 0x40000u +#define AIPS_PACRL_SP3_SHIFT 18 +#define AIPS_PACRL_TP2_MASK 0x100000u +#define AIPS_PACRL_TP2_SHIFT 20 +#define AIPS_PACRL_WP2_MASK 0x200000u +#define AIPS_PACRL_WP2_SHIFT 21 +#define AIPS_PACRL_SP2_MASK 0x400000u +#define AIPS_PACRL_SP2_SHIFT 22 +#define AIPS_PACRL_TP1_MASK 0x1000000u +#define AIPS_PACRL_TP1_SHIFT 24 +#define AIPS_PACRL_WP1_MASK 0x2000000u +#define AIPS_PACRL_WP1_SHIFT 25 +#define AIPS_PACRL_SP1_MASK 0x4000000u +#define AIPS_PACRL_SP1_SHIFT 26 +#define AIPS_PACRL_TP0_MASK 0x10000000u +#define AIPS_PACRL_TP0_SHIFT 28 +#define AIPS_PACRL_WP0_MASK 0x20000000u +#define AIPS_PACRL_WP0_SHIFT 29 +#define AIPS_PACRL_SP0_MASK 0x40000000u +#define AIPS_PACRL_SP0_SHIFT 30 +/* PACRM Bit Fields */ +#define AIPS_PACRM_TP7_MASK 0x1u +#define AIPS_PACRM_TP7_SHIFT 0 +#define AIPS_PACRM_WP7_MASK 0x2u +#define AIPS_PACRM_WP7_SHIFT 1 +#define AIPS_PACRM_SP7_MASK 0x4u +#define AIPS_PACRM_SP7_SHIFT 2 +#define AIPS_PACRM_TP6_MASK 0x10u +#define AIPS_PACRM_TP6_SHIFT 4 +#define AIPS_PACRM_WP6_MASK 0x20u +#define AIPS_PACRM_WP6_SHIFT 5 +#define AIPS_PACRM_SP6_MASK 0x40u +#define AIPS_PACRM_SP6_SHIFT 6 +#define AIPS_PACRM_TP5_MASK 0x100u +#define AIPS_PACRM_TP5_SHIFT 8 +#define AIPS_PACRM_WP5_MASK 0x200u +#define AIPS_PACRM_WP5_SHIFT 9 +#define AIPS_PACRM_SP5_MASK 0x400u +#define AIPS_PACRM_SP5_SHIFT 10 +#define AIPS_PACRM_TP4_MASK 0x1000u +#define AIPS_PACRM_TP4_SHIFT 12 +#define AIPS_PACRM_WP4_MASK 0x2000u +#define AIPS_PACRM_WP4_SHIFT 13 +#define AIPS_PACRM_SP4_MASK 0x4000u +#define AIPS_PACRM_SP4_SHIFT 14 +#define AIPS_PACRM_TP3_MASK 0x10000u +#define AIPS_PACRM_TP3_SHIFT 16 +#define AIPS_PACRM_WP3_MASK 0x20000u +#define AIPS_PACRM_WP3_SHIFT 17 +#define AIPS_PACRM_SP3_MASK 0x40000u +#define AIPS_PACRM_SP3_SHIFT 18 +#define AIPS_PACRM_TP2_MASK 0x100000u +#define AIPS_PACRM_TP2_SHIFT 20 +#define AIPS_PACRM_WP2_MASK 0x200000u +#define AIPS_PACRM_WP2_SHIFT 21 +#define AIPS_PACRM_SP2_MASK 0x400000u +#define AIPS_PACRM_SP2_SHIFT 22 +#define AIPS_PACRM_TP1_MASK 0x1000000u +#define AIPS_PACRM_TP1_SHIFT 24 +#define AIPS_PACRM_WP1_MASK 0x2000000u +#define AIPS_PACRM_WP1_SHIFT 25 +#define AIPS_PACRM_SP1_MASK 0x4000000u +#define AIPS_PACRM_SP1_SHIFT 26 +#define AIPS_PACRM_TP0_MASK 0x10000000u +#define AIPS_PACRM_TP0_SHIFT 28 +#define AIPS_PACRM_WP0_MASK 0x20000000u +#define AIPS_PACRM_WP0_SHIFT 29 +#define AIPS_PACRM_SP0_MASK 0x40000000u +#define AIPS_PACRM_SP0_SHIFT 30 +/* PACRN Bit Fields */ +#define AIPS_PACRN_TP7_MASK 0x1u +#define AIPS_PACRN_TP7_SHIFT 0 +#define AIPS_PACRN_WP7_MASK 0x2u +#define AIPS_PACRN_WP7_SHIFT 1 +#define AIPS_PACRN_SP7_MASK 0x4u +#define AIPS_PACRN_SP7_SHIFT 2 +#define AIPS_PACRN_TP6_MASK 0x10u +#define AIPS_PACRN_TP6_SHIFT 4 +#define AIPS_PACRN_WP6_MASK 0x20u +#define AIPS_PACRN_WP6_SHIFT 5 +#define AIPS_PACRN_SP6_MASK 0x40u +#define AIPS_PACRN_SP6_SHIFT 6 +#define AIPS_PACRN_TP5_MASK 0x100u +#define AIPS_PACRN_TP5_SHIFT 8 +#define AIPS_PACRN_WP5_MASK 0x200u +#define AIPS_PACRN_WP5_SHIFT 9 +#define AIPS_PACRN_SP5_MASK 0x400u +#define AIPS_PACRN_SP5_SHIFT 10 +#define AIPS_PACRN_TP4_MASK 0x1000u +#define AIPS_PACRN_TP4_SHIFT 12 +#define AIPS_PACRN_WP4_MASK 0x2000u +#define AIPS_PACRN_WP4_SHIFT 13 +#define AIPS_PACRN_SP4_MASK 0x4000u +#define AIPS_PACRN_SP4_SHIFT 14 +#define AIPS_PACRN_TP3_MASK 0x10000u +#define AIPS_PACRN_TP3_SHIFT 16 +#define AIPS_PACRN_WP3_MASK 0x20000u +#define AIPS_PACRN_WP3_SHIFT 17 +#define AIPS_PACRN_SP3_MASK 0x40000u +#define AIPS_PACRN_SP3_SHIFT 18 +#define AIPS_PACRN_TP2_MASK 0x100000u +#define AIPS_PACRN_TP2_SHIFT 20 +#define AIPS_PACRN_WP2_MASK 0x200000u +#define AIPS_PACRN_WP2_SHIFT 21 +#define AIPS_PACRN_SP2_MASK 0x400000u +#define AIPS_PACRN_SP2_SHIFT 22 +#define AIPS_PACRN_TP1_MASK 0x1000000u +#define AIPS_PACRN_TP1_SHIFT 24 +#define AIPS_PACRN_WP1_MASK 0x2000000u +#define AIPS_PACRN_WP1_SHIFT 25 +#define AIPS_PACRN_SP1_MASK 0x4000000u +#define AIPS_PACRN_SP1_SHIFT 26 +#define AIPS_PACRN_TP0_MASK 0x10000000u +#define AIPS_PACRN_TP0_SHIFT 28 +#define AIPS_PACRN_WP0_MASK 0x20000000u +#define AIPS_PACRN_WP0_SHIFT 29 +#define AIPS_PACRN_SP0_MASK 0x40000000u +#define AIPS_PACRN_SP0_SHIFT 30 +/* PACRO Bit Fields */ +#define AIPS_PACRO_TP7_MASK 0x1u +#define AIPS_PACRO_TP7_SHIFT 0 +#define AIPS_PACRO_WP7_MASK 0x2u +#define AIPS_PACRO_WP7_SHIFT 1 +#define AIPS_PACRO_SP7_MASK 0x4u +#define AIPS_PACRO_SP7_SHIFT 2 +#define AIPS_PACRO_TP6_MASK 0x10u +#define AIPS_PACRO_TP6_SHIFT 4 +#define AIPS_PACRO_WP6_MASK 0x20u +#define AIPS_PACRO_WP6_SHIFT 5 +#define AIPS_PACRO_SP6_MASK 0x40u +#define AIPS_PACRO_SP6_SHIFT 6 +#define AIPS_PACRO_TP5_MASK 0x100u +#define AIPS_PACRO_TP5_SHIFT 8 +#define AIPS_PACRO_WP5_MASK 0x200u +#define AIPS_PACRO_WP5_SHIFT 9 +#define AIPS_PACRO_SP5_MASK 0x400u +#define AIPS_PACRO_SP5_SHIFT 10 +#define AIPS_PACRO_TP4_MASK 0x1000u +#define AIPS_PACRO_TP4_SHIFT 12 +#define AIPS_PACRO_WP4_MASK 0x2000u +#define AIPS_PACRO_WP4_SHIFT 13 +#define AIPS_PACRO_SP4_MASK 0x4000u +#define AIPS_PACRO_SP4_SHIFT 14 +#define AIPS_PACRO_TP3_MASK 0x10000u +#define AIPS_PACRO_TP3_SHIFT 16 +#define AIPS_PACRO_WP3_MASK 0x20000u +#define AIPS_PACRO_WP3_SHIFT 17 +#define AIPS_PACRO_SP3_MASK 0x40000u +#define AIPS_PACRO_SP3_SHIFT 18 +#define AIPS_PACRO_TP2_MASK 0x100000u +#define AIPS_PACRO_TP2_SHIFT 20 +#define AIPS_PACRO_WP2_MASK 0x200000u +#define AIPS_PACRO_WP2_SHIFT 21 +#define AIPS_PACRO_SP2_MASK 0x400000u +#define AIPS_PACRO_SP2_SHIFT 22 +#define AIPS_PACRO_TP1_MASK 0x1000000u +#define AIPS_PACRO_TP1_SHIFT 24 +#define AIPS_PACRO_WP1_MASK 0x2000000u +#define AIPS_PACRO_WP1_SHIFT 25 +#define AIPS_PACRO_SP1_MASK 0x4000000u +#define AIPS_PACRO_SP1_SHIFT 26 +#define AIPS_PACRO_TP0_MASK 0x10000000u +#define AIPS_PACRO_TP0_SHIFT 28 +#define AIPS_PACRO_WP0_MASK 0x20000000u +#define AIPS_PACRO_WP0_SHIFT 29 +#define AIPS_PACRO_SP0_MASK 0x40000000u +#define AIPS_PACRO_SP0_SHIFT 30 +/* PACRP Bit Fields */ +#define AIPS_PACRP_TP7_MASK 0x1u +#define AIPS_PACRP_TP7_SHIFT 0 +#define AIPS_PACRP_WP7_MASK 0x2u +#define AIPS_PACRP_WP7_SHIFT 1 +#define AIPS_PACRP_SP7_MASK 0x4u +#define AIPS_PACRP_SP7_SHIFT 2 +#define AIPS_PACRP_TP6_MASK 0x10u +#define AIPS_PACRP_TP6_SHIFT 4 +#define AIPS_PACRP_WP6_MASK 0x20u +#define AIPS_PACRP_WP6_SHIFT 5 +#define AIPS_PACRP_SP6_MASK 0x40u +#define AIPS_PACRP_SP6_SHIFT 6 +#define AIPS_PACRP_TP5_MASK 0x100u +#define AIPS_PACRP_TP5_SHIFT 8 +#define AIPS_PACRP_WP5_MASK 0x200u +#define AIPS_PACRP_WP5_SHIFT 9 +#define AIPS_PACRP_SP5_MASK 0x400u +#define AIPS_PACRP_SP5_SHIFT 10 +#define AIPS_PACRP_TP4_MASK 0x1000u +#define AIPS_PACRP_TP4_SHIFT 12 +#define AIPS_PACRP_WP4_MASK 0x2000u +#define AIPS_PACRP_WP4_SHIFT 13 +#define AIPS_PACRP_SP4_MASK 0x4000u +#define AIPS_PACRP_SP4_SHIFT 14 +#define AIPS_PACRP_TP3_MASK 0x10000u +#define AIPS_PACRP_TP3_SHIFT 16 +#define AIPS_PACRP_WP3_MASK 0x20000u +#define AIPS_PACRP_WP3_SHIFT 17 +#define AIPS_PACRP_SP3_MASK 0x40000u +#define AIPS_PACRP_SP3_SHIFT 18 +#define AIPS_PACRP_TP2_MASK 0x100000u +#define AIPS_PACRP_TP2_SHIFT 20 +#define AIPS_PACRP_WP2_MASK 0x200000u +#define AIPS_PACRP_WP2_SHIFT 21 +#define AIPS_PACRP_SP2_MASK 0x400000u +#define AIPS_PACRP_SP2_SHIFT 22 +#define AIPS_PACRP_TP1_MASK 0x1000000u +#define AIPS_PACRP_TP1_SHIFT 24 +#define AIPS_PACRP_WP1_MASK 0x2000000u +#define AIPS_PACRP_WP1_SHIFT 25 +#define AIPS_PACRP_SP1_MASK 0x4000000u +#define AIPS_PACRP_SP1_SHIFT 26 +#define AIPS_PACRP_TP0_MASK 0x10000000u +#define AIPS_PACRP_TP0_SHIFT 28 +#define AIPS_PACRP_WP0_MASK 0x20000000u +#define AIPS_PACRP_WP0_SHIFT 29 +#define AIPS_PACRP_SP0_MASK 0x40000000u +#define AIPS_PACRP_SP0_SHIFT 30 +/* PACRU Bit Fields */ +#define AIPS_PACRU_TP1_MASK 0x1000000u +#define AIPS_PACRU_TP1_SHIFT 24 +#define AIPS_PACRU_WP1_MASK 0x2000000u +#define AIPS_PACRU_WP1_SHIFT 25 +#define AIPS_PACRU_SP1_MASK 0x4000000u +#define AIPS_PACRU_SP1_SHIFT 26 +#define AIPS_PACRU_TP0_MASK 0x10000000u +#define AIPS_PACRU_TP0_SHIFT 28 +#define AIPS_PACRU_WP0_MASK 0x20000000u +#define AIPS_PACRU_WP0_SHIFT 29 +#define AIPS_PACRU_SP0_MASK 0x40000000u +#define AIPS_PACRU_SP0_SHIFT 30 + +/*! + * @} + */ /* end of group AIPS_Register_Masks */ + + +/* AIPS - Peripheral instance base addresses */ +/** Peripheral AIPS0 base address */ +#define AIPS0_BASE (0x40000000u) +/** Peripheral AIPS0 base pointer */ +#define AIPS0 ((AIPS_Type *)AIPS0_BASE) +#define AIPS0_BASE_PTR (AIPS0) +/** Peripheral AIPS1 base address */ +#define AIPS1_BASE (0x40080000u) +/** Peripheral AIPS1 base pointer */ +#define AIPS1 ((AIPS_Type *)AIPS1_BASE) +#define AIPS1_BASE_PTR (AIPS1) +/** Array initializer of AIPS peripheral base pointers */ +#define AIPS_BASES { AIPS0, AIPS1 } + +/* ---------------------------------------------------------------------------- + -- AIPS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AIPS_Register_Accessor_Macros AIPS - Register accessor macros + * @{ + */ + + +/* AIPS - Register instance definitions */ +/* AIPS0 */ +#define AIPS0_MPRA AIPS_MPRA_REG(AIPS0) +#define AIPS0_PACRA AIPS_PACRA_REG(AIPS0) +#define AIPS0_PACRB AIPS_PACRB_REG(AIPS0) +#define AIPS0_PACRC AIPS_PACRC_REG(AIPS0) +#define AIPS0_PACRD AIPS_PACRD_REG(AIPS0) +#define AIPS0_PACRE AIPS_PACRE_REG(AIPS0) +#define AIPS0_PACRF AIPS_PACRF_REG(AIPS0) +#define AIPS0_PACRG AIPS_PACRG_REG(AIPS0) +#define AIPS0_PACRH AIPS_PACRH_REG(AIPS0) +#define AIPS0_PACRI AIPS_PACRI_REG(AIPS0) +#define AIPS0_PACRJ AIPS_PACRJ_REG(AIPS0) +#define AIPS0_PACRK AIPS_PACRK_REG(AIPS0) +#define AIPS0_PACRL AIPS_PACRL_REG(AIPS0) +#define AIPS0_PACRM AIPS_PACRM_REG(AIPS0) +#define AIPS0_PACRN AIPS_PACRN_REG(AIPS0) +#define AIPS0_PACRO AIPS_PACRO_REG(AIPS0) +#define AIPS0_PACRP AIPS_PACRP_REG(AIPS0) +#define AIPS0_PACRU AIPS_PACRU_REG(AIPS0) +/* AIPS1 */ +#define AIPS1_MPRA AIPS_MPRA_REG(AIPS1) +#define AIPS1_PACRA AIPS_PACRA_REG(AIPS1) +#define AIPS1_PACRB AIPS_PACRB_REG(AIPS1) +#define AIPS1_PACRC AIPS_PACRC_REG(AIPS1) +#define AIPS1_PACRD AIPS_PACRD_REG(AIPS1) +#define AIPS1_PACRE AIPS_PACRE_REG(AIPS1) +#define AIPS1_PACRF AIPS_PACRF_REG(AIPS1) +#define AIPS1_PACRG AIPS_PACRG_REG(AIPS1) +#define AIPS1_PACRH AIPS_PACRH_REG(AIPS1) +#define AIPS1_PACRI AIPS_PACRI_REG(AIPS1) +#define AIPS1_PACRJ AIPS_PACRJ_REG(AIPS1) +#define AIPS1_PACRK AIPS_PACRK_REG(AIPS1) +#define AIPS1_PACRL AIPS_PACRL_REG(AIPS1) +#define AIPS1_PACRM AIPS_PACRM_REG(AIPS1) +#define AIPS1_PACRN AIPS_PACRN_REG(AIPS1) +#define AIPS1_PACRO AIPS_PACRO_REG(AIPS1) +#define AIPS1_PACRP AIPS_PACRP_REG(AIPS1) +#define AIPS1_PACRU AIPS_PACRU_REG(AIPS1) + +/*! + * @} + */ /* end of group AIPS_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group AIPS_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- AXBS Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AXBS_Peripheral_Access_Layer AXBS Peripheral Access Layer + * @{ + */ + +/** AXBS - Register Layout Typedef */ +typedef struct { + struct { /* offset: 0x0, array step: 0x100 */ + __IO uint32_t PRS; /**< Priority Registers Slave, array offset: 0x0, array step: 0x100 */ + uint8_t RESERVED_0[12]; + __IO uint32_t CRS; /**< Control Register, array offset: 0x10, array step: 0x100 */ + uint8_t RESERVED_1[236]; + } SLAVE[5]; + uint8_t RESERVED_0[768]; + __IO uint32_t MGPCR0; /**< Master General Purpose Control Register, offset: 0x800 */ + uint8_t RESERVED_1[252]; + __IO uint32_t MGPCR1; /**< Master General Purpose Control Register, offset: 0x900 */ + uint8_t RESERVED_2[252]; + __IO uint32_t MGPCR2; /**< Master General Purpose Control Register, offset: 0xA00 */ + uint8_t RESERVED_3[252]; + __IO uint32_t MGPCR3; /**< Master General Purpose Control Register, offset: 0xB00 */ + uint8_t RESERVED_4[252]; + __IO uint32_t MGPCR4; /**< Master General Purpose Control Register, offset: 0xC00 */ + uint8_t RESERVED_5[252]; + __IO uint32_t MGPCR5; /**< Master General Purpose Control Register, offset: 0xD00 */ +} AXBS_Type, *AXBS_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- AXBS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AXBS_Register_Accessor_Macros AXBS - Register accessor macros + * @{ + */ + + +/* AXBS - Register accessors */ +#define AXBS_PRS_REG(base,index) ((base)->SLAVE[index].PRS) +#define AXBS_CRS_REG(base,index) ((base)->SLAVE[index].CRS) +#define AXBS_MGPCR0_REG(base) ((base)->MGPCR0) +#define AXBS_MGPCR1_REG(base) ((base)->MGPCR1) +#define AXBS_MGPCR2_REG(base) ((base)->MGPCR2) +#define AXBS_MGPCR3_REG(base) ((base)->MGPCR3) +#define AXBS_MGPCR4_REG(base) ((base)->MGPCR4) +#define AXBS_MGPCR5_REG(base) ((base)->MGPCR5) + +/*! + * @} + */ /* end of group AXBS_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- AXBS Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AXBS_Register_Masks AXBS Register Masks + * @{ + */ + +/* PRS Bit Fields */ +#define AXBS_PRS_M0_MASK 0x7u +#define AXBS_PRS_M0_SHIFT 0 +#define AXBS_PRS_M0(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M0_SHIFT))&AXBS_PRS_M0_MASK) +#define AXBS_PRS_M1_MASK 0x70u +#define AXBS_PRS_M1_SHIFT 4 +#define AXBS_PRS_M1(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M1_SHIFT))&AXBS_PRS_M1_MASK) +#define AXBS_PRS_M2_MASK 0x700u +#define AXBS_PRS_M2_SHIFT 8 +#define AXBS_PRS_M2(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M2_SHIFT))&AXBS_PRS_M2_MASK) +#define AXBS_PRS_M3_MASK 0x7000u +#define AXBS_PRS_M3_SHIFT 12 +#define AXBS_PRS_M3(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M3_SHIFT))&AXBS_PRS_M3_MASK) +#define AXBS_PRS_M4_MASK 0x70000u +#define AXBS_PRS_M4_SHIFT 16 +#define AXBS_PRS_M4(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M4_SHIFT))&AXBS_PRS_M4_MASK) +#define AXBS_PRS_M5_MASK 0x700000u +#define AXBS_PRS_M5_SHIFT 20 +#define AXBS_PRS_M5(x) (((uint32_t)(((uint32_t)(x))<<AXBS_PRS_M5_SHIFT))&AXBS_PRS_M5_MASK) +/* CRS Bit Fields */ +#define AXBS_CRS_PARK_MASK 0x7u +#define AXBS_CRS_PARK_SHIFT 0 +#define AXBS_CRS_PARK(x) (((uint32_t)(((uint32_t)(x))<<AXBS_CRS_PARK_SHIFT))&AXBS_CRS_PARK_MASK) +#define AXBS_CRS_PCTL_MASK 0x30u +#define AXBS_CRS_PCTL_SHIFT 4 +#define AXBS_CRS_PCTL(x) (((uint32_t)(((uint32_t)(x))<<AXBS_CRS_PCTL_SHIFT))&AXBS_CRS_PCTL_MASK) +#define AXBS_CRS_ARB_MASK 0x300u +#define AXBS_CRS_ARB_SHIFT 8 +#define AXBS_CRS_ARB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_CRS_ARB_SHIFT))&AXBS_CRS_ARB_MASK) +#define AXBS_CRS_HLP_MASK 0x40000000u +#define AXBS_CRS_HLP_SHIFT 30 +#define AXBS_CRS_RO_MASK 0x80000000u +#define AXBS_CRS_RO_SHIFT 31 +/* MGPCR0 Bit Fields */ +#define AXBS_MGPCR0_AULB_MASK 0x7u +#define AXBS_MGPCR0_AULB_SHIFT 0 +#define AXBS_MGPCR0_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR0_AULB_SHIFT))&AXBS_MGPCR0_AULB_MASK) +/* MGPCR1 Bit Fields */ +#define AXBS_MGPCR1_AULB_MASK 0x7u +#define AXBS_MGPCR1_AULB_SHIFT 0 +#define AXBS_MGPCR1_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR1_AULB_SHIFT))&AXBS_MGPCR1_AULB_MASK) +/* MGPCR2 Bit Fields */ +#define AXBS_MGPCR2_AULB_MASK 0x7u +#define AXBS_MGPCR2_AULB_SHIFT 0 +#define AXBS_MGPCR2_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR2_AULB_SHIFT))&AXBS_MGPCR2_AULB_MASK) +/* MGPCR3 Bit Fields */ +#define AXBS_MGPCR3_AULB_MASK 0x7u +#define AXBS_MGPCR3_AULB_SHIFT 0 +#define AXBS_MGPCR3_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR3_AULB_SHIFT))&AXBS_MGPCR3_AULB_MASK) +/* MGPCR4 Bit Fields */ +#define AXBS_MGPCR4_AULB_MASK 0x7u +#define AXBS_MGPCR4_AULB_SHIFT 0 +#define AXBS_MGPCR4_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR4_AULB_SHIFT))&AXBS_MGPCR4_AULB_MASK) +/* MGPCR5 Bit Fields */ +#define AXBS_MGPCR5_AULB_MASK 0x7u +#define AXBS_MGPCR5_AULB_SHIFT 0 +#define AXBS_MGPCR5_AULB(x) (((uint32_t)(((uint32_t)(x))<<AXBS_MGPCR5_AULB_SHIFT))&AXBS_MGPCR5_AULB_MASK) + +/*! + * @} + */ /* end of group AXBS_Register_Masks */ + + +/* AXBS - Peripheral instance base addresses */ +/** Peripheral AXBS base address */ +#define AXBS_BASE (0x40004000u) +/** Peripheral AXBS base pointer */ +#define AXBS ((AXBS_Type *)AXBS_BASE) +#define AXBS_BASE_PTR (AXBS) +/** Array initializer of AXBS peripheral base pointers */ +#define AXBS_BASES { AXBS } + +/* ---------------------------------------------------------------------------- + -- AXBS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup AXBS_Register_Accessor_Macros AXBS - Register accessor macros + * @{ + */ + + +/* AXBS - Register instance definitions */ +/* AXBS */ +#define AXBS_PRS0 AXBS_PRS_REG(AXBS,0) +#define AXBS_CRS0 AXBS_CRS_REG(AXBS,0) +#define AXBS_PRS1 AXBS_PRS_REG(AXBS,1) +#define AXBS_CRS1 AXBS_CRS_REG(AXBS,1) +#define AXBS_PRS2 AXBS_PRS_REG(AXBS,2) +#define AXBS_CRS2 AXBS_CRS_REG(AXBS,2) +#define AXBS_PRS3 AXBS_PRS_REG(AXBS,3) +#define AXBS_CRS3 AXBS_CRS_REG(AXBS,3) +#define AXBS_PRS4 AXBS_PRS_REG(AXBS,4) +#define AXBS_CRS4 AXBS_CRS_REG(AXBS,4) +#define AXBS_MGPCR0 AXBS_MGPCR0_REG(AXBS) +#define AXBS_MGPCR1 AXBS_MGPCR1_REG(AXBS) +#define AXBS_MGPCR2 AXBS_MGPCR2_REG(AXBS) +#define AXBS_MGPCR3 AXBS_MGPCR3_REG(AXBS) +#define AXBS_MGPCR4 AXBS_MGPCR4_REG(AXBS) +#define AXBS_MGPCR5 AXBS_MGPCR5_REG(AXBS) + +/* AXBS - Register array accessors */ +#define AXBS_PRS(index) AXBS_PRS_REG(AXBS,index) +#define AXBS_CRS(index) AXBS_CRS_REG(AXBS,index) + +/*! + * @} + */ /* end of group AXBS_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group AXBS_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CAN Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAN_Peripheral_Access_Layer CAN Peripheral Access Layer + * @{ + */ + +/** CAN - Register Layout Typedef */ +typedef struct { + __IO uint32_t MCR; /**< Module Configuration Register, offset: 0x0 */ + __IO uint32_t CTRL1; /**< Control 1 register, offset: 0x4 */ + __IO uint32_t TIMER; /**< Free Running Timer, offset: 0x8 */ + uint8_t RESERVED_0[4]; + __IO uint32_t RXMGMASK; /**< Rx Mailboxes Global Mask Register, offset: 0x10 */ + __IO uint32_t RX14MASK; /**< Rx 14 Mask register, offset: 0x14 */ + __IO uint32_t RX15MASK; /**< Rx 15 Mask register, offset: 0x18 */ + __IO uint32_t ECR; /**< Error Counter, offset: 0x1C */ + __IO uint32_t ESR1; /**< Error and Status 1 register, offset: 0x20 */ + uint8_t RESERVED_1[4]; + __IO uint32_t IMASK1; /**< Interrupt Masks 1 register, offset: 0x28 */ + uint8_t RESERVED_2[4]; + __IO uint32_t IFLAG1; /**< Interrupt Flags 1 register, offset: 0x30 */ + __IO uint32_t CTRL2; /**< Control 2 register, offset: 0x34 */ + __I uint32_t ESR2; /**< Error and Status 2 register, offset: 0x38 */ + uint8_t RESERVED_3[8]; + __I uint32_t CRCR; /**< CRC Register, offset: 0x44 */ + __IO uint32_t RXFGMASK; /**< Rx FIFO Global Mask register, offset: 0x48 */ + __I uint32_t RXFIR; /**< Rx FIFO Information Register, offset: 0x4C */ + uint8_t RESERVED_4[48]; + struct { /* offset: 0x80, array step: 0x10 */ + __IO uint32_t CS; /**< Message Buffer 0 CS Register..Message Buffer 15 CS Register, array offset: 0x80, array step: 0x10 */ + __IO uint32_t ID; /**< Message Buffer 0 ID Register..Message Buffer 15 ID Register, array offset: 0x84, array step: 0x10 */ + __IO uint32_t WORD0; /**< Message Buffer 0 WORD0 Register..Message Buffer 15 WORD0 Register, array offset: 0x88, array step: 0x10 */ + __IO uint32_t WORD1; /**< Message Buffer 0 WORD1 Register..Message Buffer 15 WORD1 Register, array offset: 0x8C, array step: 0x10 */ + } MB[16]; + uint8_t RESERVED_5[1792]; + __IO uint32_t RXIMR[16]; /**< Rx Individual Mask Registers, array offset: 0x880, array step: 0x4 */ +} CAN_Type, *CAN_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CAN - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAN_Register_Accessor_Macros CAN - Register accessor macros + * @{ + */ + + +/* CAN - Register accessors */ +#define CAN_MCR_REG(base) ((base)->MCR) +#define CAN_CTRL1_REG(base) ((base)->CTRL1) +#define CAN_TIMER_REG(base) ((base)->TIMER) +#define CAN_RXMGMASK_REG(base) ((base)->RXMGMASK) +#define CAN_RX14MASK_REG(base) ((base)->RX14MASK) +#define CAN_RX15MASK_REG(base) ((base)->RX15MASK) +#define CAN_ECR_REG(base) ((base)->ECR) +#define CAN_ESR1_REG(base) ((base)->ESR1) +#define CAN_IMASK1_REG(base) ((base)->IMASK1) +#define CAN_IFLAG1_REG(base) ((base)->IFLAG1) +#define CAN_CTRL2_REG(base) ((base)->CTRL2) +#define CAN_ESR2_REG(base) ((base)->ESR2) +#define CAN_CRCR_REG(base) ((base)->CRCR) +#define CAN_RXFGMASK_REG(base) ((base)->RXFGMASK) +#define CAN_RXFIR_REG(base) ((base)->RXFIR) +#define CAN_CS_REG(base,index) ((base)->MB[index].CS) +#define CAN_ID_REG(base,index) ((base)->MB[index].ID) +#define CAN_WORD0_REG(base,index) ((base)->MB[index].WORD0) +#define CAN_WORD1_REG(base,index) ((base)->MB[index].WORD1) +#define CAN_RXIMR_REG(base,index) ((base)->RXIMR[index]) + +/*! + * @} + */ /* end of group CAN_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CAN Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAN_Register_Masks CAN Register Masks + * @{ + */ + +/* MCR Bit Fields */ +#define CAN_MCR_MAXMB_MASK 0x7Fu +#define CAN_MCR_MAXMB_SHIFT 0 +#define CAN_MCR_MAXMB(x) (((uint32_t)(((uint32_t)(x))<<CAN_MCR_MAXMB_SHIFT))&CAN_MCR_MAXMB_MASK) +#define CAN_MCR_IDAM_MASK 0x300u +#define CAN_MCR_IDAM_SHIFT 8 +#define CAN_MCR_IDAM(x) (((uint32_t)(((uint32_t)(x))<<CAN_MCR_IDAM_SHIFT))&CAN_MCR_IDAM_MASK) +#define CAN_MCR_AEN_MASK 0x1000u +#define CAN_MCR_AEN_SHIFT 12 +#define CAN_MCR_LPRIOEN_MASK 0x2000u +#define CAN_MCR_LPRIOEN_SHIFT 13 +#define CAN_MCR_IRMQ_MASK 0x10000u +#define CAN_MCR_IRMQ_SHIFT 16 +#define CAN_MCR_SRXDIS_MASK 0x20000u +#define CAN_MCR_SRXDIS_SHIFT 17 +#define CAN_MCR_WAKSRC_MASK 0x80000u +#define CAN_MCR_WAKSRC_SHIFT 19 +#define CAN_MCR_LPMACK_MASK 0x100000u +#define CAN_MCR_LPMACK_SHIFT 20 +#define CAN_MCR_WRNEN_MASK 0x200000u +#define CAN_MCR_WRNEN_SHIFT 21 +#define CAN_MCR_SLFWAK_MASK 0x400000u +#define CAN_MCR_SLFWAK_SHIFT 22 +#define CAN_MCR_SUPV_MASK 0x800000u +#define CAN_MCR_SUPV_SHIFT 23 +#define CAN_MCR_FRZACK_MASK 0x1000000u +#define CAN_MCR_FRZACK_SHIFT 24 +#define CAN_MCR_SOFTRST_MASK 0x2000000u +#define CAN_MCR_SOFTRST_SHIFT 25 +#define CAN_MCR_WAKMSK_MASK 0x4000000u +#define CAN_MCR_WAKMSK_SHIFT 26 +#define CAN_MCR_NOTRDY_MASK 0x8000000u +#define CAN_MCR_NOTRDY_SHIFT 27 +#define CAN_MCR_HALT_MASK 0x10000000u +#define CAN_MCR_HALT_SHIFT 28 +#define CAN_MCR_RFEN_MASK 0x20000000u +#define CAN_MCR_RFEN_SHIFT 29 +#define CAN_MCR_FRZ_MASK 0x40000000u +#define CAN_MCR_FRZ_SHIFT 30 +#define CAN_MCR_MDIS_MASK 0x80000000u +#define CAN_MCR_MDIS_SHIFT 31 +/* CTRL1 Bit Fields */ +#define CAN_CTRL1_PROPSEG_MASK 0x7u +#define CAN_CTRL1_PROPSEG_SHIFT 0 +#define CAN_CTRL1_PROPSEG(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_PROPSEG_SHIFT))&CAN_CTRL1_PROPSEG_MASK) +#define CAN_CTRL1_LOM_MASK 0x8u +#define CAN_CTRL1_LOM_SHIFT 3 +#define CAN_CTRL1_LBUF_MASK 0x10u +#define CAN_CTRL1_LBUF_SHIFT 4 +#define CAN_CTRL1_TSYN_MASK 0x20u +#define CAN_CTRL1_TSYN_SHIFT 5 +#define CAN_CTRL1_BOFFREC_MASK 0x40u +#define CAN_CTRL1_BOFFREC_SHIFT 6 +#define CAN_CTRL1_SMP_MASK 0x80u +#define CAN_CTRL1_SMP_SHIFT 7 +#define CAN_CTRL1_RWRNMSK_MASK 0x400u +#define CAN_CTRL1_RWRNMSK_SHIFT 10 +#define CAN_CTRL1_TWRNMSK_MASK 0x800u +#define CAN_CTRL1_TWRNMSK_SHIFT 11 +#define CAN_CTRL1_LPB_MASK 0x1000u +#define CAN_CTRL1_LPB_SHIFT 12 +#define CAN_CTRL1_CLKSRC_MASK 0x2000u +#define CAN_CTRL1_CLKSRC_SHIFT 13 +#define CAN_CTRL1_ERRMSK_MASK 0x4000u +#define CAN_CTRL1_ERRMSK_SHIFT 14 +#define CAN_CTRL1_BOFFMSK_MASK 0x8000u +#define CAN_CTRL1_BOFFMSK_SHIFT 15 +#define CAN_CTRL1_PSEG2_MASK 0x70000u +#define CAN_CTRL1_PSEG2_SHIFT 16 +#define CAN_CTRL1_PSEG2(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_PSEG2_SHIFT))&CAN_CTRL1_PSEG2_MASK) +#define CAN_CTRL1_PSEG1_MASK 0x380000u +#define CAN_CTRL1_PSEG1_SHIFT 19 +#define CAN_CTRL1_PSEG1(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_PSEG1_SHIFT))&CAN_CTRL1_PSEG1_MASK) +#define CAN_CTRL1_RJW_MASK 0xC00000u +#define CAN_CTRL1_RJW_SHIFT 22 +#define CAN_CTRL1_RJW(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_RJW_SHIFT))&CAN_CTRL1_RJW_MASK) +#define CAN_CTRL1_PRESDIV_MASK 0xFF000000u +#define CAN_CTRL1_PRESDIV_SHIFT 24 +#define CAN_CTRL1_PRESDIV(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL1_PRESDIV_SHIFT))&CAN_CTRL1_PRESDIV_MASK) +/* TIMER Bit Fields */ +#define CAN_TIMER_TIMER_MASK 0xFFFFu +#define CAN_TIMER_TIMER_SHIFT 0 +#define CAN_TIMER_TIMER(x) (((uint32_t)(((uint32_t)(x))<<CAN_TIMER_TIMER_SHIFT))&CAN_TIMER_TIMER_MASK) +/* RXMGMASK Bit Fields */ +#define CAN_RXMGMASK_MG_MASK 0xFFFFFFFFu +#define CAN_RXMGMASK_MG_SHIFT 0 +#define CAN_RXMGMASK_MG(x) (((uint32_t)(((uint32_t)(x))<<CAN_RXMGMASK_MG_SHIFT))&CAN_RXMGMASK_MG_MASK) +/* RX14MASK Bit Fields */ +#define CAN_RX14MASK_RX14M_MASK 0xFFFFFFFFu +#define CAN_RX14MASK_RX14M_SHIFT 0 +#define CAN_RX14MASK_RX14M(x) (((uint32_t)(((uint32_t)(x))<<CAN_RX14MASK_RX14M_SHIFT))&CAN_RX14MASK_RX14M_MASK) +/* RX15MASK Bit Fields */ +#define CAN_RX15MASK_RX15M_MASK 0xFFFFFFFFu +#define CAN_RX15MASK_RX15M_SHIFT 0 +#define CAN_RX15MASK_RX15M(x) (((uint32_t)(((uint32_t)(x))<<CAN_RX15MASK_RX15M_SHIFT))&CAN_RX15MASK_RX15M_MASK) +/* ECR Bit Fields */ +#define CAN_ECR_TXERRCNT_MASK 0xFFu +#define CAN_ECR_TXERRCNT_SHIFT 0 +#define CAN_ECR_TXERRCNT(x) (((uint32_t)(((uint32_t)(x))<<CAN_ECR_TXERRCNT_SHIFT))&CAN_ECR_TXERRCNT_MASK) +#define CAN_ECR_RXERRCNT_MASK 0xFF00u +#define CAN_ECR_RXERRCNT_SHIFT 8 +#define CAN_ECR_RXERRCNT(x) (((uint32_t)(((uint32_t)(x))<<CAN_ECR_RXERRCNT_SHIFT))&CAN_ECR_RXERRCNT_MASK) +/* ESR1 Bit Fields */ +#define CAN_ESR1_WAKINT_MASK 0x1u +#define CAN_ESR1_WAKINT_SHIFT 0 +#define CAN_ESR1_ERRINT_MASK 0x2u +#define CAN_ESR1_ERRINT_SHIFT 1 +#define CAN_ESR1_BOFFINT_MASK 0x4u +#define CAN_ESR1_BOFFINT_SHIFT 2 +#define CAN_ESR1_RX_MASK 0x8u +#define CAN_ESR1_RX_SHIFT 3 +#define CAN_ESR1_FLTCONF_MASK 0x30u +#define CAN_ESR1_FLTCONF_SHIFT 4 +#define CAN_ESR1_FLTCONF(x) (((uint32_t)(((uint32_t)(x))<<CAN_ESR1_FLTCONF_SHIFT))&CAN_ESR1_FLTCONF_MASK) +#define CAN_ESR1_TX_MASK 0x40u +#define CAN_ESR1_TX_SHIFT 6 +#define CAN_ESR1_IDLE_MASK 0x80u +#define CAN_ESR1_IDLE_SHIFT 7 +#define CAN_ESR1_RXWRN_MASK 0x100u +#define CAN_ESR1_RXWRN_SHIFT 8 +#define CAN_ESR1_TXWRN_MASK 0x200u +#define CAN_ESR1_TXWRN_SHIFT 9 +#define CAN_ESR1_STFERR_MASK 0x400u +#define CAN_ESR1_STFERR_SHIFT 10 +#define CAN_ESR1_FRMERR_MASK 0x800u +#define CAN_ESR1_FRMERR_SHIFT 11 +#define CAN_ESR1_CRCERR_MASK 0x1000u +#define CAN_ESR1_CRCERR_SHIFT 12 +#define CAN_ESR1_ACKERR_MASK 0x2000u +#define CAN_ESR1_ACKERR_SHIFT 13 +#define CAN_ESR1_BIT0ERR_MASK 0x4000u +#define CAN_ESR1_BIT0ERR_SHIFT 14 +#define CAN_ESR1_BIT1ERR_MASK 0x8000u +#define CAN_ESR1_BIT1ERR_SHIFT 15 +#define CAN_ESR1_RWRNINT_MASK 0x10000u +#define CAN_ESR1_RWRNINT_SHIFT 16 +#define CAN_ESR1_TWRNINT_MASK 0x20000u +#define CAN_ESR1_TWRNINT_SHIFT 17 +#define CAN_ESR1_SYNCH_MASK 0x40000u +#define CAN_ESR1_SYNCH_SHIFT 18 +/* IMASK1 Bit Fields */ +#define CAN_IMASK1_BUFLM_MASK 0xFFFFFFFFu +#define CAN_IMASK1_BUFLM_SHIFT 0 +#define CAN_IMASK1_BUFLM(x) (((uint32_t)(((uint32_t)(x))<<CAN_IMASK1_BUFLM_SHIFT))&CAN_IMASK1_BUFLM_MASK) +/* IFLAG1 Bit Fields */ +#define CAN_IFLAG1_BUF0I_MASK 0x1u +#define CAN_IFLAG1_BUF0I_SHIFT 0 +#define CAN_IFLAG1_BUF4TO1I_MASK 0x1Eu +#define CAN_IFLAG1_BUF4TO1I_SHIFT 1 +#define CAN_IFLAG1_BUF4TO1I(x) (((uint32_t)(((uint32_t)(x))<<CAN_IFLAG1_BUF4TO1I_SHIFT))&CAN_IFLAG1_BUF4TO1I_MASK) +#define CAN_IFLAG1_BUF5I_MASK 0x20u +#define CAN_IFLAG1_BUF5I_SHIFT 5 +#define CAN_IFLAG1_BUF6I_MASK 0x40u +#define CAN_IFLAG1_BUF6I_SHIFT 6 +#define CAN_IFLAG1_BUF7I_MASK 0x80u +#define CAN_IFLAG1_BUF7I_SHIFT 7 +#define CAN_IFLAG1_BUF31TO8I_MASK 0xFFFFFF00u +#define CAN_IFLAG1_BUF31TO8I_SHIFT 8 +#define CAN_IFLAG1_BUF31TO8I(x) (((uint32_t)(((uint32_t)(x))<<CAN_IFLAG1_BUF31TO8I_SHIFT))&CAN_IFLAG1_BUF31TO8I_MASK) +/* CTRL2 Bit Fields */ +#define CAN_CTRL2_EACEN_MASK 0x10000u +#define CAN_CTRL2_EACEN_SHIFT 16 +#define CAN_CTRL2_RRS_MASK 0x20000u +#define CAN_CTRL2_RRS_SHIFT 17 +#define CAN_CTRL2_MRP_MASK 0x40000u +#define CAN_CTRL2_MRP_SHIFT 18 +#define CAN_CTRL2_TASD_MASK 0xF80000u +#define CAN_CTRL2_TASD_SHIFT 19 +#define CAN_CTRL2_TASD(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL2_TASD_SHIFT))&CAN_CTRL2_TASD_MASK) +#define CAN_CTRL2_RFFN_MASK 0xF000000u +#define CAN_CTRL2_RFFN_SHIFT 24 +#define CAN_CTRL2_RFFN(x) (((uint32_t)(((uint32_t)(x))<<CAN_CTRL2_RFFN_SHIFT))&CAN_CTRL2_RFFN_MASK) +#define CAN_CTRL2_WRMFRZ_MASK 0x10000000u +#define CAN_CTRL2_WRMFRZ_SHIFT 28 +/* ESR2 Bit Fields */ +#define CAN_ESR2_IMB_MASK 0x2000u +#define CAN_ESR2_IMB_SHIFT 13 +#define CAN_ESR2_VPS_MASK 0x4000u +#define CAN_ESR2_VPS_SHIFT 14 +#define CAN_ESR2_LPTM_MASK 0x7F0000u +#define CAN_ESR2_LPTM_SHIFT 16 +#define CAN_ESR2_LPTM(x) (((uint32_t)(((uint32_t)(x))<<CAN_ESR2_LPTM_SHIFT))&CAN_ESR2_LPTM_MASK) +/* CRCR Bit Fields */ +#define CAN_CRCR_TXCRC_MASK 0x7FFFu +#define CAN_CRCR_TXCRC_SHIFT 0 +#define CAN_CRCR_TXCRC(x) (((uint32_t)(((uint32_t)(x))<<CAN_CRCR_TXCRC_SHIFT))&CAN_CRCR_TXCRC_MASK) +#define CAN_CRCR_MBCRC_MASK 0x7F0000u +#define CAN_CRCR_MBCRC_SHIFT 16 +#define CAN_CRCR_MBCRC(x) (((uint32_t)(((uint32_t)(x))<<CAN_CRCR_MBCRC_SHIFT))&CAN_CRCR_MBCRC_MASK) +/* RXFGMASK Bit Fields */ +#define CAN_RXFGMASK_FGM_MASK 0xFFFFFFFFu +#define CAN_RXFGMASK_FGM_SHIFT 0 +#define CAN_RXFGMASK_FGM(x) (((uint32_t)(((uint32_t)(x))<<CAN_RXFGMASK_FGM_SHIFT))&CAN_RXFGMASK_FGM_MASK) +/* RXFIR Bit Fields */ +#define CAN_RXFIR_IDHIT_MASK 0x1FFu +#define CAN_RXFIR_IDHIT_SHIFT 0 +#define CAN_RXFIR_IDHIT(x) (((uint32_t)(((uint32_t)(x))<<CAN_RXFIR_IDHIT_SHIFT))&CAN_RXFIR_IDHIT_MASK) +/* CS Bit Fields */ +#define CAN_CS_TIME_STAMP_MASK 0xFFFFu +#define CAN_CS_TIME_STAMP_SHIFT 0 +#define CAN_CS_TIME_STAMP(x) (((uint32_t)(((uint32_t)(x))<<CAN_CS_TIME_STAMP_SHIFT))&CAN_CS_TIME_STAMP_MASK) +#define CAN_CS_DLC_MASK 0xF0000u +#define CAN_CS_DLC_SHIFT 16 +#define CAN_CS_DLC(x) (((uint32_t)(((uint32_t)(x))<<CAN_CS_DLC_SHIFT))&CAN_CS_DLC_MASK) +#define CAN_CS_RTR_MASK 0x100000u +#define CAN_CS_RTR_SHIFT 20 +#define CAN_CS_IDE_MASK 0x200000u +#define CAN_CS_IDE_SHIFT 21 +#define CAN_CS_SRR_MASK 0x400000u +#define CAN_CS_SRR_SHIFT 22 +#define CAN_CS_CODE_MASK 0xF000000u +#define CAN_CS_CODE_SHIFT 24 +#define CAN_CS_CODE(x) (((uint32_t)(((uint32_t)(x))<<CAN_CS_CODE_SHIFT))&CAN_CS_CODE_MASK) +/* ID Bit Fields */ +#define CAN_ID_EXT_MASK 0x3FFFFu +#define CAN_ID_EXT_SHIFT 0 +#define CAN_ID_EXT(x) (((uint32_t)(((uint32_t)(x))<<CAN_ID_EXT_SHIFT))&CAN_ID_EXT_MASK) +#define CAN_ID_STD_MASK 0x1FFC0000u +#define CAN_ID_STD_SHIFT 18 +#define CAN_ID_STD(x) (((uint32_t)(((uint32_t)(x))<<CAN_ID_STD_SHIFT))&CAN_ID_STD_MASK) +#define CAN_ID_PRIO_MASK 0xE0000000u +#define CAN_ID_PRIO_SHIFT 29 +#define CAN_ID_PRIO(x) (((uint32_t)(((uint32_t)(x))<<CAN_ID_PRIO_SHIFT))&CAN_ID_PRIO_MASK) +/* WORD0 Bit Fields */ +#define CAN_WORD0_DATA_BYTE_3_MASK 0xFFu +#define CAN_WORD0_DATA_BYTE_3_SHIFT 0 +#define CAN_WORD0_DATA_BYTE_3(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD0_DATA_BYTE_3_SHIFT))&CAN_WORD0_DATA_BYTE_3_MASK) +#define CAN_WORD0_DATA_BYTE_2_MASK 0xFF00u +#define CAN_WORD0_DATA_BYTE_2_SHIFT 8 +#define CAN_WORD0_DATA_BYTE_2(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD0_DATA_BYTE_2_SHIFT))&CAN_WORD0_DATA_BYTE_2_MASK) +#define CAN_WORD0_DATA_BYTE_1_MASK 0xFF0000u +#define CAN_WORD0_DATA_BYTE_1_SHIFT 16 +#define CAN_WORD0_DATA_BYTE_1(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD0_DATA_BYTE_1_SHIFT))&CAN_WORD0_DATA_BYTE_1_MASK) +#define CAN_WORD0_DATA_BYTE_0_MASK 0xFF000000u +#define CAN_WORD0_DATA_BYTE_0_SHIFT 24 +#define CAN_WORD0_DATA_BYTE_0(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD0_DATA_BYTE_0_SHIFT))&CAN_WORD0_DATA_BYTE_0_MASK) +/* WORD1 Bit Fields */ +#define CAN_WORD1_DATA_BYTE_7_MASK 0xFFu +#define CAN_WORD1_DATA_BYTE_7_SHIFT 0 +#define CAN_WORD1_DATA_BYTE_7(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD1_DATA_BYTE_7_SHIFT))&CAN_WORD1_DATA_BYTE_7_MASK) +#define CAN_WORD1_DATA_BYTE_6_MASK 0xFF00u +#define CAN_WORD1_DATA_BYTE_6_SHIFT 8 +#define CAN_WORD1_DATA_BYTE_6(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD1_DATA_BYTE_6_SHIFT))&CAN_WORD1_DATA_BYTE_6_MASK) +#define CAN_WORD1_DATA_BYTE_5_MASK 0xFF0000u +#define CAN_WORD1_DATA_BYTE_5_SHIFT 16 +#define CAN_WORD1_DATA_BYTE_5(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD1_DATA_BYTE_5_SHIFT))&CAN_WORD1_DATA_BYTE_5_MASK) +#define CAN_WORD1_DATA_BYTE_4_MASK 0xFF000000u +#define CAN_WORD1_DATA_BYTE_4_SHIFT 24 +#define CAN_WORD1_DATA_BYTE_4(x) (((uint32_t)(((uint32_t)(x))<<CAN_WORD1_DATA_BYTE_4_SHIFT))&CAN_WORD1_DATA_BYTE_4_MASK) +/* RXIMR Bit Fields */ +#define CAN_RXIMR_MI_MASK 0xFFFFFFFFu +#define CAN_RXIMR_MI_SHIFT 0 +#define CAN_RXIMR_MI(x) (((uint32_t)(((uint32_t)(x))<<CAN_RXIMR_MI_SHIFT))&CAN_RXIMR_MI_MASK) + +/*! + * @} + */ /* end of group CAN_Register_Masks */ + + +/* CAN - Peripheral instance base addresses */ +/** Peripheral CAN0 base address */ +#define CAN0_BASE (0x40024000u) +/** Peripheral CAN0 base pointer */ +#define CAN0 ((CAN_Type *)CAN0_BASE) +#define CAN0_BASE_PTR (CAN0) +/** Array initializer of CAN peripheral base pointers */ +#define CAN_BASES { CAN0 } + +/* ---------------------------------------------------------------------------- + -- CAN - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAN_Register_Accessor_Macros CAN - Register accessor macros + * @{ + */ + + +/* CAN - Register instance definitions */ +/* CAN0 */ +#define CAN0_MCR CAN_MCR_REG(CAN0) +#define CAN0_CTRL1 CAN_CTRL1_REG(CAN0) +#define CAN0_TIMER CAN_TIMER_REG(CAN0) +#define CAN0_RXMGMASK CAN_RXMGMASK_REG(CAN0) +#define CAN0_RX14MASK CAN_RX14MASK_REG(CAN0) +#define CAN0_RX15MASK CAN_RX15MASK_REG(CAN0) +#define CAN0_ECR CAN_ECR_REG(CAN0) +#define CAN0_ESR1 CAN_ESR1_REG(CAN0) +#define CAN0_IMASK1 CAN_IMASK1_REG(CAN0) +#define CAN0_IFLAG1 CAN_IFLAG1_REG(CAN0) +#define CAN0_CTRL2 CAN_CTRL2_REG(CAN0) +#define CAN0_ESR2 CAN_ESR2_REG(CAN0) +#define CAN0_CRCR CAN_CRCR_REG(CAN0) +#define CAN0_RXFGMASK CAN_RXFGMASK_REG(CAN0) +#define CAN0_RXFIR CAN_RXFIR_REG(CAN0) +#define CAN0_CS0 CAN_CS_REG(CAN0,0) +#define CAN0_ID0 CAN_ID_REG(CAN0,0) +#define CAN0_WORD00 CAN_WORD0_REG(CAN0,0) +#define CAN0_WORD10 CAN_WORD1_REG(CAN0,0) +#define CAN0_CS1 CAN_CS_REG(CAN0,1) +#define CAN0_ID1 CAN_ID_REG(CAN0,1) +#define CAN0_WORD01 CAN_WORD0_REG(CAN0,1) +#define CAN0_WORD11 CAN_WORD1_REG(CAN0,1) +#define CAN0_CS2 CAN_CS_REG(CAN0,2) +#define CAN0_ID2 CAN_ID_REG(CAN0,2) +#define CAN0_WORD02 CAN_WORD0_REG(CAN0,2) +#define CAN0_WORD12 CAN_WORD1_REG(CAN0,2) +#define CAN0_CS3 CAN_CS_REG(CAN0,3) +#define CAN0_ID3 CAN_ID_REG(CAN0,3) +#define CAN0_WORD03 CAN_WORD0_REG(CAN0,3) +#define CAN0_WORD13 CAN_WORD1_REG(CAN0,3) +#define CAN0_CS4 CAN_CS_REG(CAN0,4) +#define CAN0_ID4 CAN_ID_REG(CAN0,4) +#define CAN0_WORD04 CAN_WORD0_REG(CAN0,4) +#define CAN0_WORD14 CAN_WORD1_REG(CAN0,4) +#define CAN0_CS5 CAN_CS_REG(CAN0,5) +#define CAN0_ID5 CAN_ID_REG(CAN0,5) +#define CAN0_WORD05 CAN_WORD0_REG(CAN0,5) +#define CAN0_WORD15 CAN_WORD1_REG(CAN0,5) +#define CAN0_CS6 CAN_CS_REG(CAN0,6) +#define CAN0_ID6 CAN_ID_REG(CAN0,6) +#define CAN0_WORD06 CAN_WORD0_REG(CAN0,6) +#define CAN0_WORD16 CAN_WORD1_REG(CAN0,6) +#define CAN0_CS7 CAN_CS_REG(CAN0,7) +#define CAN0_ID7 CAN_ID_REG(CAN0,7) +#define CAN0_WORD07 CAN_WORD0_REG(CAN0,7) +#define CAN0_WORD17 CAN_WORD1_REG(CAN0,7) +#define CAN0_CS8 CAN_CS_REG(CAN0,8) +#define CAN0_ID8 CAN_ID_REG(CAN0,8) +#define CAN0_WORD08 CAN_WORD0_REG(CAN0,8) +#define CAN0_WORD18 CAN_WORD1_REG(CAN0,8) +#define CAN0_CS9 CAN_CS_REG(CAN0,9) +#define CAN0_ID9 CAN_ID_REG(CAN0,9) +#define CAN0_WORD09 CAN_WORD0_REG(CAN0,9) +#define CAN0_WORD19 CAN_WORD1_REG(CAN0,9) +#define CAN0_CS10 CAN_CS_REG(CAN0,10) +#define CAN0_ID10 CAN_ID_REG(CAN0,10) +#define CAN0_WORD010 CAN_WORD0_REG(CAN0,10) +#define CAN0_WORD110 CAN_WORD1_REG(CAN0,10) +#define CAN0_CS11 CAN_CS_REG(CAN0,11) +#define CAN0_ID11 CAN_ID_REG(CAN0,11) +#define CAN0_WORD011 CAN_WORD0_REG(CAN0,11) +#define CAN0_WORD111 CAN_WORD1_REG(CAN0,11) +#define CAN0_CS12 CAN_CS_REG(CAN0,12) +#define CAN0_ID12 CAN_ID_REG(CAN0,12) +#define CAN0_WORD012 CAN_WORD0_REG(CAN0,12) +#define CAN0_WORD112 CAN_WORD1_REG(CAN0,12) +#define CAN0_CS13 CAN_CS_REG(CAN0,13) +#define CAN0_ID13 CAN_ID_REG(CAN0,13) +#define CAN0_WORD013 CAN_WORD0_REG(CAN0,13) +#define CAN0_WORD113 CAN_WORD1_REG(CAN0,13) +#define CAN0_CS14 CAN_CS_REG(CAN0,14) +#define CAN0_ID14 CAN_ID_REG(CAN0,14) +#define CAN0_WORD014 CAN_WORD0_REG(CAN0,14) +#define CAN0_WORD114 CAN_WORD1_REG(CAN0,14) +#define CAN0_CS15 CAN_CS_REG(CAN0,15) +#define CAN0_ID15 CAN_ID_REG(CAN0,15) +#define CAN0_WORD015 CAN_WORD0_REG(CAN0,15) +#define CAN0_WORD115 CAN_WORD1_REG(CAN0,15) +#define CAN0_RXIMR0 CAN_RXIMR_REG(CAN0,0) +#define CAN0_RXIMR1 CAN_RXIMR_REG(CAN0,1) +#define CAN0_RXIMR2 CAN_RXIMR_REG(CAN0,2) +#define CAN0_RXIMR3 CAN_RXIMR_REG(CAN0,3) +#define CAN0_RXIMR4 CAN_RXIMR_REG(CAN0,4) +#define CAN0_RXIMR5 CAN_RXIMR_REG(CAN0,5) +#define CAN0_RXIMR6 CAN_RXIMR_REG(CAN0,6) +#define CAN0_RXIMR7 CAN_RXIMR_REG(CAN0,7) +#define CAN0_RXIMR8 CAN_RXIMR_REG(CAN0,8) +#define CAN0_RXIMR9 CAN_RXIMR_REG(CAN0,9) +#define CAN0_RXIMR10 CAN_RXIMR_REG(CAN0,10) +#define CAN0_RXIMR11 CAN_RXIMR_REG(CAN0,11) +#define CAN0_RXIMR12 CAN_RXIMR_REG(CAN0,12) +#define CAN0_RXIMR13 CAN_RXIMR_REG(CAN0,13) +#define CAN0_RXIMR14 CAN_RXIMR_REG(CAN0,14) +#define CAN0_RXIMR15 CAN_RXIMR_REG(CAN0,15) + +/* CAN - Register array accessors */ +#define CAN0_CS(index) CAN_CS_REG(CAN0,index) +#define CAN0_ID(index) CAN_ID_REG(CAN0,index) +#define CAN0_WORD0(index) CAN_WORD0_REG(CAN0,index) +#define CAN0_WORD1(index) CAN_WORD1_REG(CAN0,index) +#define CAN0_RXIMR(index) CAN_RXIMR_REG(CAN0,index) + +/*! + * @} + */ /* end of group CAN_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CAN_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CAU Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAU_Peripheral_Access_Layer CAU Peripheral Access Layer + * @{ + */ + +/** CAU - Register Layout Typedef */ +typedef struct { + __O uint32_t DIRECT[16]; /**< Direct access register 0..Direct access register 15, array offset: 0x0, array step: 0x4 */ + uint8_t RESERVED_0[2048]; + __O uint32_t LDR_CASR; /**< Status register - Load Register command, offset: 0x840 */ + __O uint32_t LDR_CAA; /**< Accumulator register - Load Register command, offset: 0x844 */ + __O uint32_t LDR_CA[9]; /**< General Purpose Register 0 - Load Register command..General Purpose Register 8 - Load Register command, array offset: 0x848, array step: 0x4 */ + uint8_t RESERVED_1[20]; + __I uint32_t STR_CASR; /**< Status register - Store Register command, offset: 0x880 */ + __I uint32_t STR_CAA; /**< Accumulator register - Store Register command, offset: 0x884 */ + __I uint32_t STR_CA[9]; /**< General Purpose Register 0 - Store Register command..General Purpose Register 8 - Store Register command, array offset: 0x888, array step: 0x4 */ + uint8_t RESERVED_2[20]; + __O uint32_t ADR_CASR; /**< Status register - Add Register command, offset: 0x8C0 */ + __O uint32_t ADR_CAA; /**< Accumulator register - Add to register command, offset: 0x8C4 */ + __O uint32_t ADR_CA[9]; /**< General Purpose Register 0 - Add to register command..General Purpose Register 8 - Add to register command, array offset: 0x8C8, array step: 0x4 */ + uint8_t RESERVED_3[20]; + __O uint32_t RADR_CASR; /**< Status register - Reverse and Add to Register command, offset: 0x900 */ + __O uint32_t RADR_CAA; /**< Accumulator register - Reverse and Add to Register command, offset: 0x904 */ + __O uint32_t RADR_CA[9]; /**< General Purpose Register 0 - Reverse and Add to Register command..General Purpose Register 8 - Reverse and Add to Register command, array offset: 0x908, array step: 0x4 */ + uint8_t RESERVED_4[84]; + __O uint32_t XOR_CASR; /**< Status register - Exclusive Or command, offset: 0x980 */ + __O uint32_t XOR_CAA; /**< Accumulator register - Exclusive Or command, offset: 0x984 */ + __O uint32_t XOR_CA[9]; /**< General Purpose Register 0 - Exclusive Or command..General Purpose Register 8 - Exclusive Or command, array offset: 0x988, array step: 0x4 */ + uint8_t RESERVED_5[20]; + __O uint32_t ROTL_CASR; /**< Status register - Rotate Left command, offset: 0x9C0 */ + __O uint32_t ROTL_CAA; /**< Accumulator register - Rotate Left command, offset: 0x9C4 */ + __O uint32_t ROTL_CA[9]; /**< General Purpose Register 0 - Rotate Left command..General Purpose Register 8 - Rotate Left command, array offset: 0x9C8, array step: 0x4 */ + uint8_t RESERVED_6[276]; + __O uint32_t AESC_CASR; /**< Status register - AES Column Operation command, offset: 0xB00 */ + __O uint32_t AESC_CAA; /**< Accumulator register - AES Column Operation command, offset: 0xB04 */ + __O uint32_t AESC_CA[9]; /**< General Purpose Register 0 - AES Column Operation command..General Purpose Register 8 - AES Column Operation command, array offset: 0xB08, array step: 0x4 */ + uint8_t RESERVED_7[20]; + __O uint32_t AESIC_CASR; /**< Status register - AES Inverse Column Operation command, offset: 0xB40 */ + __O uint32_t AESIC_CAA; /**< Accumulator register - AES Inverse Column Operation command, offset: 0xB44 */ + __O uint32_t AESIC_CA[9]; /**< General Purpose Register 0 - AES Inverse Column Operation command..General Purpose Register 8 - AES Inverse Column Operation command, array offset: 0xB48, array step: 0x4 */ +} CAU_Type, *CAU_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CAU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAU_Register_Accessor_Macros CAU - Register accessor macros + * @{ + */ + + +/* CAU - Register accessors */ +#define CAU_DIRECT_REG(base,index) ((base)->DIRECT[index]) +#define CAU_LDR_CASR_REG(base) ((base)->LDR_CASR) +#define CAU_LDR_CAA_REG(base) ((base)->LDR_CAA) +#define CAU_LDR_CA_REG(base,index) ((base)->LDR_CA[index]) +#define CAU_STR_CASR_REG(base) ((base)->STR_CASR) +#define CAU_STR_CAA_REG(base) ((base)->STR_CAA) +#define CAU_STR_CA_REG(base,index) ((base)->STR_CA[index]) +#define CAU_ADR_CASR_REG(base) ((base)->ADR_CASR) +#define CAU_ADR_CAA_REG(base) ((base)->ADR_CAA) +#define CAU_ADR_CA_REG(base,index) ((base)->ADR_CA[index]) +#define CAU_RADR_CASR_REG(base) ((base)->RADR_CASR) +#define CAU_RADR_CAA_REG(base) ((base)->RADR_CAA) +#define CAU_RADR_CA_REG(base,index) ((base)->RADR_CA[index]) +#define CAU_XOR_CASR_REG(base) ((base)->XOR_CASR) +#define CAU_XOR_CAA_REG(base) ((base)->XOR_CAA) +#define CAU_XOR_CA_REG(base,index) ((base)->XOR_CA[index]) +#define CAU_ROTL_CASR_REG(base) ((base)->ROTL_CASR) +#define CAU_ROTL_CAA_REG(base) ((base)->ROTL_CAA) +#define CAU_ROTL_CA_REG(base,index) ((base)->ROTL_CA[index]) +#define CAU_AESC_CASR_REG(base) ((base)->AESC_CASR) +#define CAU_AESC_CAA_REG(base) ((base)->AESC_CAA) +#define CAU_AESC_CA_REG(base,index) ((base)->AESC_CA[index]) +#define CAU_AESIC_CASR_REG(base) ((base)->AESIC_CASR) +#define CAU_AESIC_CAA_REG(base) ((base)->AESIC_CAA) +#define CAU_AESIC_CA_REG(base,index) ((base)->AESIC_CA[index]) + +/*! + * @} + */ /* end of group CAU_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CAU Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAU_Register_Masks CAU Register Masks + * @{ + */ + +/* LDR_CASR Bit Fields */ +#define CAU_LDR_CASR_IC_MASK 0x1u +#define CAU_LDR_CASR_IC_SHIFT 0 +#define CAU_LDR_CASR_DPE_MASK 0x2u +#define CAU_LDR_CASR_DPE_SHIFT 1 +#define CAU_LDR_CASR_VER_MASK 0xF0000000u +#define CAU_LDR_CASR_VER_SHIFT 28 +#define CAU_LDR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_LDR_CASR_VER_SHIFT))&CAU_LDR_CASR_VER_MASK) +/* STR_CASR Bit Fields */ +#define CAU_STR_CASR_IC_MASK 0x1u +#define CAU_STR_CASR_IC_SHIFT 0 +#define CAU_STR_CASR_DPE_MASK 0x2u +#define CAU_STR_CASR_DPE_SHIFT 1 +#define CAU_STR_CASR_VER_MASK 0xF0000000u +#define CAU_STR_CASR_VER_SHIFT 28 +#define CAU_STR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_STR_CASR_VER_SHIFT))&CAU_STR_CASR_VER_MASK) +/* ADR_CASR Bit Fields */ +#define CAU_ADR_CASR_IC_MASK 0x1u +#define CAU_ADR_CASR_IC_SHIFT 0 +#define CAU_ADR_CASR_DPE_MASK 0x2u +#define CAU_ADR_CASR_DPE_SHIFT 1 +#define CAU_ADR_CASR_VER_MASK 0xF0000000u +#define CAU_ADR_CASR_VER_SHIFT 28 +#define CAU_ADR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_ADR_CASR_VER_SHIFT))&CAU_ADR_CASR_VER_MASK) +/* RADR_CASR Bit Fields */ +#define CAU_RADR_CASR_IC_MASK 0x1u +#define CAU_RADR_CASR_IC_SHIFT 0 +#define CAU_RADR_CASR_DPE_MASK 0x2u +#define CAU_RADR_CASR_DPE_SHIFT 1 +#define CAU_RADR_CASR_VER_MASK 0xF0000000u +#define CAU_RADR_CASR_VER_SHIFT 28 +#define CAU_RADR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_RADR_CASR_VER_SHIFT))&CAU_RADR_CASR_VER_MASK) +/* XOR_CASR Bit Fields */ +#define CAU_XOR_CASR_IC_MASK 0x1u +#define CAU_XOR_CASR_IC_SHIFT 0 +#define CAU_XOR_CASR_DPE_MASK 0x2u +#define CAU_XOR_CASR_DPE_SHIFT 1 +#define CAU_XOR_CASR_VER_MASK 0xF0000000u +#define CAU_XOR_CASR_VER_SHIFT 28 +#define CAU_XOR_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_XOR_CASR_VER_SHIFT))&CAU_XOR_CASR_VER_MASK) +/* ROTL_CASR Bit Fields */ +#define CAU_ROTL_CASR_IC_MASK 0x1u +#define CAU_ROTL_CASR_IC_SHIFT 0 +#define CAU_ROTL_CASR_DPE_MASK 0x2u +#define CAU_ROTL_CASR_DPE_SHIFT 1 +#define CAU_ROTL_CASR_VER_MASK 0xF0000000u +#define CAU_ROTL_CASR_VER_SHIFT 28 +#define CAU_ROTL_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_ROTL_CASR_VER_SHIFT))&CAU_ROTL_CASR_VER_MASK) +/* AESC_CASR Bit Fields */ +#define CAU_AESC_CASR_IC_MASK 0x1u +#define CAU_AESC_CASR_IC_SHIFT 0 +#define CAU_AESC_CASR_DPE_MASK 0x2u +#define CAU_AESC_CASR_DPE_SHIFT 1 +#define CAU_AESC_CASR_VER_MASK 0xF0000000u +#define CAU_AESC_CASR_VER_SHIFT 28 +#define CAU_AESC_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_AESC_CASR_VER_SHIFT))&CAU_AESC_CASR_VER_MASK) +/* AESIC_CASR Bit Fields */ +#define CAU_AESIC_CASR_IC_MASK 0x1u +#define CAU_AESIC_CASR_IC_SHIFT 0 +#define CAU_AESIC_CASR_DPE_MASK 0x2u +#define CAU_AESIC_CASR_DPE_SHIFT 1 +#define CAU_AESIC_CASR_VER_MASK 0xF0000000u +#define CAU_AESIC_CASR_VER_SHIFT 28 +#define CAU_AESIC_CASR_VER(x) (((uint32_t)(((uint32_t)(x))<<CAU_AESIC_CASR_VER_SHIFT))&CAU_AESIC_CASR_VER_MASK) + +/*! + * @} + */ /* end of group CAU_Register_Masks */ + + +/* CAU - Peripheral instance base addresses */ +/** Peripheral CAU base address */ +#define CAU_BASE (0xE0081000u) +/** Peripheral CAU base pointer */ +#define CAU ((CAU_Type *)CAU_BASE) +#define CAU_BASE_PTR (CAU) +/** Array initializer of CAU peripheral base pointers */ +#define CAU_BASES { CAU } + +/* ---------------------------------------------------------------------------- + -- CAU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CAU_Register_Accessor_Macros CAU - Register accessor macros + * @{ + */ + + +/* CAU - Register instance definitions */ +/* CAU */ +#define CAU_DIRECT0 CAU_DIRECT_REG(CAU,0) +#define CAU_DIRECT1 CAU_DIRECT_REG(CAU,1) +#define CAU_DIRECT2 CAU_DIRECT_REG(CAU,2) +#define CAU_DIRECT3 CAU_DIRECT_REG(CAU,3) +#define CAU_DIRECT4 CAU_DIRECT_REG(CAU,4) +#define CAU_DIRECT5 CAU_DIRECT_REG(CAU,5) +#define CAU_DIRECT6 CAU_DIRECT_REG(CAU,6) +#define CAU_DIRECT7 CAU_DIRECT_REG(CAU,7) +#define CAU_DIRECT8 CAU_DIRECT_REG(CAU,8) +#define CAU_DIRECT9 CAU_DIRECT_REG(CAU,9) +#define CAU_DIRECT10 CAU_DIRECT_REG(CAU,10) +#define CAU_DIRECT11 CAU_DIRECT_REG(CAU,11) +#define CAU_DIRECT12 CAU_DIRECT_REG(CAU,12) +#define CAU_DIRECT13 CAU_DIRECT_REG(CAU,13) +#define CAU_DIRECT14 CAU_DIRECT_REG(CAU,14) +#define CAU_DIRECT15 CAU_DIRECT_REG(CAU,15) +#define CAU_LDR_CASR CAU_LDR_CASR_REG(CAU) +#define CAU_LDR_CAA CAU_LDR_CAA_REG(CAU) +#define CAU_LDR_CA0 CAU_LDR_CA_REG(CAU,0) +#define CAU_LDR_CA1 CAU_LDR_CA_REG(CAU,1) +#define CAU_LDR_CA2 CAU_LDR_CA_REG(CAU,2) +#define CAU_LDR_CA3 CAU_LDR_CA_REG(CAU,3) +#define CAU_LDR_CA4 CAU_LDR_CA_REG(CAU,4) +#define CAU_LDR_CA5 CAU_LDR_CA_REG(CAU,5) +#define CAU_LDR_CA6 CAU_LDR_CA_REG(CAU,6) +#define CAU_LDR_CA7 CAU_LDR_CA_REG(CAU,7) +#define CAU_LDR_CA8 CAU_LDR_CA_REG(CAU,8) +#define CAU_STR_CASR CAU_STR_CASR_REG(CAU) +#define CAU_STR_CAA CAU_STR_CAA_REG(CAU) +#define CAU_STR_CA0 CAU_STR_CA_REG(CAU,0) +#define CAU_STR_CA1 CAU_STR_CA_REG(CAU,1) +#define CAU_STR_CA2 CAU_STR_CA_REG(CAU,2) +#define CAU_STR_CA3 CAU_STR_CA_REG(CAU,3) +#define CAU_STR_CA4 CAU_STR_CA_REG(CAU,4) +#define CAU_STR_CA5 CAU_STR_CA_REG(CAU,5) +#define CAU_STR_CA6 CAU_STR_CA_REG(CAU,6) +#define CAU_STR_CA7 CAU_STR_CA_REG(CAU,7) +#define CAU_STR_CA8 CAU_STR_CA_REG(CAU,8) +#define CAU_ADR_CASR CAU_ADR_CASR_REG(CAU) +#define CAU_ADR_CAA CAU_ADR_CAA_REG(CAU) +#define CAU_ADR_CA0 CAU_ADR_CA_REG(CAU,0) +#define CAU_ADR_CA1 CAU_ADR_CA_REG(CAU,1) +#define CAU_ADR_CA2 CAU_ADR_CA_REG(CAU,2) +#define CAU_ADR_CA3 CAU_ADR_CA_REG(CAU,3) +#define CAU_ADR_CA4 CAU_ADR_CA_REG(CAU,4) +#define CAU_ADR_CA5 CAU_ADR_CA_REG(CAU,5) +#define CAU_ADR_CA6 CAU_ADR_CA_REG(CAU,6) +#define CAU_ADR_CA7 CAU_ADR_CA_REG(CAU,7) +#define CAU_ADR_CA8 CAU_ADR_CA_REG(CAU,8) +#define CAU_RADR_CASR CAU_RADR_CASR_REG(CAU) +#define CAU_RADR_CAA CAU_RADR_CAA_REG(CAU) +#define CAU_RADR_CA0 CAU_RADR_CA_REG(CAU,0) +#define CAU_RADR_CA1 CAU_RADR_CA_REG(CAU,1) +#define CAU_RADR_CA2 CAU_RADR_CA_REG(CAU,2) +#define CAU_RADR_CA3 CAU_RADR_CA_REG(CAU,3) +#define CAU_RADR_CA4 CAU_RADR_CA_REG(CAU,4) +#define CAU_RADR_CA5 CAU_RADR_CA_REG(CAU,5) +#define CAU_RADR_CA6 CAU_RADR_CA_REG(CAU,6) +#define CAU_RADR_CA7 CAU_RADR_CA_REG(CAU,7) +#define CAU_RADR_CA8 CAU_RADR_CA_REG(CAU,8) +#define CAU_XOR_CASR CAU_XOR_CASR_REG(CAU) +#define CAU_XOR_CAA CAU_XOR_CAA_REG(CAU) +#define CAU_XOR_CA0 CAU_XOR_CA_REG(CAU,0) +#define CAU_XOR_CA1 CAU_XOR_CA_REG(CAU,1) +#define CAU_XOR_CA2 CAU_XOR_CA_REG(CAU,2) +#define CAU_XOR_CA3 CAU_XOR_CA_REG(CAU,3) +#define CAU_XOR_CA4 CAU_XOR_CA_REG(CAU,4) +#define CAU_XOR_CA5 CAU_XOR_CA_REG(CAU,5) +#define CAU_XOR_CA6 CAU_XOR_CA_REG(CAU,6) +#define CAU_XOR_CA7 CAU_XOR_CA_REG(CAU,7) +#define CAU_XOR_CA8 CAU_XOR_CA_REG(CAU,8) +#define CAU_ROTL_CASR CAU_ROTL_CASR_REG(CAU) +#define CAU_ROTL_CAA CAU_ROTL_CAA_REG(CAU) +#define CAU_ROTL_CA0 CAU_ROTL_CA_REG(CAU,0) +#define CAU_ROTL_CA1 CAU_ROTL_CA_REG(CAU,1) +#define CAU_ROTL_CA2 CAU_ROTL_CA_REG(CAU,2) +#define CAU_ROTL_CA3 CAU_ROTL_CA_REG(CAU,3) +#define CAU_ROTL_CA4 CAU_ROTL_CA_REG(CAU,4) +#define CAU_ROTL_CA5 CAU_ROTL_CA_REG(CAU,5) +#define CAU_ROTL_CA6 CAU_ROTL_CA_REG(CAU,6) +#define CAU_ROTL_CA7 CAU_ROTL_CA_REG(CAU,7) +#define CAU_ROTL_CA8 CAU_ROTL_CA_REG(CAU,8) +#define CAU_AESC_CASR CAU_AESC_CASR_REG(CAU) +#define CAU_AESC_CAA CAU_AESC_CAA_REG(CAU) +#define CAU_AESC_CA0 CAU_AESC_CA_REG(CAU,0) +#define CAU_AESC_CA1 CAU_AESC_CA_REG(CAU,1) +#define CAU_AESC_CA2 CAU_AESC_CA_REG(CAU,2) +#define CAU_AESC_CA3 CAU_AESC_CA_REG(CAU,3) +#define CAU_AESC_CA4 CAU_AESC_CA_REG(CAU,4) +#define CAU_AESC_CA5 CAU_AESC_CA_REG(CAU,5) +#define CAU_AESC_CA6 CAU_AESC_CA_REG(CAU,6) +#define CAU_AESC_CA7 CAU_AESC_CA_REG(CAU,7) +#define CAU_AESC_CA8 CAU_AESC_CA_REG(CAU,8) +#define CAU_AESIC_CASR CAU_AESIC_CASR_REG(CAU) +#define CAU_AESIC_CAA CAU_AESIC_CAA_REG(CAU) +#define CAU_AESIC_CA0 CAU_AESIC_CA_REG(CAU,0) +#define CAU_AESIC_CA1 CAU_AESIC_CA_REG(CAU,1) +#define CAU_AESIC_CA2 CAU_AESIC_CA_REG(CAU,2) +#define CAU_AESIC_CA3 CAU_AESIC_CA_REG(CAU,3) +#define CAU_AESIC_CA4 CAU_AESIC_CA_REG(CAU,4) +#define CAU_AESIC_CA5 CAU_AESIC_CA_REG(CAU,5) +#define CAU_AESIC_CA6 CAU_AESIC_CA_REG(CAU,6) +#define CAU_AESIC_CA7 CAU_AESIC_CA_REG(CAU,7) +#define CAU_AESIC_CA8 CAU_AESIC_CA_REG(CAU,8) + +/* CAU - Register array accessors */ +#define CAU_DIRECT(index) CAU_DIRECT_REG(CAU,index) +#define CAU_LDR_CA(index) CAU_LDR_CA_REG(CAU,index) +#define CAU_STR_CA(index) CAU_STR_CA_REG(CAU,index) +#define CAU_ADR_CA(index) CAU_ADR_CA_REG(CAU,index) +#define CAU_RADR_CA(index) CAU_RADR_CA_REG(CAU,index) +#define CAU_XOR_CA(index) CAU_XOR_CA_REG(CAU,index) +#define CAU_ROTL_CA(index) CAU_ROTL_CA_REG(CAU,index) +#define CAU_AESC_CA(index) CAU_AESC_CA_REG(CAU,index) +#define CAU_AESIC_CA(index) CAU_AESIC_CA_REG(CAU,index) + +/*! + * @} + */ /* end of group CAU_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CAU_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CMP Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMP_Peripheral_Access_Layer CMP Peripheral Access Layer + * @{ + */ + +/** CMP - Register Layout Typedef */ +typedef struct { + __IO uint8_t CR0; /**< CMP Control Register 0, offset: 0x0 */ + __IO uint8_t CR1; /**< CMP Control Register 1, offset: 0x1 */ + __IO uint8_t FPR; /**< CMP Filter Period Register, offset: 0x2 */ + __IO uint8_t SCR; /**< CMP Status and Control Register, offset: 0x3 */ + __IO uint8_t DACCR; /**< DAC Control Register, offset: 0x4 */ + __IO uint8_t MUXCR; /**< MUX Control Register, offset: 0x5 */ +} CMP_Type, *CMP_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CMP - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMP_Register_Accessor_Macros CMP - Register accessor macros + * @{ + */ + + +/* CMP - Register accessors */ +#define CMP_CR0_REG(base) ((base)->CR0) +#define CMP_CR1_REG(base) ((base)->CR1) +#define CMP_FPR_REG(base) ((base)->FPR) +#define CMP_SCR_REG(base) ((base)->SCR) +#define CMP_DACCR_REG(base) ((base)->DACCR) +#define CMP_MUXCR_REG(base) ((base)->MUXCR) + +/*! + * @} + */ /* end of group CMP_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CMP Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMP_Register_Masks CMP Register Masks + * @{ + */ + +/* CR0 Bit Fields */ +#define CMP_CR0_HYSTCTR_MASK 0x3u +#define CMP_CR0_HYSTCTR_SHIFT 0 +#define CMP_CR0_HYSTCTR(x) (((uint8_t)(((uint8_t)(x))<<CMP_CR0_HYSTCTR_SHIFT))&CMP_CR0_HYSTCTR_MASK) +#define CMP_CR0_FILTER_CNT_MASK 0x70u +#define CMP_CR0_FILTER_CNT_SHIFT 4 +#define CMP_CR0_FILTER_CNT(x) (((uint8_t)(((uint8_t)(x))<<CMP_CR0_FILTER_CNT_SHIFT))&CMP_CR0_FILTER_CNT_MASK) +/* CR1 Bit Fields */ +#define CMP_CR1_EN_MASK 0x1u +#define CMP_CR1_EN_SHIFT 0 +#define CMP_CR1_OPE_MASK 0x2u +#define CMP_CR1_OPE_SHIFT 1 +#define CMP_CR1_COS_MASK 0x4u +#define CMP_CR1_COS_SHIFT 2 +#define CMP_CR1_INV_MASK 0x8u +#define CMP_CR1_INV_SHIFT 3 +#define CMP_CR1_PMODE_MASK 0x10u +#define CMP_CR1_PMODE_SHIFT 4 +#define CMP_CR1_WE_MASK 0x40u +#define CMP_CR1_WE_SHIFT 6 +#define CMP_CR1_SE_MASK 0x80u +#define CMP_CR1_SE_SHIFT 7 +/* FPR Bit Fields */ +#define CMP_FPR_FILT_PER_MASK 0xFFu +#define CMP_FPR_FILT_PER_SHIFT 0 +#define CMP_FPR_FILT_PER(x) (((uint8_t)(((uint8_t)(x))<<CMP_FPR_FILT_PER_SHIFT))&CMP_FPR_FILT_PER_MASK) +/* SCR Bit Fields */ +#define CMP_SCR_COUT_MASK 0x1u +#define CMP_SCR_COUT_SHIFT 0 +#define CMP_SCR_CFF_MASK 0x2u +#define CMP_SCR_CFF_SHIFT 1 +#define CMP_SCR_CFR_MASK 0x4u +#define CMP_SCR_CFR_SHIFT 2 +#define CMP_SCR_IEF_MASK 0x8u +#define CMP_SCR_IEF_SHIFT 3 +#define CMP_SCR_IER_MASK 0x10u +#define CMP_SCR_IER_SHIFT 4 +#define CMP_SCR_DMAEN_MASK 0x40u +#define CMP_SCR_DMAEN_SHIFT 6 +/* DACCR Bit Fields */ +#define CMP_DACCR_VOSEL_MASK 0x3Fu +#define CMP_DACCR_VOSEL_SHIFT 0 +#define CMP_DACCR_VOSEL(x) (((uint8_t)(((uint8_t)(x))<<CMP_DACCR_VOSEL_SHIFT))&CMP_DACCR_VOSEL_MASK) +#define CMP_DACCR_VRSEL_MASK 0x40u +#define CMP_DACCR_VRSEL_SHIFT 6 +#define CMP_DACCR_DACEN_MASK 0x80u +#define CMP_DACCR_DACEN_SHIFT 7 +/* MUXCR Bit Fields */ +#define CMP_MUXCR_MSEL_MASK 0x7u +#define CMP_MUXCR_MSEL_SHIFT 0 +#define CMP_MUXCR_MSEL(x) (((uint8_t)(((uint8_t)(x))<<CMP_MUXCR_MSEL_SHIFT))&CMP_MUXCR_MSEL_MASK) +#define CMP_MUXCR_PSEL_MASK 0x38u +#define CMP_MUXCR_PSEL_SHIFT 3 +#define CMP_MUXCR_PSEL(x) (((uint8_t)(((uint8_t)(x))<<CMP_MUXCR_PSEL_SHIFT))&CMP_MUXCR_PSEL_MASK) +#define CMP_MUXCR_PSTM_MASK 0x80u +#define CMP_MUXCR_PSTM_SHIFT 7 + +/*! + * @} + */ /* end of group CMP_Register_Masks */ + + +/* CMP - Peripheral instance base addresses */ +/** Peripheral CMP0 base address */ +#define CMP0_BASE (0x40073000u) +/** Peripheral CMP0 base pointer */ +#define CMP0 ((CMP_Type *)CMP0_BASE) +#define CMP0_BASE_PTR (CMP0) +/** Peripheral CMP1 base address */ +#define CMP1_BASE (0x40073008u) +/** Peripheral CMP1 base pointer */ +#define CMP1 ((CMP_Type *)CMP1_BASE) +#define CMP1_BASE_PTR (CMP1) +/** Peripheral CMP2 base address */ +#define CMP2_BASE (0x40073010u) +/** Peripheral CMP2 base pointer */ +#define CMP2 ((CMP_Type *)CMP2_BASE) +#define CMP2_BASE_PTR (CMP2) +/** Array initializer of CMP peripheral base pointers */ +#define CMP_BASES { CMP0, CMP1, CMP2 } + +/* ---------------------------------------------------------------------------- + -- CMP - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMP_Register_Accessor_Macros CMP - Register accessor macros + * @{ + */ + + +/* CMP - Register instance definitions */ +/* CMP0 */ +#define CMP0_CR0 CMP_CR0_REG(CMP0) +#define CMP0_CR1 CMP_CR1_REG(CMP0) +#define CMP0_FPR CMP_FPR_REG(CMP0) +#define CMP0_SCR CMP_SCR_REG(CMP0) +#define CMP0_DACCR CMP_DACCR_REG(CMP0) +#define CMP0_MUXCR CMP_MUXCR_REG(CMP0) +/* CMP1 */ +#define CMP1_CR0 CMP_CR0_REG(CMP1) +#define CMP1_CR1 CMP_CR1_REG(CMP1) +#define CMP1_FPR CMP_FPR_REG(CMP1) +#define CMP1_SCR CMP_SCR_REG(CMP1) +#define CMP1_DACCR CMP_DACCR_REG(CMP1) +#define CMP1_MUXCR CMP_MUXCR_REG(CMP1) +/* CMP2 */ +#define CMP2_CR0 CMP_CR0_REG(CMP2) +#define CMP2_CR1 CMP_CR1_REG(CMP2) +#define CMP2_FPR CMP_FPR_REG(CMP2) +#define CMP2_SCR CMP_SCR_REG(CMP2) +#define CMP2_DACCR CMP_DACCR_REG(CMP2) +#define CMP2_MUXCR CMP_MUXCR_REG(CMP2) + +/*! + * @} + */ /* end of group CMP_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CMP_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CMT Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMT_Peripheral_Access_Layer CMT Peripheral Access Layer + * @{ + */ + +/** CMT - Register Layout Typedef */ +typedef struct { + __IO uint8_t CGH1; /**< CMT Carrier Generator High Data Register 1, offset: 0x0 */ + __IO uint8_t CGL1; /**< CMT Carrier Generator Low Data Register 1, offset: 0x1 */ + __IO uint8_t CGH2; /**< CMT Carrier Generator High Data Register 2, offset: 0x2 */ + __IO uint8_t CGL2; /**< CMT Carrier Generator Low Data Register 2, offset: 0x3 */ + __IO uint8_t OC; /**< CMT Output Control Register, offset: 0x4 */ + __IO uint8_t MSC; /**< CMT Modulator Status and Control Register, offset: 0x5 */ + __IO uint8_t CMD1; /**< CMT Modulator Data Register Mark High, offset: 0x6 */ + __IO uint8_t CMD2; /**< CMT Modulator Data Register Mark Low, offset: 0x7 */ + __IO uint8_t CMD3; /**< CMT Modulator Data Register Space High, offset: 0x8 */ + __IO uint8_t CMD4; /**< CMT Modulator Data Register Space Low, offset: 0x9 */ + __IO uint8_t PPS; /**< CMT Primary Prescaler Register, offset: 0xA */ + __IO uint8_t DMA; /**< CMT Direct Memory Access Register, offset: 0xB */ +} CMT_Type, *CMT_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CMT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMT_Register_Accessor_Macros CMT - Register accessor macros + * @{ + */ + + +/* CMT - Register accessors */ +#define CMT_CGH1_REG(base) ((base)->CGH1) +#define CMT_CGL1_REG(base) ((base)->CGL1) +#define CMT_CGH2_REG(base) ((base)->CGH2) +#define CMT_CGL2_REG(base) ((base)->CGL2) +#define CMT_OC_REG(base) ((base)->OC) +#define CMT_MSC_REG(base) ((base)->MSC) +#define CMT_CMD1_REG(base) ((base)->CMD1) +#define CMT_CMD2_REG(base) ((base)->CMD2) +#define CMT_CMD3_REG(base) ((base)->CMD3) +#define CMT_CMD4_REG(base) ((base)->CMD4) +#define CMT_PPS_REG(base) ((base)->PPS) +#define CMT_DMA_REG(base) ((base)->DMA) + +/*! + * @} + */ /* end of group CMT_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CMT Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMT_Register_Masks CMT Register Masks + * @{ + */ + +/* CGH1 Bit Fields */ +#define CMT_CGH1_PH_MASK 0xFFu +#define CMT_CGH1_PH_SHIFT 0 +#define CMT_CGH1_PH(x) (((uint8_t)(((uint8_t)(x))<<CMT_CGH1_PH_SHIFT))&CMT_CGH1_PH_MASK) +/* CGL1 Bit Fields */ +#define CMT_CGL1_PL_MASK 0xFFu +#define CMT_CGL1_PL_SHIFT 0 +#define CMT_CGL1_PL(x) (((uint8_t)(((uint8_t)(x))<<CMT_CGL1_PL_SHIFT))&CMT_CGL1_PL_MASK) +/* CGH2 Bit Fields */ +#define CMT_CGH2_SH_MASK 0xFFu +#define CMT_CGH2_SH_SHIFT 0 +#define CMT_CGH2_SH(x) (((uint8_t)(((uint8_t)(x))<<CMT_CGH2_SH_SHIFT))&CMT_CGH2_SH_MASK) +/* CGL2 Bit Fields */ +#define CMT_CGL2_SL_MASK 0xFFu +#define CMT_CGL2_SL_SHIFT 0 +#define CMT_CGL2_SL(x) (((uint8_t)(((uint8_t)(x))<<CMT_CGL2_SL_SHIFT))&CMT_CGL2_SL_MASK) +/* OC Bit Fields */ +#define CMT_OC_IROPEN_MASK 0x20u +#define CMT_OC_IROPEN_SHIFT 5 +#define CMT_OC_CMTPOL_MASK 0x40u +#define CMT_OC_CMTPOL_SHIFT 6 +#define CMT_OC_IROL_MASK 0x80u +#define CMT_OC_IROL_SHIFT 7 +/* MSC Bit Fields */ +#define CMT_MSC_MCGEN_MASK 0x1u +#define CMT_MSC_MCGEN_SHIFT 0 +#define CMT_MSC_EOCIE_MASK 0x2u +#define CMT_MSC_EOCIE_SHIFT 1 +#define CMT_MSC_FSK_MASK 0x4u +#define CMT_MSC_FSK_SHIFT 2 +#define CMT_MSC_BASE_MASK 0x8u +#define CMT_MSC_BASE_SHIFT 3 +#define CMT_MSC_EXSPC_MASK 0x10u +#define CMT_MSC_EXSPC_SHIFT 4 +#define CMT_MSC_CMTDIV_MASK 0x60u +#define CMT_MSC_CMTDIV_SHIFT 5 +#define CMT_MSC_CMTDIV(x) (((uint8_t)(((uint8_t)(x))<<CMT_MSC_CMTDIV_SHIFT))&CMT_MSC_CMTDIV_MASK) +#define CMT_MSC_EOCF_MASK 0x80u +#define CMT_MSC_EOCF_SHIFT 7 +/* CMD1 Bit Fields */ +#define CMT_CMD1_MB_MASK 0xFFu +#define CMT_CMD1_MB_SHIFT 0 +#define CMT_CMD1_MB(x) (((uint8_t)(((uint8_t)(x))<<CMT_CMD1_MB_SHIFT))&CMT_CMD1_MB_MASK) +/* CMD2 Bit Fields */ +#define CMT_CMD2_MB_MASK 0xFFu +#define CMT_CMD2_MB_SHIFT 0 +#define CMT_CMD2_MB(x) (((uint8_t)(((uint8_t)(x))<<CMT_CMD2_MB_SHIFT))&CMT_CMD2_MB_MASK) +/* CMD3 Bit Fields */ +#define CMT_CMD3_SB_MASK 0xFFu +#define CMT_CMD3_SB_SHIFT 0 +#define CMT_CMD3_SB(x) (((uint8_t)(((uint8_t)(x))<<CMT_CMD3_SB_SHIFT))&CMT_CMD3_SB_MASK) +/* CMD4 Bit Fields */ +#define CMT_CMD4_SB_MASK 0xFFu +#define CMT_CMD4_SB_SHIFT 0 +#define CMT_CMD4_SB(x) (((uint8_t)(((uint8_t)(x))<<CMT_CMD4_SB_SHIFT))&CMT_CMD4_SB_MASK) +/* PPS Bit Fields */ +#define CMT_PPS_PPSDIV_MASK 0xFu +#define CMT_PPS_PPSDIV_SHIFT 0 +#define CMT_PPS_PPSDIV(x) (((uint8_t)(((uint8_t)(x))<<CMT_PPS_PPSDIV_SHIFT))&CMT_PPS_PPSDIV_MASK) +/* DMA Bit Fields */ +#define CMT_DMA_DMA_MASK 0x1u +#define CMT_DMA_DMA_SHIFT 0 + +/*! + * @} + */ /* end of group CMT_Register_Masks */ + + +/* CMT - Peripheral instance base addresses */ +/** Peripheral CMT base address */ +#define CMT_BASE (0x40062000u) +/** Peripheral CMT base pointer */ +#define CMT ((CMT_Type *)CMT_BASE) +#define CMT_BASE_PTR (CMT) +/** Array initializer of CMT peripheral base pointers */ +#define CMT_BASES { CMT } + +/* ---------------------------------------------------------------------------- + -- CMT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CMT_Register_Accessor_Macros CMT - Register accessor macros + * @{ + */ + + +/* CMT - Register instance definitions */ +/* CMT */ +#define CMT_CGH1 CMT_CGH1_REG(CMT) +#define CMT_CGL1 CMT_CGL1_REG(CMT) +#define CMT_CGH2 CMT_CGH2_REG(CMT) +#define CMT_CGL2 CMT_CGL2_REG(CMT) +#define CMT_OC CMT_OC_REG(CMT) +#define CMT_MSC CMT_MSC_REG(CMT) +#define CMT_CMD1 CMT_CMD1_REG(CMT) +#define CMT_CMD2 CMT_CMD2_REG(CMT) +#define CMT_CMD3 CMT_CMD3_REG(CMT) +#define CMT_CMD4 CMT_CMD4_REG(CMT) +#define CMT_PPS CMT_PPS_REG(CMT) +#define CMT_DMA CMT_DMA_REG(CMT) + +/*! + * @} + */ /* end of group CMT_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CMT_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- CRC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CRC_Peripheral_Access_Layer CRC Peripheral Access Layer + * @{ + */ + +/** CRC - Register Layout Typedef */ +typedef struct { + union { /* offset: 0x0 */ + struct { /* offset: 0x0 */ + __IO uint16_t DATAL; /**< CRC_DATAL register., offset: 0x0 */ + __IO uint16_t DATAH; /**< CRC_DATAH register., offset: 0x2 */ + } ACCESS16BIT; + __IO uint32_t DATA; /**< CRC Data register, offset: 0x0 */ + struct { /* offset: 0x0 */ + __IO uint8_t DATALL; /**< CRC_DATALL register., offset: 0x0 */ + __IO uint8_t DATALU; /**< CRC_DATALU register., offset: 0x1 */ + __IO uint8_t DATAHL; /**< CRC_DATAHL register., offset: 0x2 */ + __IO uint8_t DATAHU; /**< CRC_DATAHU register., offset: 0x3 */ + } ACCESS8BIT; + }; + union { /* offset: 0x4 */ + struct { /* offset: 0x4 */ + __IO uint16_t GPOLYL; /**< CRC_GPOLYL register., offset: 0x4 */ + __IO uint16_t GPOLYH; /**< CRC_GPOLYH register., offset: 0x6 */ + } GPOLY_ACCESS16BIT; + __IO uint32_t GPOLY; /**< CRC Polynomial register, offset: 0x4 */ + struct { /* offset: 0x4 */ + __IO uint8_t GPOLYLL; /**< CRC_GPOLYLL register., offset: 0x4 */ + __IO uint8_t GPOLYLU; /**< CRC_GPOLYLU register., offset: 0x5 */ + __IO uint8_t GPOLYHL; /**< CRC_GPOLYHL register., offset: 0x6 */ + __IO uint8_t GPOLYHU; /**< CRC_GPOLYHU register., offset: 0x7 */ + } GPOLY_ACCESS8BIT; + }; + union { /* offset: 0x8 */ + __IO uint32_t CTRL; /**< CRC Control register, offset: 0x8 */ + struct { /* offset: 0x8 */ + uint8_t RESERVED_0[3]; + __IO uint8_t CTRLHU; /**< CRC_CTRLHU register., offset: 0xB */ + } CTRL_ACCESS8BIT; + }; +} CRC_Type, *CRC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- CRC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CRC_Register_Accessor_Macros CRC - Register accessor macros + * @{ + */ + + +/* CRC - Register accessors */ +#define CRC_DATAL_REG(base) ((base)->ACCESS16BIT.DATAL) +#define CRC_DATAH_REG(base) ((base)->ACCESS16BIT.DATAH) +#define CRC_DATA_REG(base) ((base)->DATA) +#define CRC_DATALL_REG(base) ((base)->ACCESS8BIT.DATALL) +#define CRC_DATALU_REG(base) ((base)->ACCESS8BIT.DATALU) +#define CRC_DATAHL_REG(base) ((base)->ACCESS8BIT.DATAHL) +#define CRC_DATAHU_REG(base) ((base)->ACCESS8BIT.DATAHU) +#define CRC_GPOLYL_REG(base) ((base)->GPOLY_ACCESS16BIT.GPOLYL) +#define CRC_GPOLYH_REG(base) ((base)->GPOLY_ACCESS16BIT.GPOLYH) +#define CRC_GPOLY_REG(base) ((base)->GPOLY) +#define CRC_GPOLYLL_REG(base) ((base)->GPOLY_ACCESS8BIT.GPOLYLL) +#define CRC_GPOLYLU_REG(base) ((base)->GPOLY_ACCESS8BIT.GPOLYLU) +#define CRC_GPOLYHL_REG(base) ((base)->GPOLY_ACCESS8BIT.GPOLYHL) +#define CRC_GPOLYHU_REG(base) ((base)->GPOLY_ACCESS8BIT.GPOLYHU) +#define CRC_CTRL_REG(base) ((base)->CTRL) +#define CRC_CTRLHU_REG(base) ((base)->CTRL_ACCESS8BIT.CTRLHU) + +/*! + * @} + */ /* end of group CRC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- CRC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CRC_Register_Masks CRC Register Masks + * @{ + */ + +/* DATAL Bit Fields */ +#define CRC_DATAL_DATAL_MASK 0xFFFFu +#define CRC_DATAL_DATAL_SHIFT 0 +#define CRC_DATAL_DATAL(x) (((uint16_t)(((uint16_t)(x))<<CRC_DATAL_DATAL_SHIFT))&CRC_DATAL_DATAL_MASK) +/* DATAH Bit Fields */ +#define CRC_DATAH_DATAH_MASK 0xFFFFu +#define CRC_DATAH_DATAH_SHIFT 0 +#define CRC_DATAH_DATAH(x) (((uint16_t)(((uint16_t)(x))<<CRC_DATAH_DATAH_SHIFT))&CRC_DATAH_DATAH_MASK) +/* DATA Bit Fields */ +#define CRC_DATA_LL_MASK 0xFFu +#define CRC_DATA_LL_SHIFT 0 +#define CRC_DATA_LL(x) (((uint32_t)(((uint32_t)(x))<<CRC_DATA_LL_SHIFT))&CRC_DATA_LL_MASK) +#define CRC_DATA_LU_MASK 0xFF00u +#define CRC_DATA_LU_SHIFT 8 +#define CRC_DATA_LU(x) (((uint32_t)(((uint32_t)(x))<<CRC_DATA_LU_SHIFT))&CRC_DATA_LU_MASK) +#define CRC_DATA_HL_MASK 0xFF0000u +#define CRC_DATA_HL_SHIFT 16 +#define CRC_DATA_HL(x) (((uint32_t)(((uint32_t)(x))<<CRC_DATA_HL_SHIFT))&CRC_DATA_HL_MASK) +#define CRC_DATA_HU_MASK 0xFF000000u +#define CRC_DATA_HU_SHIFT 24 +#define CRC_DATA_HU(x) (((uint32_t)(((uint32_t)(x))<<CRC_DATA_HU_SHIFT))&CRC_DATA_HU_MASK) +/* DATALL Bit Fields */ +#define CRC_DATALL_DATALL_MASK 0xFFu +#define CRC_DATALL_DATALL_SHIFT 0 +#define CRC_DATALL_DATALL(x) (((uint8_t)(((uint8_t)(x))<<CRC_DATALL_DATALL_SHIFT))&CRC_DATALL_DATALL_MASK) +/* DATALU Bit Fields */ +#define CRC_DATALU_DATALU_MASK 0xFFu +#define CRC_DATALU_DATALU_SHIFT 0 +#define CRC_DATALU_DATALU(x) (((uint8_t)(((uint8_t)(x))<<CRC_DATALU_DATALU_SHIFT))&CRC_DATALU_DATALU_MASK) +/* DATAHL Bit Fields */ +#define CRC_DATAHL_DATAHL_MASK 0xFFu +#define CRC_DATAHL_DATAHL_SHIFT 0 +#define CRC_DATAHL_DATAHL(x) (((uint8_t)(((uint8_t)(x))<<CRC_DATAHL_DATAHL_SHIFT))&CRC_DATAHL_DATAHL_MASK) +/* DATAHU Bit Fields */ +#define CRC_DATAHU_DATAHU_MASK 0xFFu +#define CRC_DATAHU_DATAHU_SHIFT 0 +#define CRC_DATAHU_DATAHU(x) (((uint8_t)(((uint8_t)(x))<<CRC_DATAHU_DATAHU_SHIFT))&CRC_DATAHU_DATAHU_MASK) +/* GPOLYL Bit Fields */ +#define CRC_GPOLYL_GPOLYL_MASK 0xFFFFu +#define CRC_GPOLYL_GPOLYL_SHIFT 0 +#define CRC_GPOLYL_GPOLYL(x) (((uint16_t)(((uint16_t)(x))<<CRC_GPOLYL_GPOLYL_SHIFT))&CRC_GPOLYL_GPOLYL_MASK) +/* GPOLYH Bit Fields */ +#define CRC_GPOLYH_GPOLYH_MASK 0xFFFFu +#define CRC_GPOLYH_GPOLYH_SHIFT 0 +#define CRC_GPOLYH_GPOLYH(x) (((uint16_t)(((uint16_t)(x))<<CRC_GPOLYH_GPOLYH_SHIFT))&CRC_GPOLYH_GPOLYH_MASK) +/* GPOLY Bit Fields */ +#define CRC_GPOLY_LOW_MASK 0xFFFFu +#define CRC_GPOLY_LOW_SHIFT 0 +#define CRC_GPOLY_LOW(x) (((uint32_t)(((uint32_t)(x))<<CRC_GPOLY_LOW_SHIFT))&CRC_GPOLY_LOW_MASK) +#define CRC_GPOLY_HIGH_MASK 0xFFFF0000u +#define CRC_GPOLY_HIGH_SHIFT 16 +#define CRC_GPOLY_HIGH(x) (((uint32_t)(((uint32_t)(x))<<CRC_GPOLY_HIGH_SHIFT))&CRC_GPOLY_HIGH_MASK) +/* GPOLYLL Bit Fields */ +#define CRC_GPOLYLL_GPOLYLL_MASK 0xFFu +#define CRC_GPOLYLL_GPOLYLL_SHIFT 0 +#define CRC_GPOLYLL_GPOLYLL(x) (((uint8_t)(((uint8_t)(x))<<CRC_GPOLYLL_GPOLYLL_SHIFT))&CRC_GPOLYLL_GPOLYLL_MASK) +/* GPOLYLU Bit Fields */ +#define CRC_GPOLYLU_GPOLYLU_MASK 0xFFu +#define CRC_GPOLYLU_GPOLYLU_SHIFT 0 +#define CRC_GPOLYLU_GPOLYLU(x) (((uint8_t)(((uint8_t)(x))<<CRC_GPOLYLU_GPOLYLU_SHIFT))&CRC_GPOLYLU_GPOLYLU_MASK) +/* GPOLYHL Bit Fields */ +#define CRC_GPOLYHL_GPOLYHL_MASK 0xFFu +#define CRC_GPOLYHL_GPOLYHL_SHIFT 0 +#define CRC_GPOLYHL_GPOLYHL(x) (((uint8_t)(((uint8_t)(x))<<CRC_GPOLYHL_GPOLYHL_SHIFT))&CRC_GPOLYHL_GPOLYHL_MASK) +/* GPOLYHU Bit Fields */ +#define CRC_GPOLYHU_GPOLYHU_MASK 0xFFu +#define CRC_GPOLYHU_GPOLYHU_SHIFT 0 +#define CRC_GPOLYHU_GPOLYHU(x) (((uint8_t)(((uint8_t)(x))<<CRC_GPOLYHU_GPOLYHU_SHIFT))&CRC_GPOLYHU_GPOLYHU_MASK) +/* CTRL Bit Fields */ +#define CRC_CTRL_TCRC_MASK 0x1000000u +#define CRC_CTRL_TCRC_SHIFT 24 +#define CRC_CTRL_WAS_MASK 0x2000000u +#define CRC_CTRL_WAS_SHIFT 25 +#define CRC_CTRL_FXOR_MASK 0x4000000u +#define CRC_CTRL_FXOR_SHIFT 26 +#define CRC_CTRL_TOTR_MASK 0x30000000u +#define CRC_CTRL_TOTR_SHIFT 28 +#define CRC_CTRL_TOTR(x) (((uint32_t)(((uint32_t)(x))<<CRC_CTRL_TOTR_SHIFT))&CRC_CTRL_TOTR_MASK) +#define CRC_CTRL_TOT_MASK 0xC0000000u +#define CRC_CTRL_TOT_SHIFT 30 +#define CRC_CTRL_TOT(x) (((uint32_t)(((uint32_t)(x))<<CRC_CTRL_TOT_SHIFT))&CRC_CTRL_TOT_MASK) +/* CTRLHU Bit Fields */ +#define CRC_CTRLHU_TCRC_MASK 0x1u +#define CRC_CTRLHU_TCRC_SHIFT 0 +#define CRC_CTRLHU_WAS_MASK 0x2u +#define CRC_CTRLHU_WAS_SHIFT 1 +#define CRC_CTRLHU_FXOR_MASK 0x4u +#define CRC_CTRLHU_FXOR_SHIFT 2 +#define CRC_CTRLHU_TOTR_MASK 0x30u +#define CRC_CTRLHU_TOTR_SHIFT 4 +#define CRC_CTRLHU_TOTR(x) (((uint8_t)(((uint8_t)(x))<<CRC_CTRLHU_TOTR_SHIFT))&CRC_CTRLHU_TOTR_MASK) +#define CRC_CTRLHU_TOT_MASK 0xC0u +#define CRC_CTRLHU_TOT_SHIFT 6 +#define CRC_CTRLHU_TOT(x) (((uint8_t)(((uint8_t)(x))<<CRC_CTRLHU_TOT_SHIFT))&CRC_CTRLHU_TOT_MASK) + +/*! + * @} + */ /* end of group CRC_Register_Masks */ + + +/* CRC - Peripheral instance base addresses */ +/** Peripheral CRC base address */ +#define CRC_BASE (0x40032000u) +/** Peripheral CRC base pointer */ +#define CRC0 ((CRC_Type *)CRC_BASE) +#define CRC_BASE_PTR (CRC0) +/** Array initializer of CRC peripheral base pointers */ +#define CRC_BASES { CRC0 } + +/* ---------------------------------------------------------------------------- + -- CRC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup CRC_Register_Accessor_Macros CRC - Register accessor macros + * @{ + */ + + +/* CRC - Register instance definitions */ +/* CRC */ +#define CRC_DATA CRC_DATA_REG(CRC0) +#define CRC_DATAL CRC_DATAL_REG(CRC0) +#define CRC_DATALL CRC_DATALL_REG(CRC0) +#define CRC_DATALU CRC_DATALU_REG(CRC0) +#define CRC_DATAH CRC_DATAH_REG(CRC0) +#define CRC_DATAHL CRC_DATAHL_REG(CRC0) +#define CRC_DATAHU CRC_DATAHU_REG(CRC0) +#define CRC_GPOLY CRC_GPOLY_REG(CRC0) +#define CRC_GPOLYL CRC_GPOLYL_REG(CRC0) +#define CRC_GPOLYLL CRC_GPOLYLL_REG(CRC0) +#define CRC_GPOLYLU CRC_GPOLYLU_REG(CRC0) +#define CRC_GPOLYH CRC_GPOLYH_REG(CRC0) +#define CRC_GPOLYHL CRC_GPOLYHL_REG(CRC0) +#define CRC_GPOLYHU CRC_GPOLYHU_REG(CRC0) +#define CRC_CTRL CRC_CTRL_REG(CRC0) +#define CRC_CTRLHU CRC_CTRLHU_REG(CRC0) + +/*! + * @} + */ /* end of group CRC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group CRC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- DAC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DAC_Peripheral_Access_Layer DAC Peripheral Access Layer + * @{ + */ + +/** DAC - Register Layout Typedef */ +typedef struct { + struct { /* offset: 0x0, array step: 0x2 */ + __IO uint8_t DATL; /**< DAC Data Low Register, array offset: 0x0, array step: 0x2 */ + __IO uint8_t DATH; /**< DAC Data High Register, array offset: 0x1, array step: 0x2 */ + } DAT[16]; + __IO uint8_t SR; /**< DAC Status Register, offset: 0x20 */ + __IO uint8_t C0; /**< DAC Control Register, offset: 0x21 */ + __IO uint8_t C1; /**< DAC Control Register 1, offset: 0x22 */ + __IO uint8_t C2; /**< DAC Control Register 2, offset: 0x23 */ +} DAC_Type, *DAC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- DAC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DAC_Register_Accessor_Macros DAC - Register accessor macros + * @{ + */ + + +/* DAC - Register accessors */ +#define DAC_DATL_REG(base,index) ((base)->DAT[index].DATL) +#define DAC_DATH_REG(base,index) ((base)->DAT[index].DATH) +#define DAC_SR_REG(base) ((base)->SR) +#define DAC_C0_REG(base) ((base)->C0) +#define DAC_C1_REG(base) ((base)->C1) +#define DAC_C2_REG(base) ((base)->C2) + +/*! + * @} + */ /* end of group DAC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- DAC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DAC_Register_Masks DAC Register Masks + * @{ + */ + +/* DATL Bit Fields */ +#define DAC_DATL_DATA0_MASK 0xFFu +#define DAC_DATL_DATA0_SHIFT 0 +#define DAC_DATL_DATA0(x) (((uint8_t)(((uint8_t)(x))<<DAC_DATL_DATA0_SHIFT))&DAC_DATL_DATA0_MASK) +/* DATH Bit Fields */ +#define DAC_DATH_DATA1_MASK 0xFu +#define DAC_DATH_DATA1_SHIFT 0 +#define DAC_DATH_DATA1(x) (((uint8_t)(((uint8_t)(x))<<DAC_DATH_DATA1_SHIFT))&DAC_DATH_DATA1_MASK) +/* SR Bit Fields */ +#define DAC_SR_DACBFRPBF_MASK 0x1u +#define DAC_SR_DACBFRPBF_SHIFT 0 +#define DAC_SR_DACBFRPTF_MASK 0x2u +#define DAC_SR_DACBFRPTF_SHIFT 1 +#define DAC_SR_DACBFWMF_MASK 0x4u +#define DAC_SR_DACBFWMF_SHIFT 2 +/* C0 Bit Fields */ +#define DAC_C0_DACBBIEN_MASK 0x1u +#define DAC_C0_DACBBIEN_SHIFT 0 +#define DAC_C0_DACBTIEN_MASK 0x2u +#define DAC_C0_DACBTIEN_SHIFT 1 +#define DAC_C0_DACBWIEN_MASK 0x4u +#define DAC_C0_DACBWIEN_SHIFT 2 +#define DAC_C0_LPEN_MASK 0x8u +#define DAC_C0_LPEN_SHIFT 3 +#define DAC_C0_DACSWTRG_MASK 0x10u +#define DAC_C0_DACSWTRG_SHIFT 4 +#define DAC_C0_DACTRGSEL_MASK 0x20u +#define DAC_C0_DACTRGSEL_SHIFT 5 +#define DAC_C0_DACRFS_MASK 0x40u +#define DAC_C0_DACRFS_SHIFT 6 +#define DAC_C0_DACEN_MASK 0x80u +#define DAC_C0_DACEN_SHIFT 7 +/* C1 Bit Fields */ +#define DAC_C1_DACBFEN_MASK 0x1u +#define DAC_C1_DACBFEN_SHIFT 0 +#define DAC_C1_DACBFMD_MASK 0x6u +#define DAC_C1_DACBFMD_SHIFT 1 +#define DAC_C1_DACBFMD(x) (((uint8_t)(((uint8_t)(x))<<DAC_C1_DACBFMD_SHIFT))&DAC_C1_DACBFMD_MASK) +#define DAC_C1_DACBFWM_MASK 0x18u +#define DAC_C1_DACBFWM_SHIFT 3 +#define DAC_C1_DACBFWM(x) (((uint8_t)(((uint8_t)(x))<<DAC_C1_DACBFWM_SHIFT))&DAC_C1_DACBFWM_MASK) +#define DAC_C1_DMAEN_MASK 0x80u +#define DAC_C1_DMAEN_SHIFT 7 +/* C2 Bit Fields */ +#define DAC_C2_DACBFUP_MASK 0xFu +#define DAC_C2_DACBFUP_SHIFT 0 +#define DAC_C2_DACBFUP(x) (((uint8_t)(((uint8_t)(x))<<DAC_C2_DACBFUP_SHIFT))&DAC_C2_DACBFUP_MASK) +#define DAC_C2_DACBFRP_MASK 0xF0u +#define DAC_C2_DACBFRP_SHIFT 4 +#define DAC_C2_DACBFRP(x) (((uint8_t)(((uint8_t)(x))<<DAC_C2_DACBFRP_SHIFT))&DAC_C2_DACBFRP_MASK) + +/*! + * @} + */ /* end of group DAC_Register_Masks */ + + +/* DAC - Peripheral instance base addresses */ +/** Peripheral DAC0 base address */ +#define DAC0_BASE (0x400CC000u) +/** Peripheral DAC0 base pointer */ +#define DAC0 ((DAC_Type *)DAC0_BASE) +#define DAC0_BASE_PTR (DAC0) +/** Peripheral DAC1 base address */ +#define DAC1_BASE (0x400CD000u) +/** Peripheral DAC1 base pointer */ +#define DAC1 ((DAC_Type *)DAC1_BASE) +#define DAC1_BASE_PTR (DAC1) +/** Array initializer of DAC peripheral base pointers */ +#define DAC_BASES { DAC0, DAC1 } + +/* ---------------------------------------------------------------------------- + -- DAC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DAC_Register_Accessor_Macros DAC - Register accessor macros + * @{ + */ + + +/* DAC - Register instance definitions */ +/* DAC0 */ +#define DAC0_DAT0L DAC_DATL_REG(DAC0,0) +#define DAC0_DAT0H DAC_DATH_REG(DAC0,0) +#define DAC0_DAT1L DAC_DATL_REG(DAC0,1) +#define DAC0_DAT1H DAC_DATH_REG(DAC0,1) +#define DAC0_DAT2L DAC_DATL_REG(DAC0,2) +#define DAC0_DAT2H DAC_DATH_REG(DAC0,2) +#define DAC0_DAT3L DAC_DATL_REG(DAC0,3) +#define DAC0_DAT3H DAC_DATH_REG(DAC0,3) +#define DAC0_DAT4L DAC_DATL_REG(DAC0,4) +#define DAC0_DAT4H DAC_DATH_REG(DAC0,4) +#define DAC0_DAT5L DAC_DATL_REG(DAC0,5) +#define DAC0_DAT5H DAC_DATH_REG(DAC0,5) +#define DAC0_DAT6L DAC_DATL_REG(DAC0,6) +#define DAC0_DAT6H DAC_DATH_REG(DAC0,6) +#define DAC0_DAT7L DAC_DATL_REG(DAC0,7) +#define DAC0_DAT7H DAC_DATH_REG(DAC0,7) +#define DAC0_DAT8L DAC_DATL_REG(DAC0,8) +#define DAC0_DAT8H DAC_DATH_REG(DAC0,8) +#define DAC0_DAT9L DAC_DATL_REG(DAC0,9) +#define DAC0_DAT9H DAC_DATH_REG(DAC0,9) +#define DAC0_DAT10L DAC_DATL_REG(DAC0,10) +#define DAC0_DAT10H DAC_DATH_REG(DAC0,10) +#define DAC0_DAT11L DAC_DATL_REG(DAC0,11) +#define DAC0_DAT11H DAC_DATH_REG(DAC0,11) +#define DAC0_DAT12L DAC_DATL_REG(DAC0,12) +#define DAC0_DAT12H DAC_DATH_REG(DAC0,12) +#define DAC0_DAT13L DAC_DATL_REG(DAC0,13) +#define DAC0_DAT13H DAC_DATH_REG(DAC0,13) +#define DAC0_DAT14L DAC_DATL_REG(DAC0,14) +#define DAC0_DAT14H DAC_DATH_REG(DAC0,14) +#define DAC0_DAT15L DAC_DATL_REG(DAC0,15) +#define DAC0_DAT15H DAC_DATH_REG(DAC0,15) +#define DAC0_SR DAC_SR_REG(DAC0) +#define DAC0_C0 DAC_C0_REG(DAC0) +#define DAC0_C1 DAC_C1_REG(DAC0) +#define DAC0_C2 DAC_C2_REG(DAC0) +/* DAC1 */ +#define DAC1_DAT0L DAC_DATL_REG(DAC1,0) +#define DAC1_DAT0H DAC_DATH_REG(DAC1,0) +#define DAC1_DAT1L DAC_DATL_REG(DAC1,1) +#define DAC1_DAT1H DAC_DATH_REG(DAC1,1) +#define DAC1_DAT2L DAC_DATL_REG(DAC1,2) +#define DAC1_DAT2H DAC_DATH_REG(DAC1,2) +#define DAC1_DAT3L DAC_DATL_REG(DAC1,3) +#define DAC1_DAT3H DAC_DATH_REG(DAC1,3) +#define DAC1_DAT4L DAC_DATL_REG(DAC1,4) +#define DAC1_DAT4H DAC_DATH_REG(DAC1,4) +#define DAC1_DAT5L DAC_DATL_REG(DAC1,5) +#define DAC1_DAT5H DAC_DATH_REG(DAC1,5) +#define DAC1_DAT6L DAC_DATL_REG(DAC1,6) +#define DAC1_DAT6H DAC_DATH_REG(DAC1,6) +#define DAC1_DAT7L DAC_DATL_REG(DAC1,7) +#define DAC1_DAT7H DAC_DATH_REG(DAC1,7) +#define DAC1_DAT8L DAC_DATL_REG(DAC1,8) +#define DAC1_DAT8H DAC_DATH_REG(DAC1,8) +#define DAC1_DAT9L DAC_DATL_REG(DAC1,9) +#define DAC1_DAT9H DAC_DATH_REG(DAC1,9) +#define DAC1_DAT10L DAC_DATL_REG(DAC1,10) +#define DAC1_DAT10H DAC_DATH_REG(DAC1,10) +#define DAC1_DAT11L DAC_DATL_REG(DAC1,11) +#define DAC1_DAT11H DAC_DATH_REG(DAC1,11) +#define DAC1_DAT12L DAC_DATL_REG(DAC1,12) +#define DAC1_DAT12H DAC_DATH_REG(DAC1,12) +#define DAC1_DAT13L DAC_DATL_REG(DAC1,13) +#define DAC1_DAT13H DAC_DATH_REG(DAC1,13) +#define DAC1_DAT14L DAC_DATL_REG(DAC1,14) +#define DAC1_DAT14H DAC_DATH_REG(DAC1,14) +#define DAC1_DAT15L DAC_DATL_REG(DAC1,15) +#define DAC1_DAT15H DAC_DATH_REG(DAC1,15) +#define DAC1_SR DAC_SR_REG(DAC1) +#define DAC1_C0 DAC_C0_REG(DAC1) +#define DAC1_C1 DAC_C1_REG(DAC1) +#define DAC1_C2 DAC_C2_REG(DAC1) + +/* DAC - Register array accessors */ +#define DAC0_DATL(index) DAC_DATL_REG(DAC0,index) +#define DAC1_DATL(index) DAC_DATL_REG(DAC1,index) +#define DAC0_DATH(index) DAC_DATH_REG(DAC0,index) +#define DAC1_DATH(index) DAC_DATH_REG(DAC1,index) + +/*! + * @} + */ /* end of group DAC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group DAC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- DMA Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMA_Peripheral_Access_Layer DMA Peripheral Access Layer + * @{ + */ + +/** DMA - Register Layout Typedef */ +typedef struct { + __IO uint32_t CR; /**< Control Register, offset: 0x0 */ + __I uint32_t ES; /**< Error Status Register, offset: 0x4 */ + uint8_t RESERVED_0[4]; + __IO uint32_t ERQ; /**< Enable Request Register, offset: 0xC */ + uint8_t RESERVED_1[4]; + __IO uint32_t EEI; /**< Enable Error Interrupt Register, offset: 0x14 */ + __O uint8_t CEEI; /**< Clear Enable Error Interrupt Register, offset: 0x18 */ + __O uint8_t SEEI; /**< Set Enable Error Interrupt Register, offset: 0x19 */ + __O uint8_t CERQ; /**< Clear Enable Request Register, offset: 0x1A */ + __O uint8_t SERQ; /**< Set Enable Request Register, offset: 0x1B */ + __O uint8_t CDNE; /**< Clear DONE Status Bit Register, offset: 0x1C */ + __O uint8_t SSRT; /**< Set START Bit Register, offset: 0x1D */ + __O uint8_t CERR; /**< Clear Error Register, offset: 0x1E */ + __O uint8_t CINT; /**< Clear Interrupt Request Register, offset: 0x1F */ + uint8_t RESERVED_2[4]; + __IO uint32_t INT; /**< Interrupt Request Register, offset: 0x24 */ + uint8_t RESERVED_3[4]; + __IO uint32_t ERR; /**< Error Register, offset: 0x2C */ + uint8_t RESERVED_4[4]; + __I uint32_t HRS; /**< Hardware Request Status Register, offset: 0x34 */ + uint8_t RESERVED_5[200]; + __IO uint8_t DCHPRI3; /**< Channel n Priority Register, offset: 0x100 */ + __IO uint8_t DCHPRI2; /**< Channel n Priority Register, offset: 0x101 */ + __IO uint8_t DCHPRI1; /**< Channel n Priority Register, offset: 0x102 */ + __IO uint8_t DCHPRI0; /**< Channel n Priority Register, offset: 0x103 */ + __IO uint8_t DCHPRI7; /**< Channel n Priority Register, offset: 0x104 */ + __IO uint8_t DCHPRI6; /**< Channel n Priority Register, offset: 0x105 */ + __IO uint8_t DCHPRI5; /**< Channel n Priority Register, offset: 0x106 */ + __IO uint8_t DCHPRI4; /**< Channel n Priority Register, offset: 0x107 */ + __IO uint8_t DCHPRI11; /**< Channel n Priority Register, offset: 0x108 */ + __IO uint8_t DCHPRI10; /**< Channel n Priority Register, offset: 0x109 */ + __IO uint8_t DCHPRI9; /**< Channel n Priority Register, offset: 0x10A */ + __IO uint8_t DCHPRI8; /**< Channel n Priority Register, offset: 0x10B */ + __IO uint8_t DCHPRI15; /**< Channel n Priority Register, offset: 0x10C */ + __IO uint8_t DCHPRI14; /**< Channel n Priority Register, offset: 0x10D */ + __IO uint8_t DCHPRI13; /**< Channel n Priority Register, offset: 0x10E */ + __IO uint8_t DCHPRI12; /**< Channel n Priority Register, offset: 0x10F */ + uint8_t RESERVED_6[3824]; + struct { /* offset: 0x1000, array step: 0x20 */ + __IO uint32_t SADDR; /**< TCD Source Address, array offset: 0x1000, array step: 0x20 */ + __IO uint16_t SOFF; /**< TCD Signed Source Address Offset, array offset: 0x1004, array step: 0x20 */ + __IO uint16_t ATTR; /**< TCD Transfer Attributes, array offset: 0x1006, array step: 0x20 */ + union { /* offset: 0x1008, array step: 0x20 */ + __IO uint32_t NBYTES_MLNO; /**< TCD Minor Byte Count (Minor Loop Disabled), array offset: 0x1008, array step: 0x20 */ + __IO uint32_t NBYTES_MLOFFNO; /**< TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled), array offset: 0x1008, array step: 0x20 */ + __IO uint32_t NBYTES_MLOFFYES; /**< TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled), array offset: 0x1008, array step: 0x20 */ + }; + __IO uint32_t SLAST; /**< TCD Last Source Address Adjustment, array offset: 0x100C, array step: 0x20 */ + __IO uint32_t DADDR; /**< TCD Destination Address, array offset: 0x1010, array step: 0x20 */ + __IO uint16_t DOFF; /**< TCD Signed Destination Address Offset, array offset: 0x1014, array step: 0x20 */ + union { /* offset: 0x1016, array step: 0x20 */ + __IO uint16_t CITER_ELINKNO; /**< TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled), array offset: 0x1016, array step: 0x20 */ + __IO uint16_t CITER_ELINKYES; /**< TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled), array offset: 0x1016, array step: 0x20 */ + }; + __IO uint32_t DLAST_SGA; /**< TCD Last Destination Address Adjustment/Scatter Gather Address, array offset: 0x1018, array step: 0x20 */ + __IO uint16_t CSR; /**< TCD Control and Status, array offset: 0x101C, array step: 0x20 */ + union { /* offset: 0x101E, array step: 0x20 */ + __IO uint16_t BITER_ELINKNO; /**< TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled), array offset: 0x101E, array step: 0x20 */ + __IO uint16_t BITER_ELINKYES; /**< TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled), array offset: 0x101E, array step: 0x20 */ + }; + } TCD[16]; +} DMA_Type, *DMA_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- DMA - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMA_Register_Accessor_Macros DMA - Register accessor macros + * @{ + */ + + +/* DMA - Register accessors */ +#define DMA_CR_REG(base) ((base)->CR) +#define DMA_ES_REG(base) ((base)->ES) +#define DMA_ERQ_REG(base) ((base)->ERQ) +#define DMA_EEI_REG(base) ((base)->EEI) +#define DMA_CEEI_REG(base) ((base)->CEEI) +#define DMA_SEEI_REG(base) ((base)->SEEI) +#define DMA_CERQ_REG(base) ((base)->CERQ) +#define DMA_SERQ_REG(base) ((base)->SERQ) +#define DMA_CDNE_REG(base) ((base)->CDNE) +#define DMA_SSRT_REG(base) ((base)->SSRT) +#define DMA_CERR_REG(base) ((base)->CERR) +#define DMA_CINT_REG(base) ((base)->CINT) +#define DMA_INT_REG(base) ((base)->INT) +#define DMA_ERR_REG(base) ((base)->ERR) +#define DMA_HRS_REG(base) ((base)->HRS) +#define DMA_DCHPRI3_REG(base) ((base)->DCHPRI3) +#define DMA_DCHPRI2_REG(base) ((base)->DCHPRI2) +#define DMA_DCHPRI1_REG(base) ((base)->DCHPRI1) +#define DMA_DCHPRI0_REG(base) ((base)->DCHPRI0) +#define DMA_DCHPRI7_REG(base) ((base)->DCHPRI7) +#define DMA_DCHPRI6_REG(base) ((base)->DCHPRI6) +#define DMA_DCHPRI5_REG(base) ((base)->DCHPRI5) +#define DMA_DCHPRI4_REG(base) ((base)->DCHPRI4) +#define DMA_DCHPRI11_REG(base) ((base)->DCHPRI11) +#define DMA_DCHPRI10_REG(base) ((base)->DCHPRI10) +#define DMA_DCHPRI9_REG(base) ((base)->DCHPRI9) +#define DMA_DCHPRI8_REG(base) ((base)->DCHPRI8) +#define DMA_DCHPRI15_REG(base) ((base)->DCHPRI15) +#define DMA_DCHPRI14_REG(base) ((base)->DCHPRI14) +#define DMA_DCHPRI13_REG(base) ((base)->DCHPRI13) +#define DMA_DCHPRI12_REG(base) ((base)->DCHPRI12) +#define DMA_SADDR_REG(base,index) ((base)->TCD[index].SADDR) +#define DMA_SOFF_REG(base,index) ((base)->TCD[index].SOFF) +#define DMA_ATTR_REG(base,index) ((base)->TCD[index].ATTR) +#define DMA_NBYTES_MLNO_REG(base,index) ((base)->TCD[index].NBYTES_MLNO) +#define DMA_NBYTES_MLOFFNO_REG(base,index) ((base)->TCD[index].NBYTES_MLOFFNO) +#define DMA_NBYTES_MLOFFYES_REG(base,index) ((base)->TCD[index].NBYTES_MLOFFYES) +#define DMA_SLAST_REG(base,index) ((base)->TCD[index].SLAST) +#define DMA_DADDR_REG(base,index) ((base)->TCD[index].DADDR) +#define DMA_DOFF_REG(base,index) ((base)->TCD[index].DOFF) +#define DMA_CITER_ELINKNO_REG(base,index) ((base)->TCD[index].CITER_ELINKNO) +#define DMA_CITER_ELINKYES_REG(base,index) ((base)->TCD[index].CITER_ELINKYES) +#define DMA_DLAST_SGA_REG(base,index) ((base)->TCD[index].DLAST_SGA) +#define DMA_CSR_REG(base,index) ((base)->TCD[index].CSR) +#define DMA_BITER_ELINKNO_REG(base,index) ((base)->TCD[index].BITER_ELINKNO) +#define DMA_BITER_ELINKYES_REG(base,index) ((base)->TCD[index].BITER_ELINKYES) + +/*! + * @} + */ /* end of group DMA_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- DMA Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMA_Register_Masks DMA Register Masks + * @{ + */ + +/* CR Bit Fields */ +#define DMA_CR_EDBG_MASK 0x2u +#define DMA_CR_EDBG_SHIFT 1 +#define DMA_CR_ERCA_MASK 0x4u +#define DMA_CR_ERCA_SHIFT 2 +#define DMA_CR_HOE_MASK 0x10u +#define DMA_CR_HOE_SHIFT 4 +#define DMA_CR_HALT_MASK 0x20u +#define DMA_CR_HALT_SHIFT 5 +#define DMA_CR_CLM_MASK 0x40u +#define DMA_CR_CLM_SHIFT 6 +#define DMA_CR_EMLM_MASK 0x80u +#define DMA_CR_EMLM_SHIFT 7 +#define DMA_CR_ECX_MASK 0x10000u +#define DMA_CR_ECX_SHIFT 16 +#define DMA_CR_CX_MASK 0x20000u +#define DMA_CR_CX_SHIFT 17 +/* ES Bit Fields */ +#define DMA_ES_DBE_MASK 0x1u +#define DMA_ES_DBE_SHIFT 0 +#define DMA_ES_SBE_MASK 0x2u +#define DMA_ES_SBE_SHIFT 1 +#define DMA_ES_SGE_MASK 0x4u +#define DMA_ES_SGE_SHIFT 2 +#define DMA_ES_NCE_MASK 0x8u +#define DMA_ES_NCE_SHIFT 3 +#define DMA_ES_DOE_MASK 0x10u +#define DMA_ES_DOE_SHIFT 4 +#define DMA_ES_DAE_MASK 0x20u +#define DMA_ES_DAE_SHIFT 5 +#define DMA_ES_SOE_MASK 0x40u +#define DMA_ES_SOE_SHIFT 6 +#define DMA_ES_SAE_MASK 0x80u +#define DMA_ES_SAE_SHIFT 7 +#define DMA_ES_ERRCHN_MASK 0xF00u +#define DMA_ES_ERRCHN_SHIFT 8 +#define DMA_ES_ERRCHN(x) (((uint32_t)(((uint32_t)(x))<<DMA_ES_ERRCHN_SHIFT))&DMA_ES_ERRCHN_MASK) +#define DMA_ES_CPE_MASK 0x4000u +#define DMA_ES_CPE_SHIFT 14 +#define DMA_ES_ECX_MASK 0x10000u +#define DMA_ES_ECX_SHIFT 16 +#define DMA_ES_VLD_MASK 0x80000000u +#define DMA_ES_VLD_SHIFT 31 +/* ERQ Bit Fields */ +#define DMA_ERQ_ERQ0_MASK 0x1u +#define DMA_ERQ_ERQ0_SHIFT 0 +#define DMA_ERQ_ERQ1_MASK 0x2u +#define DMA_ERQ_ERQ1_SHIFT 1 +#define DMA_ERQ_ERQ2_MASK 0x4u +#define DMA_ERQ_ERQ2_SHIFT 2 +#define DMA_ERQ_ERQ3_MASK 0x8u +#define DMA_ERQ_ERQ3_SHIFT 3 +#define DMA_ERQ_ERQ4_MASK 0x10u +#define DMA_ERQ_ERQ4_SHIFT 4 +#define DMA_ERQ_ERQ5_MASK 0x20u +#define DMA_ERQ_ERQ5_SHIFT 5 +#define DMA_ERQ_ERQ6_MASK 0x40u +#define DMA_ERQ_ERQ6_SHIFT 6 +#define DMA_ERQ_ERQ7_MASK 0x80u +#define DMA_ERQ_ERQ7_SHIFT 7 +#define DMA_ERQ_ERQ8_MASK 0x100u +#define DMA_ERQ_ERQ8_SHIFT 8 +#define DMA_ERQ_ERQ9_MASK 0x200u +#define DMA_ERQ_ERQ9_SHIFT 9 +#define DMA_ERQ_ERQ10_MASK 0x400u +#define DMA_ERQ_ERQ10_SHIFT 10 +#define DMA_ERQ_ERQ11_MASK 0x800u +#define DMA_ERQ_ERQ11_SHIFT 11 +#define DMA_ERQ_ERQ12_MASK 0x1000u +#define DMA_ERQ_ERQ12_SHIFT 12 +#define DMA_ERQ_ERQ13_MASK 0x2000u +#define DMA_ERQ_ERQ13_SHIFT 13 +#define DMA_ERQ_ERQ14_MASK 0x4000u +#define DMA_ERQ_ERQ14_SHIFT 14 +#define DMA_ERQ_ERQ15_MASK 0x8000u +#define DMA_ERQ_ERQ15_SHIFT 15 +/* EEI Bit Fields */ +#define DMA_EEI_EEI0_MASK 0x1u +#define DMA_EEI_EEI0_SHIFT 0 +#define DMA_EEI_EEI1_MASK 0x2u +#define DMA_EEI_EEI1_SHIFT 1 +#define DMA_EEI_EEI2_MASK 0x4u +#define DMA_EEI_EEI2_SHIFT 2 +#define DMA_EEI_EEI3_MASK 0x8u +#define DMA_EEI_EEI3_SHIFT 3 +#define DMA_EEI_EEI4_MASK 0x10u +#define DMA_EEI_EEI4_SHIFT 4 +#define DMA_EEI_EEI5_MASK 0x20u +#define DMA_EEI_EEI5_SHIFT 5 +#define DMA_EEI_EEI6_MASK 0x40u +#define DMA_EEI_EEI6_SHIFT 6 +#define DMA_EEI_EEI7_MASK 0x80u +#define DMA_EEI_EEI7_SHIFT 7 +#define DMA_EEI_EEI8_MASK 0x100u +#define DMA_EEI_EEI8_SHIFT 8 +#define DMA_EEI_EEI9_MASK 0x200u +#define DMA_EEI_EEI9_SHIFT 9 +#define DMA_EEI_EEI10_MASK 0x400u +#define DMA_EEI_EEI10_SHIFT 10 +#define DMA_EEI_EEI11_MASK 0x800u +#define DMA_EEI_EEI11_SHIFT 11 +#define DMA_EEI_EEI12_MASK 0x1000u +#define DMA_EEI_EEI12_SHIFT 12 +#define DMA_EEI_EEI13_MASK 0x2000u +#define DMA_EEI_EEI13_SHIFT 13 +#define DMA_EEI_EEI14_MASK 0x4000u +#define DMA_EEI_EEI14_SHIFT 14 +#define DMA_EEI_EEI15_MASK 0x8000u +#define DMA_EEI_EEI15_SHIFT 15 +/* CEEI Bit Fields */ +#define DMA_CEEI_CEEI_MASK 0xFu +#define DMA_CEEI_CEEI_SHIFT 0 +#define DMA_CEEI_CEEI(x) (((uint8_t)(((uint8_t)(x))<<DMA_CEEI_CEEI_SHIFT))&DMA_CEEI_CEEI_MASK) +#define DMA_CEEI_CAEE_MASK 0x40u +#define DMA_CEEI_CAEE_SHIFT 6 +#define DMA_CEEI_NOP_MASK 0x80u +#define DMA_CEEI_NOP_SHIFT 7 +/* SEEI Bit Fields */ +#define DMA_SEEI_SEEI_MASK 0xFu +#define DMA_SEEI_SEEI_SHIFT 0 +#define DMA_SEEI_SEEI(x) (((uint8_t)(((uint8_t)(x))<<DMA_SEEI_SEEI_SHIFT))&DMA_SEEI_SEEI_MASK) +#define DMA_SEEI_SAEE_MASK 0x40u +#define DMA_SEEI_SAEE_SHIFT 6 +#define DMA_SEEI_NOP_MASK 0x80u +#define DMA_SEEI_NOP_SHIFT 7 +/* CERQ Bit Fields */ +#define DMA_CERQ_CERQ_MASK 0xFu +#define DMA_CERQ_CERQ_SHIFT 0 +#define DMA_CERQ_CERQ(x) (((uint8_t)(((uint8_t)(x))<<DMA_CERQ_CERQ_SHIFT))&DMA_CERQ_CERQ_MASK) +#define DMA_CERQ_CAER_MASK 0x40u +#define DMA_CERQ_CAER_SHIFT 6 +#define DMA_CERQ_NOP_MASK 0x80u +#define DMA_CERQ_NOP_SHIFT 7 +/* SERQ Bit Fields */ +#define DMA_SERQ_SERQ_MASK 0xFu +#define DMA_SERQ_SERQ_SHIFT 0 +#define DMA_SERQ_SERQ(x) (((uint8_t)(((uint8_t)(x))<<DMA_SERQ_SERQ_SHIFT))&DMA_SERQ_SERQ_MASK) +#define DMA_SERQ_SAER_MASK 0x40u +#define DMA_SERQ_SAER_SHIFT 6 +#define DMA_SERQ_NOP_MASK 0x80u +#define DMA_SERQ_NOP_SHIFT 7 +/* CDNE Bit Fields */ +#define DMA_CDNE_CDNE_MASK 0xFu +#define DMA_CDNE_CDNE_SHIFT 0 +#define DMA_CDNE_CDNE(x) (((uint8_t)(((uint8_t)(x))<<DMA_CDNE_CDNE_SHIFT))&DMA_CDNE_CDNE_MASK) +#define DMA_CDNE_CADN_MASK 0x40u +#define DMA_CDNE_CADN_SHIFT 6 +#define DMA_CDNE_NOP_MASK 0x80u +#define DMA_CDNE_NOP_SHIFT 7 +/* SSRT Bit Fields */ +#define DMA_SSRT_SSRT_MASK 0xFu +#define DMA_SSRT_SSRT_SHIFT 0 +#define DMA_SSRT_SSRT(x) (((uint8_t)(((uint8_t)(x))<<DMA_SSRT_SSRT_SHIFT))&DMA_SSRT_SSRT_MASK) +#define DMA_SSRT_SAST_MASK 0x40u +#define DMA_SSRT_SAST_SHIFT 6 +#define DMA_SSRT_NOP_MASK 0x80u +#define DMA_SSRT_NOP_SHIFT 7 +/* CERR Bit Fields */ +#define DMA_CERR_CERR_MASK 0xFu +#define DMA_CERR_CERR_SHIFT 0 +#define DMA_CERR_CERR(x) (((uint8_t)(((uint8_t)(x))<<DMA_CERR_CERR_SHIFT))&DMA_CERR_CERR_MASK) +#define DMA_CERR_CAEI_MASK 0x40u +#define DMA_CERR_CAEI_SHIFT 6 +#define DMA_CERR_NOP_MASK 0x80u +#define DMA_CERR_NOP_SHIFT 7 +/* CINT Bit Fields */ +#define DMA_CINT_CINT_MASK 0xFu +#define DMA_CINT_CINT_SHIFT 0 +#define DMA_CINT_CINT(x) (((uint8_t)(((uint8_t)(x))<<DMA_CINT_CINT_SHIFT))&DMA_CINT_CINT_MASK) +#define DMA_CINT_CAIR_MASK 0x40u +#define DMA_CINT_CAIR_SHIFT 6 +#define DMA_CINT_NOP_MASK 0x80u +#define DMA_CINT_NOP_SHIFT 7 +/* INT Bit Fields */ +#define DMA_INT_INT0_MASK 0x1u +#define DMA_INT_INT0_SHIFT 0 +#define DMA_INT_INT1_MASK 0x2u +#define DMA_INT_INT1_SHIFT 1 +#define DMA_INT_INT2_MASK 0x4u +#define DMA_INT_INT2_SHIFT 2 +#define DMA_INT_INT3_MASK 0x8u +#define DMA_INT_INT3_SHIFT 3 +#define DMA_INT_INT4_MASK 0x10u +#define DMA_INT_INT4_SHIFT 4 +#define DMA_INT_INT5_MASK 0x20u +#define DMA_INT_INT5_SHIFT 5 +#define DMA_INT_INT6_MASK 0x40u +#define DMA_INT_INT6_SHIFT 6 +#define DMA_INT_INT7_MASK 0x80u +#define DMA_INT_INT7_SHIFT 7 +#define DMA_INT_INT8_MASK 0x100u +#define DMA_INT_INT8_SHIFT 8 +#define DMA_INT_INT9_MASK 0x200u +#define DMA_INT_INT9_SHIFT 9 +#define DMA_INT_INT10_MASK 0x400u +#define DMA_INT_INT10_SHIFT 10 +#define DMA_INT_INT11_MASK 0x800u +#define DMA_INT_INT11_SHIFT 11 +#define DMA_INT_INT12_MASK 0x1000u +#define DMA_INT_INT12_SHIFT 12 +#define DMA_INT_INT13_MASK 0x2000u +#define DMA_INT_INT13_SHIFT 13 +#define DMA_INT_INT14_MASK 0x4000u +#define DMA_INT_INT14_SHIFT 14 +#define DMA_INT_INT15_MASK 0x8000u +#define DMA_INT_INT15_SHIFT 15 +/* ERR Bit Fields */ +#define DMA_ERR_ERR0_MASK 0x1u +#define DMA_ERR_ERR0_SHIFT 0 +#define DMA_ERR_ERR1_MASK 0x2u +#define DMA_ERR_ERR1_SHIFT 1 +#define DMA_ERR_ERR2_MASK 0x4u +#define DMA_ERR_ERR2_SHIFT 2 +#define DMA_ERR_ERR3_MASK 0x8u +#define DMA_ERR_ERR3_SHIFT 3 +#define DMA_ERR_ERR4_MASK 0x10u +#define DMA_ERR_ERR4_SHIFT 4 +#define DMA_ERR_ERR5_MASK 0x20u +#define DMA_ERR_ERR5_SHIFT 5 +#define DMA_ERR_ERR6_MASK 0x40u +#define DMA_ERR_ERR6_SHIFT 6 +#define DMA_ERR_ERR7_MASK 0x80u +#define DMA_ERR_ERR7_SHIFT 7 +#define DMA_ERR_ERR8_MASK 0x100u +#define DMA_ERR_ERR8_SHIFT 8 +#define DMA_ERR_ERR9_MASK 0x200u +#define DMA_ERR_ERR9_SHIFT 9 +#define DMA_ERR_ERR10_MASK 0x400u +#define DMA_ERR_ERR10_SHIFT 10 +#define DMA_ERR_ERR11_MASK 0x800u +#define DMA_ERR_ERR11_SHIFT 11 +#define DMA_ERR_ERR12_MASK 0x1000u +#define DMA_ERR_ERR12_SHIFT 12 +#define DMA_ERR_ERR13_MASK 0x2000u +#define DMA_ERR_ERR13_SHIFT 13 +#define DMA_ERR_ERR14_MASK 0x4000u +#define DMA_ERR_ERR14_SHIFT 14 +#define DMA_ERR_ERR15_MASK 0x8000u +#define DMA_ERR_ERR15_SHIFT 15 +/* HRS Bit Fields */ +#define DMA_HRS_HRS0_MASK 0x1u +#define DMA_HRS_HRS0_SHIFT 0 +#define DMA_HRS_HRS1_MASK 0x2u +#define DMA_HRS_HRS1_SHIFT 1 +#define DMA_HRS_HRS2_MASK 0x4u +#define DMA_HRS_HRS2_SHIFT 2 +#define DMA_HRS_HRS3_MASK 0x8u +#define DMA_HRS_HRS3_SHIFT 3 +#define DMA_HRS_HRS4_MASK 0x10u +#define DMA_HRS_HRS4_SHIFT 4 +#define DMA_HRS_HRS5_MASK 0x20u +#define DMA_HRS_HRS5_SHIFT 5 +#define DMA_HRS_HRS6_MASK 0x40u +#define DMA_HRS_HRS6_SHIFT 6 +#define DMA_HRS_HRS7_MASK 0x80u +#define DMA_HRS_HRS7_SHIFT 7 +#define DMA_HRS_HRS8_MASK 0x100u +#define DMA_HRS_HRS8_SHIFT 8 +#define DMA_HRS_HRS9_MASK 0x200u +#define DMA_HRS_HRS9_SHIFT 9 +#define DMA_HRS_HRS10_MASK 0x400u +#define DMA_HRS_HRS10_SHIFT 10 +#define DMA_HRS_HRS11_MASK 0x800u +#define DMA_HRS_HRS11_SHIFT 11 +#define DMA_HRS_HRS12_MASK 0x1000u +#define DMA_HRS_HRS12_SHIFT 12 +#define DMA_HRS_HRS13_MASK 0x2000u +#define DMA_HRS_HRS13_SHIFT 13 +#define DMA_HRS_HRS14_MASK 0x4000u +#define DMA_HRS_HRS14_SHIFT 14 +#define DMA_HRS_HRS15_MASK 0x8000u +#define DMA_HRS_HRS15_SHIFT 15 +/* DCHPRI3 Bit Fields */ +#define DMA_DCHPRI3_CHPRI_MASK 0xFu +#define DMA_DCHPRI3_CHPRI_SHIFT 0 +#define DMA_DCHPRI3_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI3_CHPRI_SHIFT))&DMA_DCHPRI3_CHPRI_MASK) +#define DMA_DCHPRI3_DPA_MASK 0x40u +#define DMA_DCHPRI3_DPA_SHIFT 6 +#define DMA_DCHPRI3_ECP_MASK 0x80u +#define DMA_DCHPRI3_ECP_SHIFT 7 +/* DCHPRI2 Bit Fields */ +#define DMA_DCHPRI2_CHPRI_MASK 0xFu +#define DMA_DCHPRI2_CHPRI_SHIFT 0 +#define DMA_DCHPRI2_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI2_CHPRI_SHIFT))&DMA_DCHPRI2_CHPRI_MASK) +#define DMA_DCHPRI2_DPA_MASK 0x40u +#define DMA_DCHPRI2_DPA_SHIFT 6 +#define DMA_DCHPRI2_ECP_MASK 0x80u +#define DMA_DCHPRI2_ECP_SHIFT 7 +/* DCHPRI1 Bit Fields */ +#define DMA_DCHPRI1_CHPRI_MASK 0xFu +#define DMA_DCHPRI1_CHPRI_SHIFT 0 +#define DMA_DCHPRI1_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI1_CHPRI_SHIFT))&DMA_DCHPRI1_CHPRI_MASK) +#define DMA_DCHPRI1_DPA_MASK 0x40u +#define DMA_DCHPRI1_DPA_SHIFT 6 +#define DMA_DCHPRI1_ECP_MASK 0x80u +#define DMA_DCHPRI1_ECP_SHIFT 7 +/* DCHPRI0 Bit Fields */ +#define DMA_DCHPRI0_CHPRI_MASK 0xFu +#define DMA_DCHPRI0_CHPRI_SHIFT 0 +#define DMA_DCHPRI0_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI0_CHPRI_SHIFT))&DMA_DCHPRI0_CHPRI_MASK) +#define DMA_DCHPRI0_DPA_MASK 0x40u +#define DMA_DCHPRI0_DPA_SHIFT 6 +#define DMA_DCHPRI0_ECP_MASK 0x80u +#define DMA_DCHPRI0_ECP_SHIFT 7 +/* DCHPRI7 Bit Fields */ +#define DMA_DCHPRI7_CHPRI_MASK 0xFu +#define DMA_DCHPRI7_CHPRI_SHIFT 0 +#define DMA_DCHPRI7_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI7_CHPRI_SHIFT))&DMA_DCHPRI7_CHPRI_MASK) +#define DMA_DCHPRI7_DPA_MASK 0x40u +#define DMA_DCHPRI7_DPA_SHIFT 6 +#define DMA_DCHPRI7_ECP_MASK 0x80u +#define DMA_DCHPRI7_ECP_SHIFT 7 +/* DCHPRI6 Bit Fields */ +#define DMA_DCHPRI6_CHPRI_MASK 0xFu +#define DMA_DCHPRI6_CHPRI_SHIFT 0 +#define DMA_DCHPRI6_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI6_CHPRI_SHIFT))&DMA_DCHPRI6_CHPRI_MASK) +#define DMA_DCHPRI6_DPA_MASK 0x40u +#define DMA_DCHPRI6_DPA_SHIFT 6 +#define DMA_DCHPRI6_ECP_MASK 0x80u +#define DMA_DCHPRI6_ECP_SHIFT 7 +/* DCHPRI5 Bit Fields */ +#define DMA_DCHPRI5_CHPRI_MASK 0xFu +#define DMA_DCHPRI5_CHPRI_SHIFT 0 +#define DMA_DCHPRI5_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI5_CHPRI_SHIFT))&DMA_DCHPRI5_CHPRI_MASK) +#define DMA_DCHPRI5_DPA_MASK 0x40u +#define DMA_DCHPRI5_DPA_SHIFT 6 +#define DMA_DCHPRI5_ECP_MASK 0x80u +#define DMA_DCHPRI5_ECP_SHIFT 7 +/* DCHPRI4 Bit Fields */ +#define DMA_DCHPRI4_CHPRI_MASK 0xFu +#define DMA_DCHPRI4_CHPRI_SHIFT 0 +#define DMA_DCHPRI4_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI4_CHPRI_SHIFT))&DMA_DCHPRI4_CHPRI_MASK) +#define DMA_DCHPRI4_DPA_MASK 0x40u +#define DMA_DCHPRI4_DPA_SHIFT 6 +#define DMA_DCHPRI4_ECP_MASK 0x80u +#define DMA_DCHPRI4_ECP_SHIFT 7 +/* DCHPRI11 Bit Fields */ +#define DMA_DCHPRI11_CHPRI_MASK 0xFu +#define DMA_DCHPRI11_CHPRI_SHIFT 0 +#define DMA_DCHPRI11_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI11_CHPRI_SHIFT))&DMA_DCHPRI11_CHPRI_MASK) +#define DMA_DCHPRI11_DPA_MASK 0x40u +#define DMA_DCHPRI11_DPA_SHIFT 6 +#define DMA_DCHPRI11_ECP_MASK 0x80u +#define DMA_DCHPRI11_ECP_SHIFT 7 +/* DCHPRI10 Bit Fields */ +#define DMA_DCHPRI10_CHPRI_MASK 0xFu +#define DMA_DCHPRI10_CHPRI_SHIFT 0 +#define DMA_DCHPRI10_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI10_CHPRI_SHIFT))&DMA_DCHPRI10_CHPRI_MASK) +#define DMA_DCHPRI10_DPA_MASK 0x40u +#define DMA_DCHPRI10_DPA_SHIFT 6 +#define DMA_DCHPRI10_ECP_MASK 0x80u +#define DMA_DCHPRI10_ECP_SHIFT 7 +/* DCHPRI9 Bit Fields */ +#define DMA_DCHPRI9_CHPRI_MASK 0xFu +#define DMA_DCHPRI9_CHPRI_SHIFT 0 +#define DMA_DCHPRI9_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI9_CHPRI_SHIFT))&DMA_DCHPRI9_CHPRI_MASK) +#define DMA_DCHPRI9_DPA_MASK 0x40u +#define DMA_DCHPRI9_DPA_SHIFT 6 +#define DMA_DCHPRI9_ECP_MASK 0x80u +#define DMA_DCHPRI9_ECP_SHIFT 7 +/* DCHPRI8 Bit Fields */ +#define DMA_DCHPRI8_CHPRI_MASK 0xFu +#define DMA_DCHPRI8_CHPRI_SHIFT 0 +#define DMA_DCHPRI8_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI8_CHPRI_SHIFT))&DMA_DCHPRI8_CHPRI_MASK) +#define DMA_DCHPRI8_DPA_MASK 0x40u +#define DMA_DCHPRI8_DPA_SHIFT 6 +#define DMA_DCHPRI8_ECP_MASK 0x80u +#define DMA_DCHPRI8_ECP_SHIFT 7 +/* DCHPRI15 Bit Fields */ +#define DMA_DCHPRI15_CHPRI_MASK 0xFu +#define DMA_DCHPRI15_CHPRI_SHIFT 0 +#define DMA_DCHPRI15_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI15_CHPRI_SHIFT))&DMA_DCHPRI15_CHPRI_MASK) +#define DMA_DCHPRI15_DPA_MASK 0x40u +#define DMA_DCHPRI15_DPA_SHIFT 6 +#define DMA_DCHPRI15_ECP_MASK 0x80u +#define DMA_DCHPRI15_ECP_SHIFT 7 +/* DCHPRI14 Bit Fields */ +#define DMA_DCHPRI14_CHPRI_MASK 0xFu +#define DMA_DCHPRI14_CHPRI_SHIFT 0 +#define DMA_DCHPRI14_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI14_CHPRI_SHIFT))&DMA_DCHPRI14_CHPRI_MASK) +#define DMA_DCHPRI14_DPA_MASK 0x40u +#define DMA_DCHPRI14_DPA_SHIFT 6 +#define DMA_DCHPRI14_ECP_MASK 0x80u +#define DMA_DCHPRI14_ECP_SHIFT 7 +/* DCHPRI13 Bit Fields */ +#define DMA_DCHPRI13_CHPRI_MASK 0xFu +#define DMA_DCHPRI13_CHPRI_SHIFT 0 +#define DMA_DCHPRI13_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI13_CHPRI_SHIFT))&DMA_DCHPRI13_CHPRI_MASK) +#define DMA_DCHPRI13_DPA_MASK 0x40u +#define DMA_DCHPRI13_DPA_SHIFT 6 +#define DMA_DCHPRI13_ECP_MASK 0x80u +#define DMA_DCHPRI13_ECP_SHIFT 7 +/* DCHPRI12 Bit Fields */ +#define DMA_DCHPRI12_CHPRI_MASK 0xFu +#define DMA_DCHPRI12_CHPRI_SHIFT 0 +#define DMA_DCHPRI12_CHPRI(x) (((uint8_t)(((uint8_t)(x))<<DMA_DCHPRI12_CHPRI_SHIFT))&DMA_DCHPRI12_CHPRI_MASK) +#define DMA_DCHPRI12_DPA_MASK 0x40u +#define DMA_DCHPRI12_DPA_SHIFT 6 +#define DMA_DCHPRI12_ECP_MASK 0x80u +#define DMA_DCHPRI12_ECP_SHIFT 7 +/* SADDR Bit Fields */ +#define DMA_SADDR_SADDR_MASK 0xFFFFFFFFu +#define DMA_SADDR_SADDR_SHIFT 0 +#define DMA_SADDR_SADDR(x) (((uint32_t)(((uint32_t)(x))<<DMA_SADDR_SADDR_SHIFT))&DMA_SADDR_SADDR_MASK) +/* SOFF Bit Fields */ +#define DMA_SOFF_SOFF_MASK 0xFFFFu +#define DMA_SOFF_SOFF_SHIFT 0 +#define DMA_SOFF_SOFF(x) (((uint16_t)(((uint16_t)(x))<<DMA_SOFF_SOFF_SHIFT))&DMA_SOFF_SOFF_MASK) +/* ATTR Bit Fields */ +#define DMA_ATTR_DSIZE_MASK 0x7u +#define DMA_ATTR_DSIZE_SHIFT 0 +#define DMA_ATTR_DSIZE(x) (((uint16_t)(((uint16_t)(x))<<DMA_ATTR_DSIZE_SHIFT))&DMA_ATTR_DSIZE_MASK) +#define DMA_ATTR_DMOD_MASK 0xF8u +#define DMA_ATTR_DMOD_SHIFT 3 +#define DMA_ATTR_DMOD(x) (((uint16_t)(((uint16_t)(x))<<DMA_ATTR_DMOD_SHIFT))&DMA_ATTR_DMOD_MASK) +#define DMA_ATTR_SSIZE_MASK 0x700u +#define DMA_ATTR_SSIZE_SHIFT 8 +#define DMA_ATTR_SSIZE(x) (((uint16_t)(((uint16_t)(x))<<DMA_ATTR_SSIZE_SHIFT))&DMA_ATTR_SSIZE_MASK) +#define DMA_ATTR_SMOD_MASK 0xF800u +#define DMA_ATTR_SMOD_SHIFT 11 +#define DMA_ATTR_SMOD(x) (((uint16_t)(((uint16_t)(x))<<DMA_ATTR_SMOD_SHIFT))&DMA_ATTR_SMOD_MASK) +/* NBYTES_MLNO Bit Fields */ +#define DMA_NBYTES_MLNO_NBYTES_MASK 0xFFFFFFFFu +#define DMA_NBYTES_MLNO_NBYTES_SHIFT 0 +#define DMA_NBYTES_MLNO_NBYTES(x) (((uint32_t)(((uint32_t)(x))<<DMA_NBYTES_MLNO_NBYTES_SHIFT))&DMA_NBYTES_MLNO_NBYTES_MASK) +/* NBYTES_MLOFFNO Bit Fields */ +#define DMA_NBYTES_MLOFFNO_NBYTES_MASK 0x3FFFFFFFu +#define DMA_NBYTES_MLOFFNO_NBYTES_SHIFT 0 +#define DMA_NBYTES_MLOFFNO_NBYTES(x) (((uint32_t)(((uint32_t)(x))<<DMA_NBYTES_MLOFFNO_NBYTES_SHIFT))&DMA_NBYTES_MLOFFNO_NBYTES_MASK) +#define DMA_NBYTES_MLOFFNO_DMLOE_MASK 0x40000000u +#define DMA_NBYTES_MLOFFNO_DMLOE_SHIFT 30 +#define DMA_NBYTES_MLOFFNO_SMLOE_MASK 0x80000000u +#define DMA_NBYTES_MLOFFNO_SMLOE_SHIFT 31 +/* NBYTES_MLOFFYES Bit Fields */ +#define DMA_NBYTES_MLOFFYES_NBYTES_MASK 0x3FFu +#define DMA_NBYTES_MLOFFYES_NBYTES_SHIFT 0 +#define DMA_NBYTES_MLOFFYES_NBYTES(x) (((uint32_t)(((uint32_t)(x))<<DMA_NBYTES_MLOFFYES_NBYTES_SHIFT))&DMA_NBYTES_MLOFFYES_NBYTES_MASK) +#define DMA_NBYTES_MLOFFYES_MLOFF_MASK 0x3FFFFC00u +#define DMA_NBYTES_MLOFFYES_MLOFF_SHIFT 10 +#define DMA_NBYTES_MLOFFYES_MLOFF(x) (((uint32_t)(((uint32_t)(x))<<DMA_NBYTES_MLOFFYES_MLOFF_SHIFT))&DMA_NBYTES_MLOFFYES_MLOFF_MASK) +#define DMA_NBYTES_MLOFFYES_DMLOE_MASK 0x40000000u +#define DMA_NBYTES_MLOFFYES_DMLOE_SHIFT 30 +#define DMA_NBYTES_MLOFFYES_SMLOE_MASK 0x80000000u +#define DMA_NBYTES_MLOFFYES_SMLOE_SHIFT 31 +/* SLAST Bit Fields */ +#define DMA_SLAST_SLAST_MASK 0xFFFFFFFFu +#define DMA_SLAST_SLAST_SHIFT 0 +#define DMA_SLAST_SLAST(x) (((uint32_t)(((uint32_t)(x))<<DMA_SLAST_SLAST_SHIFT))&DMA_SLAST_SLAST_MASK) +/* DADDR Bit Fields */ +#define DMA_DADDR_DADDR_MASK 0xFFFFFFFFu +#define DMA_DADDR_DADDR_SHIFT 0 +#define DMA_DADDR_DADDR(x) (((uint32_t)(((uint32_t)(x))<<DMA_DADDR_DADDR_SHIFT))&DMA_DADDR_DADDR_MASK) +/* DOFF Bit Fields */ +#define DMA_DOFF_DOFF_MASK 0xFFFFu +#define DMA_DOFF_DOFF_SHIFT 0 +#define DMA_DOFF_DOFF(x) (((uint16_t)(((uint16_t)(x))<<DMA_DOFF_DOFF_SHIFT))&DMA_DOFF_DOFF_MASK) +/* CITER_ELINKNO Bit Fields */ +#define DMA_CITER_ELINKNO_CITER_MASK 0x7FFFu +#define DMA_CITER_ELINKNO_CITER_SHIFT 0 +#define DMA_CITER_ELINKNO_CITER(x) (((uint16_t)(((uint16_t)(x))<<DMA_CITER_ELINKNO_CITER_SHIFT))&DMA_CITER_ELINKNO_CITER_MASK) +#define DMA_CITER_ELINKNO_ELINK_MASK 0x8000u +#define DMA_CITER_ELINKNO_ELINK_SHIFT 15 +/* CITER_ELINKYES Bit Fields */ +#define DMA_CITER_ELINKYES_CITER_MASK 0x1FFu +#define DMA_CITER_ELINKYES_CITER_SHIFT 0 +#define DMA_CITER_ELINKYES_CITER(x) (((uint16_t)(((uint16_t)(x))<<DMA_CITER_ELINKYES_CITER_SHIFT))&DMA_CITER_ELINKYES_CITER_MASK) +#define DMA_CITER_ELINKYES_LINKCH_MASK 0x1E00u +#define DMA_CITER_ELINKYES_LINKCH_SHIFT 9 +#define DMA_CITER_ELINKYES_LINKCH(x) (((uint16_t)(((uint16_t)(x))<<DMA_CITER_ELINKYES_LINKCH_SHIFT))&DMA_CITER_ELINKYES_LINKCH_MASK) +#define DMA_CITER_ELINKYES_ELINK_MASK 0x8000u +#define DMA_CITER_ELINKYES_ELINK_SHIFT 15 +/* DLAST_SGA Bit Fields */ +#define DMA_DLAST_SGA_DLASTSGA_MASK 0xFFFFFFFFu +#define DMA_DLAST_SGA_DLASTSGA_SHIFT 0 +#define DMA_DLAST_SGA_DLASTSGA(x) (((uint32_t)(((uint32_t)(x))<<DMA_DLAST_SGA_DLASTSGA_SHIFT))&DMA_DLAST_SGA_DLASTSGA_MASK) +/* CSR Bit Fields */ +#define DMA_CSR_START_MASK 0x1u +#define DMA_CSR_START_SHIFT 0 +#define DMA_CSR_INTMAJOR_MASK 0x2u +#define DMA_CSR_INTMAJOR_SHIFT 1 +#define DMA_CSR_INTHALF_MASK 0x4u +#define DMA_CSR_INTHALF_SHIFT 2 +#define DMA_CSR_DREQ_MASK 0x8u +#define DMA_CSR_DREQ_SHIFT 3 +#define DMA_CSR_ESG_MASK 0x10u +#define DMA_CSR_ESG_SHIFT 4 +#define DMA_CSR_MAJORELINK_MASK 0x20u +#define DMA_CSR_MAJORELINK_SHIFT 5 +#define DMA_CSR_ACTIVE_MASK 0x40u +#define DMA_CSR_ACTIVE_SHIFT 6 +#define DMA_CSR_DONE_MASK 0x80u +#define DMA_CSR_DONE_SHIFT 7 +#define DMA_CSR_MAJORLINKCH_MASK 0xF00u +#define DMA_CSR_MAJORLINKCH_SHIFT 8 +#define DMA_CSR_MAJORLINKCH(x) (((uint16_t)(((uint16_t)(x))<<DMA_CSR_MAJORLINKCH_SHIFT))&DMA_CSR_MAJORLINKCH_MASK) +#define DMA_CSR_BWC_MASK 0xC000u +#define DMA_CSR_BWC_SHIFT 14 +#define DMA_CSR_BWC(x) (((uint16_t)(((uint16_t)(x))<<DMA_CSR_BWC_SHIFT))&DMA_CSR_BWC_MASK) +/* BITER_ELINKNO Bit Fields */ +#define DMA_BITER_ELINKNO_BITER_MASK 0x7FFFu +#define DMA_BITER_ELINKNO_BITER_SHIFT 0 +#define DMA_BITER_ELINKNO_BITER(x) (((uint16_t)(((uint16_t)(x))<<DMA_BITER_ELINKNO_BITER_SHIFT))&DMA_BITER_ELINKNO_BITER_MASK) +#define DMA_BITER_ELINKNO_ELINK_MASK 0x8000u +#define DMA_BITER_ELINKNO_ELINK_SHIFT 15 +/* BITER_ELINKYES Bit Fields */ +#define DMA_BITER_ELINKYES_BITER_MASK 0x1FFu +#define DMA_BITER_ELINKYES_BITER_SHIFT 0 +#define DMA_BITER_ELINKYES_BITER(x) (((uint16_t)(((uint16_t)(x))<<DMA_BITER_ELINKYES_BITER_SHIFT))&DMA_BITER_ELINKYES_BITER_MASK) +#define DMA_BITER_ELINKYES_LINKCH_MASK 0x1E00u +#define DMA_BITER_ELINKYES_LINKCH_SHIFT 9 +#define DMA_BITER_ELINKYES_LINKCH(x) (((uint16_t)(((uint16_t)(x))<<DMA_BITER_ELINKYES_LINKCH_SHIFT))&DMA_BITER_ELINKYES_LINKCH_MASK) +#define DMA_BITER_ELINKYES_ELINK_MASK 0x8000u +#define DMA_BITER_ELINKYES_ELINK_SHIFT 15 + +/*! + * @} + */ /* end of group DMA_Register_Masks */ + + +/* DMA - Peripheral instance base addresses */ +/** Peripheral DMA base address */ +#define DMA_BASE (0x40008000u) +/** Peripheral DMA base pointer */ +#define DMA0 ((DMA_Type *)DMA_BASE) +#define DMA_BASE_PTR (DMA0) +/** Array initializer of DMA peripheral base pointers */ +#define DMA_BASES { DMA0 } + +/* ---------------------------------------------------------------------------- + -- DMA - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMA_Register_Accessor_Macros DMA - Register accessor macros + * @{ + */ + + +/* DMA - Register instance definitions */ +/* DMA */ +#define DMA_CR DMA_CR_REG(DMA0) +#define DMA_ES DMA_ES_REG(DMA0) +#define DMA_ERQ DMA_ERQ_REG(DMA0) +#define DMA_EEI DMA_EEI_REG(DMA0) +#define DMA_CEEI DMA_CEEI_REG(DMA0) +#define DMA_SEEI DMA_SEEI_REG(DMA0) +#define DMA_CERQ DMA_CERQ_REG(DMA0) +#define DMA_SERQ DMA_SERQ_REG(DMA0) +#define DMA_CDNE DMA_CDNE_REG(DMA0) +#define DMA_SSRT DMA_SSRT_REG(DMA0) +#define DMA_CERR DMA_CERR_REG(DMA0) +#define DMA_CINT DMA_CINT_REG(DMA0) +#define DMA_INT DMA_INT_REG(DMA0) +#define DMA_ERR DMA_ERR_REG(DMA0) +#define DMA_HRS DMA_HRS_REG(DMA0) +#define DMA_DCHPRI3 DMA_DCHPRI3_REG(DMA0) +#define DMA_DCHPRI2 DMA_DCHPRI2_REG(DMA0) +#define DMA_DCHPRI1 DMA_DCHPRI1_REG(DMA0) +#define DMA_DCHPRI0 DMA_DCHPRI0_REG(DMA0) +#define DMA_DCHPRI7 DMA_DCHPRI7_REG(DMA0) +#define DMA_DCHPRI6 DMA_DCHPRI6_REG(DMA0) +#define DMA_DCHPRI5 DMA_DCHPRI5_REG(DMA0) +#define DMA_DCHPRI4 DMA_DCHPRI4_REG(DMA0) +#define DMA_DCHPRI11 DMA_DCHPRI11_REG(DMA0) +#define DMA_DCHPRI10 DMA_DCHPRI10_REG(DMA0) +#define DMA_DCHPRI9 DMA_DCHPRI9_REG(DMA0) +#define DMA_DCHPRI8 DMA_DCHPRI8_REG(DMA0) +#define DMA_DCHPRI15 DMA_DCHPRI15_REG(DMA0) +#define DMA_DCHPRI14 DMA_DCHPRI14_REG(DMA0) +#define DMA_DCHPRI13 DMA_DCHPRI13_REG(DMA0) +#define DMA_DCHPRI12 DMA_DCHPRI12_REG(DMA0) +#define DMA_TCD0_SADDR DMA_SADDR_REG(DMA0,0) +#define DMA_TCD0_SOFF DMA_SOFF_REG(DMA0,0) +#define DMA_TCD0_ATTR DMA_ATTR_REG(DMA0,0) +#define DMA_TCD0_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,0) +#define DMA_TCD0_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,0) +#define DMA_TCD0_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,0) +#define DMA_TCD0_SLAST DMA_SLAST_REG(DMA0,0) +#define DMA_TCD0_DADDR DMA_DADDR_REG(DMA0,0) +#define DMA_TCD0_DOFF DMA_DOFF_REG(DMA0,0) +#define DMA_TCD0_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,0) +#define DMA_TCD0_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,0) +#define DMA_TCD0_DLASTSGA DMA_DLAST_SGA_REG(DMA0,0) +#define DMA_TCD0_CSR DMA_CSR_REG(DMA0,0) +#define DMA_TCD0_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,0) +#define DMA_TCD0_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,0) +#define DMA_TCD1_SADDR DMA_SADDR_REG(DMA0,1) +#define DMA_TCD1_SOFF DMA_SOFF_REG(DMA0,1) +#define DMA_TCD1_ATTR DMA_ATTR_REG(DMA0,1) +#define DMA_TCD1_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,1) +#define DMA_TCD1_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,1) +#define DMA_TCD1_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,1) +#define DMA_TCD1_SLAST DMA_SLAST_REG(DMA0,1) +#define DMA_TCD1_DADDR DMA_DADDR_REG(DMA0,1) +#define DMA_TCD1_DOFF DMA_DOFF_REG(DMA0,1) +#define DMA_TCD1_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,1) +#define DMA_TCD1_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,1) +#define DMA_TCD1_DLASTSGA DMA_DLAST_SGA_REG(DMA0,1) +#define DMA_TCD1_CSR DMA_CSR_REG(DMA0,1) +#define DMA_TCD1_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,1) +#define DMA_TCD1_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,1) +#define DMA_TCD2_SADDR DMA_SADDR_REG(DMA0,2) +#define DMA_TCD2_SOFF DMA_SOFF_REG(DMA0,2) +#define DMA_TCD2_ATTR DMA_ATTR_REG(DMA0,2) +#define DMA_TCD2_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,2) +#define DMA_TCD2_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,2) +#define DMA_TCD2_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,2) +#define DMA_TCD2_SLAST DMA_SLAST_REG(DMA0,2) +#define DMA_TCD2_DADDR DMA_DADDR_REG(DMA0,2) +#define DMA_TCD2_DOFF DMA_DOFF_REG(DMA0,2) +#define DMA_TCD2_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,2) +#define DMA_TCD2_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,2) +#define DMA_TCD2_DLASTSGA DMA_DLAST_SGA_REG(DMA0,2) +#define DMA_TCD2_CSR DMA_CSR_REG(DMA0,2) +#define DMA_TCD2_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,2) +#define DMA_TCD2_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,2) +#define DMA_TCD3_SADDR DMA_SADDR_REG(DMA0,3) +#define DMA_TCD3_SOFF DMA_SOFF_REG(DMA0,3) +#define DMA_TCD3_ATTR DMA_ATTR_REG(DMA0,3) +#define DMA_TCD3_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,3) +#define DMA_TCD3_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,3) +#define DMA_TCD3_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,3) +#define DMA_TCD3_SLAST DMA_SLAST_REG(DMA0,3) +#define DMA_TCD3_DADDR DMA_DADDR_REG(DMA0,3) +#define DMA_TCD3_DOFF DMA_DOFF_REG(DMA0,3) +#define DMA_TCD3_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,3) +#define DMA_TCD3_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,3) +#define DMA_TCD3_DLASTSGA DMA_DLAST_SGA_REG(DMA0,3) +#define DMA_TCD3_CSR DMA_CSR_REG(DMA0,3) +#define DMA_TCD3_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,3) +#define DMA_TCD3_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,3) +#define DMA_TCD4_SADDR DMA_SADDR_REG(DMA0,4) +#define DMA_TCD4_SOFF DMA_SOFF_REG(DMA0,4) +#define DMA_TCD4_ATTR DMA_ATTR_REG(DMA0,4) +#define DMA_TCD4_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,4) +#define DMA_TCD4_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,4) +#define DMA_TCD4_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,4) +#define DMA_TCD4_SLAST DMA_SLAST_REG(DMA0,4) +#define DMA_TCD4_DADDR DMA_DADDR_REG(DMA0,4) +#define DMA_TCD4_DOFF DMA_DOFF_REG(DMA0,4) +#define DMA_TCD4_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,4) +#define DMA_TCD4_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,4) +#define DMA_TCD4_DLASTSGA DMA_DLAST_SGA_REG(DMA0,4) +#define DMA_TCD4_CSR DMA_CSR_REG(DMA0,4) +#define DMA_TCD4_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,4) +#define DMA_TCD4_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,4) +#define DMA_TCD5_SADDR DMA_SADDR_REG(DMA0,5) +#define DMA_TCD5_SOFF DMA_SOFF_REG(DMA0,5) +#define DMA_TCD5_ATTR DMA_ATTR_REG(DMA0,5) +#define DMA_TCD5_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,5) +#define DMA_TCD5_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,5) +#define DMA_TCD5_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,5) +#define DMA_TCD5_SLAST DMA_SLAST_REG(DMA0,5) +#define DMA_TCD5_DADDR DMA_DADDR_REG(DMA0,5) +#define DMA_TCD5_DOFF DMA_DOFF_REG(DMA0,5) +#define DMA_TCD5_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,5) +#define DMA_TCD5_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,5) +#define DMA_TCD5_DLASTSGA DMA_DLAST_SGA_REG(DMA0,5) +#define DMA_TCD5_CSR DMA_CSR_REG(DMA0,5) +#define DMA_TCD5_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,5) +#define DMA_TCD5_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,5) +#define DMA_TCD6_SADDR DMA_SADDR_REG(DMA0,6) +#define DMA_TCD6_SOFF DMA_SOFF_REG(DMA0,6) +#define DMA_TCD6_ATTR DMA_ATTR_REG(DMA0,6) +#define DMA_TCD6_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,6) +#define DMA_TCD6_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,6) +#define DMA_TCD6_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,6) +#define DMA_TCD6_SLAST DMA_SLAST_REG(DMA0,6) +#define DMA_TCD6_DADDR DMA_DADDR_REG(DMA0,6) +#define DMA_TCD6_DOFF DMA_DOFF_REG(DMA0,6) +#define DMA_TCD6_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,6) +#define DMA_TCD6_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,6) +#define DMA_TCD6_DLASTSGA DMA_DLAST_SGA_REG(DMA0,6) +#define DMA_TCD6_CSR DMA_CSR_REG(DMA0,6) +#define DMA_TCD6_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,6) +#define DMA_TCD6_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,6) +#define DMA_TCD7_SADDR DMA_SADDR_REG(DMA0,7) +#define DMA_TCD7_SOFF DMA_SOFF_REG(DMA0,7) +#define DMA_TCD7_ATTR DMA_ATTR_REG(DMA0,7) +#define DMA_TCD7_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,7) +#define DMA_TCD7_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,7) +#define DMA_TCD7_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,7) +#define DMA_TCD7_SLAST DMA_SLAST_REG(DMA0,7) +#define DMA_TCD7_DADDR DMA_DADDR_REG(DMA0,7) +#define DMA_TCD7_DOFF DMA_DOFF_REG(DMA0,7) +#define DMA_TCD7_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,7) +#define DMA_TCD7_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,7) +#define DMA_TCD7_DLASTSGA DMA_DLAST_SGA_REG(DMA0,7) +#define DMA_TCD7_CSR DMA_CSR_REG(DMA0,7) +#define DMA_TCD7_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,7) +#define DMA_TCD7_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,7) +#define DMA_TCD8_SADDR DMA_SADDR_REG(DMA0,8) +#define DMA_TCD8_SOFF DMA_SOFF_REG(DMA0,8) +#define DMA_TCD8_ATTR DMA_ATTR_REG(DMA0,8) +#define DMA_TCD8_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,8) +#define DMA_TCD8_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,8) +#define DMA_TCD8_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,8) +#define DMA_TCD8_SLAST DMA_SLAST_REG(DMA0,8) +#define DMA_TCD8_DADDR DMA_DADDR_REG(DMA0,8) +#define DMA_TCD8_DOFF DMA_DOFF_REG(DMA0,8) +#define DMA_TCD8_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,8) +#define DMA_TCD8_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,8) +#define DMA_TCD8_DLASTSGA DMA_DLAST_SGA_REG(DMA0,8) +#define DMA_TCD8_CSR DMA_CSR_REG(DMA0,8) +#define DMA_TCD8_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,8) +#define DMA_TCD8_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,8) +#define DMA_TCD9_SADDR DMA_SADDR_REG(DMA0,9) +#define DMA_TCD9_SOFF DMA_SOFF_REG(DMA0,9) +#define DMA_TCD9_ATTR DMA_ATTR_REG(DMA0,9) +#define DMA_TCD9_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,9) +#define DMA_TCD9_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,9) +#define DMA_TCD9_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,9) +#define DMA_TCD9_SLAST DMA_SLAST_REG(DMA0,9) +#define DMA_TCD9_DADDR DMA_DADDR_REG(DMA0,9) +#define DMA_TCD9_DOFF DMA_DOFF_REG(DMA0,9) +#define DMA_TCD9_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,9) +#define DMA_TCD9_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,9) +#define DMA_TCD9_DLASTSGA DMA_DLAST_SGA_REG(DMA0,9) +#define DMA_TCD9_CSR DMA_CSR_REG(DMA0,9) +#define DMA_TCD9_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,9) +#define DMA_TCD9_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,9) +#define DMA_TCD10_SADDR DMA_SADDR_REG(DMA0,10) +#define DMA_TCD10_SOFF DMA_SOFF_REG(DMA0,10) +#define DMA_TCD10_ATTR DMA_ATTR_REG(DMA0,10) +#define DMA_TCD10_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,10) +#define DMA_TCD10_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,10) +#define DMA_TCD10_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,10) +#define DMA_TCD10_SLAST DMA_SLAST_REG(DMA0,10) +#define DMA_TCD10_DADDR DMA_DADDR_REG(DMA0,10) +#define DMA_TCD10_DOFF DMA_DOFF_REG(DMA0,10) +#define DMA_TCD10_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,10) +#define DMA_TCD10_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,10) +#define DMA_TCD10_DLASTSGA DMA_DLAST_SGA_REG(DMA0,10) +#define DMA_TCD10_CSR DMA_CSR_REG(DMA0,10) +#define DMA_TCD10_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,10) +#define DMA_TCD10_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,10) +#define DMA_TCD11_SADDR DMA_SADDR_REG(DMA0,11) +#define DMA_TCD11_SOFF DMA_SOFF_REG(DMA0,11) +#define DMA_TCD11_ATTR DMA_ATTR_REG(DMA0,11) +#define DMA_TCD11_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,11) +#define DMA_TCD11_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,11) +#define DMA_TCD11_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,11) +#define DMA_TCD11_SLAST DMA_SLAST_REG(DMA0,11) +#define DMA_TCD11_DADDR DMA_DADDR_REG(DMA0,11) +#define DMA_TCD11_DOFF DMA_DOFF_REG(DMA0,11) +#define DMA_TCD11_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,11) +#define DMA_TCD11_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,11) +#define DMA_TCD11_DLASTSGA DMA_DLAST_SGA_REG(DMA0,11) +#define DMA_TCD11_CSR DMA_CSR_REG(DMA0,11) +#define DMA_TCD11_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,11) +#define DMA_TCD11_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,11) +#define DMA_TCD12_SADDR DMA_SADDR_REG(DMA0,12) +#define DMA_TCD12_SOFF DMA_SOFF_REG(DMA0,12) +#define DMA_TCD12_ATTR DMA_ATTR_REG(DMA0,12) +#define DMA_TCD12_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,12) +#define DMA_TCD12_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,12) +#define DMA_TCD12_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,12) +#define DMA_TCD12_SLAST DMA_SLAST_REG(DMA0,12) +#define DMA_TCD12_DADDR DMA_DADDR_REG(DMA0,12) +#define DMA_TCD12_DOFF DMA_DOFF_REG(DMA0,12) +#define DMA_TCD12_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,12) +#define DMA_TCD12_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,12) +#define DMA_TCD12_DLASTSGA DMA_DLAST_SGA_REG(DMA0,12) +#define DMA_TCD12_CSR DMA_CSR_REG(DMA0,12) +#define DMA_TCD12_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,12) +#define DMA_TCD12_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,12) +#define DMA_TCD13_SADDR DMA_SADDR_REG(DMA0,13) +#define DMA_TCD13_SOFF DMA_SOFF_REG(DMA0,13) +#define DMA_TCD13_ATTR DMA_ATTR_REG(DMA0,13) +#define DMA_TCD13_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,13) +#define DMA_TCD13_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,13) +#define DMA_TCD13_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,13) +#define DMA_TCD13_SLAST DMA_SLAST_REG(DMA0,13) +#define DMA_TCD13_DADDR DMA_DADDR_REG(DMA0,13) +#define DMA_TCD13_DOFF DMA_DOFF_REG(DMA0,13) +#define DMA_TCD13_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,13) +#define DMA_TCD13_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,13) +#define DMA_TCD13_DLASTSGA DMA_DLAST_SGA_REG(DMA0,13) +#define DMA_TCD13_CSR DMA_CSR_REG(DMA0,13) +#define DMA_TCD13_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,13) +#define DMA_TCD13_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,13) +#define DMA_TCD14_SADDR DMA_SADDR_REG(DMA0,14) +#define DMA_TCD14_SOFF DMA_SOFF_REG(DMA0,14) +#define DMA_TCD14_ATTR DMA_ATTR_REG(DMA0,14) +#define DMA_TCD14_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,14) +#define DMA_TCD14_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,14) +#define DMA_TCD14_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,14) +#define DMA_TCD14_SLAST DMA_SLAST_REG(DMA0,14) +#define DMA_TCD14_DADDR DMA_DADDR_REG(DMA0,14) +#define DMA_TCD14_DOFF DMA_DOFF_REG(DMA0,14) +#define DMA_TCD14_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,14) +#define DMA_TCD14_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,14) +#define DMA_TCD14_DLASTSGA DMA_DLAST_SGA_REG(DMA0,14) +#define DMA_TCD14_CSR DMA_CSR_REG(DMA0,14) +#define DMA_TCD14_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,14) +#define DMA_TCD14_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,14) +#define DMA_TCD15_SADDR DMA_SADDR_REG(DMA0,15) +#define DMA_TCD15_SOFF DMA_SOFF_REG(DMA0,15) +#define DMA_TCD15_ATTR DMA_ATTR_REG(DMA0,15) +#define DMA_TCD15_NBYTES_MLNO DMA_NBYTES_MLNO_REG(DMA0,15) +#define DMA_TCD15_NBYTES_MLOFFNO DMA_NBYTES_MLOFFNO_REG(DMA0,15) +#define DMA_TCD15_NBYTES_MLOFFYES DMA_NBYTES_MLOFFYES_REG(DMA0,15) +#define DMA_TCD15_SLAST DMA_SLAST_REG(DMA0,15) +#define DMA_TCD15_DADDR DMA_DADDR_REG(DMA0,15) +#define DMA_TCD15_DOFF DMA_DOFF_REG(DMA0,15) +#define DMA_TCD15_CITER_ELINKNO DMA_CITER_ELINKNO_REG(DMA0,15) +#define DMA_TCD15_CITER_ELINKYES DMA_CITER_ELINKYES_REG(DMA0,15) +#define DMA_TCD15_DLASTSGA DMA_DLAST_SGA_REG(DMA0,15) +#define DMA_TCD15_CSR DMA_CSR_REG(DMA0,15) +#define DMA_TCD15_BITER_ELINKNO DMA_BITER_ELINKNO_REG(DMA0,15) +#define DMA_TCD15_BITER_ELINKYES DMA_BITER_ELINKYES_REG(DMA0,15) + +/* DMA - Register array accessors */ +#define DMA_SADDR(index) DMA_SADDR_REG(DMA0,index) +#define DMA_SOFF(index) DMA_SOFF_REG(DMA0,index) +#define DMA_ATTR(index) DMA_ATTR_REG(DMA0,index) +#define DMA_NBYTES_MLNO(index) DMA_NBYTES_MLNO_REG(DMA0,index) +#define DMA_NBYTES_MLOFFNO(index) DMA_NBYTES_MLOFFNO_REG(DMA0,index) +#define DMA_NBYTES_MLOFFYES(index) DMA_NBYTES_MLOFFYES_REG(DMA0,index) +#define DMA_SLAST(index) DMA_SLAST_REG(DMA0,index) +#define DMA_DADDR(index) DMA_DADDR_REG(DMA0,index) +#define DMA_DOFF(index) DMA_DOFF_REG(DMA0,index) +#define DMA_CITER_ELINKNO(index) DMA_CITER_ELINKNO_REG(DMA0,index) +#define DMA_CITER_ELINKYES(index) DMA_CITER_ELINKYES_REG(DMA0,index) +#define DMA_DLAST_SGA(index) DMA_DLAST_SGA_REG(DMA0,index) +#define DMA_CSR(index) DMA_CSR_REG(DMA0,index) +#define DMA_BITER_ELINKNO(index) DMA_BITER_ELINKNO_REG(DMA0,index) +#define DMA_BITER_ELINKYES(index) DMA_BITER_ELINKYES_REG(DMA0,index) + +/*! + * @} + */ /* end of group DMA_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group DMA_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- DMAMUX Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMAMUX_Peripheral_Access_Layer DMAMUX Peripheral Access Layer + * @{ + */ + +/** DMAMUX - Register Layout Typedef */ +typedef struct { + __IO uint8_t CHCFG[16]; /**< Channel Configuration register, array offset: 0x0, array step: 0x1 */ +} DMAMUX_Type, *DMAMUX_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- DMAMUX - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMAMUX_Register_Accessor_Macros DMAMUX - Register accessor macros + * @{ + */ + + +/* DMAMUX - Register accessors */ +#define DMAMUX_CHCFG_REG(base,index) ((base)->CHCFG[index]) + +/*! + * @} + */ /* end of group DMAMUX_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- DMAMUX Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMAMUX_Register_Masks DMAMUX Register Masks + * @{ + */ + +/* CHCFG Bit Fields */ +#define DMAMUX_CHCFG_SOURCE_MASK 0x3Fu +#define DMAMUX_CHCFG_SOURCE_SHIFT 0 +#define DMAMUX_CHCFG_SOURCE(x) (((uint8_t)(((uint8_t)(x))<<DMAMUX_CHCFG_SOURCE_SHIFT))&DMAMUX_CHCFG_SOURCE_MASK) +#define DMAMUX_CHCFG_TRIG_MASK 0x40u +#define DMAMUX_CHCFG_TRIG_SHIFT 6 +#define DMAMUX_CHCFG_ENBL_MASK 0x80u +#define DMAMUX_CHCFG_ENBL_SHIFT 7 + +/*! + * @} + */ /* end of group DMAMUX_Register_Masks */ + + +/* DMAMUX - Peripheral instance base addresses */ +/** Peripheral DMAMUX base address */ +#define DMAMUX_BASE (0x40021000u) +/** Peripheral DMAMUX base pointer */ +#define DMAMUX ((DMAMUX_Type *)DMAMUX_BASE) +#define DMAMUX_BASE_PTR (DMAMUX) +/** Array initializer of DMAMUX peripheral base pointers */ +#define DMAMUX_BASES { DMAMUX } + +/* ---------------------------------------------------------------------------- + -- DMAMUX - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup DMAMUX_Register_Accessor_Macros DMAMUX - Register accessor macros + * @{ + */ + + +/* DMAMUX - Register instance definitions */ +/* DMAMUX */ +#define DMAMUX_CHCFG0 DMAMUX_CHCFG_REG(DMAMUX,0) +#define DMAMUX_CHCFG1 DMAMUX_CHCFG_REG(DMAMUX,1) +#define DMAMUX_CHCFG2 DMAMUX_CHCFG_REG(DMAMUX,2) +#define DMAMUX_CHCFG3 DMAMUX_CHCFG_REG(DMAMUX,3) +#define DMAMUX_CHCFG4 DMAMUX_CHCFG_REG(DMAMUX,4) +#define DMAMUX_CHCFG5 DMAMUX_CHCFG_REG(DMAMUX,5) +#define DMAMUX_CHCFG6 DMAMUX_CHCFG_REG(DMAMUX,6) +#define DMAMUX_CHCFG7 DMAMUX_CHCFG_REG(DMAMUX,7) +#define DMAMUX_CHCFG8 DMAMUX_CHCFG_REG(DMAMUX,8) +#define DMAMUX_CHCFG9 DMAMUX_CHCFG_REG(DMAMUX,9) +#define DMAMUX_CHCFG10 DMAMUX_CHCFG_REG(DMAMUX,10) +#define DMAMUX_CHCFG11 DMAMUX_CHCFG_REG(DMAMUX,11) +#define DMAMUX_CHCFG12 DMAMUX_CHCFG_REG(DMAMUX,12) +#define DMAMUX_CHCFG13 DMAMUX_CHCFG_REG(DMAMUX,13) +#define DMAMUX_CHCFG14 DMAMUX_CHCFG_REG(DMAMUX,14) +#define DMAMUX_CHCFG15 DMAMUX_CHCFG_REG(DMAMUX,15) + +/* DMAMUX - Register array accessors */ +#define DMAMUX_CHCFG(index) DMAMUX_CHCFG_REG(DMAMUX,index) + +/*! + * @} + */ /* end of group DMAMUX_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group DMAMUX_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- ENET Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ENET_Peripheral_Access_Layer ENET Peripheral Access Layer + * @{ + */ + +/** ENET - Register Layout Typedef */ +typedef struct { + uint8_t RESERVED_0[4]; + __IO uint32_t EIR; /**< Interrupt Event Register, offset: 0x4 */ + __IO uint32_t EIMR; /**< Interrupt Mask Register, offset: 0x8 */ + uint8_t RESERVED_1[4]; + __IO uint32_t RDAR; /**< Receive Descriptor Active Register, offset: 0x10 */ + __IO uint32_t TDAR; /**< Transmit Descriptor Active Register, offset: 0x14 */ + uint8_t RESERVED_2[12]; + __IO uint32_t ECR; /**< Ethernet Control Register, offset: 0x24 */ + uint8_t RESERVED_3[24]; + __IO uint32_t MMFR; /**< MII Management Frame Register, offset: 0x40 */ + __IO uint32_t MSCR; /**< MII Speed Control Register, offset: 0x44 */ + uint8_t RESERVED_4[28]; + __IO uint32_t MIBC; /**< MIB Control Register, offset: 0x64 */ + uint8_t RESERVED_5[28]; + __IO uint32_t RCR; /**< Receive Control Register, offset: 0x84 */ + uint8_t RESERVED_6[60]; + __IO uint32_t TCR; /**< Transmit Control Register, offset: 0xC4 */ + uint8_t RESERVED_7[28]; + __IO uint32_t PALR; /**< Physical Address Lower Register, offset: 0xE4 */ + __IO uint32_t PAUR; /**< Physical Address Upper Register, offset: 0xE8 */ + __IO uint32_t OPD; /**< Opcode/Pause Duration Register, offset: 0xEC */ + uint8_t RESERVED_8[40]; + __IO uint32_t IAUR; /**< Descriptor Individual Upper Address Register, offset: 0x118 */ + __IO uint32_t IALR; /**< Descriptor Individual Lower Address Register, offset: 0x11C */ + __IO uint32_t GAUR; /**< Descriptor Group Upper Address Register, offset: 0x120 */ + __IO uint32_t GALR; /**< Descriptor Group Lower Address Register, offset: 0x124 */ + uint8_t RESERVED_9[28]; + __IO uint32_t TFWR; /**< Transmit FIFO Watermark Register, offset: 0x144 */ + uint8_t RESERVED_10[56]; + __IO uint32_t RDSR; /**< Receive Descriptor Ring Start Register, offset: 0x180 */ + __IO uint32_t TDSR; /**< Transmit Buffer Descriptor Ring Start Register, offset: 0x184 */ + __IO uint32_t MRBR; /**< Maximum Receive Buffer Size Register, offset: 0x188 */ + uint8_t RESERVED_11[4]; + __IO uint32_t RSFL; /**< Receive FIFO Section Full Threshold, offset: 0x190 */ + __IO uint32_t RSEM; /**< Receive FIFO Section Empty Threshold, offset: 0x194 */ + __IO uint32_t RAEM; /**< Receive FIFO Almost Empty Threshold, offset: 0x198 */ + __IO uint32_t RAFL; /**< Receive FIFO Almost Full Threshold, offset: 0x19C */ + __IO uint32_t TSEM; /**< Transmit FIFO Section Empty Threshold, offset: 0x1A0 */ + __IO uint32_t TAEM; /**< Transmit FIFO Almost Empty Threshold, offset: 0x1A4 */ + __IO uint32_t TAFL; /**< Transmit FIFO Almost Full Threshold, offset: 0x1A8 */ + __IO uint32_t TIPG; /**< Transmit Inter-Packet Gap, offset: 0x1AC */ + __IO uint32_t FTRL; /**< Frame Truncation Length, offset: 0x1B0 */ + uint8_t RESERVED_12[12]; + __IO uint32_t TACC; /**< Transmit Accelerator Function Configuration, offset: 0x1C0 */ + __IO uint32_t RACC; /**< Receive Accelerator Function Configuration, offset: 0x1C4 */ + uint8_t RESERVED_13[60]; + __I uint32_t RMON_T_PACKETS; /**< Tx Packet Count Statistic Register, offset: 0x204 */ + __I uint32_t RMON_T_BC_PKT; /**< Tx Broadcast Packets Statistic Register, offset: 0x208 */ + __I uint32_t RMON_T_MC_PKT; /**< Tx Multicast Packets Statistic Register, offset: 0x20C */ + __I uint32_t RMON_T_CRC_ALIGN; /**< Tx Packets with CRC/Align Error Statistic Register, offset: 0x210 */ + __I uint32_t RMON_T_UNDERSIZE; /**< Tx Packets Less Than Bytes and Good CRC Statistic Register, offset: 0x214 */ + __I uint32_t RMON_T_OVERSIZE; /**< Tx Packets GT MAX_FL bytes and Good CRC Statistic Register, offset: 0x218 */ + __I uint32_t RMON_T_FRAG; /**< Tx Packets Less Than 64 Bytes and Bad CRC Statistic Register, offset: 0x21C */ + __I uint32_t RMON_T_JAB; /**< Tx Packets Greater Than MAX_FL bytes and Bad CRC Statistic Register, offset: 0x220 */ + __I uint32_t RMON_T_COL; /**< Tx Collision Count Statistic Register, offset: 0x224 */ + __I uint32_t RMON_T_P64; /**< Tx 64-Byte Packets Statistic Register, offset: 0x228 */ + __I uint32_t RMON_T_P65TO127; /**< Tx 65- to 127-byte Packets Statistic Register, offset: 0x22C */ + __I uint32_t RMON_T_P128TO255; /**< Tx 128- to 255-byte Packets Statistic Register, offset: 0x230 */ + __I uint32_t RMON_T_P256TO511; /**< Tx 256- to 511-byte Packets Statistic Register, offset: 0x234 */ + __I uint32_t RMON_T_P512TO1023; /**< Tx 512- to 1023-byte Packets Statistic Register, offset: 0x238 */ + __I uint32_t RMON_T_P1024TO2047; /**< Tx 1024- to 2047-byte Packets Statistic Register, offset: 0x23C */ + __I uint32_t RMON_T_P_GTE2048; /**< Tx Packets Greater Than 2048 Bytes Statistic Register, offset: 0x240 */ + __I uint32_t RMON_T_OCTETS; /**< Tx Octets Statistic Register, offset: 0x244 */ + uint8_t RESERVED_14[4]; + __I uint32_t IEEE_T_FRAME_OK; /**< Frames Transmitted OK Statistic Register, offset: 0x24C */ + __I uint32_t IEEE_T_1COL; /**< Frames Transmitted with Single Collision Statistic Register, offset: 0x250 */ + __I uint32_t IEEE_T_MCOL; /**< Frames Transmitted with Multiple Collisions Statistic Register, offset: 0x254 */ + __I uint32_t IEEE_T_DEF; /**< Frames Transmitted after Deferral Delay Statistic Register, offset: 0x258 */ + __I uint32_t IEEE_T_LCOL; /**< Frames Transmitted with Late Collision Statistic Register, offset: 0x25C */ + __I uint32_t IEEE_T_EXCOL; /**< Frames Transmitted with Excessive Collisions Statistic Register, offset: 0x260 */ + __I uint32_t IEEE_T_MACERR; /**< Frames Transmitted with Tx FIFO Underrun Statistic Register, offset: 0x264 */ + __I uint32_t IEEE_T_CSERR; /**< Frames Transmitted with Carrier Sense Error Statistic Register, offset: 0x268 */ + uint8_t RESERVED_15[4]; + __I uint32_t IEEE_T_FDXFC; /**< Flow Control Pause Frames Transmitted Statistic Register, offset: 0x270 */ + __I uint32_t IEEE_T_OCTETS_OK; /**< Octet Count for Frames Transmitted w/o Error Statistic Register, offset: 0x274 */ + uint8_t RESERVED_16[12]; + __I uint32_t RMON_R_PACKETS; /**< Rx Packet Count Statistic Register, offset: 0x284 */ + __I uint32_t RMON_R_BC_PKT; /**< Rx Broadcast Packets Statistic Register, offset: 0x288 */ + __I uint32_t RMON_R_MC_PKT; /**< Rx Multicast Packets Statistic Register, offset: 0x28C */ + __I uint32_t RMON_R_CRC_ALIGN; /**< Rx Packets with CRC/Align Error Statistic Register, offset: 0x290 */ + __I uint32_t RMON_R_UNDERSIZE; /**< Rx Packets with Less Than 64 Bytes and Good CRC Statistic Register, offset: 0x294 */ + __I uint32_t RMON_R_OVERSIZE; /**< Rx Packets Greater Than MAX_FL and Good CRC Statistic Register, offset: 0x298 */ + __I uint32_t RMON_R_FRAG; /**< Rx Packets Less Than 64 Bytes and Bad CRC Statistic Register, offset: 0x29C */ + __I uint32_t RMON_R_JAB; /**< Rx Packets Greater Than MAX_FL Bytes and Bad CRC Statistic Register, offset: 0x2A0 */ + uint8_t RESERVED_17[4]; + __I uint32_t RMON_R_P64; /**< Rx 64-Byte Packets Statistic Register, offset: 0x2A8 */ + __I uint32_t RMON_R_P65TO127; /**< Rx 65- to 127-Byte Packets Statistic Register, offset: 0x2AC */ + __I uint32_t RMON_R_P128TO255; /**< Rx 128- to 255-Byte Packets Statistic Register, offset: 0x2B0 */ + __I uint32_t RMON_R_P256TO511; /**< Rx 256- to 511-Byte Packets Statistic Register, offset: 0x2B4 */ + __I uint32_t RMON_R_P512TO1023; /**< Rx 512- to 1023-Byte Packets Statistic Register, offset: 0x2B8 */ + __I uint32_t RMON_R_P1024TO2047; /**< Rx 1024- to 2047-Byte Packets Statistic Register, offset: 0x2BC */ + __I uint32_t RMON_R_GTE2048; /**< Rx Packets Greater than 2048 Bytes Statistic Register, offset: 0x2C0 */ + __I uint32_t RMON_R_OCTETS; /**< Rx Octets Statistic Register, offset: 0x2C4 */ + __I uint32_t IEEE_R_DROP; /**< Frames not Counted Correctly Statistic Register, offset: 0x2C8 */ + __I uint32_t IEEE_R_FRAME_OK; /**< Frames Received OK Statistic Register, offset: 0x2CC */ + __I uint32_t IEEE_R_CRC; /**< Frames Received with CRC Error Statistic Register, offset: 0x2D0 */ + __I uint32_t IEEE_R_ALIGN; /**< Frames Received with Alignment Error Statistic Register, offset: 0x2D4 */ + __I uint32_t IEEE_R_MACERR; /**< Receive FIFO Overflow Count Statistic Register, offset: 0x2D8 */ + __I uint32_t IEEE_R_FDXFC; /**< Flow Control Pause Frames Received Statistic Register, offset: 0x2DC */ + __I uint32_t IEEE_R_OCTETS_OK; /**< Octet Count for Frames Received without Error Statistic Register, offset: 0x2E0 */ + uint8_t RESERVED_18[284]; + __IO uint32_t ATCR; /**< Adjustable Timer Control Register, offset: 0x400 */ + __IO uint32_t ATVR; /**< Timer Value Register, offset: 0x404 */ + __IO uint32_t ATOFF; /**< Timer Offset Register, offset: 0x408 */ + __IO uint32_t ATPER; /**< Timer Period Register, offset: 0x40C */ + __IO uint32_t ATCOR; /**< Timer Correction Register, offset: 0x410 */ + __IO uint32_t ATINC; /**< Time-Stamping Clock Period Register, offset: 0x414 */ + __I uint32_t ATSTMP; /**< Timestamp of Last Transmitted Frame, offset: 0x418 */ + uint8_t RESERVED_19[488]; + __IO uint32_t TGSR; /**< Timer Global Status Register, offset: 0x604 */ + struct { /* offset: 0x608, array step: 0x8 */ + __IO uint32_t TCSR; /**< Timer Control Status Register, array offset: 0x608, array step: 0x8 */ + __IO uint32_t TCCR; /**< Timer Compare Capture Register, array offset: 0x60C, array step: 0x8 */ + } CHANNEL[4]; +} ENET_Type, *ENET_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- ENET - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ENET_Register_Accessor_Macros ENET - Register accessor macros + * @{ + */ + + +/* ENET - Register accessors */ +#define ENET_EIR_REG(base) ((base)->EIR) +#define ENET_EIMR_REG(base) ((base)->EIMR) +#define ENET_RDAR_REG(base) ((base)->RDAR) +#define ENET_TDAR_REG(base) ((base)->TDAR) +#define ENET_ECR_REG(base) ((base)->ECR) +#define ENET_MMFR_REG(base) ((base)->MMFR) +#define ENET_MSCR_REG(base) ((base)->MSCR) +#define ENET_MIBC_REG(base) ((base)->MIBC) +#define ENET_RCR_REG(base) ((base)->RCR) +#define ENET_TCR_REG(base) ((base)->TCR) +#define ENET_PALR_REG(base) ((base)->PALR) +#define ENET_PAUR_REG(base) ((base)->PAUR) +#define ENET_OPD_REG(base) ((base)->OPD) +#define ENET_IAUR_REG(base) ((base)->IAUR) +#define ENET_IALR_REG(base) ((base)->IALR) +#define ENET_GAUR_REG(base) ((base)->GAUR) +#define ENET_GALR_REG(base) ((base)->GALR) +#define ENET_TFWR_REG(base) ((base)->TFWR) +#define ENET_RDSR_REG(base) ((base)->RDSR) +#define ENET_TDSR_REG(base) ((base)->TDSR) +#define ENET_MRBR_REG(base) ((base)->MRBR) +#define ENET_RSFL_REG(base) ((base)->RSFL) +#define ENET_RSEM_REG(base) ((base)->RSEM) +#define ENET_RAEM_REG(base) ((base)->RAEM) +#define ENET_RAFL_REG(base) ((base)->RAFL) +#define ENET_TSEM_REG(base) ((base)->TSEM) +#define ENET_TAEM_REG(base) ((base)->TAEM) +#define ENET_TAFL_REG(base) ((base)->TAFL) +#define ENET_TIPG_REG(base) ((base)->TIPG) +#define ENET_FTRL_REG(base) ((base)->FTRL) +#define ENET_TACC_REG(base) ((base)->TACC) +#define ENET_RACC_REG(base) ((base)->RACC) +#define ENET_RMON_T_PACKETS_REG(base) ((base)->RMON_T_PACKETS) +#define ENET_RMON_T_BC_PKT_REG(base) ((base)->RMON_T_BC_PKT) +#define ENET_RMON_T_MC_PKT_REG(base) ((base)->RMON_T_MC_PKT) +#define ENET_RMON_T_CRC_ALIGN_REG(base) ((base)->RMON_T_CRC_ALIGN) +#define ENET_RMON_T_UNDERSIZE_REG(base) ((base)->RMON_T_UNDERSIZE) +#define ENET_RMON_T_OVERSIZE_REG(base) ((base)->RMON_T_OVERSIZE) +#define ENET_RMON_T_FRAG_REG(base) ((base)->RMON_T_FRAG) +#define ENET_RMON_T_JAB_REG(base) ((base)->RMON_T_JAB) +#define ENET_RMON_T_COL_REG(base) ((base)->RMON_T_COL) +#define ENET_RMON_T_P64_REG(base) ((base)->RMON_T_P64) +#define ENET_RMON_T_P65TO127_REG(base) ((base)->RMON_T_P65TO127) +#define ENET_RMON_T_P128TO255_REG(base) ((base)->RMON_T_P128TO255) +#define ENET_RMON_T_P256TO511_REG(base) ((base)->RMON_T_P256TO511) +#define ENET_RMON_T_P512TO1023_REG(base) ((base)->RMON_T_P512TO1023) +#define ENET_RMON_T_P1024TO2047_REG(base) ((base)->RMON_T_P1024TO2047) +#define ENET_RMON_T_P_GTE2048_REG(base) ((base)->RMON_T_P_GTE2048) +#define ENET_RMON_T_OCTETS_REG(base) ((base)->RMON_T_OCTETS) +#define ENET_IEEE_T_FRAME_OK_REG(base) ((base)->IEEE_T_FRAME_OK) +#define ENET_IEEE_T_1COL_REG(base) ((base)->IEEE_T_1COL) +#define ENET_IEEE_T_MCOL_REG(base) ((base)->IEEE_T_MCOL) +#define ENET_IEEE_T_DEF_REG(base) ((base)->IEEE_T_DEF) +#define ENET_IEEE_T_LCOL_REG(base) ((base)->IEEE_T_LCOL) +#define ENET_IEEE_T_EXCOL_REG(base) ((base)->IEEE_T_EXCOL) +#define ENET_IEEE_T_MACERR_REG(base) ((base)->IEEE_T_MACERR) +#define ENET_IEEE_T_CSERR_REG(base) ((base)->IEEE_T_CSERR) +#define ENET_IEEE_T_FDXFC_REG(base) ((base)->IEEE_T_FDXFC) +#define ENET_IEEE_T_OCTETS_OK_REG(base) ((base)->IEEE_T_OCTETS_OK) +#define ENET_RMON_R_PACKETS_REG(base) ((base)->RMON_R_PACKETS) +#define ENET_RMON_R_BC_PKT_REG(base) ((base)->RMON_R_BC_PKT) +#define ENET_RMON_R_MC_PKT_REG(base) ((base)->RMON_R_MC_PKT) +#define ENET_RMON_R_CRC_ALIGN_REG(base) ((base)->RMON_R_CRC_ALIGN) +#define ENET_RMON_R_UNDERSIZE_REG(base) ((base)->RMON_R_UNDERSIZE) +#define ENET_RMON_R_OVERSIZE_REG(base) ((base)->RMON_R_OVERSIZE) +#define ENET_RMON_R_FRAG_REG(base) ((base)->RMON_R_FRAG) +#define ENET_RMON_R_JAB_REG(base) ((base)->RMON_R_JAB) +#define ENET_RMON_R_P64_REG(base) ((base)->RMON_R_P64) +#define ENET_RMON_R_P65TO127_REG(base) ((base)->RMON_R_P65TO127) +#define ENET_RMON_R_P128TO255_REG(base) ((base)->RMON_R_P128TO255) +#define ENET_RMON_R_P256TO511_REG(base) ((base)->RMON_R_P256TO511) +#define ENET_RMON_R_P512TO1023_REG(base) ((base)->RMON_R_P512TO1023) +#define ENET_RMON_R_P1024TO2047_REG(base) ((base)->RMON_R_P1024TO2047) +#define ENET_RMON_R_GTE2048_REG(base) ((base)->RMON_R_GTE2048) +#define ENET_RMON_R_OCTETS_REG(base) ((base)->RMON_R_OCTETS) +#define ENET_IEEE_R_DROP_REG(base) ((base)->IEEE_R_DROP) +#define ENET_IEEE_R_FRAME_OK_REG(base) ((base)->IEEE_R_FRAME_OK) +#define ENET_IEEE_R_CRC_REG(base) ((base)->IEEE_R_CRC) +#define ENET_IEEE_R_ALIGN_REG(base) ((base)->IEEE_R_ALIGN) +#define ENET_IEEE_R_MACERR_REG(base) ((base)->IEEE_R_MACERR) +#define ENET_IEEE_R_FDXFC_REG(base) ((base)->IEEE_R_FDXFC) +#define ENET_IEEE_R_OCTETS_OK_REG(base) ((base)->IEEE_R_OCTETS_OK) +#define ENET_ATCR_REG(base) ((base)->ATCR) +#define ENET_ATVR_REG(base) ((base)->ATVR) +#define ENET_ATOFF_REG(base) ((base)->ATOFF) +#define ENET_ATPER_REG(base) ((base)->ATPER) +#define ENET_ATCOR_REG(base) ((base)->ATCOR) +#define ENET_ATINC_REG(base) ((base)->ATINC) +#define ENET_ATSTMP_REG(base) ((base)->ATSTMP) +#define ENET_TGSR_REG(base) ((base)->TGSR) +#define ENET_TCSR_REG(base,index) ((base)->CHANNEL[index].TCSR) +#define ENET_TCCR_REG(base,index) ((base)->CHANNEL[index].TCCR) + +/*! + * @} + */ /* end of group ENET_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- ENET Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ENET_Register_Masks ENET Register Masks + * @{ + */ + +/* EIR Bit Fields */ +#define ENET_EIR_TS_TIMER_MASK 0x8000u +#define ENET_EIR_TS_TIMER_SHIFT 15 +#define ENET_EIR_TS_AVAIL_MASK 0x10000u +#define ENET_EIR_TS_AVAIL_SHIFT 16 +#define ENET_EIR_WAKEUP_MASK 0x20000u +#define ENET_EIR_WAKEUP_SHIFT 17 +#define ENET_EIR_PLR_MASK 0x40000u +#define ENET_EIR_PLR_SHIFT 18 +#define ENET_EIR_UN_MASK 0x80000u +#define ENET_EIR_UN_SHIFT 19 +#define ENET_EIR_RL_MASK 0x100000u +#define ENET_EIR_RL_SHIFT 20 +#define ENET_EIR_LC_MASK 0x200000u +#define ENET_EIR_LC_SHIFT 21 +#define ENET_EIR_EBERR_MASK 0x400000u +#define ENET_EIR_EBERR_SHIFT 22 +#define ENET_EIR_MII_MASK 0x800000u +#define ENET_EIR_MII_SHIFT 23 +#define ENET_EIR_RXB_MASK 0x1000000u +#define ENET_EIR_RXB_SHIFT 24 +#define ENET_EIR_RXF_MASK 0x2000000u +#define ENET_EIR_RXF_SHIFT 25 +#define ENET_EIR_TXB_MASK 0x4000000u +#define ENET_EIR_TXB_SHIFT 26 +#define ENET_EIR_TXF_MASK 0x8000000u +#define ENET_EIR_TXF_SHIFT 27 +#define ENET_EIR_GRA_MASK 0x10000000u +#define ENET_EIR_GRA_SHIFT 28 +#define ENET_EIR_BABT_MASK 0x20000000u +#define ENET_EIR_BABT_SHIFT 29 +#define ENET_EIR_BABR_MASK 0x40000000u +#define ENET_EIR_BABR_SHIFT 30 +/* EIMR Bit Fields */ +#define ENET_EIMR_TS_TIMER_MASK 0x8000u +#define ENET_EIMR_TS_TIMER_SHIFT 15 +#define ENET_EIMR_TS_AVAIL_MASK 0x10000u +#define ENET_EIMR_TS_AVAIL_SHIFT 16 +#define ENET_EIMR_WAKEUP_MASK 0x20000u +#define ENET_EIMR_WAKEUP_SHIFT 17 +#define ENET_EIMR_PLR_MASK 0x40000u +#define ENET_EIMR_PLR_SHIFT 18 +#define ENET_EIMR_UN_MASK 0x80000u +#define ENET_EIMR_UN_SHIFT 19 +#define ENET_EIMR_RL_MASK 0x100000u +#define ENET_EIMR_RL_SHIFT 20 +#define ENET_EIMR_LC_MASK 0x200000u +#define ENET_EIMR_LC_SHIFT 21 +#define ENET_EIMR_EBERR_MASK 0x400000u +#define ENET_EIMR_EBERR_SHIFT 22 +#define ENET_EIMR_MII_MASK 0x800000u +#define ENET_EIMR_MII_SHIFT 23 +#define ENET_EIMR_RXB_MASK 0x1000000u +#define ENET_EIMR_RXB_SHIFT 24 +#define ENET_EIMR_RXF_MASK 0x2000000u +#define ENET_EIMR_RXF_SHIFT 25 +#define ENET_EIMR_TXB_MASK 0x4000000u +#define ENET_EIMR_TXB_SHIFT 26 +#define ENET_EIMR_TXF_MASK 0x8000000u +#define ENET_EIMR_TXF_SHIFT 27 +#define ENET_EIMR_GRA_MASK 0x10000000u +#define ENET_EIMR_GRA_SHIFT 28 +#define ENET_EIMR_BABT_MASK 0x20000000u +#define ENET_EIMR_BABT_SHIFT 29 +#define ENET_EIMR_BABR_MASK 0x40000000u +#define ENET_EIMR_BABR_SHIFT 30 +/* RDAR Bit Fields */ +#define ENET_RDAR_RDAR_MASK 0x1000000u +#define ENET_RDAR_RDAR_SHIFT 24 +/* TDAR Bit Fields */ +#define ENET_TDAR_TDAR_MASK 0x1000000u +#define ENET_TDAR_TDAR_SHIFT 24 +/* ECR Bit Fields */ +#define ENET_ECR_RESET_MASK 0x1u +#define ENET_ECR_RESET_SHIFT 0 +#define ENET_ECR_ETHEREN_MASK 0x2u +#define ENET_ECR_ETHEREN_SHIFT 1 +#define ENET_ECR_MAGICEN_MASK 0x4u +#define ENET_ECR_MAGICEN_SHIFT 2 +#define ENET_ECR_SLEEP_MASK 0x8u +#define ENET_ECR_SLEEP_SHIFT 3 +#define ENET_ECR_EN1588_MASK 0x10u +#define ENET_ECR_EN1588_SHIFT 4 +#define ENET_ECR_DBGEN_MASK 0x40u +#define ENET_ECR_DBGEN_SHIFT 6 +#define ENET_ECR_STOPEN_MASK 0x80u +#define ENET_ECR_STOPEN_SHIFT 7 +#define ENET_ECR_DBSWP_MASK 0x100u +#define ENET_ECR_DBSWP_SHIFT 8 +/* MMFR Bit Fields */ +#define ENET_MMFR_DATA_MASK 0xFFFFu +#define ENET_MMFR_DATA_SHIFT 0 +#define ENET_MMFR_DATA(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_DATA_SHIFT))&ENET_MMFR_DATA_MASK) +#define ENET_MMFR_TA_MASK 0x30000u +#define ENET_MMFR_TA_SHIFT 16 +#define ENET_MMFR_TA(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_TA_SHIFT))&ENET_MMFR_TA_MASK) +#define ENET_MMFR_RA_MASK 0x7C0000u +#define ENET_MMFR_RA_SHIFT 18 +#define ENET_MMFR_RA(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_RA_SHIFT))&ENET_MMFR_RA_MASK) +#define ENET_MMFR_PA_MASK 0xF800000u +#define ENET_MMFR_PA_SHIFT 23 +#define ENET_MMFR_PA(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_PA_SHIFT))&ENET_MMFR_PA_MASK) +#define ENET_MMFR_OP_MASK 0x30000000u +#define ENET_MMFR_OP_SHIFT 28 +#define ENET_MMFR_OP(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_OP_SHIFT))&ENET_MMFR_OP_MASK) +#define ENET_MMFR_ST_MASK 0xC0000000u +#define ENET_MMFR_ST_SHIFT 30 +#define ENET_MMFR_ST(x) (((uint32_t)(((uint32_t)(x))<<ENET_MMFR_ST_SHIFT))&ENET_MMFR_ST_MASK) +/* MSCR Bit Fields */ +#define ENET_MSCR_MII_SPEED_MASK 0x7Eu +#define ENET_MSCR_MII_SPEED_SHIFT 1 +#define ENET_MSCR_MII_SPEED(x) (((uint32_t)(((uint32_t)(x))<<ENET_MSCR_MII_SPEED_SHIFT))&ENET_MSCR_MII_SPEED_MASK) +#define ENET_MSCR_DIS_PRE_MASK 0x80u +#define ENET_MSCR_DIS_PRE_SHIFT 7 +#define ENET_MSCR_HOLDTIME_MASK 0x700u +#define ENET_MSCR_HOLDTIME_SHIFT 8 +#define ENET_MSCR_HOLDTIME(x) (((uint32_t)(((uint32_t)(x))<<ENET_MSCR_HOLDTIME_SHIFT))&ENET_MSCR_HOLDTIME_MASK) +/* MIBC Bit Fields */ +#define ENET_MIBC_MIB_CLEAR_MASK 0x20000000u +#define ENET_MIBC_MIB_CLEAR_SHIFT 29 +#define ENET_MIBC_MIB_IDLE_MASK 0x40000000u +#define ENET_MIBC_MIB_IDLE_SHIFT 30 +#define ENET_MIBC_MIB_DIS_MASK 0x80000000u +#define ENET_MIBC_MIB_DIS_SHIFT 31 +/* RCR Bit Fields */ +#define ENET_RCR_LOOP_MASK 0x1u +#define ENET_RCR_LOOP_SHIFT 0 +#define ENET_RCR_DRT_MASK 0x2u +#define ENET_RCR_DRT_SHIFT 1 +#define ENET_RCR_MII_MODE_MASK 0x4u +#define ENET_RCR_MII_MODE_SHIFT 2 +#define ENET_RCR_PROM_MASK 0x8u +#define ENET_RCR_PROM_SHIFT 3 +#define ENET_RCR_BC_REJ_MASK 0x10u +#define ENET_RCR_BC_REJ_SHIFT 4 +#define ENET_RCR_FCE_MASK 0x20u +#define ENET_RCR_FCE_SHIFT 5 +#define ENET_RCR_RMII_MODE_MASK 0x100u +#define ENET_RCR_RMII_MODE_SHIFT 8 +#define ENET_RCR_RMII_10T_MASK 0x200u +#define ENET_RCR_RMII_10T_SHIFT 9 +#define ENET_RCR_PADEN_MASK 0x1000u +#define ENET_RCR_PADEN_SHIFT 12 +#define ENET_RCR_PAUFWD_MASK 0x2000u +#define ENET_RCR_PAUFWD_SHIFT 13 +#define ENET_RCR_CRCFWD_MASK 0x4000u +#define ENET_RCR_CRCFWD_SHIFT 14 +#define ENET_RCR_CFEN_MASK 0x8000u +#define ENET_RCR_CFEN_SHIFT 15 +#define ENET_RCR_MAX_FL_MASK 0x3FFF0000u +#define ENET_RCR_MAX_FL_SHIFT 16 +#define ENET_RCR_MAX_FL(x) (((uint32_t)(((uint32_t)(x))<<ENET_RCR_MAX_FL_SHIFT))&ENET_RCR_MAX_FL_MASK) +#define ENET_RCR_NLC_MASK 0x40000000u +#define ENET_RCR_NLC_SHIFT 30 +#define ENET_RCR_GRS_MASK 0x80000000u +#define ENET_RCR_GRS_SHIFT 31 +/* TCR Bit Fields */ +#define ENET_TCR_GTS_MASK 0x1u +#define ENET_TCR_GTS_SHIFT 0 +#define ENET_TCR_FDEN_MASK 0x4u +#define ENET_TCR_FDEN_SHIFT 2 +#define ENET_TCR_TFC_PAUSE_MASK 0x8u +#define ENET_TCR_TFC_PAUSE_SHIFT 3 +#define ENET_TCR_RFC_PAUSE_MASK 0x10u +#define ENET_TCR_RFC_PAUSE_SHIFT 4 +#define ENET_TCR_ADDSEL_MASK 0xE0u +#define ENET_TCR_ADDSEL_SHIFT 5 +#define ENET_TCR_ADDSEL(x) (((uint32_t)(((uint32_t)(x))<<ENET_TCR_ADDSEL_SHIFT))&ENET_TCR_ADDSEL_MASK) +#define ENET_TCR_ADDINS_MASK 0x100u +#define ENET_TCR_ADDINS_SHIFT 8 +#define ENET_TCR_CRCFWD_MASK 0x200u +#define ENET_TCR_CRCFWD_SHIFT 9 +/* PALR Bit Fields */ +#define ENET_PALR_PADDR1_MASK 0xFFFFFFFFu +#define ENET_PALR_PADDR1_SHIFT 0 +#define ENET_PALR_PADDR1(x) (((uint32_t)(((uint32_t)(x))<<ENET_PALR_PADDR1_SHIFT))&ENET_PALR_PADDR1_MASK) +/* PAUR Bit Fields */ +#define ENET_PAUR_TYPE_MASK 0xFFFFu +#define ENET_PAUR_TYPE_SHIFT 0 +#define ENET_PAUR_TYPE(x) (((uint32_t)(((uint32_t)(x))<<ENET_PAUR_TYPE_SHIFT))&ENET_PAUR_TYPE_MASK) +#define ENET_PAUR_PADDR2_MASK 0xFFFF0000u +#define ENET_PAUR_PADDR2_SHIFT 16 +#define ENET_PAUR_PADDR2(x) (((uint32_t)(((uint32_t)(x))<<ENET_PAUR_PADDR2_SHIFT))&ENET_PAUR_PADDR2_MASK) +/* OPD Bit Fields */ +#define ENET_OPD_PAUSE_DUR_MASK 0xFFFFu +#define ENET_OPD_PAUSE_DUR_SHIFT 0 +#define ENET_OPD_PAUSE_DUR(x) (((uint32_t)(((uint32_t)(x))<<ENET_OPD_PAUSE_DUR_SHIFT))&ENET_OPD_PAUSE_DUR_MASK) +#define ENET_OPD_OPCODE_MASK 0xFFFF0000u +#define ENET_OPD_OPCODE_SHIFT 16 +#define ENET_OPD_OPCODE(x) (((uint32_t)(((uint32_t)(x))<<ENET_OPD_OPCODE_SHIFT))&ENET_OPD_OPCODE_MASK) +/* IAUR Bit Fields */ +#define ENET_IAUR_IADDR1_MASK 0xFFFFFFFFu +#define ENET_IAUR_IADDR1_SHIFT 0 +#define ENET_IAUR_IADDR1(x) (((uint32_t)(((uint32_t)(x))<<ENET_IAUR_IADDR1_SHIFT))&ENET_IAUR_IADDR1_MASK) +/* IALR Bit Fields */ +#define ENET_IALR_IADDR2_MASK 0xFFFFFFFFu +#define ENET_IALR_IADDR2_SHIFT 0 +#define ENET_IALR_IADDR2(x) (((uint32_t)(((uint32_t)(x))<<ENET_IALR_IADDR2_SHIFT))&ENET_IALR_IADDR2_MASK) +/* GAUR Bit Fields */ +#define ENET_GAUR_GADDR1_MASK 0xFFFFFFFFu +#define ENET_GAUR_GADDR1_SHIFT 0 +#define ENET_GAUR_GADDR1(x) (((uint32_t)(((uint32_t)(x))<<ENET_GAUR_GADDR1_SHIFT))&ENET_GAUR_GADDR1_MASK) +/* GALR Bit Fields */ +#define ENET_GALR_GADDR2_MASK 0xFFFFFFFFu +#define ENET_GALR_GADDR2_SHIFT 0 +#define ENET_GALR_GADDR2(x) (((uint32_t)(((uint32_t)(x))<<ENET_GALR_GADDR2_SHIFT))&ENET_GALR_GADDR2_MASK) +/* TFWR Bit Fields */ +#define ENET_TFWR_TFWR_MASK 0x3Fu +#define ENET_TFWR_TFWR_SHIFT 0 +#define ENET_TFWR_TFWR(x) (((uint32_t)(((uint32_t)(x))<<ENET_TFWR_TFWR_SHIFT))&ENET_TFWR_TFWR_MASK) +#define ENET_TFWR_STRFWD_MASK 0x100u +#define ENET_TFWR_STRFWD_SHIFT 8 +/* RDSR Bit Fields */ +#define ENET_RDSR_R_DES_START_MASK 0xFFFFFFF8u +#define ENET_RDSR_R_DES_START_SHIFT 3 +#define ENET_RDSR_R_DES_START(x) (((uint32_t)(((uint32_t)(x))<<ENET_RDSR_R_DES_START_SHIFT))&ENET_RDSR_R_DES_START_MASK) +/* TDSR Bit Fields */ +#define ENET_TDSR_X_DES_START_MASK 0xFFFFFFF8u +#define ENET_TDSR_X_DES_START_SHIFT 3 +#define ENET_TDSR_X_DES_START(x) (((uint32_t)(((uint32_t)(x))<<ENET_TDSR_X_DES_START_SHIFT))&ENET_TDSR_X_DES_START_MASK) +/* MRBR Bit Fields */ +#define ENET_MRBR_R_BUF_SIZE_MASK 0x3FF0u +#define ENET_MRBR_R_BUF_SIZE_SHIFT 4 +#define ENET_MRBR_R_BUF_SIZE(x) (((uint32_t)(((uint32_t)(x))<<ENET_MRBR_R_BUF_SIZE_SHIFT))&ENET_MRBR_R_BUF_SIZE_MASK) +/* RSFL Bit Fields */ +#define ENET_RSFL_RX_SECTION_FULL_MASK 0xFFu +#define ENET_RSFL_RX_SECTION_FULL_SHIFT 0 +#define ENET_RSFL_RX_SECTION_FULL(x) (((uint32_t)(((uint32_t)(x))<<ENET_RSFL_RX_SECTION_FULL_SHIFT))&ENET_RSFL_RX_SECTION_FULL_MASK) +/* RSEM Bit Fields */ +#define ENET_RSEM_RX_SECTION_EMPTY_MASK 0xFFu +#define ENET_RSEM_RX_SECTION_EMPTY_SHIFT 0 +#define ENET_RSEM_RX_SECTION_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_RSEM_RX_SECTION_EMPTY_SHIFT))&ENET_RSEM_RX_SECTION_EMPTY_MASK) +#define ENET_RSEM_STAT_SECTION_EMPTY_MASK 0x1F0000u +#define ENET_RSEM_STAT_SECTION_EMPTY_SHIFT 16 +#define ENET_RSEM_STAT_SECTION_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_RSEM_STAT_SECTION_EMPTY_SHIFT))&ENET_RSEM_STAT_SECTION_EMPTY_MASK) +/* RAEM Bit Fields */ +#define ENET_RAEM_RX_ALMOST_EMPTY_MASK 0xFFu +#define ENET_RAEM_RX_ALMOST_EMPTY_SHIFT 0 +#define ENET_RAEM_RX_ALMOST_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_RAEM_RX_ALMOST_EMPTY_SHIFT))&ENET_RAEM_RX_ALMOST_EMPTY_MASK) +/* RAFL Bit Fields */ +#define ENET_RAFL_RX_ALMOST_FULL_MASK 0xFFu +#define ENET_RAFL_RX_ALMOST_FULL_SHIFT 0 +#define ENET_RAFL_RX_ALMOST_FULL(x) (((uint32_t)(((uint32_t)(x))<<ENET_RAFL_RX_ALMOST_FULL_SHIFT))&ENET_RAFL_RX_ALMOST_FULL_MASK) +/* TSEM Bit Fields */ +#define ENET_TSEM_TX_SECTION_EMPTY_MASK 0xFFu +#define ENET_TSEM_TX_SECTION_EMPTY_SHIFT 0 +#define ENET_TSEM_TX_SECTION_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_TSEM_TX_SECTION_EMPTY_SHIFT))&ENET_TSEM_TX_SECTION_EMPTY_MASK) +/* TAEM Bit Fields */ +#define ENET_TAEM_TX_ALMOST_EMPTY_MASK 0xFFu +#define ENET_TAEM_TX_ALMOST_EMPTY_SHIFT 0 +#define ENET_TAEM_TX_ALMOST_EMPTY(x) (((uint32_t)(((uint32_t)(x))<<ENET_TAEM_TX_ALMOST_EMPTY_SHIFT))&ENET_TAEM_TX_ALMOST_EMPTY_MASK) +/* TAFL Bit Fields */ +#define ENET_TAFL_TX_ALMOST_FULL_MASK 0xFFu +#define ENET_TAFL_TX_ALMOST_FULL_SHIFT 0 +#define ENET_TAFL_TX_ALMOST_FULL(x) (((uint32_t)(((uint32_t)(x))<<ENET_TAFL_TX_ALMOST_FULL_SHIFT))&ENET_TAFL_TX_ALMOST_FULL_MASK) +/* TIPG Bit Fields */ +#define ENET_TIPG_IPG_MASK 0x1Fu +#define ENET_TIPG_IPG_SHIFT 0 +#define ENET_TIPG_IPG(x) (((uint32_t)(((uint32_t)(x))<<ENET_TIPG_IPG_SHIFT))&ENET_TIPG_IPG_MASK) +/* FTRL Bit Fields */ +#define ENET_FTRL_TRUNC_FL_MASK 0x3FFFu +#define ENET_FTRL_TRUNC_FL_SHIFT 0 +#define ENET_FTRL_TRUNC_FL(x) (((uint32_t)(((uint32_t)(x))<<ENET_FTRL_TRUNC_FL_SHIFT))&ENET_FTRL_TRUNC_FL_MASK) +/* TACC Bit Fields */ +#define ENET_TACC_SHIFT16_MASK 0x1u +#define ENET_TACC_SHIFT16_SHIFT 0 +#define ENET_TACC_IPCHK_MASK 0x8u +#define ENET_TACC_IPCHK_SHIFT 3 +#define ENET_TACC_PROCHK_MASK 0x10u +#define ENET_TACC_PROCHK_SHIFT 4 +/* RACC Bit Fields */ +#define ENET_RACC_PADREM_MASK 0x1u +#define ENET_RACC_PADREM_SHIFT 0 +#define ENET_RACC_IPDIS_MASK 0x2u +#define ENET_RACC_IPDIS_SHIFT 1 +#define ENET_RACC_PRODIS_MASK 0x4u +#define ENET_RACC_PRODIS_SHIFT 2 +#define ENET_RACC_LINEDIS_MASK 0x40u +#define ENET_RACC_LINEDIS_SHIFT 6 +#define ENET_RACC_SHIFT16_MASK 0x80u +#define ENET_RACC_SHIFT16_SHIFT 7 +/* RMON_T_PACKETS Bit Fields */ +#define ENET_RMON_T_PACKETS_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_PACKETS_TXPKTS_SHIFT 0 +#define ENET_RMON_T_PACKETS_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_PACKETS_TXPKTS_SHIFT))&ENET_RMON_T_PACKETS_TXPKTS_MASK) +/* RMON_T_BC_PKT Bit Fields */ +#define ENET_RMON_T_BC_PKT_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_BC_PKT_TXPKTS_SHIFT 0 +#define ENET_RMON_T_BC_PKT_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_BC_PKT_TXPKTS_SHIFT))&ENET_RMON_T_BC_PKT_TXPKTS_MASK) +/* RMON_T_MC_PKT Bit Fields */ +#define ENET_RMON_T_MC_PKT_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_MC_PKT_TXPKTS_SHIFT 0 +#define ENET_RMON_T_MC_PKT_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_MC_PKT_TXPKTS_SHIFT))&ENET_RMON_T_MC_PKT_TXPKTS_MASK) +/* RMON_T_CRC_ALIGN Bit Fields */ +#define ENET_RMON_T_CRC_ALIGN_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_CRC_ALIGN_TXPKTS_SHIFT 0 +#define ENET_RMON_T_CRC_ALIGN_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_CRC_ALIGN_TXPKTS_SHIFT))&ENET_RMON_T_CRC_ALIGN_TXPKTS_MASK) +/* RMON_T_UNDERSIZE Bit Fields */ +#define ENET_RMON_T_UNDERSIZE_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_UNDERSIZE_TXPKTS_SHIFT 0 +#define ENET_RMON_T_UNDERSIZE_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_UNDERSIZE_TXPKTS_SHIFT))&ENET_RMON_T_UNDERSIZE_TXPKTS_MASK) +/* RMON_T_OVERSIZE Bit Fields */ +#define ENET_RMON_T_OVERSIZE_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_OVERSIZE_TXPKTS_SHIFT 0 +#define ENET_RMON_T_OVERSIZE_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_OVERSIZE_TXPKTS_SHIFT))&ENET_RMON_T_OVERSIZE_TXPKTS_MASK) +/* RMON_T_FRAG Bit Fields */ +#define ENET_RMON_T_FRAG_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_FRAG_TXPKTS_SHIFT 0 +#define ENET_RMON_T_FRAG_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_FRAG_TXPKTS_SHIFT))&ENET_RMON_T_FRAG_TXPKTS_MASK) +/* RMON_T_JAB Bit Fields */ +#define ENET_RMON_T_JAB_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_JAB_TXPKTS_SHIFT 0 +#define ENET_RMON_T_JAB_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_JAB_TXPKTS_SHIFT))&ENET_RMON_T_JAB_TXPKTS_MASK) +/* RMON_T_COL Bit Fields */ +#define ENET_RMON_T_COL_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_COL_TXPKTS_SHIFT 0 +#define ENET_RMON_T_COL_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_COL_TXPKTS_SHIFT))&ENET_RMON_T_COL_TXPKTS_MASK) +/* RMON_T_P64 Bit Fields */ +#define ENET_RMON_T_P64_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_P64_TXPKTS_SHIFT 0 +#define ENET_RMON_T_P64_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_P64_TXPKTS_SHIFT))&ENET_RMON_T_P64_TXPKTS_MASK) +/* RMON_T_P65TO127 Bit Fields */ +#define ENET_RMON_T_P65TO127_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_P65TO127_TXPKTS_SHIFT 0 +#define ENET_RMON_T_P65TO127_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_P65TO127_TXPKTS_SHIFT))&ENET_RMON_T_P65TO127_TXPKTS_MASK) +/* RMON_T_P128TO255 Bit Fields */ +#define ENET_RMON_T_P128TO255_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_P128TO255_TXPKTS_SHIFT 0 +#define ENET_RMON_T_P128TO255_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_P128TO255_TXPKTS_SHIFT))&ENET_RMON_T_P128TO255_TXPKTS_MASK) +/* RMON_T_P256TO511 Bit Fields */ +#define ENET_RMON_T_P256TO511_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_P256TO511_TXPKTS_SHIFT 0 +#define ENET_RMON_T_P256TO511_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_P256TO511_TXPKTS_SHIFT))&ENET_RMON_T_P256TO511_TXPKTS_MASK) +/* RMON_T_P512TO1023 Bit Fields */ +#define ENET_RMON_T_P512TO1023_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_P512TO1023_TXPKTS_SHIFT 0 +#define ENET_RMON_T_P512TO1023_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_P512TO1023_TXPKTS_SHIFT))&ENET_RMON_T_P512TO1023_TXPKTS_MASK) +/* RMON_T_P1024TO2047 Bit Fields */ +#define ENET_RMON_T_P1024TO2047_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_P1024TO2047_TXPKTS_SHIFT 0 +#define ENET_RMON_T_P1024TO2047_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_P1024TO2047_TXPKTS_SHIFT))&ENET_RMON_T_P1024TO2047_TXPKTS_MASK) +/* RMON_T_P_GTE2048 Bit Fields */ +#define ENET_RMON_T_P_GTE2048_TXPKTS_MASK 0xFFFFu +#define ENET_RMON_T_P_GTE2048_TXPKTS_SHIFT 0 +#define ENET_RMON_T_P_GTE2048_TXPKTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_P_GTE2048_TXPKTS_SHIFT))&ENET_RMON_T_P_GTE2048_TXPKTS_MASK) +/* RMON_T_OCTETS Bit Fields */ +#define ENET_RMON_T_OCTETS_TXOCTS_MASK 0xFFFFFFFFu +#define ENET_RMON_T_OCTETS_TXOCTS_SHIFT 0 +#define ENET_RMON_T_OCTETS_TXOCTS(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_T_OCTETS_TXOCTS_SHIFT))&ENET_RMON_T_OCTETS_TXOCTS_MASK) +/* IEEE_T_FRAME_OK Bit Fields */ +#define ENET_IEEE_T_FRAME_OK_COUNT_MASK 0xFFFFu +#define ENET_IEEE_T_FRAME_OK_COUNT_SHIFT 0 +#define ENET_IEEE_T_FRAME_OK_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_FRAME_OK_COUNT_SHIFT))&ENET_IEEE_T_FRAME_OK_COUNT_MASK) +/* IEEE_T_1COL Bit Fields */ +#define ENET_IEEE_T_1COL_COUNT_MASK 0xFFFFu +#define ENET_IEEE_T_1COL_COUNT_SHIFT 0 +#define ENET_IEEE_T_1COL_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_1COL_COUNT_SHIFT))&ENET_IEEE_T_1COL_COUNT_MASK) +/* IEEE_T_MCOL Bit Fields */ +#define ENET_IEEE_T_MCOL_COUNT_MASK 0xFFFFu +#define ENET_IEEE_T_MCOL_COUNT_SHIFT 0 +#define ENET_IEEE_T_MCOL_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_MCOL_COUNT_SHIFT))&ENET_IEEE_T_MCOL_COUNT_MASK) +/* IEEE_T_DEF Bit Fields */ +#define ENET_IEEE_T_DEF_COUNT_MASK 0xFFFFu +#define ENET_IEEE_T_DEF_COUNT_SHIFT 0 +#define ENET_IEEE_T_DEF_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_DEF_COUNT_SHIFT))&ENET_IEEE_T_DEF_COUNT_MASK) +/* IEEE_T_LCOL Bit Fields */ +#define ENET_IEEE_T_LCOL_COUNT_MASK 0xFFFFu +#define ENET_IEEE_T_LCOL_COUNT_SHIFT 0 +#define ENET_IEEE_T_LCOL_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_LCOL_COUNT_SHIFT))&ENET_IEEE_T_LCOL_COUNT_MASK) +/* IEEE_T_EXCOL Bit Fields */ +#define ENET_IEEE_T_EXCOL_COUNT_MASK 0xFFFFu +#define ENET_IEEE_T_EXCOL_COUNT_SHIFT 0 +#define ENET_IEEE_T_EXCOL_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_EXCOL_COUNT_SHIFT))&ENET_IEEE_T_EXCOL_COUNT_MASK) +/* IEEE_T_MACERR Bit Fields */ +#define ENET_IEEE_T_MACERR_COUNT_MASK 0xFFFFu +#define ENET_IEEE_T_MACERR_COUNT_SHIFT 0 +#define ENET_IEEE_T_MACERR_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_MACERR_COUNT_SHIFT))&ENET_IEEE_T_MACERR_COUNT_MASK) +/* IEEE_T_CSERR Bit Fields */ +#define ENET_IEEE_T_CSERR_COUNT_MASK 0xFFFFu +#define ENET_IEEE_T_CSERR_COUNT_SHIFT 0 +#define ENET_IEEE_T_CSERR_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_CSERR_COUNT_SHIFT))&ENET_IEEE_T_CSERR_COUNT_MASK) +/* IEEE_T_FDXFC Bit Fields */ +#define ENET_IEEE_T_FDXFC_COUNT_MASK 0xFFFFu +#define ENET_IEEE_T_FDXFC_COUNT_SHIFT 0 +#define ENET_IEEE_T_FDXFC_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_FDXFC_COUNT_SHIFT))&ENET_IEEE_T_FDXFC_COUNT_MASK) +/* IEEE_T_OCTETS_OK Bit Fields */ +#define ENET_IEEE_T_OCTETS_OK_COUNT_MASK 0xFFFFFFFFu +#define ENET_IEEE_T_OCTETS_OK_COUNT_SHIFT 0 +#define ENET_IEEE_T_OCTETS_OK_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_T_OCTETS_OK_COUNT_SHIFT))&ENET_IEEE_T_OCTETS_OK_COUNT_MASK) +/* RMON_R_PACKETS Bit Fields */ +#define ENET_RMON_R_PACKETS_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_PACKETS_COUNT_SHIFT 0 +#define ENET_RMON_R_PACKETS_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_PACKETS_COUNT_SHIFT))&ENET_RMON_R_PACKETS_COUNT_MASK) +/* RMON_R_BC_PKT Bit Fields */ +#define ENET_RMON_R_BC_PKT_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_BC_PKT_COUNT_SHIFT 0 +#define ENET_RMON_R_BC_PKT_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_BC_PKT_COUNT_SHIFT))&ENET_RMON_R_BC_PKT_COUNT_MASK) +/* RMON_R_MC_PKT Bit Fields */ +#define ENET_RMON_R_MC_PKT_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_MC_PKT_COUNT_SHIFT 0 +#define ENET_RMON_R_MC_PKT_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_MC_PKT_COUNT_SHIFT))&ENET_RMON_R_MC_PKT_COUNT_MASK) +/* RMON_R_CRC_ALIGN Bit Fields */ +#define ENET_RMON_R_CRC_ALIGN_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_CRC_ALIGN_COUNT_SHIFT 0 +#define ENET_RMON_R_CRC_ALIGN_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_CRC_ALIGN_COUNT_SHIFT))&ENET_RMON_R_CRC_ALIGN_COUNT_MASK) +/* RMON_R_UNDERSIZE Bit Fields */ +#define ENET_RMON_R_UNDERSIZE_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_UNDERSIZE_COUNT_SHIFT 0 +#define ENET_RMON_R_UNDERSIZE_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_UNDERSIZE_COUNT_SHIFT))&ENET_RMON_R_UNDERSIZE_COUNT_MASK) +/* RMON_R_OVERSIZE Bit Fields */ +#define ENET_RMON_R_OVERSIZE_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_OVERSIZE_COUNT_SHIFT 0 +#define ENET_RMON_R_OVERSIZE_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_OVERSIZE_COUNT_SHIFT))&ENET_RMON_R_OVERSIZE_COUNT_MASK) +/* RMON_R_FRAG Bit Fields */ +#define ENET_RMON_R_FRAG_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_FRAG_COUNT_SHIFT 0 +#define ENET_RMON_R_FRAG_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_FRAG_COUNT_SHIFT))&ENET_RMON_R_FRAG_COUNT_MASK) +/* RMON_R_JAB Bit Fields */ +#define ENET_RMON_R_JAB_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_JAB_COUNT_SHIFT 0 +#define ENET_RMON_R_JAB_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_JAB_COUNT_SHIFT))&ENET_RMON_R_JAB_COUNT_MASK) +/* RMON_R_P64 Bit Fields */ +#define ENET_RMON_R_P64_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_P64_COUNT_SHIFT 0 +#define ENET_RMON_R_P64_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_P64_COUNT_SHIFT))&ENET_RMON_R_P64_COUNT_MASK) +/* RMON_R_P65TO127 Bit Fields */ +#define ENET_RMON_R_P65TO127_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_P65TO127_COUNT_SHIFT 0 +#define ENET_RMON_R_P65TO127_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_P65TO127_COUNT_SHIFT))&ENET_RMON_R_P65TO127_COUNT_MASK) +/* RMON_R_P128TO255 Bit Fields */ +#define ENET_RMON_R_P128TO255_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_P128TO255_COUNT_SHIFT 0 +#define ENET_RMON_R_P128TO255_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_P128TO255_COUNT_SHIFT))&ENET_RMON_R_P128TO255_COUNT_MASK) +/* RMON_R_P256TO511 Bit Fields */ +#define ENET_RMON_R_P256TO511_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_P256TO511_COUNT_SHIFT 0 +#define ENET_RMON_R_P256TO511_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_P256TO511_COUNT_SHIFT))&ENET_RMON_R_P256TO511_COUNT_MASK) +/* RMON_R_P512TO1023 Bit Fields */ +#define ENET_RMON_R_P512TO1023_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_P512TO1023_COUNT_SHIFT 0 +#define ENET_RMON_R_P512TO1023_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_P512TO1023_COUNT_SHIFT))&ENET_RMON_R_P512TO1023_COUNT_MASK) +/* RMON_R_P1024TO2047 Bit Fields */ +#define ENET_RMON_R_P1024TO2047_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_P1024TO2047_COUNT_SHIFT 0 +#define ENET_RMON_R_P1024TO2047_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_P1024TO2047_COUNT_SHIFT))&ENET_RMON_R_P1024TO2047_COUNT_MASK) +/* RMON_R_GTE2048 Bit Fields */ +#define ENET_RMON_R_GTE2048_COUNT_MASK 0xFFFFu +#define ENET_RMON_R_GTE2048_COUNT_SHIFT 0 +#define ENET_RMON_R_GTE2048_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_GTE2048_COUNT_SHIFT))&ENET_RMON_R_GTE2048_COUNT_MASK) +/* RMON_R_OCTETS Bit Fields */ +#define ENET_RMON_R_OCTETS_COUNT_MASK 0xFFFFFFFFu +#define ENET_RMON_R_OCTETS_COUNT_SHIFT 0 +#define ENET_RMON_R_OCTETS_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_RMON_R_OCTETS_COUNT_SHIFT))&ENET_RMON_R_OCTETS_COUNT_MASK) +/* IEEE_R_DROP Bit Fields */ +#define ENET_IEEE_R_DROP_COUNT_MASK 0xFFFFu +#define ENET_IEEE_R_DROP_COUNT_SHIFT 0 +#define ENET_IEEE_R_DROP_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_R_DROP_COUNT_SHIFT))&ENET_IEEE_R_DROP_COUNT_MASK) +/* IEEE_R_FRAME_OK Bit Fields */ +#define ENET_IEEE_R_FRAME_OK_COUNT_MASK 0xFFFFu +#define ENET_IEEE_R_FRAME_OK_COUNT_SHIFT 0 +#define ENET_IEEE_R_FRAME_OK_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_R_FRAME_OK_COUNT_SHIFT))&ENET_IEEE_R_FRAME_OK_COUNT_MASK) +/* IEEE_R_CRC Bit Fields */ +#define ENET_IEEE_R_CRC_COUNT_MASK 0xFFFFu +#define ENET_IEEE_R_CRC_COUNT_SHIFT 0 +#define ENET_IEEE_R_CRC_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_R_CRC_COUNT_SHIFT))&ENET_IEEE_R_CRC_COUNT_MASK) +/* IEEE_R_ALIGN Bit Fields */ +#define ENET_IEEE_R_ALIGN_COUNT_MASK 0xFFFFu +#define ENET_IEEE_R_ALIGN_COUNT_SHIFT 0 +#define ENET_IEEE_R_ALIGN_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_R_ALIGN_COUNT_SHIFT))&ENET_IEEE_R_ALIGN_COUNT_MASK) +/* IEEE_R_MACERR Bit Fields */ +#define ENET_IEEE_R_MACERR_COUNT_MASK 0xFFFFu +#define ENET_IEEE_R_MACERR_COUNT_SHIFT 0 +#define ENET_IEEE_R_MACERR_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_R_MACERR_COUNT_SHIFT))&ENET_IEEE_R_MACERR_COUNT_MASK) +/* IEEE_R_FDXFC Bit Fields */ +#define ENET_IEEE_R_FDXFC_COUNT_MASK 0xFFFFu +#define ENET_IEEE_R_FDXFC_COUNT_SHIFT 0 +#define ENET_IEEE_R_FDXFC_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_R_FDXFC_COUNT_SHIFT))&ENET_IEEE_R_FDXFC_COUNT_MASK) +/* IEEE_R_OCTETS_OK Bit Fields */ +#define ENET_IEEE_R_OCTETS_OK_COUNT_MASK 0xFFFFFFFFu +#define ENET_IEEE_R_OCTETS_OK_COUNT_SHIFT 0 +#define ENET_IEEE_R_OCTETS_OK_COUNT(x) (((uint32_t)(((uint32_t)(x))<<ENET_IEEE_R_OCTETS_OK_COUNT_SHIFT))&ENET_IEEE_R_OCTETS_OK_COUNT_MASK) +/* ATCR Bit Fields */ +#define ENET_ATCR_EN_MASK 0x1u +#define ENET_ATCR_EN_SHIFT 0 +#define ENET_ATCR_OFFEN_MASK 0x4u +#define ENET_ATCR_OFFEN_SHIFT 2 +#define ENET_ATCR_OFFRST_MASK 0x8u +#define ENET_ATCR_OFFRST_SHIFT 3 +#define ENET_ATCR_PEREN_MASK 0x10u +#define ENET_ATCR_PEREN_SHIFT 4 +#define ENET_ATCR_PINPER_MASK 0x80u +#define ENET_ATCR_PINPER_SHIFT 7 +#define ENET_ATCR_RESTART_MASK 0x200u +#define ENET_ATCR_RESTART_SHIFT 9 +#define ENET_ATCR_CAPTURE_MASK 0x800u +#define ENET_ATCR_CAPTURE_SHIFT 11 +#define ENET_ATCR_SLAVE_MASK 0x2000u +#define ENET_ATCR_SLAVE_SHIFT 13 +/* ATVR Bit Fields */ +#define ENET_ATVR_ATIME_MASK 0xFFFFFFFFu +#define ENET_ATVR_ATIME_SHIFT 0 +#define ENET_ATVR_ATIME(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATVR_ATIME_SHIFT))&ENET_ATVR_ATIME_MASK) +/* ATOFF Bit Fields */ +#define ENET_ATOFF_OFFSET_MASK 0xFFFFFFFFu +#define ENET_ATOFF_OFFSET_SHIFT 0 +#define ENET_ATOFF_OFFSET(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATOFF_OFFSET_SHIFT))&ENET_ATOFF_OFFSET_MASK) +/* ATPER Bit Fields */ +#define ENET_ATPER_PERIOD_MASK 0xFFFFFFFFu +#define ENET_ATPER_PERIOD_SHIFT 0 +#define ENET_ATPER_PERIOD(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATPER_PERIOD_SHIFT))&ENET_ATPER_PERIOD_MASK) +/* ATCOR Bit Fields */ +#define ENET_ATCOR_COR_MASK 0x7FFFFFFFu +#define ENET_ATCOR_COR_SHIFT 0 +#define ENET_ATCOR_COR(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATCOR_COR_SHIFT))&ENET_ATCOR_COR_MASK) +/* ATINC Bit Fields */ +#define ENET_ATINC_INC_MASK 0x7Fu +#define ENET_ATINC_INC_SHIFT 0 +#define ENET_ATINC_INC(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATINC_INC_SHIFT))&ENET_ATINC_INC_MASK) +#define ENET_ATINC_INC_CORR_MASK 0x7F00u +#define ENET_ATINC_INC_CORR_SHIFT 8 +#define ENET_ATINC_INC_CORR(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATINC_INC_CORR_SHIFT))&ENET_ATINC_INC_CORR_MASK) +/* ATSTMP Bit Fields */ +#define ENET_ATSTMP_TIMESTAMP_MASK 0xFFFFFFFFu +#define ENET_ATSTMP_TIMESTAMP_SHIFT 0 +#define ENET_ATSTMP_TIMESTAMP(x) (((uint32_t)(((uint32_t)(x))<<ENET_ATSTMP_TIMESTAMP_SHIFT))&ENET_ATSTMP_TIMESTAMP_MASK) +/* TGSR Bit Fields */ +#define ENET_TGSR_TF0_MASK 0x1u +#define ENET_TGSR_TF0_SHIFT 0 +#define ENET_TGSR_TF1_MASK 0x2u +#define ENET_TGSR_TF1_SHIFT 1 +#define ENET_TGSR_TF2_MASK 0x4u +#define ENET_TGSR_TF2_SHIFT 2 +#define ENET_TGSR_TF3_MASK 0x8u +#define ENET_TGSR_TF3_SHIFT 3 +/* TCSR Bit Fields */ +#define ENET_TCSR_TDRE_MASK 0x1u +#define ENET_TCSR_TDRE_SHIFT 0 +#define ENET_TCSR_TMODE_MASK 0x3Cu +#define ENET_TCSR_TMODE_SHIFT 2 +#define ENET_TCSR_TMODE(x) (((uint32_t)(((uint32_t)(x))<<ENET_TCSR_TMODE_SHIFT))&ENET_TCSR_TMODE_MASK) +#define ENET_TCSR_TIE_MASK 0x40u +#define ENET_TCSR_TIE_SHIFT 6 +#define ENET_TCSR_TF_MASK 0x80u +#define ENET_TCSR_TF_SHIFT 7 +/* TCCR Bit Fields */ +#define ENET_TCCR_TCC_MASK 0xFFFFFFFFu +#define ENET_TCCR_TCC_SHIFT 0 +#define ENET_TCCR_TCC(x) (((uint32_t)(((uint32_t)(x))<<ENET_TCCR_TCC_SHIFT))&ENET_TCCR_TCC_MASK) + +/*! + * @} + */ /* end of group ENET_Register_Masks */ + + +/* ENET - Peripheral instance base addresses */ +/** Peripheral ENET base address */ +#define ENET_BASE (0x400C0000u) +/** Peripheral ENET base pointer */ +#define ENET ((ENET_Type *)ENET_BASE) +#define ENET_BASE_PTR (ENET) +/** Array initializer of ENET peripheral base pointers */ +#define ENET_BASES { ENET } + +/* ---------------------------------------------------------------------------- + -- ENET - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup ENET_Register_Accessor_Macros ENET - Register accessor macros + * @{ + */ + + +/* ENET - Register instance definitions */ +/* ENET */ +#define ENET_EIR ENET_EIR_REG(ENET) +#define ENET_EIMR ENET_EIMR_REG(ENET) +#define ENET_RDAR ENET_RDAR_REG(ENET) +#define ENET_TDAR ENET_TDAR_REG(ENET) +#define ENET_ECR ENET_ECR_REG(ENET) +#define ENET_MMFR ENET_MMFR_REG(ENET) +#define ENET_MSCR ENET_MSCR_REG(ENET) +#define ENET_MIBC ENET_MIBC_REG(ENET) +#define ENET_RCR ENET_RCR_REG(ENET) +#define ENET_TCR ENET_TCR_REG(ENET) +#define ENET_PALR ENET_PALR_REG(ENET) +#define ENET_PAUR ENET_PAUR_REG(ENET) +#define ENET_OPD ENET_OPD_REG(ENET) +#define ENET_IAUR ENET_IAUR_REG(ENET) +#define ENET_IALR ENET_IALR_REG(ENET) +#define ENET_GAUR ENET_GAUR_REG(ENET) +#define ENET_GALR ENET_GALR_REG(ENET) +#define ENET_TFWR ENET_TFWR_REG(ENET) +#define ENET_RDSR ENET_RDSR_REG(ENET) +#define ENET_TDSR ENET_TDSR_REG(ENET) +#define ENET_MRBR ENET_MRBR_REG(ENET) +#define ENET_RSFL ENET_RSFL_REG(ENET) +#define ENET_RSEM ENET_RSEM_REG(ENET) +#define ENET_RAEM ENET_RAEM_REG(ENET) +#define ENET_RAFL ENET_RAFL_REG(ENET) +#define ENET_TSEM ENET_TSEM_REG(ENET) +#define ENET_TAEM ENET_TAEM_REG(ENET) +#define ENET_TAFL ENET_TAFL_REG(ENET) +#define ENET_TIPG ENET_TIPG_REG(ENET) +#define ENET_FTRL ENET_FTRL_REG(ENET) +#define ENET_TACC ENET_TACC_REG(ENET) +#define ENET_RACC ENET_RACC_REG(ENET) +#define ENET_RMON_T_PACKETS ENET_RMON_T_PACKETS_REG(ENET) +#define ENET_RMON_T_BC_PKT ENET_RMON_T_BC_PKT_REG(ENET) +#define ENET_RMON_T_MC_PKT ENET_RMON_T_MC_PKT_REG(ENET) +#define ENET_RMON_T_CRC_ALIGN ENET_RMON_T_CRC_ALIGN_REG(ENET) +#define ENET_RMON_T_UNDERSIZE ENET_RMON_T_UNDERSIZE_REG(ENET) +#define ENET_RMON_T_OVERSIZE ENET_RMON_T_OVERSIZE_REG(ENET) +#define ENET_RMON_T_FRAG ENET_RMON_T_FRAG_REG(ENET) +#define ENET_RMON_T_JAB ENET_RMON_T_JAB_REG(ENET) +#define ENET_RMON_T_COL ENET_RMON_T_COL_REG(ENET) +#define ENET_RMON_T_P64 ENET_RMON_T_P64_REG(ENET) +#define ENET_RMON_T_P65TO127 ENET_RMON_T_P65TO127_REG(ENET) +#define ENET_RMON_T_P128TO255 ENET_RMON_T_P128TO255_REG(ENET) +#define ENET_RMON_T_P256TO511 ENET_RMON_T_P256TO511_REG(ENET) +#define ENET_RMON_T_P512TO1023 ENET_RMON_T_P512TO1023_REG(ENET) +#define ENET_RMON_T_P1024TO2047 ENET_RMON_T_P1024TO2047_REG(ENET) +#define ENET_RMON_T_P_GTE2048 ENET_RMON_T_P_GTE2048_REG(ENET) +#define ENET_RMON_T_OCTETS ENET_RMON_T_OCTETS_REG(ENET) +#define ENET_IEEE_T_FRAME_OK ENET_IEEE_T_FRAME_OK_REG(ENET) +#define ENET_IEEE_T_1COL ENET_IEEE_T_1COL_REG(ENET) +#define ENET_IEEE_T_MCOL ENET_IEEE_T_MCOL_REG(ENET) +#define ENET_IEEE_T_DEF ENET_IEEE_T_DEF_REG(ENET) +#define ENET_IEEE_T_LCOL ENET_IEEE_T_LCOL_REG(ENET) +#define ENET_IEEE_T_EXCOL ENET_IEEE_T_EXCOL_REG(ENET) +#define ENET_IEEE_T_MACERR ENET_IEEE_T_MACERR_REG(ENET) +#define ENET_IEEE_T_CSERR ENET_IEEE_T_CSERR_REG(ENET) +#define ENET_IEEE_T_FDXFC ENET_IEEE_T_FDXFC_REG(ENET) +#define ENET_IEEE_T_OCTETS_OK ENET_IEEE_T_OCTETS_OK_REG(ENET) +#define ENET_RMON_R_PACKETS ENET_RMON_R_PACKETS_REG(ENET) +#define ENET_RMON_R_BC_PKT ENET_RMON_R_BC_PKT_REG(ENET) +#define ENET_RMON_R_MC_PKT ENET_RMON_R_MC_PKT_REG(ENET) +#define ENET_RMON_R_CRC_ALIGN ENET_RMON_R_CRC_ALIGN_REG(ENET) +#define ENET_RMON_R_UNDERSIZE ENET_RMON_R_UNDERSIZE_REG(ENET) +#define ENET_RMON_R_OVERSIZE ENET_RMON_R_OVERSIZE_REG(ENET) +#define ENET_RMON_R_FRAG ENET_RMON_R_FRAG_REG(ENET) +#define ENET_RMON_R_JAB ENET_RMON_R_JAB_REG(ENET) +#define ENET_RMON_R_P64 ENET_RMON_R_P64_REG(ENET) +#define ENET_RMON_R_P65TO127 ENET_RMON_R_P65TO127_REG(ENET) +#define ENET_RMON_R_P128TO255 ENET_RMON_R_P128TO255_REG(ENET) +#define ENET_RMON_R_P256TO511 ENET_RMON_R_P256TO511_REG(ENET) +#define ENET_RMON_R_P512TO1023 ENET_RMON_R_P512TO1023_REG(ENET) +#define ENET_RMON_R_P1024TO2047 ENET_RMON_R_P1024TO2047_REG(ENET) +#define ENET_RMON_R_GTE2048 ENET_RMON_R_GTE2048_REG(ENET) +#define ENET_RMON_R_OCTETS ENET_RMON_R_OCTETS_REG(ENET) +#define ENET_IEEE_R_DROP ENET_IEEE_R_DROP_REG(ENET) +#define ENET_IEEE_R_FRAME_OK ENET_IEEE_R_FRAME_OK_REG(ENET) +#define ENET_IEEE_R_CRC ENET_IEEE_R_CRC_REG(ENET) +#define ENET_IEEE_R_ALIGN ENET_IEEE_R_ALIGN_REG(ENET) +#define ENET_IEEE_R_MACERR ENET_IEEE_R_MACERR_REG(ENET) +#define ENET_IEEE_R_FDXFC ENET_IEEE_R_FDXFC_REG(ENET) +#define ENET_IEEE_R_OCTETS_OK ENET_IEEE_R_OCTETS_OK_REG(ENET) +#define ENET_ATCR ENET_ATCR_REG(ENET) +#define ENET_ATVR ENET_ATVR_REG(ENET) +#define ENET_ATOFF ENET_ATOFF_REG(ENET) +#define ENET_ATPER ENET_ATPER_REG(ENET) +#define ENET_ATCOR ENET_ATCOR_REG(ENET) +#define ENET_ATINC ENET_ATINC_REG(ENET) +#define ENET_ATSTMP ENET_ATSTMP_REG(ENET) +#define ENET_TGSR ENET_TGSR_REG(ENET) +#define ENET_TCSR0 ENET_TCSR_REG(ENET,0) +#define ENET_TCCR0 ENET_TCCR_REG(ENET,0) +#define ENET_TCSR1 ENET_TCSR_REG(ENET,1) +#define ENET_TCCR1 ENET_TCCR_REG(ENET,1) +#define ENET_TCSR2 ENET_TCSR_REG(ENET,2) +#define ENET_TCCR2 ENET_TCCR_REG(ENET,2) +#define ENET_TCSR3 ENET_TCSR_REG(ENET,3) +#define ENET_TCCR3 ENET_TCCR_REG(ENET,3) + +/* ENET - Register array accessors */ +#define ENET_TCSR(index) ENET_TCSR_REG(ENET,index) +#define ENET_TCCR(index) ENET_TCCR_REG(ENET,index) + +/*! + * @} + */ /* end of group ENET_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group ENET_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- EWM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup EWM_Peripheral_Access_Layer EWM Peripheral Access Layer + * @{ + */ + +/** EWM - Register Layout Typedef */ +typedef struct { + __IO uint8_t CTRL; /**< Control Register, offset: 0x0 */ + __O uint8_t SERV; /**< Service Register, offset: 0x1 */ + __IO uint8_t CMPL; /**< Compare Low Register, offset: 0x2 */ + __IO uint8_t CMPH; /**< Compare High Register, offset: 0x3 */ +} EWM_Type, *EWM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- EWM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup EWM_Register_Accessor_Macros EWM - Register accessor macros + * @{ + */ + + +/* EWM - Register accessors */ +#define EWM_CTRL_REG(base) ((base)->CTRL) +#define EWM_SERV_REG(base) ((base)->SERV) +#define EWM_CMPL_REG(base) ((base)->CMPL) +#define EWM_CMPH_REG(base) ((base)->CMPH) + +/*! + * @} + */ /* end of group EWM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- EWM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup EWM_Register_Masks EWM Register Masks + * @{ + */ + +/* CTRL Bit Fields */ +#define EWM_CTRL_EWMEN_MASK 0x1u +#define EWM_CTRL_EWMEN_SHIFT 0 +#define EWM_CTRL_ASSIN_MASK 0x2u +#define EWM_CTRL_ASSIN_SHIFT 1 +#define EWM_CTRL_INEN_MASK 0x4u +#define EWM_CTRL_INEN_SHIFT 2 +#define EWM_CTRL_INTEN_MASK 0x8u +#define EWM_CTRL_INTEN_SHIFT 3 +/* SERV Bit Fields */ +#define EWM_SERV_SERVICE_MASK 0xFFu +#define EWM_SERV_SERVICE_SHIFT 0 +#define EWM_SERV_SERVICE(x) (((uint8_t)(((uint8_t)(x))<<EWM_SERV_SERVICE_SHIFT))&EWM_SERV_SERVICE_MASK) +/* CMPL Bit Fields */ +#define EWM_CMPL_COMPAREL_MASK 0xFFu +#define EWM_CMPL_COMPAREL_SHIFT 0 +#define EWM_CMPL_COMPAREL(x) (((uint8_t)(((uint8_t)(x))<<EWM_CMPL_COMPAREL_SHIFT))&EWM_CMPL_COMPAREL_MASK) +/* CMPH Bit Fields */ +#define EWM_CMPH_COMPAREH_MASK 0xFFu +#define EWM_CMPH_COMPAREH_SHIFT 0 +#define EWM_CMPH_COMPAREH(x) (((uint8_t)(((uint8_t)(x))<<EWM_CMPH_COMPAREH_SHIFT))&EWM_CMPH_COMPAREH_MASK) + +/*! + * @} + */ /* end of group EWM_Register_Masks */ + + +/* EWM - Peripheral instance base addresses */ +/** Peripheral EWM base address */ +#define EWM_BASE (0x40061000u) +/** Peripheral EWM base pointer */ +#define EWM ((EWM_Type *)EWM_BASE) +#define EWM_BASE_PTR (EWM) +/** Array initializer of EWM peripheral base pointers */ +#define EWM_BASES { EWM } + +/* ---------------------------------------------------------------------------- + -- EWM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup EWM_Register_Accessor_Macros EWM - Register accessor macros + * @{ + */ + + +/* EWM - Register instance definitions */ +/* EWM */ +#define EWM_CTRL EWM_CTRL_REG(EWM) +#define EWM_SERV EWM_SERV_REG(EWM) +#define EWM_CMPL EWM_CMPL_REG(EWM) +#define EWM_CMPH EWM_CMPH_REG(EWM) + +/*! + * @} + */ /* end of group EWM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group EWM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- FB Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FB_Peripheral_Access_Layer FB Peripheral Access Layer + * @{ + */ + +/** FB - Register Layout Typedef */ +typedef struct { + struct { /* offset: 0x0, array step: 0xC */ + __IO uint32_t CSAR; /**< Chip Select Address Register, array offset: 0x0, array step: 0xC */ + __IO uint32_t CSMR; /**< Chip Select Mask Register, array offset: 0x4, array step: 0xC */ + __IO uint32_t CSCR; /**< Chip Select Control Register, array offset: 0x8, array step: 0xC */ + } CS[6]; + uint8_t RESERVED_0[24]; + __IO uint32_t CSPMCR; /**< Chip Select port Multiplexing Control Register, offset: 0x60 */ +} FB_Type, *FB_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- FB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FB_Register_Accessor_Macros FB - Register accessor macros + * @{ + */ + + +/* FB - Register accessors */ +#define FB_CSAR_REG(base,index) ((base)->CS[index].CSAR) +#define FB_CSMR_REG(base,index) ((base)->CS[index].CSMR) +#define FB_CSCR_REG(base,index) ((base)->CS[index].CSCR) +#define FB_CSPMCR_REG(base) ((base)->CSPMCR) + +/*! + * @} + */ /* end of group FB_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- FB Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FB_Register_Masks FB Register Masks + * @{ + */ + +/* CSAR Bit Fields */ +#define FB_CSAR_BA_MASK 0xFFFF0000u +#define FB_CSAR_BA_SHIFT 16 +#define FB_CSAR_BA(x) (((uint32_t)(((uint32_t)(x))<<FB_CSAR_BA_SHIFT))&FB_CSAR_BA_MASK) +/* CSMR Bit Fields */ +#define FB_CSMR_V_MASK 0x1u +#define FB_CSMR_V_SHIFT 0 +#define FB_CSMR_WP_MASK 0x100u +#define FB_CSMR_WP_SHIFT 8 +#define FB_CSMR_BAM_MASK 0xFFFF0000u +#define FB_CSMR_BAM_SHIFT 16 +#define FB_CSMR_BAM(x) (((uint32_t)(((uint32_t)(x))<<FB_CSMR_BAM_SHIFT))&FB_CSMR_BAM_MASK) +/* CSCR Bit Fields */ +#define FB_CSCR_BSTW_MASK 0x8u +#define FB_CSCR_BSTW_SHIFT 3 +#define FB_CSCR_BSTR_MASK 0x10u +#define FB_CSCR_BSTR_SHIFT 4 +#define FB_CSCR_BEM_MASK 0x20u +#define FB_CSCR_BEM_SHIFT 5 +#define FB_CSCR_PS_MASK 0xC0u +#define FB_CSCR_PS_SHIFT 6 +#define FB_CSCR_PS(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_PS_SHIFT))&FB_CSCR_PS_MASK) +#define FB_CSCR_AA_MASK 0x100u +#define FB_CSCR_AA_SHIFT 8 +#define FB_CSCR_BLS_MASK 0x200u +#define FB_CSCR_BLS_SHIFT 9 +#define FB_CSCR_WS_MASK 0xFC00u +#define FB_CSCR_WS_SHIFT 10 +#define FB_CSCR_WS(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_WS_SHIFT))&FB_CSCR_WS_MASK) +#define FB_CSCR_WRAH_MASK 0x30000u +#define FB_CSCR_WRAH_SHIFT 16 +#define FB_CSCR_WRAH(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_WRAH_SHIFT))&FB_CSCR_WRAH_MASK) +#define FB_CSCR_RDAH_MASK 0xC0000u +#define FB_CSCR_RDAH_SHIFT 18 +#define FB_CSCR_RDAH(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_RDAH_SHIFT))&FB_CSCR_RDAH_MASK) +#define FB_CSCR_ASET_MASK 0x300000u +#define FB_CSCR_ASET_SHIFT 20 +#define FB_CSCR_ASET(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_ASET_SHIFT))&FB_CSCR_ASET_MASK) +#define FB_CSCR_EXTS_MASK 0x400000u +#define FB_CSCR_EXTS_SHIFT 22 +#define FB_CSCR_SWSEN_MASK 0x800000u +#define FB_CSCR_SWSEN_SHIFT 23 +#define FB_CSCR_SWS_MASK 0xFC000000u +#define FB_CSCR_SWS_SHIFT 26 +#define FB_CSCR_SWS(x) (((uint32_t)(((uint32_t)(x))<<FB_CSCR_SWS_SHIFT))&FB_CSCR_SWS_MASK) +/* CSPMCR Bit Fields */ +#define FB_CSPMCR_GROUP5_MASK 0xF000u +#define FB_CSPMCR_GROUP5_SHIFT 12 +#define FB_CSPMCR_GROUP5(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP5_SHIFT))&FB_CSPMCR_GROUP5_MASK) +#define FB_CSPMCR_GROUP4_MASK 0xF0000u +#define FB_CSPMCR_GROUP4_SHIFT 16 +#define FB_CSPMCR_GROUP4(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP4_SHIFT))&FB_CSPMCR_GROUP4_MASK) +#define FB_CSPMCR_GROUP3_MASK 0xF00000u +#define FB_CSPMCR_GROUP3_SHIFT 20 +#define FB_CSPMCR_GROUP3(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP3_SHIFT))&FB_CSPMCR_GROUP3_MASK) +#define FB_CSPMCR_GROUP2_MASK 0xF000000u +#define FB_CSPMCR_GROUP2_SHIFT 24 +#define FB_CSPMCR_GROUP2(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP2_SHIFT))&FB_CSPMCR_GROUP2_MASK) +#define FB_CSPMCR_GROUP1_MASK 0xF0000000u +#define FB_CSPMCR_GROUP1_SHIFT 28 +#define FB_CSPMCR_GROUP1(x) (((uint32_t)(((uint32_t)(x))<<FB_CSPMCR_GROUP1_SHIFT))&FB_CSPMCR_GROUP1_MASK) + +/*! + * @} + */ /* end of group FB_Register_Masks */ + + +/* FB - Peripheral instance base addresses */ +/** Peripheral FB base address */ +#define FB_BASE (0x4000C000u) +/** Peripheral FB base pointer */ +#define FB ((FB_Type *)FB_BASE) +#define FB_BASE_PTR (FB) +/** Array initializer of FB peripheral base pointers */ +#define FB_BASES { FB } + +/* ---------------------------------------------------------------------------- + -- FB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FB_Register_Accessor_Macros FB - Register accessor macros + * @{ + */ + + +/* FB - Register instance definitions */ +/* FB */ +#define FB_CSAR0 FB_CSAR_REG(FB,0) +#define FB_CSMR0 FB_CSMR_REG(FB,0) +#define FB_CSCR0 FB_CSCR_REG(FB,0) +#define FB_CSAR1 FB_CSAR_REG(FB,1) +#define FB_CSMR1 FB_CSMR_REG(FB,1) +#define FB_CSCR1 FB_CSCR_REG(FB,1) +#define FB_CSAR2 FB_CSAR_REG(FB,2) +#define FB_CSMR2 FB_CSMR_REG(FB,2) +#define FB_CSCR2 FB_CSCR_REG(FB,2) +#define FB_CSAR3 FB_CSAR_REG(FB,3) +#define FB_CSMR3 FB_CSMR_REG(FB,3) +#define FB_CSCR3 FB_CSCR_REG(FB,3) +#define FB_CSAR4 FB_CSAR_REG(FB,4) +#define FB_CSMR4 FB_CSMR_REG(FB,4) +#define FB_CSCR4 FB_CSCR_REG(FB,4) +#define FB_CSAR5 FB_CSAR_REG(FB,5) +#define FB_CSMR5 FB_CSMR_REG(FB,5) +#define FB_CSCR5 FB_CSCR_REG(FB,5) +#define FB_CSPMCR FB_CSPMCR_REG(FB) + +/* FB - Register array accessors */ +#define FB_CSAR(index) FB_CSAR_REG(FB,index) +#define FB_CSMR(index) FB_CSMR_REG(FB,index) +#define FB_CSCR(index) FB_CSCR_REG(FB,index) + +/*! + * @} + */ /* end of group FB_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group FB_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- FMC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FMC_Peripheral_Access_Layer FMC Peripheral Access Layer + * @{ + */ + +/** FMC - Register Layout Typedef */ +typedef struct { + __IO uint32_t PFAPR; /**< Flash Access Protection Register, offset: 0x0 */ + __IO uint32_t PFB0CR; /**< Flash Bank 0 Control Register, offset: 0x4 */ + __IO uint32_t PFB1CR; /**< Flash Bank 1 Control Register, offset: 0x8 */ + uint8_t RESERVED_0[244]; + __IO uint32_t TAGVDW0S[4]; /**< Cache Tag Storage, array offset: 0x100, array step: 0x4 */ + __IO uint32_t TAGVDW1S[4]; /**< Cache Tag Storage, array offset: 0x110, array step: 0x4 */ + __IO uint32_t TAGVDW2S[4]; /**< Cache Tag Storage, array offset: 0x120, array step: 0x4 */ + __IO uint32_t TAGVDW3S[4]; /**< Cache Tag Storage, array offset: 0x130, array step: 0x4 */ + uint8_t RESERVED_1[192]; + struct { /* offset: 0x200, array step: index*0x20, index2*0x8 */ + __IO uint32_t DATA_U; /**< Cache Data Storage (upper word), array offset: 0x200, array step: index*0x20, index2*0x8 */ + __IO uint32_t DATA_L; /**< Cache Data Storage (lower word), array offset: 0x204, array step: index*0x20, index2*0x8 */ + } SET[4][4]; +} FMC_Type, *FMC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- FMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FMC_Register_Accessor_Macros FMC - Register accessor macros + * @{ + */ + + +/* FMC - Register accessors */ +#define FMC_PFAPR_REG(base) ((base)->PFAPR) +#define FMC_PFB0CR_REG(base) ((base)->PFB0CR) +#define FMC_PFB1CR_REG(base) ((base)->PFB1CR) +#define FMC_TAGVDW0S_REG(base,index) ((base)->TAGVDW0S[index]) +#define FMC_TAGVDW1S_REG(base,index) ((base)->TAGVDW1S[index]) +#define FMC_TAGVDW2S_REG(base,index) ((base)->TAGVDW2S[index]) +#define FMC_TAGVDW3S_REG(base,index) ((base)->TAGVDW3S[index]) +#define FMC_DATA_U_REG(base,index,index2) ((base)->SET[index][index2].DATA_U) +#define FMC_DATA_L_REG(base,index,index2) ((base)->SET[index][index2].DATA_L) + +/*! + * @} + */ /* end of group FMC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- FMC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FMC_Register_Masks FMC Register Masks + * @{ + */ + +/* PFAPR Bit Fields */ +#define FMC_PFAPR_M0AP_MASK 0x3u +#define FMC_PFAPR_M0AP_SHIFT 0 +#define FMC_PFAPR_M0AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M0AP_SHIFT))&FMC_PFAPR_M0AP_MASK) +#define FMC_PFAPR_M1AP_MASK 0xCu +#define FMC_PFAPR_M1AP_SHIFT 2 +#define FMC_PFAPR_M1AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M1AP_SHIFT))&FMC_PFAPR_M1AP_MASK) +#define FMC_PFAPR_M2AP_MASK 0x30u +#define FMC_PFAPR_M2AP_SHIFT 4 +#define FMC_PFAPR_M2AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M2AP_SHIFT))&FMC_PFAPR_M2AP_MASK) +#define FMC_PFAPR_M3AP_MASK 0xC0u +#define FMC_PFAPR_M3AP_SHIFT 6 +#define FMC_PFAPR_M3AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M3AP_SHIFT))&FMC_PFAPR_M3AP_MASK) +#define FMC_PFAPR_M4AP_MASK 0x300u +#define FMC_PFAPR_M4AP_SHIFT 8 +#define FMC_PFAPR_M4AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M4AP_SHIFT))&FMC_PFAPR_M4AP_MASK) +#define FMC_PFAPR_M5AP_MASK 0xC00u +#define FMC_PFAPR_M5AP_SHIFT 10 +#define FMC_PFAPR_M5AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M5AP_SHIFT))&FMC_PFAPR_M5AP_MASK) +#define FMC_PFAPR_M6AP_MASK 0x3000u +#define FMC_PFAPR_M6AP_SHIFT 12 +#define FMC_PFAPR_M6AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M6AP_SHIFT))&FMC_PFAPR_M6AP_MASK) +#define FMC_PFAPR_M7AP_MASK 0xC000u +#define FMC_PFAPR_M7AP_SHIFT 14 +#define FMC_PFAPR_M7AP(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFAPR_M7AP_SHIFT))&FMC_PFAPR_M7AP_MASK) +#define FMC_PFAPR_M0PFD_MASK 0x10000u +#define FMC_PFAPR_M0PFD_SHIFT 16 +#define FMC_PFAPR_M1PFD_MASK 0x20000u +#define FMC_PFAPR_M1PFD_SHIFT 17 +#define FMC_PFAPR_M2PFD_MASK 0x40000u +#define FMC_PFAPR_M2PFD_SHIFT 18 +#define FMC_PFAPR_M3PFD_MASK 0x80000u +#define FMC_PFAPR_M3PFD_SHIFT 19 +#define FMC_PFAPR_M4PFD_MASK 0x100000u +#define FMC_PFAPR_M4PFD_SHIFT 20 +#define FMC_PFAPR_M5PFD_MASK 0x200000u +#define FMC_PFAPR_M5PFD_SHIFT 21 +#define FMC_PFAPR_M6PFD_MASK 0x400000u +#define FMC_PFAPR_M6PFD_SHIFT 22 +#define FMC_PFAPR_M7PFD_MASK 0x800000u +#define FMC_PFAPR_M7PFD_SHIFT 23 +/* PFB0CR Bit Fields */ +#define FMC_PFB0CR_B0SEBE_MASK 0x1u +#define FMC_PFB0CR_B0SEBE_SHIFT 0 +#define FMC_PFB0CR_B0IPE_MASK 0x2u +#define FMC_PFB0CR_B0IPE_SHIFT 1 +#define FMC_PFB0CR_B0DPE_MASK 0x4u +#define FMC_PFB0CR_B0DPE_SHIFT 2 +#define FMC_PFB0CR_B0ICE_MASK 0x8u +#define FMC_PFB0CR_B0ICE_SHIFT 3 +#define FMC_PFB0CR_B0DCE_MASK 0x10u +#define FMC_PFB0CR_B0DCE_SHIFT 4 +#define FMC_PFB0CR_CRC_MASK 0xE0u +#define FMC_PFB0CR_CRC_SHIFT 5 +#define FMC_PFB0CR_CRC(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_CRC_SHIFT))&FMC_PFB0CR_CRC_MASK) +#define FMC_PFB0CR_B0MW_MASK 0x60000u +#define FMC_PFB0CR_B0MW_SHIFT 17 +#define FMC_PFB0CR_B0MW(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_B0MW_SHIFT))&FMC_PFB0CR_B0MW_MASK) +#define FMC_PFB0CR_S_B_INV_MASK 0x80000u +#define FMC_PFB0CR_S_B_INV_SHIFT 19 +#define FMC_PFB0CR_CINV_WAY_MASK 0xF00000u +#define FMC_PFB0CR_CINV_WAY_SHIFT 20 +#define FMC_PFB0CR_CINV_WAY(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_CINV_WAY_SHIFT))&FMC_PFB0CR_CINV_WAY_MASK) +#define FMC_PFB0CR_CLCK_WAY_MASK 0xF000000u +#define FMC_PFB0CR_CLCK_WAY_SHIFT 24 +#define FMC_PFB0CR_CLCK_WAY(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_CLCK_WAY_SHIFT))&FMC_PFB0CR_CLCK_WAY_MASK) +#define FMC_PFB0CR_B0RWSC_MASK 0xF0000000u +#define FMC_PFB0CR_B0RWSC_SHIFT 28 +#define FMC_PFB0CR_B0RWSC(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB0CR_B0RWSC_SHIFT))&FMC_PFB0CR_B0RWSC_MASK) +/* PFB1CR Bit Fields */ +#define FMC_PFB1CR_B1SEBE_MASK 0x1u +#define FMC_PFB1CR_B1SEBE_SHIFT 0 +#define FMC_PFB1CR_B1IPE_MASK 0x2u +#define FMC_PFB1CR_B1IPE_SHIFT 1 +#define FMC_PFB1CR_B1DPE_MASK 0x4u +#define FMC_PFB1CR_B1DPE_SHIFT 2 +#define FMC_PFB1CR_B1ICE_MASK 0x8u +#define FMC_PFB1CR_B1ICE_SHIFT 3 +#define FMC_PFB1CR_B1DCE_MASK 0x10u +#define FMC_PFB1CR_B1DCE_SHIFT 4 +#define FMC_PFB1CR_B1MW_MASK 0x60000u +#define FMC_PFB1CR_B1MW_SHIFT 17 +#define FMC_PFB1CR_B1MW(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB1CR_B1MW_SHIFT))&FMC_PFB1CR_B1MW_MASK) +#define FMC_PFB1CR_B1RWSC_MASK 0xF0000000u +#define FMC_PFB1CR_B1RWSC_SHIFT 28 +#define FMC_PFB1CR_B1RWSC(x) (((uint32_t)(((uint32_t)(x))<<FMC_PFB1CR_B1RWSC_SHIFT))&FMC_PFB1CR_B1RWSC_MASK) +/* TAGVDW0S Bit Fields */ +#define FMC_TAGVDW0S_valid_MASK 0x1u +#define FMC_TAGVDW0S_valid_SHIFT 0 +#define FMC_TAGVDW0S_tag_MASK 0x7FFE0u +#define FMC_TAGVDW0S_tag_SHIFT 5 +#define FMC_TAGVDW0S_tag(x) (((uint32_t)(((uint32_t)(x))<<FMC_TAGVDW0S_tag_SHIFT))&FMC_TAGVDW0S_tag_MASK) +/* TAGVDW1S Bit Fields */ +#define FMC_TAGVDW1S_valid_MASK 0x1u +#define FMC_TAGVDW1S_valid_SHIFT 0 +#define FMC_TAGVDW1S_tag_MASK 0x7FFE0u +#define FMC_TAGVDW1S_tag_SHIFT 5 +#define FMC_TAGVDW1S_tag(x) (((uint32_t)(((uint32_t)(x))<<FMC_TAGVDW1S_tag_SHIFT))&FMC_TAGVDW1S_tag_MASK) +/* TAGVDW2S Bit Fields */ +#define FMC_TAGVDW2S_valid_MASK 0x1u +#define FMC_TAGVDW2S_valid_SHIFT 0 +#define FMC_TAGVDW2S_tag_MASK 0x7FFE0u +#define FMC_TAGVDW2S_tag_SHIFT 5 +#define FMC_TAGVDW2S_tag(x) (((uint32_t)(((uint32_t)(x))<<FMC_TAGVDW2S_tag_SHIFT))&FMC_TAGVDW2S_tag_MASK) +/* TAGVDW3S Bit Fields */ +#define FMC_TAGVDW3S_valid_MASK 0x1u +#define FMC_TAGVDW3S_valid_SHIFT 0 +#define FMC_TAGVDW3S_tag_MASK 0x7FFE0u +#define FMC_TAGVDW3S_tag_SHIFT 5 +#define FMC_TAGVDW3S_tag(x) (((uint32_t)(((uint32_t)(x))<<FMC_TAGVDW3S_tag_SHIFT))&FMC_TAGVDW3S_tag_MASK) +/* DATA_U Bit Fields */ +#define FMC_DATA_U_data_MASK 0xFFFFFFFFu +#define FMC_DATA_U_data_SHIFT 0 +#define FMC_DATA_U_data(x) (((uint32_t)(((uint32_t)(x))<<FMC_DATA_U_data_SHIFT))&FMC_DATA_U_data_MASK) +/* DATA_L Bit Fields */ +#define FMC_DATA_L_data_MASK 0xFFFFFFFFu +#define FMC_DATA_L_data_SHIFT 0 +#define FMC_DATA_L_data(x) (((uint32_t)(((uint32_t)(x))<<FMC_DATA_L_data_SHIFT))&FMC_DATA_L_data_MASK) + +/*! + * @} + */ /* end of group FMC_Register_Masks */ + + +/* FMC - Peripheral instance base addresses */ +/** Peripheral FMC base address */ +#define FMC_BASE (0x4001F000u) +/** Peripheral FMC base pointer */ +#define FMC ((FMC_Type *)FMC_BASE) +#define FMC_BASE_PTR (FMC) +/** Array initializer of FMC peripheral base pointers */ +#define FMC_BASES { FMC } + +/* ---------------------------------------------------------------------------- + -- FMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FMC_Register_Accessor_Macros FMC - Register accessor macros + * @{ + */ + + +/* FMC - Register instance definitions */ +/* FMC */ +#define FMC_PFAPR FMC_PFAPR_REG(FMC) +#define FMC_PFB0CR FMC_PFB0CR_REG(FMC) +#define FMC_PFB1CR FMC_PFB1CR_REG(FMC) +#define FMC_TAGVDW0S0 FMC_TAGVDW0S_REG(FMC,0) +#define FMC_TAGVDW0S1 FMC_TAGVDW0S_REG(FMC,1) +#define FMC_TAGVDW0S2 FMC_TAGVDW0S_REG(FMC,2) +#define FMC_TAGVDW0S3 FMC_TAGVDW0S_REG(FMC,3) +#define FMC_TAGVDW1S0 FMC_TAGVDW1S_REG(FMC,0) +#define FMC_TAGVDW1S1 FMC_TAGVDW1S_REG(FMC,1) +#define FMC_TAGVDW1S2 FMC_TAGVDW1S_REG(FMC,2) +#define FMC_TAGVDW1S3 FMC_TAGVDW1S_REG(FMC,3) +#define FMC_TAGVDW2S0 FMC_TAGVDW2S_REG(FMC,0) +#define FMC_TAGVDW2S1 FMC_TAGVDW2S_REG(FMC,1) +#define FMC_TAGVDW2S2 FMC_TAGVDW2S_REG(FMC,2) +#define FMC_TAGVDW2S3 FMC_TAGVDW2S_REG(FMC,3) +#define FMC_TAGVDW3S0 FMC_TAGVDW3S_REG(FMC,0) +#define FMC_TAGVDW3S1 FMC_TAGVDW3S_REG(FMC,1) +#define FMC_TAGVDW3S2 FMC_TAGVDW3S_REG(FMC,2) +#define FMC_TAGVDW3S3 FMC_TAGVDW3S_REG(FMC,3) +#define FMC_DATAW0S0U FMC_DATA_U_REG(FMC,0,0) +#define FMC_DATAW0S0L FMC_DATA_L_REG(FMC,0,0) +#define FMC_DATAW0S1U FMC_DATA_U_REG(FMC,0,1) +#define FMC_DATAW0S1L FMC_DATA_L_REG(FMC,0,1) +#define FMC_DATAW0S2U FMC_DATA_U_REG(FMC,0,2) +#define FMC_DATAW0S2L FMC_DATA_L_REG(FMC,0,2) +#define FMC_DATAW0S3U FMC_DATA_U_REG(FMC,0,3) +#define FMC_DATAW0S3L FMC_DATA_L_REG(FMC,0,3) +#define FMC_DATAW1S0U FMC_DATA_U_REG(FMC,1,0) +#define FMC_DATAW1S0L FMC_DATA_L_REG(FMC,1,0) +#define FMC_DATAW1S1U FMC_DATA_U_REG(FMC,1,1) +#define FMC_DATAW1S1L FMC_DATA_L_REG(FMC,1,1) +#define FMC_DATAW1S2U FMC_DATA_U_REG(FMC,1,2) +#define FMC_DATAW1S2L FMC_DATA_L_REG(FMC,1,2) +#define FMC_DATAW1S3U FMC_DATA_U_REG(FMC,1,3) +#define FMC_DATAW1S3L FMC_DATA_L_REG(FMC,1,3) +#define FMC_DATAW2S0U FMC_DATA_U_REG(FMC,2,0) +#define FMC_DATAW2S0L FMC_DATA_L_REG(FMC,2,0) +#define FMC_DATAW2S1U FMC_DATA_U_REG(FMC,2,1) +#define FMC_DATAW2S1L FMC_DATA_L_REG(FMC,2,1) +#define FMC_DATAW2S2U FMC_DATA_U_REG(FMC,2,2) +#define FMC_DATAW2S2L FMC_DATA_L_REG(FMC,2,2) +#define FMC_DATAW2S3U FMC_DATA_U_REG(FMC,2,3) +#define FMC_DATAW2S3L FMC_DATA_L_REG(FMC,2,3) +#define FMC_DATAW3S0U FMC_DATA_U_REG(FMC,3,0) +#define FMC_DATAW3S0L FMC_DATA_L_REG(FMC,3,0) +#define FMC_DATAW3S1U FMC_DATA_U_REG(FMC,3,1) +#define FMC_DATAW3S1L FMC_DATA_L_REG(FMC,3,1) +#define FMC_DATAW3S2U FMC_DATA_U_REG(FMC,3,2) +#define FMC_DATAW3S2L FMC_DATA_L_REG(FMC,3,2) +#define FMC_DATAW3S3U FMC_DATA_U_REG(FMC,3,3) +#define FMC_DATAW3S3L FMC_DATA_L_REG(FMC,3,3) + +/* FMC - Register array accessors */ +#define FMC_TAGVDW0S(index) FMC_TAGVDW0S_REG(FMC,index) +#define FMC_TAGVDW1S(index) FMC_TAGVDW1S_REG(FMC,index) +#define FMC_TAGVDW2S(index) FMC_TAGVDW2S_REG(FMC,index) +#define FMC_TAGVDW3S(index) FMC_TAGVDW3S_REG(FMC,index) +#define FMC_DATA_U(index,index2) FMC_DATA_U_REG(FMC,index,index2) +#define FMC_DATA_L(index,index2) FMC_DATA_L_REG(FMC,index,index2) + +/*! + * @} + */ /* end of group FMC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group FMC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- FTFE Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTFE_Peripheral_Access_Layer FTFE Peripheral Access Layer + * @{ + */ + +/** FTFE - Register Layout Typedef */ +typedef struct { + __IO uint8_t FSTAT; /**< Flash Status Register, offset: 0x0 */ + __IO uint8_t FCNFG; /**< Flash Configuration Register, offset: 0x1 */ + __I uint8_t FSEC; /**< Flash Security Register, offset: 0x2 */ + __I uint8_t FOPT; /**< Flash Option Register, offset: 0x3 */ + __IO uint8_t FCCOB3; /**< Flash Common Command Object Registers, offset: 0x4 */ + __IO uint8_t FCCOB2; /**< Flash Common Command Object Registers, offset: 0x5 */ + __IO uint8_t FCCOB1; /**< Flash Common Command Object Registers, offset: 0x6 */ + __IO uint8_t FCCOB0; /**< Flash Common Command Object Registers, offset: 0x7 */ + __IO uint8_t FCCOB7; /**< Flash Common Command Object Registers, offset: 0x8 */ + __IO uint8_t FCCOB6; /**< Flash Common Command Object Registers, offset: 0x9 */ + __IO uint8_t FCCOB5; /**< Flash Common Command Object Registers, offset: 0xA */ + __IO uint8_t FCCOB4; /**< Flash Common Command Object Registers, offset: 0xB */ + __IO uint8_t FCCOBB; /**< Flash Common Command Object Registers, offset: 0xC */ + __IO uint8_t FCCOBA; /**< Flash Common Command Object Registers, offset: 0xD */ + __IO uint8_t FCCOB9; /**< Flash Common Command Object Registers, offset: 0xE */ + __IO uint8_t FCCOB8; /**< Flash Common Command Object Registers, offset: 0xF */ + __IO uint8_t FPROT3; /**< Program Flash Protection Registers, offset: 0x10 */ + __IO uint8_t FPROT2; /**< Program Flash Protection Registers, offset: 0x11 */ + __IO uint8_t FPROT1; /**< Program Flash Protection Registers, offset: 0x12 */ + __IO uint8_t FPROT0; /**< Program Flash Protection Registers, offset: 0x13 */ + uint8_t RESERVED_0[2]; + __IO uint8_t FEPROT; /**< EEPROM Protection Register, offset: 0x16 */ + __IO uint8_t FDPROT; /**< Data Flash Protection Register, offset: 0x17 */ +} FTFE_Type, *FTFE_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- FTFE - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTFE_Register_Accessor_Macros FTFE - Register accessor macros + * @{ + */ + + +/* FTFE - Register accessors */ +#define FTFE_FSTAT_REG(base) ((base)->FSTAT) +#define FTFE_FCNFG_REG(base) ((base)->FCNFG) +#define FTFE_FSEC_REG(base) ((base)->FSEC) +#define FTFE_FOPT_REG(base) ((base)->FOPT) +#define FTFE_FCCOB3_REG(base) ((base)->FCCOB3) +#define FTFE_FCCOB2_REG(base) ((base)->FCCOB2) +#define FTFE_FCCOB1_REG(base) ((base)->FCCOB1) +#define FTFE_FCCOB0_REG(base) ((base)->FCCOB0) +#define FTFE_FCCOB7_REG(base) ((base)->FCCOB7) +#define FTFE_FCCOB6_REG(base) ((base)->FCCOB6) +#define FTFE_FCCOB5_REG(base) ((base)->FCCOB5) +#define FTFE_FCCOB4_REG(base) ((base)->FCCOB4) +#define FTFE_FCCOBB_REG(base) ((base)->FCCOBB) +#define FTFE_FCCOBA_REG(base) ((base)->FCCOBA) +#define FTFE_FCCOB9_REG(base) ((base)->FCCOB9) +#define FTFE_FCCOB8_REG(base) ((base)->FCCOB8) +#define FTFE_FPROT3_REG(base) ((base)->FPROT3) +#define FTFE_FPROT2_REG(base) ((base)->FPROT2) +#define FTFE_FPROT1_REG(base) ((base)->FPROT1) +#define FTFE_FPROT0_REG(base) ((base)->FPROT0) +#define FTFE_FEPROT_REG(base) ((base)->FEPROT) +#define FTFE_FDPROT_REG(base) ((base)->FDPROT) + +/*! + * @} + */ /* end of group FTFE_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- FTFE Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTFE_Register_Masks FTFE Register Masks + * @{ + */ + +/* FSTAT Bit Fields */ +#define FTFE_FSTAT_MGSTAT0_MASK 0x1u +#define FTFE_FSTAT_MGSTAT0_SHIFT 0 +#define FTFE_FSTAT_FPVIOL_MASK 0x10u +#define FTFE_FSTAT_FPVIOL_SHIFT 4 +#define FTFE_FSTAT_ACCERR_MASK 0x20u +#define FTFE_FSTAT_ACCERR_SHIFT 5 +#define FTFE_FSTAT_RDCOLERR_MASK 0x40u +#define FTFE_FSTAT_RDCOLERR_SHIFT 6 +#define FTFE_FSTAT_CCIF_MASK 0x80u +#define FTFE_FSTAT_CCIF_SHIFT 7 +/* FCNFG Bit Fields */ +#define FTFE_FCNFG_EEERDY_MASK 0x1u +#define FTFE_FCNFG_EEERDY_SHIFT 0 +#define FTFE_FCNFG_RAMRDY_MASK 0x2u +#define FTFE_FCNFG_RAMRDY_SHIFT 1 +#define FTFE_FCNFG_PFLSH_MASK 0x4u +#define FTFE_FCNFG_PFLSH_SHIFT 2 +#define FTFE_FCNFG_SWAP_MASK 0x8u +#define FTFE_FCNFG_SWAP_SHIFT 3 +#define FTFE_FCNFG_ERSSUSP_MASK 0x10u +#define FTFE_FCNFG_ERSSUSP_SHIFT 4 +#define FTFE_FCNFG_ERSAREQ_MASK 0x20u +#define FTFE_FCNFG_ERSAREQ_SHIFT 5 +#define FTFE_FCNFG_RDCOLLIE_MASK 0x40u +#define FTFE_FCNFG_RDCOLLIE_SHIFT 6 +#define FTFE_FCNFG_CCIE_MASK 0x80u +#define FTFE_FCNFG_CCIE_SHIFT 7 +/* FSEC Bit Fields */ +#define FTFE_FSEC_SEC_MASK 0x3u +#define FTFE_FSEC_SEC_SHIFT 0 +#define FTFE_FSEC_SEC(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FSEC_SEC_SHIFT))&FTFE_FSEC_SEC_MASK) +#define FTFE_FSEC_FSLACC_MASK 0xCu +#define FTFE_FSEC_FSLACC_SHIFT 2 +#define FTFE_FSEC_FSLACC(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FSEC_FSLACC_SHIFT))&FTFE_FSEC_FSLACC_MASK) +#define FTFE_FSEC_MEEN_MASK 0x30u +#define FTFE_FSEC_MEEN_SHIFT 4 +#define FTFE_FSEC_MEEN(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FSEC_MEEN_SHIFT))&FTFE_FSEC_MEEN_MASK) +#define FTFE_FSEC_KEYEN_MASK 0xC0u +#define FTFE_FSEC_KEYEN_SHIFT 6 +#define FTFE_FSEC_KEYEN(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FSEC_KEYEN_SHIFT))&FTFE_FSEC_KEYEN_MASK) +/* FOPT Bit Fields */ +#define FTFE_FOPT_OPT_MASK 0xFFu +#define FTFE_FOPT_OPT_SHIFT 0 +#define FTFE_FOPT_OPT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FOPT_OPT_SHIFT))&FTFE_FOPT_OPT_MASK) +/* FCCOB3 Bit Fields */ +#define FTFE_FCCOB3_CCOBn_MASK 0xFFu +#define FTFE_FCCOB3_CCOBn_SHIFT 0 +#define FTFE_FCCOB3_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB3_CCOBn_SHIFT))&FTFE_FCCOB3_CCOBn_MASK) +/* FCCOB2 Bit Fields */ +#define FTFE_FCCOB2_CCOBn_MASK 0xFFu +#define FTFE_FCCOB2_CCOBn_SHIFT 0 +#define FTFE_FCCOB2_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB2_CCOBn_SHIFT))&FTFE_FCCOB2_CCOBn_MASK) +/* FCCOB1 Bit Fields */ +#define FTFE_FCCOB1_CCOBn_MASK 0xFFu +#define FTFE_FCCOB1_CCOBn_SHIFT 0 +#define FTFE_FCCOB1_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB1_CCOBn_SHIFT))&FTFE_FCCOB1_CCOBn_MASK) +/* FCCOB0 Bit Fields */ +#define FTFE_FCCOB0_CCOBn_MASK 0xFFu +#define FTFE_FCCOB0_CCOBn_SHIFT 0 +#define FTFE_FCCOB0_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB0_CCOBn_SHIFT))&FTFE_FCCOB0_CCOBn_MASK) +/* FCCOB7 Bit Fields */ +#define FTFE_FCCOB7_CCOBn_MASK 0xFFu +#define FTFE_FCCOB7_CCOBn_SHIFT 0 +#define FTFE_FCCOB7_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB7_CCOBn_SHIFT))&FTFE_FCCOB7_CCOBn_MASK) +/* FCCOB6 Bit Fields */ +#define FTFE_FCCOB6_CCOBn_MASK 0xFFu +#define FTFE_FCCOB6_CCOBn_SHIFT 0 +#define FTFE_FCCOB6_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB6_CCOBn_SHIFT))&FTFE_FCCOB6_CCOBn_MASK) +/* FCCOB5 Bit Fields */ +#define FTFE_FCCOB5_CCOBn_MASK 0xFFu +#define FTFE_FCCOB5_CCOBn_SHIFT 0 +#define FTFE_FCCOB5_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB5_CCOBn_SHIFT))&FTFE_FCCOB5_CCOBn_MASK) +/* FCCOB4 Bit Fields */ +#define FTFE_FCCOB4_CCOBn_MASK 0xFFu +#define FTFE_FCCOB4_CCOBn_SHIFT 0 +#define FTFE_FCCOB4_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB4_CCOBn_SHIFT))&FTFE_FCCOB4_CCOBn_MASK) +/* FCCOBB Bit Fields */ +#define FTFE_FCCOBB_CCOBn_MASK 0xFFu +#define FTFE_FCCOBB_CCOBn_SHIFT 0 +#define FTFE_FCCOBB_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOBB_CCOBn_SHIFT))&FTFE_FCCOBB_CCOBn_MASK) +/* FCCOBA Bit Fields */ +#define FTFE_FCCOBA_CCOBn_MASK 0xFFu +#define FTFE_FCCOBA_CCOBn_SHIFT 0 +#define FTFE_FCCOBA_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOBA_CCOBn_SHIFT))&FTFE_FCCOBA_CCOBn_MASK) +/* FCCOB9 Bit Fields */ +#define FTFE_FCCOB9_CCOBn_MASK 0xFFu +#define FTFE_FCCOB9_CCOBn_SHIFT 0 +#define FTFE_FCCOB9_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB9_CCOBn_SHIFT))&FTFE_FCCOB9_CCOBn_MASK) +/* FCCOB8 Bit Fields */ +#define FTFE_FCCOB8_CCOBn_MASK 0xFFu +#define FTFE_FCCOB8_CCOBn_SHIFT 0 +#define FTFE_FCCOB8_CCOBn(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FCCOB8_CCOBn_SHIFT))&FTFE_FCCOB8_CCOBn_MASK) +/* FPROT3 Bit Fields */ +#define FTFE_FPROT3_PROT_MASK 0xFFu +#define FTFE_FPROT3_PROT_SHIFT 0 +#define FTFE_FPROT3_PROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FPROT3_PROT_SHIFT))&FTFE_FPROT3_PROT_MASK) +/* FPROT2 Bit Fields */ +#define FTFE_FPROT2_PROT_MASK 0xFFu +#define FTFE_FPROT2_PROT_SHIFT 0 +#define FTFE_FPROT2_PROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FPROT2_PROT_SHIFT))&FTFE_FPROT2_PROT_MASK) +/* FPROT1 Bit Fields */ +#define FTFE_FPROT1_PROT_MASK 0xFFu +#define FTFE_FPROT1_PROT_SHIFT 0 +#define FTFE_FPROT1_PROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FPROT1_PROT_SHIFT))&FTFE_FPROT1_PROT_MASK) +/* FPROT0 Bit Fields */ +#define FTFE_FPROT0_PROT_MASK 0xFFu +#define FTFE_FPROT0_PROT_SHIFT 0 +#define FTFE_FPROT0_PROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FPROT0_PROT_SHIFT))&FTFE_FPROT0_PROT_MASK) +/* FEPROT Bit Fields */ +#define FTFE_FEPROT_EPROT_MASK 0xFFu +#define FTFE_FEPROT_EPROT_SHIFT 0 +#define FTFE_FEPROT_EPROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FEPROT_EPROT_SHIFT))&FTFE_FEPROT_EPROT_MASK) +/* FDPROT Bit Fields */ +#define FTFE_FDPROT_DPROT_MASK 0xFFu +#define FTFE_FDPROT_DPROT_SHIFT 0 +#define FTFE_FDPROT_DPROT(x) (((uint8_t)(((uint8_t)(x))<<FTFE_FDPROT_DPROT_SHIFT))&FTFE_FDPROT_DPROT_MASK) + +/*! + * @} + */ /* end of group FTFE_Register_Masks */ + + +/* FTFE - Peripheral instance base addresses */ +/** Peripheral FTFE base address */ +#define FTFE_BASE (0x40020000u) +/** Peripheral FTFE base pointer */ +#define FTFE ((FTFE_Type *)FTFE_BASE) +#define FTFE_BASE_PTR (FTFE) +/** Array initializer of FTFE peripheral base pointers */ +#define FTFE_BASES { FTFE } + +/* ---------------------------------------------------------------------------- + -- FTFE - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTFE_Register_Accessor_Macros FTFE - Register accessor macros + * @{ + */ + + +/* FTFE - Register instance definitions */ +/* FTFE */ +#define FTFE_FSTAT FTFE_FSTAT_REG(FTFE) +#define FTFE_FCNFG FTFE_FCNFG_REG(FTFE) +#define FTFE_FSEC FTFE_FSEC_REG(FTFE) +#define FTFE_FOPT FTFE_FOPT_REG(FTFE) +#define FTFE_FCCOB3 FTFE_FCCOB3_REG(FTFE) +#define FTFE_FCCOB2 FTFE_FCCOB2_REG(FTFE) +#define FTFE_FCCOB1 FTFE_FCCOB1_REG(FTFE) +#define FTFE_FCCOB0 FTFE_FCCOB0_REG(FTFE) +#define FTFE_FCCOB7 FTFE_FCCOB7_REG(FTFE) +#define FTFE_FCCOB6 FTFE_FCCOB6_REG(FTFE) +#define FTFE_FCCOB5 FTFE_FCCOB5_REG(FTFE) +#define FTFE_FCCOB4 FTFE_FCCOB4_REG(FTFE) +#define FTFE_FCCOBB FTFE_FCCOBB_REG(FTFE) +#define FTFE_FCCOBA FTFE_FCCOBA_REG(FTFE) +#define FTFE_FCCOB9 FTFE_FCCOB9_REG(FTFE) +#define FTFE_FCCOB8 FTFE_FCCOB8_REG(FTFE) +#define FTFE_FPROT3 FTFE_FPROT3_REG(FTFE) +#define FTFE_FPROT2 FTFE_FPROT2_REG(FTFE) +#define FTFE_FPROT1 FTFE_FPROT1_REG(FTFE) +#define FTFE_FPROT0 FTFE_FPROT0_REG(FTFE) +#define FTFE_FEPROT FTFE_FEPROT_REG(FTFE) +#define FTFE_FDPROT FTFE_FDPROT_REG(FTFE) + +/*! + * @} + */ /* end of group FTFE_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group FTFE_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- FTM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTM_Peripheral_Access_Layer FTM Peripheral Access Layer + * @{ + */ + +/** FTM - Register Layout Typedef */ +typedef struct { + __IO uint32_t SC; /**< Status And Control, offset: 0x0 */ + __IO uint32_t CNT; /**< Counter, offset: 0x4 */ + __IO uint32_t MOD; /**< Modulo, offset: 0x8 */ + struct { /* offset: 0xC, array step: 0x8 */ + __IO uint32_t CnSC; /**< Channel (n) Status And Control, array offset: 0xC, array step: 0x8 */ + __IO uint32_t CnV; /**< Channel (n) Value, array offset: 0x10, array step: 0x8 */ + } CONTROLS[8]; + __IO uint32_t CNTIN; /**< Counter Initial Value, offset: 0x4C */ + __IO uint32_t STATUS; /**< Capture And Compare Status, offset: 0x50 */ + __IO uint32_t MODE; /**< Features Mode Selection, offset: 0x54 */ + __IO uint32_t SYNC; /**< Synchronization, offset: 0x58 */ + __IO uint32_t OUTINIT; /**< Initial State For Channels Output, offset: 0x5C */ + __IO uint32_t OUTMASK; /**< Output Mask, offset: 0x60 */ + __IO uint32_t COMBINE; /**< Function For Linked Channels, offset: 0x64 */ + __IO uint32_t DEADTIME; /**< Deadtime Insertion Control, offset: 0x68 */ + __IO uint32_t EXTTRIG; /**< FTM External Trigger, offset: 0x6C */ + __IO uint32_t POL; /**< Channels Polarity, offset: 0x70 */ + __IO uint32_t FMS; /**< Fault Mode Status, offset: 0x74 */ + __IO uint32_t FILTER; /**< Input Capture Filter Control, offset: 0x78 */ + __IO uint32_t FLTCTRL; /**< Fault Control, offset: 0x7C */ + __IO uint32_t QDCTRL; /**< Quadrature Decoder Control And Status, offset: 0x80 */ + __IO uint32_t CONF; /**< Configuration, offset: 0x84 */ + __IO uint32_t FLTPOL; /**< FTM Fault Input Polarity, offset: 0x88 */ + __IO uint32_t SYNCONF; /**< Synchronization Configuration, offset: 0x8C */ + __IO uint32_t INVCTRL; /**< FTM Inverting Control, offset: 0x90 */ + __IO uint32_t SWOCTRL; /**< FTM Software Output Control, offset: 0x94 */ + __IO uint32_t PWMLOAD; /**< FTM PWM Load, offset: 0x98 */ +} FTM_Type, *FTM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- FTM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTM_Register_Accessor_Macros FTM - Register accessor macros + * @{ + */ + + +/* FTM - Register accessors */ +#define FTM_SC_REG(base) ((base)->SC) +#define FTM_CNT_REG(base) ((base)->CNT) +#define FTM_MOD_REG(base) ((base)->MOD) +#define FTM_CnSC_REG(base,index) ((base)->CONTROLS[index].CnSC) +#define FTM_CnV_REG(base,index) ((base)->CONTROLS[index].CnV) +#define FTM_CNTIN_REG(base) ((base)->CNTIN) +#define FTM_STATUS_REG(base) ((base)->STATUS) +#define FTM_MODE_REG(base) ((base)->MODE) +#define FTM_SYNC_REG(base) ((base)->SYNC) +#define FTM_OUTINIT_REG(base) ((base)->OUTINIT) +#define FTM_OUTMASK_REG(base) ((base)->OUTMASK) +#define FTM_COMBINE_REG(base) ((base)->COMBINE) +#define FTM_DEADTIME_REG(base) ((base)->DEADTIME) +#define FTM_EXTTRIG_REG(base) ((base)->EXTTRIG) +#define FTM_POL_REG(base) ((base)->POL) +#define FTM_FMS_REG(base) ((base)->FMS) +#define FTM_FILTER_REG(base) ((base)->FILTER) +#define FTM_FLTCTRL_REG(base) ((base)->FLTCTRL) +#define FTM_QDCTRL_REG(base) ((base)->QDCTRL) +#define FTM_CONF_REG(base) ((base)->CONF) +#define FTM_FLTPOL_REG(base) ((base)->FLTPOL) +#define FTM_SYNCONF_REG(base) ((base)->SYNCONF) +#define FTM_INVCTRL_REG(base) ((base)->INVCTRL) +#define FTM_SWOCTRL_REG(base) ((base)->SWOCTRL) +#define FTM_PWMLOAD_REG(base) ((base)->PWMLOAD) + +/*! + * @} + */ /* end of group FTM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- FTM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTM_Register_Masks FTM Register Masks + * @{ + */ + +/* SC Bit Fields */ +#define FTM_SC_PS_MASK 0x7u +#define FTM_SC_PS_SHIFT 0 +#define FTM_SC_PS(x) (((uint32_t)(((uint32_t)(x))<<FTM_SC_PS_SHIFT))&FTM_SC_PS_MASK) +#define FTM_SC_CLKS_MASK 0x18u +#define FTM_SC_CLKS_SHIFT 3 +#define FTM_SC_CLKS(x) (((uint32_t)(((uint32_t)(x))<<FTM_SC_CLKS_SHIFT))&FTM_SC_CLKS_MASK) +#define FTM_SC_CPWMS_MASK 0x20u +#define FTM_SC_CPWMS_SHIFT 5 +#define FTM_SC_TOIE_MASK 0x40u +#define FTM_SC_TOIE_SHIFT 6 +#define FTM_SC_TOF_MASK 0x80u +#define FTM_SC_TOF_SHIFT 7 +/* CNT Bit Fields */ +#define FTM_CNT_COUNT_MASK 0xFFFFu +#define FTM_CNT_COUNT_SHIFT 0 +#define FTM_CNT_COUNT(x) (((uint32_t)(((uint32_t)(x))<<FTM_CNT_COUNT_SHIFT))&FTM_CNT_COUNT_MASK) +/* MOD Bit Fields */ +#define FTM_MOD_MOD_MASK 0xFFFFu +#define FTM_MOD_MOD_SHIFT 0 +#define FTM_MOD_MOD(x) (((uint32_t)(((uint32_t)(x))<<FTM_MOD_MOD_SHIFT))&FTM_MOD_MOD_MASK) +/* CnSC Bit Fields */ +#define FTM_CnSC_DMA_MASK 0x1u +#define FTM_CnSC_DMA_SHIFT 0 +#define FTM_CnSC_ELSA_MASK 0x4u +#define FTM_CnSC_ELSA_SHIFT 2 +#define FTM_CnSC_ELSB_MASK 0x8u +#define FTM_CnSC_ELSB_SHIFT 3 +#define FTM_CnSC_MSA_MASK 0x10u +#define FTM_CnSC_MSA_SHIFT 4 +#define FTM_CnSC_MSB_MASK 0x20u +#define FTM_CnSC_MSB_SHIFT 5 +#define FTM_CnSC_CHIE_MASK 0x40u +#define FTM_CnSC_CHIE_SHIFT 6 +#define FTM_CnSC_CHF_MASK 0x80u +#define FTM_CnSC_CHF_SHIFT 7 +/* CnV Bit Fields */ +#define FTM_CnV_VAL_MASK 0xFFFFu +#define FTM_CnV_VAL_SHIFT 0 +#define FTM_CnV_VAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_CnV_VAL_SHIFT))&FTM_CnV_VAL_MASK) +/* CNTIN Bit Fields */ +#define FTM_CNTIN_INIT_MASK 0xFFFFu +#define FTM_CNTIN_INIT_SHIFT 0 +#define FTM_CNTIN_INIT(x) (((uint32_t)(((uint32_t)(x))<<FTM_CNTIN_INIT_SHIFT))&FTM_CNTIN_INIT_MASK) +/* STATUS Bit Fields */ +#define FTM_STATUS_CH0F_MASK 0x1u +#define FTM_STATUS_CH0F_SHIFT 0 +#define FTM_STATUS_CH1F_MASK 0x2u +#define FTM_STATUS_CH1F_SHIFT 1 +#define FTM_STATUS_CH2F_MASK 0x4u +#define FTM_STATUS_CH2F_SHIFT 2 +#define FTM_STATUS_CH3F_MASK 0x8u +#define FTM_STATUS_CH3F_SHIFT 3 +#define FTM_STATUS_CH4F_MASK 0x10u +#define FTM_STATUS_CH4F_SHIFT 4 +#define FTM_STATUS_CH5F_MASK 0x20u +#define FTM_STATUS_CH5F_SHIFT 5 +#define FTM_STATUS_CH6F_MASK 0x40u +#define FTM_STATUS_CH6F_SHIFT 6 +#define FTM_STATUS_CH7F_MASK 0x80u +#define FTM_STATUS_CH7F_SHIFT 7 +/* MODE Bit Fields */ +#define FTM_MODE_FTMEN_MASK 0x1u +#define FTM_MODE_FTMEN_SHIFT 0 +#define FTM_MODE_INIT_MASK 0x2u +#define FTM_MODE_INIT_SHIFT 1 +#define FTM_MODE_WPDIS_MASK 0x4u +#define FTM_MODE_WPDIS_SHIFT 2 +#define FTM_MODE_PWMSYNC_MASK 0x8u +#define FTM_MODE_PWMSYNC_SHIFT 3 +#define FTM_MODE_CAPTEST_MASK 0x10u +#define FTM_MODE_CAPTEST_SHIFT 4 +#define FTM_MODE_FAULTM_MASK 0x60u +#define FTM_MODE_FAULTM_SHIFT 5 +#define FTM_MODE_FAULTM(x) (((uint32_t)(((uint32_t)(x))<<FTM_MODE_FAULTM_SHIFT))&FTM_MODE_FAULTM_MASK) +#define FTM_MODE_FAULTIE_MASK 0x80u +#define FTM_MODE_FAULTIE_SHIFT 7 +/* SYNC Bit Fields */ +#define FTM_SYNC_CNTMIN_MASK 0x1u +#define FTM_SYNC_CNTMIN_SHIFT 0 +#define FTM_SYNC_CNTMAX_MASK 0x2u +#define FTM_SYNC_CNTMAX_SHIFT 1 +#define FTM_SYNC_REINIT_MASK 0x4u +#define FTM_SYNC_REINIT_SHIFT 2 +#define FTM_SYNC_SYNCHOM_MASK 0x8u +#define FTM_SYNC_SYNCHOM_SHIFT 3 +#define FTM_SYNC_TRIG0_MASK 0x10u +#define FTM_SYNC_TRIG0_SHIFT 4 +#define FTM_SYNC_TRIG1_MASK 0x20u +#define FTM_SYNC_TRIG1_SHIFT 5 +#define FTM_SYNC_TRIG2_MASK 0x40u +#define FTM_SYNC_TRIG2_SHIFT 6 +#define FTM_SYNC_SWSYNC_MASK 0x80u +#define FTM_SYNC_SWSYNC_SHIFT 7 +/* OUTINIT Bit Fields */ +#define FTM_OUTINIT_CH0OI_MASK 0x1u +#define FTM_OUTINIT_CH0OI_SHIFT 0 +#define FTM_OUTINIT_CH1OI_MASK 0x2u +#define FTM_OUTINIT_CH1OI_SHIFT 1 +#define FTM_OUTINIT_CH2OI_MASK 0x4u +#define FTM_OUTINIT_CH2OI_SHIFT 2 +#define FTM_OUTINIT_CH3OI_MASK 0x8u +#define FTM_OUTINIT_CH3OI_SHIFT 3 +#define FTM_OUTINIT_CH4OI_MASK 0x10u +#define FTM_OUTINIT_CH4OI_SHIFT 4 +#define FTM_OUTINIT_CH5OI_MASK 0x20u +#define FTM_OUTINIT_CH5OI_SHIFT 5 +#define FTM_OUTINIT_CH6OI_MASK 0x40u +#define FTM_OUTINIT_CH6OI_SHIFT 6 +#define FTM_OUTINIT_CH7OI_MASK 0x80u +#define FTM_OUTINIT_CH7OI_SHIFT 7 +/* OUTMASK Bit Fields */ +#define FTM_OUTMASK_CH0OM_MASK 0x1u +#define FTM_OUTMASK_CH0OM_SHIFT 0 +#define FTM_OUTMASK_CH1OM_MASK 0x2u +#define FTM_OUTMASK_CH1OM_SHIFT 1 +#define FTM_OUTMASK_CH2OM_MASK 0x4u +#define FTM_OUTMASK_CH2OM_SHIFT 2 +#define FTM_OUTMASK_CH3OM_MASK 0x8u +#define FTM_OUTMASK_CH3OM_SHIFT 3 +#define FTM_OUTMASK_CH4OM_MASK 0x10u +#define FTM_OUTMASK_CH4OM_SHIFT 4 +#define FTM_OUTMASK_CH5OM_MASK 0x20u +#define FTM_OUTMASK_CH5OM_SHIFT 5 +#define FTM_OUTMASK_CH6OM_MASK 0x40u +#define FTM_OUTMASK_CH6OM_SHIFT 6 +#define FTM_OUTMASK_CH7OM_MASK 0x80u +#define FTM_OUTMASK_CH7OM_SHIFT 7 +/* COMBINE Bit Fields */ +#define FTM_COMBINE_COMBINE0_MASK 0x1u +#define FTM_COMBINE_COMBINE0_SHIFT 0 +#define FTM_COMBINE_COMP0_MASK 0x2u +#define FTM_COMBINE_COMP0_SHIFT 1 +#define FTM_COMBINE_DECAPEN0_MASK 0x4u +#define FTM_COMBINE_DECAPEN0_SHIFT 2 +#define FTM_COMBINE_DECAP0_MASK 0x8u +#define FTM_COMBINE_DECAP0_SHIFT 3 +#define FTM_COMBINE_DTEN0_MASK 0x10u +#define FTM_COMBINE_DTEN0_SHIFT 4 +#define FTM_COMBINE_SYNCEN0_MASK 0x20u +#define FTM_COMBINE_SYNCEN0_SHIFT 5 +#define FTM_COMBINE_FAULTEN0_MASK 0x40u +#define FTM_COMBINE_FAULTEN0_SHIFT 6 +#define FTM_COMBINE_COMBINE1_MASK 0x100u +#define FTM_COMBINE_COMBINE1_SHIFT 8 +#define FTM_COMBINE_COMP1_MASK 0x200u +#define FTM_COMBINE_COMP1_SHIFT 9 +#define FTM_COMBINE_DECAPEN1_MASK 0x400u +#define FTM_COMBINE_DECAPEN1_SHIFT 10 +#define FTM_COMBINE_DECAP1_MASK 0x800u +#define FTM_COMBINE_DECAP1_SHIFT 11 +#define FTM_COMBINE_DTEN1_MASK 0x1000u +#define FTM_COMBINE_DTEN1_SHIFT 12 +#define FTM_COMBINE_SYNCEN1_MASK 0x2000u +#define FTM_COMBINE_SYNCEN1_SHIFT 13 +#define FTM_COMBINE_FAULTEN1_MASK 0x4000u +#define FTM_COMBINE_FAULTEN1_SHIFT 14 +#define FTM_COMBINE_COMBINE2_MASK 0x10000u +#define FTM_COMBINE_COMBINE2_SHIFT 16 +#define FTM_COMBINE_COMP2_MASK 0x20000u +#define FTM_COMBINE_COMP2_SHIFT 17 +#define FTM_COMBINE_DECAPEN2_MASK 0x40000u +#define FTM_COMBINE_DECAPEN2_SHIFT 18 +#define FTM_COMBINE_DECAP2_MASK 0x80000u +#define FTM_COMBINE_DECAP2_SHIFT 19 +#define FTM_COMBINE_DTEN2_MASK 0x100000u +#define FTM_COMBINE_DTEN2_SHIFT 20 +#define FTM_COMBINE_SYNCEN2_MASK 0x200000u +#define FTM_COMBINE_SYNCEN2_SHIFT 21 +#define FTM_COMBINE_FAULTEN2_MASK 0x400000u +#define FTM_COMBINE_FAULTEN2_SHIFT 22 +#define FTM_COMBINE_COMBINE3_MASK 0x1000000u +#define FTM_COMBINE_COMBINE3_SHIFT 24 +#define FTM_COMBINE_COMP3_MASK 0x2000000u +#define FTM_COMBINE_COMP3_SHIFT 25 +#define FTM_COMBINE_DECAPEN3_MASK 0x4000000u +#define FTM_COMBINE_DECAPEN3_SHIFT 26 +#define FTM_COMBINE_DECAP3_MASK 0x8000000u +#define FTM_COMBINE_DECAP3_SHIFT 27 +#define FTM_COMBINE_DTEN3_MASK 0x10000000u +#define FTM_COMBINE_DTEN3_SHIFT 28 +#define FTM_COMBINE_SYNCEN3_MASK 0x20000000u +#define FTM_COMBINE_SYNCEN3_SHIFT 29 +#define FTM_COMBINE_FAULTEN3_MASK 0x40000000u +#define FTM_COMBINE_FAULTEN3_SHIFT 30 +/* DEADTIME Bit Fields */ +#define FTM_DEADTIME_DTVAL_MASK 0x3Fu +#define FTM_DEADTIME_DTVAL_SHIFT 0 +#define FTM_DEADTIME_DTVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_DEADTIME_DTVAL_SHIFT))&FTM_DEADTIME_DTVAL_MASK) +#define FTM_DEADTIME_DTPS_MASK 0xC0u +#define FTM_DEADTIME_DTPS_SHIFT 6 +#define FTM_DEADTIME_DTPS(x) (((uint32_t)(((uint32_t)(x))<<FTM_DEADTIME_DTPS_SHIFT))&FTM_DEADTIME_DTPS_MASK) +/* EXTTRIG Bit Fields */ +#define FTM_EXTTRIG_CH2TRIG_MASK 0x1u +#define FTM_EXTTRIG_CH2TRIG_SHIFT 0 +#define FTM_EXTTRIG_CH3TRIG_MASK 0x2u +#define FTM_EXTTRIG_CH3TRIG_SHIFT 1 +#define FTM_EXTTRIG_CH4TRIG_MASK 0x4u +#define FTM_EXTTRIG_CH4TRIG_SHIFT 2 +#define FTM_EXTTRIG_CH5TRIG_MASK 0x8u +#define FTM_EXTTRIG_CH5TRIG_SHIFT 3 +#define FTM_EXTTRIG_CH0TRIG_MASK 0x10u +#define FTM_EXTTRIG_CH0TRIG_SHIFT 4 +#define FTM_EXTTRIG_CH1TRIG_MASK 0x20u +#define FTM_EXTTRIG_CH1TRIG_SHIFT 5 +#define FTM_EXTTRIG_INITTRIGEN_MASK 0x40u +#define FTM_EXTTRIG_INITTRIGEN_SHIFT 6 +#define FTM_EXTTRIG_TRIGF_MASK 0x80u +#define FTM_EXTTRIG_TRIGF_SHIFT 7 +/* POL Bit Fields */ +#define FTM_POL_POL0_MASK 0x1u +#define FTM_POL_POL0_SHIFT 0 +#define FTM_POL_POL1_MASK 0x2u +#define FTM_POL_POL1_SHIFT 1 +#define FTM_POL_POL2_MASK 0x4u +#define FTM_POL_POL2_SHIFT 2 +#define FTM_POL_POL3_MASK 0x8u +#define FTM_POL_POL3_SHIFT 3 +#define FTM_POL_POL4_MASK 0x10u +#define FTM_POL_POL4_SHIFT 4 +#define FTM_POL_POL5_MASK 0x20u +#define FTM_POL_POL5_SHIFT 5 +#define FTM_POL_POL6_MASK 0x40u +#define FTM_POL_POL6_SHIFT 6 +#define FTM_POL_POL7_MASK 0x80u +#define FTM_POL_POL7_SHIFT 7 +/* FMS Bit Fields */ +#define FTM_FMS_FAULTF0_MASK 0x1u +#define FTM_FMS_FAULTF0_SHIFT 0 +#define FTM_FMS_FAULTF1_MASK 0x2u +#define FTM_FMS_FAULTF1_SHIFT 1 +#define FTM_FMS_FAULTF2_MASK 0x4u +#define FTM_FMS_FAULTF2_SHIFT 2 +#define FTM_FMS_FAULTF3_MASK 0x8u +#define FTM_FMS_FAULTF3_SHIFT 3 +#define FTM_FMS_FAULTIN_MASK 0x20u +#define FTM_FMS_FAULTIN_SHIFT 5 +#define FTM_FMS_WPEN_MASK 0x40u +#define FTM_FMS_WPEN_SHIFT 6 +#define FTM_FMS_FAULTF_MASK 0x80u +#define FTM_FMS_FAULTF_SHIFT 7 +/* FILTER Bit Fields */ +#define FTM_FILTER_CH0FVAL_MASK 0xFu +#define FTM_FILTER_CH0FVAL_SHIFT 0 +#define FTM_FILTER_CH0FVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FILTER_CH0FVAL_SHIFT))&FTM_FILTER_CH0FVAL_MASK) +#define FTM_FILTER_CH1FVAL_MASK 0xF0u +#define FTM_FILTER_CH1FVAL_SHIFT 4 +#define FTM_FILTER_CH1FVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FILTER_CH1FVAL_SHIFT))&FTM_FILTER_CH1FVAL_MASK) +#define FTM_FILTER_CH2FVAL_MASK 0xF00u +#define FTM_FILTER_CH2FVAL_SHIFT 8 +#define FTM_FILTER_CH2FVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FILTER_CH2FVAL_SHIFT))&FTM_FILTER_CH2FVAL_MASK) +#define FTM_FILTER_CH3FVAL_MASK 0xF000u +#define FTM_FILTER_CH3FVAL_SHIFT 12 +#define FTM_FILTER_CH3FVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FILTER_CH3FVAL_SHIFT))&FTM_FILTER_CH3FVAL_MASK) +/* FLTCTRL Bit Fields */ +#define FTM_FLTCTRL_FAULT0EN_MASK 0x1u +#define FTM_FLTCTRL_FAULT0EN_SHIFT 0 +#define FTM_FLTCTRL_FAULT1EN_MASK 0x2u +#define FTM_FLTCTRL_FAULT1EN_SHIFT 1 +#define FTM_FLTCTRL_FAULT2EN_MASK 0x4u +#define FTM_FLTCTRL_FAULT2EN_SHIFT 2 +#define FTM_FLTCTRL_FAULT3EN_MASK 0x8u +#define FTM_FLTCTRL_FAULT3EN_SHIFT 3 +#define FTM_FLTCTRL_FFLTR0EN_MASK 0x10u +#define FTM_FLTCTRL_FFLTR0EN_SHIFT 4 +#define FTM_FLTCTRL_FFLTR1EN_MASK 0x20u +#define FTM_FLTCTRL_FFLTR1EN_SHIFT 5 +#define FTM_FLTCTRL_FFLTR2EN_MASK 0x40u +#define FTM_FLTCTRL_FFLTR2EN_SHIFT 6 +#define FTM_FLTCTRL_FFLTR3EN_MASK 0x80u +#define FTM_FLTCTRL_FFLTR3EN_SHIFT 7 +#define FTM_FLTCTRL_FFVAL_MASK 0xF00u +#define FTM_FLTCTRL_FFVAL_SHIFT 8 +#define FTM_FLTCTRL_FFVAL(x) (((uint32_t)(((uint32_t)(x))<<FTM_FLTCTRL_FFVAL_SHIFT))&FTM_FLTCTRL_FFVAL_MASK) +/* QDCTRL Bit Fields */ +#define FTM_QDCTRL_QUADEN_MASK 0x1u +#define FTM_QDCTRL_QUADEN_SHIFT 0 +#define FTM_QDCTRL_TOFDIR_MASK 0x2u +#define FTM_QDCTRL_TOFDIR_SHIFT 1 +#define FTM_QDCTRL_QUADIR_MASK 0x4u +#define FTM_QDCTRL_QUADIR_SHIFT 2 +#define FTM_QDCTRL_QUADMODE_MASK 0x8u +#define FTM_QDCTRL_QUADMODE_SHIFT 3 +#define FTM_QDCTRL_PHBPOL_MASK 0x10u +#define FTM_QDCTRL_PHBPOL_SHIFT 4 +#define FTM_QDCTRL_PHAPOL_MASK 0x20u +#define FTM_QDCTRL_PHAPOL_SHIFT 5 +#define FTM_QDCTRL_PHBFLTREN_MASK 0x40u +#define FTM_QDCTRL_PHBFLTREN_SHIFT 6 +#define FTM_QDCTRL_PHAFLTREN_MASK 0x80u +#define FTM_QDCTRL_PHAFLTREN_SHIFT 7 +/* CONF Bit Fields */ +#define FTM_CONF_NUMTOF_MASK 0x1Fu +#define FTM_CONF_NUMTOF_SHIFT 0 +#define FTM_CONF_NUMTOF(x) (((uint32_t)(((uint32_t)(x))<<FTM_CONF_NUMTOF_SHIFT))&FTM_CONF_NUMTOF_MASK) +#define FTM_CONF_BDMMODE_MASK 0xC0u +#define FTM_CONF_BDMMODE_SHIFT 6 +#define FTM_CONF_BDMMODE(x) (((uint32_t)(((uint32_t)(x))<<FTM_CONF_BDMMODE_SHIFT))&FTM_CONF_BDMMODE_MASK) +#define FTM_CONF_GTBEEN_MASK 0x200u +#define FTM_CONF_GTBEEN_SHIFT 9 +#define FTM_CONF_GTBEOUT_MASK 0x400u +#define FTM_CONF_GTBEOUT_SHIFT 10 +/* FLTPOL Bit Fields */ +#define FTM_FLTPOL_FLT0POL_MASK 0x1u +#define FTM_FLTPOL_FLT0POL_SHIFT 0 +#define FTM_FLTPOL_FLT1POL_MASK 0x2u +#define FTM_FLTPOL_FLT1POL_SHIFT 1 +#define FTM_FLTPOL_FLT2POL_MASK 0x4u +#define FTM_FLTPOL_FLT2POL_SHIFT 2 +#define FTM_FLTPOL_FLT3POL_MASK 0x8u +#define FTM_FLTPOL_FLT3POL_SHIFT 3 +/* SYNCONF Bit Fields */ +#define FTM_SYNCONF_HWTRIGMODE_MASK 0x1u +#define FTM_SYNCONF_HWTRIGMODE_SHIFT 0 +#define FTM_SYNCONF_CNTINC_MASK 0x4u +#define FTM_SYNCONF_CNTINC_SHIFT 2 +#define FTM_SYNCONF_INVC_MASK 0x10u +#define FTM_SYNCONF_INVC_SHIFT 4 +#define FTM_SYNCONF_SWOC_MASK 0x20u +#define FTM_SYNCONF_SWOC_SHIFT 5 +#define FTM_SYNCONF_SYNCMODE_MASK 0x80u +#define FTM_SYNCONF_SYNCMODE_SHIFT 7 +#define FTM_SYNCONF_SWRSTCNT_MASK 0x100u +#define FTM_SYNCONF_SWRSTCNT_SHIFT 8 +#define FTM_SYNCONF_SWWRBUF_MASK 0x200u +#define FTM_SYNCONF_SWWRBUF_SHIFT 9 +#define FTM_SYNCONF_SWOM_MASK 0x400u +#define FTM_SYNCONF_SWOM_SHIFT 10 +#define FTM_SYNCONF_SWINVC_MASK 0x800u +#define FTM_SYNCONF_SWINVC_SHIFT 11 +#define FTM_SYNCONF_SWSOC_MASK 0x1000u +#define FTM_SYNCONF_SWSOC_SHIFT 12 +#define FTM_SYNCONF_HWRSTCNT_MASK 0x10000u +#define FTM_SYNCONF_HWRSTCNT_SHIFT 16 +#define FTM_SYNCONF_HWWRBUF_MASK 0x20000u +#define FTM_SYNCONF_HWWRBUF_SHIFT 17 +#define FTM_SYNCONF_HWOM_MASK 0x40000u +#define FTM_SYNCONF_HWOM_SHIFT 18 +#define FTM_SYNCONF_HWINVC_MASK 0x80000u +#define FTM_SYNCONF_HWINVC_SHIFT 19 +#define FTM_SYNCONF_HWSOC_MASK 0x100000u +#define FTM_SYNCONF_HWSOC_SHIFT 20 +/* INVCTRL Bit Fields */ +#define FTM_INVCTRL_INV0EN_MASK 0x1u +#define FTM_INVCTRL_INV0EN_SHIFT 0 +#define FTM_INVCTRL_INV1EN_MASK 0x2u +#define FTM_INVCTRL_INV1EN_SHIFT 1 +#define FTM_INVCTRL_INV2EN_MASK 0x4u +#define FTM_INVCTRL_INV2EN_SHIFT 2 +#define FTM_INVCTRL_INV3EN_MASK 0x8u +#define FTM_INVCTRL_INV3EN_SHIFT 3 +/* SWOCTRL Bit Fields */ +#define FTM_SWOCTRL_CH0OC_MASK 0x1u +#define FTM_SWOCTRL_CH0OC_SHIFT 0 +#define FTM_SWOCTRL_CH1OC_MASK 0x2u +#define FTM_SWOCTRL_CH1OC_SHIFT 1 +#define FTM_SWOCTRL_CH2OC_MASK 0x4u +#define FTM_SWOCTRL_CH2OC_SHIFT 2 +#define FTM_SWOCTRL_CH3OC_MASK 0x8u +#define FTM_SWOCTRL_CH3OC_SHIFT 3 +#define FTM_SWOCTRL_CH4OC_MASK 0x10u +#define FTM_SWOCTRL_CH4OC_SHIFT 4 +#define FTM_SWOCTRL_CH5OC_MASK 0x20u +#define FTM_SWOCTRL_CH5OC_SHIFT 5 +#define FTM_SWOCTRL_CH6OC_MASK 0x40u +#define FTM_SWOCTRL_CH6OC_SHIFT 6 +#define FTM_SWOCTRL_CH7OC_MASK 0x80u +#define FTM_SWOCTRL_CH7OC_SHIFT 7 +#define FTM_SWOCTRL_CH0OCV_MASK 0x100u +#define FTM_SWOCTRL_CH0OCV_SHIFT 8 +#define FTM_SWOCTRL_CH1OCV_MASK 0x200u +#define FTM_SWOCTRL_CH1OCV_SHIFT 9 +#define FTM_SWOCTRL_CH2OCV_MASK 0x400u +#define FTM_SWOCTRL_CH2OCV_SHIFT 10 +#define FTM_SWOCTRL_CH3OCV_MASK 0x800u +#define FTM_SWOCTRL_CH3OCV_SHIFT 11 +#define FTM_SWOCTRL_CH4OCV_MASK 0x1000u +#define FTM_SWOCTRL_CH4OCV_SHIFT 12 +#define FTM_SWOCTRL_CH5OCV_MASK 0x2000u +#define FTM_SWOCTRL_CH5OCV_SHIFT 13 +#define FTM_SWOCTRL_CH6OCV_MASK 0x4000u +#define FTM_SWOCTRL_CH6OCV_SHIFT 14 +#define FTM_SWOCTRL_CH7OCV_MASK 0x8000u +#define FTM_SWOCTRL_CH7OCV_SHIFT 15 +/* PWMLOAD Bit Fields */ +#define FTM_PWMLOAD_CH0SEL_MASK 0x1u +#define FTM_PWMLOAD_CH0SEL_SHIFT 0 +#define FTM_PWMLOAD_CH1SEL_MASK 0x2u +#define FTM_PWMLOAD_CH1SEL_SHIFT 1 +#define FTM_PWMLOAD_CH2SEL_MASK 0x4u +#define FTM_PWMLOAD_CH2SEL_SHIFT 2 +#define FTM_PWMLOAD_CH3SEL_MASK 0x8u +#define FTM_PWMLOAD_CH3SEL_SHIFT 3 +#define FTM_PWMLOAD_CH4SEL_MASK 0x10u +#define FTM_PWMLOAD_CH4SEL_SHIFT 4 +#define FTM_PWMLOAD_CH5SEL_MASK 0x20u +#define FTM_PWMLOAD_CH5SEL_SHIFT 5 +#define FTM_PWMLOAD_CH6SEL_MASK 0x40u +#define FTM_PWMLOAD_CH6SEL_SHIFT 6 +#define FTM_PWMLOAD_CH7SEL_MASK 0x80u +#define FTM_PWMLOAD_CH7SEL_SHIFT 7 +#define FTM_PWMLOAD_LDOK_MASK 0x200u +#define FTM_PWMLOAD_LDOK_SHIFT 9 + +/*! + * @} + */ /* end of group FTM_Register_Masks */ + + +/* FTM - Peripheral instance base addresses */ +/** Peripheral FTM0 base address */ +#define FTM0_BASE (0x40038000u) +/** Peripheral FTM0 base pointer */ +#define FTM0 ((FTM_Type *)FTM0_BASE) +#define FTM0_BASE_PTR (FTM0) +/** Peripheral FTM1 base address */ +#define FTM1_BASE (0x40039000u) +/** Peripheral FTM1 base pointer */ +#define FTM1 ((FTM_Type *)FTM1_BASE) +#define FTM1_BASE_PTR (FTM1) +/** Peripheral FTM2 base address */ +#define FTM2_BASE (0x4003A000u) +/** Peripheral FTM2 base pointer */ +#define FTM2 ((FTM_Type *)FTM2_BASE) +#define FTM2_BASE_PTR (FTM2) +/** Peripheral FTM3 base address */ +#define FTM3_BASE (0x400B9000u) +/** Peripheral FTM3 base pointer */ +#define FTM3 ((FTM_Type *)FTM3_BASE) +#define FTM3_BASE_PTR (FTM3) +/** Array initializer of FTM peripheral base pointers */ +#define FTM_BASES { FTM0, FTM1, FTM2, FTM3 } + +/* ---------------------------------------------------------------------------- + -- FTM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup FTM_Register_Accessor_Macros FTM - Register accessor macros + * @{ + */ + + +/* FTM - Register instance definitions */ +/* FTM0 */ +#define FTM0_SC FTM_SC_REG(FTM0) +#define FTM0_CNT FTM_CNT_REG(FTM0) +#define FTM0_MOD FTM_MOD_REG(FTM0) +#define FTM0_C0SC FTM_CnSC_REG(FTM0,0) +#define FTM0_C0V FTM_CnV_REG(FTM0,0) +#define FTM0_C1SC FTM_CnSC_REG(FTM0,1) +#define FTM0_C1V FTM_CnV_REG(FTM0,1) +#define FTM0_C2SC FTM_CnSC_REG(FTM0,2) +#define FTM0_C2V FTM_CnV_REG(FTM0,2) +#define FTM0_C3SC FTM_CnSC_REG(FTM0,3) +#define FTM0_C3V FTM_CnV_REG(FTM0,3) +#define FTM0_C4SC FTM_CnSC_REG(FTM0,4) +#define FTM0_C4V FTM_CnV_REG(FTM0,4) +#define FTM0_C5SC FTM_CnSC_REG(FTM0,5) +#define FTM0_C5V FTM_CnV_REG(FTM0,5) +#define FTM0_C6SC FTM_CnSC_REG(FTM0,6) +#define FTM0_C6V FTM_CnV_REG(FTM0,6) +#define FTM0_C7SC FTM_CnSC_REG(FTM0,7) +#define FTM0_C7V FTM_CnV_REG(FTM0,7) +#define FTM0_CNTIN FTM_CNTIN_REG(FTM0) +#define FTM0_STATUS FTM_STATUS_REG(FTM0) +#define FTM0_MODE FTM_MODE_REG(FTM0) +#define FTM0_SYNC FTM_SYNC_REG(FTM0) +#define FTM0_OUTINIT FTM_OUTINIT_REG(FTM0) +#define FTM0_OUTMASK FTM_OUTMASK_REG(FTM0) +#define FTM0_COMBINE FTM_COMBINE_REG(FTM0) +#define FTM0_DEADTIME FTM_DEADTIME_REG(FTM0) +#define FTM0_EXTTRIG FTM_EXTTRIG_REG(FTM0) +#define FTM0_POL FTM_POL_REG(FTM0) +#define FTM0_FMS FTM_FMS_REG(FTM0) +#define FTM0_FILTER FTM_FILTER_REG(FTM0) +#define FTM0_FLTCTRL FTM_FLTCTRL_REG(FTM0) +#define FTM0_QDCTRL FTM_QDCTRL_REG(FTM0) +#define FTM0_CONF FTM_CONF_REG(FTM0) +#define FTM0_FLTPOL FTM_FLTPOL_REG(FTM0) +#define FTM0_SYNCONF FTM_SYNCONF_REG(FTM0) +#define FTM0_INVCTRL FTM_INVCTRL_REG(FTM0) +#define FTM0_SWOCTRL FTM_SWOCTRL_REG(FTM0) +#define FTM0_PWMLOAD FTM_PWMLOAD_REG(FTM0) +/* FTM1 */ +#define FTM1_SC FTM_SC_REG(FTM1) +#define FTM1_CNT FTM_CNT_REG(FTM1) +#define FTM1_MOD FTM_MOD_REG(FTM1) +#define FTM1_C0SC FTM_CnSC_REG(FTM1,0) +#define FTM1_C0V FTM_CnV_REG(FTM1,0) +#define FTM1_C1SC FTM_CnSC_REG(FTM1,1) +#define FTM1_C1V FTM_CnV_REG(FTM1,1) +#define FTM1_CNTIN FTM_CNTIN_REG(FTM1) +#define FTM1_STATUS FTM_STATUS_REG(FTM1) +#define FTM1_MODE FTM_MODE_REG(FTM1) +#define FTM1_SYNC FTM_SYNC_REG(FTM1) +#define FTM1_OUTINIT FTM_OUTINIT_REG(FTM1) +#define FTM1_OUTMASK FTM_OUTMASK_REG(FTM1) +#define FTM1_COMBINE FTM_COMBINE_REG(FTM1) +#define FTM1_DEADTIME FTM_DEADTIME_REG(FTM1) +#define FTM1_EXTTRIG FTM_EXTTRIG_REG(FTM1) +#define FTM1_POL FTM_POL_REG(FTM1) +#define FTM1_FMS FTM_FMS_REG(FTM1) +#define FTM1_FILTER FTM_FILTER_REG(FTM1) +#define FTM1_FLTCTRL FTM_FLTCTRL_REG(FTM1) +#define FTM1_QDCTRL FTM_QDCTRL_REG(FTM1) +#define FTM1_CONF FTM_CONF_REG(FTM1) +#define FTM1_FLTPOL FTM_FLTPOL_REG(FTM1) +#define FTM1_SYNCONF FTM_SYNCONF_REG(FTM1) +#define FTM1_INVCTRL FTM_INVCTRL_REG(FTM1) +#define FTM1_SWOCTRL FTM_SWOCTRL_REG(FTM1) +#define FTM1_PWMLOAD FTM_PWMLOAD_REG(FTM1) +/* FTM2 */ +#define FTM2_SC FTM_SC_REG(FTM2) +#define FTM2_CNT FTM_CNT_REG(FTM2) +#define FTM2_MOD FTM_MOD_REG(FTM2) +#define FTM2_C0SC FTM_CnSC_REG(FTM2,0) +#define FTM2_C0V FTM_CnV_REG(FTM2,0) +#define FTM2_C1SC FTM_CnSC_REG(FTM2,1) +#define FTM2_C1V FTM_CnV_REG(FTM2,1) +#define FTM2_CNTIN FTM_CNTIN_REG(FTM2) +#define FTM2_STATUS FTM_STATUS_REG(FTM2) +#define FTM2_MODE FTM_MODE_REG(FTM2) +#define FTM2_SYNC FTM_SYNC_REG(FTM2) +#define FTM2_OUTINIT FTM_OUTINIT_REG(FTM2) +#define FTM2_OUTMASK FTM_OUTMASK_REG(FTM2) +#define FTM2_COMBINE FTM_COMBINE_REG(FTM2) +#define FTM2_DEADTIME FTM_DEADTIME_REG(FTM2) +#define FTM2_EXTTRIG FTM_EXTTRIG_REG(FTM2) +#define FTM2_POL FTM_POL_REG(FTM2) +#define FTM2_FMS FTM_FMS_REG(FTM2) +#define FTM2_FILTER FTM_FILTER_REG(FTM2) +#define FTM2_FLTCTRL FTM_FLTCTRL_REG(FTM2) +#define FTM2_QDCTRL FTM_QDCTRL_REG(FTM2) +#define FTM2_CONF FTM_CONF_REG(FTM2) +#define FTM2_FLTPOL FTM_FLTPOL_REG(FTM2) +#define FTM2_SYNCONF FTM_SYNCONF_REG(FTM2) +#define FTM2_INVCTRL FTM_INVCTRL_REG(FTM2) +#define FTM2_SWOCTRL FTM_SWOCTRL_REG(FTM2) +#define FTM2_PWMLOAD FTM_PWMLOAD_REG(FTM2) +/* FTM3 */ +#define FTM3_SC FTM_SC_REG(FTM3) +#define FTM3_CNT FTM_CNT_REG(FTM3) +#define FTM3_MOD FTM_MOD_REG(FTM3) +#define FTM3_C0SC FTM_CnSC_REG(FTM3,0) +#define FTM3_C0V FTM_CnV_REG(FTM3,0) +#define FTM3_C1SC FTM_CnSC_REG(FTM3,1) +#define FTM3_C1V FTM_CnV_REG(FTM3,1) +#define FTM3_C2SC FTM_CnSC_REG(FTM3,2) +#define FTM3_C2V FTM_CnV_REG(FTM3,2) +#define FTM3_C3SC FTM_CnSC_REG(FTM3,3) +#define FTM3_C3V FTM_CnV_REG(FTM3,3) +#define FTM3_C4SC FTM_CnSC_REG(FTM3,4) +#define FTM3_C4V FTM_CnV_REG(FTM3,4) +#define FTM3_C5SC FTM_CnSC_REG(FTM3,5) +#define FTM3_C5V FTM_CnV_REG(FTM3,5) +#define FTM3_C6SC FTM_CnSC_REG(FTM3,6) +#define FTM3_C6V FTM_CnV_REG(FTM3,6) +#define FTM3_C7SC FTM_CnSC_REG(FTM3,7) +#define FTM3_C7V FTM_CnV_REG(FTM3,7) +#define FTM3_CNTIN FTM_CNTIN_REG(FTM3) +#define FTM3_STATUS FTM_STATUS_REG(FTM3) +#define FTM3_MODE FTM_MODE_REG(FTM3) +#define FTM3_SYNC FTM_SYNC_REG(FTM3) +#define FTM3_OUTINIT FTM_OUTINIT_REG(FTM3) +#define FTM3_OUTMASK FTM_OUTMASK_REG(FTM3) +#define FTM3_COMBINE FTM_COMBINE_REG(FTM3) +#define FTM3_DEADTIME FTM_DEADTIME_REG(FTM3) +#define FTM3_EXTTRIG FTM_EXTTRIG_REG(FTM3) +#define FTM3_POL FTM_POL_REG(FTM3) +#define FTM3_FMS FTM_FMS_REG(FTM3) +#define FTM3_FILTER FTM_FILTER_REG(FTM3) +#define FTM3_FLTCTRL FTM_FLTCTRL_REG(FTM3) +#define FTM3_QDCTRL FTM_QDCTRL_REG(FTM3) +#define FTM3_CONF FTM_CONF_REG(FTM3) +#define FTM3_FLTPOL FTM_FLTPOL_REG(FTM3) +#define FTM3_SYNCONF FTM_SYNCONF_REG(FTM3) +#define FTM3_INVCTRL FTM_INVCTRL_REG(FTM3) +#define FTM3_SWOCTRL FTM_SWOCTRL_REG(FTM3) +#define FTM3_PWMLOAD FTM_PWMLOAD_REG(FTM3) + +/* FTM - Register array accessors */ +#define FTM0_CnSC(index) FTM_CnSC_REG(FTM0,index) +#define FTM1_CnSC(index) FTM_CnSC_REG(FTM1,index) +#define FTM2_CnSC(index) FTM_CnSC_REG(FTM2,index) +#define FTM3_CnSC(index) FTM_CnSC_REG(FTM3,index) +#define FTM0_CnV(index) FTM_CnV_REG(FTM0,index) +#define FTM1_CnV(index) FTM_CnV_REG(FTM1,index) +#define FTM2_CnV(index) FTM_CnV_REG(FTM2,index) +#define FTM3_CnV(index) FTM_CnV_REG(FTM3,index) + +/*! + * @} + */ /* end of group FTM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group FTM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- GPIO Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup GPIO_Peripheral_Access_Layer GPIO Peripheral Access Layer + * @{ + */ + +/** GPIO - Register Layout Typedef */ +typedef struct { + __IO uint32_t PDOR; /**< Port Data Output Register, offset: 0x0 */ + __O uint32_t PSOR; /**< Port Set Output Register, offset: 0x4 */ + __O uint32_t PCOR; /**< Port Clear Output Register, offset: 0x8 */ + __O uint32_t PTOR; /**< Port Toggle Output Register, offset: 0xC */ + __I uint32_t PDIR; /**< Port Data Input Register, offset: 0x10 */ + __IO uint32_t PDDR; /**< Port Data Direction Register, offset: 0x14 */ +} GPIO_Type, *GPIO_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- GPIO - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup GPIO_Register_Accessor_Macros GPIO - Register accessor macros + * @{ + */ + + +/* GPIO - Register accessors */ +#define GPIO_PDOR_REG(base) ((base)->PDOR) +#define GPIO_PSOR_REG(base) ((base)->PSOR) +#define GPIO_PCOR_REG(base) ((base)->PCOR) +#define GPIO_PTOR_REG(base) ((base)->PTOR) +#define GPIO_PDIR_REG(base) ((base)->PDIR) +#define GPIO_PDDR_REG(base) ((base)->PDDR) + +/*! + * @} + */ /* end of group GPIO_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- GPIO Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup GPIO_Register_Masks GPIO Register Masks + * @{ + */ + +/* PDOR Bit Fields */ +#define GPIO_PDOR_PDO_MASK 0xFFFFFFFFu +#define GPIO_PDOR_PDO_SHIFT 0 +#define GPIO_PDOR_PDO(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PDOR_PDO_SHIFT))&GPIO_PDOR_PDO_MASK) +/* PSOR Bit Fields */ +#define GPIO_PSOR_PTSO_MASK 0xFFFFFFFFu +#define GPIO_PSOR_PTSO_SHIFT 0 +#define GPIO_PSOR_PTSO(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PSOR_PTSO_SHIFT))&GPIO_PSOR_PTSO_MASK) +/* PCOR Bit Fields */ +#define GPIO_PCOR_PTCO_MASK 0xFFFFFFFFu +#define GPIO_PCOR_PTCO_SHIFT 0 +#define GPIO_PCOR_PTCO(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PCOR_PTCO_SHIFT))&GPIO_PCOR_PTCO_MASK) +/* PTOR Bit Fields */ +#define GPIO_PTOR_PTTO_MASK 0xFFFFFFFFu +#define GPIO_PTOR_PTTO_SHIFT 0 +#define GPIO_PTOR_PTTO(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PTOR_PTTO_SHIFT))&GPIO_PTOR_PTTO_MASK) +/* PDIR Bit Fields */ +#define GPIO_PDIR_PDI_MASK 0xFFFFFFFFu +#define GPIO_PDIR_PDI_SHIFT 0 +#define GPIO_PDIR_PDI(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PDIR_PDI_SHIFT))&GPIO_PDIR_PDI_MASK) +/* PDDR Bit Fields */ +#define GPIO_PDDR_PDD_MASK 0xFFFFFFFFu +#define GPIO_PDDR_PDD_SHIFT 0 +#define GPIO_PDDR_PDD(x) (((uint32_t)(((uint32_t)(x))<<GPIO_PDDR_PDD_SHIFT))&GPIO_PDDR_PDD_MASK) + +/*! + * @} + */ /* end of group GPIO_Register_Masks */ + + +/* GPIO - Peripheral instance base addresses */ +/** Peripheral PTA base address */ +#define PTA_BASE (0x400FF000u) +/** Peripheral PTA base pointer */ +#define PTA ((GPIO_Type *)PTA_BASE) +#define PTA_BASE_PTR (PTA) +/** Peripheral PTB base address */ +#define PTB_BASE (0x400FF040u) +/** Peripheral PTB base pointer */ +#define PTB ((GPIO_Type *)PTB_BASE) +#define PTB_BASE_PTR (PTB) +/** Peripheral PTC base address */ +#define PTC_BASE (0x400FF080u) +/** Peripheral PTC base pointer */ +#define PTC ((GPIO_Type *)PTC_BASE) +#define PTC_BASE_PTR (PTC) +/** Peripheral PTD base address */ +#define PTD_BASE (0x400FF0C0u) +/** Peripheral PTD base pointer */ +#define PTD ((GPIO_Type *)PTD_BASE) +#define PTD_BASE_PTR (PTD) +/** Peripheral PTE base address */ +#define PTE_BASE (0x400FF100u) +/** Peripheral PTE base pointer */ +#define PTE ((GPIO_Type *)PTE_BASE) +#define PTE_BASE_PTR (PTE) +/** Array initializer of GPIO peripheral base pointers */ +#define GPIO_BASES { PTA, PTB, PTC, PTD, PTE } + +/* ---------------------------------------------------------------------------- + -- GPIO - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup GPIO_Register_Accessor_Macros GPIO - Register accessor macros + * @{ + */ + + +/* GPIO - Register instance definitions */ +/* PTA */ +#define GPIOA_PDOR GPIO_PDOR_REG(PTA) +#define GPIOA_PSOR GPIO_PSOR_REG(PTA) +#define GPIOA_PCOR GPIO_PCOR_REG(PTA) +#define GPIOA_PTOR GPIO_PTOR_REG(PTA) +#define GPIOA_PDIR GPIO_PDIR_REG(PTA) +#define GPIOA_PDDR GPIO_PDDR_REG(PTA) +/* PTB */ +#define GPIOB_PDOR GPIO_PDOR_REG(PTB) +#define GPIOB_PSOR GPIO_PSOR_REG(PTB) +#define GPIOB_PCOR GPIO_PCOR_REG(PTB) +#define GPIOB_PTOR GPIO_PTOR_REG(PTB) +#define GPIOB_PDIR GPIO_PDIR_REG(PTB) +#define GPIOB_PDDR GPIO_PDDR_REG(PTB) +/* PTC */ +#define GPIOC_PDOR GPIO_PDOR_REG(PTC) +#define GPIOC_PSOR GPIO_PSOR_REG(PTC) +#define GPIOC_PCOR GPIO_PCOR_REG(PTC) +#define GPIOC_PTOR GPIO_PTOR_REG(PTC) +#define GPIOC_PDIR GPIO_PDIR_REG(PTC) +#define GPIOC_PDDR GPIO_PDDR_REG(PTC) +/* PTD */ +#define GPIOD_PDOR GPIO_PDOR_REG(PTD) +#define GPIOD_PSOR GPIO_PSOR_REG(PTD) +#define GPIOD_PCOR GPIO_PCOR_REG(PTD) +#define GPIOD_PTOR GPIO_PTOR_REG(PTD) +#define GPIOD_PDIR GPIO_PDIR_REG(PTD) +#define GPIOD_PDDR GPIO_PDDR_REG(PTD) +/* PTE */ +#define GPIOE_PDOR GPIO_PDOR_REG(PTE) +#define GPIOE_PSOR GPIO_PSOR_REG(PTE) +#define GPIOE_PCOR GPIO_PCOR_REG(PTE) +#define GPIOE_PTOR GPIO_PTOR_REG(PTE) +#define GPIOE_PDIR GPIO_PDIR_REG(PTE) +#define GPIOE_PDDR GPIO_PDDR_REG(PTE) + +/*! + * @} + */ /* end of group GPIO_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group GPIO_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- I2C Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2C_Peripheral_Access_Layer I2C Peripheral Access Layer + * @{ + */ + +/** I2C - Register Layout Typedef */ +typedef struct { + __IO uint8_t A1; /**< I2C Address Register 1, offset: 0x0 */ + __IO uint8_t F; /**< I2C Frequency Divider register, offset: 0x1 */ + __IO uint8_t C1; /**< I2C Control Register 1, offset: 0x2 */ + __IO uint8_t S; /**< I2C Status register, offset: 0x3 */ + __IO uint8_t D; /**< I2C Data I/O register, offset: 0x4 */ + __IO uint8_t C2; /**< I2C Control Register 2, offset: 0x5 */ + __IO uint8_t FLT; /**< I2C Programmable Input Glitch Filter register, offset: 0x6 */ + __IO uint8_t RA; /**< I2C Range Address register, offset: 0x7 */ + __IO uint8_t SMB; /**< I2C SMBus Control and Status register, offset: 0x8 */ + __IO uint8_t A2; /**< I2C Address Register 2, offset: 0x9 */ + __IO uint8_t SLTH; /**< I2C SCL Low Timeout Register High, offset: 0xA */ + __IO uint8_t SLTL; /**< I2C SCL Low Timeout Register Low, offset: 0xB */ +} I2C_Type, *I2C_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- I2C - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2C_Register_Accessor_Macros I2C - Register accessor macros + * @{ + */ + + +/* I2C - Register accessors */ +#define I2C_A1_REG(base) ((base)->A1) +#define I2C_F_REG(base) ((base)->F) +#define I2C_C1_REG(base) ((base)->C1) +#define I2C_S_REG(base) ((base)->S) +#define I2C_D_REG(base) ((base)->D) +#define I2C_C2_REG(base) ((base)->C2) +#define I2C_FLT_REG(base) ((base)->FLT) +#define I2C_RA_REG(base) ((base)->RA) +#define I2C_SMB_REG(base) ((base)->SMB) +#define I2C_A2_REG(base) ((base)->A2) +#define I2C_SLTH_REG(base) ((base)->SLTH) +#define I2C_SLTL_REG(base) ((base)->SLTL) + +/*! + * @} + */ /* end of group I2C_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- I2C Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2C_Register_Masks I2C Register Masks + * @{ + */ + +/* A1 Bit Fields */ +#define I2C_A1_AD_MASK 0xFEu +#define I2C_A1_AD_SHIFT 1 +#define I2C_A1_AD(x) (((uint8_t)(((uint8_t)(x))<<I2C_A1_AD_SHIFT))&I2C_A1_AD_MASK) +/* F Bit Fields */ +#define I2C_F_ICR_MASK 0x3Fu +#define I2C_F_ICR_SHIFT 0 +#define I2C_F_ICR(x) (((uint8_t)(((uint8_t)(x))<<I2C_F_ICR_SHIFT))&I2C_F_ICR_MASK) +#define I2C_F_MULT_MASK 0xC0u +#define I2C_F_MULT_SHIFT 6 +#define I2C_F_MULT(x) (((uint8_t)(((uint8_t)(x))<<I2C_F_MULT_SHIFT))&I2C_F_MULT_MASK) +/* C1 Bit Fields */ +#define I2C_C1_DMAEN_MASK 0x1u +#define I2C_C1_DMAEN_SHIFT 0 +#define I2C_C1_WUEN_MASK 0x2u +#define I2C_C1_WUEN_SHIFT 1 +#define I2C_C1_RSTA_MASK 0x4u +#define I2C_C1_RSTA_SHIFT 2 +#define I2C_C1_TXAK_MASK 0x8u +#define I2C_C1_TXAK_SHIFT 3 +#define I2C_C1_TX_MASK 0x10u +#define I2C_C1_TX_SHIFT 4 +#define I2C_C1_MST_MASK 0x20u +#define I2C_C1_MST_SHIFT 5 +#define I2C_C1_IICIE_MASK 0x40u +#define I2C_C1_IICIE_SHIFT 6 +#define I2C_C1_IICEN_MASK 0x80u +#define I2C_C1_IICEN_SHIFT 7 +/* S Bit Fields */ +#define I2C_S_RXAK_MASK 0x1u +#define I2C_S_RXAK_SHIFT 0 +#define I2C_S_IICIF_MASK 0x2u +#define I2C_S_IICIF_SHIFT 1 +#define I2C_S_SRW_MASK 0x4u +#define I2C_S_SRW_SHIFT 2 +#define I2C_S_RAM_MASK 0x8u +#define I2C_S_RAM_SHIFT 3 +#define I2C_S_ARBL_MASK 0x10u +#define I2C_S_ARBL_SHIFT 4 +#define I2C_S_BUSY_MASK 0x20u +#define I2C_S_BUSY_SHIFT 5 +#define I2C_S_IAAS_MASK 0x40u +#define I2C_S_IAAS_SHIFT 6 +#define I2C_S_TCF_MASK 0x80u +#define I2C_S_TCF_SHIFT 7 +/* D Bit Fields */ +#define I2C_D_DATA_MASK 0xFFu +#define I2C_D_DATA_SHIFT 0 +#define I2C_D_DATA(x) (((uint8_t)(((uint8_t)(x))<<I2C_D_DATA_SHIFT))&I2C_D_DATA_MASK) +/* C2 Bit Fields */ +#define I2C_C2_AD_MASK 0x7u +#define I2C_C2_AD_SHIFT 0 +#define I2C_C2_AD(x) (((uint8_t)(((uint8_t)(x))<<I2C_C2_AD_SHIFT))&I2C_C2_AD_MASK) +#define I2C_C2_RMEN_MASK 0x8u +#define I2C_C2_RMEN_SHIFT 3 +#define I2C_C2_SBRC_MASK 0x10u +#define I2C_C2_SBRC_SHIFT 4 +#define I2C_C2_HDRS_MASK 0x20u +#define I2C_C2_HDRS_SHIFT 5 +#define I2C_C2_ADEXT_MASK 0x40u +#define I2C_C2_ADEXT_SHIFT 6 +#define I2C_C2_GCAEN_MASK 0x80u +#define I2C_C2_GCAEN_SHIFT 7 +/* FLT Bit Fields */ +#define I2C_FLT_FLT_MASK 0xFu +#define I2C_FLT_FLT_SHIFT 0 +#define I2C_FLT_FLT(x) (((uint8_t)(((uint8_t)(x))<<I2C_FLT_FLT_SHIFT))&I2C_FLT_FLT_MASK) +#define I2C_FLT_STARTF_MASK 0x10u +#define I2C_FLT_STARTF_SHIFT 4 +#define I2C_FLT_SSIE_MASK 0x20u +#define I2C_FLT_SSIE_SHIFT 5 +#define I2C_FLT_STOPF_MASK 0x40u +#define I2C_FLT_STOPF_SHIFT 6 +#define I2C_FLT_SHEN_MASK 0x80u +#define I2C_FLT_SHEN_SHIFT 7 +/* RA Bit Fields */ +#define I2C_RA_RAD_MASK 0xFEu +#define I2C_RA_RAD_SHIFT 1 +#define I2C_RA_RAD(x) (((uint8_t)(((uint8_t)(x))<<I2C_RA_RAD_SHIFT))&I2C_RA_RAD_MASK) +/* SMB Bit Fields */ +#define I2C_SMB_SHTF2IE_MASK 0x1u +#define I2C_SMB_SHTF2IE_SHIFT 0 +#define I2C_SMB_SHTF2_MASK 0x2u +#define I2C_SMB_SHTF2_SHIFT 1 +#define I2C_SMB_SHTF1_MASK 0x4u +#define I2C_SMB_SHTF1_SHIFT 2 +#define I2C_SMB_SLTF_MASK 0x8u +#define I2C_SMB_SLTF_SHIFT 3 +#define I2C_SMB_TCKSEL_MASK 0x10u +#define I2C_SMB_TCKSEL_SHIFT 4 +#define I2C_SMB_SIICAEN_MASK 0x20u +#define I2C_SMB_SIICAEN_SHIFT 5 +#define I2C_SMB_ALERTEN_MASK 0x40u +#define I2C_SMB_ALERTEN_SHIFT 6 +#define I2C_SMB_FACK_MASK 0x80u +#define I2C_SMB_FACK_SHIFT 7 +/* A2 Bit Fields */ +#define I2C_A2_SAD_MASK 0xFEu +#define I2C_A2_SAD_SHIFT 1 +#define I2C_A2_SAD(x) (((uint8_t)(((uint8_t)(x))<<I2C_A2_SAD_SHIFT))&I2C_A2_SAD_MASK) +/* SLTH Bit Fields */ +#define I2C_SLTH_SSLT_MASK 0xFFu +#define I2C_SLTH_SSLT_SHIFT 0 +#define I2C_SLTH_SSLT(x) (((uint8_t)(((uint8_t)(x))<<I2C_SLTH_SSLT_SHIFT))&I2C_SLTH_SSLT_MASK) +/* SLTL Bit Fields */ +#define I2C_SLTL_SSLT_MASK 0xFFu +#define I2C_SLTL_SSLT_SHIFT 0 +#define I2C_SLTL_SSLT(x) (((uint8_t)(((uint8_t)(x))<<I2C_SLTL_SSLT_SHIFT))&I2C_SLTL_SSLT_MASK) + +/*! + * @} + */ /* end of group I2C_Register_Masks */ + + +/* I2C - Peripheral instance base addresses */ +/** Peripheral I2C0 base address */ +#define I2C0_BASE (0x40066000u) +/** Peripheral I2C0 base pointer */ +#define I2C0 ((I2C_Type *)I2C0_BASE) +#define I2C0_BASE_PTR (I2C0) +/** Peripheral I2C1 base address */ +#define I2C1_BASE (0x40067000u) +/** Peripheral I2C1 base pointer */ +#define I2C1 ((I2C_Type *)I2C1_BASE) +#define I2C1_BASE_PTR (I2C1) +/** Peripheral I2C2 base address */ +#define I2C2_BASE (0x400E6000u) +/** Peripheral I2C2 base pointer */ +#define I2C2 ((I2C_Type *)I2C2_BASE) +#define I2C2_BASE_PTR (I2C2) +/** Array initializer of I2C peripheral base pointers */ +#define I2C_BASES { I2C0, I2C1, I2C2 } + +/* ---------------------------------------------------------------------------- + -- I2C - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2C_Register_Accessor_Macros I2C - Register accessor macros + * @{ + */ + + +/* I2C - Register instance definitions */ +/* I2C0 */ +#define I2C0_A1 I2C_A1_REG(I2C0) +#define I2C0_F I2C_F_REG(I2C0) +#define I2C0_C1 I2C_C1_REG(I2C0) +#define I2C0_S I2C_S_REG(I2C0) +#define I2C0_D I2C_D_REG(I2C0) +#define I2C0_C2 I2C_C2_REG(I2C0) +#define I2C0_FLT I2C_FLT_REG(I2C0) +#define I2C0_RA I2C_RA_REG(I2C0) +#define I2C0_SMB I2C_SMB_REG(I2C0) +#define I2C0_A2 I2C_A2_REG(I2C0) +#define I2C0_SLTH I2C_SLTH_REG(I2C0) +#define I2C0_SLTL I2C_SLTL_REG(I2C0) +/* I2C1 */ +#define I2C1_A1 I2C_A1_REG(I2C1) +#define I2C1_F I2C_F_REG(I2C1) +#define I2C1_C1 I2C_C1_REG(I2C1) +#define I2C1_S I2C_S_REG(I2C1) +#define I2C1_D I2C_D_REG(I2C1) +#define I2C1_C2 I2C_C2_REG(I2C1) +#define I2C1_FLT I2C_FLT_REG(I2C1) +#define I2C1_RA I2C_RA_REG(I2C1) +#define I2C1_SMB I2C_SMB_REG(I2C1) +#define I2C1_A2 I2C_A2_REG(I2C1) +#define I2C1_SLTH I2C_SLTH_REG(I2C1) +#define I2C1_SLTL I2C_SLTL_REG(I2C1) +/* I2C2 */ +#define I2C2_A1 I2C_A1_REG(I2C2) +#define I2C2_F I2C_F_REG(I2C2) +#define I2C2_C1 I2C_C1_REG(I2C2) +#define I2C2_S I2C_S_REG(I2C2) +#define I2C2_D I2C_D_REG(I2C2) +#define I2C2_C2 I2C_C2_REG(I2C2) +#define I2C2_FLT I2C_FLT_REG(I2C2) +#define I2C2_RA I2C_RA_REG(I2C2) +#define I2C2_SMB I2C_SMB_REG(I2C2) +#define I2C2_A2 I2C_A2_REG(I2C2) +#define I2C2_SLTH I2C_SLTH_REG(I2C2) +#define I2C2_SLTL I2C_SLTL_REG(I2C2) + +/*! + * @} + */ /* end of group I2C_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group I2C_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- I2S Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2S_Peripheral_Access_Layer I2S Peripheral Access Layer + * @{ + */ + +/** I2S - Register Layout Typedef */ +typedef struct { + __IO uint32_t TCSR; /**< SAI Transmit Control Register, offset: 0x0 */ + __IO uint32_t TCR1; /**< SAI Transmit Configuration 1 Register, offset: 0x4 */ + __IO uint32_t TCR2; /**< SAI Transmit Configuration 2 Register, offset: 0x8 */ + __IO uint32_t TCR3; /**< SAI Transmit Configuration 3 Register, offset: 0xC */ + __IO uint32_t TCR4; /**< SAI Transmit Configuration 4 Register, offset: 0x10 */ + __IO uint32_t TCR5; /**< SAI Transmit Configuration 5 Register, offset: 0x14 */ + uint8_t RESERVED_0[8]; + __O uint32_t TDR[2]; /**< SAI Transmit Data Register, array offset: 0x20, array step: 0x4 */ + uint8_t RESERVED_1[24]; + __I uint32_t TFR[2]; /**< SAI Transmit FIFO Register, array offset: 0x40, array step: 0x4 */ + uint8_t RESERVED_2[24]; + __IO uint32_t TMR; /**< SAI Transmit Mask Register, offset: 0x60 */ + uint8_t RESERVED_3[28]; + __IO uint32_t RCSR; /**< SAI Receive Control Register, offset: 0x80 */ + __IO uint32_t RCR1; /**< SAI Receive Configuration 1 Register, offset: 0x84 */ + __IO uint32_t RCR2; /**< SAI Receive Configuration 2 Register, offset: 0x88 */ + __IO uint32_t RCR3; /**< SAI Receive Configuration 3 Register, offset: 0x8C */ + __IO uint32_t RCR4; /**< SAI Receive Configuration 4 Register, offset: 0x90 */ + __IO uint32_t RCR5; /**< SAI Receive Configuration 5 Register, offset: 0x94 */ + uint8_t RESERVED_4[8]; + __I uint32_t RDR[2]; /**< SAI Receive Data Register, array offset: 0xA0, array step: 0x4 */ + uint8_t RESERVED_5[24]; + __I uint32_t RFR[2]; /**< SAI Receive FIFO Register, array offset: 0xC0, array step: 0x4 */ + uint8_t RESERVED_6[24]; + __IO uint32_t RMR; /**< SAI Receive Mask Register, offset: 0xE0 */ + uint8_t RESERVED_7[28]; + __IO uint32_t MCR; /**< SAI MCLK Control Register, offset: 0x100 */ + __IO uint32_t MDR; /**< SAI MCLK Divide Register, offset: 0x104 */ +} I2S_Type, *I2S_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- I2S - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2S_Register_Accessor_Macros I2S - Register accessor macros + * @{ + */ + + +/* I2S - Register accessors */ +#define I2S_TCSR_REG(base) ((base)->TCSR) +#define I2S_TCR1_REG(base) ((base)->TCR1) +#define I2S_TCR2_REG(base) ((base)->TCR2) +#define I2S_TCR3_REG(base) ((base)->TCR3) +#define I2S_TCR4_REG(base) ((base)->TCR4) +#define I2S_TCR5_REG(base) ((base)->TCR5) +#define I2S_TDR_REG(base,index) ((base)->TDR[index]) +#define I2S_TFR_REG(base,index) ((base)->TFR[index]) +#define I2S_TMR_REG(base) ((base)->TMR) +#define I2S_RCSR_REG(base) ((base)->RCSR) +#define I2S_RCR1_REG(base) ((base)->RCR1) +#define I2S_RCR2_REG(base) ((base)->RCR2) +#define I2S_RCR3_REG(base) ((base)->RCR3) +#define I2S_RCR4_REG(base) ((base)->RCR4) +#define I2S_RCR5_REG(base) ((base)->RCR5) +#define I2S_RDR_REG(base,index) ((base)->RDR[index]) +#define I2S_RFR_REG(base,index) ((base)->RFR[index]) +#define I2S_RMR_REG(base) ((base)->RMR) +#define I2S_MCR_REG(base) ((base)->MCR) +#define I2S_MDR_REG(base) ((base)->MDR) + +/*! + * @} + */ /* end of group I2S_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- I2S Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2S_Register_Masks I2S Register Masks + * @{ + */ + +/* TCSR Bit Fields */ +#define I2S_TCSR_FRDE_MASK 0x1u +#define I2S_TCSR_FRDE_SHIFT 0 +#define I2S_TCSR_FWDE_MASK 0x2u +#define I2S_TCSR_FWDE_SHIFT 1 +#define I2S_TCSR_FRIE_MASK 0x100u +#define I2S_TCSR_FRIE_SHIFT 8 +#define I2S_TCSR_FWIE_MASK 0x200u +#define I2S_TCSR_FWIE_SHIFT 9 +#define I2S_TCSR_FEIE_MASK 0x400u +#define I2S_TCSR_FEIE_SHIFT 10 +#define I2S_TCSR_SEIE_MASK 0x800u +#define I2S_TCSR_SEIE_SHIFT 11 +#define I2S_TCSR_WSIE_MASK 0x1000u +#define I2S_TCSR_WSIE_SHIFT 12 +#define I2S_TCSR_FRF_MASK 0x10000u +#define I2S_TCSR_FRF_SHIFT 16 +#define I2S_TCSR_FWF_MASK 0x20000u +#define I2S_TCSR_FWF_SHIFT 17 +#define I2S_TCSR_FEF_MASK 0x40000u +#define I2S_TCSR_FEF_SHIFT 18 +#define I2S_TCSR_SEF_MASK 0x80000u +#define I2S_TCSR_SEF_SHIFT 19 +#define I2S_TCSR_WSF_MASK 0x100000u +#define I2S_TCSR_WSF_SHIFT 20 +#define I2S_TCSR_SR_MASK 0x1000000u +#define I2S_TCSR_SR_SHIFT 24 +#define I2S_TCSR_FR_MASK 0x2000000u +#define I2S_TCSR_FR_SHIFT 25 +#define I2S_TCSR_BCE_MASK 0x10000000u +#define I2S_TCSR_BCE_SHIFT 28 +#define I2S_TCSR_DBGE_MASK 0x20000000u +#define I2S_TCSR_DBGE_SHIFT 29 +#define I2S_TCSR_STOPE_MASK 0x40000000u +#define I2S_TCSR_STOPE_SHIFT 30 +#define I2S_TCSR_TE_MASK 0x80000000u +#define I2S_TCSR_TE_SHIFT 31 +/* TCR1 Bit Fields */ +#define I2S_TCR1_TFW_MASK 0x7u +#define I2S_TCR1_TFW_SHIFT 0 +#define I2S_TCR1_TFW(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR1_TFW_SHIFT))&I2S_TCR1_TFW_MASK) +/* TCR2 Bit Fields */ +#define I2S_TCR2_DIV_MASK 0xFFu +#define I2S_TCR2_DIV_SHIFT 0 +#define I2S_TCR2_DIV(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR2_DIV_SHIFT))&I2S_TCR2_DIV_MASK) +#define I2S_TCR2_BCD_MASK 0x1000000u +#define I2S_TCR2_BCD_SHIFT 24 +#define I2S_TCR2_BCP_MASK 0x2000000u +#define I2S_TCR2_BCP_SHIFT 25 +#define I2S_TCR2_MSEL_MASK 0xC000000u +#define I2S_TCR2_MSEL_SHIFT 26 +#define I2S_TCR2_MSEL(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR2_MSEL_SHIFT))&I2S_TCR2_MSEL_MASK) +#define I2S_TCR2_BCI_MASK 0x10000000u +#define I2S_TCR2_BCI_SHIFT 28 +#define I2S_TCR2_BCS_MASK 0x20000000u +#define I2S_TCR2_BCS_SHIFT 29 +#define I2S_TCR2_SYNC_MASK 0xC0000000u +#define I2S_TCR2_SYNC_SHIFT 30 +#define I2S_TCR2_SYNC(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR2_SYNC_SHIFT))&I2S_TCR2_SYNC_MASK) +/* TCR3 Bit Fields */ +#define I2S_TCR3_WDFL_MASK 0x1Fu +#define I2S_TCR3_WDFL_SHIFT 0 +#define I2S_TCR3_WDFL(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR3_WDFL_SHIFT))&I2S_TCR3_WDFL_MASK) +#define I2S_TCR3_TCE_MASK 0x30000u +#define I2S_TCR3_TCE_SHIFT 16 +#define I2S_TCR3_TCE(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR3_TCE_SHIFT))&I2S_TCR3_TCE_MASK) +/* TCR4 Bit Fields */ +#define I2S_TCR4_FSD_MASK 0x1u +#define I2S_TCR4_FSD_SHIFT 0 +#define I2S_TCR4_FSP_MASK 0x2u +#define I2S_TCR4_FSP_SHIFT 1 +#define I2S_TCR4_FSE_MASK 0x8u +#define I2S_TCR4_FSE_SHIFT 3 +#define I2S_TCR4_MF_MASK 0x10u +#define I2S_TCR4_MF_SHIFT 4 +#define I2S_TCR4_SYWD_MASK 0x1F00u +#define I2S_TCR4_SYWD_SHIFT 8 +#define I2S_TCR4_SYWD(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR4_SYWD_SHIFT))&I2S_TCR4_SYWD_MASK) +#define I2S_TCR4_FRSZ_MASK 0x1F0000u +#define I2S_TCR4_FRSZ_SHIFT 16 +#define I2S_TCR4_FRSZ(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR4_FRSZ_SHIFT))&I2S_TCR4_FRSZ_MASK) +/* TCR5 Bit Fields */ +#define I2S_TCR5_FBT_MASK 0x1F00u +#define I2S_TCR5_FBT_SHIFT 8 +#define I2S_TCR5_FBT(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR5_FBT_SHIFT))&I2S_TCR5_FBT_MASK) +#define I2S_TCR5_W0W_MASK 0x1F0000u +#define I2S_TCR5_W0W_SHIFT 16 +#define I2S_TCR5_W0W(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR5_W0W_SHIFT))&I2S_TCR5_W0W_MASK) +#define I2S_TCR5_WNW_MASK 0x1F000000u +#define I2S_TCR5_WNW_SHIFT 24 +#define I2S_TCR5_WNW(x) (((uint32_t)(((uint32_t)(x))<<I2S_TCR5_WNW_SHIFT))&I2S_TCR5_WNW_MASK) +/* TDR Bit Fields */ +#define I2S_TDR_TDR_MASK 0xFFFFFFFFu +#define I2S_TDR_TDR_SHIFT 0 +#define I2S_TDR_TDR(x) (((uint32_t)(((uint32_t)(x))<<I2S_TDR_TDR_SHIFT))&I2S_TDR_TDR_MASK) +/* TFR Bit Fields */ +#define I2S_TFR_RFP_MASK 0xFu +#define I2S_TFR_RFP_SHIFT 0 +#define I2S_TFR_RFP(x) (((uint32_t)(((uint32_t)(x))<<I2S_TFR_RFP_SHIFT))&I2S_TFR_RFP_MASK) +#define I2S_TFR_WFP_MASK 0xF0000u +#define I2S_TFR_WFP_SHIFT 16 +#define I2S_TFR_WFP(x) (((uint32_t)(((uint32_t)(x))<<I2S_TFR_WFP_SHIFT))&I2S_TFR_WFP_MASK) +/* TMR Bit Fields */ +#define I2S_TMR_TWM_MASK 0xFFFFFFFFu +#define I2S_TMR_TWM_SHIFT 0 +#define I2S_TMR_TWM(x) (((uint32_t)(((uint32_t)(x))<<I2S_TMR_TWM_SHIFT))&I2S_TMR_TWM_MASK) +/* RCSR Bit Fields */ +#define I2S_RCSR_FRDE_MASK 0x1u +#define I2S_RCSR_FRDE_SHIFT 0 +#define I2S_RCSR_FWDE_MASK 0x2u +#define I2S_RCSR_FWDE_SHIFT 1 +#define I2S_RCSR_FRIE_MASK 0x100u +#define I2S_RCSR_FRIE_SHIFT 8 +#define I2S_RCSR_FWIE_MASK 0x200u +#define I2S_RCSR_FWIE_SHIFT 9 +#define I2S_RCSR_FEIE_MASK 0x400u +#define I2S_RCSR_FEIE_SHIFT 10 +#define I2S_RCSR_SEIE_MASK 0x800u +#define I2S_RCSR_SEIE_SHIFT 11 +#define I2S_RCSR_WSIE_MASK 0x1000u +#define I2S_RCSR_WSIE_SHIFT 12 +#define I2S_RCSR_FRF_MASK 0x10000u +#define I2S_RCSR_FRF_SHIFT 16 +#define I2S_RCSR_FWF_MASK 0x20000u +#define I2S_RCSR_FWF_SHIFT 17 +#define I2S_RCSR_FEF_MASK 0x40000u +#define I2S_RCSR_FEF_SHIFT 18 +#define I2S_RCSR_SEF_MASK 0x80000u +#define I2S_RCSR_SEF_SHIFT 19 +#define I2S_RCSR_WSF_MASK 0x100000u +#define I2S_RCSR_WSF_SHIFT 20 +#define I2S_RCSR_SR_MASK 0x1000000u +#define I2S_RCSR_SR_SHIFT 24 +#define I2S_RCSR_FR_MASK 0x2000000u +#define I2S_RCSR_FR_SHIFT 25 +#define I2S_RCSR_BCE_MASK 0x10000000u +#define I2S_RCSR_BCE_SHIFT 28 +#define I2S_RCSR_DBGE_MASK 0x20000000u +#define I2S_RCSR_DBGE_SHIFT 29 +#define I2S_RCSR_STOPE_MASK 0x40000000u +#define I2S_RCSR_STOPE_SHIFT 30 +#define I2S_RCSR_RE_MASK 0x80000000u +#define I2S_RCSR_RE_SHIFT 31 +/* RCR1 Bit Fields */ +#define I2S_RCR1_RFW_MASK 0x7u +#define I2S_RCR1_RFW_SHIFT 0 +#define I2S_RCR1_RFW(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR1_RFW_SHIFT))&I2S_RCR1_RFW_MASK) +/* RCR2 Bit Fields */ +#define I2S_RCR2_DIV_MASK 0xFFu +#define I2S_RCR2_DIV_SHIFT 0 +#define I2S_RCR2_DIV(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR2_DIV_SHIFT))&I2S_RCR2_DIV_MASK) +#define I2S_RCR2_BCD_MASK 0x1000000u +#define I2S_RCR2_BCD_SHIFT 24 +#define I2S_RCR2_BCP_MASK 0x2000000u +#define I2S_RCR2_BCP_SHIFT 25 +#define I2S_RCR2_MSEL_MASK 0xC000000u +#define I2S_RCR2_MSEL_SHIFT 26 +#define I2S_RCR2_MSEL(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR2_MSEL_SHIFT))&I2S_RCR2_MSEL_MASK) +#define I2S_RCR2_BCI_MASK 0x10000000u +#define I2S_RCR2_BCI_SHIFT 28 +#define I2S_RCR2_BCS_MASK 0x20000000u +#define I2S_RCR2_BCS_SHIFT 29 +#define I2S_RCR2_SYNC_MASK 0xC0000000u +#define I2S_RCR2_SYNC_SHIFT 30 +#define I2S_RCR2_SYNC(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR2_SYNC_SHIFT))&I2S_RCR2_SYNC_MASK) +/* RCR3 Bit Fields */ +#define I2S_RCR3_WDFL_MASK 0x1Fu +#define I2S_RCR3_WDFL_SHIFT 0 +#define I2S_RCR3_WDFL(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR3_WDFL_SHIFT))&I2S_RCR3_WDFL_MASK) +#define I2S_RCR3_RCE_MASK 0x30000u +#define I2S_RCR3_RCE_SHIFT 16 +#define I2S_RCR3_RCE(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR3_RCE_SHIFT))&I2S_RCR3_RCE_MASK) +/* RCR4 Bit Fields */ +#define I2S_RCR4_FSD_MASK 0x1u +#define I2S_RCR4_FSD_SHIFT 0 +#define I2S_RCR4_FSP_MASK 0x2u +#define I2S_RCR4_FSP_SHIFT 1 +#define I2S_RCR4_FSE_MASK 0x8u +#define I2S_RCR4_FSE_SHIFT 3 +#define I2S_RCR4_MF_MASK 0x10u +#define I2S_RCR4_MF_SHIFT 4 +#define I2S_RCR4_SYWD_MASK 0x1F00u +#define I2S_RCR4_SYWD_SHIFT 8 +#define I2S_RCR4_SYWD(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR4_SYWD_SHIFT))&I2S_RCR4_SYWD_MASK) +#define I2S_RCR4_FRSZ_MASK 0x1F0000u +#define I2S_RCR4_FRSZ_SHIFT 16 +#define I2S_RCR4_FRSZ(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR4_FRSZ_SHIFT))&I2S_RCR4_FRSZ_MASK) +/* RCR5 Bit Fields */ +#define I2S_RCR5_FBT_MASK 0x1F00u +#define I2S_RCR5_FBT_SHIFT 8 +#define I2S_RCR5_FBT(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR5_FBT_SHIFT))&I2S_RCR5_FBT_MASK) +#define I2S_RCR5_W0W_MASK 0x1F0000u +#define I2S_RCR5_W0W_SHIFT 16 +#define I2S_RCR5_W0W(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR5_W0W_SHIFT))&I2S_RCR5_W0W_MASK) +#define I2S_RCR5_WNW_MASK 0x1F000000u +#define I2S_RCR5_WNW_SHIFT 24 +#define I2S_RCR5_WNW(x) (((uint32_t)(((uint32_t)(x))<<I2S_RCR5_WNW_SHIFT))&I2S_RCR5_WNW_MASK) +/* RDR Bit Fields */ +#define I2S_RDR_RDR_MASK 0xFFFFFFFFu +#define I2S_RDR_RDR_SHIFT 0 +#define I2S_RDR_RDR(x) (((uint32_t)(((uint32_t)(x))<<I2S_RDR_RDR_SHIFT))&I2S_RDR_RDR_MASK) +/* RFR Bit Fields */ +#define I2S_RFR_RFP_MASK 0xFu +#define I2S_RFR_RFP_SHIFT 0 +#define I2S_RFR_RFP(x) (((uint32_t)(((uint32_t)(x))<<I2S_RFR_RFP_SHIFT))&I2S_RFR_RFP_MASK) +#define I2S_RFR_WFP_MASK 0xF0000u +#define I2S_RFR_WFP_SHIFT 16 +#define I2S_RFR_WFP(x) (((uint32_t)(((uint32_t)(x))<<I2S_RFR_WFP_SHIFT))&I2S_RFR_WFP_MASK) +/* RMR Bit Fields */ +#define I2S_RMR_RWM_MASK 0xFFFFFFFFu +#define I2S_RMR_RWM_SHIFT 0 +#define I2S_RMR_RWM(x) (((uint32_t)(((uint32_t)(x))<<I2S_RMR_RWM_SHIFT))&I2S_RMR_RWM_MASK) +/* MCR Bit Fields */ +#define I2S_MCR_MICS_MASK 0x3000000u +#define I2S_MCR_MICS_SHIFT 24 +#define I2S_MCR_MICS(x) (((uint32_t)(((uint32_t)(x))<<I2S_MCR_MICS_SHIFT))&I2S_MCR_MICS_MASK) +#define I2S_MCR_MOE_MASK 0x40000000u +#define I2S_MCR_MOE_SHIFT 30 +#define I2S_MCR_DUF_MASK 0x80000000u +#define I2S_MCR_DUF_SHIFT 31 +/* MDR Bit Fields */ +#define I2S_MDR_DIVIDE_MASK 0xFFFu +#define I2S_MDR_DIVIDE_SHIFT 0 +#define I2S_MDR_DIVIDE(x) (((uint32_t)(((uint32_t)(x))<<I2S_MDR_DIVIDE_SHIFT))&I2S_MDR_DIVIDE_MASK) +#define I2S_MDR_FRACT_MASK 0xFF000u +#define I2S_MDR_FRACT_SHIFT 12 +#define I2S_MDR_FRACT(x) (((uint32_t)(((uint32_t)(x))<<I2S_MDR_FRACT_SHIFT))&I2S_MDR_FRACT_MASK) + +/*! + * @} + */ /* end of group I2S_Register_Masks */ + + +/* I2S - Peripheral instance base addresses */ +/** Peripheral I2S0 base address */ +#define I2S0_BASE (0x4002F000u) +/** Peripheral I2S0 base pointer */ +#define I2S0 ((I2S_Type *)I2S0_BASE) +#define I2S0_BASE_PTR (I2S0) +/** Array initializer of I2S peripheral base pointers */ +#define I2S_BASES { I2S0 } + +/* ---------------------------------------------------------------------------- + -- I2S - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup I2S_Register_Accessor_Macros I2S - Register accessor macros + * @{ + */ + + +/* I2S - Register instance definitions */ +/* I2S0 */ +#define I2S0_TCSR I2S_TCSR_REG(I2S0) +#define I2S0_TCR1 I2S_TCR1_REG(I2S0) +#define I2S0_TCR2 I2S_TCR2_REG(I2S0) +#define I2S0_TCR3 I2S_TCR3_REG(I2S0) +#define I2S0_TCR4 I2S_TCR4_REG(I2S0) +#define I2S0_TCR5 I2S_TCR5_REG(I2S0) +#define I2S0_TDR0 I2S_TDR_REG(I2S0,0) +#define I2S0_TDR1 I2S_TDR_REG(I2S0,1) +#define I2S0_TFR0 I2S_TFR_REG(I2S0,0) +#define I2S0_TFR1 I2S_TFR_REG(I2S0,1) +#define I2S0_TMR I2S_TMR_REG(I2S0) +#define I2S0_RCSR I2S_RCSR_REG(I2S0) +#define I2S0_RCR1 I2S_RCR1_REG(I2S0) +#define I2S0_RCR2 I2S_RCR2_REG(I2S0) +#define I2S0_RCR3 I2S_RCR3_REG(I2S0) +#define I2S0_RCR4 I2S_RCR4_REG(I2S0) +#define I2S0_RCR5 I2S_RCR5_REG(I2S0) +#define I2S0_RDR0 I2S_RDR_REG(I2S0,0) +#define I2S0_RDR1 I2S_RDR_REG(I2S0,1) +#define I2S0_RFR0 I2S_RFR_REG(I2S0,0) +#define I2S0_RFR1 I2S_RFR_REG(I2S0,1) +#define I2S0_RMR I2S_RMR_REG(I2S0) +#define I2S0_MCR I2S_MCR_REG(I2S0) +#define I2S0_MDR I2S_MDR_REG(I2S0) + +/* I2S - Register array accessors */ +#define I2S0_TDR(index) I2S_TDR_REG(I2S0,index) +#define I2S0_TFR(index) I2S_TFR_REG(I2S0,index) +#define I2S0_RDR(index) I2S_RDR_REG(I2S0,index) +#define I2S0_RFR(index) I2S_RFR_REG(I2S0,index) + +/*! + * @} + */ /* end of group I2S_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group I2S_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- LLWU Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LLWU_Peripheral_Access_Layer LLWU Peripheral Access Layer + * @{ + */ + +/** LLWU - Register Layout Typedef */ +typedef struct { + __IO uint8_t PE1; /**< LLWU Pin Enable 1 register, offset: 0x0 */ + __IO uint8_t PE2; /**< LLWU Pin Enable 2 register, offset: 0x1 */ + __IO uint8_t PE3; /**< LLWU Pin Enable 3 register, offset: 0x2 */ + __IO uint8_t PE4; /**< LLWU Pin Enable 4 register, offset: 0x3 */ + __IO uint8_t ME; /**< LLWU Module Enable register, offset: 0x4 */ + __IO uint8_t F1; /**< LLWU Flag 1 register, offset: 0x5 */ + __IO uint8_t F2; /**< LLWU Flag 2 register, offset: 0x6 */ + __I uint8_t F3; /**< LLWU Flag 3 register, offset: 0x7 */ + __IO uint8_t FILT1; /**< LLWU Pin Filter 1 register, offset: 0x8 */ + __IO uint8_t FILT2; /**< LLWU Pin Filter 2 register, offset: 0x9 */ + __IO uint8_t RST; /**< LLWU Reset Enable register, offset: 0xA */ +} LLWU_Type, *LLWU_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- LLWU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LLWU_Register_Accessor_Macros LLWU - Register accessor macros + * @{ + */ + + +/* LLWU - Register accessors */ +#define LLWU_PE1_REG(base) ((base)->PE1) +#define LLWU_PE2_REG(base) ((base)->PE2) +#define LLWU_PE3_REG(base) ((base)->PE3) +#define LLWU_PE4_REG(base) ((base)->PE4) +#define LLWU_ME_REG(base) ((base)->ME) +#define LLWU_F1_REG(base) ((base)->F1) +#define LLWU_F2_REG(base) ((base)->F2) +#define LLWU_F3_REG(base) ((base)->F3) +#define LLWU_FILT1_REG(base) ((base)->FILT1) +#define LLWU_FILT2_REG(base) ((base)->FILT2) +#define LLWU_RST_REG(base) ((base)->RST) + +/*! + * @} + */ /* end of group LLWU_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- LLWU Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LLWU_Register_Masks LLWU Register Masks + * @{ + */ + +/* PE1 Bit Fields */ +#define LLWU_PE1_WUPE0_MASK 0x3u +#define LLWU_PE1_WUPE0_SHIFT 0 +#define LLWU_PE1_WUPE0(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE0_SHIFT))&LLWU_PE1_WUPE0_MASK) +#define LLWU_PE1_WUPE1_MASK 0xCu +#define LLWU_PE1_WUPE1_SHIFT 2 +#define LLWU_PE1_WUPE1(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE1_SHIFT))&LLWU_PE1_WUPE1_MASK) +#define LLWU_PE1_WUPE2_MASK 0x30u +#define LLWU_PE1_WUPE2_SHIFT 4 +#define LLWU_PE1_WUPE2(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE2_SHIFT))&LLWU_PE1_WUPE2_MASK) +#define LLWU_PE1_WUPE3_MASK 0xC0u +#define LLWU_PE1_WUPE3_SHIFT 6 +#define LLWU_PE1_WUPE3(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE3_SHIFT))&LLWU_PE1_WUPE3_MASK) +/* PE2 Bit Fields */ +#define LLWU_PE2_WUPE4_MASK 0x3u +#define LLWU_PE2_WUPE4_SHIFT 0 +#define LLWU_PE2_WUPE4(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE4_SHIFT))&LLWU_PE2_WUPE4_MASK) +#define LLWU_PE2_WUPE5_MASK 0xCu +#define LLWU_PE2_WUPE5_SHIFT 2 +#define LLWU_PE2_WUPE5(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE5_SHIFT))&LLWU_PE2_WUPE5_MASK) +#define LLWU_PE2_WUPE6_MASK 0x30u +#define LLWU_PE2_WUPE6_SHIFT 4 +#define LLWU_PE2_WUPE6(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE6_SHIFT))&LLWU_PE2_WUPE6_MASK) +#define LLWU_PE2_WUPE7_MASK 0xC0u +#define LLWU_PE2_WUPE7_SHIFT 6 +#define LLWU_PE2_WUPE7(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE7_SHIFT))&LLWU_PE2_WUPE7_MASK) +/* PE3 Bit Fields */ +#define LLWU_PE3_WUPE8_MASK 0x3u +#define LLWU_PE3_WUPE8_SHIFT 0 +#define LLWU_PE3_WUPE8(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE8_SHIFT))&LLWU_PE3_WUPE8_MASK) +#define LLWU_PE3_WUPE9_MASK 0xCu +#define LLWU_PE3_WUPE9_SHIFT 2 +#define LLWU_PE3_WUPE9(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE9_SHIFT))&LLWU_PE3_WUPE9_MASK) +#define LLWU_PE3_WUPE10_MASK 0x30u +#define LLWU_PE3_WUPE10_SHIFT 4 +#define LLWU_PE3_WUPE10(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE10_SHIFT))&LLWU_PE3_WUPE10_MASK) +#define LLWU_PE3_WUPE11_MASK 0xC0u +#define LLWU_PE3_WUPE11_SHIFT 6 +#define LLWU_PE3_WUPE11(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE11_SHIFT))&LLWU_PE3_WUPE11_MASK) +/* PE4 Bit Fields */ +#define LLWU_PE4_WUPE12_MASK 0x3u +#define LLWU_PE4_WUPE12_SHIFT 0 +#define LLWU_PE4_WUPE12(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE12_SHIFT))&LLWU_PE4_WUPE12_MASK) +#define LLWU_PE4_WUPE13_MASK 0xCu +#define LLWU_PE4_WUPE13_SHIFT 2 +#define LLWU_PE4_WUPE13(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE13_SHIFT))&LLWU_PE4_WUPE13_MASK) +#define LLWU_PE4_WUPE14_MASK 0x30u +#define LLWU_PE4_WUPE14_SHIFT 4 +#define LLWU_PE4_WUPE14(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE14_SHIFT))&LLWU_PE4_WUPE14_MASK) +#define LLWU_PE4_WUPE15_MASK 0xC0u +#define LLWU_PE4_WUPE15_SHIFT 6 +#define LLWU_PE4_WUPE15(x) (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE15_SHIFT))&LLWU_PE4_WUPE15_MASK) +/* ME Bit Fields */ +#define LLWU_ME_WUME0_MASK 0x1u +#define LLWU_ME_WUME0_SHIFT 0 +#define LLWU_ME_WUME1_MASK 0x2u +#define LLWU_ME_WUME1_SHIFT 1 +#define LLWU_ME_WUME2_MASK 0x4u +#define LLWU_ME_WUME2_SHIFT 2 +#define LLWU_ME_WUME3_MASK 0x8u +#define LLWU_ME_WUME3_SHIFT 3 +#define LLWU_ME_WUME4_MASK 0x10u +#define LLWU_ME_WUME4_SHIFT 4 +#define LLWU_ME_WUME5_MASK 0x20u +#define LLWU_ME_WUME5_SHIFT 5 +#define LLWU_ME_WUME6_MASK 0x40u +#define LLWU_ME_WUME6_SHIFT 6 +#define LLWU_ME_WUME7_MASK 0x80u +#define LLWU_ME_WUME7_SHIFT 7 +/* F1 Bit Fields */ +#define LLWU_F1_WUF0_MASK 0x1u +#define LLWU_F1_WUF0_SHIFT 0 +#define LLWU_F1_WUF1_MASK 0x2u +#define LLWU_F1_WUF1_SHIFT 1 +#define LLWU_F1_WUF2_MASK 0x4u +#define LLWU_F1_WUF2_SHIFT 2 +#define LLWU_F1_WUF3_MASK 0x8u +#define LLWU_F1_WUF3_SHIFT 3 +#define LLWU_F1_WUF4_MASK 0x10u +#define LLWU_F1_WUF4_SHIFT 4 +#define LLWU_F1_WUF5_MASK 0x20u +#define LLWU_F1_WUF5_SHIFT 5 +#define LLWU_F1_WUF6_MASK 0x40u +#define LLWU_F1_WUF6_SHIFT 6 +#define LLWU_F1_WUF7_MASK 0x80u +#define LLWU_F1_WUF7_SHIFT 7 +/* F2 Bit Fields */ +#define LLWU_F2_WUF8_MASK 0x1u +#define LLWU_F2_WUF8_SHIFT 0 +#define LLWU_F2_WUF9_MASK 0x2u +#define LLWU_F2_WUF9_SHIFT 1 +#define LLWU_F2_WUF10_MASK 0x4u +#define LLWU_F2_WUF10_SHIFT 2 +#define LLWU_F2_WUF11_MASK 0x8u +#define LLWU_F2_WUF11_SHIFT 3 +#define LLWU_F2_WUF12_MASK 0x10u +#define LLWU_F2_WUF12_SHIFT 4 +#define LLWU_F2_WUF13_MASK 0x20u +#define LLWU_F2_WUF13_SHIFT 5 +#define LLWU_F2_WUF14_MASK 0x40u +#define LLWU_F2_WUF14_SHIFT 6 +#define LLWU_F2_WUF15_MASK 0x80u +#define LLWU_F2_WUF15_SHIFT 7 +/* F3 Bit Fields */ +#define LLWU_F3_MWUF0_MASK 0x1u +#define LLWU_F3_MWUF0_SHIFT 0 +#define LLWU_F3_MWUF1_MASK 0x2u +#define LLWU_F3_MWUF1_SHIFT 1 +#define LLWU_F3_MWUF2_MASK 0x4u +#define LLWU_F3_MWUF2_SHIFT 2 +#define LLWU_F3_MWUF3_MASK 0x8u +#define LLWU_F3_MWUF3_SHIFT 3 +#define LLWU_F3_MWUF4_MASK 0x10u +#define LLWU_F3_MWUF4_SHIFT 4 +#define LLWU_F3_MWUF5_MASK 0x20u +#define LLWU_F3_MWUF5_SHIFT 5 +#define LLWU_F3_MWUF6_MASK 0x40u +#define LLWU_F3_MWUF6_SHIFT 6 +#define LLWU_F3_MWUF7_MASK 0x80u +#define LLWU_F3_MWUF7_SHIFT 7 +/* FILT1 Bit Fields */ +#define LLWU_FILT1_FILTSEL_MASK 0xFu +#define LLWU_FILT1_FILTSEL_SHIFT 0 +#define LLWU_FILT1_FILTSEL(x) (((uint8_t)(((uint8_t)(x))<<LLWU_FILT1_FILTSEL_SHIFT))&LLWU_FILT1_FILTSEL_MASK) +#define LLWU_FILT1_FILTE_MASK 0x60u +#define LLWU_FILT1_FILTE_SHIFT 5 +#define LLWU_FILT1_FILTE(x) (((uint8_t)(((uint8_t)(x))<<LLWU_FILT1_FILTE_SHIFT))&LLWU_FILT1_FILTE_MASK) +#define LLWU_FILT1_FILTF_MASK 0x80u +#define LLWU_FILT1_FILTF_SHIFT 7 +/* FILT2 Bit Fields */ +#define LLWU_FILT2_FILTSEL_MASK 0xFu +#define LLWU_FILT2_FILTSEL_SHIFT 0 +#define LLWU_FILT2_FILTSEL(x) (((uint8_t)(((uint8_t)(x))<<LLWU_FILT2_FILTSEL_SHIFT))&LLWU_FILT2_FILTSEL_MASK) +#define LLWU_FILT2_FILTE_MASK 0x60u +#define LLWU_FILT2_FILTE_SHIFT 5 +#define LLWU_FILT2_FILTE(x) (((uint8_t)(((uint8_t)(x))<<LLWU_FILT2_FILTE_SHIFT))&LLWU_FILT2_FILTE_MASK) +#define LLWU_FILT2_FILTF_MASK 0x80u +#define LLWU_FILT2_FILTF_SHIFT 7 +/* RST Bit Fields */ +#define LLWU_RST_RSTFILT_MASK 0x1u +#define LLWU_RST_RSTFILT_SHIFT 0 +#define LLWU_RST_LLRSTE_MASK 0x2u +#define LLWU_RST_LLRSTE_SHIFT 1 + +/*! + * @} + */ /* end of group LLWU_Register_Masks */ + + +/* LLWU - Peripheral instance base addresses */ +/** Peripheral LLWU base address */ +#define LLWU_BASE (0x4007C000u) +/** Peripheral LLWU base pointer */ +#define LLWU ((LLWU_Type *)LLWU_BASE) +#define LLWU_BASE_PTR (LLWU) +/** Array initializer of LLWU peripheral base pointers */ +#define LLWU_BASES { LLWU } + +/* ---------------------------------------------------------------------------- + -- LLWU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LLWU_Register_Accessor_Macros LLWU - Register accessor macros + * @{ + */ + + +/* LLWU - Register instance definitions */ +/* LLWU */ +#define LLWU_PE1 LLWU_PE1_REG(LLWU) +#define LLWU_PE2 LLWU_PE2_REG(LLWU) +#define LLWU_PE3 LLWU_PE3_REG(LLWU) +#define LLWU_PE4 LLWU_PE4_REG(LLWU) +#define LLWU_ME LLWU_ME_REG(LLWU) +#define LLWU_F1 LLWU_F1_REG(LLWU) +#define LLWU_F2 LLWU_F2_REG(LLWU) +#define LLWU_F3 LLWU_F3_REG(LLWU) +#define LLWU_FILT1 LLWU_FILT1_REG(LLWU) +#define LLWU_FILT2 LLWU_FILT2_REG(LLWU) +#define LLWU_RST LLWU_RST_REG(LLWU) + +/*! + * @} + */ /* end of group LLWU_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group LLWU_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- LPTMR Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LPTMR_Peripheral_Access_Layer LPTMR Peripheral Access Layer + * @{ + */ + +/** LPTMR - Register Layout Typedef */ +typedef struct { + __IO uint32_t CSR; /**< Low Power Timer Control Status Register, offset: 0x0 */ + __IO uint32_t PSR; /**< Low Power Timer Prescale Register, offset: 0x4 */ + __IO uint32_t CMR; /**< Low Power Timer Compare Register, offset: 0x8 */ + __IO uint32_t CNR; /**< Low Power Timer Counter Register, offset: 0xC */ +} LPTMR_Type, *LPTMR_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- LPTMR - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LPTMR_Register_Accessor_Macros LPTMR - Register accessor macros + * @{ + */ + + +/* LPTMR - Register accessors */ +#define LPTMR_CSR_REG(base) ((base)->CSR) +#define LPTMR_PSR_REG(base) ((base)->PSR) +#define LPTMR_CMR_REG(base) ((base)->CMR) +#define LPTMR_CNR_REG(base) ((base)->CNR) + +/*! + * @} + */ /* end of group LPTMR_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- LPTMR Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LPTMR_Register_Masks LPTMR Register Masks + * @{ + */ + +/* CSR Bit Fields */ +#define LPTMR_CSR_TEN_MASK 0x1u +#define LPTMR_CSR_TEN_SHIFT 0 +#define LPTMR_CSR_TMS_MASK 0x2u +#define LPTMR_CSR_TMS_SHIFT 1 +#define LPTMR_CSR_TFC_MASK 0x4u +#define LPTMR_CSR_TFC_SHIFT 2 +#define LPTMR_CSR_TPP_MASK 0x8u +#define LPTMR_CSR_TPP_SHIFT 3 +#define LPTMR_CSR_TPS_MASK 0x30u +#define LPTMR_CSR_TPS_SHIFT 4 +#define LPTMR_CSR_TPS(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_CSR_TPS_SHIFT))&LPTMR_CSR_TPS_MASK) +#define LPTMR_CSR_TIE_MASK 0x40u +#define LPTMR_CSR_TIE_SHIFT 6 +#define LPTMR_CSR_TCF_MASK 0x80u +#define LPTMR_CSR_TCF_SHIFT 7 +/* PSR Bit Fields */ +#define LPTMR_PSR_PCS_MASK 0x3u +#define LPTMR_PSR_PCS_SHIFT 0 +#define LPTMR_PSR_PCS(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_PSR_PCS_SHIFT))&LPTMR_PSR_PCS_MASK) +#define LPTMR_PSR_PBYP_MASK 0x4u +#define LPTMR_PSR_PBYP_SHIFT 2 +#define LPTMR_PSR_PRESCALE_MASK 0x78u +#define LPTMR_PSR_PRESCALE_SHIFT 3 +#define LPTMR_PSR_PRESCALE(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_PSR_PRESCALE_SHIFT))&LPTMR_PSR_PRESCALE_MASK) +/* CMR Bit Fields */ +#define LPTMR_CMR_COMPARE_MASK 0xFFFFu +#define LPTMR_CMR_COMPARE_SHIFT 0 +#define LPTMR_CMR_COMPARE(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_CMR_COMPARE_SHIFT))&LPTMR_CMR_COMPARE_MASK) +/* CNR Bit Fields */ +#define LPTMR_CNR_COUNTER_MASK 0xFFFFu +#define LPTMR_CNR_COUNTER_SHIFT 0 +#define LPTMR_CNR_COUNTER(x) (((uint32_t)(((uint32_t)(x))<<LPTMR_CNR_COUNTER_SHIFT))&LPTMR_CNR_COUNTER_MASK) + +/*! + * @} + */ /* end of group LPTMR_Register_Masks */ + + +/* LPTMR - Peripheral instance base addresses */ +/** Peripheral LPTMR0 base address */ +#define LPTMR0_BASE (0x40040000u) +/** Peripheral LPTMR0 base pointer */ +#define LPTMR0 ((LPTMR_Type *)LPTMR0_BASE) +#define LPTMR0_BASE_PTR (LPTMR0) +/** Array initializer of LPTMR peripheral base pointers */ +#define LPTMR_BASES { LPTMR0 } + +/* ---------------------------------------------------------------------------- + -- LPTMR - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup LPTMR_Register_Accessor_Macros LPTMR - Register accessor macros + * @{ + */ + + +/* LPTMR - Register instance definitions */ +/* LPTMR0 */ +#define LPTMR0_CSR LPTMR_CSR_REG(LPTMR0) +#define LPTMR0_PSR LPTMR_PSR_REG(LPTMR0) +#define LPTMR0_CMR LPTMR_CMR_REG(LPTMR0) +#define LPTMR0_CNR LPTMR_CNR_REG(LPTMR0) + +/*! + * @} + */ /* end of group LPTMR_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group LPTMR_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- MCG Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCG_Peripheral_Access_Layer MCG Peripheral Access Layer + * @{ + */ + +/** MCG - Register Layout Typedef */ +typedef struct { + __IO uint8_t C1; /**< MCG Control 1 Register, offset: 0x0 */ + __IO uint8_t C2; /**< MCG Control 2 Register, offset: 0x1 */ + __IO uint8_t C3; /**< MCG Control 3 Register, offset: 0x2 */ + __IO uint8_t C4; /**< MCG Control 4 Register, offset: 0x3 */ + __IO uint8_t C5; /**< MCG Control 5 Register, offset: 0x4 */ + __IO uint8_t C6; /**< MCG Control 6 Register, offset: 0x5 */ + __IO uint8_t S; /**< MCG Status Register, offset: 0x6 */ + uint8_t RESERVED_0[1]; + __IO uint8_t SC; /**< MCG Status and Control Register, offset: 0x8 */ + uint8_t RESERVED_1[1]; + __IO uint8_t ATCVH; /**< MCG Auto Trim Compare Value High Register, offset: 0xA */ + __IO uint8_t ATCVL; /**< MCG Auto Trim Compare Value Low Register, offset: 0xB */ + __IO uint8_t C7; /**< MCG Control 7 Register, offset: 0xC */ + __IO uint8_t C8; /**< MCG Control 8 Register, offset: 0xD */ +} MCG_Type, *MCG_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- MCG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCG_Register_Accessor_Macros MCG - Register accessor macros + * @{ + */ + + +/* MCG - Register accessors */ +#define MCG_C1_REG(base) ((base)->C1) +#define MCG_C2_REG(base) ((base)->C2) +#define MCG_C3_REG(base) ((base)->C3) +#define MCG_C4_REG(base) ((base)->C4) +#define MCG_C5_REG(base) ((base)->C5) +#define MCG_C6_REG(base) ((base)->C6) +#define MCG_S_REG(base) ((base)->S) +#define MCG_SC_REG(base) ((base)->SC) +#define MCG_ATCVH_REG(base) ((base)->ATCVH) +#define MCG_ATCVL_REG(base) ((base)->ATCVL) +#define MCG_C7_REG(base) ((base)->C7) +#define MCG_C8_REG(base) ((base)->C8) + +/*! + * @} + */ /* end of group MCG_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- MCG Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCG_Register_Masks MCG Register Masks + * @{ + */ + +/* C1 Bit Fields */ +#define MCG_C1_IREFSTEN_MASK 0x1u +#define MCG_C1_IREFSTEN_SHIFT 0 +#define MCG_C1_IRCLKEN_MASK 0x2u +#define MCG_C1_IRCLKEN_SHIFT 1 +#define MCG_C1_IREFS_MASK 0x4u +#define MCG_C1_IREFS_SHIFT 2 +#define MCG_C1_FRDIV_MASK 0x38u +#define MCG_C1_FRDIV_SHIFT 3 +#define MCG_C1_FRDIV(x) (((uint8_t)(((uint8_t)(x))<<MCG_C1_FRDIV_SHIFT))&MCG_C1_FRDIV_MASK) +#define MCG_C1_CLKS_MASK 0xC0u +#define MCG_C1_CLKS_SHIFT 6 +#define MCG_C1_CLKS(x) (((uint8_t)(((uint8_t)(x))<<MCG_C1_CLKS_SHIFT))&MCG_C1_CLKS_MASK) +/* C2 Bit Fields */ +#define MCG_C2_IRCS_MASK 0x1u +#define MCG_C2_IRCS_SHIFT 0 +#define MCG_C2_LP_MASK 0x2u +#define MCG_C2_LP_SHIFT 1 +#define MCG_C2_EREFS_MASK 0x4u +#define MCG_C2_EREFS_SHIFT 2 +#define MCG_C2_HGO_MASK 0x8u +#define MCG_C2_HGO_SHIFT 3 +#define MCG_C2_RANGE_MASK 0x30u +#define MCG_C2_RANGE_SHIFT 4 +#define MCG_C2_RANGE(x) (((uint8_t)(((uint8_t)(x))<<MCG_C2_RANGE_SHIFT))&MCG_C2_RANGE_MASK) +#define MCG_C2_FCFTRIM_MASK 0x40u +#define MCG_C2_FCFTRIM_SHIFT 6 +#define MCG_C2_LOCRE0_MASK 0x80u +#define MCG_C2_LOCRE0_SHIFT 7 +/* C3 Bit Fields */ +#define MCG_C3_SCTRIM_MASK 0xFFu +#define MCG_C3_SCTRIM_SHIFT 0 +#define MCG_C3_SCTRIM(x) (((uint8_t)(((uint8_t)(x))<<MCG_C3_SCTRIM_SHIFT))&MCG_C3_SCTRIM_MASK) +/* C4 Bit Fields */ +#define MCG_C4_SCFTRIM_MASK 0x1u +#define MCG_C4_SCFTRIM_SHIFT 0 +#define MCG_C4_FCTRIM_MASK 0x1Eu +#define MCG_C4_FCTRIM_SHIFT 1 +#define MCG_C4_FCTRIM(x) (((uint8_t)(((uint8_t)(x))<<MCG_C4_FCTRIM_SHIFT))&MCG_C4_FCTRIM_MASK) +#define MCG_C4_DRST_DRS_MASK 0x60u +#define MCG_C4_DRST_DRS_SHIFT 5 +#define MCG_C4_DRST_DRS(x) (((uint8_t)(((uint8_t)(x))<<MCG_C4_DRST_DRS_SHIFT))&MCG_C4_DRST_DRS_MASK) +#define MCG_C4_DMX32_MASK 0x80u +#define MCG_C4_DMX32_SHIFT 7 +/* C5 Bit Fields */ +#define MCG_C5_PRDIV0_MASK 0x1Fu +#define MCG_C5_PRDIV0_SHIFT 0 +#define MCG_C5_PRDIV0(x) (((uint8_t)(((uint8_t)(x))<<MCG_C5_PRDIV0_SHIFT))&MCG_C5_PRDIV0_MASK) +#define MCG_C5_PLLSTEN0_MASK 0x20u +#define MCG_C5_PLLSTEN0_SHIFT 5 +#define MCG_C5_PLLCLKEN0_MASK 0x40u +#define MCG_C5_PLLCLKEN0_SHIFT 6 +/* C6 Bit Fields */ +#define MCG_C6_VDIV0_MASK 0x1Fu +#define MCG_C6_VDIV0_SHIFT 0 +#define MCG_C6_VDIV0(x) (((uint8_t)(((uint8_t)(x))<<MCG_C6_VDIV0_SHIFT))&MCG_C6_VDIV0_MASK) +#define MCG_C6_CME0_MASK 0x20u +#define MCG_C6_CME0_SHIFT 5 +#define MCG_C6_PLLS_MASK 0x40u +#define MCG_C6_PLLS_SHIFT 6 +#define MCG_C6_LOLIE0_MASK 0x80u +#define MCG_C6_LOLIE0_SHIFT 7 +/* S Bit Fields */ +#define MCG_S_IRCST_MASK 0x1u +#define MCG_S_IRCST_SHIFT 0 +#define MCG_S_OSCINIT0_MASK 0x2u +#define MCG_S_OSCINIT0_SHIFT 1 +#define MCG_S_CLKST_MASK 0xCu +#define MCG_S_CLKST_SHIFT 2 +#define MCG_S_CLKST(x) (((uint8_t)(((uint8_t)(x))<<MCG_S_CLKST_SHIFT))&MCG_S_CLKST_MASK) +#define MCG_S_IREFST_MASK 0x10u +#define MCG_S_IREFST_SHIFT 4 +#define MCG_S_PLLST_MASK 0x20u +#define MCG_S_PLLST_SHIFT 5 +#define MCG_S_LOCK0_MASK 0x40u +#define MCG_S_LOCK0_SHIFT 6 +#define MCG_S_LOLS0_MASK 0x80u +#define MCG_S_LOLS0_SHIFT 7 +/* SC Bit Fields */ +#define MCG_SC_LOCS0_MASK 0x1u +#define MCG_SC_LOCS0_SHIFT 0 +#define MCG_SC_FCRDIV_MASK 0xEu +#define MCG_SC_FCRDIV_SHIFT 1 +#define MCG_SC_FCRDIV(x) (((uint8_t)(((uint8_t)(x))<<MCG_SC_FCRDIV_SHIFT))&MCG_SC_FCRDIV_MASK) +#define MCG_SC_FLTPRSRV_MASK 0x10u +#define MCG_SC_FLTPRSRV_SHIFT 4 +#define MCG_SC_ATMF_MASK 0x20u +#define MCG_SC_ATMF_SHIFT 5 +#define MCG_SC_ATMS_MASK 0x40u +#define MCG_SC_ATMS_SHIFT 6 +#define MCG_SC_ATME_MASK 0x80u +#define MCG_SC_ATME_SHIFT 7 +/* ATCVH Bit Fields */ +#define MCG_ATCVH_ATCVH_MASK 0xFFu +#define MCG_ATCVH_ATCVH_SHIFT 0 +#define MCG_ATCVH_ATCVH(x) (((uint8_t)(((uint8_t)(x))<<MCG_ATCVH_ATCVH_SHIFT))&MCG_ATCVH_ATCVH_MASK) +/* ATCVL Bit Fields */ +#define MCG_ATCVL_ATCVL_MASK 0xFFu +#define MCG_ATCVL_ATCVL_SHIFT 0 +#define MCG_ATCVL_ATCVL(x) (((uint8_t)(((uint8_t)(x))<<MCG_ATCVL_ATCVL_SHIFT))&MCG_ATCVL_ATCVL_MASK) +/* C7 Bit Fields */ +#define MCG_C7_OSCSEL_MASK 0x3u +#define MCG_C7_OSCSEL_SHIFT 0 +#define MCG_C7_OSCSEL(x) (((uint8_t)(((uint8_t)(x))<<MCG_C7_OSCSEL_SHIFT))&MCG_C7_OSCSEL_MASK) +/* C8 Bit Fields */ +#define MCG_C8_LOCS1_MASK 0x1u +#define MCG_C8_LOCS1_SHIFT 0 +#define MCG_C8_CME1_MASK 0x20u +#define MCG_C8_CME1_SHIFT 5 +#define MCG_C8_LOLRE_MASK 0x40u +#define MCG_C8_LOLRE_SHIFT 6 +#define MCG_C8_LOCRE1_MASK 0x80u +#define MCG_C8_LOCRE1_SHIFT 7 + +/*! + * @} + */ /* end of group MCG_Register_Masks */ + + +/* MCG - Peripheral instance base addresses */ +/** Peripheral MCG base address */ +#define MCG_BASE (0x40064000u) +/** Peripheral MCG base pointer */ +#define MCG ((MCG_Type *)MCG_BASE) +#define MCG_BASE_PTR (MCG) +/** Array initializer of MCG peripheral base pointers */ +#define MCG_BASES { MCG } + +/* ---------------------------------------------------------------------------- + -- MCG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCG_Register_Accessor_Macros MCG - Register accessor macros + * @{ + */ + + +/* MCG - Register instance definitions */ +/* MCG */ +#define MCG_C1 MCG_C1_REG(MCG) +#define MCG_C2 MCG_C2_REG(MCG) +#define MCG_C3 MCG_C3_REG(MCG) +#define MCG_C4 MCG_C4_REG(MCG) +#define MCG_C5 MCG_C5_REG(MCG) +#define MCG_C6 MCG_C6_REG(MCG) +#define MCG_S MCG_S_REG(MCG) +#define MCG_SC MCG_SC_REG(MCG) +#define MCG_ATCVH MCG_ATCVH_REG(MCG) +#define MCG_ATCVL MCG_ATCVL_REG(MCG) +#define MCG_C7 MCG_C7_REG(MCG) +#define MCG_C8 MCG_C8_REG(MCG) + +/*! + * @} + */ /* end of group MCG_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group MCG_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- MCM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCM_Peripheral_Access_Layer MCM Peripheral Access Layer + * @{ + */ + +/** MCM - Register Layout Typedef */ +typedef struct { + uint8_t RESERVED_0[8]; + __I uint16_t PLASC; /**< Crossbar Switch (AXBS) Slave Configuration, offset: 0x8 */ + __I uint16_t PLAMC; /**< Crossbar Switch (AXBS) Master Configuration, offset: 0xA */ + __IO uint32_t CR; /**< Control Register, offset: 0xC */ + __IO uint32_t ISR; /**< Interrupt Status Register, offset: 0x10 */ + __IO uint32_t ETBCC; /**< ETB Counter Control register, offset: 0x14 */ + __IO uint32_t ETBRL; /**< ETB Reload register, offset: 0x18 */ + __I uint32_t ETBCNT; /**< ETB Counter Value register, offset: 0x1C */ + uint8_t RESERVED_1[16]; + __IO uint32_t PID; /**< Process ID register, offset: 0x30 */ +} MCM_Type, *MCM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- MCM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCM_Register_Accessor_Macros MCM - Register accessor macros + * @{ + */ + + +/* MCM - Register accessors */ +#define MCM_PLASC_REG(base) ((base)->PLASC) +#define MCM_PLAMC_REG(base) ((base)->PLAMC) +#define MCM_CR_REG(base) ((base)->CR) +#define MCM_ISR_REG(base) ((base)->ISR) +#define MCM_ETBCC_REG(base) ((base)->ETBCC) +#define MCM_ETBRL_REG(base) ((base)->ETBRL) +#define MCM_ETBCNT_REG(base) ((base)->ETBCNT) +#define MCM_PID_REG(base) ((base)->PID) + +/*! + * @} + */ /* end of group MCM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- MCM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCM_Register_Masks MCM Register Masks + * @{ + */ + +/* PLASC Bit Fields */ +#define MCM_PLASC_ASC_MASK 0xFFu +#define MCM_PLASC_ASC_SHIFT 0 +#define MCM_PLASC_ASC(x) (((uint16_t)(((uint16_t)(x))<<MCM_PLASC_ASC_SHIFT))&MCM_PLASC_ASC_MASK) +/* PLAMC Bit Fields */ +#define MCM_PLAMC_AMC_MASK 0xFFu +#define MCM_PLAMC_AMC_SHIFT 0 +#define MCM_PLAMC_AMC(x) (((uint16_t)(((uint16_t)(x))<<MCM_PLAMC_AMC_SHIFT))&MCM_PLAMC_AMC_MASK) +/* CR Bit Fields */ +#define MCM_CR_SRAMUAP_MASK 0x3000000u +#define MCM_CR_SRAMUAP_SHIFT 24 +#define MCM_CR_SRAMUAP(x) (((uint32_t)(((uint32_t)(x))<<MCM_CR_SRAMUAP_SHIFT))&MCM_CR_SRAMUAP_MASK) +#define MCM_CR_SRAMUWP_MASK 0x4000000u +#define MCM_CR_SRAMUWP_SHIFT 26 +#define MCM_CR_SRAMLAP_MASK 0x30000000u +#define MCM_CR_SRAMLAP_SHIFT 28 +#define MCM_CR_SRAMLAP(x) (((uint32_t)(((uint32_t)(x))<<MCM_CR_SRAMLAP_SHIFT))&MCM_CR_SRAMLAP_MASK) +#define MCM_CR_SRAMLWP_MASK 0x40000000u +#define MCM_CR_SRAMLWP_SHIFT 30 +/* ISR Bit Fields */ +#define MCM_ISR_IRQ_MASK 0x2u +#define MCM_ISR_IRQ_SHIFT 1 +#define MCM_ISR_NMI_MASK 0x4u +#define MCM_ISR_NMI_SHIFT 2 +#define MCM_ISR_DHREQ_MASK 0x8u +#define MCM_ISR_DHREQ_SHIFT 3 +#define MCM_ISR_FIOC_MASK 0x100u +#define MCM_ISR_FIOC_SHIFT 8 +#define MCM_ISR_FDZC_MASK 0x200u +#define MCM_ISR_FDZC_SHIFT 9 +#define MCM_ISR_FOFC_MASK 0x400u +#define MCM_ISR_FOFC_SHIFT 10 +#define MCM_ISR_FUFC_MASK 0x800u +#define MCM_ISR_FUFC_SHIFT 11 +#define MCM_ISR_FIXC_MASK 0x1000u +#define MCM_ISR_FIXC_SHIFT 12 +#define MCM_ISR_FIDC_MASK 0x8000u +#define MCM_ISR_FIDC_SHIFT 15 +#define MCM_ISR_FIOCE_MASK 0x1000000u +#define MCM_ISR_FIOCE_SHIFT 24 +#define MCM_ISR_FDZCE_MASK 0x2000000u +#define MCM_ISR_FDZCE_SHIFT 25 +#define MCM_ISR_FOFCE_MASK 0x4000000u +#define MCM_ISR_FOFCE_SHIFT 26 +#define MCM_ISR_FUFCE_MASK 0x8000000u +#define MCM_ISR_FUFCE_SHIFT 27 +#define MCM_ISR_FIXCE_MASK 0x10000000u +#define MCM_ISR_FIXCE_SHIFT 28 +#define MCM_ISR_FIDCE_MASK 0x80000000u +#define MCM_ISR_FIDCE_SHIFT 31 +/* ETBCC Bit Fields */ +#define MCM_ETBCC_CNTEN_MASK 0x1u +#define MCM_ETBCC_CNTEN_SHIFT 0 +#define MCM_ETBCC_RSPT_MASK 0x6u +#define MCM_ETBCC_RSPT_SHIFT 1 +#define MCM_ETBCC_RSPT(x) (((uint32_t)(((uint32_t)(x))<<MCM_ETBCC_RSPT_SHIFT))&MCM_ETBCC_RSPT_MASK) +#define MCM_ETBCC_RLRQ_MASK 0x8u +#define MCM_ETBCC_RLRQ_SHIFT 3 +#define MCM_ETBCC_ETDIS_MASK 0x10u +#define MCM_ETBCC_ETDIS_SHIFT 4 +#define MCM_ETBCC_ITDIS_MASK 0x20u +#define MCM_ETBCC_ITDIS_SHIFT 5 +/* ETBRL Bit Fields */ +#define MCM_ETBRL_RELOAD_MASK 0x7FFu +#define MCM_ETBRL_RELOAD_SHIFT 0 +#define MCM_ETBRL_RELOAD(x) (((uint32_t)(((uint32_t)(x))<<MCM_ETBRL_RELOAD_SHIFT))&MCM_ETBRL_RELOAD_MASK) +/* ETBCNT Bit Fields */ +#define MCM_ETBCNT_COUNTER_MASK 0x7FFu +#define MCM_ETBCNT_COUNTER_SHIFT 0 +#define MCM_ETBCNT_COUNTER(x) (((uint32_t)(((uint32_t)(x))<<MCM_ETBCNT_COUNTER_SHIFT))&MCM_ETBCNT_COUNTER_MASK) +/* PID Bit Fields */ +#define MCM_PID_PID_MASK 0xFFu +#define MCM_PID_PID_SHIFT 0 +#define MCM_PID_PID(x) (((uint32_t)(((uint32_t)(x))<<MCM_PID_PID_SHIFT))&MCM_PID_PID_MASK) + +/*! + * @} + */ /* end of group MCM_Register_Masks */ + + +/* MCM - Peripheral instance base addresses */ +/** Peripheral MCM base address */ +#define MCM_BASE (0xE0080000u) +/** Peripheral MCM base pointer */ +#define MCM ((MCM_Type *)MCM_BASE) +#define MCM_BASE_PTR (MCM) +/** Array initializer of MCM peripheral base pointers */ +#define MCM_BASES { MCM } + +/* ---------------------------------------------------------------------------- + -- MCM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MCM_Register_Accessor_Macros MCM - Register accessor macros + * @{ + */ + + +/* MCM - Register instance definitions */ +/* MCM */ +#define MCM_PLASC MCM_PLASC_REG(MCM) +#define MCM_PLAMC MCM_PLAMC_REG(MCM) +#define MCM_CR MCM_CR_REG(MCM) +#define MCM_ISCR MCM_ISR_REG(MCM) +#define MCM_ETBCC MCM_ETBCC_REG(MCM) +#define MCM_ETBRL MCM_ETBRL_REG(MCM) +#define MCM_ETBCNT MCM_ETBCNT_REG(MCM) +#define MCM_PID MCM_PID_REG(MCM) + +/*! + * @} + */ /* end of group MCM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group MCM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- MPU Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MPU_Peripheral_Access_Layer MPU Peripheral Access Layer + * @{ + */ + +/** MPU - Register Layout Typedef */ +typedef struct { + __IO uint32_t CESR; /**< Control/Error Status Register, offset: 0x0 */ + uint8_t RESERVED_0[12]; + struct { /* offset: 0x10, array step: 0x8 */ + __I uint32_t EAR; /**< Error Address Register, slave port n, array offset: 0x10, array step: 0x8 */ + __I uint32_t EDR; /**< Error Detail Register, slave port n, array offset: 0x14, array step: 0x8 */ + } SP[5]; + uint8_t RESERVED_1[968]; + __IO uint32_t WORD[12][4]; /**< Region Descriptor n, Word 0..Region Descriptor n, Word 3, array offset: 0x400, array step: index*0x10, index2*0x4 */ + uint8_t RESERVED_2[832]; + __IO uint32_t RGDAAC[12]; /**< Region Descriptor Alternate Access Control n, array offset: 0x800, array step: 0x4 */ +} MPU_Type, *MPU_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- MPU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MPU_Register_Accessor_Macros MPU - Register accessor macros + * @{ + */ + + +/* MPU - Register accessors */ +#define MPU_CESR_REG(base) ((base)->CESR) +#define MPU_EAR_REG(base,index) ((base)->SP[index].EAR) +#define MPU_EDR_REG(base,index) ((base)->SP[index].EDR) +#define MPU_WORD_REG(base,index,index2) ((base)->WORD[index][index2]) +#define MPU_RGDAAC_REG(base,index) ((base)->RGDAAC[index]) + +/*! + * @} + */ /* end of group MPU_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- MPU Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MPU_Register_Masks MPU Register Masks + * @{ + */ + +/* CESR Bit Fields */ +#define MPU_CESR_VLD_MASK 0x1u +#define MPU_CESR_VLD_SHIFT 0 +#define MPU_CESR_NRGD_MASK 0xF00u +#define MPU_CESR_NRGD_SHIFT 8 +#define MPU_CESR_NRGD(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_NRGD_SHIFT))&MPU_CESR_NRGD_MASK) +#define MPU_CESR_NSP_MASK 0xF000u +#define MPU_CESR_NSP_SHIFT 12 +#define MPU_CESR_NSP(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_NSP_SHIFT))&MPU_CESR_NSP_MASK) +#define MPU_CESR_HRL_MASK 0xF0000u +#define MPU_CESR_HRL_SHIFT 16 +#define MPU_CESR_HRL(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_HRL_SHIFT))&MPU_CESR_HRL_MASK) +#define MPU_CESR_SPERR_MASK 0xF8000000u +#define MPU_CESR_SPERR_SHIFT 27 +#define MPU_CESR_SPERR(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_SPERR_SHIFT))&MPU_CESR_SPERR_MASK) +/* EAR Bit Fields */ +#define MPU_EAR_EADDR_MASK 0xFFFFFFFFu +#define MPU_EAR_EADDR_SHIFT 0 +#define MPU_EAR_EADDR(x) (((uint32_t)(((uint32_t)(x))<<MPU_EAR_EADDR_SHIFT))&MPU_EAR_EADDR_MASK) +/* EDR Bit Fields */ +#define MPU_EDR_ERW_MASK 0x1u +#define MPU_EDR_ERW_SHIFT 0 +#define MPU_EDR_EATTR_MASK 0xEu +#define MPU_EDR_EATTR_SHIFT 1 +#define MPU_EDR_EATTR(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EATTR_SHIFT))&MPU_EDR_EATTR_MASK) +#define MPU_EDR_EMN_MASK 0xF0u +#define MPU_EDR_EMN_SHIFT 4 +#define MPU_EDR_EMN(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EMN_SHIFT))&MPU_EDR_EMN_MASK) +#define MPU_EDR_EPID_MASK 0xFF00u +#define MPU_EDR_EPID_SHIFT 8 +#define MPU_EDR_EPID(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EPID_SHIFT))&MPU_EDR_EPID_MASK) +#define MPU_EDR_EACD_MASK 0xFFFF0000u +#define MPU_EDR_EACD_SHIFT 16 +#define MPU_EDR_EACD(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EACD_SHIFT))&MPU_EDR_EACD_MASK) +/* WORD Bit Fields */ +#define MPU_WORD_VLD_MASK 0x1u +#define MPU_WORD_VLD_SHIFT 0 +#define MPU_WORD_M0UM_MASK 0x7u +#define MPU_WORD_M0UM_SHIFT 0 +#define MPU_WORD_M0UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M0UM_SHIFT))&MPU_WORD_M0UM_MASK) +#define MPU_WORD_M0SM_MASK 0x18u +#define MPU_WORD_M0SM_SHIFT 3 +#define MPU_WORD_M0SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M0SM_SHIFT))&MPU_WORD_M0SM_MASK) +#define MPU_WORD_M0PE_MASK 0x20u +#define MPU_WORD_M0PE_SHIFT 5 +#define MPU_WORD_ENDADDR_MASK 0xFFFFFFE0u +#define MPU_WORD_ENDADDR_SHIFT 5 +#define MPU_WORD_ENDADDR(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_ENDADDR_SHIFT))&MPU_WORD_ENDADDR_MASK) +#define MPU_WORD_SRTADDR_MASK 0xFFFFFFE0u +#define MPU_WORD_SRTADDR_SHIFT 5 +#define MPU_WORD_SRTADDR(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_SRTADDR_SHIFT))&MPU_WORD_SRTADDR_MASK) +#define MPU_WORD_M1UM_MASK 0x1C0u +#define MPU_WORD_M1UM_SHIFT 6 +#define MPU_WORD_M1UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M1UM_SHIFT))&MPU_WORD_M1UM_MASK) +#define MPU_WORD_M1SM_MASK 0x600u +#define MPU_WORD_M1SM_SHIFT 9 +#define MPU_WORD_M1SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M1SM_SHIFT))&MPU_WORD_M1SM_MASK) +#define MPU_WORD_M1PE_MASK 0x800u +#define MPU_WORD_M1PE_SHIFT 11 +#define MPU_WORD_M2UM_MASK 0x7000u +#define MPU_WORD_M2UM_SHIFT 12 +#define MPU_WORD_M2UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M2UM_SHIFT))&MPU_WORD_M2UM_MASK) +#define MPU_WORD_M2SM_MASK 0x18000u +#define MPU_WORD_M2SM_SHIFT 15 +#define MPU_WORD_M2SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M2SM_SHIFT))&MPU_WORD_M2SM_MASK) +#define MPU_WORD_PIDMASK_MASK 0xFF0000u +#define MPU_WORD_PIDMASK_SHIFT 16 +#define MPU_WORD_PIDMASK(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_PIDMASK_SHIFT))&MPU_WORD_PIDMASK_MASK) +#define MPU_WORD_M2PE_MASK 0x20000u +#define MPU_WORD_M2PE_SHIFT 17 +#define MPU_WORD_M3UM_MASK 0x1C0000u +#define MPU_WORD_M3UM_SHIFT 18 +#define MPU_WORD_M3UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M3UM_SHIFT))&MPU_WORD_M3UM_MASK) +#define MPU_WORD_M3SM_MASK 0x600000u +#define MPU_WORD_M3SM_SHIFT 21 +#define MPU_WORD_M3SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M3SM_SHIFT))&MPU_WORD_M3SM_MASK) +#define MPU_WORD_M3PE_MASK 0x800000u +#define MPU_WORD_M3PE_SHIFT 23 +#define MPU_WORD_PID_MASK 0xFF000000u +#define MPU_WORD_PID_SHIFT 24 +#define MPU_WORD_PID(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_PID_SHIFT))&MPU_WORD_PID_MASK) +#define MPU_WORD_M4WE_MASK 0x1000000u +#define MPU_WORD_M4WE_SHIFT 24 +#define MPU_WORD_M4RE_MASK 0x2000000u +#define MPU_WORD_M4RE_SHIFT 25 +#define MPU_WORD_M5WE_MASK 0x4000000u +#define MPU_WORD_M5WE_SHIFT 26 +#define MPU_WORD_M5RE_MASK 0x8000000u +#define MPU_WORD_M5RE_SHIFT 27 +#define MPU_WORD_M6WE_MASK 0x10000000u +#define MPU_WORD_M6WE_SHIFT 28 +#define MPU_WORD_M6RE_MASK 0x20000000u +#define MPU_WORD_M6RE_SHIFT 29 +#define MPU_WORD_M7WE_MASK 0x40000000u +#define MPU_WORD_M7WE_SHIFT 30 +#define MPU_WORD_M7RE_MASK 0x80000000u +#define MPU_WORD_M7RE_SHIFT 31 +/* RGDAAC Bit Fields */ +#define MPU_RGDAAC_M0UM_MASK 0x7u +#define MPU_RGDAAC_M0UM_SHIFT 0 +#define MPU_RGDAAC_M0UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M0UM_SHIFT))&MPU_RGDAAC_M0UM_MASK) +#define MPU_RGDAAC_M0SM_MASK 0x18u +#define MPU_RGDAAC_M0SM_SHIFT 3 +#define MPU_RGDAAC_M0SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M0SM_SHIFT))&MPU_RGDAAC_M0SM_MASK) +#define MPU_RGDAAC_M0PE_MASK 0x20u +#define MPU_RGDAAC_M0PE_SHIFT 5 +#define MPU_RGDAAC_M1UM_MASK 0x1C0u +#define MPU_RGDAAC_M1UM_SHIFT 6 +#define MPU_RGDAAC_M1UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M1UM_SHIFT))&MPU_RGDAAC_M1UM_MASK) +#define MPU_RGDAAC_M1SM_MASK 0x600u +#define MPU_RGDAAC_M1SM_SHIFT 9 +#define MPU_RGDAAC_M1SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M1SM_SHIFT))&MPU_RGDAAC_M1SM_MASK) +#define MPU_RGDAAC_M1PE_MASK 0x800u +#define MPU_RGDAAC_M1PE_SHIFT 11 +#define MPU_RGDAAC_M2UM_MASK 0x7000u +#define MPU_RGDAAC_M2UM_SHIFT 12 +#define MPU_RGDAAC_M2UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M2UM_SHIFT))&MPU_RGDAAC_M2UM_MASK) +#define MPU_RGDAAC_M2SM_MASK 0x18000u +#define MPU_RGDAAC_M2SM_SHIFT 15 +#define MPU_RGDAAC_M2SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M2SM_SHIFT))&MPU_RGDAAC_M2SM_MASK) +#define MPU_RGDAAC_M2PE_MASK 0x20000u +#define MPU_RGDAAC_M2PE_SHIFT 17 +#define MPU_RGDAAC_M3UM_MASK 0x1C0000u +#define MPU_RGDAAC_M3UM_SHIFT 18 +#define MPU_RGDAAC_M3UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M3UM_SHIFT))&MPU_RGDAAC_M3UM_MASK) +#define MPU_RGDAAC_M3SM_MASK 0x600000u +#define MPU_RGDAAC_M3SM_SHIFT 21 +#define MPU_RGDAAC_M3SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M3SM_SHIFT))&MPU_RGDAAC_M3SM_MASK) +#define MPU_RGDAAC_M3PE_MASK 0x800000u +#define MPU_RGDAAC_M3PE_SHIFT 23 +#define MPU_RGDAAC_M4WE_MASK 0x1000000u +#define MPU_RGDAAC_M4WE_SHIFT 24 +#define MPU_RGDAAC_M4RE_MASK 0x2000000u +#define MPU_RGDAAC_M4RE_SHIFT 25 +#define MPU_RGDAAC_M5WE_MASK 0x4000000u +#define MPU_RGDAAC_M5WE_SHIFT 26 +#define MPU_RGDAAC_M5RE_MASK 0x8000000u +#define MPU_RGDAAC_M5RE_SHIFT 27 +#define MPU_RGDAAC_M6WE_MASK 0x10000000u +#define MPU_RGDAAC_M6WE_SHIFT 28 +#define MPU_RGDAAC_M6RE_MASK 0x20000000u +#define MPU_RGDAAC_M6RE_SHIFT 29 +#define MPU_RGDAAC_M7WE_MASK 0x40000000u +#define MPU_RGDAAC_M7WE_SHIFT 30 +#define MPU_RGDAAC_M7RE_MASK 0x80000000u +#define MPU_RGDAAC_M7RE_SHIFT 31 + +/*! + * @} + */ /* end of group MPU_Register_Masks */ + + +/* MPU - Peripheral instance base addresses */ +/** Peripheral MPU base address */ +#define MPU_BASE (0x4000D000u) +/** Peripheral MPU base pointer */ +#define MPU ((MPU_Type *)MPU_BASE) +#define MPU_BASE_PTR (MPU) +/** Array initializer of MPU peripheral base pointers */ +#define MPU_BASES { MPU } + +/* ---------------------------------------------------------------------------- + -- MPU - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup MPU_Register_Accessor_Macros MPU - Register accessor macros + * @{ + */ + + +/* MPU - Register instance definitions */ +/* MPU */ +#define MPU_CESR MPU_CESR_REG(MPU) +#define MPU_EAR0 MPU_EAR_REG(MPU,0) +#define MPU_EDR0 MPU_EDR_REG(MPU,0) +#define MPU_EAR1 MPU_EAR_REG(MPU,1) +#define MPU_EDR1 MPU_EDR_REG(MPU,1) +#define MPU_EAR2 MPU_EAR_REG(MPU,2) +#define MPU_EDR2 MPU_EDR_REG(MPU,2) +#define MPU_EAR3 MPU_EAR_REG(MPU,3) +#define MPU_EDR3 MPU_EDR_REG(MPU,3) +#define MPU_EAR4 MPU_EAR_REG(MPU,4) +#define MPU_EDR4 MPU_EDR_REG(MPU,4) +#define MPU_RGD0_WORD0 MPU_WORD_REG(MPU,0,0) +#define MPU_RGD0_WORD1 MPU_WORD_REG(MPU,0,1) +#define MPU_RGD0_WORD2 MPU_WORD_REG(MPU,0,2) +#define MPU_RGD0_WORD3 MPU_WORD_REG(MPU,0,3) +#define MPU_RGD1_WORD0 MPU_WORD_REG(MPU,1,0) +#define MPU_RGD1_WORD1 MPU_WORD_REG(MPU,1,1) +#define MPU_RGD1_WORD2 MPU_WORD_REG(MPU,1,2) +#define MPU_RGD1_WORD3 MPU_WORD_REG(MPU,1,3) +#define MPU_RGD2_WORD0 MPU_WORD_REG(MPU,2,0) +#define MPU_RGD2_WORD1 MPU_WORD_REG(MPU,2,1) +#define MPU_RGD2_WORD2 MPU_WORD_REG(MPU,2,2) +#define MPU_RGD2_WORD3 MPU_WORD_REG(MPU,2,3) +#define MPU_RGD3_WORD0 MPU_WORD_REG(MPU,3,0) +#define MPU_RGD3_WORD1 MPU_WORD_REG(MPU,3,1) +#define MPU_RGD3_WORD2 MPU_WORD_REG(MPU,3,2) +#define MPU_RGD3_WORD3 MPU_WORD_REG(MPU,3,3) +#define MPU_RGD4_WORD0 MPU_WORD_REG(MPU,4,0) +#define MPU_RGD4_WORD1 MPU_WORD_REG(MPU,4,1) +#define MPU_RGD4_WORD2 MPU_WORD_REG(MPU,4,2) +#define MPU_RGD4_WORD3 MPU_WORD_REG(MPU,4,3) +#define MPU_RGD5_WORD0 MPU_WORD_REG(MPU,5,0) +#define MPU_RGD5_WORD1 MPU_WORD_REG(MPU,5,1) +#define MPU_RGD5_WORD2 MPU_WORD_REG(MPU,5,2) +#define MPU_RGD5_WORD3 MPU_WORD_REG(MPU,5,3) +#define MPU_RGD6_WORD0 MPU_WORD_REG(MPU,6,0) +#define MPU_RGD6_WORD1 MPU_WORD_REG(MPU,6,1) +#define MPU_RGD6_WORD2 MPU_WORD_REG(MPU,6,2) +#define MPU_RGD6_WORD3 MPU_WORD_REG(MPU,6,3) +#define MPU_RGD7_WORD0 MPU_WORD_REG(MPU,7,0) +#define MPU_RGD7_WORD1 MPU_WORD_REG(MPU,7,1) +#define MPU_RGD7_WORD2 MPU_WORD_REG(MPU,7,2) +#define MPU_RGD7_WORD3 MPU_WORD_REG(MPU,7,3) +#define MPU_RGD8_WORD0 MPU_WORD_REG(MPU,8,0) +#define MPU_RGD8_WORD1 MPU_WORD_REG(MPU,8,1) +#define MPU_RGD8_WORD2 MPU_WORD_REG(MPU,8,2) +#define MPU_RGD8_WORD3 MPU_WORD_REG(MPU,8,3) +#define MPU_RGD9_WORD0 MPU_WORD_REG(MPU,9,0) +#define MPU_RGD9_WORD1 MPU_WORD_REG(MPU,9,1) +#define MPU_RGD9_WORD2 MPU_WORD_REG(MPU,9,2) +#define MPU_RGD9_WORD3 MPU_WORD_REG(MPU,9,3) +#define MPU_RGD10_WORD0 MPU_WORD_REG(MPU,10,0) +#define MPU_RGD10_WORD1 MPU_WORD_REG(MPU,10,1) +#define MPU_RGD10_WORD2 MPU_WORD_REG(MPU,10,2) +#define MPU_RGD10_WORD3 MPU_WORD_REG(MPU,10,3) +#define MPU_RGD11_WORD0 MPU_WORD_REG(MPU,11,0) +#define MPU_RGD11_WORD1 MPU_WORD_REG(MPU,11,1) +#define MPU_RGD11_WORD2 MPU_WORD_REG(MPU,11,2) +#define MPU_RGD11_WORD3 MPU_WORD_REG(MPU,11,3) +#define MPU_RGDAAC0 MPU_RGDAAC_REG(MPU,0) +#define MPU_RGDAAC1 MPU_RGDAAC_REG(MPU,1) +#define MPU_RGDAAC2 MPU_RGDAAC_REG(MPU,2) +#define MPU_RGDAAC3 MPU_RGDAAC_REG(MPU,3) +#define MPU_RGDAAC4 MPU_RGDAAC_REG(MPU,4) +#define MPU_RGDAAC5 MPU_RGDAAC_REG(MPU,5) +#define MPU_RGDAAC6 MPU_RGDAAC_REG(MPU,6) +#define MPU_RGDAAC7 MPU_RGDAAC_REG(MPU,7) +#define MPU_RGDAAC8 MPU_RGDAAC_REG(MPU,8) +#define MPU_RGDAAC9 MPU_RGDAAC_REG(MPU,9) +#define MPU_RGDAAC10 MPU_RGDAAC_REG(MPU,10) +#define MPU_RGDAAC11 MPU_RGDAAC_REG(MPU,11) + +/* MPU - Register array accessors */ +#define MPU_EAR(index) MPU_EAR_REG(MPU,index) +#define MPU_EDR(index) MPU_EDR_REG(MPU,index) +#define MPU_WORD(index,index2) MPU_WORD_REG(MPU,index,index2) +#define MPU_RGDAAC(index) MPU_RGDAAC_REG(MPU,index) + +/*! + * @} + */ /* end of group MPU_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group MPU_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- NV Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup NV_Peripheral_Access_Layer NV Peripheral Access Layer + * @{ + */ + +/** NV - Register Layout Typedef */ +typedef struct { + __I uint8_t BACKKEY3; /**< Backdoor Comparison Key 3., offset: 0x0 */ + __I uint8_t BACKKEY2; /**< Backdoor Comparison Key 2., offset: 0x1 */ + __I uint8_t BACKKEY1; /**< Backdoor Comparison Key 1., offset: 0x2 */ + __I uint8_t BACKKEY0; /**< Backdoor Comparison Key 0., offset: 0x3 */ + __I uint8_t BACKKEY7; /**< Backdoor Comparison Key 7., offset: 0x4 */ + __I uint8_t BACKKEY6; /**< Backdoor Comparison Key 6., offset: 0x5 */ + __I uint8_t BACKKEY5; /**< Backdoor Comparison Key 5., offset: 0x6 */ + __I uint8_t BACKKEY4; /**< Backdoor Comparison Key 4., offset: 0x7 */ + __I uint8_t FPROT3; /**< Non-volatile P-Flash Protection 1 - Low Register, offset: 0x8 */ + __I uint8_t FPROT2; /**< Non-volatile P-Flash Protection 1 - High Register, offset: 0x9 */ + __I uint8_t FPROT1; /**< Non-volatile P-Flash Protection 0 - Low Register, offset: 0xA */ + __I uint8_t FPROT0; /**< Non-volatile P-Flash Protection 0 - High Register, offset: 0xB */ + __I uint8_t FSEC; /**< Non-volatile Flash Security Register, offset: 0xC */ + __I uint8_t FOPT; /**< Non-volatile Flash Option Register, offset: 0xD */ + __I uint8_t FEPROT; /**< Non-volatile EERAM Protection Register, offset: 0xE */ + __I uint8_t FDPROT; /**< Non-volatile D-Flash Protection Register, offset: 0xF */ +} NV_Type, *NV_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- NV - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup NV_Register_Accessor_Macros NV - Register accessor macros + * @{ + */ + + +/* NV - Register accessors */ +#define NV_BACKKEY3_REG(base) ((base)->BACKKEY3) +#define NV_BACKKEY2_REG(base) ((base)->BACKKEY2) +#define NV_BACKKEY1_REG(base) ((base)->BACKKEY1) +#define NV_BACKKEY0_REG(base) ((base)->BACKKEY0) +#define NV_BACKKEY7_REG(base) ((base)->BACKKEY7) +#define NV_BACKKEY6_REG(base) ((base)->BACKKEY6) +#define NV_BACKKEY5_REG(base) ((base)->BACKKEY5) +#define NV_BACKKEY4_REG(base) ((base)->BACKKEY4) +#define NV_FPROT3_REG(base) ((base)->FPROT3) +#define NV_FPROT2_REG(base) ((base)->FPROT2) +#define NV_FPROT1_REG(base) ((base)->FPROT1) +#define NV_FPROT0_REG(base) ((base)->FPROT0) +#define NV_FSEC_REG(base) ((base)->FSEC) +#define NV_FOPT_REG(base) ((base)->FOPT) +#define NV_FEPROT_REG(base) ((base)->FEPROT) +#define NV_FDPROT_REG(base) ((base)->FDPROT) + +/*! + * @} + */ /* end of group NV_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- NV Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup NV_Register_Masks NV Register Masks + * @{ + */ + +/* BACKKEY3 Bit Fields */ +#define NV_BACKKEY3_KEY_MASK 0xFFu +#define NV_BACKKEY3_KEY_SHIFT 0 +#define NV_BACKKEY3_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY3_KEY_SHIFT))&NV_BACKKEY3_KEY_MASK) +/* BACKKEY2 Bit Fields */ +#define NV_BACKKEY2_KEY_MASK 0xFFu +#define NV_BACKKEY2_KEY_SHIFT 0 +#define NV_BACKKEY2_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY2_KEY_SHIFT))&NV_BACKKEY2_KEY_MASK) +/* BACKKEY1 Bit Fields */ +#define NV_BACKKEY1_KEY_MASK 0xFFu +#define NV_BACKKEY1_KEY_SHIFT 0 +#define NV_BACKKEY1_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY1_KEY_SHIFT))&NV_BACKKEY1_KEY_MASK) +/* BACKKEY0 Bit Fields */ +#define NV_BACKKEY0_KEY_MASK 0xFFu +#define NV_BACKKEY0_KEY_SHIFT 0 +#define NV_BACKKEY0_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY0_KEY_SHIFT))&NV_BACKKEY0_KEY_MASK) +/* BACKKEY7 Bit Fields */ +#define NV_BACKKEY7_KEY_MASK 0xFFu +#define NV_BACKKEY7_KEY_SHIFT 0 +#define NV_BACKKEY7_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY7_KEY_SHIFT))&NV_BACKKEY7_KEY_MASK) +/* BACKKEY6 Bit Fields */ +#define NV_BACKKEY6_KEY_MASK 0xFFu +#define NV_BACKKEY6_KEY_SHIFT 0 +#define NV_BACKKEY6_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY6_KEY_SHIFT))&NV_BACKKEY6_KEY_MASK) +/* BACKKEY5 Bit Fields */ +#define NV_BACKKEY5_KEY_MASK 0xFFu +#define NV_BACKKEY5_KEY_SHIFT 0 +#define NV_BACKKEY5_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY5_KEY_SHIFT))&NV_BACKKEY5_KEY_MASK) +/* BACKKEY4 Bit Fields */ +#define NV_BACKKEY4_KEY_MASK 0xFFu +#define NV_BACKKEY4_KEY_SHIFT 0 +#define NV_BACKKEY4_KEY(x) (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY4_KEY_SHIFT))&NV_BACKKEY4_KEY_MASK) +/* FPROT3 Bit Fields */ +#define NV_FPROT3_PROT_MASK 0xFFu +#define NV_FPROT3_PROT_SHIFT 0 +#define NV_FPROT3_PROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FPROT3_PROT_SHIFT))&NV_FPROT3_PROT_MASK) +/* FPROT2 Bit Fields */ +#define NV_FPROT2_PROT_MASK 0xFFu +#define NV_FPROT2_PROT_SHIFT 0 +#define NV_FPROT2_PROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FPROT2_PROT_SHIFT))&NV_FPROT2_PROT_MASK) +/* FPROT1 Bit Fields */ +#define NV_FPROT1_PROT_MASK 0xFFu +#define NV_FPROT1_PROT_SHIFT 0 +#define NV_FPROT1_PROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FPROT1_PROT_SHIFT))&NV_FPROT1_PROT_MASK) +/* FPROT0 Bit Fields */ +#define NV_FPROT0_PROT_MASK 0xFFu +#define NV_FPROT0_PROT_SHIFT 0 +#define NV_FPROT0_PROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FPROT0_PROT_SHIFT))&NV_FPROT0_PROT_MASK) +/* FSEC Bit Fields */ +#define NV_FSEC_SEC_MASK 0x3u +#define NV_FSEC_SEC_SHIFT 0 +#define NV_FSEC_SEC(x) (((uint8_t)(((uint8_t)(x))<<NV_FSEC_SEC_SHIFT))&NV_FSEC_SEC_MASK) +#define NV_FSEC_FSLACC_MASK 0xCu +#define NV_FSEC_FSLACC_SHIFT 2 +#define NV_FSEC_FSLACC(x) (((uint8_t)(((uint8_t)(x))<<NV_FSEC_FSLACC_SHIFT))&NV_FSEC_FSLACC_MASK) +#define NV_FSEC_MEEN_MASK 0x30u +#define NV_FSEC_MEEN_SHIFT 4 +#define NV_FSEC_MEEN(x) (((uint8_t)(((uint8_t)(x))<<NV_FSEC_MEEN_SHIFT))&NV_FSEC_MEEN_MASK) +#define NV_FSEC_KEYEN_MASK 0xC0u +#define NV_FSEC_KEYEN_SHIFT 6 +#define NV_FSEC_KEYEN(x) (((uint8_t)(((uint8_t)(x))<<NV_FSEC_KEYEN_SHIFT))&NV_FSEC_KEYEN_MASK) +/* FOPT Bit Fields */ +#define NV_FOPT_LPBOOT_MASK 0x1u +#define NV_FOPT_LPBOOT_SHIFT 0 +#define NV_FOPT_EZPORT_DIS_MASK 0x2u +#define NV_FOPT_EZPORT_DIS_SHIFT 1 +/* FEPROT Bit Fields */ +#define NV_FEPROT_EPROT_MASK 0xFFu +#define NV_FEPROT_EPROT_SHIFT 0 +#define NV_FEPROT_EPROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FEPROT_EPROT_SHIFT))&NV_FEPROT_EPROT_MASK) +/* FDPROT Bit Fields */ +#define NV_FDPROT_DPROT_MASK 0xFFu +#define NV_FDPROT_DPROT_SHIFT 0 +#define NV_FDPROT_DPROT(x) (((uint8_t)(((uint8_t)(x))<<NV_FDPROT_DPROT_SHIFT))&NV_FDPROT_DPROT_MASK) + +/*! + * @} + */ /* end of group NV_Register_Masks */ + + +/* NV - Peripheral instance base addresses */ +/** Peripheral FTFE_FlashConfig base address */ +#define FTFE_FlashConfig_BASE (0x400u) +/** Peripheral FTFE_FlashConfig base pointer */ +#define FTFE_FlashConfig ((NV_Type *)FTFE_FlashConfig_BASE) +#define FTFE_FlashConfig_BASE_PTR (FTFE_FlashConfig) +/** Array initializer of NV peripheral base pointers */ +#define NV_BASES { FTFE_FlashConfig } + +/* ---------------------------------------------------------------------------- + -- NV - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup NV_Register_Accessor_Macros NV - Register accessor macros + * @{ + */ + + +/* NV - Register instance definitions */ +/* FTFE_FlashConfig */ +#define NV_BACKKEY3 NV_BACKKEY3_REG(FTFE_FlashConfig) +#define NV_BACKKEY2 NV_BACKKEY2_REG(FTFE_FlashConfig) +#define NV_BACKKEY1 NV_BACKKEY1_REG(FTFE_FlashConfig) +#define NV_BACKKEY0 NV_BACKKEY0_REG(FTFE_FlashConfig) +#define NV_BACKKEY7 NV_BACKKEY7_REG(FTFE_FlashConfig) +#define NV_BACKKEY6 NV_BACKKEY6_REG(FTFE_FlashConfig) +#define NV_BACKKEY5 NV_BACKKEY5_REG(FTFE_FlashConfig) +#define NV_BACKKEY4 NV_BACKKEY4_REG(FTFE_FlashConfig) +#define NV_FPROT3 NV_FPROT3_REG(FTFE_FlashConfig) +#define NV_FPROT2 NV_FPROT2_REG(FTFE_FlashConfig) +#define NV_FPROT1 NV_FPROT1_REG(FTFE_FlashConfig) +#define NV_FPROT0 NV_FPROT0_REG(FTFE_FlashConfig) +#define NV_FSEC NV_FSEC_REG(FTFE_FlashConfig) +#define NV_FOPT NV_FOPT_REG(FTFE_FlashConfig) +#define NV_FEPROT NV_FEPROT_REG(FTFE_FlashConfig) +#define NV_FDPROT NV_FDPROT_REG(FTFE_FlashConfig) + +/*! + * @} + */ /* end of group NV_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group NV_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- OSC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup OSC_Peripheral_Access_Layer OSC Peripheral Access Layer + * @{ + */ + +/** OSC - Register Layout Typedef */ +typedef struct { + __IO uint8_t CR; /**< OSC Control Register, offset: 0x0 */ +} OSC_Type, *OSC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- OSC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup OSC_Register_Accessor_Macros OSC - Register accessor macros + * @{ + */ + + +/* OSC - Register accessors */ +#define OSC_CR_REG(base) ((base)->CR) + +/*! + * @} + */ /* end of group OSC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- OSC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup OSC_Register_Masks OSC Register Masks + * @{ + */ + +/* CR Bit Fields */ +#define OSC_CR_SC16P_MASK 0x1u +#define OSC_CR_SC16P_SHIFT 0 +#define OSC_CR_SC8P_MASK 0x2u +#define OSC_CR_SC8P_SHIFT 1 +#define OSC_CR_SC4P_MASK 0x4u +#define OSC_CR_SC4P_SHIFT 2 +#define OSC_CR_SC2P_MASK 0x8u +#define OSC_CR_SC2P_SHIFT 3 +#define OSC_CR_EREFSTEN_MASK 0x20u +#define OSC_CR_EREFSTEN_SHIFT 5 +#define OSC_CR_ERCLKEN_MASK 0x80u +#define OSC_CR_ERCLKEN_SHIFT 7 + +/*! + * @} + */ /* end of group OSC_Register_Masks */ + + +/* OSC - Peripheral instance base addresses */ +/** Peripheral OSC base address */ +#define OSC_BASE (0x40065000u) +/** Peripheral OSC base pointer */ +#define OSC ((OSC_Type *)OSC_BASE) +#define OSC_BASE_PTR (OSC) +/** Array initializer of OSC peripheral base pointers */ +#define OSC_BASES { OSC } + +/* ---------------------------------------------------------------------------- + -- OSC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup OSC_Register_Accessor_Macros OSC - Register accessor macros + * @{ + */ + + +/* OSC - Register instance definitions */ +/* OSC */ +#define OSC_CR OSC_CR_REG(OSC) + +/*! + * @} + */ /* end of group OSC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group OSC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- PDB Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PDB_Peripheral_Access_Layer PDB Peripheral Access Layer + * @{ + */ + +/** PDB - Register Layout Typedef */ +typedef struct { + __IO uint32_t SC; /**< Status and Control register, offset: 0x0 */ + __IO uint32_t MOD; /**< Modulus register, offset: 0x4 */ + __I uint32_t CNT; /**< Counter register, offset: 0x8 */ + __IO uint32_t IDLY; /**< Interrupt Delay register, offset: 0xC */ + struct { /* offset: 0x10, array step: 0x28 */ + __IO uint32_t C1; /**< Channel n Control register 1, array offset: 0x10, array step: 0x28 */ + __IO uint32_t S; /**< Channel n Status register, array offset: 0x14, array step: 0x28 */ + __IO uint32_t DLY[2]; /**< Channel n Delay 0 register..Channel n Delay 1 register, array offset: 0x18, array step: index*0x28, index2*0x4 */ + uint8_t RESERVED_0[24]; + } CH[2]; + uint8_t RESERVED_0[240]; + struct { /* offset: 0x150, array step: 0x8 */ + __IO uint32_t INTC; /**< DAC Interval Trigger n Control register, array offset: 0x150, array step: 0x8 */ + __IO uint32_t INT; /**< DAC Interval n register, array offset: 0x154, array step: 0x8 */ + } DAC[2]; + uint8_t RESERVED_1[48]; + __IO uint32_t POEN; /**< Pulse-Out n Enable register, offset: 0x190 */ + __IO uint32_t PODLY[3]; /**< Pulse-Out n Delay register, array offset: 0x194, array step: 0x4 */ +} PDB_Type, *PDB_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- PDB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PDB_Register_Accessor_Macros PDB - Register accessor macros + * @{ + */ + + +/* PDB - Register accessors */ +#define PDB_SC_REG(base) ((base)->SC) +#define PDB_MOD_REG(base) ((base)->MOD) +#define PDB_CNT_REG(base) ((base)->CNT) +#define PDB_IDLY_REG(base) ((base)->IDLY) +#define PDB_C1_REG(base,index) ((base)->CH[index].C1) +#define PDB_S_REG(base,index) ((base)->CH[index].S) +#define PDB_DLY_REG(base,index,index2) ((base)->CH[index].DLY[index2]) +#define PDB_INTC_REG(base,index) ((base)->DAC[index].INTC) +#define PDB_INT_REG(base,index) ((base)->DAC[index].INT) +#define PDB_POEN_REG(base) ((base)->POEN) +#define PDB_PODLY_REG(base,index) ((base)->PODLY[index]) + +/*! + * @} + */ /* end of group PDB_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- PDB Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PDB_Register_Masks PDB Register Masks + * @{ + */ + +/* SC Bit Fields */ +#define PDB_SC_LDOK_MASK 0x1u +#define PDB_SC_LDOK_SHIFT 0 +#define PDB_SC_CONT_MASK 0x2u +#define PDB_SC_CONT_SHIFT 1 +#define PDB_SC_MULT_MASK 0xCu +#define PDB_SC_MULT_SHIFT 2 +#define PDB_SC_MULT(x) (((uint32_t)(((uint32_t)(x))<<PDB_SC_MULT_SHIFT))&PDB_SC_MULT_MASK) +#define PDB_SC_PDBIE_MASK 0x20u +#define PDB_SC_PDBIE_SHIFT 5 +#define PDB_SC_PDBIF_MASK 0x40u +#define PDB_SC_PDBIF_SHIFT 6 +#define PDB_SC_PDBEN_MASK 0x80u +#define PDB_SC_PDBEN_SHIFT 7 +#define PDB_SC_TRGSEL_MASK 0xF00u +#define PDB_SC_TRGSEL_SHIFT 8 +#define PDB_SC_TRGSEL(x) (((uint32_t)(((uint32_t)(x))<<PDB_SC_TRGSEL_SHIFT))&PDB_SC_TRGSEL_MASK) +#define PDB_SC_PRESCALER_MASK 0x7000u +#define PDB_SC_PRESCALER_SHIFT 12 +#define PDB_SC_PRESCALER(x) (((uint32_t)(((uint32_t)(x))<<PDB_SC_PRESCALER_SHIFT))&PDB_SC_PRESCALER_MASK) +#define PDB_SC_DMAEN_MASK 0x8000u +#define PDB_SC_DMAEN_SHIFT 15 +#define PDB_SC_SWTRIG_MASK 0x10000u +#define PDB_SC_SWTRIG_SHIFT 16 +#define PDB_SC_PDBEIE_MASK 0x20000u +#define PDB_SC_PDBEIE_SHIFT 17 +#define PDB_SC_LDMOD_MASK 0xC0000u +#define PDB_SC_LDMOD_SHIFT 18 +#define PDB_SC_LDMOD(x) (((uint32_t)(((uint32_t)(x))<<PDB_SC_LDMOD_SHIFT))&PDB_SC_LDMOD_MASK) +/* MOD Bit Fields */ +#define PDB_MOD_MOD_MASK 0xFFFFu +#define PDB_MOD_MOD_SHIFT 0 +#define PDB_MOD_MOD(x) (((uint32_t)(((uint32_t)(x))<<PDB_MOD_MOD_SHIFT))&PDB_MOD_MOD_MASK) +/* CNT Bit Fields */ +#define PDB_CNT_CNT_MASK 0xFFFFu +#define PDB_CNT_CNT_SHIFT 0 +#define PDB_CNT_CNT(x) (((uint32_t)(((uint32_t)(x))<<PDB_CNT_CNT_SHIFT))&PDB_CNT_CNT_MASK) +/* IDLY Bit Fields */ +#define PDB_IDLY_IDLY_MASK 0xFFFFu +#define PDB_IDLY_IDLY_SHIFT 0 +#define PDB_IDLY_IDLY(x) (((uint32_t)(((uint32_t)(x))<<PDB_IDLY_IDLY_SHIFT))&PDB_IDLY_IDLY_MASK) +/* C1 Bit Fields */ +#define PDB_C1_EN_MASK 0xFFu +#define PDB_C1_EN_SHIFT 0 +#define PDB_C1_EN(x) (((uint32_t)(((uint32_t)(x))<<PDB_C1_EN_SHIFT))&PDB_C1_EN_MASK) +#define PDB_C1_TOS_MASK 0xFF00u +#define PDB_C1_TOS_SHIFT 8 +#define PDB_C1_TOS(x) (((uint32_t)(((uint32_t)(x))<<PDB_C1_TOS_SHIFT))&PDB_C1_TOS_MASK) +#define PDB_C1_BB_MASK 0xFF0000u +#define PDB_C1_BB_SHIFT 16 +#define PDB_C1_BB(x) (((uint32_t)(((uint32_t)(x))<<PDB_C1_BB_SHIFT))&PDB_C1_BB_MASK) +/* S Bit Fields */ +#define PDB_S_ERR_MASK 0xFFu +#define PDB_S_ERR_SHIFT 0 +#define PDB_S_ERR(x) (((uint32_t)(((uint32_t)(x))<<PDB_S_ERR_SHIFT))&PDB_S_ERR_MASK) +#define PDB_S_CF_MASK 0xFF0000u +#define PDB_S_CF_SHIFT 16 +#define PDB_S_CF(x) (((uint32_t)(((uint32_t)(x))<<PDB_S_CF_SHIFT))&PDB_S_CF_MASK) +/* DLY Bit Fields */ +#define PDB_DLY_DLY_MASK 0xFFFFu +#define PDB_DLY_DLY_SHIFT 0 +#define PDB_DLY_DLY(x) (((uint32_t)(((uint32_t)(x))<<PDB_DLY_DLY_SHIFT))&PDB_DLY_DLY_MASK) +/* INTC Bit Fields */ +#define PDB_INTC_TOE_MASK 0x1u +#define PDB_INTC_TOE_SHIFT 0 +#define PDB_INTC_EXT_MASK 0x2u +#define PDB_INTC_EXT_SHIFT 1 +/* INT Bit Fields */ +#define PDB_INT_INT_MASK 0xFFFFu +#define PDB_INT_INT_SHIFT 0 +#define PDB_INT_INT(x) (((uint32_t)(((uint32_t)(x))<<PDB_INT_INT_SHIFT))&PDB_INT_INT_MASK) +/* POEN Bit Fields */ +#define PDB_POEN_POEN_MASK 0xFFu +#define PDB_POEN_POEN_SHIFT 0 +#define PDB_POEN_POEN(x) (((uint32_t)(((uint32_t)(x))<<PDB_POEN_POEN_SHIFT))&PDB_POEN_POEN_MASK) +/* PODLY Bit Fields */ +#define PDB_PODLY_DLY2_MASK 0xFFFFu +#define PDB_PODLY_DLY2_SHIFT 0 +#define PDB_PODLY_DLY2(x) (((uint32_t)(((uint32_t)(x))<<PDB_PODLY_DLY2_SHIFT))&PDB_PODLY_DLY2_MASK) +#define PDB_PODLY_DLY1_MASK 0xFFFF0000u +#define PDB_PODLY_DLY1_SHIFT 16 +#define PDB_PODLY_DLY1(x) (((uint32_t)(((uint32_t)(x))<<PDB_PODLY_DLY1_SHIFT))&PDB_PODLY_DLY1_MASK) + +/*! + * @} + */ /* end of group PDB_Register_Masks */ + + +/* PDB - Peripheral instance base addresses */ +/** Peripheral PDB0 base address */ +#define PDB0_BASE (0x40036000u) +/** Peripheral PDB0 base pointer */ +#define PDB0 ((PDB_Type *)PDB0_BASE) +#define PDB0_BASE_PTR (PDB0) +/** Array initializer of PDB peripheral base pointers */ +#define PDB_BASES { PDB0 } + +/* ---------------------------------------------------------------------------- + -- PDB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PDB_Register_Accessor_Macros PDB - Register accessor macros + * @{ + */ + + +/* PDB - Register instance definitions */ +/* PDB0 */ +#define PDB0_SC PDB_SC_REG(PDB0) +#define PDB0_MOD PDB_MOD_REG(PDB0) +#define PDB0_CNT PDB_CNT_REG(PDB0) +#define PDB0_IDLY PDB_IDLY_REG(PDB0) +#define PDB0_CH0C1 PDB_C1_REG(PDB0,0) +#define PDB0_CH0S PDB_S_REG(PDB0,0) +#define PDB0_CH0DLY0 PDB_DLY_REG(PDB0,0,0) +#define PDB0_CH0DLY1 PDB_DLY_REG(PDB0,0,1) +#define PDB0_CH1C1 PDB_C1_REG(PDB0,1) +#define PDB0_CH1S PDB_S_REG(PDB0,1) +#define PDB0_CH1DLY0 PDB_DLY_REG(PDB0,1,0) +#define PDB0_CH1DLY1 PDB_DLY_REG(PDB0,1,1) +#define PDB0_DACINTC0 PDB_INTC_REG(PDB0,0) +#define PDB0_DACINT0 PDB_INT_REG(PDB0,0) +#define PDB0_DACINTC1 PDB_INTC_REG(PDB0,1) +#define PDB0_DACINT1 PDB_INT_REG(PDB0,1) +#define PDB0_POEN PDB_POEN_REG(PDB0) +#define PDB0_PO0DLY PDB_PODLY_REG(PDB0,0) +#define PDB0_PO1DLY PDB_PODLY_REG(PDB0,1) +#define PDB0_PO2DLY PDB_PODLY_REG(PDB0,2) + +/* PDB - Register array accessors */ +#define PDB0_C1(index) PDB_C1_REG(PDB0,index) +#define PDB0_S(index) PDB_S_REG(PDB0,index) +#define PDB0_DLY(index,index2) PDB_DLY_REG(PDB0,index,index2) +#define PDB0_INTC(index) PDB_INTC_REG(PDB0,index) +#define PDB0_INT(index) PDB_INT_REG(PDB0,index) +#define PDB0_PODLY(index) PDB_PODLY_REG(PDB0,index) + +/*! + * @} + */ /* end of group PDB_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group PDB_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- PIT Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PIT_Peripheral_Access_Layer PIT Peripheral Access Layer + * @{ + */ + +/** PIT - Register Layout Typedef */ +typedef struct { + __IO uint32_t MCR; /**< PIT Module Control Register, offset: 0x0 */ + uint8_t RESERVED_0[252]; + struct { /* offset: 0x100, array step: 0x10 */ + __IO uint32_t LDVAL; /**< Timer Load Value Register, array offset: 0x100, array step: 0x10 */ + __I uint32_t CVAL; /**< Current Timer Value Register, array offset: 0x104, array step: 0x10 */ + __IO uint32_t TCTRL; /**< Timer Control Register, array offset: 0x108, array step: 0x10 */ + __IO uint32_t TFLG; /**< Timer Flag Register, array offset: 0x10C, array step: 0x10 */ + } CHANNEL[4]; +} PIT_Type, *PIT_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- PIT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PIT_Register_Accessor_Macros PIT - Register accessor macros + * @{ + */ + + +/* PIT - Register accessors */ +#define PIT_MCR_REG(base) ((base)->MCR) +#define PIT_LDVAL_REG(base,index) ((base)->CHANNEL[index].LDVAL) +#define PIT_CVAL_REG(base,index) ((base)->CHANNEL[index].CVAL) +#define PIT_TCTRL_REG(base,index) ((base)->CHANNEL[index].TCTRL) +#define PIT_TFLG_REG(base,index) ((base)->CHANNEL[index].TFLG) + +/*! + * @} + */ /* end of group PIT_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- PIT Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PIT_Register_Masks PIT Register Masks + * @{ + */ + +/* MCR Bit Fields */ +#define PIT_MCR_FRZ_MASK 0x1u +#define PIT_MCR_FRZ_SHIFT 0 +#define PIT_MCR_MDIS_MASK 0x2u +#define PIT_MCR_MDIS_SHIFT 1 +/* LDVAL Bit Fields */ +#define PIT_LDVAL_TSV_MASK 0xFFFFFFFFu +#define PIT_LDVAL_TSV_SHIFT 0 +#define PIT_LDVAL_TSV(x) (((uint32_t)(((uint32_t)(x))<<PIT_LDVAL_TSV_SHIFT))&PIT_LDVAL_TSV_MASK) +/* CVAL Bit Fields */ +#define PIT_CVAL_TVL_MASK 0xFFFFFFFFu +#define PIT_CVAL_TVL_SHIFT 0 +#define PIT_CVAL_TVL(x) (((uint32_t)(((uint32_t)(x))<<PIT_CVAL_TVL_SHIFT))&PIT_CVAL_TVL_MASK) +/* TCTRL Bit Fields */ +#define PIT_TCTRL_TEN_MASK 0x1u +#define PIT_TCTRL_TEN_SHIFT 0 +#define PIT_TCTRL_TIE_MASK 0x2u +#define PIT_TCTRL_TIE_SHIFT 1 +#define PIT_TCTRL_CHN_MASK 0x4u +#define PIT_TCTRL_CHN_SHIFT 2 +/* TFLG Bit Fields */ +#define PIT_TFLG_TIF_MASK 0x1u +#define PIT_TFLG_TIF_SHIFT 0 + +/*! + * @} + */ /* end of group PIT_Register_Masks */ + + +/* PIT - Peripheral instance base addresses */ +/** Peripheral PIT base address */ +#define PIT_BASE (0x40037000u) +/** Peripheral PIT base pointer */ +#define PIT ((PIT_Type *)PIT_BASE) +#define PIT_BASE_PTR (PIT) +/** Array initializer of PIT peripheral base pointers */ +#define PIT_BASES { PIT } + +/* ---------------------------------------------------------------------------- + -- PIT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PIT_Register_Accessor_Macros PIT - Register accessor macros + * @{ + */ + + +/* PIT - Register instance definitions */ +/* PIT */ +#define PIT_MCR PIT_MCR_REG(PIT) +#define PIT_LDVAL0 PIT_LDVAL_REG(PIT,0) +#define PIT_CVAL0 PIT_CVAL_REG(PIT,0) +#define PIT_TCTRL0 PIT_TCTRL_REG(PIT,0) +#define PIT_TFLG0 PIT_TFLG_REG(PIT,0) +#define PIT_LDVAL1 PIT_LDVAL_REG(PIT,1) +#define PIT_CVAL1 PIT_CVAL_REG(PIT,1) +#define PIT_TCTRL1 PIT_TCTRL_REG(PIT,1) +#define PIT_TFLG1 PIT_TFLG_REG(PIT,1) +#define PIT_LDVAL2 PIT_LDVAL_REG(PIT,2) +#define PIT_CVAL2 PIT_CVAL_REG(PIT,2) +#define PIT_TCTRL2 PIT_TCTRL_REG(PIT,2) +#define PIT_TFLG2 PIT_TFLG_REG(PIT,2) +#define PIT_LDVAL3 PIT_LDVAL_REG(PIT,3) +#define PIT_CVAL3 PIT_CVAL_REG(PIT,3) +#define PIT_TCTRL3 PIT_TCTRL_REG(PIT,3) +#define PIT_TFLG3 PIT_TFLG_REG(PIT,3) + +/* PIT - Register array accessors */ +#define PIT_LDVAL(index) PIT_LDVAL_REG(PIT,index) +#define PIT_CVAL(index) PIT_CVAL_REG(PIT,index) +#define PIT_TCTRL(index) PIT_TCTRL_REG(PIT,index) +#define PIT_TFLG(index) PIT_TFLG_REG(PIT,index) + +/*! + * @} + */ /* end of group PIT_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group PIT_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- PMC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PMC_Peripheral_Access_Layer PMC Peripheral Access Layer + * @{ + */ + +/** PMC - Register Layout Typedef */ +typedef struct { + __IO uint8_t LVDSC1; /**< Low Voltage Detect Status And Control 1 register, offset: 0x0 */ + __IO uint8_t LVDSC2; /**< Low Voltage Detect Status And Control 2 register, offset: 0x1 */ + __IO uint8_t REGSC; /**< Regulator Status And Control register, offset: 0x2 */ +} PMC_Type, *PMC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- PMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PMC_Register_Accessor_Macros PMC - Register accessor macros + * @{ + */ + + +/* PMC - Register accessors */ +#define PMC_LVDSC1_REG(base) ((base)->LVDSC1) +#define PMC_LVDSC2_REG(base) ((base)->LVDSC2) +#define PMC_REGSC_REG(base) ((base)->REGSC) + +/*! + * @} + */ /* end of group PMC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- PMC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PMC_Register_Masks PMC Register Masks + * @{ + */ + +/* LVDSC1 Bit Fields */ +#define PMC_LVDSC1_LVDV_MASK 0x3u +#define PMC_LVDSC1_LVDV_SHIFT 0 +#define PMC_LVDSC1_LVDV(x) (((uint8_t)(((uint8_t)(x))<<PMC_LVDSC1_LVDV_SHIFT))&PMC_LVDSC1_LVDV_MASK) +#define PMC_LVDSC1_LVDRE_MASK 0x10u +#define PMC_LVDSC1_LVDRE_SHIFT 4 +#define PMC_LVDSC1_LVDIE_MASK 0x20u +#define PMC_LVDSC1_LVDIE_SHIFT 5 +#define PMC_LVDSC1_LVDACK_MASK 0x40u +#define PMC_LVDSC1_LVDACK_SHIFT 6 +#define PMC_LVDSC1_LVDF_MASK 0x80u +#define PMC_LVDSC1_LVDF_SHIFT 7 +/* LVDSC2 Bit Fields */ +#define PMC_LVDSC2_LVWV_MASK 0x3u +#define PMC_LVDSC2_LVWV_SHIFT 0 +#define PMC_LVDSC2_LVWV(x) (((uint8_t)(((uint8_t)(x))<<PMC_LVDSC2_LVWV_SHIFT))&PMC_LVDSC2_LVWV_MASK) +#define PMC_LVDSC2_LVWIE_MASK 0x20u +#define PMC_LVDSC2_LVWIE_SHIFT 5 +#define PMC_LVDSC2_LVWACK_MASK 0x40u +#define PMC_LVDSC2_LVWACK_SHIFT 6 +#define PMC_LVDSC2_LVWF_MASK 0x80u +#define PMC_LVDSC2_LVWF_SHIFT 7 +/* REGSC Bit Fields */ +#define PMC_REGSC_BGBE_MASK 0x1u +#define PMC_REGSC_BGBE_SHIFT 0 +#define PMC_REGSC_REGONS_MASK 0x4u +#define PMC_REGSC_REGONS_SHIFT 2 +#define PMC_REGSC_ACKISO_MASK 0x8u +#define PMC_REGSC_ACKISO_SHIFT 3 +#define PMC_REGSC_BGEN_MASK 0x10u +#define PMC_REGSC_BGEN_SHIFT 4 + +/*! + * @} + */ /* end of group PMC_Register_Masks */ + + +/* PMC - Peripheral instance base addresses */ +/** Peripheral PMC base address */ +#define PMC_BASE (0x4007D000u) +/** Peripheral PMC base pointer */ +#define PMC ((PMC_Type *)PMC_BASE) +#define PMC_BASE_PTR (PMC) +/** Array initializer of PMC peripheral base pointers */ +#define PMC_BASES { PMC } + +/* ---------------------------------------------------------------------------- + -- PMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PMC_Register_Accessor_Macros PMC - Register accessor macros + * @{ + */ + + +/* PMC - Register instance definitions */ +/* PMC */ +#define PMC_LVDSC1 PMC_LVDSC1_REG(PMC) +#define PMC_LVDSC2 PMC_LVDSC2_REG(PMC) +#define PMC_REGSC PMC_REGSC_REG(PMC) + +/*! + * @} + */ /* end of group PMC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group PMC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- PORT Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PORT_Peripheral_Access_Layer PORT Peripheral Access Layer + * @{ + */ + +/** PORT - Register Layout Typedef */ +typedef struct { + __IO uint32_t PCR[32]; /**< Pin Control Register n, array offset: 0x0, array step: 0x4 */ + __O uint32_t GPCLR; /**< Global Pin Control Low Register, offset: 0x80 */ + __O uint32_t GPCHR; /**< Global Pin Control High Register, offset: 0x84 */ + uint8_t RESERVED_0[24]; + __IO uint32_t ISFR; /**< Interrupt Status Flag Register, offset: 0xA0 */ + uint8_t RESERVED_1[28]; + __IO uint32_t DFER; /**< Digital Filter Enable Register, offset: 0xC0 */ + __IO uint32_t DFCR; /**< Digital Filter Clock Register, offset: 0xC4 */ + __IO uint32_t DFWR; /**< Digital Filter Width Register, offset: 0xC8 */ +} PORT_Type, *PORT_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- PORT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PORT_Register_Accessor_Macros PORT - Register accessor macros + * @{ + */ + + +/* PORT - Register accessors */ +#define PORT_PCR_REG(base,index) ((base)->PCR[index]) +#define PORT_GPCLR_REG(base) ((base)->GPCLR) +#define PORT_GPCHR_REG(base) ((base)->GPCHR) +#define PORT_ISFR_REG(base) ((base)->ISFR) +#define PORT_DFER_REG(base) ((base)->DFER) +#define PORT_DFCR_REG(base) ((base)->DFCR) +#define PORT_DFWR_REG(base) ((base)->DFWR) + +/*! + * @} + */ /* end of group PORT_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- PORT Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PORT_Register_Masks PORT Register Masks + * @{ + */ + +/* PCR Bit Fields */ +#define PORT_PCR_PS_MASK 0x1u +#define PORT_PCR_PS_SHIFT 0 +#define PORT_PCR_PE_MASK 0x2u +#define PORT_PCR_PE_SHIFT 1 +#define PORT_PCR_SRE_MASK 0x4u +#define PORT_PCR_SRE_SHIFT 2 +#define PORT_PCR_PFE_MASK 0x10u +#define PORT_PCR_PFE_SHIFT 4 +#define PORT_PCR_ODE_MASK 0x20u +#define PORT_PCR_ODE_SHIFT 5 +#define PORT_PCR_DSE_MASK 0x40u +#define PORT_PCR_DSE_SHIFT 6 +#define PORT_PCR_MUX_MASK 0x700u +#define PORT_PCR_MUX_SHIFT 8 +#define PORT_PCR_MUX(x) (((uint32_t)(((uint32_t)(x))<<PORT_PCR_MUX_SHIFT))&PORT_PCR_MUX_MASK) +#define PORT_PCR_LK_MASK 0x8000u +#define PORT_PCR_LK_SHIFT 15 +#define PORT_PCR_IRQC_MASK 0xF0000u +#define PORT_PCR_IRQC_SHIFT 16 +#define PORT_PCR_IRQC(x) (((uint32_t)(((uint32_t)(x))<<PORT_PCR_IRQC_SHIFT))&PORT_PCR_IRQC_MASK) +#define PORT_PCR_ISF_MASK 0x1000000u +#define PORT_PCR_ISF_SHIFT 24 +/* GPCLR Bit Fields */ +#define PORT_GPCLR_GPWD_MASK 0xFFFFu +#define PORT_GPCLR_GPWD_SHIFT 0 +#define PORT_GPCLR_GPWD(x) (((uint32_t)(((uint32_t)(x))<<PORT_GPCLR_GPWD_SHIFT))&PORT_GPCLR_GPWD_MASK) +#define PORT_GPCLR_GPWE_MASK 0xFFFF0000u +#define PORT_GPCLR_GPWE_SHIFT 16 +#define PORT_GPCLR_GPWE(x) (((uint32_t)(((uint32_t)(x))<<PORT_GPCLR_GPWE_SHIFT))&PORT_GPCLR_GPWE_MASK) +/* GPCHR Bit Fields */ +#define PORT_GPCHR_GPWD_MASK 0xFFFFu +#define PORT_GPCHR_GPWD_SHIFT 0 +#define PORT_GPCHR_GPWD(x) (((uint32_t)(((uint32_t)(x))<<PORT_GPCHR_GPWD_SHIFT))&PORT_GPCHR_GPWD_MASK) +#define PORT_GPCHR_GPWE_MASK 0xFFFF0000u +#define PORT_GPCHR_GPWE_SHIFT 16 +#define PORT_GPCHR_GPWE(x) (((uint32_t)(((uint32_t)(x))<<PORT_GPCHR_GPWE_SHIFT))&PORT_GPCHR_GPWE_MASK) +/* ISFR Bit Fields */ +#define PORT_ISFR_ISF_MASK 0xFFFFFFFFu +#define PORT_ISFR_ISF_SHIFT 0 +#define PORT_ISFR_ISF(x) (((uint32_t)(((uint32_t)(x))<<PORT_ISFR_ISF_SHIFT))&PORT_ISFR_ISF_MASK) +/* DFER Bit Fields */ +#define PORT_DFER_DFE_MASK 0xFFFFFFFFu +#define PORT_DFER_DFE_SHIFT 0 +#define PORT_DFER_DFE(x) (((uint32_t)(((uint32_t)(x))<<PORT_DFER_DFE_SHIFT))&PORT_DFER_DFE_MASK) +/* DFCR Bit Fields */ +#define PORT_DFCR_CS_MASK 0x1u +#define PORT_DFCR_CS_SHIFT 0 +/* DFWR Bit Fields */ +#define PORT_DFWR_FILT_MASK 0x1Fu +#define PORT_DFWR_FILT_SHIFT 0 +#define PORT_DFWR_FILT(x) (((uint32_t)(((uint32_t)(x))<<PORT_DFWR_FILT_SHIFT))&PORT_DFWR_FILT_MASK) + +/*! + * @} + */ /* end of group PORT_Register_Masks */ + + +/* PORT - Peripheral instance base addresses */ +/** Peripheral PORTA base address */ +#define PORTA_BASE (0x40049000u) +/** Peripheral PORTA base pointer */ +#define PORTA ((PORT_Type *)PORTA_BASE) +#define PORTA_BASE_PTR (PORTA) +/** Peripheral PORTB base address */ +#define PORTB_BASE (0x4004A000u) +/** Peripheral PORTB base pointer */ +#define PORTB ((PORT_Type *)PORTB_BASE) +#define PORTB_BASE_PTR (PORTB) +/** Peripheral PORTC base address */ +#define PORTC_BASE (0x4004B000u) +/** Peripheral PORTC base pointer */ +#define PORTC ((PORT_Type *)PORTC_BASE) +#define PORTC_BASE_PTR (PORTC) +/** Peripheral PORTD base address */ +#define PORTD_BASE (0x4004C000u) +/** Peripheral PORTD base pointer */ +#define PORTD ((PORT_Type *)PORTD_BASE) +#define PORTD_BASE_PTR (PORTD) +/** Peripheral PORTE base address */ +#define PORTE_BASE (0x4004D000u) +/** Peripheral PORTE base pointer */ +#define PORTE ((PORT_Type *)PORTE_BASE) +#define PORTE_BASE_PTR (PORTE) +/** Array initializer of PORT peripheral base pointers */ +#define PORT_BASES { PORTA, PORTB, PORTC, PORTD, PORTE } + +/* ---------------------------------------------------------------------------- + -- PORT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup PORT_Register_Accessor_Macros PORT - Register accessor macros + * @{ + */ + + +/* PORT - Register instance definitions */ +/* PORTA */ +#define PORTA_PCR0 PORT_PCR_REG(PORTA,0) +#define PORTA_PCR1 PORT_PCR_REG(PORTA,1) +#define PORTA_PCR2 PORT_PCR_REG(PORTA,2) +#define PORTA_PCR3 PORT_PCR_REG(PORTA,3) +#define PORTA_PCR4 PORT_PCR_REG(PORTA,4) +#define PORTA_PCR5 PORT_PCR_REG(PORTA,5) +#define PORTA_PCR6 PORT_PCR_REG(PORTA,6) +#define PORTA_PCR7 PORT_PCR_REG(PORTA,7) +#define PORTA_PCR8 PORT_PCR_REG(PORTA,8) +#define PORTA_PCR9 PORT_PCR_REG(PORTA,9) +#define PORTA_PCR10 PORT_PCR_REG(PORTA,10) +#define PORTA_PCR11 PORT_PCR_REG(PORTA,11) +#define PORTA_PCR12 PORT_PCR_REG(PORTA,12) +#define PORTA_PCR13 PORT_PCR_REG(PORTA,13) +#define PORTA_PCR14 PORT_PCR_REG(PORTA,14) +#define PORTA_PCR15 PORT_PCR_REG(PORTA,15) +#define PORTA_PCR16 PORT_PCR_REG(PORTA,16) +#define PORTA_PCR17 PORT_PCR_REG(PORTA,17) +#define PORTA_PCR18 PORT_PCR_REG(PORTA,18) +#define PORTA_PCR19 PORT_PCR_REG(PORTA,19) +#define PORTA_PCR20 PORT_PCR_REG(PORTA,20) +#define PORTA_PCR21 PORT_PCR_REG(PORTA,21) +#define PORTA_PCR22 PORT_PCR_REG(PORTA,22) +#define PORTA_PCR23 PORT_PCR_REG(PORTA,23) +#define PORTA_PCR24 PORT_PCR_REG(PORTA,24) +#define PORTA_PCR25 PORT_PCR_REG(PORTA,25) +#define PORTA_PCR26 PORT_PCR_REG(PORTA,26) +#define PORTA_PCR27 PORT_PCR_REG(PORTA,27) +#define PORTA_PCR28 PORT_PCR_REG(PORTA,28) +#define PORTA_PCR29 PORT_PCR_REG(PORTA,29) +#define PORTA_PCR30 PORT_PCR_REG(PORTA,30) +#define PORTA_PCR31 PORT_PCR_REG(PORTA,31) +#define PORTA_GPCLR PORT_GPCLR_REG(PORTA) +#define PORTA_GPCHR PORT_GPCHR_REG(PORTA) +#define PORTA_ISFR PORT_ISFR_REG(PORTA) +/* PORTB */ +#define PORTB_PCR0 PORT_PCR_REG(PORTB,0) +#define PORTB_PCR1 PORT_PCR_REG(PORTB,1) +#define PORTB_PCR2 PORT_PCR_REG(PORTB,2) +#define PORTB_PCR3 PORT_PCR_REG(PORTB,3) +#define PORTB_PCR4 PORT_PCR_REG(PORTB,4) +#define PORTB_PCR5 PORT_PCR_REG(PORTB,5) +#define PORTB_PCR6 PORT_PCR_REG(PORTB,6) +#define PORTB_PCR7 PORT_PCR_REG(PORTB,7) +#define PORTB_PCR8 PORT_PCR_REG(PORTB,8) +#define PORTB_PCR9 PORT_PCR_REG(PORTB,9) +#define PORTB_PCR10 PORT_PCR_REG(PORTB,10) +#define PORTB_PCR11 PORT_PCR_REG(PORTB,11) +#define PORTB_PCR12 PORT_PCR_REG(PORTB,12) +#define PORTB_PCR13 PORT_PCR_REG(PORTB,13) +#define PORTB_PCR14 PORT_PCR_REG(PORTB,14) +#define PORTB_PCR15 PORT_PCR_REG(PORTB,15) +#define PORTB_PCR16 PORT_PCR_REG(PORTB,16) +#define PORTB_PCR17 PORT_PCR_REG(PORTB,17) +#define PORTB_PCR18 PORT_PCR_REG(PORTB,18) +#define PORTB_PCR19 PORT_PCR_REG(PORTB,19) +#define PORTB_PCR20 PORT_PCR_REG(PORTB,20) +#define PORTB_PCR21 PORT_PCR_REG(PORTB,21) +#define PORTB_PCR22 PORT_PCR_REG(PORTB,22) +#define PORTB_PCR23 PORT_PCR_REG(PORTB,23) +#define PORTB_PCR24 PORT_PCR_REG(PORTB,24) +#define PORTB_PCR25 PORT_PCR_REG(PORTB,25) +#define PORTB_PCR26 PORT_PCR_REG(PORTB,26) +#define PORTB_PCR27 PORT_PCR_REG(PORTB,27) +#define PORTB_PCR28 PORT_PCR_REG(PORTB,28) +#define PORTB_PCR29 PORT_PCR_REG(PORTB,29) +#define PORTB_PCR30 PORT_PCR_REG(PORTB,30) +#define PORTB_PCR31 PORT_PCR_REG(PORTB,31) +#define PORTB_GPCLR PORT_GPCLR_REG(PORTB) +#define PORTB_GPCHR PORT_GPCHR_REG(PORTB) +#define PORTB_ISFR PORT_ISFR_REG(PORTB) +/* PORTC */ +#define PORTC_PCR0 PORT_PCR_REG(PORTC,0) +#define PORTC_PCR1 PORT_PCR_REG(PORTC,1) +#define PORTC_PCR2 PORT_PCR_REG(PORTC,2) +#define PORTC_PCR3 PORT_PCR_REG(PORTC,3) +#define PORTC_PCR4 PORT_PCR_REG(PORTC,4) +#define PORTC_PCR5 PORT_PCR_REG(PORTC,5) +#define PORTC_PCR6 PORT_PCR_REG(PORTC,6) +#define PORTC_PCR7 PORT_PCR_REG(PORTC,7) +#define PORTC_PCR8 PORT_PCR_REG(PORTC,8) +#define PORTC_PCR9 PORT_PCR_REG(PORTC,9) +#define PORTC_PCR10 PORT_PCR_REG(PORTC,10) +#define PORTC_PCR11 PORT_PCR_REG(PORTC,11) +#define PORTC_PCR12 PORT_PCR_REG(PORTC,12) +#define PORTC_PCR13 PORT_PCR_REG(PORTC,13) +#define PORTC_PCR14 PORT_PCR_REG(PORTC,14) +#define PORTC_PCR15 PORT_PCR_REG(PORTC,15) +#define PORTC_PCR16 PORT_PCR_REG(PORTC,16) +#define PORTC_PCR17 PORT_PCR_REG(PORTC,17) +#define PORTC_PCR18 PORT_PCR_REG(PORTC,18) +#define PORTC_PCR19 PORT_PCR_REG(PORTC,19) +#define PORTC_PCR20 PORT_PCR_REG(PORTC,20) +#define PORTC_PCR21 PORT_PCR_REG(PORTC,21) +#define PORTC_PCR22 PORT_PCR_REG(PORTC,22) +#define PORTC_PCR23 PORT_PCR_REG(PORTC,23) +#define PORTC_PCR24 PORT_PCR_REG(PORTC,24) +#define PORTC_PCR25 PORT_PCR_REG(PORTC,25) +#define PORTC_PCR26 PORT_PCR_REG(PORTC,26) +#define PORTC_PCR27 PORT_PCR_REG(PORTC,27) +#define PORTC_PCR28 PORT_PCR_REG(PORTC,28) +#define PORTC_PCR29 PORT_PCR_REG(PORTC,29) +#define PORTC_PCR30 PORT_PCR_REG(PORTC,30) +#define PORTC_PCR31 PORT_PCR_REG(PORTC,31) +#define PORTC_GPCLR PORT_GPCLR_REG(PORTC) +#define PORTC_GPCHR PORT_GPCHR_REG(PORTC) +#define PORTC_ISFR PORT_ISFR_REG(PORTC) +/* PORTD */ +#define PORTD_PCR0 PORT_PCR_REG(PORTD,0) +#define PORTD_PCR1 PORT_PCR_REG(PORTD,1) +#define PORTD_PCR2 PORT_PCR_REG(PORTD,2) +#define PORTD_PCR3 PORT_PCR_REG(PORTD,3) +#define PORTD_PCR4 PORT_PCR_REG(PORTD,4) +#define PORTD_PCR5 PORT_PCR_REG(PORTD,5) +#define PORTD_PCR6 PORT_PCR_REG(PORTD,6) +#define PORTD_PCR7 PORT_PCR_REG(PORTD,7) +#define PORTD_PCR8 PORT_PCR_REG(PORTD,8) +#define PORTD_PCR9 PORT_PCR_REG(PORTD,9) +#define PORTD_PCR10 PORT_PCR_REG(PORTD,10) +#define PORTD_PCR11 PORT_PCR_REG(PORTD,11) +#define PORTD_PCR12 PORT_PCR_REG(PORTD,12) +#define PORTD_PCR13 PORT_PCR_REG(PORTD,13) +#define PORTD_PCR14 PORT_PCR_REG(PORTD,14) +#define PORTD_PCR15 PORT_PCR_REG(PORTD,15) +#define PORTD_PCR16 PORT_PCR_REG(PORTD,16) +#define PORTD_PCR17 PORT_PCR_REG(PORTD,17) +#define PORTD_PCR18 PORT_PCR_REG(PORTD,18) +#define PORTD_PCR19 PORT_PCR_REG(PORTD,19) +#define PORTD_PCR20 PORT_PCR_REG(PORTD,20) +#define PORTD_PCR21 PORT_PCR_REG(PORTD,21) +#define PORTD_PCR22 PORT_PCR_REG(PORTD,22) +#define PORTD_PCR23 PORT_PCR_REG(PORTD,23) +#define PORTD_PCR24 PORT_PCR_REG(PORTD,24) +#define PORTD_PCR25 PORT_PCR_REG(PORTD,25) +#define PORTD_PCR26 PORT_PCR_REG(PORTD,26) +#define PORTD_PCR27 PORT_PCR_REG(PORTD,27) +#define PORTD_PCR28 PORT_PCR_REG(PORTD,28) +#define PORTD_PCR29 PORT_PCR_REG(PORTD,29) +#define PORTD_PCR30 PORT_PCR_REG(PORTD,30) +#define PORTD_PCR31 PORT_PCR_REG(PORTD,31) +#define PORTD_GPCLR PORT_GPCLR_REG(PORTD) +#define PORTD_GPCHR PORT_GPCHR_REG(PORTD) +#define PORTD_ISFR PORT_ISFR_REG(PORTD) +#define PORTD_DFER PORT_DFER_REG(PORTD) +#define PORTD_DFCR PORT_DFCR_REG(PORTD) +#define PORTD_DFWR PORT_DFWR_REG(PORTD) +/* PORTE */ +#define PORTE_PCR0 PORT_PCR_REG(PORTE,0) +#define PORTE_PCR1 PORT_PCR_REG(PORTE,1) +#define PORTE_PCR2 PORT_PCR_REG(PORTE,2) +#define PORTE_PCR3 PORT_PCR_REG(PORTE,3) +#define PORTE_PCR4 PORT_PCR_REG(PORTE,4) +#define PORTE_PCR5 PORT_PCR_REG(PORTE,5) +#define PORTE_PCR6 PORT_PCR_REG(PORTE,6) +#define PORTE_PCR7 PORT_PCR_REG(PORTE,7) +#define PORTE_PCR8 PORT_PCR_REG(PORTE,8) +#define PORTE_PCR9 PORT_PCR_REG(PORTE,9) +#define PORTE_PCR10 PORT_PCR_REG(PORTE,10) +#define PORTE_PCR11 PORT_PCR_REG(PORTE,11) +#define PORTE_PCR12 PORT_PCR_REG(PORTE,12) +#define PORTE_PCR13 PORT_PCR_REG(PORTE,13) +#define PORTE_PCR14 PORT_PCR_REG(PORTE,14) +#define PORTE_PCR15 PORT_PCR_REG(PORTE,15) +#define PORTE_PCR16 PORT_PCR_REG(PORTE,16) +#define PORTE_PCR17 PORT_PCR_REG(PORTE,17) +#define PORTE_PCR18 PORT_PCR_REG(PORTE,18) +#define PORTE_PCR19 PORT_PCR_REG(PORTE,19) +#define PORTE_PCR20 PORT_PCR_REG(PORTE,20) +#define PORTE_PCR21 PORT_PCR_REG(PORTE,21) +#define PORTE_PCR22 PORT_PCR_REG(PORTE,22) +#define PORTE_PCR23 PORT_PCR_REG(PORTE,23) +#define PORTE_PCR24 PORT_PCR_REG(PORTE,24) +#define PORTE_PCR25 PORT_PCR_REG(PORTE,25) +#define PORTE_PCR26 PORT_PCR_REG(PORTE,26) +#define PORTE_PCR27 PORT_PCR_REG(PORTE,27) +#define PORTE_PCR28 PORT_PCR_REG(PORTE,28) +#define PORTE_PCR29 PORT_PCR_REG(PORTE,29) +#define PORTE_PCR30 PORT_PCR_REG(PORTE,30) +#define PORTE_PCR31 PORT_PCR_REG(PORTE,31) +#define PORTE_GPCLR PORT_GPCLR_REG(PORTE) +#define PORTE_GPCHR PORT_GPCHR_REG(PORTE) +#define PORTE_ISFR PORT_ISFR_REG(PORTE) + +/* PORT - Register array accessors */ +#define PORTA_PCR(index) PORT_PCR_REG(PORTA,index) +#define PORTB_PCR(index) PORT_PCR_REG(PORTB,index) +#define PORTC_PCR(index) PORT_PCR_REG(PORTC,index) +#define PORTD_PCR(index) PORT_PCR_REG(PORTD,index) +#define PORTE_PCR(index) PORT_PCR_REG(PORTE,index) + +/*! + * @} + */ /* end of group PORT_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group PORT_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RCM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RCM_Peripheral_Access_Layer RCM Peripheral Access Layer + * @{ + */ + +/** RCM - Register Layout Typedef */ +typedef struct { + __I uint8_t SRS0; /**< System Reset Status Register 0, offset: 0x0 */ + __I uint8_t SRS1; /**< System Reset Status Register 1, offset: 0x1 */ + uint8_t RESERVED_0[2]; + __IO uint8_t RPFC; /**< Reset Pin Filter Control register, offset: 0x4 */ + __IO uint8_t RPFW; /**< Reset Pin Filter Width register, offset: 0x5 */ + uint8_t RESERVED_1[1]; + __I uint8_t MR; /**< Mode Register, offset: 0x7 */ +} RCM_Type, *RCM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RCM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RCM_Register_Accessor_Macros RCM - Register accessor macros + * @{ + */ + + +/* RCM - Register accessors */ +#define RCM_SRS0_REG(base) ((base)->SRS0) +#define RCM_SRS1_REG(base) ((base)->SRS1) +#define RCM_RPFC_REG(base) ((base)->RPFC) +#define RCM_RPFW_REG(base) ((base)->RPFW) +#define RCM_MR_REG(base) ((base)->MR) + +/*! + * @} + */ /* end of group RCM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RCM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RCM_Register_Masks RCM Register Masks + * @{ + */ + +/* SRS0 Bit Fields */ +#define RCM_SRS0_WAKEUP_MASK 0x1u +#define RCM_SRS0_WAKEUP_SHIFT 0 +#define RCM_SRS0_LVD_MASK 0x2u +#define RCM_SRS0_LVD_SHIFT 1 +#define RCM_SRS0_LOC_MASK 0x4u +#define RCM_SRS0_LOC_SHIFT 2 +#define RCM_SRS0_LOL_MASK 0x8u +#define RCM_SRS0_LOL_SHIFT 3 +#define RCM_SRS0_WDOG_MASK 0x20u +#define RCM_SRS0_WDOG_SHIFT 5 +#define RCM_SRS0_PIN_MASK 0x40u +#define RCM_SRS0_PIN_SHIFT 6 +#define RCM_SRS0_POR_MASK 0x80u +#define RCM_SRS0_POR_SHIFT 7 +/* SRS1 Bit Fields */ +#define RCM_SRS1_JTAG_MASK 0x1u +#define RCM_SRS1_JTAG_SHIFT 0 +#define RCM_SRS1_LOCKUP_MASK 0x2u +#define RCM_SRS1_LOCKUP_SHIFT 1 +#define RCM_SRS1_SW_MASK 0x4u +#define RCM_SRS1_SW_SHIFT 2 +#define RCM_SRS1_MDM_AP_MASK 0x8u +#define RCM_SRS1_MDM_AP_SHIFT 3 +#define RCM_SRS1_EZPT_MASK 0x10u +#define RCM_SRS1_EZPT_SHIFT 4 +#define RCM_SRS1_SACKERR_MASK 0x20u +#define RCM_SRS1_SACKERR_SHIFT 5 +/* RPFC Bit Fields */ +#define RCM_RPFC_RSTFLTSRW_MASK 0x3u +#define RCM_RPFC_RSTFLTSRW_SHIFT 0 +#define RCM_RPFC_RSTFLTSRW(x) (((uint8_t)(((uint8_t)(x))<<RCM_RPFC_RSTFLTSRW_SHIFT))&RCM_RPFC_RSTFLTSRW_MASK) +#define RCM_RPFC_RSTFLTSS_MASK 0x4u +#define RCM_RPFC_RSTFLTSS_SHIFT 2 +/* RPFW Bit Fields */ +#define RCM_RPFW_RSTFLTSEL_MASK 0x1Fu +#define RCM_RPFW_RSTFLTSEL_SHIFT 0 +#define RCM_RPFW_RSTFLTSEL(x) (((uint8_t)(((uint8_t)(x))<<RCM_RPFW_RSTFLTSEL_SHIFT))&RCM_RPFW_RSTFLTSEL_MASK) +/* MR Bit Fields */ +#define RCM_MR_EZP_MS_MASK 0x2u +#define RCM_MR_EZP_MS_SHIFT 1 + +/*! + * @} + */ /* end of group RCM_Register_Masks */ + + +/* RCM - Peripheral instance base addresses */ +/** Peripheral RCM base address */ +#define RCM_BASE (0x4007F000u) +/** Peripheral RCM base pointer */ +#define RCM ((RCM_Type *)RCM_BASE) +#define RCM_BASE_PTR (RCM) +/** Array initializer of RCM peripheral base pointers */ +#define RCM_BASES { RCM } + +/* ---------------------------------------------------------------------------- + -- RCM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RCM_Register_Accessor_Macros RCM - Register accessor macros + * @{ + */ + + +/* RCM - Register instance definitions */ +/* RCM */ +#define RCM_SRS0 RCM_SRS0_REG(RCM) +#define RCM_SRS1 RCM_SRS1_REG(RCM) +#define RCM_RPFC RCM_RPFC_REG(RCM) +#define RCM_RPFW RCM_RPFW_REG(RCM) +#define RCM_MR RCM_MR_REG(RCM) + +/*! + * @} + */ /* end of group RCM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RCM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RFSYS Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFSYS_Peripheral_Access_Layer RFSYS Peripheral Access Layer + * @{ + */ + +/** RFSYS - Register Layout Typedef */ +typedef struct { + __IO uint32_t REG[8]; /**< Register file register, array offset: 0x0, array step: 0x4 */ +} RFSYS_Type, *RFSYS_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RFSYS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFSYS_Register_Accessor_Macros RFSYS - Register accessor macros + * @{ + */ + + +/* RFSYS - Register accessors */ +#define RFSYS_REG_REG(base,index) ((base)->REG[index]) + +/*! + * @} + */ /* end of group RFSYS_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RFSYS Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFSYS_Register_Masks RFSYS Register Masks + * @{ + */ + +/* REG Bit Fields */ +#define RFSYS_REG_LL_MASK 0xFFu +#define RFSYS_REG_LL_SHIFT 0 +#define RFSYS_REG_LL(x) (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_LL_SHIFT))&RFSYS_REG_LL_MASK) +#define RFSYS_REG_LH_MASK 0xFF00u +#define RFSYS_REG_LH_SHIFT 8 +#define RFSYS_REG_LH(x) (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_LH_SHIFT))&RFSYS_REG_LH_MASK) +#define RFSYS_REG_HL_MASK 0xFF0000u +#define RFSYS_REG_HL_SHIFT 16 +#define RFSYS_REG_HL(x) (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_HL_SHIFT))&RFSYS_REG_HL_MASK) +#define RFSYS_REG_HH_MASK 0xFF000000u +#define RFSYS_REG_HH_SHIFT 24 +#define RFSYS_REG_HH(x) (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_HH_SHIFT))&RFSYS_REG_HH_MASK) + +/*! + * @} + */ /* end of group RFSYS_Register_Masks */ + + +/* RFSYS - Peripheral instance base addresses */ +/** Peripheral RFSYS base address */ +#define RFSYS_BASE (0x40041000u) +/** Peripheral RFSYS base pointer */ +#define RFSYS ((RFSYS_Type *)RFSYS_BASE) +#define RFSYS_BASE_PTR (RFSYS) +/** Array initializer of RFSYS peripheral base pointers */ +#define RFSYS_BASES { RFSYS } + +/* ---------------------------------------------------------------------------- + -- RFSYS - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFSYS_Register_Accessor_Macros RFSYS - Register accessor macros + * @{ + */ + + +/* RFSYS - Register instance definitions */ +/* RFSYS */ +#define RFSYS_REG0 RFSYS_REG_REG(RFSYS,0) +#define RFSYS_REG1 RFSYS_REG_REG(RFSYS,1) +#define RFSYS_REG2 RFSYS_REG_REG(RFSYS,2) +#define RFSYS_REG3 RFSYS_REG_REG(RFSYS,3) +#define RFSYS_REG4 RFSYS_REG_REG(RFSYS,4) +#define RFSYS_REG5 RFSYS_REG_REG(RFSYS,5) +#define RFSYS_REG6 RFSYS_REG_REG(RFSYS,6) +#define RFSYS_REG7 RFSYS_REG_REG(RFSYS,7) + +/* RFSYS - Register array accessors */ +#define RFSYS_REG(index) RFSYS_REG_REG(RFSYS,index) + +/*! + * @} + */ /* end of group RFSYS_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RFSYS_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RFVBAT Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFVBAT_Peripheral_Access_Layer RFVBAT Peripheral Access Layer + * @{ + */ + +/** RFVBAT - Register Layout Typedef */ +typedef struct { + __IO uint32_t REG[8]; /**< VBAT register file register, array offset: 0x0, array step: 0x4 */ +} RFVBAT_Type, *RFVBAT_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RFVBAT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFVBAT_Register_Accessor_Macros RFVBAT - Register accessor macros + * @{ + */ + + +/* RFVBAT - Register accessors */ +#define RFVBAT_REG_REG(base,index) ((base)->REG[index]) + +/*! + * @} + */ /* end of group RFVBAT_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RFVBAT Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFVBAT_Register_Masks RFVBAT Register Masks + * @{ + */ + +/* REG Bit Fields */ +#define RFVBAT_REG_LL_MASK 0xFFu +#define RFVBAT_REG_LL_SHIFT 0 +#define RFVBAT_REG_LL(x) (((uint32_t)(((uint32_t)(x))<<RFVBAT_REG_LL_SHIFT))&RFVBAT_REG_LL_MASK) +#define RFVBAT_REG_LH_MASK 0xFF00u +#define RFVBAT_REG_LH_SHIFT 8 +#define RFVBAT_REG_LH(x) (((uint32_t)(((uint32_t)(x))<<RFVBAT_REG_LH_SHIFT))&RFVBAT_REG_LH_MASK) +#define RFVBAT_REG_HL_MASK 0xFF0000u +#define RFVBAT_REG_HL_SHIFT 16 +#define RFVBAT_REG_HL(x) (((uint32_t)(((uint32_t)(x))<<RFVBAT_REG_HL_SHIFT))&RFVBAT_REG_HL_MASK) +#define RFVBAT_REG_HH_MASK 0xFF000000u +#define RFVBAT_REG_HH_SHIFT 24 +#define RFVBAT_REG_HH(x) (((uint32_t)(((uint32_t)(x))<<RFVBAT_REG_HH_SHIFT))&RFVBAT_REG_HH_MASK) + +/*! + * @} + */ /* end of group RFVBAT_Register_Masks */ + + +/* RFVBAT - Peripheral instance base addresses */ +/** Peripheral RFVBAT base address */ +#define RFVBAT_BASE (0x4003E000u) +/** Peripheral RFVBAT base pointer */ +#define RFVBAT ((RFVBAT_Type *)RFVBAT_BASE) +#define RFVBAT_BASE_PTR (RFVBAT) +/** Array initializer of RFVBAT peripheral base pointers */ +#define RFVBAT_BASES { RFVBAT } + +/* ---------------------------------------------------------------------------- + -- RFVBAT - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RFVBAT_Register_Accessor_Macros RFVBAT - Register accessor macros + * @{ + */ + + +/* RFVBAT - Register instance definitions */ +/* RFVBAT */ +#define RFVBAT_REG0 RFVBAT_REG_REG(RFVBAT,0) +#define RFVBAT_REG1 RFVBAT_REG_REG(RFVBAT,1) +#define RFVBAT_REG2 RFVBAT_REG_REG(RFVBAT,2) +#define RFVBAT_REG3 RFVBAT_REG_REG(RFVBAT,3) +#define RFVBAT_REG4 RFVBAT_REG_REG(RFVBAT,4) +#define RFVBAT_REG5 RFVBAT_REG_REG(RFVBAT,5) +#define RFVBAT_REG6 RFVBAT_REG_REG(RFVBAT,6) +#define RFVBAT_REG7 RFVBAT_REG_REG(RFVBAT,7) + +/* RFVBAT - Register array accessors */ +#define RFVBAT_REG(index) RFVBAT_REG_REG(RFVBAT,index) + +/*! + * @} + */ /* end of group RFVBAT_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RFVBAT_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RNG Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RNG_Peripheral_Access_Layer RNG Peripheral Access Layer + * @{ + */ + +/** RNG - Register Layout Typedef */ +typedef struct { + __IO uint32_t CR; /**< RNGA Control Register, offset: 0x0 */ + __I uint32_t SR; /**< RNGA Status Register, offset: 0x4 */ + __O uint32_t ER; /**< RNGA Entropy Register, offset: 0x8 */ + __I uint32_t OR; /**< RNGA Output Register, offset: 0xC */ +} RNG_Type, *RNG_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RNG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RNG_Register_Accessor_Macros RNG - Register accessor macros + * @{ + */ + + +/* RNG - Register accessors */ +#define RNG_CR_REG(base) ((base)->CR) +#define RNG_SR_REG(base) ((base)->SR) +#define RNG_ER_REG(base) ((base)->ER) +#define RNG_OR_REG(base) ((base)->OR) + +/*! + * @} + */ /* end of group RNG_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RNG Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RNG_Register_Masks RNG Register Masks + * @{ + */ + +/* CR Bit Fields */ +#define RNG_CR_GO_MASK 0x1u +#define RNG_CR_GO_SHIFT 0 +#define RNG_CR_HA_MASK 0x2u +#define RNG_CR_HA_SHIFT 1 +#define RNG_CR_INTM_MASK 0x4u +#define RNG_CR_INTM_SHIFT 2 +#define RNG_CR_CLRI_MASK 0x8u +#define RNG_CR_CLRI_SHIFT 3 +#define RNG_CR_SLP_MASK 0x10u +#define RNG_CR_SLP_SHIFT 4 +/* SR Bit Fields */ +#define RNG_SR_SECV_MASK 0x1u +#define RNG_SR_SECV_SHIFT 0 +#define RNG_SR_LRS_MASK 0x2u +#define RNG_SR_LRS_SHIFT 1 +#define RNG_SR_ORU_MASK 0x4u +#define RNG_SR_ORU_SHIFT 2 +#define RNG_SR_ERRI_MASK 0x8u +#define RNG_SR_ERRI_SHIFT 3 +#define RNG_SR_SLP_MASK 0x10u +#define RNG_SR_SLP_SHIFT 4 +#define RNG_SR_OREG_LVL_MASK 0xFF00u +#define RNG_SR_OREG_LVL_SHIFT 8 +#define RNG_SR_OREG_LVL(x) (((uint32_t)(((uint32_t)(x))<<RNG_SR_OREG_LVL_SHIFT))&RNG_SR_OREG_LVL_MASK) +#define RNG_SR_OREG_SIZE_MASK 0xFF0000u +#define RNG_SR_OREG_SIZE_SHIFT 16 +#define RNG_SR_OREG_SIZE(x) (((uint32_t)(((uint32_t)(x))<<RNG_SR_OREG_SIZE_SHIFT))&RNG_SR_OREG_SIZE_MASK) +/* ER Bit Fields */ +#define RNG_ER_EXT_ENT_MASK 0xFFFFFFFFu +#define RNG_ER_EXT_ENT_SHIFT 0 +#define RNG_ER_EXT_ENT(x) (((uint32_t)(((uint32_t)(x))<<RNG_ER_EXT_ENT_SHIFT))&RNG_ER_EXT_ENT_MASK) +/* OR Bit Fields */ +#define RNG_OR_RANDOUT_MASK 0xFFFFFFFFu +#define RNG_OR_RANDOUT_SHIFT 0 +#define RNG_OR_RANDOUT(x) (((uint32_t)(((uint32_t)(x))<<RNG_OR_RANDOUT_SHIFT))&RNG_OR_RANDOUT_MASK) + +/*! + * @} + */ /* end of group RNG_Register_Masks */ + + +/* RNG - Peripheral instance base addresses */ +/** Peripheral RNG base address */ +#define RNG_BASE (0x40029000u) +/** Peripheral RNG base pointer */ +#define RNG ((RNG_Type *)RNG_BASE) +#define RNG_BASE_PTR (RNG) +/** Array initializer of RNG peripheral base pointers */ +#define RNG_BASES { RNG } + +/* ---------------------------------------------------------------------------- + -- RNG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RNG_Register_Accessor_Macros RNG - Register accessor macros + * @{ + */ + + +/* RNG - Register instance definitions */ +/* RNG */ +#define RNG_CR RNG_CR_REG(RNG) +#define RNG_SR RNG_SR_REG(RNG) +#define RNG_ER RNG_ER_REG(RNG) +#define RNG_OR RNG_OR_REG(RNG) + +/*! + * @} + */ /* end of group RNG_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RNG_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- RTC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RTC_Peripheral_Access_Layer RTC Peripheral Access Layer + * @{ + */ + +/** RTC - Register Layout Typedef */ +typedef struct { + __IO uint32_t TSR; /**< RTC Time Seconds Register, offset: 0x0 */ + __IO uint32_t TPR; /**< RTC Time Prescaler Register, offset: 0x4 */ + __IO uint32_t TAR; /**< RTC Time Alarm Register, offset: 0x8 */ + __IO uint32_t TCR; /**< RTC Time Compensation Register, offset: 0xC */ + __IO uint32_t CR; /**< RTC Control Register, offset: 0x10 */ + __IO uint32_t SR; /**< RTC Status Register, offset: 0x14 */ + __IO uint32_t LR; /**< RTC Lock Register, offset: 0x18 */ + __IO uint32_t IER; /**< RTC Interrupt Enable Register, offset: 0x1C */ + uint8_t RESERVED_0[2016]; + __IO uint32_t WAR; /**< RTC Write Access Register, offset: 0x800 */ + __IO uint32_t RAR; /**< RTC Read Access Register, offset: 0x804 */ +} RTC_Type, *RTC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- RTC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RTC_Register_Accessor_Macros RTC - Register accessor macros + * @{ + */ + + +/* RTC - Register accessors */ +#define RTC_TSR_REG(base) ((base)->TSR) +#define RTC_TPR_REG(base) ((base)->TPR) +#define RTC_TAR_REG(base) ((base)->TAR) +#define RTC_TCR_REG(base) ((base)->TCR) +#define RTC_CR_REG(base) ((base)->CR) +#define RTC_SR_REG(base) ((base)->SR) +#define RTC_LR_REG(base) ((base)->LR) +#define RTC_IER_REG(base) ((base)->IER) +#define RTC_WAR_REG(base) ((base)->WAR) +#define RTC_RAR_REG(base) ((base)->RAR) + +/*! + * @} + */ /* end of group RTC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- RTC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RTC_Register_Masks RTC Register Masks + * @{ + */ + +/* TSR Bit Fields */ +#define RTC_TSR_TSR_MASK 0xFFFFFFFFu +#define RTC_TSR_TSR_SHIFT 0 +#define RTC_TSR_TSR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TSR_TSR_SHIFT))&RTC_TSR_TSR_MASK) +/* TPR Bit Fields */ +#define RTC_TPR_TPR_MASK 0xFFFFu +#define RTC_TPR_TPR_SHIFT 0 +#define RTC_TPR_TPR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TPR_TPR_SHIFT))&RTC_TPR_TPR_MASK) +/* TAR Bit Fields */ +#define RTC_TAR_TAR_MASK 0xFFFFFFFFu +#define RTC_TAR_TAR_SHIFT 0 +#define RTC_TAR_TAR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TAR_TAR_SHIFT))&RTC_TAR_TAR_MASK) +/* TCR Bit Fields */ +#define RTC_TCR_TCR_MASK 0xFFu +#define RTC_TCR_TCR_SHIFT 0 +#define RTC_TCR_TCR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TCR_TCR_SHIFT))&RTC_TCR_TCR_MASK) +#define RTC_TCR_CIR_MASK 0xFF00u +#define RTC_TCR_CIR_SHIFT 8 +#define RTC_TCR_CIR(x) (((uint32_t)(((uint32_t)(x))<<RTC_TCR_CIR_SHIFT))&RTC_TCR_CIR_MASK) +#define RTC_TCR_TCV_MASK 0xFF0000u +#define RTC_TCR_TCV_SHIFT 16 +#define RTC_TCR_TCV(x) (((uint32_t)(((uint32_t)(x))<<RTC_TCR_TCV_SHIFT))&RTC_TCR_TCV_MASK) +#define RTC_TCR_CIC_MASK 0xFF000000u +#define RTC_TCR_CIC_SHIFT 24 +#define RTC_TCR_CIC(x) (((uint32_t)(((uint32_t)(x))<<RTC_TCR_CIC_SHIFT))&RTC_TCR_CIC_MASK) +/* CR Bit Fields */ +#define RTC_CR_SWR_MASK 0x1u +#define RTC_CR_SWR_SHIFT 0 +#define RTC_CR_WPE_MASK 0x2u +#define RTC_CR_WPE_SHIFT 1 +#define RTC_CR_SUP_MASK 0x4u +#define RTC_CR_SUP_SHIFT 2 +#define RTC_CR_UM_MASK 0x8u +#define RTC_CR_UM_SHIFT 3 +#define RTC_CR_WPS_MASK 0x10u +#define RTC_CR_WPS_SHIFT 4 +#define RTC_CR_OSCE_MASK 0x100u +#define RTC_CR_OSCE_SHIFT 8 +#define RTC_CR_CLKO_MASK 0x200u +#define RTC_CR_CLKO_SHIFT 9 +#define RTC_CR_SC16P_MASK 0x400u +#define RTC_CR_SC16P_SHIFT 10 +#define RTC_CR_SC8P_MASK 0x800u +#define RTC_CR_SC8P_SHIFT 11 +#define RTC_CR_SC4P_MASK 0x1000u +#define RTC_CR_SC4P_SHIFT 12 +#define RTC_CR_SC2P_MASK 0x2000u +#define RTC_CR_SC2P_SHIFT 13 +/* SR Bit Fields */ +#define RTC_SR_TIF_MASK 0x1u +#define RTC_SR_TIF_SHIFT 0 +#define RTC_SR_TOF_MASK 0x2u +#define RTC_SR_TOF_SHIFT 1 +#define RTC_SR_TAF_MASK 0x4u +#define RTC_SR_TAF_SHIFT 2 +#define RTC_SR_TCE_MASK 0x10u +#define RTC_SR_TCE_SHIFT 4 +/* LR Bit Fields */ +#define RTC_LR_TCL_MASK 0x8u +#define RTC_LR_TCL_SHIFT 3 +#define RTC_LR_CRL_MASK 0x10u +#define RTC_LR_CRL_SHIFT 4 +#define RTC_LR_SRL_MASK 0x20u +#define RTC_LR_SRL_SHIFT 5 +#define RTC_LR_LRL_MASK 0x40u +#define RTC_LR_LRL_SHIFT 6 +/* IER Bit Fields */ +#define RTC_IER_TIIE_MASK 0x1u +#define RTC_IER_TIIE_SHIFT 0 +#define RTC_IER_TOIE_MASK 0x2u +#define RTC_IER_TOIE_SHIFT 1 +#define RTC_IER_TAIE_MASK 0x4u +#define RTC_IER_TAIE_SHIFT 2 +#define RTC_IER_TSIE_MASK 0x10u +#define RTC_IER_TSIE_SHIFT 4 +#define RTC_IER_WPON_MASK 0x80u +#define RTC_IER_WPON_SHIFT 7 +/* WAR Bit Fields */ +#define RTC_WAR_TSRW_MASK 0x1u +#define RTC_WAR_TSRW_SHIFT 0 +#define RTC_WAR_TPRW_MASK 0x2u +#define RTC_WAR_TPRW_SHIFT 1 +#define RTC_WAR_TARW_MASK 0x4u +#define RTC_WAR_TARW_SHIFT 2 +#define RTC_WAR_TCRW_MASK 0x8u +#define RTC_WAR_TCRW_SHIFT 3 +#define RTC_WAR_CRW_MASK 0x10u +#define RTC_WAR_CRW_SHIFT 4 +#define RTC_WAR_SRW_MASK 0x20u +#define RTC_WAR_SRW_SHIFT 5 +#define RTC_WAR_LRW_MASK 0x40u +#define RTC_WAR_LRW_SHIFT 6 +#define RTC_WAR_IERW_MASK 0x80u +#define RTC_WAR_IERW_SHIFT 7 +/* RAR Bit Fields */ +#define RTC_RAR_TSRR_MASK 0x1u +#define RTC_RAR_TSRR_SHIFT 0 +#define RTC_RAR_TPRR_MASK 0x2u +#define RTC_RAR_TPRR_SHIFT 1 +#define RTC_RAR_TARR_MASK 0x4u +#define RTC_RAR_TARR_SHIFT 2 +#define RTC_RAR_TCRR_MASK 0x8u +#define RTC_RAR_TCRR_SHIFT 3 +#define RTC_RAR_CRR_MASK 0x10u +#define RTC_RAR_CRR_SHIFT 4 +#define RTC_RAR_SRR_MASK 0x20u +#define RTC_RAR_SRR_SHIFT 5 +#define RTC_RAR_LRR_MASK 0x40u +#define RTC_RAR_LRR_SHIFT 6 +#define RTC_RAR_IERR_MASK 0x80u +#define RTC_RAR_IERR_SHIFT 7 + +/*! + * @} + */ /* end of group RTC_Register_Masks */ + + +/* RTC - Peripheral instance base addresses */ +/** Peripheral RTC base address */ +#define RTC_BASE (0x4003D000u) +/** Peripheral RTC base pointer */ +#define RTC ((RTC_Type *)RTC_BASE) +#define RTC_BASE_PTR (RTC) +/** Array initializer of RTC peripheral base pointers */ +#define RTC_BASES { RTC } + +/* ---------------------------------------------------------------------------- + -- RTC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup RTC_Register_Accessor_Macros RTC - Register accessor macros + * @{ + */ + + +/* RTC - Register instance definitions */ +/* RTC */ +#define RTC_TSR RTC_TSR_REG(RTC) +#define RTC_TPR RTC_TPR_REG(RTC) +#define RTC_TAR RTC_TAR_REG(RTC) +#define RTC_TCR RTC_TCR_REG(RTC) +#define RTC_CR RTC_CR_REG(RTC) +#define RTC_SR RTC_SR_REG(RTC) +#define RTC_LR RTC_LR_REG(RTC) +#define RTC_IER RTC_IER_REG(RTC) +#define RTC_WAR RTC_WAR_REG(RTC) +#define RTC_RAR RTC_RAR_REG(RTC) + +/*! + * @} + */ /* end of group RTC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group RTC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- SDHC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SDHC_Peripheral_Access_Layer SDHC Peripheral Access Layer + * @{ + */ + +/** SDHC - Register Layout Typedef */ +typedef struct { + __IO uint32_t DSADDR; /**< DMA System Address register, offset: 0x0 */ + __IO uint32_t BLKATTR; /**< Block Attributes register, offset: 0x4 */ + __IO uint32_t CMDARG; /**< Command Argument register, offset: 0x8 */ + __IO uint32_t XFERTYP; /**< Transfer Type register, offset: 0xC */ + __I uint32_t CMDRSP[4]; /**< Command Response 0..Command Response 3, array offset: 0x10, array step: 0x4 */ + __IO uint32_t DATPORT; /**< Buffer Data Port register, offset: 0x20 */ + __I uint32_t PRSSTAT; /**< Present State register, offset: 0x24 */ + __IO uint32_t PROCTL; /**< Protocol Control register, offset: 0x28 */ + __IO uint32_t SYSCTL; /**< System Control register, offset: 0x2C */ + __IO uint32_t IRQSTAT; /**< Interrupt Status register, offset: 0x30 */ + __IO uint32_t IRQSTATEN; /**< Interrupt Status Enable register, offset: 0x34 */ + __IO uint32_t IRQSIGEN; /**< Interrupt Signal Enable register, offset: 0x38 */ + __I uint32_t AC12ERR; /**< Auto CMD12 Error Status Register, offset: 0x3C */ + __I uint32_t HTCAPBLT; /**< Host Controller Capabilities, offset: 0x40 */ + __IO uint32_t WML; /**< Watermark Level Register, offset: 0x44 */ + uint8_t RESERVED_0[8]; + __O uint32_t FEVT; /**< Force Event register, offset: 0x50 */ + __I uint32_t ADMAES; /**< ADMA Error Status register, offset: 0x54 */ + __IO uint32_t ADSADDR; /**< ADMA System Addressregister, offset: 0x58 */ + uint8_t RESERVED_1[100]; + __IO uint32_t VENDOR; /**< Vendor Specific register, offset: 0xC0 */ + __IO uint32_t MMCBOOT; /**< MMC Boot register, offset: 0xC4 */ + uint8_t RESERVED_2[52]; + __I uint32_t HOSTVER; /**< Host Controller Version, offset: 0xFC */ +} SDHC_Type, *SDHC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- SDHC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SDHC_Register_Accessor_Macros SDHC - Register accessor macros + * @{ + */ + + +/* SDHC - Register accessors */ +#define SDHC_DSADDR_REG(base) ((base)->DSADDR) +#define SDHC_BLKATTR_REG(base) ((base)->BLKATTR) +#define SDHC_CMDARG_REG(base) ((base)->CMDARG) +#define SDHC_XFERTYP_REG(base) ((base)->XFERTYP) +#define SDHC_CMDRSP_REG(base,index) ((base)->CMDRSP[index]) +#define SDHC_DATPORT_REG(base) ((base)->DATPORT) +#define SDHC_PRSSTAT_REG(base) ((base)->PRSSTAT) +#define SDHC_PROCTL_REG(base) ((base)->PROCTL) +#define SDHC_SYSCTL_REG(base) ((base)->SYSCTL) +#define SDHC_IRQSTAT_REG(base) ((base)->IRQSTAT) +#define SDHC_IRQSTATEN_REG(base) ((base)->IRQSTATEN) +#define SDHC_IRQSIGEN_REG(base) ((base)->IRQSIGEN) +#define SDHC_AC12ERR_REG(base) ((base)->AC12ERR) +#define SDHC_HTCAPBLT_REG(base) ((base)->HTCAPBLT) +#define SDHC_WML_REG(base) ((base)->WML) +#define SDHC_FEVT_REG(base) ((base)->FEVT) +#define SDHC_ADMAES_REG(base) ((base)->ADMAES) +#define SDHC_ADSADDR_REG(base) ((base)->ADSADDR) +#define SDHC_VENDOR_REG(base) ((base)->VENDOR) +#define SDHC_MMCBOOT_REG(base) ((base)->MMCBOOT) +#define SDHC_HOSTVER_REG(base) ((base)->HOSTVER) + +/*! + * @} + */ /* end of group SDHC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- SDHC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SDHC_Register_Masks SDHC Register Masks + * @{ + */ + +/* DSADDR Bit Fields */ +#define SDHC_DSADDR_DSADDR_MASK 0xFFFFFFFCu +#define SDHC_DSADDR_DSADDR_SHIFT 2 +#define SDHC_DSADDR_DSADDR(x) (((uint32_t)(((uint32_t)(x))<<SDHC_DSADDR_DSADDR_SHIFT))&SDHC_DSADDR_DSADDR_MASK) +/* BLKATTR Bit Fields */ +#define SDHC_BLKATTR_BLKSIZE_MASK 0x1FFFu +#define SDHC_BLKATTR_BLKSIZE_SHIFT 0 +#define SDHC_BLKATTR_BLKSIZE(x) (((uint32_t)(((uint32_t)(x))<<SDHC_BLKATTR_BLKSIZE_SHIFT))&SDHC_BLKATTR_BLKSIZE_MASK) +#define SDHC_BLKATTR_BLKCNT_MASK 0xFFFF0000u +#define SDHC_BLKATTR_BLKCNT_SHIFT 16 +#define SDHC_BLKATTR_BLKCNT(x) (((uint32_t)(((uint32_t)(x))<<SDHC_BLKATTR_BLKCNT_SHIFT))&SDHC_BLKATTR_BLKCNT_MASK) +/* CMDARG Bit Fields */ +#define SDHC_CMDARG_CMDARG_MASK 0xFFFFFFFFu +#define SDHC_CMDARG_CMDARG_SHIFT 0 +#define SDHC_CMDARG_CMDARG(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDARG_CMDARG_SHIFT))&SDHC_CMDARG_CMDARG_MASK) +/* XFERTYP Bit Fields */ +#define SDHC_XFERTYP_DMAEN_MASK 0x1u +#define SDHC_XFERTYP_DMAEN_SHIFT 0 +#define SDHC_XFERTYP_BCEN_MASK 0x2u +#define SDHC_XFERTYP_BCEN_SHIFT 1 +#define SDHC_XFERTYP_AC12EN_MASK 0x4u +#define SDHC_XFERTYP_AC12EN_SHIFT 2 +#define SDHC_XFERTYP_DTDSEL_MASK 0x10u +#define SDHC_XFERTYP_DTDSEL_SHIFT 4 +#define SDHC_XFERTYP_MSBSEL_MASK 0x20u +#define SDHC_XFERTYP_MSBSEL_SHIFT 5 +#define SDHC_XFERTYP_RSPTYP_MASK 0x30000u +#define SDHC_XFERTYP_RSPTYP_SHIFT 16 +#define SDHC_XFERTYP_RSPTYP(x) (((uint32_t)(((uint32_t)(x))<<SDHC_XFERTYP_RSPTYP_SHIFT))&SDHC_XFERTYP_RSPTYP_MASK) +#define SDHC_XFERTYP_CCCEN_MASK 0x80000u +#define SDHC_XFERTYP_CCCEN_SHIFT 19 +#define SDHC_XFERTYP_CICEN_MASK 0x100000u +#define SDHC_XFERTYP_CICEN_SHIFT 20 +#define SDHC_XFERTYP_DPSEL_MASK 0x200000u +#define SDHC_XFERTYP_DPSEL_SHIFT 21 +#define SDHC_XFERTYP_CMDTYP_MASK 0xC00000u +#define SDHC_XFERTYP_CMDTYP_SHIFT 22 +#define SDHC_XFERTYP_CMDTYP(x) (((uint32_t)(((uint32_t)(x))<<SDHC_XFERTYP_CMDTYP_SHIFT))&SDHC_XFERTYP_CMDTYP_MASK) +#define SDHC_XFERTYP_CMDINX_MASK 0x3F000000u +#define SDHC_XFERTYP_CMDINX_SHIFT 24 +#define SDHC_XFERTYP_CMDINX(x) (((uint32_t)(((uint32_t)(x))<<SDHC_XFERTYP_CMDINX_SHIFT))&SDHC_XFERTYP_CMDINX_MASK) +/* CMDRSP Bit Fields */ +#define SDHC_CMDRSP_CMDRSP0_MASK 0xFFFFFFFFu +#define SDHC_CMDRSP_CMDRSP0_SHIFT 0 +#define SDHC_CMDRSP_CMDRSP0(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDRSP_CMDRSP0_SHIFT))&SDHC_CMDRSP_CMDRSP0_MASK) +#define SDHC_CMDRSP_CMDRSP1_MASK 0xFFFFFFFFu +#define SDHC_CMDRSP_CMDRSP1_SHIFT 0 +#define SDHC_CMDRSP_CMDRSP1(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDRSP_CMDRSP1_SHIFT))&SDHC_CMDRSP_CMDRSP1_MASK) +#define SDHC_CMDRSP_CMDRSP2_MASK 0xFFFFFFFFu +#define SDHC_CMDRSP_CMDRSP2_SHIFT 0 +#define SDHC_CMDRSP_CMDRSP2(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDRSP_CMDRSP2_SHIFT))&SDHC_CMDRSP_CMDRSP2_MASK) +#define SDHC_CMDRSP_CMDRSP3_MASK 0xFFFFFFFFu +#define SDHC_CMDRSP_CMDRSP3_SHIFT 0 +#define SDHC_CMDRSP_CMDRSP3(x) (((uint32_t)(((uint32_t)(x))<<SDHC_CMDRSP_CMDRSP3_SHIFT))&SDHC_CMDRSP_CMDRSP3_MASK) +/* DATPORT Bit Fields */ +#define SDHC_DATPORT_DATCONT_MASK 0xFFFFFFFFu +#define SDHC_DATPORT_DATCONT_SHIFT 0 +#define SDHC_DATPORT_DATCONT(x) (((uint32_t)(((uint32_t)(x))<<SDHC_DATPORT_DATCONT_SHIFT))&SDHC_DATPORT_DATCONT_MASK) +/* PRSSTAT Bit Fields */ +#define SDHC_PRSSTAT_CIHB_MASK 0x1u +#define SDHC_PRSSTAT_CIHB_SHIFT 0 +#define SDHC_PRSSTAT_CDIHB_MASK 0x2u +#define SDHC_PRSSTAT_CDIHB_SHIFT 1 +#define SDHC_PRSSTAT_DLA_MASK 0x4u +#define SDHC_PRSSTAT_DLA_SHIFT 2 +#define SDHC_PRSSTAT_SDSTB_MASK 0x8u +#define SDHC_PRSSTAT_SDSTB_SHIFT 3 +#define SDHC_PRSSTAT_IPGOFF_MASK 0x10u +#define SDHC_PRSSTAT_IPGOFF_SHIFT 4 +#define SDHC_PRSSTAT_HCKOFF_MASK 0x20u +#define SDHC_PRSSTAT_HCKOFF_SHIFT 5 +#define SDHC_PRSSTAT_PEROFF_MASK 0x40u +#define SDHC_PRSSTAT_PEROFF_SHIFT 6 +#define SDHC_PRSSTAT_SDOFF_MASK 0x80u +#define SDHC_PRSSTAT_SDOFF_SHIFT 7 +#define SDHC_PRSSTAT_WTA_MASK 0x100u +#define SDHC_PRSSTAT_WTA_SHIFT 8 +#define SDHC_PRSSTAT_RTA_MASK 0x200u +#define SDHC_PRSSTAT_RTA_SHIFT 9 +#define SDHC_PRSSTAT_BWEN_MASK 0x400u +#define SDHC_PRSSTAT_BWEN_SHIFT 10 +#define SDHC_PRSSTAT_BREN_MASK 0x800u +#define SDHC_PRSSTAT_BREN_SHIFT 11 +#define SDHC_PRSSTAT_CINS_MASK 0x10000u +#define SDHC_PRSSTAT_CINS_SHIFT 16 +#define SDHC_PRSSTAT_CLSL_MASK 0x800000u +#define SDHC_PRSSTAT_CLSL_SHIFT 23 +#define SDHC_PRSSTAT_DLSL_MASK 0xFF000000u +#define SDHC_PRSSTAT_DLSL_SHIFT 24 +#define SDHC_PRSSTAT_DLSL(x) (((uint32_t)(((uint32_t)(x))<<SDHC_PRSSTAT_DLSL_SHIFT))&SDHC_PRSSTAT_DLSL_MASK) +/* PROCTL Bit Fields */ +#define SDHC_PROCTL_LCTL_MASK 0x1u +#define SDHC_PROCTL_LCTL_SHIFT 0 +#define SDHC_PROCTL_DTW_MASK 0x6u +#define SDHC_PROCTL_DTW_SHIFT 1 +#define SDHC_PROCTL_DTW(x) (((uint32_t)(((uint32_t)(x))<<SDHC_PROCTL_DTW_SHIFT))&SDHC_PROCTL_DTW_MASK) +#define SDHC_PROCTL_D3CD_MASK 0x8u +#define SDHC_PROCTL_D3CD_SHIFT 3 +#define SDHC_PROCTL_EMODE_MASK 0x30u +#define SDHC_PROCTL_EMODE_SHIFT 4 +#define SDHC_PROCTL_EMODE(x) (((uint32_t)(((uint32_t)(x))<<SDHC_PROCTL_EMODE_SHIFT))&SDHC_PROCTL_EMODE_MASK) +#define SDHC_PROCTL_CDTL_MASK 0x40u +#define SDHC_PROCTL_CDTL_SHIFT 6 +#define SDHC_PROCTL_CDSS_MASK 0x80u +#define SDHC_PROCTL_CDSS_SHIFT 7 +#define SDHC_PROCTL_DMAS_MASK 0x300u +#define SDHC_PROCTL_DMAS_SHIFT 8 +#define SDHC_PROCTL_DMAS(x) (((uint32_t)(((uint32_t)(x))<<SDHC_PROCTL_DMAS_SHIFT))&SDHC_PROCTL_DMAS_MASK) +#define SDHC_PROCTL_SABGREQ_MASK 0x10000u +#define SDHC_PROCTL_SABGREQ_SHIFT 16 +#define SDHC_PROCTL_CREQ_MASK 0x20000u +#define SDHC_PROCTL_CREQ_SHIFT 17 +#define SDHC_PROCTL_RWCTL_MASK 0x40000u +#define SDHC_PROCTL_RWCTL_SHIFT 18 +#define SDHC_PROCTL_IABG_MASK 0x80000u +#define SDHC_PROCTL_IABG_SHIFT 19 +#define SDHC_PROCTL_WECINT_MASK 0x1000000u +#define SDHC_PROCTL_WECINT_SHIFT 24 +#define SDHC_PROCTL_WECINS_MASK 0x2000000u +#define SDHC_PROCTL_WECINS_SHIFT 25 +#define SDHC_PROCTL_WECRM_MASK 0x4000000u +#define SDHC_PROCTL_WECRM_SHIFT 26 +/* SYSCTL Bit Fields */ +#define SDHC_SYSCTL_IPGEN_MASK 0x1u +#define SDHC_SYSCTL_IPGEN_SHIFT 0 +#define SDHC_SYSCTL_HCKEN_MASK 0x2u +#define SDHC_SYSCTL_HCKEN_SHIFT 1 +#define SDHC_SYSCTL_PEREN_MASK 0x4u +#define SDHC_SYSCTL_PEREN_SHIFT 2 +#define SDHC_SYSCTL_SDCLKEN_MASK 0x8u +#define SDHC_SYSCTL_SDCLKEN_SHIFT 3 +#define SDHC_SYSCTL_DVS_MASK 0xF0u +#define SDHC_SYSCTL_DVS_SHIFT 4 +#define SDHC_SYSCTL_DVS(x) (((uint32_t)(((uint32_t)(x))<<SDHC_SYSCTL_DVS_SHIFT))&SDHC_SYSCTL_DVS_MASK) +#define SDHC_SYSCTL_SDCLKFS_MASK 0xFF00u +#define SDHC_SYSCTL_SDCLKFS_SHIFT 8 +#define SDHC_SYSCTL_SDCLKFS(x) (((uint32_t)(((uint32_t)(x))<<SDHC_SYSCTL_SDCLKFS_SHIFT))&SDHC_SYSCTL_SDCLKFS_MASK) +#define SDHC_SYSCTL_DTOCV_MASK 0xF0000u +#define SDHC_SYSCTL_DTOCV_SHIFT 16 +#define SDHC_SYSCTL_DTOCV(x) (((uint32_t)(((uint32_t)(x))<<SDHC_SYSCTL_DTOCV_SHIFT))&SDHC_SYSCTL_DTOCV_MASK) +#define SDHC_SYSCTL_RSTA_MASK 0x1000000u +#define SDHC_SYSCTL_RSTA_SHIFT 24 +#define SDHC_SYSCTL_RSTC_MASK 0x2000000u +#define SDHC_SYSCTL_RSTC_SHIFT 25 +#define SDHC_SYSCTL_RSTD_MASK 0x4000000u +#define SDHC_SYSCTL_RSTD_SHIFT 26 +#define SDHC_SYSCTL_INITA_MASK 0x8000000u +#define SDHC_SYSCTL_INITA_SHIFT 27 +/* IRQSTAT Bit Fields */ +#define SDHC_IRQSTAT_CC_MASK 0x1u +#define SDHC_IRQSTAT_CC_SHIFT 0 +#define SDHC_IRQSTAT_TC_MASK 0x2u +#define SDHC_IRQSTAT_TC_SHIFT 1 +#define SDHC_IRQSTAT_BGE_MASK 0x4u +#define SDHC_IRQSTAT_BGE_SHIFT 2 +#define SDHC_IRQSTAT_DINT_MASK 0x8u +#define SDHC_IRQSTAT_DINT_SHIFT 3 +#define SDHC_IRQSTAT_BWR_MASK 0x10u +#define SDHC_IRQSTAT_BWR_SHIFT 4 +#define SDHC_IRQSTAT_BRR_MASK 0x20u +#define SDHC_IRQSTAT_BRR_SHIFT 5 +#define SDHC_IRQSTAT_CINS_MASK 0x40u +#define SDHC_IRQSTAT_CINS_SHIFT 6 +#define SDHC_IRQSTAT_CRM_MASK 0x80u +#define SDHC_IRQSTAT_CRM_SHIFT 7 +#define SDHC_IRQSTAT_CINT_MASK 0x100u +#define SDHC_IRQSTAT_CINT_SHIFT 8 +#define SDHC_IRQSTAT_CTOE_MASK 0x10000u +#define SDHC_IRQSTAT_CTOE_SHIFT 16 +#define SDHC_IRQSTAT_CCE_MASK 0x20000u +#define SDHC_IRQSTAT_CCE_SHIFT 17 +#define SDHC_IRQSTAT_CEBE_MASK 0x40000u +#define SDHC_IRQSTAT_CEBE_SHIFT 18 +#define SDHC_IRQSTAT_CIE_MASK 0x80000u +#define SDHC_IRQSTAT_CIE_SHIFT 19 +#define SDHC_IRQSTAT_DTOE_MASK 0x100000u +#define SDHC_IRQSTAT_DTOE_SHIFT 20 +#define SDHC_IRQSTAT_DCE_MASK 0x200000u +#define SDHC_IRQSTAT_DCE_SHIFT 21 +#define SDHC_IRQSTAT_DEBE_MASK 0x400000u +#define SDHC_IRQSTAT_DEBE_SHIFT 22 +#define SDHC_IRQSTAT_AC12E_MASK 0x1000000u +#define SDHC_IRQSTAT_AC12E_SHIFT 24 +#define SDHC_IRQSTAT_DMAE_MASK 0x10000000u +#define SDHC_IRQSTAT_DMAE_SHIFT 28 +/* IRQSTATEN Bit Fields */ +#define SDHC_IRQSTATEN_CCSEN_MASK 0x1u +#define SDHC_IRQSTATEN_CCSEN_SHIFT 0 +#define SDHC_IRQSTATEN_TCSEN_MASK 0x2u +#define SDHC_IRQSTATEN_TCSEN_SHIFT 1 +#define SDHC_IRQSTATEN_BGESEN_MASK 0x4u +#define SDHC_IRQSTATEN_BGESEN_SHIFT 2 +#define SDHC_IRQSTATEN_DINTSEN_MASK 0x8u +#define SDHC_IRQSTATEN_DINTSEN_SHIFT 3 +#define SDHC_IRQSTATEN_BWRSEN_MASK 0x10u +#define SDHC_IRQSTATEN_BWRSEN_SHIFT 4 +#define SDHC_IRQSTATEN_BRRSEN_MASK 0x20u +#define SDHC_IRQSTATEN_BRRSEN_SHIFT 5 +#define SDHC_IRQSTATEN_CINSEN_MASK 0x40u +#define SDHC_IRQSTATEN_CINSEN_SHIFT 6 +#define SDHC_IRQSTATEN_CRMSEN_MASK 0x80u +#define SDHC_IRQSTATEN_CRMSEN_SHIFT 7 +#define SDHC_IRQSTATEN_CINTSEN_MASK 0x100u +#define SDHC_IRQSTATEN_CINTSEN_SHIFT 8 +#define SDHC_IRQSTATEN_CTOESEN_MASK 0x10000u +#define SDHC_IRQSTATEN_CTOESEN_SHIFT 16 +#define SDHC_IRQSTATEN_CCESEN_MASK 0x20000u +#define SDHC_IRQSTATEN_CCESEN_SHIFT 17 +#define SDHC_IRQSTATEN_CEBESEN_MASK 0x40000u +#define SDHC_IRQSTATEN_CEBESEN_SHIFT 18 +#define SDHC_IRQSTATEN_CIESEN_MASK 0x80000u +#define SDHC_IRQSTATEN_CIESEN_SHIFT 19 +#define SDHC_IRQSTATEN_DTOESEN_MASK 0x100000u +#define SDHC_IRQSTATEN_DTOESEN_SHIFT 20 +#define SDHC_IRQSTATEN_DCESEN_MASK 0x200000u +#define SDHC_IRQSTATEN_DCESEN_SHIFT 21 +#define SDHC_IRQSTATEN_DEBESEN_MASK 0x400000u +#define SDHC_IRQSTATEN_DEBESEN_SHIFT 22 +#define SDHC_IRQSTATEN_AC12ESEN_MASK 0x1000000u +#define SDHC_IRQSTATEN_AC12ESEN_SHIFT 24 +#define SDHC_IRQSTATEN_DMAESEN_MASK 0x10000000u +#define SDHC_IRQSTATEN_DMAESEN_SHIFT 28 +/* IRQSIGEN Bit Fields */ +#define SDHC_IRQSIGEN_CCIEN_MASK 0x1u +#define SDHC_IRQSIGEN_CCIEN_SHIFT 0 +#define SDHC_IRQSIGEN_TCIEN_MASK 0x2u +#define SDHC_IRQSIGEN_TCIEN_SHIFT 1 +#define SDHC_IRQSIGEN_BGEIEN_MASK 0x4u +#define SDHC_IRQSIGEN_BGEIEN_SHIFT 2 +#define SDHC_IRQSIGEN_DINTIEN_MASK 0x8u +#define SDHC_IRQSIGEN_DINTIEN_SHIFT 3 +#define SDHC_IRQSIGEN_BWRIEN_MASK 0x10u +#define SDHC_IRQSIGEN_BWRIEN_SHIFT 4 +#define SDHC_IRQSIGEN_BRRIEN_MASK 0x20u +#define SDHC_IRQSIGEN_BRRIEN_SHIFT 5 +#define SDHC_IRQSIGEN_CINSIEN_MASK 0x40u +#define SDHC_IRQSIGEN_CINSIEN_SHIFT 6 +#define SDHC_IRQSIGEN_CRMIEN_MASK 0x80u +#define SDHC_IRQSIGEN_CRMIEN_SHIFT 7 +#define SDHC_IRQSIGEN_CINTIEN_MASK 0x100u +#define SDHC_IRQSIGEN_CINTIEN_SHIFT 8 +#define SDHC_IRQSIGEN_CTOEIEN_MASK 0x10000u +#define SDHC_IRQSIGEN_CTOEIEN_SHIFT 16 +#define SDHC_IRQSIGEN_CCEIEN_MASK 0x20000u +#define SDHC_IRQSIGEN_CCEIEN_SHIFT 17 +#define SDHC_IRQSIGEN_CEBEIEN_MASK 0x40000u +#define SDHC_IRQSIGEN_CEBEIEN_SHIFT 18 +#define SDHC_IRQSIGEN_CIEIEN_MASK 0x80000u +#define SDHC_IRQSIGEN_CIEIEN_SHIFT 19 +#define SDHC_IRQSIGEN_DTOEIEN_MASK 0x100000u +#define SDHC_IRQSIGEN_DTOEIEN_SHIFT 20 +#define SDHC_IRQSIGEN_DCEIEN_MASK 0x200000u +#define SDHC_IRQSIGEN_DCEIEN_SHIFT 21 +#define SDHC_IRQSIGEN_DEBEIEN_MASK 0x400000u +#define SDHC_IRQSIGEN_DEBEIEN_SHIFT 22 +#define SDHC_IRQSIGEN_AC12EIEN_MASK 0x1000000u +#define SDHC_IRQSIGEN_AC12EIEN_SHIFT 24 +#define SDHC_IRQSIGEN_DMAEIEN_MASK 0x10000000u +#define SDHC_IRQSIGEN_DMAEIEN_SHIFT 28 +/* AC12ERR Bit Fields */ +#define SDHC_AC12ERR_AC12NE_MASK 0x1u +#define SDHC_AC12ERR_AC12NE_SHIFT 0 +#define SDHC_AC12ERR_AC12TOE_MASK 0x2u +#define SDHC_AC12ERR_AC12TOE_SHIFT 1 +#define SDHC_AC12ERR_AC12EBE_MASK 0x4u +#define SDHC_AC12ERR_AC12EBE_SHIFT 2 +#define SDHC_AC12ERR_AC12CE_MASK 0x8u +#define SDHC_AC12ERR_AC12CE_SHIFT 3 +#define SDHC_AC12ERR_AC12IE_MASK 0x10u +#define SDHC_AC12ERR_AC12IE_SHIFT 4 +#define SDHC_AC12ERR_CNIBAC12E_MASK 0x80u +#define SDHC_AC12ERR_CNIBAC12E_SHIFT 7 +/* HTCAPBLT Bit Fields */ +#define SDHC_HTCAPBLT_MBL_MASK 0x70000u +#define SDHC_HTCAPBLT_MBL_SHIFT 16 +#define SDHC_HTCAPBLT_MBL(x) (((uint32_t)(((uint32_t)(x))<<SDHC_HTCAPBLT_MBL_SHIFT))&SDHC_HTCAPBLT_MBL_MASK) +#define SDHC_HTCAPBLT_ADMAS_MASK 0x100000u +#define SDHC_HTCAPBLT_ADMAS_SHIFT 20 +#define SDHC_HTCAPBLT_HSS_MASK 0x200000u +#define SDHC_HTCAPBLT_HSS_SHIFT 21 +#define SDHC_HTCAPBLT_DMAS_MASK 0x400000u +#define SDHC_HTCAPBLT_DMAS_SHIFT 22 +#define SDHC_HTCAPBLT_SRS_MASK 0x800000u +#define SDHC_HTCAPBLT_SRS_SHIFT 23 +#define SDHC_HTCAPBLT_VS33_MASK 0x1000000u +#define SDHC_HTCAPBLT_VS33_SHIFT 24 +/* WML Bit Fields */ +#define SDHC_WML_RDWML_MASK 0xFFu +#define SDHC_WML_RDWML_SHIFT 0 +#define SDHC_WML_RDWML(x) (((uint32_t)(((uint32_t)(x))<<SDHC_WML_RDWML_SHIFT))&SDHC_WML_RDWML_MASK) +#define SDHC_WML_WRWML_MASK 0xFF0000u +#define SDHC_WML_WRWML_SHIFT 16 +#define SDHC_WML_WRWML(x) (((uint32_t)(((uint32_t)(x))<<SDHC_WML_WRWML_SHIFT))&SDHC_WML_WRWML_MASK) +/* FEVT Bit Fields */ +#define SDHC_FEVT_AC12NE_MASK 0x1u +#define SDHC_FEVT_AC12NE_SHIFT 0 +#define SDHC_FEVT_AC12TOE_MASK 0x2u +#define SDHC_FEVT_AC12TOE_SHIFT 1 +#define SDHC_FEVT_AC12CE_MASK 0x4u +#define SDHC_FEVT_AC12CE_SHIFT 2 +#define SDHC_FEVT_AC12EBE_MASK 0x8u +#define SDHC_FEVT_AC12EBE_SHIFT 3 +#define SDHC_FEVT_AC12IE_MASK 0x10u +#define SDHC_FEVT_AC12IE_SHIFT 4 +#define SDHC_FEVT_CNIBAC12E_MASK 0x80u +#define SDHC_FEVT_CNIBAC12E_SHIFT 7 +#define SDHC_FEVT_CTOE_MASK 0x10000u +#define SDHC_FEVT_CTOE_SHIFT 16 +#define SDHC_FEVT_CCE_MASK 0x20000u +#define SDHC_FEVT_CCE_SHIFT 17 +#define SDHC_FEVT_CEBE_MASK 0x40000u +#define SDHC_FEVT_CEBE_SHIFT 18 +#define SDHC_FEVT_CIE_MASK 0x80000u +#define SDHC_FEVT_CIE_SHIFT 19 +#define SDHC_FEVT_DTOE_MASK 0x100000u +#define SDHC_FEVT_DTOE_SHIFT 20 +#define SDHC_FEVT_DCE_MASK 0x200000u +#define SDHC_FEVT_DCE_SHIFT 21 +#define SDHC_FEVT_DEBE_MASK 0x400000u +#define SDHC_FEVT_DEBE_SHIFT 22 +#define SDHC_FEVT_AC12E_MASK 0x1000000u +#define SDHC_FEVT_AC12E_SHIFT 24 +#define SDHC_FEVT_DMAE_MASK 0x10000000u +#define SDHC_FEVT_DMAE_SHIFT 28 +#define SDHC_FEVT_CINT_MASK 0x80000000u +#define SDHC_FEVT_CINT_SHIFT 31 +/* ADMAES Bit Fields */ +#define SDHC_ADMAES_ADMAES_MASK 0x3u +#define SDHC_ADMAES_ADMAES_SHIFT 0 +#define SDHC_ADMAES_ADMAES(x) (((uint32_t)(((uint32_t)(x))<<SDHC_ADMAES_ADMAES_SHIFT))&SDHC_ADMAES_ADMAES_MASK) +#define SDHC_ADMAES_ADMALME_MASK 0x4u +#define SDHC_ADMAES_ADMALME_SHIFT 2 +#define SDHC_ADMAES_ADMADCE_MASK 0x8u +#define SDHC_ADMAES_ADMADCE_SHIFT 3 +/* ADSADDR Bit Fields */ +#define SDHC_ADSADDR_ADSADDR_MASK 0xFFFFFFFCu +#define SDHC_ADSADDR_ADSADDR_SHIFT 2 +#define SDHC_ADSADDR_ADSADDR(x) (((uint32_t)(((uint32_t)(x))<<SDHC_ADSADDR_ADSADDR_SHIFT))&SDHC_ADSADDR_ADSADDR_MASK) +/* VENDOR Bit Fields */ +#define SDHC_VENDOR_EXTDMAEN_MASK 0x1u +#define SDHC_VENDOR_EXTDMAEN_SHIFT 0 +#define SDHC_VENDOR_EXBLKNU_MASK 0x2u +#define SDHC_VENDOR_EXBLKNU_SHIFT 1 +#define SDHC_VENDOR_INTSTVAL_MASK 0xFF0000u +#define SDHC_VENDOR_INTSTVAL_SHIFT 16 +#define SDHC_VENDOR_INTSTVAL(x) (((uint32_t)(((uint32_t)(x))<<SDHC_VENDOR_INTSTVAL_SHIFT))&SDHC_VENDOR_INTSTVAL_MASK) +/* MMCBOOT Bit Fields */ +#define SDHC_MMCBOOT_DTOCVACK_MASK 0xFu +#define SDHC_MMCBOOT_DTOCVACK_SHIFT 0 +#define SDHC_MMCBOOT_DTOCVACK(x) (((uint32_t)(((uint32_t)(x))<<SDHC_MMCBOOT_DTOCVACK_SHIFT))&SDHC_MMCBOOT_DTOCVACK_MASK) +#define SDHC_MMCBOOT_BOOTACK_MASK 0x10u +#define SDHC_MMCBOOT_BOOTACK_SHIFT 4 +#define SDHC_MMCBOOT_BOOTMODE_MASK 0x20u +#define SDHC_MMCBOOT_BOOTMODE_SHIFT 5 +#define SDHC_MMCBOOT_BOOTEN_MASK 0x40u +#define SDHC_MMCBOOT_BOOTEN_SHIFT 6 +#define SDHC_MMCBOOT_AUTOSABGEN_MASK 0x80u +#define SDHC_MMCBOOT_AUTOSABGEN_SHIFT 7 +#define SDHC_MMCBOOT_BOOTBLKCNT_MASK 0xFFFF0000u +#define SDHC_MMCBOOT_BOOTBLKCNT_SHIFT 16 +#define SDHC_MMCBOOT_BOOTBLKCNT(x) (((uint32_t)(((uint32_t)(x))<<SDHC_MMCBOOT_BOOTBLKCNT_SHIFT))&SDHC_MMCBOOT_BOOTBLKCNT_MASK) +/* HOSTVER Bit Fields */ +#define SDHC_HOSTVER_SVN_MASK 0xFFu +#define SDHC_HOSTVER_SVN_SHIFT 0 +#define SDHC_HOSTVER_SVN(x) (((uint32_t)(((uint32_t)(x))<<SDHC_HOSTVER_SVN_SHIFT))&SDHC_HOSTVER_SVN_MASK) +#define SDHC_HOSTVER_VVN_MASK 0xFF00u +#define SDHC_HOSTVER_VVN_SHIFT 8 +#define SDHC_HOSTVER_VVN(x) (((uint32_t)(((uint32_t)(x))<<SDHC_HOSTVER_VVN_SHIFT))&SDHC_HOSTVER_VVN_MASK) + +/*! + * @} + */ /* end of group SDHC_Register_Masks */ + + +/* SDHC - Peripheral instance base addresses */ +/** Peripheral SDHC base address */ +#define SDHC_BASE (0x400B1000u) +/** Peripheral SDHC base pointer */ +#define SDHC ((SDHC_Type *)SDHC_BASE) +#define SDHC_BASE_PTR (SDHC) +/** Array initializer of SDHC peripheral base pointers */ +#define SDHC_BASES { SDHC } + +/* ---------------------------------------------------------------------------- + -- SDHC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SDHC_Register_Accessor_Macros SDHC - Register accessor macros + * @{ + */ + + +/* SDHC - Register instance definitions */ +/* SDHC */ +#define SDHC_DSADDR SDHC_DSADDR_REG(SDHC) +#define SDHC_BLKATTR SDHC_BLKATTR_REG(SDHC) +#define SDHC_CMDARG SDHC_CMDARG_REG(SDHC) +#define SDHC_XFERTYP SDHC_XFERTYP_REG(SDHC) +#define SDHC_CMDRSP0 SDHC_CMDRSP_REG(SDHC,0) +#define SDHC_CMDRSP1 SDHC_CMDRSP_REG(SDHC,1) +#define SDHC_CMDRSP2 SDHC_CMDRSP_REG(SDHC,2) +#define SDHC_CMDRSP3 SDHC_CMDRSP_REG(SDHC,3) +#define SDHC_DATPORT SDHC_DATPORT_REG(SDHC) +#define SDHC_PRSSTAT SDHC_PRSSTAT_REG(SDHC) +#define SDHC_PROCTL SDHC_PROCTL_REG(SDHC) +#define SDHC_SYSCTL SDHC_SYSCTL_REG(SDHC) +#define SDHC_IRQSTAT SDHC_IRQSTAT_REG(SDHC) +#define SDHC_IRQSTATEN SDHC_IRQSTATEN_REG(SDHC) +#define SDHC_IRQSIGEN SDHC_IRQSIGEN_REG(SDHC) +#define SDHC_AC12ERR SDHC_AC12ERR_REG(SDHC) +#define SDHC_HTCAPBLT SDHC_HTCAPBLT_REG(SDHC) +#define SDHC_WML SDHC_WML_REG(SDHC) +#define SDHC_FEVT SDHC_FEVT_REG(SDHC) +#define SDHC_ADMAES SDHC_ADMAES_REG(SDHC) +#define SDHC_ADSADDR SDHC_ADSADDR_REG(SDHC) +#define SDHC_VENDOR SDHC_VENDOR_REG(SDHC) +#define SDHC_MMCBOOT SDHC_MMCBOOT_REG(SDHC) +#define SDHC_HOSTVER SDHC_HOSTVER_REG(SDHC) + +/* SDHC - Register array accessors */ +#define SDHC_CMDRSP(index) SDHC_CMDRSP_REG(SDHC,index) + +/*! + * @} + */ /* end of group SDHC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group SDHC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- SIM Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SIM_Peripheral_Access_Layer SIM Peripheral Access Layer + * @{ + */ + +/** SIM - Register Layout Typedef */ +typedef struct { + __IO uint32_t SOPT1; /**< System Options Register 1, offset: 0x0 */ + __IO uint32_t SOPT1CFG; /**< SOPT1 Configuration Register, offset: 0x4 */ + uint8_t RESERVED_0[4092]; + __IO uint32_t SOPT2; /**< System Options Register 2, offset: 0x1004 */ + uint8_t RESERVED_1[4]; + __IO uint32_t SOPT4; /**< System Options Register 4, offset: 0x100C */ + __IO uint32_t SOPT5; /**< System Options Register 5, offset: 0x1010 */ + uint8_t RESERVED_2[4]; + __IO uint32_t SOPT7; /**< System Options Register 7, offset: 0x1018 */ + uint8_t RESERVED_3[8]; + __I uint32_t SDID; /**< System Device Identification Register, offset: 0x1024 */ + __IO uint32_t SCGC1; /**< System Clock Gating Control Register 1, offset: 0x1028 */ + __IO uint32_t SCGC2; /**< System Clock Gating Control Register 2, offset: 0x102C */ + __IO uint32_t SCGC3; /**< System Clock Gating Control Register 3, offset: 0x1030 */ + __IO uint32_t SCGC4; /**< System Clock Gating Control Register 4, offset: 0x1034 */ + __IO uint32_t SCGC5; /**< System Clock Gating Control Register 5, offset: 0x1038 */ + __IO uint32_t SCGC6; /**< System Clock Gating Control Register 6, offset: 0x103C */ + __IO uint32_t SCGC7; /**< System Clock Gating Control Register 7, offset: 0x1040 */ + __IO uint32_t CLKDIV1; /**< System Clock Divider Register 1, offset: 0x1044 */ + __IO uint32_t CLKDIV2; /**< System Clock Divider Register 2, offset: 0x1048 */ + __IO uint32_t FCFG1; /**< Flash Configuration Register 1, offset: 0x104C */ + __I uint32_t FCFG2; /**< Flash Configuration Register 2, offset: 0x1050 */ + __I uint32_t UIDH; /**< Unique Identification Register High, offset: 0x1054 */ + __I uint32_t UIDMH; /**< Unique Identification Register Mid-High, offset: 0x1058 */ + __I uint32_t UIDML; /**< Unique Identification Register Mid Low, offset: 0x105C */ + __I uint32_t UIDL; /**< Unique Identification Register Low, offset: 0x1060 */ +} SIM_Type, *SIM_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- SIM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SIM_Register_Accessor_Macros SIM - Register accessor macros + * @{ + */ + + +/* SIM - Register accessors */ +#define SIM_SOPT1_REG(base) ((base)->SOPT1) +#define SIM_SOPT1CFG_REG(base) ((base)->SOPT1CFG) +#define SIM_SOPT2_REG(base) ((base)->SOPT2) +#define SIM_SOPT4_REG(base) ((base)->SOPT4) +#define SIM_SOPT5_REG(base) ((base)->SOPT5) +#define SIM_SOPT7_REG(base) ((base)->SOPT7) +#define SIM_SDID_REG(base) ((base)->SDID) +#define SIM_SCGC1_REG(base) ((base)->SCGC1) +#define SIM_SCGC2_REG(base) ((base)->SCGC2) +#define SIM_SCGC3_REG(base) ((base)->SCGC3) +#define SIM_SCGC4_REG(base) ((base)->SCGC4) +#define SIM_SCGC5_REG(base) ((base)->SCGC5) +#define SIM_SCGC6_REG(base) ((base)->SCGC6) +#define SIM_SCGC7_REG(base) ((base)->SCGC7) +#define SIM_CLKDIV1_REG(base) ((base)->CLKDIV1) +#define SIM_CLKDIV2_REG(base) ((base)->CLKDIV2) +#define SIM_FCFG1_REG(base) ((base)->FCFG1) +#define SIM_FCFG2_REG(base) ((base)->FCFG2) +#define SIM_UIDH_REG(base) ((base)->UIDH) +#define SIM_UIDMH_REG(base) ((base)->UIDMH) +#define SIM_UIDML_REG(base) ((base)->UIDML) +#define SIM_UIDL_REG(base) ((base)->UIDL) + +/*! + * @} + */ /* end of group SIM_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- SIM Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SIM_Register_Masks SIM Register Masks + * @{ + */ + +/* SOPT1 Bit Fields */ +#define SIM_SOPT1_RAMSIZE_MASK 0xF000u +#define SIM_SOPT1_RAMSIZE_SHIFT 12 +#define SIM_SOPT1_RAMSIZE(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT1_RAMSIZE_SHIFT))&SIM_SOPT1_RAMSIZE_MASK) +#define SIM_SOPT1_OSC32KSEL_MASK 0xC0000u +#define SIM_SOPT1_OSC32KSEL_SHIFT 18 +#define SIM_SOPT1_OSC32KSEL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT1_OSC32KSEL_SHIFT))&SIM_SOPT1_OSC32KSEL_MASK) +#define SIM_SOPT1_USBVSTBY_MASK 0x20000000u +#define SIM_SOPT1_USBVSTBY_SHIFT 29 +#define SIM_SOPT1_USBSSTBY_MASK 0x40000000u +#define SIM_SOPT1_USBSSTBY_SHIFT 30 +#define SIM_SOPT1_USBREGEN_MASK 0x80000000u +#define SIM_SOPT1_USBREGEN_SHIFT 31 +/* SOPT1CFG Bit Fields */ +#define SIM_SOPT1CFG_URWE_MASK 0x1000000u +#define SIM_SOPT1CFG_URWE_SHIFT 24 +#define SIM_SOPT1CFG_UVSWE_MASK 0x2000000u +#define SIM_SOPT1CFG_UVSWE_SHIFT 25 +#define SIM_SOPT1CFG_USSWE_MASK 0x4000000u +#define SIM_SOPT1CFG_USSWE_SHIFT 26 +/* SOPT2 Bit Fields */ +#define SIM_SOPT2_RTCCLKOUTSEL_MASK 0x10u +#define SIM_SOPT2_RTCCLKOUTSEL_SHIFT 4 +#define SIM_SOPT2_CLKOUTSEL_MASK 0xE0u +#define SIM_SOPT2_CLKOUTSEL_SHIFT 5 +#define SIM_SOPT2_CLKOUTSEL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_CLKOUTSEL_SHIFT))&SIM_SOPT2_CLKOUTSEL_MASK) +#define SIM_SOPT2_FBSL_MASK 0x300u +#define SIM_SOPT2_FBSL_SHIFT 8 +#define SIM_SOPT2_FBSL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_FBSL_SHIFT))&SIM_SOPT2_FBSL_MASK) +#define SIM_SOPT2_PTD7PAD_MASK 0x800u +#define SIM_SOPT2_PTD7PAD_SHIFT 11 +#define SIM_SOPT2_TRACECLKSEL_MASK 0x1000u +#define SIM_SOPT2_TRACECLKSEL_SHIFT 12 +#define SIM_SOPT2_PLLFLLSEL_MASK 0x30000u +#define SIM_SOPT2_PLLFLLSEL_SHIFT 16 +#define SIM_SOPT2_PLLFLLSEL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_PLLFLLSEL_SHIFT))&SIM_SOPT2_PLLFLLSEL_MASK) +#define SIM_SOPT2_USBSRC_MASK 0x40000u +#define SIM_SOPT2_USBSRC_SHIFT 18 +#define SIM_SOPT2_RMIISRC_MASK 0x80000u +#define SIM_SOPT2_RMIISRC_SHIFT 19 +#define SIM_SOPT2_TIMESRC_MASK 0x300000u +#define SIM_SOPT2_TIMESRC_SHIFT 20 +#define SIM_SOPT2_TIMESRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_TIMESRC_SHIFT))&SIM_SOPT2_TIMESRC_MASK) +#define SIM_SOPT2_SDHCSRC_MASK 0x30000000u +#define SIM_SOPT2_SDHCSRC_SHIFT 28 +#define SIM_SOPT2_SDHCSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_SDHCSRC_SHIFT))&SIM_SOPT2_SDHCSRC_MASK) +/* SOPT4 Bit Fields */ +#define SIM_SOPT4_FTM0FLT0_MASK 0x1u +#define SIM_SOPT4_FTM0FLT0_SHIFT 0 +#define SIM_SOPT4_FTM0FLT1_MASK 0x2u +#define SIM_SOPT4_FTM0FLT1_SHIFT 1 +#define SIM_SOPT4_FTM0FLT2_MASK 0x4u +#define SIM_SOPT4_FTM0FLT2_SHIFT 2 +#define SIM_SOPT4_FTM1FLT0_MASK 0x10u +#define SIM_SOPT4_FTM1FLT0_SHIFT 4 +#define SIM_SOPT4_FTM2FLT0_MASK 0x100u +#define SIM_SOPT4_FTM2FLT0_SHIFT 8 +#define SIM_SOPT4_FTM3FLT0_MASK 0x1000u +#define SIM_SOPT4_FTM3FLT0_SHIFT 12 +#define SIM_SOPT4_FTM1CH0SRC_MASK 0xC0000u +#define SIM_SOPT4_FTM1CH0SRC_SHIFT 18 +#define SIM_SOPT4_FTM1CH0SRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT4_FTM1CH0SRC_SHIFT))&SIM_SOPT4_FTM1CH0SRC_MASK) +#define SIM_SOPT4_FTM2CH0SRC_MASK 0x300000u +#define SIM_SOPT4_FTM2CH0SRC_SHIFT 20 +#define SIM_SOPT4_FTM2CH0SRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT4_FTM2CH0SRC_SHIFT))&SIM_SOPT4_FTM2CH0SRC_MASK) +#define SIM_SOPT4_FTM0CLKSEL_MASK 0x1000000u +#define SIM_SOPT4_FTM0CLKSEL_SHIFT 24 +#define SIM_SOPT4_FTM1CLKSEL_MASK 0x2000000u +#define SIM_SOPT4_FTM1CLKSEL_SHIFT 25 +#define SIM_SOPT4_FTM2CLKSEL_MASK 0x4000000u +#define SIM_SOPT4_FTM2CLKSEL_SHIFT 26 +#define SIM_SOPT4_FTM3CLKSEL_MASK 0x8000000u +#define SIM_SOPT4_FTM3CLKSEL_SHIFT 27 +#define SIM_SOPT4_FTM0TRG0SRC_MASK 0x10000000u +#define SIM_SOPT4_FTM0TRG0SRC_SHIFT 28 +#define SIM_SOPT4_FTM0TRG1SRC_MASK 0x20000000u +#define SIM_SOPT4_FTM0TRG1SRC_SHIFT 29 +#define SIM_SOPT4_FTM3TRG0SRC_MASK 0x40000000u +#define SIM_SOPT4_FTM3TRG0SRC_SHIFT 30 +#define SIM_SOPT4_FTM3TRG1SRC_MASK 0x80000000u +#define SIM_SOPT4_FTM3TRG1SRC_SHIFT 31 +/* SOPT5 Bit Fields */ +#define SIM_SOPT5_UART0TXSRC_MASK 0x3u +#define SIM_SOPT5_UART0TXSRC_SHIFT 0 +#define SIM_SOPT5_UART0TXSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_UART0TXSRC_SHIFT))&SIM_SOPT5_UART0TXSRC_MASK) +#define SIM_SOPT5_UART0RXSRC_MASK 0xCu +#define SIM_SOPT5_UART0RXSRC_SHIFT 2 +#define SIM_SOPT5_UART0RXSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_UART0RXSRC_SHIFT))&SIM_SOPT5_UART0RXSRC_MASK) +#define SIM_SOPT5_UART1TXSRC_MASK 0x30u +#define SIM_SOPT5_UART1TXSRC_SHIFT 4 +#define SIM_SOPT5_UART1TXSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_UART1TXSRC_SHIFT))&SIM_SOPT5_UART1TXSRC_MASK) +#define SIM_SOPT5_UART1RXSRC_MASK 0xC0u +#define SIM_SOPT5_UART1RXSRC_SHIFT 6 +#define SIM_SOPT5_UART1RXSRC(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_UART1RXSRC_SHIFT))&SIM_SOPT5_UART1RXSRC_MASK) +/* SOPT7 Bit Fields */ +#define SIM_SOPT7_ADC0TRGSEL_MASK 0xFu +#define SIM_SOPT7_ADC0TRGSEL_SHIFT 0 +#define SIM_SOPT7_ADC0TRGSEL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT7_ADC0TRGSEL_SHIFT))&SIM_SOPT7_ADC0TRGSEL_MASK) +#define SIM_SOPT7_ADC0PRETRGSEL_MASK 0x10u +#define SIM_SOPT7_ADC0PRETRGSEL_SHIFT 4 +#define SIM_SOPT7_ADC0ALTTRGEN_MASK 0x80u +#define SIM_SOPT7_ADC0ALTTRGEN_SHIFT 7 +#define SIM_SOPT7_ADC1TRGSEL_MASK 0xF00u +#define SIM_SOPT7_ADC1TRGSEL_SHIFT 8 +#define SIM_SOPT7_ADC1TRGSEL(x) (((uint32_t)(((uint32_t)(x))<<SIM_SOPT7_ADC1TRGSEL_SHIFT))&SIM_SOPT7_ADC1TRGSEL_MASK) +#define SIM_SOPT7_ADC1PRETRGSEL_MASK 0x1000u +#define SIM_SOPT7_ADC1PRETRGSEL_SHIFT 12 +#define SIM_SOPT7_ADC1ALTTRGEN_MASK 0x8000u +#define SIM_SOPT7_ADC1ALTTRGEN_SHIFT 15 +/* SDID Bit Fields */ +#define SIM_SDID_PINID_MASK 0xFu +#define SIM_SDID_PINID_SHIFT 0 +#define SIM_SDID_PINID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_PINID_SHIFT))&SIM_SDID_PINID_MASK) +#define SIM_SDID_FAMID_MASK 0x70u +#define SIM_SDID_FAMID_SHIFT 4 +#define SIM_SDID_FAMID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_FAMID_SHIFT))&SIM_SDID_FAMID_MASK) +#define SIM_SDID_DIEID_MASK 0xF80u +#define SIM_SDID_DIEID_SHIFT 7 +#define SIM_SDID_DIEID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_DIEID_SHIFT))&SIM_SDID_DIEID_MASK) +#define SIM_SDID_REVID_MASK 0xF000u +#define SIM_SDID_REVID_SHIFT 12 +#define SIM_SDID_REVID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_REVID_SHIFT))&SIM_SDID_REVID_MASK) +#define SIM_SDID_SERIESID_MASK 0xF00000u +#define SIM_SDID_SERIESID_SHIFT 20 +#define SIM_SDID_SERIESID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_SERIESID_SHIFT))&SIM_SDID_SERIESID_MASK) +#define SIM_SDID_SUBFAMID_MASK 0xF000000u +#define SIM_SDID_SUBFAMID_SHIFT 24 +#define SIM_SDID_SUBFAMID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_SUBFAMID_SHIFT))&SIM_SDID_SUBFAMID_MASK) +#define SIM_SDID_FAMILYID_MASK 0xF0000000u +#define SIM_SDID_FAMILYID_SHIFT 28 +#define SIM_SDID_FAMILYID(x) (((uint32_t)(((uint32_t)(x))<<SIM_SDID_FAMILYID_SHIFT))&SIM_SDID_FAMILYID_MASK) +/* SCGC1 Bit Fields */ +#define SIM_SCGC1_I2C2_MASK 0x40u +#define SIM_SCGC1_I2C2_SHIFT 6 +#define SIM_SCGC1_UART4_MASK 0x400u +#define SIM_SCGC1_UART4_SHIFT 10 +#define SIM_SCGC1_UART5_MASK 0x800u +#define SIM_SCGC1_UART5_SHIFT 11 +/* SCGC2 Bit Fields */ +#define SIM_SCGC2_ENET_MASK 0x1u +#define SIM_SCGC2_ENET_SHIFT 0 +#define SIM_SCGC2_DAC0_MASK 0x1000u +#define SIM_SCGC2_DAC0_SHIFT 12 +#define SIM_SCGC2_DAC1_MASK 0x2000u +#define SIM_SCGC2_DAC1_SHIFT 13 +/* SCGC3 Bit Fields */ +#define SIM_SCGC3_RNGA_MASK 0x1u +#define SIM_SCGC3_RNGA_SHIFT 0 +#define SIM_SCGC3_SPI2_MASK 0x1000u +#define SIM_SCGC3_SPI2_SHIFT 12 +#define SIM_SCGC3_SDHC_MASK 0x20000u +#define SIM_SCGC3_SDHC_SHIFT 17 +#define SIM_SCGC3_FTM2_MASK 0x1000000u +#define SIM_SCGC3_FTM2_SHIFT 24 +#define SIM_SCGC3_FTM3_MASK 0x2000000u +#define SIM_SCGC3_FTM3_SHIFT 25 +#define SIM_SCGC3_ADC1_MASK 0x8000000u +#define SIM_SCGC3_ADC1_SHIFT 27 +/* SCGC4 Bit Fields */ +#define SIM_SCGC4_EWM_MASK 0x2u +#define SIM_SCGC4_EWM_SHIFT 1 +#define SIM_SCGC4_CMT_MASK 0x4u +#define SIM_SCGC4_CMT_SHIFT 2 +#define SIM_SCGC4_I2C0_MASK 0x40u +#define SIM_SCGC4_I2C0_SHIFT 6 +#define SIM_SCGC4_I2C1_MASK 0x80u +#define SIM_SCGC4_I2C1_SHIFT 7 +#define SIM_SCGC4_UART0_MASK 0x400u +#define SIM_SCGC4_UART0_SHIFT 10 +#define SIM_SCGC4_UART1_MASK 0x800u +#define SIM_SCGC4_UART1_SHIFT 11 +#define SIM_SCGC4_UART2_MASK 0x1000u +#define SIM_SCGC4_UART2_SHIFT 12 +#define SIM_SCGC4_UART3_MASK 0x2000u +#define SIM_SCGC4_UART3_SHIFT 13 +#define SIM_SCGC4_USBOTG_MASK 0x40000u +#define SIM_SCGC4_USBOTG_SHIFT 18 +#define SIM_SCGC4_CMP_MASK 0x80000u +#define SIM_SCGC4_CMP_SHIFT 19 +#define SIM_SCGC4_VREF_MASK 0x100000u +#define SIM_SCGC4_VREF_SHIFT 20 +/* SCGC5 Bit Fields */ +#define SIM_SCGC5_LPTMR_MASK 0x1u +#define SIM_SCGC5_LPTMR_SHIFT 0 +#define SIM_SCGC5_PORTA_MASK 0x200u +#define SIM_SCGC5_PORTA_SHIFT 9 +#define SIM_SCGC5_PORTB_MASK 0x400u +#define SIM_SCGC5_PORTB_SHIFT 10 +#define SIM_SCGC5_PORTC_MASK 0x800u +#define SIM_SCGC5_PORTC_SHIFT 11 +#define SIM_SCGC5_PORTD_MASK 0x1000u +#define SIM_SCGC5_PORTD_SHIFT 12 +#define SIM_SCGC5_PORTE_MASK 0x2000u +#define SIM_SCGC5_PORTE_SHIFT 13 +/* SCGC6 Bit Fields */ +#define SIM_SCGC6_FTF_MASK 0x1u +#define SIM_SCGC6_FTF_SHIFT 0 +#define SIM_SCGC6_DMAMUX_MASK 0x2u +#define SIM_SCGC6_DMAMUX_SHIFT 1 +#define SIM_SCGC6_FLEXCAN0_MASK 0x10u +#define SIM_SCGC6_FLEXCAN0_SHIFT 4 +#define SIM_SCGC6_RNGA_MASK 0x200u +#define SIM_SCGC6_RNGA_SHIFT 9 +#define SIM_SCGC6_SPI0_MASK 0x1000u +#define SIM_SCGC6_SPI0_SHIFT 12 +#define SIM_SCGC6_SPI1_MASK 0x2000u +#define SIM_SCGC6_SPI1_SHIFT 13 +#define SIM_SCGC6_I2S_MASK 0x8000u +#define SIM_SCGC6_I2S_SHIFT 15 +#define SIM_SCGC6_CRC_MASK 0x40000u +#define SIM_SCGC6_CRC_SHIFT 18 +#define SIM_SCGC6_USBDCD_MASK 0x200000u +#define SIM_SCGC6_USBDCD_SHIFT 21 +#define SIM_SCGC6_PDB_MASK 0x400000u +#define SIM_SCGC6_PDB_SHIFT 22 +#define SIM_SCGC6_PIT_MASK 0x800000u +#define SIM_SCGC6_PIT_SHIFT 23 +#define SIM_SCGC6_FTM0_MASK 0x1000000u +#define SIM_SCGC6_FTM0_SHIFT 24 +#define SIM_SCGC6_FTM1_MASK 0x2000000u +#define SIM_SCGC6_FTM1_SHIFT 25 +#define SIM_SCGC6_FTM2_MASK 0x4000000u +#define SIM_SCGC6_FTM2_SHIFT 26 +#define SIM_SCGC6_ADC0_MASK 0x8000000u +#define SIM_SCGC6_ADC0_SHIFT 27 +#define SIM_SCGC6_RTC_MASK 0x20000000u +#define SIM_SCGC6_RTC_SHIFT 29 +#define SIM_SCGC6_DAC0_MASK 0x80000000u +#define SIM_SCGC6_DAC0_SHIFT 31 +/* SCGC7 Bit Fields */ +#define SIM_SCGC7_FLEXBUS_MASK 0x1u +#define SIM_SCGC7_FLEXBUS_SHIFT 0 +#define SIM_SCGC7_DMA_MASK 0x2u +#define SIM_SCGC7_DMA_SHIFT 1 +#define SIM_SCGC7_MPU_MASK 0x4u +#define SIM_SCGC7_MPU_SHIFT 2 +/* CLKDIV1 Bit Fields */ +#define SIM_CLKDIV1_OUTDIV4_MASK 0xF0000u +#define SIM_CLKDIV1_OUTDIV4_SHIFT 16 +#define SIM_CLKDIV1_OUTDIV4(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV4_SHIFT))&SIM_CLKDIV1_OUTDIV4_MASK) +#define SIM_CLKDIV1_OUTDIV3_MASK 0xF00000u +#define SIM_CLKDIV1_OUTDIV3_SHIFT 20 +#define SIM_CLKDIV1_OUTDIV3(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV3_SHIFT))&SIM_CLKDIV1_OUTDIV3_MASK) +#define SIM_CLKDIV1_OUTDIV2_MASK 0xF000000u +#define SIM_CLKDIV1_OUTDIV2_SHIFT 24 +#define SIM_CLKDIV1_OUTDIV2(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV2_SHIFT))&SIM_CLKDIV1_OUTDIV2_MASK) +#define SIM_CLKDIV1_OUTDIV1_MASK 0xF0000000u +#define SIM_CLKDIV1_OUTDIV1_SHIFT 28 +#define SIM_CLKDIV1_OUTDIV1(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV1_SHIFT))&SIM_CLKDIV1_OUTDIV1_MASK) +/* CLKDIV2 Bit Fields */ +#define SIM_CLKDIV2_USBFRAC_MASK 0x1u +#define SIM_CLKDIV2_USBFRAC_SHIFT 0 +#define SIM_CLKDIV2_USBDIV_MASK 0xEu +#define SIM_CLKDIV2_USBDIV_SHIFT 1 +#define SIM_CLKDIV2_USBDIV(x) (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV2_USBDIV_SHIFT))&SIM_CLKDIV2_USBDIV_MASK) +/* FCFG1 Bit Fields */ +#define SIM_FCFG1_FLASHDIS_MASK 0x1u +#define SIM_FCFG1_FLASHDIS_SHIFT 0 +#define SIM_FCFG1_FLASHDOZE_MASK 0x2u +#define SIM_FCFG1_FLASHDOZE_SHIFT 1 +#define SIM_FCFG1_DEPART_MASK 0xF00u +#define SIM_FCFG1_DEPART_SHIFT 8 +#define SIM_FCFG1_DEPART(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG1_DEPART_SHIFT))&SIM_FCFG1_DEPART_MASK) +#define SIM_FCFG1_EESIZE_MASK 0xF0000u +#define SIM_FCFG1_EESIZE_SHIFT 16 +#define SIM_FCFG1_EESIZE(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG1_EESIZE_SHIFT))&SIM_FCFG1_EESIZE_MASK) +#define SIM_FCFG1_PFSIZE_MASK 0xF000000u +#define SIM_FCFG1_PFSIZE_SHIFT 24 +#define SIM_FCFG1_PFSIZE(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG1_PFSIZE_SHIFT))&SIM_FCFG1_PFSIZE_MASK) +#define SIM_FCFG1_NVMSIZE_MASK 0xF0000000u +#define SIM_FCFG1_NVMSIZE_SHIFT 28 +#define SIM_FCFG1_NVMSIZE(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG1_NVMSIZE_SHIFT))&SIM_FCFG1_NVMSIZE_MASK) +/* FCFG2 Bit Fields */ +#define SIM_FCFG2_MAXADDR1_MASK 0x7F0000u +#define SIM_FCFG2_MAXADDR1_SHIFT 16 +#define SIM_FCFG2_MAXADDR1(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG2_MAXADDR1_SHIFT))&SIM_FCFG2_MAXADDR1_MASK) +#define SIM_FCFG2_PFLSH_MASK 0x800000u +#define SIM_FCFG2_PFLSH_SHIFT 23 +#define SIM_FCFG2_MAXADDR0_MASK 0x7F000000u +#define SIM_FCFG2_MAXADDR0_SHIFT 24 +#define SIM_FCFG2_MAXADDR0(x) (((uint32_t)(((uint32_t)(x))<<SIM_FCFG2_MAXADDR0_SHIFT))&SIM_FCFG2_MAXADDR0_MASK) +/* UIDH Bit Fields */ +#define SIM_UIDH_UID_MASK 0xFFFFFFFFu +#define SIM_UIDH_UID_SHIFT 0 +#define SIM_UIDH_UID(x) (((uint32_t)(((uint32_t)(x))<<SIM_UIDH_UID_SHIFT))&SIM_UIDH_UID_MASK) +/* UIDMH Bit Fields */ +#define SIM_UIDMH_UID_MASK 0xFFFFFFFFu +#define SIM_UIDMH_UID_SHIFT 0 +#define SIM_UIDMH_UID(x) (((uint32_t)(((uint32_t)(x))<<SIM_UIDMH_UID_SHIFT))&SIM_UIDMH_UID_MASK) +/* UIDML Bit Fields */ +#define SIM_UIDML_UID_MASK 0xFFFFFFFFu +#define SIM_UIDML_UID_SHIFT 0 +#define SIM_UIDML_UID(x) (((uint32_t)(((uint32_t)(x))<<SIM_UIDML_UID_SHIFT))&SIM_UIDML_UID_MASK) +/* UIDL Bit Fields */ +#define SIM_UIDL_UID_MASK 0xFFFFFFFFu +#define SIM_UIDL_UID_SHIFT 0 +#define SIM_UIDL_UID(x) (((uint32_t)(((uint32_t)(x))<<SIM_UIDL_UID_SHIFT))&SIM_UIDL_UID_MASK) + +/*! + * @} + */ /* end of group SIM_Register_Masks */ + + +/* SIM - Peripheral instance base addresses */ +/** Peripheral SIM base address */ +#define SIM_BASE (0x40047000u) +/** Peripheral SIM base pointer */ +#define SIM ((SIM_Type *)SIM_BASE) +#define SIM_BASE_PTR (SIM) +/** Array initializer of SIM peripheral base pointers */ +#define SIM_BASES { SIM } + +/* ---------------------------------------------------------------------------- + -- SIM - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SIM_Register_Accessor_Macros SIM - Register accessor macros + * @{ + */ + + +/* SIM - Register instance definitions */ +/* SIM */ +#define SIM_SOPT1 SIM_SOPT1_REG(SIM) +#define SIM_SOPT1CFG SIM_SOPT1CFG_REG(SIM) +#define SIM_SOPT2 SIM_SOPT2_REG(SIM) +#define SIM_SOPT4 SIM_SOPT4_REG(SIM) +#define SIM_SOPT5 SIM_SOPT5_REG(SIM) +#define SIM_SOPT7 SIM_SOPT7_REG(SIM) +#define SIM_SDID SIM_SDID_REG(SIM) +#define SIM_SCGC1 SIM_SCGC1_REG(SIM) +#define SIM_SCGC2 SIM_SCGC2_REG(SIM) +#define SIM_SCGC3 SIM_SCGC3_REG(SIM) +#define SIM_SCGC4 SIM_SCGC4_REG(SIM) +#define SIM_SCGC5 SIM_SCGC5_REG(SIM) +#define SIM_SCGC6 SIM_SCGC6_REG(SIM) +#define SIM_SCGC7 SIM_SCGC7_REG(SIM) +#define SIM_CLKDIV1 SIM_CLKDIV1_REG(SIM) +#define SIM_CLKDIV2 SIM_CLKDIV2_REG(SIM) +#define SIM_FCFG1 SIM_FCFG1_REG(SIM) +#define SIM_FCFG2 SIM_FCFG2_REG(SIM) +#define SIM_UIDH SIM_UIDH_REG(SIM) +#define SIM_UIDMH SIM_UIDMH_REG(SIM) +#define SIM_UIDML SIM_UIDML_REG(SIM) +#define SIM_UIDL SIM_UIDL_REG(SIM) + +/*! + * @} + */ /* end of group SIM_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group SIM_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- SMC Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SMC_Peripheral_Access_Layer SMC Peripheral Access Layer + * @{ + */ + +/** SMC - Register Layout Typedef */ +typedef struct { + __IO uint8_t PMPROT; /**< Power Mode Protection register, offset: 0x0 */ + __IO uint8_t PMCTRL; /**< Power Mode Control register, offset: 0x1 */ + __IO uint8_t VLLSCTRL; /**< VLLS Control register, offset: 0x2 */ + __I uint8_t PMSTAT; /**< Power Mode Status register, offset: 0x3 */ +} SMC_Type, *SMC_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- SMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SMC_Register_Accessor_Macros SMC - Register accessor macros + * @{ + */ + + +/* SMC - Register accessors */ +#define SMC_PMPROT_REG(base) ((base)->PMPROT) +#define SMC_PMCTRL_REG(base) ((base)->PMCTRL) +#define SMC_VLLSCTRL_REG(base) ((base)->VLLSCTRL) +#define SMC_PMSTAT_REG(base) ((base)->PMSTAT) + +/*! + * @} + */ /* end of group SMC_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- SMC Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SMC_Register_Masks SMC Register Masks + * @{ + */ + +/* PMPROT Bit Fields */ +#define SMC_PMPROT_AVLLS_MASK 0x2u +#define SMC_PMPROT_AVLLS_SHIFT 1 +#define SMC_PMPROT_ALLS_MASK 0x8u +#define SMC_PMPROT_ALLS_SHIFT 3 +#define SMC_PMPROT_AVLP_MASK 0x20u +#define SMC_PMPROT_AVLP_SHIFT 5 +/* PMCTRL Bit Fields */ +#define SMC_PMCTRL_STOPM_MASK 0x7u +#define SMC_PMCTRL_STOPM_SHIFT 0 +#define SMC_PMCTRL_STOPM(x) (((uint8_t)(((uint8_t)(x))<<SMC_PMCTRL_STOPM_SHIFT))&SMC_PMCTRL_STOPM_MASK) +#define SMC_PMCTRL_STOPA_MASK 0x8u +#define SMC_PMCTRL_STOPA_SHIFT 3 +#define SMC_PMCTRL_RUNM_MASK 0x60u +#define SMC_PMCTRL_RUNM_SHIFT 5 +#define SMC_PMCTRL_RUNM(x) (((uint8_t)(((uint8_t)(x))<<SMC_PMCTRL_RUNM_SHIFT))&SMC_PMCTRL_RUNM_MASK) +#define SMC_PMCTRL_LPWUI_MASK 0x80u +#define SMC_PMCTRL_LPWUI_SHIFT 7 +/* VLLSCTRL Bit Fields */ +#define SMC_VLLSCTRL_VLLSM_MASK 0x7u +#define SMC_VLLSCTRL_VLLSM_SHIFT 0 +#define SMC_VLLSCTRL_VLLSM(x) (((uint8_t)(((uint8_t)(x))<<SMC_VLLSCTRL_VLLSM_SHIFT))&SMC_VLLSCTRL_VLLSM_MASK) +#define SMC_VLLSCTRL_PORPO_MASK 0x20u +#define SMC_VLLSCTRL_PORPO_SHIFT 5 +/* PMSTAT Bit Fields */ +#define SMC_PMSTAT_PMSTAT_MASK 0x7Fu +#define SMC_PMSTAT_PMSTAT_SHIFT 0 +#define SMC_PMSTAT_PMSTAT(x) (((uint8_t)(((uint8_t)(x))<<SMC_PMSTAT_PMSTAT_SHIFT))&SMC_PMSTAT_PMSTAT_MASK) + +/*! + * @} + */ /* end of group SMC_Register_Masks */ + + +/* SMC - Peripheral instance base addresses */ +/** Peripheral SMC base address */ +#define SMC_BASE (0x4007E000u) +/** Peripheral SMC base pointer */ +#define SMC ((SMC_Type *)SMC_BASE) +#define SMC_BASE_PTR (SMC) +/** Array initializer of SMC peripheral base pointers */ +#define SMC_BASES { SMC } + +/* ---------------------------------------------------------------------------- + -- SMC - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SMC_Register_Accessor_Macros SMC - Register accessor macros + * @{ + */ + + +/* SMC - Register instance definitions */ +/* SMC */ +#define SMC_PMPROT SMC_PMPROT_REG(SMC) +#define SMC_PMCTRL SMC_PMCTRL_REG(SMC) +#define SMC_VLLSCTRL SMC_VLLSCTRL_REG(SMC) +#define SMC_PMSTAT SMC_PMSTAT_REG(SMC) + +/*! + * @} + */ /* end of group SMC_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group SMC_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- SPI Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SPI_Peripheral_Access_Layer SPI Peripheral Access Layer + * @{ + */ + +/** SPI - Register Layout Typedef */ +typedef struct { + __IO uint32_t MCR; /**< Module Configuration Register, offset: 0x0 */ + uint8_t RESERVED_0[4]; + __IO uint32_t TCR; /**< Transfer Count Register, offset: 0x8 */ + union { /* offset: 0xC */ + __IO uint32_t CTAR[2]; /**< Clock and Transfer Attributes Register (In Master Mode), array offset: 0xC, array step: 0x4 */ + __IO uint32_t CTAR_SLAVE[1]; /**< Clock and Transfer Attributes Register (In Slave Mode), array offset: 0xC, array step: 0x4 */ + }; + uint8_t RESERVED_1[24]; + __IO uint32_t SR; /**< Status Register, offset: 0x2C */ + __IO uint32_t RSER; /**< DMA/Interrupt Request Select and Enable Register, offset: 0x30 */ + union { /* offset: 0x34 */ + __IO uint32_t PUSHR; /**< PUSH TX FIFO Register In Master Mode, offset: 0x34 */ + __IO uint32_t PUSHR_SLAVE; /**< PUSH TX FIFO Register In Slave Mode, offset: 0x34 */ + }; + __I uint32_t POPR; /**< POP RX FIFO Register, offset: 0x38 */ + __I uint32_t TXFR0; /**< Transmit FIFO Registers, offset: 0x3C */ + __I uint32_t TXFR1; /**< Transmit FIFO Registers, offset: 0x40 */ + __I uint32_t TXFR2; /**< Transmit FIFO Registers, offset: 0x44 */ + __I uint32_t TXFR3; /**< Transmit FIFO Registers, offset: 0x48 */ + uint8_t RESERVED_2[48]; + __I uint32_t RXFR0; /**< Receive FIFO Registers, offset: 0x7C */ + __I uint32_t RXFR1; /**< Receive FIFO Registers, offset: 0x80 */ + __I uint32_t RXFR2; /**< Receive FIFO Registers, offset: 0x84 */ + __I uint32_t RXFR3; /**< Receive FIFO Registers, offset: 0x88 */ +} SPI_Type, *SPI_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- SPI - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SPI_Register_Accessor_Macros SPI - Register accessor macros + * @{ + */ + + +/* SPI - Register accessors */ +#define SPI_MCR_REG(base) ((base)->MCR) +#define SPI_TCR_REG(base) ((base)->TCR) +#define SPI_CTAR_REG(base,index2) ((base)->CTAR[index2]) +#define SPI_CTAR_SLAVE_REG(base,index2) ((base)->CTAR_SLAVE[index2]) +#define SPI_SR_REG(base) ((base)->SR) +#define SPI_RSER_REG(base) ((base)->RSER) +#define SPI_PUSHR_REG(base) ((base)->PUSHR) +#define SPI_PUSHR_SLAVE_REG(base) ((base)->PUSHR_SLAVE) +#define SPI_POPR_REG(base) ((base)->POPR) +#define SPI_TXFR0_REG(base) ((base)->TXFR0) +#define SPI_TXFR1_REG(base) ((base)->TXFR1) +#define SPI_TXFR2_REG(base) ((base)->TXFR2) +#define SPI_TXFR3_REG(base) ((base)->TXFR3) +#define SPI_RXFR0_REG(base) ((base)->RXFR0) +#define SPI_RXFR1_REG(base) ((base)->RXFR1) +#define SPI_RXFR2_REG(base) ((base)->RXFR2) +#define SPI_RXFR3_REG(base) ((base)->RXFR3) + +/*! + * @} + */ /* end of group SPI_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- SPI Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SPI_Register_Masks SPI Register Masks + * @{ + */ + +/* MCR Bit Fields */ +#define SPI_MCR_HALT_MASK 0x1u +#define SPI_MCR_HALT_SHIFT 0 +#define SPI_MCR_SMPL_PT_MASK 0x300u +#define SPI_MCR_SMPL_PT_SHIFT 8 +#define SPI_MCR_SMPL_PT(x) (((uint32_t)(((uint32_t)(x))<<SPI_MCR_SMPL_PT_SHIFT))&SPI_MCR_SMPL_PT_MASK) +#define SPI_MCR_CLR_RXF_MASK 0x400u +#define SPI_MCR_CLR_RXF_SHIFT 10 +#define SPI_MCR_CLR_TXF_MASK 0x800u +#define SPI_MCR_CLR_TXF_SHIFT 11 +#define SPI_MCR_DIS_RXF_MASK 0x1000u +#define SPI_MCR_DIS_RXF_SHIFT 12 +#define SPI_MCR_DIS_TXF_MASK 0x2000u +#define SPI_MCR_DIS_TXF_SHIFT 13 +#define SPI_MCR_MDIS_MASK 0x4000u +#define SPI_MCR_MDIS_SHIFT 14 +#define SPI_MCR_DOZE_MASK 0x8000u +#define SPI_MCR_DOZE_SHIFT 15 +#define SPI_MCR_PCSIS_MASK 0x3F0000u +#define SPI_MCR_PCSIS_SHIFT 16 +#define SPI_MCR_PCSIS(x) (((uint32_t)(((uint32_t)(x))<<SPI_MCR_PCSIS_SHIFT))&SPI_MCR_PCSIS_MASK) +#define SPI_MCR_ROOE_MASK 0x1000000u +#define SPI_MCR_ROOE_SHIFT 24 +#define SPI_MCR_PCSSE_MASK 0x2000000u +#define SPI_MCR_PCSSE_SHIFT 25 +#define SPI_MCR_MTFE_MASK 0x4000000u +#define SPI_MCR_MTFE_SHIFT 26 +#define SPI_MCR_FRZ_MASK 0x8000000u +#define SPI_MCR_FRZ_SHIFT 27 +#define SPI_MCR_DCONF_MASK 0x30000000u +#define SPI_MCR_DCONF_SHIFT 28 +#define SPI_MCR_DCONF(x) (((uint32_t)(((uint32_t)(x))<<SPI_MCR_DCONF_SHIFT))&SPI_MCR_DCONF_MASK) +#define SPI_MCR_CONT_SCKE_MASK 0x40000000u +#define SPI_MCR_CONT_SCKE_SHIFT 30 +#define SPI_MCR_MSTR_MASK 0x80000000u +#define SPI_MCR_MSTR_SHIFT 31 +/* TCR Bit Fields */ +#define SPI_TCR_SPI_TCNT_MASK 0xFFFF0000u +#define SPI_TCR_SPI_TCNT_SHIFT 16 +#define SPI_TCR_SPI_TCNT(x) (((uint32_t)(((uint32_t)(x))<<SPI_TCR_SPI_TCNT_SHIFT))&SPI_TCR_SPI_TCNT_MASK) +/* CTAR Bit Fields */ +#define SPI_CTAR_BR_MASK 0xFu +#define SPI_CTAR_BR_SHIFT 0 +#define SPI_CTAR_BR(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_BR_SHIFT))&SPI_CTAR_BR_MASK) +#define SPI_CTAR_DT_MASK 0xF0u +#define SPI_CTAR_DT_SHIFT 4 +#define SPI_CTAR_DT(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_DT_SHIFT))&SPI_CTAR_DT_MASK) +#define SPI_CTAR_ASC_MASK 0xF00u +#define SPI_CTAR_ASC_SHIFT 8 +#define SPI_CTAR_ASC(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_ASC_SHIFT))&SPI_CTAR_ASC_MASK) +#define SPI_CTAR_CSSCK_MASK 0xF000u +#define SPI_CTAR_CSSCK_SHIFT 12 +#define SPI_CTAR_CSSCK(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_CSSCK_SHIFT))&SPI_CTAR_CSSCK_MASK) +#define SPI_CTAR_PBR_MASK 0x30000u +#define SPI_CTAR_PBR_SHIFT 16 +#define SPI_CTAR_PBR(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_PBR_SHIFT))&SPI_CTAR_PBR_MASK) +#define SPI_CTAR_PDT_MASK 0xC0000u +#define SPI_CTAR_PDT_SHIFT 18 +#define SPI_CTAR_PDT(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_PDT_SHIFT))&SPI_CTAR_PDT_MASK) +#define SPI_CTAR_PASC_MASK 0x300000u +#define SPI_CTAR_PASC_SHIFT 20 +#define SPI_CTAR_PASC(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_PASC_SHIFT))&SPI_CTAR_PASC_MASK) +#define SPI_CTAR_PCSSCK_MASK 0xC00000u +#define SPI_CTAR_PCSSCK_SHIFT 22 +#define SPI_CTAR_PCSSCK(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_PCSSCK_SHIFT))&SPI_CTAR_PCSSCK_MASK) +#define SPI_CTAR_LSBFE_MASK 0x1000000u +#define SPI_CTAR_LSBFE_SHIFT 24 +#define SPI_CTAR_CPHA_MASK 0x2000000u +#define SPI_CTAR_CPHA_SHIFT 25 +#define SPI_CTAR_CPOL_MASK 0x4000000u +#define SPI_CTAR_CPOL_SHIFT 26 +#define SPI_CTAR_FMSZ_MASK 0x78000000u +#define SPI_CTAR_FMSZ_SHIFT 27 +#define SPI_CTAR_FMSZ(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_FMSZ_SHIFT))&SPI_CTAR_FMSZ_MASK) +#define SPI_CTAR_DBR_MASK 0x80000000u +#define SPI_CTAR_DBR_SHIFT 31 +/* CTAR_SLAVE Bit Fields */ +#define SPI_CTAR_SLAVE_CPHA_MASK 0x2000000u +#define SPI_CTAR_SLAVE_CPHA_SHIFT 25 +#define SPI_CTAR_SLAVE_CPOL_MASK 0x4000000u +#define SPI_CTAR_SLAVE_CPOL_SHIFT 26 +#define SPI_CTAR_SLAVE_FMSZ_MASK 0xF8000000u +#define SPI_CTAR_SLAVE_FMSZ_SHIFT 27 +#define SPI_CTAR_SLAVE_FMSZ(x) (((uint32_t)(((uint32_t)(x))<<SPI_CTAR_SLAVE_FMSZ_SHIFT))&SPI_CTAR_SLAVE_FMSZ_MASK) +/* SR Bit Fields */ +#define SPI_SR_POPNXTPTR_MASK 0xFu +#define SPI_SR_POPNXTPTR_SHIFT 0 +#define SPI_SR_POPNXTPTR(x) (((uint32_t)(((uint32_t)(x))<<SPI_SR_POPNXTPTR_SHIFT))&SPI_SR_POPNXTPTR_MASK) +#define SPI_SR_RXCTR_MASK 0xF0u +#define SPI_SR_RXCTR_SHIFT 4 +#define SPI_SR_RXCTR(x) (((uint32_t)(((uint32_t)(x))<<SPI_SR_RXCTR_SHIFT))&SPI_SR_RXCTR_MASK) +#define SPI_SR_TXNXTPTR_MASK 0xF00u +#define SPI_SR_TXNXTPTR_SHIFT 8 +#define SPI_SR_TXNXTPTR(x) (((uint32_t)(((uint32_t)(x))<<SPI_SR_TXNXTPTR_SHIFT))&SPI_SR_TXNXTPTR_MASK) +#define SPI_SR_TXCTR_MASK 0xF000u +#define SPI_SR_TXCTR_SHIFT 12 +#define SPI_SR_TXCTR(x) (((uint32_t)(((uint32_t)(x))<<SPI_SR_TXCTR_SHIFT))&SPI_SR_TXCTR_MASK) +#define SPI_SR_RFDF_MASK 0x20000u +#define SPI_SR_RFDF_SHIFT 17 +#define SPI_SR_RFOF_MASK 0x80000u +#define SPI_SR_RFOF_SHIFT 19 +#define SPI_SR_TFFF_MASK 0x2000000u +#define SPI_SR_TFFF_SHIFT 25 +#define SPI_SR_TFUF_MASK 0x8000000u +#define SPI_SR_TFUF_SHIFT 27 +#define SPI_SR_EOQF_MASK 0x10000000u +#define SPI_SR_EOQF_SHIFT 28 +#define SPI_SR_TXRXS_MASK 0x40000000u +#define SPI_SR_TXRXS_SHIFT 30 +#define SPI_SR_TCF_MASK 0x80000000u +#define SPI_SR_TCF_SHIFT 31 +/* RSER Bit Fields */ +#define SPI_RSER_RFDF_DIRS_MASK 0x10000u +#define SPI_RSER_RFDF_DIRS_SHIFT 16 +#define SPI_RSER_RFDF_RE_MASK 0x20000u +#define SPI_RSER_RFDF_RE_SHIFT 17 +#define SPI_RSER_RFOF_RE_MASK 0x80000u +#define SPI_RSER_RFOF_RE_SHIFT 19 +#define SPI_RSER_TFFF_DIRS_MASK 0x1000000u +#define SPI_RSER_TFFF_DIRS_SHIFT 24 +#define SPI_RSER_TFFF_RE_MASK 0x2000000u +#define SPI_RSER_TFFF_RE_SHIFT 25 +#define SPI_RSER_TFUF_RE_MASK 0x8000000u +#define SPI_RSER_TFUF_RE_SHIFT 27 +#define SPI_RSER_EOQF_RE_MASK 0x10000000u +#define SPI_RSER_EOQF_RE_SHIFT 28 +#define SPI_RSER_TCF_RE_MASK 0x80000000u +#define SPI_RSER_TCF_RE_SHIFT 31 +/* PUSHR Bit Fields */ +#define SPI_PUSHR_TXDATA_MASK 0xFFFFu +#define SPI_PUSHR_TXDATA_SHIFT 0 +#define SPI_PUSHR_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_PUSHR_TXDATA_SHIFT))&SPI_PUSHR_TXDATA_MASK) +#define SPI_PUSHR_PCS_MASK 0x3F0000u +#define SPI_PUSHR_PCS_SHIFT 16 +#define SPI_PUSHR_PCS(x) (((uint32_t)(((uint32_t)(x))<<SPI_PUSHR_PCS_SHIFT))&SPI_PUSHR_PCS_MASK) +#define SPI_PUSHR_CTCNT_MASK 0x4000000u +#define SPI_PUSHR_CTCNT_SHIFT 26 +#define SPI_PUSHR_EOQ_MASK 0x8000000u +#define SPI_PUSHR_EOQ_SHIFT 27 +#define SPI_PUSHR_CTAS_MASK 0x70000000u +#define SPI_PUSHR_CTAS_SHIFT 28 +#define SPI_PUSHR_CTAS(x) (((uint32_t)(((uint32_t)(x))<<SPI_PUSHR_CTAS_SHIFT))&SPI_PUSHR_CTAS_MASK) +#define SPI_PUSHR_CONT_MASK 0x80000000u +#define SPI_PUSHR_CONT_SHIFT 31 +/* PUSHR_SLAVE Bit Fields */ +#define SPI_PUSHR_SLAVE_TXDATA_MASK 0xFFFFFFFFu +#define SPI_PUSHR_SLAVE_TXDATA_SHIFT 0 +#define SPI_PUSHR_SLAVE_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_PUSHR_SLAVE_TXDATA_SHIFT))&SPI_PUSHR_SLAVE_TXDATA_MASK) +/* POPR Bit Fields */ +#define SPI_POPR_RXDATA_MASK 0xFFFFFFFFu +#define SPI_POPR_RXDATA_SHIFT 0 +#define SPI_POPR_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_POPR_RXDATA_SHIFT))&SPI_POPR_RXDATA_MASK) +/* TXFR0 Bit Fields */ +#define SPI_TXFR0_TXDATA_MASK 0xFFFFu +#define SPI_TXFR0_TXDATA_SHIFT 0 +#define SPI_TXFR0_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR0_TXDATA_SHIFT))&SPI_TXFR0_TXDATA_MASK) +#define SPI_TXFR0_TXCMD_TXDATA_MASK 0xFFFF0000u +#define SPI_TXFR0_TXCMD_TXDATA_SHIFT 16 +#define SPI_TXFR0_TXCMD_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR0_TXCMD_TXDATA_SHIFT))&SPI_TXFR0_TXCMD_TXDATA_MASK) +/* TXFR1 Bit Fields */ +#define SPI_TXFR1_TXDATA_MASK 0xFFFFu +#define SPI_TXFR1_TXDATA_SHIFT 0 +#define SPI_TXFR1_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR1_TXDATA_SHIFT))&SPI_TXFR1_TXDATA_MASK) +#define SPI_TXFR1_TXCMD_TXDATA_MASK 0xFFFF0000u +#define SPI_TXFR1_TXCMD_TXDATA_SHIFT 16 +#define SPI_TXFR1_TXCMD_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR1_TXCMD_TXDATA_SHIFT))&SPI_TXFR1_TXCMD_TXDATA_MASK) +/* TXFR2 Bit Fields */ +#define SPI_TXFR2_TXDATA_MASK 0xFFFFu +#define SPI_TXFR2_TXDATA_SHIFT 0 +#define SPI_TXFR2_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR2_TXDATA_SHIFT))&SPI_TXFR2_TXDATA_MASK) +#define SPI_TXFR2_TXCMD_TXDATA_MASK 0xFFFF0000u +#define SPI_TXFR2_TXCMD_TXDATA_SHIFT 16 +#define SPI_TXFR2_TXCMD_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR2_TXCMD_TXDATA_SHIFT))&SPI_TXFR2_TXCMD_TXDATA_MASK) +/* TXFR3 Bit Fields */ +#define SPI_TXFR3_TXDATA_MASK 0xFFFFu +#define SPI_TXFR3_TXDATA_SHIFT 0 +#define SPI_TXFR3_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR3_TXDATA_SHIFT))&SPI_TXFR3_TXDATA_MASK) +#define SPI_TXFR3_TXCMD_TXDATA_MASK 0xFFFF0000u +#define SPI_TXFR3_TXCMD_TXDATA_SHIFT 16 +#define SPI_TXFR3_TXCMD_TXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_TXFR3_TXCMD_TXDATA_SHIFT))&SPI_TXFR3_TXCMD_TXDATA_MASK) +/* RXFR0 Bit Fields */ +#define SPI_RXFR0_RXDATA_MASK 0xFFFFFFFFu +#define SPI_RXFR0_RXDATA_SHIFT 0 +#define SPI_RXFR0_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_RXFR0_RXDATA_SHIFT))&SPI_RXFR0_RXDATA_MASK) +/* RXFR1 Bit Fields */ +#define SPI_RXFR1_RXDATA_MASK 0xFFFFFFFFu +#define SPI_RXFR1_RXDATA_SHIFT 0 +#define SPI_RXFR1_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_RXFR1_RXDATA_SHIFT))&SPI_RXFR1_RXDATA_MASK) +/* RXFR2 Bit Fields */ +#define SPI_RXFR2_RXDATA_MASK 0xFFFFFFFFu +#define SPI_RXFR2_RXDATA_SHIFT 0 +#define SPI_RXFR2_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_RXFR2_RXDATA_SHIFT))&SPI_RXFR2_RXDATA_MASK) +/* RXFR3 Bit Fields */ +#define SPI_RXFR3_RXDATA_MASK 0xFFFFFFFFu +#define SPI_RXFR3_RXDATA_SHIFT 0 +#define SPI_RXFR3_RXDATA(x) (((uint32_t)(((uint32_t)(x))<<SPI_RXFR3_RXDATA_SHIFT))&SPI_RXFR3_RXDATA_MASK) + +/*! + * @} + */ /* end of group SPI_Register_Masks */ + + +/* SPI - Peripheral instance base addresses */ +/** Peripheral SPI0 base address */ +#define SPI0_BASE (0x4002C000u) +/** Peripheral SPI0 base pointer */ +#define SPI0 ((SPI_Type *)SPI0_BASE) +#define SPI0_BASE_PTR (SPI0) +/** Peripheral SPI1 base address */ +#define SPI1_BASE (0x4002D000u) +/** Peripheral SPI1 base pointer */ +#define SPI1 ((SPI_Type *)SPI1_BASE) +#define SPI1_BASE_PTR (SPI1) +/** Peripheral SPI2 base address */ +#define SPI2_BASE (0x400AC000u) +/** Peripheral SPI2 base pointer */ +#define SPI2 ((SPI_Type *)SPI2_BASE) +#define SPI2_BASE_PTR (SPI2) +/** Array initializer of SPI peripheral base pointers */ +#define SPI_BASES { SPI0, SPI1, SPI2 } + +/* ---------------------------------------------------------------------------- + -- SPI - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup SPI_Register_Accessor_Macros SPI - Register accessor macros + * @{ + */ + + +/* SPI - Register instance definitions */ +/* SPI0 */ +#define SPI0_MCR SPI_MCR_REG(SPI0) +#define SPI0_TCR SPI_TCR_REG(SPI0) +#define SPI0_CTAR0 SPI_CTAR_REG(SPI0,0) +#define SPI0_CTAR0_SLAVE SPI_CTAR_SLAVE_REG(SPI0,0) +#define SPI0_CTAR1 SPI_CTAR_REG(SPI0,1) +#define SPI0_SR SPI_SR_REG(SPI0) +#define SPI0_RSER SPI_RSER_REG(SPI0) +#define SPI0_PUSHR SPI_PUSHR_REG(SPI0) +#define SPI0_PUSHR_SLAVE SPI_PUSHR_SLAVE_REG(SPI0) +#define SPI0_POPR SPI_POPR_REG(SPI0) +#define SPI0_TXFR0 SPI_TXFR0_REG(SPI0) +#define SPI0_TXFR1 SPI_TXFR1_REG(SPI0) +#define SPI0_TXFR2 SPI_TXFR2_REG(SPI0) +#define SPI0_TXFR3 SPI_TXFR3_REG(SPI0) +#define SPI0_RXFR0 SPI_RXFR0_REG(SPI0) +#define SPI0_RXFR1 SPI_RXFR1_REG(SPI0) +#define SPI0_RXFR2 SPI_RXFR2_REG(SPI0) +#define SPI0_RXFR3 SPI_RXFR3_REG(SPI0) +/* SPI1 */ +#define SPI1_MCR SPI_MCR_REG(SPI1) +#define SPI1_TCR SPI_TCR_REG(SPI1) +#define SPI1_CTAR0 SPI_CTAR_REG(SPI1,0) +#define SPI1_CTAR0_SLAVE SPI_CTAR_SLAVE_REG(SPI1,0) +#define SPI1_CTAR1 SPI_CTAR_REG(SPI1,1) +#define SPI1_SR SPI_SR_REG(SPI1) +#define SPI1_RSER SPI_RSER_REG(SPI1) +#define SPI1_PUSHR SPI_PUSHR_REG(SPI1) +#define SPI1_PUSHR_SLAVE SPI_PUSHR_SLAVE_REG(SPI1) +#define SPI1_POPR SPI_POPR_REG(SPI1) +#define SPI1_TXFR0 SPI_TXFR0_REG(SPI1) +#define SPI1_TXFR1 SPI_TXFR1_REG(SPI1) +#define SPI1_TXFR2 SPI_TXFR2_REG(SPI1) +#define SPI1_TXFR3 SPI_TXFR3_REG(SPI1) +#define SPI1_RXFR0 SPI_RXFR0_REG(SPI1) +#define SPI1_RXFR1 SPI_RXFR1_REG(SPI1) +#define SPI1_RXFR2 SPI_RXFR2_REG(SPI1) +#define SPI1_RXFR3 SPI_RXFR3_REG(SPI1) +/* SPI2 */ +#define SPI2_MCR SPI_MCR_REG(SPI2) +#define SPI2_TCR SPI_TCR_REG(SPI2) +#define SPI2_CTAR0 SPI_CTAR_REG(SPI2,0) +#define SPI2_CTAR0_SLAVE SPI_CTAR_SLAVE_REG(SPI2,0) +#define SPI2_CTAR1 SPI_CTAR_REG(SPI2,1) +#define SPI2_SR SPI_SR_REG(SPI2) +#define SPI2_RSER SPI_RSER_REG(SPI2) +#define SPI2_PUSHR SPI_PUSHR_REG(SPI2) +#define SPI2_PUSHR_SLAVE SPI_PUSHR_SLAVE_REG(SPI2) +#define SPI2_POPR SPI_POPR_REG(SPI2) +#define SPI2_TXFR0 SPI_TXFR0_REG(SPI2) +#define SPI2_TXFR1 SPI_TXFR1_REG(SPI2) +#define SPI2_TXFR2 SPI_TXFR2_REG(SPI2) +#define SPI2_TXFR3 SPI_TXFR3_REG(SPI2) +#define SPI2_RXFR0 SPI_RXFR0_REG(SPI2) +#define SPI2_RXFR1 SPI_RXFR1_REG(SPI2) +#define SPI2_RXFR2 SPI_RXFR2_REG(SPI2) +#define SPI2_RXFR3 SPI_RXFR3_REG(SPI2) + +/* SPI - Register array accessors */ +#define SPI0_CTAR(index2) SPI_CTAR_REG(SPI0,index2) +#define SPI1_CTAR(index2) SPI_CTAR_REG(SPI1,index2) +#define SPI2_CTAR(index2) SPI_CTAR_REG(SPI2,index2) +#define SPI0_CTAR_SLAVE(index2) SPI_CTAR_SLAVE_REG(SPI0,index2) +#define SPI1_CTAR_SLAVE(index2) SPI_CTAR_SLAVE_REG(SPI1,index2) +#define SPI2_CTAR_SLAVE(index2) SPI_CTAR_SLAVE_REG(SPI2,index2) + +/*! + * @} + */ /* end of group SPI_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group SPI_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- UART Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup UART_Peripheral_Access_Layer UART Peripheral Access Layer + * @{ + */ + +/** UART - Register Layout Typedef */ +typedef struct { + __IO uint8_t BDH; /**< UART Baud Rate Registers: High, offset: 0x0 */ + __IO uint8_t BDL; /**< UART Baud Rate Registers: Low, offset: 0x1 */ + __IO uint8_t C1; /**< UART Control Register 1, offset: 0x2 */ + __IO uint8_t C2; /**< UART Control Register 2, offset: 0x3 */ + __I uint8_t S1; /**< UART Status Register 1, offset: 0x4 */ + __IO uint8_t S2; /**< UART Status Register 2, offset: 0x5 */ + __IO uint8_t C3; /**< UART Control Register 3, offset: 0x6 */ + __IO uint8_t D; /**< UART Data Register, offset: 0x7 */ + __IO uint8_t MA1; /**< UART Match Address Registers 1, offset: 0x8 */ + __IO uint8_t MA2; /**< UART Match Address Registers 2, offset: 0x9 */ + __IO uint8_t C4; /**< UART Control Register 4, offset: 0xA */ + __IO uint8_t C5; /**< UART Control Register 5, offset: 0xB */ + __I uint8_t ED; /**< UART Extended Data Register, offset: 0xC */ + __IO uint8_t MODEM; /**< UART Modem Register, offset: 0xD */ + __IO uint8_t IR; /**< UART Infrared Register, offset: 0xE */ + uint8_t RESERVED_0[1]; + __IO uint8_t PFIFO; /**< UART FIFO Parameters, offset: 0x10 */ + __IO uint8_t CFIFO; /**< UART FIFO Control Register, offset: 0x11 */ + __IO uint8_t SFIFO; /**< UART FIFO Status Register, offset: 0x12 */ + __IO uint8_t TWFIFO; /**< UART FIFO Transmit Watermark, offset: 0x13 */ + __I uint8_t TCFIFO; /**< UART FIFO Transmit Count, offset: 0x14 */ + __IO uint8_t RWFIFO; /**< UART FIFO Receive Watermark, offset: 0x15 */ + __I uint8_t RCFIFO; /**< UART FIFO Receive Count, offset: 0x16 */ + uint8_t RESERVED_1[1]; + __IO uint8_t C7816; /**< UART 7816 Control Register, offset: 0x18 */ + __IO uint8_t IE7816; /**< UART 7816 Interrupt Enable Register, offset: 0x19 */ + __IO uint8_t IS7816; /**< UART 7816 Interrupt Status Register, offset: 0x1A */ + union { /* offset: 0x1B */ + __IO uint8_t WP7816_T_TYPE0; /**< UART 7816 Wait Parameter Register, offset: 0x1B */ + __IO uint8_t WP7816_T_TYPE1; /**< UART 7816 Wait Parameter Register, offset: 0x1B */ + }; + __IO uint8_t WN7816; /**< UART 7816 Wait N Register, offset: 0x1C */ + __IO uint8_t WF7816; /**< UART 7816 Wait FD Register, offset: 0x1D */ + __IO uint8_t ET7816; /**< UART 7816 Error Threshold Register, offset: 0x1E */ + __IO uint8_t TL7816; /**< UART 7816 Transmit Length Register, offset: 0x1F */ +} UART_Type, *UART_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- UART - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup UART_Register_Accessor_Macros UART - Register accessor macros + * @{ + */ + + +/* UART - Register accessors */ +#define UART_BDH_REG(base) ((base)->BDH) +#define UART_BDL_REG(base) ((base)->BDL) +#define UART_C1_REG(base) ((base)->C1) +#define UART_C2_REG(base) ((base)->C2) +#define UART_S1_REG(base) ((base)->S1) +#define UART_S2_REG(base) ((base)->S2) +#define UART_C3_REG(base) ((base)->C3) +#define UART_D_REG(base) ((base)->D) +#define UART_MA1_REG(base) ((base)->MA1) +#define UART_MA2_REG(base) ((base)->MA2) +#define UART_C4_REG(base) ((base)->C4) +#define UART_C5_REG(base) ((base)->C5) +#define UART_ED_REG(base) ((base)->ED) +#define UART_MODEM_REG(base) ((base)->MODEM) +#define UART_IR_REG(base) ((base)->IR) +#define UART_PFIFO_REG(base) ((base)->PFIFO) +#define UART_CFIFO_REG(base) ((base)->CFIFO) +#define UART_SFIFO_REG(base) ((base)->SFIFO) +#define UART_TWFIFO_REG(base) ((base)->TWFIFO) +#define UART_TCFIFO_REG(base) ((base)->TCFIFO) +#define UART_RWFIFO_REG(base) ((base)->RWFIFO) +#define UART_RCFIFO_REG(base) ((base)->RCFIFO) +#define UART_C7816_REG(base) ((base)->C7816) +#define UART_IE7816_REG(base) ((base)->IE7816) +#define UART_IS7816_REG(base) ((base)->IS7816) +#define UART_WP7816_T_TYPE0_REG(base) ((base)->WP7816_T_TYPE0) +#define UART_WP7816_T_TYPE1_REG(base) ((base)->WP7816_T_TYPE1) +#define UART_WN7816_REG(base) ((base)->WN7816) +#define UART_WF7816_REG(base) ((base)->WF7816) +#define UART_ET7816_REG(base) ((base)->ET7816) +#define UART_TL7816_REG(base) ((base)->TL7816) + +/*! + * @} + */ /* end of group UART_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- UART Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup UART_Register_Masks UART Register Masks + * @{ + */ + +/* BDH Bit Fields */ +#define UART_BDH_SBR_MASK 0x1Fu +#define UART_BDH_SBR_SHIFT 0 +#define UART_BDH_SBR(x) (((uint8_t)(((uint8_t)(x))<<UART_BDH_SBR_SHIFT))&UART_BDH_SBR_MASK) +#define UART_BDH_SBNS_MASK 0x20u +#define UART_BDH_SBNS_SHIFT 5 +#define UART_BDH_RXEDGIE_MASK 0x40u +#define UART_BDH_RXEDGIE_SHIFT 6 +#define UART_BDH_LBKDIE_MASK 0x80u +#define UART_BDH_LBKDIE_SHIFT 7 +/* BDL Bit Fields */ +#define UART_BDL_SBR_MASK 0xFFu +#define UART_BDL_SBR_SHIFT 0 +#define UART_BDL_SBR(x) (((uint8_t)(((uint8_t)(x))<<UART_BDL_SBR_SHIFT))&UART_BDL_SBR_MASK) +/* C1 Bit Fields */ +#define UART_C1_PT_MASK 0x1u +#define UART_C1_PT_SHIFT 0 +#define UART_C1_PE_MASK 0x2u +#define UART_C1_PE_SHIFT 1 +#define UART_C1_ILT_MASK 0x4u +#define UART_C1_ILT_SHIFT 2 +#define UART_C1_WAKE_MASK 0x8u +#define UART_C1_WAKE_SHIFT 3 +#define UART_C1_M_MASK 0x10u +#define UART_C1_M_SHIFT 4 +#define UART_C1_RSRC_MASK 0x20u +#define UART_C1_RSRC_SHIFT 5 +#define UART_C1_UARTSWAI_MASK 0x40u +#define UART_C1_UARTSWAI_SHIFT 6 +#define UART_C1_LOOPS_MASK 0x80u +#define UART_C1_LOOPS_SHIFT 7 +/* C2 Bit Fields */ +#define UART_C2_SBK_MASK 0x1u +#define UART_C2_SBK_SHIFT 0 +#define UART_C2_RWU_MASK 0x2u +#define UART_C2_RWU_SHIFT 1 +#define UART_C2_RE_MASK 0x4u +#define UART_C2_RE_SHIFT 2 +#define UART_C2_TE_MASK 0x8u +#define UART_C2_TE_SHIFT 3 +#define UART_C2_ILIE_MASK 0x10u +#define UART_C2_ILIE_SHIFT 4 +#define UART_C2_RIE_MASK 0x20u +#define UART_C2_RIE_SHIFT 5 +#define UART_C2_TCIE_MASK 0x40u +#define UART_C2_TCIE_SHIFT 6 +#define UART_C2_TIE_MASK 0x80u +#define UART_C2_TIE_SHIFT 7 +/* S1 Bit Fields */ +#define UART_S1_PF_MASK 0x1u +#define UART_S1_PF_SHIFT 0 +#define UART_S1_FE_MASK 0x2u +#define UART_S1_FE_SHIFT 1 +#define UART_S1_NF_MASK 0x4u +#define UART_S1_NF_SHIFT 2 +#define UART_S1_OR_MASK 0x8u +#define UART_S1_OR_SHIFT 3 +#define UART_S1_IDLE_MASK 0x10u +#define UART_S1_IDLE_SHIFT 4 +#define UART_S1_RDRF_MASK 0x20u +#define UART_S1_RDRF_SHIFT 5 +#define UART_S1_TC_MASK 0x40u +#define UART_S1_TC_SHIFT 6 +#define UART_S1_TDRE_MASK 0x80u +#define UART_S1_TDRE_SHIFT 7 +/* S2 Bit Fields */ +#define UART_S2_RAF_MASK 0x1u +#define UART_S2_RAF_SHIFT 0 +#define UART_S2_LBKDE_MASK 0x2u +#define UART_S2_LBKDE_SHIFT 1 +#define UART_S2_BRK13_MASK 0x4u +#define UART_S2_BRK13_SHIFT 2 +#define UART_S2_RWUID_MASK 0x8u +#define UART_S2_RWUID_SHIFT 3 +#define UART_S2_RXINV_MASK 0x10u +#define UART_S2_RXINV_SHIFT 4 +#define UART_S2_MSBF_MASK 0x20u +#define UART_S2_MSBF_SHIFT 5 +#define UART_S2_RXEDGIF_MASK 0x40u +#define UART_S2_RXEDGIF_SHIFT 6 +#define UART_S2_LBKDIF_MASK 0x80u +#define UART_S2_LBKDIF_SHIFT 7 +/* C3 Bit Fields */ +#define UART_C3_PEIE_MASK 0x1u +#define UART_C3_PEIE_SHIFT 0 +#define UART_C3_FEIE_MASK 0x2u +#define UART_C3_FEIE_SHIFT 1 +#define UART_C3_NEIE_MASK 0x4u +#define UART_C3_NEIE_SHIFT 2 +#define UART_C3_ORIE_MASK 0x8u +#define UART_C3_ORIE_SHIFT 3 +#define UART_C3_TXINV_MASK 0x10u +#define UART_C3_TXINV_SHIFT 4 +#define UART_C3_TXDIR_MASK 0x20u +#define UART_C3_TXDIR_SHIFT 5 +#define UART_C3_T8_MASK 0x40u +#define UART_C3_T8_SHIFT 6 +#define UART_C3_R8_MASK 0x80u +#define UART_C3_R8_SHIFT 7 +/* D Bit Fields */ +#define UART_D_RT_MASK 0xFFu +#define UART_D_RT_SHIFT 0 +#define UART_D_RT(x) (((uint8_t)(((uint8_t)(x))<<UART_D_RT_SHIFT))&UART_D_RT_MASK) +/* MA1 Bit Fields */ +#define UART_MA1_MA_MASK 0xFFu +#define UART_MA1_MA_SHIFT 0 +#define UART_MA1_MA(x) (((uint8_t)(((uint8_t)(x))<<UART_MA1_MA_SHIFT))&UART_MA1_MA_MASK) +/* MA2 Bit Fields */ +#define UART_MA2_MA_MASK 0xFFu +#define UART_MA2_MA_SHIFT 0 +#define UART_MA2_MA(x) (((uint8_t)(((uint8_t)(x))<<UART_MA2_MA_SHIFT))&UART_MA2_MA_MASK) +/* C4 Bit Fields */ +#define UART_C4_BRFA_MASK 0x1Fu +#define UART_C4_BRFA_SHIFT 0 +#define UART_C4_BRFA(x) (((uint8_t)(((uint8_t)(x))<<UART_C4_BRFA_SHIFT))&UART_C4_BRFA_MASK) +#define UART_C4_M10_MASK 0x20u +#define UART_C4_M10_SHIFT 5 +#define UART_C4_MAEN2_MASK 0x40u +#define UART_C4_MAEN2_SHIFT 6 +#define UART_C4_MAEN1_MASK 0x80u +#define UART_C4_MAEN1_SHIFT 7 +/* C5 Bit Fields */ +#define UART_C5_LBKDDMAS_MASK 0x8u +#define UART_C5_LBKDDMAS_SHIFT 3 +#define UART_C5_ILDMAS_MASK 0x10u +#define UART_C5_ILDMAS_SHIFT 4 +#define UART_C5_RDMAS_MASK 0x20u +#define UART_C5_RDMAS_SHIFT 5 +#define UART_C5_TCDMAS_MASK 0x40u +#define UART_C5_TCDMAS_SHIFT 6 +#define UART_C5_TDMAS_MASK 0x80u +#define UART_C5_TDMAS_SHIFT 7 +/* ED Bit Fields */ +#define UART_ED_PARITYE_MASK 0x40u +#define UART_ED_PARITYE_SHIFT 6 +#define UART_ED_NOISY_MASK 0x80u +#define UART_ED_NOISY_SHIFT 7 +/* MODEM Bit Fields */ +#define UART_MODEM_TXCTSE_MASK 0x1u +#define UART_MODEM_TXCTSE_SHIFT 0 +#define UART_MODEM_TXRTSE_MASK 0x2u +#define UART_MODEM_TXRTSE_SHIFT 1 +#define UART_MODEM_TXRTSPOL_MASK 0x4u +#define UART_MODEM_TXRTSPOL_SHIFT 2 +#define UART_MODEM_RXRTSE_MASK 0x8u +#define UART_MODEM_RXRTSE_SHIFT 3 +/* IR Bit Fields */ +#define UART_IR_TNP_MASK 0x3u +#define UART_IR_TNP_SHIFT 0 +#define UART_IR_TNP(x) (((uint8_t)(((uint8_t)(x))<<UART_IR_TNP_SHIFT))&UART_IR_TNP_MASK) +#define UART_IR_IREN_MASK 0x4u +#define UART_IR_IREN_SHIFT 2 +/* PFIFO Bit Fields */ +#define UART_PFIFO_RXFIFOSIZE_MASK 0x7u +#define UART_PFIFO_RXFIFOSIZE_SHIFT 0 +#define UART_PFIFO_RXFIFOSIZE(x) (((uint8_t)(((uint8_t)(x))<<UART_PFIFO_RXFIFOSIZE_SHIFT))&UART_PFIFO_RXFIFOSIZE_MASK) +#define UART_PFIFO_RXFE_MASK 0x8u +#define UART_PFIFO_RXFE_SHIFT 3 +#define UART_PFIFO_TXFIFOSIZE_MASK 0x70u +#define UART_PFIFO_TXFIFOSIZE_SHIFT 4 +#define UART_PFIFO_TXFIFOSIZE(x) (((uint8_t)(((uint8_t)(x))<<UART_PFIFO_TXFIFOSIZE_SHIFT))&UART_PFIFO_TXFIFOSIZE_MASK) +#define UART_PFIFO_TXFE_MASK 0x80u +#define UART_PFIFO_TXFE_SHIFT 7 +/* CFIFO Bit Fields */ +#define UART_CFIFO_RXUFE_MASK 0x1u +#define UART_CFIFO_RXUFE_SHIFT 0 +#define UART_CFIFO_TXOFE_MASK 0x2u +#define UART_CFIFO_TXOFE_SHIFT 1 +#define UART_CFIFO_RXOFE_MASK 0x4u +#define UART_CFIFO_RXOFE_SHIFT 2 +#define UART_CFIFO_RXFLUSH_MASK 0x40u +#define UART_CFIFO_RXFLUSH_SHIFT 6 +#define UART_CFIFO_TXFLUSH_MASK 0x80u +#define UART_CFIFO_TXFLUSH_SHIFT 7 +/* SFIFO Bit Fields */ +#define UART_SFIFO_RXUF_MASK 0x1u +#define UART_SFIFO_RXUF_SHIFT 0 +#define UART_SFIFO_TXOF_MASK 0x2u +#define UART_SFIFO_TXOF_SHIFT 1 +#define UART_SFIFO_RXOF_MASK 0x4u +#define UART_SFIFO_RXOF_SHIFT 2 +#define UART_SFIFO_RXEMPT_MASK 0x40u +#define UART_SFIFO_RXEMPT_SHIFT 6 +#define UART_SFIFO_TXEMPT_MASK 0x80u +#define UART_SFIFO_TXEMPT_SHIFT 7 +/* TWFIFO Bit Fields */ +#define UART_TWFIFO_TXWATER_MASK 0xFFu +#define UART_TWFIFO_TXWATER_SHIFT 0 +#define UART_TWFIFO_TXWATER(x) (((uint8_t)(((uint8_t)(x))<<UART_TWFIFO_TXWATER_SHIFT))&UART_TWFIFO_TXWATER_MASK) +/* TCFIFO Bit Fields */ +#define UART_TCFIFO_TXCOUNT_MASK 0xFFu +#define UART_TCFIFO_TXCOUNT_SHIFT 0 +#define UART_TCFIFO_TXCOUNT(x) (((uint8_t)(((uint8_t)(x))<<UART_TCFIFO_TXCOUNT_SHIFT))&UART_TCFIFO_TXCOUNT_MASK) +/* RWFIFO Bit Fields */ +#define UART_RWFIFO_RXWATER_MASK 0xFFu +#define UART_RWFIFO_RXWATER_SHIFT 0 +#define UART_RWFIFO_RXWATER(x) (((uint8_t)(((uint8_t)(x))<<UART_RWFIFO_RXWATER_SHIFT))&UART_RWFIFO_RXWATER_MASK) +/* RCFIFO Bit Fields */ +#define UART_RCFIFO_RXCOUNT_MASK 0xFFu +#define UART_RCFIFO_RXCOUNT_SHIFT 0 +#define UART_RCFIFO_RXCOUNT(x) (((uint8_t)(((uint8_t)(x))<<UART_RCFIFO_RXCOUNT_SHIFT))&UART_RCFIFO_RXCOUNT_MASK) +/* C7816 Bit Fields */ +#define UART_C7816_ISO_7816E_MASK 0x1u +#define UART_C7816_ISO_7816E_SHIFT 0 +#define UART_C7816_TTYPE_MASK 0x2u +#define UART_C7816_TTYPE_SHIFT 1 +#define UART_C7816_INIT_MASK 0x4u +#define UART_C7816_INIT_SHIFT 2 +#define UART_C7816_ANACK_MASK 0x8u +#define UART_C7816_ANACK_SHIFT 3 +#define UART_C7816_ONACK_MASK 0x10u +#define UART_C7816_ONACK_SHIFT 4 +/* IE7816 Bit Fields */ +#define UART_IE7816_RXTE_MASK 0x1u +#define UART_IE7816_RXTE_SHIFT 0 +#define UART_IE7816_TXTE_MASK 0x2u +#define UART_IE7816_TXTE_SHIFT 1 +#define UART_IE7816_GTVE_MASK 0x4u +#define UART_IE7816_GTVE_SHIFT 2 +#define UART_IE7816_INITDE_MASK 0x10u +#define UART_IE7816_INITDE_SHIFT 4 +#define UART_IE7816_BWTE_MASK 0x20u +#define UART_IE7816_BWTE_SHIFT 5 +#define UART_IE7816_CWTE_MASK 0x40u +#define UART_IE7816_CWTE_SHIFT 6 +#define UART_IE7816_WTE_MASK 0x80u +#define UART_IE7816_WTE_SHIFT 7 +/* IS7816 Bit Fields */ +#define UART_IS7816_RXT_MASK 0x1u +#define UART_IS7816_RXT_SHIFT 0 +#define UART_IS7816_TXT_MASK 0x2u +#define UART_IS7816_TXT_SHIFT 1 +#define UART_IS7816_GTV_MASK 0x4u +#define UART_IS7816_GTV_SHIFT 2 +#define UART_IS7816_INITD_MASK 0x10u +#define UART_IS7816_INITD_SHIFT 4 +#define UART_IS7816_BWT_MASK 0x20u +#define UART_IS7816_BWT_SHIFT 5 +#define UART_IS7816_CWT_MASK 0x40u +#define UART_IS7816_CWT_SHIFT 6 +#define UART_IS7816_WT_MASK 0x80u +#define UART_IS7816_WT_SHIFT 7 +/* WP7816_T_TYPE0 Bit Fields */ +#define UART_WP7816_T_TYPE0_WI_MASK 0xFFu +#define UART_WP7816_T_TYPE0_WI_SHIFT 0 +#define UART_WP7816_T_TYPE0_WI(x) (((uint8_t)(((uint8_t)(x))<<UART_WP7816_T_TYPE0_WI_SHIFT))&UART_WP7816_T_TYPE0_WI_MASK) +/* WP7816_T_TYPE1 Bit Fields */ +#define UART_WP7816_T_TYPE1_BWI_MASK 0xFu +#define UART_WP7816_T_TYPE1_BWI_SHIFT 0 +#define UART_WP7816_T_TYPE1_BWI(x) (((uint8_t)(((uint8_t)(x))<<UART_WP7816_T_TYPE1_BWI_SHIFT))&UART_WP7816_T_TYPE1_BWI_MASK) +#define UART_WP7816_T_TYPE1_CWI_MASK 0xF0u +#define UART_WP7816_T_TYPE1_CWI_SHIFT 4 +#define UART_WP7816_T_TYPE1_CWI(x) (((uint8_t)(((uint8_t)(x))<<UART_WP7816_T_TYPE1_CWI_SHIFT))&UART_WP7816_T_TYPE1_CWI_MASK) +/* WN7816 Bit Fields */ +#define UART_WN7816_GTN_MASK 0xFFu +#define UART_WN7816_GTN_SHIFT 0 +#define UART_WN7816_GTN(x) (((uint8_t)(((uint8_t)(x))<<UART_WN7816_GTN_SHIFT))&UART_WN7816_GTN_MASK) +/* WF7816 Bit Fields */ +#define UART_WF7816_GTFD_MASK 0xFFu +#define UART_WF7816_GTFD_SHIFT 0 +#define UART_WF7816_GTFD(x) (((uint8_t)(((uint8_t)(x))<<UART_WF7816_GTFD_SHIFT))&UART_WF7816_GTFD_MASK) +/* ET7816 Bit Fields */ +#define UART_ET7816_RXTHRESHOLD_MASK 0xFu +#define UART_ET7816_RXTHRESHOLD_SHIFT 0 +#define UART_ET7816_RXTHRESHOLD(x) (((uint8_t)(((uint8_t)(x))<<UART_ET7816_RXTHRESHOLD_SHIFT))&UART_ET7816_RXTHRESHOLD_MASK) +#define UART_ET7816_TXTHRESHOLD_MASK 0xF0u +#define UART_ET7816_TXTHRESHOLD_SHIFT 4 +#define UART_ET7816_TXTHRESHOLD(x) (((uint8_t)(((uint8_t)(x))<<UART_ET7816_TXTHRESHOLD_SHIFT))&UART_ET7816_TXTHRESHOLD_MASK) +/* TL7816 Bit Fields */ +#define UART_TL7816_TLEN_MASK 0xFFu +#define UART_TL7816_TLEN_SHIFT 0 +#define UART_TL7816_TLEN(x) (((uint8_t)(((uint8_t)(x))<<UART_TL7816_TLEN_SHIFT))&UART_TL7816_TLEN_MASK) + +/*! + * @} + */ /* end of group UART_Register_Masks */ + + +/* UART - Peripheral instance base addresses */ +/** Peripheral UART0 base address */ +#define UART0_BASE (0x4006A000u) +/** Peripheral UART0 base pointer */ +#define UART0 ((UART_Type *)UART0_BASE) +#define UART0_BASE_PTR (UART0) +/** Peripheral UART1 base address */ +#define UART1_BASE (0x4006B000u) +/** Peripheral UART1 base pointer */ +#define UART1 ((UART_Type *)UART1_BASE) +#define UART1_BASE_PTR (UART1) +/** Peripheral UART2 base address */ +#define UART2_BASE (0x4006C000u) +/** Peripheral UART2 base pointer */ +#define UART2 ((UART_Type *)UART2_BASE) +#define UART2_BASE_PTR (UART2) +/** Peripheral UART3 base address */ +#define UART3_BASE (0x4006D000u) +/** Peripheral UART3 base pointer */ +#define UART3 ((UART_Type *)UART3_BASE) +#define UART3_BASE_PTR (UART3) +/** Peripheral UART4 base address */ +#define UART4_BASE (0x400EA000u) +/** Peripheral UART4 base pointer */ +#define UART4 ((UART_Type *)UART4_BASE) +#define UART4_BASE_PTR (UART4) +/** Peripheral UART5 base address */ +#define UART5_BASE (0x400EB000u) +/** Peripheral UART5 base pointer */ +#define UART5 ((UART_Type *)UART5_BASE) +#define UART5_BASE_PTR (UART5) +/** Array initializer of UART peripheral base pointers */ +#define UART_BASES { UART0, UART1, UART2, UART3, UART4, UART5 } + +/* ---------------------------------------------------------------------------- + -- UART - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup UART_Register_Accessor_Macros UART - Register accessor macros + * @{ + */ + + +/* UART - Register instance definitions */ +/* UART0 */ +#define UART0_BDH UART_BDH_REG(UART0) +#define UART0_BDL UART_BDL_REG(UART0) +#define UART0_C1 UART_C1_REG(UART0) +#define UART0_C2 UART_C2_REG(UART0) +#define UART0_S1 UART_S1_REG(UART0) +#define UART0_S2 UART_S2_REG(UART0) +#define UART0_C3 UART_C3_REG(UART0) +#define UART0_D UART_D_REG(UART0) +#define UART0_MA1 UART_MA1_REG(UART0) +#define UART0_MA2 UART_MA2_REG(UART0) +#define UART0_C4 UART_C4_REG(UART0) +#define UART0_C5 UART_C5_REG(UART0) +#define UART0_ED UART_ED_REG(UART0) +#define UART0_MODEM UART_MODEM_REG(UART0) +#define UART0_IR UART_IR_REG(UART0) +#define UART0_PFIFO UART_PFIFO_REG(UART0) +#define UART0_CFIFO UART_CFIFO_REG(UART0) +#define UART0_SFIFO UART_SFIFO_REG(UART0) +#define UART0_TWFIFO UART_TWFIFO_REG(UART0) +#define UART0_TCFIFO UART_TCFIFO_REG(UART0) +#define UART0_RWFIFO UART_RWFIFO_REG(UART0) +#define UART0_RCFIFO UART_RCFIFO_REG(UART0) +#define UART0_C7816 UART_C7816_REG(UART0) +#define UART0_IE7816 UART_IE7816_REG(UART0) +#define UART0_IS7816 UART_IS7816_REG(UART0) +#define UART0_WP7816T0 UART_WP7816_T_TYPE0_REG(UART0) +#define UART0_WP7816T1 UART_WP7816_T_TYPE1_REG(UART0) +#define UART0_WN7816 UART_WN7816_REG(UART0) +#define UART0_WF7816 UART_WF7816_REG(UART0) +#define UART0_ET7816 UART_ET7816_REG(UART0) +#define UART0_TL7816 UART_TL7816_REG(UART0) +/* UART1 */ +#define UART1_BDH UART_BDH_REG(UART1) +#define UART1_BDL UART_BDL_REG(UART1) +#define UART1_C1 UART_C1_REG(UART1) +#define UART1_C2 UART_C2_REG(UART1) +#define UART1_S1 UART_S1_REG(UART1) +#define UART1_S2 UART_S2_REG(UART1) +#define UART1_C3 UART_C3_REG(UART1) +#define UART1_D UART_D_REG(UART1) +#define UART1_MA1 UART_MA1_REG(UART1) +#define UART1_MA2 UART_MA2_REG(UART1) +#define UART1_C4 UART_C4_REG(UART1) +#define UART1_C5 UART_C5_REG(UART1) +#define UART1_ED UART_ED_REG(UART1) +#define UART1_MODEM UART_MODEM_REG(UART1) +#define UART1_IR UART_IR_REG(UART1) +#define UART1_PFIFO UART_PFIFO_REG(UART1) +#define UART1_CFIFO UART_CFIFO_REG(UART1) +#define UART1_SFIFO UART_SFIFO_REG(UART1) +#define UART1_TWFIFO UART_TWFIFO_REG(UART1) +#define UART1_TCFIFO UART_TCFIFO_REG(UART1) +#define UART1_RWFIFO UART_RWFIFO_REG(UART1) +#define UART1_RCFIFO UART_RCFIFO_REG(UART1) +/* UART2 */ +#define UART2_BDH UART_BDH_REG(UART2) +#define UART2_BDL UART_BDL_REG(UART2) +#define UART2_C1 UART_C1_REG(UART2) +#define UART2_C2 UART_C2_REG(UART2) +#define UART2_S1 UART_S1_REG(UART2) +#define UART2_S2 UART_S2_REG(UART2) +#define UART2_C3 UART_C3_REG(UART2) +#define UART2_D UART_D_REG(UART2) +#define UART2_MA1 UART_MA1_REG(UART2) +#define UART2_MA2 UART_MA2_REG(UART2) +#define UART2_C4 UART_C4_REG(UART2) +#define UART2_C5 UART_C5_REG(UART2) +#define UART2_ED UART_ED_REG(UART2) +#define UART2_MODEM UART_MODEM_REG(UART2) +#define UART2_IR UART_IR_REG(UART2) +#define UART2_PFIFO UART_PFIFO_REG(UART2) +#define UART2_CFIFO UART_CFIFO_REG(UART2) +#define UART2_SFIFO UART_SFIFO_REG(UART2) +#define UART2_TWFIFO UART_TWFIFO_REG(UART2) +#define UART2_TCFIFO UART_TCFIFO_REG(UART2) +#define UART2_RWFIFO UART_RWFIFO_REG(UART2) +#define UART2_RCFIFO UART_RCFIFO_REG(UART2) +/* UART3 */ +#define UART3_BDH UART_BDH_REG(UART3) +#define UART3_BDL UART_BDL_REG(UART3) +#define UART3_C1 UART_C1_REG(UART3) +#define UART3_C2 UART_C2_REG(UART3) +#define UART3_S1 UART_S1_REG(UART3) +#define UART3_S2 UART_S2_REG(UART3) +#define UART3_C3 UART_C3_REG(UART3) +#define UART3_D UART_D_REG(UART3) +#define UART3_MA1 UART_MA1_REG(UART3) +#define UART3_MA2 UART_MA2_REG(UART3) +#define UART3_C4 UART_C4_REG(UART3) +#define UART3_C5 UART_C5_REG(UART3) +#define UART3_ED UART_ED_REG(UART3) +#define UART3_MODEM UART_MODEM_REG(UART3) +#define UART3_IR UART_IR_REG(UART3) +#define UART3_PFIFO UART_PFIFO_REG(UART3) +#define UART3_CFIFO UART_CFIFO_REG(UART3) +#define UART3_SFIFO UART_SFIFO_REG(UART3) +#define UART3_TWFIFO UART_TWFIFO_REG(UART3) +#define UART3_TCFIFO UART_TCFIFO_REG(UART3) +#define UART3_RWFIFO UART_RWFIFO_REG(UART3) +#define UART3_RCFIFO UART_RCFIFO_REG(UART3) +/* UART4 */ +#define UART4_BDH UART_BDH_REG(UART4) +#define UART4_BDL UART_BDL_REG(UART4) +#define UART4_C1 UART_C1_REG(UART4) +#define UART4_C2 UART_C2_REG(UART4) +#define UART4_S1 UART_S1_REG(UART4) +#define UART4_S2 UART_S2_REG(UART4) +#define UART4_C3 UART_C3_REG(UART4) +#define UART4_D UART_D_REG(UART4) +#define UART4_MA1 UART_MA1_REG(UART4) +#define UART4_MA2 UART_MA2_REG(UART4) +#define UART4_C4 UART_C4_REG(UART4) +#define UART4_C5 UART_C5_REG(UART4) +#define UART4_ED UART_ED_REG(UART4) +#define UART4_MODEM UART_MODEM_REG(UART4) +#define UART4_IR UART_IR_REG(UART4) +#define UART4_PFIFO UART_PFIFO_REG(UART4) +#define UART4_CFIFO UART_CFIFO_REG(UART4) +#define UART4_SFIFO UART_SFIFO_REG(UART4) +#define UART4_TWFIFO UART_TWFIFO_REG(UART4) +#define UART4_TCFIFO UART_TCFIFO_REG(UART4) +#define UART4_RWFIFO UART_RWFIFO_REG(UART4) +#define UART4_RCFIFO UART_RCFIFO_REG(UART4) +/* UART5 */ +#define UART5_BDH UART_BDH_REG(UART5) +#define UART5_BDL UART_BDL_REG(UART5) +#define UART5_C1 UART_C1_REG(UART5) +#define UART5_C2 UART_C2_REG(UART5) +#define UART5_S1 UART_S1_REG(UART5) +#define UART5_S2 UART_S2_REG(UART5) +#define UART5_C3 UART_C3_REG(UART5) +#define UART5_D UART_D_REG(UART5) +#define UART5_MA1 UART_MA1_REG(UART5) +#define UART5_MA2 UART_MA2_REG(UART5) +#define UART5_C4 UART_C4_REG(UART5) +#define UART5_C5 UART_C5_REG(UART5) +#define UART5_ED UART_ED_REG(UART5) +#define UART5_MODEM UART_MODEM_REG(UART5) +#define UART5_IR UART_IR_REG(UART5) +#define UART5_PFIFO UART_PFIFO_REG(UART5) +#define UART5_CFIFO UART_CFIFO_REG(UART5) +#define UART5_SFIFO UART_SFIFO_REG(UART5) +#define UART5_TWFIFO UART_TWFIFO_REG(UART5) +#define UART5_TCFIFO UART_TCFIFO_REG(UART5) +#define UART5_RWFIFO UART_RWFIFO_REG(UART5) +#define UART5_RCFIFO UART_RCFIFO_REG(UART5) + +/*! + * @} + */ /* end of group UART_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group UART_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- USB Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USB_Peripheral_Access_Layer USB Peripheral Access Layer + * @{ + */ + +/** USB - Register Layout Typedef */ +typedef struct { + __I uint8_t PERID; /**< Peripheral ID register, offset: 0x0 */ + uint8_t RESERVED_0[3]; + __I uint8_t IDCOMP; /**< Peripheral ID Complement register, offset: 0x4 */ + uint8_t RESERVED_1[3]; + __I uint8_t REV; /**< Peripheral Revision register, offset: 0x8 */ + uint8_t RESERVED_2[3]; + __I uint8_t ADDINFO; /**< Peripheral Additional Info register, offset: 0xC */ + uint8_t RESERVED_3[3]; + __IO uint8_t OTGISTAT; /**< OTG Interrupt Status register, offset: 0x10 */ + uint8_t RESERVED_4[3]; + __IO uint8_t OTGICR; /**< OTG Interrupt Control register, offset: 0x14 */ + uint8_t RESERVED_5[3]; + __IO uint8_t OTGSTAT; /**< OTG Status register, offset: 0x18 */ + uint8_t RESERVED_6[3]; + __IO uint8_t OTGCTL; /**< OTG Control register, offset: 0x1C */ + uint8_t RESERVED_7[99]; + __IO uint8_t ISTAT; /**< Interrupt Status register, offset: 0x80 */ + uint8_t RESERVED_8[3]; + __IO uint8_t INTEN; /**< Interrupt Enable register, offset: 0x84 */ + uint8_t RESERVED_9[3]; + __IO uint8_t ERRSTAT; /**< Error Interrupt Status register, offset: 0x88 */ + uint8_t RESERVED_10[3]; + __IO uint8_t ERREN; /**< Error Interrupt Enable register, offset: 0x8C */ + uint8_t RESERVED_11[3]; + __I uint8_t STAT; /**< Status register, offset: 0x90 */ + uint8_t RESERVED_12[3]; + __IO uint8_t CTL; /**< Control register, offset: 0x94 */ + uint8_t RESERVED_13[3]; + __IO uint8_t ADDR; /**< Address register, offset: 0x98 */ + uint8_t RESERVED_14[3]; + __IO uint8_t BDTPAGE1; /**< BDT Page register 1, offset: 0x9C */ + uint8_t RESERVED_15[3]; + __IO uint8_t FRMNUML; /**< Frame Number register Low, offset: 0xA0 */ + uint8_t RESERVED_16[3]; + __IO uint8_t FRMNUMH; /**< Frame Number register High, offset: 0xA4 */ + uint8_t RESERVED_17[3]; + __IO uint8_t TOKEN; /**< Token register, offset: 0xA8 */ + uint8_t RESERVED_18[3]; + __IO uint8_t SOFTHLD; /**< SOF Threshold register, offset: 0xAC */ + uint8_t RESERVED_19[3]; + __IO uint8_t BDTPAGE2; /**< BDT Page Register 2, offset: 0xB0 */ + uint8_t RESERVED_20[3]; + __IO uint8_t BDTPAGE3; /**< BDT Page Register 3, offset: 0xB4 */ + uint8_t RESERVED_21[11]; + struct { /* offset: 0xC0, array step: 0x4 */ + __IO uint8_t ENDPT; /**< Endpoint Control register, array offset: 0xC0, array step: 0x4 */ + uint8_t RESERVED_0[3]; + } ENDPOINT[16]; + __IO uint8_t USBCTRL; /**< USB Control register, offset: 0x100 */ + uint8_t RESERVED_22[3]; + __I uint8_t OBSERVE; /**< USB OTG Observe register, offset: 0x104 */ + uint8_t RESERVED_23[3]; + __IO uint8_t CONTROL; /**< USB OTG Control register, offset: 0x108 */ + uint8_t RESERVED_24[3]; + __IO uint8_t USBTRC0; /**< USB Transceiver Control register 0, offset: 0x10C */ + uint8_t RESERVED_25[7]; + __IO uint8_t USBFRMADJUST; /**< Frame Adjust Register, offset: 0x114 */ + uint8_t RESERVED_26[43]; + __IO uint8_t CLK_RECOVER_CTRL; /**< USB Clock recovery control, offset: 0x140 */ + uint8_t RESERVED_27[3]; + __IO uint8_t CLK_RECOVER_IRC_EN; /**< IRC48M oscillator enable register, offset: 0x144 */ + uint8_t RESERVED_28[23]; + __IO uint8_t CLK_RECOVER_INT_STATUS; /**< Clock recovery separated interrupt status, offset: 0x15C */ +} USB_Type, *USB_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- USB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USB_Register_Accessor_Macros USB - Register accessor macros + * @{ + */ + + +/* USB - Register accessors */ +#define USB_PERID_REG(base) ((base)->PERID) +#define USB_IDCOMP_REG(base) ((base)->IDCOMP) +#define USB_REV_REG(base) ((base)->REV) +#define USB_ADDINFO_REG(base) ((base)->ADDINFO) +#define USB_OTGISTAT_REG(base) ((base)->OTGISTAT) +#define USB_OTGICR_REG(base) ((base)->OTGICR) +#define USB_OTGSTAT_REG(base) ((base)->OTGSTAT) +#define USB_OTGCTL_REG(base) ((base)->OTGCTL) +#define USB_ISTAT_REG(base) ((base)->ISTAT) +#define USB_INTEN_REG(base) ((base)->INTEN) +#define USB_ERRSTAT_REG(base) ((base)->ERRSTAT) +#define USB_ERREN_REG(base) ((base)->ERREN) +#define USB_STAT_REG(base) ((base)->STAT) +#define USB_CTL_REG(base) ((base)->CTL) +#define USB_ADDR_REG(base) ((base)->ADDR) +#define USB_BDTPAGE1_REG(base) ((base)->BDTPAGE1) +#define USB_FRMNUML_REG(base) ((base)->FRMNUML) +#define USB_FRMNUMH_REG(base) ((base)->FRMNUMH) +#define USB_TOKEN_REG(base) ((base)->TOKEN) +#define USB_SOFTHLD_REG(base) ((base)->SOFTHLD) +#define USB_BDTPAGE2_REG(base) ((base)->BDTPAGE2) +#define USB_BDTPAGE3_REG(base) ((base)->BDTPAGE3) +#define USB_ENDPT_REG(base,index) ((base)->ENDPOINT[index].ENDPT) +#define USB_USBCTRL_REG(base) ((base)->USBCTRL) +#define USB_OBSERVE_REG(base) ((base)->OBSERVE) +#define USB_CONTROL_REG(base) ((base)->CONTROL) +#define USB_USBTRC0_REG(base) ((base)->USBTRC0) +#define USB_USBFRMADJUST_REG(base) ((base)->USBFRMADJUST) +#define USB_CLK_RECOVER_CTRL_REG(base) ((base)->CLK_RECOVER_CTRL) +#define USB_CLK_RECOVER_IRC_EN_REG(base) ((base)->CLK_RECOVER_IRC_EN) +#define USB_CLK_RECOVER_INT_STATUS_REG(base) ((base)->CLK_RECOVER_INT_STATUS) + +/*! + * @} + */ /* end of group USB_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- USB Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USB_Register_Masks USB Register Masks + * @{ + */ + +/* PERID Bit Fields */ +#define USB_PERID_ID_MASK 0x3Fu +#define USB_PERID_ID_SHIFT 0 +#define USB_PERID_ID(x) (((uint8_t)(((uint8_t)(x))<<USB_PERID_ID_SHIFT))&USB_PERID_ID_MASK) +/* IDCOMP Bit Fields */ +#define USB_IDCOMP_NID_MASK 0x3Fu +#define USB_IDCOMP_NID_SHIFT 0 +#define USB_IDCOMP_NID(x) (((uint8_t)(((uint8_t)(x))<<USB_IDCOMP_NID_SHIFT))&USB_IDCOMP_NID_MASK) +/* REV Bit Fields */ +#define USB_REV_REV_MASK 0xFFu +#define USB_REV_REV_SHIFT 0 +#define USB_REV_REV(x) (((uint8_t)(((uint8_t)(x))<<USB_REV_REV_SHIFT))&USB_REV_REV_MASK) +/* ADDINFO Bit Fields */ +#define USB_ADDINFO_IEHOST_MASK 0x1u +#define USB_ADDINFO_IEHOST_SHIFT 0 +#define USB_ADDINFO_IRQNUM_MASK 0xF8u +#define USB_ADDINFO_IRQNUM_SHIFT 3 +#define USB_ADDINFO_IRQNUM(x) (((uint8_t)(((uint8_t)(x))<<USB_ADDINFO_IRQNUM_SHIFT))&USB_ADDINFO_IRQNUM_MASK) +/* OTGISTAT Bit Fields */ +#define USB_OTGISTAT_AVBUSCHG_MASK 0x1u +#define USB_OTGISTAT_AVBUSCHG_SHIFT 0 +#define USB_OTGISTAT_B_SESS_CHG_MASK 0x4u +#define USB_OTGISTAT_B_SESS_CHG_SHIFT 2 +#define USB_OTGISTAT_SESSVLDCHG_MASK 0x8u +#define USB_OTGISTAT_SESSVLDCHG_SHIFT 3 +#define USB_OTGISTAT_LINE_STATE_CHG_MASK 0x20u +#define USB_OTGISTAT_LINE_STATE_CHG_SHIFT 5 +#define USB_OTGISTAT_ONEMSEC_MASK 0x40u +#define USB_OTGISTAT_ONEMSEC_SHIFT 6 +#define USB_OTGISTAT_IDCHG_MASK 0x80u +#define USB_OTGISTAT_IDCHG_SHIFT 7 +/* OTGICR Bit Fields */ +#define USB_OTGICR_AVBUSEN_MASK 0x1u +#define USB_OTGICR_AVBUSEN_SHIFT 0 +#define USB_OTGICR_BSESSEN_MASK 0x4u +#define USB_OTGICR_BSESSEN_SHIFT 2 +#define USB_OTGICR_SESSVLDEN_MASK 0x8u +#define USB_OTGICR_SESSVLDEN_SHIFT 3 +#define USB_OTGICR_LINESTATEEN_MASK 0x20u +#define USB_OTGICR_LINESTATEEN_SHIFT 5 +#define USB_OTGICR_ONEMSECEN_MASK 0x40u +#define USB_OTGICR_ONEMSECEN_SHIFT 6 +#define USB_OTGICR_IDEN_MASK 0x80u +#define USB_OTGICR_IDEN_SHIFT 7 +/* OTGSTAT Bit Fields */ +#define USB_OTGSTAT_AVBUSVLD_MASK 0x1u +#define USB_OTGSTAT_AVBUSVLD_SHIFT 0 +#define USB_OTGSTAT_BSESSEND_MASK 0x4u +#define USB_OTGSTAT_BSESSEND_SHIFT 2 +#define USB_OTGSTAT_SESS_VLD_MASK 0x8u +#define USB_OTGSTAT_SESS_VLD_SHIFT 3 +#define USB_OTGSTAT_LINESTATESTABLE_MASK 0x20u +#define USB_OTGSTAT_LINESTATESTABLE_SHIFT 5 +#define USB_OTGSTAT_ONEMSECEN_MASK 0x40u +#define USB_OTGSTAT_ONEMSECEN_SHIFT 6 +#define USB_OTGSTAT_ID_MASK 0x80u +#define USB_OTGSTAT_ID_SHIFT 7 +/* OTGCTL Bit Fields */ +#define USB_OTGCTL_OTGEN_MASK 0x4u +#define USB_OTGCTL_OTGEN_SHIFT 2 +#define USB_OTGCTL_DMLOW_MASK 0x10u +#define USB_OTGCTL_DMLOW_SHIFT 4 +#define USB_OTGCTL_DPLOW_MASK 0x20u +#define USB_OTGCTL_DPLOW_SHIFT 5 +#define USB_OTGCTL_DPHIGH_MASK 0x80u +#define USB_OTGCTL_DPHIGH_SHIFT 7 +/* ISTAT Bit Fields */ +#define USB_ISTAT_USBRST_MASK 0x1u +#define USB_ISTAT_USBRST_SHIFT 0 +#define USB_ISTAT_ERROR_MASK 0x2u +#define USB_ISTAT_ERROR_SHIFT 1 +#define USB_ISTAT_SOFTOK_MASK 0x4u +#define USB_ISTAT_SOFTOK_SHIFT 2 +#define USB_ISTAT_TOKDNE_MASK 0x8u +#define USB_ISTAT_TOKDNE_SHIFT 3 +#define USB_ISTAT_SLEEP_MASK 0x10u +#define USB_ISTAT_SLEEP_SHIFT 4 +#define USB_ISTAT_RESUME_MASK 0x20u +#define USB_ISTAT_RESUME_SHIFT 5 +#define USB_ISTAT_ATTACH_MASK 0x40u +#define USB_ISTAT_ATTACH_SHIFT 6 +#define USB_ISTAT_STALL_MASK 0x80u +#define USB_ISTAT_STALL_SHIFT 7 +/* INTEN Bit Fields */ +#define USB_INTEN_USBRSTEN_MASK 0x1u +#define USB_INTEN_USBRSTEN_SHIFT 0 +#define USB_INTEN_ERROREN_MASK 0x2u +#define USB_INTEN_ERROREN_SHIFT 1 +#define USB_INTEN_SOFTOKEN_MASK 0x4u +#define USB_INTEN_SOFTOKEN_SHIFT 2 +#define USB_INTEN_TOKDNEEN_MASK 0x8u +#define USB_INTEN_TOKDNEEN_SHIFT 3 +#define USB_INTEN_SLEEPEN_MASK 0x10u +#define USB_INTEN_SLEEPEN_SHIFT 4 +#define USB_INTEN_RESUMEEN_MASK 0x20u +#define USB_INTEN_RESUMEEN_SHIFT 5 +#define USB_INTEN_ATTACHEN_MASK 0x40u +#define USB_INTEN_ATTACHEN_SHIFT 6 +#define USB_INTEN_STALLEN_MASK 0x80u +#define USB_INTEN_STALLEN_SHIFT 7 +/* ERRSTAT Bit Fields */ +#define USB_ERRSTAT_PIDERR_MASK 0x1u +#define USB_ERRSTAT_PIDERR_SHIFT 0 +#define USB_ERRSTAT_CRC5EOF_MASK 0x2u +#define USB_ERRSTAT_CRC5EOF_SHIFT 1 +#define USB_ERRSTAT_CRC16_MASK 0x4u +#define USB_ERRSTAT_CRC16_SHIFT 2 +#define USB_ERRSTAT_DFN8_MASK 0x8u +#define USB_ERRSTAT_DFN8_SHIFT 3 +#define USB_ERRSTAT_BTOERR_MASK 0x10u +#define USB_ERRSTAT_BTOERR_SHIFT 4 +#define USB_ERRSTAT_DMAERR_MASK 0x20u +#define USB_ERRSTAT_DMAERR_SHIFT 5 +#define USB_ERRSTAT_BTSERR_MASK 0x80u +#define USB_ERRSTAT_BTSERR_SHIFT 7 +/* ERREN Bit Fields */ +#define USB_ERREN_PIDERREN_MASK 0x1u +#define USB_ERREN_PIDERREN_SHIFT 0 +#define USB_ERREN_CRC5EOFEN_MASK 0x2u +#define USB_ERREN_CRC5EOFEN_SHIFT 1 +#define USB_ERREN_CRC16EN_MASK 0x4u +#define USB_ERREN_CRC16EN_SHIFT 2 +#define USB_ERREN_DFN8EN_MASK 0x8u +#define USB_ERREN_DFN8EN_SHIFT 3 +#define USB_ERREN_BTOERREN_MASK 0x10u +#define USB_ERREN_BTOERREN_SHIFT 4 +#define USB_ERREN_DMAERREN_MASK 0x20u +#define USB_ERREN_DMAERREN_SHIFT 5 +#define USB_ERREN_BTSERREN_MASK 0x80u +#define USB_ERREN_BTSERREN_SHIFT 7 +/* STAT Bit Fields */ +#define USB_STAT_ODD_MASK 0x4u +#define USB_STAT_ODD_SHIFT 2 +#define USB_STAT_TX_MASK 0x8u +#define USB_STAT_TX_SHIFT 3 +#define USB_STAT_ENDP_MASK 0xF0u +#define USB_STAT_ENDP_SHIFT 4 +#define USB_STAT_ENDP(x) (((uint8_t)(((uint8_t)(x))<<USB_STAT_ENDP_SHIFT))&USB_STAT_ENDP_MASK) +/* CTL Bit Fields */ +#define USB_CTL_USBENSOFEN_MASK 0x1u +#define USB_CTL_USBENSOFEN_SHIFT 0 +#define USB_CTL_ODDRST_MASK 0x2u +#define USB_CTL_ODDRST_SHIFT 1 +#define USB_CTL_RESUME_MASK 0x4u +#define USB_CTL_RESUME_SHIFT 2 +#define USB_CTL_HOSTMODEEN_MASK 0x8u +#define USB_CTL_HOSTMODEEN_SHIFT 3 +#define USB_CTL_RESET_MASK 0x10u +#define USB_CTL_RESET_SHIFT 4 +#define USB_CTL_TXSUSPENDTOKENBUSY_MASK 0x20u +#define USB_CTL_TXSUSPENDTOKENBUSY_SHIFT 5 +#define USB_CTL_SE0_MASK 0x40u +#define USB_CTL_SE0_SHIFT 6 +#define USB_CTL_JSTATE_MASK 0x80u +#define USB_CTL_JSTATE_SHIFT 7 +/* ADDR Bit Fields */ +#define USB_ADDR_ADDR_MASK 0x7Fu +#define USB_ADDR_ADDR_SHIFT 0 +#define USB_ADDR_ADDR(x) (((uint8_t)(((uint8_t)(x))<<USB_ADDR_ADDR_SHIFT))&USB_ADDR_ADDR_MASK) +#define USB_ADDR_LSEN_MASK 0x80u +#define USB_ADDR_LSEN_SHIFT 7 +/* BDTPAGE1 Bit Fields */ +#define USB_BDTPAGE1_BDTBA_MASK 0xFEu +#define USB_BDTPAGE1_BDTBA_SHIFT 1 +#define USB_BDTPAGE1_BDTBA(x) (((uint8_t)(((uint8_t)(x))<<USB_BDTPAGE1_BDTBA_SHIFT))&USB_BDTPAGE1_BDTBA_MASK) +/* FRMNUML Bit Fields */ +#define USB_FRMNUML_FRM_MASK 0xFFu +#define USB_FRMNUML_FRM_SHIFT 0 +#define USB_FRMNUML_FRM(x) (((uint8_t)(((uint8_t)(x))<<USB_FRMNUML_FRM_SHIFT))&USB_FRMNUML_FRM_MASK) +/* FRMNUMH Bit Fields */ +#define USB_FRMNUMH_FRM_MASK 0x7u +#define USB_FRMNUMH_FRM_SHIFT 0 +#define USB_FRMNUMH_FRM(x) (((uint8_t)(((uint8_t)(x))<<USB_FRMNUMH_FRM_SHIFT))&USB_FRMNUMH_FRM_MASK) +/* TOKEN Bit Fields */ +#define USB_TOKEN_TOKENENDPT_MASK 0xFu +#define USB_TOKEN_TOKENENDPT_SHIFT 0 +#define USB_TOKEN_TOKENENDPT(x) (((uint8_t)(((uint8_t)(x))<<USB_TOKEN_TOKENENDPT_SHIFT))&USB_TOKEN_TOKENENDPT_MASK) +#define USB_TOKEN_TOKENPID_MASK 0xF0u +#define USB_TOKEN_TOKENPID_SHIFT 4 +#define USB_TOKEN_TOKENPID(x) (((uint8_t)(((uint8_t)(x))<<USB_TOKEN_TOKENPID_SHIFT))&USB_TOKEN_TOKENPID_MASK) +/* SOFTHLD Bit Fields */ +#define USB_SOFTHLD_CNT_MASK 0xFFu +#define USB_SOFTHLD_CNT_SHIFT 0 +#define USB_SOFTHLD_CNT(x) (((uint8_t)(((uint8_t)(x))<<USB_SOFTHLD_CNT_SHIFT))&USB_SOFTHLD_CNT_MASK) +/* BDTPAGE2 Bit Fields */ +#define USB_BDTPAGE2_BDTBA_MASK 0xFFu +#define USB_BDTPAGE2_BDTBA_SHIFT 0 +#define USB_BDTPAGE2_BDTBA(x) (((uint8_t)(((uint8_t)(x))<<USB_BDTPAGE2_BDTBA_SHIFT))&USB_BDTPAGE2_BDTBA_MASK) +/* BDTPAGE3 Bit Fields */ +#define USB_BDTPAGE3_BDTBA_MASK 0xFFu +#define USB_BDTPAGE3_BDTBA_SHIFT 0 +#define USB_BDTPAGE3_BDTBA(x) (((uint8_t)(((uint8_t)(x))<<USB_BDTPAGE3_BDTBA_SHIFT))&USB_BDTPAGE3_BDTBA_MASK) +/* ENDPT Bit Fields */ +#define USB_ENDPT_EPHSHK_MASK 0x1u +#define USB_ENDPT_EPHSHK_SHIFT 0 +#define USB_ENDPT_EPSTALL_MASK 0x2u +#define USB_ENDPT_EPSTALL_SHIFT 1 +#define USB_ENDPT_EPTXEN_MASK 0x4u +#define USB_ENDPT_EPTXEN_SHIFT 2 +#define USB_ENDPT_EPRXEN_MASK 0x8u +#define USB_ENDPT_EPRXEN_SHIFT 3 +#define USB_ENDPT_EPCTLDIS_MASK 0x10u +#define USB_ENDPT_EPCTLDIS_SHIFT 4 +#define USB_ENDPT_RETRYDIS_MASK 0x40u +#define USB_ENDPT_RETRYDIS_SHIFT 6 +#define USB_ENDPT_HOSTWOHUB_MASK 0x80u +#define USB_ENDPT_HOSTWOHUB_SHIFT 7 +/* USBCTRL Bit Fields */ +#define USB_USBCTRL_PDE_MASK 0x40u +#define USB_USBCTRL_PDE_SHIFT 6 +#define USB_USBCTRL_SUSP_MASK 0x80u +#define USB_USBCTRL_SUSP_SHIFT 7 +/* OBSERVE Bit Fields */ +#define USB_OBSERVE_DMPD_MASK 0x10u +#define USB_OBSERVE_DMPD_SHIFT 4 +#define USB_OBSERVE_DPPD_MASK 0x40u +#define USB_OBSERVE_DPPD_SHIFT 6 +#define USB_OBSERVE_DPPU_MASK 0x80u +#define USB_OBSERVE_DPPU_SHIFT 7 +/* CONTROL Bit Fields */ +#define USB_CONTROL_DPPULLUPNONOTG_MASK 0x10u +#define USB_CONTROL_DPPULLUPNONOTG_SHIFT 4 +/* USBTRC0 Bit Fields */ +#define USB_USBTRC0_USB_RESUME_INT_MASK 0x1u +#define USB_USBTRC0_USB_RESUME_INT_SHIFT 0 +#define USB_USBTRC0_SYNC_DET_MASK 0x2u +#define USB_USBTRC0_SYNC_DET_SHIFT 1 +#define USB_USBTRC0_USB_CLK_RECOVERY_INT_MASK 0x4u +#define USB_USBTRC0_USB_CLK_RECOVERY_INT_SHIFT 2 +#define USB_USBTRC0_USBRESMEN_MASK 0x20u +#define USB_USBTRC0_USBRESMEN_SHIFT 5 +#define USB_USBTRC0_USBRESET_MASK 0x80u +#define USB_USBTRC0_USBRESET_SHIFT 7 +/* USBFRMADJUST Bit Fields */ +#define USB_USBFRMADJUST_ADJ_MASK 0xFFu +#define USB_USBFRMADJUST_ADJ_SHIFT 0 +#define USB_USBFRMADJUST_ADJ(x) (((uint8_t)(((uint8_t)(x))<<USB_USBFRMADJUST_ADJ_SHIFT))&USB_USBFRMADJUST_ADJ_MASK) +/* CLK_RECOVER_CTRL Bit Fields */ +#define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_MASK 0x20u +#define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_SHIFT 5 +#define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_MASK 0x40u +#define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_SHIFT 6 +#define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_MASK 0x80u +#define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_SHIFT 7 +/* CLK_RECOVER_IRC_EN Bit Fields */ +#define USB_CLK_RECOVER_IRC_EN_REG_EN_MASK 0x1u +#define USB_CLK_RECOVER_IRC_EN_REG_EN_SHIFT 0 +#define USB_CLK_RECOVER_IRC_EN_IRC_EN_MASK 0x2u +#define USB_CLK_RECOVER_IRC_EN_IRC_EN_SHIFT 1 +/* CLK_RECOVER_INT_STATUS Bit Fields */ +#define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_MASK 0x10u +#define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_SHIFT 4 + +/*! + * @} + */ /* end of group USB_Register_Masks */ + + +/* USB - Peripheral instance base addresses */ +/** Peripheral USB0 base address */ +#define USB0_BASE (0x40072000u) +/** Peripheral USB0 base pointer */ +#define USB0 ((USB_Type *)USB0_BASE) +#define USB0_BASE_PTR (USB0) +/** Array initializer of USB peripheral base pointers */ +#define USB_BASES { USB0 } + +/* ---------------------------------------------------------------------------- + -- USB - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USB_Register_Accessor_Macros USB - Register accessor macros + * @{ + */ + + +/* USB - Register instance definitions */ +/* USB0 */ +#define USB0_PERID USB_PERID_REG(USB0) +#define USB0_IDCOMP USB_IDCOMP_REG(USB0) +#define USB0_REV USB_REV_REG(USB0) +#define USB0_ADDINFO USB_ADDINFO_REG(USB0) +#define USB0_OTGISTAT USB_OTGISTAT_REG(USB0) +#define USB0_OTGICR USB_OTGICR_REG(USB0) +#define USB0_OTGSTAT USB_OTGSTAT_REG(USB0) +#define USB0_OTGCTL USB_OTGCTL_REG(USB0) +#define USB0_ISTAT USB_ISTAT_REG(USB0) +#define USB0_INTEN USB_INTEN_REG(USB0) +#define USB0_ERRSTAT USB_ERRSTAT_REG(USB0) +#define USB0_ERREN USB_ERREN_REG(USB0) +#define USB0_STAT USB_STAT_REG(USB0) +#define USB0_CTL USB_CTL_REG(USB0) +#define USB0_ADDR USB_ADDR_REG(USB0) +#define USB0_BDTPAGE1 USB_BDTPAGE1_REG(USB0) +#define USB0_FRMNUML USB_FRMNUML_REG(USB0) +#define USB0_FRMNUMH USB_FRMNUMH_REG(USB0) +#define USB0_TOKEN USB_TOKEN_REG(USB0) +#define USB0_SOFTHLD USB_SOFTHLD_REG(USB0) +#define USB0_BDTPAGE2 USB_BDTPAGE2_REG(USB0) +#define USB0_BDTPAGE3 USB_BDTPAGE3_REG(USB0) +#define USB0_ENDPT0 USB_ENDPT_REG(USB0,0) +#define USB0_ENDPT1 USB_ENDPT_REG(USB0,1) +#define USB0_ENDPT2 USB_ENDPT_REG(USB0,2) +#define USB0_ENDPT3 USB_ENDPT_REG(USB0,3) +#define USB0_ENDPT4 USB_ENDPT_REG(USB0,4) +#define USB0_ENDPT5 USB_ENDPT_REG(USB0,5) +#define USB0_ENDPT6 USB_ENDPT_REG(USB0,6) +#define USB0_ENDPT7 USB_ENDPT_REG(USB0,7) +#define USB0_ENDPT8 USB_ENDPT_REG(USB0,8) +#define USB0_ENDPT9 USB_ENDPT_REG(USB0,9) +#define USB0_ENDPT10 USB_ENDPT_REG(USB0,10) +#define USB0_ENDPT11 USB_ENDPT_REG(USB0,11) +#define USB0_ENDPT12 USB_ENDPT_REG(USB0,12) +#define USB0_ENDPT13 USB_ENDPT_REG(USB0,13) +#define USB0_ENDPT14 USB_ENDPT_REG(USB0,14) +#define USB0_ENDPT15 USB_ENDPT_REG(USB0,15) +#define USB0_USBCTRL USB_USBCTRL_REG(USB0) +#define USB0_OBSERVE USB_OBSERVE_REG(USB0) +#define USB0_CONTROL USB_CONTROL_REG(USB0) +#define USB0_USBTRC0 USB_USBTRC0_REG(USB0) +#define USB0_USBFRMADJUST USB_USBFRMADJUST_REG(USB0) +#define USB0_CLK_RECOVER_CTRL USB_CLK_RECOVER_CTRL_REG(USB0) +#define USB0_CLK_RECOVER_IRC_EN USB_CLK_RECOVER_IRC_EN_REG(USB0) +#define USB0_CLK_RECOVER_INT_STATUS USB_CLK_RECOVER_INT_STATUS_REG(USB0) + +/* USB - Register array accessors */ +#define USB0_ENDPT(index) USB_ENDPT_REG(USB0,index) + +/*! + * @} + */ /* end of group USB_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group USB_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- USBDCD Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USBDCD_Peripheral_Access_Layer USBDCD Peripheral Access Layer + * @{ + */ + +/** USBDCD - Register Layout Typedef */ +typedef struct { + __IO uint32_t CONTROL; /**< Control register, offset: 0x0 */ + __IO uint32_t CLOCK; /**< Clock register, offset: 0x4 */ + __I uint32_t STATUS; /**< Status register, offset: 0x8 */ + uint8_t RESERVED_0[4]; + __IO uint32_t TIMER0; /**< TIMER0 register, offset: 0x10 */ + __IO uint32_t TIMER1; /**< TIMER1 register, offset: 0x14 */ + union { /* offset: 0x18 */ + __IO uint32_t TIMER2_BC11; /**< TIMER2_BC11 register, offset: 0x18 */ + __IO uint32_t TIMER2_BC12; /**< TIMER2_BC12 register, offset: 0x18 */ + }; +} USBDCD_Type, *USBDCD_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- USBDCD - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USBDCD_Register_Accessor_Macros USBDCD - Register accessor macros + * @{ + */ + + +/* USBDCD - Register accessors */ +#define USBDCD_CONTROL_REG(base) ((base)->CONTROL) +#define USBDCD_CLOCK_REG(base) ((base)->CLOCK) +#define USBDCD_STATUS_REG(base) ((base)->STATUS) +#define USBDCD_TIMER0_REG(base) ((base)->TIMER0) +#define USBDCD_TIMER1_REG(base) ((base)->TIMER1) +#define USBDCD_TIMER2_BC11_REG(base) ((base)->TIMER2_BC11) +#define USBDCD_TIMER2_BC12_REG(base) ((base)->TIMER2_BC12) + +/*! + * @} + */ /* end of group USBDCD_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- USBDCD Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USBDCD_Register_Masks USBDCD Register Masks + * @{ + */ + +/* CONTROL Bit Fields */ +#define USBDCD_CONTROL_IACK_MASK 0x1u +#define USBDCD_CONTROL_IACK_SHIFT 0 +#define USBDCD_CONTROL_IF_MASK 0x100u +#define USBDCD_CONTROL_IF_SHIFT 8 +#define USBDCD_CONTROL_IE_MASK 0x10000u +#define USBDCD_CONTROL_IE_SHIFT 16 +#define USBDCD_CONTROL_BC12_MASK 0x20000u +#define USBDCD_CONTROL_BC12_SHIFT 17 +#define USBDCD_CONTROL_START_MASK 0x1000000u +#define USBDCD_CONTROL_START_SHIFT 24 +#define USBDCD_CONTROL_SR_MASK 0x2000000u +#define USBDCD_CONTROL_SR_SHIFT 25 +/* CLOCK Bit Fields */ +#define USBDCD_CLOCK_CLOCK_UNIT_MASK 0x1u +#define USBDCD_CLOCK_CLOCK_UNIT_SHIFT 0 +#define USBDCD_CLOCK_CLOCK_SPEED_MASK 0xFFCu +#define USBDCD_CLOCK_CLOCK_SPEED_SHIFT 2 +#define USBDCD_CLOCK_CLOCK_SPEED(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_CLOCK_CLOCK_SPEED_SHIFT))&USBDCD_CLOCK_CLOCK_SPEED_MASK) +/* STATUS Bit Fields */ +#define USBDCD_STATUS_SEQ_RES_MASK 0x30000u +#define USBDCD_STATUS_SEQ_RES_SHIFT 16 +#define USBDCD_STATUS_SEQ_RES(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_STATUS_SEQ_RES_SHIFT))&USBDCD_STATUS_SEQ_RES_MASK) +#define USBDCD_STATUS_SEQ_STAT_MASK 0xC0000u +#define USBDCD_STATUS_SEQ_STAT_SHIFT 18 +#define USBDCD_STATUS_SEQ_STAT(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_STATUS_SEQ_STAT_SHIFT))&USBDCD_STATUS_SEQ_STAT_MASK) +#define USBDCD_STATUS_ERR_MASK 0x100000u +#define USBDCD_STATUS_ERR_SHIFT 20 +#define USBDCD_STATUS_TO_MASK 0x200000u +#define USBDCD_STATUS_TO_SHIFT 21 +#define USBDCD_STATUS_ACTIVE_MASK 0x400000u +#define USBDCD_STATUS_ACTIVE_SHIFT 22 +/* TIMER0 Bit Fields */ +#define USBDCD_TIMER0_TUNITCON_MASK 0xFFFu +#define USBDCD_TIMER0_TUNITCON_SHIFT 0 +#define USBDCD_TIMER0_TUNITCON(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER0_TUNITCON_SHIFT))&USBDCD_TIMER0_TUNITCON_MASK) +#define USBDCD_TIMER0_TSEQ_INIT_MASK 0x3FF0000u +#define USBDCD_TIMER0_TSEQ_INIT_SHIFT 16 +#define USBDCD_TIMER0_TSEQ_INIT(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER0_TSEQ_INIT_SHIFT))&USBDCD_TIMER0_TSEQ_INIT_MASK) +/* TIMER1 Bit Fields */ +#define USBDCD_TIMER1_TVDPSRC_ON_MASK 0x3FFu +#define USBDCD_TIMER1_TVDPSRC_ON_SHIFT 0 +#define USBDCD_TIMER1_TVDPSRC_ON(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER1_TVDPSRC_ON_SHIFT))&USBDCD_TIMER1_TVDPSRC_ON_MASK) +#define USBDCD_TIMER1_TDCD_DBNC_MASK 0x3FF0000u +#define USBDCD_TIMER1_TDCD_DBNC_SHIFT 16 +#define USBDCD_TIMER1_TDCD_DBNC(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER1_TDCD_DBNC_SHIFT))&USBDCD_TIMER1_TDCD_DBNC_MASK) +/* TIMER2_BC11 Bit Fields */ +#define USBDCD_TIMER2_BC11_CHECK_DM_MASK 0xFu +#define USBDCD_TIMER2_BC11_CHECK_DM_SHIFT 0 +#define USBDCD_TIMER2_BC11_CHECK_DM(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER2_BC11_CHECK_DM_SHIFT))&USBDCD_TIMER2_BC11_CHECK_DM_MASK) +#define USBDCD_TIMER2_BC11_TVDPSRC_CON_MASK 0x3FF0000u +#define USBDCD_TIMER2_BC11_TVDPSRC_CON_SHIFT 16 +#define USBDCD_TIMER2_BC11_TVDPSRC_CON(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER2_BC11_TVDPSRC_CON_SHIFT))&USBDCD_TIMER2_BC11_TVDPSRC_CON_MASK) +/* TIMER2_BC12 Bit Fields */ +#define USBDCD_TIMER2_BC12_TVDMSRC_ON_MASK 0x3FFu +#define USBDCD_TIMER2_BC12_TVDMSRC_ON_SHIFT 0 +#define USBDCD_TIMER2_BC12_TVDMSRC_ON(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER2_BC12_TVDMSRC_ON_SHIFT))&USBDCD_TIMER2_BC12_TVDMSRC_ON_MASK) +#define USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_MASK 0x3FF0000u +#define USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_SHIFT 16 +#define USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD(x) (((uint32_t)(((uint32_t)(x))<<USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_SHIFT))&USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_MASK) + +/*! + * @} + */ /* end of group USBDCD_Register_Masks */ + + +/* USBDCD - Peripheral instance base addresses */ +/** Peripheral USBDCD base address */ +#define USBDCD_BASE (0x40035000u) +/** Peripheral USBDCD base pointer */ +#define USBDCD ((USBDCD_Type *)USBDCD_BASE) +#define USBDCD_BASE_PTR (USBDCD) +/** Array initializer of USBDCD peripheral base pointers */ +#define USBDCD_BASES { USBDCD } + +/* ---------------------------------------------------------------------------- + -- USBDCD - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup USBDCD_Register_Accessor_Macros USBDCD - Register accessor macros + * @{ + */ + + +/* USBDCD - Register instance definitions */ +/* USBDCD */ +#define USBDCD_CONTROL USBDCD_CONTROL_REG(USBDCD) +#define USBDCD_CLOCK USBDCD_CLOCK_REG(USBDCD) +#define USBDCD_STATUS USBDCD_STATUS_REG(USBDCD) +#define USBDCD_TIMER0 USBDCD_TIMER0_REG(USBDCD) +#define USBDCD_TIMER1 USBDCD_TIMER1_REG(USBDCD) +#define USBDCD_TIMER2_BC11 USBDCD_TIMER2_BC11_REG(USBDCD) +#define USBDCD_TIMER2_BC12 USBDCD_TIMER2_BC12_REG(USBDCD) + +/*! + * @} + */ /* end of group USBDCD_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group USBDCD_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- VREF Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup VREF_Peripheral_Access_Layer VREF Peripheral Access Layer + * @{ + */ + +/** VREF - Register Layout Typedef */ +typedef struct { + __IO uint8_t TRM; /**< VREF Trim Register, offset: 0x0 */ + __IO uint8_t SC; /**< VREF Status and Control Register, offset: 0x1 */ +} VREF_Type, *VREF_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- VREF - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup VREF_Register_Accessor_Macros VREF - Register accessor macros + * @{ + */ + + +/* VREF - Register accessors */ +#define VREF_TRM_REG(base) ((base)->TRM) +#define VREF_SC_REG(base) ((base)->SC) + +/*! + * @} + */ /* end of group VREF_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- VREF Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup VREF_Register_Masks VREF Register Masks + * @{ + */ + +/* TRM Bit Fields */ +#define VREF_TRM_TRIM_MASK 0x3Fu +#define VREF_TRM_TRIM_SHIFT 0 +#define VREF_TRM_TRIM(x) (((uint8_t)(((uint8_t)(x))<<VREF_TRM_TRIM_SHIFT))&VREF_TRM_TRIM_MASK) +#define VREF_TRM_CHOPEN_MASK 0x40u +#define VREF_TRM_CHOPEN_SHIFT 6 +/* SC Bit Fields */ +#define VREF_SC_MODE_LV_MASK 0x3u +#define VREF_SC_MODE_LV_SHIFT 0 +#define VREF_SC_MODE_LV(x) (((uint8_t)(((uint8_t)(x))<<VREF_SC_MODE_LV_SHIFT))&VREF_SC_MODE_LV_MASK) +#define VREF_SC_VREFST_MASK 0x4u +#define VREF_SC_VREFST_SHIFT 2 +#define VREF_SC_ICOMPEN_MASK 0x20u +#define VREF_SC_ICOMPEN_SHIFT 5 +#define VREF_SC_REGEN_MASK 0x40u +#define VREF_SC_REGEN_SHIFT 6 +#define VREF_SC_VREFEN_MASK 0x80u +#define VREF_SC_VREFEN_SHIFT 7 + +/*! + * @} + */ /* end of group VREF_Register_Masks */ + + +/* VREF - Peripheral instance base addresses */ +/** Peripheral VREF base address */ +#define VREF_BASE (0x40074000u) +/** Peripheral VREF base pointer */ +#define VREF ((VREF_Type *)VREF_BASE) +#define VREF_BASE_PTR (VREF) +/** Array initializer of VREF peripheral base pointers */ +#define VREF_BASES { VREF } + +/* ---------------------------------------------------------------------------- + -- VREF - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup VREF_Register_Accessor_Macros VREF - Register accessor macros + * @{ + */ + + +/* VREF - Register instance definitions */ +/* VREF */ +#define VREF_TRM VREF_TRM_REG(VREF) +#define VREF_SC VREF_SC_REG(VREF) + +/*! + * @} + */ /* end of group VREF_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group VREF_Peripheral_Access_Layer */ + + +/* ---------------------------------------------------------------------------- + -- WDOG Peripheral Access Layer + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup WDOG_Peripheral_Access_Layer WDOG Peripheral Access Layer + * @{ + */ + +/** WDOG - Register Layout Typedef */ +typedef struct { + __IO uint16_t STCTRLH; /**< Watchdog Status and Control Register High, offset: 0x0 */ + __IO uint16_t STCTRLL; /**< Watchdog Status and Control Register Low, offset: 0x2 */ + __IO uint16_t TOVALH; /**< Watchdog Time-out Value Register High, offset: 0x4 */ + __IO uint16_t TOVALL; /**< Watchdog Time-out Value Register Low, offset: 0x6 */ + __IO uint16_t WINH; /**< Watchdog Window Register High, offset: 0x8 */ + __IO uint16_t WINL; /**< Watchdog Window Register Low, offset: 0xA */ + __IO uint16_t REFRESH; /**< Watchdog Refresh register, offset: 0xC */ + __IO uint16_t UNLOCK; /**< Watchdog Unlock register, offset: 0xE */ + __IO uint16_t TMROUTH; /**< Watchdog Timer Output Register High, offset: 0x10 */ + __IO uint16_t TMROUTL; /**< Watchdog Timer Output Register Low, offset: 0x12 */ + __IO uint16_t RSTCNT; /**< Watchdog Reset Count register, offset: 0x14 */ + __IO uint16_t PRESC; /**< Watchdog Prescaler register, offset: 0x16 */ +} WDOG_Type, *WDOG_MemMapPtr; + +/* ---------------------------------------------------------------------------- + -- WDOG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup WDOG_Register_Accessor_Macros WDOG - Register accessor macros + * @{ + */ + + +/* WDOG - Register accessors */ +#define WDOG_STCTRLH_REG(base) ((base)->STCTRLH) +#define WDOG_STCTRLL_REG(base) ((base)->STCTRLL) +#define WDOG_TOVALH_REG(base) ((base)->TOVALH) +#define WDOG_TOVALL_REG(base) ((base)->TOVALL) +#define WDOG_WINH_REG(base) ((base)->WINH) +#define WDOG_WINL_REG(base) ((base)->WINL) +#define WDOG_REFRESH_REG(base) ((base)->REFRESH) +#define WDOG_UNLOCK_REG(base) ((base)->UNLOCK) +#define WDOG_TMROUTH_REG(base) ((base)->TMROUTH) +#define WDOG_TMROUTL_REG(base) ((base)->TMROUTL) +#define WDOG_RSTCNT_REG(base) ((base)->RSTCNT) +#define WDOG_PRESC_REG(base) ((base)->PRESC) + +/*! + * @} + */ /* end of group WDOG_Register_Accessor_Macros */ + + +/* ---------------------------------------------------------------------------- + -- WDOG Register Masks + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup WDOG_Register_Masks WDOG Register Masks + * @{ + */ + +/* STCTRLH Bit Fields */ +#define WDOG_STCTRLH_WDOGEN_MASK 0x1u +#define WDOG_STCTRLH_WDOGEN_SHIFT 0 +#define WDOG_STCTRLH_CLKSRC_MASK 0x2u +#define WDOG_STCTRLH_CLKSRC_SHIFT 1 +#define WDOG_STCTRLH_IRQRSTEN_MASK 0x4u +#define WDOG_STCTRLH_IRQRSTEN_SHIFT 2 +#define WDOG_STCTRLH_WINEN_MASK 0x8u +#define WDOG_STCTRLH_WINEN_SHIFT 3 +#define WDOG_STCTRLH_ALLOWUPDATE_MASK 0x10u +#define WDOG_STCTRLH_ALLOWUPDATE_SHIFT 4 +#define WDOG_STCTRLH_DBGEN_MASK 0x20u +#define WDOG_STCTRLH_DBGEN_SHIFT 5 +#define WDOG_STCTRLH_STOPEN_MASK 0x40u +#define WDOG_STCTRLH_STOPEN_SHIFT 6 +#define WDOG_STCTRLH_WAITEN_MASK 0x80u +#define WDOG_STCTRLH_WAITEN_SHIFT 7 +#define WDOG_STCTRLH_TESTWDOG_MASK 0x400u +#define WDOG_STCTRLH_TESTWDOG_SHIFT 10 +#define WDOG_STCTRLH_TESTSEL_MASK 0x800u +#define WDOG_STCTRLH_TESTSEL_SHIFT 11 +#define WDOG_STCTRLH_BYTESEL_MASK 0x3000u +#define WDOG_STCTRLH_BYTESEL_SHIFT 12 +#define WDOG_STCTRLH_BYTESEL(x) (((uint16_t)(((uint16_t)(x))<<WDOG_STCTRLH_BYTESEL_SHIFT))&WDOG_STCTRLH_BYTESEL_MASK) +#define WDOG_STCTRLH_DISTESTWDOG_MASK 0x4000u +#define WDOG_STCTRLH_DISTESTWDOG_SHIFT 14 +/* STCTRLL Bit Fields */ +#define WDOG_STCTRLL_INTFLG_MASK 0x8000u +#define WDOG_STCTRLL_INTFLG_SHIFT 15 +/* TOVALH Bit Fields */ +#define WDOG_TOVALH_TOVALHIGH_MASK 0xFFFFu +#define WDOG_TOVALH_TOVALHIGH_SHIFT 0 +#define WDOG_TOVALH_TOVALHIGH(x) (((uint16_t)(((uint16_t)(x))<<WDOG_TOVALH_TOVALHIGH_SHIFT))&WDOG_TOVALH_TOVALHIGH_MASK) +/* TOVALL Bit Fields */ +#define WDOG_TOVALL_TOVALLOW_MASK 0xFFFFu +#define WDOG_TOVALL_TOVALLOW_SHIFT 0 +#define WDOG_TOVALL_TOVALLOW(x) (((uint16_t)(((uint16_t)(x))<<WDOG_TOVALL_TOVALLOW_SHIFT))&WDOG_TOVALL_TOVALLOW_MASK) +/* WINH Bit Fields */ +#define WDOG_WINH_WINHIGH_MASK 0xFFFFu +#define WDOG_WINH_WINHIGH_SHIFT 0 +#define WDOG_WINH_WINHIGH(x) (((uint16_t)(((uint16_t)(x))<<WDOG_WINH_WINHIGH_SHIFT))&WDOG_WINH_WINHIGH_MASK) +/* WINL Bit Fields */ +#define WDOG_WINL_WINLOW_MASK 0xFFFFu +#define WDOG_WINL_WINLOW_SHIFT 0 +#define WDOG_WINL_WINLOW(x) (((uint16_t)(((uint16_t)(x))<<WDOG_WINL_WINLOW_SHIFT))&WDOG_WINL_WINLOW_MASK) +/* REFRESH Bit Fields */ +#define WDOG_REFRESH_WDOGREFRESH_MASK 0xFFFFu +#define WDOG_REFRESH_WDOGREFRESH_SHIFT 0 +#define WDOG_REFRESH_WDOGREFRESH(x) (((uint16_t)(((uint16_t)(x))<<WDOG_REFRESH_WDOGREFRESH_SHIFT))&WDOG_REFRESH_WDOGREFRESH_MASK) +/* UNLOCK Bit Fields */ +#define WDOG_UNLOCK_WDOGUNLOCK_MASK 0xFFFFu +#define WDOG_UNLOCK_WDOGUNLOCK_SHIFT 0 +#define WDOG_UNLOCK_WDOGUNLOCK(x) (((uint16_t)(((uint16_t)(x))<<WDOG_UNLOCK_WDOGUNLOCK_SHIFT))&WDOG_UNLOCK_WDOGUNLOCK_MASK) +/* TMROUTH Bit Fields */ +#define WDOG_TMROUTH_TIMEROUTHIGH_MASK 0xFFFFu +#define WDOG_TMROUTH_TIMEROUTHIGH_SHIFT 0 +#define WDOG_TMROUTH_TIMEROUTHIGH(x) (((uint16_t)(((uint16_t)(x))<<WDOG_TMROUTH_TIMEROUTHIGH_SHIFT))&WDOG_TMROUTH_TIMEROUTHIGH_MASK) +/* TMROUTL Bit Fields */ +#define WDOG_TMROUTL_TIMEROUTLOW_MASK 0xFFFFu +#define WDOG_TMROUTL_TIMEROUTLOW_SHIFT 0 +#define WDOG_TMROUTL_TIMEROUTLOW(x) (((uint16_t)(((uint16_t)(x))<<WDOG_TMROUTL_TIMEROUTLOW_SHIFT))&WDOG_TMROUTL_TIMEROUTLOW_MASK) +/* RSTCNT Bit Fields */ +#define WDOG_RSTCNT_RSTCNT_MASK 0xFFFFu +#define WDOG_RSTCNT_RSTCNT_SHIFT 0 +#define WDOG_RSTCNT_RSTCNT(x) (((uint16_t)(((uint16_t)(x))<<WDOG_RSTCNT_RSTCNT_SHIFT))&WDOG_RSTCNT_RSTCNT_MASK) +/* PRESC Bit Fields */ +#define WDOG_PRESC_PRESCVAL_MASK 0x700u +#define WDOG_PRESC_PRESCVAL_SHIFT 8 +#define WDOG_PRESC_PRESCVAL(x) (((uint16_t)(((uint16_t)(x))<<WDOG_PRESC_PRESCVAL_SHIFT))&WDOG_PRESC_PRESCVAL_MASK) + +/*! + * @} + */ /* end of group WDOG_Register_Masks */ + + +/* WDOG - Peripheral instance base addresses */ +/** Peripheral WDOG base address */ +#define WDOG_BASE (0x40052000u) +/** Peripheral WDOG base pointer */ +#define WDOG ((WDOG_Type *)WDOG_BASE) +#define WDOG_BASE_PTR (WDOG) +/** Array initializer of WDOG peripheral base pointers */ +#define WDOG_BASES { WDOG } + +/* ---------------------------------------------------------------------------- + -- WDOG - Register accessor macros + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup WDOG_Register_Accessor_Macros WDOG - Register accessor macros + * @{ + */ + + +/* WDOG - Register instance definitions */ +/* WDOG */ +#define WDOG_STCTRLH WDOG_STCTRLH_REG(WDOG) +#define WDOG_STCTRLL WDOG_STCTRLL_REG(WDOG) +#define WDOG_TOVALH WDOG_TOVALH_REG(WDOG) +#define WDOG_TOVALL WDOG_TOVALL_REG(WDOG) +#define WDOG_WINH WDOG_WINH_REG(WDOG) +#define WDOG_WINL WDOG_WINL_REG(WDOG) +#define WDOG_REFRESH WDOG_REFRESH_REG(WDOG) +#define WDOG_UNLOCK WDOG_UNLOCK_REG(WDOG) +#define WDOG_TMROUTH WDOG_TMROUTH_REG(WDOG) +#define WDOG_TMROUTL WDOG_TMROUTL_REG(WDOG) +#define WDOG_RSTCNT WDOG_RSTCNT_REG(WDOG) +#define WDOG_PRESC WDOG_PRESC_REG(WDOG) + +/*! + * @} + */ /* end of group WDOG_Register_Accessor_Macros */ + + +/*! + * @} + */ /* end of group WDOG_Peripheral_Access_Layer */ + + +/* +** End of section using anonymous unions +*/ + +#if defined(__ARMCC_VERSION) + #pragma pop +#elif defined(__CWCC__) + #pragma pop +#elif defined(__GNUC__) + /* leave anonymous unions enabled */ +#elif defined(__IAR_SYSTEMS_ICC__) + #pragma language=default +#else + #error Not supported compiler type +#endif + +/*! + * @} + */ /* end of group Peripheral_access_layer */ + + +/* ---------------------------------------------------------------------------- + -- Backward Compatibility + ---------------------------------------------------------------------------- */ + +/*! + * @addtogroup Backward_Compatibility_Symbols Backward Compatibility + * @{ + */ + +#define DMA_EARS_REG(base) This_symbol_has_been_deprecated +#define DMA_EARS This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_0_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_0_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_1_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_1_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_2_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_2_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_3_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_3_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_4_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_4_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_5_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_5_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_6_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_6_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_7_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_7_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_8_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_8_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_9_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_9_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_10_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_10_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_11_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_11_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_12_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_12_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_13_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_13_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_14_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_14_SHIFT This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_15_MASK This_symbol_has_been_deprecated +#define DMA_EARS_EDREQ_15_SHIFT This_symbol_has_been_deprecated +#define ENET_RMON_T_DROP_REG(base) This_symbol_has_been_deprecated +#define ENET_IEEE_T_DROP_REG(base) This_symbol_has_been_deprecated +#define ENET_IEEE_T_SQE_REG(base) This_symbol_has_been_deprecated +#define ENET_RMON_R_RESVD_0_REG(base) This_symbol_has_been_deprecated +#define ENET_RMON_R_DROP_REG(base) ENET_IEEE_R_DROP_REG(base) +#define ENET_RMON_R_FRAME_OK_REG(base) ENET_IEEE_R_FRAME_OK_REG(base) +#define ENET_RMON_T_DROP This_symbol_has_been_deprecated +#define ENET_IEEE_T_DROP This_symbol_has_been_deprecated +#define ENET_IEEE_T_SQE This_symbol_has_been_deprecated +#define ENET_RMON_R_RESVD_0 This_symbol_has_been_deprecated +#define MCG_C9_REG(base) This_symbol_has_been_deprecated +#define MCG_C2_EREFS0_MASK MCG_C2_EREFS_MASK +#define MCG_C2_EREFS0_SHIFT MCG_C2_EREFS_SHIFT +#define MCG_C2_HGO0_MASK MCG_C2_HGO_MASK +#define MCG_C2_HGO0_SHIFT MCG_C2_HGO_SHIFT +#define MCG_C2_RANGE0_MASK MCG_C2_RANGE_MASK +#define MCG_C2_RANGE0_SHIFT MCG_C2_RANGE_SHIFT +#define MCG_C2_RANGE0(x) MCG_C2_RANGE(x) +#define MCG_C9 This_symbol_has_been_deprecated +#define MCM_PLACR_REG(base) This_symbol_has_been_deprecated +#define MCM_PLACR_ARB_MASK This_symbol_has_been_deprecated +#define MCM_PLACR_ARB_SHIFT This_symbol_has_been_deprecated +#define MCM_PLACR This_symbol_has_been_deprecated + +/*! + * @} + */ /* end of group Backward_Compatibility_Symbols */ + + +#else /* #if !defined(MCU_MK64F12) */ + /* There is already included the same memory map. Check if it is compatible (has the same major version) */ + #if (MCU_MEM_MAP_VERSION != 0x0200u) + #if (!defined(MCU_MEM_MAP_SUPPRESS_VERSION_WARNING)) + #warning There are included two not compatible versions of memory maps. Please check possible differences. + #endif /* (!defined(MCU_MEM_MAP_SUPPRESS_VERSION_WARNING)) */ + #endif /* (MCU_MEM_MAP_VERSION != 0x0200u) */ +#endif /* #if !defined(MCU_MK64F12) */ + +#endif /* #if !defined(MK64F12_H_) */ + +/* MK64F12.h, eof. */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_adc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,2578 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_ADC_REGISTERS_H__ +#define __HW_ADC_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 ADC + * + * Analog-to-Digital Converter + * + * Registers defined in this header file: + * - HW_ADC_SC1n - ADC Status and Control Registers 1 + * - HW_ADC_CFG1 - ADC Configuration Register 1 + * - HW_ADC_CFG2 - ADC Configuration Register 2 + * - HW_ADC_Rn - ADC Data Result Register + * - HW_ADC_CV1 - Compare Value Registers + * - HW_ADC_CV2 - Compare Value Registers + * - HW_ADC_SC2 - Status and Control Register 2 + * - HW_ADC_SC3 - Status and Control Register 3 + * - HW_ADC_OFS - ADC Offset Correction Register + * - HW_ADC_PG - ADC Plus-Side Gain Register + * - HW_ADC_MG - ADC Minus-Side Gain Register + * - HW_ADC_CLPD - ADC Plus-Side General Calibration Value Register + * - HW_ADC_CLPS - ADC Plus-Side General Calibration Value Register + * - HW_ADC_CLP4 - ADC Plus-Side General Calibration Value Register + * - HW_ADC_CLP3 - ADC Plus-Side General Calibration Value Register + * - HW_ADC_CLP2 - ADC Plus-Side General Calibration Value Register + * - HW_ADC_CLP1 - ADC Plus-Side General Calibration Value Register + * - HW_ADC_CLP0 - ADC Plus-Side General Calibration Value Register + * - HW_ADC_CLMD - ADC Minus-Side General Calibration Value Register + * - HW_ADC_CLMS - ADC Minus-Side General Calibration Value Register + * - HW_ADC_CLM4 - ADC Minus-Side General Calibration Value Register + * - HW_ADC_CLM3 - ADC Minus-Side General Calibration Value Register + * - HW_ADC_CLM2 - ADC Minus-Side General Calibration Value Register + * - HW_ADC_CLM1 - ADC Minus-Side General Calibration Value Register + * - HW_ADC_CLM0 - ADC Minus-Side General Calibration Value Register + * + * - hw_adc_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_ADC_BASE +#define HW_ADC_INSTANCE_COUNT (2U) //!< Number of instances of the ADC module. +#define HW_ADC0 (0U) //!< Instance number for ADC0. +#define HW_ADC1 (1U) //!< Instance number for ADC1. +#define REGS_ADC0_BASE (0x4003B000U) //!< Base address for ADC0. +#define REGS_ADC1_BASE (0x400BB000U) //!< Base address for ADC1. + +//! @brief Table of base addresses for ADC instances. +static const uint32_t __g_regs_ADC_base_addresses[] = { + REGS_ADC0_BASE, + REGS_ADC1_BASE, + }; + +//! @brief Get the base address of ADC by instance number. +//! @param x ADC instance number, from 0 through 1. +#define REGS_ADC_BASE(x) (__g_regs_ADC_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of ADC. +#define REGS_ADC_INSTANCE(b) ((b) == REGS_ADC0_BASE ? HW_ADC0 : (b) == REGS_ADC1_BASE ? HW_ADC1 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_SC1n - ADC Status and Control Registers 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_SC1n - ADC Status and Control Registers 1 (RW) + * + * Reset value: 0x0000001FU + * + * SC1A is used for both software and hardware trigger modes of operation. To + * allow sequential conversions of the ADC to be triggered by internal peripherals, + * the ADC can have more than one status and control register: one for each + * conversion. The SC1B-SC1n registers indicate potentially multiple SC1 registers + * for use only in hardware trigger mode. See the chip configuration information + * about the number of SC1n registers specific to this device. The SC1n registers + * have identical fields, and are used in a "ping-pong" approach to control ADC + * operation. At any one point in time, only one of the SC1n registers is actively + * controlling ADC conversions. Updating SC1A while SC1n is actively controlling + * a conversion is allowed, and vice-versa for any of the SC1n registers specific + * to this MCU. Writing SC1A while SC1A is actively controlling a conversion + * aborts the current conversion. In Software Trigger mode, when SC2[ADTRG]=0, + * writes to SC1A subsequently initiate a new conversion, if SC1[ADCH] contains a + * value other than all 1s. Writing any of the SC1n registers while that specific + * SC1n register is actively controlling a conversion aborts the current conversion. + * None of the SC1B-SC1n registers are used for software trigger operation and + * therefore writes to the SC1B-SC1n registers do not initiate a new conversion. + */ +typedef union _hw_adc_sc1n +{ + uint32_t U; + struct _hw_adc_sc1n_bitfields + { + uint32_t ADCH : 5; //!< [4:0] Input channel select + uint32_t DIFF : 1; //!< [5] Differential Mode Enable + uint32_t AIEN : 1; //!< [6] Interrupt Enable + uint32_t COCO : 1; //!< [7] Conversion Complete Flag + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_adc_sc1n_t; +#endif + +/*! + * @name Constants and macros for entire ADC_SC1n register + */ +//@{ +#define HW_ADC_SC1n_COUNT (2U) + +#define HW_ADC_SC1n_ADDR(x, n) (REGS_ADC_BASE(x) + 0x0U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_SC1n(x, n) (*(__IO hw_adc_sc1n_t *) HW_ADC_SC1n_ADDR(x, n)) +#define HW_ADC_SC1n_RD(x, n) (HW_ADC_SC1n(x, n).U) +#define HW_ADC_SC1n_WR(x, n, v) (HW_ADC_SC1n(x, n).U = (v)) +#define HW_ADC_SC1n_SET(x, n, v) (HW_ADC_SC1n_WR(x, n, HW_ADC_SC1n_RD(x, n) | (v))) +#define HW_ADC_SC1n_CLR(x, n, v) (HW_ADC_SC1n_WR(x, n, HW_ADC_SC1n_RD(x, n) & ~(v))) +#define HW_ADC_SC1n_TOG(x, n, v) (HW_ADC_SC1n_WR(x, n, HW_ADC_SC1n_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_SC1n bitfields + */ + +/*! + * @name Register ADC_SC1n, field ADCH[4:0] (RW) + * + * Selects one of the input channels. The input channel decode depends on the + * value of DIFF. DAD0-DAD3 are associated with the input pin pairs DADPx and + * DADMx. Some of the input channel options in the bitfield-setting descriptions might + * not be available for your device. For the actual ADC channel assignments for + * your device, see the Chip Configuration details. The successive approximation + * converter subsystem is turned off when the channel select bits are all set, + * that is, ADCH = 11111. This feature allows explicit disabling of the ADC and + * isolation of the input channel from all sources. Terminating continuous + * conversions this way prevents an additional single conversion from being performed. It + * is not necessary to set ADCH to all 1s to place the ADC in a low-power state + * when continuous conversions are not enabled because the module automatically + * enters a low-power state when a conversion completes. + * + * Values: + * - 00000 - When DIFF=0, DADP0 is selected as input; when DIFF=1, DAD0 is + * selected as input. + * - 00001 - When DIFF=0, DADP1 is selected as input; when DIFF=1, DAD1 is + * selected as input. + * - 00010 - When DIFF=0, DADP2 is selected as input; when DIFF=1, DAD2 is + * selected as input. + * - 00011 - When DIFF=0, DADP3 is selected as input; when DIFF=1, DAD3 is + * selected as input. + * - 00100 - When DIFF=0, AD4 is selected as input; when DIFF=1, it is reserved. + * - 00101 - When DIFF=0, AD5 is selected as input; when DIFF=1, it is reserved. + * - 00110 - When DIFF=0, AD6 is selected as input; when DIFF=1, it is reserved. + * - 00111 - When DIFF=0, AD7 is selected as input; when DIFF=1, it is reserved. + * - 01000 - When DIFF=0, AD8 is selected as input; when DIFF=1, it is reserved. + * - 01001 - When DIFF=0, AD9 is selected as input; when DIFF=1, it is reserved. + * - 01010 - When DIFF=0, AD10 is selected as input; when DIFF=1, it is reserved. + * - 01011 - When DIFF=0, AD11 is selected as input; when DIFF=1, it is reserved. + * - 01100 - When DIFF=0, AD12 is selected as input; when DIFF=1, it is reserved. + * - 01101 - When DIFF=0, AD13 is selected as input; when DIFF=1, it is reserved. + * - 01110 - When DIFF=0, AD14 is selected as input; when DIFF=1, it is reserved. + * - 01111 - When DIFF=0, AD15 is selected as input; when DIFF=1, it is reserved. + * - 10000 - When DIFF=0, AD16 is selected as input; when DIFF=1, it is reserved. + * - 10001 - When DIFF=0, AD17 is selected as input; when DIFF=1, it is reserved. + * - 10010 - When DIFF=0, AD18 is selected as input; when DIFF=1, it is reserved. + * - 10011 - When DIFF=0, AD19 is selected as input; when DIFF=1, it is reserved. + * - 10100 - When DIFF=0, AD20 is selected as input; when DIFF=1, it is reserved. + * - 10101 - When DIFF=0, AD21 is selected as input; when DIFF=1, it is reserved. + * - 10110 - When DIFF=0, AD22 is selected as input; when DIFF=1, it is reserved. + * - 10111 - When DIFF=0, AD23 is selected as input; when DIFF=1, it is reserved. + * - 11000 - Reserved. + * - 11001 - Reserved. + * - 11010 - When DIFF=0, Temp Sensor (single-ended) is selected as input; when + * DIFF=1, Temp Sensor (differential) is selected as input. + * - 11011 - When DIFF=0, Bandgap (single-ended) is selected as input; when + * DIFF=1, Bandgap (differential) is selected as input. + * - 11100 - Reserved. + * - 11101 - When DIFF=0,VREFSH is selected as input; when DIFF=1, -VREFSH + * (differential) is selected as input. Voltage reference selected is determined + * by SC2[REFSEL]. + * - 11110 - When DIFF=0,VREFSL is selected as input; when DIFF=1, it is + * reserved. Voltage reference selected is determined by SC2[REFSEL]. + * - 11111 - Module is disabled. + */ +//@{ +#define BP_ADC_SC1n_ADCH (0U) //!< Bit position for ADC_SC1n_ADCH. +#define BM_ADC_SC1n_ADCH (0x0000001FU) //!< Bit mask for ADC_SC1n_ADCH. +#define BS_ADC_SC1n_ADCH (5U) //!< Bit field size in bits for ADC_SC1n_ADCH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC1n_ADCH field. +#define BR_ADC_SC1n_ADCH(x, n) (HW_ADC_SC1n(x, n).B.ADCH) +#endif + +//! @brief Format value for bitfield ADC_SC1n_ADCH. +#define BF_ADC_SC1n_ADCH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC1n_ADCH), uint32_t) & BM_ADC_SC1n_ADCH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADCH field to a new value. +#define BW_ADC_SC1n_ADCH(x, n, v) (HW_ADC_SC1n_WR(x, n, (HW_ADC_SC1n_RD(x, n) & ~BM_ADC_SC1n_ADCH) | BF_ADC_SC1n_ADCH(v))) +#endif +//@} + +/*! + * @name Register ADC_SC1n, field DIFF[5] (RW) + * + * Configures the ADC to operate in differential mode. When enabled, this mode + * automatically selects from the differential channels, and changes the + * conversion algorithm and the number of cycles to complete a conversion. + * + * Values: + * - 0 - Single-ended conversions and input channels are selected. + * - 1 - Differential conversions and input channels are selected. + */ +//@{ +#define BP_ADC_SC1n_DIFF (5U) //!< Bit position for ADC_SC1n_DIFF. +#define BM_ADC_SC1n_DIFF (0x00000020U) //!< Bit mask for ADC_SC1n_DIFF. +#define BS_ADC_SC1n_DIFF (1U) //!< Bit field size in bits for ADC_SC1n_DIFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC1n_DIFF field. +#define BR_ADC_SC1n_DIFF(x, n) (BITBAND_ACCESS32(HW_ADC_SC1n_ADDR(x, n), BP_ADC_SC1n_DIFF)) +#endif + +//! @brief Format value for bitfield ADC_SC1n_DIFF. +#define BF_ADC_SC1n_DIFF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC1n_DIFF), uint32_t) & BM_ADC_SC1n_DIFF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DIFF field to a new value. +#define BW_ADC_SC1n_DIFF(x, n, v) (BITBAND_ACCESS32(HW_ADC_SC1n_ADDR(x, n), BP_ADC_SC1n_DIFF) = (v)) +#endif +//@} + +/*! + * @name Register ADC_SC1n, field AIEN[6] (RW) + * + * Enables conversion complete interrupts. When COCO becomes set while the + * respective AIEN is high, an interrupt is asserted. + * + * Values: + * - 0 - Conversion complete interrupt is disabled. + * - 1 - Conversion complete interrupt is enabled. + */ +//@{ +#define BP_ADC_SC1n_AIEN (6U) //!< Bit position for ADC_SC1n_AIEN. +#define BM_ADC_SC1n_AIEN (0x00000040U) //!< Bit mask for ADC_SC1n_AIEN. +#define BS_ADC_SC1n_AIEN (1U) //!< Bit field size in bits for ADC_SC1n_AIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC1n_AIEN field. +#define BR_ADC_SC1n_AIEN(x, n) (BITBAND_ACCESS32(HW_ADC_SC1n_ADDR(x, n), BP_ADC_SC1n_AIEN)) +#endif + +//! @brief Format value for bitfield ADC_SC1n_AIEN. +#define BF_ADC_SC1n_AIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC1n_AIEN), uint32_t) & BM_ADC_SC1n_AIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AIEN field to a new value. +#define BW_ADC_SC1n_AIEN(x, n, v) (BITBAND_ACCESS32(HW_ADC_SC1n_ADDR(x, n), BP_ADC_SC1n_AIEN) = (v)) +#endif +//@} + +/*! + * @name Register ADC_SC1n, field COCO[7] (RO) + * + * This is a read-only field that is set each time a conversion is completed + * when the compare function is disabled, or SC2[ACFE]=0 and the hardware average + * function is disabled, or SC3[AVGE]=0. When the compare function is enabled, or + * SC2[ACFE]=1, COCO is set upon completion of a conversion only if the compare + * result is true. When the hardware average function is enabled, or SC3[AVGE]=1, + * COCO is set upon completion of the selected number of conversions (determined + * by AVGS). COCO in SC1A is also set at the completion of a calibration sequence. + * COCO is cleared when the respective SC1n register is written or when the + * respective Rn register is read. + * + * Values: + * - 0 - Conversion is not completed. + * - 1 - Conversion is completed. + */ +//@{ +#define BP_ADC_SC1n_COCO (7U) //!< Bit position for ADC_SC1n_COCO. +#define BM_ADC_SC1n_COCO (0x00000080U) //!< Bit mask for ADC_SC1n_COCO. +#define BS_ADC_SC1n_COCO (1U) //!< Bit field size in bits for ADC_SC1n_COCO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC1n_COCO field. +#define BR_ADC_SC1n_COCO(x, n) (BITBAND_ACCESS32(HW_ADC_SC1n_ADDR(x, n), BP_ADC_SC1n_COCO)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CFG1 - ADC Configuration Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CFG1 - ADC Configuration Register 1 (RW) + * + * Reset value: 0x00000000U + * + * The configuration Register 1 (CFG1) selects the mode of operation, clock + * source, clock divide, and configuration for low power or long sample time. + */ +typedef union _hw_adc_cfg1 +{ + uint32_t U; + struct _hw_adc_cfg1_bitfields + { + uint32_t ADICLK : 2; //!< [1:0] Input Clock Select + uint32_t MODE : 2; //!< [3:2] Conversion mode selection + uint32_t ADLSMP : 1; //!< [4] Sample Time Configuration + uint32_t ADIV : 2; //!< [6:5] Clock Divide Select + uint32_t ADLPC : 1; //!< [7] Low-Power Configuration + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_adc_cfg1_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CFG1 register + */ +//@{ +#define HW_ADC_CFG1_ADDR(x) (REGS_ADC_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CFG1(x) (*(__IO hw_adc_cfg1_t *) HW_ADC_CFG1_ADDR(x)) +#define HW_ADC_CFG1_RD(x) (HW_ADC_CFG1(x).U) +#define HW_ADC_CFG1_WR(x, v) (HW_ADC_CFG1(x).U = (v)) +#define HW_ADC_CFG1_SET(x, v) (HW_ADC_CFG1_WR(x, HW_ADC_CFG1_RD(x) | (v))) +#define HW_ADC_CFG1_CLR(x, v) (HW_ADC_CFG1_WR(x, HW_ADC_CFG1_RD(x) & ~(v))) +#define HW_ADC_CFG1_TOG(x, v) (HW_ADC_CFG1_WR(x, HW_ADC_CFG1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CFG1 bitfields + */ + +/*! + * @name Register ADC_CFG1, field ADICLK[1:0] (RW) + * + * Selects the input clock source to generate the internal clock, ADCK. Note + * that when the ADACK clock source is selected, it is not required to be active + * prior to conversion start. When it is selected and it is not active prior to a + * conversion start, when CFG2[ADACKEN]=0, the asynchronous clock is activated at + * the start of a conversion and deactivated when conversions are terminated. In + * this case, there is an associated clock startup delay each time the clock + * source is re-activated. + * + * Values: + * - 00 - Bus clock + * - 01 - Alternate clock 2 (ALTCLK2) + * - 10 - Alternate clock (ALTCLK) + * - 11 - Asynchronous clock (ADACK) + */ +//@{ +#define BP_ADC_CFG1_ADICLK (0U) //!< Bit position for ADC_CFG1_ADICLK. +#define BM_ADC_CFG1_ADICLK (0x00000003U) //!< Bit mask for ADC_CFG1_ADICLK. +#define BS_ADC_CFG1_ADICLK (2U) //!< Bit field size in bits for ADC_CFG1_ADICLK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CFG1_ADICLK field. +#define BR_ADC_CFG1_ADICLK(x) (HW_ADC_CFG1(x).B.ADICLK) +#endif + +//! @brief Format value for bitfield ADC_CFG1_ADICLK. +#define BF_ADC_CFG1_ADICLK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CFG1_ADICLK), uint32_t) & BM_ADC_CFG1_ADICLK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADICLK field to a new value. +#define BW_ADC_CFG1_ADICLK(x, v) (HW_ADC_CFG1_WR(x, (HW_ADC_CFG1_RD(x) & ~BM_ADC_CFG1_ADICLK) | BF_ADC_CFG1_ADICLK(v))) +#endif +//@} + +/*! + * @name Register ADC_CFG1, field MODE[3:2] (RW) + * + * Selects the ADC resolution mode. + * + * Values: + * - 00 - When DIFF=0:It is single-ended 8-bit conversion; when DIFF=1, it is + * differential 9-bit conversion with 2's complement output. + * - 01 - When DIFF=0:It is single-ended 12-bit conversion ; when DIFF=1, it is + * differential 13-bit conversion with 2's complement output. + * - 10 - When DIFF=0:It is single-ended 10-bit conversion. ; when DIFF=1, it is + * differential 11-bit conversion with 2's complement output + * - 11 - When DIFF=0:It is single-ended 16-bit conversion..; when DIFF=1, it is + * differential 16-bit conversion with 2's complement output + */ +//@{ +#define BP_ADC_CFG1_MODE (2U) //!< Bit position for ADC_CFG1_MODE. +#define BM_ADC_CFG1_MODE (0x0000000CU) //!< Bit mask for ADC_CFG1_MODE. +#define BS_ADC_CFG1_MODE (2U) //!< Bit field size in bits for ADC_CFG1_MODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CFG1_MODE field. +#define BR_ADC_CFG1_MODE(x) (HW_ADC_CFG1(x).B.MODE) +#endif + +//! @brief Format value for bitfield ADC_CFG1_MODE. +#define BF_ADC_CFG1_MODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CFG1_MODE), uint32_t) & BM_ADC_CFG1_MODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MODE field to a new value. +#define BW_ADC_CFG1_MODE(x, v) (HW_ADC_CFG1_WR(x, (HW_ADC_CFG1_RD(x) & ~BM_ADC_CFG1_MODE) | BF_ADC_CFG1_MODE(v))) +#endif +//@} + +/*! + * @name Register ADC_CFG1, field ADLSMP[4] (RW) + * + * Selects between different sample times based on the conversion mode selected. + * This field adjusts the sample period to allow higher impedance inputs to be + * accurately sampled or to maximize conversion speed for lower impedance inputs. + * Longer sample times can also be used to lower overall power consumption if + * continuous conversions are enabled and high conversion rates are not required. + * When ADLSMP=1, the long sample time select bits, (ADLSTS[1:0]), can select the + * extent of the long sample time. + * + * Values: + * - 0 - Short sample time. + * - 1 - Long sample time. + */ +//@{ +#define BP_ADC_CFG1_ADLSMP (4U) //!< Bit position for ADC_CFG1_ADLSMP. +#define BM_ADC_CFG1_ADLSMP (0x00000010U) //!< Bit mask for ADC_CFG1_ADLSMP. +#define BS_ADC_CFG1_ADLSMP (1U) //!< Bit field size in bits for ADC_CFG1_ADLSMP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CFG1_ADLSMP field. +#define BR_ADC_CFG1_ADLSMP(x) (BITBAND_ACCESS32(HW_ADC_CFG1_ADDR(x), BP_ADC_CFG1_ADLSMP)) +#endif + +//! @brief Format value for bitfield ADC_CFG1_ADLSMP. +#define BF_ADC_CFG1_ADLSMP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CFG1_ADLSMP), uint32_t) & BM_ADC_CFG1_ADLSMP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADLSMP field to a new value. +#define BW_ADC_CFG1_ADLSMP(x, v) (BITBAND_ACCESS32(HW_ADC_CFG1_ADDR(x), BP_ADC_CFG1_ADLSMP) = (v)) +#endif +//@} + +/*! + * @name Register ADC_CFG1, field ADIV[6:5] (RW) + * + * Selects the divide ratio used by the ADC to generate the internal clock ADCK. + * + * Values: + * - 00 - The divide ratio is 1 and the clock rate is input clock. + * - 01 - The divide ratio is 2 and the clock rate is (input clock)/2. + * - 10 - The divide ratio is 4 and the clock rate is (input clock)/4. + * - 11 - The divide ratio is 8 and the clock rate is (input clock)/8. + */ +//@{ +#define BP_ADC_CFG1_ADIV (5U) //!< Bit position for ADC_CFG1_ADIV. +#define BM_ADC_CFG1_ADIV (0x00000060U) //!< Bit mask for ADC_CFG1_ADIV. +#define BS_ADC_CFG1_ADIV (2U) //!< Bit field size in bits for ADC_CFG1_ADIV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CFG1_ADIV field. +#define BR_ADC_CFG1_ADIV(x) (HW_ADC_CFG1(x).B.ADIV) +#endif + +//! @brief Format value for bitfield ADC_CFG1_ADIV. +#define BF_ADC_CFG1_ADIV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CFG1_ADIV), uint32_t) & BM_ADC_CFG1_ADIV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADIV field to a new value. +#define BW_ADC_CFG1_ADIV(x, v) (HW_ADC_CFG1_WR(x, (HW_ADC_CFG1_RD(x) & ~BM_ADC_CFG1_ADIV) | BF_ADC_CFG1_ADIV(v))) +#endif +//@} + +/*! + * @name Register ADC_CFG1, field ADLPC[7] (RW) + * + * Controls the power configuration of the successive approximation converter. + * This optimizes power consumption when higher sample rates are not required. + * + * Values: + * - 0 - Normal power configuration. + * - 1 - Low-power configuration. The power is reduced at the expense of maximum + * clock speed. + */ +//@{ +#define BP_ADC_CFG1_ADLPC (7U) //!< Bit position for ADC_CFG1_ADLPC. +#define BM_ADC_CFG1_ADLPC (0x00000080U) //!< Bit mask for ADC_CFG1_ADLPC. +#define BS_ADC_CFG1_ADLPC (1U) //!< Bit field size in bits for ADC_CFG1_ADLPC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CFG1_ADLPC field. +#define BR_ADC_CFG1_ADLPC(x) (BITBAND_ACCESS32(HW_ADC_CFG1_ADDR(x), BP_ADC_CFG1_ADLPC)) +#endif + +//! @brief Format value for bitfield ADC_CFG1_ADLPC. +#define BF_ADC_CFG1_ADLPC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CFG1_ADLPC), uint32_t) & BM_ADC_CFG1_ADLPC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADLPC field to a new value. +#define BW_ADC_CFG1_ADLPC(x, v) (BITBAND_ACCESS32(HW_ADC_CFG1_ADDR(x), BP_ADC_CFG1_ADLPC) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CFG2 - ADC Configuration Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CFG2 - ADC Configuration Register 2 (RW) + * + * Reset value: 0x00000000U + * + * Configuration Register 2 (CFG2) selects the special high-speed configuration + * for very high speed conversions and selects the long sample time duration + * during long sample mode. + */ +typedef union _hw_adc_cfg2 +{ + uint32_t U; + struct _hw_adc_cfg2_bitfields + { + uint32_t ADLSTS : 2; //!< [1:0] Long Sample Time Select + uint32_t ADHSC : 1; //!< [2] High-Speed Configuration + uint32_t ADACKEN : 1; //!< [3] Asynchronous Clock Output Enable + uint32_t MUXSEL : 1; //!< [4] ADC Mux Select + uint32_t RESERVED0 : 27; //!< [31:5] + } B; +} hw_adc_cfg2_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CFG2 register + */ +//@{ +#define HW_ADC_CFG2_ADDR(x) (REGS_ADC_BASE(x) + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CFG2(x) (*(__IO hw_adc_cfg2_t *) HW_ADC_CFG2_ADDR(x)) +#define HW_ADC_CFG2_RD(x) (HW_ADC_CFG2(x).U) +#define HW_ADC_CFG2_WR(x, v) (HW_ADC_CFG2(x).U = (v)) +#define HW_ADC_CFG2_SET(x, v) (HW_ADC_CFG2_WR(x, HW_ADC_CFG2_RD(x) | (v))) +#define HW_ADC_CFG2_CLR(x, v) (HW_ADC_CFG2_WR(x, HW_ADC_CFG2_RD(x) & ~(v))) +#define HW_ADC_CFG2_TOG(x, v) (HW_ADC_CFG2_WR(x, HW_ADC_CFG2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CFG2 bitfields + */ + +/*! + * @name Register ADC_CFG2, field ADLSTS[1:0] (RW) + * + * Selects between the extended sample times when long sample time is selected, + * that is, when CFG1[ADLSMP]=1. This allows higher impedance inputs to be + * accurately sampled or to maximize conversion speed for lower impedance inputs. + * Longer sample times can also be used to lower overall power consumption when + * continuous conversions are enabled if high conversion rates are not required. + * + * Values: + * - 00 - Default longest sample time; 20 extra ADCK cycles; 24 ADCK cycles + * total. + * - 01 - 12 extra ADCK cycles; 16 ADCK cycles total sample time. + * - 10 - 6 extra ADCK cycles; 10 ADCK cycles total sample time. + * - 11 - 2 extra ADCK cycles; 6 ADCK cycles total sample time. + */ +//@{ +#define BP_ADC_CFG2_ADLSTS (0U) //!< Bit position for ADC_CFG2_ADLSTS. +#define BM_ADC_CFG2_ADLSTS (0x00000003U) //!< Bit mask for ADC_CFG2_ADLSTS. +#define BS_ADC_CFG2_ADLSTS (2U) //!< Bit field size in bits for ADC_CFG2_ADLSTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CFG2_ADLSTS field. +#define BR_ADC_CFG2_ADLSTS(x) (HW_ADC_CFG2(x).B.ADLSTS) +#endif + +//! @brief Format value for bitfield ADC_CFG2_ADLSTS. +#define BF_ADC_CFG2_ADLSTS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CFG2_ADLSTS), uint32_t) & BM_ADC_CFG2_ADLSTS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADLSTS field to a new value. +#define BW_ADC_CFG2_ADLSTS(x, v) (HW_ADC_CFG2_WR(x, (HW_ADC_CFG2_RD(x) & ~BM_ADC_CFG2_ADLSTS) | BF_ADC_CFG2_ADLSTS(v))) +#endif +//@} + +/*! + * @name Register ADC_CFG2, field ADHSC[2] (RW) + * + * Configures the ADC for very high-speed operation. The conversion sequence is + * altered with 2 ADCK cycles added to the conversion time to allow higher speed + * conversion clocks. + * + * Values: + * - 0 - Normal conversion sequence selected. + * - 1 - High-speed conversion sequence selected with 2 additional ADCK cycles + * to total conversion time. + */ +//@{ +#define BP_ADC_CFG2_ADHSC (2U) //!< Bit position for ADC_CFG2_ADHSC. +#define BM_ADC_CFG2_ADHSC (0x00000004U) //!< Bit mask for ADC_CFG2_ADHSC. +#define BS_ADC_CFG2_ADHSC (1U) //!< Bit field size in bits for ADC_CFG2_ADHSC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CFG2_ADHSC field. +#define BR_ADC_CFG2_ADHSC(x) (BITBAND_ACCESS32(HW_ADC_CFG2_ADDR(x), BP_ADC_CFG2_ADHSC)) +#endif + +//! @brief Format value for bitfield ADC_CFG2_ADHSC. +#define BF_ADC_CFG2_ADHSC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CFG2_ADHSC), uint32_t) & BM_ADC_CFG2_ADHSC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADHSC field to a new value. +#define BW_ADC_CFG2_ADHSC(x, v) (BITBAND_ACCESS32(HW_ADC_CFG2_ADDR(x), BP_ADC_CFG2_ADHSC) = (v)) +#endif +//@} + +/*! + * @name Register ADC_CFG2, field ADACKEN[3] (RW) + * + * Enables the asynchronous clock source and the clock source output regardless + * of the conversion and status of CFG1[ADICLK]. Based on MCU configuration, the + * asynchronous clock may be used by other modules. See chip configuration + * information. Setting this field allows the clock to be used even while the ADC is + * idle or operating from a different clock source. Also, latency of initiating a + * single or first-continuous conversion with the asynchronous clock selected is + * reduced because the ADACK clock is already operational. + * + * Values: + * - 0 - Asynchronous clock output disabled; Asynchronous clock is enabled only + * if selected by ADICLK and a conversion is active. + * - 1 - Asynchronous clock and clock output is enabled regardless of the state + * of the ADC. + */ +//@{ +#define BP_ADC_CFG2_ADACKEN (3U) //!< Bit position for ADC_CFG2_ADACKEN. +#define BM_ADC_CFG2_ADACKEN (0x00000008U) //!< Bit mask for ADC_CFG2_ADACKEN. +#define BS_ADC_CFG2_ADACKEN (1U) //!< Bit field size in bits for ADC_CFG2_ADACKEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CFG2_ADACKEN field. +#define BR_ADC_CFG2_ADACKEN(x) (BITBAND_ACCESS32(HW_ADC_CFG2_ADDR(x), BP_ADC_CFG2_ADACKEN)) +#endif + +//! @brief Format value for bitfield ADC_CFG2_ADACKEN. +#define BF_ADC_CFG2_ADACKEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CFG2_ADACKEN), uint32_t) & BM_ADC_CFG2_ADACKEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADACKEN field to a new value. +#define BW_ADC_CFG2_ADACKEN(x, v) (BITBAND_ACCESS32(HW_ADC_CFG2_ADDR(x), BP_ADC_CFG2_ADACKEN) = (v)) +#endif +//@} + +/*! + * @name Register ADC_CFG2, field MUXSEL[4] (RW) + * + * Changes the ADC mux setting to select between alternate sets of ADC channels. + * + * Values: + * - 0 - ADxxa channels are selected. + * - 1 - ADxxb channels are selected. + */ +//@{ +#define BP_ADC_CFG2_MUXSEL (4U) //!< Bit position for ADC_CFG2_MUXSEL. +#define BM_ADC_CFG2_MUXSEL (0x00000010U) //!< Bit mask for ADC_CFG2_MUXSEL. +#define BS_ADC_CFG2_MUXSEL (1U) //!< Bit field size in bits for ADC_CFG2_MUXSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CFG2_MUXSEL field. +#define BR_ADC_CFG2_MUXSEL(x) (BITBAND_ACCESS32(HW_ADC_CFG2_ADDR(x), BP_ADC_CFG2_MUXSEL)) +#endif + +//! @brief Format value for bitfield ADC_CFG2_MUXSEL. +#define BF_ADC_CFG2_MUXSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CFG2_MUXSEL), uint32_t) & BM_ADC_CFG2_MUXSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MUXSEL field to a new value. +#define BW_ADC_CFG2_MUXSEL(x, v) (BITBAND_ACCESS32(HW_ADC_CFG2_ADDR(x), BP_ADC_CFG2_MUXSEL) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_Rn - ADC Data Result Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_Rn - ADC Data Result Register (RO) + * + * Reset value: 0x00000000U + * + * The data result registers (Rn) contain the result of an ADC conversion of the + * channel selected by the corresponding status and channel control register + * (SC1A:SC1n). For every status and channel control register, there is a + * corresponding data result register. Unused bits in R n are cleared in unsigned + * right-aligned modes and carry the sign bit (MSB) in sign-extended 2's complement modes. + * For example, when configured for 10-bit single-ended mode, D[15:10] are + * cleared. When configured for 11-bit differential mode, D[15:10] carry the sign bit, + * that is, bit 10 extended through bit 15. The following table describes the + * behavior of the data result registers in the different modes of operation. Data + * result register description Conversion mode D15 D14 D13 D12 D11 D10 D9 D8 D7 + * D6 D5 D4 D3 D2 D1 D0 Format 16-bit differential S D D D D D D D D D D D D D D D + * Signed 2's complement 16-bit single-ended D D D D D D D D D D D D D D D D + * Unsigned right justified 13-bit differential S S S S D D D D D D D D D D D D + * Sign-extended 2's complement 12-bit single-ended 0 0 0 0 D D D D D D D D D D D D + * Unsigned right-justified 11-bit differential S S S S S S D D D D D D D D D D + * Sign-extended 2's complement 10-bit single-ended 0 0 0 0 0 0 D D D D D D D D D D + * Unsigned right-justified 9-bit differential S S S S S S S S D D D D D D D D + * Sign-extended 2's complement 8-bit single-ended 0 0 0 0 0 0 0 0 D D D D D D D D + * Unsigned right-justified S: Sign bit or sign bit extension; D: Data, which is + * 2's complement data if indicated + */ +typedef union _hw_adc_rn +{ + uint32_t U; + struct _hw_adc_rn_bitfields + { + uint32_t D : 16; //!< [15:0] Data result + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_adc_rn_t; +#endif + +/*! + * @name Constants and macros for entire ADC_Rn register + */ +//@{ +#define HW_ADC_Rn_COUNT (2U) + +#define HW_ADC_Rn_ADDR(x, n) (REGS_ADC_BASE(x) + 0x10U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_Rn(x, n) (*(__I hw_adc_rn_t *) HW_ADC_Rn_ADDR(x, n)) +#define HW_ADC_Rn_RD(x, n) (HW_ADC_Rn(x, n).U) +#endif +//@} + +/* + * Constants & macros for individual ADC_Rn bitfields + */ + +/*! + * @name Register ADC_Rn, field D[15:0] (RO) + */ +//@{ +#define BP_ADC_Rn_D (0U) //!< Bit position for ADC_Rn_D. +#define BM_ADC_Rn_D (0x0000FFFFU) //!< Bit mask for ADC_Rn_D. +#define BS_ADC_Rn_D (16U) //!< Bit field size in bits for ADC_Rn_D. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_Rn_D field. +#define BR_ADC_Rn_D(x, n) (HW_ADC_Rn(x, n).B.D) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CV1 - Compare Value Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CV1 - Compare Value Registers (RW) + * + * Reset value: 0x00000000U + * + * The Compare Value Registers (CV1 and CV2) contain a compare value used to + * compare the conversion result when the compare function is enabled, that is, + * SC2[ACFE]=1. This register is formatted in the same way as the Rn registers in + * different modes of operation for both bit position definition and value format + * using unsigned or sign-extended 2's complement. Therefore, the compare function + * uses only the CVn fields that are related to the ADC mode of operation. The + * compare value 2 register (CV2) is used only when the compare range function is + * enabled, that is, SC2[ACREN]=1. + */ +typedef union _hw_adc_cv1 +{ + uint32_t U; + struct _hw_adc_cv1_bitfields + { + uint32_t CV : 16; //!< [15:0] Compare Value. + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_adc_cv1_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CV1 register + */ +//@{ +#define HW_ADC_CV1_ADDR(x) (REGS_ADC_BASE(x) + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CV1(x) (*(__IO hw_adc_cv1_t *) HW_ADC_CV1_ADDR(x)) +#define HW_ADC_CV1_RD(x) (HW_ADC_CV1(x).U) +#define HW_ADC_CV1_WR(x, v) (HW_ADC_CV1(x).U = (v)) +#define HW_ADC_CV1_SET(x, v) (HW_ADC_CV1_WR(x, HW_ADC_CV1_RD(x) | (v))) +#define HW_ADC_CV1_CLR(x, v) (HW_ADC_CV1_WR(x, HW_ADC_CV1_RD(x) & ~(v))) +#define HW_ADC_CV1_TOG(x, v) (HW_ADC_CV1_WR(x, HW_ADC_CV1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CV1 bitfields + */ + +/*! + * @name Register ADC_CV1, field CV[15:0] (RW) + */ +//@{ +#define BP_ADC_CV1_CV (0U) //!< Bit position for ADC_CV1_CV. +#define BM_ADC_CV1_CV (0x0000FFFFU) //!< Bit mask for ADC_CV1_CV. +#define BS_ADC_CV1_CV (16U) //!< Bit field size in bits for ADC_CV1_CV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CV1_CV field. +#define BR_ADC_CV1_CV(x) (HW_ADC_CV1(x).B.CV) +#endif + +//! @brief Format value for bitfield ADC_CV1_CV. +#define BF_ADC_CV1_CV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CV1_CV), uint32_t) & BM_ADC_CV1_CV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CV field to a new value. +#define BW_ADC_CV1_CV(x, v) (HW_ADC_CV1_WR(x, (HW_ADC_CV1_RD(x) & ~BM_ADC_CV1_CV) | BF_ADC_CV1_CV(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CV2 - Compare Value Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CV2 - Compare Value Registers (RW) + * + * Reset value: 0x00000000U + * + * The Compare Value Registers (CV1 and CV2) contain a compare value used to + * compare the conversion result when the compare function is enabled, that is, + * SC2[ACFE]=1. This register is formatted in the same way as the Rn registers in + * different modes of operation for both bit position definition and value format + * using unsigned or sign-extended 2's complement. Therefore, the compare function + * uses only the CVn fields that are related to the ADC mode of operation. The + * compare value 2 register (CV2) is used only when the compare range function is + * enabled, that is, SC2[ACREN]=1. + */ +typedef union _hw_adc_cv2 +{ + uint32_t U; + struct _hw_adc_cv2_bitfields + { + uint32_t CV : 16; //!< [15:0] Compare Value. + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_adc_cv2_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CV2 register + */ +//@{ +#define HW_ADC_CV2_ADDR(x) (REGS_ADC_BASE(x) + 0x1CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CV2(x) (*(__IO hw_adc_cv2_t *) HW_ADC_CV2_ADDR(x)) +#define HW_ADC_CV2_RD(x) (HW_ADC_CV2(x).U) +#define HW_ADC_CV2_WR(x, v) (HW_ADC_CV2(x).U = (v)) +#define HW_ADC_CV2_SET(x, v) (HW_ADC_CV2_WR(x, HW_ADC_CV2_RD(x) | (v))) +#define HW_ADC_CV2_CLR(x, v) (HW_ADC_CV2_WR(x, HW_ADC_CV2_RD(x) & ~(v))) +#define HW_ADC_CV2_TOG(x, v) (HW_ADC_CV2_WR(x, HW_ADC_CV2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CV2 bitfields + */ + +/*! + * @name Register ADC_CV2, field CV[15:0] (RW) + */ +//@{ +#define BP_ADC_CV2_CV (0U) //!< Bit position for ADC_CV2_CV. +#define BM_ADC_CV2_CV (0x0000FFFFU) //!< Bit mask for ADC_CV2_CV. +#define BS_ADC_CV2_CV (16U) //!< Bit field size in bits for ADC_CV2_CV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CV2_CV field. +#define BR_ADC_CV2_CV(x) (HW_ADC_CV2(x).B.CV) +#endif + +//! @brief Format value for bitfield ADC_CV2_CV. +#define BF_ADC_CV2_CV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CV2_CV), uint32_t) & BM_ADC_CV2_CV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CV field to a new value. +#define BW_ADC_CV2_CV(x, v) (HW_ADC_CV2_WR(x, (HW_ADC_CV2_RD(x) & ~BM_ADC_CV2_CV) | BF_ADC_CV2_CV(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_SC2 - Status and Control Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_SC2 - Status and Control Register 2 (RW) + * + * Reset value: 0x00000000U + * + * The status and control register 2 (SC2) contains the conversion active, + * hardware/software trigger select, compare function, and voltage reference select of + * the ADC module. + */ +typedef union _hw_adc_sc2 +{ + uint32_t U; + struct _hw_adc_sc2_bitfields + { + uint32_t REFSEL : 2; //!< [1:0] Voltage Reference Selection + uint32_t DMAEN : 1; //!< [2] DMA Enable + uint32_t ACREN : 1; //!< [3] Compare Function Range Enable + uint32_t ACFGT : 1; //!< [4] Compare Function Greater Than Enable + uint32_t ACFE : 1; //!< [5] Compare Function Enable + uint32_t ADTRG : 1; //!< [6] Conversion Trigger Select + uint32_t ADACT : 1; //!< [7] Conversion Active + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_adc_sc2_t; +#endif + +/*! + * @name Constants and macros for entire ADC_SC2 register + */ +//@{ +#define HW_ADC_SC2_ADDR(x) (REGS_ADC_BASE(x) + 0x20U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_SC2(x) (*(__IO hw_adc_sc2_t *) HW_ADC_SC2_ADDR(x)) +#define HW_ADC_SC2_RD(x) (HW_ADC_SC2(x).U) +#define HW_ADC_SC2_WR(x, v) (HW_ADC_SC2(x).U = (v)) +#define HW_ADC_SC2_SET(x, v) (HW_ADC_SC2_WR(x, HW_ADC_SC2_RD(x) | (v))) +#define HW_ADC_SC2_CLR(x, v) (HW_ADC_SC2_WR(x, HW_ADC_SC2_RD(x) & ~(v))) +#define HW_ADC_SC2_TOG(x, v) (HW_ADC_SC2_WR(x, HW_ADC_SC2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_SC2 bitfields + */ + +/*! + * @name Register ADC_SC2, field REFSEL[1:0] (RW) + * + * Selects the voltage reference source used for conversions. + * + * Values: + * - 00 - Default voltage reference pin pair, that is, external pins VREFH and + * VREFL + * - 01 - Alternate reference pair, that is, VALTH and VALTL . This pair may be + * additional external pins or internal sources depending on the MCU + * configuration. See the chip configuration information for details specific to this + * MCU + * - 10 - Reserved + * - 11 - Reserved + */ +//@{ +#define BP_ADC_SC2_REFSEL (0U) //!< Bit position for ADC_SC2_REFSEL. +#define BM_ADC_SC2_REFSEL (0x00000003U) //!< Bit mask for ADC_SC2_REFSEL. +#define BS_ADC_SC2_REFSEL (2U) //!< Bit field size in bits for ADC_SC2_REFSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC2_REFSEL field. +#define BR_ADC_SC2_REFSEL(x) (HW_ADC_SC2(x).B.REFSEL) +#endif + +//! @brief Format value for bitfield ADC_SC2_REFSEL. +#define BF_ADC_SC2_REFSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC2_REFSEL), uint32_t) & BM_ADC_SC2_REFSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the REFSEL field to a new value. +#define BW_ADC_SC2_REFSEL(x, v) (HW_ADC_SC2_WR(x, (HW_ADC_SC2_RD(x) & ~BM_ADC_SC2_REFSEL) | BF_ADC_SC2_REFSEL(v))) +#endif +//@} + +/*! + * @name Register ADC_SC2, field DMAEN[2] (RW) + * + * Values: + * - 0 - DMA is disabled. + * - 1 - DMA is enabled and will assert the ADC DMA request during an ADC + * conversion complete event noted when any of the SC1n[COCO] flags is asserted. + */ +//@{ +#define BP_ADC_SC2_DMAEN (2U) //!< Bit position for ADC_SC2_DMAEN. +#define BM_ADC_SC2_DMAEN (0x00000004U) //!< Bit mask for ADC_SC2_DMAEN. +#define BS_ADC_SC2_DMAEN (1U) //!< Bit field size in bits for ADC_SC2_DMAEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC2_DMAEN field. +#define BR_ADC_SC2_DMAEN(x) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_DMAEN)) +#endif + +//! @brief Format value for bitfield ADC_SC2_DMAEN. +#define BF_ADC_SC2_DMAEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC2_DMAEN), uint32_t) & BM_ADC_SC2_DMAEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAEN field to a new value. +#define BW_ADC_SC2_DMAEN(x, v) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_DMAEN) = (v)) +#endif +//@} + +/*! + * @name Register ADC_SC2, field ACREN[3] (RW) + * + * Configures the compare function to check if the conversion result of the + * input being monitored is either between or outside the range formed by CV1 and CV2 + * determined by the value of ACFGT. ACFE must be set for ACFGT to have any + * effect. + * + * Values: + * - 0 - Range function disabled. Only CV1 is compared. + * - 1 - Range function enabled. Both CV1 and CV2 are compared. + */ +//@{ +#define BP_ADC_SC2_ACREN (3U) //!< Bit position for ADC_SC2_ACREN. +#define BM_ADC_SC2_ACREN (0x00000008U) //!< Bit mask for ADC_SC2_ACREN. +#define BS_ADC_SC2_ACREN (1U) //!< Bit field size in bits for ADC_SC2_ACREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC2_ACREN field. +#define BR_ADC_SC2_ACREN(x) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_ACREN)) +#endif + +//! @brief Format value for bitfield ADC_SC2_ACREN. +#define BF_ADC_SC2_ACREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC2_ACREN), uint32_t) & BM_ADC_SC2_ACREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ACREN field to a new value. +#define BW_ADC_SC2_ACREN(x, v) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_ACREN) = (v)) +#endif +//@} + +/*! + * @name Register ADC_SC2, field ACFGT[4] (RW) + * + * Configures the compare function to check the conversion result relative to + * the CV1 and CV2 based upon the value of ACREN. ACFE must be set for ACFGT to + * have any effect. + * + * Values: + * - 0 - Configures less than threshold, outside range not inclusive and inside + * range not inclusive; functionality based on the values placed in CV1 and + * CV2. + * - 1 - Configures greater than or equal to threshold, outside and inside + * ranges inclusive; functionality based on the values placed in CV1 and CV2. + */ +//@{ +#define BP_ADC_SC2_ACFGT (4U) //!< Bit position for ADC_SC2_ACFGT. +#define BM_ADC_SC2_ACFGT (0x00000010U) //!< Bit mask for ADC_SC2_ACFGT. +#define BS_ADC_SC2_ACFGT (1U) //!< Bit field size in bits for ADC_SC2_ACFGT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC2_ACFGT field. +#define BR_ADC_SC2_ACFGT(x) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_ACFGT)) +#endif + +//! @brief Format value for bitfield ADC_SC2_ACFGT. +#define BF_ADC_SC2_ACFGT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC2_ACFGT), uint32_t) & BM_ADC_SC2_ACFGT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ACFGT field to a new value. +#define BW_ADC_SC2_ACFGT(x, v) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_ACFGT) = (v)) +#endif +//@} + +/*! + * @name Register ADC_SC2, field ACFE[5] (RW) + * + * Enables the compare function. + * + * Values: + * - 0 - Compare function disabled. + * - 1 - Compare function enabled. + */ +//@{ +#define BP_ADC_SC2_ACFE (5U) //!< Bit position for ADC_SC2_ACFE. +#define BM_ADC_SC2_ACFE (0x00000020U) //!< Bit mask for ADC_SC2_ACFE. +#define BS_ADC_SC2_ACFE (1U) //!< Bit field size in bits for ADC_SC2_ACFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC2_ACFE field. +#define BR_ADC_SC2_ACFE(x) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_ACFE)) +#endif + +//! @brief Format value for bitfield ADC_SC2_ACFE. +#define BF_ADC_SC2_ACFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC2_ACFE), uint32_t) & BM_ADC_SC2_ACFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ACFE field to a new value. +#define BW_ADC_SC2_ACFE(x, v) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_ACFE) = (v)) +#endif +//@} + +/*! + * @name Register ADC_SC2, field ADTRG[6] (RW) + * + * Selects the type of trigger used for initiating a conversion. Two types of + * trigger are selectable: Software trigger: When software trigger is selected, a + * conversion is initiated following a write to SC1A. Hardware trigger: When + * hardware trigger is selected, a conversion is initiated following the assertion of + * the ADHWT input after a pulse of the ADHWTSn input. + * + * Values: + * - 0 - Software trigger selected. + * - 1 - Hardware trigger selected. + */ +//@{ +#define BP_ADC_SC2_ADTRG (6U) //!< Bit position for ADC_SC2_ADTRG. +#define BM_ADC_SC2_ADTRG (0x00000040U) //!< Bit mask for ADC_SC2_ADTRG. +#define BS_ADC_SC2_ADTRG (1U) //!< Bit field size in bits for ADC_SC2_ADTRG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC2_ADTRG field. +#define BR_ADC_SC2_ADTRG(x) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_ADTRG)) +#endif + +//! @brief Format value for bitfield ADC_SC2_ADTRG. +#define BF_ADC_SC2_ADTRG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC2_ADTRG), uint32_t) & BM_ADC_SC2_ADTRG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADTRG field to a new value. +#define BW_ADC_SC2_ADTRG(x, v) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_ADTRG) = (v)) +#endif +//@} + +/*! + * @name Register ADC_SC2, field ADACT[7] (RO) + * + * Indicates that a conversion or hardware averaging is in progress. ADACT is + * set when a conversion is initiated and cleared when a conversion is completed or + * aborted. + * + * Values: + * - 0 - Conversion not in progress. + * - 1 - Conversion in progress. + */ +//@{ +#define BP_ADC_SC2_ADACT (7U) //!< Bit position for ADC_SC2_ADACT. +#define BM_ADC_SC2_ADACT (0x00000080U) //!< Bit mask for ADC_SC2_ADACT. +#define BS_ADC_SC2_ADACT (1U) //!< Bit field size in bits for ADC_SC2_ADACT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC2_ADACT field. +#define BR_ADC_SC2_ADACT(x) (BITBAND_ACCESS32(HW_ADC_SC2_ADDR(x), BP_ADC_SC2_ADACT)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_SC3 - Status and Control Register 3 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_SC3 - Status and Control Register 3 (RW) + * + * Reset value: 0x00000000U + * + * The Status and Control Register 3 (SC3) controls the calibration, continuous + * convert, and hardware averaging functions of the ADC module. + */ +typedef union _hw_adc_sc3 +{ + uint32_t U; + struct _hw_adc_sc3_bitfields + { + uint32_t AVGS : 2; //!< [1:0] Hardware Average Select + uint32_t AVGE : 1; //!< [2] Hardware Average Enable + uint32_t ADCO : 1; //!< [3] Continuous Conversion Enable + uint32_t RESERVED0 : 2; //!< [5:4] + uint32_t CALF : 1; //!< [6] Calibration Failed Flag + uint32_t CAL : 1; //!< [7] Calibration + uint32_t RESERVED1 : 24; //!< [31:8] + } B; +} hw_adc_sc3_t; +#endif + +/*! + * @name Constants and macros for entire ADC_SC3 register + */ +//@{ +#define HW_ADC_SC3_ADDR(x) (REGS_ADC_BASE(x) + 0x24U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_SC3(x) (*(__IO hw_adc_sc3_t *) HW_ADC_SC3_ADDR(x)) +#define HW_ADC_SC3_RD(x) (HW_ADC_SC3(x).U) +#define HW_ADC_SC3_WR(x, v) (HW_ADC_SC3(x).U = (v)) +#define HW_ADC_SC3_SET(x, v) (HW_ADC_SC3_WR(x, HW_ADC_SC3_RD(x) | (v))) +#define HW_ADC_SC3_CLR(x, v) (HW_ADC_SC3_WR(x, HW_ADC_SC3_RD(x) & ~(v))) +#define HW_ADC_SC3_TOG(x, v) (HW_ADC_SC3_WR(x, HW_ADC_SC3_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_SC3 bitfields + */ + +/*! + * @name Register ADC_SC3, field AVGS[1:0] (RW) + * + * Determines how many ADC conversions will be averaged to create the ADC + * average result. + * + * Values: + * - 00 - 4 samples averaged. + * - 01 - 8 samples averaged. + * - 10 - 16 samples averaged. + * - 11 - 32 samples averaged. + */ +//@{ +#define BP_ADC_SC3_AVGS (0U) //!< Bit position for ADC_SC3_AVGS. +#define BM_ADC_SC3_AVGS (0x00000003U) //!< Bit mask for ADC_SC3_AVGS. +#define BS_ADC_SC3_AVGS (2U) //!< Bit field size in bits for ADC_SC3_AVGS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC3_AVGS field. +#define BR_ADC_SC3_AVGS(x) (HW_ADC_SC3(x).B.AVGS) +#endif + +//! @brief Format value for bitfield ADC_SC3_AVGS. +#define BF_ADC_SC3_AVGS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC3_AVGS), uint32_t) & BM_ADC_SC3_AVGS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AVGS field to a new value. +#define BW_ADC_SC3_AVGS(x, v) (HW_ADC_SC3_WR(x, (HW_ADC_SC3_RD(x) & ~BM_ADC_SC3_AVGS) | BF_ADC_SC3_AVGS(v))) +#endif +//@} + +/*! + * @name Register ADC_SC3, field AVGE[2] (RW) + * + * Enables the hardware average function of the ADC. + * + * Values: + * - 0 - Hardware average function disabled. + * - 1 - Hardware average function enabled. + */ +//@{ +#define BP_ADC_SC3_AVGE (2U) //!< Bit position for ADC_SC3_AVGE. +#define BM_ADC_SC3_AVGE (0x00000004U) //!< Bit mask for ADC_SC3_AVGE. +#define BS_ADC_SC3_AVGE (1U) //!< Bit field size in bits for ADC_SC3_AVGE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC3_AVGE field. +#define BR_ADC_SC3_AVGE(x) (BITBAND_ACCESS32(HW_ADC_SC3_ADDR(x), BP_ADC_SC3_AVGE)) +#endif + +//! @brief Format value for bitfield ADC_SC3_AVGE. +#define BF_ADC_SC3_AVGE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC3_AVGE), uint32_t) & BM_ADC_SC3_AVGE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AVGE field to a new value. +#define BW_ADC_SC3_AVGE(x, v) (BITBAND_ACCESS32(HW_ADC_SC3_ADDR(x), BP_ADC_SC3_AVGE) = (v)) +#endif +//@} + +/*! + * @name Register ADC_SC3, field ADCO[3] (RW) + * + * Enables continuous conversions. + * + * Values: + * - 0 - One conversion or one set of conversions if the hardware average + * function is enabled, that is, AVGE=1, after initiating a conversion. + * - 1 - Continuous conversions or sets of conversions if the hardware average + * function is enabled, that is, AVGE=1, after initiating a conversion. + */ +//@{ +#define BP_ADC_SC3_ADCO (3U) //!< Bit position for ADC_SC3_ADCO. +#define BM_ADC_SC3_ADCO (0x00000008U) //!< Bit mask for ADC_SC3_ADCO. +#define BS_ADC_SC3_ADCO (1U) //!< Bit field size in bits for ADC_SC3_ADCO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC3_ADCO field. +#define BR_ADC_SC3_ADCO(x) (BITBAND_ACCESS32(HW_ADC_SC3_ADDR(x), BP_ADC_SC3_ADCO)) +#endif + +//! @brief Format value for bitfield ADC_SC3_ADCO. +#define BF_ADC_SC3_ADCO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC3_ADCO), uint32_t) & BM_ADC_SC3_ADCO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADCO field to a new value. +#define BW_ADC_SC3_ADCO(x, v) (BITBAND_ACCESS32(HW_ADC_SC3_ADDR(x), BP_ADC_SC3_ADCO) = (v)) +#endif +//@} + +/*! + * @name Register ADC_SC3, field CALF[6] (RO) + * + * Displays the result of the calibration sequence. The calibration sequence + * will fail if SC2[ADTRG] = 1, any ADC register is written, or any stop mode is + * entered before the calibration sequence completes. Writing 1 to CALF clears it. + * + * Values: + * - 0 - Calibration completed normally. + * - 1 - Calibration failed. ADC accuracy specifications are not guaranteed. + */ +//@{ +#define BP_ADC_SC3_CALF (6U) //!< Bit position for ADC_SC3_CALF. +#define BM_ADC_SC3_CALF (0x00000040U) //!< Bit mask for ADC_SC3_CALF. +#define BS_ADC_SC3_CALF (1U) //!< Bit field size in bits for ADC_SC3_CALF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC3_CALF field. +#define BR_ADC_SC3_CALF(x) (BITBAND_ACCESS32(HW_ADC_SC3_ADDR(x), BP_ADC_SC3_CALF)) +#endif +//@} + +/*! + * @name Register ADC_SC3, field CAL[7] (RW) + * + * Begins the calibration sequence when set. This field stays set while the + * calibration is in progress and is cleared when the calibration sequence is + * completed. CALF must be checked to determine the result of the calibration sequence. + * Once started, the calibration routine cannot be interrupted by writes to the + * ADC registers or the results will be invalid and CALF will set. Setting CAL + * will abort any current conversion. + */ +//@{ +#define BP_ADC_SC3_CAL (7U) //!< Bit position for ADC_SC3_CAL. +#define BM_ADC_SC3_CAL (0x00000080U) //!< Bit mask for ADC_SC3_CAL. +#define BS_ADC_SC3_CAL (1U) //!< Bit field size in bits for ADC_SC3_CAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_SC3_CAL field. +#define BR_ADC_SC3_CAL(x) (BITBAND_ACCESS32(HW_ADC_SC3_ADDR(x), BP_ADC_SC3_CAL)) +#endif + +//! @brief Format value for bitfield ADC_SC3_CAL. +#define BF_ADC_SC3_CAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_SC3_CAL), uint32_t) & BM_ADC_SC3_CAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CAL field to a new value. +#define BW_ADC_SC3_CAL(x, v) (BITBAND_ACCESS32(HW_ADC_SC3_ADDR(x), BP_ADC_SC3_CAL) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_OFS - ADC Offset Correction Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_OFS - ADC Offset Correction Register (RW) + * + * Reset value: 0x00000004U + * + * The ADC Offset Correction Register (OFS) contains the user-selected or + * calibration-generated offset error correction value. This register is a 2's + * complement, left-justified, 16-bit value . The value in OFS is subtracted from the + * conversion and the result is transferred into the result registers, Rn. If the + * result is greater than the maximum or less than the minimum result value, it is + * forced to the appropriate limit for the current mode of operation. + */ +typedef union _hw_adc_ofs +{ + uint32_t U; + struct _hw_adc_ofs_bitfields + { + uint32_t OFS : 16; //!< [15:0] Offset Error Correction Value + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_adc_ofs_t; +#endif + +/*! + * @name Constants and macros for entire ADC_OFS register + */ +//@{ +#define HW_ADC_OFS_ADDR(x) (REGS_ADC_BASE(x) + 0x28U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_OFS(x) (*(__IO hw_adc_ofs_t *) HW_ADC_OFS_ADDR(x)) +#define HW_ADC_OFS_RD(x) (HW_ADC_OFS(x).U) +#define HW_ADC_OFS_WR(x, v) (HW_ADC_OFS(x).U = (v)) +#define HW_ADC_OFS_SET(x, v) (HW_ADC_OFS_WR(x, HW_ADC_OFS_RD(x) | (v))) +#define HW_ADC_OFS_CLR(x, v) (HW_ADC_OFS_WR(x, HW_ADC_OFS_RD(x) & ~(v))) +#define HW_ADC_OFS_TOG(x, v) (HW_ADC_OFS_WR(x, HW_ADC_OFS_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_OFS bitfields + */ + +/*! + * @name Register ADC_OFS, field OFS[15:0] (RW) + */ +//@{ +#define BP_ADC_OFS_OFS (0U) //!< Bit position for ADC_OFS_OFS. +#define BM_ADC_OFS_OFS (0x0000FFFFU) //!< Bit mask for ADC_OFS_OFS. +#define BS_ADC_OFS_OFS (16U) //!< Bit field size in bits for ADC_OFS_OFS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_OFS_OFS field. +#define BR_ADC_OFS_OFS(x) (HW_ADC_OFS(x).B.OFS) +#endif + +//! @brief Format value for bitfield ADC_OFS_OFS. +#define BF_ADC_OFS_OFS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_OFS_OFS), uint32_t) & BM_ADC_OFS_OFS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OFS field to a new value. +#define BW_ADC_OFS_OFS(x, v) (HW_ADC_OFS_WR(x, (HW_ADC_OFS_RD(x) & ~BM_ADC_OFS_OFS) | BF_ADC_OFS_OFS(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_PG - ADC Plus-Side Gain Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_PG - ADC Plus-Side Gain Register (RW) + * + * Reset value: 0x00008200U + * + * The Plus-Side Gain Register (PG) contains the gain error correction for the + * plus-side input in differential mode or the overall conversion in single-ended + * mode. PG, a 16-bit real number in binary format, is the gain adjustment + * factor, with the radix point fixed between ADPG15 and ADPG14. This register must be + * written by the user with the value described in the calibration procedure. + * Otherwise, the gain error specifications may not be met. + */ +typedef union _hw_adc_pg +{ + uint32_t U; + struct _hw_adc_pg_bitfields + { + uint32_t PG : 16; //!< [15:0] Plus-Side Gain + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_adc_pg_t; +#endif + +/*! + * @name Constants and macros for entire ADC_PG register + */ +//@{ +#define HW_ADC_PG_ADDR(x) (REGS_ADC_BASE(x) + 0x2CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_PG(x) (*(__IO hw_adc_pg_t *) HW_ADC_PG_ADDR(x)) +#define HW_ADC_PG_RD(x) (HW_ADC_PG(x).U) +#define HW_ADC_PG_WR(x, v) (HW_ADC_PG(x).U = (v)) +#define HW_ADC_PG_SET(x, v) (HW_ADC_PG_WR(x, HW_ADC_PG_RD(x) | (v))) +#define HW_ADC_PG_CLR(x, v) (HW_ADC_PG_WR(x, HW_ADC_PG_RD(x) & ~(v))) +#define HW_ADC_PG_TOG(x, v) (HW_ADC_PG_WR(x, HW_ADC_PG_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_PG bitfields + */ + +/*! + * @name Register ADC_PG, field PG[15:0] (RW) + */ +//@{ +#define BP_ADC_PG_PG (0U) //!< Bit position for ADC_PG_PG. +#define BM_ADC_PG_PG (0x0000FFFFU) //!< Bit mask for ADC_PG_PG. +#define BS_ADC_PG_PG (16U) //!< Bit field size in bits for ADC_PG_PG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_PG_PG field. +#define BR_ADC_PG_PG(x) (HW_ADC_PG(x).B.PG) +#endif + +//! @brief Format value for bitfield ADC_PG_PG. +#define BF_ADC_PG_PG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_PG_PG), uint32_t) & BM_ADC_PG_PG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PG field to a new value. +#define BW_ADC_PG_PG(x, v) (HW_ADC_PG_WR(x, (HW_ADC_PG_RD(x) & ~BM_ADC_PG_PG) | BF_ADC_PG_PG(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_MG - ADC Minus-Side Gain Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_MG - ADC Minus-Side Gain Register (RW) + * + * Reset value: 0x00008200U + * + * The Minus-Side Gain Register (MG) contains the gain error correction for the + * minus-side input in differential mode. This register is ignored in + * single-ended mode. MG, a 16-bit real number in binary format, is the gain adjustment + * factor, with the radix point fixed between ADMG15 and ADMG14. This register must + * be written by the user with the value described in the calibration procedure. + * Otherwise, the gain error specifications may not be met. + */ +typedef union _hw_adc_mg +{ + uint32_t U; + struct _hw_adc_mg_bitfields + { + uint32_t MG : 16; //!< [15:0] Minus-Side Gain + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_adc_mg_t; +#endif + +/*! + * @name Constants and macros for entire ADC_MG register + */ +//@{ +#define HW_ADC_MG_ADDR(x) (REGS_ADC_BASE(x) + 0x30U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_MG(x) (*(__IO hw_adc_mg_t *) HW_ADC_MG_ADDR(x)) +#define HW_ADC_MG_RD(x) (HW_ADC_MG(x).U) +#define HW_ADC_MG_WR(x, v) (HW_ADC_MG(x).U = (v)) +#define HW_ADC_MG_SET(x, v) (HW_ADC_MG_WR(x, HW_ADC_MG_RD(x) | (v))) +#define HW_ADC_MG_CLR(x, v) (HW_ADC_MG_WR(x, HW_ADC_MG_RD(x) & ~(v))) +#define HW_ADC_MG_TOG(x, v) (HW_ADC_MG_WR(x, HW_ADC_MG_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_MG bitfields + */ + +/*! + * @name Register ADC_MG, field MG[15:0] (RW) + */ +//@{ +#define BP_ADC_MG_MG (0U) //!< Bit position for ADC_MG_MG. +#define BM_ADC_MG_MG (0x0000FFFFU) //!< Bit mask for ADC_MG_MG. +#define BS_ADC_MG_MG (16U) //!< Bit field size in bits for ADC_MG_MG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_MG_MG field. +#define BR_ADC_MG_MG(x) (HW_ADC_MG(x).B.MG) +#endif + +//! @brief Format value for bitfield ADC_MG_MG. +#define BF_ADC_MG_MG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_MG_MG), uint32_t) & BM_ADC_MG_MG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MG field to a new value. +#define BW_ADC_MG_MG(x, v) (HW_ADC_MG_WR(x, (HW_ADC_MG_RD(x) & ~BM_ADC_MG_MG) | BF_ADC_MG_MG(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLPD - ADC Plus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLPD - ADC Plus-Side General Calibration Value Register (RW) + * + * Reset value: 0x0000000AU + * + * The Plus-Side General Calibration Value Registers (CLPx) contain calibration + * information that is generated by the calibration function. These registers + * contain seven calibration values of varying widths: CLP0[5:0], CLP1[6:0], + * CLP2[7:0], CLP3[8:0], CLP4[9:0], CLPS[5:0], and CLPD[5:0]. CLPx are automatically set + * when the self-calibration sequence is done, that is, CAL is cleared. If these + * registers are written by the user after calibration, the linearity error + * specifications may not be met. + */ +typedef union _hw_adc_clpd +{ + uint32_t U; + struct _hw_adc_clpd_bitfields + { + uint32_t CLPD : 6; //!< [5:0] + uint32_t RESERVED0 : 26; //!< [31:6] + } B; +} hw_adc_clpd_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLPD register + */ +//@{ +#define HW_ADC_CLPD_ADDR(x) (REGS_ADC_BASE(x) + 0x34U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLPD(x) (*(__IO hw_adc_clpd_t *) HW_ADC_CLPD_ADDR(x)) +#define HW_ADC_CLPD_RD(x) (HW_ADC_CLPD(x).U) +#define HW_ADC_CLPD_WR(x, v) (HW_ADC_CLPD(x).U = (v)) +#define HW_ADC_CLPD_SET(x, v) (HW_ADC_CLPD_WR(x, HW_ADC_CLPD_RD(x) | (v))) +#define HW_ADC_CLPD_CLR(x, v) (HW_ADC_CLPD_WR(x, HW_ADC_CLPD_RD(x) & ~(v))) +#define HW_ADC_CLPD_TOG(x, v) (HW_ADC_CLPD_WR(x, HW_ADC_CLPD_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLPD bitfields + */ + +/*! + * @name Register ADC_CLPD, field CLPD[5:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLPD_CLPD (0U) //!< Bit position for ADC_CLPD_CLPD. +#define BM_ADC_CLPD_CLPD (0x0000003FU) //!< Bit mask for ADC_CLPD_CLPD. +#define BS_ADC_CLPD_CLPD (6U) //!< Bit field size in bits for ADC_CLPD_CLPD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLPD_CLPD field. +#define BR_ADC_CLPD_CLPD(x) (HW_ADC_CLPD(x).B.CLPD) +#endif + +//! @brief Format value for bitfield ADC_CLPD_CLPD. +#define BF_ADC_CLPD_CLPD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLPD_CLPD), uint32_t) & BM_ADC_CLPD_CLPD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLPD field to a new value. +#define BW_ADC_CLPD_CLPD(x, v) (HW_ADC_CLPD_WR(x, (HW_ADC_CLPD_RD(x) & ~BM_ADC_CLPD_CLPD) | BF_ADC_CLPD_CLPD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLPS - ADC Plus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLPS - ADC Plus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000020U + * + * For more information, see CLPD register description. + */ +typedef union _hw_adc_clps +{ + uint32_t U; + struct _hw_adc_clps_bitfields + { + uint32_t CLPS : 6; //!< [5:0] + uint32_t RESERVED0 : 26; //!< [31:6] + } B; +} hw_adc_clps_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLPS register + */ +//@{ +#define HW_ADC_CLPS_ADDR(x) (REGS_ADC_BASE(x) + 0x38U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLPS(x) (*(__IO hw_adc_clps_t *) HW_ADC_CLPS_ADDR(x)) +#define HW_ADC_CLPS_RD(x) (HW_ADC_CLPS(x).U) +#define HW_ADC_CLPS_WR(x, v) (HW_ADC_CLPS(x).U = (v)) +#define HW_ADC_CLPS_SET(x, v) (HW_ADC_CLPS_WR(x, HW_ADC_CLPS_RD(x) | (v))) +#define HW_ADC_CLPS_CLR(x, v) (HW_ADC_CLPS_WR(x, HW_ADC_CLPS_RD(x) & ~(v))) +#define HW_ADC_CLPS_TOG(x, v) (HW_ADC_CLPS_WR(x, HW_ADC_CLPS_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLPS bitfields + */ + +/*! + * @name Register ADC_CLPS, field CLPS[5:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLPS_CLPS (0U) //!< Bit position for ADC_CLPS_CLPS. +#define BM_ADC_CLPS_CLPS (0x0000003FU) //!< Bit mask for ADC_CLPS_CLPS. +#define BS_ADC_CLPS_CLPS (6U) //!< Bit field size in bits for ADC_CLPS_CLPS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLPS_CLPS field. +#define BR_ADC_CLPS_CLPS(x) (HW_ADC_CLPS(x).B.CLPS) +#endif + +//! @brief Format value for bitfield ADC_CLPS_CLPS. +#define BF_ADC_CLPS_CLPS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLPS_CLPS), uint32_t) & BM_ADC_CLPS_CLPS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLPS field to a new value. +#define BW_ADC_CLPS_CLPS(x, v) (HW_ADC_CLPS_WR(x, (HW_ADC_CLPS_RD(x) & ~BM_ADC_CLPS_CLPS) | BF_ADC_CLPS_CLPS(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLP4 - ADC Plus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLP4 - ADC Plus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000200U + * + * For more information, see CLPD register description. + */ +typedef union _hw_adc_clp4 +{ + uint32_t U; + struct _hw_adc_clp4_bitfields + { + uint32_t CLP4 : 10; //!< [9:0] + uint32_t RESERVED0 : 22; //!< [31:10] + } B; +} hw_adc_clp4_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLP4 register + */ +//@{ +#define HW_ADC_CLP4_ADDR(x) (REGS_ADC_BASE(x) + 0x3CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLP4(x) (*(__IO hw_adc_clp4_t *) HW_ADC_CLP4_ADDR(x)) +#define HW_ADC_CLP4_RD(x) (HW_ADC_CLP4(x).U) +#define HW_ADC_CLP4_WR(x, v) (HW_ADC_CLP4(x).U = (v)) +#define HW_ADC_CLP4_SET(x, v) (HW_ADC_CLP4_WR(x, HW_ADC_CLP4_RD(x) | (v))) +#define HW_ADC_CLP4_CLR(x, v) (HW_ADC_CLP4_WR(x, HW_ADC_CLP4_RD(x) & ~(v))) +#define HW_ADC_CLP4_TOG(x, v) (HW_ADC_CLP4_WR(x, HW_ADC_CLP4_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLP4 bitfields + */ + +/*! + * @name Register ADC_CLP4, field CLP4[9:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLP4_CLP4 (0U) //!< Bit position for ADC_CLP4_CLP4. +#define BM_ADC_CLP4_CLP4 (0x000003FFU) //!< Bit mask for ADC_CLP4_CLP4. +#define BS_ADC_CLP4_CLP4 (10U) //!< Bit field size in bits for ADC_CLP4_CLP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLP4_CLP4 field. +#define BR_ADC_CLP4_CLP4(x) (HW_ADC_CLP4(x).B.CLP4) +#endif + +//! @brief Format value for bitfield ADC_CLP4_CLP4. +#define BF_ADC_CLP4_CLP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLP4_CLP4), uint32_t) & BM_ADC_CLP4_CLP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLP4 field to a new value. +#define BW_ADC_CLP4_CLP4(x, v) (HW_ADC_CLP4_WR(x, (HW_ADC_CLP4_RD(x) & ~BM_ADC_CLP4_CLP4) | BF_ADC_CLP4_CLP4(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLP3 - ADC Plus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLP3 - ADC Plus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000100U + * + * For more information, see CLPD register description. + */ +typedef union _hw_adc_clp3 +{ + uint32_t U; + struct _hw_adc_clp3_bitfields + { + uint32_t CLP3 : 9; //!< [8:0] + uint32_t RESERVED0 : 23; //!< [31:9] + } B; +} hw_adc_clp3_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLP3 register + */ +//@{ +#define HW_ADC_CLP3_ADDR(x) (REGS_ADC_BASE(x) + 0x40U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLP3(x) (*(__IO hw_adc_clp3_t *) HW_ADC_CLP3_ADDR(x)) +#define HW_ADC_CLP3_RD(x) (HW_ADC_CLP3(x).U) +#define HW_ADC_CLP3_WR(x, v) (HW_ADC_CLP3(x).U = (v)) +#define HW_ADC_CLP3_SET(x, v) (HW_ADC_CLP3_WR(x, HW_ADC_CLP3_RD(x) | (v))) +#define HW_ADC_CLP3_CLR(x, v) (HW_ADC_CLP3_WR(x, HW_ADC_CLP3_RD(x) & ~(v))) +#define HW_ADC_CLP3_TOG(x, v) (HW_ADC_CLP3_WR(x, HW_ADC_CLP3_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLP3 bitfields + */ + +/*! + * @name Register ADC_CLP3, field CLP3[8:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLP3_CLP3 (0U) //!< Bit position for ADC_CLP3_CLP3. +#define BM_ADC_CLP3_CLP3 (0x000001FFU) //!< Bit mask for ADC_CLP3_CLP3. +#define BS_ADC_CLP3_CLP3 (9U) //!< Bit field size in bits for ADC_CLP3_CLP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLP3_CLP3 field. +#define BR_ADC_CLP3_CLP3(x) (HW_ADC_CLP3(x).B.CLP3) +#endif + +//! @brief Format value for bitfield ADC_CLP3_CLP3. +#define BF_ADC_CLP3_CLP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLP3_CLP3), uint32_t) & BM_ADC_CLP3_CLP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLP3 field to a new value. +#define BW_ADC_CLP3_CLP3(x, v) (HW_ADC_CLP3_WR(x, (HW_ADC_CLP3_RD(x) & ~BM_ADC_CLP3_CLP3) | BF_ADC_CLP3_CLP3(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLP2 - ADC Plus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLP2 - ADC Plus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000080U + * + * For more information, see CLPD register description. + */ +typedef union _hw_adc_clp2 +{ + uint32_t U; + struct _hw_adc_clp2_bitfields + { + uint32_t CLP2 : 8; //!< [7:0] + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_adc_clp2_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLP2 register + */ +//@{ +#define HW_ADC_CLP2_ADDR(x) (REGS_ADC_BASE(x) + 0x44U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLP2(x) (*(__IO hw_adc_clp2_t *) HW_ADC_CLP2_ADDR(x)) +#define HW_ADC_CLP2_RD(x) (HW_ADC_CLP2(x).U) +#define HW_ADC_CLP2_WR(x, v) (HW_ADC_CLP2(x).U = (v)) +#define HW_ADC_CLP2_SET(x, v) (HW_ADC_CLP2_WR(x, HW_ADC_CLP2_RD(x) | (v))) +#define HW_ADC_CLP2_CLR(x, v) (HW_ADC_CLP2_WR(x, HW_ADC_CLP2_RD(x) & ~(v))) +#define HW_ADC_CLP2_TOG(x, v) (HW_ADC_CLP2_WR(x, HW_ADC_CLP2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLP2 bitfields + */ + +/*! + * @name Register ADC_CLP2, field CLP2[7:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLP2_CLP2 (0U) //!< Bit position for ADC_CLP2_CLP2. +#define BM_ADC_CLP2_CLP2 (0x000000FFU) //!< Bit mask for ADC_CLP2_CLP2. +#define BS_ADC_CLP2_CLP2 (8U) //!< Bit field size in bits for ADC_CLP2_CLP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLP2_CLP2 field. +#define BR_ADC_CLP2_CLP2(x) (HW_ADC_CLP2(x).B.CLP2) +#endif + +//! @brief Format value for bitfield ADC_CLP2_CLP2. +#define BF_ADC_CLP2_CLP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLP2_CLP2), uint32_t) & BM_ADC_CLP2_CLP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLP2 field to a new value. +#define BW_ADC_CLP2_CLP2(x, v) (HW_ADC_CLP2_WR(x, (HW_ADC_CLP2_RD(x) & ~BM_ADC_CLP2_CLP2) | BF_ADC_CLP2_CLP2(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLP1 - ADC Plus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLP1 - ADC Plus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000040U + * + * For more information, see CLPD register description. + */ +typedef union _hw_adc_clp1 +{ + uint32_t U; + struct _hw_adc_clp1_bitfields + { + uint32_t CLP1 : 7; //!< [6:0] + uint32_t RESERVED0 : 25; //!< [31:7] + } B; +} hw_adc_clp1_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLP1 register + */ +//@{ +#define HW_ADC_CLP1_ADDR(x) (REGS_ADC_BASE(x) + 0x48U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLP1(x) (*(__IO hw_adc_clp1_t *) HW_ADC_CLP1_ADDR(x)) +#define HW_ADC_CLP1_RD(x) (HW_ADC_CLP1(x).U) +#define HW_ADC_CLP1_WR(x, v) (HW_ADC_CLP1(x).U = (v)) +#define HW_ADC_CLP1_SET(x, v) (HW_ADC_CLP1_WR(x, HW_ADC_CLP1_RD(x) | (v))) +#define HW_ADC_CLP1_CLR(x, v) (HW_ADC_CLP1_WR(x, HW_ADC_CLP1_RD(x) & ~(v))) +#define HW_ADC_CLP1_TOG(x, v) (HW_ADC_CLP1_WR(x, HW_ADC_CLP1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLP1 bitfields + */ + +/*! + * @name Register ADC_CLP1, field CLP1[6:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLP1_CLP1 (0U) //!< Bit position for ADC_CLP1_CLP1. +#define BM_ADC_CLP1_CLP1 (0x0000007FU) //!< Bit mask for ADC_CLP1_CLP1. +#define BS_ADC_CLP1_CLP1 (7U) //!< Bit field size in bits for ADC_CLP1_CLP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLP1_CLP1 field. +#define BR_ADC_CLP1_CLP1(x) (HW_ADC_CLP1(x).B.CLP1) +#endif + +//! @brief Format value for bitfield ADC_CLP1_CLP1. +#define BF_ADC_CLP1_CLP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLP1_CLP1), uint32_t) & BM_ADC_CLP1_CLP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLP1 field to a new value. +#define BW_ADC_CLP1_CLP1(x, v) (HW_ADC_CLP1_WR(x, (HW_ADC_CLP1_RD(x) & ~BM_ADC_CLP1_CLP1) | BF_ADC_CLP1_CLP1(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLP0 - ADC Plus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLP0 - ADC Plus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000020U + * + * For more information, see CLPD register description. + */ +typedef union _hw_adc_clp0 +{ + uint32_t U; + struct _hw_adc_clp0_bitfields + { + uint32_t CLP0 : 6; //!< [5:0] + uint32_t RESERVED0 : 26; //!< [31:6] + } B; +} hw_adc_clp0_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLP0 register + */ +//@{ +#define HW_ADC_CLP0_ADDR(x) (REGS_ADC_BASE(x) + 0x4CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLP0(x) (*(__IO hw_adc_clp0_t *) HW_ADC_CLP0_ADDR(x)) +#define HW_ADC_CLP0_RD(x) (HW_ADC_CLP0(x).U) +#define HW_ADC_CLP0_WR(x, v) (HW_ADC_CLP0(x).U = (v)) +#define HW_ADC_CLP0_SET(x, v) (HW_ADC_CLP0_WR(x, HW_ADC_CLP0_RD(x) | (v))) +#define HW_ADC_CLP0_CLR(x, v) (HW_ADC_CLP0_WR(x, HW_ADC_CLP0_RD(x) & ~(v))) +#define HW_ADC_CLP0_TOG(x, v) (HW_ADC_CLP0_WR(x, HW_ADC_CLP0_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLP0 bitfields + */ + +/*! + * @name Register ADC_CLP0, field CLP0[5:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLP0_CLP0 (0U) //!< Bit position for ADC_CLP0_CLP0. +#define BM_ADC_CLP0_CLP0 (0x0000003FU) //!< Bit mask for ADC_CLP0_CLP0. +#define BS_ADC_CLP0_CLP0 (6U) //!< Bit field size in bits for ADC_CLP0_CLP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLP0_CLP0 field. +#define BR_ADC_CLP0_CLP0(x) (HW_ADC_CLP0(x).B.CLP0) +#endif + +//! @brief Format value for bitfield ADC_CLP0_CLP0. +#define BF_ADC_CLP0_CLP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLP0_CLP0), uint32_t) & BM_ADC_CLP0_CLP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLP0 field to a new value. +#define BW_ADC_CLP0_CLP0(x, v) (HW_ADC_CLP0_WR(x, (HW_ADC_CLP0_RD(x) & ~BM_ADC_CLP0_CLP0) | BF_ADC_CLP0_CLP0(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLMD - ADC Minus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLMD - ADC Minus-Side General Calibration Value Register (RW) + * + * Reset value: 0x0000000AU + * + * The Minus-Side General Calibration Value (CLMx) registers contain calibration + * information that is generated by the calibration function. These registers + * contain seven calibration values of varying widths: CLM0[5:0], CLM1[6:0], + * CLM2[7:0], CLM3[8:0], CLM4[9:0], CLMS[5:0], and CLMD[5:0]. CLMx are automatically + * set when the self-calibration sequence is done, that is, CAL is cleared. If + * these registers are written by the user after calibration, the linearity error + * specifications may not be met. + */ +typedef union _hw_adc_clmd +{ + uint32_t U; + struct _hw_adc_clmd_bitfields + { + uint32_t CLMD : 6; //!< [5:0] + uint32_t RESERVED0 : 26; //!< [31:6] + } B; +} hw_adc_clmd_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLMD register + */ +//@{ +#define HW_ADC_CLMD_ADDR(x) (REGS_ADC_BASE(x) + 0x54U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLMD(x) (*(__IO hw_adc_clmd_t *) HW_ADC_CLMD_ADDR(x)) +#define HW_ADC_CLMD_RD(x) (HW_ADC_CLMD(x).U) +#define HW_ADC_CLMD_WR(x, v) (HW_ADC_CLMD(x).U = (v)) +#define HW_ADC_CLMD_SET(x, v) (HW_ADC_CLMD_WR(x, HW_ADC_CLMD_RD(x) | (v))) +#define HW_ADC_CLMD_CLR(x, v) (HW_ADC_CLMD_WR(x, HW_ADC_CLMD_RD(x) & ~(v))) +#define HW_ADC_CLMD_TOG(x, v) (HW_ADC_CLMD_WR(x, HW_ADC_CLMD_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLMD bitfields + */ + +/*! + * @name Register ADC_CLMD, field CLMD[5:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLMD_CLMD (0U) //!< Bit position for ADC_CLMD_CLMD. +#define BM_ADC_CLMD_CLMD (0x0000003FU) //!< Bit mask for ADC_CLMD_CLMD. +#define BS_ADC_CLMD_CLMD (6U) //!< Bit field size in bits for ADC_CLMD_CLMD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLMD_CLMD field. +#define BR_ADC_CLMD_CLMD(x) (HW_ADC_CLMD(x).B.CLMD) +#endif + +//! @brief Format value for bitfield ADC_CLMD_CLMD. +#define BF_ADC_CLMD_CLMD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLMD_CLMD), uint32_t) & BM_ADC_CLMD_CLMD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLMD field to a new value. +#define BW_ADC_CLMD_CLMD(x, v) (HW_ADC_CLMD_WR(x, (HW_ADC_CLMD_RD(x) & ~BM_ADC_CLMD_CLMD) | BF_ADC_CLMD_CLMD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLMS - ADC Minus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLMS - ADC Minus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000020U + * + * For more information, see CLMD register description. + */ +typedef union _hw_adc_clms +{ + uint32_t U; + struct _hw_adc_clms_bitfields + { + uint32_t CLMS : 6; //!< [5:0] + uint32_t RESERVED0 : 26; //!< [31:6] + } B; +} hw_adc_clms_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLMS register + */ +//@{ +#define HW_ADC_CLMS_ADDR(x) (REGS_ADC_BASE(x) + 0x58U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLMS(x) (*(__IO hw_adc_clms_t *) HW_ADC_CLMS_ADDR(x)) +#define HW_ADC_CLMS_RD(x) (HW_ADC_CLMS(x).U) +#define HW_ADC_CLMS_WR(x, v) (HW_ADC_CLMS(x).U = (v)) +#define HW_ADC_CLMS_SET(x, v) (HW_ADC_CLMS_WR(x, HW_ADC_CLMS_RD(x) | (v))) +#define HW_ADC_CLMS_CLR(x, v) (HW_ADC_CLMS_WR(x, HW_ADC_CLMS_RD(x) & ~(v))) +#define HW_ADC_CLMS_TOG(x, v) (HW_ADC_CLMS_WR(x, HW_ADC_CLMS_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLMS bitfields + */ + +/*! + * @name Register ADC_CLMS, field CLMS[5:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLMS_CLMS (0U) //!< Bit position for ADC_CLMS_CLMS. +#define BM_ADC_CLMS_CLMS (0x0000003FU) //!< Bit mask for ADC_CLMS_CLMS. +#define BS_ADC_CLMS_CLMS (6U) //!< Bit field size in bits for ADC_CLMS_CLMS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLMS_CLMS field. +#define BR_ADC_CLMS_CLMS(x) (HW_ADC_CLMS(x).B.CLMS) +#endif + +//! @brief Format value for bitfield ADC_CLMS_CLMS. +#define BF_ADC_CLMS_CLMS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLMS_CLMS), uint32_t) & BM_ADC_CLMS_CLMS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLMS field to a new value. +#define BW_ADC_CLMS_CLMS(x, v) (HW_ADC_CLMS_WR(x, (HW_ADC_CLMS_RD(x) & ~BM_ADC_CLMS_CLMS) | BF_ADC_CLMS_CLMS(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLM4 - ADC Minus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLM4 - ADC Minus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000200U + * + * For more information, see CLMD register description. + */ +typedef union _hw_adc_clm4 +{ + uint32_t U; + struct _hw_adc_clm4_bitfields + { + uint32_t CLM4 : 10; //!< [9:0] + uint32_t RESERVED0 : 22; //!< [31:10] + } B; +} hw_adc_clm4_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLM4 register + */ +//@{ +#define HW_ADC_CLM4_ADDR(x) (REGS_ADC_BASE(x) + 0x5CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLM4(x) (*(__IO hw_adc_clm4_t *) HW_ADC_CLM4_ADDR(x)) +#define HW_ADC_CLM4_RD(x) (HW_ADC_CLM4(x).U) +#define HW_ADC_CLM4_WR(x, v) (HW_ADC_CLM4(x).U = (v)) +#define HW_ADC_CLM4_SET(x, v) (HW_ADC_CLM4_WR(x, HW_ADC_CLM4_RD(x) | (v))) +#define HW_ADC_CLM4_CLR(x, v) (HW_ADC_CLM4_WR(x, HW_ADC_CLM4_RD(x) & ~(v))) +#define HW_ADC_CLM4_TOG(x, v) (HW_ADC_CLM4_WR(x, HW_ADC_CLM4_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLM4 bitfields + */ + +/*! + * @name Register ADC_CLM4, field CLM4[9:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLM4_CLM4 (0U) //!< Bit position for ADC_CLM4_CLM4. +#define BM_ADC_CLM4_CLM4 (0x000003FFU) //!< Bit mask for ADC_CLM4_CLM4. +#define BS_ADC_CLM4_CLM4 (10U) //!< Bit field size in bits for ADC_CLM4_CLM4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLM4_CLM4 field. +#define BR_ADC_CLM4_CLM4(x) (HW_ADC_CLM4(x).B.CLM4) +#endif + +//! @brief Format value for bitfield ADC_CLM4_CLM4. +#define BF_ADC_CLM4_CLM4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLM4_CLM4), uint32_t) & BM_ADC_CLM4_CLM4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLM4 field to a new value. +#define BW_ADC_CLM4_CLM4(x, v) (HW_ADC_CLM4_WR(x, (HW_ADC_CLM4_RD(x) & ~BM_ADC_CLM4_CLM4) | BF_ADC_CLM4_CLM4(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLM3 - ADC Minus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLM3 - ADC Minus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000100U + * + * For more information, see CLMD register description. + */ +typedef union _hw_adc_clm3 +{ + uint32_t U; + struct _hw_adc_clm3_bitfields + { + uint32_t CLM3 : 9; //!< [8:0] + uint32_t RESERVED0 : 23; //!< [31:9] + } B; +} hw_adc_clm3_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLM3 register + */ +//@{ +#define HW_ADC_CLM3_ADDR(x) (REGS_ADC_BASE(x) + 0x60U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLM3(x) (*(__IO hw_adc_clm3_t *) HW_ADC_CLM3_ADDR(x)) +#define HW_ADC_CLM3_RD(x) (HW_ADC_CLM3(x).U) +#define HW_ADC_CLM3_WR(x, v) (HW_ADC_CLM3(x).U = (v)) +#define HW_ADC_CLM3_SET(x, v) (HW_ADC_CLM3_WR(x, HW_ADC_CLM3_RD(x) | (v))) +#define HW_ADC_CLM3_CLR(x, v) (HW_ADC_CLM3_WR(x, HW_ADC_CLM3_RD(x) & ~(v))) +#define HW_ADC_CLM3_TOG(x, v) (HW_ADC_CLM3_WR(x, HW_ADC_CLM3_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLM3 bitfields + */ + +/*! + * @name Register ADC_CLM3, field CLM3[8:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLM3_CLM3 (0U) //!< Bit position for ADC_CLM3_CLM3. +#define BM_ADC_CLM3_CLM3 (0x000001FFU) //!< Bit mask for ADC_CLM3_CLM3. +#define BS_ADC_CLM3_CLM3 (9U) //!< Bit field size in bits for ADC_CLM3_CLM3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLM3_CLM3 field. +#define BR_ADC_CLM3_CLM3(x) (HW_ADC_CLM3(x).B.CLM3) +#endif + +//! @brief Format value for bitfield ADC_CLM3_CLM3. +#define BF_ADC_CLM3_CLM3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLM3_CLM3), uint32_t) & BM_ADC_CLM3_CLM3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLM3 field to a new value. +#define BW_ADC_CLM3_CLM3(x, v) (HW_ADC_CLM3_WR(x, (HW_ADC_CLM3_RD(x) & ~BM_ADC_CLM3_CLM3) | BF_ADC_CLM3_CLM3(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLM2 - ADC Minus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLM2 - ADC Minus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000080U + * + * For more information, see CLMD register description. + */ +typedef union _hw_adc_clm2 +{ + uint32_t U; + struct _hw_adc_clm2_bitfields + { + uint32_t CLM2 : 8; //!< [7:0] + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_adc_clm2_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLM2 register + */ +//@{ +#define HW_ADC_CLM2_ADDR(x) (REGS_ADC_BASE(x) + 0x64U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLM2(x) (*(__IO hw_adc_clm2_t *) HW_ADC_CLM2_ADDR(x)) +#define HW_ADC_CLM2_RD(x) (HW_ADC_CLM2(x).U) +#define HW_ADC_CLM2_WR(x, v) (HW_ADC_CLM2(x).U = (v)) +#define HW_ADC_CLM2_SET(x, v) (HW_ADC_CLM2_WR(x, HW_ADC_CLM2_RD(x) | (v))) +#define HW_ADC_CLM2_CLR(x, v) (HW_ADC_CLM2_WR(x, HW_ADC_CLM2_RD(x) & ~(v))) +#define HW_ADC_CLM2_TOG(x, v) (HW_ADC_CLM2_WR(x, HW_ADC_CLM2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLM2 bitfields + */ + +/*! + * @name Register ADC_CLM2, field CLM2[7:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLM2_CLM2 (0U) //!< Bit position for ADC_CLM2_CLM2. +#define BM_ADC_CLM2_CLM2 (0x000000FFU) //!< Bit mask for ADC_CLM2_CLM2. +#define BS_ADC_CLM2_CLM2 (8U) //!< Bit field size in bits for ADC_CLM2_CLM2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLM2_CLM2 field. +#define BR_ADC_CLM2_CLM2(x) (HW_ADC_CLM2(x).B.CLM2) +#endif + +//! @brief Format value for bitfield ADC_CLM2_CLM2. +#define BF_ADC_CLM2_CLM2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLM2_CLM2), uint32_t) & BM_ADC_CLM2_CLM2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLM2 field to a new value. +#define BW_ADC_CLM2_CLM2(x, v) (HW_ADC_CLM2_WR(x, (HW_ADC_CLM2_RD(x) & ~BM_ADC_CLM2_CLM2) | BF_ADC_CLM2_CLM2(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLM1 - ADC Minus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLM1 - ADC Minus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000040U + * + * For more information, see CLMD register description. + */ +typedef union _hw_adc_clm1 +{ + uint32_t U; + struct _hw_adc_clm1_bitfields + { + uint32_t CLM1 : 7; //!< [6:0] + uint32_t RESERVED0 : 25; //!< [31:7] + } B; +} hw_adc_clm1_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLM1 register + */ +//@{ +#define HW_ADC_CLM1_ADDR(x) (REGS_ADC_BASE(x) + 0x68U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLM1(x) (*(__IO hw_adc_clm1_t *) HW_ADC_CLM1_ADDR(x)) +#define HW_ADC_CLM1_RD(x) (HW_ADC_CLM1(x).U) +#define HW_ADC_CLM1_WR(x, v) (HW_ADC_CLM1(x).U = (v)) +#define HW_ADC_CLM1_SET(x, v) (HW_ADC_CLM1_WR(x, HW_ADC_CLM1_RD(x) | (v))) +#define HW_ADC_CLM1_CLR(x, v) (HW_ADC_CLM1_WR(x, HW_ADC_CLM1_RD(x) & ~(v))) +#define HW_ADC_CLM1_TOG(x, v) (HW_ADC_CLM1_WR(x, HW_ADC_CLM1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLM1 bitfields + */ + +/*! + * @name Register ADC_CLM1, field CLM1[6:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLM1_CLM1 (0U) //!< Bit position for ADC_CLM1_CLM1. +#define BM_ADC_CLM1_CLM1 (0x0000007FU) //!< Bit mask for ADC_CLM1_CLM1. +#define BS_ADC_CLM1_CLM1 (7U) //!< Bit field size in bits for ADC_CLM1_CLM1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLM1_CLM1 field. +#define BR_ADC_CLM1_CLM1(x) (HW_ADC_CLM1(x).B.CLM1) +#endif + +//! @brief Format value for bitfield ADC_CLM1_CLM1. +#define BF_ADC_CLM1_CLM1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLM1_CLM1), uint32_t) & BM_ADC_CLM1_CLM1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLM1 field to a new value. +#define BW_ADC_CLM1_CLM1(x, v) (HW_ADC_CLM1_WR(x, (HW_ADC_CLM1_RD(x) & ~BM_ADC_CLM1_CLM1) | BF_ADC_CLM1_CLM1(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ADC_CLM0 - ADC Minus-Side General Calibration Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ADC_CLM0 - ADC Minus-Side General Calibration Value Register (RW) + * + * Reset value: 0x00000020U + * + * For more information, see CLMD register description. + */ +typedef union _hw_adc_clm0 +{ + uint32_t U; + struct _hw_adc_clm0_bitfields + { + uint32_t CLM0 : 6; //!< [5:0] + uint32_t RESERVED0 : 26; //!< [31:6] + } B; +} hw_adc_clm0_t; +#endif + +/*! + * @name Constants and macros for entire ADC_CLM0 register + */ +//@{ +#define HW_ADC_CLM0_ADDR(x) (REGS_ADC_BASE(x) + 0x6CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ADC_CLM0(x) (*(__IO hw_adc_clm0_t *) HW_ADC_CLM0_ADDR(x)) +#define HW_ADC_CLM0_RD(x) (HW_ADC_CLM0(x).U) +#define HW_ADC_CLM0_WR(x, v) (HW_ADC_CLM0(x).U = (v)) +#define HW_ADC_CLM0_SET(x, v) (HW_ADC_CLM0_WR(x, HW_ADC_CLM0_RD(x) | (v))) +#define HW_ADC_CLM0_CLR(x, v) (HW_ADC_CLM0_WR(x, HW_ADC_CLM0_RD(x) & ~(v))) +#define HW_ADC_CLM0_TOG(x, v) (HW_ADC_CLM0_WR(x, HW_ADC_CLM0_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ADC_CLM0 bitfields + */ + +/*! + * @name Register ADC_CLM0, field CLM0[5:0] (RW) + * + * Calibration Value + */ +//@{ +#define BP_ADC_CLM0_CLM0 (0U) //!< Bit position for ADC_CLM0_CLM0. +#define BM_ADC_CLM0_CLM0 (0x0000003FU) //!< Bit mask for ADC_CLM0_CLM0. +#define BS_ADC_CLM0_CLM0 (6U) //!< Bit field size in bits for ADC_CLM0_CLM0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ADC_CLM0_CLM0 field. +#define BR_ADC_CLM0_CLM0(x) (HW_ADC_CLM0(x).B.CLM0) +#endif + +//! @brief Format value for bitfield ADC_CLM0_CLM0. +#define BF_ADC_CLM0_CLM0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ADC_CLM0_CLM0), uint32_t) & BM_ADC_CLM0_CLM0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLM0 field to a new value. +#define BW_ADC_CLM0_CLM0(x, v) (HW_ADC_CLM0_WR(x, (HW_ADC_CLM0_RD(x) & ~BM_ADC_CLM0_CLM0) | BF_ADC_CLM0_CLM0(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_adc_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All ADC module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_adc +{ + __IO hw_adc_sc1n_t SC1n[2]; //!< [0x0] ADC Status and Control Registers 1 + __IO hw_adc_cfg1_t CFG1; //!< [0x8] ADC Configuration Register 1 + __IO hw_adc_cfg2_t CFG2; //!< [0xC] ADC Configuration Register 2 + __I hw_adc_rn_t Rn[2]; //!< [0x10] ADC Data Result Register + __IO hw_adc_cv1_t CV1; //!< [0x18] Compare Value Registers + __IO hw_adc_cv2_t CV2; //!< [0x1C] Compare Value Registers + __IO hw_adc_sc2_t SC2; //!< [0x20] Status and Control Register 2 + __IO hw_adc_sc3_t SC3; //!< [0x24] Status and Control Register 3 + __IO hw_adc_ofs_t OFS; //!< [0x28] ADC Offset Correction Register + __IO hw_adc_pg_t PG; //!< [0x2C] ADC Plus-Side Gain Register + __IO hw_adc_mg_t MG; //!< [0x30] ADC Minus-Side Gain Register + __IO hw_adc_clpd_t CLPD; //!< [0x34] ADC Plus-Side General Calibration Value Register + __IO hw_adc_clps_t CLPS; //!< [0x38] ADC Plus-Side General Calibration Value Register + __IO hw_adc_clp4_t CLP4; //!< [0x3C] ADC Plus-Side General Calibration Value Register + __IO hw_adc_clp3_t CLP3; //!< [0x40] ADC Plus-Side General Calibration Value Register + __IO hw_adc_clp2_t CLP2; //!< [0x44] ADC Plus-Side General Calibration Value Register + __IO hw_adc_clp1_t CLP1; //!< [0x48] ADC Plus-Side General Calibration Value Register + __IO hw_adc_clp0_t CLP0; //!< [0x4C] ADC Plus-Side General Calibration Value Register + uint8_t _reserved0[4]; + __IO hw_adc_clmd_t CLMD; //!< [0x54] ADC Minus-Side General Calibration Value Register + __IO hw_adc_clms_t CLMS; //!< [0x58] ADC Minus-Side General Calibration Value Register + __IO hw_adc_clm4_t CLM4; //!< [0x5C] ADC Minus-Side General Calibration Value Register + __IO hw_adc_clm3_t CLM3; //!< [0x60] ADC Minus-Side General Calibration Value Register + __IO hw_adc_clm2_t CLM2; //!< [0x64] ADC Minus-Side General Calibration Value Register + __IO hw_adc_clm1_t CLM1; //!< [0x68] ADC Minus-Side General Calibration Value Register + __IO hw_adc_clm0_t CLM0; //!< [0x6C] ADC Minus-Side General Calibration Value Register +} hw_adc_t; +#pragma pack() + +//! @brief Macro to access all ADC registers. +//! @param x ADC instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_ADC(0)</code>. +#define HW_ADC(x) (*(hw_adc_t *) REGS_ADC_BASE(x)) +#endif + +#endif // __HW_ADC_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_aips.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,14135 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_AIPS_REGISTERS_H__ +#define __HW_AIPS_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 AIPS + * + * AIPS-Lite Bridge + * + * Registers defined in this header file: + * - HW_AIPS_MPRA - Master Privilege Register A + * - HW_AIPS_PACRA - Peripheral Access Control Register + * - HW_AIPS_PACRB - Peripheral Access Control Register + * - HW_AIPS_PACRC - Peripheral Access Control Register + * - HW_AIPS_PACRD - Peripheral Access Control Register + * - HW_AIPS_PACRE - Peripheral Access Control Register + * - HW_AIPS_PACRF - Peripheral Access Control Register + * - HW_AIPS_PACRG - Peripheral Access Control Register + * - HW_AIPS_PACRH - Peripheral Access Control Register + * - HW_AIPS_PACRI - Peripheral Access Control Register + * - HW_AIPS_PACRJ - Peripheral Access Control Register + * - HW_AIPS_PACRK - Peripheral Access Control Register + * - HW_AIPS_PACRL - Peripheral Access Control Register + * - HW_AIPS_PACRM - Peripheral Access Control Register + * - HW_AIPS_PACRN - Peripheral Access Control Register + * - HW_AIPS_PACRO - Peripheral Access Control Register + * - HW_AIPS_PACRP - Peripheral Access Control Register + * - HW_AIPS_PACRU - Peripheral Access Control Register + * + * - hw_aips_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_AIPS_BASE +#define HW_AIPS_INSTANCE_COUNT (2U) //!< Number of instances of the AIPS module. +#define HW_AIPS0 (0U) //!< Instance number for AIPS0. +#define HW_AIPS1 (1U) //!< Instance number for AIPS1. +#define REGS_AIPS0_BASE (0x40000000U) //!< Base address for AIPS0. +#define REGS_AIPS1_BASE (0x40080000U) //!< Base address for AIPS1. + +//! @brief Table of base addresses for AIPS instances. +static const uint32_t __g_regs_AIPS_base_addresses[] = { + REGS_AIPS0_BASE, + REGS_AIPS1_BASE, + }; + +//! @brief Get the base address of AIPS by instance number. +//! @param x AIPS instance number, from 0 through 1. +#define REGS_AIPS_BASE(x) (__g_regs_AIPS_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of AIPS. +#define REGS_AIPS_INSTANCE(b) ((b) == REGS_AIPS0_BASE ? HW_AIPS0 : (b) == REGS_AIPS1_BASE ? HW_AIPS1 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_MPRA - Master Privilege Register A +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_MPRA - Master Privilege Register A (RW) + * + * Reset value: 0x77700000U + * + * The MPRA specifies identical 4-bit fields defining the access-privilege level + * associated with a bus master to various peripherals on the chip. The register + * provides one field per bus master. At reset, the default value loaded into + * the MPRA fields is chip-specific. See the chip configuration details for the + * value of a particular device. A register field that maps to an unimplemented + * master or peripheral behaves as read-only-zero. Each master is assigned a logical + * ID from 0 to 15. See the master logical ID assignment table in the + * chip-specific AIPS information. + */ +typedef union _hw_aips_mpra +{ + uint32_t U; + struct _hw_aips_mpra_bitfields + { + uint32_t RESERVED0 : 8; //!< [7:0] + uint32_t MPL5 : 1; //!< [8] Master 5 Privilege Level + uint32_t MTW5 : 1; //!< [9] Master 5 Trusted For Writes + uint32_t MTR5 : 1; //!< [10] Master 5 Trusted For Read + uint32_t RESERVED1 : 1; //!< [11] + uint32_t MPL4 : 1; //!< [12] Master 4 Privilege Level + uint32_t MTW4 : 1; //!< [13] Master 4 Trusted For Writes + uint32_t MTR4 : 1; //!< [14] Master 4 Trusted For Read + uint32_t RESERVED2 : 1; //!< [15] + uint32_t MPL3 : 1; //!< [16] Master 3 Privilege Level + uint32_t MTW3 : 1; //!< [17] Master 3 Trusted For Writes + uint32_t MTR3 : 1; //!< [18] Master 3 Trusted For Read + uint32_t RESERVED3 : 1; //!< [19] + uint32_t MPL2 : 1; //!< [20] Master 2 Privilege Level + uint32_t MTW2 : 1; //!< [21] Master 2 Trusted For Writes + uint32_t MTR2 : 1; //!< [22] Master 2 Trusted For Read + uint32_t RESERVED4 : 1; //!< [23] + uint32_t MPL1 : 1; //!< [24] Master 1 Privilege Level + uint32_t MTW1 : 1; //!< [25] Master 1 Trusted for Writes + uint32_t MTR1 : 1; //!< [26] Master 1 Trusted for Read + uint32_t RESERVED5 : 1; //!< [27] + uint32_t MPL0 : 1; //!< [28] Master 0 Privilege Level + uint32_t MTW0 : 1; //!< [29] Master 0 Trusted For Writes + uint32_t MTR0 : 1; //!< [30] Master 0 Trusted For Read + uint32_t RESERVED6 : 1; //!< [31] + } B; +} hw_aips_mpra_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_MPRA register + */ +//@{ +#define HW_AIPS_MPRA_ADDR(x) (REGS_AIPS_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_MPRA(x) (*(__IO hw_aips_mpra_t *) HW_AIPS_MPRA_ADDR(x)) +#define HW_AIPS_MPRA_RD(x) (HW_AIPS_MPRA(x).U) +#define HW_AIPS_MPRA_WR(x, v) (HW_AIPS_MPRA(x).U = (v)) +#define HW_AIPS_MPRA_SET(x, v) (HW_AIPS_MPRA_WR(x, HW_AIPS_MPRA_RD(x) | (v))) +#define HW_AIPS_MPRA_CLR(x, v) (HW_AIPS_MPRA_WR(x, HW_AIPS_MPRA_RD(x) & ~(v))) +#define HW_AIPS_MPRA_TOG(x, v) (HW_AIPS_MPRA_WR(x, HW_AIPS_MPRA_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_MPRA bitfields + */ + +/*! + * @name Register AIPS_MPRA, field MPL5[8] (RW) + * + * Specifies how the privilege level of the master is determined. + * + * Values: + * - 0 - Accesses from this master are forced to user-mode. + * - 1 - Accesses from this master are not forced to user-mode. + */ +//@{ +#define BP_AIPS_MPRA_MPL5 (8U) //!< Bit position for AIPS_MPRA_MPL5. +#define BM_AIPS_MPRA_MPL5 (0x00000100U) //!< Bit mask for AIPS_MPRA_MPL5. +#define BS_AIPS_MPRA_MPL5 (1U) //!< Bit field size in bits for AIPS_MPRA_MPL5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MPL5 field. +#define BR_AIPS_MPRA_MPL5(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL5)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MPL5. +#define BF_AIPS_MPRA_MPL5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MPL5), uint32_t) & BM_AIPS_MPRA_MPL5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MPL5 field to a new value. +#define BW_AIPS_MPRA_MPL5(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTW5[9] (RW) + * + * Determines whether the master is trusted for write accesses. + * + * Values: + * - 0 - This master is not trusted for write accesses. + * - 1 - This master is trusted for write accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTW5 (9U) //!< Bit position for AIPS_MPRA_MTW5. +#define BM_AIPS_MPRA_MTW5 (0x00000200U) //!< Bit mask for AIPS_MPRA_MTW5. +#define BS_AIPS_MPRA_MTW5 (1U) //!< Bit field size in bits for AIPS_MPRA_MTW5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTW5 field. +#define BR_AIPS_MPRA_MTW5(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW5)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTW5. +#define BF_AIPS_MPRA_MTW5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTW5), uint32_t) & BM_AIPS_MPRA_MTW5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTW5 field to a new value. +#define BW_AIPS_MPRA_MTW5(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTR5[10] (RW) + * + * Determines whether the master is trusted for read accesses. + * + * Values: + * - 0 - This master is not trusted for read accesses. + * - 1 - This master is trusted for read accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTR5 (10U) //!< Bit position for AIPS_MPRA_MTR5. +#define BM_AIPS_MPRA_MTR5 (0x00000400U) //!< Bit mask for AIPS_MPRA_MTR5. +#define BS_AIPS_MPRA_MTR5 (1U) //!< Bit field size in bits for AIPS_MPRA_MTR5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTR5 field. +#define BR_AIPS_MPRA_MTR5(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR5)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTR5. +#define BF_AIPS_MPRA_MTR5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTR5), uint32_t) & BM_AIPS_MPRA_MTR5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTR5 field to a new value. +#define BW_AIPS_MPRA_MTR5(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MPL4[12] (RW) + * + * Specifies how the privilege level of the master is determined. + * + * Values: + * - 0 - Accesses from this master are forced to user-mode. + * - 1 - Accesses from this master are not forced to user-mode. + */ +//@{ +#define BP_AIPS_MPRA_MPL4 (12U) //!< Bit position for AIPS_MPRA_MPL4. +#define BM_AIPS_MPRA_MPL4 (0x00001000U) //!< Bit mask for AIPS_MPRA_MPL4. +#define BS_AIPS_MPRA_MPL4 (1U) //!< Bit field size in bits for AIPS_MPRA_MPL4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MPL4 field. +#define BR_AIPS_MPRA_MPL4(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL4)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MPL4. +#define BF_AIPS_MPRA_MPL4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MPL4), uint32_t) & BM_AIPS_MPRA_MPL4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MPL4 field to a new value. +#define BW_AIPS_MPRA_MPL4(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTW4[13] (RW) + * + * Determines whether the master is trusted for write accesses. + * + * Values: + * - 0 - This master is not trusted for write accesses. + * - 1 - This master is trusted for write accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTW4 (13U) //!< Bit position for AIPS_MPRA_MTW4. +#define BM_AIPS_MPRA_MTW4 (0x00002000U) //!< Bit mask for AIPS_MPRA_MTW4. +#define BS_AIPS_MPRA_MTW4 (1U) //!< Bit field size in bits for AIPS_MPRA_MTW4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTW4 field. +#define BR_AIPS_MPRA_MTW4(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW4)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTW4. +#define BF_AIPS_MPRA_MTW4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTW4), uint32_t) & BM_AIPS_MPRA_MTW4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTW4 field to a new value. +#define BW_AIPS_MPRA_MTW4(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTR4[14] (RW) + * + * Determines whether the master is trusted for read accesses. + * + * Values: + * - 0 - This master is not trusted for read accesses. + * - 1 - This master is trusted for read accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTR4 (14U) //!< Bit position for AIPS_MPRA_MTR4. +#define BM_AIPS_MPRA_MTR4 (0x00004000U) //!< Bit mask for AIPS_MPRA_MTR4. +#define BS_AIPS_MPRA_MTR4 (1U) //!< Bit field size in bits for AIPS_MPRA_MTR4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTR4 field. +#define BR_AIPS_MPRA_MTR4(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR4)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTR4. +#define BF_AIPS_MPRA_MTR4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTR4), uint32_t) & BM_AIPS_MPRA_MTR4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTR4 field to a new value. +#define BW_AIPS_MPRA_MTR4(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MPL3[16] (RW) + * + * Specifies how the privilege level of the master is determined. + * + * Values: + * - 0 - Accesses from this master are forced to user-mode. + * - 1 - Accesses from this master are not forced to user-mode. + */ +//@{ +#define BP_AIPS_MPRA_MPL3 (16U) //!< Bit position for AIPS_MPRA_MPL3. +#define BM_AIPS_MPRA_MPL3 (0x00010000U) //!< Bit mask for AIPS_MPRA_MPL3. +#define BS_AIPS_MPRA_MPL3 (1U) //!< Bit field size in bits for AIPS_MPRA_MPL3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MPL3 field. +#define BR_AIPS_MPRA_MPL3(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL3)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MPL3. +#define BF_AIPS_MPRA_MPL3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MPL3), uint32_t) & BM_AIPS_MPRA_MPL3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MPL3 field to a new value. +#define BW_AIPS_MPRA_MPL3(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTW3[17] (RW) + * + * Determines whether the master is trusted for write accesses. + * + * Values: + * - 0 - This master is not trusted for write accesses. + * - 1 - This master is trusted for write accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTW3 (17U) //!< Bit position for AIPS_MPRA_MTW3. +#define BM_AIPS_MPRA_MTW3 (0x00020000U) //!< Bit mask for AIPS_MPRA_MTW3. +#define BS_AIPS_MPRA_MTW3 (1U) //!< Bit field size in bits for AIPS_MPRA_MTW3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTW3 field. +#define BR_AIPS_MPRA_MTW3(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW3)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTW3. +#define BF_AIPS_MPRA_MTW3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTW3), uint32_t) & BM_AIPS_MPRA_MTW3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTW3 field to a new value. +#define BW_AIPS_MPRA_MTW3(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTR3[18] (RW) + * + * Determines whether the master is trusted for read accesses. + * + * Values: + * - 0 - This master is not trusted for read accesses. + * - 1 - This master is trusted for read accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTR3 (18U) //!< Bit position for AIPS_MPRA_MTR3. +#define BM_AIPS_MPRA_MTR3 (0x00040000U) //!< Bit mask for AIPS_MPRA_MTR3. +#define BS_AIPS_MPRA_MTR3 (1U) //!< Bit field size in bits for AIPS_MPRA_MTR3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTR3 field. +#define BR_AIPS_MPRA_MTR3(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR3)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTR3. +#define BF_AIPS_MPRA_MTR3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTR3), uint32_t) & BM_AIPS_MPRA_MTR3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTR3 field to a new value. +#define BW_AIPS_MPRA_MTR3(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MPL2[20] (RW) + * + * Specifies how the privilege level of the master is determined. + * + * Values: + * - 0 - Accesses from this master are forced to user-mode. + * - 1 - Accesses from this master are not forced to user-mode. + */ +//@{ +#define BP_AIPS_MPRA_MPL2 (20U) //!< Bit position for AIPS_MPRA_MPL2. +#define BM_AIPS_MPRA_MPL2 (0x00100000U) //!< Bit mask for AIPS_MPRA_MPL2. +#define BS_AIPS_MPRA_MPL2 (1U) //!< Bit field size in bits for AIPS_MPRA_MPL2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MPL2 field. +#define BR_AIPS_MPRA_MPL2(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL2)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MPL2. +#define BF_AIPS_MPRA_MPL2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MPL2), uint32_t) & BM_AIPS_MPRA_MPL2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MPL2 field to a new value. +#define BW_AIPS_MPRA_MPL2(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTW2[21] (RW) + * + * Determines whether the master is trusted for write accesses. + * + * Values: + * - 0 - This master is not trusted for write accesses. + * - 1 - This master is trusted for write accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTW2 (21U) //!< Bit position for AIPS_MPRA_MTW2. +#define BM_AIPS_MPRA_MTW2 (0x00200000U) //!< Bit mask for AIPS_MPRA_MTW2. +#define BS_AIPS_MPRA_MTW2 (1U) //!< Bit field size in bits for AIPS_MPRA_MTW2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTW2 field. +#define BR_AIPS_MPRA_MTW2(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW2)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTW2. +#define BF_AIPS_MPRA_MTW2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTW2), uint32_t) & BM_AIPS_MPRA_MTW2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTW2 field to a new value. +#define BW_AIPS_MPRA_MTW2(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTR2[22] (RW) + * + * Determines whether the master is trusted for read accesses. + * + * Values: + * - 0 - This master is not trusted for read accesses. + * - 1 - This master is trusted for read accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTR2 (22U) //!< Bit position for AIPS_MPRA_MTR2. +#define BM_AIPS_MPRA_MTR2 (0x00400000U) //!< Bit mask for AIPS_MPRA_MTR2. +#define BS_AIPS_MPRA_MTR2 (1U) //!< Bit field size in bits for AIPS_MPRA_MTR2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTR2 field. +#define BR_AIPS_MPRA_MTR2(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR2)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTR2. +#define BF_AIPS_MPRA_MTR2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTR2), uint32_t) & BM_AIPS_MPRA_MTR2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTR2 field to a new value. +#define BW_AIPS_MPRA_MTR2(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MPL1[24] (RW) + * + * Specifies how the privilege level of the master is determined. + * + * Values: + * - 0 - Accesses from this master are forced to user-mode. + * - 1 - Accesses from this master are not forced to user-mode. + */ +//@{ +#define BP_AIPS_MPRA_MPL1 (24U) //!< Bit position for AIPS_MPRA_MPL1. +#define BM_AIPS_MPRA_MPL1 (0x01000000U) //!< Bit mask for AIPS_MPRA_MPL1. +#define BS_AIPS_MPRA_MPL1 (1U) //!< Bit field size in bits for AIPS_MPRA_MPL1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MPL1 field. +#define BR_AIPS_MPRA_MPL1(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL1)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MPL1. +#define BF_AIPS_MPRA_MPL1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MPL1), uint32_t) & BM_AIPS_MPRA_MPL1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MPL1 field to a new value. +#define BW_AIPS_MPRA_MPL1(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTW1[25] (RW) + * + * Determines whether the master is trusted for write accesses. + * + * Values: + * - 0 - This master is not trusted for write accesses. + * - 1 - This master is trusted for write accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTW1 (25U) //!< Bit position for AIPS_MPRA_MTW1. +#define BM_AIPS_MPRA_MTW1 (0x02000000U) //!< Bit mask for AIPS_MPRA_MTW1. +#define BS_AIPS_MPRA_MTW1 (1U) //!< Bit field size in bits for AIPS_MPRA_MTW1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTW1 field. +#define BR_AIPS_MPRA_MTW1(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW1)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTW1. +#define BF_AIPS_MPRA_MTW1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTW1), uint32_t) & BM_AIPS_MPRA_MTW1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTW1 field to a new value. +#define BW_AIPS_MPRA_MTW1(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTR1[26] (RW) + * + * Determines whether the master is trusted for read accesses. + * + * Values: + * - 0 - This master is not trusted for read accesses. + * - 1 - This master is trusted for read accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTR1 (26U) //!< Bit position for AIPS_MPRA_MTR1. +#define BM_AIPS_MPRA_MTR1 (0x04000000U) //!< Bit mask for AIPS_MPRA_MTR1. +#define BS_AIPS_MPRA_MTR1 (1U) //!< Bit field size in bits for AIPS_MPRA_MTR1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTR1 field. +#define BR_AIPS_MPRA_MTR1(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR1)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTR1. +#define BF_AIPS_MPRA_MTR1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTR1), uint32_t) & BM_AIPS_MPRA_MTR1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTR1 field to a new value. +#define BW_AIPS_MPRA_MTR1(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MPL0[28] (RW) + * + * Specifies how the privilege level of the master is determined. + * + * Values: + * - 0 - Accesses from this master are forced to user-mode. + * - 1 - Accesses from this master are not forced to user-mode. + */ +//@{ +#define BP_AIPS_MPRA_MPL0 (28U) //!< Bit position for AIPS_MPRA_MPL0. +#define BM_AIPS_MPRA_MPL0 (0x10000000U) //!< Bit mask for AIPS_MPRA_MPL0. +#define BS_AIPS_MPRA_MPL0 (1U) //!< Bit field size in bits for AIPS_MPRA_MPL0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MPL0 field. +#define BR_AIPS_MPRA_MPL0(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL0)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MPL0. +#define BF_AIPS_MPRA_MPL0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MPL0), uint32_t) & BM_AIPS_MPRA_MPL0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MPL0 field to a new value. +#define BW_AIPS_MPRA_MPL0(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MPL0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTW0[29] (RW) + * + * Determines whether the master is trusted for write accesses. + * + * Values: + * - 0 - This master is not trusted for write accesses. + * - 1 - This master is trusted for write accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTW0 (29U) //!< Bit position for AIPS_MPRA_MTW0. +#define BM_AIPS_MPRA_MTW0 (0x20000000U) //!< Bit mask for AIPS_MPRA_MTW0. +#define BS_AIPS_MPRA_MTW0 (1U) //!< Bit field size in bits for AIPS_MPRA_MTW0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTW0 field. +#define BR_AIPS_MPRA_MTW0(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW0)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTW0. +#define BF_AIPS_MPRA_MTW0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTW0), uint32_t) & BM_AIPS_MPRA_MTW0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTW0 field to a new value. +#define BW_AIPS_MPRA_MTW0(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTW0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_MPRA, field MTR0[30] (RW) + * + * Determines whether the master is trusted for read accesses. + * + * Values: + * - 0 - This master is not trusted for read accesses. + * - 1 - This master is trusted for read accesses. + */ +//@{ +#define BP_AIPS_MPRA_MTR0 (30U) //!< Bit position for AIPS_MPRA_MTR0. +#define BM_AIPS_MPRA_MTR0 (0x40000000U) //!< Bit mask for AIPS_MPRA_MTR0. +#define BS_AIPS_MPRA_MTR0 (1U) //!< Bit field size in bits for AIPS_MPRA_MTR0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_MPRA_MTR0 field. +#define BR_AIPS_MPRA_MTR0(x) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR0)) +#endif + +//! @brief Format value for bitfield AIPS_MPRA_MTR0. +#define BF_AIPS_MPRA_MTR0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_MPRA_MTR0), uint32_t) & BM_AIPS_MPRA_MTR0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTR0 field to a new value. +#define BW_AIPS_MPRA_MTR0(x, v) (BITBAND_ACCESS32(HW_AIPS_MPRA_ADDR(x), BP_AIPS_MPRA_MTR0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRA - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRA - Peripheral Access Control Register (RW) + * + * Reset value: 0x50004000U + * + * Each PACR register consists of eight 4-bit PACR fields. Each PACR field + * defines the access levels for a particular peripheral. The mapping between a + * peripheral and its PACR field is shown in the table below. The peripheral assignment + * to each PACR is defined by the memory map slot that the peripheral is + * assigned to. See this chip's memory map for the assignment of a particular + * peripheral. The following table shows the location of each peripheral slot's PACR field + * in the PACR registers. Offset Register [31:28] [27:24] [23:20] [19:16] [15:12] + * [11:8] [7:4] [3:0] 0x20 PACRA PACR0 PACR1 PACR2 PACR3 PACR4 PACR5 PACR6 PACR7 + * 0x24 PACRB PACR8 PACR9 PACR10 PACR11 PACR12 PACR13 PACR14 PACR15 0x28 PACRC + * PACR16 PACR17 PACR18 PACR19 PACR20 PACR21 PACR22 PACR23 0x2C PACRD PACR24 + * PACR25 PACR26 PACR27 PACR28 PACR29 PACR30 PACR31 0x30 Reserved 0x34 Reserved 0x38 + * Reserved 0x3C Reserved 0x40 PACRE PACR32 PACR33 PACR34 PACR35 PACR36 PACR37 + * PACR38 PACR39 0x44 PACRF PACR40 PACR41 PACR42 PACR43 PACR44 PACR45 PACR46 PACR47 + * 0x48 PACRG PACR48 PACR49 PACR50 PACR51 PACR52 PACR53 PACR54 PACR55 0x4C PACRH + * PACR56 PACR57 PACR58 PACR59 PACR60 PACR61 PACR62 PACR63 0x50 PACRI PACR64 + * PACR65 PACR66 PACR67 PACR68 PACR69 PACR70 PACR71 0x54 PACRJ PACR72 PACR73 PACR74 + * PACR75 PACR76 PACR77 PACR78 PACR79 0x58 PACRK PACR80 PACR81 PACR82 PACR83 + * PACR84 PACR85 PACR86 PACR87 0x5C PACRL PACR88 PACR89 PACR90 PACR91 PACR92 PACR93 + * PACR94 PACR95 0x60 PACRM PACR96 PACR97 PACR98 PACR99 PACR100 PACR101 PACR102 + * PACR103 0x64 PACRN PACR104 PACR105 PACR106 PACR107 PACR108 PACR109 PACR110 + * PACR111 0x68 PACRO PACR112 PACR113 PACR114 PACR115 PACR116 PACR117 PACR118 PACR119 + * 0x6C PACRP PACR120 PACR121 PACR122 PACR123 PACR124 PACR125 PACR126 PACR127 0x80 + * PACRU PACR GBL0 PACR GBL1 Reserved The register field descriptions for PACR + * A-D, which control peripheral slots 0-31, are shown below. The following + * section, PACRPeripheral Access Control Register , shows the register field + * descriptions for PACR E-P. All PACR registers are identical. They are divided into two + * sections because they occupy two non-contiguous address spaces. + */ +typedef union _hw_aips_pacra +{ + uint32_t U; + struct _hw_aips_pacra_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacra_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRA register + */ +//@{ +#define HW_AIPS_PACRA_ADDR(x) (REGS_AIPS_BASE(x) + 0x20U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRA(x) (*(__IO hw_aips_pacra_t *) HW_AIPS_PACRA_ADDR(x)) +#define HW_AIPS_PACRA_RD(x) (HW_AIPS_PACRA(x).U) +#define HW_AIPS_PACRA_WR(x, v) (HW_AIPS_PACRA(x).U = (v)) +#define HW_AIPS_PACRA_SET(x, v) (HW_AIPS_PACRA_WR(x, HW_AIPS_PACRA_RD(x) | (v))) +#define HW_AIPS_PACRA_CLR(x, v) (HW_AIPS_PACRA_WR(x, HW_AIPS_PACRA_RD(x) & ~(v))) +#define HW_AIPS_PACRA_TOG(x, v) (HW_AIPS_PACRA_WR(x, HW_AIPS_PACRA_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRA bitfields + */ + +/*! + * @name Register AIPS_PACRA, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRA_TP7 (0U) //!< Bit position for AIPS_PACRA_TP7. +#define BM_AIPS_PACRA_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRA_TP7. +#define BS_AIPS_PACRA_TP7 (1U) //!< Bit field size in bits for AIPS_PACRA_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_TP7 field. +#define BR_AIPS_PACRA_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_TP7. +#define BF_AIPS_PACRA_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_TP7), uint32_t) & BM_AIPS_PACRA_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRA_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRA_WP7 (1U) //!< Bit position for AIPS_PACRA_WP7. +#define BM_AIPS_PACRA_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRA_WP7. +#define BS_AIPS_PACRA_WP7 (1U) //!< Bit field size in bits for AIPS_PACRA_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_WP7 field. +#define BR_AIPS_PACRA_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_WP7. +#define BF_AIPS_PACRA_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_WP7), uint32_t) & BM_AIPS_PACRA_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRA_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRA_SP7 (2U) //!< Bit position for AIPS_PACRA_SP7. +#define BM_AIPS_PACRA_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRA_SP7. +#define BS_AIPS_PACRA_SP7 (1U) //!< Bit field size in bits for AIPS_PACRA_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_SP7 field. +#define BR_AIPS_PACRA_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_SP7. +#define BF_AIPS_PACRA_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_SP7), uint32_t) & BM_AIPS_PACRA_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRA_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRA_TP6 (4U) //!< Bit position for AIPS_PACRA_TP6. +#define BM_AIPS_PACRA_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRA_TP6. +#define BS_AIPS_PACRA_TP6 (1U) //!< Bit field size in bits for AIPS_PACRA_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_TP6 field. +#define BR_AIPS_PACRA_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_TP6. +#define BF_AIPS_PACRA_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_TP6), uint32_t) & BM_AIPS_PACRA_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRA_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRA_WP6 (5U) //!< Bit position for AIPS_PACRA_WP6. +#define BM_AIPS_PACRA_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRA_WP6. +#define BS_AIPS_PACRA_WP6 (1U) //!< Bit field size in bits for AIPS_PACRA_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_WP6 field. +#define BR_AIPS_PACRA_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_WP6. +#define BF_AIPS_PACRA_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_WP6), uint32_t) & BM_AIPS_PACRA_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRA_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRA_SP6 (6U) //!< Bit position for AIPS_PACRA_SP6. +#define BM_AIPS_PACRA_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRA_SP6. +#define BS_AIPS_PACRA_SP6 (1U) //!< Bit field size in bits for AIPS_PACRA_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_SP6 field. +#define BR_AIPS_PACRA_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_SP6. +#define BF_AIPS_PACRA_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_SP6), uint32_t) & BM_AIPS_PACRA_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRA_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRA_TP5 (8U) //!< Bit position for AIPS_PACRA_TP5. +#define BM_AIPS_PACRA_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRA_TP5. +#define BS_AIPS_PACRA_TP5 (1U) //!< Bit field size in bits for AIPS_PACRA_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_TP5 field. +#define BR_AIPS_PACRA_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_TP5. +#define BF_AIPS_PACRA_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_TP5), uint32_t) & BM_AIPS_PACRA_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRA_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRA_WP5 (9U) //!< Bit position for AIPS_PACRA_WP5. +#define BM_AIPS_PACRA_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRA_WP5. +#define BS_AIPS_PACRA_WP5 (1U) //!< Bit field size in bits for AIPS_PACRA_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_WP5 field. +#define BR_AIPS_PACRA_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_WP5. +#define BF_AIPS_PACRA_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_WP5), uint32_t) & BM_AIPS_PACRA_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRA_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRA_SP5 (10U) //!< Bit position for AIPS_PACRA_SP5. +#define BM_AIPS_PACRA_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRA_SP5. +#define BS_AIPS_PACRA_SP5 (1U) //!< Bit field size in bits for AIPS_PACRA_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_SP5 field. +#define BR_AIPS_PACRA_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_SP5. +#define BF_AIPS_PACRA_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_SP5), uint32_t) & BM_AIPS_PACRA_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRA_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRA_TP4 (12U) //!< Bit position for AIPS_PACRA_TP4. +#define BM_AIPS_PACRA_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRA_TP4. +#define BS_AIPS_PACRA_TP4 (1U) //!< Bit field size in bits for AIPS_PACRA_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_TP4 field. +#define BR_AIPS_PACRA_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_TP4. +#define BF_AIPS_PACRA_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_TP4), uint32_t) & BM_AIPS_PACRA_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRA_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRA_WP4 (13U) //!< Bit position for AIPS_PACRA_WP4. +#define BM_AIPS_PACRA_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRA_WP4. +#define BS_AIPS_PACRA_WP4 (1U) //!< Bit field size in bits for AIPS_PACRA_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_WP4 field. +#define BR_AIPS_PACRA_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_WP4. +#define BF_AIPS_PACRA_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_WP4), uint32_t) & BM_AIPS_PACRA_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRA_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRA_SP4 (14U) //!< Bit position for AIPS_PACRA_SP4. +#define BM_AIPS_PACRA_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRA_SP4. +#define BS_AIPS_PACRA_SP4 (1U) //!< Bit field size in bits for AIPS_PACRA_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_SP4 field. +#define BR_AIPS_PACRA_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_SP4. +#define BF_AIPS_PACRA_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_SP4), uint32_t) & BM_AIPS_PACRA_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRA_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRA_TP3 (16U) //!< Bit position for AIPS_PACRA_TP3. +#define BM_AIPS_PACRA_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRA_TP3. +#define BS_AIPS_PACRA_TP3 (1U) //!< Bit field size in bits for AIPS_PACRA_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_TP3 field. +#define BR_AIPS_PACRA_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_TP3. +#define BF_AIPS_PACRA_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_TP3), uint32_t) & BM_AIPS_PACRA_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRA_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRA_WP3 (17U) //!< Bit position for AIPS_PACRA_WP3. +#define BM_AIPS_PACRA_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRA_WP3. +#define BS_AIPS_PACRA_WP3 (1U) //!< Bit field size in bits for AIPS_PACRA_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_WP3 field. +#define BR_AIPS_PACRA_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_WP3. +#define BF_AIPS_PACRA_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_WP3), uint32_t) & BM_AIPS_PACRA_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRA_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRA_SP3 (18U) //!< Bit position for AIPS_PACRA_SP3. +#define BM_AIPS_PACRA_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRA_SP3. +#define BS_AIPS_PACRA_SP3 (1U) //!< Bit field size in bits for AIPS_PACRA_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_SP3 field. +#define BR_AIPS_PACRA_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_SP3. +#define BF_AIPS_PACRA_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_SP3), uint32_t) & BM_AIPS_PACRA_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRA_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRA_TP2 (20U) //!< Bit position for AIPS_PACRA_TP2. +#define BM_AIPS_PACRA_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRA_TP2. +#define BS_AIPS_PACRA_TP2 (1U) //!< Bit field size in bits for AIPS_PACRA_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_TP2 field. +#define BR_AIPS_PACRA_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_TP2. +#define BF_AIPS_PACRA_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_TP2), uint32_t) & BM_AIPS_PACRA_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRA_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRA_WP2 (21U) //!< Bit position for AIPS_PACRA_WP2. +#define BM_AIPS_PACRA_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRA_WP2. +#define BS_AIPS_PACRA_WP2 (1U) //!< Bit field size in bits for AIPS_PACRA_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_WP2 field. +#define BR_AIPS_PACRA_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_WP2. +#define BF_AIPS_PACRA_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_WP2), uint32_t) & BM_AIPS_PACRA_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRA_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRA_SP2 (22U) //!< Bit position for AIPS_PACRA_SP2. +#define BM_AIPS_PACRA_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRA_SP2. +#define BS_AIPS_PACRA_SP2 (1U) //!< Bit field size in bits for AIPS_PACRA_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_SP2 field. +#define BR_AIPS_PACRA_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_SP2. +#define BF_AIPS_PACRA_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_SP2), uint32_t) & BM_AIPS_PACRA_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRA_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRA_TP1 (24U) //!< Bit position for AIPS_PACRA_TP1. +#define BM_AIPS_PACRA_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRA_TP1. +#define BS_AIPS_PACRA_TP1 (1U) //!< Bit field size in bits for AIPS_PACRA_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_TP1 field. +#define BR_AIPS_PACRA_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_TP1. +#define BF_AIPS_PACRA_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_TP1), uint32_t) & BM_AIPS_PACRA_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRA_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRA_WP1 (25U) //!< Bit position for AIPS_PACRA_WP1. +#define BM_AIPS_PACRA_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRA_WP1. +#define BS_AIPS_PACRA_WP1 (1U) //!< Bit field size in bits for AIPS_PACRA_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_WP1 field. +#define BR_AIPS_PACRA_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_WP1. +#define BF_AIPS_PACRA_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_WP1), uint32_t) & BM_AIPS_PACRA_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRA_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRA_SP1 (26U) //!< Bit position for AIPS_PACRA_SP1. +#define BM_AIPS_PACRA_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRA_SP1. +#define BS_AIPS_PACRA_SP1 (1U) //!< Bit field size in bits for AIPS_PACRA_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_SP1 field. +#define BR_AIPS_PACRA_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_SP1. +#define BF_AIPS_PACRA_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_SP1), uint32_t) & BM_AIPS_PACRA_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRA_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRA_TP0 (28U) //!< Bit position for AIPS_PACRA_TP0. +#define BM_AIPS_PACRA_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRA_TP0. +#define BS_AIPS_PACRA_TP0 (1U) //!< Bit field size in bits for AIPS_PACRA_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_TP0 field. +#define BR_AIPS_PACRA_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_TP0. +#define BF_AIPS_PACRA_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_TP0), uint32_t) & BM_AIPS_PACRA_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRA_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRA_WP0 (29U) //!< Bit position for AIPS_PACRA_WP0. +#define BM_AIPS_PACRA_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRA_WP0. +#define BS_AIPS_PACRA_WP0 (1U) //!< Bit field size in bits for AIPS_PACRA_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_WP0 field. +#define BR_AIPS_PACRA_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_WP0. +#define BF_AIPS_PACRA_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_WP0), uint32_t) & BM_AIPS_PACRA_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRA_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRA, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRA_SP0 (30U) //!< Bit position for AIPS_PACRA_SP0. +#define BM_AIPS_PACRA_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRA_SP0. +#define BS_AIPS_PACRA_SP0 (1U) //!< Bit field size in bits for AIPS_PACRA_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRA_SP0 field. +#define BR_AIPS_PACRA_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRA_SP0. +#define BF_AIPS_PACRA_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRA_SP0), uint32_t) & BM_AIPS_PACRA_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRA_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRA_ADDR(x), BP_AIPS_PACRA_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRB - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRB - Peripheral Access Control Register (RW) + * + * Reset value: 0x44004400U + * + * Each PACR register consists of eight 4-bit PACR fields. Each PACR field + * defines the access levels for a particular peripheral. The mapping between a + * peripheral and its PACR field is shown in the table below. The peripheral assignment + * to each PACR is defined by the memory map slot that the peripheral is + * assigned to. See this chip's memory map for the assignment of a particular + * peripheral. The following table shows the location of each peripheral slot's PACR field + * in the PACR registers. Offset Register [31:28] [27:24] [23:20] [19:16] [15:12] + * [11:8] [7:4] [3:0] 0x20 PACRA PACR0 PACR1 PACR2 PACR3 PACR4 PACR5 PACR6 PACR7 + * 0x24 PACRB PACR8 PACR9 PACR10 PACR11 PACR12 PACR13 PACR14 PACR15 0x28 PACRC + * PACR16 PACR17 PACR18 PACR19 PACR20 PACR21 PACR22 PACR23 0x2C PACRD PACR24 + * PACR25 PACR26 PACR27 PACR28 PACR29 PACR30 PACR31 0x30 Reserved 0x34 Reserved 0x38 + * Reserved 0x3C Reserved 0x40 PACRE PACR32 PACR33 PACR34 PACR35 PACR36 PACR37 + * PACR38 PACR39 0x44 PACRF PACR40 PACR41 PACR42 PACR43 PACR44 PACR45 PACR46 PACR47 + * 0x48 PACRG PACR48 PACR49 PACR50 PACR51 PACR52 PACR53 PACR54 PACR55 0x4C PACRH + * PACR56 PACR57 PACR58 PACR59 PACR60 PACR61 PACR62 PACR63 0x50 PACRI PACR64 + * PACR65 PACR66 PACR67 PACR68 PACR69 PACR70 PACR71 0x54 PACRJ PACR72 PACR73 PACR74 + * PACR75 PACR76 PACR77 PACR78 PACR79 0x58 PACRK PACR80 PACR81 PACR82 PACR83 + * PACR84 PACR85 PACR86 PACR87 0x5C PACRL PACR88 PACR89 PACR90 PACR91 PACR92 PACR93 + * PACR94 PACR95 0x60 PACRM PACR96 PACR97 PACR98 PACR99 PACR100 PACR101 PACR102 + * PACR103 0x64 PACRN PACR104 PACR105 PACR106 PACR107 PACR108 PACR109 PACR110 + * PACR111 0x68 PACRO PACR112 PACR113 PACR114 PACR115 PACR116 PACR117 PACR118 PACR119 + * 0x6C PACRP PACR120 PACR121 PACR122 PACR123 PACR124 PACR125 PACR126 PACR127 0x80 + * PACRU PACR GBL0 PACR GBL1 Reserved The register field descriptions for PACR + * A-D, which control peripheral slots 0-31, are shown below. The following + * section, PACRPeripheral Access Control Register , shows the register field + * descriptions for PACR E-P. All PACR registers are identical. They are divided into two + * sections because they occupy two non-contiguous address spaces. + */ +typedef union _hw_aips_pacrb +{ + uint32_t U; + struct _hw_aips_pacrb_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrb_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRB register + */ +//@{ +#define HW_AIPS_PACRB_ADDR(x) (REGS_AIPS_BASE(x) + 0x24U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRB(x) (*(__IO hw_aips_pacrb_t *) HW_AIPS_PACRB_ADDR(x)) +#define HW_AIPS_PACRB_RD(x) (HW_AIPS_PACRB(x).U) +#define HW_AIPS_PACRB_WR(x, v) (HW_AIPS_PACRB(x).U = (v)) +#define HW_AIPS_PACRB_SET(x, v) (HW_AIPS_PACRB_WR(x, HW_AIPS_PACRB_RD(x) | (v))) +#define HW_AIPS_PACRB_CLR(x, v) (HW_AIPS_PACRB_WR(x, HW_AIPS_PACRB_RD(x) & ~(v))) +#define HW_AIPS_PACRB_TOG(x, v) (HW_AIPS_PACRB_WR(x, HW_AIPS_PACRB_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRB bitfields + */ + +/*! + * @name Register AIPS_PACRB, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRB_TP7 (0U) //!< Bit position for AIPS_PACRB_TP7. +#define BM_AIPS_PACRB_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRB_TP7. +#define BS_AIPS_PACRB_TP7 (1U) //!< Bit field size in bits for AIPS_PACRB_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_TP7 field. +#define BR_AIPS_PACRB_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_TP7. +#define BF_AIPS_PACRB_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_TP7), uint32_t) & BM_AIPS_PACRB_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRB_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRB_WP7 (1U) //!< Bit position for AIPS_PACRB_WP7. +#define BM_AIPS_PACRB_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRB_WP7. +#define BS_AIPS_PACRB_WP7 (1U) //!< Bit field size in bits for AIPS_PACRB_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_WP7 field. +#define BR_AIPS_PACRB_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_WP7. +#define BF_AIPS_PACRB_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_WP7), uint32_t) & BM_AIPS_PACRB_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRB_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRB_SP7 (2U) //!< Bit position for AIPS_PACRB_SP7. +#define BM_AIPS_PACRB_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRB_SP7. +#define BS_AIPS_PACRB_SP7 (1U) //!< Bit field size in bits for AIPS_PACRB_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_SP7 field. +#define BR_AIPS_PACRB_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_SP7. +#define BF_AIPS_PACRB_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_SP7), uint32_t) & BM_AIPS_PACRB_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRB_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRB_TP6 (4U) //!< Bit position for AIPS_PACRB_TP6. +#define BM_AIPS_PACRB_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRB_TP6. +#define BS_AIPS_PACRB_TP6 (1U) //!< Bit field size in bits for AIPS_PACRB_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_TP6 field. +#define BR_AIPS_PACRB_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_TP6. +#define BF_AIPS_PACRB_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_TP6), uint32_t) & BM_AIPS_PACRB_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRB_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRB_WP6 (5U) //!< Bit position for AIPS_PACRB_WP6. +#define BM_AIPS_PACRB_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRB_WP6. +#define BS_AIPS_PACRB_WP6 (1U) //!< Bit field size in bits for AIPS_PACRB_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_WP6 field. +#define BR_AIPS_PACRB_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_WP6. +#define BF_AIPS_PACRB_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_WP6), uint32_t) & BM_AIPS_PACRB_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRB_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRB_SP6 (6U) //!< Bit position for AIPS_PACRB_SP6. +#define BM_AIPS_PACRB_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRB_SP6. +#define BS_AIPS_PACRB_SP6 (1U) //!< Bit field size in bits for AIPS_PACRB_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_SP6 field. +#define BR_AIPS_PACRB_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_SP6. +#define BF_AIPS_PACRB_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_SP6), uint32_t) & BM_AIPS_PACRB_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRB_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRB_TP5 (8U) //!< Bit position for AIPS_PACRB_TP5. +#define BM_AIPS_PACRB_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRB_TP5. +#define BS_AIPS_PACRB_TP5 (1U) //!< Bit field size in bits for AIPS_PACRB_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_TP5 field. +#define BR_AIPS_PACRB_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_TP5. +#define BF_AIPS_PACRB_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_TP5), uint32_t) & BM_AIPS_PACRB_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRB_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRB_WP5 (9U) //!< Bit position for AIPS_PACRB_WP5. +#define BM_AIPS_PACRB_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRB_WP5. +#define BS_AIPS_PACRB_WP5 (1U) //!< Bit field size in bits for AIPS_PACRB_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_WP5 field. +#define BR_AIPS_PACRB_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_WP5. +#define BF_AIPS_PACRB_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_WP5), uint32_t) & BM_AIPS_PACRB_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRB_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRB_SP5 (10U) //!< Bit position for AIPS_PACRB_SP5. +#define BM_AIPS_PACRB_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRB_SP5. +#define BS_AIPS_PACRB_SP5 (1U) //!< Bit field size in bits for AIPS_PACRB_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_SP5 field. +#define BR_AIPS_PACRB_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_SP5. +#define BF_AIPS_PACRB_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_SP5), uint32_t) & BM_AIPS_PACRB_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRB_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRB_TP4 (12U) //!< Bit position for AIPS_PACRB_TP4. +#define BM_AIPS_PACRB_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRB_TP4. +#define BS_AIPS_PACRB_TP4 (1U) //!< Bit field size in bits for AIPS_PACRB_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_TP4 field. +#define BR_AIPS_PACRB_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_TP4. +#define BF_AIPS_PACRB_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_TP4), uint32_t) & BM_AIPS_PACRB_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRB_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRB_WP4 (13U) //!< Bit position for AIPS_PACRB_WP4. +#define BM_AIPS_PACRB_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRB_WP4. +#define BS_AIPS_PACRB_WP4 (1U) //!< Bit field size in bits for AIPS_PACRB_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_WP4 field. +#define BR_AIPS_PACRB_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_WP4. +#define BF_AIPS_PACRB_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_WP4), uint32_t) & BM_AIPS_PACRB_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRB_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRB_SP4 (14U) //!< Bit position for AIPS_PACRB_SP4. +#define BM_AIPS_PACRB_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRB_SP4. +#define BS_AIPS_PACRB_SP4 (1U) //!< Bit field size in bits for AIPS_PACRB_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_SP4 field. +#define BR_AIPS_PACRB_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_SP4. +#define BF_AIPS_PACRB_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_SP4), uint32_t) & BM_AIPS_PACRB_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRB_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRB_TP3 (16U) //!< Bit position for AIPS_PACRB_TP3. +#define BM_AIPS_PACRB_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRB_TP3. +#define BS_AIPS_PACRB_TP3 (1U) //!< Bit field size in bits for AIPS_PACRB_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_TP3 field. +#define BR_AIPS_PACRB_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_TP3. +#define BF_AIPS_PACRB_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_TP3), uint32_t) & BM_AIPS_PACRB_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRB_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRB_WP3 (17U) //!< Bit position for AIPS_PACRB_WP3. +#define BM_AIPS_PACRB_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRB_WP3. +#define BS_AIPS_PACRB_WP3 (1U) //!< Bit field size in bits for AIPS_PACRB_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_WP3 field. +#define BR_AIPS_PACRB_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_WP3. +#define BF_AIPS_PACRB_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_WP3), uint32_t) & BM_AIPS_PACRB_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRB_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRB_SP3 (18U) //!< Bit position for AIPS_PACRB_SP3. +#define BM_AIPS_PACRB_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRB_SP3. +#define BS_AIPS_PACRB_SP3 (1U) //!< Bit field size in bits for AIPS_PACRB_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_SP3 field. +#define BR_AIPS_PACRB_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_SP3. +#define BF_AIPS_PACRB_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_SP3), uint32_t) & BM_AIPS_PACRB_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRB_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRB_TP2 (20U) //!< Bit position for AIPS_PACRB_TP2. +#define BM_AIPS_PACRB_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRB_TP2. +#define BS_AIPS_PACRB_TP2 (1U) //!< Bit field size in bits for AIPS_PACRB_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_TP2 field. +#define BR_AIPS_PACRB_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_TP2. +#define BF_AIPS_PACRB_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_TP2), uint32_t) & BM_AIPS_PACRB_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRB_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRB_WP2 (21U) //!< Bit position for AIPS_PACRB_WP2. +#define BM_AIPS_PACRB_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRB_WP2. +#define BS_AIPS_PACRB_WP2 (1U) //!< Bit field size in bits for AIPS_PACRB_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_WP2 field. +#define BR_AIPS_PACRB_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_WP2. +#define BF_AIPS_PACRB_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_WP2), uint32_t) & BM_AIPS_PACRB_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRB_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRB_SP2 (22U) //!< Bit position for AIPS_PACRB_SP2. +#define BM_AIPS_PACRB_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRB_SP2. +#define BS_AIPS_PACRB_SP2 (1U) //!< Bit field size in bits for AIPS_PACRB_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_SP2 field. +#define BR_AIPS_PACRB_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_SP2. +#define BF_AIPS_PACRB_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_SP2), uint32_t) & BM_AIPS_PACRB_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRB_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRB_TP1 (24U) //!< Bit position for AIPS_PACRB_TP1. +#define BM_AIPS_PACRB_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRB_TP1. +#define BS_AIPS_PACRB_TP1 (1U) //!< Bit field size in bits for AIPS_PACRB_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_TP1 field. +#define BR_AIPS_PACRB_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_TP1. +#define BF_AIPS_PACRB_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_TP1), uint32_t) & BM_AIPS_PACRB_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRB_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRB_WP1 (25U) //!< Bit position for AIPS_PACRB_WP1. +#define BM_AIPS_PACRB_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRB_WP1. +#define BS_AIPS_PACRB_WP1 (1U) //!< Bit field size in bits for AIPS_PACRB_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_WP1 field. +#define BR_AIPS_PACRB_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_WP1. +#define BF_AIPS_PACRB_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_WP1), uint32_t) & BM_AIPS_PACRB_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRB_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRB_SP1 (26U) //!< Bit position for AIPS_PACRB_SP1. +#define BM_AIPS_PACRB_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRB_SP1. +#define BS_AIPS_PACRB_SP1 (1U) //!< Bit field size in bits for AIPS_PACRB_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_SP1 field. +#define BR_AIPS_PACRB_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_SP1. +#define BF_AIPS_PACRB_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_SP1), uint32_t) & BM_AIPS_PACRB_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRB_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRB_TP0 (28U) //!< Bit position for AIPS_PACRB_TP0. +#define BM_AIPS_PACRB_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRB_TP0. +#define BS_AIPS_PACRB_TP0 (1U) //!< Bit field size in bits for AIPS_PACRB_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_TP0 field. +#define BR_AIPS_PACRB_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_TP0. +#define BF_AIPS_PACRB_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_TP0), uint32_t) & BM_AIPS_PACRB_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRB_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRB_WP0 (29U) //!< Bit position for AIPS_PACRB_WP0. +#define BM_AIPS_PACRB_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRB_WP0. +#define BS_AIPS_PACRB_WP0 (1U) //!< Bit field size in bits for AIPS_PACRB_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_WP0 field. +#define BR_AIPS_PACRB_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_WP0. +#define BF_AIPS_PACRB_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_WP0), uint32_t) & BM_AIPS_PACRB_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRB_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRB, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRB_SP0 (30U) //!< Bit position for AIPS_PACRB_SP0. +#define BM_AIPS_PACRB_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRB_SP0. +#define BS_AIPS_PACRB_SP0 (1U) //!< Bit field size in bits for AIPS_PACRB_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRB_SP0 field. +#define BR_AIPS_PACRB_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRB_SP0. +#define BF_AIPS_PACRB_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRB_SP0), uint32_t) & BM_AIPS_PACRB_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRB_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRB_ADDR(x), BP_AIPS_PACRB_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRC - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRC - Peripheral Access Control Register (RW) + * + * Reset value: 0x00000000U + * + * Each PACR register consists of eight 4-bit PACR fields. Each PACR field + * defines the access levels for a particular peripheral. The mapping between a + * peripheral and its PACR field is shown in the table below. The peripheral assignment + * to each PACR is defined by the memory map slot that the peripheral is + * assigned to. See this chip's memory map for the assignment of a particular + * peripheral. The following table shows the location of each peripheral slot's PACR field + * in the PACR registers. Offset Register [31:28] [27:24] [23:20] [19:16] [15:12] + * [11:8] [7:4] [3:0] 0x20 PACRA PACR0 PACR1 PACR2 PACR3 PACR4 PACR5 PACR6 PACR7 + * 0x24 PACRB PACR8 PACR9 PACR10 PACR11 PACR12 PACR13 PACR14 PACR15 0x28 PACRC + * PACR16 PACR17 PACR18 PACR19 PACR20 PACR21 PACR22 PACR23 0x2C PACRD PACR24 + * PACR25 PACR26 PACR27 PACR28 PACR29 PACR30 PACR31 0x30 Reserved 0x34 Reserved 0x38 + * Reserved 0x3C Reserved 0x40 PACRE PACR32 PACR33 PACR34 PACR35 PACR36 PACR37 + * PACR38 PACR39 0x44 PACRF PACR40 PACR41 PACR42 PACR43 PACR44 PACR45 PACR46 PACR47 + * 0x48 PACRG PACR48 PACR49 PACR50 PACR51 PACR52 PACR53 PACR54 PACR55 0x4C PACRH + * PACR56 PACR57 PACR58 PACR59 PACR60 PACR61 PACR62 PACR63 0x50 PACRI PACR64 + * PACR65 PACR66 PACR67 PACR68 PACR69 PACR70 PACR71 0x54 PACRJ PACR72 PACR73 PACR74 + * PACR75 PACR76 PACR77 PACR78 PACR79 0x58 PACRK PACR80 PACR81 PACR82 PACR83 + * PACR84 PACR85 PACR86 PACR87 0x5C PACRL PACR88 PACR89 PACR90 PACR91 PACR92 PACR93 + * PACR94 PACR95 0x60 PACRM PACR96 PACR97 PACR98 PACR99 PACR100 PACR101 PACR102 + * PACR103 0x64 PACRN PACR104 PACR105 PACR106 PACR107 PACR108 PACR109 PACR110 + * PACR111 0x68 PACRO PACR112 PACR113 PACR114 PACR115 PACR116 PACR117 PACR118 PACR119 + * 0x6C PACRP PACR120 PACR121 PACR122 PACR123 PACR124 PACR125 PACR126 PACR127 0x80 + * PACRU PACR GBL0 PACR GBL1 Reserved The register field descriptions for PACR + * A-D, which control peripheral slots 0-31, are shown below. The following + * section, PACRPeripheral Access Control Register , shows the register field + * descriptions for PACR E-P. All PACR registers are identical. They are divided into two + * sections because they occupy two non-contiguous address spaces. + */ +typedef union _hw_aips_pacrc +{ + uint32_t U; + struct _hw_aips_pacrc_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrc_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRC register + */ +//@{ +#define HW_AIPS_PACRC_ADDR(x) (REGS_AIPS_BASE(x) + 0x28U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRC(x) (*(__IO hw_aips_pacrc_t *) HW_AIPS_PACRC_ADDR(x)) +#define HW_AIPS_PACRC_RD(x) (HW_AIPS_PACRC(x).U) +#define HW_AIPS_PACRC_WR(x, v) (HW_AIPS_PACRC(x).U = (v)) +#define HW_AIPS_PACRC_SET(x, v) (HW_AIPS_PACRC_WR(x, HW_AIPS_PACRC_RD(x) | (v))) +#define HW_AIPS_PACRC_CLR(x, v) (HW_AIPS_PACRC_WR(x, HW_AIPS_PACRC_RD(x) & ~(v))) +#define HW_AIPS_PACRC_TOG(x, v) (HW_AIPS_PACRC_WR(x, HW_AIPS_PACRC_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRC bitfields + */ + +/*! + * @name Register AIPS_PACRC, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRC_TP7 (0U) //!< Bit position for AIPS_PACRC_TP7. +#define BM_AIPS_PACRC_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRC_TP7. +#define BS_AIPS_PACRC_TP7 (1U) //!< Bit field size in bits for AIPS_PACRC_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_TP7 field. +#define BR_AIPS_PACRC_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_TP7. +#define BF_AIPS_PACRC_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_TP7), uint32_t) & BM_AIPS_PACRC_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRC_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRC_WP7 (1U) //!< Bit position for AIPS_PACRC_WP7. +#define BM_AIPS_PACRC_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRC_WP7. +#define BS_AIPS_PACRC_WP7 (1U) //!< Bit field size in bits for AIPS_PACRC_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_WP7 field. +#define BR_AIPS_PACRC_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_WP7. +#define BF_AIPS_PACRC_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_WP7), uint32_t) & BM_AIPS_PACRC_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRC_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRC_SP7 (2U) //!< Bit position for AIPS_PACRC_SP7. +#define BM_AIPS_PACRC_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRC_SP7. +#define BS_AIPS_PACRC_SP7 (1U) //!< Bit field size in bits for AIPS_PACRC_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_SP7 field. +#define BR_AIPS_PACRC_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_SP7. +#define BF_AIPS_PACRC_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_SP7), uint32_t) & BM_AIPS_PACRC_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRC_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRC_TP6 (4U) //!< Bit position for AIPS_PACRC_TP6. +#define BM_AIPS_PACRC_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRC_TP6. +#define BS_AIPS_PACRC_TP6 (1U) //!< Bit field size in bits for AIPS_PACRC_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_TP6 field. +#define BR_AIPS_PACRC_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_TP6. +#define BF_AIPS_PACRC_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_TP6), uint32_t) & BM_AIPS_PACRC_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRC_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRC_WP6 (5U) //!< Bit position for AIPS_PACRC_WP6. +#define BM_AIPS_PACRC_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRC_WP6. +#define BS_AIPS_PACRC_WP6 (1U) //!< Bit field size in bits for AIPS_PACRC_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_WP6 field. +#define BR_AIPS_PACRC_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_WP6. +#define BF_AIPS_PACRC_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_WP6), uint32_t) & BM_AIPS_PACRC_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRC_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRC_SP6 (6U) //!< Bit position for AIPS_PACRC_SP6. +#define BM_AIPS_PACRC_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRC_SP6. +#define BS_AIPS_PACRC_SP6 (1U) //!< Bit field size in bits for AIPS_PACRC_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_SP6 field. +#define BR_AIPS_PACRC_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_SP6. +#define BF_AIPS_PACRC_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_SP6), uint32_t) & BM_AIPS_PACRC_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRC_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRC_TP5 (8U) //!< Bit position for AIPS_PACRC_TP5. +#define BM_AIPS_PACRC_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRC_TP5. +#define BS_AIPS_PACRC_TP5 (1U) //!< Bit field size in bits for AIPS_PACRC_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_TP5 field. +#define BR_AIPS_PACRC_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_TP5. +#define BF_AIPS_PACRC_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_TP5), uint32_t) & BM_AIPS_PACRC_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRC_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRC_WP5 (9U) //!< Bit position for AIPS_PACRC_WP5. +#define BM_AIPS_PACRC_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRC_WP5. +#define BS_AIPS_PACRC_WP5 (1U) //!< Bit field size in bits for AIPS_PACRC_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_WP5 field. +#define BR_AIPS_PACRC_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_WP5. +#define BF_AIPS_PACRC_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_WP5), uint32_t) & BM_AIPS_PACRC_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRC_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRC_SP5 (10U) //!< Bit position for AIPS_PACRC_SP5. +#define BM_AIPS_PACRC_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRC_SP5. +#define BS_AIPS_PACRC_SP5 (1U) //!< Bit field size in bits for AIPS_PACRC_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_SP5 field. +#define BR_AIPS_PACRC_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_SP5. +#define BF_AIPS_PACRC_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_SP5), uint32_t) & BM_AIPS_PACRC_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRC_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRC_TP4 (12U) //!< Bit position for AIPS_PACRC_TP4. +#define BM_AIPS_PACRC_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRC_TP4. +#define BS_AIPS_PACRC_TP4 (1U) //!< Bit field size in bits for AIPS_PACRC_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_TP4 field. +#define BR_AIPS_PACRC_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_TP4. +#define BF_AIPS_PACRC_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_TP4), uint32_t) & BM_AIPS_PACRC_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRC_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRC_WP4 (13U) //!< Bit position for AIPS_PACRC_WP4. +#define BM_AIPS_PACRC_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRC_WP4. +#define BS_AIPS_PACRC_WP4 (1U) //!< Bit field size in bits for AIPS_PACRC_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_WP4 field. +#define BR_AIPS_PACRC_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_WP4. +#define BF_AIPS_PACRC_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_WP4), uint32_t) & BM_AIPS_PACRC_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRC_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRC_SP4 (14U) //!< Bit position for AIPS_PACRC_SP4. +#define BM_AIPS_PACRC_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRC_SP4. +#define BS_AIPS_PACRC_SP4 (1U) //!< Bit field size in bits for AIPS_PACRC_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_SP4 field. +#define BR_AIPS_PACRC_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_SP4. +#define BF_AIPS_PACRC_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_SP4), uint32_t) & BM_AIPS_PACRC_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRC_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRC_TP3 (16U) //!< Bit position for AIPS_PACRC_TP3. +#define BM_AIPS_PACRC_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRC_TP3. +#define BS_AIPS_PACRC_TP3 (1U) //!< Bit field size in bits for AIPS_PACRC_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_TP3 field. +#define BR_AIPS_PACRC_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_TP3. +#define BF_AIPS_PACRC_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_TP3), uint32_t) & BM_AIPS_PACRC_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRC_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRC_WP3 (17U) //!< Bit position for AIPS_PACRC_WP3. +#define BM_AIPS_PACRC_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRC_WP3. +#define BS_AIPS_PACRC_WP3 (1U) //!< Bit field size in bits for AIPS_PACRC_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_WP3 field. +#define BR_AIPS_PACRC_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_WP3. +#define BF_AIPS_PACRC_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_WP3), uint32_t) & BM_AIPS_PACRC_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRC_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRC_SP3 (18U) //!< Bit position for AIPS_PACRC_SP3. +#define BM_AIPS_PACRC_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRC_SP3. +#define BS_AIPS_PACRC_SP3 (1U) //!< Bit field size in bits for AIPS_PACRC_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_SP3 field. +#define BR_AIPS_PACRC_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_SP3. +#define BF_AIPS_PACRC_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_SP3), uint32_t) & BM_AIPS_PACRC_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRC_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRC_TP2 (20U) //!< Bit position for AIPS_PACRC_TP2. +#define BM_AIPS_PACRC_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRC_TP2. +#define BS_AIPS_PACRC_TP2 (1U) //!< Bit field size in bits for AIPS_PACRC_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_TP2 field. +#define BR_AIPS_PACRC_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_TP2. +#define BF_AIPS_PACRC_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_TP2), uint32_t) & BM_AIPS_PACRC_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRC_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRC_WP2 (21U) //!< Bit position for AIPS_PACRC_WP2. +#define BM_AIPS_PACRC_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRC_WP2. +#define BS_AIPS_PACRC_WP2 (1U) //!< Bit field size in bits for AIPS_PACRC_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_WP2 field. +#define BR_AIPS_PACRC_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_WP2. +#define BF_AIPS_PACRC_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_WP2), uint32_t) & BM_AIPS_PACRC_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRC_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRC_SP2 (22U) //!< Bit position for AIPS_PACRC_SP2. +#define BM_AIPS_PACRC_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRC_SP2. +#define BS_AIPS_PACRC_SP2 (1U) //!< Bit field size in bits for AIPS_PACRC_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_SP2 field. +#define BR_AIPS_PACRC_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_SP2. +#define BF_AIPS_PACRC_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_SP2), uint32_t) & BM_AIPS_PACRC_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRC_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRC_TP1 (24U) //!< Bit position for AIPS_PACRC_TP1. +#define BM_AIPS_PACRC_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRC_TP1. +#define BS_AIPS_PACRC_TP1 (1U) //!< Bit field size in bits for AIPS_PACRC_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_TP1 field. +#define BR_AIPS_PACRC_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_TP1. +#define BF_AIPS_PACRC_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_TP1), uint32_t) & BM_AIPS_PACRC_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRC_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRC_WP1 (25U) //!< Bit position for AIPS_PACRC_WP1. +#define BM_AIPS_PACRC_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRC_WP1. +#define BS_AIPS_PACRC_WP1 (1U) //!< Bit field size in bits for AIPS_PACRC_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_WP1 field. +#define BR_AIPS_PACRC_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_WP1. +#define BF_AIPS_PACRC_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_WP1), uint32_t) & BM_AIPS_PACRC_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRC_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRC_SP1 (26U) //!< Bit position for AIPS_PACRC_SP1. +#define BM_AIPS_PACRC_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRC_SP1. +#define BS_AIPS_PACRC_SP1 (1U) //!< Bit field size in bits for AIPS_PACRC_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_SP1 field. +#define BR_AIPS_PACRC_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_SP1. +#define BF_AIPS_PACRC_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_SP1), uint32_t) & BM_AIPS_PACRC_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRC_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRC_TP0 (28U) //!< Bit position for AIPS_PACRC_TP0. +#define BM_AIPS_PACRC_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRC_TP0. +#define BS_AIPS_PACRC_TP0 (1U) //!< Bit field size in bits for AIPS_PACRC_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_TP0 field. +#define BR_AIPS_PACRC_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_TP0. +#define BF_AIPS_PACRC_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_TP0), uint32_t) & BM_AIPS_PACRC_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRC_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRC_WP0 (29U) //!< Bit position for AIPS_PACRC_WP0. +#define BM_AIPS_PACRC_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRC_WP0. +#define BS_AIPS_PACRC_WP0 (1U) //!< Bit field size in bits for AIPS_PACRC_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_WP0 field. +#define BR_AIPS_PACRC_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_WP0. +#define BF_AIPS_PACRC_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_WP0), uint32_t) & BM_AIPS_PACRC_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRC_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRC, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRC_SP0 (30U) //!< Bit position for AIPS_PACRC_SP0. +#define BM_AIPS_PACRC_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRC_SP0. +#define BS_AIPS_PACRC_SP0 (1U) //!< Bit field size in bits for AIPS_PACRC_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRC_SP0 field. +#define BR_AIPS_PACRC_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRC_SP0. +#define BF_AIPS_PACRC_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRC_SP0), uint32_t) & BM_AIPS_PACRC_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRC_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRC_ADDR(x), BP_AIPS_PACRC_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRD - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRD - Peripheral Access Control Register (RW) + * + * Reset value: 0x00000004U + * + * Each PACR register consists of eight 4-bit PACR fields. Each PACR field + * defines the access levels for a particular peripheral. The mapping between a + * peripheral and its PACR field is shown in the table below. The peripheral assignment + * to each PACR is defined by the memory map slot that the peripheral is + * assigned to. See this chip's memory map for the assignment of a particular + * peripheral. The following table shows the location of each peripheral slot's PACR field + * in the PACR registers. Offset Register [31:28] [27:24] [23:20] [19:16] [15:12] + * [11:8] [7:4] [3:0] 0x20 PACRA PACR0 PACR1 PACR2 PACR3 PACR4 PACR5 PACR6 PACR7 + * 0x24 PACRB PACR8 PACR9 PACR10 PACR11 PACR12 PACR13 PACR14 PACR15 0x28 PACRC + * PACR16 PACR17 PACR18 PACR19 PACR20 PACR21 PACR22 PACR23 0x2C PACRD PACR24 + * PACR25 PACR26 PACR27 PACR28 PACR29 PACR30 PACR31 0x30 Reserved 0x34 Reserved 0x38 + * Reserved 0x3C Reserved 0x40 PACRE PACR32 PACR33 PACR34 PACR35 PACR36 PACR37 + * PACR38 PACR39 0x44 PACRF PACR40 PACR41 PACR42 PACR43 PACR44 PACR45 PACR46 PACR47 + * 0x48 PACRG PACR48 PACR49 PACR50 PACR51 PACR52 PACR53 PACR54 PACR55 0x4C PACRH + * PACR56 PACR57 PACR58 PACR59 PACR60 PACR61 PACR62 PACR63 0x50 PACRI PACR64 + * PACR65 PACR66 PACR67 PACR68 PACR69 PACR70 PACR71 0x54 PACRJ PACR72 PACR73 PACR74 + * PACR75 PACR76 PACR77 PACR78 PACR79 0x58 PACRK PACR80 PACR81 PACR82 PACR83 + * PACR84 PACR85 PACR86 PACR87 0x5C PACRL PACR88 PACR89 PACR90 PACR91 PACR92 PACR93 + * PACR94 PACR95 0x60 PACRM PACR96 PACR97 PACR98 PACR99 PACR100 PACR101 PACR102 + * PACR103 0x64 PACRN PACR104 PACR105 PACR106 PACR107 PACR108 PACR109 PACR110 + * PACR111 0x68 PACRO PACR112 PACR113 PACR114 PACR115 PACR116 PACR117 PACR118 PACR119 + * 0x6C PACRP PACR120 PACR121 PACR122 PACR123 PACR124 PACR125 PACR126 PACR127 0x80 + * PACRU PACR GBL0 PACR GBL1 Reserved The register field descriptions for PACR + * A-D, which control peripheral slots 0-31, are shown below. The following + * section, PACRPeripheral Access Control Register , shows the register field + * descriptions for PACR E-P. All PACR registers are identical. They are divided into two + * sections because they occupy two non-contiguous address spaces. + */ +typedef union _hw_aips_pacrd +{ + uint32_t U; + struct _hw_aips_pacrd_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrd_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRD register + */ +//@{ +#define HW_AIPS_PACRD_ADDR(x) (REGS_AIPS_BASE(x) + 0x2CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRD(x) (*(__IO hw_aips_pacrd_t *) HW_AIPS_PACRD_ADDR(x)) +#define HW_AIPS_PACRD_RD(x) (HW_AIPS_PACRD(x).U) +#define HW_AIPS_PACRD_WR(x, v) (HW_AIPS_PACRD(x).U = (v)) +#define HW_AIPS_PACRD_SET(x, v) (HW_AIPS_PACRD_WR(x, HW_AIPS_PACRD_RD(x) | (v))) +#define HW_AIPS_PACRD_CLR(x, v) (HW_AIPS_PACRD_WR(x, HW_AIPS_PACRD_RD(x) & ~(v))) +#define HW_AIPS_PACRD_TOG(x, v) (HW_AIPS_PACRD_WR(x, HW_AIPS_PACRD_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRD bitfields + */ + +/*! + * @name Register AIPS_PACRD, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRD_TP7 (0U) //!< Bit position for AIPS_PACRD_TP7. +#define BM_AIPS_PACRD_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRD_TP7. +#define BS_AIPS_PACRD_TP7 (1U) //!< Bit field size in bits for AIPS_PACRD_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_TP7 field. +#define BR_AIPS_PACRD_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_TP7. +#define BF_AIPS_PACRD_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_TP7), uint32_t) & BM_AIPS_PACRD_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRD_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRD_WP7 (1U) //!< Bit position for AIPS_PACRD_WP7. +#define BM_AIPS_PACRD_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRD_WP7. +#define BS_AIPS_PACRD_WP7 (1U) //!< Bit field size in bits for AIPS_PACRD_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_WP7 field. +#define BR_AIPS_PACRD_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_WP7. +#define BF_AIPS_PACRD_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_WP7), uint32_t) & BM_AIPS_PACRD_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRD_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRD_SP7 (2U) //!< Bit position for AIPS_PACRD_SP7. +#define BM_AIPS_PACRD_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRD_SP7. +#define BS_AIPS_PACRD_SP7 (1U) //!< Bit field size in bits for AIPS_PACRD_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_SP7 field. +#define BR_AIPS_PACRD_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_SP7. +#define BF_AIPS_PACRD_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_SP7), uint32_t) & BM_AIPS_PACRD_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRD_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRD_TP6 (4U) //!< Bit position for AIPS_PACRD_TP6. +#define BM_AIPS_PACRD_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRD_TP6. +#define BS_AIPS_PACRD_TP6 (1U) //!< Bit field size in bits for AIPS_PACRD_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_TP6 field. +#define BR_AIPS_PACRD_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_TP6. +#define BF_AIPS_PACRD_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_TP6), uint32_t) & BM_AIPS_PACRD_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRD_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRD_WP6 (5U) //!< Bit position for AIPS_PACRD_WP6. +#define BM_AIPS_PACRD_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRD_WP6. +#define BS_AIPS_PACRD_WP6 (1U) //!< Bit field size in bits for AIPS_PACRD_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_WP6 field. +#define BR_AIPS_PACRD_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_WP6. +#define BF_AIPS_PACRD_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_WP6), uint32_t) & BM_AIPS_PACRD_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRD_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRD_SP6 (6U) //!< Bit position for AIPS_PACRD_SP6. +#define BM_AIPS_PACRD_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRD_SP6. +#define BS_AIPS_PACRD_SP6 (1U) //!< Bit field size in bits for AIPS_PACRD_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_SP6 field. +#define BR_AIPS_PACRD_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_SP6. +#define BF_AIPS_PACRD_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_SP6), uint32_t) & BM_AIPS_PACRD_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRD_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRD_TP5 (8U) //!< Bit position for AIPS_PACRD_TP5. +#define BM_AIPS_PACRD_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRD_TP5. +#define BS_AIPS_PACRD_TP5 (1U) //!< Bit field size in bits for AIPS_PACRD_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_TP5 field. +#define BR_AIPS_PACRD_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_TP5. +#define BF_AIPS_PACRD_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_TP5), uint32_t) & BM_AIPS_PACRD_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRD_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRD_WP5 (9U) //!< Bit position for AIPS_PACRD_WP5. +#define BM_AIPS_PACRD_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRD_WP5. +#define BS_AIPS_PACRD_WP5 (1U) //!< Bit field size in bits for AIPS_PACRD_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_WP5 field. +#define BR_AIPS_PACRD_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_WP5. +#define BF_AIPS_PACRD_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_WP5), uint32_t) & BM_AIPS_PACRD_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRD_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRD_SP5 (10U) //!< Bit position for AIPS_PACRD_SP5. +#define BM_AIPS_PACRD_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRD_SP5. +#define BS_AIPS_PACRD_SP5 (1U) //!< Bit field size in bits for AIPS_PACRD_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_SP5 field. +#define BR_AIPS_PACRD_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_SP5. +#define BF_AIPS_PACRD_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_SP5), uint32_t) & BM_AIPS_PACRD_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRD_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRD_TP4 (12U) //!< Bit position for AIPS_PACRD_TP4. +#define BM_AIPS_PACRD_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRD_TP4. +#define BS_AIPS_PACRD_TP4 (1U) //!< Bit field size in bits for AIPS_PACRD_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_TP4 field. +#define BR_AIPS_PACRD_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_TP4. +#define BF_AIPS_PACRD_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_TP4), uint32_t) & BM_AIPS_PACRD_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRD_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRD_WP4 (13U) //!< Bit position for AIPS_PACRD_WP4. +#define BM_AIPS_PACRD_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRD_WP4. +#define BS_AIPS_PACRD_WP4 (1U) //!< Bit field size in bits for AIPS_PACRD_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_WP4 field. +#define BR_AIPS_PACRD_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_WP4. +#define BF_AIPS_PACRD_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_WP4), uint32_t) & BM_AIPS_PACRD_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRD_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRD_SP4 (14U) //!< Bit position for AIPS_PACRD_SP4. +#define BM_AIPS_PACRD_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRD_SP4. +#define BS_AIPS_PACRD_SP4 (1U) //!< Bit field size in bits for AIPS_PACRD_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_SP4 field. +#define BR_AIPS_PACRD_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_SP4. +#define BF_AIPS_PACRD_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_SP4), uint32_t) & BM_AIPS_PACRD_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRD_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRD_TP3 (16U) //!< Bit position for AIPS_PACRD_TP3. +#define BM_AIPS_PACRD_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRD_TP3. +#define BS_AIPS_PACRD_TP3 (1U) //!< Bit field size in bits for AIPS_PACRD_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_TP3 field. +#define BR_AIPS_PACRD_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_TP3. +#define BF_AIPS_PACRD_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_TP3), uint32_t) & BM_AIPS_PACRD_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRD_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRD_WP3 (17U) //!< Bit position for AIPS_PACRD_WP3. +#define BM_AIPS_PACRD_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRD_WP3. +#define BS_AIPS_PACRD_WP3 (1U) //!< Bit field size in bits for AIPS_PACRD_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_WP3 field. +#define BR_AIPS_PACRD_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_WP3. +#define BF_AIPS_PACRD_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_WP3), uint32_t) & BM_AIPS_PACRD_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRD_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRD_SP3 (18U) //!< Bit position for AIPS_PACRD_SP3. +#define BM_AIPS_PACRD_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRD_SP3. +#define BS_AIPS_PACRD_SP3 (1U) //!< Bit field size in bits for AIPS_PACRD_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_SP3 field. +#define BR_AIPS_PACRD_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_SP3. +#define BF_AIPS_PACRD_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_SP3), uint32_t) & BM_AIPS_PACRD_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRD_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRD_TP2 (20U) //!< Bit position for AIPS_PACRD_TP2. +#define BM_AIPS_PACRD_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRD_TP2. +#define BS_AIPS_PACRD_TP2 (1U) //!< Bit field size in bits for AIPS_PACRD_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_TP2 field. +#define BR_AIPS_PACRD_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_TP2. +#define BF_AIPS_PACRD_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_TP2), uint32_t) & BM_AIPS_PACRD_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRD_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRD_WP2 (21U) //!< Bit position for AIPS_PACRD_WP2. +#define BM_AIPS_PACRD_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRD_WP2. +#define BS_AIPS_PACRD_WP2 (1U) //!< Bit field size in bits for AIPS_PACRD_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_WP2 field. +#define BR_AIPS_PACRD_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_WP2. +#define BF_AIPS_PACRD_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_WP2), uint32_t) & BM_AIPS_PACRD_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRD_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRD_SP2 (22U) //!< Bit position for AIPS_PACRD_SP2. +#define BM_AIPS_PACRD_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRD_SP2. +#define BS_AIPS_PACRD_SP2 (1U) //!< Bit field size in bits for AIPS_PACRD_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_SP2 field. +#define BR_AIPS_PACRD_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_SP2. +#define BF_AIPS_PACRD_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_SP2), uint32_t) & BM_AIPS_PACRD_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRD_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRD_TP1 (24U) //!< Bit position for AIPS_PACRD_TP1. +#define BM_AIPS_PACRD_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRD_TP1. +#define BS_AIPS_PACRD_TP1 (1U) //!< Bit field size in bits for AIPS_PACRD_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_TP1 field. +#define BR_AIPS_PACRD_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_TP1. +#define BF_AIPS_PACRD_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_TP1), uint32_t) & BM_AIPS_PACRD_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRD_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRD_WP1 (25U) //!< Bit position for AIPS_PACRD_WP1. +#define BM_AIPS_PACRD_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRD_WP1. +#define BS_AIPS_PACRD_WP1 (1U) //!< Bit field size in bits for AIPS_PACRD_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_WP1 field. +#define BR_AIPS_PACRD_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_WP1. +#define BF_AIPS_PACRD_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_WP1), uint32_t) & BM_AIPS_PACRD_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRD_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRD_SP1 (26U) //!< Bit position for AIPS_PACRD_SP1. +#define BM_AIPS_PACRD_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRD_SP1. +#define BS_AIPS_PACRD_SP1 (1U) //!< Bit field size in bits for AIPS_PACRD_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_SP1 field. +#define BR_AIPS_PACRD_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_SP1. +#define BF_AIPS_PACRD_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_SP1), uint32_t) & BM_AIPS_PACRD_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRD_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRD_TP0 (28U) //!< Bit position for AIPS_PACRD_TP0. +#define BM_AIPS_PACRD_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRD_TP0. +#define BS_AIPS_PACRD_TP0 (1U) //!< Bit field size in bits for AIPS_PACRD_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_TP0 field. +#define BR_AIPS_PACRD_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_TP0. +#define BF_AIPS_PACRD_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_TP0), uint32_t) & BM_AIPS_PACRD_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRD_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRD_WP0 (29U) //!< Bit position for AIPS_PACRD_WP0. +#define BM_AIPS_PACRD_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRD_WP0. +#define BS_AIPS_PACRD_WP0 (1U) //!< Bit field size in bits for AIPS_PACRD_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_WP0 field. +#define BR_AIPS_PACRD_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_WP0. +#define BF_AIPS_PACRD_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_WP0), uint32_t) & BM_AIPS_PACRD_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRD_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRD, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRD_SP0 (30U) //!< Bit position for AIPS_PACRD_SP0. +#define BM_AIPS_PACRD_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRD_SP0. +#define BS_AIPS_PACRD_SP0 (1U) //!< Bit field size in bits for AIPS_PACRD_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRD_SP0 field. +#define BR_AIPS_PACRD_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRD_SP0. +#define BF_AIPS_PACRD_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRD_SP0), uint32_t) & BM_AIPS_PACRD_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRD_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRD_ADDR(x), BP_AIPS_PACRD_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRE - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRE - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacre +{ + uint32_t U; + struct _hw_aips_pacre_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacre_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRE register + */ +//@{ +#define HW_AIPS_PACRE_ADDR(x) (REGS_AIPS_BASE(x) + 0x40U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRE(x) (*(__IO hw_aips_pacre_t *) HW_AIPS_PACRE_ADDR(x)) +#define HW_AIPS_PACRE_RD(x) (HW_AIPS_PACRE(x).U) +#define HW_AIPS_PACRE_WR(x, v) (HW_AIPS_PACRE(x).U = (v)) +#define HW_AIPS_PACRE_SET(x, v) (HW_AIPS_PACRE_WR(x, HW_AIPS_PACRE_RD(x) | (v))) +#define HW_AIPS_PACRE_CLR(x, v) (HW_AIPS_PACRE_WR(x, HW_AIPS_PACRE_RD(x) & ~(v))) +#define HW_AIPS_PACRE_TOG(x, v) (HW_AIPS_PACRE_WR(x, HW_AIPS_PACRE_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRE bitfields + */ + +/*! + * @name Register AIPS_PACRE, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRE_TP7 (0U) //!< Bit position for AIPS_PACRE_TP7. +#define BM_AIPS_PACRE_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRE_TP7. +#define BS_AIPS_PACRE_TP7 (1U) //!< Bit field size in bits for AIPS_PACRE_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_TP7 field. +#define BR_AIPS_PACRE_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_TP7. +#define BF_AIPS_PACRE_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_TP7), uint32_t) & BM_AIPS_PACRE_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRE_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRE_WP7 (1U) //!< Bit position for AIPS_PACRE_WP7. +#define BM_AIPS_PACRE_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRE_WP7. +#define BS_AIPS_PACRE_WP7 (1U) //!< Bit field size in bits for AIPS_PACRE_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_WP7 field. +#define BR_AIPS_PACRE_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_WP7. +#define BF_AIPS_PACRE_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_WP7), uint32_t) & BM_AIPS_PACRE_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRE_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRE_SP7 (2U) //!< Bit position for AIPS_PACRE_SP7. +#define BM_AIPS_PACRE_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRE_SP7. +#define BS_AIPS_PACRE_SP7 (1U) //!< Bit field size in bits for AIPS_PACRE_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_SP7 field. +#define BR_AIPS_PACRE_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_SP7. +#define BF_AIPS_PACRE_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_SP7), uint32_t) & BM_AIPS_PACRE_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRE_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRE_TP6 (4U) //!< Bit position for AIPS_PACRE_TP6. +#define BM_AIPS_PACRE_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRE_TP6. +#define BS_AIPS_PACRE_TP6 (1U) //!< Bit field size in bits for AIPS_PACRE_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_TP6 field. +#define BR_AIPS_PACRE_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_TP6. +#define BF_AIPS_PACRE_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_TP6), uint32_t) & BM_AIPS_PACRE_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRE_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRE_WP6 (5U) //!< Bit position for AIPS_PACRE_WP6. +#define BM_AIPS_PACRE_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRE_WP6. +#define BS_AIPS_PACRE_WP6 (1U) //!< Bit field size in bits for AIPS_PACRE_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_WP6 field. +#define BR_AIPS_PACRE_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_WP6. +#define BF_AIPS_PACRE_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_WP6), uint32_t) & BM_AIPS_PACRE_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRE_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRE_SP6 (6U) //!< Bit position for AIPS_PACRE_SP6. +#define BM_AIPS_PACRE_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRE_SP6. +#define BS_AIPS_PACRE_SP6 (1U) //!< Bit field size in bits for AIPS_PACRE_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_SP6 field. +#define BR_AIPS_PACRE_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_SP6. +#define BF_AIPS_PACRE_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_SP6), uint32_t) & BM_AIPS_PACRE_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRE_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRE_TP5 (8U) //!< Bit position for AIPS_PACRE_TP5. +#define BM_AIPS_PACRE_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRE_TP5. +#define BS_AIPS_PACRE_TP5 (1U) //!< Bit field size in bits for AIPS_PACRE_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_TP5 field. +#define BR_AIPS_PACRE_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_TP5. +#define BF_AIPS_PACRE_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_TP5), uint32_t) & BM_AIPS_PACRE_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRE_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRE_WP5 (9U) //!< Bit position for AIPS_PACRE_WP5. +#define BM_AIPS_PACRE_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRE_WP5. +#define BS_AIPS_PACRE_WP5 (1U) //!< Bit field size in bits for AIPS_PACRE_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_WP5 field. +#define BR_AIPS_PACRE_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_WP5. +#define BF_AIPS_PACRE_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_WP5), uint32_t) & BM_AIPS_PACRE_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRE_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRE_SP5 (10U) //!< Bit position for AIPS_PACRE_SP5. +#define BM_AIPS_PACRE_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRE_SP5. +#define BS_AIPS_PACRE_SP5 (1U) //!< Bit field size in bits for AIPS_PACRE_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_SP5 field. +#define BR_AIPS_PACRE_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_SP5. +#define BF_AIPS_PACRE_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_SP5), uint32_t) & BM_AIPS_PACRE_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRE_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRE_TP4 (12U) //!< Bit position for AIPS_PACRE_TP4. +#define BM_AIPS_PACRE_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRE_TP4. +#define BS_AIPS_PACRE_TP4 (1U) //!< Bit field size in bits for AIPS_PACRE_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_TP4 field. +#define BR_AIPS_PACRE_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_TP4. +#define BF_AIPS_PACRE_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_TP4), uint32_t) & BM_AIPS_PACRE_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRE_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRE_WP4 (13U) //!< Bit position for AIPS_PACRE_WP4. +#define BM_AIPS_PACRE_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRE_WP4. +#define BS_AIPS_PACRE_WP4 (1U) //!< Bit field size in bits for AIPS_PACRE_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_WP4 field. +#define BR_AIPS_PACRE_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_WP4. +#define BF_AIPS_PACRE_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_WP4), uint32_t) & BM_AIPS_PACRE_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRE_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRE_SP4 (14U) //!< Bit position for AIPS_PACRE_SP4. +#define BM_AIPS_PACRE_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRE_SP4. +#define BS_AIPS_PACRE_SP4 (1U) //!< Bit field size in bits for AIPS_PACRE_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_SP4 field. +#define BR_AIPS_PACRE_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_SP4. +#define BF_AIPS_PACRE_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_SP4), uint32_t) & BM_AIPS_PACRE_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRE_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRE_TP3 (16U) //!< Bit position for AIPS_PACRE_TP3. +#define BM_AIPS_PACRE_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRE_TP3. +#define BS_AIPS_PACRE_TP3 (1U) //!< Bit field size in bits for AIPS_PACRE_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_TP3 field. +#define BR_AIPS_PACRE_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_TP3. +#define BF_AIPS_PACRE_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_TP3), uint32_t) & BM_AIPS_PACRE_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRE_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRE_WP3 (17U) //!< Bit position for AIPS_PACRE_WP3. +#define BM_AIPS_PACRE_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRE_WP3. +#define BS_AIPS_PACRE_WP3 (1U) //!< Bit field size in bits for AIPS_PACRE_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_WP3 field. +#define BR_AIPS_PACRE_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_WP3. +#define BF_AIPS_PACRE_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_WP3), uint32_t) & BM_AIPS_PACRE_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRE_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRE_SP3 (18U) //!< Bit position for AIPS_PACRE_SP3. +#define BM_AIPS_PACRE_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRE_SP3. +#define BS_AIPS_PACRE_SP3 (1U) //!< Bit field size in bits for AIPS_PACRE_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_SP3 field. +#define BR_AIPS_PACRE_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_SP3. +#define BF_AIPS_PACRE_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_SP3), uint32_t) & BM_AIPS_PACRE_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRE_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRE_TP2 (20U) //!< Bit position for AIPS_PACRE_TP2. +#define BM_AIPS_PACRE_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRE_TP2. +#define BS_AIPS_PACRE_TP2 (1U) //!< Bit field size in bits for AIPS_PACRE_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_TP2 field. +#define BR_AIPS_PACRE_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_TP2. +#define BF_AIPS_PACRE_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_TP2), uint32_t) & BM_AIPS_PACRE_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRE_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRE_WP2 (21U) //!< Bit position for AIPS_PACRE_WP2. +#define BM_AIPS_PACRE_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRE_WP2. +#define BS_AIPS_PACRE_WP2 (1U) //!< Bit field size in bits for AIPS_PACRE_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_WP2 field. +#define BR_AIPS_PACRE_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_WP2. +#define BF_AIPS_PACRE_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_WP2), uint32_t) & BM_AIPS_PACRE_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRE_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRE_SP2 (22U) //!< Bit position for AIPS_PACRE_SP2. +#define BM_AIPS_PACRE_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRE_SP2. +#define BS_AIPS_PACRE_SP2 (1U) //!< Bit field size in bits for AIPS_PACRE_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_SP2 field. +#define BR_AIPS_PACRE_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_SP2. +#define BF_AIPS_PACRE_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_SP2), uint32_t) & BM_AIPS_PACRE_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRE_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRE_TP1 (24U) //!< Bit position for AIPS_PACRE_TP1. +#define BM_AIPS_PACRE_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRE_TP1. +#define BS_AIPS_PACRE_TP1 (1U) //!< Bit field size in bits for AIPS_PACRE_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_TP1 field. +#define BR_AIPS_PACRE_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_TP1. +#define BF_AIPS_PACRE_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_TP1), uint32_t) & BM_AIPS_PACRE_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRE_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRE_WP1 (25U) //!< Bit position for AIPS_PACRE_WP1. +#define BM_AIPS_PACRE_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRE_WP1. +#define BS_AIPS_PACRE_WP1 (1U) //!< Bit field size in bits for AIPS_PACRE_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_WP1 field. +#define BR_AIPS_PACRE_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_WP1. +#define BF_AIPS_PACRE_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_WP1), uint32_t) & BM_AIPS_PACRE_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRE_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRE_SP1 (26U) //!< Bit position for AIPS_PACRE_SP1. +#define BM_AIPS_PACRE_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRE_SP1. +#define BS_AIPS_PACRE_SP1 (1U) //!< Bit field size in bits for AIPS_PACRE_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_SP1 field. +#define BR_AIPS_PACRE_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_SP1. +#define BF_AIPS_PACRE_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_SP1), uint32_t) & BM_AIPS_PACRE_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRE_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRE_TP0 (28U) //!< Bit position for AIPS_PACRE_TP0. +#define BM_AIPS_PACRE_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRE_TP0. +#define BS_AIPS_PACRE_TP0 (1U) //!< Bit field size in bits for AIPS_PACRE_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_TP0 field. +#define BR_AIPS_PACRE_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_TP0. +#define BF_AIPS_PACRE_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_TP0), uint32_t) & BM_AIPS_PACRE_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRE_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRE_WP0 (29U) //!< Bit position for AIPS_PACRE_WP0. +#define BM_AIPS_PACRE_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRE_WP0. +#define BS_AIPS_PACRE_WP0 (1U) //!< Bit field size in bits for AIPS_PACRE_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_WP0 field. +#define BR_AIPS_PACRE_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_WP0. +#define BF_AIPS_PACRE_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_WP0), uint32_t) & BM_AIPS_PACRE_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRE_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRE, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRE_SP0 (30U) //!< Bit position for AIPS_PACRE_SP0. +#define BM_AIPS_PACRE_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRE_SP0. +#define BS_AIPS_PACRE_SP0 (1U) //!< Bit field size in bits for AIPS_PACRE_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRE_SP0 field. +#define BR_AIPS_PACRE_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRE_SP0. +#define BF_AIPS_PACRE_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRE_SP0), uint32_t) & BM_AIPS_PACRE_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRE_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRE_ADDR(x), BP_AIPS_PACRE_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRF - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRF - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacrf +{ + uint32_t U; + struct _hw_aips_pacrf_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrf_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRF register + */ +//@{ +#define HW_AIPS_PACRF_ADDR(x) (REGS_AIPS_BASE(x) + 0x44U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRF(x) (*(__IO hw_aips_pacrf_t *) HW_AIPS_PACRF_ADDR(x)) +#define HW_AIPS_PACRF_RD(x) (HW_AIPS_PACRF(x).U) +#define HW_AIPS_PACRF_WR(x, v) (HW_AIPS_PACRF(x).U = (v)) +#define HW_AIPS_PACRF_SET(x, v) (HW_AIPS_PACRF_WR(x, HW_AIPS_PACRF_RD(x) | (v))) +#define HW_AIPS_PACRF_CLR(x, v) (HW_AIPS_PACRF_WR(x, HW_AIPS_PACRF_RD(x) & ~(v))) +#define HW_AIPS_PACRF_TOG(x, v) (HW_AIPS_PACRF_WR(x, HW_AIPS_PACRF_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRF bitfields + */ + +/*! + * @name Register AIPS_PACRF, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRF_TP7 (0U) //!< Bit position for AIPS_PACRF_TP7. +#define BM_AIPS_PACRF_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRF_TP7. +#define BS_AIPS_PACRF_TP7 (1U) //!< Bit field size in bits for AIPS_PACRF_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_TP7 field. +#define BR_AIPS_PACRF_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_TP7. +#define BF_AIPS_PACRF_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_TP7), uint32_t) & BM_AIPS_PACRF_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRF_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRF_WP7 (1U) //!< Bit position for AIPS_PACRF_WP7. +#define BM_AIPS_PACRF_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRF_WP7. +#define BS_AIPS_PACRF_WP7 (1U) //!< Bit field size in bits for AIPS_PACRF_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_WP7 field. +#define BR_AIPS_PACRF_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_WP7. +#define BF_AIPS_PACRF_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_WP7), uint32_t) & BM_AIPS_PACRF_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRF_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRF_SP7 (2U) //!< Bit position for AIPS_PACRF_SP7. +#define BM_AIPS_PACRF_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRF_SP7. +#define BS_AIPS_PACRF_SP7 (1U) //!< Bit field size in bits for AIPS_PACRF_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_SP7 field. +#define BR_AIPS_PACRF_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_SP7. +#define BF_AIPS_PACRF_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_SP7), uint32_t) & BM_AIPS_PACRF_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRF_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRF_TP6 (4U) //!< Bit position for AIPS_PACRF_TP6. +#define BM_AIPS_PACRF_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRF_TP6. +#define BS_AIPS_PACRF_TP6 (1U) //!< Bit field size in bits for AIPS_PACRF_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_TP6 field. +#define BR_AIPS_PACRF_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_TP6. +#define BF_AIPS_PACRF_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_TP6), uint32_t) & BM_AIPS_PACRF_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRF_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRF_WP6 (5U) //!< Bit position for AIPS_PACRF_WP6. +#define BM_AIPS_PACRF_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRF_WP6. +#define BS_AIPS_PACRF_WP6 (1U) //!< Bit field size in bits for AIPS_PACRF_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_WP6 field. +#define BR_AIPS_PACRF_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_WP6. +#define BF_AIPS_PACRF_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_WP6), uint32_t) & BM_AIPS_PACRF_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRF_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRF_SP6 (6U) //!< Bit position for AIPS_PACRF_SP6. +#define BM_AIPS_PACRF_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRF_SP6. +#define BS_AIPS_PACRF_SP6 (1U) //!< Bit field size in bits for AIPS_PACRF_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_SP6 field. +#define BR_AIPS_PACRF_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_SP6. +#define BF_AIPS_PACRF_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_SP6), uint32_t) & BM_AIPS_PACRF_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRF_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRF_TP5 (8U) //!< Bit position for AIPS_PACRF_TP5. +#define BM_AIPS_PACRF_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRF_TP5. +#define BS_AIPS_PACRF_TP5 (1U) //!< Bit field size in bits for AIPS_PACRF_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_TP5 field. +#define BR_AIPS_PACRF_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_TP5. +#define BF_AIPS_PACRF_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_TP5), uint32_t) & BM_AIPS_PACRF_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRF_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRF_WP5 (9U) //!< Bit position for AIPS_PACRF_WP5. +#define BM_AIPS_PACRF_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRF_WP5. +#define BS_AIPS_PACRF_WP5 (1U) //!< Bit field size in bits for AIPS_PACRF_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_WP5 field. +#define BR_AIPS_PACRF_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_WP5. +#define BF_AIPS_PACRF_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_WP5), uint32_t) & BM_AIPS_PACRF_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRF_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRF_SP5 (10U) //!< Bit position for AIPS_PACRF_SP5. +#define BM_AIPS_PACRF_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRF_SP5. +#define BS_AIPS_PACRF_SP5 (1U) //!< Bit field size in bits for AIPS_PACRF_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_SP5 field. +#define BR_AIPS_PACRF_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_SP5. +#define BF_AIPS_PACRF_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_SP5), uint32_t) & BM_AIPS_PACRF_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRF_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRF_TP4 (12U) //!< Bit position for AIPS_PACRF_TP4. +#define BM_AIPS_PACRF_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRF_TP4. +#define BS_AIPS_PACRF_TP4 (1U) //!< Bit field size in bits for AIPS_PACRF_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_TP4 field. +#define BR_AIPS_PACRF_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_TP4. +#define BF_AIPS_PACRF_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_TP4), uint32_t) & BM_AIPS_PACRF_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRF_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRF_WP4 (13U) //!< Bit position for AIPS_PACRF_WP4. +#define BM_AIPS_PACRF_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRF_WP4. +#define BS_AIPS_PACRF_WP4 (1U) //!< Bit field size in bits for AIPS_PACRF_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_WP4 field. +#define BR_AIPS_PACRF_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_WP4. +#define BF_AIPS_PACRF_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_WP4), uint32_t) & BM_AIPS_PACRF_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRF_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRF_SP4 (14U) //!< Bit position for AIPS_PACRF_SP4. +#define BM_AIPS_PACRF_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRF_SP4. +#define BS_AIPS_PACRF_SP4 (1U) //!< Bit field size in bits for AIPS_PACRF_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_SP4 field. +#define BR_AIPS_PACRF_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_SP4. +#define BF_AIPS_PACRF_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_SP4), uint32_t) & BM_AIPS_PACRF_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRF_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRF_TP3 (16U) //!< Bit position for AIPS_PACRF_TP3. +#define BM_AIPS_PACRF_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRF_TP3. +#define BS_AIPS_PACRF_TP3 (1U) //!< Bit field size in bits for AIPS_PACRF_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_TP3 field. +#define BR_AIPS_PACRF_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_TP3. +#define BF_AIPS_PACRF_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_TP3), uint32_t) & BM_AIPS_PACRF_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRF_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRF_WP3 (17U) //!< Bit position for AIPS_PACRF_WP3. +#define BM_AIPS_PACRF_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRF_WP3. +#define BS_AIPS_PACRF_WP3 (1U) //!< Bit field size in bits for AIPS_PACRF_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_WP3 field. +#define BR_AIPS_PACRF_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_WP3. +#define BF_AIPS_PACRF_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_WP3), uint32_t) & BM_AIPS_PACRF_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRF_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRF_SP3 (18U) //!< Bit position for AIPS_PACRF_SP3. +#define BM_AIPS_PACRF_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRF_SP3. +#define BS_AIPS_PACRF_SP3 (1U) //!< Bit field size in bits for AIPS_PACRF_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_SP3 field. +#define BR_AIPS_PACRF_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_SP3. +#define BF_AIPS_PACRF_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_SP3), uint32_t) & BM_AIPS_PACRF_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRF_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRF_TP2 (20U) //!< Bit position for AIPS_PACRF_TP2. +#define BM_AIPS_PACRF_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRF_TP2. +#define BS_AIPS_PACRF_TP2 (1U) //!< Bit field size in bits for AIPS_PACRF_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_TP2 field. +#define BR_AIPS_PACRF_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_TP2. +#define BF_AIPS_PACRF_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_TP2), uint32_t) & BM_AIPS_PACRF_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRF_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRF_WP2 (21U) //!< Bit position for AIPS_PACRF_WP2. +#define BM_AIPS_PACRF_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRF_WP2. +#define BS_AIPS_PACRF_WP2 (1U) //!< Bit field size in bits for AIPS_PACRF_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_WP2 field. +#define BR_AIPS_PACRF_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_WP2. +#define BF_AIPS_PACRF_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_WP2), uint32_t) & BM_AIPS_PACRF_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRF_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRF_SP2 (22U) //!< Bit position for AIPS_PACRF_SP2. +#define BM_AIPS_PACRF_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRF_SP2. +#define BS_AIPS_PACRF_SP2 (1U) //!< Bit field size in bits for AIPS_PACRF_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_SP2 field. +#define BR_AIPS_PACRF_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_SP2. +#define BF_AIPS_PACRF_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_SP2), uint32_t) & BM_AIPS_PACRF_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRF_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRF_TP1 (24U) //!< Bit position for AIPS_PACRF_TP1. +#define BM_AIPS_PACRF_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRF_TP1. +#define BS_AIPS_PACRF_TP1 (1U) //!< Bit field size in bits for AIPS_PACRF_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_TP1 field. +#define BR_AIPS_PACRF_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_TP1. +#define BF_AIPS_PACRF_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_TP1), uint32_t) & BM_AIPS_PACRF_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRF_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRF_WP1 (25U) //!< Bit position for AIPS_PACRF_WP1. +#define BM_AIPS_PACRF_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRF_WP1. +#define BS_AIPS_PACRF_WP1 (1U) //!< Bit field size in bits for AIPS_PACRF_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_WP1 field. +#define BR_AIPS_PACRF_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_WP1. +#define BF_AIPS_PACRF_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_WP1), uint32_t) & BM_AIPS_PACRF_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRF_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRF_SP1 (26U) //!< Bit position for AIPS_PACRF_SP1. +#define BM_AIPS_PACRF_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRF_SP1. +#define BS_AIPS_PACRF_SP1 (1U) //!< Bit field size in bits for AIPS_PACRF_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_SP1 field. +#define BR_AIPS_PACRF_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_SP1. +#define BF_AIPS_PACRF_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_SP1), uint32_t) & BM_AIPS_PACRF_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRF_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRF_TP0 (28U) //!< Bit position for AIPS_PACRF_TP0. +#define BM_AIPS_PACRF_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRF_TP0. +#define BS_AIPS_PACRF_TP0 (1U) //!< Bit field size in bits for AIPS_PACRF_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_TP0 field. +#define BR_AIPS_PACRF_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_TP0. +#define BF_AIPS_PACRF_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_TP0), uint32_t) & BM_AIPS_PACRF_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRF_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRF_WP0 (29U) //!< Bit position for AIPS_PACRF_WP0. +#define BM_AIPS_PACRF_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRF_WP0. +#define BS_AIPS_PACRF_WP0 (1U) //!< Bit field size in bits for AIPS_PACRF_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_WP0 field. +#define BR_AIPS_PACRF_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_WP0. +#define BF_AIPS_PACRF_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_WP0), uint32_t) & BM_AIPS_PACRF_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRF_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRF, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRF_SP0 (30U) //!< Bit position for AIPS_PACRF_SP0. +#define BM_AIPS_PACRF_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRF_SP0. +#define BS_AIPS_PACRF_SP0 (1U) //!< Bit field size in bits for AIPS_PACRF_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRF_SP0 field. +#define BR_AIPS_PACRF_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRF_SP0. +#define BF_AIPS_PACRF_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRF_SP0), uint32_t) & BM_AIPS_PACRF_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRF_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRF_ADDR(x), BP_AIPS_PACRF_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRG - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRG - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacrg +{ + uint32_t U; + struct _hw_aips_pacrg_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrg_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRG register + */ +//@{ +#define HW_AIPS_PACRG_ADDR(x) (REGS_AIPS_BASE(x) + 0x48U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRG(x) (*(__IO hw_aips_pacrg_t *) HW_AIPS_PACRG_ADDR(x)) +#define HW_AIPS_PACRG_RD(x) (HW_AIPS_PACRG(x).U) +#define HW_AIPS_PACRG_WR(x, v) (HW_AIPS_PACRG(x).U = (v)) +#define HW_AIPS_PACRG_SET(x, v) (HW_AIPS_PACRG_WR(x, HW_AIPS_PACRG_RD(x) | (v))) +#define HW_AIPS_PACRG_CLR(x, v) (HW_AIPS_PACRG_WR(x, HW_AIPS_PACRG_RD(x) & ~(v))) +#define HW_AIPS_PACRG_TOG(x, v) (HW_AIPS_PACRG_WR(x, HW_AIPS_PACRG_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRG bitfields + */ + +/*! + * @name Register AIPS_PACRG, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRG_TP7 (0U) //!< Bit position for AIPS_PACRG_TP7. +#define BM_AIPS_PACRG_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRG_TP7. +#define BS_AIPS_PACRG_TP7 (1U) //!< Bit field size in bits for AIPS_PACRG_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_TP7 field. +#define BR_AIPS_PACRG_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_TP7. +#define BF_AIPS_PACRG_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_TP7), uint32_t) & BM_AIPS_PACRG_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRG_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRG_WP7 (1U) //!< Bit position for AIPS_PACRG_WP7. +#define BM_AIPS_PACRG_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRG_WP7. +#define BS_AIPS_PACRG_WP7 (1U) //!< Bit field size in bits for AIPS_PACRG_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_WP7 field. +#define BR_AIPS_PACRG_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_WP7. +#define BF_AIPS_PACRG_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_WP7), uint32_t) & BM_AIPS_PACRG_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRG_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRG_SP7 (2U) //!< Bit position for AIPS_PACRG_SP7. +#define BM_AIPS_PACRG_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRG_SP7. +#define BS_AIPS_PACRG_SP7 (1U) //!< Bit field size in bits for AIPS_PACRG_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_SP7 field. +#define BR_AIPS_PACRG_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_SP7. +#define BF_AIPS_PACRG_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_SP7), uint32_t) & BM_AIPS_PACRG_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRG_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRG_TP6 (4U) //!< Bit position for AIPS_PACRG_TP6. +#define BM_AIPS_PACRG_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRG_TP6. +#define BS_AIPS_PACRG_TP6 (1U) //!< Bit field size in bits for AIPS_PACRG_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_TP6 field. +#define BR_AIPS_PACRG_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_TP6. +#define BF_AIPS_PACRG_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_TP6), uint32_t) & BM_AIPS_PACRG_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRG_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRG_WP6 (5U) //!< Bit position for AIPS_PACRG_WP6. +#define BM_AIPS_PACRG_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRG_WP6. +#define BS_AIPS_PACRG_WP6 (1U) //!< Bit field size in bits for AIPS_PACRG_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_WP6 field. +#define BR_AIPS_PACRG_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_WP6. +#define BF_AIPS_PACRG_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_WP6), uint32_t) & BM_AIPS_PACRG_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRG_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRG_SP6 (6U) //!< Bit position for AIPS_PACRG_SP6. +#define BM_AIPS_PACRG_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRG_SP6. +#define BS_AIPS_PACRG_SP6 (1U) //!< Bit field size in bits for AIPS_PACRG_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_SP6 field. +#define BR_AIPS_PACRG_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_SP6. +#define BF_AIPS_PACRG_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_SP6), uint32_t) & BM_AIPS_PACRG_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRG_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRG_TP5 (8U) //!< Bit position for AIPS_PACRG_TP5. +#define BM_AIPS_PACRG_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRG_TP5. +#define BS_AIPS_PACRG_TP5 (1U) //!< Bit field size in bits for AIPS_PACRG_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_TP5 field. +#define BR_AIPS_PACRG_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_TP5. +#define BF_AIPS_PACRG_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_TP5), uint32_t) & BM_AIPS_PACRG_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRG_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRG_WP5 (9U) //!< Bit position for AIPS_PACRG_WP5. +#define BM_AIPS_PACRG_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRG_WP5. +#define BS_AIPS_PACRG_WP5 (1U) //!< Bit field size in bits for AIPS_PACRG_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_WP5 field. +#define BR_AIPS_PACRG_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_WP5. +#define BF_AIPS_PACRG_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_WP5), uint32_t) & BM_AIPS_PACRG_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRG_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRG_SP5 (10U) //!< Bit position for AIPS_PACRG_SP5. +#define BM_AIPS_PACRG_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRG_SP5. +#define BS_AIPS_PACRG_SP5 (1U) //!< Bit field size in bits for AIPS_PACRG_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_SP5 field. +#define BR_AIPS_PACRG_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_SP5. +#define BF_AIPS_PACRG_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_SP5), uint32_t) & BM_AIPS_PACRG_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRG_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRG_TP4 (12U) //!< Bit position for AIPS_PACRG_TP4. +#define BM_AIPS_PACRG_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRG_TP4. +#define BS_AIPS_PACRG_TP4 (1U) //!< Bit field size in bits for AIPS_PACRG_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_TP4 field. +#define BR_AIPS_PACRG_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_TP4. +#define BF_AIPS_PACRG_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_TP4), uint32_t) & BM_AIPS_PACRG_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRG_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRG_WP4 (13U) //!< Bit position for AIPS_PACRG_WP4. +#define BM_AIPS_PACRG_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRG_WP4. +#define BS_AIPS_PACRG_WP4 (1U) //!< Bit field size in bits for AIPS_PACRG_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_WP4 field. +#define BR_AIPS_PACRG_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_WP4. +#define BF_AIPS_PACRG_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_WP4), uint32_t) & BM_AIPS_PACRG_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRG_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRG_SP4 (14U) //!< Bit position for AIPS_PACRG_SP4. +#define BM_AIPS_PACRG_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRG_SP4. +#define BS_AIPS_PACRG_SP4 (1U) //!< Bit field size in bits for AIPS_PACRG_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_SP4 field. +#define BR_AIPS_PACRG_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_SP4. +#define BF_AIPS_PACRG_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_SP4), uint32_t) & BM_AIPS_PACRG_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRG_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRG_TP3 (16U) //!< Bit position for AIPS_PACRG_TP3. +#define BM_AIPS_PACRG_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRG_TP3. +#define BS_AIPS_PACRG_TP3 (1U) //!< Bit field size in bits for AIPS_PACRG_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_TP3 field. +#define BR_AIPS_PACRG_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_TP3. +#define BF_AIPS_PACRG_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_TP3), uint32_t) & BM_AIPS_PACRG_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRG_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRG_WP3 (17U) //!< Bit position for AIPS_PACRG_WP3. +#define BM_AIPS_PACRG_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRG_WP3. +#define BS_AIPS_PACRG_WP3 (1U) //!< Bit field size in bits for AIPS_PACRG_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_WP3 field. +#define BR_AIPS_PACRG_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_WP3. +#define BF_AIPS_PACRG_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_WP3), uint32_t) & BM_AIPS_PACRG_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRG_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRG_SP3 (18U) //!< Bit position for AIPS_PACRG_SP3. +#define BM_AIPS_PACRG_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRG_SP3. +#define BS_AIPS_PACRG_SP3 (1U) //!< Bit field size in bits for AIPS_PACRG_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_SP3 field. +#define BR_AIPS_PACRG_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_SP3. +#define BF_AIPS_PACRG_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_SP3), uint32_t) & BM_AIPS_PACRG_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRG_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRG_TP2 (20U) //!< Bit position for AIPS_PACRG_TP2. +#define BM_AIPS_PACRG_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRG_TP2. +#define BS_AIPS_PACRG_TP2 (1U) //!< Bit field size in bits for AIPS_PACRG_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_TP2 field. +#define BR_AIPS_PACRG_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_TP2. +#define BF_AIPS_PACRG_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_TP2), uint32_t) & BM_AIPS_PACRG_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRG_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRG_WP2 (21U) //!< Bit position for AIPS_PACRG_WP2. +#define BM_AIPS_PACRG_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRG_WP2. +#define BS_AIPS_PACRG_WP2 (1U) //!< Bit field size in bits for AIPS_PACRG_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_WP2 field. +#define BR_AIPS_PACRG_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_WP2. +#define BF_AIPS_PACRG_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_WP2), uint32_t) & BM_AIPS_PACRG_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRG_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRG_SP2 (22U) //!< Bit position for AIPS_PACRG_SP2. +#define BM_AIPS_PACRG_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRG_SP2. +#define BS_AIPS_PACRG_SP2 (1U) //!< Bit field size in bits for AIPS_PACRG_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_SP2 field. +#define BR_AIPS_PACRG_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_SP2. +#define BF_AIPS_PACRG_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_SP2), uint32_t) & BM_AIPS_PACRG_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRG_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRG_TP1 (24U) //!< Bit position for AIPS_PACRG_TP1. +#define BM_AIPS_PACRG_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRG_TP1. +#define BS_AIPS_PACRG_TP1 (1U) //!< Bit field size in bits for AIPS_PACRG_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_TP1 field. +#define BR_AIPS_PACRG_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_TP1. +#define BF_AIPS_PACRG_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_TP1), uint32_t) & BM_AIPS_PACRG_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRG_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRG_WP1 (25U) //!< Bit position for AIPS_PACRG_WP1. +#define BM_AIPS_PACRG_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRG_WP1. +#define BS_AIPS_PACRG_WP1 (1U) //!< Bit field size in bits for AIPS_PACRG_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_WP1 field. +#define BR_AIPS_PACRG_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_WP1. +#define BF_AIPS_PACRG_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_WP1), uint32_t) & BM_AIPS_PACRG_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRG_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRG_SP1 (26U) //!< Bit position for AIPS_PACRG_SP1. +#define BM_AIPS_PACRG_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRG_SP1. +#define BS_AIPS_PACRG_SP1 (1U) //!< Bit field size in bits for AIPS_PACRG_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_SP1 field. +#define BR_AIPS_PACRG_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_SP1. +#define BF_AIPS_PACRG_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_SP1), uint32_t) & BM_AIPS_PACRG_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRG_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRG_TP0 (28U) //!< Bit position for AIPS_PACRG_TP0. +#define BM_AIPS_PACRG_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRG_TP0. +#define BS_AIPS_PACRG_TP0 (1U) //!< Bit field size in bits for AIPS_PACRG_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_TP0 field. +#define BR_AIPS_PACRG_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_TP0. +#define BF_AIPS_PACRG_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_TP0), uint32_t) & BM_AIPS_PACRG_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRG_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRG_WP0 (29U) //!< Bit position for AIPS_PACRG_WP0. +#define BM_AIPS_PACRG_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRG_WP0. +#define BS_AIPS_PACRG_WP0 (1U) //!< Bit field size in bits for AIPS_PACRG_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_WP0 field. +#define BR_AIPS_PACRG_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_WP0. +#define BF_AIPS_PACRG_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_WP0), uint32_t) & BM_AIPS_PACRG_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRG_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRG, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRG_SP0 (30U) //!< Bit position for AIPS_PACRG_SP0. +#define BM_AIPS_PACRG_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRG_SP0. +#define BS_AIPS_PACRG_SP0 (1U) //!< Bit field size in bits for AIPS_PACRG_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRG_SP0 field. +#define BR_AIPS_PACRG_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRG_SP0. +#define BF_AIPS_PACRG_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRG_SP0), uint32_t) & BM_AIPS_PACRG_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRG_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRG_ADDR(x), BP_AIPS_PACRG_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRH - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRH - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacrh +{ + uint32_t U; + struct _hw_aips_pacrh_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrh_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRH register + */ +//@{ +#define HW_AIPS_PACRH_ADDR(x) (REGS_AIPS_BASE(x) + 0x4CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRH(x) (*(__IO hw_aips_pacrh_t *) HW_AIPS_PACRH_ADDR(x)) +#define HW_AIPS_PACRH_RD(x) (HW_AIPS_PACRH(x).U) +#define HW_AIPS_PACRH_WR(x, v) (HW_AIPS_PACRH(x).U = (v)) +#define HW_AIPS_PACRH_SET(x, v) (HW_AIPS_PACRH_WR(x, HW_AIPS_PACRH_RD(x) | (v))) +#define HW_AIPS_PACRH_CLR(x, v) (HW_AIPS_PACRH_WR(x, HW_AIPS_PACRH_RD(x) & ~(v))) +#define HW_AIPS_PACRH_TOG(x, v) (HW_AIPS_PACRH_WR(x, HW_AIPS_PACRH_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRH bitfields + */ + +/*! + * @name Register AIPS_PACRH, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRH_TP7 (0U) //!< Bit position for AIPS_PACRH_TP7. +#define BM_AIPS_PACRH_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRH_TP7. +#define BS_AIPS_PACRH_TP7 (1U) //!< Bit field size in bits for AIPS_PACRH_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_TP7 field. +#define BR_AIPS_PACRH_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_TP7. +#define BF_AIPS_PACRH_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_TP7), uint32_t) & BM_AIPS_PACRH_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRH_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRH_WP7 (1U) //!< Bit position for AIPS_PACRH_WP7. +#define BM_AIPS_PACRH_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRH_WP7. +#define BS_AIPS_PACRH_WP7 (1U) //!< Bit field size in bits for AIPS_PACRH_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_WP7 field. +#define BR_AIPS_PACRH_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_WP7. +#define BF_AIPS_PACRH_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_WP7), uint32_t) & BM_AIPS_PACRH_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRH_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRH_SP7 (2U) //!< Bit position for AIPS_PACRH_SP7. +#define BM_AIPS_PACRH_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRH_SP7. +#define BS_AIPS_PACRH_SP7 (1U) //!< Bit field size in bits for AIPS_PACRH_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_SP7 field. +#define BR_AIPS_PACRH_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_SP7. +#define BF_AIPS_PACRH_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_SP7), uint32_t) & BM_AIPS_PACRH_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRH_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRH_TP6 (4U) //!< Bit position for AIPS_PACRH_TP6. +#define BM_AIPS_PACRH_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRH_TP6. +#define BS_AIPS_PACRH_TP6 (1U) //!< Bit field size in bits for AIPS_PACRH_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_TP6 field. +#define BR_AIPS_PACRH_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_TP6. +#define BF_AIPS_PACRH_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_TP6), uint32_t) & BM_AIPS_PACRH_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRH_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRH_WP6 (5U) //!< Bit position for AIPS_PACRH_WP6. +#define BM_AIPS_PACRH_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRH_WP6. +#define BS_AIPS_PACRH_WP6 (1U) //!< Bit field size in bits for AIPS_PACRH_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_WP6 field. +#define BR_AIPS_PACRH_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_WP6. +#define BF_AIPS_PACRH_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_WP6), uint32_t) & BM_AIPS_PACRH_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRH_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRH_SP6 (6U) //!< Bit position for AIPS_PACRH_SP6. +#define BM_AIPS_PACRH_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRH_SP6. +#define BS_AIPS_PACRH_SP6 (1U) //!< Bit field size in bits for AIPS_PACRH_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_SP6 field. +#define BR_AIPS_PACRH_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_SP6. +#define BF_AIPS_PACRH_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_SP6), uint32_t) & BM_AIPS_PACRH_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRH_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRH_TP5 (8U) //!< Bit position for AIPS_PACRH_TP5. +#define BM_AIPS_PACRH_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRH_TP5. +#define BS_AIPS_PACRH_TP5 (1U) //!< Bit field size in bits for AIPS_PACRH_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_TP5 field. +#define BR_AIPS_PACRH_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_TP5. +#define BF_AIPS_PACRH_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_TP5), uint32_t) & BM_AIPS_PACRH_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRH_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRH_WP5 (9U) //!< Bit position for AIPS_PACRH_WP5. +#define BM_AIPS_PACRH_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRH_WP5. +#define BS_AIPS_PACRH_WP5 (1U) //!< Bit field size in bits for AIPS_PACRH_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_WP5 field. +#define BR_AIPS_PACRH_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_WP5. +#define BF_AIPS_PACRH_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_WP5), uint32_t) & BM_AIPS_PACRH_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRH_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRH_SP5 (10U) //!< Bit position for AIPS_PACRH_SP5. +#define BM_AIPS_PACRH_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRH_SP5. +#define BS_AIPS_PACRH_SP5 (1U) //!< Bit field size in bits for AIPS_PACRH_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_SP5 field. +#define BR_AIPS_PACRH_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_SP5. +#define BF_AIPS_PACRH_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_SP5), uint32_t) & BM_AIPS_PACRH_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRH_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRH_TP4 (12U) //!< Bit position for AIPS_PACRH_TP4. +#define BM_AIPS_PACRH_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRH_TP4. +#define BS_AIPS_PACRH_TP4 (1U) //!< Bit field size in bits for AIPS_PACRH_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_TP4 field. +#define BR_AIPS_PACRH_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_TP4. +#define BF_AIPS_PACRH_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_TP4), uint32_t) & BM_AIPS_PACRH_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRH_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRH_WP4 (13U) //!< Bit position for AIPS_PACRH_WP4. +#define BM_AIPS_PACRH_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRH_WP4. +#define BS_AIPS_PACRH_WP4 (1U) //!< Bit field size in bits for AIPS_PACRH_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_WP4 field. +#define BR_AIPS_PACRH_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_WP4. +#define BF_AIPS_PACRH_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_WP4), uint32_t) & BM_AIPS_PACRH_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRH_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRH_SP4 (14U) //!< Bit position for AIPS_PACRH_SP4. +#define BM_AIPS_PACRH_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRH_SP4. +#define BS_AIPS_PACRH_SP4 (1U) //!< Bit field size in bits for AIPS_PACRH_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_SP4 field. +#define BR_AIPS_PACRH_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_SP4. +#define BF_AIPS_PACRH_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_SP4), uint32_t) & BM_AIPS_PACRH_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRH_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRH_TP3 (16U) //!< Bit position for AIPS_PACRH_TP3. +#define BM_AIPS_PACRH_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRH_TP3. +#define BS_AIPS_PACRH_TP3 (1U) //!< Bit field size in bits for AIPS_PACRH_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_TP3 field. +#define BR_AIPS_PACRH_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_TP3. +#define BF_AIPS_PACRH_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_TP3), uint32_t) & BM_AIPS_PACRH_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRH_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRH_WP3 (17U) //!< Bit position for AIPS_PACRH_WP3. +#define BM_AIPS_PACRH_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRH_WP3. +#define BS_AIPS_PACRH_WP3 (1U) //!< Bit field size in bits for AIPS_PACRH_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_WP3 field. +#define BR_AIPS_PACRH_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_WP3. +#define BF_AIPS_PACRH_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_WP3), uint32_t) & BM_AIPS_PACRH_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRH_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRH_SP3 (18U) //!< Bit position for AIPS_PACRH_SP3. +#define BM_AIPS_PACRH_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRH_SP3. +#define BS_AIPS_PACRH_SP3 (1U) //!< Bit field size in bits for AIPS_PACRH_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_SP3 field. +#define BR_AIPS_PACRH_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_SP3. +#define BF_AIPS_PACRH_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_SP3), uint32_t) & BM_AIPS_PACRH_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRH_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRH_TP2 (20U) //!< Bit position for AIPS_PACRH_TP2. +#define BM_AIPS_PACRH_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRH_TP2. +#define BS_AIPS_PACRH_TP2 (1U) //!< Bit field size in bits for AIPS_PACRH_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_TP2 field. +#define BR_AIPS_PACRH_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_TP2. +#define BF_AIPS_PACRH_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_TP2), uint32_t) & BM_AIPS_PACRH_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRH_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRH_WP2 (21U) //!< Bit position for AIPS_PACRH_WP2. +#define BM_AIPS_PACRH_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRH_WP2. +#define BS_AIPS_PACRH_WP2 (1U) //!< Bit field size in bits for AIPS_PACRH_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_WP2 field. +#define BR_AIPS_PACRH_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_WP2. +#define BF_AIPS_PACRH_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_WP2), uint32_t) & BM_AIPS_PACRH_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRH_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRH_SP2 (22U) //!< Bit position for AIPS_PACRH_SP2. +#define BM_AIPS_PACRH_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRH_SP2. +#define BS_AIPS_PACRH_SP2 (1U) //!< Bit field size in bits for AIPS_PACRH_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_SP2 field. +#define BR_AIPS_PACRH_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_SP2. +#define BF_AIPS_PACRH_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_SP2), uint32_t) & BM_AIPS_PACRH_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRH_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRH_TP1 (24U) //!< Bit position for AIPS_PACRH_TP1. +#define BM_AIPS_PACRH_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRH_TP1. +#define BS_AIPS_PACRH_TP1 (1U) //!< Bit field size in bits for AIPS_PACRH_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_TP1 field. +#define BR_AIPS_PACRH_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_TP1. +#define BF_AIPS_PACRH_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_TP1), uint32_t) & BM_AIPS_PACRH_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRH_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRH_WP1 (25U) //!< Bit position for AIPS_PACRH_WP1. +#define BM_AIPS_PACRH_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRH_WP1. +#define BS_AIPS_PACRH_WP1 (1U) //!< Bit field size in bits for AIPS_PACRH_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_WP1 field. +#define BR_AIPS_PACRH_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_WP1. +#define BF_AIPS_PACRH_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_WP1), uint32_t) & BM_AIPS_PACRH_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRH_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRH_SP1 (26U) //!< Bit position for AIPS_PACRH_SP1. +#define BM_AIPS_PACRH_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRH_SP1. +#define BS_AIPS_PACRH_SP1 (1U) //!< Bit field size in bits for AIPS_PACRH_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_SP1 field. +#define BR_AIPS_PACRH_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_SP1. +#define BF_AIPS_PACRH_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_SP1), uint32_t) & BM_AIPS_PACRH_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRH_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRH_TP0 (28U) //!< Bit position for AIPS_PACRH_TP0. +#define BM_AIPS_PACRH_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRH_TP0. +#define BS_AIPS_PACRH_TP0 (1U) //!< Bit field size in bits for AIPS_PACRH_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_TP0 field. +#define BR_AIPS_PACRH_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_TP0. +#define BF_AIPS_PACRH_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_TP0), uint32_t) & BM_AIPS_PACRH_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRH_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRH_WP0 (29U) //!< Bit position for AIPS_PACRH_WP0. +#define BM_AIPS_PACRH_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRH_WP0. +#define BS_AIPS_PACRH_WP0 (1U) //!< Bit field size in bits for AIPS_PACRH_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_WP0 field. +#define BR_AIPS_PACRH_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_WP0. +#define BF_AIPS_PACRH_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_WP0), uint32_t) & BM_AIPS_PACRH_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRH_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRH, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRH_SP0 (30U) //!< Bit position for AIPS_PACRH_SP0. +#define BM_AIPS_PACRH_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRH_SP0. +#define BS_AIPS_PACRH_SP0 (1U) //!< Bit field size in bits for AIPS_PACRH_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRH_SP0 field. +#define BR_AIPS_PACRH_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRH_SP0. +#define BF_AIPS_PACRH_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRH_SP0), uint32_t) & BM_AIPS_PACRH_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRH_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRH_ADDR(x), BP_AIPS_PACRH_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRI - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRI - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacri +{ + uint32_t U; + struct _hw_aips_pacri_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacri_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRI register + */ +//@{ +#define HW_AIPS_PACRI_ADDR(x) (REGS_AIPS_BASE(x) + 0x50U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRI(x) (*(__IO hw_aips_pacri_t *) HW_AIPS_PACRI_ADDR(x)) +#define HW_AIPS_PACRI_RD(x) (HW_AIPS_PACRI(x).U) +#define HW_AIPS_PACRI_WR(x, v) (HW_AIPS_PACRI(x).U = (v)) +#define HW_AIPS_PACRI_SET(x, v) (HW_AIPS_PACRI_WR(x, HW_AIPS_PACRI_RD(x) | (v))) +#define HW_AIPS_PACRI_CLR(x, v) (HW_AIPS_PACRI_WR(x, HW_AIPS_PACRI_RD(x) & ~(v))) +#define HW_AIPS_PACRI_TOG(x, v) (HW_AIPS_PACRI_WR(x, HW_AIPS_PACRI_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRI bitfields + */ + +/*! + * @name Register AIPS_PACRI, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRI_TP7 (0U) //!< Bit position for AIPS_PACRI_TP7. +#define BM_AIPS_PACRI_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRI_TP7. +#define BS_AIPS_PACRI_TP7 (1U) //!< Bit field size in bits for AIPS_PACRI_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_TP7 field. +#define BR_AIPS_PACRI_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_TP7. +#define BF_AIPS_PACRI_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_TP7), uint32_t) & BM_AIPS_PACRI_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRI_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRI_WP7 (1U) //!< Bit position for AIPS_PACRI_WP7. +#define BM_AIPS_PACRI_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRI_WP7. +#define BS_AIPS_PACRI_WP7 (1U) //!< Bit field size in bits for AIPS_PACRI_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_WP7 field. +#define BR_AIPS_PACRI_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_WP7. +#define BF_AIPS_PACRI_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_WP7), uint32_t) & BM_AIPS_PACRI_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRI_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRI_SP7 (2U) //!< Bit position for AIPS_PACRI_SP7. +#define BM_AIPS_PACRI_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRI_SP7. +#define BS_AIPS_PACRI_SP7 (1U) //!< Bit field size in bits for AIPS_PACRI_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_SP7 field. +#define BR_AIPS_PACRI_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_SP7. +#define BF_AIPS_PACRI_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_SP7), uint32_t) & BM_AIPS_PACRI_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRI_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRI_TP6 (4U) //!< Bit position for AIPS_PACRI_TP6. +#define BM_AIPS_PACRI_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRI_TP6. +#define BS_AIPS_PACRI_TP6 (1U) //!< Bit field size in bits for AIPS_PACRI_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_TP6 field. +#define BR_AIPS_PACRI_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_TP6. +#define BF_AIPS_PACRI_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_TP6), uint32_t) & BM_AIPS_PACRI_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRI_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRI_WP6 (5U) //!< Bit position for AIPS_PACRI_WP6. +#define BM_AIPS_PACRI_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRI_WP6. +#define BS_AIPS_PACRI_WP6 (1U) //!< Bit field size in bits for AIPS_PACRI_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_WP6 field. +#define BR_AIPS_PACRI_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_WP6. +#define BF_AIPS_PACRI_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_WP6), uint32_t) & BM_AIPS_PACRI_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRI_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRI_SP6 (6U) //!< Bit position for AIPS_PACRI_SP6. +#define BM_AIPS_PACRI_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRI_SP6. +#define BS_AIPS_PACRI_SP6 (1U) //!< Bit field size in bits for AIPS_PACRI_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_SP6 field. +#define BR_AIPS_PACRI_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_SP6. +#define BF_AIPS_PACRI_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_SP6), uint32_t) & BM_AIPS_PACRI_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRI_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRI_TP5 (8U) //!< Bit position for AIPS_PACRI_TP5. +#define BM_AIPS_PACRI_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRI_TP5. +#define BS_AIPS_PACRI_TP5 (1U) //!< Bit field size in bits for AIPS_PACRI_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_TP5 field. +#define BR_AIPS_PACRI_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_TP5. +#define BF_AIPS_PACRI_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_TP5), uint32_t) & BM_AIPS_PACRI_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRI_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRI_WP5 (9U) //!< Bit position for AIPS_PACRI_WP5. +#define BM_AIPS_PACRI_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRI_WP5. +#define BS_AIPS_PACRI_WP5 (1U) //!< Bit field size in bits for AIPS_PACRI_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_WP5 field. +#define BR_AIPS_PACRI_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_WP5. +#define BF_AIPS_PACRI_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_WP5), uint32_t) & BM_AIPS_PACRI_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRI_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRI_SP5 (10U) //!< Bit position for AIPS_PACRI_SP5. +#define BM_AIPS_PACRI_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRI_SP5. +#define BS_AIPS_PACRI_SP5 (1U) //!< Bit field size in bits for AIPS_PACRI_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_SP5 field. +#define BR_AIPS_PACRI_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_SP5. +#define BF_AIPS_PACRI_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_SP5), uint32_t) & BM_AIPS_PACRI_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRI_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRI_TP4 (12U) //!< Bit position for AIPS_PACRI_TP4. +#define BM_AIPS_PACRI_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRI_TP4. +#define BS_AIPS_PACRI_TP4 (1U) //!< Bit field size in bits for AIPS_PACRI_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_TP4 field. +#define BR_AIPS_PACRI_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_TP4. +#define BF_AIPS_PACRI_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_TP4), uint32_t) & BM_AIPS_PACRI_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRI_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRI_WP4 (13U) //!< Bit position for AIPS_PACRI_WP4. +#define BM_AIPS_PACRI_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRI_WP4. +#define BS_AIPS_PACRI_WP4 (1U) //!< Bit field size in bits for AIPS_PACRI_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_WP4 field. +#define BR_AIPS_PACRI_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_WP4. +#define BF_AIPS_PACRI_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_WP4), uint32_t) & BM_AIPS_PACRI_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRI_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRI_SP4 (14U) //!< Bit position for AIPS_PACRI_SP4. +#define BM_AIPS_PACRI_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRI_SP4. +#define BS_AIPS_PACRI_SP4 (1U) //!< Bit field size in bits for AIPS_PACRI_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_SP4 field. +#define BR_AIPS_PACRI_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_SP4. +#define BF_AIPS_PACRI_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_SP4), uint32_t) & BM_AIPS_PACRI_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRI_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRI_TP3 (16U) //!< Bit position for AIPS_PACRI_TP3. +#define BM_AIPS_PACRI_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRI_TP3. +#define BS_AIPS_PACRI_TP3 (1U) //!< Bit field size in bits for AIPS_PACRI_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_TP3 field. +#define BR_AIPS_PACRI_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_TP3. +#define BF_AIPS_PACRI_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_TP3), uint32_t) & BM_AIPS_PACRI_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRI_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRI_WP3 (17U) //!< Bit position for AIPS_PACRI_WP3. +#define BM_AIPS_PACRI_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRI_WP3. +#define BS_AIPS_PACRI_WP3 (1U) //!< Bit field size in bits for AIPS_PACRI_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_WP3 field. +#define BR_AIPS_PACRI_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_WP3. +#define BF_AIPS_PACRI_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_WP3), uint32_t) & BM_AIPS_PACRI_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRI_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRI_SP3 (18U) //!< Bit position for AIPS_PACRI_SP3. +#define BM_AIPS_PACRI_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRI_SP3. +#define BS_AIPS_PACRI_SP3 (1U) //!< Bit field size in bits for AIPS_PACRI_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_SP3 field. +#define BR_AIPS_PACRI_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_SP3. +#define BF_AIPS_PACRI_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_SP3), uint32_t) & BM_AIPS_PACRI_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRI_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRI_TP2 (20U) //!< Bit position for AIPS_PACRI_TP2. +#define BM_AIPS_PACRI_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRI_TP2. +#define BS_AIPS_PACRI_TP2 (1U) //!< Bit field size in bits for AIPS_PACRI_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_TP2 field. +#define BR_AIPS_PACRI_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_TP2. +#define BF_AIPS_PACRI_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_TP2), uint32_t) & BM_AIPS_PACRI_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRI_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRI_WP2 (21U) //!< Bit position for AIPS_PACRI_WP2. +#define BM_AIPS_PACRI_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRI_WP2. +#define BS_AIPS_PACRI_WP2 (1U) //!< Bit field size in bits for AIPS_PACRI_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_WP2 field. +#define BR_AIPS_PACRI_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_WP2. +#define BF_AIPS_PACRI_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_WP2), uint32_t) & BM_AIPS_PACRI_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRI_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRI_SP2 (22U) //!< Bit position for AIPS_PACRI_SP2. +#define BM_AIPS_PACRI_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRI_SP2. +#define BS_AIPS_PACRI_SP2 (1U) //!< Bit field size in bits for AIPS_PACRI_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_SP2 field. +#define BR_AIPS_PACRI_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_SP2. +#define BF_AIPS_PACRI_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_SP2), uint32_t) & BM_AIPS_PACRI_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRI_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRI_TP1 (24U) //!< Bit position for AIPS_PACRI_TP1. +#define BM_AIPS_PACRI_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRI_TP1. +#define BS_AIPS_PACRI_TP1 (1U) //!< Bit field size in bits for AIPS_PACRI_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_TP1 field. +#define BR_AIPS_PACRI_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_TP1. +#define BF_AIPS_PACRI_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_TP1), uint32_t) & BM_AIPS_PACRI_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRI_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRI_WP1 (25U) //!< Bit position for AIPS_PACRI_WP1. +#define BM_AIPS_PACRI_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRI_WP1. +#define BS_AIPS_PACRI_WP1 (1U) //!< Bit field size in bits for AIPS_PACRI_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_WP1 field. +#define BR_AIPS_PACRI_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_WP1. +#define BF_AIPS_PACRI_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_WP1), uint32_t) & BM_AIPS_PACRI_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRI_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRI_SP1 (26U) //!< Bit position for AIPS_PACRI_SP1. +#define BM_AIPS_PACRI_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRI_SP1. +#define BS_AIPS_PACRI_SP1 (1U) //!< Bit field size in bits for AIPS_PACRI_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_SP1 field. +#define BR_AIPS_PACRI_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_SP1. +#define BF_AIPS_PACRI_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_SP1), uint32_t) & BM_AIPS_PACRI_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRI_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRI_TP0 (28U) //!< Bit position for AIPS_PACRI_TP0. +#define BM_AIPS_PACRI_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRI_TP0. +#define BS_AIPS_PACRI_TP0 (1U) //!< Bit field size in bits for AIPS_PACRI_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_TP0 field. +#define BR_AIPS_PACRI_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_TP0. +#define BF_AIPS_PACRI_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_TP0), uint32_t) & BM_AIPS_PACRI_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRI_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRI_WP0 (29U) //!< Bit position for AIPS_PACRI_WP0. +#define BM_AIPS_PACRI_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRI_WP0. +#define BS_AIPS_PACRI_WP0 (1U) //!< Bit field size in bits for AIPS_PACRI_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_WP0 field. +#define BR_AIPS_PACRI_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_WP0. +#define BF_AIPS_PACRI_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_WP0), uint32_t) & BM_AIPS_PACRI_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRI_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRI, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRI_SP0 (30U) //!< Bit position for AIPS_PACRI_SP0. +#define BM_AIPS_PACRI_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRI_SP0. +#define BS_AIPS_PACRI_SP0 (1U) //!< Bit field size in bits for AIPS_PACRI_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRI_SP0 field. +#define BR_AIPS_PACRI_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRI_SP0. +#define BF_AIPS_PACRI_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRI_SP0), uint32_t) & BM_AIPS_PACRI_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRI_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRI_ADDR(x), BP_AIPS_PACRI_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRJ - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRJ - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacrj +{ + uint32_t U; + struct _hw_aips_pacrj_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrj_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRJ register + */ +//@{ +#define HW_AIPS_PACRJ_ADDR(x) (REGS_AIPS_BASE(x) + 0x54U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRJ(x) (*(__IO hw_aips_pacrj_t *) HW_AIPS_PACRJ_ADDR(x)) +#define HW_AIPS_PACRJ_RD(x) (HW_AIPS_PACRJ(x).U) +#define HW_AIPS_PACRJ_WR(x, v) (HW_AIPS_PACRJ(x).U = (v)) +#define HW_AIPS_PACRJ_SET(x, v) (HW_AIPS_PACRJ_WR(x, HW_AIPS_PACRJ_RD(x) | (v))) +#define HW_AIPS_PACRJ_CLR(x, v) (HW_AIPS_PACRJ_WR(x, HW_AIPS_PACRJ_RD(x) & ~(v))) +#define HW_AIPS_PACRJ_TOG(x, v) (HW_AIPS_PACRJ_WR(x, HW_AIPS_PACRJ_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRJ bitfields + */ + +/*! + * @name Register AIPS_PACRJ, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRJ_TP7 (0U) //!< Bit position for AIPS_PACRJ_TP7. +#define BM_AIPS_PACRJ_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRJ_TP7. +#define BS_AIPS_PACRJ_TP7 (1U) //!< Bit field size in bits for AIPS_PACRJ_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_TP7 field. +#define BR_AIPS_PACRJ_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_TP7. +#define BF_AIPS_PACRJ_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_TP7), uint32_t) & BM_AIPS_PACRJ_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRJ_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRJ_WP7 (1U) //!< Bit position for AIPS_PACRJ_WP7. +#define BM_AIPS_PACRJ_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRJ_WP7. +#define BS_AIPS_PACRJ_WP7 (1U) //!< Bit field size in bits for AIPS_PACRJ_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_WP7 field. +#define BR_AIPS_PACRJ_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_WP7. +#define BF_AIPS_PACRJ_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_WP7), uint32_t) & BM_AIPS_PACRJ_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRJ_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRJ_SP7 (2U) //!< Bit position for AIPS_PACRJ_SP7. +#define BM_AIPS_PACRJ_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRJ_SP7. +#define BS_AIPS_PACRJ_SP7 (1U) //!< Bit field size in bits for AIPS_PACRJ_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_SP7 field. +#define BR_AIPS_PACRJ_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_SP7. +#define BF_AIPS_PACRJ_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_SP7), uint32_t) & BM_AIPS_PACRJ_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRJ_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRJ_TP6 (4U) //!< Bit position for AIPS_PACRJ_TP6. +#define BM_AIPS_PACRJ_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRJ_TP6. +#define BS_AIPS_PACRJ_TP6 (1U) //!< Bit field size in bits for AIPS_PACRJ_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_TP6 field. +#define BR_AIPS_PACRJ_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_TP6. +#define BF_AIPS_PACRJ_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_TP6), uint32_t) & BM_AIPS_PACRJ_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRJ_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRJ_WP6 (5U) //!< Bit position for AIPS_PACRJ_WP6. +#define BM_AIPS_PACRJ_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRJ_WP6. +#define BS_AIPS_PACRJ_WP6 (1U) //!< Bit field size in bits for AIPS_PACRJ_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_WP6 field. +#define BR_AIPS_PACRJ_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_WP6. +#define BF_AIPS_PACRJ_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_WP6), uint32_t) & BM_AIPS_PACRJ_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRJ_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRJ_SP6 (6U) //!< Bit position for AIPS_PACRJ_SP6. +#define BM_AIPS_PACRJ_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRJ_SP6. +#define BS_AIPS_PACRJ_SP6 (1U) //!< Bit field size in bits for AIPS_PACRJ_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_SP6 field. +#define BR_AIPS_PACRJ_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_SP6. +#define BF_AIPS_PACRJ_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_SP6), uint32_t) & BM_AIPS_PACRJ_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRJ_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRJ_TP5 (8U) //!< Bit position for AIPS_PACRJ_TP5. +#define BM_AIPS_PACRJ_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRJ_TP5. +#define BS_AIPS_PACRJ_TP5 (1U) //!< Bit field size in bits for AIPS_PACRJ_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_TP5 field. +#define BR_AIPS_PACRJ_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_TP5. +#define BF_AIPS_PACRJ_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_TP5), uint32_t) & BM_AIPS_PACRJ_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRJ_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRJ_WP5 (9U) //!< Bit position for AIPS_PACRJ_WP5. +#define BM_AIPS_PACRJ_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRJ_WP5. +#define BS_AIPS_PACRJ_WP5 (1U) //!< Bit field size in bits for AIPS_PACRJ_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_WP5 field. +#define BR_AIPS_PACRJ_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_WP5. +#define BF_AIPS_PACRJ_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_WP5), uint32_t) & BM_AIPS_PACRJ_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRJ_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRJ_SP5 (10U) //!< Bit position for AIPS_PACRJ_SP5. +#define BM_AIPS_PACRJ_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRJ_SP5. +#define BS_AIPS_PACRJ_SP5 (1U) //!< Bit field size in bits for AIPS_PACRJ_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_SP5 field. +#define BR_AIPS_PACRJ_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_SP5. +#define BF_AIPS_PACRJ_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_SP5), uint32_t) & BM_AIPS_PACRJ_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRJ_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRJ_TP4 (12U) //!< Bit position for AIPS_PACRJ_TP4. +#define BM_AIPS_PACRJ_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRJ_TP4. +#define BS_AIPS_PACRJ_TP4 (1U) //!< Bit field size in bits for AIPS_PACRJ_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_TP4 field. +#define BR_AIPS_PACRJ_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_TP4. +#define BF_AIPS_PACRJ_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_TP4), uint32_t) & BM_AIPS_PACRJ_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRJ_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRJ_WP4 (13U) //!< Bit position for AIPS_PACRJ_WP4. +#define BM_AIPS_PACRJ_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRJ_WP4. +#define BS_AIPS_PACRJ_WP4 (1U) //!< Bit field size in bits for AIPS_PACRJ_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_WP4 field. +#define BR_AIPS_PACRJ_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_WP4. +#define BF_AIPS_PACRJ_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_WP4), uint32_t) & BM_AIPS_PACRJ_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRJ_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRJ_SP4 (14U) //!< Bit position for AIPS_PACRJ_SP4. +#define BM_AIPS_PACRJ_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRJ_SP4. +#define BS_AIPS_PACRJ_SP4 (1U) //!< Bit field size in bits for AIPS_PACRJ_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_SP4 field. +#define BR_AIPS_PACRJ_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_SP4. +#define BF_AIPS_PACRJ_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_SP4), uint32_t) & BM_AIPS_PACRJ_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRJ_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRJ_TP3 (16U) //!< Bit position for AIPS_PACRJ_TP3. +#define BM_AIPS_PACRJ_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRJ_TP3. +#define BS_AIPS_PACRJ_TP3 (1U) //!< Bit field size in bits for AIPS_PACRJ_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_TP3 field. +#define BR_AIPS_PACRJ_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_TP3. +#define BF_AIPS_PACRJ_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_TP3), uint32_t) & BM_AIPS_PACRJ_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRJ_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRJ_WP3 (17U) //!< Bit position for AIPS_PACRJ_WP3. +#define BM_AIPS_PACRJ_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRJ_WP3. +#define BS_AIPS_PACRJ_WP3 (1U) //!< Bit field size in bits for AIPS_PACRJ_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_WP3 field. +#define BR_AIPS_PACRJ_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_WP3. +#define BF_AIPS_PACRJ_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_WP3), uint32_t) & BM_AIPS_PACRJ_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRJ_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRJ_SP3 (18U) //!< Bit position for AIPS_PACRJ_SP3. +#define BM_AIPS_PACRJ_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRJ_SP3. +#define BS_AIPS_PACRJ_SP3 (1U) //!< Bit field size in bits for AIPS_PACRJ_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_SP3 field. +#define BR_AIPS_PACRJ_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_SP3. +#define BF_AIPS_PACRJ_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_SP3), uint32_t) & BM_AIPS_PACRJ_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRJ_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRJ_TP2 (20U) //!< Bit position for AIPS_PACRJ_TP2. +#define BM_AIPS_PACRJ_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRJ_TP2. +#define BS_AIPS_PACRJ_TP2 (1U) //!< Bit field size in bits for AIPS_PACRJ_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_TP2 field. +#define BR_AIPS_PACRJ_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_TP2. +#define BF_AIPS_PACRJ_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_TP2), uint32_t) & BM_AIPS_PACRJ_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRJ_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRJ_WP2 (21U) //!< Bit position for AIPS_PACRJ_WP2. +#define BM_AIPS_PACRJ_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRJ_WP2. +#define BS_AIPS_PACRJ_WP2 (1U) //!< Bit field size in bits for AIPS_PACRJ_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_WP2 field. +#define BR_AIPS_PACRJ_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_WP2. +#define BF_AIPS_PACRJ_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_WP2), uint32_t) & BM_AIPS_PACRJ_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRJ_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRJ_SP2 (22U) //!< Bit position for AIPS_PACRJ_SP2. +#define BM_AIPS_PACRJ_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRJ_SP2. +#define BS_AIPS_PACRJ_SP2 (1U) //!< Bit field size in bits for AIPS_PACRJ_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_SP2 field. +#define BR_AIPS_PACRJ_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_SP2. +#define BF_AIPS_PACRJ_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_SP2), uint32_t) & BM_AIPS_PACRJ_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRJ_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRJ_TP1 (24U) //!< Bit position for AIPS_PACRJ_TP1. +#define BM_AIPS_PACRJ_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRJ_TP1. +#define BS_AIPS_PACRJ_TP1 (1U) //!< Bit field size in bits for AIPS_PACRJ_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_TP1 field. +#define BR_AIPS_PACRJ_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_TP1. +#define BF_AIPS_PACRJ_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_TP1), uint32_t) & BM_AIPS_PACRJ_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRJ_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRJ_WP1 (25U) //!< Bit position for AIPS_PACRJ_WP1. +#define BM_AIPS_PACRJ_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRJ_WP1. +#define BS_AIPS_PACRJ_WP1 (1U) //!< Bit field size in bits for AIPS_PACRJ_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_WP1 field. +#define BR_AIPS_PACRJ_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_WP1. +#define BF_AIPS_PACRJ_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_WP1), uint32_t) & BM_AIPS_PACRJ_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRJ_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRJ_SP1 (26U) //!< Bit position for AIPS_PACRJ_SP1. +#define BM_AIPS_PACRJ_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRJ_SP1. +#define BS_AIPS_PACRJ_SP1 (1U) //!< Bit field size in bits for AIPS_PACRJ_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_SP1 field. +#define BR_AIPS_PACRJ_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_SP1. +#define BF_AIPS_PACRJ_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_SP1), uint32_t) & BM_AIPS_PACRJ_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRJ_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRJ_TP0 (28U) //!< Bit position for AIPS_PACRJ_TP0. +#define BM_AIPS_PACRJ_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRJ_TP0. +#define BS_AIPS_PACRJ_TP0 (1U) //!< Bit field size in bits for AIPS_PACRJ_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_TP0 field. +#define BR_AIPS_PACRJ_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_TP0. +#define BF_AIPS_PACRJ_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_TP0), uint32_t) & BM_AIPS_PACRJ_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRJ_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRJ_WP0 (29U) //!< Bit position for AIPS_PACRJ_WP0. +#define BM_AIPS_PACRJ_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRJ_WP0. +#define BS_AIPS_PACRJ_WP0 (1U) //!< Bit field size in bits for AIPS_PACRJ_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_WP0 field. +#define BR_AIPS_PACRJ_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_WP0. +#define BF_AIPS_PACRJ_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_WP0), uint32_t) & BM_AIPS_PACRJ_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRJ_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRJ, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRJ_SP0 (30U) //!< Bit position for AIPS_PACRJ_SP0. +#define BM_AIPS_PACRJ_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRJ_SP0. +#define BS_AIPS_PACRJ_SP0 (1U) //!< Bit field size in bits for AIPS_PACRJ_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRJ_SP0 field. +#define BR_AIPS_PACRJ_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRJ_SP0. +#define BF_AIPS_PACRJ_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRJ_SP0), uint32_t) & BM_AIPS_PACRJ_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRJ_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRJ_ADDR(x), BP_AIPS_PACRJ_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRK - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRK - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacrk +{ + uint32_t U; + struct _hw_aips_pacrk_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrk_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRK register + */ +//@{ +#define HW_AIPS_PACRK_ADDR(x) (REGS_AIPS_BASE(x) + 0x58U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRK(x) (*(__IO hw_aips_pacrk_t *) HW_AIPS_PACRK_ADDR(x)) +#define HW_AIPS_PACRK_RD(x) (HW_AIPS_PACRK(x).U) +#define HW_AIPS_PACRK_WR(x, v) (HW_AIPS_PACRK(x).U = (v)) +#define HW_AIPS_PACRK_SET(x, v) (HW_AIPS_PACRK_WR(x, HW_AIPS_PACRK_RD(x) | (v))) +#define HW_AIPS_PACRK_CLR(x, v) (HW_AIPS_PACRK_WR(x, HW_AIPS_PACRK_RD(x) & ~(v))) +#define HW_AIPS_PACRK_TOG(x, v) (HW_AIPS_PACRK_WR(x, HW_AIPS_PACRK_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRK bitfields + */ + +/*! + * @name Register AIPS_PACRK, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRK_TP7 (0U) //!< Bit position for AIPS_PACRK_TP7. +#define BM_AIPS_PACRK_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRK_TP7. +#define BS_AIPS_PACRK_TP7 (1U) //!< Bit field size in bits for AIPS_PACRK_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_TP7 field. +#define BR_AIPS_PACRK_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_TP7. +#define BF_AIPS_PACRK_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_TP7), uint32_t) & BM_AIPS_PACRK_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRK_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRK_WP7 (1U) //!< Bit position for AIPS_PACRK_WP7. +#define BM_AIPS_PACRK_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRK_WP7. +#define BS_AIPS_PACRK_WP7 (1U) //!< Bit field size in bits for AIPS_PACRK_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_WP7 field. +#define BR_AIPS_PACRK_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_WP7. +#define BF_AIPS_PACRK_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_WP7), uint32_t) & BM_AIPS_PACRK_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRK_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRK_SP7 (2U) //!< Bit position for AIPS_PACRK_SP7. +#define BM_AIPS_PACRK_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRK_SP7. +#define BS_AIPS_PACRK_SP7 (1U) //!< Bit field size in bits for AIPS_PACRK_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_SP7 field. +#define BR_AIPS_PACRK_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_SP7. +#define BF_AIPS_PACRK_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_SP7), uint32_t) & BM_AIPS_PACRK_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRK_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRK_TP6 (4U) //!< Bit position for AIPS_PACRK_TP6. +#define BM_AIPS_PACRK_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRK_TP6. +#define BS_AIPS_PACRK_TP6 (1U) //!< Bit field size in bits for AIPS_PACRK_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_TP6 field. +#define BR_AIPS_PACRK_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_TP6. +#define BF_AIPS_PACRK_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_TP6), uint32_t) & BM_AIPS_PACRK_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRK_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRK_WP6 (5U) //!< Bit position for AIPS_PACRK_WP6. +#define BM_AIPS_PACRK_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRK_WP6. +#define BS_AIPS_PACRK_WP6 (1U) //!< Bit field size in bits for AIPS_PACRK_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_WP6 field. +#define BR_AIPS_PACRK_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_WP6. +#define BF_AIPS_PACRK_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_WP6), uint32_t) & BM_AIPS_PACRK_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRK_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRK_SP6 (6U) //!< Bit position for AIPS_PACRK_SP6. +#define BM_AIPS_PACRK_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRK_SP6. +#define BS_AIPS_PACRK_SP6 (1U) //!< Bit field size in bits for AIPS_PACRK_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_SP6 field. +#define BR_AIPS_PACRK_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_SP6. +#define BF_AIPS_PACRK_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_SP6), uint32_t) & BM_AIPS_PACRK_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRK_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRK_TP5 (8U) //!< Bit position for AIPS_PACRK_TP5. +#define BM_AIPS_PACRK_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRK_TP5. +#define BS_AIPS_PACRK_TP5 (1U) //!< Bit field size in bits for AIPS_PACRK_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_TP5 field. +#define BR_AIPS_PACRK_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_TP5. +#define BF_AIPS_PACRK_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_TP5), uint32_t) & BM_AIPS_PACRK_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRK_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRK_WP5 (9U) //!< Bit position for AIPS_PACRK_WP5. +#define BM_AIPS_PACRK_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRK_WP5. +#define BS_AIPS_PACRK_WP5 (1U) //!< Bit field size in bits for AIPS_PACRK_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_WP5 field. +#define BR_AIPS_PACRK_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_WP5. +#define BF_AIPS_PACRK_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_WP5), uint32_t) & BM_AIPS_PACRK_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRK_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRK_SP5 (10U) //!< Bit position for AIPS_PACRK_SP5. +#define BM_AIPS_PACRK_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRK_SP5. +#define BS_AIPS_PACRK_SP5 (1U) //!< Bit field size in bits for AIPS_PACRK_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_SP5 field. +#define BR_AIPS_PACRK_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_SP5. +#define BF_AIPS_PACRK_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_SP5), uint32_t) & BM_AIPS_PACRK_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRK_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRK_TP4 (12U) //!< Bit position for AIPS_PACRK_TP4. +#define BM_AIPS_PACRK_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRK_TP4. +#define BS_AIPS_PACRK_TP4 (1U) //!< Bit field size in bits for AIPS_PACRK_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_TP4 field. +#define BR_AIPS_PACRK_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_TP4. +#define BF_AIPS_PACRK_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_TP4), uint32_t) & BM_AIPS_PACRK_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRK_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRK_WP4 (13U) //!< Bit position for AIPS_PACRK_WP4. +#define BM_AIPS_PACRK_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRK_WP4. +#define BS_AIPS_PACRK_WP4 (1U) //!< Bit field size in bits for AIPS_PACRK_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_WP4 field. +#define BR_AIPS_PACRK_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_WP4. +#define BF_AIPS_PACRK_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_WP4), uint32_t) & BM_AIPS_PACRK_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRK_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRK_SP4 (14U) //!< Bit position for AIPS_PACRK_SP4. +#define BM_AIPS_PACRK_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRK_SP4. +#define BS_AIPS_PACRK_SP4 (1U) //!< Bit field size in bits for AIPS_PACRK_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_SP4 field. +#define BR_AIPS_PACRK_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_SP4. +#define BF_AIPS_PACRK_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_SP4), uint32_t) & BM_AIPS_PACRK_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRK_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRK_TP3 (16U) //!< Bit position for AIPS_PACRK_TP3. +#define BM_AIPS_PACRK_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRK_TP3. +#define BS_AIPS_PACRK_TP3 (1U) //!< Bit field size in bits for AIPS_PACRK_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_TP3 field. +#define BR_AIPS_PACRK_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_TP3. +#define BF_AIPS_PACRK_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_TP3), uint32_t) & BM_AIPS_PACRK_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRK_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRK_WP3 (17U) //!< Bit position for AIPS_PACRK_WP3. +#define BM_AIPS_PACRK_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRK_WP3. +#define BS_AIPS_PACRK_WP3 (1U) //!< Bit field size in bits for AIPS_PACRK_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_WP3 field. +#define BR_AIPS_PACRK_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_WP3. +#define BF_AIPS_PACRK_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_WP3), uint32_t) & BM_AIPS_PACRK_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRK_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRK_SP3 (18U) //!< Bit position for AIPS_PACRK_SP3. +#define BM_AIPS_PACRK_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRK_SP3. +#define BS_AIPS_PACRK_SP3 (1U) //!< Bit field size in bits for AIPS_PACRK_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_SP3 field. +#define BR_AIPS_PACRK_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_SP3. +#define BF_AIPS_PACRK_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_SP3), uint32_t) & BM_AIPS_PACRK_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRK_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRK_TP2 (20U) //!< Bit position for AIPS_PACRK_TP2. +#define BM_AIPS_PACRK_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRK_TP2. +#define BS_AIPS_PACRK_TP2 (1U) //!< Bit field size in bits for AIPS_PACRK_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_TP2 field. +#define BR_AIPS_PACRK_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_TP2. +#define BF_AIPS_PACRK_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_TP2), uint32_t) & BM_AIPS_PACRK_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRK_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRK_WP2 (21U) //!< Bit position for AIPS_PACRK_WP2. +#define BM_AIPS_PACRK_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRK_WP2. +#define BS_AIPS_PACRK_WP2 (1U) //!< Bit field size in bits for AIPS_PACRK_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_WP2 field. +#define BR_AIPS_PACRK_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_WP2. +#define BF_AIPS_PACRK_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_WP2), uint32_t) & BM_AIPS_PACRK_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRK_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRK_SP2 (22U) //!< Bit position for AIPS_PACRK_SP2. +#define BM_AIPS_PACRK_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRK_SP2. +#define BS_AIPS_PACRK_SP2 (1U) //!< Bit field size in bits for AIPS_PACRK_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_SP2 field. +#define BR_AIPS_PACRK_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_SP2. +#define BF_AIPS_PACRK_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_SP2), uint32_t) & BM_AIPS_PACRK_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRK_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRK_TP1 (24U) //!< Bit position for AIPS_PACRK_TP1. +#define BM_AIPS_PACRK_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRK_TP1. +#define BS_AIPS_PACRK_TP1 (1U) //!< Bit field size in bits for AIPS_PACRK_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_TP1 field. +#define BR_AIPS_PACRK_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_TP1. +#define BF_AIPS_PACRK_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_TP1), uint32_t) & BM_AIPS_PACRK_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRK_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRK_WP1 (25U) //!< Bit position for AIPS_PACRK_WP1. +#define BM_AIPS_PACRK_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRK_WP1. +#define BS_AIPS_PACRK_WP1 (1U) //!< Bit field size in bits for AIPS_PACRK_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_WP1 field. +#define BR_AIPS_PACRK_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_WP1. +#define BF_AIPS_PACRK_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_WP1), uint32_t) & BM_AIPS_PACRK_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRK_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRK_SP1 (26U) //!< Bit position for AIPS_PACRK_SP1. +#define BM_AIPS_PACRK_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRK_SP1. +#define BS_AIPS_PACRK_SP1 (1U) //!< Bit field size in bits for AIPS_PACRK_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_SP1 field. +#define BR_AIPS_PACRK_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_SP1. +#define BF_AIPS_PACRK_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_SP1), uint32_t) & BM_AIPS_PACRK_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRK_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRK_TP0 (28U) //!< Bit position for AIPS_PACRK_TP0. +#define BM_AIPS_PACRK_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRK_TP0. +#define BS_AIPS_PACRK_TP0 (1U) //!< Bit field size in bits for AIPS_PACRK_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_TP0 field. +#define BR_AIPS_PACRK_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_TP0. +#define BF_AIPS_PACRK_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_TP0), uint32_t) & BM_AIPS_PACRK_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRK_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRK_WP0 (29U) //!< Bit position for AIPS_PACRK_WP0. +#define BM_AIPS_PACRK_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRK_WP0. +#define BS_AIPS_PACRK_WP0 (1U) //!< Bit field size in bits for AIPS_PACRK_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_WP0 field. +#define BR_AIPS_PACRK_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_WP0. +#define BF_AIPS_PACRK_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_WP0), uint32_t) & BM_AIPS_PACRK_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRK_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRK, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRK_SP0 (30U) //!< Bit position for AIPS_PACRK_SP0. +#define BM_AIPS_PACRK_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRK_SP0. +#define BS_AIPS_PACRK_SP0 (1U) //!< Bit field size in bits for AIPS_PACRK_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRK_SP0 field. +#define BR_AIPS_PACRK_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRK_SP0. +#define BF_AIPS_PACRK_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRK_SP0), uint32_t) & BM_AIPS_PACRK_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRK_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRK_ADDR(x), BP_AIPS_PACRK_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRL - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRL - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacrl +{ + uint32_t U; + struct _hw_aips_pacrl_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrl_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRL register + */ +//@{ +#define HW_AIPS_PACRL_ADDR(x) (REGS_AIPS_BASE(x) + 0x5CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRL(x) (*(__IO hw_aips_pacrl_t *) HW_AIPS_PACRL_ADDR(x)) +#define HW_AIPS_PACRL_RD(x) (HW_AIPS_PACRL(x).U) +#define HW_AIPS_PACRL_WR(x, v) (HW_AIPS_PACRL(x).U = (v)) +#define HW_AIPS_PACRL_SET(x, v) (HW_AIPS_PACRL_WR(x, HW_AIPS_PACRL_RD(x) | (v))) +#define HW_AIPS_PACRL_CLR(x, v) (HW_AIPS_PACRL_WR(x, HW_AIPS_PACRL_RD(x) & ~(v))) +#define HW_AIPS_PACRL_TOG(x, v) (HW_AIPS_PACRL_WR(x, HW_AIPS_PACRL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRL bitfields + */ + +/*! + * @name Register AIPS_PACRL, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRL_TP7 (0U) //!< Bit position for AIPS_PACRL_TP7. +#define BM_AIPS_PACRL_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRL_TP7. +#define BS_AIPS_PACRL_TP7 (1U) //!< Bit field size in bits for AIPS_PACRL_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_TP7 field. +#define BR_AIPS_PACRL_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_TP7. +#define BF_AIPS_PACRL_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_TP7), uint32_t) & BM_AIPS_PACRL_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRL_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRL_WP7 (1U) //!< Bit position for AIPS_PACRL_WP7. +#define BM_AIPS_PACRL_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRL_WP7. +#define BS_AIPS_PACRL_WP7 (1U) //!< Bit field size in bits for AIPS_PACRL_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_WP7 field. +#define BR_AIPS_PACRL_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_WP7. +#define BF_AIPS_PACRL_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_WP7), uint32_t) & BM_AIPS_PACRL_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRL_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRL_SP7 (2U) //!< Bit position for AIPS_PACRL_SP7. +#define BM_AIPS_PACRL_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRL_SP7. +#define BS_AIPS_PACRL_SP7 (1U) //!< Bit field size in bits for AIPS_PACRL_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_SP7 field. +#define BR_AIPS_PACRL_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_SP7. +#define BF_AIPS_PACRL_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_SP7), uint32_t) & BM_AIPS_PACRL_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRL_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRL_TP6 (4U) //!< Bit position for AIPS_PACRL_TP6. +#define BM_AIPS_PACRL_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRL_TP6. +#define BS_AIPS_PACRL_TP6 (1U) //!< Bit field size in bits for AIPS_PACRL_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_TP6 field. +#define BR_AIPS_PACRL_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_TP6. +#define BF_AIPS_PACRL_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_TP6), uint32_t) & BM_AIPS_PACRL_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRL_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRL_WP6 (5U) //!< Bit position for AIPS_PACRL_WP6. +#define BM_AIPS_PACRL_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRL_WP6. +#define BS_AIPS_PACRL_WP6 (1U) //!< Bit field size in bits for AIPS_PACRL_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_WP6 field. +#define BR_AIPS_PACRL_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_WP6. +#define BF_AIPS_PACRL_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_WP6), uint32_t) & BM_AIPS_PACRL_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRL_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRL_SP6 (6U) //!< Bit position for AIPS_PACRL_SP6. +#define BM_AIPS_PACRL_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRL_SP6. +#define BS_AIPS_PACRL_SP6 (1U) //!< Bit field size in bits for AIPS_PACRL_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_SP6 field. +#define BR_AIPS_PACRL_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_SP6. +#define BF_AIPS_PACRL_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_SP6), uint32_t) & BM_AIPS_PACRL_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRL_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRL_TP5 (8U) //!< Bit position for AIPS_PACRL_TP5. +#define BM_AIPS_PACRL_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRL_TP5. +#define BS_AIPS_PACRL_TP5 (1U) //!< Bit field size in bits for AIPS_PACRL_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_TP5 field. +#define BR_AIPS_PACRL_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_TP5. +#define BF_AIPS_PACRL_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_TP5), uint32_t) & BM_AIPS_PACRL_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRL_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRL_WP5 (9U) //!< Bit position for AIPS_PACRL_WP5. +#define BM_AIPS_PACRL_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRL_WP5. +#define BS_AIPS_PACRL_WP5 (1U) //!< Bit field size in bits for AIPS_PACRL_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_WP5 field. +#define BR_AIPS_PACRL_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_WP5. +#define BF_AIPS_PACRL_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_WP5), uint32_t) & BM_AIPS_PACRL_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRL_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRL_SP5 (10U) //!< Bit position for AIPS_PACRL_SP5. +#define BM_AIPS_PACRL_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRL_SP5. +#define BS_AIPS_PACRL_SP5 (1U) //!< Bit field size in bits for AIPS_PACRL_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_SP5 field. +#define BR_AIPS_PACRL_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_SP5. +#define BF_AIPS_PACRL_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_SP5), uint32_t) & BM_AIPS_PACRL_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRL_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRL_TP4 (12U) //!< Bit position for AIPS_PACRL_TP4. +#define BM_AIPS_PACRL_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRL_TP4. +#define BS_AIPS_PACRL_TP4 (1U) //!< Bit field size in bits for AIPS_PACRL_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_TP4 field. +#define BR_AIPS_PACRL_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_TP4. +#define BF_AIPS_PACRL_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_TP4), uint32_t) & BM_AIPS_PACRL_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRL_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRL_WP4 (13U) //!< Bit position for AIPS_PACRL_WP4. +#define BM_AIPS_PACRL_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRL_WP4. +#define BS_AIPS_PACRL_WP4 (1U) //!< Bit field size in bits for AIPS_PACRL_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_WP4 field. +#define BR_AIPS_PACRL_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_WP4. +#define BF_AIPS_PACRL_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_WP4), uint32_t) & BM_AIPS_PACRL_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRL_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRL_SP4 (14U) //!< Bit position for AIPS_PACRL_SP4. +#define BM_AIPS_PACRL_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRL_SP4. +#define BS_AIPS_PACRL_SP4 (1U) //!< Bit field size in bits for AIPS_PACRL_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_SP4 field. +#define BR_AIPS_PACRL_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_SP4. +#define BF_AIPS_PACRL_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_SP4), uint32_t) & BM_AIPS_PACRL_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRL_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRL_TP3 (16U) //!< Bit position for AIPS_PACRL_TP3. +#define BM_AIPS_PACRL_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRL_TP3. +#define BS_AIPS_PACRL_TP3 (1U) //!< Bit field size in bits for AIPS_PACRL_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_TP3 field. +#define BR_AIPS_PACRL_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_TP3. +#define BF_AIPS_PACRL_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_TP3), uint32_t) & BM_AIPS_PACRL_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRL_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRL_WP3 (17U) //!< Bit position for AIPS_PACRL_WP3. +#define BM_AIPS_PACRL_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRL_WP3. +#define BS_AIPS_PACRL_WP3 (1U) //!< Bit field size in bits for AIPS_PACRL_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_WP3 field. +#define BR_AIPS_PACRL_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_WP3. +#define BF_AIPS_PACRL_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_WP3), uint32_t) & BM_AIPS_PACRL_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRL_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRL_SP3 (18U) //!< Bit position for AIPS_PACRL_SP3. +#define BM_AIPS_PACRL_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRL_SP3. +#define BS_AIPS_PACRL_SP3 (1U) //!< Bit field size in bits for AIPS_PACRL_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_SP3 field. +#define BR_AIPS_PACRL_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_SP3. +#define BF_AIPS_PACRL_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_SP3), uint32_t) & BM_AIPS_PACRL_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRL_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRL_TP2 (20U) //!< Bit position for AIPS_PACRL_TP2. +#define BM_AIPS_PACRL_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRL_TP2. +#define BS_AIPS_PACRL_TP2 (1U) //!< Bit field size in bits for AIPS_PACRL_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_TP2 field. +#define BR_AIPS_PACRL_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_TP2. +#define BF_AIPS_PACRL_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_TP2), uint32_t) & BM_AIPS_PACRL_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRL_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRL_WP2 (21U) //!< Bit position for AIPS_PACRL_WP2. +#define BM_AIPS_PACRL_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRL_WP2. +#define BS_AIPS_PACRL_WP2 (1U) //!< Bit field size in bits for AIPS_PACRL_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_WP2 field. +#define BR_AIPS_PACRL_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_WP2. +#define BF_AIPS_PACRL_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_WP2), uint32_t) & BM_AIPS_PACRL_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRL_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRL_SP2 (22U) //!< Bit position for AIPS_PACRL_SP2. +#define BM_AIPS_PACRL_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRL_SP2. +#define BS_AIPS_PACRL_SP2 (1U) //!< Bit field size in bits for AIPS_PACRL_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_SP2 field. +#define BR_AIPS_PACRL_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_SP2. +#define BF_AIPS_PACRL_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_SP2), uint32_t) & BM_AIPS_PACRL_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRL_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRL_TP1 (24U) //!< Bit position for AIPS_PACRL_TP1. +#define BM_AIPS_PACRL_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRL_TP1. +#define BS_AIPS_PACRL_TP1 (1U) //!< Bit field size in bits for AIPS_PACRL_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_TP1 field. +#define BR_AIPS_PACRL_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_TP1. +#define BF_AIPS_PACRL_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_TP1), uint32_t) & BM_AIPS_PACRL_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRL_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRL_WP1 (25U) //!< Bit position for AIPS_PACRL_WP1. +#define BM_AIPS_PACRL_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRL_WP1. +#define BS_AIPS_PACRL_WP1 (1U) //!< Bit field size in bits for AIPS_PACRL_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_WP1 field. +#define BR_AIPS_PACRL_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_WP1. +#define BF_AIPS_PACRL_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_WP1), uint32_t) & BM_AIPS_PACRL_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRL_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRL_SP1 (26U) //!< Bit position for AIPS_PACRL_SP1. +#define BM_AIPS_PACRL_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRL_SP1. +#define BS_AIPS_PACRL_SP1 (1U) //!< Bit field size in bits for AIPS_PACRL_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_SP1 field. +#define BR_AIPS_PACRL_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_SP1. +#define BF_AIPS_PACRL_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_SP1), uint32_t) & BM_AIPS_PACRL_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRL_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRL_TP0 (28U) //!< Bit position for AIPS_PACRL_TP0. +#define BM_AIPS_PACRL_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRL_TP0. +#define BS_AIPS_PACRL_TP0 (1U) //!< Bit field size in bits for AIPS_PACRL_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_TP0 field. +#define BR_AIPS_PACRL_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_TP0. +#define BF_AIPS_PACRL_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_TP0), uint32_t) & BM_AIPS_PACRL_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRL_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRL_WP0 (29U) //!< Bit position for AIPS_PACRL_WP0. +#define BM_AIPS_PACRL_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRL_WP0. +#define BS_AIPS_PACRL_WP0 (1U) //!< Bit field size in bits for AIPS_PACRL_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_WP0 field. +#define BR_AIPS_PACRL_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_WP0. +#define BF_AIPS_PACRL_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_WP0), uint32_t) & BM_AIPS_PACRL_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRL_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRL, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRL_SP0 (30U) //!< Bit position for AIPS_PACRL_SP0. +#define BM_AIPS_PACRL_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRL_SP0. +#define BS_AIPS_PACRL_SP0 (1U) //!< Bit field size in bits for AIPS_PACRL_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRL_SP0 field. +#define BR_AIPS_PACRL_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRL_SP0. +#define BF_AIPS_PACRL_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRL_SP0), uint32_t) & BM_AIPS_PACRL_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRL_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRL_ADDR(x), BP_AIPS_PACRL_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRM - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRM - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacrm +{ + uint32_t U; + struct _hw_aips_pacrm_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrm_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRM register + */ +//@{ +#define HW_AIPS_PACRM_ADDR(x) (REGS_AIPS_BASE(x) + 0x60U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRM(x) (*(__IO hw_aips_pacrm_t *) HW_AIPS_PACRM_ADDR(x)) +#define HW_AIPS_PACRM_RD(x) (HW_AIPS_PACRM(x).U) +#define HW_AIPS_PACRM_WR(x, v) (HW_AIPS_PACRM(x).U = (v)) +#define HW_AIPS_PACRM_SET(x, v) (HW_AIPS_PACRM_WR(x, HW_AIPS_PACRM_RD(x) | (v))) +#define HW_AIPS_PACRM_CLR(x, v) (HW_AIPS_PACRM_WR(x, HW_AIPS_PACRM_RD(x) & ~(v))) +#define HW_AIPS_PACRM_TOG(x, v) (HW_AIPS_PACRM_WR(x, HW_AIPS_PACRM_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRM bitfields + */ + +/*! + * @name Register AIPS_PACRM, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRM_TP7 (0U) //!< Bit position for AIPS_PACRM_TP7. +#define BM_AIPS_PACRM_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRM_TP7. +#define BS_AIPS_PACRM_TP7 (1U) //!< Bit field size in bits for AIPS_PACRM_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_TP7 field. +#define BR_AIPS_PACRM_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_TP7. +#define BF_AIPS_PACRM_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_TP7), uint32_t) & BM_AIPS_PACRM_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRM_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRM_WP7 (1U) //!< Bit position for AIPS_PACRM_WP7. +#define BM_AIPS_PACRM_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRM_WP7. +#define BS_AIPS_PACRM_WP7 (1U) //!< Bit field size in bits for AIPS_PACRM_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_WP7 field. +#define BR_AIPS_PACRM_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_WP7. +#define BF_AIPS_PACRM_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_WP7), uint32_t) & BM_AIPS_PACRM_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRM_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRM_SP7 (2U) //!< Bit position for AIPS_PACRM_SP7. +#define BM_AIPS_PACRM_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRM_SP7. +#define BS_AIPS_PACRM_SP7 (1U) //!< Bit field size in bits for AIPS_PACRM_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_SP7 field. +#define BR_AIPS_PACRM_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_SP7. +#define BF_AIPS_PACRM_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_SP7), uint32_t) & BM_AIPS_PACRM_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRM_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRM_TP6 (4U) //!< Bit position for AIPS_PACRM_TP6. +#define BM_AIPS_PACRM_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRM_TP6. +#define BS_AIPS_PACRM_TP6 (1U) //!< Bit field size in bits for AIPS_PACRM_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_TP6 field. +#define BR_AIPS_PACRM_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_TP6. +#define BF_AIPS_PACRM_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_TP6), uint32_t) & BM_AIPS_PACRM_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRM_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRM_WP6 (5U) //!< Bit position for AIPS_PACRM_WP6. +#define BM_AIPS_PACRM_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRM_WP6. +#define BS_AIPS_PACRM_WP6 (1U) //!< Bit field size in bits for AIPS_PACRM_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_WP6 field. +#define BR_AIPS_PACRM_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_WP6. +#define BF_AIPS_PACRM_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_WP6), uint32_t) & BM_AIPS_PACRM_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRM_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRM_SP6 (6U) //!< Bit position for AIPS_PACRM_SP6. +#define BM_AIPS_PACRM_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRM_SP6. +#define BS_AIPS_PACRM_SP6 (1U) //!< Bit field size in bits for AIPS_PACRM_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_SP6 field. +#define BR_AIPS_PACRM_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_SP6. +#define BF_AIPS_PACRM_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_SP6), uint32_t) & BM_AIPS_PACRM_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRM_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRM_TP5 (8U) //!< Bit position for AIPS_PACRM_TP5. +#define BM_AIPS_PACRM_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRM_TP5. +#define BS_AIPS_PACRM_TP5 (1U) //!< Bit field size in bits for AIPS_PACRM_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_TP5 field. +#define BR_AIPS_PACRM_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_TP5. +#define BF_AIPS_PACRM_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_TP5), uint32_t) & BM_AIPS_PACRM_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRM_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRM_WP5 (9U) //!< Bit position for AIPS_PACRM_WP5. +#define BM_AIPS_PACRM_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRM_WP5. +#define BS_AIPS_PACRM_WP5 (1U) //!< Bit field size in bits for AIPS_PACRM_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_WP5 field. +#define BR_AIPS_PACRM_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_WP5. +#define BF_AIPS_PACRM_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_WP5), uint32_t) & BM_AIPS_PACRM_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRM_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRM_SP5 (10U) //!< Bit position for AIPS_PACRM_SP5. +#define BM_AIPS_PACRM_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRM_SP5. +#define BS_AIPS_PACRM_SP5 (1U) //!< Bit field size in bits for AIPS_PACRM_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_SP5 field. +#define BR_AIPS_PACRM_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_SP5. +#define BF_AIPS_PACRM_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_SP5), uint32_t) & BM_AIPS_PACRM_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRM_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRM_TP4 (12U) //!< Bit position for AIPS_PACRM_TP4. +#define BM_AIPS_PACRM_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRM_TP4. +#define BS_AIPS_PACRM_TP4 (1U) //!< Bit field size in bits for AIPS_PACRM_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_TP4 field. +#define BR_AIPS_PACRM_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_TP4. +#define BF_AIPS_PACRM_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_TP4), uint32_t) & BM_AIPS_PACRM_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRM_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRM_WP4 (13U) //!< Bit position for AIPS_PACRM_WP4. +#define BM_AIPS_PACRM_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRM_WP4. +#define BS_AIPS_PACRM_WP4 (1U) //!< Bit field size in bits for AIPS_PACRM_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_WP4 field. +#define BR_AIPS_PACRM_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_WP4. +#define BF_AIPS_PACRM_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_WP4), uint32_t) & BM_AIPS_PACRM_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRM_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRM_SP4 (14U) //!< Bit position for AIPS_PACRM_SP4. +#define BM_AIPS_PACRM_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRM_SP4. +#define BS_AIPS_PACRM_SP4 (1U) //!< Bit field size in bits for AIPS_PACRM_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_SP4 field. +#define BR_AIPS_PACRM_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_SP4. +#define BF_AIPS_PACRM_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_SP4), uint32_t) & BM_AIPS_PACRM_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRM_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRM_TP3 (16U) //!< Bit position for AIPS_PACRM_TP3. +#define BM_AIPS_PACRM_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRM_TP3. +#define BS_AIPS_PACRM_TP3 (1U) //!< Bit field size in bits for AIPS_PACRM_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_TP3 field. +#define BR_AIPS_PACRM_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_TP3. +#define BF_AIPS_PACRM_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_TP3), uint32_t) & BM_AIPS_PACRM_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRM_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRM_WP3 (17U) //!< Bit position for AIPS_PACRM_WP3. +#define BM_AIPS_PACRM_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRM_WP3. +#define BS_AIPS_PACRM_WP3 (1U) //!< Bit field size in bits for AIPS_PACRM_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_WP3 field. +#define BR_AIPS_PACRM_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_WP3. +#define BF_AIPS_PACRM_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_WP3), uint32_t) & BM_AIPS_PACRM_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRM_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRM_SP3 (18U) //!< Bit position for AIPS_PACRM_SP3. +#define BM_AIPS_PACRM_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRM_SP3. +#define BS_AIPS_PACRM_SP3 (1U) //!< Bit field size in bits for AIPS_PACRM_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_SP3 field. +#define BR_AIPS_PACRM_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_SP3. +#define BF_AIPS_PACRM_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_SP3), uint32_t) & BM_AIPS_PACRM_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRM_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRM_TP2 (20U) //!< Bit position for AIPS_PACRM_TP2. +#define BM_AIPS_PACRM_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRM_TP2. +#define BS_AIPS_PACRM_TP2 (1U) //!< Bit field size in bits for AIPS_PACRM_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_TP2 field. +#define BR_AIPS_PACRM_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_TP2. +#define BF_AIPS_PACRM_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_TP2), uint32_t) & BM_AIPS_PACRM_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRM_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRM_WP2 (21U) //!< Bit position for AIPS_PACRM_WP2. +#define BM_AIPS_PACRM_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRM_WP2. +#define BS_AIPS_PACRM_WP2 (1U) //!< Bit field size in bits for AIPS_PACRM_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_WP2 field. +#define BR_AIPS_PACRM_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_WP2. +#define BF_AIPS_PACRM_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_WP2), uint32_t) & BM_AIPS_PACRM_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRM_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRM_SP2 (22U) //!< Bit position for AIPS_PACRM_SP2. +#define BM_AIPS_PACRM_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRM_SP2. +#define BS_AIPS_PACRM_SP2 (1U) //!< Bit field size in bits for AIPS_PACRM_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_SP2 field. +#define BR_AIPS_PACRM_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_SP2. +#define BF_AIPS_PACRM_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_SP2), uint32_t) & BM_AIPS_PACRM_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRM_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRM_TP1 (24U) //!< Bit position for AIPS_PACRM_TP1. +#define BM_AIPS_PACRM_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRM_TP1. +#define BS_AIPS_PACRM_TP1 (1U) //!< Bit field size in bits for AIPS_PACRM_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_TP1 field. +#define BR_AIPS_PACRM_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_TP1. +#define BF_AIPS_PACRM_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_TP1), uint32_t) & BM_AIPS_PACRM_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRM_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRM_WP1 (25U) //!< Bit position for AIPS_PACRM_WP1. +#define BM_AIPS_PACRM_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRM_WP1. +#define BS_AIPS_PACRM_WP1 (1U) //!< Bit field size in bits for AIPS_PACRM_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_WP1 field. +#define BR_AIPS_PACRM_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_WP1. +#define BF_AIPS_PACRM_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_WP1), uint32_t) & BM_AIPS_PACRM_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRM_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRM_SP1 (26U) //!< Bit position for AIPS_PACRM_SP1. +#define BM_AIPS_PACRM_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRM_SP1. +#define BS_AIPS_PACRM_SP1 (1U) //!< Bit field size in bits for AIPS_PACRM_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_SP1 field. +#define BR_AIPS_PACRM_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_SP1. +#define BF_AIPS_PACRM_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_SP1), uint32_t) & BM_AIPS_PACRM_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRM_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRM_TP0 (28U) //!< Bit position for AIPS_PACRM_TP0. +#define BM_AIPS_PACRM_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRM_TP0. +#define BS_AIPS_PACRM_TP0 (1U) //!< Bit field size in bits for AIPS_PACRM_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_TP0 field. +#define BR_AIPS_PACRM_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_TP0. +#define BF_AIPS_PACRM_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_TP0), uint32_t) & BM_AIPS_PACRM_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRM_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRM_WP0 (29U) //!< Bit position for AIPS_PACRM_WP0. +#define BM_AIPS_PACRM_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRM_WP0. +#define BS_AIPS_PACRM_WP0 (1U) //!< Bit field size in bits for AIPS_PACRM_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_WP0 field. +#define BR_AIPS_PACRM_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_WP0. +#define BF_AIPS_PACRM_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_WP0), uint32_t) & BM_AIPS_PACRM_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRM_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRM, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRM_SP0 (30U) //!< Bit position for AIPS_PACRM_SP0. +#define BM_AIPS_PACRM_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRM_SP0. +#define BS_AIPS_PACRM_SP0 (1U) //!< Bit field size in bits for AIPS_PACRM_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRM_SP0 field. +#define BR_AIPS_PACRM_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRM_SP0. +#define BF_AIPS_PACRM_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRM_SP0), uint32_t) & BM_AIPS_PACRM_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRM_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRM_ADDR(x), BP_AIPS_PACRM_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRN - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRN - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacrn +{ + uint32_t U; + struct _hw_aips_pacrn_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrn_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRN register + */ +//@{ +#define HW_AIPS_PACRN_ADDR(x) (REGS_AIPS_BASE(x) + 0x64U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRN(x) (*(__IO hw_aips_pacrn_t *) HW_AIPS_PACRN_ADDR(x)) +#define HW_AIPS_PACRN_RD(x) (HW_AIPS_PACRN(x).U) +#define HW_AIPS_PACRN_WR(x, v) (HW_AIPS_PACRN(x).U = (v)) +#define HW_AIPS_PACRN_SET(x, v) (HW_AIPS_PACRN_WR(x, HW_AIPS_PACRN_RD(x) | (v))) +#define HW_AIPS_PACRN_CLR(x, v) (HW_AIPS_PACRN_WR(x, HW_AIPS_PACRN_RD(x) & ~(v))) +#define HW_AIPS_PACRN_TOG(x, v) (HW_AIPS_PACRN_WR(x, HW_AIPS_PACRN_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRN bitfields + */ + +/*! + * @name Register AIPS_PACRN, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRN_TP7 (0U) //!< Bit position for AIPS_PACRN_TP7. +#define BM_AIPS_PACRN_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRN_TP7. +#define BS_AIPS_PACRN_TP7 (1U) //!< Bit field size in bits for AIPS_PACRN_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_TP7 field. +#define BR_AIPS_PACRN_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_TP7. +#define BF_AIPS_PACRN_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_TP7), uint32_t) & BM_AIPS_PACRN_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRN_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRN_WP7 (1U) //!< Bit position for AIPS_PACRN_WP7. +#define BM_AIPS_PACRN_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRN_WP7. +#define BS_AIPS_PACRN_WP7 (1U) //!< Bit field size in bits for AIPS_PACRN_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_WP7 field. +#define BR_AIPS_PACRN_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_WP7. +#define BF_AIPS_PACRN_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_WP7), uint32_t) & BM_AIPS_PACRN_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRN_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRN_SP7 (2U) //!< Bit position for AIPS_PACRN_SP7. +#define BM_AIPS_PACRN_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRN_SP7. +#define BS_AIPS_PACRN_SP7 (1U) //!< Bit field size in bits for AIPS_PACRN_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_SP7 field. +#define BR_AIPS_PACRN_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_SP7. +#define BF_AIPS_PACRN_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_SP7), uint32_t) & BM_AIPS_PACRN_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRN_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRN_TP6 (4U) //!< Bit position for AIPS_PACRN_TP6. +#define BM_AIPS_PACRN_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRN_TP6. +#define BS_AIPS_PACRN_TP6 (1U) //!< Bit field size in bits for AIPS_PACRN_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_TP6 field. +#define BR_AIPS_PACRN_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_TP6. +#define BF_AIPS_PACRN_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_TP6), uint32_t) & BM_AIPS_PACRN_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRN_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRN_WP6 (5U) //!< Bit position for AIPS_PACRN_WP6. +#define BM_AIPS_PACRN_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRN_WP6. +#define BS_AIPS_PACRN_WP6 (1U) //!< Bit field size in bits for AIPS_PACRN_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_WP6 field. +#define BR_AIPS_PACRN_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_WP6. +#define BF_AIPS_PACRN_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_WP6), uint32_t) & BM_AIPS_PACRN_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRN_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRN_SP6 (6U) //!< Bit position for AIPS_PACRN_SP6. +#define BM_AIPS_PACRN_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRN_SP6. +#define BS_AIPS_PACRN_SP6 (1U) //!< Bit field size in bits for AIPS_PACRN_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_SP6 field. +#define BR_AIPS_PACRN_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_SP6. +#define BF_AIPS_PACRN_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_SP6), uint32_t) & BM_AIPS_PACRN_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRN_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRN_TP5 (8U) //!< Bit position for AIPS_PACRN_TP5. +#define BM_AIPS_PACRN_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRN_TP5. +#define BS_AIPS_PACRN_TP5 (1U) //!< Bit field size in bits for AIPS_PACRN_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_TP5 field. +#define BR_AIPS_PACRN_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_TP5. +#define BF_AIPS_PACRN_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_TP5), uint32_t) & BM_AIPS_PACRN_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRN_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRN_WP5 (9U) //!< Bit position for AIPS_PACRN_WP5. +#define BM_AIPS_PACRN_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRN_WP5. +#define BS_AIPS_PACRN_WP5 (1U) //!< Bit field size in bits for AIPS_PACRN_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_WP5 field. +#define BR_AIPS_PACRN_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_WP5. +#define BF_AIPS_PACRN_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_WP5), uint32_t) & BM_AIPS_PACRN_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRN_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRN_SP5 (10U) //!< Bit position for AIPS_PACRN_SP5. +#define BM_AIPS_PACRN_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRN_SP5. +#define BS_AIPS_PACRN_SP5 (1U) //!< Bit field size in bits for AIPS_PACRN_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_SP5 field. +#define BR_AIPS_PACRN_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_SP5. +#define BF_AIPS_PACRN_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_SP5), uint32_t) & BM_AIPS_PACRN_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRN_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRN_TP4 (12U) //!< Bit position for AIPS_PACRN_TP4. +#define BM_AIPS_PACRN_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRN_TP4. +#define BS_AIPS_PACRN_TP4 (1U) //!< Bit field size in bits for AIPS_PACRN_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_TP4 field. +#define BR_AIPS_PACRN_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_TP4. +#define BF_AIPS_PACRN_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_TP4), uint32_t) & BM_AIPS_PACRN_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRN_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRN_WP4 (13U) //!< Bit position for AIPS_PACRN_WP4. +#define BM_AIPS_PACRN_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRN_WP4. +#define BS_AIPS_PACRN_WP4 (1U) //!< Bit field size in bits for AIPS_PACRN_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_WP4 field. +#define BR_AIPS_PACRN_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_WP4. +#define BF_AIPS_PACRN_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_WP4), uint32_t) & BM_AIPS_PACRN_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRN_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRN_SP4 (14U) //!< Bit position for AIPS_PACRN_SP4. +#define BM_AIPS_PACRN_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRN_SP4. +#define BS_AIPS_PACRN_SP4 (1U) //!< Bit field size in bits for AIPS_PACRN_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_SP4 field. +#define BR_AIPS_PACRN_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_SP4. +#define BF_AIPS_PACRN_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_SP4), uint32_t) & BM_AIPS_PACRN_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRN_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRN_TP3 (16U) //!< Bit position for AIPS_PACRN_TP3. +#define BM_AIPS_PACRN_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRN_TP3. +#define BS_AIPS_PACRN_TP3 (1U) //!< Bit field size in bits for AIPS_PACRN_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_TP3 field. +#define BR_AIPS_PACRN_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_TP3. +#define BF_AIPS_PACRN_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_TP3), uint32_t) & BM_AIPS_PACRN_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRN_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRN_WP3 (17U) //!< Bit position for AIPS_PACRN_WP3. +#define BM_AIPS_PACRN_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRN_WP3. +#define BS_AIPS_PACRN_WP3 (1U) //!< Bit field size in bits for AIPS_PACRN_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_WP3 field. +#define BR_AIPS_PACRN_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_WP3. +#define BF_AIPS_PACRN_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_WP3), uint32_t) & BM_AIPS_PACRN_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRN_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRN_SP3 (18U) //!< Bit position for AIPS_PACRN_SP3. +#define BM_AIPS_PACRN_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRN_SP3. +#define BS_AIPS_PACRN_SP3 (1U) //!< Bit field size in bits for AIPS_PACRN_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_SP3 field. +#define BR_AIPS_PACRN_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_SP3. +#define BF_AIPS_PACRN_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_SP3), uint32_t) & BM_AIPS_PACRN_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRN_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRN_TP2 (20U) //!< Bit position for AIPS_PACRN_TP2. +#define BM_AIPS_PACRN_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRN_TP2. +#define BS_AIPS_PACRN_TP2 (1U) //!< Bit field size in bits for AIPS_PACRN_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_TP2 field. +#define BR_AIPS_PACRN_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_TP2. +#define BF_AIPS_PACRN_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_TP2), uint32_t) & BM_AIPS_PACRN_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRN_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRN_WP2 (21U) //!< Bit position for AIPS_PACRN_WP2. +#define BM_AIPS_PACRN_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRN_WP2. +#define BS_AIPS_PACRN_WP2 (1U) //!< Bit field size in bits for AIPS_PACRN_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_WP2 field. +#define BR_AIPS_PACRN_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_WP2. +#define BF_AIPS_PACRN_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_WP2), uint32_t) & BM_AIPS_PACRN_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRN_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRN_SP2 (22U) //!< Bit position for AIPS_PACRN_SP2. +#define BM_AIPS_PACRN_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRN_SP2. +#define BS_AIPS_PACRN_SP2 (1U) //!< Bit field size in bits for AIPS_PACRN_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_SP2 field. +#define BR_AIPS_PACRN_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_SP2. +#define BF_AIPS_PACRN_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_SP2), uint32_t) & BM_AIPS_PACRN_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRN_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRN_TP1 (24U) //!< Bit position for AIPS_PACRN_TP1. +#define BM_AIPS_PACRN_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRN_TP1. +#define BS_AIPS_PACRN_TP1 (1U) //!< Bit field size in bits for AIPS_PACRN_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_TP1 field. +#define BR_AIPS_PACRN_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_TP1. +#define BF_AIPS_PACRN_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_TP1), uint32_t) & BM_AIPS_PACRN_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRN_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRN_WP1 (25U) //!< Bit position for AIPS_PACRN_WP1. +#define BM_AIPS_PACRN_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRN_WP1. +#define BS_AIPS_PACRN_WP1 (1U) //!< Bit field size in bits for AIPS_PACRN_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_WP1 field. +#define BR_AIPS_PACRN_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_WP1. +#define BF_AIPS_PACRN_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_WP1), uint32_t) & BM_AIPS_PACRN_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRN_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRN_SP1 (26U) //!< Bit position for AIPS_PACRN_SP1. +#define BM_AIPS_PACRN_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRN_SP1. +#define BS_AIPS_PACRN_SP1 (1U) //!< Bit field size in bits for AIPS_PACRN_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_SP1 field. +#define BR_AIPS_PACRN_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_SP1. +#define BF_AIPS_PACRN_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_SP1), uint32_t) & BM_AIPS_PACRN_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRN_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRN_TP0 (28U) //!< Bit position for AIPS_PACRN_TP0. +#define BM_AIPS_PACRN_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRN_TP0. +#define BS_AIPS_PACRN_TP0 (1U) //!< Bit field size in bits for AIPS_PACRN_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_TP0 field. +#define BR_AIPS_PACRN_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_TP0. +#define BF_AIPS_PACRN_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_TP0), uint32_t) & BM_AIPS_PACRN_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRN_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRN_WP0 (29U) //!< Bit position for AIPS_PACRN_WP0. +#define BM_AIPS_PACRN_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRN_WP0. +#define BS_AIPS_PACRN_WP0 (1U) //!< Bit field size in bits for AIPS_PACRN_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_WP0 field. +#define BR_AIPS_PACRN_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_WP0. +#define BF_AIPS_PACRN_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_WP0), uint32_t) & BM_AIPS_PACRN_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRN_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRN, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRN_SP0 (30U) //!< Bit position for AIPS_PACRN_SP0. +#define BM_AIPS_PACRN_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRN_SP0. +#define BS_AIPS_PACRN_SP0 (1U) //!< Bit field size in bits for AIPS_PACRN_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRN_SP0 field. +#define BR_AIPS_PACRN_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRN_SP0. +#define BF_AIPS_PACRN_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRN_SP0), uint32_t) & BM_AIPS_PACRN_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRN_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRN_ADDR(x), BP_AIPS_PACRN_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRO - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRO - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacro +{ + uint32_t U; + struct _hw_aips_pacro_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacro_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRO register + */ +//@{ +#define HW_AIPS_PACRO_ADDR(x) (REGS_AIPS_BASE(x) + 0x68U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRO(x) (*(__IO hw_aips_pacro_t *) HW_AIPS_PACRO_ADDR(x)) +#define HW_AIPS_PACRO_RD(x) (HW_AIPS_PACRO(x).U) +#define HW_AIPS_PACRO_WR(x, v) (HW_AIPS_PACRO(x).U = (v)) +#define HW_AIPS_PACRO_SET(x, v) (HW_AIPS_PACRO_WR(x, HW_AIPS_PACRO_RD(x) | (v))) +#define HW_AIPS_PACRO_CLR(x, v) (HW_AIPS_PACRO_WR(x, HW_AIPS_PACRO_RD(x) & ~(v))) +#define HW_AIPS_PACRO_TOG(x, v) (HW_AIPS_PACRO_WR(x, HW_AIPS_PACRO_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRO bitfields + */ + +/*! + * @name Register AIPS_PACRO, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRO_TP7 (0U) //!< Bit position for AIPS_PACRO_TP7. +#define BM_AIPS_PACRO_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRO_TP7. +#define BS_AIPS_PACRO_TP7 (1U) //!< Bit field size in bits for AIPS_PACRO_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_TP7 field. +#define BR_AIPS_PACRO_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_TP7. +#define BF_AIPS_PACRO_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_TP7), uint32_t) & BM_AIPS_PACRO_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRO_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRO_WP7 (1U) //!< Bit position for AIPS_PACRO_WP7. +#define BM_AIPS_PACRO_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRO_WP7. +#define BS_AIPS_PACRO_WP7 (1U) //!< Bit field size in bits for AIPS_PACRO_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_WP7 field. +#define BR_AIPS_PACRO_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_WP7. +#define BF_AIPS_PACRO_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_WP7), uint32_t) & BM_AIPS_PACRO_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRO_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRO_SP7 (2U) //!< Bit position for AIPS_PACRO_SP7. +#define BM_AIPS_PACRO_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRO_SP7. +#define BS_AIPS_PACRO_SP7 (1U) //!< Bit field size in bits for AIPS_PACRO_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_SP7 field. +#define BR_AIPS_PACRO_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_SP7. +#define BF_AIPS_PACRO_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_SP7), uint32_t) & BM_AIPS_PACRO_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRO_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRO_TP6 (4U) //!< Bit position for AIPS_PACRO_TP6. +#define BM_AIPS_PACRO_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRO_TP6. +#define BS_AIPS_PACRO_TP6 (1U) //!< Bit field size in bits for AIPS_PACRO_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_TP6 field. +#define BR_AIPS_PACRO_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_TP6. +#define BF_AIPS_PACRO_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_TP6), uint32_t) & BM_AIPS_PACRO_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRO_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRO_WP6 (5U) //!< Bit position for AIPS_PACRO_WP6. +#define BM_AIPS_PACRO_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRO_WP6. +#define BS_AIPS_PACRO_WP6 (1U) //!< Bit field size in bits for AIPS_PACRO_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_WP6 field. +#define BR_AIPS_PACRO_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_WP6. +#define BF_AIPS_PACRO_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_WP6), uint32_t) & BM_AIPS_PACRO_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRO_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRO_SP6 (6U) //!< Bit position for AIPS_PACRO_SP6. +#define BM_AIPS_PACRO_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRO_SP6. +#define BS_AIPS_PACRO_SP6 (1U) //!< Bit field size in bits for AIPS_PACRO_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_SP6 field. +#define BR_AIPS_PACRO_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_SP6. +#define BF_AIPS_PACRO_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_SP6), uint32_t) & BM_AIPS_PACRO_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRO_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRO_TP5 (8U) //!< Bit position for AIPS_PACRO_TP5. +#define BM_AIPS_PACRO_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRO_TP5. +#define BS_AIPS_PACRO_TP5 (1U) //!< Bit field size in bits for AIPS_PACRO_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_TP5 field. +#define BR_AIPS_PACRO_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_TP5. +#define BF_AIPS_PACRO_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_TP5), uint32_t) & BM_AIPS_PACRO_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRO_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRO_WP5 (9U) //!< Bit position for AIPS_PACRO_WP5. +#define BM_AIPS_PACRO_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRO_WP5. +#define BS_AIPS_PACRO_WP5 (1U) //!< Bit field size in bits for AIPS_PACRO_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_WP5 field. +#define BR_AIPS_PACRO_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_WP5. +#define BF_AIPS_PACRO_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_WP5), uint32_t) & BM_AIPS_PACRO_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRO_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRO_SP5 (10U) //!< Bit position for AIPS_PACRO_SP5. +#define BM_AIPS_PACRO_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRO_SP5. +#define BS_AIPS_PACRO_SP5 (1U) //!< Bit field size in bits for AIPS_PACRO_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_SP5 field. +#define BR_AIPS_PACRO_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_SP5. +#define BF_AIPS_PACRO_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_SP5), uint32_t) & BM_AIPS_PACRO_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRO_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRO_TP4 (12U) //!< Bit position for AIPS_PACRO_TP4. +#define BM_AIPS_PACRO_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRO_TP4. +#define BS_AIPS_PACRO_TP4 (1U) //!< Bit field size in bits for AIPS_PACRO_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_TP4 field. +#define BR_AIPS_PACRO_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_TP4. +#define BF_AIPS_PACRO_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_TP4), uint32_t) & BM_AIPS_PACRO_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRO_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRO_WP4 (13U) //!< Bit position for AIPS_PACRO_WP4. +#define BM_AIPS_PACRO_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRO_WP4. +#define BS_AIPS_PACRO_WP4 (1U) //!< Bit field size in bits for AIPS_PACRO_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_WP4 field. +#define BR_AIPS_PACRO_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_WP4. +#define BF_AIPS_PACRO_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_WP4), uint32_t) & BM_AIPS_PACRO_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRO_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRO_SP4 (14U) //!< Bit position for AIPS_PACRO_SP4. +#define BM_AIPS_PACRO_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRO_SP4. +#define BS_AIPS_PACRO_SP4 (1U) //!< Bit field size in bits for AIPS_PACRO_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_SP4 field. +#define BR_AIPS_PACRO_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_SP4. +#define BF_AIPS_PACRO_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_SP4), uint32_t) & BM_AIPS_PACRO_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRO_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRO_TP3 (16U) //!< Bit position for AIPS_PACRO_TP3. +#define BM_AIPS_PACRO_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRO_TP3. +#define BS_AIPS_PACRO_TP3 (1U) //!< Bit field size in bits for AIPS_PACRO_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_TP3 field. +#define BR_AIPS_PACRO_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_TP3. +#define BF_AIPS_PACRO_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_TP3), uint32_t) & BM_AIPS_PACRO_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRO_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRO_WP3 (17U) //!< Bit position for AIPS_PACRO_WP3. +#define BM_AIPS_PACRO_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRO_WP3. +#define BS_AIPS_PACRO_WP3 (1U) //!< Bit field size in bits for AIPS_PACRO_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_WP3 field. +#define BR_AIPS_PACRO_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_WP3. +#define BF_AIPS_PACRO_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_WP3), uint32_t) & BM_AIPS_PACRO_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRO_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRO_SP3 (18U) //!< Bit position for AIPS_PACRO_SP3. +#define BM_AIPS_PACRO_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRO_SP3. +#define BS_AIPS_PACRO_SP3 (1U) //!< Bit field size in bits for AIPS_PACRO_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_SP3 field. +#define BR_AIPS_PACRO_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_SP3. +#define BF_AIPS_PACRO_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_SP3), uint32_t) & BM_AIPS_PACRO_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRO_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRO_TP2 (20U) //!< Bit position for AIPS_PACRO_TP2. +#define BM_AIPS_PACRO_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRO_TP2. +#define BS_AIPS_PACRO_TP2 (1U) //!< Bit field size in bits for AIPS_PACRO_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_TP2 field. +#define BR_AIPS_PACRO_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_TP2. +#define BF_AIPS_PACRO_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_TP2), uint32_t) & BM_AIPS_PACRO_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRO_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRO_WP2 (21U) //!< Bit position for AIPS_PACRO_WP2. +#define BM_AIPS_PACRO_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRO_WP2. +#define BS_AIPS_PACRO_WP2 (1U) //!< Bit field size in bits for AIPS_PACRO_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_WP2 field. +#define BR_AIPS_PACRO_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_WP2. +#define BF_AIPS_PACRO_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_WP2), uint32_t) & BM_AIPS_PACRO_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRO_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRO_SP2 (22U) //!< Bit position for AIPS_PACRO_SP2. +#define BM_AIPS_PACRO_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRO_SP2. +#define BS_AIPS_PACRO_SP2 (1U) //!< Bit field size in bits for AIPS_PACRO_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_SP2 field. +#define BR_AIPS_PACRO_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_SP2. +#define BF_AIPS_PACRO_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_SP2), uint32_t) & BM_AIPS_PACRO_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRO_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRO_TP1 (24U) //!< Bit position for AIPS_PACRO_TP1. +#define BM_AIPS_PACRO_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRO_TP1. +#define BS_AIPS_PACRO_TP1 (1U) //!< Bit field size in bits for AIPS_PACRO_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_TP1 field. +#define BR_AIPS_PACRO_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_TP1. +#define BF_AIPS_PACRO_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_TP1), uint32_t) & BM_AIPS_PACRO_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRO_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRO_WP1 (25U) //!< Bit position for AIPS_PACRO_WP1. +#define BM_AIPS_PACRO_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRO_WP1. +#define BS_AIPS_PACRO_WP1 (1U) //!< Bit field size in bits for AIPS_PACRO_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_WP1 field. +#define BR_AIPS_PACRO_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_WP1. +#define BF_AIPS_PACRO_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_WP1), uint32_t) & BM_AIPS_PACRO_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRO_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRO_SP1 (26U) //!< Bit position for AIPS_PACRO_SP1. +#define BM_AIPS_PACRO_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRO_SP1. +#define BS_AIPS_PACRO_SP1 (1U) //!< Bit field size in bits for AIPS_PACRO_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_SP1 field. +#define BR_AIPS_PACRO_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_SP1. +#define BF_AIPS_PACRO_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_SP1), uint32_t) & BM_AIPS_PACRO_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRO_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRO_TP0 (28U) //!< Bit position for AIPS_PACRO_TP0. +#define BM_AIPS_PACRO_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRO_TP0. +#define BS_AIPS_PACRO_TP0 (1U) //!< Bit field size in bits for AIPS_PACRO_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_TP0 field. +#define BR_AIPS_PACRO_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_TP0. +#define BF_AIPS_PACRO_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_TP0), uint32_t) & BM_AIPS_PACRO_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRO_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRO_WP0 (29U) //!< Bit position for AIPS_PACRO_WP0. +#define BM_AIPS_PACRO_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRO_WP0. +#define BS_AIPS_PACRO_WP0 (1U) //!< Bit field size in bits for AIPS_PACRO_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_WP0 field. +#define BR_AIPS_PACRO_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_WP0. +#define BF_AIPS_PACRO_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_WP0), uint32_t) & BM_AIPS_PACRO_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRO_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRO, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRO_SP0 (30U) //!< Bit position for AIPS_PACRO_SP0. +#define BM_AIPS_PACRO_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRO_SP0. +#define BS_AIPS_PACRO_SP0 (1U) //!< Bit field size in bits for AIPS_PACRO_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRO_SP0 field. +#define BR_AIPS_PACRO_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRO_SP0. +#define BF_AIPS_PACRO_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRO_SP0), uint32_t) & BM_AIPS_PACRO_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRO_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRO_ADDR(x), BP_AIPS_PACRO_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRP - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRP - Peripheral Access Control Register (RW) + * + * Reset value: 0x44444444U + * + * This section describes PACR registers E-P, which control peripheral slots + * 32-127. See PACRPeripheral Access Control Register for the description of these + * registers. + */ +typedef union _hw_aips_pacrp +{ + uint32_t U; + struct _hw_aips_pacrp_bitfields + { + uint32_t TP7 : 1; //!< [0] Trusted Protect + uint32_t WP7 : 1; //!< [1] Write Protect + uint32_t SP7 : 1; //!< [2] Supervisor Protect + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TP6 : 1; //!< [4] Trusted Protect + uint32_t WP6 : 1; //!< [5] Write Protect + uint32_t SP6 : 1; //!< [6] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [7] + uint32_t TP5 : 1; //!< [8] Trusted Protect + uint32_t WP5 : 1; //!< [9] Write Protect + uint32_t SP5 : 1; //!< [10] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [11] + uint32_t TP4 : 1; //!< [12] Trusted Protect + uint32_t WP4 : 1; //!< [13] Write Protect + uint32_t SP4 : 1; //!< [14] Supervisor Protect + uint32_t RESERVED3 : 1; //!< [15] + uint32_t TP3 : 1; //!< [16] Trusted Protect + uint32_t WP3 : 1; //!< [17] Write Protect + uint32_t SP3 : 1; //!< [18] Supervisor Protect + uint32_t RESERVED4 : 1; //!< [19] + uint32_t TP2 : 1; //!< [20] Trusted Protect + uint32_t WP2 : 1; //!< [21] Write Protect + uint32_t SP2 : 1; //!< [22] Supervisor Protect + uint32_t RESERVED5 : 1; //!< [23] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED6 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED7 : 1; //!< [31] + } B; +} hw_aips_pacrp_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRP register + */ +//@{ +#define HW_AIPS_PACRP_ADDR(x) (REGS_AIPS_BASE(x) + 0x6CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRP(x) (*(__IO hw_aips_pacrp_t *) HW_AIPS_PACRP_ADDR(x)) +#define HW_AIPS_PACRP_RD(x) (HW_AIPS_PACRP(x).U) +#define HW_AIPS_PACRP_WR(x, v) (HW_AIPS_PACRP(x).U = (v)) +#define HW_AIPS_PACRP_SET(x, v) (HW_AIPS_PACRP_WR(x, HW_AIPS_PACRP_RD(x) | (v))) +#define HW_AIPS_PACRP_CLR(x, v) (HW_AIPS_PACRP_WR(x, HW_AIPS_PACRP_RD(x) & ~(v))) +#define HW_AIPS_PACRP_TOG(x, v) (HW_AIPS_PACRP_WR(x, HW_AIPS_PACRP_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRP bitfields + */ + +/*! + * @name Register AIPS_PACRP, field TP7[0] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRP_TP7 (0U) //!< Bit position for AIPS_PACRP_TP7. +#define BM_AIPS_PACRP_TP7 (0x00000001U) //!< Bit mask for AIPS_PACRP_TP7. +#define BS_AIPS_PACRP_TP7 (1U) //!< Bit field size in bits for AIPS_PACRP_TP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_TP7 field. +#define BR_AIPS_PACRP_TP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_TP7. +#define BF_AIPS_PACRP_TP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_TP7), uint32_t) & BM_AIPS_PACRP_TP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP7 field to a new value. +#define BW_AIPS_PACRP_TP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field WP7[1] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRP_WP7 (1U) //!< Bit position for AIPS_PACRP_WP7. +#define BM_AIPS_PACRP_WP7 (0x00000002U) //!< Bit mask for AIPS_PACRP_WP7. +#define BS_AIPS_PACRP_WP7 (1U) //!< Bit field size in bits for AIPS_PACRP_WP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_WP7 field. +#define BR_AIPS_PACRP_WP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_WP7. +#define BF_AIPS_PACRP_WP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_WP7), uint32_t) & BM_AIPS_PACRP_WP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP7 field to a new value. +#define BW_AIPS_PACRP_WP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field SP7[2] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRP_SP7 (2U) //!< Bit position for AIPS_PACRP_SP7. +#define BM_AIPS_PACRP_SP7 (0x00000004U) //!< Bit mask for AIPS_PACRP_SP7. +#define BS_AIPS_PACRP_SP7 (1U) //!< Bit field size in bits for AIPS_PACRP_SP7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_SP7 field. +#define BR_AIPS_PACRP_SP7(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP7)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_SP7. +#define BF_AIPS_PACRP_SP7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_SP7), uint32_t) & BM_AIPS_PACRP_SP7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP7 field to a new value. +#define BW_AIPS_PACRP_SP7(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP7) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field TP6[4] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRP_TP6 (4U) //!< Bit position for AIPS_PACRP_TP6. +#define BM_AIPS_PACRP_TP6 (0x00000010U) //!< Bit mask for AIPS_PACRP_TP6. +#define BS_AIPS_PACRP_TP6 (1U) //!< Bit field size in bits for AIPS_PACRP_TP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_TP6 field. +#define BR_AIPS_PACRP_TP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_TP6. +#define BF_AIPS_PACRP_TP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_TP6), uint32_t) & BM_AIPS_PACRP_TP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP6 field to a new value. +#define BW_AIPS_PACRP_TP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field WP6[5] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRP_WP6 (5U) //!< Bit position for AIPS_PACRP_WP6. +#define BM_AIPS_PACRP_WP6 (0x00000020U) //!< Bit mask for AIPS_PACRP_WP6. +#define BS_AIPS_PACRP_WP6 (1U) //!< Bit field size in bits for AIPS_PACRP_WP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_WP6 field. +#define BR_AIPS_PACRP_WP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_WP6. +#define BF_AIPS_PACRP_WP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_WP6), uint32_t) & BM_AIPS_PACRP_WP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP6 field to a new value. +#define BW_AIPS_PACRP_WP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field SP6[6] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRP_SP6 (6U) //!< Bit position for AIPS_PACRP_SP6. +#define BM_AIPS_PACRP_SP6 (0x00000040U) //!< Bit mask for AIPS_PACRP_SP6. +#define BS_AIPS_PACRP_SP6 (1U) //!< Bit field size in bits for AIPS_PACRP_SP6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_SP6 field. +#define BR_AIPS_PACRP_SP6(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP6)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_SP6. +#define BF_AIPS_PACRP_SP6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_SP6), uint32_t) & BM_AIPS_PACRP_SP6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP6 field to a new value. +#define BW_AIPS_PACRP_SP6(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP6) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field TP5[8] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRP_TP5 (8U) //!< Bit position for AIPS_PACRP_TP5. +#define BM_AIPS_PACRP_TP5 (0x00000100U) //!< Bit mask for AIPS_PACRP_TP5. +#define BS_AIPS_PACRP_TP5 (1U) //!< Bit field size in bits for AIPS_PACRP_TP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_TP5 field. +#define BR_AIPS_PACRP_TP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_TP5. +#define BF_AIPS_PACRP_TP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_TP5), uint32_t) & BM_AIPS_PACRP_TP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP5 field to a new value. +#define BW_AIPS_PACRP_TP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field WP5[9] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRP_WP5 (9U) //!< Bit position for AIPS_PACRP_WP5. +#define BM_AIPS_PACRP_WP5 (0x00000200U) //!< Bit mask for AIPS_PACRP_WP5. +#define BS_AIPS_PACRP_WP5 (1U) //!< Bit field size in bits for AIPS_PACRP_WP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_WP5 field. +#define BR_AIPS_PACRP_WP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_WP5. +#define BF_AIPS_PACRP_WP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_WP5), uint32_t) & BM_AIPS_PACRP_WP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP5 field to a new value. +#define BW_AIPS_PACRP_WP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field SP5[10] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRP_SP5 (10U) //!< Bit position for AIPS_PACRP_SP5. +#define BM_AIPS_PACRP_SP5 (0x00000400U) //!< Bit mask for AIPS_PACRP_SP5. +#define BS_AIPS_PACRP_SP5 (1U) //!< Bit field size in bits for AIPS_PACRP_SP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_SP5 field. +#define BR_AIPS_PACRP_SP5(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP5)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_SP5. +#define BF_AIPS_PACRP_SP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_SP5), uint32_t) & BM_AIPS_PACRP_SP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP5 field to a new value. +#define BW_AIPS_PACRP_SP5(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP5) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field TP4[12] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRP_TP4 (12U) //!< Bit position for AIPS_PACRP_TP4. +#define BM_AIPS_PACRP_TP4 (0x00001000U) //!< Bit mask for AIPS_PACRP_TP4. +#define BS_AIPS_PACRP_TP4 (1U) //!< Bit field size in bits for AIPS_PACRP_TP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_TP4 field. +#define BR_AIPS_PACRP_TP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_TP4. +#define BF_AIPS_PACRP_TP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_TP4), uint32_t) & BM_AIPS_PACRP_TP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP4 field to a new value. +#define BW_AIPS_PACRP_TP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field WP4[13] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRP_WP4 (13U) //!< Bit position for AIPS_PACRP_WP4. +#define BM_AIPS_PACRP_WP4 (0x00002000U) //!< Bit mask for AIPS_PACRP_WP4. +#define BS_AIPS_PACRP_WP4 (1U) //!< Bit field size in bits for AIPS_PACRP_WP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_WP4 field. +#define BR_AIPS_PACRP_WP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_WP4. +#define BF_AIPS_PACRP_WP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_WP4), uint32_t) & BM_AIPS_PACRP_WP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP4 field to a new value. +#define BW_AIPS_PACRP_WP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field SP4[14] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRP_SP4 (14U) //!< Bit position for AIPS_PACRP_SP4. +#define BM_AIPS_PACRP_SP4 (0x00004000U) //!< Bit mask for AIPS_PACRP_SP4. +#define BS_AIPS_PACRP_SP4 (1U) //!< Bit field size in bits for AIPS_PACRP_SP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_SP4 field. +#define BR_AIPS_PACRP_SP4(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP4)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_SP4. +#define BF_AIPS_PACRP_SP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_SP4), uint32_t) & BM_AIPS_PACRP_SP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP4 field to a new value. +#define BW_AIPS_PACRP_SP4(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP4) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field TP3[16] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRP_TP3 (16U) //!< Bit position for AIPS_PACRP_TP3. +#define BM_AIPS_PACRP_TP3 (0x00010000U) //!< Bit mask for AIPS_PACRP_TP3. +#define BS_AIPS_PACRP_TP3 (1U) //!< Bit field size in bits for AIPS_PACRP_TP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_TP3 field. +#define BR_AIPS_PACRP_TP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_TP3. +#define BF_AIPS_PACRP_TP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_TP3), uint32_t) & BM_AIPS_PACRP_TP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP3 field to a new value. +#define BW_AIPS_PACRP_TP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field WP3[17] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRP_WP3 (17U) //!< Bit position for AIPS_PACRP_WP3. +#define BM_AIPS_PACRP_WP3 (0x00020000U) //!< Bit mask for AIPS_PACRP_WP3. +#define BS_AIPS_PACRP_WP3 (1U) //!< Bit field size in bits for AIPS_PACRP_WP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_WP3 field. +#define BR_AIPS_PACRP_WP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_WP3. +#define BF_AIPS_PACRP_WP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_WP3), uint32_t) & BM_AIPS_PACRP_WP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP3 field to a new value. +#define BW_AIPS_PACRP_WP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field SP3[18] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRP_SP3 (18U) //!< Bit position for AIPS_PACRP_SP3. +#define BM_AIPS_PACRP_SP3 (0x00040000U) //!< Bit mask for AIPS_PACRP_SP3. +#define BS_AIPS_PACRP_SP3 (1U) //!< Bit field size in bits for AIPS_PACRP_SP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_SP3 field. +#define BR_AIPS_PACRP_SP3(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP3)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_SP3. +#define BF_AIPS_PACRP_SP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_SP3), uint32_t) & BM_AIPS_PACRP_SP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP3 field to a new value. +#define BW_AIPS_PACRP_SP3(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP3) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field TP2[20] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRP_TP2 (20U) //!< Bit position for AIPS_PACRP_TP2. +#define BM_AIPS_PACRP_TP2 (0x00100000U) //!< Bit mask for AIPS_PACRP_TP2. +#define BS_AIPS_PACRP_TP2 (1U) //!< Bit field size in bits for AIPS_PACRP_TP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_TP2 field. +#define BR_AIPS_PACRP_TP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_TP2. +#define BF_AIPS_PACRP_TP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_TP2), uint32_t) & BM_AIPS_PACRP_TP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP2 field to a new value. +#define BW_AIPS_PACRP_TP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field WP2[21] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRP_WP2 (21U) //!< Bit position for AIPS_PACRP_WP2. +#define BM_AIPS_PACRP_WP2 (0x00200000U) //!< Bit mask for AIPS_PACRP_WP2. +#define BS_AIPS_PACRP_WP2 (1U) //!< Bit field size in bits for AIPS_PACRP_WP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_WP2 field. +#define BR_AIPS_PACRP_WP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_WP2. +#define BF_AIPS_PACRP_WP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_WP2), uint32_t) & BM_AIPS_PACRP_WP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP2 field to a new value. +#define BW_AIPS_PACRP_WP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field SP2[22] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRP_SP2 (22U) //!< Bit position for AIPS_PACRP_SP2. +#define BM_AIPS_PACRP_SP2 (0x00400000U) //!< Bit mask for AIPS_PACRP_SP2. +#define BS_AIPS_PACRP_SP2 (1U) //!< Bit field size in bits for AIPS_PACRP_SP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_SP2 field. +#define BR_AIPS_PACRP_SP2(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP2)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_SP2. +#define BF_AIPS_PACRP_SP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_SP2), uint32_t) & BM_AIPS_PACRP_SP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP2 field to a new value. +#define BW_AIPS_PACRP_SP2(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP2) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRP_TP1 (24U) //!< Bit position for AIPS_PACRP_TP1. +#define BM_AIPS_PACRP_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRP_TP1. +#define BS_AIPS_PACRP_TP1 (1U) //!< Bit field size in bits for AIPS_PACRP_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_TP1 field. +#define BR_AIPS_PACRP_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_TP1. +#define BF_AIPS_PACRP_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_TP1), uint32_t) & BM_AIPS_PACRP_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRP_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRP_WP1 (25U) //!< Bit position for AIPS_PACRP_WP1. +#define BM_AIPS_PACRP_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRP_WP1. +#define BS_AIPS_PACRP_WP1 (1U) //!< Bit field size in bits for AIPS_PACRP_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_WP1 field. +#define BR_AIPS_PACRP_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_WP1. +#define BF_AIPS_PACRP_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_WP1), uint32_t) & BM_AIPS_PACRP_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRP_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master must + * be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRP_SP1 (26U) //!< Bit position for AIPS_PACRP_SP1. +#define BM_AIPS_PACRP_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRP_SP1. +#define BS_AIPS_PACRP_SP1 (1U) //!< Bit field size in bits for AIPS_PACRP_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_SP1 field. +#define BR_AIPS_PACRP_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_SP1. +#define BF_AIPS_PACRP_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_SP1), uint32_t) & BM_AIPS_PACRP_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRP_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this bit is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRP_TP0 (28U) //!< Bit position for AIPS_PACRP_TP0. +#define BM_AIPS_PACRP_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRP_TP0. +#define BS_AIPS_PACRP_TP0 (1U) //!< Bit field size in bits for AIPS_PACRP_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_TP0 field. +#define BR_AIPS_PACRP_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_TP0. +#define BF_AIPS_PACRP_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_TP0), uint32_t) & BM_AIPS_PACRP_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRP_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRP_WP0 (29U) //!< Bit position for AIPS_PACRP_WP0. +#define BM_AIPS_PACRP_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRP_WP0. +#define BS_AIPS_PACRP_WP0 (1U) //!< Bit field size in bits for AIPS_PACRP_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_WP0 field. +#define BR_AIPS_PACRP_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_WP0. +#define BF_AIPS_PACRP_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_WP0), uint32_t) & BM_AIPS_PACRP_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRP_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRP, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRP_SP0 (30U) //!< Bit position for AIPS_PACRP_SP0. +#define BM_AIPS_PACRP_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRP_SP0. +#define BS_AIPS_PACRP_SP0 (1U) //!< Bit field size in bits for AIPS_PACRP_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRP_SP0 field. +#define BR_AIPS_PACRP_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRP_SP0. +#define BF_AIPS_PACRP_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRP_SP0), uint32_t) & BM_AIPS_PACRP_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRP_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRP_ADDR(x), BP_AIPS_PACRP_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AIPS_PACRU - Peripheral Access Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AIPS_PACRU - Peripheral Access Control Register (RW) + * + * Reset value: 0x44000000U + * + * PACRU defines the access levels for the two global spaces. + */ +typedef union _hw_aips_pacru +{ + uint32_t U; + struct _hw_aips_pacru_bitfields + { + uint32_t RESERVED0 : 24; //!< [23:0] + uint32_t TP1 : 1; //!< [24] Trusted Protect + uint32_t WP1 : 1; //!< [25] Write Protect + uint32_t SP1 : 1; //!< [26] Supervisor Protect + uint32_t RESERVED1 : 1; //!< [27] + uint32_t TP0 : 1; //!< [28] Trusted Protect + uint32_t WP0 : 1; //!< [29] Write Protect + uint32_t SP0 : 1; //!< [30] Supervisor Protect + uint32_t RESERVED2 : 1; //!< [31] + } B; +} hw_aips_pacru_t; +#endif + +/*! + * @name Constants and macros for entire AIPS_PACRU register + */ +//@{ +#define HW_AIPS_PACRU_ADDR(x) (REGS_AIPS_BASE(x) + 0x80U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AIPS_PACRU(x) (*(__IO hw_aips_pacru_t *) HW_AIPS_PACRU_ADDR(x)) +#define HW_AIPS_PACRU_RD(x) (HW_AIPS_PACRU(x).U) +#define HW_AIPS_PACRU_WR(x, v) (HW_AIPS_PACRU(x).U = (v)) +#define HW_AIPS_PACRU_SET(x, v) (HW_AIPS_PACRU_WR(x, HW_AIPS_PACRU_RD(x) | (v))) +#define HW_AIPS_PACRU_CLR(x, v) (HW_AIPS_PACRU_WR(x, HW_AIPS_PACRU_RD(x) & ~(v))) +#define HW_AIPS_PACRU_TOG(x, v) (HW_AIPS_PACRU_WR(x, HW_AIPS_PACRU_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AIPS_PACRU bitfields + */ + +/*! + * @name Register AIPS_PACRU, field TP1[24] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRU_TP1 (24U) //!< Bit position for AIPS_PACRU_TP1. +#define BM_AIPS_PACRU_TP1 (0x01000000U) //!< Bit mask for AIPS_PACRU_TP1. +#define BS_AIPS_PACRU_TP1 (1U) //!< Bit field size in bits for AIPS_PACRU_TP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRU_TP1 field. +#define BR_AIPS_PACRU_TP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_TP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRU_TP1. +#define BF_AIPS_PACRU_TP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRU_TP1), uint32_t) & BM_AIPS_PACRU_TP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP1 field to a new value. +#define BW_AIPS_PACRU_TP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_TP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRU, field WP1[25] (RW) + * + * Determines whether the peripheral allows write accesss. When this bit is set + * and a write access is attempted, access terminates with an error response and + * no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRU_WP1 (25U) //!< Bit position for AIPS_PACRU_WP1. +#define BM_AIPS_PACRU_WP1 (0x02000000U) //!< Bit mask for AIPS_PACRU_WP1. +#define BS_AIPS_PACRU_WP1 (1U) //!< Bit field size in bits for AIPS_PACRU_WP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRU_WP1 field. +#define BR_AIPS_PACRU_WP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_WP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRU_WP1. +#define BF_AIPS_PACRU_WP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRU_WP1), uint32_t) & BM_AIPS_PACRU_WP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP1 field to a new value. +#define BW_AIPS_PACRU_WP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_WP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRU, field SP1[26] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * accesses. When this field is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control field for the master + * must be set. If not, access terminates with an error response and no peripheral + * access initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRU_SP1 (26U) //!< Bit position for AIPS_PACRU_SP1. +#define BM_AIPS_PACRU_SP1 (0x04000000U) //!< Bit mask for AIPS_PACRU_SP1. +#define BS_AIPS_PACRU_SP1 (1U) //!< Bit field size in bits for AIPS_PACRU_SP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRU_SP1 field. +#define BR_AIPS_PACRU_SP1(x) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_SP1)) +#endif + +//! @brief Format value for bitfield AIPS_PACRU_SP1. +#define BF_AIPS_PACRU_SP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRU_SP1), uint32_t) & BM_AIPS_PACRU_SP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP1 field to a new value. +#define BW_AIPS_PACRU_SP1(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_SP1) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRU, field TP0[28] (RW) + * + * Determines whether the peripheral allows accesses from an untrusted master. + * When this field is set and an access is attempted by an untrusted master, the + * access terminates with an error response and no peripheral access initiates. + * + * Values: + * - 0 - Accesses from an untrusted master are allowed. + * - 1 - Accesses from an untrusted master are not allowed. + */ +//@{ +#define BP_AIPS_PACRU_TP0 (28U) //!< Bit position for AIPS_PACRU_TP0. +#define BM_AIPS_PACRU_TP0 (0x10000000U) //!< Bit mask for AIPS_PACRU_TP0. +#define BS_AIPS_PACRU_TP0 (1U) //!< Bit field size in bits for AIPS_PACRU_TP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRU_TP0 field. +#define BR_AIPS_PACRU_TP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_TP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRU_TP0. +#define BF_AIPS_PACRU_TP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRU_TP0), uint32_t) & BM_AIPS_PACRU_TP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TP0 field to a new value. +#define BW_AIPS_PACRU_TP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_TP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRU, field WP0[29] (RW) + * + * Determines whether the peripheral allows write accesses. When this field is + * set and a write access is attempted, access terminates with an error response + * and no peripheral access initiates. + * + * Values: + * - 0 - This peripheral allows write accesses. + * - 1 - This peripheral is write protected. + */ +//@{ +#define BP_AIPS_PACRU_WP0 (29U) //!< Bit position for AIPS_PACRU_WP0. +#define BM_AIPS_PACRU_WP0 (0x20000000U) //!< Bit mask for AIPS_PACRU_WP0. +#define BS_AIPS_PACRU_WP0 (1U) //!< Bit field size in bits for AIPS_PACRU_WP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRU_WP0 field. +#define BR_AIPS_PACRU_WP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_WP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRU_WP0. +#define BF_AIPS_PACRU_WP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRU_WP0), uint32_t) & BM_AIPS_PACRU_WP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP0 field to a new value. +#define BW_AIPS_PACRU_WP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_WP0) = (v)) +#endif +//@} + +/*! + * @name Register AIPS_PACRU, field SP0[30] (RW) + * + * Determines whether the peripheral requires supervisor privilege level for + * access. When this bit is set, the master privilege level must indicate the + * supervisor access attribute, and the MPRx[MPLn] control bit for the master must be + * set. If not, access terminates with an error response and no peripheral access + * initiates. + * + * Values: + * - 0 - This peripheral does not require supervisor privilege level for + * accesses. + * - 1 - This peripheral requires supervisor privilege level for accesses. + */ +//@{ +#define BP_AIPS_PACRU_SP0 (30U) //!< Bit position for AIPS_PACRU_SP0. +#define BM_AIPS_PACRU_SP0 (0x40000000U) //!< Bit mask for AIPS_PACRU_SP0. +#define BS_AIPS_PACRU_SP0 (1U) //!< Bit field size in bits for AIPS_PACRU_SP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AIPS_PACRU_SP0 field. +#define BR_AIPS_PACRU_SP0(x) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_SP0)) +#endif + +//! @brief Format value for bitfield AIPS_PACRU_SP0. +#define BF_AIPS_PACRU_SP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AIPS_PACRU_SP0), uint32_t) & BM_AIPS_PACRU_SP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SP0 field to a new value. +#define BW_AIPS_PACRU_SP0(x, v) (BITBAND_ACCESS32(HW_AIPS_PACRU_ADDR(x), BP_AIPS_PACRU_SP0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_aips_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All AIPS module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_aips +{ + __IO hw_aips_mpra_t MPRA; //!< [0x0] Master Privilege Register A + uint8_t _reserved0[28]; + __IO hw_aips_pacra_t PACRA; //!< [0x20] Peripheral Access Control Register + __IO hw_aips_pacrb_t PACRB; //!< [0x24] Peripheral Access Control Register + __IO hw_aips_pacrc_t PACRC; //!< [0x28] Peripheral Access Control Register + __IO hw_aips_pacrd_t PACRD; //!< [0x2C] Peripheral Access Control Register + uint8_t _reserved1[16]; + __IO hw_aips_pacre_t PACRE; //!< [0x40] Peripheral Access Control Register + __IO hw_aips_pacrf_t PACRF; //!< [0x44] Peripheral Access Control Register + __IO hw_aips_pacrg_t PACRG; //!< [0x48] Peripheral Access Control Register + __IO hw_aips_pacrh_t PACRH; //!< [0x4C] Peripheral Access Control Register + __IO hw_aips_pacri_t PACRI; //!< [0x50] Peripheral Access Control Register + __IO hw_aips_pacrj_t PACRJ; //!< [0x54] Peripheral Access Control Register + __IO hw_aips_pacrk_t PACRK; //!< [0x58] Peripheral Access Control Register + __IO hw_aips_pacrl_t PACRL; //!< [0x5C] Peripheral Access Control Register + __IO hw_aips_pacrm_t PACRM; //!< [0x60] Peripheral Access Control Register + __IO hw_aips_pacrn_t PACRN; //!< [0x64] Peripheral Access Control Register + __IO hw_aips_pacro_t PACRO; //!< [0x68] Peripheral Access Control Register + __IO hw_aips_pacrp_t PACRP; //!< [0x6C] Peripheral Access Control Register + uint8_t _reserved2[16]; + __IO hw_aips_pacru_t PACRU; //!< [0x80] Peripheral Access Control Register +} hw_aips_t; +#pragma pack() + +//! @brief Macro to access all AIPS registers. +//! @param x AIPS instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_AIPS(0)</code>. +#define HW_AIPS(x) (*(hw_aips_t *) REGS_AIPS_BASE(x)) +#endif + +#endif // __HW_AIPS_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_axbs.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1078 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_AXBS_REGISTERS_H__ +#define __HW_AXBS_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 AXBS + * + * Crossbar switch + * + * Registers defined in this header file: + * - HW_AXBS_PRSn - Priority Registers Slave + * - HW_AXBS_CRSn - Control Register + * - HW_AXBS_MGPCR0 - Master General Purpose Control Register + * - HW_AXBS_MGPCR1 - Master General Purpose Control Register + * - HW_AXBS_MGPCR2 - Master General Purpose Control Register + * - HW_AXBS_MGPCR3 - Master General Purpose Control Register + * - HW_AXBS_MGPCR4 - Master General Purpose Control Register + * - HW_AXBS_MGPCR5 - Master General Purpose Control Register + * + * - hw_axbs_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_AXBS_BASE +#define HW_AXBS_INSTANCE_COUNT (1U) //!< Number of instances of the AXBS module. +#define REGS_AXBS_BASE (0x40004000U) //!< Base address for AXBS. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AXBS_PRSn - Priority Registers Slave +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AXBS_PRSn - Priority Registers Slave (RW) + * + * Reset value: 0x00543210U + * + * The priority registers (PRSn) set the priority of each master port on a per + * slave port basis and reside in each slave port. The priority register can be + * accessed only with 32-bit accesses. After the CRSn[RO] bit is set, the PRSn + * register can only be read; attempts to write to it have no effect on PRSn and + * result in a bus-error response to the master initiating the write. Two available + * masters must not be programmed with the same priority level. Attempts to + * program two or more masters with the same priority level result in a bus-error + * response and the PRSn is not updated. Valid values for the Mn priority fields + * depend on which masters are available on the chip. This information can be found in + * the chip-specific information for the crossbar. If the chip contains less + * than five masters, values 0 to 3 are valid. Writing other values will result in + * an error. If the chip contains five or more masters, valid values are 0 to n-1, + * where n is the number of masters attached to the AXBS module. Other values + * will result in an error. + */ +typedef union _hw_axbs_prsn +{ + uint32_t U; + struct _hw_axbs_prsn_bitfields + { + uint32_t M0 : 3; //!< [2:0] Master 0 Priority. Sets the arbitration + //! priority for this port on the associated slave port. + uint32_t RESERVED0 : 1; //!< [3] + uint32_t M1 : 3; //!< [6:4] Master 1 Priority. Sets the arbitration + //! priority for this port on the associated slave port. + uint32_t RESERVED1 : 1; //!< [7] + uint32_t M2 : 3; //!< [10:8] Master 2 Priority. Sets the arbitration + //! priority for this port on the associated slave port. + uint32_t RESERVED2 : 1; //!< [11] + uint32_t M3 : 3; //!< [14:12] Master 3 Priority. Sets the arbitration + //! priority for this port on the associated slave port. + uint32_t RESERVED3 : 1; //!< [15] + uint32_t M4 : 3; //!< [18:16] Master 4 Priority. Sets the arbitration + //! priority for this port on the associated slave port. + uint32_t RESERVED4 : 1; //!< [19] + uint32_t M5 : 3; //!< [22:20] Master 5 Priority. Sets the arbitration + //! priority for this port on the associated slave port. + uint32_t RESERVED5 : 9; //!< [31:23] + } B; +} hw_axbs_prsn_t; +#endif + +/*! + * @name Constants and macros for entire AXBS_PRSn register + */ +//@{ +#define HW_AXBS_PRSn_COUNT (5U) + +#define HW_AXBS_PRSn_ADDR(n) (REGS_AXBS_BASE + 0x0U + (0x100U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_AXBS_PRSn(n) (*(__IO hw_axbs_prsn_t *) HW_AXBS_PRSn_ADDR(n)) +#define HW_AXBS_PRSn_RD(n) (HW_AXBS_PRSn(n).U) +#define HW_AXBS_PRSn_WR(n, v) (HW_AXBS_PRSn(n).U = (v)) +#define HW_AXBS_PRSn_SET(n, v) (HW_AXBS_PRSn_WR(n, HW_AXBS_PRSn_RD(n) | (v))) +#define HW_AXBS_PRSn_CLR(n, v) (HW_AXBS_PRSn_WR(n, HW_AXBS_PRSn_RD(n) & ~(v))) +#define HW_AXBS_PRSn_TOG(n, v) (HW_AXBS_PRSn_WR(n, HW_AXBS_PRSn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AXBS_PRSn bitfields + */ + +/*! + * @name Register AXBS_PRSn, field M0[2:0] (RW) + * + * Values: + * - 000 - This master has level 1, or highest, priority when accessing the + * slave port. + * - 001 - This master has level 2 priority when accessing the slave port. + * - 010 - This master has level 3 priority when accessing the slave port. + * - 011 - This master has level 4 priority when accessing the slave port. + * - 100 - This master has level 5 priority when accessing the slave port. + * - 101 - This master has level 6 priority when accessing the slave port. + * - 110 - This master has level 7 priority when accessing the slave port. + * - 111 - This master has level 8, or lowest, priority when accessing the slave + * port. + */ +//@{ +#define BP_AXBS_PRSn_M0 (0U) //!< Bit position for AXBS_PRSn_M0. +#define BM_AXBS_PRSn_M0 (0x00000007U) //!< Bit mask for AXBS_PRSn_M0. +#define BS_AXBS_PRSn_M0 (3U) //!< Bit field size in bits for AXBS_PRSn_M0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_PRSn_M0 field. +#define BR_AXBS_PRSn_M0(n) (HW_AXBS_PRSn(n).B.M0) +#endif + +//! @brief Format value for bitfield AXBS_PRSn_M0. +#define BF_AXBS_PRSn_M0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_PRSn_M0), uint32_t) & BM_AXBS_PRSn_M0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M0 field to a new value. +#define BW_AXBS_PRSn_M0(n, v) (HW_AXBS_PRSn_WR(n, (HW_AXBS_PRSn_RD(n) & ~BM_AXBS_PRSn_M0) | BF_AXBS_PRSn_M0(v))) +#endif +//@} + +/*! + * @name Register AXBS_PRSn, field M1[6:4] (RW) + * + * Values: + * - 000 - This master has level 1, or highest, priority when accessing the + * slave port. + * - 001 - This master has level 2 priority when accessing the slave port. + * - 010 - This master has level 3 priority when accessing the slave port. + * - 011 - This master has level 4 priority when accessing the slave port. + * - 100 - This master has level 5 priority when accessing the slave port. + * - 101 - This master has level 6 priority when accessing the slave port. + * - 110 - This master has level 7 priority when accessing the slave port. + * - 111 - This master has level 8, or lowest, priority when accessing the slave + * port. + */ +//@{ +#define BP_AXBS_PRSn_M1 (4U) //!< Bit position for AXBS_PRSn_M1. +#define BM_AXBS_PRSn_M1 (0x00000070U) //!< Bit mask for AXBS_PRSn_M1. +#define BS_AXBS_PRSn_M1 (3U) //!< Bit field size in bits for AXBS_PRSn_M1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_PRSn_M1 field. +#define BR_AXBS_PRSn_M1(n) (HW_AXBS_PRSn(n).B.M1) +#endif + +//! @brief Format value for bitfield AXBS_PRSn_M1. +#define BF_AXBS_PRSn_M1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_PRSn_M1), uint32_t) & BM_AXBS_PRSn_M1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M1 field to a new value. +#define BW_AXBS_PRSn_M1(n, v) (HW_AXBS_PRSn_WR(n, (HW_AXBS_PRSn_RD(n) & ~BM_AXBS_PRSn_M1) | BF_AXBS_PRSn_M1(v))) +#endif +//@} + +/*! + * @name Register AXBS_PRSn, field M2[10:8] (RW) + * + * Values: + * - 000 - This master has level 1, or highest, priority when accessing the + * slave port. + * - 001 - This master has level 2 priority when accessing the slave port. + * - 010 - This master has level 3 priority when accessing the slave port. + * - 011 - This master has level 4 priority when accessing the slave port. + * - 100 - This master has level 5 priority when accessing the slave port. + * - 101 - This master has level 6 priority when accessing the slave port. + * - 110 - This master has level 7 priority when accessing the slave port. + * - 111 - This master has level 8, or lowest, priority when accessing the slave + * port. + */ +//@{ +#define BP_AXBS_PRSn_M2 (8U) //!< Bit position for AXBS_PRSn_M2. +#define BM_AXBS_PRSn_M2 (0x00000700U) //!< Bit mask for AXBS_PRSn_M2. +#define BS_AXBS_PRSn_M2 (3U) //!< Bit field size in bits for AXBS_PRSn_M2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_PRSn_M2 field. +#define BR_AXBS_PRSn_M2(n) (HW_AXBS_PRSn(n).B.M2) +#endif + +//! @brief Format value for bitfield AXBS_PRSn_M2. +#define BF_AXBS_PRSn_M2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_PRSn_M2), uint32_t) & BM_AXBS_PRSn_M2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M2 field to a new value. +#define BW_AXBS_PRSn_M2(n, v) (HW_AXBS_PRSn_WR(n, (HW_AXBS_PRSn_RD(n) & ~BM_AXBS_PRSn_M2) | BF_AXBS_PRSn_M2(v))) +#endif +//@} + +/*! + * @name Register AXBS_PRSn, field M3[14:12] (RW) + * + * Values: + * - 000 - This master has level 1, or highest, priority when accessing the + * slave port. + * - 001 - This master has level 2 priority when accessing the slave port. + * - 010 - This master has level 3 priority when accessing the slave port. + * - 011 - This master has level 4 priority when accessing the slave port. + * - 100 - This master has level 5 priority when accessing the slave port. + * - 101 - This master has level 6 priority when accessing the slave port. + * - 110 - This master has level 7 priority when accessing the slave port. + * - 111 - This master has level 8, or lowest, priority when accessing the slave + * port. + */ +//@{ +#define BP_AXBS_PRSn_M3 (12U) //!< Bit position for AXBS_PRSn_M3. +#define BM_AXBS_PRSn_M3 (0x00007000U) //!< Bit mask for AXBS_PRSn_M3. +#define BS_AXBS_PRSn_M3 (3U) //!< Bit field size in bits for AXBS_PRSn_M3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_PRSn_M3 field. +#define BR_AXBS_PRSn_M3(n) (HW_AXBS_PRSn(n).B.M3) +#endif + +//! @brief Format value for bitfield AXBS_PRSn_M3. +#define BF_AXBS_PRSn_M3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_PRSn_M3), uint32_t) & BM_AXBS_PRSn_M3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M3 field to a new value. +#define BW_AXBS_PRSn_M3(n, v) (HW_AXBS_PRSn_WR(n, (HW_AXBS_PRSn_RD(n) & ~BM_AXBS_PRSn_M3) | BF_AXBS_PRSn_M3(v))) +#endif +//@} + +/*! + * @name Register AXBS_PRSn, field M4[18:16] (RW) + * + * Values: + * - 000 - This master has level 1, or highest, priority when accessing the + * slave port. + * - 001 - This master has level 2 priority when accessing the slave port. + * - 010 - This master has level 3 priority when accessing the slave port. + * - 011 - This master has level 4 priority when accessing the slave port. + * - 100 - This master has level 5 priority when accessing the slave port. + * - 101 - This master has level 6 priority when accessing the slave port. + * - 110 - This master has level 7 priority when accessing the slave port. + * - 111 - This master has level 8, or lowest, priority when accessing the slave + * port. + */ +//@{ +#define BP_AXBS_PRSn_M4 (16U) //!< Bit position for AXBS_PRSn_M4. +#define BM_AXBS_PRSn_M4 (0x00070000U) //!< Bit mask for AXBS_PRSn_M4. +#define BS_AXBS_PRSn_M4 (3U) //!< Bit field size in bits for AXBS_PRSn_M4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_PRSn_M4 field. +#define BR_AXBS_PRSn_M4(n) (HW_AXBS_PRSn(n).B.M4) +#endif + +//! @brief Format value for bitfield AXBS_PRSn_M4. +#define BF_AXBS_PRSn_M4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_PRSn_M4), uint32_t) & BM_AXBS_PRSn_M4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M4 field to a new value. +#define BW_AXBS_PRSn_M4(n, v) (HW_AXBS_PRSn_WR(n, (HW_AXBS_PRSn_RD(n) & ~BM_AXBS_PRSn_M4) | BF_AXBS_PRSn_M4(v))) +#endif +//@} + +/*! + * @name Register AXBS_PRSn, field M5[22:20] (RW) + * + * Values: + * - 000 - This master has level 1, or highest, priority when accessing the + * slave port. + * - 001 - This master has level 2 priority when accessing the slave port. + * - 010 - This master has level 3 priority when accessing the slave port. + * - 011 - This master has level 4 priority when accessing the slave port. + * - 100 - This master has level 5 priority when accessing the slave port. + * - 101 - This master has level 6 priority when accessing the slave port. + * - 110 - This master has level 7 priority when accessing the slave port. + * - 111 - This master has level 8, or lowest, priority when accessing the slave + * port. + */ +//@{ +#define BP_AXBS_PRSn_M5 (20U) //!< Bit position for AXBS_PRSn_M5. +#define BM_AXBS_PRSn_M5 (0x00700000U) //!< Bit mask for AXBS_PRSn_M5. +#define BS_AXBS_PRSn_M5 (3U) //!< Bit field size in bits for AXBS_PRSn_M5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_PRSn_M5 field. +#define BR_AXBS_PRSn_M5(n) (HW_AXBS_PRSn(n).B.M5) +#endif + +//! @brief Format value for bitfield AXBS_PRSn_M5. +#define BF_AXBS_PRSn_M5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_PRSn_M5), uint32_t) & BM_AXBS_PRSn_M5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M5 field to a new value. +#define BW_AXBS_PRSn_M5(n, v) (HW_AXBS_PRSn_WR(n, (HW_AXBS_PRSn_RD(n) & ~BM_AXBS_PRSn_M5) | BF_AXBS_PRSn_M5(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_AXBS_CRSn - Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AXBS_CRSn - Control Register (RW) + * + * Reset value: 0x00000000U + * + * These registers control several features of each slave port and must be + * accessed using 32-bit accesses. After CRSn[RO] is set, the PRSn can only be read; + * attempts to write to it have no effect and result in an error response. + */ +typedef union _hw_axbs_crsn +{ + uint32_t U; + struct _hw_axbs_crsn_bitfields + { + uint32_t PARK : 3; //!< [2:0] Park + uint32_t RESERVED0 : 1; //!< [3] + uint32_t PCTL : 2; //!< [5:4] Parking Control + uint32_t RESERVED1 : 2; //!< [7:6] + uint32_t ARB : 2; //!< [9:8] Arbitration Mode + uint32_t RESERVED2 : 20; //!< [29:10] + uint32_t HLP : 1; //!< [30] Halt Low Priority + uint32_t RO : 1; //!< [31] Read Only + } B; +} hw_axbs_crsn_t; +#endif + +/*! + * @name Constants and macros for entire AXBS_CRSn register + */ +//@{ +#define HW_AXBS_CRSn_COUNT (5U) + +#define HW_AXBS_CRSn_ADDR(n) (REGS_AXBS_BASE + 0x10U + (0x100U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_AXBS_CRSn(n) (*(__IO hw_axbs_crsn_t *) HW_AXBS_CRSn_ADDR(n)) +#define HW_AXBS_CRSn_RD(n) (HW_AXBS_CRSn(n).U) +#define HW_AXBS_CRSn_WR(n, v) (HW_AXBS_CRSn(n).U = (v)) +#define HW_AXBS_CRSn_SET(n, v) (HW_AXBS_CRSn_WR(n, HW_AXBS_CRSn_RD(n) | (v))) +#define HW_AXBS_CRSn_CLR(n, v) (HW_AXBS_CRSn_WR(n, HW_AXBS_CRSn_RD(n) & ~(v))) +#define HW_AXBS_CRSn_TOG(n, v) (HW_AXBS_CRSn_WR(n, HW_AXBS_CRSn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AXBS_CRSn bitfields + */ + +/*! + * @name Register AXBS_CRSn, field PARK[2:0] (RW) + * + * Determines which master port the current slave port parks on when no masters + * are actively making requests and the PCTL bits are cleared. Select only master + * ports that are present on the chip. Otherwise, undefined behavior might occur. + * + * Values: + * - 000 - Park on master port M0 + * - 001 - Park on master port M1 + * - 010 - Park on master port M2 + * - 011 - Park on master port M3 + * - 100 - Park on master port M4 + * - 101 - Park on master port M5 + * - 110 - Park on master port M6 + * - 111 - Park on master port M7 + */ +//@{ +#define BP_AXBS_CRSn_PARK (0U) //!< Bit position for AXBS_CRSn_PARK. +#define BM_AXBS_CRSn_PARK (0x00000007U) //!< Bit mask for AXBS_CRSn_PARK. +#define BS_AXBS_CRSn_PARK (3U) //!< Bit field size in bits for AXBS_CRSn_PARK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_CRSn_PARK field. +#define BR_AXBS_CRSn_PARK(n) (HW_AXBS_CRSn(n).B.PARK) +#endif + +//! @brief Format value for bitfield AXBS_CRSn_PARK. +#define BF_AXBS_CRSn_PARK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_CRSn_PARK), uint32_t) & BM_AXBS_CRSn_PARK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PARK field to a new value. +#define BW_AXBS_CRSn_PARK(n, v) (HW_AXBS_CRSn_WR(n, (HW_AXBS_CRSn_RD(n) & ~BM_AXBS_CRSn_PARK) | BF_AXBS_CRSn_PARK(v))) +#endif +//@} + +/*! + * @name Register AXBS_CRSn, field PCTL[5:4] (RW) + * + * Determines the slave port's parking control. The low-power park feature + * results in an overall power savings if the slave port is not saturated. However, + * this forces an extra latency clock when any master tries to access the slave + * port while not in use because it is not parked on any master. + * + * Values: + * - 00 - When no master makes a request, the arbiter parks the slave port on + * the master port defined by the PARK field + * - 01 - When no master makes a request, the arbiter parks the slave port on + * the last master to be in control of the slave port + * - 10 - When no master makes a request, the slave port is not parked on a + * master and the arbiter drives all outputs to a constant safe state + * - 11 - Reserved + */ +//@{ +#define BP_AXBS_CRSn_PCTL (4U) //!< Bit position for AXBS_CRSn_PCTL. +#define BM_AXBS_CRSn_PCTL (0x00000030U) //!< Bit mask for AXBS_CRSn_PCTL. +#define BS_AXBS_CRSn_PCTL (2U) //!< Bit field size in bits for AXBS_CRSn_PCTL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_CRSn_PCTL field. +#define BR_AXBS_CRSn_PCTL(n) (HW_AXBS_CRSn(n).B.PCTL) +#endif + +//! @brief Format value for bitfield AXBS_CRSn_PCTL. +#define BF_AXBS_CRSn_PCTL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_CRSn_PCTL), uint32_t) & BM_AXBS_CRSn_PCTL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PCTL field to a new value. +#define BW_AXBS_CRSn_PCTL(n, v) (HW_AXBS_CRSn_WR(n, (HW_AXBS_CRSn_RD(n) & ~BM_AXBS_CRSn_PCTL) | BF_AXBS_CRSn_PCTL(v))) +#endif +//@} + +/*! + * @name Register AXBS_CRSn, field ARB[9:8] (RW) + * + * Selects the arbitration policy for the slave port. + * + * Values: + * - 00 - Fixed priority + * - 01 - Round-robin, or rotating, priority + * - 10 - Reserved + * - 11 - Reserved + */ +//@{ +#define BP_AXBS_CRSn_ARB (8U) //!< Bit position for AXBS_CRSn_ARB. +#define BM_AXBS_CRSn_ARB (0x00000300U) //!< Bit mask for AXBS_CRSn_ARB. +#define BS_AXBS_CRSn_ARB (2U) //!< Bit field size in bits for AXBS_CRSn_ARB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_CRSn_ARB field. +#define BR_AXBS_CRSn_ARB(n) (HW_AXBS_CRSn(n).B.ARB) +#endif + +//! @brief Format value for bitfield AXBS_CRSn_ARB. +#define BF_AXBS_CRSn_ARB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_CRSn_ARB), uint32_t) & BM_AXBS_CRSn_ARB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ARB field to a new value. +#define BW_AXBS_CRSn_ARB(n, v) (HW_AXBS_CRSn_WR(n, (HW_AXBS_CRSn_RD(n) & ~BM_AXBS_CRSn_ARB) | BF_AXBS_CRSn_ARB(v))) +#endif +//@} + +/*! + * @name Register AXBS_CRSn, field HLP[30] (RW) + * + * Sets the initial arbitration priority for low power mode requests . Setting + * this bit will not affect the request for low power mode from attaining highest + * priority once it has control of the slave ports. + * + * Values: + * - 0 - The low power mode request has the highest priority for arbitration on + * this slave port + * - 1 - The low power mode request has the lowest initial priority for + * arbitration on this slave port + */ +//@{ +#define BP_AXBS_CRSn_HLP (30U) //!< Bit position for AXBS_CRSn_HLP. +#define BM_AXBS_CRSn_HLP (0x40000000U) //!< Bit mask for AXBS_CRSn_HLP. +#define BS_AXBS_CRSn_HLP (1U) //!< Bit field size in bits for AXBS_CRSn_HLP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_CRSn_HLP field. +#define BR_AXBS_CRSn_HLP(n) (BITBAND_ACCESS32(HW_AXBS_CRSn_ADDR(n), BP_AXBS_CRSn_HLP)) +#endif + +//! @brief Format value for bitfield AXBS_CRSn_HLP. +#define BF_AXBS_CRSn_HLP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_CRSn_HLP), uint32_t) & BM_AXBS_CRSn_HLP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HLP field to a new value. +#define BW_AXBS_CRSn_HLP(n, v) (BITBAND_ACCESS32(HW_AXBS_CRSn_ADDR(n), BP_AXBS_CRSn_HLP) = (v)) +#endif +//@} + +/*! + * @name Register AXBS_CRSn, field RO[31] (RW) + * + * Forces the slave port's CSRn and PRSn registers to be read-only. After set, + * only a hardware reset clears it. + * + * Values: + * - 0 - The slave port's registers are writeable + * - 1 - The slave port's registers are read-only and cannot be written. + * Attempted writes have no effect on the registers and result in a bus error + * response. + */ +//@{ +#define BP_AXBS_CRSn_RO (31U) //!< Bit position for AXBS_CRSn_RO. +#define BM_AXBS_CRSn_RO (0x80000000U) //!< Bit mask for AXBS_CRSn_RO. +#define BS_AXBS_CRSn_RO (1U) //!< Bit field size in bits for AXBS_CRSn_RO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_CRSn_RO field. +#define BR_AXBS_CRSn_RO(n) (BITBAND_ACCESS32(HW_AXBS_CRSn_ADDR(n), BP_AXBS_CRSn_RO)) +#endif + +//! @brief Format value for bitfield AXBS_CRSn_RO. +#define BF_AXBS_CRSn_RO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_CRSn_RO), uint32_t) & BM_AXBS_CRSn_RO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RO field to a new value. +#define BW_AXBS_CRSn_RO(n, v) (BITBAND_ACCESS32(HW_AXBS_CRSn_ADDR(n), BP_AXBS_CRSn_RO) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AXBS_MGPCR0 - Master General Purpose Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AXBS_MGPCR0 - Master General Purpose Control Register (RW) + * + * Reset value: 0x00000000U + * + * The MGPCR controls only whether the master's undefined length burst accesses + * are allowed to complete uninterrupted or whether they can be broken by + * requests from higher priority masters. The MGPCR can be accessed only in Supervisor + * mode with 32-bit accesses. + */ +typedef union _hw_axbs_mgpcr0 +{ + uint32_t U; + struct _hw_axbs_mgpcr0_bitfields + { + uint32_t AULB : 3; //!< [2:0] Arbitrates On Undefined Length Bursts + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_axbs_mgpcr0_t; +#endif + +/*! + * @name Constants and macros for entire AXBS_MGPCR0 register + */ +//@{ +#define HW_AXBS_MGPCR0_ADDR (REGS_AXBS_BASE + 0x800U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AXBS_MGPCR0 (*(__IO hw_axbs_mgpcr0_t *) HW_AXBS_MGPCR0_ADDR) +#define HW_AXBS_MGPCR0_RD() (HW_AXBS_MGPCR0.U) +#define HW_AXBS_MGPCR0_WR(v) (HW_AXBS_MGPCR0.U = (v)) +#define HW_AXBS_MGPCR0_SET(v) (HW_AXBS_MGPCR0_WR(HW_AXBS_MGPCR0_RD() | (v))) +#define HW_AXBS_MGPCR0_CLR(v) (HW_AXBS_MGPCR0_WR(HW_AXBS_MGPCR0_RD() & ~(v))) +#define HW_AXBS_MGPCR0_TOG(v) (HW_AXBS_MGPCR0_WR(HW_AXBS_MGPCR0_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AXBS_MGPCR0 bitfields + */ + +/*! + * @name Register AXBS_MGPCR0, field AULB[2:0] (RW) + * + * Determines whether, and when, the crossbar switch arbitrates away the slave + * port the master owns when the master is performing undefined length burst + * accesses. + * + * Values: + * - 000 - No arbitration is allowed during an undefined length burst + * - 001 - Arbitration is allowed at any time during an undefined length burst + * - 010 - Arbitration is allowed after four beats of an undefined length burst + * - 011 - Arbitration is allowed after eight beats of an undefined length burst + * - 100 - Arbitration is allowed after 16 beats of an undefined length burst + * - 101 - Reserved + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_AXBS_MGPCR0_AULB (0U) //!< Bit position for AXBS_MGPCR0_AULB. +#define BM_AXBS_MGPCR0_AULB (0x00000007U) //!< Bit mask for AXBS_MGPCR0_AULB. +#define BS_AXBS_MGPCR0_AULB (3U) //!< Bit field size in bits for AXBS_MGPCR0_AULB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_MGPCR0_AULB field. +#define BR_AXBS_MGPCR0_AULB (HW_AXBS_MGPCR0.B.AULB) +#endif + +//! @brief Format value for bitfield AXBS_MGPCR0_AULB. +#define BF_AXBS_MGPCR0_AULB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_MGPCR0_AULB), uint32_t) & BM_AXBS_MGPCR0_AULB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AULB field to a new value. +#define BW_AXBS_MGPCR0_AULB(v) (HW_AXBS_MGPCR0_WR((HW_AXBS_MGPCR0_RD() & ~BM_AXBS_MGPCR0_AULB) | BF_AXBS_MGPCR0_AULB(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AXBS_MGPCR1 - Master General Purpose Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AXBS_MGPCR1 - Master General Purpose Control Register (RW) + * + * Reset value: 0x00000000U + * + * The MGPCR controls only whether the master's undefined length burst accesses + * are allowed to complete uninterrupted or whether they can be broken by + * requests from higher priority masters. The MGPCR can be accessed only in Supervisor + * mode with 32-bit accesses. + */ +typedef union _hw_axbs_mgpcr1 +{ + uint32_t U; + struct _hw_axbs_mgpcr1_bitfields + { + uint32_t AULB : 3; //!< [2:0] Arbitrates On Undefined Length Bursts + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_axbs_mgpcr1_t; +#endif + +/*! + * @name Constants and macros for entire AXBS_MGPCR1 register + */ +//@{ +#define HW_AXBS_MGPCR1_ADDR (REGS_AXBS_BASE + 0x900U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AXBS_MGPCR1 (*(__IO hw_axbs_mgpcr1_t *) HW_AXBS_MGPCR1_ADDR) +#define HW_AXBS_MGPCR1_RD() (HW_AXBS_MGPCR1.U) +#define HW_AXBS_MGPCR1_WR(v) (HW_AXBS_MGPCR1.U = (v)) +#define HW_AXBS_MGPCR1_SET(v) (HW_AXBS_MGPCR1_WR(HW_AXBS_MGPCR1_RD() | (v))) +#define HW_AXBS_MGPCR1_CLR(v) (HW_AXBS_MGPCR1_WR(HW_AXBS_MGPCR1_RD() & ~(v))) +#define HW_AXBS_MGPCR1_TOG(v) (HW_AXBS_MGPCR1_WR(HW_AXBS_MGPCR1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AXBS_MGPCR1 bitfields + */ + +/*! + * @name Register AXBS_MGPCR1, field AULB[2:0] (RW) + * + * Determines whether, and when, the crossbar switch arbitrates away the slave + * port the master owns when the master is performing undefined length burst + * accesses. + * + * Values: + * - 000 - No arbitration is allowed during an undefined length burst + * - 001 - Arbitration is allowed at any time during an undefined length burst + * - 010 - Arbitration is allowed after four beats of an undefined length burst + * - 011 - Arbitration is allowed after eight beats of an undefined length burst + * - 100 - Arbitration is allowed after 16 beats of an undefined length burst + * - 101 - Reserved + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_AXBS_MGPCR1_AULB (0U) //!< Bit position for AXBS_MGPCR1_AULB. +#define BM_AXBS_MGPCR1_AULB (0x00000007U) //!< Bit mask for AXBS_MGPCR1_AULB. +#define BS_AXBS_MGPCR1_AULB (3U) //!< Bit field size in bits for AXBS_MGPCR1_AULB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_MGPCR1_AULB field. +#define BR_AXBS_MGPCR1_AULB (HW_AXBS_MGPCR1.B.AULB) +#endif + +//! @brief Format value for bitfield AXBS_MGPCR1_AULB. +#define BF_AXBS_MGPCR1_AULB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_MGPCR1_AULB), uint32_t) & BM_AXBS_MGPCR1_AULB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AULB field to a new value. +#define BW_AXBS_MGPCR1_AULB(v) (HW_AXBS_MGPCR1_WR((HW_AXBS_MGPCR1_RD() & ~BM_AXBS_MGPCR1_AULB) | BF_AXBS_MGPCR1_AULB(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AXBS_MGPCR2 - Master General Purpose Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AXBS_MGPCR2 - Master General Purpose Control Register (RW) + * + * Reset value: 0x00000000U + * + * The MGPCR controls only whether the master's undefined length burst accesses + * are allowed to complete uninterrupted or whether they can be broken by + * requests from higher priority masters. The MGPCR can be accessed only in Supervisor + * mode with 32-bit accesses. + */ +typedef union _hw_axbs_mgpcr2 +{ + uint32_t U; + struct _hw_axbs_mgpcr2_bitfields + { + uint32_t AULB : 3; //!< [2:0] Arbitrates On Undefined Length Bursts + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_axbs_mgpcr2_t; +#endif + +/*! + * @name Constants and macros for entire AXBS_MGPCR2 register + */ +//@{ +#define HW_AXBS_MGPCR2_ADDR (REGS_AXBS_BASE + 0xA00U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AXBS_MGPCR2 (*(__IO hw_axbs_mgpcr2_t *) HW_AXBS_MGPCR2_ADDR) +#define HW_AXBS_MGPCR2_RD() (HW_AXBS_MGPCR2.U) +#define HW_AXBS_MGPCR2_WR(v) (HW_AXBS_MGPCR2.U = (v)) +#define HW_AXBS_MGPCR2_SET(v) (HW_AXBS_MGPCR2_WR(HW_AXBS_MGPCR2_RD() | (v))) +#define HW_AXBS_MGPCR2_CLR(v) (HW_AXBS_MGPCR2_WR(HW_AXBS_MGPCR2_RD() & ~(v))) +#define HW_AXBS_MGPCR2_TOG(v) (HW_AXBS_MGPCR2_WR(HW_AXBS_MGPCR2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AXBS_MGPCR2 bitfields + */ + +/*! + * @name Register AXBS_MGPCR2, field AULB[2:0] (RW) + * + * Determines whether, and when, the crossbar switch arbitrates away the slave + * port the master owns when the master is performing undefined length burst + * accesses. + * + * Values: + * - 000 - No arbitration is allowed during an undefined length burst + * - 001 - Arbitration is allowed at any time during an undefined length burst + * - 010 - Arbitration is allowed after four beats of an undefined length burst + * - 011 - Arbitration is allowed after eight beats of an undefined length burst + * - 100 - Arbitration is allowed after 16 beats of an undefined length burst + * - 101 - Reserved + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_AXBS_MGPCR2_AULB (0U) //!< Bit position for AXBS_MGPCR2_AULB. +#define BM_AXBS_MGPCR2_AULB (0x00000007U) //!< Bit mask for AXBS_MGPCR2_AULB. +#define BS_AXBS_MGPCR2_AULB (3U) //!< Bit field size in bits for AXBS_MGPCR2_AULB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_MGPCR2_AULB field. +#define BR_AXBS_MGPCR2_AULB (HW_AXBS_MGPCR2.B.AULB) +#endif + +//! @brief Format value for bitfield AXBS_MGPCR2_AULB. +#define BF_AXBS_MGPCR2_AULB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_MGPCR2_AULB), uint32_t) & BM_AXBS_MGPCR2_AULB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AULB field to a new value. +#define BW_AXBS_MGPCR2_AULB(v) (HW_AXBS_MGPCR2_WR((HW_AXBS_MGPCR2_RD() & ~BM_AXBS_MGPCR2_AULB) | BF_AXBS_MGPCR2_AULB(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AXBS_MGPCR3 - Master General Purpose Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AXBS_MGPCR3 - Master General Purpose Control Register (RW) + * + * Reset value: 0x00000000U + * + * The MGPCR controls only whether the master's undefined length burst accesses + * are allowed to complete uninterrupted or whether they can be broken by + * requests from higher priority masters. The MGPCR can be accessed only in Supervisor + * mode with 32-bit accesses. + */ +typedef union _hw_axbs_mgpcr3 +{ + uint32_t U; + struct _hw_axbs_mgpcr3_bitfields + { + uint32_t AULB : 3; //!< [2:0] Arbitrates On Undefined Length Bursts + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_axbs_mgpcr3_t; +#endif + +/*! + * @name Constants and macros for entire AXBS_MGPCR3 register + */ +//@{ +#define HW_AXBS_MGPCR3_ADDR (REGS_AXBS_BASE + 0xB00U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AXBS_MGPCR3 (*(__IO hw_axbs_mgpcr3_t *) HW_AXBS_MGPCR3_ADDR) +#define HW_AXBS_MGPCR3_RD() (HW_AXBS_MGPCR3.U) +#define HW_AXBS_MGPCR3_WR(v) (HW_AXBS_MGPCR3.U = (v)) +#define HW_AXBS_MGPCR3_SET(v) (HW_AXBS_MGPCR3_WR(HW_AXBS_MGPCR3_RD() | (v))) +#define HW_AXBS_MGPCR3_CLR(v) (HW_AXBS_MGPCR3_WR(HW_AXBS_MGPCR3_RD() & ~(v))) +#define HW_AXBS_MGPCR3_TOG(v) (HW_AXBS_MGPCR3_WR(HW_AXBS_MGPCR3_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AXBS_MGPCR3 bitfields + */ + +/*! + * @name Register AXBS_MGPCR3, field AULB[2:0] (RW) + * + * Determines whether, and when, the crossbar switch arbitrates away the slave + * port the master owns when the master is performing undefined length burst + * accesses. + * + * Values: + * - 000 - No arbitration is allowed during an undefined length burst + * - 001 - Arbitration is allowed at any time during an undefined length burst + * - 010 - Arbitration is allowed after four beats of an undefined length burst + * - 011 - Arbitration is allowed after eight beats of an undefined length burst + * - 100 - Arbitration is allowed after 16 beats of an undefined length burst + * - 101 - Reserved + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_AXBS_MGPCR3_AULB (0U) //!< Bit position for AXBS_MGPCR3_AULB. +#define BM_AXBS_MGPCR3_AULB (0x00000007U) //!< Bit mask for AXBS_MGPCR3_AULB. +#define BS_AXBS_MGPCR3_AULB (3U) //!< Bit field size in bits for AXBS_MGPCR3_AULB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_MGPCR3_AULB field. +#define BR_AXBS_MGPCR3_AULB (HW_AXBS_MGPCR3.B.AULB) +#endif + +//! @brief Format value for bitfield AXBS_MGPCR3_AULB. +#define BF_AXBS_MGPCR3_AULB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_MGPCR3_AULB), uint32_t) & BM_AXBS_MGPCR3_AULB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AULB field to a new value. +#define BW_AXBS_MGPCR3_AULB(v) (HW_AXBS_MGPCR3_WR((HW_AXBS_MGPCR3_RD() & ~BM_AXBS_MGPCR3_AULB) | BF_AXBS_MGPCR3_AULB(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AXBS_MGPCR4 - Master General Purpose Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AXBS_MGPCR4 - Master General Purpose Control Register (RW) + * + * Reset value: 0x00000000U + * + * The MGPCR controls only whether the master's undefined length burst accesses + * are allowed to complete uninterrupted or whether they can be broken by + * requests from higher priority masters. The MGPCR can be accessed only in Supervisor + * mode with 32-bit accesses. + */ +typedef union _hw_axbs_mgpcr4 +{ + uint32_t U; + struct _hw_axbs_mgpcr4_bitfields + { + uint32_t AULB : 3; //!< [2:0] Arbitrates On Undefined Length Bursts + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_axbs_mgpcr4_t; +#endif + +/*! + * @name Constants and macros for entire AXBS_MGPCR4 register + */ +//@{ +#define HW_AXBS_MGPCR4_ADDR (REGS_AXBS_BASE + 0xC00U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AXBS_MGPCR4 (*(__IO hw_axbs_mgpcr4_t *) HW_AXBS_MGPCR4_ADDR) +#define HW_AXBS_MGPCR4_RD() (HW_AXBS_MGPCR4.U) +#define HW_AXBS_MGPCR4_WR(v) (HW_AXBS_MGPCR4.U = (v)) +#define HW_AXBS_MGPCR4_SET(v) (HW_AXBS_MGPCR4_WR(HW_AXBS_MGPCR4_RD() | (v))) +#define HW_AXBS_MGPCR4_CLR(v) (HW_AXBS_MGPCR4_WR(HW_AXBS_MGPCR4_RD() & ~(v))) +#define HW_AXBS_MGPCR4_TOG(v) (HW_AXBS_MGPCR4_WR(HW_AXBS_MGPCR4_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AXBS_MGPCR4 bitfields + */ + +/*! + * @name Register AXBS_MGPCR4, field AULB[2:0] (RW) + * + * Determines whether, and when, the crossbar switch arbitrates away the slave + * port the master owns when the master is performing undefined length burst + * accesses. + * + * Values: + * - 000 - No arbitration is allowed during an undefined length burst + * - 001 - Arbitration is allowed at any time during an undefined length burst + * - 010 - Arbitration is allowed after four beats of an undefined length burst + * - 011 - Arbitration is allowed after eight beats of an undefined length burst + * - 100 - Arbitration is allowed after 16 beats of an undefined length burst + * - 101 - Reserved + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_AXBS_MGPCR4_AULB (0U) //!< Bit position for AXBS_MGPCR4_AULB. +#define BM_AXBS_MGPCR4_AULB (0x00000007U) //!< Bit mask for AXBS_MGPCR4_AULB. +#define BS_AXBS_MGPCR4_AULB (3U) //!< Bit field size in bits for AXBS_MGPCR4_AULB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_MGPCR4_AULB field. +#define BR_AXBS_MGPCR4_AULB (HW_AXBS_MGPCR4.B.AULB) +#endif + +//! @brief Format value for bitfield AXBS_MGPCR4_AULB. +#define BF_AXBS_MGPCR4_AULB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_MGPCR4_AULB), uint32_t) & BM_AXBS_MGPCR4_AULB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AULB field to a new value. +#define BW_AXBS_MGPCR4_AULB(v) (HW_AXBS_MGPCR4_WR((HW_AXBS_MGPCR4_RD() & ~BM_AXBS_MGPCR4_AULB) | BF_AXBS_MGPCR4_AULB(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_AXBS_MGPCR5 - Master General Purpose Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_AXBS_MGPCR5 - Master General Purpose Control Register (RW) + * + * Reset value: 0x00000000U + * + * The MGPCR controls only whether the master's undefined length burst accesses + * are allowed to complete uninterrupted or whether they can be broken by + * requests from higher priority masters. The MGPCR can be accessed only in Supervisor + * mode with 32-bit accesses. + */ +typedef union _hw_axbs_mgpcr5 +{ + uint32_t U; + struct _hw_axbs_mgpcr5_bitfields + { + uint32_t AULB : 3; //!< [2:0] Arbitrates On Undefined Length Bursts + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_axbs_mgpcr5_t; +#endif + +/*! + * @name Constants and macros for entire AXBS_MGPCR5 register + */ +//@{ +#define HW_AXBS_MGPCR5_ADDR (REGS_AXBS_BASE + 0xD00U) + +#ifndef __LANGUAGE_ASM__ +#define HW_AXBS_MGPCR5 (*(__IO hw_axbs_mgpcr5_t *) HW_AXBS_MGPCR5_ADDR) +#define HW_AXBS_MGPCR5_RD() (HW_AXBS_MGPCR5.U) +#define HW_AXBS_MGPCR5_WR(v) (HW_AXBS_MGPCR5.U = (v)) +#define HW_AXBS_MGPCR5_SET(v) (HW_AXBS_MGPCR5_WR(HW_AXBS_MGPCR5_RD() | (v))) +#define HW_AXBS_MGPCR5_CLR(v) (HW_AXBS_MGPCR5_WR(HW_AXBS_MGPCR5_RD() & ~(v))) +#define HW_AXBS_MGPCR5_TOG(v) (HW_AXBS_MGPCR5_WR(HW_AXBS_MGPCR5_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual AXBS_MGPCR5 bitfields + */ + +/*! + * @name Register AXBS_MGPCR5, field AULB[2:0] (RW) + * + * Determines whether, and when, the crossbar switch arbitrates away the slave + * port the master owns when the master is performing undefined length burst + * accesses. + * + * Values: + * - 000 - No arbitration is allowed during an undefined length burst + * - 001 - Arbitration is allowed at any time during an undefined length burst + * - 010 - Arbitration is allowed after four beats of an undefined length burst + * - 011 - Arbitration is allowed after eight beats of an undefined length burst + * - 100 - Arbitration is allowed after 16 beats of an undefined length burst + * - 101 - Reserved + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_AXBS_MGPCR5_AULB (0U) //!< Bit position for AXBS_MGPCR5_AULB. +#define BM_AXBS_MGPCR5_AULB (0x00000007U) //!< Bit mask for AXBS_MGPCR5_AULB. +#define BS_AXBS_MGPCR5_AULB (3U) //!< Bit field size in bits for AXBS_MGPCR5_AULB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the AXBS_MGPCR5_AULB field. +#define BR_AXBS_MGPCR5_AULB (HW_AXBS_MGPCR5.B.AULB) +#endif + +//! @brief Format value for bitfield AXBS_MGPCR5_AULB. +#define BF_AXBS_MGPCR5_AULB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_AXBS_MGPCR5_AULB), uint32_t) & BM_AXBS_MGPCR5_AULB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AULB field to a new value. +#define BW_AXBS_MGPCR5_AULB(v) (HW_AXBS_MGPCR5_WR((HW_AXBS_MGPCR5_RD() & ~BM_AXBS_MGPCR5_AULB) | BF_AXBS_MGPCR5_AULB(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_axbs_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All AXBS module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_axbs +{ + struct { + __IO hw_axbs_prsn_t PRSn; //!< [0x0] Priority Registers Slave + uint8_t _reserved0[12]; + __IO hw_axbs_crsn_t CRSn; //!< [0x10] Control Register + uint8_t _reserved1[236]; + } SLAVE[5]; + uint8_t _reserved0[768]; + __IO hw_axbs_mgpcr0_t MGPCR0; //!< [0x800] Master General Purpose Control Register + uint8_t _reserved1[252]; + __IO hw_axbs_mgpcr1_t MGPCR1; //!< [0x900] Master General Purpose Control Register + uint8_t _reserved2[252]; + __IO hw_axbs_mgpcr2_t MGPCR2; //!< [0xA00] Master General Purpose Control Register + uint8_t _reserved3[252]; + __IO hw_axbs_mgpcr3_t MGPCR3; //!< [0xB00] Master General Purpose Control Register + uint8_t _reserved4[252]; + __IO hw_axbs_mgpcr4_t MGPCR4; //!< [0xC00] Master General Purpose Control Register + uint8_t _reserved5[252]; + __IO hw_axbs_mgpcr5_t MGPCR5; //!< [0xD00] Master General Purpose Control Register +} hw_axbs_t; +#pragma pack() + +//! @brief Macro to access all AXBS registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_AXBS</code>. +#define HW_AXBS (*(hw_axbs_t *) REGS_AXBS_BASE) +#endif + +#endif // __HW_AXBS_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_can.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,3963 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_CAN_REGISTERS_H__ +#define __HW_CAN_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 CAN + * + * Flex Controller Area Network module + * + * Registers defined in this header file: + * - HW_CAN_MCR - Module Configuration Register + * - HW_CAN_CTRL1 - Control 1 register + * - HW_CAN_TIMER - Free Running Timer + * - HW_CAN_RXMGMASK - Rx Mailboxes Global Mask Register + * - HW_CAN_RX14MASK - Rx 14 Mask register + * - HW_CAN_RX15MASK - Rx 15 Mask register + * - HW_CAN_ECR - Error Counter + * - HW_CAN_ESR1 - Error and Status 1 register + * - HW_CAN_IMASK1 - Interrupt Masks 1 register + * - HW_CAN_IFLAG1 - Interrupt Flags 1 register + * - HW_CAN_CTRL2 - Control 2 register + * - HW_CAN_ESR2 - Error and Status 2 register + * - HW_CAN_CRCR - CRC Register + * - HW_CAN_RXFGMASK - Rx FIFO Global Mask register + * - HW_CAN_RXFIR - Rx FIFO Information Register + * - HW_CAN_CS - Message Buffer 0 CS Register + * - HW_CAN_ID - Message Buffer 0 ID Register + * - HW_CAN_WORD0 - Message Buffer 0 WORD0 Register + * - HW_CAN_WORD1 - Message Buffer 0 WORD1 Register + * - HW_CAN_RXIMRn - Rx Individual Mask Registers + * + * - hw_can_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_CAN_BASE +#define HW_CAN_INSTANCE_COUNT (1U) //!< Number of instances of the CAN module. +#define HW_CAN0 (0U) //!< Instance number for CAN0. +#define REGS_CAN0_BASE (0x40024000U) //!< Base address for CAN0. + +//! @brief Table of base addresses for CAN instances. +static const uint32_t __g_regs_CAN_base_addresses[] = { + REGS_CAN0_BASE, + }; + +//! @brief Get the base address of CAN by instance number. +//! @param x CAN instance number, from 0 through 0. +#define REGS_CAN_BASE(x) (__g_regs_CAN_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of CAN. +#define REGS_CAN_INSTANCE(b) ((b) == REGS_CAN0_BASE ? HW_CAN0 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_MCR - Module Configuration Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_MCR - Module Configuration Register (RW) + * + * Reset value: 0xD890000FU + * + * This register defines global system configurations, such as the module + * operation modes and the maximum message buffer configuration. + */ +typedef union _hw_can_mcr +{ + uint32_t U; + struct _hw_can_mcr_bitfields + { + uint32_t MAXMB : 7; //!< [6:0] Number Of The Last Message Buffer + uint32_t RESERVED0 : 1; //!< [7] + uint32_t IDAM : 2; //!< [9:8] ID Acceptance Mode + uint32_t RESERVED1 : 2; //!< [11:10] + uint32_t AEN : 1; //!< [12] Abort Enable + uint32_t LPRIOEN : 1; //!< [13] Local Priority Enable + uint32_t RESERVED2 : 2; //!< [15:14] + uint32_t IRMQ : 1; //!< [16] Individual Rx Masking And Queue Enable + uint32_t SRXDIS : 1; //!< [17] Self Reception Disable + uint32_t RESERVED3 : 1; //!< [18] + uint32_t WAKSRC : 1; //!< [19] Wake Up Source + uint32_t LPMACK : 1; //!< [20] Low-Power Mode Acknowledge + uint32_t WRNEN : 1; //!< [21] Warning Interrupt Enable + uint32_t SLFWAK : 1; //!< [22] Self Wake Up + uint32_t SUPV : 1; //!< [23] Supervisor Mode + uint32_t FRZACK : 1; //!< [24] Freeze Mode Acknowledge + uint32_t SOFTRST : 1; //!< [25] Soft Reset + uint32_t WAKMSK : 1; //!< [26] Wake Up Interrupt Mask + uint32_t NOTRDY : 1; //!< [27] FlexCAN Not Ready + uint32_t HALT : 1; //!< [28] Halt FlexCAN + uint32_t RFEN : 1; //!< [29] Rx FIFO Enable + uint32_t FRZ : 1; //!< [30] Freeze Enable + uint32_t MDIS : 1; //!< [31] Module Disable + } B; +} hw_can_mcr_t; +#endif + +/*! + * @name Constants and macros for entire CAN_MCR register + */ +//@{ +#define HW_CAN_MCR_ADDR(x) (REGS_CAN_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_MCR(x) (*(__IO hw_can_mcr_t *) HW_CAN_MCR_ADDR(x)) +#define HW_CAN_MCR_RD(x) (HW_CAN_MCR(x).U) +#define HW_CAN_MCR_WR(x, v) (HW_CAN_MCR(x).U = (v)) +#define HW_CAN_MCR_SET(x, v) (HW_CAN_MCR_WR(x, HW_CAN_MCR_RD(x) | (v))) +#define HW_CAN_MCR_CLR(x, v) (HW_CAN_MCR_WR(x, HW_CAN_MCR_RD(x) & ~(v))) +#define HW_CAN_MCR_TOG(x, v) (HW_CAN_MCR_WR(x, HW_CAN_MCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_MCR bitfields + */ + +/*! + * @name Register CAN_MCR, field MAXMB[6:0] (RW) + * + * This 7-bit field defines the number of the last Message Buffers that will + * take part in the matching and arbitration processes. The reset value (0x0F) is + * equivalent to a 16 MB configuration. This field can be written only in Freeze + * mode because it is blocked by hardware in other modes. Number of the last MB = + * MAXMB MAXMB must be programmed with a value smaller than the parameter + * NUMBER_OF_MB, otherwise the number of the last effective Message Buffer will be: + * (NUMBER_OF_MB - 1) Additionally, the value of MAXMB must encompass the FIFO size + * defined by CTRL2[RFFN]. MAXMB also impacts the definition of the minimum number + * of peripheral clocks per CAN bit as described in Table "Minimum Ratio Between + * Peripheral Clock Frequency and CAN Bit Rate" (in Section "Arbitration and + * Matching Timing"). + */ +//@{ +#define BP_CAN_MCR_MAXMB (0U) //!< Bit position for CAN_MCR_MAXMB. +#define BM_CAN_MCR_MAXMB (0x0000007FU) //!< Bit mask for CAN_MCR_MAXMB. +#define BS_CAN_MCR_MAXMB (7U) //!< Bit field size in bits for CAN_MCR_MAXMB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_MAXMB field. +#define BR_CAN_MCR_MAXMB(x) (HW_CAN_MCR(x).B.MAXMB) +#endif + +//! @brief Format value for bitfield CAN_MCR_MAXMB. +#define BF_CAN_MCR_MAXMB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_MAXMB), uint32_t) & BM_CAN_MCR_MAXMB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MAXMB field to a new value. +#define BW_CAN_MCR_MAXMB(x, v) (HW_CAN_MCR_WR(x, (HW_CAN_MCR_RD(x) & ~BM_CAN_MCR_MAXMB) | BF_CAN_MCR_MAXMB(v))) +#endif +//@} + +/*! + * @name Register CAN_MCR, field IDAM[9:8] (RW) + * + * This 2-bit field identifies the format of the Rx FIFO ID Filter Table + * elements. Note that all elements of the table are configured at the same time by this + * field (they are all the same format). See Section "Rx FIFO Structure". This + * field can be written only in Freeze mode because it is blocked by hardware in + * other modes. + * + * Values: + * - 00 - Format A: One full ID (standard and extended) per ID Filter Table + * element. + * - 01 - Format B: Two full standard IDs or two partial 14-bit (standard and + * extended) IDs per ID Filter Table element. + * - 10 - Format C: Four partial 8-bit Standard IDs per ID Filter Table element. + * - 11 - Format D: All frames rejected. + */ +//@{ +#define BP_CAN_MCR_IDAM (8U) //!< Bit position for CAN_MCR_IDAM. +#define BM_CAN_MCR_IDAM (0x00000300U) //!< Bit mask for CAN_MCR_IDAM. +#define BS_CAN_MCR_IDAM (2U) //!< Bit field size in bits for CAN_MCR_IDAM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_IDAM field. +#define BR_CAN_MCR_IDAM(x) (HW_CAN_MCR(x).B.IDAM) +#endif + +//! @brief Format value for bitfield CAN_MCR_IDAM. +#define BF_CAN_MCR_IDAM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_IDAM), uint32_t) & BM_CAN_MCR_IDAM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IDAM field to a new value. +#define BW_CAN_MCR_IDAM(x, v) (HW_CAN_MCR_WR(x, (HW_CAN_MCR_RD(x) & ~BM_CAN_MCR_IDAM) | BF_CAN_MCR_IDAM(v))) +#endif +//@} + +/*! + * @name Register CAN_MCR, field AEN[12] (RW) + * + * This bit is supplied for backwards compatibility with legacy applications. + * When asserted, it enables the Tx abort mechanism. This mechanism guarantees a + * safe procedure for aborting a pending transmission, so that no frame is sent in + * the CAN bus without notification. This bit can be written only in Freeze mode + * because it is blocked by hardware in other modes. When MCR[AEN] is asserted, + * only the abort mechanism (see Section "Transmission Abort Mechanism") must be + * used for updating Mailboxes configured for transmission. Writing the Abort code + * into Rx Mailboxes can cause unpredictable results when the MCR[AEN] is + * asserted. + * + * Values: + * - 0 - Abort disabled. + * - 1 - Abort enabled. + */ +//@{ +#define BP_CAN_MCR_AEN (12U) //!< Bit position for CAN_MCR_AEN. +#define BM_CAN_MCR_AEN (0x00001000U) //!< Bit mask for CAN_MCR_AEN. +#define BS_CAN_MCR_AEN (1U) //!< Bit field size in bits for CAN_MCR_AEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_AEN field. +#define BR_CAN_MCR_AEN(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_AEN)) +#endif + +//! @brief Format value for bitfield CAN_MCR_AEN. +#define BF_CAN_MCR_AEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_AEN), uint32_t) & BM_CAN_MCR_AEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AEN field to a new value. +#define BW_CAN_MCR_AEN(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_AEN) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field LPRIOEN[13] (RW) + * + * This bit is provided for backwards compatibility with legacy applications. It + * controls whether the local priority feature is enabled or not. It is used to + * expand the ID used during the arbitration process. With this expanded ID + * concept, the arbitration process is done based on the full 32-bit word, but the + * actual transmitted ID still has 11-bit for standard frames and 29-bit for + * extended frames. This bit can be written only in Freeze mode because it is blocked by + * hardware in other modes. + * + * Values: + * - 0 - Local Priority disabled. + * - 1 - Local Priority enabled. + */ +//@{ +#define BP_CAN_MCR_LPRIOEN (13U) //!< Bit position for CAN_MCR_LPRIOEN. +#define BM_CAN_MCR_LPRIOEN (0x00002000U) //!< Bit mask for CAN_MCR_LPRIOEN. +#define BS_CAN_MCR_LPRIOEN (1U) //!< Bit field size in bits for CAN_MCR_LPRIOEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_LPRIOEN field. +#define BR_CAN_MCR_LPRIOEN(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_LPRIOEN)) +#endif + +//! @brief Format value for bitfield CAN_MCR_LPRIOEN. +#define BF_CAN_MCR_LPRIOEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_LPRIOEN), uint32_t) & BM_CAN_MCR_LPRIOEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LPRIOEN field to a new value. +#define BW_CAN_MCR_LPRIOEN(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_LPRIOEN) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field IRMQ[16] (RW) + * + * This bit indicates whether Rx matching process will be based either on + * individual masking and queue or on masking scheme with RXMGMASK, RX14MASK and + * RX15MASK, RXFGMASK. This bit can be written only in Freeze mode because it is + * blocked by hardware in other modes. + * + * Values: + * - 0 - Individual Rx masking and queue feature are disabled. For backward + * compatibility with legacy applications, the reading of C/S word locks the MB + * even if it is EMPTY. + * - 1 - Individual Rx masking and queue feature are enabled. + */ +//@{ +#define BP_CAN_MCR_IRMQ (16U) //!< Bit position for CAN_MCR_IRMQ. +#define BM_CAN_MCR_IRMQ (0x00010000U) //!< Bit mask for CAN_MCR_IRMQ. +#define BS_CAN_MCR_IRMQ (1U) //!< Bit field size in bits for CAN_MCR_IRMQ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_IRMQ field. +#define BR_CAN_MCR_IRMQ(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_IRMQ)) +#endif + +//! @brief Format value for bitfield CAN_MCR_IRMQ. +#define BF_CAN_MCR_IRMQ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_IRMQ), uint32_t) & BM_CAN_MCR_IRMQ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IRMQ field to a new value. +#define BW_CAN_MCR_IRMQ(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_IRMQ) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field SRXDIS[17] (RW) + * + * This bit defines whether FlexCAN is allowed to receive frames transmitted by + * itself. If this bit is asserted, frames transmitted by the module will not be + * stored in any MB, regardless if the MB is programmed with an ID that matches + * the transmitted frame, and no interrupt flag or interrupt signal will be + * generated due to the frame reception. This bit can be written only in Freeze mode + * because it is blocked by hardware in other modes. + * + * Values: + * - 0 - Self reception enabled. + * - 1 - Self reception disabled. + */ +//@{ +#define BP_CAN_MCR_SRXDIS (17U) //!< Bit position for CAN_MCR_SRXDIS. +#define BM_CAN_MCR_SRXDIS (0x00020000U) //!< Bit mask for CAN_MCR_SRXDIS. +#define BS_CAN_MCR_SRXDIS (1U) //!< Bit field size in bits for CAN_MCR_SRXDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_SRXDIS field. +#define BR_CAN_MCR_SRXDIS(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_SRXDIS)) +#endif + +//! @brief Format value for bitfield CAN_MCR_SRXDIS. +#define BF_CAN_MCR_SRXDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_SRXDIS), uint32_t) & BM_CAN_MCR_SRXDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRXDIS field to a new value. +#define BW_CAN_MCR_SRXDIS(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_SRXDIS) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field WAKSRC[19] (RW) + * + * This bit defines whether the integrated low-pass filter is applied to protect + * the Rx CAN input from spurious wake up. This bit can be written only in + * Freeze mode because it is blocked by hardware in other modes. + * + * Values: + * - 0 - FlexCAN uses the unfiltered Rx input to detect recessive to dominant + * edges on the CAN bus. + * - 1 - FlexCAN uses the filtered Rx input to detect recessive to dominant + * edges on the CAN bus. + */ +//@{ +#define BP_CAN_MCR_WAKSRC (19U) //!< Bit position for CAN_MCR_WAKSRC. +#define BM_CAN_MCR_WAKSRC (0x00080000U) //!< Bit mask for CAN_MCR_WAKSRC. +#define BS_CAN_MCR_WAKSRC (1U) //!< Bit field size in bits for CAN_MCR_WAKSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_WAKSRC field. +#define BR_CAN_MCR_WAKSRC(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_WAKSRC)) +#endif + +//! @brief Format value for bitfield CAN_MCR_WAKSRC. +#define BF_CAN_MCR_WAKSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_WAKSRC), uint32_t) & BM_CAN_MCR_WAKSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WAKSRC field to a new value. +#define BW_CAN_MCR_WAKSRC(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_WAKSRC) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field LPMACK[20] (RO) + * + * This read-only bit indicates that FlexCAN is in a low-power mode (Disable + * mode , Stop mode ). A low-power mode cannot be entered until all current + * transmission or reception processes have finished, so the CPU can poll the LPMACK bit + * to know when FlexCAN has actually entered low power mode. LPMACK will be + * asserted within 180 CAN bits from the low-power mode request by the CPU, and + * negated within 2 CAN bits after the low-power mode request removal (see Section + * "Protocol Timing"). + * + * Values: + * - 0 - FlexCAN is not in a low-power mode. + * - 1 - FlexCAN is in a low-power mode. + */ +//@{ +#define BP_CAN_MCR_LPMACK (20U) //!< Bit position for CAN_MCR_LPMACK. +#define BM_CAN_MCR_LPMACK (0x00100000U) //!< Bit mask for CAN_MCR_LPMACK. +#define BS_CAN_MCR_LPMACK (1U) //!< Bit field size in bits for CAN_MCR_LPMACK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_LPMACK field. +#define BR_CAN_MCR_LPMACK(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_LPMACK)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field WRNEN[21] (RW) + * + * When asserted, this bit enables the generation of the TWRNINT and RWRNINT + * flags in the Error and Status Register. If WRNEN is negated, the TWRNINT and + * RWRNINT flags will always be zero, independent of the values of the error + * counters, and no warning interrupt will ever be generated. This bit can be written + * only in Freeze mode because it is blocked by hardware in other modes. + * + * Values: + * - 0 - TWRNINT and RWRNINT bits are zero, independent of the values in the + * error counters. + * - 1 - TWRNINT and RWRNINT bits are set when the respective error counter + * transitions from less than 96 to greater than or equal to 96. + */ +//@{ +#define BP_CAN_MCR_WRNEN (21U) //!< Bit position for CAN_MCR_WRNEN. +#define BM_CAN_MCR_WRNEN (0x00200000U) //!< Bit mask for CAN_MCR_WRNEN. +#define BS_CAN_MCR_WRNEN (1U) //!< Bit field size in bits for CAN_MCR_WRNEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_WRNEN field. +#define BR_CAN_MCR_WRNEN(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_WRNEN)) +#endif + +//! @brief Format value for bitfield CAN_MCR_WRNEN. +#define BF_CAN_MCR_WRNEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_WRNEN), uint32_t) & BM_CAN_MCR_WRNEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WRNEN field to a new value. +#define BW_CAN_MCR_WRNEN(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_WRNEN) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field SLFWAK[22] (RW) + * + * This bit enables the Self Wake Up feature when FlexCAN is in a low-power mode + * other than Disable mode. When this feature is enabled, the FlexCAN module + * monitors the bus for wake up event, that is, a recessive-to-dominant transition. + * If a wake up event is detected during Stop mode, then FlexCAN generates, if + * enabled to do so, a Wake Up interrupt to the CPU so that it can exit Stop mode + * globally and FlexCAN can request to resume the clocks. When FlexCAN is in a + * low-power mode other than Disable mode, this bit cannot be written as it is + * blocked by hardware. + * + * Values: + * - 0 - FlexCAN Self Wake Up feature is disabled. + * - 1 - FlexCAN Self Wake Up feature is enabled. + */ +//@{ +#define BP_CAN_MCR_SLFWAK (22U) //!< Bit position for CAN_MCR_SLFWAK. +#define BM_CAN_MCR_SLFWAK (0x00400000U) //!< Bit mask for CAN_MCR_SLFWAK. +#define BS_CAN_MCR_SLFWAK (1U) //!< Bit field size in bits for CAN_MCR_SLFWAK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_SLFWAK field. +#define BR_CAN_MCR_SLFWAK(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_SLFWAK)) +#endif + +//! @brief Format value for bitfield CAN_MCR_SLFWAK. +#define BF_CAN_MCR_SLFWAK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_SLFWAK), uint32_t) & BM_CAN_MCR_SLFWAK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SLFWAK field to a new value. +#define BW_CAN_MCR_SLFWAK(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_SLFWAK) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field SUPV[23] (RW) + * + * This bit configures the FlexCAN to be either in Supervisor or User mode. The + * registers affected by this bit are marked as S/U in the Access Type column of + * the module memory map. Reset value of this bit is 1, so the affected registers + * start with Supervisor access allowance only . This bit can be written only in + * Freeze mode because it is blocked by hardware in other modes. + * + * Values: + * - 0 - FlexCAN is in User mode. Affected registers allow both Supervisor and + * Unrestricted accesses . + * - 1 - FlexCAN is in Supervisor mode. Affected registers allow only Supervisor + * access. Unrestricted access behaves as though the access was done to an + * unimplemented register location . + */ +//@{ +#define BP_CAN_MCR_SUPV (23U) //!< Bit position for CAN_MCR_SUPV. +#define BM_CAN_MCR_SUPV (0x00800000U) //!< Bit mask for CAN_MCR_SUPV. +#define BS_CAN_MCR_SUPV (1U) //!< Bit field size in bits for CAN_MCR_SUPV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_SUPV field. +#define BR_CAN_MCR_SUPV(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_SUPV)) +#endif + +//! @brief Format value for bitfield CAN_MCR_SUPV. +#define BF_CAN_MCR_SUPV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_SUPV), uint32_t) & BM_CAN_MCR_SUPV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SUPV field to a new value. +#define BW_CAN_MCR_SUPV(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_SUPV) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field FRZACK[24] (RO) + * + * This read-only bit indicates that FlexCAN is in Freeze mode and its prescaler + * is stopped. The Freeze mode request cannot be granted until current + * transmission or reception processes have finished. Therefore the software can poll the + * FRZACK bit to know when FlexCAN has actually entered Freeze mode. If Freeze + * Mode request is negated, then this bit is negated after the FlexCAN prescaler is + * running again. If Freeze mode is requested while FlexCAN is in a low power + * mode, then the FRZACK bit will be set only when the low-power mode is exited. + * See Section "Freeze Mode". FRZACK will be asserted within 178 CAN bits from the + * freeze mode request by the CPU, and negated within 2 CAN bits after the freeze + * mode request removal (see Section "Protocol Timing"). + * + * Values: + * - 0 - FlexCAN not in Freeze mode, prescaler running. + * - 1 - FlexCAN in Freeze mode, prescaler stopped. + */ +//@{ +#define BP_CAN_MCR_FRZACK (24U) //!< Bit position for CAN_MCR_FRZACK. +#define BM_CAN_MCR_FRZACK (0x01000000U) //!< Bit mask for CAN_MCR_FRZACK. +#define BS_CAN_MCR_FRZACK (1U) //!< Bit field size in bits for CAN_MCR_FRZACK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_FRZACK field. +#define BR_CAN_MCR_FRZACK(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_FRZACK)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field SOFTRST[25] (RW) + * + * When this bit is asserted, FlexCAN resets its internal state machines and + * some of the memory mapped registers. The following registers are reset: MCR + * (except the MDIS bit), TIMER , ECR, ESR1, ESR2, IMASK1, IMASK2, IFLAG1, IFLAG2 and + * CRCR. Configuration registers that control the interface to the CAN bus are + * not affected by soft reset. The following registers are unaffected: CTRL1, + * CTRL2, all RXIMR registers, RXMGMASK, RX14MASK, RX15MASK, RXFGMASK, RXFIR, all + * Message Buffers . The SOFTRST bit can be asserted directly by the CPU when it + * writes to the MCR Register, but it is also asserted when global soft reset is + * requested at MCU level . Because soft reset is synchronous and has to follow a + * request/acknowledge procedure across clock domains, it may take some time to + * fully propagate its effect. The SOFTRST bit remains asserted while reset is + * pending, and is automatically negated when reset completes. Therefore, software can + * poll this bit to know when the soft reset has completed. Soft reset cannot be + * applied while clocks are shut down in a low power mode. The module should be + * first removed from low power mode, and then soft reset can be applied. + * + * Values: + * - 0 - No reset request. + * - 1 - Resets the registers affected by soft reset. + */ +//@{ +#define BP_CAN_MCR_SOFTRST (25U) //!< Bit position for CAN_MCR_SOFTRST. +#define BM_CAN_MCR_SOFTRST (0x02000000U) //!< Bit mask for CAN_MCR_SOFTRST. +#define BS_CAN_MCR_SOFTRST (1U) //!< Bit field size in bits for CAN_MCR_SOFTRST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_SOFTRST field. +#define BR_CAN_MCR_SOFTRST(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_SOFTRST)) +#endif + +//! @brief Format value for bitfield CAN_MCR_SOFTRST. +#define BF_CAN_MCR_SOFTRST(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_SOFTRST), uint32_t) & BM_CAN_MCR_SOFTRST) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SOFTRST field to a new value. +#define BW_CAN_MCR_SOFTRST(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_SOFTRST) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field WAKMSK[26] (RW) + * + * This bit enables the Wake Up Interrupt generation under Self Wake Up + * mechanism. + * + * Values: + * - 0 - Wake Up Interrupt is disabled. + * - 1 - Wake Up Interrupt is enabled. + */ +//@{ +#define BP_CAN_MCR_WAKMSK (26U) //!< Bit position for CAN_MCR_WAKMSK. +#define BM_CAN_MCR_WAKMSK (0x04000000U) //!< Bit mask for CAN_MCR_WAKMSK. +#define BS_CAN_MCR_WAKMSK (1U) //!< Bit field size in bits for CAN_MCR_WAKMSK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_WAKMSK field. +#define BR_CAN_MCR_WAKMSK(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_WAKMSK)) +#endif + +//! @brief Format value for bitfield CAN_MCR_WAKMSK. +#define BF_CAN_MCR_WAKMSK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_WAKMSK), uint32_t) & BM_CAN_MCR_WAKMSK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WAKMSK field to a new value. +#define BW_CAN_MCR_WAKMSK(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_WAKMSK) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field NOTRDY[27] (RO) + * + * This read-only bit indicates that FlexCAN is either in Disable mode , Stop + * mode or Freeze mode. It is negated once FlexCAN has exited these modes. + * + * Values: + * - 0 - FlexCAN module is either in Normal mode, Listen-Only mode or Loop-Back + * mode. + * - 1 - FlexCAN module is either in Disable mode , Stop mode or Freeze mode. + */ +//@{ +#define BP_CAN_MCR_NOTRDY (27U) //!< Bit position for CAN_MCR_NOTRDY. +#define BM_CAN_MCR_NOTRDY (0x08000000U) //!< Bit mask for CAN_MCR_NOTRDY. +#define BS_CAN_MCR_NOTRDY (1U) //!< Bit field size in bits for CAN_MCR_NOTRDY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_NOTRDY field. +#define BR_CAN_MCR_NOTRDY(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_NOTRDY)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field HALT[28] (RW) + * + * Assertion of this bit puts the FlexCAN module into Freeze mode. The CPU + * should clear it after initializing the Message Buffers and Control Register. No + * reception or transmission is performed by FlexCAN before this bit is cleared. + * Freeze mode cannot be entered while FlexCAN is in a low power mode. + * + * Values: + * - 0 - No Freeze mode request. + * - 1 - Enters Freeze mode if the FRZ bit is asserted. + */ +//@{ +#define BP_CAN_MCR_HALT (28U) //!< Bit position for CAN_MCR_HALT. +#define BM_CAN_MCR_HALT (0x10000000U) //!< Bit mask for CAN_MCR_HALT. +#define BS_CAN_MCR_HALT (1U) //!< Bit field size in bits for CAN_MCR_HALT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_HALT field. +#define BR_CAN_MCR_HALT(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_HALT)) +#endif + +//! @brief Format value for bitfield CAN_MCR_HALT. +#define BF_CAN_MCR_HALT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_HALT), uint32_t) & BM_CAN_MCR_HALT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HALT field to a new value. +#define BW_CAN_MCR_HALT(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_HALT) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field RFEN[29] (RW) + * + * This bit controls whether the Rx FIFO feature is enabled or not. When RFEN is + * set, MBs 0 to 5 cannot be used for normal reception and transmission because + * the corresponding memory region (0x80-0xDC) is used by the FIFO engine as well + * as additional MBs (up to 32, depending on CTRL2[RFFN] setting) which are used + * as Rx FIFO ID Filter Table elements. RFEN also impacts the definition of the + * minimum number of peripheral clocks per CAN bit as described in the table + * "Minimum Ratio Between Peripheral Clock Frequency and CAN Bit Rate" (in section + * "Arbitration and Matching Timing"). This bit can be written only in Freeze mode + * because it is blocked by hardware in other modes. + * + * Values: + * - 0 - Rx FIFO not enabled. + * - 1 - Rx FIFO enabled. + */ +//@{ +#define BP_CAN_MCR_RFEN (29U) //!< Bit position for CAN_MCR_RFEN. +#define BM_CAN_MCR_RFEN (0x20000000U) //!< Bit mask for CAN_MCR_RFEN. +#define BS_CAN_MCR_RFEN (1U) //!< Bit field size in bits for CAN_MCR_RFEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_RFEN field. +#define BR_CAN_MCR_RFEN(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_RFEN)) +#endif + +//! @brief Format value for bitfield CAN_MCR_RFEN. +#define BF_CAN_MCR_RFEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_RFEN), uint32_t) & BM_CAN_MCR_RFEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RFEN field to a new value. +#define BW_CAN_MCR_RFEN(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_RFEN) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field FRZ[30] (RW) + * + * The FRZ bit specifies the FlexCAN behavior when the HALT bit in the MCR + * Register is set or when Debug mode is requested at MCU level . When FRZ is + * asserted, FlexCAN is enabled to enter Freeze mode. Negation of this bit field causes + * FlexCAN to exit from Freeze mode. + * + * Values: + * - 0 - Not enabled to enter Freeze mode. + * - 1 - Enabled to enter Freeze mode. + */ +//@{ +#define BP_CAN_MCR_FRZ (30U) //!< Bit position for CAN_MCR_FRZ. +#define BM_CAN_MCR_FRZ (0x40000000U) //!< Bit mask for CAN_MCR_FRZ. +#define BS_CAN_MCR_FRZ (1U) //!< Bit field size in bits for CAN_MCR_FRZ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_FRZ field. +#define BR_CAN_MCR_FRZ(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_FRZ)) +#endif + +//! @brief Format value for bitfield CAN_MCR_FRZ. +#define BF_CAN_MCR_FRZ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_FRZ), uint32_t) & BM_CAN_MCR_FRZ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRZ field to a new value. +#define BW_CAN_MCR_FRZ(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_FRZ) = (v)) +#endif +//@} + +/*! + * @name Register CAN_MCR, field MDIS[31] (RW) + * + * This bit controls whether FlexCAN is enabled or not. When disabled, FlexCAN + * disables the clocks to the CAN Protocol Engine and Controller Host Interface + * sub-modules. This is the only bit within this register not affected by soft + * reset. + * + * Values: + * - 0 - Enable the FlexCAN module. + * - 1 - Disable the FlexCAN module. + */ +//@{ +#define BP_CAN_MCR_MDIS (31U) //!< Bit position for CAN_MCR_MDIS. +#define BM_CAN_MCR_MDIS (0x80000000U) //!< Bit mask for CAN_MCR_MDIS. +#define BS_CAN_MCR_MDIS (1U) //!< Bit field size in bits for CAN_MCR_MDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_MCR_MDIS field. +#define BR_CAN_MCR_MDIS(x) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_MDIS)) +#endif + +//! @brief Format value for bitfield CAN_MCR_MDIS. +#define BF_CAN_MCR_MDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_MCR_MDIS), uint32_t) & BM_CAN_MCR_MDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MDIS field to a new value. +#define BW_CAN_MCR_MDIS(x, v) (BITBAND_ACCESS32(HW_CAN_MCR_ADDR(x), BP_CAN_MCR_MDIS) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_CTRL1 - Control 1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_CTRL1 - Control 1 register (RW) + * + * Reset value: 0x00000000U + * + * This register is defined for specific FlexCAN control features related to the + * CAN bus, such as bit-rate, programmable sampling point within an Rx bit, Loop + * Back mode, Listen-Only mode, Bus Off recovery behavior and interrupt enabling + * (Bus-Off, Error, Warning). It also determines the Division Factor for the + * clock prescaler. + */ +typedef union _hw_can_ctrl1 +{ + uint32_t U; + struct _hw_can_ctrl1_bitfields + { + uint32_t PROPSEG : 3; //!< [2:0] Propagation Segment + uint32_t LOM : 1; //!< [3] Listen-Only Mode + uint32_t LBUF : 1; //!< [4] Lowest Buffer Transmitted First + uint32_t TSYN : 1; //!< [5] Timer Sync + uint32_t BOFFREC : 1; //!< [6] Bus Off Recovery + uint32_t SMP : 1; //!< [7] CAN Bit Sampling + uint32_t RESERVED0 : 2; //!< [9:8] + uint32_t RWRNMSK : 1; //!< [10] Rx Warning Interrupt Mask + uint32_t TWRNMSK : 1; //!< [11] Tx Warning Interrupt Mask + uint32_t LPB : 1; //!< [12] Loop Back Mode + uint32_t CLKSRC : 1; //!< [13] CAN Engine Clock Source + uint32_t ERRMSK : 1; //!< [14] Error Mask + uint32_t BOFFMSK : 1; //!< [15] Bus Off Mask + uint32_t PSEG2 : 3; //!< [18:16] Phase Segment 2 + uint32_t PSEG1 : 3; //!< [21:19] Phase Segment 1 + uint32_t RJW : 2; //!< [23:22] Resync Jump Width + uint32_t PRESDIV : 8; //!< [31:24] Prescaler Division Factor + } B; +} hw_can_ctrl1_t; +#endif + +/*! + * @name Constants and macros for entire CAN_CTRL1 register + */ +//@{ +#define HW_CAN_CTRL1_ADDR(x) (REGS_CAN_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_CTRL1(x) (*(__IO hw_can_ctrl1_t *) HW_CAN_CTRL1_ADDR(x)) +#define HW_CAN_CTRL1_RD(x) (HW_CAN_CTRL1(x).U) +#define HW_CAN_CTRL1_WR(x, v) (HW_CAN_CTRL1(x).U = (v)) +#define HW_CAN_CTRL1_SET(x, v) (HW_CAN_CTRL1_WR(x, HW_CAN_CTRL1_RD(x) | (v))) +#define HW_CAN_CTRL1_CLR(x, v) (HW_CAN_CTRL1_WR(x, HW_CAN_CTRL1_RD(x) & ~(v))) +#define HW_CAN_CTRL1_TOG(x, v) (HW_CAN_CTRL1_WR(x, HW_CAN_CTRL1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_CTRL1 bitfields + */ + +/*! + * @name Register CAN_CTRL1, field PROPSEG[2:0] (RW) + * + * This 3-bit field defines the length of the Propagation Segment in the bit + * time. The valid programmable values are 0-7. This field can be written only in + * Freeze mode because it is blocked by hardware in other modes. Propagation + * Segment Time = (PROPSEG + 1) * Time-Quanta. Time-Quantum = one Sclock period. + */ +//@{ +#define BP_CAN_CTRL1_PROPSEG (0U) //!< Bit position for CAN_CTRL1_PROPSEG. +#define BM_CAN_CTRL1_PROPSEG (0x00000007U) //!< Bit mask for CAN_CTRL1_PROPSEG. +#define BS_CAN_CTRL1_PROPSEG (3U) //!< Bit field size in bits for CAN_CTRL1_PROPSEG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_PROPSEG field. +#define BR_CAN_CTRL1_PROPSEG(x) (HW_CAN_CTRL1(x).B.PROPSEG) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_PROPSEG. +#define BF_CAN_CTRL1_PROPSEG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_PROPSEG), uint32_t) & BM_CAN_CTRL1_PROPSEG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PROPSEG field to a new value. +#define BW_CAN_CTRL1_PROPSEG(x, v) (HW_CAN_CTRL1_WR(x, (HW_CAN_CTRL1_RD(x) & ~BM_CAN_CTRL1_PROPSEG) | BF_CAN_CTRL1_PROPSEG(v))) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field LOM[3] (RW) + * + * This bit configures FlexCAN to operate in Listen-Only mode. In this mode, + * transmission is disabled, all error counters are frozen and the module operates + * in a CAN Error Passive mode. Only messages acknowledged by another CAN station + * will be received. If FlexCAN detects a message that has not been acknowledged, + * it will flag a BIT0 error without changing the REC, as if it was trying to + * acknowledge the message. Listen-Only mode acknowledgement can be obtained by the + * state of ESR1[FLTCONF] field which is Passive Error when Listen-Only mode is + * entered. There can be some delay between the Listen-Only mode request and + * acknowledge. This bit can be written only in Freeze mode because it is blocked by + * hardware in other modes. + * + * Values: + * - 0 - Listen-Only mode is deactivated. + * - 1 - FlexCAN module operates in Listen-Only mode. + */ +//@{ +#define BP_CAN_CTRL1_LOM (3U) //!< Bit position for CAN_CTRL1_LOM. +#define BM_CAN_CTRL1_LOM (0x00000008U) //!< Bit mask for CAN_CTRL1_LOM. +#define BS_CAN_CTRL1_LOM (1U) //!< Bit field size in bits for CAN_CTRL1_LOM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_LOM field. +#define BR_CAN_CTRL1_LOM(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_LOM)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_LOM. +#define BF_CAN_CTRL1_LOM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_LOM), uint32_t) & BM_CAN_CTRL1_LOM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOM field to a new value. +#define BW_CAN_CTRL1_LOM(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_LOM) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field LBUF[4] (RW) + * + * This bit defines the ordering mechanism for Message Buffer transmission. When + * asserted, the LPRIOEN bit does not affect the priority arbitration. This bit + * can be written only in Freeze mode because it is blocked by hardware in other + * modes. + * + * Values: + * - 0 - Buffer with highest priority is transmitted first. + * - 1 - Lowest number buffer is transmitted first. + */ +//@{ +#define BP_CAN_CTRL1_LBUF (4U) //!< Bit position for CAN_CTRL1_LBUF. +#define BM_CAN_CTRL1_LBUF (0x00000010U) //!< Bit mask for CAN_CTRL1_LBUF. +#define BS_CAN_CTRL1_LBUF (1U) //!< Bit field size in bits for CAN_CTRL1_LBUF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_LBUF field. +#define BR_CAN_CTRL1_LBUF(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_LBUF)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_LBUF. +#define BF_CAN_CTRL1_LBUF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_LBUF), uint32_t) & BM_CAN_CTRL1_LBUF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LBUF field to a new value. +#define BW_CAN_CTRL1_LBUF(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_LBUF) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field TSYN[5] (RW) + * + * This bit enables a mechanism that resets the free-running timer each time a + * message is received in Message Buffer 0. This feature provides means to + * synchronize multiple FlexCAN stations with a special "SYNC" message, that is, global + * network time. If the RFEN bit in MCR is set (Rx FIFO enabled), the first + * available Mailbox, according to CTRL2[RFFN] setting, is used for timer + * synchronization instead of MB0. This bit can be written only in Freeze mode because it is + * blocked by hardware in other modes. + * + * Values: + * - 0 - Timer Sync feature disabled + * - 1 - Timer Sync feature enabled + */ +//@{ +#define BP_CAN_CTRL1_TSYN (5U) //!< Bit position for CAN_CTRL1_TSYN. +#define BM_CAN_CTRL1_TSYN (0x00000020U) //!< Bit mask for CAN_CTRL1_TSYN. +#define BS_CAN_CTRL1_TSYN (1U) //!< Bit field size in bits for CAN_CTRL1_TSYN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_TSYN field. +#define BR_CAN_CTRL1_TSYN(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_TSYN)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_TSYN. +#define BF_CAN_CTRL1_TSYN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_TSYN), uint32_t) & BM_CAN_CTRL1_TSYN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TSYN field to a new value. +#define BW_CAN_CTRL1_TSYN(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_TSYN) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field BOFFREC[6] (RW) + * + * This bit defines how FlexCAN recovers from Bus Off state. If this bit is + * negated, automatic recovering from Bus Off state occurs according to the CAN + * Specification 2.0B. If the bit is asserted, automatic recovering from Bus Off is + * disabled and the module remains in Bus Off state until the bit is negated by the + * user. If the negation occurs before 128 sequences of 11 recessive bits are + * detected on the CAN bus, then Bus Off recovery happens as if the BOFFREC bit had + * never been asserted. If the negation occurs after 128 sequences of 11 + * recessive bits occurred, then FlexCAN will re-synchronize to the bus by waiting for + * 11 recessive bits before joining the bus. After negation, the BOFFREC bit can + * be re-asserted again during Bus Off, but it will be effective only the next + * time the module enters Bus Off. If BOFFREC was negated when the module entered + * Bus Off, asserting it during Bus Off will not be effective for the current Bus + * Off recovery. + * + * Values: + * - 0 - Automatic recovering from Bus Off state enabled, according to CAN Spec + * 2.0 part B. + * - 1 - Automatic recovering from Bus Off state disabled. + */ +//@{ +#define BP_CAN_CTRL1_BOFFREC (6U) //!< Bit position for CAN_CTRL1_BOFFREC. +#define BM_CAN_CTRL1_BOFFREC (0x00000040U) //!< Bit mask for CAN_CTRL1_BOFFREC. +#define BS_CAN_CTRL1_BOFFREC (1U) //!< Bit field size in bits for CAN_CTRL1_BOFFREC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_BOFFREC field. +#define BR_CAN_CTRL1_BOFFREC(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_BOFFREC)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_BOFFREC. +#define BF_CAN_CTRL1_BOFFREC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_BOFFREC), uint32_t) & BM_CAN_CTRL1_BOFFREC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BOFFREC field to a new value. +#define BW_CAN_CTRL1_BOFFREC(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_BOFFREC) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field SMP[7] (RW) + * + * This bit defines the sampling mode of CAN bits at the Rx input. This bit can + * be written only in Freeze mode because it is blocked by hardware in other + * modes. + * + * Values: + * - 0 - Just one sample is used to determine the bit value. + * - 1 - Three samples are used to determine the value of the received bit: the + * regular one (sample point) and 2 preceding samples; a majority rule is + * used. + */ +//@{ +#define BP_CAN_CTRL1_SMP (7U) //!< Bit position for CAN_CTRL1_SMP. +#define BM_CAN_CTRL1_SMP (0x00000080U) //!< Bit mask for CAN_CTRL1_SMP. +#define BS_CAN_CTRL1_SMP (1U) //!< Bit field size in bits for CAN_CTRL1_SMP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_SMP field. +#define BR_CAN_CTRL1_SMP(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_SMP)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_SMP. +#define BF_CAN_CTRL1_SMP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_SMP), uint32_t) & BM_CAN_CTRL1_SMP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SMP field to a new value. +#define BW_CAN_CTRL1_SMP(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_SMP) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field RWRNMSK[10] (RW) + * + * This bit provides a mask for the Rx Warning Interrupt associated with the + * RWRNINT flag in the Error and Status Register. This bit is read as zero when + * MCR[WRNEN] bit is negated. This bit can be written only if MCR[WRNEN] bit is + * asserted. + * + * Values: + * - 0 - Rx Warning Interrupt disabled. + * - 1 - Rx Warning Interrupt enabled. + */ +//@{ +#define BP_CAN_CTRL1_RWRNMSK (10U) //!< Bit position for CAN_CTRL1_RWRNMSK. +#define BM_CAN_CTRL1_RWRNMSK (0x00000400U) //!< Bit mask for CAN_CTRL1_RWRNMSK. +#define BS_CAN_CTRL1_RWRNMSK (1U) //!< Bit field size in bits for CAN_CTRL1_RWRNMSK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_RWRNMSK field. +#define BR_CAN_CTRL1_RWRNMSK(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_RWRNMSK)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_RWRNMSK. +#define BF_CAN_CTRL1_RWRNMSK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_RWRNMSK), uint32_t) & BM_CAN_CTRL1_RWRNMSK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RWRNMSK field to a new value. +#define BW_CAN_CTRL1_RWRNMSK(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_RWRNMSK) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field TWRNMSK[11] (RW) + * + * This bit provides a mask for the Tx Warning Interrupt associated with the + * TWRNINT flag in the Error and Status Register. This bit is read as zero when + * MCR[WRNEN] bit is negated. This bit can be written only if MCR[WRNEN] bit is + * asserted. + * + * Values: + * - 0 - Tx Warning Interrupt disabled. + * - 1 - Tx Warning Interrupt enabled. + */ +//@{ +#define BP_CAN_CTRL1_TWRNMSK (11U) //!< Bit position for CAN_CTRL1_TWRNMSK. +#define BM_CAN_CTRL1_TWRNMSK (0x00000800U) //!< Bit mask for CAN_CTRL1_TWRNMSK. +#define BS_CAN_CTRL1_TWRNMSK (1U) //!< Bit field size in bits for CAN_CTRL1_TWRNMSK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_TWRNMSK field. +#define BR_CAN_CTRL1_TWRNMSK(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_TWRNMSK)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_TWRNMSK. +#define BF_CAN_CTRL1_TWRNMSK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_TWRNMSK), uint32_t) & BM_CAN_CTRL1_TWRNMSK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TWRNMSK field to a new value. +#define BW_CAN_CTRL1_TWRNMSK(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_TWRNMSK) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field LPB[12] (RW) + * + * This bit configures FlexCAN to operate in Loop-Back mode. In this mode, + * FlexCAN performs an internal loop back that can be used for self test operation. + * The bit stream output of the transmitter is fed back internally to the receiver + * input. The Rx CAN input pin is ignored and the Tx CAN output goes to the + * recessive state (logic 1). FlexCAN behaves as it normally does when transmitting, + * and treats its own transmitted message as a message received from a remote + * node. In this mode, FlexCAN ignores the bit sent during the ACK slot in the CAN + * frame acknowledge field, generating an internal acknowledge bit to ensure proper + * reception of its own message. Both transmit and receive interrupts are + * generated. This bit can be written only in Freeze mode because it is blocked by + * hardware in other modes. In this mode, the MCR[SRXDIS] cannot be asserted because + * this will impede the self reception of a transmitted message. + * + * Values: + * - 0 - Loop Back disabled. + * - 1 - Loop Back enabled. + */ +//@{ +#define BP_CAN_CTRL1_LPB (12U) //!< Bit position for CAN_CTRL1_LPB. +#define BM_CAN_CTRL1_LPB (0x00001000U) //!< Bit mask for CAN_CTRL1_LPB. +#define BS_CAN_CTRL1_LPB (1U) //!< Bit field size in bits for CAN_CTRL1_LPB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_LPB field. +#define BR_CAN_CTRL1_LPB(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_LPB)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_LPB. +#define BF_CAN_CTRL1_LPB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_LPB), uint32_t) & BM_CAN_CTRL1_LPB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LPB field to a new value. +#define BW_CAN_CTRL1_LPB(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_LPB) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field CLKSRC[13] (RW) + * + * This bit selects the clock source to the CAN Protocol Engine (PE) to be + * either the peripheral clock (driven by the PLL) or the crystal oscillator clock. + * The selected clock is the one fed to the prescaler to generate the Serial Clock + * (Sclock). In order to guarantee reliable operation, this bit can be written + * only in Disable mode because it is blocked by hardware in other modes. See + * Section "Protocol Timing". + * + * Values: + * - 0 - The CAN engine clock source is the oscillator clock. Under this + * condition, the oscillator clock frequency must be lower than the bus clock. + * - 1 - The CAN engine clock source is the peripheral clock. + */ +//@{ +#define BP_CAN_CTRL1_CLKSRC (13U) //!< Bit position for CAN_CTRL1_CLKSRC. +#define BM_CAN_CTRL1_CLKSRC (0x00002000U) //!< Bit mask for CAN_CTRL1_CLKSRC. +#define BS_CAN_CTRL1_CLKSRC (1U) //!< Bit field size in bits for CAN_CTRL1_CLKSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_CLKSRC field. +#define BR_CAN_CTRL1_CLKSRC(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_CLKSRC)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_CLKSRC. +#define BF_CAN_CTRL1_CLKSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_CLKSRC), uint32_t) & BM_CAN_CTRL1_CLKSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLKSRC field to a new value. +#define BW_CAN_CTRL1_CLKSRC(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_CLKSRC) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field ERRMSK[14] (RW) + * + * This bit provides a mask for the Error Interrupt. + * + * Values: + * - 0 - Error interrupt disabled. + * - 1 - Error interrupt enabled. + */ +//@{ +#define BP_CAN_CTRL1_ERRMSK (14U) //!< Bit position for CAN_CTRL1_ERRMSK. +#define BM_CAN_CTRL1_ERRMSK (0x00004000U) //!< Bit mask for CAN_CTRL1_ERRMSK. +#define BS_CAN_CTRL1_ERRMSK (1U) //!< Bit field size in bits for CAN_CTRL1_ERRMSK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_ERRMSK field. +#define BR_CAN_CTRL1_ERRMSK(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_ERRMSK)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_ERRMSK. +#define BF_CAN_CTRL1_ERRMSK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_ERRMSK), uint32_t) & BM_CAN_CTRL1_ERRMSK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERRMSK field to a new value. +#define BW_CAN_CTRL1_ERRMSK(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_ERRMSK) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field BOFFMSK[15] (RW) + * + * This bit provides a mask for the Bus Off Interrupt. + * + * Values: + * - 0 - Bus Off interrupt disabled. + * - 1 - Bus Off interrupt enabled. + */ +//@{ +#define BP_CAN_CTRL1_BOFFMSK (15U) //!< Bit position for CAN_CTRL1_BOFFMSK. +#define BM_CAN_CTRL1_BOFFMSK (0x00008000U) //!< Bit mask for CAN_CTRL1_BOFFMSK. +#define BS_CAN_CTRL1_BOFFMSK (1U) //!< Bit field size in bits for CAN_CTRL1_BOFFMSK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_BOFFMSK field. +#define BR_CAN_CTRL1_BOFFMSK(x) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_BOFFMSK)) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_BOFFMSK. +#define BF_CAN_CTRL1_BOFFMSK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_BOFFMSK), uint32_t) & BM_CAN_CTRL1_BOFFMSK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BOFFMSK field to a new value. +#define BW_CAN_CTRL1_BOFFMSK(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL1_ADDR(x), BP_CAN_CTRL1_BOFFMSK) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field PSEG2[18:16] (RW) + * + * This 3-bit field defines the length of Phase Buffer Segment 2 in the bit + * time. The valid programmable values are 1-7. This field can be written only in + * Freeze mode because it is blocked by hardware in other modes. Phase Buffer + * Segment 2 = (PSEG2 + 1) * Time-Quanta. + */ +//@{ +#define BP_CAN_CTRL1_PSEG2 (16U) //!< Bit position for CAN_CTRL1_PSEG2. +#define BM_CAN_CTRL1_PSEG2 (0x00070000U) //!< Bit mask for CAN_CTRL1_PSEG2. +#define BS_CAN_CTRL1_PSEG2 (3U) //!< Bit field size in bits for CAN_CTRL1_PSEG2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_PSEG2 field. +#define BR_CAN_CTRL1_PSEG2(x) (HW_CAN_CTRL1(x).B.PSEG2) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_PSEG2. +#define BF_CAN_CTRL1_PSEG2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_PSEG2), uint32_t) & BM_CAN_CTRL1_PSEG2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PSEG2 field to a new value. +#define BW_CAN_CTRL1_PSEG2(x, v) (HW_CAN_CTRL1_WR(x, (HW_CAN_CTRL1_RD(x) & ~BM_CAN_CTRL1_PSEG2) | BF_CAN_CTRL1_PSEG2(v))) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field PSEG1[21:19] (RW) + * + * This 3-bit field defines the length of Phase Buffer Segment 1 in the bit + * time. The valid programmable values are 0-7. This field can be written only in + * Freeze mode because it is blocked by hardware in other modes. Phase Buffer + * Segment 1 = (PSEG1 + 1) * Time-Quanta. + */ +//@{ +#define BP_CAN_CTRL1_PSEG1 (19U) //!< Bit position for CAN_CTRL1_PSEG1. +#define BM_CAN_CTRL1_PSEG1 (0x00380000U) //!< Bit mask for CAN_CTRL1_PSEG1. +#define BS_CAN_CTRL1_PSEG1 (3U) //!< Bit field size in bits for CAN_CTRL1_PSEG1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_PSEG1 field. +#define BR_CAN_CTRL1_PSEG1(x) (HW_CAN_CTRL1(x).B.PSEG1) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_PSEG1. +#define BF_CAN_CTRL1_PSEG1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_PSEG1), uint32_t) & BM_CAN_CTRL1_PSEG1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PSEG1 field to a new value. +#define BW_CAN_CTRL1_PSEG1(x, v) (HW_CAN_CTRL1_WR(x, (HW_CAN_CTRL1_RD(x) & ~BM_CAN_CTRL1_PSEG1) | BF_CAN_CTRL1_PSEG1(v))) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field RJW[23:22] (RW) + * + * This 2-bit field defines the maximum number of time quanta that a bit time + * can be changed by one re-synchronization. One time quantum is equal to the + * Sclock period. The valid programmable values are 0-3. This field can be written + * only in Freeze mode because it is blocked by hardware in other modes. Resync Jump + * Width = RJW + 1. + */ +//@{ +#define BP_CAN_CTRL1_RJW (22U) //!< Bit position for CAN_CTRL1_RJW. +#define BM_CAN_CTRL1_RJW (0x00C00000U) //!< Bit mask for CAN_CTRL1_RJW. +#define BS_CAN_CTRL1_RJW (2U) //!< Bit field size in bits for CAN_CTRL1_RJW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_RJW field. +#define BR_CAN_CTRL1_RJW(x) (HW_CAN_CTRL1(x).B.RJW) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_RJW. +#define BF_CAN_CTRL1_RJW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_RJW), uint32_t) & BM_CAN_CTRL1_RJW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RJW field to a new value. +#define BW_CAN_CTRL1_RJW(x, v) (HW_CAN_CTRL1_WR(x, (HW_CAN_CTRL1_RD(x) & ~BM_CAN_CTRL1_RJW) | BF_CAN_CTRL1_RJW(v))) +#endif +//@} + +/*! + * @name Register CAN_CTRL1, field PRESDIV[31:24] (RW) + * + * This 8-bit field defines the ratio between the PE clock frequency and the + * Serial Clock (Sclock) frequency. The Sclock period defines the time quantum of + * the CAN protocol. For the reset value, the Sclock frequency is equal to the PE + * clock frequency. The Maximum value of this field is 0xFF, that gives a minimum + * Sclock frequency equal to the PE clock frequency divided by 256. See Section + * "Protocol Timing". This field can be written only in Freeze mode because it is + * blocked by hardware in other modes. Sclock frequency = PE clock frequency / + * (PRESDIV + 1) + */ +//@{ +#define BP_CAN_CTRL1_PRESDIV (24U) //!< Bit position for CAN_CTRL1_PRESDIV. +#define BM_CAN_CTRL1_PRESDIV (0xFF000000U) //!< Bit mask for CAN_CTRL1_PRESDIV. +#define BS_CAN_CTRL1_PRESDIV (8U) //!< Bit field size in bits for CAN_CTRL1_PRESDIV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL1_PRESDIV field. +#define BR_CAN_CTRL1_PRESDIV(x) (HW_CAN_CTRL1(x).B.PRESDIV) +#endif + +//! @brief Format value for bitfield CAN_CTRL1_PRESDIV. +#define BF_CAN_CTRL1_PRESDIV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL1_PRESDIV), uint32_t) & BM_CAN_CTRL1_PRESDIV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PRESDIV field to a new value. +#define BW_CAN_CTRL1_PRESDIV(x, v) (HW_CAN_CTRL1_WR(x, (HW_CAN_CTRL1_RD(x) & ~BM_CAN_CTRL1_PRESDIV) | BF_CAN_CTRL1_PRESDIV(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_TIMER - Free Running Timer +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_TIMER - Free Running Timer (RW) + * + * Reset value: 0x00000000U + * + * This register represents a 16-bit free running counter that can be read and + * written by the CPU. The timer starts from 0x0 after Reset, counts linearly to + * 0xFFFF, and wraps around. The timer is clocked by the FlexCAN bit-clock, which + * defines the baud rate on the CAN bus. During a message transmission/reception, + * it increments by one for each bit that is received or transmitted. When there + * is no message on the bus, it counts using the previously programmed baud + * rate. The timer is not incremented during Disable , Stop, and Freeze modes. The + * timer value is captured when the second bit of the identifier field of any frame + * is on the CAN bus. This captured value is written into the Time Stamp entry + * in a message buffer after a successful reception or transmission of a message. + * If bit CTRL1[TSYN] is asserted, the Timer is reset whenever a message is + * received in the first available Mailbox, according to CTRL2[RFFN] setting. The CPU + * can write to this register anytime. However, if the write occurs at the same + * time that the Timer is being reset by a reception in the first Mailbox, then + * the write value is discarded. Reading this register affects the Mailbox + * Unlocking procedure; see Section "Mailbox Lock Mechanism". + */ +typedef union _hw_can_timer +{ + uint32_t U; + struct _hw_can_timer_bitfields + { + uint32_t TIMER : 16; //!< [15:0] Timer Value + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_can_timer_t; +#endif + +/*! + * @name Constants and macros for entire CAN_TIMER register + */ +//@{ +#define HW_CAN_TIMER_ADDR(x) (REGS_CAN_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_TIMER(x) (*(__IO hw_can_timer_t *) HW_CAN_TIMER_ADDR(x)) +#define HW_CAN_TIMER_RD(x) (HW_CAN_TIMER(x).U) +#define HW_CAN_TIMER_WR(x, v) (HW_CAN_TIMER(x).U = (v)) +#define HW_CAN_TIMER_SET(x, v) (HW_CAN_TIMER_WR(x, HW_CAN_TIMER_RD(x) | (v))) +#define HW_CAN_TIMER_CLR(x, v) (HW_CAN_TIMER_WR(x, HW_CAN_TIMER_RD(x) & ~(v))) +#define HW_CAN_TIMER_TOG(x, v) (HW_CAN_TIMER_WR(x, HW_CAN_TIMER_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_TIMER bitfields + */ + +/*! + * @name Register CAN_TIMER, field TIMER[15:0] (RW) + * + * Contains the free-running counter value. + */ +//@{ +#define BP_CAN_TIMER_TIMER (0U) //!< Bit position for CAN_TIMER_TIMER. +#define BM_CAN_TIMER_TIMER (0x0000FFFFU) //!< Bit mask for CAN_TIMER_TIMER. +#define BS_CAN_TIMER_TIMER (16U) //!< Bit field size in bits for CAN_TIMER_TIMER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_TIMER_TIMER field. +#define BR_CAN_TIMER_TIMER(x) (HW_CAN_TIMER(x).B.TIMER) +#endif + +//! @brief Format value for bitfield CAN_TIMER_TIMER. +#define BF_CAN_TIMER_TIMER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_TIMER_TIMER), uint32_t) & BM_CAN_TIMER_TIMER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIMER field to a new value. +#define BW_CAN_TIMER_TIMER(x, v) (HW_CAN_TIMER_WR(x, (HW_CAN_TIMER_RD(x) & ~BM_CAN_TIMER_TIMER) | BF_CAN_TIMER_TIMER(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_RXMGMASK - Rx Mailboxes Global Mask Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_RXMGMASK - Rx Mailboxes Global Mask Register (RW) + * + * Reset value: 0xFFFFFFFFU + * + * This register is located in RAM. RXMGMASK is provided for legacy application + * support. When the MCR[IRMQ] bit is negated, RXMGMASK is always in effect. When + * the MCR[IRMQ] bit is asserted, RXMGMASK has no effect. RXMGMASK is used to + * mask the filter fields of all Rx MBs, excluding MBs 14-15, which have individual + * mask registers. This register can only be written in Freeze mode as it is + * blocked by hardware in other modes. + */ +typedef union _hw_can_rxmgmask +{ + uint32_t U; + struct _hw_can_rxmgmask_bitfields + { + uint32_t MG : 32; //!< [31:0] Rx Mailboxes Global Mask Bits + } B; +} hw_can_rxmgmask_t; +#endif + +/*! + * @name Constants and macros for entire CAN_RXMGMASK register + */ +//@{ +#define HW_CAN_RXMGMASK_ADDR(x) (REGS_CAN_BASE(x) + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_RXMGMASK(x) (*(__IO hw_can_rxmgmask_t *) HW_CAN_RXMGMASK_ADDR(x)) +#define HW_CAN_RXMGMASK_RD(x) (HW_CAN_RXMGMASK(x).U) +#define HW_CAN_RXMGMASK_WR(x, v) (HW_CAN_RXMGMASK(x).U = (v)) +#define HW_CAN_RXMGMASK_SET(x, v) (HW_CAN_RXMGMASK_WR(x, HW_CAN_RXMGMASK_RD(x) | (v))) +#define HW_CAN_RXMGMASK_CLR(x, v) (HW_CAN_RXMGMASK_WR(x, HW_CAN_RXMGMASK_RD(x) & ~(v))) +#define HW_CAN_RXMGMASK_TOG(x, v) (HW_CAN_RXMGMASK_WR(x, HW_CAN_RXMGMASK_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_RXMGMASK bitfields + */ + +/*! + * @name Register CAN_RXMGMASK, field MG[31:0] (RW) + * + * These bits mask the Mailbox filter bits. Note that the alignment with the ID + * word of the Mailbox is not perfect as the two most significant MG bits affect + * the fields RTR and IDE, which are located in the Control and Status word of + * the Mailbox. The following table shows in detail which MG bits mask each Mailbox + * filter field. SMB[RTR] RTR bit of the Incoming Frame. It is saved into an + * auxiliary MB called Rx Serial Message Buffer (Rx SMB). CTRL2[RRS] CTRL2[EACEN] + * Mailbox filter fields MB[RTR] MB[IDE] MB[ID] Reserved 0 - 0 note If the + * CTRL2[EACEN] bit is negated, the RTR bit of Mailbox is never compared with the RTR bit + * of the incoming frame. note If the CTRL2[EACEN] bit is negated, the IDE bit + * of Mailbox is always compared with the IDE bit of the incoming frame. MG[28:0] + * MG[31:29] 0 - 1 MG[31] MG[30] MG[28:0] MG[29] 1 0 - - - - MG[31:0] 1 1 0 - - + * MG[28:0] MG[31:29] 1 1 1 MG[31] MG[30] MG[28:0] MG[29] + * + * Values: + * - 0 - The corresponding bit in the filter is "don't care." + * - 1 - The corresponding bit in the filter is checked. + */ +//@{ +#define BP_CAN_RXMGMASK_MG (0U) //!< Bit position for CAN_RXMGMASK_MG. +#define BM_CAN_RXMGMASK_MG (0xFFFFFFFFU) //!< Bit mask for CAN_RXMGMASK_MG. +#define BS_CAN_RXMGMASK_MG (32U) //!< Bit field size in bits for CAN_RXMGMASK_MG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_RXMGMASK_MG field. +#define BR_CAN_RXMGMASK_MG(x) (HW_CAN_RXMGMASK(x).U) +#endif + +//! @brief Format value for bitfield CAN_RXMGMASK_MG. +#define BF_CAN_RXMGMASK_MG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_RXMGMASK_MG), uint32_t) & BM_CAN_RXMGMASK_MG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MG field to a new value. +#define BW_CAN_RXMGMASK_MG(x, v) (HW_CAN_RXMGMASK_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_RX14MASK - Rx 14 Mask register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_RX14MASK - Rx 14 Mask register (RW) + * + * Reset value: 0xFFFFFFFFU + * + * This register is located in RAM. RX14MASK is provided for legacy application + * support. When the MCR[IRMQ] bit is asserted, RX14MASK has no effect. RX14MASK + * is used to mask the filter fields of Message Buffer 14. This register can only + * be programmed while the module is in Freeze mode as it is blocked by hardware + * in other modes. + */ +typedef union _hw_can_rx14mask +{ + uint32_t U; + struct _hw_can_rx14mask_bitfields + { + uint32_t RX14M : 32; //!< [31:0] Rx Buffer 14 Mask Bits + } B; +} hw_can_rx14mask_t; +#endif + +/*! + * @name Constants and macros for entire CAN_RX14MASK register + */ +//@{ +#define HW_CAN_RX14MASK_ADDR(x) (REGS_CAN_BASE(x) + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_RX14MASK(x) (*(__IO hw_can_rx14mask_t *) HW_CAN_RX14MASK_ADDR(x)) +#define HW_CAN_RX14MASK_RD(x) (HW_CAN_RX14MASK(x).U) +#define HW_CAN_RX14MASK_WR(x, v) (HW_CAN_RX14MASK(x).U = (v)) +#define HW_CAN_RX14MASK_SET(x, v) (HW_CAN_RX14MASK_WR(x, HW_CAN_RX14MASK_RD(x) | (v))) +#define HW_CAN_RX14MASK_CLR(x, v) (HW_CAN_RX14MASK_WR(x, HW_CAN_RX14MASK_RD(x) & ~(v))) +#define HW_CAN_RX14MASK_TOG(x, v) (HW_CAN_RX14MASK_WR(x, HW_CAN_RX14MASK_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_RX14MASK bitfields + */ + +/*! + * @name Register CAN_RX14MASK, field RX14M[31:0] (RW) + * + * Each mask bit masks the corresponding Mailbox 14 filter field in the same way + * that RXMGMASK masks other Mailboxes' filters. See the description of the + * CAN_RXMGMASK register. + * + * Values: + * - 0 - The corresponding bit in the filter is "don't care." + * - 1 - The corresponding bit in the filter is checked. + */ +//@{ +#define BP_CAN_RX14MASK_RX14M (0U) //!< Bit position for CAN_RX14MASK_RX14M. +#define BM_CAN_RX14MASK_RX14M (0xFFFFFFFFU) //!< Bit mask for CAN_RX14MASK_RX14M. +#define BS_CAN_RX14MASK_RX14M (32U) //!< Bit field size in bits for CAN_RX14MASK_RX14M. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_RX14MASK_RX14M field. +#define BR_CAN_RX14MASK_RX14M(x) (HW_CAN_RX14MASK(x).U) +#endif + +//! @brief Format value for bitfield CAN_RX14MASK_RX14M. +#define BF_CAN_RX14MASK_RX14M(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_RX14MASK_RX14M), uint32_t) & BM_CAN_RX14MASK_RX14M) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RX14M field to a new value. +#define BW_CAN_RX14MASK_RX14M(x, v) (HW_CAN_RX14MASK_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_RX15MASK - Rx 15 Mask register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_RX15MASK - Rx 15 Mask register (RW) + * + * Reset value: 0xFFFFFFFFU + * + * This register is located in RAM. RX15MASK is provided for legacy application + * support. When the MCR[IRMQ] bit is asserted, RX15MASK has no effect. RX15MASK + * is used to mask the filter fields of Message Buffer 15. This register can be + * programmed only while the module is in Freeze mode because it is blocked by + * hardware in other modes. + */ +typedef union _hw_can_rx15mask +{ + uint32_t U; + struct _hw_can_rx15mask_bitfields + { + uint32_t RX15M : 32; //!< [31:0] Rx Buffer 15 Mask Bits + } B; +} hw_can_rx15mask_t; +#endif + +/*! + * @name Constants and macros for entire CAN_RX15MASK register + */ +//@{ +#define HW_CAN_RX15MASK_ADDR(x) (REGS_CAN_BASE(x) + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_RX15MASK(x) (*(__IO hw_can_rx15mask_t *) HW_CAN_RX15MASK_ADDR(x)) +#define HW_CAN_RX15MASK_RD(x) (HW_CAN_RX15MASK(x).U) +#define HW_CAN_RX15MASK_WR(x, v) (HW_CAN_RX15MASK(x).U = (v)) +#define HW_CAN_RX15MASK_SET(x, v) (HW_CAN_RX15MASK_WR(x, HW_CAN_RX15MASK_RD(x) | (v))) +#define HW_CAN_RX15MASK_CLR(x, v) (HW_CAN_RX15MASK_WR(x, HW_CAN_RX15MASK_RD(x) & ~(v))) +#define HW_CAN_RX15MASK_TOG(x, v) (HW_CAN_RX15MASK_WR(x, HW_CAN_RX15MASK_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_RX15MASK bitfields + */ + +/*! + * @name Register CAN_RX15MASK, field RX15M[31:0] (RW) + * + * Each mask bit masks the corresponding Mailbox 15 filter field in the same way + * that RXMGMASK masks other Mailboxes' filters. See the description of the + * CAN_RXMGMASK register. + * + * Values: + * - 0 - The corresponding bit in the filter is "don't care." + * - 1 - The corresponding bit in the filter is checked. + */ +//@{ +#define BP_CAN_RX15MASK_RX15M (0U) //!< Bit position for CAN_RX15MASK_RX15M. +#define BM_CAN_RX15MASK_RX15M (0xFFFFFFFFU) //!< Bit mask for CAN_RX15MASK_RX15M. +#define BS_CAN_RX15MASK_RX15M (32U) //!< Bit field size in bits for CAN_RX15MASK_RX15M. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_RX15MASK_RX15M field. +#define BR_CAN_RX15MASK_RX15M(x) (HW_CAN_RX15MASK(x).U) +#endif + +//! @brief Format value for bitfield CAN_RX15MASK_RX15M. +#define BF_CAN_RX15MASK_RX15M(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_RX15MASK_RX15M), uint32_t) & BM_CAN_RX15MASK_RX15M) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RX15M field to a new value. +#define BW_CAN_RX15MASK_RX15M(x, v) (HW_CAN_RX15MASK_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_ECR - Error Counter +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_ECR - Error Counter (RW) + * + * Reset value: 0x00000000U + * + * This register has two 8-bit fields reflecting the value of two FlexCAN error + * counters: Transmit Error Counter (TXERRCNT field) and Receive Error Counter + * (RXERRCNT field). The rules for increasing and decreasing these counters are + * described in the CAN protocol and are completely implemented in the FlexCAN + * module. Both counters are read-only except in Freeze mode, where they can be + * written by the CPU. FlexCAN responds to any bus state as described in the protocol, + * for example, transmit Error Active or Error Passive flag, delay its + * transmission start time (Error Passive) and avoid any influence on the bus when in Bus + * Off state. The following are the basic rules for FlexCAN bus state transitions: + * If the value of TXERRCNT or RXERRCNT increases to be greater than or equal to + * 128, the FLTCONF field in the Error and Status Register is updated to reflect + * 'Error Passive' state. If the FlexCAN state is 'Error Passive', and either + * TXERRCNT or RXERRCNT decrements to a value less than or equal to 127 while the + * other already satisfies this condition, the FLTCONF field in the Error and + * Status Register is updated to reflect 'Error Active' state. If the value of + * TXERRCNT increases to be greater than 255, the FLTCONF field in the Error and Status + * Register is updated to reflect 'Bus Off' state, and an interrupt may be + * issued. The value of TXERRCNT is then reset to zero. If FlexCAN is in 'Bus Off' + * state, then TXERRCNT is cascaded together with another internal counter to count + * the 128th occurrences of 11 consecutive recessive bits on the bus. Hence, + * TXERRCNT is reset to zero and counts in a manner where the internal counter counts + * 11 such bits and then wraps around while incrementing the TXERRCNT. When + * TXERRCNT reaches the value of 128, the FLTCONF field in the Error and Status + * Register is updated to be 'Error Active' and both error counters are reset to zero. + * At any instance of dominant bit following a stream of less than 11 + * consecutive recessive bits, the internal counter resets itself to zero without affecting + * the TXERRCNT value. If during system start-up, only one node is operating, + * then its TXERRCNT increases in each message it is trying to transmit, as a + * result of acknowledge errors (indicated by the ACKERR bit in the Error and Status + * Register). After the transition to 'Error Passive' state, the TXERRCNT does not + * increment anymore by acknowledge errors. Therefore the device never goes to + * the 'Bus Off' state. If the RXERRCNT increases to a value greater than 127, it + * is not incremented further, even if more errors are detected while being a + * receiver. At the next successful message reception, the counter is set to a value + * between 119 and 127 to resume to 'Error Active' state. + */ +typedef union _hw_can_ecr +{ + uint32_t U; + struct _hw_can_ecr_bitfields + { + uint32_t TXERRCNT : 8; //!< [7:0] Transmit Error Counter + uint32_t RXERRCNT : 8; //!< [15:8] Receive Error Counter + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_can_ecr_t; +#endif + +/*! + * @name Constants and macros for entire CAN_ECR register + */ +//@{ +#define HW_CAN_ECR_ADDR(x) (REGS_CAN_BASE(x) + 0x1CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_ECR(x) (*(__IO hw_can_ecr_t *) HW_CAN_ECR_ADDR(x)) +#define HW_CAN_ECR_RD(x) (HW_CAN_ECR(x).U) +#define HW_CAN_ECR_WR(x, v) (HW_CAN_ECR(x).U = (v)) +#define HW_CAN_ECR_SET(x, v) (HW_CAN_ECR_WR(x, HW_CAN_ECR_RD(x) | (v))) +#define HW_CAN_ECR_CLR(x, v) (HW_CAN_ECR_WR(x, HW_CAN_ECR_RD(x) & ~(v))) +#define HW_CAN_ECR_TOG(x, v) (HW_CAN_ECR_WR(x, HW_CAN_ECR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_ECR bitfields + */ + +/*! + * @name Register CAN_ECR, field TXERRCNT[7:0] (RW) + */ +//@{ +#define BP_CAN_ECR_TXERRCNT (0U) //!< Bit position for CAN_ECR_TXERRCNT. +#define BM_CAN_ECR_TXERRCNT (0x000000FFU) //!< Bit mask for CAN_ECR_TXERRCNT. +#define BS_CAN_ECR_TXERRCNT (8U) //!< Bit field size in bits for CAN_ECR_TXERRCNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ECR_TXERRCNT field. +#define BR_CAN_ECR_TXERRCNT(x) (HW_CAN_ECR(x).B.TXERRCNT) +#endif + +//! @brief Format value for bitfield CAN_ECR_TXERRCNT. +#define BF_CAN_ECR_TXERRCNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ECR_TXERRCNT), uint32_t) & BM_CAN_ECR_TXERRCNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXERRCNT field to a new value. +#define BW_CAN_ECR_TXERRCNT(x, v) (HW_CAN_ECR_WR(x, (HW_CAN_ECR_RD(x) & ~BM_CAN_ECR_TXERRCNT) | BF_CAN_ECR_TXERRCNT(v))) +#endif +//@} + +/*! + * @name Register CAN_ECR, field RXERRCNT[15:8] (RW) + */ +//@{ +#define BP_CAN_ECR_RXERRCNT (8U) //!< Bit position for CAN_ECR_RXERRCNT. +#define BM_CAN_ECR_RXERRCNT (0x0000FF00U) //!< Bit mask for CAN_ECR_RXERRCNT. +#define BS_CAN_ECR_RXERRCNT (8U) //!< Bit field size in bits for CAN_ECR_RXERRCNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ECR_RXERRCNT field. +#define BR_CAN_ECR_RXERRCNT(x) (HW_CAN_ECR(x).B.RXERRCNT) +#endif + +//! @brief Format value for bitfield CAN_ECR_RXERRCNT. +#define BF_CAN_ECR_RXERRCNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ECR_RXERRCNT), uint32_t) & BM_CAN_ECR_RXERRCNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXERRCNT field to a new value. +#define BW_CAN_ECR_RXERRCNT(x, v) (HW_CAN_ECR_WR(x, (HW_CAN_ECR_RD(x) & ~BM_CAN_ECR_RXERRCNT) | BF_CAN_ECR_RXERRCNT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_ESR1 - Error and Status 1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_ESR1 - Error and Status 1 register (RW) + * + * Reset value: 0x00000000U + * + * This register reflects various error conditions, some general status of the + * device and it is the source of interrupts to the CPU. The CPU read action + * clears bits 15-10. Therefore the reported error conditions (bits 15-10) are those + * that occurred since the last time the CPU read this register. Bits 9-3 are + * status bits. The following table shows the FlexCAN state variables and their + * meanings. Other combinations not shown in the table are reserved. SYNCH IDLE TX RX + * FlexCAN State 0 0 0 0 Not synchronized to CAN bus 1 1 x x Idle 1 0 1 0 + * Transmitting 1 0 0 1 Receiving + */ +typedef union _hw_can_esr1 +{ + uint32_t U; + struct _hw_can_esr1_bitfields + { + uint32_t WAKINT : 1; //!< [0] Wake-Up Interrupt + uint32_t ERRINT : 1; //!< [1] Error Interrupt + uint32_t BOFFINT : 1; //!< [2] Bus Off Interrupt + uint32_t RX : 1; //!< [3] FlexCAN In Reception + uint32_t FLTCONF : 2; //!< [5:4] Fault Confinement State + uint32_t TX : 1; //!< [6] FlexCAN In Transmission + uint32_t IDLE : 1; //!< [7] + uint32_t RXWRN : 1; //!< [8] Rx Error Warning + uint32_t TXWRN : 1; //!< [9] TX Error Warning + uint32_t STFERR : 1; //!< [10] Stuffing Error + uint32_t FRMERR : 1; //!< [11] Form Error + uint32_t CRCERR : 1; //!< [12] Cyclic Redundancy Check Error + uint32_t ACKERR : 1; //!< [13] Acknowledge Error + uint32_t BIT0ERR : 1; //!< [14] Bit0 Error + uint32_t BIT1ERR : 1; //!< [15] Bit1 Error + uint32_t RWRNINT : 1; //!< [16] Rx Warning Interrupt Flag + uint32_t TWRNINT : 1; //!< [17] Tx Warning Interrupt Flag + uint32_t SYNCH : 1; //!< [18] CAN Synchronization Status + uint32_t RESERVED0 : 13; //!< [31:19] + } B; +} hw_can_esr1_t; +#endif + +/*! + * @name Constants and macros for entire CAN_ESR1 register + */ +//@{ +#define HW_CAN_ESR1_ADDR(x) (REGS_CAN_BASE(x) + 0x20U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_ESR1(x) (*(__IO hw_can_esr1_t *) HW_CAN_ESR1_ADDR(x)) +#define HW_CAN_ESR1_RD(x) (HW_CAN_ESR1(x).U) +#define HW_CAN_ESR1_WR(x, v) (HW_CAN_ESR1(x).U = (v)) +#define HW_CAN_ESR1_SET(x, v) (HW_CAN_ESR1_WR(x, HW_CAN_ESR1_RD(x) | (v))) +#define HW_CAN_ESR1_CLR(x, v) (HW_CAN_ESR1_WR(x, HW_CAN_ESR1_RD(x) & ~(v))) +#define HW_CAN_ESR1_TOG(x, v) (HW_CAN_ESR1_WR(x, HW_CAN_ESR1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_ESR1 bitfields + */ + +/*! + * @name Register CAN_ESR1, field WAKINT[0] (W1C) + * + * This field applies when FlexCAN is in low-power mode under Self Wake Up + * mechanism: Stop mode When a recessive-to-dominant transition is detected on the CAN + * bus and if the MCR[WAKMSK] bit is set, an interrupt is generated to the CPU. + * This bit is cleared by writing it to 1. When MCR[SLFWAK] is negated, this flag + * is masked. The CPU must clear this flag before disabling the bit. Otherwise + * it will be set when the SLFWAK is set again. Writing 0 has no effect. + * + * Values: + * - 0 - No such occurrence. + * - 1 - Indicates a recessive to dominant transition was received on the CAN + * bus. + */ +//@{ +#define BP_CAN_ESR1_WAKINT (0U) //!< Bit position for CAN_ESR1_WAKINT. +#define BM_CAN_ESR1_WAKINT (0x00000001U) //!< Bit mask for CAN_ESR1_WAKINT. +#define BS_CAN_ESR1_WAKINT (1U) //!< Bit field size in bits for CAN_ESR1_WAKINT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_WAKINT field. +#define BR_CAN_ESR1_WAKINT(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_WAKINT)) +#endif + +//! @brief Format value for bitfield CAN_ESR1_WAKINT. +#define BF_CAN_ESR1_WAKINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ESR1_WAKINT), uint32_t) & BM_CAN_ESR1_WAKINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WAKINT field to a new value. +#define BW_CAN_ESR1_WAKINT(x, v) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_WAKINT) = (v)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field ERRINT[1] (W1C) + * + * This bit indicates that at least one of the Error Bits (bits 15-10) is set. + * If the corresponding mask bit CTRL1[ERRMSK] is set, an interrupt is generated + * to the CPU. This bit is cleared by writing it to 1. Writing 0 has no effect. + * + * Values: + * - 0 - No such occurrence. + * - 1 - Indicates setting of any Error Bit in the Error and Status Register. + */ +//@{ +#define BP_CAN_ESR1_ERRINT (1U) //!< Bit position for CAN_ESR1_ERRINT. +#define BM_CAN_ESR1_ERRINT (0x00000002U) //!< Bit mask for CAN_ESR1_ERRINT. +#define BS_CAN_ESR1_ERRINT (1U) //!< Bit field size in bits for CAN_ESR1_ERRINT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_ERRINT field. +#define BR_CAN_ESR1_ERRINT(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_ERRINT)) +#endif + +//! @brief Format value for bitfield CAN_ESR1_ERRINT. +#define BF_CAN_ESR1_ERRINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ESR1_ERRINT), uint32_t) & BM_CAN_ESR1_ERRINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERRINT field to a new value. +#define BW_CAN_ESR1_ERRINT(x, v) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_ERRINT) = (v)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field BOFFINT[2] (W1C) + * + * This bit is set when FlexCAN enters 'Bus Off' state. If the corresponding + * mask bit in the Control Register (BOFFMSK) is set, an interrupt is generated to + * the CPU. This bit is cleared by writing it to 1. Writing 0 has no effect. + * + * Values: + * - 0 - No such occurrence. + * - 1 - FlexCAN module entered Bus Off state. + */ +//@{ +#define BP_CAN_ESR1_BOFFINT (2U) //!< Bit position for CAN_ESR1_BOFFINT. +#define BM_CAN_ESR1_BOFFINT (0x00000004U) //!< Bit mask for CAN_ESR1_BOFFINT. +#define BS_CAN_ESR1_BOFFINT (1U) //!< Bit field size in bits for CAN_ESR1_BOFFINT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_BOFFINT field. +#define BR_CAN_ESR1_BOFFINT(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_BOFFINT)) +#endif + +//! @brief Format value for bitfield CAN_ESR1_BOFFINT. +#define BF_CAN_ESR1_BOFFINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ESR1_BOFFINT), uint32_t) & BM_CAN_ESR1_BOFFINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BOFFINT field to a new value. +#define BW_CAN_ESR1_BOFFINT(x, v) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_BOFFINT) = (v)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field RX[3] (RO) + * + * This bit indicates if FlexCAN is receiving a message. See the table in the + * overall CAN_ESR1 register description. + * + * Values: + * - 0 - FlexCAN is not receiving a message. + * - 1 - FlexCAN is receiving a message. + */ +//@{ +#define BP_CAN_ESR1_RX (3U) //!< Bit position for CAN_ESR1_RX. +#define BM_CAN_ESR1_RX (0x00000008U) //!< Bit mask for CAN_ESR1_RX. +#define BS_CAN_ESR1_RX (1U) //!< Bit field size in bits for CAN_ESR1_RX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_RX field. +#define BR_CAN_ESR1_RX(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_RX)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field FLTCONF[5:4] (RO) + * + * This 2-bit field indicates the Confinement State of the FlexCAN module. If + * the LOM bit in the Control Register is asserted, after some delay that depends + * on the CAN bit timing the FLTCONF field will indicate "Error Passive". The very + * same delay affects the way how FLTCONF reflects an update to ECR register by + * the CPU. It may be necessary up to one CAN bit time to get them coherent + * again. Because the Control Register is not affected by soft reset, the FLTCONF + * field will not be affected by soft reset if the LOM bit is asserted. + * + * Values: + * - 00 - Error Active + * - 01 - Error Passive + * - 1x - Bus Off + */ +//@{ +#define BP_CAN_ESR1_FLTCONF (4U) //!< Bit position for CAN_ESR1_FLTCONF. +#define BM_CAN_ESR1_FLTCONF (0x00000030U) //!< Bit mask for CAN_ESR1_FLTCONF. +#define BS_CAN_ESR1_FLTCONF (2U) //!< Bit field size in bits for CAN_ESR1_FLTCONF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_FLTCONF field. +#define BR_CAN_ESR1_FLTCONF(x) (HW_CAN_ESR1(x).B.FLTCONF) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field TX[6] (RO) + * + * This bit indicates if FlexCAN is transmitting a message. See the table in the + * overall CAN_ESR1 register description. + * + * Values: + * - 0 - FlexCAN is not transmitting a message. + * - 1 - FlexCAN is transmitting a message. + */ +//@{ +#define BP_CAN_ESR1_TX (6U) //!< Bit position for CAN_ESR1_TX. +#define BM_CAN_ESR1_TX (0x00000040U) //!< Bit mask for CAN_ESR1_TX. +#define BS_CAN_ESR1_TX (1U) //!< Bit field size in bits for CAN_ESR1_TX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_TX field. +#define BR_CAN_ESR1_TX(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_TX)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field IDLE[7] (RO) + * + * This bit indicates when CAN bus is in IDLE state. See the table in the + * overall CAN_ESR1 register description. + * + * Values: + * - 0 - No such occurrence. + * - 1 - CAN bus is now IDLE. + */ +//@{ +#define BP_CAN_ESR1_IDLE (7U) //!< Bit position for CAN_ESR1_IDLE. +#define BM_CAN_ESR1_IDLE (0x00000080U) //!< Bit mask for CAN_ESR1_IDLE. +#define BS_CAN_ESR1_IDLE (1U) //!< Bit field size in bits for CAN_ESR1_IDLE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_IDLE field. +#define BR_CAN_ESR1_IDLE(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_IDLE)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field RXWRN[8] (RO) + * + * This bit indicates when repetitive errors are occurring during message + * reception. This bit is not updated during Freeze mode. + * + * Values: + * - 0 - No such occurrence. + * - 1 - RXERRCNT is greater than or equal to 96. + */ +//@{ +#define BP_CAN_ESR1_RXWRN (8U) //!< Bit position for CAN_ESR1_RXWRN. +#define BM_CAN_ESR1_RXWRN (0x00000100U) //!< Bit mask for CAN_ESR1_RXWRN. +#define BS_CAN_ESR1_RXWRN (1U) //!< Bit field size in bits for CAN_ESR1_RXWRN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_RXWRN field. +#define BR_CAN_ESR1_RXWRN(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_RXWRN)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field TXWRN[9] (RO) + * + * This bit indicates when repetitive errors are occurring during message + * transmission. This bit is not updated during Freeze mode. + * + * Values: + * - 0 - No such occurrence. + * - 1 - TXERRCNT is greater than or equal to 96. + */ +//@{ +#define BP_CAN_ESR1_TXWRN (9U) //!< Bit position for CAN_ESR1_TXWRN. +#define BM_CAN_ESR1_TXWRN (0x00000200U) //!< Bit mask for CAN_ESR1_TXWRN. +#define BS_CAN_ESR1_TXWRN (1U) //!< Bit field size in bits for CAN_ESR1_TXWRN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_TXWRN field. +#define BR_CAN_ESR1_TXWRN(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_TXWRN)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field STFERR[10] (RO) + * + * This bit indicates that a Stuffing Error has been etected. + * + * Values: + * - 0 - No such occurrence. + * - 1 - A Stuffing Error occurred since last read of this register. + */ +//@{ +#define BP_CAN_ESR1_STFERR (10U) //!< Bit position for CAN_ESR1_STFERR. +#define BM_CAN_ESR1_STFERR (0x00000400U) //!< Bit mask for CAN_ESR1_STFERR. +#define BS_CAN_ESR1_STFERR (1U) //!< Bit field size in bits for CAN_ESR1_STFERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_STFERR field. +#define BR_CAN_ESR1_STFERR(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_STFERR)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field FRMERR[11] (RO) + * + * This bit indicates that a Form Error has been detected by the receiver node, + * that is, a fixed-form bit field contains at least one illegal bit. + * + * Values: + * - 0 - No such occurrence. + * - 1 - A Form Error occurred since last read of this register. + */ +//@{ +#define BP_CAN_ESR1_FRMERR (11U) //!< Bit position for CAN_ESR1_FRMERR. +#define BM_CAN_ESR1_FRMERR (0x00000800U) //!< Bit mask for CAN_ESR1_FRMERR. +#define BS_CAN_ESR1_FRMERR (1U) //!< Bit field size in bits for CAN_ESR1_FRMERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_FRMERR field. +#define BR_CAN_ESR1_FRMERR(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_FRMERR)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field CRCERR[12] (RO) + * + * This bit indicates that a CRC Error has been detected by the receiver node, + * that is, the calculated CRC is different from the received. + * + * Values: + * - 0 - No such occurrence. + * - 1 - A CRC error occurred since last read of this register. + */ +//@{ +#define BP_CAN_ESR1_CRCERR (12U) //!< Bit position for CAN_ESR1_CRCERR. +#define BM_CAN_ESR1_CRCERR (0x00001000U) //!< Bit mask for CAN_ESR1_CRCERR. +#define BS_CAN_ESR1_CRCERR (1U) //!< Bit field size in bits for CAN_ESR1_CRCERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_CRCERR field. +#define BR_CAN_ESR1_CRCERR(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_CRCERR)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field ACKERR[13] (RO) + * + * This bit indicates that an Acknowledge Error has been detected by the + * transmitter node, that is, a dominant bit has not been detected during the ACK SLOT. + * + * Values: + * - 0 - No such occurrence. + * - 1 - An ACK error occurred since last read of this register. + */ +//@{ +#define BP_CAN_ESR1_ACKERR (13U) //!< Bit position for CAN_ESR1_ACKERR. +#define BM_CAN_ESR1_ACKERR (0x00002000U) //!< Bit mask for CAN_ESR1_ACKERR. +#define BS_CAN_ESR1_ACKERR (1U) //!< Bit field size in bits for CAN_ESR1_ACKERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_ACKERR field. +#define BR_CAN_ESR1_ACKERR(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_ACKERR)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field BIT0ERR[14] (RO) + * + * This bit indicates when an inconsistency occurs between the transmitted and + * the received bit in a message. + * + * Values: + * - 0 - No such occurrence. + * - 1 - At least one bit sent as dominant is received as recessive. + */ +//@{ +#define BP_CAN_ESR1_BIT0ERR (14U) //!< Bit position for CAN_ESR1_BIT0ERR. +#define BM_CAN_ESR1_BIT0ERR (0x00004000U) //!< Bit mask for CAN_ESR1_BIT0ERR. +#define BS_CAN_ESR1_BIT0ERR (1U) //!< Bit field size in bits for CAN_ESR1_BIT0ERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_BIT0ERR field. +#define BR_CAN_ESR1_BIT0ERR(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_BIT0ERR)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field BIT1ERR[15] (RO) + * + * This bit indicates when an inconsistency occurs between the transmitted and + * the received bit in a message. This bit is not set by a transmitter in case of + * arbitration field or ACK slot, or in case of a node sending a passive error + * flag that detects dominant bits. + * + * Values: + * - 0 - No such occurrence. + * - 1 - At least one bit sent as recessive is received as dominant. + */ +//@{ +#define BP_CAN_ESR1_BIT1ERR (15U) //!< Bit position for CAN_ESR1_BIT1ERR. +#define BM_CAN_ESR1_BIT1ERR (0x00008000U) //!< Bit mask for CAN_ESR1_BIT1ERR. +#define BS_CAN_ESR1_BIT1ERR (1U) //!< Bit field size in bits for CAN_ESR1_BIT1ERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_BIT1ERR field. +#define BR_CAN_ESR1_BIT1ERR(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_BIT1ERR)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field RWRNINT[16] (W1C) + * + * If the WRNEN bit in MCR is asserted, the RWRNINT bit is set when the RXWRN + * flag transitions from 0 to 1, meaning that the Rx error counters reached 96. If + * the corresponding mask bit in the Control Register (RWRNMSK) is set, an + * interrupt is generated to the CPU. This bit is cleared by writing it to 1. When + * WRNEN is negated, this flag is masked. CPU must clear this flag before disabling + * the bit. Otherwise it will be set when the WRNEN is set again. Writing 0 has no + * effect. This bit is not updated during Freeze mode. + * + * Values: + * - 0 - No such occurrence. + * - 1 - The Rx error counter transitioned from less than 96 to greater than or + * equal to 96. + */ +//@{ +#define BP_CAN_ESR1_RWRNINT (16U) //!< Bit position for CAN_ESR1_RWRNINT. +#define BM_CAN_ESR1_RWRNINT (0x00010000U) //!< Bit mask for CAN_ESR1_RWRNINT. +#define BS_CAN_ESR1_RWRNINT (1U) //!< Bit field size in bits for CAN_ESR1_RWRNINT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_RWRNINT field. +#define BR_CAN_ESR1_RWRNINT(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_RWRNINT)) +#endif + +//! @brief Format value for bitfield CAN_ESR1_RWRNINT. +#define BF_CAN_ESR1_RWRNINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ESR1_RWRNINT), uint32_t) & BM_CAN_ESR1_RWRNINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RWRNINT field to a new value. +#define BW_CAN_ESR1_RWRNINT(x, v) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_RWRNINT) = (v)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field TWRNINT[17] (W1C) + * + * If the WRNEN bit in MCR is asserted, the TWRNINT bit is set when the TXWRN + * flag transitions from 0 to 1, meaning that the Tx error counter reached 96. If + * the corresponding mask bit in the Control Register (TWRNMSK) is set, an + * interrupt is generated to the CPU. This bit is cleared by writing it to 1. When WRNEN + * is negated, this flag is masked. CPU must clear this flag before disabling + * the bit. Otherwise it will be set when the WRNEN is set again. Writing 0 has no + * effect. This flag is not generated during Bus Off state. This bit is not + * updated during Freeze mode. + * + * Values: + * - 0 - No such occurrence. + * - 1 - The Tx error counter transitioned from less than 96 to greater than or + * equal to 96. + */ +//@{ +#define BP_CAN_ESR1_TWRNINT (17U) //!< Bit position for CAN_ESR1_TWRNINT. +#define BM_CAN_ESR1_TWRNINT (0x00020000U) //!< Bit mask for CAN_ESR1_TWRNINT. +#define BS_CAN_ESR1_TWRNINT (1U) //!< Bit field size in bits for CAN_ESR1_TWRNINT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_TWRNINT field. +#define BR_CAN_ESR1_TWRNINT(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_TWRNINT)) +#endif + +//! @brief Format value for bitfield CAN_ESR1_TWRNINT. +#define BF_CAN_ESR1_TWRNINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ESR1_TWRNINT), uint32_t) & BM_CAN_ESR1_TWRNINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TWRNINT field to a new value. +#define BW_CAN_ESR1_TWRNINT(x, v) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_TWRNINT) = (v)) +#endif +//@} + +/*! + * @name Register CAN_ESR1, field SYNCH[18] (RO) + * + * This read-only flag indicates whether the FlexCAN is synchronized to the CAN + * bus and able to participate in the communication process. It is set and + * cleared by the FlexCAN. See the table in the overall CAN_ESR1 register description. + * + * Values: + * - 0 - FlexCAN is not synchronized to the CAN bus. + * - 1 - FlexCAN is synchronized to the CAN bus. + */ +//@{ +#define BP_CAN_ESR1_SYNCH (18U) //!< Bit position for CAN_ESR1_SYNCH. +#define BM_CAN_ESR1_SYNCH (0x00040000U) //!< Bit mask for CAN_ESR1_SYNCH. +#define BS_CAN_ESR1_SYNCH (1U) //!< Bit field size in bits for CAN_ESR1_SYNCH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR1_SYNCH field. +#define BR_CAN_ESR1_SYNCH(x) (BITBAND_ACCESS32(HW_CAN_ESR1_ADDR(x), BP_CAN_ESR1_SYNCH)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_IMASK1 - Interrupt Masks 1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_IMASK1 - Interrupt Masks 1 register (RW) + * + * Reset value: 0x00000000U + * + * This register allows any number of a range of the 32 Message Buffer + * Interrupts to be enabled or disabled for MB31 to MB0. It contains one interrupt mask + * bit per buffer, enabling the CPU to determine which buffer generates an + * interrupt after a successful transmission or reception, that is, when the + * corresponding IFLAG1 bit is set. + */ +typedef union _hw_can_imask1 +{ + uint32_t U; + struct _hw_can_imask1_bitfields + { + uint32_t BUFLM : 32; //!< [31:0] Buffer MB i Mask + } B; +} hw_can_imask1_t; +#endif + +/*! + * @name Constants and macros for entire CAN_IMASK1 register + */ +//@{ +#define HW_CAN_IMASK1_ADDR(x) (REGS_CAN_BASE(x) + 0x28U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_IMASK1(x) (*(__IO hw_can_imask1_t *) HW_CAN_IMASK1_ADDR(x)) +#define HW_CAN_IMASK1_RD(x) (HW_CAN_IMASK1(x).U) +#define HW_CAN_IMASK1_WR(x, v) (HW_CAN_IMASK1(x).U = (v)) +#define HW_CAN_IMASK1_SET(x, v) (HW_CAN_IMASK1_WR(x, HW_CAN_IMASK1_RD(x) | (v))) +#define HW_CAN_IMASK1_CLR(x, v) (HW_CAN_IMASK1_WR(x, HW_CAN_IMASK1_RD(x) & ~(v))) +#define HW_CAN_IMASK1_TOG(x, v) (HW_CAN_IMASK1_WR(x, HW_CAN_IMASK1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_IMASK1 bitfields + */ + +/*! + * @name Register CAN_IMASK1, field BUFLM[31:0] (RW) + * + * Each bit enables or disables the corresponding FlexCAN Message Buffer + * Interrupt for MB31 to MB0. Setting or clearing a bit in the IMASK1 Register can + * assert or negate an interrupt request, if the corresponding IFLAG1 bit is set. + * + * Values: + * - 0 - The corresponding buffer Interrupt is disabled. + * - 1 - The corresponding buffer Interrupt is enabled. + */ +//@{ +#define BP_CAN_IMASK1_BUFLM (0U) //!< Bit position for CAN_IMASK1_BUFLM. +#define BM_CAN_IMASK1_BUFLM (0xFFFFFFFFU) //!< Bit mask for CAN_IMASK1_BUFLM. +#define BS_CAN_IMASK1_BUFLM (32U) //!< Bit field size in bits for CAN_IMASK1_BUFLM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_IMASK1_BUFLM field. +#define BR_CAN_IMASK1_BUFLM(x) (HW_CAN_IMASK1(x).U) +#endif + +//! @brief Format value for bitfield CAN_IMASK1_BUFLM. +#define BF_CAN_IMASK1_BUFLM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_IMASK1_BUFLM), uint32_t) & BM_CAN_IMASK1_BUFLM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BUFLM field to a new value. +#define BW_CAN_IMASK1_BUFLM(x, v) (HW_CAN_IMASK1_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_IFLAG1 - Interrupt Flags 1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_IFLAG1 - Interrupt Flags 1 register (W1C) + * + * Reset value: 0x00000000U + * + * This register defines the flags for the 32 Message Buffer interrupts for MB31 + * to MB0. It contains one interrupt flag bit per buffer. Each successful + * transmission or reception sets the corresponding IFLAG1 bit. If the corresponding + * IMASK1 bit is set, an interrupt will be generated. The interrupt flag must be + * cleared by writing 1 to it. Writing 0 has no effect. The BUF7I to BUF5I flags + * are also used to represent FIFO interrupts when the Rx FIFO is enabled. When the + * bit MCR[RFEN] is set, the function of the 8 least significant interrupt flags + * BUF[7:0]I changes: BUF7I, BUF6I and BUF5I indicate operating conditions of + * the FIFO, and the BUF4TO0I field is reserved. Before enabling the RFEN, the CPU + * must service the IFLAG bits asserted in the Rx FIFO region; see Section "Rx + * FIFO". Otherwise, these IFLAG bits will mistakenly show the related MBs now + * belonging to FIFO as having contents to be serviced. When the RFEN bit is negated, + * the FIFO flags must be cleared. The same care must be taken when an RFFN + * value is selected extending Rx FIFO filters beyond MB7. For example, when RFFN is + * 0x8, the MB0-23 range is occupied by Rx FIFO filters and related IFLAG bits + * must be cleared. Before updating MCR[MAXMB] field, CPU must service the IFLAG1 + * bits whose MB value is greater than the MCR[MAXMB] to be updated; otherwise, + * they will remain set and be inconsistent with the number of MBs available. + */ +typedef union _hw_can_iflag1 +{ + uint32_t U; + struct _hw_can_iflag1_bitfields + { + uint32_t BUF0I : 1; //!< [0] Buffer MB0 Interrupt Or "reserved" + uint32_t BUF4TO1I : 4; //!< [4:1] Buffer MB i Interrupt Or "reserved" + uint32_t BUF5I : 1; //!< [5] Buffer MB5 Interrupt Or "Frames + //! available in Rx FIFO" + uint32_t BUF6I : 1; //!< [6] Buffer MB6 Interrupt Or "Rx FIFO Warning" + uint32_t BUF7I : 1; //!< [7] Buffer MB7 Interrupt Or "Rx FIFO + //! Overflow" + uint32_t BUF31TO8I : 24; //!< [31:8] Buffer MBi Interrupt + } B; +} hw_can_iflag1_t; +#endif + +/*! + * @name Constants and macros for entire CAN_IFLAG1 register + */ +//@{ +#define HW_CAN_IFLAG1_ADDR(x) (REGS_CAN_BASE(x) + 0x30U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_IFLAG1(x) (*(__IO hw_can_iflag1_t *) HW_CAN_IFLAG1_ADDR(x)) +#define HW_CAN_IFLAG1_RD(x) (HW_CAN_IFLAG1(x).U) +#define HW_CAN_IFLAG1_WR(x, v) (HW_CAN_IFLAG1(x).U = (v)) +#define HW_CAN_IFLAG1_SET(x, v) (HW_CAN_IFLAG1_WR(x, HW_CAN_IFLAG1_RD(x) | (v))) +#define HW_CAN_IFLAG1_CLR(x, v) (HW_CAN_IFLAG1_WR(x, HW_CAN_IFLAG1_RD(x) & ~(v))) +#define HW_CAN_IFLAG1_TOG(x, v) (HW_CAN_IFLAG1_WR(x, HW_CAN_IFLAG1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_IFLAG1 bitfields + */ + +/*! + * @name Register CAN_IFLAG1, field BUF0I[0] (W1C) + * + * When the RFEN bit in the MCR is cleared (Rx FIFO disabled), this bit flags + * the interrupt for MB0. This flag is cleared by the FlexCAN whenever the bit + * MCR[RFEN] is changed by CPU writes. The BUF0I flag is reserved when MCR[RFEN] is + * set. + * + * Values: + * - 0 - The corresponding buffer has no occurrence of successfully completed + * transmission or reception when MCR[RFEN]=0. + * - 1 - The corresponding buffer has successfully completed transmission or + * reception when MCR[RFEN]=0. + */ +//@{ +#define BP_CAN_IFLAG1_BUF0I (0U) //!< Bit position for CAN_IFLAG1_BUF0I. +#define BM_CAN_IFLAG1_BUF0I (0x00000001U) //!< Bit mask for CAN_IFLAG1_BUF0I. +#define BS_CAN_IFLAG1_BUF0I (1U) //!< Bit field size in bits for CAN_IFLAG1_BUF0I. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_IFLAG1_BUF0I field. +#define BR_CAN_IFLAG1_BUF0I(x) (BITBAND_ACCESS32(HW_CAN_IFLAG1_ADDR(x), BP_CAN_IFLAG1_BUF0I)) +#endif + +//! @brief Format value for bitfield CAN_IFLAG1_BUF0I. +#define BF_CAN_IFLAG1_BUF0I(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_IFLAG1_BUF0I), uint32_t) & BM_CAN_IFLAG1_BUF0I) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BUF0I field to a new value. +#define BW_CAN_IFLAG1_BUF0I(x, v) (BITBAND_ACCESS32(HW_CAN_IFLAG1_ADDR(x), BP_CAN_IFLAG1_BUF0I) = (v)) +#endif +//@} + +/*! + * @name Register CAN_IFLAG1, field BUF4TO1I[4:1] (W1C) + * + * When the RFEN bit in the MCR is cleared (Rx FIFO disabled), these bits flag + * the interrupts for MB4 to MB1. These flags are cleared by the FlexCAN whenever + * the bit MCR[RFEN] is changed by CPU writes. The BUF4TO1I flags are reserved + * when MCR[RFEN] is set. + * + * Values: + * - 0 - The corresponding buffer has no occurrence of successfully completed + * transmission or reception when MCR[RFEN]=0. + * - 1 - The corresponding buffer has successfully completed transmission or + * reception when MCR[RFEN]=0. + */ +//@{ +#define BP_CAN_IFLAG1_BUF4TO1I (1U) //!< Bit position for CAN_IFLAG1_BUF4TO1I. +#define BM_CAN_IFLAG1_BUF4TO1I (0x0000001EU) //!< Bit mask for CAN_IFLAG1_BUF4TO1I. +#define BS_CAN_IFLAG1_BUF4TO1I (4U) //!< Bit field size in bits for CAN_IFLAG1_BUF4TO1I. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_IFLAG1_BUF4TO1I field. +#define BR_CAN_IFLAG1_BUF4TO1I(x) (HW_CAN_IFLAG1(x).B.BUF4TO1I) +#endif + +//! @brief Format value for bitfield CAN_IFLAG1_BUF4TO1I. +#define BF_CAN_IFLAG1_BUF4TO1I(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_IFLAG1_BUF4TO1I), uint32_t) & BM_CAN_IFLAG1_BUF4TO1I) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BUF4TO1I field to a new value. +#define BW_CAN_IFLAG1_BUF4TO1I(x, v) (HW_CAN_IFLAG1_WR(x, (HW_CAN_IFLAG1_RD(x) & ~BM_CAN_IFLAG1_BUF4TO1I) | BF_CAN_IFLAG1_BUF4TO1I(v))) +#endif +//@} + +/*! + * @name Register CAN_IFLAG1, field BUF5I[5] (W1C) + * + * When the RFEN bit in the MCR is cleared (Rx FIFO disabled), this bit flags + * the interrupt for MB5. This flag is cleared by the FlexCAN whenever the bit + * MCR[RFEN] is changed by CPU writes. The BUF5I flag represents "Frames available in + * Rx FIFO" when MCR[RFEN] is set. In this case, the flag indicates that at + * least one frame is available to be read from the Rx FIFO. + * + * Values: + * - 0 - No occurrence of MB5 completing transmission/reception when + * MCR[RFEN]=0, or of frame(s) available in the FIFO, when MCR[RFEN]=1 + * - 1 - MB5 completed transmission/reception when MCR[RFEN]=0, or frame(s) + * available in the Rx FIFO when MCR[RFEN]=1 + */ +//@{ +#define BP_CAN_IFLAG1_BUF5I (5U) //!< Bit position for CAN_IFLAG1_BUF5I. +#define BM_CAN_IFLAG1_BUF5I (0x00000020U) //!< Bit mask for CAN_IFLAG1_BUF5I. +#define BS_CAN_IFLAG1_BUF5I (1U) //!< Bit field size in bits for CAN_IFLAG1_BUF5I. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_IFLAG1_BUF5I field. +#define BR_CAN_IFLAG1_BUF5I(x) (BITBAND_ACCESS32(HW_CAN_IFLAG1_ADDR(x), BP_CAN_IFLAG1_BUF5I)) +#endif + +//! @brief Format value for bitfield CAN_IFLAG1_BUF5I. +#define BF_CAN_IFLAG1_BUF5I(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_IFLAG1_BUF5I), uint32_t) & BM_CAN_IFLAG1_BUF5I) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BUF5I field to a new value. +#define BW_CAN_IFLAG1_BUF5I(x, v) (BITBAND_ACCESS32(HW_CAN_IFLAG1_ADDR(x), BP_CAN_IFLAG1_BUF5I) = (v)) +#endif +//@} + +/*! + * @name Register CAN_IFLAG1, field BUF6I[6] (W1C) + * + * When the RFEN bit in the MCR is cleared (Rx FIFO disabled), this bit flags + * the interrupt for MB6. This flag is cleared by the FlexCAN whenever the bit + * MCR[RFEN] is changed by CPU writes. The BUF6I flag represents "Rx FIFO Warning" + * when MCR[RFEN] is set. In this case, the flag indicates when the number of + * unread messages within the Rx FIFO is increased to 5 from 4 due to the reception of + * a new one, meaning that the Rx FIFO is almost full. Note that if the flag is + * cleared while the number of unread messages is greater than 4, it does not + * assert again until the number of unread messages within the Rx FIFO is decreased + * to be equal to or less than 4. + * + * Values: + * - 0 - No occurrence of MB6 completing transmission/reception when + * MCR[RFEN]=0, or of Rx FIFO almost full when MCR[RFEN]=1 + * - 1 - MB6 completed transmission/reception when MCR[RFEN]=0, or Rx FIFO + * almost full when MCR[RFEN]=1 + */ +//@{ +#define BP_CAN_IFLAG1_BUF6I (6U) //!< Bit position for CAN_IFLAG1_BUF6I. +#define BM_CAN_IFLAG1_BUF6I (0x00000040U) //!< Bit mask for CAN_IFLAG1_BUF6I. +#define BS_CAN_IFLAG1_BUF6I (1U) //!< Bit field size in bits for CAN_IFLAG1_BUF6I. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_IFLAG1_BUF6I field. +#define BR_CAN_IFLAG1_BUF6I(x) (BITBAND_ACCESS32(HW_CAN_IFLAG1_ADDR(x), BP_CAN_IFLAG1_BUF6I)) +#endif + +//! @brief Format value for bitfield CAN_IFLAG1_BUF6I. +#define BF_CAN_IFLAG1_BUF6I(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_IFLAG1_BUF6I), uint32_t) & BM_CAN_IFLAG1_BUF6I) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BUF6I field to a new value. +#define BW_CAN_IFLAG1_BUF6I(x, v) (BITBAND_ACCESS32(HW_CAN_IFLAG1_ADDR(x), BP_CAN_IFLAG1_BUF6I) = (v)) +#endif +//@} + +/*! + * @name Register CAN_IFLAG1, field BUF7I[7] (W1C) + * + * When the RFEN bit in the MCR is cleared (Rx FIFO disabled), this bit flags + * the interrupt for MB7. This flag is cleared by the FlexCAN whenever the bit + * MCR[RFEN] is changed by CPU writes. The BUF7I flag represents "Rx FIFO Overflow" + * when MCR[RFEN] is set. In this case, the flag indicates that a message was lost + * because the Rx FIFO is full. Note that the flag will not be asserted when the + * Rx FIFO is full and the message was captured by a Mailbox. + * + * Values: + * - 0 - No occurrence of MB7 completing transmission/reception when + * MCR[RFEN]=0, or of Rx FIFO overflow when MCR[RFEN]=1 + * - 1 - MB7 completed transmission/reception when MCR[RFEN]=0, or Rx FIFO + * overflow when MCR[RFEN]=1 + */ +//@{ +#define BP_CAN_IFLAG1_BUF7I (7U) //!< Bit position for CAN_IFLAG1_BUF7I. +#define BM_CAN_IFLAG1_BUF7I (0x00000080U) //!< Bit mask for CAN_IFLAG1_BUF7I. +#define BS_CAN_IFLAG1_BUF7I (1U) //!< Bit field size in bits for CAN_IFLAG1_BUF7I. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_IFLAG1_BUF7I field. +#define BR_CAN_IFLAG1_BUF7I(x) (BITBAND_ACCESS32(HW_CAN_IFLAG1_ADDR(x), BP_CAN_IFLAG1_BUF7I)) +#endif + +//! @brief Format value for bitfield CAN_IFLAG1_BUF7I. +#define BF_CAN_IFLAG1_BUF7I(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_IFLAG1_BUF7I), uint32_t) & BM_CAN_IFLAG1_BUF7I) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BUF7I field to a new value. +#define BW_CAN_IFLAG1_BUF7I(x, v) (BITBAND_ACCESS32(HW_CAN_IFLAG1_ADDR(x), BP_CAN_IFLAG1_BUF7I) = (v)) +#endif +//@} + +/*! + * @name Register CAN_IFLAG1, field BUF31TO8I[31:8] (W1C) + * + * Each bit flags the corresponding FlexCAN Message Buffer interrupt for MB31 to + * MB8. + * + * Values: + * - 0 - The corresponding buffer has no occurrence of successfully completed + * transmission or reception. + * - 1 - The corresponding buffer has successfully completed transmission or + * reception. + */ +//@{ +#define BP_CAN_IFLAG1_BUF31TO8I (8U) //!< Bit position for CAN_IFLAG1_BUF31TO8I. +#define BM_CAN_IFLAG1_BUF31TO8I (0xFFFFFF00U) //!< Bit mask for CAN_IFLAG1_BUF31TO8I. +#define BS_CAN_IFLAG1_BUF31TO8I (24U) //!< Bit field size in bits for CAN_IFLAG1_BUF31TO8I. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_IFLAG1_BUF31TO8I field. +#define BR_CAN_IFLAG1_BUF31TO8I(x) (HW_CAN_IFLAG1(x).B.BUF31TO8I) +#endif + +//! @brief Format value for bitfield CAN_IFLAG1_BUF31TO8I. +#define BF_CAN_IFLAG1_BUF31TO8I(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_IFLAG1_BUF31TO8I), uint32_t) & BM_CAN_IFLAG1_BUF31TO8I) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BUF31TO8I field to a new value. +#define BW_CAN_IFLAG1_BUF31TO8I(x, v) (HW_CAN_IFLAG1_WR(x, (HW_CAN_IFLAG1_RD(x) & ~BM_CAN_IFLAG1_BUF31TO8I) | BF_CAN_IFLAG1_BUF31TO8I(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_CTRL2 - Control 2 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_CTRL2 - Control 2 register (RW) + * + * Reset value: 0x00B00000U + * + * This register contains control bits for CAN errors, FIFO features, and mode + * selection. + */ +typedef union _hw_can_ctrl2 +{ + uint32_t U; + struct _hw_can_ctrl2_bitfields + { + uint32_t RESERVED0 : 16; //!< [15:0] + uint32_t EACEN : 1; //!< [16] Entire Frame Arbitration Field + //! Comparison Enable For Rx Mailboxes + uint32_t RRS : 1; //!< [17] Remote Request Storing + uint32_t MRP : 1; //!< [18] Mailboxes Reception Priority + uint32_t TASD : 5; //!< [23:19] Tx Arbitration Start Delay + uint32_t RFFN : 4; //!< [27:24] Number Of Rx FIFO Filters + uint32_t WRMFRZ : 1; //!< [28] Write-Access To Memory In Freeze Mode + uint32_t RESERVED1 : 3; //!< [31:29] + } B; +} hw_can_ctrl2_t; +#endif + +/*! + * @name Constants and macros for entire CAN_CTRL2 register + */ +//@{ +#define HW_CAN_CTRL2_ADDR(x) (REGS_CAN_BASE(x) + 0x34U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_CTRL2(x) (*(__IO hw_can_ctrl2_t *) HW_CAN_CTRL2_ADDR(x)) +#define HW_CAN_CTRL2_RD(x) (HW_CAN_CTRL2(x).U) +#define HW_CAN_CTRL2_WR(x, v) (HW_CAN_CTRL2(x).U = (v)) +#define HW_CAN_CTRL2_SET(x, v) (HW_CAN_CTRL2_WR(x, HW_CAN_CTRL2_RD(x) | (v))) +#define HW_CAN_CTRL2_CLR(x, v) (HW_CAN_CTRL2_WR(x, HW_CAN_CTRL2_RD(x) & ~(v))) +#define HW_CAN_CTRL2_TOG(x, v) (HW_CAN_CTRL2_WR(x, HW_CAN_CTRL2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_CTRL2 bitfields + */ + +/*! + * @name Register CAN_CTRL2, field EACEN[16] (RW) + * + * This bit controls the comparison of IDE and RTR bits whithin Rx Mailboxes + * filters with their corresponding bits in the incoming frame by the matching + * process. This bit does not affect matching for Rx FIFO. This bit can be written + * only in Freeze mode because it is blocked by hardware in other modes. + * + * Values: + * - 0 - Rx Mailbox filter's IDE bit is always compared and RTR is never + * compared despite mask bits. + * - 1 - Enables the comparison of both Rx Mailbox filter's IDE and RTR bit with + * their corresponding bits within the incoming frame. Mask bits do apply. + */ +//@{ +#define BP_CAN_CTRL2_EACEN (16U) //!< Bit position for CAN_CTRL2_EACEN. +#define BM_CAN_CTRL2_EACEN (0x00010000U) //!< Bit mask for CAN_CTRL2_EACEN. +#define BS_CAN_CTRL2_EACEN (1U) //!< Bit field size in bits for CAN_CTRL2_EACEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL2_EACEN field. +#define BR_CAN_CTRL2_EACEN(x) (BITBAND_ACCESS32(HW_CAN_CTRL2_ADDR(x), BP_CAN_CTRL2_EACEN)) +#endif + +//! @brief Format value for bitfield CAN_CTRL2_EACEN. +#define BF_CAN_CTRL2_EACEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL2_EACEN), uint32_t) & BM_CAN_CTRL2_EACEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EACEN field to a new value. +#define BW_CAN_CTRL2_EACEN(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL2_ADDR(x), BP_CAN_CTRL2_EACEN) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL2, field RRS[17] (RW) + * + * If this bit is asserted Remote Request Frame is submitted to a matching + * process and stored in the corresponding Message Buffer in the same fashion of a + * Data Frame. No automatic Remote Response Frame will be generated. If this bit is + * negated the Remote Request Frame is submitted to a matching process and an + * automatic Remote Response Frame is generated if a Message Buffer with CODE=0b1010 + * is found with the same ID. This bit can be written only in Freeze mode + * because it is blocked by hardware in other modes. + * + * Values: + * - 0 - Remote Response Frame is generated. + * - 1 - Remote Request Frame is stored. + */ +//@{ +#define BP_CAN_CTRL2_RRS (17U) //!< Bit position for CAN_CTRL2_RRS. +#define BM_CAN_CTRL2_RRS (0x00020000U) //!< Bit mask for CAN_CTRL2_RRS. +#define BS_CAN_CTRL2_RRS (1U) //!< Bit field size in bits for CAN_CTRL2_RRS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL2_RRS field. +#define BR_CAN_CTRL2_RRS(x) (BITBAND_ACCESS32(HW_CAN_CTRL2_ADDR(x), BP_CAN_CTRL2_RRS)) +#endif + +//! @brief Format value for bitfield CAN_CTRL2_RRS. +#define BF_CAN_CTRL2_RRS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL2_RRS), uint32_t) & BM_CAN_CTRL2_RRS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RRS field to a new value. +#define BW_CAN_CTRL2_RRS(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL2_ADDR(x), BP_CAN_CTRL2_RRS) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL2, field MRP[18] (RW) + * + * If this bit is set the matching process starts from the Mailboxes and if no + * match occurs the matching continues on the Rx FIFO. This bit can be written + * only in Freeze mode because it is blocked by hardware in other modes. + * + * Values: + * - 0 - Matching starts from Rx FIFO and continues on Mailboxes. + * - 1 - Matching starts from Mailboxes and continues on Rx FIFO. + */ +//@{ +#define BP_CAN_CTRL2_MRP (18U) //!< Bit position for CAN_CTRL2_MRP. +#define BM_CAN_CTRL2_MRP (0x00040000U) //!< Bit mask for CAN_CTRL2_MRP. +#define BS_CAN_CTRL2_MRP (1U) //!< Bit field size in bits for CAN_CTRL2_MRP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL2_MRP field. +#define BR_CAN_CTRL2_MRP(x) (BITBAND_ACCESS32(HW_CAN_CTRL2_ADDR(x), BP_CAN_CTRL2_MRP)) +#endif + +//! @brief Format value for bitfield CAN_CTRL2_MRP. +#define BF_CAN_CTRL2_MRP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL2_MRP), uint32_t) & BM_CAN_CTRL2_MRP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MRP field to a new value. +#define BW_CAN_CTRL2_MRP(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL2_ADDR(x), BP_CAN_CTRL2_MRP) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CTRL2, field TASD[23:19] (RW) + * + * This 5-bit field indicates how many CAN bits the Tx arbitration process start + * point can be delayed from the first bit of CRC field on CAN bus. This field + * can be written only in Freeze mode because it is blocked by hardware in other + * modes. This field is useful to optimize the transmit performance based on + * factors such as: peripheral/serial clock ratio, CAN bit timing and number of MBs. + * The duration of an arbitration process, in terms of CAN bits, is directly + * proportional to the number of available MBs and CAN baud rate and inversely + * proportional to the peripheral clock frequency. The optimal arbitration timing is + * that in which the last MB is scanned right before the first bit of the + * Intermission field of a CAN frame. Therefore, if there are few MBs and the system/serial + * clock ratio is high and the CAN baud rate is low then the arbitration can be + * delayed and vice-versa. If TASD is 0 then the arbitration start is not + * delayed, thus the CPU has less time to configure a Tx MB for the next arbitration, + * but more time is reserved for arbitration. On the other hand, if TASD is 24 then + * the CPU can configure a Tx MB later and less time is reserved for + * arbitration. If too little time is reserved for arbitration the FlexCAN may be not able + * to find winner MBs in time to compete with other nodes for the CAN bus. If the + * arbitration ends too much time before the first bit of Intermission field then + * there is a chance that the CPU reconfigures some Tx MBs and the winner MB is + * not the best to be transmitted. The optimal configuration for TASD can be + * calculated as: TASD = 25 - {f CANCLK * [MAXMB + 3 - (RFEN * 8) - (RFEN * RFFN * + * 2)] * 2} / {f SYS * [1+(PSEG1+1)+(PSEG2+1)+(PROPSEG+1)] * (PRESDIV+1)} where: f + * CANCLK is the Protocol Engine (PE) Clock (see section "Protocol Timing"), in + * Hz f SYS is the peripheral clock, in Hz MAXMB is the value in CTRL1[MAXMB] + * field RFEN is the value in CTRL1[RFEN] bit RFFN is the value in CTRL2[RFFN] field + * PSEG1 is the value in CTRL1[PSEG1] field PSEG2 is the value in CTRL1[PSEG2] + * field PROPSEG is the value in CTRL1[PROPSEG] field PRESDIV is the value in + * CTRL1[PRESDIV] field See Section "Arbitration process" and Section "Protocol + * Timing" for more details. + */ +//@{ +#define BP_CAN_CTRL2_TASD (19U) //!< Bit position for CAN_CTRL2_TASD. +#define BM_CAN_CTRL2_TASD (0x00F80000U) //!< Bit mask for CAN_CTRL2_TASD. +#define BS_CAN_CTRL2_TASD (5U) //!< Bit field size in bits for CAN_CTRL2_TASD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL2_TASD field. +#define BR_CAN_CTRL2_TASD(x) (HW_CAN_CTRL2(x).B.TASD) +#endif + +//! @brief Format value for bitfield CAN_CTRL2_TASD. +#define BF_CAN_CTRL2_TASD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL2_TASD), uint32_t) & BM_CAN_CTRL2_TASD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TASD field to a new value. +#define BW_CAN_CTRL2_TASD(x, v) (HW_CAN_CTRL2_WR(x, (HW_CAN_CTRL2_RD(x) & ~BM_CAN_CTRL2_TASD) | BF_CAN_CTRL2_TASD(v))) +#endif +//@} + +/*! + * @name Register CAN_CTRL2, field RFFN[27:24] (RW) + * + * This 4-bit field defines the number of Rx FIFO filters, as shown in the + * following table. The maximum selectable number of filters is determined by the MCU. + * This field can only be written in Freeze mode as it is blocked by hardware in + * other modes. This field must not be programmed with values that make the + * number of Message Buffers occupied by Rx FIFO and ID Filter exceed the number of + * Mailboxes present, defined by MCR[MAXMB]. Each group of eight filters occupies + * a memory space equivalent to two Message Buffers which means that the more + * filters are implemented the less Mailboxes will be available. Considering that + * the Rx FIFO occupies the memory space originally reserved for MB0-5, RFFN should + * be programmed with a value correponding to a number of filters not greater + * than the number of available memory words which can be calculated as follows: + * (SETUP_MB - 6) * 4 where SETUP_MB is the least between NUMBER_OF_MB and MAXMB. + * The number of remaining Mailboxes available will be: (SETUP_MB - 8) - (RFFN * + * 2) If the Number of Rx FIFO Filters programmed through RFFN exceeds the + * SETUP_MB value (memory space available) the exceeding ones will not be functional. + * RFFN[3:0] Number of Rx FIFO filters Message Buffers occupied by Rx FIFO and ID + * Filter Table Remaining Available MailboxesThe number of the last remaining + * available mailboxes is defined by the least value between the parameter + * NUMBER_OF_MB minus 1 and the MCR[MAXMB] field. Rx FIFO ID Filter Table Elements Affected + * by Rx Individual MasksIf Rx Individual Mask Registers are not enabled then + * all Rx FIFO filters are affected by the Rx FIFO Global Mask. Rx FIFO ID Filter + * Table Elements Affected by Rx FIFO Global Mask #rxfgmask-note 0x0 8 MB 0-7 MB + * 8-63 Elements 0-7 none 0x1 16 MB 0-9 MB 10-63 Elements 0-9 Elements 10-15 0x2 + * 24 MB 0-11 MB 12-63 Elements 0-11 Elements 12-23 0x3 32 MB 0-13 MB 14-63 + * Elements 0-13 Elements 14-31 0x4 40 MB 0-15 MB 16-63 Elements 0-15 Elements 16-39 + * 0x5 48 MB 0-17 MB 18-63 Elements 0-17 Elements 18-47 0x6 56 MB 0-19 MB 20-63 + * Elements 0-19 Elements 20-55 0x7 64 MB 0-21 MB 22-63 Elements 0-21 Elements 22-63 + * 0x8 72 MB 0-23 MB 24-63 Elements 0-23 Elements 24-71 0x9 80 MB 0-25 MB 26-63 + * Elements 0-25 Elements 26-79 0xA 88 MB 0-27 MB 28-63 Elements 0-27 Elements + * 28-87 0xB 96 MB 0-29 MB 30-63 Elements 0-29 Elements 30-95 0xC 104 MB 0-31 MB + * 32-63 Elements 0-31 Elements 32-103 0xD 112 MB 0-33 MB 34-63 Elements 0-31 + * Elements 32-111 0xE 120 MB 0-35 MB 36-63 Elements 0-31 Elements 32-119 0xF 128 MB + * 0-37 MB 38-63 Elements 0-31 Elements 32-127 + */ +//@{ +#define BP_CAN_CTRL2_RFFN (24U) //!< Bit position for CAN_CTRL2_RFFN. +#define BM_CAN_CTRL2_RFFN (0x0F000000U) //!< Bit mask for CAN_CTRL2_RFFN. +#define BS_CAN_CTRL2_RFFN (4U) //!< Bit field size in bits for CAN_CTRL2_RFFN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL2_RFFN field. +#define BR_CAN_CTRL2_RFFN(x) (HW_CAN_CTRL2(x).B.RFFN) +#endif + +//! @brief Format value for bitfield CAN_CTRL2_RFFN. +#define BF_CAN_CTRL2_RFFN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL2_RFFN), uint32_t) & BM_CAN_CTRL2_RFFN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RFFN field to a new value. +#define BW_CAN_CTRL2_RFFN(x, v) (HW_CAN_CTRL2_WR(x, (HW_CAN_CTRL2_RD(x) & ~BM_CAN_CTRL2_RFFN) | BF_CAN_CTRL2_RFFN(v))) +#endif +//@} + +/*! + * @name Register CAN_CTRL2, field WRMFRZ[28] (RW) + * + * Enable unrestricted write access to FlexCAN memory in Freeze mode. This bit + * can only be written in Freeze mode and has no effect out of Freeze mode. + * + * Values: + * - 0 - Maintain the write access restrictions. + * - 1 - Enable unrestricted write access to FlexCAN memory. + */ +//@{ +#define BP_CAN_CTRL2_WRMFRZ (28U) //!< Bit position for CAN_CTRL2_WRMFRZ. +#define BM_CAN_CTRL2_WRMFRZ (0x10000000U) //!< Bit mask for CAN_CTRL2_WRMFRZ. +#define BS_CAN_CTRL2_WRMFRZ (1U) //!< Bit field size in bits for CAN_CTRL2_WRMFRZ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CTRL2_WRMFRZ field. +#define BR_CAN_CTRL2_WRMFRZ(x) (BITBAND_ACCESS32(HW_CAN_CTRL2_ADDR(x), BP_CAN_CTRL2_WRMFRZ)) +#endif + +//! @brief Format value for bitfield CAN_CTRL2_WRMFRZ. +#define BF_CAN_CTRL2_WRMFRZ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CTRL2_WRMFRZ), uint32_t) & BM_CAN_CTRL2_WRMFRZ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WRMFRZ field to a new value. +#define BW_CAN_CTRL2_WRMFRZ(x, v) (BITBAND_ACCESS32(HW_CAN_CTRL2_ADDR(x), BP_CAN_CTRL2_WRMFRZ) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_ESR2 - Error and Status 2 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_ESR2 - Error and Status 2 register (RO) + * + * Reset value: 0x00000000U + * + * This register reflects various interrupt flags and some general status. + */ +typedef union _hw_can_esr2 +{ + uint32_t U; + struct _hw_can_esr2_bitfields + { + uint32_t RESERVED0 : 13; //!< [12:0] + uint32_t IMB : 1; //!< [13] Inactive Mailbox + uint32_t VPS : 1; //!< [14] Valid Priority Status + uint32_t RESERVED1 : 1; //!< [15] + uint32_t LPTM : 7; //!< [22:16] Lowest Priority Tx Mailbox + uint32_t RESERVED2 : 9; //!< [31:23] + } B; +} hw_can_esr2_t; +#endif + +/*! + * @name Constants and macros for entire CAN_ESR2 register + */ +//@{ +#define HW_CAN_ESR2_ADDR(x) (REGS_CAN_BASE(x) + 0x38U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_ESR2(x) (*(__I hw_can_esr2_t *) HW_CAN_ESR2_ADDR(x)) +#define HW_CAN_ESR2_RD(x) (HW_CAN_ESR2(x).U) +#endif +//@} + +/* + * Constants & macros for individual CAN_ESR2 bitfields + */ + +/*! + * @name Register CAN_ESR2, field IMB[13] (RO) + * + * If ESR2[VPS] is asserted, this bit indicates whether there is any inactive + * Mailbox (CODE field is either 0b1000 or 0b0000). This bit is asserted in the + * following cases: During arbitration, if an LPTM is found and it is inactive. If + * IMB is not asserted and a frame is transmitted successfully. This bit is + * cleared in all start of arbitration (see Section "Arbitration process"). LPTM + * mechanism have the following behavior: if an MB is successfully transmitted and + * ESR2[IMB]=0 (no inactive Mailbox), then ESR2[VPS] and ESR2[IMB] are asserted and + * the index related to the MB just transmitted is loaded into ESR2[LPTM]. + * + * Values: + * - 0 - If ESR2[VPS] is asserted, the ESR2[LPTM] is not an inactive Mailbox. + * - 1 - If ESR2[VPS] is asserted, there is at least one inactive Mailbox. LPTM + * content is the number of the first one. + */ +//@{ +#define BP_CAN_ESR2_IMB (13U) //!< Bit position for CAN_ESR2_IMB. +#define BM_CAN_ESR2_IMB (0x00002000U) //!< Bit mask for CAN_ESR2_IMB. +#define BS_CAN_ESR2_IMB (1U) //!< Bit field size in bits for CAN_ESR2_IMB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR2_IMB field. +#define BR_CAN_ESR2_IMB(x) (BITBAND_ACCESS32(HW_CAN_ESR2_ADDR(x), BP_CAN_ESR2_IMB)) +#endif +//@} + +/*! + * @name Register CAN_ESR2, field VPS[14] (RO) + * + * This bit indicates whether IMB and LPTM contents are currently valid or not. + * VPS is asserted upon every complete Tx arbitration process unless the CPU + * writes to Control and Status word of a Mailbox that has already been scanned, that + * is, it is behind Tx Arbitration Pointer, during the Tx arbitration process. + * If there is no inactive Mailbox and only one Tx Mailbox that is being + * transmitted then VPS is not asserted. VPS is negated upon the start of every Tx + * arbitration process or upon a write to Control and Status word of any Mailbox. + * ESR2[VPS] is not affected by any CPU write into Control Status (C/S) of a MB that is + * blocked by abort mechanism. When MCR[AEN] is asserted, the abort code write + * in C/S of a MB that is being transmitted (pending abort), or any write attempt + * into a Tx MB with IFLAG set is blocked. + * + * Values: + * - 0 - Contents of IMB and LPTM are invalid. + * - 1 - Contents of IMB and LPTM are valid. + */ +//@{ +#define BP_CAN_ESR2_VPS (14U) //!< Bit position for CAN_ESR2_VPS. +#define BM_CAN_ESR2_VPS (0x00004000U) //!< Bit mask for CAN_ESR2_VPS. +#define BS_CAN_ESR2_VPS (1U) //!< Bit field size in bits for CAN_ESR2_VPS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR2_VPS field. +#define BR_CAN_ESR2_VPS(x) (BITBAND_ACCESS32(HW_CAN_ESR2_ADDR(x), BP_CAN_ESR2_VPS)) +#endif +//@} + +/*! + * @name Register CAN_ESR2, field LPTM[22:16] (RO) + * + * If ESR2[VPS] is asserted, this field indicates the lowest number inactive + * Mailbox (see the IMB bit description). If there is no inactive Mailbox then the + * Mailbox indicated depends on CTRL1[LBUF] bit value. If CTRL1[LBUF] bit is + * negated then the Mailbox indicated is the one that has the greatest arbitration + * value (see the "Highest priority Mailbox first" section). If CTRL1[LBUF] bit is + * asserted then the Mailbox indicated is the highest number active Tx Mailbox. If + * a Tx Mailbox is being transmitted it is not considered in LPTM calculation. + * If ESR2[IMB] is not asserted and a frame is transmitted successfully, LPTM is + * updated with its Mailbox number. + */ +//@{ +#define BP_CAN_ESR2_LPTM (16U) //!< Bit position for CAN_ESR2_LPTM. +#define BM_CAN_ESR2_LPTM (0x007F0000U) //!< Bit mask for CAN_ESR2_LPTM. +#define BS_CAN_ESR2_LPTM (7U) //!< Bit field size in bits for CAN_ESR2_LPTM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ESR2_LPTM field. +#define BR_CAN_ESR2_LPTM(x) (HW_CAN_ESR2(x).B.LPTM) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_CRCR - CRC Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_CRCR - CRC Register (RO) + * + * Reset value: 0x00000000U + * + * This register provides information about the CRC of transmitted messages. + */ +typedef union _hw_can_crcr +{ + uint32_t U; + struct _hw_can_crcr_bitfields + { + uint32_t TXCRC : 15; //!< [14:0] CRC Transmitted + uint32_t RESERVED0 : 1; //!< [15] + uint32_t MBCRC : 7; //!< [22:16] CRC Mailbox + uint32_t RESERVED1 : 9; //!< [31:23] + } B; +} hw_can_crcr_t; +#endif + +/*! + * @name Constants and macros for entire CAN_CRCR register + */ +//@{ +#define HW_CAN_CRCR_ADDR(x) (REGS_CAN_BASE(x) + 0x44U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_CRCR(x) (*(__I hw_can_crcr_t *) HW_CAN_CRCR_ADDR(x)) +#define HW_CAN_CRCR_RD(x) (HW_CAN_CRCR(x).U) +#endif +//@} + +/* + * Constants & macros for individual CAN_CRCR bitfields + */ + +/*! + * @name Register CAN_CRCR, field TXCRC[14:0] (RO) + * + * This field indicates the CRC value of the last message transmitted. This + * field is updated at the same time the Tx Interrupt Flag is asserted. + */ +//@{ +#define BP_CAN_CRCR_TXCRC (0U) //!< Bit position for CAN_CRCR_TXCRC. +#define BM_CAN_CRCR_TXCRC (0x00007FFFU) //!< Bit mask for CAN_CRCR_TXCRC. +#define BS_CAN_CRCR_TXCRC (15U) //!< Bit field size in bits for CAN_CRCR_TXCRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CRCR_TXCRC field. +#define BR_CAN_CRCR_TXCRC(x) (HW_CAN_CRCR(x).B.TXCRC) +#endif +//@} + +/*! + * @name Register CAN_CRCR, field MBCRC[22:16] (RO) + * + * This field indicates the number of the Mailbox corresponding to the value in + * TXCRC field. + */ +//@{ +#define BP_CAN_CRCR_MBCRC (16U) //!< Bit position for CAN_CRCR_MBCRC. +#define BM_CAN_CRCR_MBCRC (0x007F0000U) //!< Bit mask for CAN_CRCR_MBCRC. +#define BS_CAN_CRCR_MBCRC (7U) //!< Bit field size in bits for CAN_CRCR_MBCRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CRCR_MBCRC field. +#define BR_CAN_CRCR_MBCRC(x) (HW_CAN_CRCR(x).B.MBCRC) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_RXFGMASK - Rx FIFO Global Mask register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_RXFGMASK - Rx FIFO Global Mask register (RW) + * + * Reset value: 0xFFFFFFFFU + * + * This register is located in RAM. If Rx FIFO is enabled RXFGMASK is used to + * mask the Rx FIFO ID Filter Table elements that do not have a corresponding RXIMR + * according to CTRL2[RFFN] field setting. This register can only be written in + * Freeze mode as it is blocked by hardware in other modes. + */ +typedef union _hw_can_rxfgmask +{ + uint32_t U; + struct _hw_can_rxfgmask_bitfields + { + uint32_t FGM : 32; //!< [31:0] Rx FIFO Global Mask Bits + } B; +} hw_can_rxfgmask_t; +#endif + +/*! + * @name Constants and macros for entire CAN_RXFGMASK register + */ +//@{ +#define HW_CAN_RXFGMASK_ADDR(x) (REGS_CAN_BASE(x) + 0x48U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_RXFGMASK(x) (*(__IO hw_can_rxfgmask_t *) HW_CAN_RXFGMASK_ADDR(x)) +#define HW_CAN_RXFGMASK_RD(x) (HW_CAN_RXFGMASK(x).U) +#define HW_CAN_RXFGMASK_WR(x, v) (HW_CAN_RXFGMASK(x).U = (v)) +#define HW_CAN_RXFGMASK_SET(x, v) (HW_CAN_RXFGMASK_WR(x, HW_CAN_RXFGMASK_RD(x) | (v))) +#define HW_CAN_RXFGMASK_CLR(x, v) (HW_CAN_RXFGMASK_WR(x, HW_CAN_RXFGMASK_RD(x) & ~(v))) +#define HW_CAN_RXFGMASK_TOG(x, v) (HW_CAN_RXFGMASK_WR(x, HW_CAN_RXFGMASK_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_RXFGMASK bitfields + */ + +/*! + * @name Register CAN_RXFGMASK, field FGM[31:0] (RW) + * + * These bits mask the ID Filter Table elements bits in a perfect alignment. The + * following table shows how the FGM bits correspond to each IDAF field. Rx FIFO + * ID Filter Table Elements Format (MCR[IDAM]) Identifier Acceptance Filter + * Fields RTR IDE RXIDA RXIDB If MCR[IDAM] field is equivalent to the format B only + * the fourteen most significant bits of the Identifier of the incoming frame are + * compared with the Rx FIFO filter. RXIDC If MCR[IDAM] field is equivalent to + * the format C only the eight most significant bits of the Identifier of the + * incoming frame are compared with the Rx FIFO filter. Reserved A FGM[31] FGM[30] + * FGM[29:1] - - FGM[0] B FGM[31], FGM[15] FGM[30], FGM[14] - FGM[29:16], FGM[13:0] + * - C - - - FGM[31:24], FGM[23:16], FGM[15:8], FGM[7:0] + * + * Values: + * - 0 - The corresponding bit in the filter is "don't care." + * - 1 - The corresponding bit in the filter is checked. + */ +//@{ +#define BP_CAN_RXFGMASK_FGM (0U) //!< Bit position for CAN_RXFGMASK_FGM. +#define BM_CAN_RXFGMASK_FGM (0xFFFFFFFFU) //!< Bit mask for CAN_RXFGMASK_FGM. +#define BS_CAN_RXFGMASK_FGM (32U) //!< Bit field size in bits for CAN_RXFGMASK_FGM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_RXFGMASK_FGM field. +#define BR_CAN_RXFGMASK_FGM(x) (HW_CAN_RXFGMASK(x).U) +#endif + +//! @brief Format value for bitfield CAN_RXFGMASK_FGM. +#define BF_CAN_RXFGMASK_FGM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_RXFGMASK_FGM), uint32_t) & BM_CAN_RXFGMASK_FGM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FGM field to a new value. +#define BW_CAN_RXFGMASK_FGM(x, v) (HW_CAN_RXFGMASK_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_RXFIR - Rx FIFO Information Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_RXFIR - Rx FIFO Information Register (RO) + * + * Reset value: 0x00000000U + * + * RXFIR provides information on Rx FIFO. This register is the port through + * which the CPU accesses the output of the RXFIR FIFO located in RAM. The RXFIR FIFO + * is written by the FlexCAN whenever a new message is moved into the Rx FIFO as + * well as its output is updated whenever the output of the Rx FIFO is updated + * with the next message. See Section "Rx FIFO" for instructions on reading this + * register. + */ +typedef union _hw_can_rxfir +{ + uint32_t U; + struct _hw_can_rxfir_bitfields + { + uint32_t IDHIT : 9; //!< [8:0] Identifier Acceptance Filter Hit + //! Indicator + uint32_t RESERVED0 : 23; //!< [31:9] + } B; +} hw_can_rxfir_t; +#endif + +/*! + * @name Constants and macros for entire CAN_RXFIR register + */ +//@{ +#define HW_CAN_RXFIR_ADDR(x) (REGS_CAN_BASE(x) + 0x4CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_RXFIR(x) (*(__I hw_can_rxfir_t *) HW_CAN_RXFIR_ADDR(x)) +#define HW_CAN_RXFIR_RD(x) (HW_CAN_RXFIR(x).U) +#endif +//@} + +/* + * Constants & macros for individual CAN_RXFIR bitfields + */ + +/*! + * @name Register CAN_RXFIR, field IDHIT[8:0] (RO) + * + * This field indicates which Identifier Acceptance Filter was hit by the + * received message that is in the output of the Rx FIFO. If multiple filters match the + * incoming message ID then the first matching IDAF found (lowest number) by the + * matching process is indicated. This field is valid only while the + * IFLAG[BUF5I] is asserted. + */ +//@{ +#define BP_CAN_RXFIR_IDHIT (0U) //!< Bit position for CAN_RXFIR_IDHIT. +#define BM_CAN_RXFIR_IDHIT (0x000001FFU) //!< Bit mask for CAN_RXFIR_IDHIT. +#define BS_CAN_RXFIR_IDHIT (9U) //!< Bit field size in bits for CAN_RXFIR_IDHIT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_RXFIR_IDHIT field. +#define BR_CAN_RXFIR_IDHIT(x) (HW_CAN_RXFIR(x).B.IDHIT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_CS - Message Buffer 0 CS Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_CS - Message Buffer 0 CS Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_can_cs +{ + uint32_t U; + struct _hw_can_cs_bitfields + { + uint32_t TIME_STAMP : 16; //!< [15:0] Free-Running Counter Time + //! stamp. This 16-bit field is a copy of the Free-Running Timer, captured for + //! Tx and Rx frames at the time when the beginning of the Identifier + //! field appears on the CAN bus. + uint32_t DLC : 4; //!< [19:16] Length of the data to be + //! stored/transmitted. + uint32_t RTR : 1; //!< [20] Remote Transmission Request. One/zero for + //! remote/data frame. + uint32_t IDE : 1; //!< [21] ID Extended. One/zero for + //! extended/standard format frame. + uint32_t SRR : 1; //!< [22] Substitute Remote Request. Contains a + //! fixed recessive bit. + uint32_t RESERVED0 : 1; //!< [23] Reserved + uint32_t CODE : 4; //!< [27:24] Reserved + uint32_t RESERVED1 : 4; //!< [31:28] Reserved + } B; +} hw_can_cs_t; +#endif + +/*! + * @name Constants and macros for entire CAN_CS register + */ +//@{ +#define HW_CAN_CS_COUNT (16U) + +#define HW_CAN_CS_ADDR(x, n) (REGS_CAN_BASE(x) + 0x80U + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_CS(x, n) (*(__IO hw_can_cs_t *) HW_CAN_CS_ADDR(x, n)) +#define HW_CAN_CS_RD(x, n) (HW_CAN_CS(x, n).U) +#define HW_CAN_CS_WR(x, n, v) (HW_CAN_CS(x, n).U = (v)) +#define HW_CAN_CS_SET(x, n, v) (HW_CAN_CS_WR(x, n, HW_CAN_CS_RD(x, n) | (v))) +#define HW_CAN_CS_CLR(x, n, v) (HW_CAN_CS_WR(x, n, HW_CAN_CS_RD(x, n) & ~(v))) +#define HW_CAN_CS_TOG(x, n, v) (HW_CAN_CS_WR(x, n, HW_CAN_CS_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_CS bitfields + */ + +/*! + * @name Register CAN_CS, field TIME_STAMP[15:0] (RW) + */ +//@{ +#define BP_CAN_CS_TIME_STAMP (0U) //!< Bit position for CAN_CS_TIME_STAMP. +#define BM_CAN_CS_TIME_STAMP (0x0000FFFFU) //!< Bit mask for CAN_CS_TIME_STAMP. +#define BS_CAN_CS_TIME_STAMP (16U) //!< Bit field size in bits for CAN_CS_TIME_STAMP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CS_TIME_STAMP field. +#define BR_CAN_CS_TIME_STAMP(x, n) (HW_CAN_CS(x, n).B.TIME_STAMP) +#endif + +//! @brief Format value for bitfield CAN_CS_TIME_STAMP. +#define BF_CAN_CS_TIME_STAMP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CS_TIME_STAMP), uint32_t) & BM_CAN_CS_TIME_STAMP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIME_STAMP field to a new value. +#define BW_CAN_CS_TIME_STAMP(x, n, v) (HW_CAN_CS_WR(x, n, (HW_CAN_CS_RD(x, n) & ~BM_CAN_CS_TIME_STAMP) | BF_CAN_CS_TIME_STAMP(v))) +#endif +//@} + +/*! + * @name Register CAN_CS, field DLC[19:16] (RW) + */ +//@{ +#define BP_CAN_CS_DLC (16U) //!< Bit position for CAN_CS_DLC. +#define BM_CAN_CS_DLC (0x000F0000U) //!< Bit mask for CAN_CS_DLC. +#define BS_CAN_CS_DLC (4U) //!< Bit field size in bits for CAN_CS_DLC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CS_DLC field. +#define BR_CAN_CS_DLC(x, n) (HW_CAN_CS(x, n).B.DLC) +#endif + +//! @brief Format value for bitfield CAN_CS_DLC. +#define BF_CAN_CS_DLC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CS_DLC), uint32_t) & BM_CAN_CS_DLC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DLC field to a new value. +#define BW_CAN_CS_DLC(x, n, v) (HW_CAN_CS_WR(x, n, (HW_CAN_CS_RD(x, n) & ~BM_CAN_CS_DLC) | BF_CAN_CS_DLC(v))) +#endif +//@} + +/*! + * @name Register CAN_CS, field RTR[20] (RW) + */ +//@{ +#define BP_CAN_CS_RTR (20U) //!< Bit position for CAN_CS_RTR. +#define BM_CAN_CS_RTR (0x00100000U) //!< Bit mask for CAN_CS_RTR. +#define BS_CAN_CS_RTR (1U) //!< Bit field size in bits for CAN_CS_RTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CS_RTR field. +#define BR_CAN_CS_RTR(x, n) (BITBAND_ACCESS32(HW_CAN_CS_ADDR(x, n), BP_CAN_CS_RTR)) +#endif + +//! @brief Format value for bitfield CAN_CS_RTR. +#define BF_CAN_CS_RTR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CS_RTR), uint32_t) & BM_CAN_CS_RTR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RTR field to a new value. +#define BW_CAN_CS_RTR(x, n, v) (BITBAND_ACCESS32(HW_CAN_CS_ADDR(x, n), BP_CAN_CS_RTR) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CS, field IDE[21] (RW) + */ +//@{ +#define BP_CAN_CS_IDE (21U) //!< Bit position for CAN_CS_IDE. +#define BM_CAN_CS_IDE (0x00200000U) //!< Bit mask for CAN_CS_IDE. +#define BS_CAN_CS_IDE (1U) //!< Bit field size in bits for CAN_CS_IDE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CS_IDE field. +#define BR_CAN_CS_IDE(x, n) (BITBAND_ACCESS32(HW_CAN_CS_ADDR(x, n), BP_CAN_CS_IDE)) +#endif + +//! @brief Format value for bitfield CAN_CS_IDE. +#define BF_CAN_CS_IDE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CS_IDE), uint32_t) & BM_CAN_CS_IDE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IDE field to a new value. +#define BW_CAN_CS_IDE(x, n, v) (BITBAND_ACCESS32(HW_CAN_CS_ADDR(x, n), BP_CAN_CS_IDE) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CS, field SRR[22] (RW) + */ +//@{ +#define BP_CAN_CS_SRR (22U) //!< Bit position for CAN_CS_SRR. +#define BM_CAN_CS_SRR (0x00400000U) //!< Bit mask for CAN_CS_SRR. +#define BS_CAN_CS_SRR (1U) //!< Bit field size in bits for CAN_CS_SRR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CS_SRR field. +#define BR_CAN_CS_SRR(x, n) (BITBAND_ACCESS32(HW_CAN_CS_ADDR(x, n), BP_CAN_CS_SRR)) +#endif + +//! @brief Format value for bitfield CAN_CS_SRR. +#define BF_CAN_CS_SRR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CS_SRR), uint32_t) & BM_CAN_CS_SRR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRR field to a new value. +#define BW_CAN_CS_SRR(x, n, v) (BITBAND_ACCESS32(HW_CAN_CS_ADDR(x, n), BP_CAN_CS_SRR) = (v)) +#endif +//@} + +/*! + * @name Register CAN_CS, field CODE[27:24] (RW) + */ +//@{ +#define BP_CAN_CS_CODE (24U) //!< Bit position for CAN_CS_CODE. +#define BM_CAN_CS_CODE (0x0F000000U) //!< Bit mask for CAN_CS_CODE. +#define BS_CAN_CS_CODE (4U) //!< Bit field size in bits for CAN_CS_CODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_CS_CODE field. +#define BR_CAN_CS_CODE(x, n) (HW_CAN_CS(x, n).B.CODE) +#endif + +//! @brief Format value for bitfield CAN_CS_CODE. +#define BF_CAN_CS_CODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_CS_CODE), uint32_t) & BM_CAN_CS_CODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CODE field to a new value. +#define BW_CAN_CS_CODE(x, n, v) (HW_CAN_CS_WR(x, n, (HW_CAN_CS_RD(x, n) & ~BM_CAN_CS_CODE) | BF_CAN_CS_CODE(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CAN_ID - Message Buffer 0 ID Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_ID - Message Buffer 0 ID Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_can_id +{ + uint32_t U; + struct _hw_can_id_bitfields + { + uint32_t EXT : 18; //!< [17:0] Contains extended (LOW word) + //! identifier of message buffer. + uint32_t STD : 11; //!< [28:18] Contains standard/extended (HIGH + //! word) identifier of message buffer. + uint32_t PRIO : 3; //!< [31:29] Local priority. This 3-bit fieldis + //! only used when LPRIO_EN bit is set in MCR and it only makes sense for Tx + //! buffers. These bits are not transmitted. They are appended to the + //! regular ID to define the transmission priority. + } B; +} hw_can_id_t; +#endif + +/*! + * @name Constants and macros for entire CAN_ID register + */ +//@{ +#define HW_CAN_ID_COUNT (16U) + +#define HW_CAN_ID_ADDR(x, n) (REGS_CAN_BASE(x) + 0x84U + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_ID(x, n) (*(__IO hw_can_id_t *) HW_CAN_ID_ADDR(x, n)) +#define HW_CAN_ID_RD(x, n) (HW_CAN_ID(x, n).U) +#define HW_CAN_ID_WR(x, n, v) (HW_CAN_ID(x, n).U = (v)) +#define HW_CAN_ID_SET(x, n, v) (HW_CAN_ID_WR(x, n, HW_CAN_ID_RD(x, n) | (v))) +#define HW_CAN_ID_CLR(x, n, v) (HW_CAN_ID_WR(x, n, HW_CAN_ID_RD(x, n) & ~(v))) +#define HW_CAN_ID_TOG(x, n, v) (HW_CAN_ID_WR(x, n, HW_CAN_ID_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_ID bitfields + */ + +/*! + * @name Register CAN_ID, field EXT[17:0] (RW) + */ +//@{ +#define BP_CAN_ID_EXT (0U) //!< Bit position for CAN_ID_EXT. +#define BM_CAN_ID_EXT (0x0003FFFFU) //!< Bit mask for CAN_ID_EXT. +#define BS_CAN_ID_EXT (18U) //!< Bit field size in bits for CAN_ID_EXT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ID_EXT field. +#define BR_CAN_ID_EXT(x, n) (HW_CAN_ID(x, n).B.EXT) +#endif + +//! @brief Format value for bitfield CAN_ID_EXT. +#define BF_CAN_ID_EXT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ID_EXT), uint32_t) & BM_CAN_ID_EXT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EXT field to a new value. +#define BW_CAN_ID_EXT(x, n, v) (HW_CAN_ID_WR(x, n, (HW_CAN_ID_RD(x, n) & ~BM_CAN_ID_EXT) | BF_CAN_ID_EXT(v))) +#endif +//@} + +/*! + * @name Register CAN_ID, field STD[28:18] (RW) + */ +//@{ +#define BP_CAN_ID_STD (18U) //!< Bit position for CAN_ID_STD. +#define BM_CAN_ID_STD (0x1FFC0000U) //!< Bit mask for CAN_ID_STD. +#define BS_CAN_ID_STD (11U) //!< Bit field size in bits for CAN_ID_STD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ID_STD field. +#define BR_CAN_ID_STD(x, n) (HW_CAN_ID(x, n).B.STD) +#endif + +//! @brief Format value for bitfield CAN_ID_STD. +#define BF_CAN_ID_STD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ID_STD), uint32_t) & BM_CAN_ID_STD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STD field to a new value. +#define BW_CAN_ID_STD(x, n, v) (HW_CAN_ID_WR(x, n, (HW_CAN_ID_RD(x, n) & ~BM_CAN_ID_STD) | BF_CAN_ID_STD(v))) +#endif +//@} + +/*! + * @name Register CAN_ID, field PRIO[31:29] (RW) + */ +//@{ +#define BP_CAN_ID_PRIO (29U) //!< Bit position for CAN_ID_PRIO. +#define BM_CAN_ID_PRIO (0xE0000000U) //!< Bit mask for CAN_ID_PRIO. +#define BS_CAN_ID_PRIO (3U) //!< Bit field size in bits for CAN_ID_PRIO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_ID_PRIO field. +#define BR_CAN_ID_PRIO(x, n) (HW_CAN_ID(x, n).B.PRIO) +#endif + +//! @brief Format value for bitfield CAN_ID_PRIO. +#define BF_CAN_ID_PRIO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_ID_PRIO), uint32_t) & BM_CAN_ID_PRIO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PRIO field to a new value. +#define BW_CAN_ID_PRIO(x, n, v) (HW_CAN_ID_WR(x, n, (HW_CAN_ID_RD(x, n) & ~BM_CAN_ID_PRIO) | BF_CAN_ID_PRIO(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CAN_WORD0 - Message Buffer 0 WORD0 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_WORD0 - Message Buffer 0 WORD0 Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_can_word0 +{ + uint32_t U; + struct _hw_can_word0_bitfields + { + uint32_t DATA_BYTE_3 : 8; //!< [7:0] Data byte 3 of Rx/Tx frame. + uint32_t DATA_BYTE_2 : 8; //!< [15:8] Data byte 2 of Rx/Tx frame. + uint32_t DATA_BYTE_1 : 8; //!< [23:16] Data byte 1 of Rx/Tx frame. + uint32_t DATA_BYTE_0 : 8; //!< [31:24] Data byte 0 of Rx/Tx frame. + } B; +} hw_can_word0_t; +#endif + +/*! + * @name Constants and macros for entire CAN_WORD0 register + */ +//@{ +#define HW_CAN_WORD0_COUNT (16U) + +#define HW_CAN_WORD0_ADDR(x, n) (REGS_CAN_BASE(x) + 0x88U + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_WORD0(x, n) (*(__IO hw_can_word0_t *) HW_CAN_WORD0_ADDR(x, n)) +#define HW_CAN_WORD0_RD(x, n) (HW_CAN_WORD0(x, n).U) +#define HW_CAN_WORD0_WR(x, n, v) (HW_CAN_WORD0(x, n).U = (v)) +#define HW_CAN_WORD0_SET(x, n, v) (HW_CAN_WORD0_WR(x, n, HW_CAN_WORD0_RD(x, n) | (v))) +#define HW_CAN_WORD0_CLR(x, n, v) (HW_CAN_WORD0_WR(x, n, HW_CAN_WORD0_RD(x, n) & ~(v))) +#define HW_CAN_WORD0_TOG(x, n, v) (HW_CAN_WORD0_WR(x, n, HW_CAN_WORD0_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_WORD0 bitfields + */ + +/*! + * @name Register CAN_WORD0, field DATA_BYTE_3[7:0] (RW) + */ +//@{ +#define BP_CAN_WORD0_DATA_BYTE_3 (0U) //!< Bit position for CAN_WORD0_DATA_BYTE_3. +#define BM_CAN_WORD0_DATA_BYTE_3 (0x000000FFU) //!< Bit mask for CAN_WORD0_DATA_BYTE_3. +#define BS_CAN_WORD0_DATA_BYTE_3 (8U) //!< Bit field size in bits for CAN_WORD0_DATA_BYTE_3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_WORD0_DATA_BYTE_3 field. +#define BR_CAN_WORD0_DATA_BYTE_3(x, n) (HW_CAN_WORD0(x, n).B.DATA_BYTE_3) +#endif + +//! @brief Format value for bitfield CAN_WORD0_DATA_BYTE_3. +#define BF_CAN_WORD0_DATA_BYTE_3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_WORD0_DATA_BYTE_3), uint32_t) & BM_CAN_WORD0_DATA_BYTE_3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA_BYTE_3 field to a new value. +#define BW_CAN_WORD0_DATA_BYTE_3(x, n, v) (HW_CAN_WORD0_WR(x, n, (HW_CAN_WORD0_RD(x, n) & ~BM_CAN_WORD0_DATA_BYTE_3) | BF_CAN_WORD0_DATA_BYTE_3(v))) +#endif +//@} + +/*! + * @name Register CAN_WORD0, field DATA_BYTE_2[15:8] (RW) + */ +//@{ +#define BP_CAN_WORD0_DATA_BYTE_2 (8U) //!< Bit position for CAN_WORD0_DATA_BYTE_2. +#define BM_CAN_WORD0_DATA_BYTE_2 (0x0000FF00U) //!< Bit mask for CAN_WORD0_DATA_BYTE_2. +#define BS_CAN_WORD0_DATA_BYTE_2 (8U) //!< Bit field size in bits for CAN_WORD0_DATA_BYTE_2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_WORD0_DATA_BYTE_2 field. +#define BR_CAN_WORD0_DATA_BYTE_2(x, n) (HW_CAN_WORD0(x, n).B.DATA_BYTE_2) +#endif + +//! @brief Format value for bitfield CAN_WORD0_DATA_BYTE_2. +#define BF_CAN_WORD0_DATA_BYTE_2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_WORD0_DATA_BYTE_2), uint32_t) & BM_CAN_WORD0_DATA_BYTE_2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA_BYTE_2 field to a new value. +#define BW_CAN_WORD0_DATA_BYTE_2(x, n, v) (HW_CAN_WORD0_WR(x, n, (HW_CAN_WORD0_RD(x, n) & ~BM_CAN_WORD0_DATA_BYTE_2) | BF_CAN_WORD0_DATA_BYTE_2(v))) +#endif +//@} + +/*! + * @name Register CAN_WORD0, field DATA_BYTE_1[23:16] (RW) + */ +//@{ +#define BP_CAN_WORD0_DATA_BYTE_1 (16U) //!< Bit position for CAN_WORD0_DATA_BYTE_1. +#define BM_CAN_WORD0_DATA_BYTE_1 (0x00FF0000U) //!< Bit mask for CAN_WORD0_DATA_BYTE_1. +#define BS_CAN_WORD0_DATA_BYTE_1 (8U) //!< Bit field size in bits for CAN_WORD0_DATA_BYTE_1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_WORD0_DATA_BYTE_1 field. +#define BR_CAN_WORD0_DATA_BYTE_1(x, n) (HW_CAN_WORD0(x, n).B.DATA_BYTE_1) +#endif + +//! @brief Format value for bitfield CAN_WORD0_DATA_BYTE_1. +#define BF_CAN_WORD0_DATA_BYTE_1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_WORD0_DATA_BYTE_1), uint32_t) & BM_CAN_WORD0_DATA_BYTE_1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA_BYTE_1 field to a new value. +#define BW_CAN_WORD0_DATA_BYTE_1(x, n, v) (HW_CAN_WORD0_WR(x, n, (HW_CAN_WORD0_RD(x, n) & ~BM_CAN_WORD0_DATA_BYTE_1) | BF_CAN_WORD0_DATA_BYTE_1(v))) +#endif +//@} + +/*! + * @name Register CAN_WORD0, field DATA_BYTE_0[31:24] (RW) + */ +//@{ +#define BP_CAN_WORD0_DATA_BYTE_0 (24U) //!< Bit position for CAN_WORD0_DATA_BYTE_0. +#define BM_CAN_WORD0_DATA_BYTE_0 (0xFF000000U) //!< Bit mask for CAN_WORD0_DATA_BYTE_0. +#define BS_CAN_WORD0_DATA_BYTE_0 (8U) //!< Bit field size in bits for CAN_WORD0_DATA_BYTE_0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_WORD0_DATA_BYTE_0 field. +#define BR_CAN_WORD0_DATA_BYTE_0(x, n) (HW_CAN_WORD0(x, n).B.DATA_BYTE_0) +#endif + +//! @brief Format value for bitfield CAN_WORD0_DATA_BYTE_0. +#define BF_CAN_WORD0_DATA_BYTE_0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_WORD0_DATA_BYTE_0), uint32_t) & BM_CAN_WORD0_DATA_BYTE_0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA_BYTE_0 field to a new value. +#define BW_CAN_WORD0_DATA_BYTE_0(x, n, v) (HW_CAN_WORD0_WR(x, n, (HW_CAN_WORD0_RD(x, n) & ~BM_CAN_WORD0_DATA_BYTE_0) | BF_CAN_WORD0_DATA_BYTE_0(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CAN_WORD1 - Message Buffer 0 WORD1 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_WORD1 - Message Buffer 0 WORD1 Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_can_word1 +{ + uint32_t U; + struct _hw_can_word1_bitfields + { + uint32_t DATA_BYTE_7 : 8; //!< [7:0] Data byte 7 of Rx/Tx frame. + uint32_t DATA_BYTE_6 : 8; //!< [15:8] Data byte 6 of Rx/Tx frame. + uint32_t DATA_BYTE_5 : 8; //!< [23:16] Data byte 5 of Rx/Tx frame. + uint32_t DATA_BYTE_4 : 8; //!< [31:24] Data byte 4 of Rx/Tx frame. + } B; +} hw_can_word1_t; +#endif + +/*! + * @name Constants and macros for entire CAN_WORD1 register + */ +//@{ +#define HW_CAN_WORD1_COUNT (16U) + +#define HW_CAN_WORD1_ADDR(x, n) (REGS_CAN_BASE(x) + 0x8CU + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_WORD1(x, n) (*(__IO hw_can_word1_t *) HW_CAN_WORD1_ADDR(x, n)) +#define HW_CAN_WORD1_RD(x, n) (HW_CAN_WORD1(x, n).U) +#define HW_CAN_WORD1_WR(x, n, v) (HW_CAN_WORD1(x, n).U = (v)) +#define HW_CAN_WORD1_SET(x, n, v) (HW_CAN_WORD1_WR(x, n, HW_CAN_WORD1_RD(x, n) | (v))) +#define HW_CAN_WORD1_CLR(x, n, v) (HW_CAN_WORD1_WR(x, n, HW_CAN_WORD1_RD(x, n) & ~(v))) +#define HW_CAN_WORD1_TOG(x, n, v) (HW_CAN_WORD1_WR(x, n, HW_CAN_WORD1_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_WORD1 bitfields + */ + +/*! + * @name Register CAN_WORD1, field DATA_BYTE_7[7:0] (RW) + */ +//@{ +#define BP_CAN_WORD1_DATA_BYTE_7 (0U) //!< Bit position for CAN_WORD1_DATA_BYTE_7. +#define BM_CAN_WORD1_DATA_BYTE_7 (0x000000FFU) //!< Bit mask for CAN_WORD1_DATA_BYTE_7. +#define BS_CAN_WORD1_DATA_BYTE_7 (8U) //!< Bit field size in bits for CAN_WORD1_DATA_BYTE_7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_WORD1_DATA_BYTE_7 field. +#define BR_CAN_WORD1_DATA_BYTE_7(x, n) (HW_CAN_WORD1(x, n).B.DATA_BYTE_7) +#endif + +//! @brief Format value for bitfield CAN_WORD1_DATA_BYTE_7. +#define BF_CAN_WORD1_DATA_BYTE_7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_WORD1_DATA_BYTE_7), uint32_t) & BM_CAN_WORD1_DATA_BYTE_7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA_BYTE_7 field to a new value. +#define BW_CAN_WORD1_DATA_BYTE_7(x, n, v) (HW_CAN_WORD1_WR(x, n, (HW_CAN_WORD1_RD(x, n) & ~BM_CAN_WORD1_DATA_BYTE_7) | BF_CAN_WORD1_DATA_BYTE_7(v))) +#endif +//@} + +/*! + * @name Register CAN_WORD1, field DATA_BYTE_6[15:8] (RW) + */ +//@{ +#define BP_CAN_WORD1_DATA_BYTE_6 (8U) //!< Bit position for CAN_WORD1_DATA_BYTE_6. +#define BM_CAN_WORD1_DATA_BYTE_6 (0x0000FF00U) //!< Bit mask for CAN_WORD1_DATA_BYTE_6. +#define BS_CAN_WORD1_DATA_BYTE_6 (8U) //!< Bit field size in bits for CAN_WORD1_DATA_BYTE_6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_WORD1_DATA_BYTE_6 field. +#define BR_CAN_WORD1_DATA_BYTE_6(x, n) (HW_CAN_WORD1(x, n).B.DATA_BYTE_6) +#endif + +//! @brief Format value for bitfield CAN_WORD1_DATA_BYTE_6. +#define BF_CAN_WORD1_DATA_BYTE_6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_WORD1_DATA_BYTE_6), uint32_t) & BM_CAN_WORD1_DATA_BYTE_6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA_BYTE_6 field to a new value. +#define BW_CAN_WORD1_DATA_BYTE_6(x, n, v) (HW_CAN_WORD1_WR(x, n, (HW_CAN_WORD1_RD(x, n) & ~BM_CAN_WORD1_DATA_BYTE_6) | BF_CAN_WORD1_DATA_BYTE_6(v))) +#endif +//@} + +/*! + * @name Register CAN_WORD1, field DATA_BYTE_5[23:16] (RW) + */ +//@{ +#define BP_CAN_WORD1_DATA_BYTE_5 (16U) //!< Bit position for CAN_WORD1_DATA_BYTE_5. +#define BM_CAN_WORD1_DATA_BYTE_5 (0x00FF0000U) //!< Bit mask for CAN_WORD1_DATA_BYTE_5. +#define BS_CAN_WORD1_DATA_BYTE_5 (8U) //!< Bit field size in bits for CAN_WORD1_DATA_BYTE_5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_WORD1_DATA_BYTE_5 field. +#define BR_CAN_WORD1_DATA_BYTE_5(x, n) (HW_CAN_WORD1(x, n).B.DATA_BYTE_5) +#endif + +//! @brief Format value for bitfield CAN_WORD1_DATA_BYTE_5. +#define BF_CAN_WORD1_DATA_BYTE_5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_WORD1_DATA_BYTE_5), uint32_t) & BM_CAN_WORD1_DATA_BYTE_5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA_BYTE_5 field to a new value. +#define BW_CAN_WORD1_DATA_BYTE_5(x, n, v) (HW_CAN_WORD1_WR(x, n, (HW_CAN_WORD1_RD(x, n) & ~BM_CAN_WORD1_DATA_BYTE_5) | BF_CAN_WORD1_DATA_BYTE_5(v))) +#endif +//@} + +/*! + * @name Register CAN_WORD1, field DATA_BYTE_4[31:24] (RW) + */ +//@{ +#define BP_CAN_WORD1_DATA_BYTE_4 (24U) //!< Bit position for CAN_WORD1_DATA_BYTE_4. +#define BM_CAN_WORD1_DATA_BYTE_4 (0xFF000000U) //!< Bit mask for CAN_WORD1_DATA_BYTE_4. +#define BS_CAN_WORD1_DATA_BYTE_4 (8U) //!< Bit field size in bits for CAN_WORD1_DATA_BYTE_4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_WORD1_DATA_BYTE_4 field. +#define BR_CAN_WORD1_DATA_BYTE_4(x, n) (HW_CAN_WORD1(x, n).B.DATA_BYTE_4) +#endif + +//! @brief Format value for bitfield CAN_WORD1_DATA_BYTE_4. +#define BF_CAN_WORD1_DATA_BYTE_4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_WORD1_DATA_BYTE_4), uint32_t) & BM_CAN_WORD1_DATA_BYTE_4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA_BYTE_4 field to a new value. +#define BW_CAN_WORD1_DATA_BYTE_4(x, n, v) (HW_CAN_WORD1_WR(x, n, (HW_CAN_WORD1_RD(x, n) & ~BM_CAN_WORD1_DATA_BYTE_4) | BF_CAN_WORD1_DATA_BYTE_4(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAN_RXIMRn - Rx Individual Mask Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAN_RXIMRn - Rx Individual Mask Registers (RW) + * + * Reset value: 0x00000000U + * + * These registers are located in RAM. RXIMR are used as acceptance masks for ID + * filtering in Rx MBs and the Rx FIFO. If the Rx FIFO is not enabled, one mask + * register is provided for each available Mailbox, providing ID masking + * capability on a per Mailbox basis. When the Rx FIFO is enabled (MCR[RFEN] bit is + * asserted), up to 32 Rx Individual Mask Registers can apply to the Rx FIFO ID Filter + * Table elements on a one-to-one correspondence depending on the setting of + * CTRL2[RFFN]. RXIMR can only be written by the CPU while the module is in Freeze + * mode; otherwise, they are blocked by hardware. The Individual Rx Mask Registers + * are not affected by reset and must be explicitly initialized prior to any + * reception. + */ +typedef union _hw_can_rximrn +{ + uint32_t U; + struct _hw_can_rximrn_bitfields + { + uint32_t MI : 32; //!< [31:0] Individual Mask Bits + } B; +} hw_can_rximrn_t; +#endif + +/*! + * @name Constants and macros for entire CAN_RXIMRn register + */ +//@{ +#define HW_CAN_RXIMRn_COUNT (16U) + +#define HW_CAN_RXIMRn_ADDR(x, n) (REGS_CAN_BASE(x) + 0x880U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAN_RXIMRn(x, n) (*(__IO hw_can_rximrn_t *) HW_CAN_RXIMRn_ADDR(x, n)) +#define HW_CAN_RXIMRn_RD(x, n) (HW_CAN_RXIMRn(x, n).U) +#define HW_CAN_RXIMRn_WR(x, n, v) (HW_CAN_RXIMRn(x, n).U = (v)) +#define HW_CAN_RXIMRn_SET(x, n, v) (HW_CAN_RXIMRn_WR(x, n, HW_CAN_RXIMRn_RD(x, n) | (v))) +#define HW_CAN_RXIMRn_CLR(x, n, v) (HW_CAN_RXIMRn_WR(x, n, HW_CAN_RXIMRn_RD(x, n) & ~(v))) +#define HW_CAN_RXIMRn_TOG(x, n, v) (HW_CAN_RXIMRn_WR(x, n, HW_CAN_RXIMRn_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CAN_RXIMRn bitfields + */ + +/*! + * @name Register CAN_RXIMRn, field MI[31:0] (RW) + * + * Each Individual Mask Bit masks the corresponding bit in both the Mailbox + * filter and Rx FIFO ID Filter Table element in distinct ways. For Mailbox filters, + * see the RXMGMASK register description. For Rx FIFO ID Filter Table elements, + * see the RXFGMASK register description. + * + * Values: + * - 0 - The corresponding bit in the filter is "don't care." + * - 1 - The corresponding bit in the filter is checked. + */ +//@{ +#define BP_CAN_RXIMRn_MI (0U) //!< Bit position for CAN_RXIMRn_MI. +#define BM_CAN_RXIMRn_MI (0xFFFFFFFFU) //!< Bit mask for CAN_RXIMRn_MI. +#define BS_CAN_RXIMRn_MI (32U) //!< Bit field size in bits for CAN_RXIMRn_MI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAN_RXIMRn_MI field. +#define BR_CAN_RXIMRn_MI(x, n) (HW_CAN_RXIMRn(x, n).U) +#endif + +//! @brief Format value for bitfield CAN_RXIMRn_MI. +#define BF_CAN_RXIMRn_MI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAN_RXIMRn_MI), uint32_t) & BM_CAN_RXIMRn_MI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MI field to a new value. +#define BW_CAN_RXIMRn_MI(x, n, v) (HW_CAN_RXIMRn_WR(x, n, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_can_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All CAN module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_can +{ + __IO hw_can_mcr_t MCR; //!< [0x0] Module Configuration Register + __IO hw_can_ctrl1_t CTRL1; //!< [0x4] Control 1 register + __IO hw_can_timer_t TIMER; //!< [0x8] Free Running Timer + uint8_t _reserved0[4]; + __IO hw_can_rxmgmask_t RXMGMASK; //!< [0x10] Rx Mailboxes Global Mask Register + __IO hw_can_rx14mask_t RX14MASK; //!< [0x14] Rx 14 Mask register + __IO hw_can_rx15mask_t RX15MASK; //!< [0x18] Rx 15 Mask register + __IO hw_can_ecr_t ECR; //!< [0x1C] Error Counter + __IO hw_can_esr1_t ESR1; //!< [0x20] Error and Status 1 register + uint8_t _reserved1[4]; + __IO hw_can_imask1_t IMASK1; //!< [0x28] Interrupt Masks 1 register + uint8_t _reserved2[4]; + __IO hw_can_iflag1_t IFLAG1; //!< [0x30] Interrupt Flags 1 register + __IO hw_can_ctrl2_t CTRL2; //!< [0x34] Control 2 register + __I hw_can_esr2_t ESR2; //!< [0x38] Error and Status 2 register + uint8_t _reserved3[8]; + __I hw_can_crcr_t CRCR; //!< [0x44] CRC Register + __IO hw_can_rxfgmask_t RXFGMASK; //!< [0x48] Rx FIFO Global Mask register + __I hw_can_rxfir_t RXFIR; //!< [0x4C] Rx FIFO Information Register + uint8_t _reserved4[48]; + struct { + __IO hw_can_cs_t CS; //!< [0x80] Message Buffer 0 CS Register + __IO hw_can_id_t ID; //!< [0x84] Message Buffer 0 ID Register + __IO hw_can_word0_t WORD0; //!< [0x88] Message Buffer 0 WORD0 Register + __IO hw_can_word1_t WORD1; //!< [0x8C] Message Buffer 0 WORD1 Register + } MB[16]; + uint8_t _reserved5[1792]; + __IO hw_can_rximrn_t RXIMRn[16]; //!< [0x880] Rx Individual Mask Registers +} hw_can_t; +#pragma pack() + +//! @brief Macro to access all CAN registers. +//! @param x CAN instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_CAN(0)</code>. +#define HW_CAN(x) (*(hw_can_t *) REGS_CAN_BASE(x)) +#endif + +#endif // __HW_CAN_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_cau.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1463 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_CAU_REGISTERS_H__ +#define __HW_CAU_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 CAU + * + * Memory Mapped Cryptographic Acceleration Unit (MMCAU) + * + * Registers defined in this header file: + * - HW_CAU_DIRECT - Direct access register 0 + * - HW_CAU_LDR_CASR - Status register - Load Register command + * - HW_CAU_LDR_CAA - Accumulator register - Load Register command + * - HW_CAU_LDR_CA - General Purpose Register 0 - Load Register command + * - HW_CAU_STR_CASR - Status register - Store Register command + * - HW_CAU_STR_CAA - Accumulator register - Store Register command + * - HW_CAU_STR_CA - General Purpose Register 0 - Store Register command + * - HW_CAU_ADR_CASR - Status register - Add Register command + * - HW_CAU_ADR_CAA - Accumulator register - Add to register command + * - HW_CAU_ADR_CA - General Purpose Register 0 - Add to register command + * - HW_CAU_RADR_CASR - Status register - Reverse and Add to Register command + * - HW_CAU_RADR_CAA - Accumulator register - Reverse and Add to Register command + * - HW_CAU_RADR_CA - General Purpose Register 0 - Reverse and Add to Register command + * - HW_CAU_XOR_CASR - Status register - Exclusive Or command + * - HW_CAU_XOR_CAA - Accumulator register - Exclusive Or command + * - HW_CAU_XOR_CA - General Purpose Register 0 - Exclusive Or command + * - HW_CAU_ROTL_CASR - Status register - Rotate Left command + * - HW_CAU_ROTL_CAA - Accumulator register - Rotate Left command + * - HW_CAU_ROTL_CA - General Purpose Register 0 - Rotate Left command + * - HW_CAU_AESC_CASR - Status register - AES Column Operation command + * - HW_CAU_AESC_CAA - Accumulator register - AES Column Operation command + * - HW_CAU_AESC_CA - General Purpose Register 0 - AES Column Operation command + * - HW_CAU_AESIC_CASR - Status register - AES Inverse Column Operation command + * - HW_CAU_AESIC_CAA - Accumulator register - AES Inverse Column Operation command + * - HW_CAU_AESIC_CA - General Purpose Register 0 - AES Inverse Column Operation command + * + * - hw_cau_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_CAU_BASE +#define HW_CAU_INSTANCE_COUNT (1U) //!< Number of instances of the CAU module. +#define REGS_CAU_BASE (0xE0081000U) //!< Base address for CAU. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAU_DIRECT - Direct access register 0 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_DIRECT - Direct access register 0 (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_direct +{ + uint32_t U; + struct _hw_cau_direct_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_direct_t; +#endif + +/*! + * @name Constants and macros for entire CAU_DIRECT register + */ +//@{ +#define HW_CAU_DIRECT_COUNT (16U) + +#define HW_CAU_DIRECT_ADDR(n) (REGS_CAU_BASE + 0x0U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_DIRECT(n) (*(__O hw_cau_direct_t *) HW_CAU_DIRECT_ADDR(n)) +#define HW_CAU_DIRECT_WR(n, v) (HW_CAU_DIRECT(n).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_DIRECT bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_LDR_CASR - Status register - Load Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_LDR_CASR - Status register - Load Register command (WO) + * + * Reset value: 0x20000000U + */ +typedef union _hw_cau_ldr_casr +{ + uint32_t U; + struct _hw_cau_ldr_casr_bitfields + { + uint32_t IC : 1; //!< [0] + uint32_t DPE : 1; //!< [1] + uint32_t RESERVED0 : 26; //!< [27:2] + uint32_t VER : 4; //!< [31:28] CAU version + } B; +} hw_cau_ldr_casr_t; +#endif + +/*! + * @name Constants and macros for entire CAU_LDR_CASR register + */ +//@{ +#define HW_CAU_LDR_CASR_ADDR (REGS_CAU_BASE + 0x840U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_LDR_CASR (*(__O hw_cau_ldr_casr_t *) HW_CAU_LDR_CASR_ADDR) +#define HW_CAU_LDR_CASR_WR(v) (HW_CAU_LDR_CASR.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_LDR_CASR bitfields + */ + +/*! + * @name Register CAU_LDR_CASR, field IC[0] (WO) + * + * Values: + * - 0 - No illegal commands issued + * - 1 - Illegal command issued + */ +//@{ +#define BP_CAU_LDR_CASR_IC (0U) //!< Bit position for CAU_LDR_CASR_IC. +#define BM_CAU_LDR_CASR_IC (0x00000001U) //!< Bit mask for CAU_LDR_CASR_IC. +#define BS_CAU_LDR_CASR_IC (1U) //!< Bit field size in bits for CAU_LDR_CASR_IC. + +//! @brief Format value for bitfield CAU_LDR_CASR_IC. +#define BF_CAU_LDR_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_LDR_CASR_IC), uint32_t) & BM_CAU_LDR_CASR_IC) +//@} + +/*! + * @name Register CAU_LDR_CASR, field DPE[1] (WO) + * + * Values: + * - 0 - No error detected + * - 1 - DES key parity error detected + */ +//@{ +#define BP_CAU_LDR_CASR_DPE (1U) //!< Bit position for CAU_LDR_CASR_DPE. +#define BM_CAU_LDR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_LDR_CASR_DPE. +#define BS_CAU_LDR_CASR_DPE (1U) //!< Bit field size in bits for CAU_LDR_CASR_DPE. + +//! @brief Format value for bitfield CAU_LDR_CASR_DPE. +#define BF_CAU_LDR_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_LDR_CASR_DPE), uint32_t) & BM_CAU_LDR_CASR_DPE) +//@} + +/*! + * @name Register CAU_LDR_CASR, field VER[31:28] (WO) + * + * Values: + * - 0001 - Initial CAU version + * - 0010 - Second version, added support for SHA-256 algorithm.(This is the + * value on this device) + */ +//@{ +#define BP_CAU_LDR_CASR_VER (28U) //!< Bit position for CAU_LDR_CASR_VER. +#define BM_CAU_LDR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_LDR_CASR_VER. +#define BS_CAU_LDR_CASR_VER (4U) //!< Bit field size in bits for CAU_LDR_CASR_VER. + +//! @brief Format value for bitfield CAU_LDR_CASR_VER. +#define BF_CAU_LDR_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_LDR_CASR_VER), uint32_t) & BM_CAU_LDR_CASR_VER) +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAU_LDR_CAA - Accumulator register - Load Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_LDR_CAA - Accumulator register - Load Register command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_ldr_caa +{ + uint32_t U; + struct _hw_cau_ldr_caa_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_ldr_caa_t; +#endif + +/*! + * @name Constants and macros for entire CAU_LDR_CAA register + */ +//@{ +#define HW_CAU_LDR_CAA_ADDR (REGS_CAU_BASE + 0x844U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_LDR_CAA (*(__O hw_cau_ldr_caa_t *) HW_CAU_LDR_CAA_ADDR) +#define HW_CAU_LDR_CAA_WR(v) (HW_CAU_LDR_CAA.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_LDR_CAA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_LDR_CA - General Purpose Register 0 - Load Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_LDR_CA - General Purpose Register 0 - Load Register command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_ldr_ca +{ + uint32_t U; + struct _hw_cau_ldr_ca_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_ldr_ca_t; +#endif + +/*! + * @name Constants and macros for entire CAU_LDR_CA register + */ +//@{ +#define HW_CAU_LDR_CA_COUNT (9U) + +#define HW_CAU_LDR_CA_ADDR(n) (REGS_CAU_BASE + 0x848U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_LDR_CA(n) (*(__O hw_cau_ldr_ca_t *) HW_CAU_LDR_CA_ADDR(n)) +#define HW_CAU_LDR_CA_WR(n, v) (HW_CAU_LDR_CA(n).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_LDR_CA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_STR_CASR - Status register - Store Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_STR_CASR - Status register - Store Register command (RO) + * + * Reset value: 0x20000000U + */ +typedef union _hw_cau_str_casr +{ + uint32_t U; + struct _hw_cau_str_casr_bitfields + { + uint32_t IC : 1; //!< [0] + uint32_t DPE : 1; //!< [1] + uint32_t RESERVED0 : 26; //!< [27:2] + uint32_t VER : 4; //!< [31:28] CAU version + } B; +} hw_cau_str_casr_t; +#endif + +/*! + * @name Constants and macros for entire CAU_STR_CASR register + */ +//@{ +#define HW_CAU_STR_CASR_ADDR (REGS_CAU_BASE + 0x880U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_STR_CASR (*(__I hw_cau_str_casr_t *) HW_CAU_STR_CASR_ADDR) +#define HW_CAU_STR_CASR_RD() (HW_CAU_STR_CASR.U) +#endif +//@} + +/* + * Constants & macros for individual CAU_STR_CASR bitfields + */ + +/*! + * @name Register CAU_STR_CASR, field IC[0] (RO) + * + * Values: + * - 0 - No illegal commands issued + * - 1 - Illegal command issued + */ +//@{ +#define BP_CAU_STR_CASR_IC (0U) //!< Bit position for CAU_STR_CASR_IC. +#define BM_CAU_STR_CASR_IC (0x00000001U) //!< Bit mask for CAU_STR_CASR_IC. +#define BS_CAU_STR_CASR_IC (1U) //!< Bit field size in bits for CAU_STR_CASR_IC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAU_STR_CASR_IC field. +#define BR_CAU_STR_CASR_IC (BITBAND_ACCESS32(HW_CAU_STR_CASR_ADDR, BP_CAU_STR_CASR_IC)) +#endif +//@} + +/*! + * @name Register CAU_STR_CASR, field DPE[1] (RO) + * + * Values: + * - 0 - No error detected + * - 1 - DES key parity error detected + */ +//@{ +#define BP_CAU_STR_CASR_DPE (1U) //!< Bit position for CAU_STR_CASR_DPE. +#define BM_CAU_STR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_STR_CASR_DPE. +#define BS_CAU_STR_CASR_DPE (1U) //!< Bit field size in bits for CAU_STR_CASR_DPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAU_STR_CASR_DPE field. +#define BR_CAU_STR_CASR_DPE (BITBAND_ACCESS32(HW_CAU_STR_CASR_ADDR, BP_CAU_STR_CASR_DPE)) +#endif +//@} + +/*! + * @name Register CAU_STR_CASR, field VER[31:28] (RO) + * + * Values: + * - 0001 - Initial CAU version + * - 0010 - Second version, added support for SHA-256 algorithm.(This is the + * value on this device) + */ +//@{ +#define BP_CAU_STR_CASR_VER (28U) //!< Bit position for CAU_STR_CASR_VER. +#define BM_CAU_STR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_STR_CASR_VER. +#define BS_CAU_STR_CASR_VER (4U) //!< Bit field size in bits for CAU_STR_CASR_VER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CAU_STR_CASR_VER field. +#define BR_CAU_STR_CASR_VER (HW_CAU_STR_CASR.B.VER) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAU_STR_CAA - Accumulator register - Store Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_STR_CAA - Accumulator register - Store Register command (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_str_caa +{ + uint32_t U; + struct _hw_cau_str_caa_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_str_caa_t; +#endif + +/*! + * @name Constants and macros for entire CAU_STR_CAA register + */ +//@{ +#define HW_CAU_STR_CAA_ADDR (REGS_CAU_BASE + 0x884U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_STR_CAA (*(__I hw_cau_str_caa_t *) HW_CAU_STR_CAA_ADDR) +#define HW_CAU_STR_CAA_RD() (HW_CAU_STR_CAA.U) +#endif +//@} + +/* + * Constants & macros for individual CAU_STR_CAA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_STR_CA - General Purpose Register 0 - Store Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_STR_CA - General Purpose Register 0 - Store Register command (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_str_ca +{ + uint32_t U; + struct _hw_cau_str_ca_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_str_ca_t; +#endif + +/*! + * @name Constants and macros for entire CAU_STR_CA register + */ +//@{ +#define HW_CAU_STR_CA_COUNT (9U) + +#define HW_CAU_STR_CA_ADDR(n) (REGS_CAU_BASE + 0x888U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_STR_CA(n) (*(__I hw_cau_str_ca_t *) HW_CAU_STR_CA_ADDR(n)) +#define HW_CAU_STR_CA_RD(n) (HW_CAU_STR_CA(n).U) +#endif +//@} + +/* + * Constants & macros for individual CAU_STR_CA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_ADR_CASR - Status register - Add Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_ADR_CASR - Status register - Add Register command (WO) + * + * Reset value: 0x20000000U + */ +typedef union _hw_cau_adr_casr +{ + uint32_t U; + struct _hw_cau_adr_casr_bitfields + { + uint32_t IC : 1; //!< [0] + uint32_t DPE : 1; //!< [1] + uint32_t RESERVED0 : 26; //!< [27:2] + uint32_t VER : 4; //!< [31:28] CAU version + } B; +} hw_cau_adr_casr_t; +#endif + +/*! + * @name Constants and macros for entire CAU_ADR_CASR register + */ +//@{ +#define HW_CAU_ADR_CASR_ADDR (REGS_CAU_BASE + 0x8C0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_ADR_CASR (*(__O hw_cau_adr_casr_t *) HW_CAU_ADR_CASR_ADDR) +#define HW_CAU_ADR_CASR_WR(v) (HW_CAU_ADR_CASR.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_ADR_CASR bitfields + */ + +/*! + * @name Register CAU_ADR_CASR, field IC[0] (WO) + * + * Values: + * - 0 - No illegal commands issued + * - 1 - Illegal command issued + */ +//@{ +#define BP_CAU_ADR_CASR_IC (0U) //!< Bit position for CAU_ADR_CASR_IC. +#define BM_CAU_ADR_CASR_IC (0x00000001U) //!< Bit mask for CAU_ADR_CASR_IC. +#define BS_CAU_ADR_CASR_IC (1U) //!< Bit field size in bits for CAU_ADR_CASR_IC. + +//! @brief Format value for bitfield CAU_ADR_CASR_IC. +#define BF_CAU_ADR_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ADR_CASR_IC), uint32_t) & BM_CAU_ADR_CASR_IC) +//@} + +/*! + * @name Register CAU_ADR_CASR, field DPE[1] (WO) + * + * Values: + * - 0 - No error detected + * - 1 - DES key parity error detected + */ +//@{ +#define BP_CAU_ADR_CASR_DPE (1U) //!< Bit position for CAU_ADR_CASR_DPE. +#define BM_CAU_ADR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_ADR_CASR_DPE. +#define BS_CAU_ADR_CASR_DPE (1U) //!< Bit field size in bits for CAU_ADR_CASR_DPE. + +//! @brief Format value for bitfield CAU_ADR_CASR_DPE. +#define BF_CAU_ADR_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ADR_CASR_DPE), uint32_t) & BM_CAU_ADR_CASR_DPE) +//@} + +/*! + * @name Register CAU_ADR_CASR, field VER[31:28] (WO) + * + * Values: + * - 0001 - Initial CAU version + * - 0010 - Second version, added support for SHA-256 algorithm.(This is the + * value on this device) + */ +//@{ +#define BP_CAU_ADR_CASR_VER (28U) //!< Bit position for CAU_ADR_CASR_VER. +#define BM_CAU_ADR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_ADR_CASR_VER. +#define BS_CAU_ADR_CASR_VER (4U) //!< Bit field size in bits for CAU_ADR_CASR_VER. + +//! @brief Format value for bitfield CAU_ADR_CASR_VER. +#define BF_CAU_ADR_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ADR_CASR_VER), uint32_t) & BM_CAU_ADR_CASR_VER) +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAU_ADR_CAA - Accumulator register - Add to register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_ADR_CAA - Accumulator register - Add to register command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_adr_caa +{ + uint32_t U; + struct _hw_cau_adr_caa_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_adr_caa_t; +#endif + +/*! + * @name Constants and macros for entire CAU_ADR_CAA register + */ +//@{ +#define HW_CAU_ADR_CAA_ADDR (REGS_CAU_BASE + 0x8C4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_ADR_CAA (*(__O hw_cau_adr_caa_t *) HW_CAU_ADR_CAA_ADDR) +#define HW_CAU_ADR_CAA_WR(v) (HW_CAU_ADR_CAA.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_ADR_CAA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_ADR_CA - General Purpose Register 0 - Add to register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_ADR_CA - General Purpose Register 0 - Add to register command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_adr_ca +{ + uint32_t U; + struct _hw_cau_adr_ca_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_adr_ca_t; +#endif + +/*! + * @name Constants and macros for entire CAU_ADR_CA register + */ +//@{ +#define HW_CAU_ADR_CA_COUNT (9U) + +#define HW_CAU_ADR_CA_ADDR(n) (REGS_CAU_BASE + 0x8C8U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_ADR_CA(n) (*(__O hw_cau_adr_ca_t *) HW_CAU_ADR_CA_ADDR(n)) +#define HW_CAU_ADR_CA_WR(n, v) (HW_CAU_ADR_CA(n).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_ADR_CA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_RADR_CASR - Status register - Reverse and Add to Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_RADR_CASR - Status register - Reverse and Add to Register command (WO) + * + * Reset value: 0x20000000U + */ +typedef union _hw_cau_radr_casr +{ + uint32_t U; + struct _hw_cau_radr_casr_bitfields + { + uint32_t IC : 1; //!< [0] + uint32_t DPE : 1; //!< [1] + uint32_t RESERVED0 : 26; //!< [27:2] + uint32_t VER : 4; //!< [31:28] CAU version + } B; +} hw_cau_radr_casr_t; +#endif + +/*! + * @name Constants and macros for entire CAU_RADR_CASR register + */ +//@{ +#define HW_CAU_RADR_CASR_ADDR (REGS_CAU_BASE + 0x900U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_RADR_CASR (*(__O hw_cau_radr_casr_t *) HW_CAU_RADR_CASR_ADDR) +#define HW_CAU_RADR_CASR_WR(v) (HW_CAU_RADR_CASR.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_RADR_CASR bitfields + */ + +/*! + * @name Register CAU_RADR_CASR, field IC[0] (WO) + * + * Values: + * - 0 - No illegal commands issued + * - 1 - Illegal command issued + */ +//@{ +#define BP_CAU_RADR_CASR_IC (0U) //!< Bit position for CAU_RADR_CASR_IC. +#define BM_CAU_RADR_CASR_IC (0x00000001U) //!< Bit mask for CAU_RADR_CASR_IC. +#define BS_CAU_RADR_CASR_IC (1U) //!< Bit field size in bits for CAU_RADR_CASR_IC. + +//! @brief Format value for bitfield CAU_RADR_CASR_IC. +#define BF_CAU_RADR_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_RADR_CASR_IC), uint32_t) & BM_CAU_RADR_CASR_IC) +//@} + +/*! + * @name Register CAU_RADR_CASR, field DPE[1] (WO) + * + * Values: + * - 0 - No error detected + * - 1 - DES key parity error detected + */ +//@{ +#define BP_CAU_RADR_CASR_DPE (1U) //!< Bit position for CAU_RADR_CASR_DPE. +#define BM_CAU_RADR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_RADR_CASR_DPE. +#define BS_CAU_RADR_CASR_DPE (1U) //!< Bit field size in bits for CAU_RADR_CASR_DPE. + +//! @brief Format value for bitfield CAU_RADR_CASR_DPE. +#define BF_CAU_RADR_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_RADR_CASR_DPE), uint32_t) & BM_CAU_RADR_CASR_DPE) +//@} + +/*! + * @name Register CAU_RADR_CASR, field VER[31:28] (WO) + * + * Values: + * - 0001 - Initial CAU version + * - 0010 - Second version, added support for SHA-256 algorithm.(This is the + * value on this device) + */ +//@{ +#define BP_CAU_RADR_CASR_VER (28U) //!< Bit position for CAU_RADR_CASR_VER. +#define BM_CAU_RADR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_RADR_CASR_VER. +#define BS_CAU_RADR_CASR_VER (4U) //!< Bit field size in bits for CAU_RADR_CASR_VER. + +//! @brief Format value for bitfield CAU_RADR_CASR_VER. +#define BF_CAU_RADR_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_RADR_CASR_VER), uint32_t) & BM_CAU_RADR_CASR_VER) +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAU_RADR_CAA - Accumulator register - Reverse and Add to Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_RADR_CAA - Accumulator register - Reverse and Add to Register command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_radr_caa +{ + uint32_t U; + struct _hw_cau_radr_caa_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_radr_caa_t; +#endif + +/*! + * @name Constants and macros for entire CAU_RADR_CAA register + */ +//@{ +#define HW_CAU_RADR_CAA_ADDR (REGS_CAU_BASE + 0x904U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_RADR_CAA (*(__O hw_cau_radr_caa_t *) HW_CAU_RADR_CAA_ADDR) +#define HW_CAU_RADR_CAA_WR(v) (HW_CAU_RADR_CAA.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_RADR_CAA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_RADR_CA - General Purpose Register 0 - Reverse and Add to Register command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_RADR_CA - General Purpose Register 0 - Reverse and Add to Register command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_radr_ca +{ + uint32_t U; + struct _hw_cau_radr_ca_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_radr_ca_t; +#endif + +/*! + * @name Constants and macros for entire CAU_RADR_CA register + */ +//@{ +#define HW_CAU_RADR_CA_COUNT (9U) + +#define HW_CAU_RADR_CA_ADDR(n) (REGS_CAU_BASE + 0x908U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_RADR_CA(n) (*(__O hw_cau_radr_ca_t *) HW_CAU_RADR_CA_ADDR(n)) +#define HW_CAU_RADR_CA_WR(n, v) (HW_CAU_RADR_CA(n).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_RADR_CA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_XOR_CASR - Status register - Exclusive Or command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_XOR_CASR - Status register - Exclusive Or command (WO) + * + * Reset value: 0x20000000U + */ +typedef union _hw_cau_xor_casr +{ + uint32_t U; + struct _hw_cau_xor_casr_bitfields + { + uint32_t IC : 1; //!< [0] + uint32_t DPE : 1; //!< [1] + uint32_t RESERVED0 : 26; //!< [27:2] + uint32_t VER : 4; //!< [31:28] CAU version + } B; +} hw_cau_xor_casr_t; +#endif + +/*! + * @name Constants and macros for entire CAU_XOR_CASR register + */ +//@{ +#define HW_CAU_XOR_CASR_ADDR (REGS_CAU_BASE + 0x980U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_XOR_CASR (*(__O hw_cau_xor_casr_t *) HW_CAU_XOR_CASR_ADDR) +#define HW_CAU_XOR_CASR_WR(v) (HW_CAU_XOR_CASR.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_XOR_CASR bitfields + */ + +/*! + * @name Register CAU_XOR_CASR, field IC[0] (WO) + * + * Values: + * - 0 - No illegal commands issued + * - 1 - Illegal command issued + */ +//@{ +#define BP_CAU_XOR_CASR_IC (0U) //!< Bit position for CAU_XOR_CASR_IC. +#define BM_CAU_XOR_CASR_IC (0x00000001U) //!< Bit mask for CAU_XOR_CASR_IC. +#define BS_CAU_XOR_CASR_IC (1U) //!< Bit field size in bits for CAU_XOR_CASR_IC. + +//! @brief Format value for bitfield CAU_XOR_CASR_IC. +#define BF_CAU_XOR_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_XOR_CASR_IC), uint32_t) & BM_CAU_XOR_CASR_IC) +//@} + +/*! + * @name Register CAU_XOR_CASR, field DPE[1] (WO) + * + * Values: + * - 0 - No error detected + * - 1 - DES key parity error detected + */ +//@{ +#define BP_CAU_XOR_CASR_DPE (1U) //!< Bit position for CAU_XOR_CASR_DPE. +#define BM_CAU_XOR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_XOR_CASR_DPE. +#define BS_CAU_XOR_CASR_DPE (1U) //!< Bit field size in bits for CAU_XOR_CASR_DPE. + +//! @brief Format value for bitfield CAU_XOR_CASR_DPE. +#define BF_CAU_XOR_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_XOR_CASR_DPE), uint32_t) & BM_CAU_XOR_CASR_DPE) +//@} + +/*! + * @name Register CAU_XOR_CASR, field VER[31:28] (WO) + * + * Values: + * - 0001 - Initial CAU version + * - 0010 - Second version, added support for SHA-256 algorithm.(This is the + * value on this device) + */ +//@{ +#define BP_CAU_XOR_CASR_VER (28U) //!< Bit position for CAU_XOR_CASR_VER. +#define BM_CAU_XOR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_XOR_CASR_VER. +#define BS_CAU_XOR_CASR_VER (4U) //!< Bit field size in bits for CAU_XOR_CASR_VER. + +//! @brief Format value for bitfield CAU_XOR_CASR_VER. +#define BF_CAU_XOR_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_XOR_CASR_VER), uint32_t) & BM_CAU_XOR_CASR_VER) +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAU_XOR_CAA - Accumulator register - Exclusive Or command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_XOR_CAA - Accumulator register - Exclusive Or command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_xor_caa +{ + uint32_t U; + struct _hw_cau_xor_caa_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_xor_caa_t; +#endif + +/*! + * @name Constants and macros for entire CAU_XOR_CAA register + */ +//@{ +#define HW_CAU_XOR_CAA_ADDR (REGS_CAU_BASE + 0x984U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_XOR_CAA (*(__O hw_cau_xor_caa_t *) HW_CAU_XOR_CAA_ADDR) +#define HW_CAU_XOR_CAA_WR(v) (HW_CAU_XOR_CAA.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_XOR_CAA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_XOR_CA - General Purpose Register 0 - Exclusive Or command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_XOR_CA - General Purpose Register 0 - Exclusive Or command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_xor_ca +{ + uint32_t U; + struct _hw_cau_xor_ca_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_xor_ca_t; +#endif + +/*! + * @name Constants and macros for entire CAU_XOR_CA register + */ +//@{ +#define HW_CAU_XOR_CA_COUNT (9U) + +#define HW_CAU_XOR_CA_ADDR(n) (REGS_CAU_BASE + 0x988U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_XOR_CA(n) (*(__O hw_cau_xor_ca_t *) HW_CAU_XOR_CA_ADDR(n)) +#define HW_CAU_XOR_CA_WR(n, v) (HW_CAU_XOR_CA(n).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_XOR_CA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_ROTL_CASR - Status register - Rotate Left command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_ROTL_CASR - Status register - Rotate Left command (WO) + * + * Reset value: 0x20000000U + */ +typedef union _hw_cau_rotl_casr +{ + uint32_t U; + struct _hw_cau_rotl_casr_bitfields + { + uint32_t IC : 1; //!< [0] + uint32_t DPE : 1; //!< [1] + uint32_t RESERVED0 : 26; //!< [27:2] + uint32_t VER : 4; //!< [31:28] CAU version + } B; +} hw_cau_rotl_casr_t; +#endif + +/*! + * @name Constants and macros for entire CAU_ROTL_CASR register + */ +//@{ +#define HW_CAU_ROTL_CASR_ADDR (REGS_CAU_BASE + 0x9C0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_ROTL_CASR (*(__O hw_cau_rotl_casr_t *) HW_CAU_ROTL_CASR_ADDR) +#define HW_CAU_ROTL_CASR_WR(v) (HW_CAU_ROTL_CASR.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_ROTL_CASR bitfields + */ + +/*! + * @name Register CAU_ROTL_CASR, field IC[0] (WO) + * + * Values: + * - 0 - No illegal commands issued + * - 1 - Illegal command issued + */ +//@{ +#define BP_CAU_ROTL_CASR_IC (0U) //!< Bit position for CAU_ROTL_CASR_IC. +#define BM_CAU_ROTL_CASR_IC (0x00000001U) //!< Bit mask for CAU_ROTL_CASR_IC. +#define BS_CAU_ROTL_CASR_IC (1U) //!< Bit field size in bits for CAU_ROTL_CASR_IC. + +//! @brief Format value for bitfield CAU_ROTL_CASR_IC. +#define BF_CAU_ROTL_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ROTL_CASR_IC), uint32_t) & BM_CAU_ROTL_CASR_IC) +//@} + +/*! + * @name Register CAU_ROTL_CASR, field DPE[1] (WO) + * + * Values: + * - 0 - No error detected + * - 1 - DES key parity error detected + */ +//@{ +#define BP_CAU_ROTL_CASR_DPE (1U) //!< Bit position for CAU_ROTL_CASR_DPE. +#define BM_CAU_ROTL_CASR_DPE (0x00000002U) //!< Bit mask for CAU_ROTL_CASR_DPE. +#define BS_CAU_ROTL_CASR_DPE (1U) //!< Bit field size in bits for CAU_ROTL_CASR_DPE. + +//! @brief Format value for bitfield CAU_ROTL_CASR_DPE. +#define BF_CAU_ROTL_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ROTL_CASR_DPE), uint32_t) & BM_CAU_ROTL_CASR_DPE) +//@} + +/*! + * @name Register CAU_ROTL_CASR, field VER[31:28] (WO) + * + * Values: + * - 0001 - Initial CAU version + * - 0010 - Second version, added support for SHA-256 algorithm.(This is the + * value on this device) + */ +//@{ +#define BP_CAU_ROTL_CASR_VER (28U) //!< Bit position for CAU_ROTL_CASR_VER. +#define BM_CAU_ROTL_CASR_VER (0xF0000000U) //!< Bit mask for CAU_ROTL_CASR_VER. +#define BS_CAU_ROTL_CASR_VER (4U) //!< Bit field size in bits for CAU_ROTL_CASR_VER. + +//! @brief Format value for bitfield CAU_ROTL_CASR_VER. +#define BF_CAU_ROTL_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ROTL_CASR_VER), uint32_t) & BM_CAU_ROTL_CASR_VER) +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAU_ROTL_CAA - Accumulator register - Rotate Left command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_ROTL_CAA - Accumulator register - Rotate Left command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_rotl_caa +{ + uint32_t U; + struct _hw_cau_rotl_caa_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_rotl_caa_t; +#endif + +/*! + * @name Constants and macros for entire CAU_ROTL_CAA register + */ +//@{ +#define HW_CAU_ROTL_CAA_ADDR (REGS_CAU_BASE + 0x9C4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_ROTL_CAA (*(__O hw_cau_rotl_caa_t *) HW_CAU_ROTL_CAA_ADDR) +#define HW_CAU_ROTL_CAA_WR(v) (HW_CAU_ROTL_CAA.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_ROTL_CAA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_ROTL_CA - General Purpose Register 0 - Rotate Left command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_ROTL_CA - General Purpose Register 0 - Rotate Left command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_rotl_ca +{ + uint32_t U; + struct _hw_cau_rotl_ca_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_rotl_ca_t; +#endif + +/*! + * @name Constants and macros for entire CAU_ROTL_CA register + */ +//@{ +#define HW_CAU_ROTL_CA_COUNT (9U) + +#define HW_CAU_ROTL_CA_ADDR(n) (REGS_CAU_BASE + 0x9C8U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_ROTL_CA(n) (*(__O hw_cau_rotl_ca_t *) HW_CAU_ROTL_CA_ADDR(n)) +#define HW_CAU_ROTL_CA_WR(n, v) (HW_CAU_ROTL_CA(n).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_ROTL_CA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_AESC_CASR - Status register - AES Column Operation command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_AESC_CASR - Status register - AES Column Operation command (WO) + * + * Reset value: 0x20000000U + */ +typedef union _hw_cau_aesc_casr +{ + uint32_t U; + struct _hw_cau_aesc_casr_bitfields + { + uint32_t IC : 1; //!< [0] + uint32_t DPE : 1; //!< [1] + uint32_t RESERVED0 : 26; //!< [27:2] + uint32_t VER : 4; //!< [31:28] CAU version + } B; +} hw_cau_aesc_casr_t; +#endif + +/*! + * @name Constants and macros for entire CAU_AESC_CASR register + */ +//@{ +#define HW_CAU_AESC_CASR_ADDR (REGS_CAU_BASE + 0xB00U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_AESC_CASR (*(__O hw_cau_aesc_casr_t *) HW_CAU_AESC_CASR_ADDR) +#define HW_CAU_AESC_CASR_WR(v) (HW_CAU_AESC_CASR.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_AESC_CASR bitfields + */ + +/*! + * @name Register CAU_AESC_CASR, field IC[0] (WO) + * + * Values: + * - 0 - No illegal commands issued + * - 1 - Illegal command issued + */ +//@{ +#define BP_CAU_AESC_CASR_IC (0U) //!< Bit position for CAU_AESC_CASR_IC. +#define BM_CAU_AESC_CASR_IC (0x00000001U) //!< Bit mask for CAU_AESC_CASR_IC. +#define BS_CAU_AESC_CASR_IC (1U) //!< Bit field size in bits for CAU_AESC_CASR_IC. + +//! @brief Format value for bitfield CAU_AESC_CASR_IC. +#define BF_CAU_AESC_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESC_CASR_IC), uint32_t) & BM_CAU_AESC_CASR_IC) +//@} + +/*! + * @name Register CAU_AESC_CASR, field DPE[1] (WO) + * + * Values: + * - 0 - No error detected + * - 1 - DES key parity error detected + */ +//@{ +#define BP_CAU_AESC_CASR_DPE (1U) //!< Bit position for CAU_AESC_CASR_DPE. +#define BM_CAU_AESC_CASR_DPE (0x00000002U) //!< Bit mask for CAU_AESC_CASR_DPE. +#define BS_CAU_AESC_CASR_DPE (1U) //!< Bit field size in bits for CAU_AESC_CASR_DPE. + +//! @brief Format value for bitfield CAU_AESC_CASR_DPE. +#define BF_CAU_AESC_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESC_CASR_DPE), uint32_t) & BM_CAU_AESC_CASR_DPE) +//@} + +/*! + * @name Register CAU_AESC_CASR, field VER[31:28] (WO) + * + * Values: + * - 0001 - Initial CAU version + * - 0010 - Second version, added support for SHA-256 algorithm.(This is the + * value on this device) + */ +//@{ +#define BP_CAU_AESC_CASR_VER (28U) //!< Bit position for CAU_AESC_CASR_VER. +#define BM_CAU_AESC_CASR_VER (0xF0000000U) //!< Bit mask for CAU_AESC_CASR_VER. +#define BS_CAU_AESC_CASR_VER (4U) //!< Bit field size in bits for CAU_AESC_CASR_VER. + +//! @brief Format value for bitfield CAU_AESC_CASR_VER. +#define BF_CAU_AESC_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESC_CASR_VER), uint32_t) & BM_CAU_AESC_CASR_VER) +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAU_AESC_CAA - Accumulator register - AES Column Operation command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_AESC_CAA - Accumulator register - AES Column Operation command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_aesc_caa +{ + uint32_t U; + struct _hw_cau_aesc_caa_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_aesc_caa_t; +#endif + +/*! + * @name Constants and macros for entire CAU_AESC_CAA register + */ +//@{ +#define HW_CAU_AESC_CAA_ADDR (REGS_CAU_BASE + 0xB04U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_AESC_CAA (*(__O hw_cau_aesc_caa_t *) HW_CAU_AESC_CAA_ADDR) +#define HW_CAU_AESC_CAA_WR(v) (HW_CAU_AESC_CAA.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_AESC_CAA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_AESC_CA - General Purpose Register 0 - AES Column Operation command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_AESC_CA - General Purpose Register 0 - AES Column Operation command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_aesc_ca +{ + uint32_t U; + struct _hw_cau_aesc_ca_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_aesc_ca_t; +#endif + +/*! + * @name Constants and macros for entire CAU_AESC_CA register + */ +//@{ +#define HW_CAU_AESC_CA_COUNT (9U) + +#define HW_CAU_AESC_CA_ADDR(n) (REGS_CAU_BASE + 0xB08U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_AESC_CA(n) (*(__O hw_cau_aesc_ca_t *) HW_CAU_AESC_CA_ADDR(n)) +#define HW_CAU_AESC_CA_WR(n, v) (HW_CAU_AESC_CA(n).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_AESC_CA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_AESIC_CASR - Status register - AES Inverse Column Operation command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_AESIC_CASR - Status register - AES Inverse Column Operation command (WO) + * + * Reset value: 0x20000000U + */ +typedef union _hw_cau_aesic_casr +{ + uint32_t U; + struct _hw_cau_aesic_casr_bitfields + { + uint32_t IC : 1; //!< [0] + uint32_t DPE : 1; //!< [1] + uint32_t RESERVED0 : 26; //!< [27:2] + uint32_t VER : 4; //!< [31:28] CAU version + } B; +} hw_cau_aesic_casr_t; +#endif + +/*! + * @name Constants and macros for entire CAU_AESIC_CASR register + */ +//@{ +#define HW_CAU_AESIC_CASR_ADDR (REGS_CAU_BASE + 0xB40U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_AESIC_CASR (*(__O hw_cau_aesic_casr_t *) HW_CAU_AESIC_CASR_ADDR) +#define HW_CAU_AESIC_CASR_WR(v) (HW_CAU_AESIC_CASR.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_AESIC_CASR bitfields + */ + +/*! + * @name Register CAU_AESIC_CASR, field IC[0] (WO) + * + * Values: + * - 0 - No illegal commands issued + * - 1 - Illegal command issued + */ +//@{ +#define BP_CAU_AESIC_CASR_IC (0U) //!< Bit position for CAU_AESIC_CASR_IC. +#define BM_CAU_AESIC_CASR_IC (0x00000001U) //!< Bit mask for CAU_AESIC_CASR_IC. +#define BS_CAU_AESIC_CASR_IC (1U) //!< Bit field size in bits for CAU_AESIC_CASR_IC. + +//! @brief Format value for bitfield CAU_AESIC_CASR_IC. +#define BF_CAU_AESIC_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESIC_CASR_IC), uint32_t) & BM_CAU_AESIC_CASR_IC) +//@} + +/*! + * @name Register CAU_AESIC_CASR, field DPE[1] (WO) + * + * Values: + * - 0 - No error detected + * - 1 - DES key parity error detected + */ +//@{ +#define BP_CAU_AESIC_CASR_DPE (1U) //!< Bit position for CAU_AESIC_CASR_DPE. +#define BM_CAU_AESIC_CASR_DPE (0x00000002U) //!< Bit mask for CAU_AESIC_CASR_DPE. +#define BS_CAU_AESIC_CASR_DPE (1U) //!< Bit field size in bits for CAU_AESIC_CASR_DPE. + +//! @brief Format value for bitfield CAU_AESIC_CASR_DPE. +#define BF_CAU_AESIC_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESIC_CASR_DPE), uint32_t) & BM_CAU_AESIC_CASR_DPE) +//@} + +/*! + * @name Register CAU_AESIC_CASR, field VER[31:28] (WO) + * + * Values: + * - 0001 - Initial CAU version + * - 0010 - Second version, added support for SHA-256 algorithm.(This is the + * value on this device) + */ +//@{ +#define BP_CAU_AESIC_CASR_VER (28U) //!< Bit position for CAU_AESIC_CASR_VER. +#define BM_CAU_AESIC_CASR_VER (0xF0000000U) //!< Bit mask for CAU_AESIC_CASR_VER. +#define BS_CAU_AESIC_CASR_VER (4U) //!< Bit field size in bits for CAU_AESIC_CASR_VER. + +//! @brief Format value for bitfield CAU_AESIC_CASR_VER. +#define BF_CAU_AESIC_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESIC_CASR_VER), uint32_t) & BM_CAU_AESIC_CASR_VER) +//@} + +//------------------------------------------------------------------------------------------- +// HW_CAU_AESIC_CAA - Accumulator register - AES Inverse Column Operation command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_AESIC_CAA - Accumulator register - AES Inverse Column Operation command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_aesic_caa +{ + uint32_t U; + struct _hw_cau_aesic_caa_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_aesic_caa_t; +#endif + +/*! + * @name Constants and macros for entire CAU_AESIC_CAA register + */ +//@{ +#define HW_CAU_AESIC_CAA_ADDR (REGS_CAU_BASE + 0xB44U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_AESIC_CAA (*(__O hw_cau_aesic_caa_t *) HW_CAU_AESIC_CAA_ADDR) +#define HW_CAU_AESIC_CAA_WR(v) (HW_CAU_AESIC_CAA.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_AESIC_CAA bitfields + */ + +//------------------------------------------------------------------------------------------- +// HW_CAU_AESIC_CA - General Purpose Register 0 - AES Inverse Column Operation command +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CAU_AESIC_CA - General Purpose Register 0 - AES Inverse Column Operation command (WO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_cau_aesic_ca +{ + uint32_t U; + struct _hw_cau_aesic_ca_bitfields + { + uint32_t RESERVED0 : 32; //!< [31:0] + } B; +} hw_cau_aesic_ca_t; +#endif + +/*! + * @name Constants and macros for entire CAU_AESIC_CA register + */ +//@{ +#define HW_CAU_AESIC_CA_COUNT (9U) + +#define HW_CAU_AESIC_CA_ADDR(n) (REGS_CAU_BASE + 0xB48U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_CAU_AESIC_CA(n) (*(__O hw_cau_aesic_ca_t *) HW_CAU_AESIC_CA_ADDR(n)) +#define HW_CAU_AESIC_CA_WR(n, v) (HW_CAU_AESIC_CA(n).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual CAU_AESIC_CA bitfields + */ + +//------------------------------------------------------------------------------------------- +// hw_cau_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All CAU module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_cau +{ + __O hw_cau_direct_t DIRECT[16]; //!< [0x0] Direct access register 0 + uint8_t _reserved0[2048]; + __O hw_cau_ldr_casr_t LDR_CASR; //!< [0x840] Status register - Load Register command + __O hw_cau_ldr_caa_t LDR_CAA; //!< [0x844] Accumulator register - Load Register command + __O hw_cau_ldr_ca_t LDR_CA[9]; //!< [0x848] General Purpose Register 0 - Load Register command + uint8_t _reserved1[20]; + __I hw_cau_str_casr_t STR_CASR; //!< [0x880] Status register - Store Register command + __I hw_cau_str_caa_t STR_CAA; //!< [0x884] Accumulator register - Store Register command + __I hw_cau_str_ca_t STR_CA[9]; //!< [0x888] General Purpose Register 0 - Store Register command + uint8_t _reserved2[20]; + __O hw_cau_adr_casr_t ADR_CASR; //!< [0x8C0] Status register - Add Register command + __O hw_cau_adr_caa_t ADR_CAA; //!< [0x8C4] Accumulator register - Add to register command + __O hw_cau_adr_ca_t ADR_CA[9]; //!< [0x8C8] General Purpose Register 0 - Add to register command + uint8_t _reserved3[20]; + __O hw_cau_radr_casr_t RADR_CASR; //!< [0x900] Status register - Reverse and Add to Register command + __O hw_cau_radr_caa_t RADR_CAA; //!< [0x904] Accumulator register - Reverse and Add to Register command + __O hw_cau_radr_ca_t RADR_CA[9]; //!< [0x908] General Purpose Register 0 - Reverse and Add to Register command + uint8_t _reserved4[84]; + __O hw_cau_xor_casr_t XOR_CASR; //!< [0x980] Status register - Exclusive Or command + __O hw_cau_xor_caa_t XOR_CAA; //!< [0x984] Accumulator register - Exclusive Or command + __O hw_cau_xor_ca_t XOR_CA[9]; //!< [0x988] General Purpose Register 0 - Exclusive Or command + uint8_t _reserved5[20]; + __O hw_cau_rotl_casr_t ROTL_CASR; //!< [0x9C0] Status register - Rotate Left command + __O hw_cau_rotl_caa_t ROTL_CAA; //!< [0x9C4] Accumulator register - Rotate Left command + __O hw_cau_rotl_ca_t ROTL_CA[9]; //!< [0x9C8] General Purpose Register 0 - Rotate Left command + uint8_t _reserved6[276]; + __O hw_cau_aesc_casr_t AESC_CASR; //!< [0xB00] Status register - AES Column Operation command + __O hw_cau_aesc_caa_t AESC_CAA; //!< [0xB04] Accumulator register - AES Column Operation command + __O hw_cau_aesc_ca_t AESC_CA[9]; //!< [0xB08] General Purpose Register 0 - AES Column Operation command + uint8_t _reserved7[20]; + __O hw_cau_aesic_casr_t AESIC_CASR; //!< [0xB40] Status register - AES Inverse Column Operation command + __O hw_cau_aesic_caa_t AESIC_CAA; //!< [0xB44] Accumulator register - AES Inverse Column Operation command + __O hw_cau_aesic_ca_t AESIC_CA[9]; //!< [0xB48] General Purpose Register 0 - AES Inverse Column Operation command +} hw_cau_t; +#pragma pack() + +//! @brief Macro to access all CAU registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_CAU</code>. +#define HW_CAU (*(hw_cau_t *) REGS_CAU_BASE) +#endif + +#endif // __HW_CAU_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_cmp.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1018 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_CMP_REGISTERS_H__ +#define __HW_CMP_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 CMP + * + * High-Speed Comparator (CMP), Voltage Reference (VREF) Digital-to-Analog Converter (DAC), and Analog Mux (ANMUX) + * + * Registers defined in this header file: + * - HW_CMP_CR0 - CMP Control Register 0 + * - HW_CMP_CR1 - CMP Control Register 1 + * - HW_CMP_FPR - CMP Filter Period Register + * - HW_CMP_SCR - CMP Status and Control Register + * - HW_CMP_DACCR - DAC Control Register + * - HW_CMP_MUXCR - MUX Control Register + * + * - hw_cmp_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_CMP_BASE +#define HW_CMP_INSTANCE_COUNT (3U) //!< Number of instances of the CMP module. +#define HW_CMP0 (0U) //!< Instance number for CMP0. +#define HW_CMP1 (1U) //!< Instance number for CMP1. +#define HW_CMP2 (2U) //!< Instance number for CMP2. +#define REGS_CMP0_BASE (0x40073000U) //!< Base address for CMP0. +#define REGS_CMP1_BASE (0x40073008U) //!< Base address for CMP1. +#define REGS_CMP2_BASE (0x40073010U) //!< Base address for CMP2. + +//! @brief Table of base addresses for CMP instances. +static const uint32_t __g_regs_CMP_base_addresses[] = { + REGS_CMP0_BASE, + REGS_CMP1_BASE, + REGS_CMP2_BASE, + }; + +//! @brief Get the base address of CMP by instance number. +//! @param x CMP instance number, from 0 through 2. +#define REGS_CMP_BASE(x) (__g_regs_CMP_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of CMP. +#define REGS_CMP_INSTANCE(b) ((b) == REGS_CMP0_BASE ? HW_CMP0 : (b) == REGS_CMP1_BASE ? HW_CMP1 : (b) == REGS_CMP2_BASE ? HW_CMP2 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMP_CR0 - CMP Control Register 0 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMP_CR0 - CMP Control Register 0 (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_cmp_cr0 +{ + uint8_t U; + struct _hw_cmp_cr0_bitfields + { + uint8_t HYSTCTR : 2; //!< [1:0] Comparator hard block hysteresis + //! control + uint8_t RESERVED0 : 2; //!< [3:2] + uint8_t FILTER_CNT : 3; //!< [6:4] Filter Sample Count + uint8_t RESERVED1 : 1; //!< [7] + } B; +} hw_cmp_cr0_t; +#endif + +/*! + * @name Constants and macros for entire CMP_CR0 register + */ +//@{ +#define HW_CMP_CR0_ADDR(x) (REGS_CMP_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMP_CR0(x) (*(__IO hw_cmp_cr0_t *) HW_CMP_CR0_ADDR(x)) +#define HW_CMP_CR0_RD(x) (HW_CMP_CR0(x).U) +#define HW_CMP_CR0_WR(x, v) (HW_CMP_CR0(x).U = (v)) +#define HW_CMP_CR0_SET(x, v) (HW_CMP_CR0_WR(x, HW_CMP_CR0_RD(x) | (v))) +#define HW_CMP_CR0_CLR(x, v) (HW_CMP_CR0_WR(x, HW_CMP_CR0_RD(x) & ~(v))) +#define HW_CMP_CR0_TOG(x, v) (HW_CMP_CR0_WR(x, HW_CMP_CR0_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMP_CR0 bitfields + */ + +/*! + * @name Register CMP_CR0, field HYSTCTR[1:0] (RW) + * + * Defines the programmable hysteresis level. The hysteresis values associated + * with each level are device-specific. See the Data Sheet of the device for the + * exact values. + * + * Values: + * - 00 - Level 0 + * - 01 - Level 1 + * - 10 - Level 2 + * - 11 - Level 3 + */ +//@{ +#define BP_CMP_CR0_HYSTCTR (0U) //!< Bit position for CMP_CR0_HYSTCTR. +#define BM_CMP_CR0_HYSTCTR (0x03U) //!< Bit mask for CMP_CR0_HYSTCTR. +#define BS_CMP_CR0_HYSTCTR (2U) //!< Bit field size in bits for CMP_CR0_HYSTCTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_CR0_HYSTCTR field. +#define BR_CMP_CR0_HYSTCTR(x) (HW_CMP_CR0(x).B.HYSTCTR) +#endif + +//! @brief Format value for bitfield CMP_CR0_HYSTCTR. +#define BF_CMP_CR0_HYSTCTR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_CR0_HYSTCTR), uint8_t) & BM_CMP_CR0_HYSTCTR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HYSTCTR field to a new value. +#define BW_CMP_CR0_HYSTCTR(x, v) (HW_CMP_CR0_WR(x, (HW_CMP_CR0_RD(x) & ~BM_CMP_CR0_HYSTCTR) | BF_CMP_CR0_HYSTCTR(v))) +#endif +//@} + +/*! + * @name Register CMP_CR0, field FILTER_CNT[6:4] (RW) + * + * Represents the number of consecutive samples that must agree prior to the + * comparator ouput filter accepting a new output state. For information regarding + * filter programming and latency, see the Functional descriptionThe CMP module + * can be used to compare two analog input voltages applied to INP and INM. . + * + * Values: + * - 000 - Filter is disabled. If SE = 1, then COUT is a logic 0. This is not a + * legal state, and is not recommended. If SE = 0, COUT = COUTA. + * - 001 - One sample must agree. The comparator output is simply sampled. + * - 010 - 2 consecutive samples must agree. + * - 011 - 3 consecutive samples must agree. + * - 100 - 4 consecutive samples must agree. + * - 101 - 5 consecutive samples must agree. + * - 110 - 6 consecutive samples must agree. + * - 111 - 7 consecutive samples must agree. + */ +//@{ +#define BP_CMP_CR0_FILTER_CNT (4U) //!< Bit position for CMP_CR0_FILTER_CNT. +#define BM_CMP_CR0_FILTER_CNT (0x70U) //!< Bit mask for CMP_CR0_FILTER_CNT. +#define BS_CMP_CR0_FILTER_CNT (3U) //!< Bit field size in bits for CMP_CR0_FILTER_CNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_CR0_FILTER_CNT field. +#define BR_CMP_CR0_FILTER_CNT(x) (HW_CMP_CR0(x).B.FILTER_CNT) +#endif + +//! @brief Format value for bitfield CMP_CR0_FILTER_CNT. +#define BF_CMP_CR0_FILTER_CNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_CR0_FILTER_CNT), uint8_t) & BM_CMP_CR0_FILTER_CNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FILTER_CNT field to a new value. +#define BW_CMP_CR0_FILTER_CNT(x, v) (HW_CMP_CR0_WR(x, (HW_CMP_CR0_RD(x) & ~BM_CMP_CR0_FILTER_CNT) | BF_CMP_CR0_FILTER_CNT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMP_CR1 - CMP Control Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMP_CR1 - CMP Control Register 1 (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_cmp_cr1 +{ + uint8_t U; + struct _hw_cmp_cr1_bitfields + { + uint8_t EN : 1; //!< [0] Comparator Module Enable + uint8_t OPE : 1; //!< [1] Comparator Output Pin Enable + uint8_t COS : 1; //!< [2] Comparator Output Select + uint8_t INV : 1; //!< [3] Comparator INVERT + uint8_t PMODE : 1; //!< [4] Power Mode Select + uint8_t RESERVED0 : 1; //!< [5] + uint8_t WE : 1; //!< [6] Windowing Enable + uint8_t SE : 1; //!< [7] Sample Enable + } B; +} hw_cmp_cr1_t; +#endif + +/*! + * @name Constants and macros for entire CMP_CR1 register + */ +//@{ +#define HW_CMP_CR1_ADDR(x) (REGS_CMP_BASE(x) + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMP_CR1(x) (*(__IO hw_cmp_cr1_t *) HW_CMP_CR1_ADDR(x)) +#define HW_CMP_CR1_RD(x) (HW_CMP_CR1(x).U) +#define HW_CMP_CR1_WR(x, v) (HW_CMP_CR1(x).U = (v)) +#define HW_CMP_CR1_SET(x, v) (HW_CMP_CR1_WR(x, HW_CMP_CR1_RD(x) | (v))) +#define HW_CMP_CR1_CLR(x, v) (HW_CMP_CR1_WR(x, HW_CMP_CR1_RD(x) & ~(v))) +#define HW_CMP_CR1_TOG(x, v) (HW_CMP_CR1_WR(x, HW_CMP_CR1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMP_CR1 bitfields + */ + +/*! + * @name Register CMP_CR1, field EN[0] (RW) + * + * Enables the Analog Comparator module. When the module is not enabled, it + * remains in the off state, and consumes no power. When the user selects the same + * input from analog mux to the positive and negative port, the comparator is + * disabled automatically. + * + * Values: + * - 0 - Analog Comparator is disabled. + * - 1 - Analog Comparator is enabled. + */ +//@{ +#define BP_CMP_CR1_EN (0U) //!< Bit position for CMP_CR1_EN. +#define BM_CMP_CR1_EN (0x01U) //!< Bit mask for CMP_CR1_EN. +#define BS_CMP_CR1_EN (1U) //!< Bit field size in bits for CMP_CR1_EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_CR1_EN field. +#define BR_CMP_CR1_EN(x) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_EN)) +#endif + +//! @brief Format value for bitfield CMP_CR1_EN. +#define BF_CMP_CR1_EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_CR1_EN), uint8_t) & BM_CMP_CR1_EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EN field to a new value. +#define BW_CMP_CR1_EN(x, v) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_EN) = (v)) +#endif +//@} + +/*! + * @name Register CMP_CR1, field OPE[1] (RW) + * + * Values: + * - 0 - CMPO is not available on the associated CMPO output pin. If the + * comparator does not own the pin, this field has no effect. + * - 1 - CMPO is available on the associated CMPO output pin. The comparator + * output (CMPO) is driven out on the associated CMPO output pin if the + * comparator owns the pin. If the comparator does not own the field, this bit has no + * effect. + */ +//@{ +#define BP_CMP_CR1_OPE (1U) //!< Bit position for CMP_CR1_OPE. +#define BM_CMP_CR1_OPE (0x02U) //!< Bit mask for CMP_CR1_OPE. +#define BS_CMP_CR1_OPE (1U) //!< Bit field size in bits for CMP_CR1_OPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_CR1_OPE field. +#define BR_CMP_CR1_OPE(x) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_OPE)) +#endif + +//! @brief Format value for bitfield CMP_CR1_OPE. +#define BF_CMP_CR1_OPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_CR1_OPE), uint8_t) & BM_CMP_CR1_OPE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OPE field to a new value. +#define BW_CMP_CR1_OPE(x, v) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_OPE) = (v)) +#endif +//@} + +/*! + * @name Register CMP_CR1, field COS[2] (RW) + * + * Values: + * - 0 - Set the filtered comparator output (CMPO) to equal COUT. + * - 1 - Set the unfiltered comparator output (CMPO) to equal COUTA. + */ +//@{ +#define BP_CMP_CR1_COS (2U) //!< Bit position for CMP_CR1_COS. +#define BM_CMP_CR1_COS (0x04U) //!< Bit mask for CMP_CR1_COS. +#define BS_CMP_CR1_COS (1U) //!< Bit field size in bits for CMP_CR1_COS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_CR1_COS field. +#define BR_CMP_CR1_COS(x) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_COS)) +#endif + +//! @brief Format value for bitfield CMP_CR1_COS. +#define BF_CMP_CR1_COS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_CR1_COS), uint8_t) & BM_CMP_CR1_COS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COS field to a new value. +#define BW_CMP_CR1_COS(x, v) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_COS) = (v)) +#endif +//@} + +/*! + * @name Register CMP_CR1, field INV[3] (RW) + * + * Allows selection of the polarity of the analog comparator function. It is + * also driven to the COUT output, on both the device pin and as SCR[COUT], when + * OPE=0. + * + * Values: + * - 0 - Does not invert the comparator output. + * - 1 - Inverts the comparator output. + */ +//@{ +#define BP_CMP_CR1_INV (3U) //!< Bit position for CMP_CR1_INV. +#define BM_CMP_CR1_INV (0x08U) //!< Bit mask for CMP_CR1_INV. +#define BS_CMP_CR1_INV (1U) //!< Bit field size in bits for CMP_CR1_INV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_CR1_INV field. +#define BR_CMP_CR1_INV(x) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_INV)) +#endif + +//! @brief Format value for bitfield CMP_CR1_INV. +#define BF_CMP_CR1_INV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_CR1_INV), uint8_t) & BM_CMP_CR1_INV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INV field to a new value. +#define BW_CMP_CR1_INV(x, v) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_INV) = (v)) +#endif +//@} + +/*! + * @name Register CMP_CR1, field PMODE[4] (RW) + * + * See the electrical specifications table in the device Data Sheet for details. + * + * Values: + * - 0 - Low-Speed (LS) Comparison mode selected. In this mode, CMP has slower + * output propagation delay and lower current consumption. + * - 1 - High-Speed (HS) Comparison mode selected. In this mode, CMP has faster + * output propagation delay and higher current consumption. + */ +//@{ +#define BP_CMP_CR1_PMODE (4U) //!< Bit position for CMP_CR1_PMODE. +#define BM_CMP_CR1_PMODE (0x10U) //!< Bit mask for CMP_CR1_PMODE. +#define BS_CMP_CR1_PMODE (1U) //!< Bit field size in bits for CMP_CR1_PMODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_CR1_PMODE field. +#define BR_CMP_CR1_PMODE(x) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_PMODE)) +#endif + +//! @brief Format value for bitfield CMP_CR1_PMODE. +#define BF_CMP_CR1_PMODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_CR1_PMODE), uint8_t) & BM_CMP_CR1_PMODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PMODE field to a new value. +#define BW_CMP_CR1_PMODE(x, v) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_PMODE) = (v)) +#endif +//@} + +/*! + * @name Register CMP_CR1, field WE[6] (RW) + * + * At any given time, either SE or WE can be set. If a write to this register + * attempts to set both, then SE is set and WE is cleared. However, avoid writing + * 1s to both field locations because this "11" case is reserved and may change in + * future implementations. + * + * Values: + * - 0 - Windowing mode is not selected. + * - 1 - Windowing mode is selected. + */ +//@{ +#define BP_CMP_CR1_WE (6U) //!< Bit position for CMP_CR1_WE. +#define BM_CMP_CR1_WE (0x40U) //!< Bit mask for CMP_CR1_WE. +#define BS_CMP_CR1_WE (1U) //!< Bit field size in bits for CMP_CR1_WE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_CR1_WE field. +#define BR_CMP_CR1_WE(x) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_WE)) +#endif + +//! @brief Format value for bitfield CMP_CR1_WE. +#define BF_CMP_CR1_WE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_CR1_WE), uint8_t) & BM_CMP_CR1_WE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WE field to a new value. +#define BW_CMP_CR1_WE(x, v) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_WE) = (v)) +#endif +//@} + +/*! + * @name Register CMP_CR1, field SE[7] (RW) + * + * At any given time, either SE or WE can be set. If a write to this register + * attempts to set both, then SE is set and WE is cleared. However, avoid writing + * 1s to both field locations because this "11" case is reserved and may change in + * future implementations. + * + * Values: + * - 0 - Sampling mode is not selected. + * - 1 - Sampling mode is selected. + */ +//@{ +#define BP_CMP_CR1_SE (7U) //!< Bit position for CMP_CR1_SE. +#define BM_CMP_CR1_SE (0x80U) //!< Bit mask for CMP_CR1_SE. +#define BS_CMP_CR1_SE (1U) //!< Bit field size in bits for CMP_CR1_SE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_CR1_SE field. +#define BR_CMP_CR1_SE(x) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_SE)) +#endif + +//! @brief Format value for bitfield CMP_CR1_SE. +#define BF_CMP_CR1_SE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_CR1_SE), uint8_t) & BM_CMP_CR1_SE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SE field to a new value. +#define BW_CMP_CR1_SE(x, v) (BITBAND_ACCESS8(HW_CMP_CR1_ADDR(x), BP_CMP_CR1_SE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMP_FPR - CMP Filter Period Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMP_FPR - CMP Filter Period Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_cmp_fpr +{ + uint8_t U; + struct _hw_cmp_fpr_bitfields + { + uint8_t FILT_PER : 8; //!< [7:0] Filter Sample Period + } B; +} hw_cmp_fpr_t; +#endif + +/*! + * @name Constants and macros for entire CMP_FPR register + */ +//@{ +#define HW_CMP_FPR_ADDR(x) (REGS_CMP_BASE(x) + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMP_FPR(x) (*(__IO hw_cmp_fpr_t *) HW_CMP_FPR_ADDR(x)) +#define HW_CMP_FPR_RD(x) (HW_CMP_FPR(x).U) +#define HW_CMP_FPR_WR(x, v) (HW_CMP_FPR(x).U = (v)) +#define HW_CMP_FPR_SET(x, v) (HW_CMP_FPR_WR(x, HW_CMP_FPR_RD(x) | (v))) +#define HW_CMP_FPR_CLR(x, v) (HW_CMP_FPR_WR(x, HW_CMP_FPR_RD(x) & ~(v))) +#define HW_CMP_FPR_TOG(x, v) (HW_CMP_FPR_WR(x, HW_CMP_FPR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMP_FPR bitfields + */ + +/*! + * @name Register CMP_FPR, field FILT_PER[7:0] (RW) + * + * Specifies the sampling period, in bus clock cycles, of the comparator output + * filter, when CR1[SE]=0. Setting FILT_PER to 0x0 disables the filter. Filter + * programming and latency details appear in the Functional descriptionThe CMP + * module can be used to compare two analog input voltages applied to INP and INM. . + * This field has no effect when CR1[SE]=1. In that case, the external SAMPLE + * signal is used to determine the sampling period. + */ +//@{ +#define BP_CMP_FPR_FILT_PER (0U) //!< Bit position for CMP_FPR_FILT_PER. +#define BM_CMP_FPR_FILT_PER (0xFFU) //!< Bit mask for CMP_FPR_FILT_PER. +#define BS_CMP_FPR_FILT_PER (8U) //!< Bit field size in bits for CMP_FPR_FILT_PER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_FPR_FILT_PER field. +#define BR_CMP_FPR_FILT_PER(x) (HW_CMP_FPR(x).U) +#endif + +//! @brief Format value for bitfield CMP_FPR_FILT_PER. +#define BF_CMP_FPR_FILT_PER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_FPR_FILT_PER), uint8_t) & BM_CMP_FPR_FILT_PER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FILT_PER field to a new value. +#define BW_CMP_FPR_FILT_PER(x, v) (HW_CMP_FPR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMP_SCR - CMP Status and Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMP_SCR - CMP Status and Control Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_cmp_scr +{ + uint8_t U; + struct _hw_cmp_scr_bitfields + { + uint8_t COUT : 1; //!< [0] Analog Comparator Output + uint8_t CFF : 1; //!< [1] Analog Comparator Flag Falling + uint8_t CFR : 1; //!< [2] Analog Comparator Flag Rising + uint8_t IEF : 1; //!< [3] Comparator Interrupt Enable Falling + uint8_t IER : 1; //!< [4] Comparator Interrupt Enable Rising + uint8_t RESERVED0 : 1; //!< [5] + uint8_t DMAEN : 1; //!< [6] DMA Enable Control + uint8_t RESERVED1 : 1; //!< [7] + } B; +} hw_cmp_scr_t; +#endif + +/*! + * @name Constants and macros for entire CMP_SCR register + */ +//@{ +#define HW_CMP_SCR_ADDR(x) (REGS_CMP_BASE(x) + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMP_SCR(x) (*(__IO hw_cmp_scr_t *) HW_CMP_SCR_ADDR(x)) +#define HW_CMP_SCR_RD(x) (HW_CMP_SCR(x).U) +#define HW_CMP_SCR_WR(x, v) (HW_CMP_SCR(x).U = (v)) +#define HW_CMP_SCR_SET(x, v) (HW_CMP_SCR_WR(x, HW_CMP_SCR_RD(x) | (v))) +#define HW_CMP_SCR_CLR(x, v) (HW_CMP_SCR_WR(x, HW_CMP_SCR_RD(x) & ~(v))) +#define HW_CMP_SCR_TOG(x, v) (HW_CMP_SCR_WR(x, HW_CMP_SCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMP_SCR bitfields + */ + +/*! + * @name Register CMP_SCR, field COUT[0] (RO) + * + * Returns the current value of the Analog Comparator output, when read. The + * field is reset to 0 and will read as CR1[INV] when the Analog Comparator module + * is disabled, that is, when CR1[EN] = 0. Writes to this field are ignored. + */ +//@{ +#define BP_CMP_SCR_COUT (0U) //!< Bit position for CMP_SCR_COUT. +#define BM_CMP_SCR_COUT (0x01U) //!< Bit mask for CMP_SCR_COUT. +#define BS_CMP_SCR_COUT (1U) //!< Bit field size in bits for CMP_SCR_COUT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_SCR_COUT field. +#define BR_CMP_SCR_COUT(x) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_COUT)) +#endif +//@} + +/*! + * @name Register CMP_SCR, field CFF[1] (W1C) + * + * Detects a falling-edge on COUT, when set, during normal operation. CFF is + * cleared by writing 1 to it. During Stop modes, CFF is level sensitive is edge + * sensitive . + * + * Values: + * - 0 - Falling-edge on COUT has not been detected. + * - 1 - Falling-edge on COUT has occurred. + */ +//@{ +#define BP_CMP_SCR_CFF (1U) //!< Bit position for CMP_SCR_CFF. +#define BM_CMP_SCR_CFF (0x02U) //!< Bit mask for CMP_SCR_CFF. +#define BS_CMP_SCR_CFF (1U) //!< Bit field size in bits for CMP_SCR_CFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_SCR_CFF field. +#define BR_CMP_SCR_CFF(x) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_CFF)) +#endif + +//! @brief Format value for bitfield CMP_SCR_CFF. +#define BF_CMP_SCR_CFF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_SCR_CFF), uint8_t) & BM_CMP_SCR_CFF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CFF field to a new value. +#define BW_CMP_SCR_CFF(x, v) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_CFF) = (v)) +#endif +//@} + +/*! + * @name Register CMP_SCR, field CFR[2] (W1C) + * + * Detects a rising-edge on COUT, when set, during normal operation. CFR is + * cleared by writing 1 to it. During Stop modes, CFR is level sensitive is edge + * sensitive . + * + * Values: + * - 0 - Rising-edge on COUT has not been detected. + * - 1 - Rising-edge on COUT has occurred. + */ +//@{ +#define BP_CMP_SCR_CFR (2U) //!< Bit position for CMP_SCR_CFR. +#define BM_CMP_SCR_CFR (0x04U) //!< Bit mask for CMP_SCR_CFR. +#define BS_CMP_SCR_CFR (1U) //!< Bit field size in bits for CMP_SCR_CFR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_SCR_CFR field. +#define BR_CMP_SCR_CFR(x) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_CFR)) +#endif + +//! @brief Format value for bitfield CMP_SCR_CFR. +#define BF_CMP_SCR_CFR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_SCR_CFR), uint8_t) & BM_CMP_SCR_CFR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CFR field to a new value. +#define BW_CMP_SCR_CFR(x, v) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_CFR) = (v)) +#endif +//@} + +/*! + * @name Register CMP_SCR, field IEF[3] (RW) + * + * Enables the CFF interrupt from the CMP. When this field is set, an interrupt + * will be asserted when CFF is set. + * + * Values: + * - 0 - Interrupt is disabled. + * - 1 - Interrupt is enabled. + */ +//@{ +#define BP_CMP_SCR_IEF (3U) //!< Bit position for CMP_SCR_IEF. +#define BM_CMP_SCR_IEF (0x08U) //!< Bit mask for CMP_SCR_IEF. +#define BS_CMP_SCR_IEF (1U) //!< Bit field size in bits for CMP_SCR_IEF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_SCR_IEF field. +#define BR_CMP_SCR_IEF(x) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_IEF)) +#endif + +//! @brief Format value for bitfield CMP_SCR_IEF. +#define BF_CMP_SCR_IEF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_SCR_IEF), uint8_t) & BM_CMP_SCR_IEF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IEF field to a new value. +#define BW_CMP_SCR_IEF(x, v) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_IEF) = (v)) +#endif +//@} + +/*! + * @name Register CMP_SCR, field IER[4] (RW) + * + * Enables the CFR interrupt from the CMP. When this field is set, an interrupt + * will be asserted when CFR is set. + * + * Values: + * - 0 - Interrupt is disabled. + * - 1 - Interrupt is enabled. + */ +//@{ +#define BP_CMP_SCR_IER (4U) //!< Bit position for CMP_SCR_IER. +#define BM_CMP_SCR_IER (0x10U) //!< Bit mask for CMP_SCR_IER. +#define BS_CMP_SCR_IER (1U) //!< Bit field size in bits for CMP_SCR_IER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_SCR_IER field. +#define BR_CMP_SCR_IER(x) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_IER)) +#endif + +//! @brief Format value for bitfield CMP_SCR_IER. +#define BF_CMP_SCR_IER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_SCR_IER), uint8_t) & BM_CMP_SCR_IER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IER field to a new value. +#define BW_CMP_SCR_IER(x, v) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_IER) = (v)) +#endif +//@} + +/*! + * @name Register CMP_SCR, field DMAEN[6] (RW) + * + * Enables the DMA transfer triggered from the CMP module. When this field is + * set, a DMA request is asserted when CFR or CFF is set. + * + * Values: + * - 0 - DMA is disabled. + * - 1 - DMA is enabled. + */ +//@{ +#define BP_CMP_SCR_DMAEN (6U) //!< Bit position for CMP_SCR_DMAEN. +#define BM_CMP_SCR_DMAEN (0x40U) //!< Bit mask for CMP_SCR_DMAEN. +#define BS_CMP_SCR_DMAEN (1U) //!< Bit field size in bits for CMP_SCR_DMAEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_SCR_DMAEN field. +#define BR_CMP_SCR_DMAEN(x) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_DMAEN)) +#endif + +//! @brief Format value for bitfield CMP_SCR_DMAEN. +#define BF_CMP_SCR_DMAEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_SCR_DMAEN), uint8_t) & BM_CMP_SCR_DMAEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAEN field to a new value. +#define BW_CMP_SCR_DMAEN(x, v) (BITBAND_ACCESS8(HW_CMP_SCR_ADDR(x), BP_CMP_SCR_DMAEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMP_DACCR - DAC Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMP_DACCR - DAC Control Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_cmp_daccr +{ + uint8_t U; + struct _hw_cmp_daccr_bitfields + { + uint8_t VOSEL : 6; //!< [5:0] DAC Output Voltage Select + uint8_t VRSEL : 1; //!< [6] Supply Voltage Reference Source Select + uint8_t DACEN : 1; //!< [7] DAC Enable + } B; +} hw_cmp_daccr_t; +#endif + +/*! + * @name Constants and macros for entire CMP_DACCR register + */ +//@{ +#define HW_CMP_DACCR_ADDR(x) (REGS_CMP_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMP_DACCR(x) (*(__IO hw_cmp_daccr_t *) HW_CMP_DACCR_ADDR(x)) +#define HW_CMP_DACCR_RD(x) (HW_CMP_DACCR(x).U) +#define HW_CMP_DACCR_WR(x, v) (HW_CMP_DACCR(x).U = (v)) +#define HW_CMP_DACCR_SET(x, v) (HW_CMP_DACCR_WR(x, HW_CMP_DACCR_RD(x) | (v))) +#define HW_CMP_DACCR_CLR(x, v) (HW_CMP_DACCR_WR(x, HW_CMP_DACCR_RD(x) & ~(v))) +#define HW_CMP_DACCR_TOG(x, v) (HW_CMP_DACCR_WR(x, HW_CMP_DACCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMP_DACCR bitfields + */ + +/*! + * @name Register CMP_DACCR, field VOSEL[5:0] (RW) + * + * Selects an output voltage from one of 64 distinct levels. DACO = (V in /64) * + * (VOSEL[5:0] + 1) , so the DACO range is from V in /64 to V in . + */ +//@{ +#define BP_CMP_DACCR_VOSEL (0U) //!< Bit position for CMP_DACCR_VOSEL. +#define BM_CMP_DACCR_VOSEL (0x3FU) //!< Bit mask for CMP_DACCR_VOSEL. +#define BS_CMP_DACCR_VOSEL (6U) //!< Bit field size in bits for CMP_DACCR_VOSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_DACCR_VOSEL field. +#define BR_CMP_DACCR_VOSEL(x) (HW_CMP_DACCR(x).B.VOSEL) +#endif + +//! @brief Format value for bitfield CMP_DACCR_VOSEL. +#define BF_CMP_DACCR_VOSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_DACCR_VOSEL), uint8_t) & BM_CMP_DACCR_VOSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the VOSEL field to a new value. +#define BW_CMP_DACCR_VOSEL(x, v) (HW_CMP_DACCR_WR(x, (HW_CMP_DACCR_RD(x) & ~BM_CMP_DACCR_VOSEL) | BF_CMP_DACCR_VOSEL(v))) +#endif +//@} + +/*! + * @name Register CMP_DACCR, field VRSEL[6] (RW) + * + * Values: + * - 0 - V is selected as resistor ladder network supply reference V. in1 in + * - 1 - V is selected as resistor ladder network supply reference V. in2 in + */ +//@{ +#define BP_CMP_DACCR_VRSEL (6U) //!< Bit position for CMP_DACCR_VRSEL. +#define BM_CMP_DACCR_VRSEL (0x40U) //!< Bit mask for CMP_DACCR_VRSEL. +#define BS_CMP_DACCR_VRSEL (1U) //!< Bit field size in bits for CMP_DACCR_VRSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_DACCR_VRSEL field. +#define BR_CMP_DACCR_VRSEL(x) (BITBAND_ACCESS8(HW_CMP_DACCR_ADDR(x), BP_CMP_DACCR_VRSEL)) +#endif + +//! @brief Format value for bitfield CMP_DACCR_VRSEL. +#define BF_CMP_DACCR_VRSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_DACCR_VRSEL), uint8_t) & BM_CMP_DACCR_VRSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the VRSEL field to a new value. +#define BW_CMP_DACCR_VRSEL(x, v) (BITBAND_ACCESS8(HW_CMP_DACCR_ADDR(x), BP_CMP_DACCR_VRSEL) = (v)) +#endif +//@} + +/*! + * @name Register CMP_DACCR, field DACEN[7] (RW) + * + * Enables the DAC. When the DAC is disabled, it is powered down to conserve + * power. + * + * Values: + * - 0 - DAC is disabled. + * - 1 - DAC is enabled. + */ +//@{ +#define BP_CMP_DACCR_DACEN (7U) //!< Bit position for CMP_DACCR_DACEN. +#define BM_CMP_DACCR_DACEN (0x80U) //!< Bit mask for CMP_DACCR_DACEN. +#define BS_CMP_DACCR_DACEN (1U) //!< Bit field size in bits for CMP_DACCR_DACEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_DACCR_DACEN field. +#define BR_CMP_DACCR_DACEN(x) (BITBAND_ACCESS8(HW_CMP_DACCR_ADDR(x), BP_CMP_DACCR_DACEN)) +#endif + +//! @brief Format value for bitfield CMP_DACCR_DACEN. +#define BF_CMP_DACCR_DACEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_DACCR_DACEN), uint8_t) & BM_CMP_DACCR_DACEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACEN field to a new value. +#define BW_CMP_DACCR_DACEN(x, v) (BITBAND_ACCESS8(HW_CMP_DACCR_ADDR(x), BP_CMP_DACCR_DACEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMP_MUXCR - MUX Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMP_MUXCR - MUX Control Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_cmp_muxcr +{ + uint8_t U; + struct _hw_cmp_muxcr_bitfields + { + uint8_t MSEL : 3; //!< [2:0] Minus Input Mux Control + uint8_t PSEL : 3; //!< [5:3] Plus Input Mux Control + uint8_t RESERVED0 : 1; //!< [6] + uint8_t PSTM : 1; //!< [7] Pass Through Mode Enable + } B; +} hw_cmp_muxcr_t; +#endif + +/*! + * @name Constants and macros for entire CMP_MUXCR register + */ +//@{ +#define HW_CMP_MUXCR_ADDR(x) (REGS_CMP_BASE(x) + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMP_MUXCR(x) (*(__IO hw_cmp_muxcr_t *) HW_CMP_MUXCR_ADDR(x)) +#define HW_CMP_MUXCR_RD(x) (HW_CMP_MUXCR(x).U) +#define HW_CMP_MUXCR_WR(x, v) (HW_CMP_MUXCR(x).U = (v)) +#define HW_CMP_MUXCR_SET(x, v) (HW_CMP_MUXCR_WR(x, HW_CMP_MUXCR_RD(x) | (v))) +#define HW_CMP_MUXCR_CLR(x, v) (HW_CMP_MUXCR_WR(x, HW_CMP_MUXCR_RD(x) & ~(v))) +#define HW_CMP_MUXCR_TOG(x, v) (HW_CMP_MUXCR_WR(x, HW_CMP_MUXCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMP_MUXCR bitfields + */ + +/*! + * @name Register CMP_MUXCR, field MSEL[2:0] (RW) + * + * Determines which input is selected for the minus input of the comparator. For + * INx inputs, see CMP, DAC, and ANMUX block diagrams. When an inappropriate + * operation selects the same input for both muxes, the comparator automatically + * shuts down to prevent itself from becoming a noise generator. + * + * Values: + * - 000 - IN0 + * - 001 - IN1 + * - 010 - IN2 + * - 011 - IN3 + * - 100 - IN4 + * - 101 - IN5 + * - 110 - IN6 + * - 111 - IN7 + */ +//@{ +#define BP_CMP_MUXCR_MSEL (0U) //!< Bit position for CMP_MUXCR_MSEL. +#define BM_CMP_MUXCR_MSEL (0x07U) //!< Bit mask for CMP_MUXCR_MSEL. +#define BS_CMP_MUXCR_MSEL (3U) //!< Bit field size in bits for CMP_MUXCR_MSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_MUXCR_MSEL field. +#define BR_CMP_MUXCR_MSEL(x) (HW_CMP_MUXCR(x).B.MSEL) +#endif + +//! @brief Format value for bitfield CMP_MUXCR_MSEL. +#define BF_CMP_MUXCR_MSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_MUXCR_MSEL), uint8_t) & BM_CMP_MUXCR_MSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MSEL field to a new value. +#define BW_CMP_MUXCR_MSEL(x, v) (HW_CMP_MUXCR_WR(x, (HW_CMP_MUXCR_RD(x) & ~BM_CMP_MUXCR_MSEL) | BF_CMP_MUXCR_MSEL(v))) +#endif +//@} + +/*! + * @name Register CMP_MUXCR, field PSEL[5:3] (RW) + * + * Determines which input is selected for the plus input of the comparator. For + * INx inputs, see CMP, DAC, and ANMUX block diagrams. When an inappropriate + * operation selects the same input for both muxes, the comparator automatically + * shuts down to prevent itself from becoming a noise generator. + * + * Values: + * - 000 - IN0 + * - 001 - IN1 + * - 010 - IN2 + * - 011 - IN3 + * - 100 - IN4 + * - 101 - IN5 + * - 110 - IN6 + * - 111 - IN7 + */ +//@{ +#define BP_CMP_MUXCR_PSEL (3U) //!< Bit position for CMP_MUXCR_PSEL. +#define BM_CMP_MUXCR_PSEL (0x38U) //!< Bit mask for CMP_MUXCR_PSEL. +#define BS_CMP_MUXCR_PSEL (3U) //!< Bit field size in bits for CMP_MUXCR_PSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_MUXCR_PSEL field. +#define BR_CMP_MUXCR_PSEL(x) (HW_CMP_MUXCR(x).B.PSEL) +#endif + +//! @brief Format value for bitfield CMP_MUXCR_PSEL. +#define BF_CMP_MUXCR_PSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_MUXCR_PSEL), uint8_t) & BM_CMP_MUXCR_PSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PSEL field to a new value. +#define BW_CMP_MUXCR_PSEL(x, v) (HW_CMP_MUXCR_WR(x, (HW_CMP_MUXCR_RD(x) & ~BM_CMP_MUXCR_PSEL) | BF_CMP_MUXCR_PSEL(v))) +#endif +//@} + +/*! + * @name Register CMP_MUXCR, field PSTM[7] (RW) + * + * This bit is used to enable to MUX pass through mode. Pass through mode is + * always available but for some devices this feature must be always disabled due to + * the lack of package pins. + * + * Values: + * - 0 - Pass Through Mode is disabled. + * - 1 - Pass Through Mode is enabled. + */ +//@{ +#define BP_CMP_MUXCR_PSTM (7U) //!< Bit position for CMP_MUXCR_PSTM. +#define BM_CMP_MUXCR_PSTM (0x80U) //!< Bit mask for CMP_MUXCR_PSTM. +#define BS_CMP_MUXCR_PSTM (1U) //!< Bit field size in bits for CMP_MUXCR_PSTM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMP_MUXCR_PSTM field. +#define BR_CMP_MUXCR_PSTM(x) (BITBAND_ACCESS8(HW_CMP_MUXCR_ADDR(x), BP_CMP_MUXCR_PSTM)) +#endif + +//! @brief Format value for bitfield CMP_MUXCR_PSTM. +#define BF_CMP_MUXCR_PSTM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMP_MUXCR_PSTM), uint8_t) & BM_CMP_MUXCR_PSTM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PSTM field to a new value. +#define BW_CMP_MUXCR_PSTM(x, v) (BITBAND_ACCESS8(HW_CMP_MUXCR_ADDR(x), BP_CMP_MUXCR_PSTM) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_cmp_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All CMP module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_cmp +{ + __IO hw_cmp_cr0_t CR0; //!< [0x0] CMP Control Register 0 + __IO hw_cmp_cr1_t CR1; //!< [0x1] CMP Control Register 1 + __IO hw_cmp_fpr_t FPR; //!< [0x2] CMP Filter Period Register + __IO hw_cmp_scr_t SCR; //!< [0x3] CMP Status and Control Register + __IO hw_cmp_daccr_t DACCR; //!< [0x4] DAC Control Register + __IO hw_cmp_muxcr_t MUXCR; //!< [0x5] MUX Control Register +} hw_cmp_t; +#pragma pack() + +//! @brief Macro to access all CMP registers. +//! @param x CMP instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_CMP(0)</code>. +#define HW_CMP(x) (*(hw_cmp_t *) REGS_CMP_BASE(x)) +#endif + +#endif // __HW_CMP_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_cmt.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1194 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_CMT_REGISTERS_H__ +#define __HW_CMT_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 CMT + * + * Carrier Modulator Transmitter + * + * Registers defined in this header file: + * - HW_CMT_CGH1 - CMT Carrier Generator High Data Register 1 + * - HW_CMT_CGL1 - CMT Carrier Generator Low Data Register 1 + * - HW_CMT_CGH2 - CMT Carrier Generator High Data Register 2 + * - HW_CMT_CGL2 - CMT Carrier Generator Low Data Register 2 + * - HW_CMT_OC - CMT Output Control Register + * - HW_CMT_MSC - CMT Modulator Status and Control Register + * - HW_CMT_CMD1 - CMT Modulator Data Register Mark High + * - HW_CMT_CMD2 - CMT Modulator Data Register Mark Low + * - HW_CMT_CMD3 - CMT Modulator Data Register Space High + * - HW_CMT_CMD4 - CMT Modulator Data Register Space Low + * - HW_CMT_PPS - CMT Primary Prescaler Register + * - HW_CMT_DMA - CMT Direct Memory Access Register + * + * - hw_cmt_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_CMT_BASE +#define HW_CMT_INSTANCE_COUNT (1U) //!< Number of instances of the CMT module. +#define REGS_CMT_BASE (0x40062000U) //!< Base address for CMT. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_CGH1 - CMT Carrier Generator High Data Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_CGH1 - CMT Carrier Generator High Data Register 1 (RW) + * + * Reset value: 0x00U + * + * This data register contains the primary high value for generating the carrier + * output. + */ +typedef union _hw_cmt_cgh1 +{ + uint8_t U; + struct _hw_cmt_cgh1_bitfields + { + uint8_t PH : 8; //!< [7:0] Primary Carrier High Time Data Value + } B; +} hw_cmt_cgh1_t; +#endif + +/*! + * @name Constants and macros for entire CMT_CGH1 register + */ +//@{ +#define HW_CMT_CGH1_ADDR (REGS_CMT_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_CGH1 (*(__IO hw_cmt_cgh1_t *) HW_CMT_CGH1_ADDR) +#define HW_CMT_CGH1_RD() (HW_CMT_CGH1.U) +#define HW_CMT_CGH1_WR(v) (HW_CMT_CGH1.U = (v)) +#define HW_CMT_CGH1_SET(v) (HW_CMT_CGH1_WR(HW_CMT_CGH1_RD() | (v))) +#define HW_CMT_CGH1_CLR(v) (HW_CMT_CGH1_WR(HW_CMT_CGH1_RD() & ~(v))) +#define HW_CMT_CGH1_TOG(v) (HW_CMT_CGH1_WR(HW_CMT_CGH1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_CGH1 bitfields + */ + +/*! + * @name Register CMT_CGH1, field PH[7:0] (RW) + * + * Contains the number of input clocks required to generate the carrier high + * time period. When operating in Time mode, this register is always selected. When + * operating in FSK mode, this register and the secondary register pair are + * alternately selected under the control of the modulator. The primary carrier high + * time value is undefined out of reset. This register must be written to nonzero + * values before the carrier generator is enabled to avoid spurious results. + */ +//@{ +#define BP_CMT_CGH1_PH (0U) //!< Bit position for CMT_CGH1_PH. +#define BM_CMT_CGH1_PH (0xFFU) //!< Bit mask for CMT_CGH1_PH. +#define BS_CMT_CGH1_PH (8U) //!< Bit field size in bits for CMT_CGH1_PH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_CGH1_PH field. +#define BR_CMT_CGH1_PH (HW_CMT_CGH1.U) +#endif + +//! @brief Format value for bitfield CMT_CGH1_PH. +#define BF_CMT_CGH1_PH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_CGH1_PH), uint8_t) & BM_CMT_CGH1_PH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PH field to a new value. +#define BW_CMT_CGH1_PH(v) (HW_CMT_CGH1_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_CGL1 - CMT Carrier Generator Low Data Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_CGL1 - CMT Carrier Generator Low Data Register 1 (RW) + * + * Reset value: 0x00U + * + * This data register contains the primary low value for generating the carrier + * output. + */ +typedef union _hw_cmt_cgl1 +{ + uint8_t U; + struct _hw_cmt_cgl1_bitfields + { + uint8_t PL : 8; //!< [7:0] Primary Carrier Low Time Data Value + } B; +} hw_cmt_cgl1_t; +#endif + +/*! + * @name Constants and macros for entire CMT_CGL1 register + */ +//@{ +#define HW_CMT_CGL1_ADDR (REGS_CMT_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_CGL1 (*(__IO hw_cmt_cgl1_t *) HW_CMT_CGL1_ADDR) +#define HW_CMT_CGL1_RD() (HW_CMT_CGL1.U) +#define HW_CMT_CGL1_WR(v) (HW_CMT_CGL1.U = (v)) +#define HW_CMT_CGL1_SET(v) (HW_CMT_CGL1_WR(HW_CMT_CGL1_RD() | (v))) +#define HW_CMT_CGL1_CLR(v) (HW_CMT_CGL1_WR(HW_CMT_CGL1_RD() & ~(v))) +#define HW_CMT_CGL1_TOG(v) (HW_CMT_CGL1_WR(HW_CMT_CGL1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_CGL1 bitfields + */ + +/*! + * @name Register CMT_CGL1, field PL[7:0] (RW) + * + * Contains the number of input clocks required to generate the carrier low time + * period. When operating in Time mode, this register is always selected. When + * operating in FSK mode, this register and the secondary register pair are + * alternately selected under the control of the modulator. The primary carrier low + * time value is undefined out of reset. This register must be written to nonzero + * values before the carrier generator is enabled to avoid spurious results. + */ +//@{ +#define BP_CMT_CGL1_PL (0U) //!< Bit position for CMT_CGL1_PL. +#define BM_CMT_CGL1_PL (0xFFU) //!< Bit mask for CMT_CGL1_PL. +#define BS_CMT_CGL1_PL (8U) //!< Bit field size in bits for CMT_CGL1_PL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_CGL1_PL field. +#define BR_CMT_CGL1_PL (HW_CMT_CGL1.U) +#endif + +//! @brief Format value for bitfield CMT_CGL1_PL. +#define BF_CMT_CGL1_PL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_CGL1_PL), uint8_t) & BM_CMT_CGL1_PL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PL field to a new value. +#define BW_CMT_CGL1_PL(v) (HW_CMT_CGL1_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_CGH2 - CMT Carrier Generator High Data Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_CGH2 - CMT Carrier Generator High Data Register 2 (RW) + * + * Reset value: 0x00U + * + * This data register contains the secondary high value for generating the + * carrier output. + */ +typedef union _hw_cmt_cgh2 +{ + uint8_t U; + struct _hw_cmt_cgh2_bitfields + { + uint8_t SH : 8; //!< [7:0] Secondary Carrier High Time Data Value + } B; +} hw_cmt_cgh2_t; +#endif + +/*! + * @name Constants and macros for entire CMT_CGH2 register + */ +//@{ +#define HW_CMT_CGH2_ADDR (REGS_CMT_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_CGH2 (*(__IO hw_cmt_cgh2_t *) HW_CMT_CGH2_ADDR) +#define HW_CMT_CGH2_RD() (HW_CMT_CGH2.U) +#define HW_CMT_CGH2_WR(v) (HW_CMT_CGH2.U = (v)) +#define HW_CMT_CGH2_SET(v) (HW_CMT_CGH2_WR(HW_CMT_CGH2_RD() | (v))) +#define HW_CMT_CGH2_CLR(v) (HW_CMT_CGH2_WR(HW_CMT_CGH2_RD() & ~(v))) +#define HW_CMT_CGH2_TOG(v) (HW_CMT_CGH2_WR(HW_CMT_CGH2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_CGH2 bitfields + */ + +/*! + * @name Register CMT_CGH2, field SH[7:0] (RW) + * + * Contains the number of input clocks required to generate the carrier high + * time period. When operating in Time mode, this register is never selected. When + * operating in FSK mode, this register and the primary register pair are + * alternately selected under control of the modulator. The secondary carrier high time + * value is undefined out of reset. This register must be written to nonzero + * values before the carrier generator is enabled when operating in FSK mode. + */ +//@{ +#define BP_CMT_CGH2_SH (0U) //!< Bit position for CMT_CGH2_SH. +#define BM_CMT_CGH2_SH (0xFFU) //!< Bit mask for CMT_CGH2_SH. +#define BS_CMT_CGH2_SH (8U) //!< Bit field size in bits for CMT_CGH2_SH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_CGH2_SH field. +#define BR_CMT_CGH2_SH (HW_CMT_CGH2.U) +#endif + +//! @brief Format value for bitfield CMT_CGH2_SH. +#define BF_CMT_CGH2_SH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_CGH2_SH), uint8_t) & BM_CMT_CGH2_SH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SH field to a new value. +#define BW_CMT_CGH2_SH(v) (HW_CMT_CGH2_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_CGL2 - CMT Carrier Generator Low Data Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_CGL2 - CMT Carrier Generator Low Data Register 2 (RW) + * + * Reset value: 0x00U + * + * This data register contains the secondary low value for generating the + * carrier output. + */ +typedef union _hw_cmt_cgl2 +{ + uint8_t U; + struct _hw_cmt_cgl2_bitfields + { + uint8_t SL : 8; //!< [7:0] Secondary Carrier Low Time Data Value + } B; +} hw_cmt_cgl2_t; +#endif + +/*! + * @name Constants and macros for entire CMT_CGL2 register + */ +//@{ +#define HW_CMT_CGL2_ADDR (REGS_CMT_BASE + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_CGL2 (*(__IO hw_cmt_cgl2_t *) HW_CMT_CGL2_ADDR) +#define HW_CMT_CGL2_RD() (HW_CMT_CGL2.U) +#define HW_CMT_CGL2_WR(v) (HW_CMT_CGL2.U = (v)) +#define HW_CMT_CGL2_SET(v) (HW_CMT_CGL2_WR(HW_CMT_CGL2_RD() | (v))) +#define HW_CMT_CGL2_CLR(v) (HW_CMT_CGL2_WR(HW_CMT_CGL2_RD() & ~(v))) +#define HW_CMT_CGL2_TOG(v) (HW_CMT_CGL2_WR(HW_CMT_CGL2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_CGL2 bitfields + */ + +/*! + * @name Register CMT_CGL2, field SL[7:0] (RW) + * + * Contains the number of input clocks required to generate the carrier low time + * period. When operating in Time mode, this register is never selected. When + * operating in FSK mode, this register and the primary register pair are + * alternately selected under the control of the modulator. The secondary carrier low time + * value is undefined out of reset. This register must be written to nonzero + * values before the carrier generator is enabled when operating in FSK mode. + */ +//@{ +#define BP_CMT_CGL2_SL (0U) //!< Bit position for CMT_CGL2_SL. +#define BM_CMT_CGL2_SL (0xFFU) //!< Bit mask for CMT_CGL2_SL. +#define BS_CMT_CGL2_SL (8U) //!< Bit field size in bits for CMT_CGL2_SL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_CGL2_SL field. +#define BR_CMT_CGL2_SL (HW_CMT_CGL2.U) +#endif + +//! @brief Format value for bitfield CMT_CGL2_SL. +#define BF_CMT_CGL2_SL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_CGL2_SL), uint8_t) & BM_CMT_CGL2_SL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SL field to a new value. +#define BW_CMT_CGL2_SL(v) (HW_CMT_CGL2_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_OC - CMT Output Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_OC - CMT Output Control Register (RW) + * + * Reset value: 0x00U + * + * This register is used to control the IRO signal of the CMT module. + */ +typedef union _hw_cmt_oc +{ + uint8_t U; + struct _hw_cmt_oc_bitfields + { + uint8_t RESERVED0 : 5; //!< [4:0] + uint8_t IROPEN : 1; //!< [5] IRO Pin Enable + uint8_t CMTPOL : 1; //!< [6] CMT Output Polarity + uint8_t IROL : 1; //!< [7] IRO Latch Control + } B; +} hw_cmt_oc_t; +#endif + +/*! + * @name Constants and macros for entire CMT_OC register + */ +//@{ +#define HW_CMT_OC_ADDR (REGS_CMT_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_OC (*(__IO hw_cmt_oc_t *) HW_CMT_OC_ADDR) +#define HW_CMT_OC_RD() (HW_CMT_OC.U) +#define HW_CMT_OC_WR(v) (HW_CMT_OC.U = (v)) +#define HW_CMT_OC_SET(v) (HW_CMT_OC_WR(HW_CMT_OC_RD() | (v))) +#define HW_CMT_OC_CLR(v) (HW_CMT_OC_WR(HW_CMT_OC_RD() & ~(v))) +#define HW_CMT_OC_TOG(v) (HW_CMT_OC_WR(HW_CMT_OC_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_OC bitfields + */ + +/*! + * @name Register CMT_OC, field IROPEN[5] (RW) + * + * Enables and disables the IRO signal. When the IRO signal is enabled, it is an + * output that drives out either the CMT transmitter output or the state of IROL + * depending on whether MSC[MCGEN] is set or not. Also, the state of output is + * either inverted or non-inverted, depending on the state of CMTPOL. When the IRO + * signal is disabled, it is in a high-impedance state and is unable to draw any + * current. This signal is disabled during reset. + * + * Values: + * - 0 - The IRO signal is disabled. + * - 1 - The IRO signal is enabled as output. + */ +//@{ +#define BP_CMT_OC_IROPEN (5U) //!< Bit position for CMT_OC_IROPEN. +#define BM_CMT_OC_IROPEN (0x20U) //!< Bit mask for CMT_OC_IROPEN. +#define BS_CMT_OC_IROPEN (1U) //!< Bit field size in bits for CMT_OC_IROPEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_OC_IROPEN field. +#define BR_CMT_OC_IROPEN (BITBAND_ACCESS8(HW_CMT_OC_ADDR, BP_CMT_OC_IROPEN)) +#endif + +//! @brief Format value for bitfield CMT_OC_IROPEN. +#define BF_CMT_OC_IROPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_OC_IROPEN), uint8_t) & BM_CMT_OC_IROPEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IROPEN field to a new value. +#define BW_CMT_OC_IROPEN(v) (BITBAND_ACCESS8(HW_CMT_OC_ADDR, BP_CMT_OC_IROPEN) = (v)) +#endif +//@} + +/*! + * @name Register CMT_OC, field CMTPOL[6] (RW) + * + * Controls the polarity of the IRO signal. + * + * Values: + * - 0 - The IRO signal is active-low. + * - 1 - The IRO signal is active-high. + */ +//@{ +#define BP_CMT_OC_CMTPOL (6U) //!< Bit position for CMT_OC_CMTPOL. +#define BM_CMT_OC_CMTPOL (0x40U) //!< Bit mask for CMT_OC_CMTPOL. +#define BS_CMT_OC_CMTPOL (1U) //!< Bit field size in bits for CMT_OC_CMTPOL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_OC_CMTPOL field. +#define BR_CMT_OC_CMTPOL (BITBAND_ACCESS8(HW_CMT_OC_ADDR, BP_CMT_OC_CMTPOL)) +#endif + +//! @brief Format value for bitfield CMT_OC_CMTPOL. +#define BF_CMT_OC_CMTPOL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_OC_CMTPOL), uint8_t) & BM_CMT_OC_CMTPOL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CMTPOL field to a new value. +#define BW_CMT_OC_CMTPOL(v) (BITBAND_ACCESS8(HW_CMT_OC_ADDR, BP_CMT_OC_CMTPOL) = (v)) +#endif +//@} + +/*! + * @name Register CMT_OC, field IROL[7] (RW) + * + * Reads the state of the IRO latch. Writing to IROL changes the state of the + * IRO signal when MSC[MCGEN] is cleared and IROPEN is set. + */ +//@{ +#define BP_CMT_OC_IROL (7U) //!< Bit position for CMT_OC_IROL. +#define BM_CMT_OC_IROL (0x80U) //!< Bit mask for CMT_OC_IROL. +#define BS_CMT_OC_IROL (1U) //!< Bit field size in bits for CMT_OC_IROL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_OC_IROL field. +#define BR_CMT_OC_IROL (BITBAND_ACCESS8(HW_CMT_OC_ADDR, BP_CMT_OC_IROL)) +#endif + +//! @brief Format value for bitfield CMT_OC_IROL. +#define BF_CMT_OC_IROL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_OC_IROL), uint8_t) & BM_CMT_OC_IROL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IROL field to a new value. +#define BW_CMT_OC_IROL(v) (BITBAND_ACCESS8(HW_CMT_OC_ADDR, BP_CMT_OC_IROL) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_MSC - CMT Modulator Status and Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_MSC - CMT Modulator Status and Control Register (RW) + * + * Reset value: 0x00U + * + * This register contains the modulator and carrier generator enable (MCGEN), + * end of cycle interrupt enable (EOCIE), FSK mode select (FSK), baseband enable + * (BASE), extended space (EXSPC), prescaler (CMTDIV) bits, and the end of cycle + * (EOCF) status bit. + */ +typedef union _hw_cmt_msc +{ + uint8_t U; + struct _hw_cmt_msc_bitfields + { + uint8_t MCGEN : 1; //!< [0] Modulator and Carrier Generator Enable + uint8_t EOCIE : 1; //!< [1] End of Cycle Interrupt Enable + uint8_t FSK : 1; //!< [2] FSK Mode Select + uint8_t BASE : 1; //!< [3] Baseband Enable + uint8_t EXSPC : 1; //!< [4] Extended Space Enable + uint8_t CMTDIV : 2; //!< [6:5] CMT Clock Divide Prescaler + uint8_t EOCF : 1; //!< [7] End Of Cycle Status Flag + } B; +} hw_cmt_msc_t; +#endif + +/*! + * @name Constants and macros for entire CMT_MSC register + */ +//@{ +#define HW_CMT_MSC_ADDR (REGS_CMT_BASE + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_MSC (*(__IO hw_cmt_msc_t *) HW_CMT_MSC_ADDR) +#define HW_CMT_MSC_RD() (HW_CMT_MSC.U) +#define HW_CMT_MSC_WR(v) (HW_CMT_MSC.U = (v)) +#define HW_CMT_MSC_SET(v) (HW_CMT_MSC_WR(HW_CMT_MSC_RD() | (v))) +#define HW_CMT_MSC_CLR(v) (HW_CMT_MSC_WR(HW_CMT_MSC_RD() & ~(v))) +#define HW_CMT_MSC_TOG(v) (HW_CMT_MSC_WR(HW_CMT_MSC_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_MSC bitfields + */ + +/*! + * @name Register CMT_MSC, field MCGEN[0] (RW) + * + * Setting MCGEN will initialize the carrier generator and modulator and will + * enable all clocks. When enabled, the carrier generator and modulator will + * function continuously. When MCGEN is cleared, the current modulator cycle will be + * allowed to expire before all carrier and modulator clocks are disabled to save + * power and the modulator output is forced low. To prevent spurious operation, + * the user should initialize all data and control registers before enabling the + * system. + * + * Values: + * - 0 - Modulator and carrier generator disabled + * - 1 - Modulator and carrier generator enabled + */ +//@{ +#define BP_CMT_MSC_MCGEN (0U) //!< Bit position for CMT_MSC_MCGEN. +#define BM_CMT_MSC_MCGEN (0x01U) //!< Bit mask for CMT_MSC_MCGEN. +#define BS_CMT_MSC_MCGEN (1U) //!< Bit field size in bits for CMT_MSC_MCGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_MSC_MCGEN field. +#define BR_CMT_MSC_MCGEN (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_MCGEN)) +#endif + +//! @brief Format value for bitfield CMT_MSC_MCGEN. +#define BF_CMT_MSC_MCGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_MSC_MCGEN), uint8_t) & BM_CMT_MSC_MCGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MCGEN field to a new value. +#define BW_CMT_MSC_MCGEN(v) (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_MCGEN) = (v)) +#endif +//@} + +/*! + * @name Register CMT_MSC, field EOCIE[1] (RW) + * + * Requests to enable a CPU interrupt when EOCF is set if EOCIE is high. + * + * Values: + * - 0 - CPU interrupt is disabled. + * - 1 - CPU interrupt is enabled. + */ +//@{ +#define BP_CMT_MSC_EOCIE (1U) //!< Bit position for CMT_MSC_EOCIE. +#define BM_CMT_MSC_EOCIE (0x02U) //!< Bit mask for CMT_MSC_EOCIE. +#define BS_CMT_MSC_EOCIE (1U) //!< Bit field size in bits for CMT_MSC_EOCIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_MSC_EOCIE field. +#define BR_CMT_MSC_EOCIE (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_EOCIE)) +#endif + +//! @brief Format value for bitfield CMT_MSC_EOCIE. +#define BF_CMT_MSC_EOCIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_MSC_EOCIE), uint8_t) & BM_CMT_MSC_EOCIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EOCIE field to a new value. +#define BW_CMT_MSC_EOCIE(v) (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_EOCIE) = (v)) +#endif +//@} + +/*! + * @name Register CMT_MSC, field FSK[2] (RW) + * + * Enables FSK operation. + * + * Values: + * - 0 - The CMT operates in Time or Baseband mode. + * - 1 - The CMT operates in FSK mode. + */ +//@{ +#define BP_CMT_MSC_FSK (2U) //!< Bit position for CMT_MSC_FSK. +#define BM_CMT_MSC_FSK (0x04U) //!< Bit mask for CMT_MSC_FSK. +#define BS_CMT_MSC_FSK (1U) //!< Bit field size in bits for CMT_MSC_FSK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_MSC_FSK field. +#define BR_CMT_MSC_FSK (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_FSK)) +#endif + +//! @brief Format value for bitfield CMT_MSC_FSK. +#define BF_CMT_MSC_FSK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_MSC_FSK), uint8_t) & BM_CMT_MSC_FSK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FSK field to a new value. +#define BW_CMT_MSC_FSK(v) (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_FSK) = (v)) +#endif +//@} + +/*! + * @name Register CMT_MSC, field BASE[3] (RW) + * + * When set, BASE disables the carrier generator and forces the carrier output + * high for generation of baseband protocols. When BASE is cleared, the carrier + * generator is enabled and the carrier output toggles at the frequency determined + * by values stored in the carrier data registers. This field is cleared by + * reset. This field is not double-buffered and must not be written to during a + * transmission. + * + * Values: + * - 0 - Baseband mode is disabled. + * - 1 - Baseband mode is enabled. + */ +//@{ +#define BP_CMT_MSC_BASE (3U) //!< Bit position for CMT_MSC_BASE. +#define BM_CMT_MSC_BASE (0x08U) //!< Bit mask for CMT_MSC_BASE. +#define BS_CMT_MSC_BASE (1U) //!< Bit field size in bits for CMT_MSC_BASE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_MSC_BASE field. +#define BR_CMT_MSC_BASE (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_BASE)) +#endif + +//! @brief Format value for bitfield CMT_MSC_BASE. +#define BF_CMT_MSC_BASE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_MSC_BASE), uint8_t) & BM_CMT_MSC_BASE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BASE field to a new value. +#define BW_CMT_MSC_BASE(v) (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_BASE) = (v)) +#endif +//@} + +/*! + * @name Register CMT_MSC, field EXSPC[4] (RW) + * + * Enables the extended space operation. + * + * Values: + * - 0 - Extended space is disabled. + * - 1 - Extended space is enabled. + */ +//@{ +#define BP_CMT_MSC_EXSPC (4U) //!< Bit position for CMT_MSC_EXSPC. +#define BM_CMT_MSC_EXSPC (0x10U) //!< Bit mask for CMT_MSC_EXSPC. +#define BS_CMT_MSC_EXSPC (1U) //!< Bit field size in bits for CMT_MSC_EXSPC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_MSC_EXSPC field. +#define BR_CMT_MSC_EXSPC (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_EXSPC)) +#endif + +//! @brief Format value for bitfield CMT_MSC_EXSPC. +#define BF_CMT_MSC_EXSPC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_MSC_EXSPC), uint8_t) & BM_CMT_MSC_EXSPC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EXSPC field to a new value. +#define BW_CMT_MSC_EXSPC(v) (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_EXSPC) = (v)) +#endif +//@} + +/*! + * @name Register CMT_MSC, field CMTDIV[6:5] (RW) + * + * Causes the CMT to be clocked at the IF signal frequency, or the IF frequency + * divided by 2 ,4, or 8 . This field must not be changed during a transmission + * because it is not double-buffered. + * + * Values: + * - 00 - IF * 1 + * - 01 - IF * 2 + * - 10 - IF * 4 + * - 11 - IF * 8 + */ +//@{ +#define BP_CMT_MSC_CMTDIV (5U) //!< Bit position for CMT_MSC_CMTDIV. +#define BM_CMT_MSC_CMTDIV (0x60U) //!< Bit mask for CMT_MSC_CMTDIV. +#define BS_CMT_MSC_CMTDIV (2U) //!< Bit field size in bits for CMT_MSC_CMTDIV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_MSC_CMTDIV field. +#define BR_CMT_MSC_CMTDIV (HW_CMT_MSC.B.CMTDIV) +#endif + +//! @brief Format value for bitfield CMT_MSC_CMTDIV. +#define BF_CMT_MSC_CMTDIV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_MSC_CMTDIV), uint8_t) & BM_CMT_MSC_CMTDIV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CMTDIV field to a new value. +#define BW_CMT_MSC_CMTDIV(v) (HW_CMT_MSC_WR((HW_CMT_MSC_RD() & ~BM_CMT_MSC_CMTDIV) | BF_CMT_MSC_CMTDIV(v))) +#endif +//@} + +/*! + * @name Register CMT_MSC, field EOCF[7] (RO) + * + * Sets when: The modulator is not currently active and MCGEN is set to begin + * the initial CMT transmission. At the end of each modulation cycle while MCGEN is + * set. This is recognized when a match occurs between the contents of the space + * period register and the down counter. At this time, the counter is + * initialized with, possibly new contents of the mark period buffer, CMD1 and CMD2, and + * the space period register is loaded with, possibly new contents of the space + * period buffer, CMD3 and CMD4. This flag is cleared by reading MSC followed by an + * access of CMD2 or CMD4, or by the DMA transfer. + * + * Values: + * - 0 - End of modulation cycle has not occured since the flag last cleared. + * - 1 - End of modulator cycle has occurred. + */ +//@{ +#define BP_CMT_MSC_EOCF (7U) //!< Bit position for CMT_MSC_EOCF. +#define BM_CMT_MSC_EOCF (0x80U) //!< Bit mask for CMT_MSC_EOCF. +#define BS_CMT_MSC_EOCF (1U) //!< Bit field size in bits for CMT_MSC_EOCF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_MSC_EOCF field. +#define BR_CMT_MSC_EOCF (BITBAND_ACCESS8(HW_CMT_MSC_ADDR, BP_CMT_MSC_EOCF)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_CMD1 - CMT Modulator Data Register Mark High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_CMD1 - CMT Modulator Data Register Mark High (RW) + * + * Reset value: 0x00U + * + * The contents of this register are transferred to the modulator down counter + * upon the completion of a modulation period. + */ +typedef union _hw_cmt_cmd1 +{ + uint8_t U; + struct _hw_cmt_cmd1_bitfields + { + uint8_t MB : 8; //!< [7:0] + } B; +} hw_cmt_cmd1_t; +#endif + +/*! + * @name Constants and macros for entire CMT_CMD1 register + */ +//@{ +#define HW_CMT_CMD1_ADDR (REGS_CMT_BASE + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_CMD1 (*(__IO hw_cmt_cmd1_t *) HW_CMT_CMD1_ADDR) +#define HW_CMT_CMD1_RD() (HW_CMT_CMD1.U) +#define HW_CMT_CMD1_WR(v) (HW_CMT_CMD1.U = (v)) +#define HW_CMT_CMD1_SET(v) (HW_CMT_CMD1_WR(HW_CMT_CMD1_RD() | (v))) +#define HW_CMT_CMD1_CLR(v) (HW_CMT_CMD1_WR(HW_CMT_CMD1_RD() & ~(v))) +#define HW_CMT_CMD1_TOG(v) (HW_CMT_CMD1_WR(HW_CMT_CMD1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_CMD1 bitfields + */ + +/*! + * @name Register CMT_CMD1, field MB[7:0] (RW) + * + * Controls the upper mark periods of the modulator for all modes. + */ +//@{ +#define BP_CMT_CMD1_MB (0U) //!< Bit position for CMT_CMD1_MB. +#define BM_CMT_CMD1_MB (0xFFU) //!< Bit mask for CMT_CMD1_MB. +#define BS_CMT_CMD1_MB (8U) //!< Bit field size in bits for CMT_CMD1_MB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_CMD1_MB field. +#define BR_CMT_CMD1_MB (HW_CMT_CMD1.U) +#endif + +//! @brief Format value for bitfield CMT_CMD1_MB. +#define BF_CMT_CMD1_MB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_CMD1_MB), uint8_t) & BM_CMT_CMD1_MB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MB field to a new value. +#define BW_CMT_CMD1_MB(v) (HW_CMT_CMD1_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_CMD2 - CMT Modulator Data Register Mark Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_CMD2 - CMT Modulator Data Register Mark Low (RW) + * + * Reset value: 0x00U + * + * The contents of this register are transferred to the modulator down counter + * upon the completion of a modulation period. + */ +typedef union _hw_cmt_cmd2 +{ + uint8_t U; + struct _hw_cmt_cmd2_bitfields + { + uint8_t MB : 8; //!< [7:0] + } B; +} hw_cmt_cmd2_t; +#endif + +/*! + * @name Constants and macros for entire CMT_CMD2 register + */ +//@{ +#define HW_CMT_CMD2_ADDR (REGS_CMT_BASE + 0x7U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_CMD2 (*(__IO hw_cmt_cmd2_t *) HW_CMT_CMD2_ADDR) +#define HW_CMT_CMD2_RD() (HW_CMT_CMD2.U) +#define HW_CMT_CMD2_WR(v) (HW_CMT_CMD2.U = (v)) +#define HW_CMT_CMD2_SET(v) (HW_CMT_CMD2_WR(HW_CMT_CMD2_RD() | (v))) +#define HW_CMT_CMD2_CLR(v) (HW_CMT_CMD2_WR(HW_CMT_CMD2_RD() & ~(v))) +#define HW_CMT_CMD2_TOG(v) (HW_CMT_CMD2_WR(HW_CMT_CMD2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_CMD2 bitfields + */ + +/*! + * @name Register CMT_CMD2, field MB[7:0] (RW) + * + * Controls the lower mark periods of the modulator for all modes. + */ +//@{ +#define BP_CMT_CMD2_MB (0U) //!< Bit position for CMT_CMD2_MB. +#define BM_CMT_CMD2_MB (0xFFU) //!< Bit mask for CMT_CMD2_MB. +#define BS_CMT_CMD2_MB (8U) //!< Bit field size in bits for CMT_CMD2_MB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_CMD2_MB field. +#define BR_CMT_CMD2_MB (HW_CMT_CMD2.U) +#endif + +//! @brief Format value for bitfield CMT_CMD2_MB. +#define BF_CMT_CMD2_MB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_CMD2_MB), uint8_t) & BM_CMT_CMD2_MB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MB field to a new value. +#define BW_CMT_CMD2_MB(v) (HW_CMT_CMD2_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_CMD3 - CMT Modulator Data Register Space High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_CMD3 - CMT Modulator Data Register Space High (RW) + * + * Reset value: 0x00U + * + * The contents of this register are transferred to the space period register + * upon the completion of a modulation period. + */ +typedef union _hw_cmt_cmd3 +{ + uint8_t U; + struct _hw_cmt_cmd3_bitfields + { + uint8_t SB : 8; //!< [7:0] + } B; +} hw_cmt_cmd3_t; +#endif + +/*! + * @name Constants and macros for entire CMT_CMD3 register + */ +//@{ +#define HW_CMT_CMD3_ADDR (REGS_CMT_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_CMD3 (*(__IO hw_cmt_cmd3_t *) HW_CMT_CMD3_ADDR) +#define HW_CMT_CMD3_RD() (HW_CMT_CMD3.U) +#define HW_CMT_CMD3_WR(v) (HW_CMT_CMD3.U = (v)) +#define HW_CMT_CMD3_SET(v) (HW_CMT_CMD3_WR(HW_CMT_CMD3_RD() | (v))) +#define HW_CMT_CMD3_CLR(v) (HW_CMT_CMD3_WR(HW_CMT_CMD3_RD() & ~(v))) +#define HW_CMT_CMD3_TOG(v) (HW_CMT_CMD3_WR(HW_CMT_CMD3_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_CMD3 bitfields + */ + +/*! + * @name Register CMT_CMD3, field SB[7:0] (RW) + * + * Controls the upper space periods of the modulator for all modes. + */ +//@{ +#define BP_CMT_CMD3_SB (0U) //!< Bit position for CMT_CMD3_SB. +#define BM_CMT_CMD3_SB (0xFFU) //!< Bit mask for CMT_CMD3_SB. +#define BS_CMT_CMD3_SB (8U) //!< Bit field size in bits for CMT_CMD3_SB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_CMD3_SB field. +#define BR_CMT_CMD3_SB (HW_CMT_CMD3.U) +#endif + +//! @brief Format value for bitfield CMT_CMD3_SB. +#define BF_CMT_CMD3_SB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_CMD3_SB), uint8_t) & BM_CMT_CMD3_SB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SB field to a new value. +#define BW_CMT_CMD3_SB(v) (HW_CMT_CMD3_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_CMD4 - CMT Modulator Data Register Space Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_CMD4 - CMT Modulator Data Register Space Low (RW) + * + * Reset value: 0x00U + * + * The contents of this register are transferred to the space period register + * upon the completion of a modulation period. + */ +typedef union _hw_cmt_cmd4 +{ + uint8_t U; + struct _hw_cmt_cmd4_bitfields + { + uint8_t SB : 8; //!< [7:0] + } B; +} hw_cmt_cmd4_t; +#endif + +/*! + * @name Constants and macros for entire CMT_CMD4 register + */ +//@{ +#define HW_CMT_CMD4_ADDR (REGS_CMT_BASE + 0x9U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_CMD4 (*(__IO hw_cmt_cmd4_t *) HW_CMT_CMD4_ADDR) +#define HW_CMT_CMD4_RD() (HW_CMT_CMD4.U) +#define HW_CMT_CMD4_WR(v) (HW_CMT_CMD4.U = (v)) +#define HW_CMT_CMD4_SET(v) (HW_CMT_CMD4_WR(HW_CMT_CMD4_RD() | (v))) +#define HW_CMT_CMD4_CLR(v) (HW_CMT_CMD4_WR(HW_CMT_CMD4_RD() & ~(v))) +#define HW_CMT_CMD4_TOG(v) (HW_CMT_CMD4_WR(HW_CMT_CMD4_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_CMD4 bitfields + */ + +/*! + * @name Register CMT_CMD4, field SB[7:0] (RW) + * + * Controls the lower space periods of the modulator for all modes. + */ +//@{ +#define BP_CMT_CMD4_SB (0U) //!< Bit position for CMT_CMD4_SB. +#define BM_CMT_CMD4_SB (0xFFU) //!< Bit mask for CMT_CMD4_SB. +#define BS_CMT_CMD4_SB (8U) //!< Bit field size in bits for CMT_CMD4_SB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_CMD4_SB field. +#define BR_CMT_CMD4_SB (HW_CMT_CMD4.U) +#endif + +//! @brief Format value for bitfield CMT_CMD4_SB. +#define BF_CMT_CMD4_SB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_CMD4_SB), uint8_t) & BM_CMT_CMD4_SB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SB field to a new value. +#define BW_CMT_CMD4_SB(v) (HW_CMT_CMD4_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_PPS - CMT Primary Prescaler Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_PPS - CMT Primary Prescaler Register (RW) + * + * Reset value: 0x00U + * + * This register is used to set the Primary Prescaler Divider field (PPSDIV). + */ +typedef union _hw_cmt_pps +{ + uint8_t U; + struct _hw_cmt_pps_bitfields + { + uint8_t PPSDIV : 4; //!< [3:0] Primary Prescaler Divider + uint8_t RESERVED0 : 4; //!< [7:4] + } B; +} hw_cmt_pps_t; +#endif + +/*! + * @name Constants and macros for entire CMT_PPS register + */ +//@{ +#define HW_CMT_PPS_ADDR (REGS_CMT_BASE + 0xAU) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_PPS (*(__IO hw_cmt_pps_t *) HW_CMT_PPS_ADDR) +#define HW_CMT_PPS_RD() (HW_CMT_PPS.U) +#define HW_CMT_PPS_WR(v) (HW_CMT_PPS.U = (v)) +#define HW_CMT_PPS_SET(v) (HW_CMT_PPS_WR(HW_CMT_PPS_RD() | (v))) +#define HW_CMT_PPS_CLR(v) (HW_CMT_PPS_WR(HW_CMT_PPS_RD() & ~(v))) +#define HW_CMT_PPS_TOG(v) (HW_CMT_PPS_WR(HW_CMT_PPS_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_PPS bitfields + */ + +/*! + * @name Register CMT_PPS, field PPSDIV[3:0] (RW) + * + * Divides the CMT clock to generate the Intermediate Frequency clock enable to + * the secondary prescaler. + * + * Values: + * - 0000 - Bus clock * 1 + * - 0001 - Bus clock * 2 + * - 0010 - Bus clock * 3 + * - 0011 - Bus clock * 4 + * - 0100 - Bus clock * 5 + * - 0101 - Bus clock * 6 + * - 0110 - Bus clock * 7 + * - 0111 - Bus clock * 8 + * - 1000 - Bus clock * 9 + * - 1001 - Bus clock * 10 + * - 1010 - Bus clock * 11 + * - 1011 - Bus clock * 12 + * - 1100 - Bus clock * 13 + * - 1101 - Bus clock * 14 + * - 1110 - Bus clock * 15 + * - 1111 - Bus clock * 16 + */ +//@{ +#define BP_CMT_PPS_PPSDIV (0U) //!< Bit position for CMT_PPS_PPSDIV. +#define BM_CMT_PPS_PPSDIV (0x0FU) //!< Bit mask for CMT_PPS_PPSDIV. +#define BS_CMT_PPS_PPSDIV (4U) //!< Bit field size in bits for CMT_PPS_PPSDIV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_PPS_PPSDIV field. +#define BR_CMT_PPS_PPSDIV (HW_CMT_PPS.B.PPSDIV) +#endif + +//! @brief Format value for bitfield CMT_PPS_PPSDIV. +#define BF_CMT_PPS_PPSDIV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_PPS_PPSDIV), uint8_t) & BM_CMT_PPS_PPSDIV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PPSDIV field to a new value. +#define BW_CMT_PPS_PPSDIV(v) (HW_CMT_PPS_WR((HW_CMT_PPS_RD() & ~BM_CMT_PPS_PPSDIV) | BF_CMT_PPS_PPSDIV(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CMT_DMA - CMT Direct Memory Access Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CMT_DMA - CMT Direct Memory Access Register (RW) + * + * Reset value: 0x00U + * + * This register is used to enable/disable direct memory access (DMA). + */ +typedef union _hw_cmt_dma +{ + uint8_t U; + struct _hw_cmt_dma_bitfields + { + uint8_t DMAb : 1; //!< [0] DMA Enable + uint8_t RESERVED0 : 7; //!< [7:1] + } B; +} hw_cmt_dma_t; +#endif + +/*! + * @name Constants and macros for entire CMT_DMA register + */ +//@{ +#define HW_CMT_DMA_ADDR (REGS_CMT_BASE + 0xBU) + +#ifndef __LANGUAGE_ASM__ +#define HW_CMT_DMA (*(__IO hw_cmt_dma_t *) HW_CMT_DMA_ADDR) +#define HW_CMT_DMA_RD() (HW_CMT_DMA.U) +#define HW_CMT_DMA_WR(v) (HW_CMT_DMA.U = (v)) +#define HW_CMT_DMA_SET(v) (HW_CMT_DMA_WR(HW_CMT_DMA_RD() | (v))) +#define HW_CMT_DMA_CLR(v) (HW_CMT_DMA_WR(HW_CMT_DMA_RD() & ~(v))) +#define HW_CMT_DMA_TOG(v) (HW_CMT_DMA_WR(HW_CMT_DMA_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CMT_DMA bitfields + */ + +/*! + * @name Register CMT_DMA, field DMA[0] (RW) + * + * Enables the DMA protocol. + * + * Values: + * - 0 - DMA transfer request and done are disabled. + * - 1 - DMA transfer request and done are enabled. + */ +//@{ +#define BP_CMT_DMA_DMA (0U) //!< Bit position for CMT_DMA_DMA. +#define BM_CMT_DMA_DMA (0x01U) //!< Bit mask for CMT_DMA_DMA. +#define BS_CMT_DMA_DMA (1U) //!< Bit field size in bits for CMT_DMA_DMA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CMT_DMA_DMA field. +#define BR_CMT_DMA_DMA (BITBAND_ACCESS8(HW_CMT_DMA_ADDR, BP_CMT_DMA_DMA)) +#endif + +//! @brief Format value for bitfield CMT_DMA_DMA. +#define BF_CMT_DMA_DMA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CMT_DMA_DMA), uint8_t) & BM_CMT_DMA_DMA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMA field to a new value. +#define BW_CMT_DMA_DMA(v) (BITBAND_ACCESS8(HW_CMT_DMA_ADDR, BP_CMT_DMA_DMA) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_cmt_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All CMT module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_cmt +{ + __IO hw_cmt_cgh1_t CGH1; //!< [0x0] CMT Carrier Generator High Data Register 1 + __IO hw_cmt_cgl1_t CGL1; //!< [0x1] CMT Carrier Generator Low Data Register 1 + __IO hw_cmt_cgh2_t CGH2; //!< [0x2] CMT Carrier Generator High Data Register 2 + __IO hw_cmt_cgl2_t CGL2; //!< [0x3] CMT Carrier Generator Low Data Register 2 + __IO hw_cmt_oc_t OC; //!< [0x4] CMT Output Control Register + __IO hw_cmt_msc_t MSC; //!< [0x5] CMT Modulator Status and Control Register + __IO hw_cmt_cmd1_t CMD1; //!< [0x6] CMT Modulator Data Register Mark High + __IO hw_cmt_cmd2_t CMD2; //!< [0x7] CMT Modulator Data Register Mark Low + __IO hw_cmt_cmd3_t CMD3; //!< [0x8] CMT Modulator Data Register Space High + __IO hw_cmt_cmd4_t CMD4; //!< [0x9] CMT Modulator Data Register Space Low + __IO hw_cmt_pps_t PPS; //!< [0xA] CMT Primary Prescaler Register + __IO hw_cmt_dma_t DMA; //!< [0xB] CMT Direct Memory Access Register +} hw_cmt_t; +#pragma pack() + +//! @brief Macro to access all CMT registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_CMT</code>. +#define HW_CMT (*(hw_cmt_t *) REGS_CMT_BASE) +#endif + +#endif // __HW_CMT_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_crc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1499 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_CRC_REGISTERS_H__ +#define __HW_CRC_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 CRC + * + * Cyclic Redundancy Check + * + * Registers defined in this header file: + * - HW_CRC_DATAL - CRC_DATAL register. + * - HW_CRC_DATAH - CRC_DATAH register. + * - HW_CRC_DATALL - CRC_DATALL register. + * - HW_CRC_DATALU - CRC_DATALU register. + * - HW_CRC_DATAHL - CRC_DATAHL register. + * - HW_CRC_DATAHU - CRC_DATAHU register. + * - HW_CRC_DATA - CRC Data register + * - HW_CRC_GPOLY - CRC Polynomial register + * - HW_CRC_GPOLYL - CRC_GPOLYL register. + * - HW_CRC_GPOLYH - CRC_GPOLYH register. + * - HW_CRC_GPOLYLL - CRC_GPOLYLL register. + * - HW_CRC_GPOLYLU - CRC_GPOLYLU register. + * - HW_CRC_GPOLYHL - CRC_GPOLYHL register. + * - HW_CRC_GPOLYHU - CRC_GPOLYHU register. + * - HW_CRC_CTRL - CRC Control register + * - HW_CRC_CTRLHU - CRC_CTRLHU register. + * + * - hw_crc_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_CRC_BASE +#define HW_CRC_INSTANCE_COUNT (1U) //!< Number of instances of the CRC module. +#define REGS_CRC_BASE (0x40032000U) //!< Base address for CRC. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CRC_DATAL - CRC_DATAL register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_DATAL - CRC_DATAL register. (RW) + * + * Reset value: 0xFFFFU + */ +typedef union _hw_crc_datal +{ + uint16_t U; + struct _hw_crc_datal_bitfields + { + uint16_t DATAL : 16; //!< [15:0] DATAL stores the lower 16 bits of + //! the 16/32 bit CRC + } B; +} hw_crc_datal_t; +#endif + +/*! + * @name Constants and macros for entire CRC_DATAL register + */ +//@{ +#define HW_CRC_DATAL_ADDR (REGS_CRC_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_DATAL (*(__IO hw_crc_datal_t *) HW_CRC_DATAL_ADDR) +#define HW_CRC_DATAL_RD() (HW_CRC_DATAL.U) +#define HW_CRC_DATAL_WR(v) (HW_CRC_DATAL.U = (v)) +#define HW_CRC_DATAL_SET(v) (HW_CRC_DATAL_WR(HW_CRC_DATAL_RD() | (v))) +#define HW_CRC_DATAL_CLR(v) (HW_CRC_DATAL_WR(HW_CRC_DATAL_RD() & ~(v))) +#define HW_CRC_DATAL_TOG(v) (HW_CRC_DATAL_WR(HW_CRC_DATAL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_DATAL bitfields + */ + +/*! + * @name Register CRC_DATAL, field DATAL[15:0] (RW) + */ +//@{ +#define BP_CRC_DATAL_DATAL (0U) //!< Bit position for CRC_DATAL_DATAL. +#define BM_CRC_DATAL_DATAL (0xFFFFU) //!< Bit mask for CRC_DATAL_DATAL. +#define BS_CRC_DATAL_DATAL (16U) //!< Bit field size in bits for CRC_DATAL_DATAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATAL_DATAL field. +#define BR_CRC_DATAL_DATAL (HW_CRC_DATAL.U) +#endif + +//! @brief Format value for bitfield CRC_DATAL_DATAL. +#define BF_CRC_DATAL_DATAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_CRC_DATAL_DATAL), uint16_t) & BM_CRC_DATAL_DATAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATAL field to a new value. +#define BW_CRC_DATAL_DATAL(v) (HW_CRC_DATAL_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_DATAH - CRC_DATAH register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_DATAH - CRC_DATAH register. (RW) + * + * Reset value: 0xFFFFU + */ +typedef union _hw_crc_datah +{ + uint16_t U; + struct _hw_crc_datah_bitfields + { + uint16_t DATAH : 16; //!< [15:0] DATAH stores the high 16 bits of the + //! 16/32 bit CRC + } B; +} hw_crc_datah_t; +#endif + +/*! + * @name Constants and macros for entire CRC_DATAH register + */ +//@{ +#define HW_CRC_DATAH_ADDR (REGS_CRC_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_DATAH (*(__IO hw_crc_datah_t *) HW_CRC_DATAH_ADDR) +#define HW_CRC_DATAH_RD() (HW_CRC_DATAH.U) +#define HW_CRC_DATAH_WR(v) (HW_CRC_DATAH.U = (v)) +#define HW_CRC_DATAH_SET(v) (HW_CRC_DATAH_WR(HW_CRC_DATAH_RD() | (v))) +#define HW_CRC_DATAH_CLR(v) (HW_CRC_DATAH_WR(HW_CRC_DATAH_RD() & ~(v))) +#define HW_CRC_DATAH_TOG(v) (HW_CRC_DATAH_WR(HW_CRC_DATAH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_DATAH bitfields + */ + +/*! + * @name Register CRC_DATAH, field DATAH[15:0] (RW) + */ +//@{ +#define BP_CRC_DATAH_DATAH (0U) //!< Bit position for CRC_DATAH_DATAH. +#define BM_CRC_DATAH_DATAH (0xFFFFU) //!< Bit mask for CRC_DATAH_DATAH. +#define BS_CRC_DATAH_DATAH (16U) //!< Bit field size in bits for CRC_DATAH_DATAH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATAH_DATAH field. +#define BR_CRC_DATAH_DATAH (HW_CRC_DATAH.U) +#endif + +//! @brief Format value for bitfield CRC_DATAH_DATAH. +#define BF_CRC_DATAH_DATAH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_CRC_DATAH_DATAH), uint16_t) & BM_CRC_DATAH_DATAH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATAH field to a new value. +#define BW_CRC_DATAH_DATAH(v) (HW_CRC_DATAH_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_DATALL - CRC_DATALL register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_DATALL - CRC_DATALL register. (RW) + * + * Reset value: 0xFFU + */ +typedef union _hw_crc_datall +{ + uint8_t U; + struct _hw_crc_datall_bitfields + { + uint8_t DATALL : 8; //!< [7:0] CRCLL stores the first 8 bits of the + //! 32 bit DATA + } B; +} hw_crc_datall_t; +#endif + +/*! + * @name Constants and macros for entire CRC_DATALL register + */ +//@{ +#define HW_CRC_DATALL_ADDR (REGS_CRC_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_DATALL (*(__IO hw_crc_datall_t *) HW_CRC_DATALL_ADDR) +#define HW_CRC_DATALL_RD() (HW_CRC_DATALL.U) +#define HW_CRC_DATALL_WR(v) (HW_CRC_DATALL.U = (v)) +#define HW_CRC_DATALL_SET(v) (HW_CRC_DATALL_WR(HW_CRC_DATALL_RD() | (v))) +#define HW_CRC_DATALL_CLR(v) (HW_CRC_DATALL_WR(HW_CRC_DATALL_RD() & ~(v))) +#define HW_CRC_DATALL_TOG(v) (HW_CRC_DATALL_WR(HW_CRC_DATALL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_DATALL bitfields + */ + +/*! + * @name Register CRC_DATALL, field DATALL[7:0] (RW) + */ +//@{ +#define BP_CRC_DATALL_DATALL (0U) //!< Bit position for CRC_DATALL_DATALL. +#define BM_CRC_DATALL_DATALL (0xFFU) //!< Bit mask for CRC_DATALL_DATALL. +#define BS_CRC_DATALL_DATALL (8U) //!< Bit field size in bits for CRC_DATALL_DATALL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATALL_DATALL field. +#define BR_CRC_DATALL_DATALL (HW_CRC_DATALL.U) +#endif + +//! @brief Format value for bitfield CRC_DATALL_DATALL. +#define BF_CRC_DATALL_DATALL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_DATALL_DATALL), uint8_t) & BM_CRC_DATALL_DATALL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATALL field to a new value. +#define BW_CRC_DATALL_DATALL(v) (HW_CRC_DATALL_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_DATALU - CRC_DATALU register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_DATALU - CRC_DATALU register. (RW) + * + * Reset value: 0xFFU + */ +typedef union _hw_crc_datalu +{ + uint8_t U; + struct _hw_crc_datalu_bitfields + { + uint8_t DATALU : 8; //!< [7:0] DATALL stores the second 8 bits of the + //! 32 bit CRC + } B; +} hw_crc_datalu_t; +#endif + +/*! + * @name Constants and macros for entire CRC_DATALU register + */ +//@{ +#define HW_CRC_DATALU_ADDR (REGS_CRC_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_DATALU (*(__IO hw_crc_datalu_t *) HW_CRC_DATALU_ADDR) +#define HW_CRC_DATALU_RD() (HW_CRC_DATALU.U) +#define HW_CRC_DATALU_WR(v) (HW_CRC_DATALU.U = (v)) +#define HW_CRC_DATALU_SET(v) (HW_CRC_DATALU_WR(HW_CRC_DATALU_RD() | (v))) +#define HW_CRC_DATALU_CLR(v) (HW_CRC_DATALU_WR(HW_CRC_DATALU_RD() & ~(v))) +#define HW_CRC_DATALU_TOG(v) (HW_CRC_DATALU_WR(HW_CRC_DATALU_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_DATALU bitfields + */ + +/*! + * @name Register CRC_DATALU, field DATALU[7:0] (RW) + */ +//@{ +#define BP_CRC_DATALU_DATALU (0U) //!< Bit position for CRC_DATALU_DATALU. +#define BM_CRC_DATALU_DATALU (0xFFU) //!< Bit mask for CRC_DATALU_DATALU. +#define BS_CRC_DATALU_DATALU (8U) //!< Bit field size in bits for CRC_DATALU_DATALU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATALU_DATALU field. +#define BR_CRC_DATALU_DATALU (HW_CRC_DATALU.U) +#endif + +//! @brief Format value for bitfield CRC_DATALU_DATALU. +#define BF_CRC_DATALU_DATALU(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_DATALU_DATALU), uint8_t) & BM_CRC_DATALU_DATALU) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATALU field to a new value. +#define BW_CRC_DATALU_DATALU(v) (HW_CRC_DATALU_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_DATAHL - CRC_DATAHL register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_DATAHL - CRC_DATAHL register. (RW) + * + * Reset value: 0xFFU + */ +typedef union _hw_crc_datahl +{ + uint8_t U; + struct _hw_crc_datahl_bitfields + { + uint8_t DATAHL : 8; //!< [7:0] DATAHL stores the third 8 bits of the + //! 32 bit CRC + } B; +} hw_crc_datahl_t; +#endif + +/*! + * @name Constants and macros for entire CRC_DATAHL register + */ +//@{ +#define HW_CRC_DATAHL_ADDR (REGS_CRC_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_DATAHL (*(__IO hw_crc_datahl_t *) HW_CRC_DATAHL_ADDR) +#define HW_CRC_DATAHL_RD() (HW_CRC_DATAHL.U) +#define HW_CRC_DATAHL_WR(v) (HW_CRC_DATAHL.U = (v)) +#define HW_CRC_DATAHL_SET(v) (HW_CRC_DATAHL_WR(HW_CRC_DATAHL_RD() | (v))) +#define HW_CRC_DATAHL_CLR(v) (HW_CRC_DATAHL_WR(HW_CRC_DATAHL_RD() & ~(v))) +#define HW_CRC_DATAHL_TOG(v) (HW_CRC_DATAHL_WR(HW_CRC_DATAHL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_DATAHL bitfields + */ + +/*! + * @name Register CRC_DATAHL, field DATAHL[7:0] (RW) + */ +//@{ +#define BP_CRC_DATAHL_DATAHL (0U) //!< Bit position for CRC_DATAHL_DATAHL. +#define BM_CRC_DATAHL_DATAHL (0xFFU) //!< Bit mask for CRC_DATAHL_DATAHL. +#define BS_CRC_DATAHL_DATAHL (8U) //!< Bit field size in bits for CRC_DATAHL_DATAHL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATAHL_DATAHL field. +#define BR_CRC_DATAHL_DATAHL (HW_CRC_DATAHL.U) +#endif + +//! @brief Format value for bitfield CRC_DATAHL_DATAHL. +#define BF_CRC_DATAHL_DATAHL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_DATAHL_DATAHL), uint8_t) & BM_CRC_DATAHL_DATAHL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATAHL field to a new value. +#define BW_CRC_DATAHL_DATAHL(v) (HW_CRC_DATAHL_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_DATAHU - CRC_DATAHU register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_DATAHU - CRC_DATAHU register. (RW) + * + * Reset value: 0xFFU + */ +typedef union _hw_crc_datahu +{ + uint8_t U; + struct _hw_crc_datahu_bitfields + { + uint8_t DATAHU : 8; //!< [7:0] DATAHU stores the fourth 8 bits of the + //! 32 bit CRC + } B; +} hw_crc_datahu_t; +#endif + +/*! + * @name Constants and macros for entire CRC_DATAHU register + */ +//@{ +#define HW_CRC_DATAHU_ADDR (REGS_CRC_BASE + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_DATAHU (*(__IO hw_crc_datahu_t *) HW_CRC_DATAHU_ADDR) +#define HW_CRC_DATAHU_RD() (HW_CRC_DATAHU.U) +#define HW_CRC_DATAHU_WR(v) (HW_CRC_DATAHU.U = (v)) +#define HW_CRC_DATAHU_SET(v) (HW_CRC_DATAHU_WR(HW_CRC_DATAHU_RD() | (v))) +#define HW_CRC_DATAHU_CLR(v) (HW_CRC_DATAHU_WR(HW_CRC_DATAHU_RD() & ~(v))) +#define HW_CRC_DATAHU_TOG(v) (HW_CRC_DATAHU_WR(HW_CRC_DATAHU_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_DATAHU bitfields + */ + +/*! + * @name Register CRC_DATAHU, field DATAHU[7:0] (RW) + */ +//@{ +#define BP_CRC_DATAHU_DATAHU (0U) //!< Bit position for CRC_DATAHU_DATAHU. +#define BM_CRC_DATAHU_DATAHU (0xFFU) //!< Bit mask for CRC_DATAHU_DATAHU. +#define BS_CRC_DATAHU_DATAHU (8U) //!< Bit field size in bits for CRC_DATAHU_DATAHU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATAHU_DATAHU field. +#define BR_CRC_DATAHU_DATAHU (HW_CRC_DATAHU.U) +#endif + +//! @brief Format value for bitfield CRC_DATAHU_DATAHU. +#define BF_CRC_DATAHU_DATAHU(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_DATAHU_DATAHU), uint8_t) & BM_CRC_DATAHU_DATAHU) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATAHU field to a new value. +#define BW_CRC_DATAHU_DATAHU(v) (HW_CRC_DATAHU_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_DATA - CRC Data register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_DATA - CRC Data register (RW) + * + * Reset value: 0xFFFFFFFFU + * + * The CRC Data register contains the value of the seed, data, and checksum. + * When CTRL[WAS] is set, any write to the data register is regarded as the seed + * value. When CTRL[WAS] is cleared, any write to the data register is regarded as + * data for general CRC computation. In 16-bit CRC mode, the HU and HL fields are + * not used for programming the seed value, and reads of these fields return an + * indeterminate value. In 32-bit CRC mode, all fields are used for programming + * the seed value. When programming data values, the values can be written 8 bits, + * 16 bits, or 32 bits at a time, provided all bytes are contiguous; with MSB of + * data value written first. After all data values are written, the CRC result + * can be read from this data register. In 16-bit CRC mode, the CRC result is + * available in the LU and LL fields. In 32-bit CRC mode, all fields contain the + * result. Reads of this register at any time return the intermediate CRC value, + * provided the CRC module is configured. + */ +typedef union _hw_crc_data +{ + uint32_t U; + struct _hw_crc_data_bitfields + { + uint32_t LL : 8; //!< [7:0] CRC Low Lower Byte + uint32_t LU : 8; //!< [15:8] CRC Low Upper Byte + uint32_t HL : 8; //!< [23:16] CRC High Lower Byte + uint32_t HU : 8; //!< [31:24] CRC High Upper Byte + } B; +} hw_crc_data_t; +#endif + +/*! + * @name Constants and macros for entire CRC_DATA register + */ +//@{ +#define HW_CRC_DATA_ADDR (REGS_CRC_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_DATA (*(__IO hw_crc_data_t *) HW_CRC_DATA_ADDR) +#define HW_CRC_DATA_RD() (HW_CRC_DATA.U) +#define HW_CRC_DATA_WR(v) (HW_CRC_DATA.U = (v)) +#define HW_CRC_DATA_SET(v) (HW_CRC_DATA_WR(HW_CRC_DATA_RD() | (v))) +#define HW_CRC_DATA_CLR(v) (HW_CRC_DATA_WR(HW_CRC_DATA_RD() & ~(v))) +#define HW_CRC_DATA_TOG(v) (HW_CRC_DATA_WR(HW_CRC_DATA_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_DATA bitfields + */ + +/*! + * @name Register CRC_DATA, field LL[7:0] (RW) + * + * When CTRL[WAS] is 1, values written to this field are part of the seed value. + * When CTRL[WAS] is 0, data written to this field is used for CRC checksum + * generation. + */ +//@{ +#define BP_CRC_DATA_LL (0U) //!< Bit position for CRC_DATA_LL. +#define BM_CRC_DATA_LL (0x000000FFU) //!< Bit mask for CRC_DATA_LL. +#define BS_CRC_DATA_LL (8U) //!< Bit field size in bits for CRC_DATA_LL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATA_LL field. +#define BR_CRC_DATA_LL (HW_CRC_DATA.B.LL) +#endif + +//! @brief Format value for bitfield CRC_DATA_LL. +#define BF_CRC_DATA_LL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_DATA_LL), uint32_t) & BM_CRC_DATA_LL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LL field to a new value. +#define BW_CRC_DATA_LL(v) (HW_CRC_DATA_WR((HW_CRC_DATA_RD() & ~BM_CRC_DATA_LL) | BF_CRC_DATA_LL(v))) +#endif +//@} + +/*! + * @name Register CRC_DATA, field LU[15:8] (RW) + * + * When CTRL[WAS] is 1, values written to this field are part of the seed value. + * When CTRL[WAS] is 0, data written to this field is used for CRC checksum + * generation. + */ +//@{ +#define BP_CRC_DATA_LU (8U) //!< Bit position for CRC_DATA_LU. +#define BM_CRC_DATA_LU (0x0000FF00U) //!< Bit mask for CRC_DATA_LU. +#define BS_CRC_DATA_LU (8U) //!< Bit field size in bits for CRC_DATA_LU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATA_LU field. +#define BR_CRC_DATA_LU (HW_CRC_DATA.B.LU) +#endif + +//! @brief Format value for bitfield CRC_DATA_LU. +#define BF_CRC_DATA_LU(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_DATA_LU), uint32_t) & BM_CRC_DATA_LU) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LU field to a new value. +#define BW_CRC_DATA_LU(v) (HW_CRC_DATA_WR((HW_CRC_DATA_RD() & ~BM_CRC_DATA_LU) | BF_CRC_DATA_LU(v))) +#endif +//@} + +/*! + * @name Register CRC_DATA, field HL[23:16] (RW) + * + * In 16-bit CRC mode (CTRL[TCRC] is 0), this field is not used for programming + * a seed value. In 32-bit CRC mode (CTRL[TCRC] is 1), values written to this + * field are part of the seed value when CTRL[WAS] is 1. When CTRL[WAS] is 0, data + * written to this field is used for CRC checksum generation in both 16-bit and + * 32-bit CRC modes. + */ +//@{ +#define BP_CRC_DATA_HL (16U) //!< Bit position for CRC_DATA_HL. +#define BM_CRC_DATA_HL (0x00FF0000U) //!< Bit mask for CRC_DATA_HL. +#define BS_CRC_DATA_HL (8U) //!< Bit field size in bits for CRC_DATA_HL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATA_HL field. +#define BR_CRC_DATA_HL (HW_CRC_DATA.B.HL) +#endif + +//! @brief Format value for bitfield CRC_DATA_HL. +#define BF_CRC_DATA_HL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_DATA_HL), uint32_t) & BM_CRC_DATA_HL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HL field to a new value. +#define BW_CRC_DATA_HL(v) (HW_CRC_DATA_WR((HW_CRC_DATA_RD() & ~BM_CRC_DATA_HL) | BF_CRC_DATA_HL(v))) +#endif +//@} + +/*! + * @name Register CRC_DATA, field HU[31:24] (RW) + * + * In 16-bit CRC mode (CTRL[TCRC] is 0), this field is not used for programming + * a seed value. In 32-bit CRC mode (CTRL[TCRC] is 1), values written to this + * field are part of the seed value when CTRL[WAS] is 1. When CTRL[WAS] is 0, data + * written to this field is used for CRC checksum generation in both 16-bit and + * 32-bit CRC modes. + */ +//@{ +#define BP_CRC_DATA_HU (24U) //!< Bit position for CRC_DATA_HU. +#define BM_CRC_DATA_HU (0xFF000000U) //!< Bit mask for CRC_DATA_HU. +#define BS_CRC_DATA_HU (8U) //!< Bit field size in bits for CRC_DATA_HU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_DATA_HU field. +#define BR_CRC_DATA_HU (HW_CRC_DATA.B.HU) +#endif + +//! @brief Format value for bitfield CRC_DATA_HU. +#define BF_CRC_DATA_HU(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_DATA_HU), uint32_t) & BM_CRC_DATA_HU) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HU field to a new value. +#define BW_CRC_DATA_HU(v) (HW_CRC_DATA_WR((HW_CRC_DATA_RD() & ~BM_CRC_DATA_HU) | BF_CRC_DATA_HU(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CRC_GPOLY - CRC Polynomial register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_GPOLY - CRC Polynomial register (RW) + * + * Reset value: 0x00001021U + * + * This register contains the value of the polynomial for the CRC calculation. + * The HIGH field contains the upper 16 bits of the CRC polynomial, which are used + * only in 32-bit CRC mode. Writes to the HIGH field are ignored in 16-bit CRC + * mode. The LOW field contains the lower 16 bits of the CRC polynomial, which are + * used in both 16- and 32-bit CRC modes. + */ +typedef union _hw_crc_gpoly +{ + uint32_t U; + struct _hw_crc_gpoly_bitfields + { + uint32_t LOW : 16; //!< [15:0] Low Polynominal Half-word + uint32_t HIGH : 16; //!< [31:16] High Polynominal Half-word + } B; +} hw_crc_gpoly_t; +#endif + +/*! + * @name Constants and macros for entire CRC_GPOLY register + */ +//@{ +#define HW_CRC_GPOLY_ADDR (REGS_CRC_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_GPOLY (*(__IO hw_crc_gpoly_t *) HW_CRC_GPOLY_ADDR) +#define HW_CRC_GPOLY_RD() (HW_CRC_GPOLY.U) +#define HW_CRC_GPOLY_WR(v) (HW_CRC_GPOLY.U = (v)) +#define HW_CRC_GPOLY_SET(v) (HW_CRC_GPOLY_WR(HW_CRC_GPOLY_RD() | (v))) +#define HW_CRC_GPOLY_CLR(v) (HW_CRC_GPOLY_WR(HW_CRC_GPOLY_RD() & ~(v))) +#define HW_CRC_GPOLY_TOG(v) (HW_CRC_GPOLY_WR(HW_CRC_GPOLY_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_GPOLY bitfields + */ + +/*! + * @name Register CRC_GPOLY, field LOW[15:0] (RW) + * + * Writable and readable in both 32-bit and 16-bit CRC modes. + */ +//@{ +#define BP_CRC_GPOLY_LOW (0U) //!< Bit position for CRC_GPOLY_LOW. +#define BM_CRC_GPOLY_LOW (0x0000FFFFU) //!< Bit mask for CRC_GPOLY_LOW. +#define BS_CRC_GPOLY_LOW (16U) //!< Bit field size in bits for CRC_GPOLY_LOW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_GPOLY_LOW field. +#define BR_CRC_GPOLY_LOW (HW_CRC_GPOLY.B.LOW) +#endif + +//! @brief Format value for bitfield CRC_GPOLY_LOW. +#define BF_CRC_GPOLY_LOW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_GPOLY_LOW), uint32_t) & BM_CRC_GPOLY_LOW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOW field to a new value. +#define BW_CRC_GPOLY_LOW(v) (HW_CRC_GPOLY_WR((HW_CRC_GPOLY_RD() & ~BM_CRC_GPOLY_LOW) | BF_CRC_GPOLY_LOW(v))) +#endif +//@} + +/*! + * @name Register CRC_GPOLY, field HIGH[31:16] (RW) + * + * Writable and readable in 32-bit CRC mode (CTRL[TCRC] is 1). This field is not + * writable in 16-bit CRC mode (CTRL[TCRC] is 0). + */ +//@{ +#define BP_CRC_GPOLY_HIGH (16U) //!< Bit position for CRC_GPOLY_HIGH. +#define BM_CRC_GPOLY_HIGH (0xFFFF0000U) //!< Bit mask for CRC_GPOLY_HIGH. +#define BS_CRC_GPOLY_HIGH (16U) //!< Bit field size in bits for CRC_GPOLY_HIGH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_GPOLY_HIGH field. +#define BR_CRC_GPOLY_HIGH (HW_CRC_GPOLY.B.HIGH) +#endif + +//! @brief Format value for bitfield CRC_GPOLY_HIGH. +#define BF_CRC_GPOLY_HIGH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_GPOLY_HIGH), uint32_t) & BM_CRC_GPOLY_HIGH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HIGH field to a new value. +#define BW_CRC_GPOLY_HIGH(v) (HW_CRC_GPOLY_WR((HW_CRC_GPOLY_RD() & ~BM_CRC_GPOLY_HIGH) | BF_CRC_GPOLY_HIGH(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_GPOLYL - CRC_GPOLYL register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_GPOLYL - CRC_GPOLYL register. (RW) + * + * Reset value: 0xFFFFU + */ +typedef union _hw_crc_gpolyl +{ + uint16_t U; + struct _hw_crc_gpolyl_bitfields + { + uint16_t GPOLYL : 16; //!< [15:0] POLYL stores the lower 16 bits of + //! the 16/32 bit CRC polynomial value + } B; +} hw_crc_gpolyl_t; +#endif + +/*! + * @name Constants and macros for entire CRC_GPOLYL register + */ +//@{ +#define HW_CRC_GPOLYL_ADDR (REGS_CRC_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_GPOLYL (*(__IO hw_crc_gpolyl_t *) HW_CRC_GPOLYL_ADDR) +#define HW_CRC_GPOLYL_RD() (HW_CRC_GPOLYL.U) +#define HW_CRC_GPOLYL_WR(v) (HW_CRC_GPOLYL.U = (v)) +#define HW_CRC_GPOLYL_SET(v) (HW_CRC_GPOLYL_WR(HW_CRC_GPOLYL_RD() | (v))) +#define HW_CRC_GPOLYL_CLR(v) (HW_CRC_GPOLYL_WR(HW_CRC_GPOLYL_RD() & ~(v))) +#define HW_CRC_GPOLYL_TOG(v) (HW_CRC_GPOLYL_WR(HW_CRC_GPOLYL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_GPOLYL bitfields + */ + +/*! + * @name Register CRC_GPOLYL, field GPOLYL[15:0] (RW) + */ +//@{ +#define BP_CRC_GPOLYL_GPOLYL (0U) //!< Bit position for CRC_GPOLYL_GPOLYL. +#define BM_CRC_GPOLYL_GPOLYL (0xFFFFU) //!< Bit mask for CRC_GPOLYL_GPOLYL. +#define BS_CRC_GPOLYL_GPOLYL (16U) //!< Bit field size in bits for CRC_GPOLYL_GPOLYL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_GPOLYL_GPOLYL field. +#define BR_CRC_GPOLYL_GPOLYL (HW_CRC_GPOLYL.U) +#endif + +//! @brief Format value for bitfield CRC_GPOLYL_GPOLYL. +#define BF_CRC_GPOLYL_GPOLYL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_CRC_GPOLYL_GPOLYL), uint16_t) & BM_CRC_GPOLYL_GPOLYL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPOLYL field to a new value. +#define BW_CRC_GPOLYL_GPOLYL(v) (HW_CRC_GPOLYL_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_GPOLYH - CRC_GPOLYH register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_GPOLYH - CRC_GPOLYH register. (RW) + * + * Reset value: 0xFFFFU + */ +typedef union _hw_crc_gpolyh +{ + uint16_t U; + struct _hw_crc_gpolyh_bitfields + { + uint16_t GPOLYH : 16; //!< [15:0] POLYH stores the high 16 bits of + //! the 16/32 bit CRC polynomial value + } B; +} hw_crc_gpolyh_t; +#endif + +/*! + * @name Constants and macros for entire CRC_GPOLYH register + */ +//@{ +#define HW_CRC_GPOLYH_ADDR (REGS_CRC_BASE + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_GPOLYH (*(__IO hw_crc_gpolyh_t *) HW_CRC_GPOLYH_ADDR) +#define HW_CRC_GPOLYH_RD() (HW_CRC_GPOLYH.U) +#define HW_CRC_GPOLYH_WR(v) (HW_CRC_GPOLYH.U = (v)) +#define HW_CRC_GPOLYH_SET(v) (HW_CRC_GPOLYH_WR(HW_CRC_GPOLYH_RD() | (v))) +#define HW_CRC_GPOLYH_CLR(v) (HW_CRC_GPOLYH_WR(HW_CRC_GPOLYH_RD() & ~(v))) +#define HW_CRC_GPOLYH_TOG(v) (HW_CRC_GPOLYH_WR(HW_CRC_GPOLYH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_GPOLYH bitfields + */ + +/*! + * @name Register CRC_GPOLYH, field GPOLYH[15:0] (RW) + */ +//@{ +#define BP_CRC_GPOLYH_GPOLYH (0U) //!< Bit position for CRC_GPOLYH_GPOLYH. +#define BM_CRC_GPOLYH_GPOLYH (0xFFFFU) //!< Bit mask for CRC_GPOLYH_GPOLYH. +#define BS_CRC_GPOLYH_GPOLYH (16U) //!< Bit field size in bits for CRC_GPOLYH_GPOLYH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_GPOLYH_GPOLYH field. +#define BR_CRC_GPOLYH_GPOLYH (HW_CRC_GPOLYH.U) +#endif + +//! @brief Format value for bitfield CRC_GPOLYH_GPOLYH. +#define BF_CRC_GPOLYH_GPOLYH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_CRC_GPOLYH_GPOLYH), uint16_t) & BM_CRC_GPOLYH_GPOLYH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPOLYH field to a new value. +#define BW_CRC_GPOLYH_GPOLYH(v) (HW_CRC_GPOLYH_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_GPOLYLL - CRC_GPOLYLL register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_GPOLYLL - CRC_GPOLYLL register. (RW) + * + * Reset value: 0xFFU + */ +typedef union _hw_crc_gpolyll +{ + uint8_t U; + struct _hw_crc_gpolyll_bitfields + { + uint8_t GPOLYLL : 8; //!< [7:0] POLYLL stores the first 8 bits of the + //! 32 bit CRC + } B; +} hw_crc_gpolyll_t; +#endif + +/*! + * @name Constants and macros for entire CRC_GPOLYLL register + */ +//@{ +#define HW_CRC_GPOLYLL_ADDR (REGS_CRC_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_GPOLYLL (*(__IO hw_crc_gpolyll_t *) HW_CRC_GPOLYLL_ADDR) +#define HW_CRC_GPOLYLL_RD() (HW_CRC_GPOLYLL.U) +#define HW_CRC_GPOLYLL_WR(v) (HW_CRC_GPOLYLL.U = (v)) +#define HW_CRC_GPOLYLL_SET(v) (HW_CRC_GPOLYLL_WR(HW_CRC_GPOLYLL_RD() | (v))) +#define HW_CRC_GPOLYLL_CLR(v) (HW_CRC_GPOLYLL_WR(HW_CRC_GPOLYLL_RD() & ~(v))) +#define HW_CRC_GPOLYLL_TOG(v) (HW_CRC_GPOLYLL_WR(HW_CRC_GPOLYLL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_GPOLYLL bitfields + */ + +/*! + * @name Register CRC_GPOLYLL, field GPOLYLL[7:0] (RW) + */ +//@{ +#define BP_CRC_GPOLYLL_GPOLYLL (0U) //!< Bit position for CRC_GPOLYLL_GPOLYLL. +#define BM_CRC_GPOLYLL_GPOLYLL (0xFFU) //!< Bit mask for CRC_GPOLYLL_GPOLYLL. +#define BS_CRC_GPOLYLL_GPOLYLL (8U) //!< Bit field size in bits for CRC_GPOLYLL_GPOLYLL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_GPOLYLL_GPOLYLL field. +#define BR_CRC_GPOLYLL_GPOLYLL (HW_CRC_GPOLYLL.U) +#endif + +//! @brief Format value for bitfield CRC_GPOLYLL_GPOLYLL. +#define BF_CRC_GPOLYLL_GPOLYLL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_GPOLYLL_GPOLYLL), uint8_t) & BM_CRC_GPOLYLL_GPOLYLL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPOLYLL field to a new value. +#define BW_CRC_GPOLYLL_GPOLYLL(v) (HW_CRC_GPOLYLL_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_GPOLYLU - CRC_GPOLYLU register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_GPOLYLU - CRC_GPOLYLU register. (RW) + * + * Reset value: 0xFFU + */ +typedef union _hw_crc_gpolylu +{ + uint8_t U; + struct _hw_crc_gpolylu_bitfields + { + uint8_t GPOLYLU : 8; //!< [7:0] POLYLL stores the second 8 bits of + //! the 32 bit CRC + } B; +} hw_crc_gpolylu_t; +#endif + +/*! + * @name Constants and macros for entire CRC_GPOLYLU register + */ +//@{ +#define HW_CRC_GPOLYLU_ADDR (REGS_CRC_BASE + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_GPOLYLU (*(__IO hw_crc_gpolylu_t *) HW_CRC_GPOLYLU_ADDR) +#define HW_CRC_GPOLYLU_RD() (HW_CRC_GPOLYLU.U) +#define HW_CRC_GPOLYLU_WR(v) (HW_CRC_GPOLYLU.U = (v)) +#define HW_CRC_GPOLYLU_SET(v) (HW_CRC_GPOLYLU_WR(HW_CRC_GPOLYLU_RD() | (v))) +#define HW_CRC_GPOLYLU_CLR(v) (HW_CRC_GPOLYLU_WR(HW_CRC_GPOLYLU_RD() & ~(v))) +#define HW_CRC_GPOLYLU_TOG(v) (HW_CRC_GPOLYLU_WR(HW_CRC_GPOLYLU_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_GPOLYLU bitfields + */ + +/*! + * @name Register CRC_GPOLYLU, field GPOLYLU[7:0] (RW) + */ +//@{ +#define BP_CRC_GPOLYLU_GPOLYLU (0U) //!< Bit position for CRC_GPOLYLU_GPOLYLU. +#define BM_CRC_GPOLYLU_GPOLYLU (0xFFU) //!< Bit mask for CRC_GPOLYLU_GPOLYLU. +#define BS_CRC_GPOLYLU_GPOLYLU (8U) //!< Bit field size in bits for CRC_GPOLYLU_GPOLYLU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_GPOLYLU_GPOLYLU field. +#define BR_CRC_GPOLYLU_GPOLYLU (HW_CRC_GPOLYLU.U) +#endif + +//! @brief Format value for bitfield CRC_GPOLYLU_GPOLYLU. +#define BF_CRC_GPOLYLU_GPOLYLU(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_GPOLYLU_GPOLYLU), uint8_t) & BM_CRC_GPOLYLU_GPOLYLU) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPOLYLU field to a new value. +#define BW_CRC_GPOLYLU_GPOLYLU(v) (HW_CRC_GPOLYLU_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_GPOLYHL - CRC_GPOLYHL register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_GPOLYHL - CRC_GPOLYHL register. (RW) + * + * Reset value: 0xFFU + */ +typedef union _hw_crc_gpolyhl +{ + uint8_t U; + struct _hw_crc_gpolyhl_bitfields + { + uint8_t GPOLYHL : 8; //!< [7:0] POLYHL stores the third 8 bits of the + //! 32 bit CRC + } B; +} hw_crc_gpolyhl_t; +#endif + +/*! + * @name Constants and macros for entire CRC_GPOLYHL register + */ +//@{ +#define HW_CRC_GPOLYHL_ADDR (REGS_CRC_BASE + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_GPOLYHL (*(__IO hw_crc_gpolyhl_t *) HW_CRC_GPOLYHL_ADDR) +#define HW_CRC_GPOLYHL_RD() (HW_CRC_GPOLYHL.U) +#define HW_CRC_GPOLYHL_WR(v) (HW_CRC_GPOLYHL.U = (v)) +#define HW_CRC_GPOLYHL_SET(v) (HW_CRC_GPOLYHL_WR(HW_CRC_GPOLYHL_RD() | (v))) +#define HW_CRC_GPOLYHL_CLR(v) (HW_CRC_GPOLYHL_WR(HW_CRC_GPOLYHL_RD() & ~(v))) +#define HW_CRC_GPOLYHL_TOG(v) (HW_CRC_GPOLYHL_WR(HW_CRC_GPOLYHL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_GPOLYHL bitfields + */ + +/*! + * @name Register CRC_GPOLYHL, field GPOLYHL[7:0] (RW) + */ +//@{ +#define BP_CRC_GPOLYHL_GPOLYHL (0U) //!< Bit position for CRC_GPOLYHL_GPOLYHL. +#define BM_CRC_GPOLYHL_GPOLYHL (0xFFU) //!< Bit mask for CRC_GPOLYHL_GPOLYHL. +#define BS_CRC_GPOLYHL_GPOLYHL (8U) //!< Bit field size in bits for CRC_GPOLYHL_GPOLYHL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_GPOLYHL_GPOLYHL field. +#define BR_CRC_GPOLYHL_GPOLYHL (HW_CRC_GPOLYHL.U) +#endif + +//! @brief Format value for bitfield CRC_GPOLYHL_GPOLYHL. +#define BF_CRC_GPOLYHL_GPOLYHL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_GPOLYHL_GPOLYHL), uint8_t) & BM_CRC_GPOLYHL_GPOLYHL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPOLYHL field to a new value. +#define BW_CRC_GPOLYHL_GPOLYHL(v) (HW_CRC_GPOLYHL_WR(v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_GPOLYHU - CRC_GPOLYHU register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_GPOLYHU - CRC_GPOLYHU register. (RW) + * + * Reset value: 0xFFU + */ +typedef union _hw_crc_gpolyhu +{ + uint8_t U; + struct _hw_crc_gpolyhu_bitfields + { + uint8_t GPOLYHU : 8; //!< [7:0] POLYHU stores the fourth 8 bits of + //! the 32 bit CRC + } B; +} hw_crc_gpolyhu_t; +#endif + +/*! + * @name Constants and macros for entire CRC_GPOLYHU register + */ +//@{ +#define HW_CRC_GPOLYHU_ADDR (REGS_CRC_BASE + 0x7U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_GPOLYHU (*(__IO hw_crc_gpolyhu_t *) HW_CRC_GPOLYHU_ADDR) +#define HW_CRC_GPOLYHU_RD() (HW_CRC_GPOLYHU.U) +#define HW_CRC_GPOLYHU_WR(v) (HW_CRC_GPOLYHU.U = (v)) +#define HW_CRC_GPOLYHU_SET(v) (HW_CRC_GPOLYHU_WR(HW_CRC_GPOLYHU_RD() | (v))) +#define HW_CRC_GPOLYHU_CLR(v) (HW_CRC_GPOLYHU_WR(HW_CRC_GPOLYHU_RD() & ~(v))) +#define HW_CRC_GPOLYHU_TOG(v) (HW_CRC_GPOLYHU_WR(HW_CRC_GPOLYHU_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_GPOLYHU bitfields + */ + +/*! + * @name Register CRC_GPOLYHU, field GPOLYHU[7:0] (RW) + */ +//@{ +#define BP_CRC_GPOLYHU_GPOLYHU (0U) //!< Bit position for CRC_GPOLYHU_GPOLYHU. +#define BM_CRC_GPOLYHU_GPOLYHU (0xFFU) //!< Bit mask for CRC_GPOLYHU_GPOLYHU. +#define BS_CRC_GPOLYHU_GPOLYHU (8U) //!< Bit field size in bits for CRC_GPOLYHU_GPOLYHU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_GPOLYHU_GPOLYHU field. +#define BR_CRC_GPOLYHU_GPOLYHU (HW_CRC_GPOLYHU.U) +#endif + +//! @brief Format value for bitfield CRC_GPOLYHU_GPOLYHU. +#define BF_CRC_GPOLYHU_GPOLYHU(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_GPOLYHU_GPOLYHU), uint8_t) & BM_CRC_GPOLYHU_GPOLYHU) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPOLYHU field to a new value. +#define BW_CRC_GPOLYHU_GPOLYHU(v) (HW_CRC_GPOLYHU_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_CRC_CTRL - CRC Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_CTRL - CRC Control register (RW) + * + * Reset value: 0x00000000U + * + * This register controls the configuration and working of the CRC module. + * Appropriate bits must be set before starting a new CRC calculation. A new CRC + * calculation is initialized by asserting CTRL[WAS] and then writing the seed into + * the CRC data register. + */ +typedef union _hw_crc_ctrl +{ + uint32_t U; + struct _hw_crc_ctrl_bitfields + { + uint32_t RESERVED0 : 24; //!< [23:0] + uint32_t TCRC : 1; //!< [24] + uint32_t WAS : 1; //!< [25] Write CRC Data Register As Seed + uint32_t FXOR : 1; //!< [26] Complement Read Of CRC Data Register + uint32_t RESERVED1 : 1; //!< [27] + uint32_t TOTR : 2; //!< [29:28] Type Of Transpose For Read + uint32_t TOT : 2; //!< [31:30] Type Of Transpose For Writes + } B; +} hw_crc_ctrl_t; +#endif + +/*! + * @name Constants and macros for entire CRC_CTRL register + */ +//@{ +#define HW_CRC_CTRL_ADDR (REGS_CRC_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_CTRL (*(__IO hw_crc_ctrl_t *) HW_CRC_CTRL_ADDR) +#define HW_CRC_CTRL_RD() (HW_CRC_CTRL.U) +#define HW_CRC_CTRL_WR(v) (HW_CRC_CTRL.U = (v)) +#define HW_CRC_CTRL_SET(v) (HW_CRC_CTRL_WR(HW_CRC_CTRL_RD() | (v))) +#define HW_CRC_CTRL_CLR(v) (HW_CRC_CTRL_WR(HW_CRC_CTRL_RD() & ~(v))) +#define HW_CRC_CTRL_TOG(v) (HW_CRC_CTRL_WR(HW_CRC_CTRL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_CTRL bitfields + */ + +/*! + * @name Register CRC_CTRL, field TCRC[24] (RW) + * + * Width of CRC protocol. + * + * Values: + * - 0 - 16-bit CRC protocol. + * - 1 - 32-bit CRC protocol. + */ +//@{ +#define BP_CRC_CTRL_TCRC (24U) //!< Bit position for CRC_CTRL_TCRC. +#define BM_CRC_CTRL_TCRC (0x01000000U) //!< Bit mask for CRC_CTRL_TCRC. +#define BS_CRC_CTRL_TCRC (1U) //!< Bit field size in bits for CRC_CTRL_TCRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRL_TCRC field. +#define BR_CRC_CTRL_TCRC (BITBAND_ACCESS32(HW_CRC_CTRL_ADDR, BP_CRC_CTRL_TCRC)) +#endif + +//! @brief Format value for bitfield CRC_CTRL_TCRC. +#define BF_CRC_CTRL_TCRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_CTRL_TCRC), uint32_t) & BM_CRC_CTRL_TCRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCRC field to a new value. +#define BW_CRC_CTRL_TCRC(v) (BITBAND_ACCESS32(HW_CRC_CTRL_ADDR, BP_CRC_CTRL_TCRC) = (v)) +#endif +//@} + +/*! + * @name Register CRC_CTRL, field WAS[25] (RW) + * + * When asserted, a value written to the CRC data register is considered a seed + * value. When deasserted, a value written to the CRC data register is taken as + * data for CRC computation. + * + * Values: + * - 0 - Writes to the CRC data register are data values. + * - 1 - Writes to the CRC data register are seed values. + */ +//@{ +#define BP_CRC_CTRL_WAS (25U) //!< Bit position for CRC_CTRL_WAS. +#define BM_CRC_CTRL_WAS (0x02000000U) //!< Bit mask for CRC_CTRL_WAS. +#define BS_CRC_CTRL_WAS (1U) //!< Bit field size in bits for CRC_CTRL_WAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRL_WAS field. +#define BR_CRC_CTRL_WAS (BITBAND_ACCESS32(HW_CRC_CTRL_ADDR, BP_CRC_CTRL_WAS)) +#endif + +//! @brief Format value for bitfield CRC_CTRL_WAS. +#define BF_CRC_CTRL_WAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_CTRL_WAS), uint32_t) & BM_CRC_CTRL_WAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WAS field to a new value. +#define BW_CRC_CTRL_WAS(v) (BITBAND_ACCESS32(HW_CRC_CTRL_ADDR, BP_CRC_CTRL_WAS) = (v)) +#endif +//@} + +/*! + * @name Register CRC_CTRL, field FXOR[26] (RW) + * + * Some CRC protocols require the final checksum to be XORed with 0xFFFFFFFF or + * 0xFFFF. Asserting this bit enables on the fly complementing of read data. + * + * Values: + * - 0 - No XOR on reading. + * - 1 - Invert or complement the read value of the CRC Data register. + */ +//@{ +#define BP_CRC_CTRL_FXOR (26U) //!< Bit position for CRC_CTRL_FXOR. +#define BM_CRC_CTRL_FXOR (0x04000000U) //!< Bit mask for CRC_CTRL_FXOR. +#define BS_CRC_CTRL_FXOR (1U) //!< Bit field size in bits for CRC_CTRL_FXOR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRL_FXOR field. +#define BR_CRC_CTRL_FXOR (BITBAND_ACCESS32(HW_CRC_CTRL_ADDR, BP_CRC_CTRL_FXOR)) +#endif + +//! @brief Format value for bitfield CRC_CTRL_FXOR. +#define BF_CRC_CTRL_FXOR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_CTRL_FXOR), uint32_t) & BM_CRC_CTRL_FXOR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FXOR field to a new value. +#define BW_CRC_CTRL_FXOR(v) (BITBAND_ACCESS32(HW_CRC_CTRL_ADDR, BP_CRC_CTRL_FXOR) = (v)) +#endif +//@} + +/*! + * @name Register CRC_CTRL, field TOTR[29:28] (RW) + * + * Identifies the transpose configuration of the value read from the CRC Data + * register. See the description of the transpose feature for the available + * transpose options. + * + * Values: + * - 00 - No transposition. + * - 01 - Bits in bytes are transposed; bytes are not transposed. + * - 10 - Both bits in bytes and bytes are transposed. + * - 11 - Only bytes are transposed; no bits in a byte are transposed. + */ +//@{ +#define BP_CRC_CTRL_TOTR (28U) //!< Bit position for CRC_CTRL_TOTR. +#define BM_CRC_CTRL_TOTR (0x30000000U) //!< Bit mask for CRC_CTRL_TOTR. +#define BS_CRC_CTRL_TOTR (2U) //!< Bit field size in bits for CRC_CTRL_TOTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRL_TOTR field. +#define BR_CRC_CTRL_TOTR (HW_CRC_CTRL.B.TOTR) +#endif + +//! @brief Format value for bitfield CRC_CTRL_TOTR. +#define BF_CRC_CTRL_TOTR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_CTRL_TOTR), uint32_t) & BM_CRC_CTRL_TOTR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOTR field to a new value. +#define BW_CRC_CTRL_TOTR(v) (HW_CRC_CTRL_WR((HW_CRC_CTRL_RD() & ~BM_CRC_CTRL_TOTR) | BF_CRC_CTRL_TOTR(v))) +#endif +//@} + +/*! + * @name Register CRC_CTRL, field TOT[31:30] (RW) + * + * Defines the transpose configuration of the data written to the CRC data + * register. See the description of the transpose feature for the available transpose + * options. + * + * Values: + * - 00 - No transposition. + * - 01 - Bits in bytes are transposed; bytes are not transposed. + * - 10 - Both bits in bytes and bytes are transposed. + * - 11 - Only bytes are transposed; no bits in a byte are transposed. + */ +//@{ +#define BP_CRC_CTRL_TOT (30U) //!< Bit position for CRC_CTRL_TOT. +#define BM_CRC_CTRL_TOT (0xC0000000U) //!< Bit mask for CRC_CTRL_TOT. +#define BS_CRC_CTRL_TOT (2U) //!< Bit field size in bits for CRC_CTRL_TOT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRL_TOT field. +#define BR_CRC_CTRL_TOT (HW_CRC_CTRL.B.TOT) +#endif + +//! @brief Format value for bitfield CRC_CTRL_TOT. +#define BF_CRC_CTRL_TOT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CRC_CTRL_TOT), uint32_t) & BM_CRC_CTRL_TOT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOT field to a new value. +#define BW_CRC_CTRL_TOT(v) (HW_CRC_CTRL_WR((HW_CRC_CTRL_RD() & ~BM_CRC_CTRL_TOT) | BF_CRC_CTRL_TOT(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_CRC_CTRLHU - CRC_CTRLHU register. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_CRC_CTRLHU - CRC_CTRLHU register. (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_crc_ctrlhu +{ + uint8_t U; + struct _hw_crc_ctrlhu_bitfields + { + uint8_t TCRC : 1; //!< [0] + uint8_t WAS : 1; //!< [1] + uint8_t FXOR : 1; //!< [2] + uint8_t RESERVED0 : 1; //!< [3] + uint8_t TOTR : 2; //!< [5:4] + uint8_t TOT : 2; //!< [7:6] + } B; +} hw_crc_ctrlhu_t; +#endif + +/*! + * @name Constants and macros for entire CRC_CTRLHU register + */ +//@{ +#define HW_CRC_CTRLHU_ADDR (REGS_CRC_BASE + 0xBU) + +#ifndef __LANGUAGE_ASM__ +#define HW_CRC_CTRLHU (*(__IO hw_crc_ctrlhu_t *) HW_CRC_CTRLHU_ADDR) +#define HW_CRC_CTRLHU_RD() (HW_CRC_CTRLHU.U) +#define HW_CRC_CTRLHU_WR(v) (HW_CRC_CTRLHU.U = (v)) +#define HW_CRC_CTRLHU_SET(v) (HW_CRC_CTRLHU_WR(HW_CRC_CTRLHU_RD() | (v))) +#define HW_CRC_CTRLHU_CLR(v) (HW_CRC_CTRLHU_WR(HW_CRC_CTRLHU_RD() & ~(v))) +#define HW_CRC_CTRLHU_TOG(v) (HW_CRC_CTRLHU_WR(HW_CRC_CTRLHU_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual CRC_CTRLHU bitfields + */ + +/*! + * @name Register CRC_CTRLHU, field TCRC[0] (RW) + * + * Values: + * - 0 - 16-bit CRC protocol. + * - 1 - 32-bit CRC protocol. + */ +//@{ +#define BP_CRC_CTRLHU_TCRC (0U) //!< Bit position for CRC_CTRLHU_TCRC. +#define BM_CRC_CTRLHU_TCRC (0x01U) //!< Bit mask for CRC_CTRLHU_TCRC. +#define BS_CRC_CTRLHU_TCRC (1U) //!< Bit field size in bits for CRC_CTRLHU_TCRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRLHU_TCRC field. +#define BR_CRC_CTRLHU_TCRC (BITBAND_ACCESS8(HW_CRC_CTRLHU_ADDR, BP_CRC_CTRLHU_TCRC)) +#endif + +//! @brief Format value for bitfield CRC_CTRLHU_TCRC. +#define BF_CRC_CTRLHU_TCRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_CTRLHU_TCRC), uint8_t) & BM_CRC_CTRLHU_TCRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCRC field to a new value. +#define BW_CRC_CTRLHU_TCRC(v) (BITBAND_ACCESS8(HW_CRC_CTRLHU_ADDR, BP_CRC_CTRLHU_TCRC) = (v)) +#endif +//@} + +/*! + * @name Register CRC_CTRLHU, field WAS[1] (RW) + * + * Values: + * - 0 - Writes to CRC data register are data values. + * - 1 - Writes to CRC data reguster are seed values. + */ +//@{ +#define BP_CRC_CTRLHU_WAS (1U) //!< Bit position for CRC_CTRLHU_WAS. +#define BM_CRC_CTRLHU_WAS (0x02U) //!< Bit mask for CRC_CTRLHU_WAS. +#define BS_CRC_CTRLHU_WAS (1U) //!< Bit field size in bits for CRC_CTRLHU_WAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRLHU_WAS field. +#define BR_CRC_CTRLHU_WAS (BITBAND_ACCESS8(HW_CRC_CTRLHU_ADDR, BP_CRC_CTRLHU_WAS)) +#endif + +//! @brief Format value for bitfield CRC_CTRLHU_WAS. +#define BF_CRC_CTRLHU_WAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_CTRLHU_WAS), uint8_t) & BM_CRC_CTRLHU_WAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WAS field to a new value. +#define BW_CRC_CTRLHU_WAS(v) (BITBAND_ACCESS8(HW_CRC_CTRLHU_ADDR, BP_CRC_CTRLHU_WAS) = (v)) +#endif +//@} + +/*! + * @name Register CRC_CTRLHU, field FXOR[2] (RW) + * + * Values: + * - 0 - No XOR on reading. + * - 1 - Invert or complement the read value of CRC data register. + */ +//@{ +#define BP_CRC_CTRLHU_FXOR (2U) //!< Bit position for CRC_CTRLHU_FXOR. +#define BM_CRC_CTRLHU_FXOR (0x04U) //!< Bit mask for CRC_CTRLHU_FXOR. +#define BS_CRC_CTRLHU_FXOR (1U) //!< Bit field size in bits for CRC_CTRLHU_FXOR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRLHU_FXOR field. +#define BR_CRC_CTRLHU_FXOR (BITBAND_ACCESS8(HW_CRC_CTRLHU_ADDR, BP_CRC_CTRLHU_FXOR)) +#endif + +//! @brief Format value for bitfield CRC_CTRLHU_FXOR. +#define BF_CRC_CTRLHU_FXOR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_CTRLHU_FXOR), uint8_t) & BM_CRC_CTRLHU_FXOR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FXOR field to a new value. +#define BW_CRC_CTRLHU_FXOR(v) (BITBAND_ACCESS8(HW_CRC_CTRLHU_ADDR, BP_CRC_CTRLHU_FXOR) = (v)) +#endif +//@} + +/*! + * @name Register CRC_CTRLHU, field TOTR[5:4] (RW) + * + * Values: + * - 00 - No Transposition. + * - 01 - Bits in bytes are transposed, bytes are not transposed. + * - 10 - Both bits in bytes and bytes are transposed. + * - 11 - Only bytes are transposed; no bits in a byte are transposed. + */ +//@{ +#define BP_CRC_CTRLHU_TOTR (4U) //!< Bit position for CRC_CTRLHU_TOTR. +#define BM_CRC_CTRLHU_TOTR (0x30U) //!< Bit mask for CRC_CTRLHU_TOTR. +#define BS_CRC_CTRLHU_TOTR (2U) //!< Bit field size in bits for CRC_CTRLHU_TOTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRLHU_TOTR field. +#define BR_CRC_CTRLHU_TOTR (HW_CRC_CTRLHU.B.TOTR) +#endif + +//! @brief Format value for bitfield CRC_CTRLHU_TOTR. +#define BF_CRC_CTRLHU_TOTR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_CTRLHU_TOTR), uint8_t) & BM_CRC_CTRLHU_TOTR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOTR field to a new value. +#define BW_CRC_CTRLHU_TOTR(v) (HW_CRC_CTRLHU_WR((HW_CRC_CTRLHU_RD() & ~BM_CRC_CTRLHU_TOTR) | BF_CRC_CTRLHU_TOTR(v))) +#endif +//@} + +/*! + * @name Register CRC_CTRLHU, field TOT[7:6] (RW) + * + * Values: + * - 00 - No Transposition. + * - 01 - Bits in bytes are transposed, bytes are not transposed. + * - 10 - Both bits in bytes and bytes are transposed. + * - 11 - Only bytes are transposed; no bits in a byte are transposed. + */ +//@{ +#define BP_CRC_CTRLHU_TOT (6U) //!< Bit position for CRC_CTRLHU_TOT. +#define BM_CRC_CTRLHU_TOT (0xC0U) //!< Bit mask for CRC_CTRLHU_TOT. +#define BS_CRC_CTRLHU_TOT (2U) //!< Bit field size in bits for CRC_CTRLHU_TOT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the CRC_CTRLHU_TOT field. +#define BR_CRC_CTRLHU_TOT (HW_CRC_CTRLHU.B.TOT) +#endif + +//! @brief Format value for bitfield CRC_CTRLHU_TOT. +#define BF_CRC_CTRLHU_TOT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_CRC_CTRLHU_TOT), uint8_t) & BM_CRC_CTRLHU_TOT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOT field to a new value. +#define BW_CRC_CTRLHU_TOT(v) (HW_CRC_CTRLHU_WR((HW_CRC_CTRLHU_RD() & ~BM_CRC_CTRLHU_TOT) | BF_CRC_CTRLHU_TOT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_crc_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All CRC module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_crc +{ + union { + struct { + __IO hw_crc_datal_t DATAL; //!< [0x0] CRC_DATAL register. + __IO hw_crc_datah_t DATAH; //!< [0x2] CRC_DATAH register. + } ACCESS16BIT; + struct { + __IO hw_crc_datall_t DATALL; //!< [0x0] CRC_DATALL register. + __IO hw_crc_datalu_t DATALU; //!< [0x1] CRC_DATALU register. + __IO hw_crc_datahl_t DATAHL; //!< [0x2] CRC_DATAHL register. + __IO hw_crc_datahu_t DATAHU; //!< [0x3] CRC_DATAHU register. + } ACCESS8BIT; + __IO hw_crc_data_t DATA; //!< [0x0] CRC Data register + }; + union { + __IO hw_crc_gpoly_t GPOLY; //!< [0x4] CRC Polynomial register + struct { + __IO hw_crc_gpolyl_t GPOLYL; //!< [0x4] CRC_GPOLYL register. + __IO hw_crc_gpolyh_t GPOLYH; //!< [0x6] CRC_GPOLYH register. + } GPOLY_ACCESS16BIT; + struct { + __IO hw_crc_gpolyll_t GPOLYLL; //!< [0x4] CRC_GPOLYLL register. + __IO hw_crc_gpolylu_t GPOLYLU; //!< [0x5] CRC_GPOLYLU register. + __IO hw_crc_gpolyhl_t GPOLYHL; //!< [0x6] CRC_GPOLYHL register. + __IO hw_crc_gpolyhu_t GPOLYHU; //!< [0x7] CRC_GPOLYHU register. + } GPOLY_ACCESS8BIT; + }; + union { + __IO hw_crc_ctrl_t CTRL; //!< [0x8] CRC Control register + struct { + uint8_t _reserved0[3]; + __IO hw_crc_ctrlhu_t CTRLHU; //!< [0xB] CRC_CTRLHU register. + } CTRL_ACCESS8BIT; + }; +} hw_crc_t; +#pragma pack() + +//! @brief Macro to access all CRC registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_CRC</code>. +#define HW_CRC (*(hw_crc_t *) REGS_CRC_BASE) +#endif + +#endif // __HW_CRC_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_dac.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,879 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_DAC_REGISTERS_H__ +#define __HW_DAC_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 DAC + * + * 12-Bit Digital-to-Analog Converter + * + * Registers defined in this header file: + * - HW_DAC_DATnL - DAC Data Low Register + * - HW_DAC_DATnH - DAC Data High Register + * - HW_DAC_SR - DAC Status Register + * - HW_DAC_C0 - DAC Control Register + * - HW_DAC_C1 - DAC Control Register 1 + * - HW_DAC_C2 - DAC Control Register 2 + * + * - hw_dac_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_DAC_BASE +#define HW_DAC_INSTANCE_COUNT (2U) //!< Number of instances of the DAC module. +#define HW_DAC0 (0U) //!< Instance number for DAC0. +#define HW_DAC1 (1U) //!< Instance number for DAC1. +#define REGS_DAC0_BASE (0x400CC000U) //!< Base address for DAC0. +#define REGS_DAC1_BASE (0x400CD000U) //!< Base address for DAC1. + +//! @brief Table of base addresses for DAC instances. +static const uint32_t __g_regs_DAC_base_addresses[] = { + REGS_DAC0_BASE, + REGS_DAC1_BASE, + }; + +//! @brief Get the base address of DAC by instance number. +//! @param x DAC instance number, from 0 through 1. +#define REGS_DAC_BASE(x) (__g_regs_DAC_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of DAC. +#define REGS_DAC_INSTANCE(b) ((b) == REGS_DAC0_BASE ? HW_DAC0 : (b) == REGS_DAC1_BASE ? HW_DAC1 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DAC_DATnL - DAC Data Low Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DAC_DATnL - DAC Data Low Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_dac_datnl +{ + uint8_t U; + struct _hw_dac_datnl_bitfields + { + uint8_t DATA0 : 8; //!< [7:0] + } B; +} hw_dac_datnl_t; +#endif + +/*! + * @name Constants and macros for entire DAC_DATnL register + */ +//@{ +#define HW_DAC_DATnL_COUNT (16U) + +#define HW_DAC_DATnL_ADDR(x, n) (REGS_DAC_BASE(x) + 0x0U + (0x2U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DAC_DATnL(x, n) (*(__IO hw_dac_datnl_t *) HW_DAC_DATnL_ADDR(x, n)) +#define HW_DAC_DATnL_RD(x, n) (HW_DAC_DATnL(x, n).U) +#define HW_DAC_DATnL_WR(x, n, v) (HW_DAC_DATnL(x, n).U = (v)) +#define HW_DAC_DATnL_SET(x, n, v) (HW_DAC_DATnL_WR(x, n, HW_DAC_DATnL_RD(x, n) | (v))) +#define HW_DAC_DATnL_CLR(x, n, v) (HW_DAC_DATnL_WR(x, n, HW_DAC_DATnL_RD(x, n) & ~(v))) +#define HW_DAC_DATnL_TOG(x, n, v) (HW_DAC_DATnL_WR(x, n, HW_DAC_DATnL_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DAC_DATnL bitfields + */ + +/*! + * @name Register DAC_DATnL, field DATA0[7:0] (RW) + * + * When the DAC buffer is not enabled, DATA[11:0] controls the output voltage + * based on the following formula: V out = V in * (1 + DACDAT0[11:0])/4096 When the + * DAC buffer is enabled, DATA is mapped to the 16-word buffer. + */ +//@{ +#define BP_DAC_DATnL_DATA0 (0U) //!< Bit position for DAC_DATnL_DATA0. +#define BM_DAC_DATnL_DATA0 (0xFFU) //!< Bit mask for DAC_DATnL_DATA0. +#define BS_DAC_DATnL_DATA0 (8U) //!< Bit field size in bits for DAC_DATnL_DATA0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_DATnL_DATA0 field. +#define BR_DAC_DATnL_DATA0(x, n) (HW_DAC_DATnL(x, n).U) +#endif + +//! @brief Format value for bitfield DAC_DATnL_DATA0. +#define BF_DAC_DATnL_DATA0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_DATnL_DATA0), uint8_t) & BM_DAC_DATnL_DATA0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA0 field to a new value. +#define BW_DAC_DATnL_DATA0(x, n, v) (HW_DAC_DATnL_WR(x, n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DAC_DATnH - DAC Data High Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DAC_DATnH - DAC Data High Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_dac_datnh +{ + uint8_t U; + struct _hw_dac_datnh_bitfields + { + uint8_t DATA1 : 4; //!< [3:0] + uint8_t RESERVED0 : 4; //!< [7:4] + } B; +} hw_dac_datnh_t; +#endif + +/*! + * @name Constants and macros for entire DAC_DATnH register + */ +//@{ +#define HW_DAC_DATnH_COUNT (16U) + +#define HW_DAC_DATnH_ADDR(x, n) (REGS_DAC_BASE(x) + 0x1U + (0x2U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DAC_DATnH(x, n) (*(__IO hw_dac_datnh_t *) HW_DAC_DATnH_ADDR(x, n)) +#define HW_DAC_DATnH_RD(x, n) (HW_DAC_DATnH(x, n).U) +#define HW_DAC_DATnH_WR(x, n, v) (HW_DAC_DATnH(x, n).U = (v)) +#define HW_DAC_DATnH_SET(x, n, v) (HW_DAC_DATnH_WR(x, n, HW_DAC_DATnH_RD(x, n) | (v))) +#define HW_DAC_DATnH_CLR(x, n, v) (HW_DAC_DATnH_WR(x, n, HW_DAC_DATnH_RD(x, n) & ~(v))) +#define HW_DAC_DATnH_TOG(x, n, v) (HW_DAC_DATnH_WR(x, n, HW_DAC_DATnH_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DAC_DATnH bitfields + */ + +/*! + * @name Register DAC_DATnH, field DATA1[3:0] (RW) + * + * When the DAC Buffer is not enabled, DATA[11:0] controls the output voltage + * based on the following formula. V out = V in * (1 + DACDAT0[11:0])/4096 When the + * DAC buffer is enabled, DATA[11:0] is mapped to the 16-word buffer. + */ +//@{ +#define BP_DAC_DATnH_DATA1 (0U) //!< Bit position for DAC_DATnH_DATA1. +#define BM_DAC_DATnH_DATA1 (0x0FU) //!< Bit mask for DAC_DATnH_DATA1. +#define BS_DAC_DATnH_DATA1 (4U) //!< Bit field size in bits for DAC_DATnH_DATA1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_DATnH_DATA1 field. +#define BR_DAC_DATnH_DATA1(x, n) (HW_DAC_DATnH(x, n).B.DATA1) +#endif + +//! @brief Format value for bitfield DAC_DATnH_DATA1. +#define BF_DAC_DATnH_DATA1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_DATnH_DATA1), uint8_t) & BM_DAC_DATnH_DATA1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA1 field to a new value. +#define BW_DAC_DATnH_DATA1(x, n, v) (HW_DAC_DATnH_WR(x, n, (HW_DAC_DATnH_RD(x, n) & ~BM_DAC_DATnH_DATA1) | BF_DAC_DATnH_DATA1(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DAC_SR - DAC Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DAC_SR - DAC Status Register (RW) + * + * Reset value: 0x02U + * + * If DMA is enabled, the flags can be cleared automatically by DMA when the DMA + * request is done. Writing 0 to a field clears it whereas writing 1 has no + * effect. After reset, DACBFRPTF is set and can be cleared by software, if needed. + * The flags are set only when the data buffer status is changed. Do not use + * 32/16-bit accesses to this register. + */ +typedef union _hw_dac_sr +{ + uint8_t U; + struct _hw_dac_sr_bitfields + { + uint8_t DACBFRPBF : 1; //!< [0] DAC Buffer Read Pointer Bottom + //! Position Flag + uint8_t DACBFRPTF : 1; //!< [1] DAC Buffer Read Pointer Top Position + //! Flag + uint8_t DACBFWMF : 1; //!< [2] DAC Buffer Watermark Flag + uint8_t RESERVED0 : 5; //!< [7:3] + } B; +} hw_dac_sr_t; +#endif + +/*! + * @name Constants and macros for entire DAC_SR register + */ +//@{ +#define HW_DAC_SR_ADDR(x) (REGS_DAC_BASE(x) + 0x20U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DAC_SR(x) (*(__IO hw_dac_sr_t *) HW_DAC_SR_ADDR(x)) +#define HW_DAC_SR_RD(x) (HW_DAC_SR(x).U) +#define HW_DAC_SR_WR(x, v) (HW_DAC_SR(x).U = (v)) +#define HW_DAC_SR_SET(x, v) (HW_DAC_SR_WR(x, HW_DAC_SR_RD(x) | (v))) +#define HW_DAC_SR_CLR(x, v) (HW_DAC_SR_WR(x, HW_DAC_SR_RD(x) & ~(v))) +#define HW_DAC_SR_TOG(x, v) (HW_DAC_SR_WR(x, HW_DAC_SR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DAC_SR bitfields + */ + +/*! + * @name Register DAC_SR, field DACBFRPBF[0] (RW) + * + * Values: + * - 0 - The DAC buffer read pointer is not equal to C2[DACBFUP]. + * - 1 - The DAC buffer read pointer is equal to C2[DACBFUP]. + */ +//@{ +#define BP_DAC_SR_DACBFRPBF (0U) //!< Bit position for DAC_SR_DACBFRPBF. +#define BM_DAC_SR_DACBFRPBF (0x01U) //!< Bit mask for DAC_SR_DACBFRPBF. +#define BS_DAC_SR_DACBFRPBF (1U) //!< Bit field size in bits for DAC_SR_DACBFRPBF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_SR_DACBFRPBF field. +#define BR_DAC_SR_DACBFRPBF(x) (BITBAND_ACCESS8(HW_DAC_SR_ADDR(x), BP_DAC_SR_DACBFRPBF)) +#endif + +//! @brief Format value for bitfield DAC_SR_DACBFRPBF. +#define BF_DAC_SR_DACBFRPBF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_SR_DACBFRPBF), uint8_t) & BM_DAC_SR_DACBFRPBF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBFRPBF field to a new value. +#define BW_DAC_SR_DACBFRPBF(x, v) (BITBAND_ACCESS8(HW_DAC_SR_ADDR(x), BP_DAC_SR_DACBFRPBF) = (v)) +#endif +//@} + +/*! + * @name Register DAC_SR, field DACBFRPTF[1] (RW) + * + * Values: + * - 0 - The DAC buffer read pointer is not zero. + * - 1 - The DAC buffer read pointer is zero. + */ +//@{ +#define BP_DAC_SR_DACBFRPTF (1U) //!< Bit position for DAC_SR_DACBFRPTF. +#define BM_DAC_SR_DACBFRPTF (0x02U) //!< Bit mask for DAC_SR_DACBFRPTF. +#define BS_DAC_SR_DACBFRPTF (1U) //!< Bit field size in bits for DAC_SR_DACBFRPTF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_SR_DACBFRPTF field. +#define BR_DAC_SR_DACBFRPTF(x) (BITBAND_ACCESS8(HW_DAC_SR_ADDR(x), BP_DAC_SR_DACBFRPTF)) +#endif + +//! @brief Format value for bitfield DAC_SR_DACBFRPTF. +#define BF_DAC_SR_DACBFRPTF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_SR_DACBFRPTF), uint8_t) & BM_DAC_SR_DACBFRPTF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBFRPTF field to a new value. +#define BW_DAC_SR_DACBFRPTF(x, v) (BITBAND_ACCESS8(HW_DAC_SR_ADDR(x), BP_DAC_SR_DACBFRPTF) = (v)) +#endif +//@} + +/*! + * @name Register DAC_SR, field DACBFWMF[2] (RW) + * + * Values: + * - 0 - The DAC buffer read pointer has not reached the watermark level. + * - 1 - The DAC buffer read pointer has reached the watermark level. + */ +//@{ +#define BP_DAC_SR_DACBFWMF (2U) //!< Bit position for DAC_SR_DACBFWMF. +#define BM_DAC_SR_DACBFWMF (0x04U) //!< Bit mask for DAC_SR_DACBFWMF. +#define BS_DAC_SR_DACBFWMF (1U) //!< Bit field size in bits for DAC_SR_DACBFWMF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_SR_DACBFWMF field. +#define BR_DAC_SR_DACBFWMF(x) (BITBAND_ACCESS8(HW_DAC_SR_ADDR(x), BP_DAC_SR_DACBFWMF)) +#endif + +//! @brief Format value for bitfield DAC_SR_DACBFWMF. +#define BF_DAC_SR_DACBFWMF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_SR_DACBFWMF), uint8_t) & BM_DAC_SR_DACBFWMF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBFWMF field to a new value. +#define BW_DAC_SR_DACBFWMF(x, v) (BITBAND_ACCESS8(HW_DAC_SR_ADDR(x), BP_DAC_SR_DACBFWMF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DAC_C0 - DAC Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DAC_C0 - DAC Control Register (RW) + * + * Reset value: 0x00U + * + * Do not use 32- or 16-bit accesses to this register. + */ +typedef union _hw_dac_c0 +{ + uint8_t U; + struct _hw_dac_c0_bitfields + { + uint8_t DACBBIEN : 1; //!< [0] DAC Buffer Read Pointer Bottom Flag + //! Interrupt Enable + uint8_t DACBTIEN : 1; //!< [1] DAC Buffer Read Pointer Top Flag + //! Interrupt Enable + uint8_t DACBWIEN : 1; //!< [2] DAC Buffer Watermark Interrupt Enable + uint8_t LPEN : 1; //!< [3] DAC Low Power Control + uint8_t DACSWTRG : 1; //!< [4] DAC Software Trigger + uint8_t DACTRGSEL : 1; //!< [5] DAC Trigger Select + uint8_t DACRFS : 1; //!< [6] DAC Reference Select + uint8_t DACEN : 1; //!< [7] DAC Enable + } B; +} hw_dac_c0_t; +#endif + +/*! + * @name Constants and macros for entire DAC_C0 register + */ +//@{ +#define HW_DAC_C0_ADDR(x) (REGS_DAC_BASE(x) + 0x21U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DAC_C0(x) (*(__IO hw_dac_c0_t *) HW_DAC_C0_ADDR(x)) +#define HW_DAC_C0_RD(x) (HW_DAC_C0(x).U) +#define HW_DAC_C0_WR(x, v) (HW_DAC_C0(x).U = (v)) +#define HW_DAC_C0_SET(x, v) (HW_DAC_C0_WR(x, HW_DAC_C0_RD(x) | (v))) +#define HW_DAC_C0_CLR(x, v) (HW_DAC_C0_WR(x, HW_DAC_C0_RD(x) & ~(v))) +#define HW_DAC_C0_TOG(x, v) (HW_DAC_C0_WR(x, HW_DAC_C0_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DAC_C0 bitfields + */ + +/*! + * @name Register DAC_C0, field DACBBIEN[0] (RW) + * + * Values: + * - 0 - The DAC buffer read pointer bottom flag interrupt is disabled. + * - 1 - The DAC buffer read pointer bottom flag interrupt is enabled. + */ +//@{ +#define BP_DAC_C0_DACBBIEN (0U) //!< Bit position for DAC_C0_DACBBIEN. +#define BM_DAC_C0_DACBBIEN (0x01U) //!< Bit mask for DAC_C0_DACBBIEN. +#define BS_DAC_C0_DACBBIEN (1U) //!< Bit field size in bits for DAC_C0_DACBBIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C0_DACBBIEN field. +#define BR_DAC_C0_DACBBIEN(x) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACBBIEN)) +#endif + +//! @brief Format value for bitfield DAC_C0_DACBBIEN. +#define BF_DAC_C0_DACBBIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C0_DACBBIEN), uint8_t) & BM_DAC_C0_DACBBIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBBIEN field to a new value. +#define BW_DAC_C0_DACBBIEN(x, v) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACBBIEN) = (v)) +#endif +//@} + +/*! + * @name Register DAC_C0, field DACBTIEN[1] (RW) + * + * Values: + * - 0 - The DAC buffer read pointer top flag interrupt is disabled. + * - 1 - The DAC buffer read pointer top flag interrupt is enabled. + */ +//@{ +#define BP_DAC_C0_DACBTIEN (1U) //!< Bit position for DAC_C0_DACBTIEN. +#define BM_DAC_C0_DACBTIEN (0x02U) //!< Bit mask for DAC_C0_DACBTIEN. +#define BS_DAC_C0_DACBTIEN (1U) //!< Bit field size in bits for DAC_C0_DACBTIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C0_DACBTIEN field. +#define BR_DAC_C0_DACBTIEN(x) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACBTIEN)) +#endif + +//! @brief Format value for bitfield DAC_C0_DACBTIEN. +#define BF_DAC_C0_DACBTIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C0_DACBTIEN), uint8_t) & BM_DAC_C0_DACBTIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBTIEN field to a new value. +#define BW_DAC_C0_DACBTIEN(x, v) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACBTIEN) = (v)) +#endif +//@} + +/*! + * @name Register DAC_C0, field DACBWIEN[2] (RW) + * + * Values: + * - 0 - The DAC buffer watermark interrupt is disabled. + * - 1 - The DAC buffer watermark interrupt is enabled. + */ +//@{ +#define BP_DAC_C0_DACBWIEN (2U) //!< Bit position for DAC_C0_DACBWIEN. +#define BM_DAC_C0_DACBWIEN (0x04U) //!< Bit mask for DAC_C0_DACBWIEN. +#define BS_DAC_C0_DACBWIEN (1U) //!< Bit field size in bits for DAC_C0_DACBWIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C0_DACBWIEN field. +#define BR_DAC_C0_DACBWIEN(x) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACBWIEN)) +#endif + +//! @brief Format value for bitfield DAC_C0_DACBWIEN. +#define BF_DAC_C0_DACBWIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C0_DACBWIEN), uint8_t) & BM_DAC_C0_DACBWIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBWIEN field to a new value. +#define BW_DAC_C0_DACBWIEN(x, v) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACBWIEN) = (v)) +#endif +//@} + +/*! + * @name Register DAC_C0, field LPEN[3] (RW) + * + * See the 12-bit DAC electrical characteristics of the device data sheet for + * details on the impact of the modes below. + * + * Values: + * - 0 - High-Power mode + * - 1 - Low-Power mode + */ +//@{ +#define BP_DAC_C0_LPEN (3U) //!< Bit position for DAC_C0_LPEN. +#define BM_DAC_C0_LPEN (0x08U) //!< Bit mask for DAC_C0_LPEN. +#define BS_DAC_C0_LPEN (1U) //!< Bit field size in bits for DAC_C0_LPEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C0_LPEN field. +#define BR_DAC_C0_LPEN(x) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_LPEN)) +#endif + +//! @brief Format value for bitfield DAC_C0_LPEN. +#define BF_DAC_C0_LPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C0_LPEN), uint8_t) & BM_DAC_C0_LPEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LPEN field to a new value. +#define BW_DAC_C0_LPEN(x, v) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_LPEN) = (v)) +#endif +//@} + +/*! + * @name Register DAC_C0, field DACSWTRG[4] (WORZ) + * + * Active high. This is a write-only field, which always reads 0. If DAC + * software trigger is selected and buffer is enabled, writing 1 to this field will + * advance the buffer read pointer once. + * + * Values: + * - 0 - The DAC soft trigger is not valid. + * - 1 - The DAC soft trigger is valid. + */ +//@{ +#define BP_DAC_C0_DACSWTRG (4U) //!< Bit position for DAC_C0_DACSWTRG. +#define BM_DAC_C0_DACSWTRG (0x10U) //!< Bit mask for DAC_C0_DACSWTRG. +#define BS_DAC_C0_DACSWTRG (1U) //!< Bit field size in bits for DAC_C0_DACSWTRG. + +//! @brief Format value for bitfield DAC_C0_DACSWTRG. +#define BF_DAC_C0_DACSWTRG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C0_DACSWTRG), uint8_t) & BM_DAC_C0_DACSWTRG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACSWTRG field to a new value. +#define BW_DAC_C0_DACSWTRG(x, v) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACSWTRG) = (v)) +#endif +//@} + +/*! + * @name Register DAC_C0, field DACTRGSEL[5] (RW) + * + * Values: + * - 0 - The DAC hardware trigger is selected. + * - 1 - The DAC software trigger is selected. + */ +//@{ +#define BP_DAC_C0_DACTRGSEL (5U) //!< Bit position for DAC_C0_DACTRGSEL. +#define BM_DAC_C0_DACTRGSEL (0x20U) //!< Bit mask for DAC_C0_DACTRGSEL. +#define BS_DAC_C0_DACTRGSEL (1U) //!< Bit field size in bits for DAC_C0_DACTRGSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C0_DACTRGSEL field. +#define BR_DAC_C0_DACTRGSEL(x) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACTRGSEL)) +#endif + +//! @brief Format value for bitfield DAC_C0_DACTRGSEL. +#define BF_DAC_C0_DACTRGSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C0_DACTRGSEL), uint8_t) & BM_DAC_C0_DACTRGSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACTRGSEL field to a new value. +#define BW_DAC_C0_DACTRGSEL(x, v) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACTRGSEL) = (v)) +#endif +//@} + +/*! + * @name Register DAC_C0, field DACRFS[6] (RW) + * + * Values: + * - 0 - The DAC selects DACREF_1 as the reference voltage. + * - 1 - The DAC selects DACREF_2 as the reference voltage. + */ +//@{ +#define BP_DAC_C0_DACRFS (6U) //!< Bit position for DAC_C0_DACRFS. +#define BM_DAC_C0_DACRFS (0x40U) //!< Bit mask for DAC_C0_DACRFS. +#define BS_DAC_C0_DACRFS (1U) //!< Bit field size in bits for DAC_C0_DACRFS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C0_DACRFS field. +#define BR_DAC_C0_DACRFS(x) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACRFS)) +#endif + +//! @brief Format value for bitfield DAC_C0_DACRFS. +#define BF_DAC_C0_DACRFS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C0_DACRFS), uint8_t) & BM_DAC_C0_DACRFS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACRFS field to a new value. +#define BW_DAC_C0_DACRFS(x, v) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACRFS) = (v)) +#endif +//@} + +/*! + * @name Register DAC_C0, field DACEN[7] (RW) + * + * Starts the Programmable Reference Generator operation. + * + * Values: + * - 0 - The DAC system is disabled. + * - 1 - The DAC system is enabled. + */ +//@{ +#define BP_DAC_C0_DACEN (7U) //!< Bit position for DAC_C0_DACEN. +#define BM_DAC_C0_DACEN (0x80U) //!< Bit mask for DAC_C0_DACEN. +#define BS_DAC_C0_DACEN (1U) //!< Bit field size in bits for DAC_C0_DACEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C0_DACEN field. +#define BR_DAC_C0_DACEN(x) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACEN)) +#endif + +//! @brief Format value for bitfield DAC_C0_DACEN. +#define BF_DAC_C0_DACEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C0_DACEN), uint8_t) & BM_DAC_C0_DACEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACEN field to a new value. +#define BW_DAC_C0_DACEN(x, v) (BITBAND_ACCESS8(HW_DAC_C0_ADDR(x), BP_DAC_C0_DACEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DAC_C1 - DAC Control Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DAC_C1 - DAC Control Register 1 (RW) + * + * Reset value: 0x00U + * + * Do not use 32- or 16-bit accesses to this register. + */ +typedef union _hw_dac_c1 +{ + uint8_t U; + struct _hw_dac_c1_bitfields + { + uint8_t DACBFEN : 1; //!< [0] DAC Buffer Enable + uint8_t DACBFMD : 2; //!< [2:1] DAC Buffer Work Mode Select + uint8_t DACBFWM : 2; //!< [4:3] DAC Buffer Watermark Select + uint8_t RESERVED0 : 2; //!< [6:5] + uint8_t DMAEN : 1; //!< [7] DMA Enable Select + } B; +} hw_dac_c1_t; +#endif + +/*! + * @name Constants and macros for entire DAC_C1 register + */ +//@{ +#define HW_DAC_C1_ADDR(x) (REGS_DAC_BASE(x) + 0x22U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DAC_C1(x) (*(__IO hw_dac_c1_t *) HW_DAC_C1_ADDR(x)) +#define HW_DAC_C1_RD(x) (HW_DAC_C1(x).U) +#define HW_DAC_C1_WR(x, v) (HW_DAC_C1(x).U = (v)) +#define HW_DAC_C1_SET(x, v) (HW_DAC_C1_WR(x, HW_DAC_C1_RD(x) | (v))) +#define HW_DAC_C1_CLR(x, v) (HW_DAC_C1_WR(x, HW_DAC_C1_RD(x) & ~(v))) +#define HW_DAC_C1_TOG(x, v) (HW_DAC_C1_WR(x, HW_DAC_C1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DAC_C1 bitfields + */ + +/*! + * @name Register DAC_C1, field DACBFEN[0] (RW) + * + * Values: + * - 0 - Buffer read pointer is disabled. The converted data is always the first + * word of the buffer. + * - 1 - Buffer read pointer is enabled. The converted data is the word that the + * read pointer points to. It means converted data can be from any word of + * the buffer. + */ +//@{ +#define BP_DAC_C1_DACBFEN (0U) //!< Bit position for DAC_C1_DACBFEN. +#define BM_DAC_C1_DACBFEN (0x01U) //!< Bit mask for DAC_C1_DACBFEN. +#define BS_DAC_C1_DACBFEN (1U) //!< Bit field size in bits for DAC_C1_DACBFEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C1_DACBFEN field. +#define BR_DAC_C1_DACBFEN(x) (BITBAND_ACCESS8(HW_DAC_C1_ADDR(x), BP_DAC_C1_DACBFEN)) +#endif + +//! @brief Format value for bitfield DAC_C1_DACBFEN. +#define BF_DAC_C1_DACBFEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C1_DACBFEN), uint8_t) & BM_DAC_C1_DACBFEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBFEN field to a new value. +#define BW_DAC_C1_DACBFEN(x, v) (BITBAND_ACCESS8(HW_DAC_C1_ADDR(x), BP_DAC_C1_DACBFEN) = (v)) +#endif +//@} + +/*! + * @name Register DAC_C1, field DACBFMD[2:1] (RW) + * + * Values: + * - 00 - Normal mode + * - 01 - Swing mode + * - 10 - One-Time Scan mode + * - 11 - Reserved + */ +//@{ +#define BP_DAC_C1_DACBFMD (1U) //!< Bit position for DAC_C1_DACBFMD. +#define BM_DAC_C1_DACBFMD (0x06U) //!< Bit mask for DAC_C1_DACBFMD. +#define BS_DAC_C1_DACBFMD (2U) //!< Bit field size in bits for DAC_C1_DACBFMD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C1_DACBFMD field. +#define BR_DAC_C1_DACBFMD(x) (HW_DAC_C1(x).B.DACBFMD) +#endif + +//! @brief Format value for bitfield DAC_C1_DACBFMD. +#define BF_DAC_C1_DACBFMD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C1_DACBFMD), uint8_t) & BM_DAC_C1_DACBFMD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBFMD field to a new value. +#define BW_DAC_C1_DACBFMD(x, v) (HW_DAC_C1_WR(x, (HW_DAC_C1_RD(x) & ~BM_DAC_C1_DACBFMD) | BF_DAC_C1_DACBFMD(v))) +#endif +//@} + +/*! + * @name Register DAC_C1, field DACBFWM[4:3] (RW) + * + * Controls when SR[DACBFWMF] is set. When the DAC buffer read pointer reaches + * the word defined by this field, which is 1-4 words away from the upper limit + * (DACBUP), SR[DACBFWMF] will be set. This allows user configuration of the + * watermark interrupt. + * + * Values: + * - 00 - 1 word + * - 01 - 2 words + * - 10 - 3 words + * - 11 - 4 words + */ +//@{ +#define BP_DAC_C1_DACBFWM (3U) //!< Bit position for DAC_C1_DACBFWM. +#define BM_DAC_C1_DACBFWM (0x18U) //!< Bit mask for DAC_C1_DACBFWM. +#define BS_DAC_C1_DACBFWM (2U) //!< Bit field size in bits for DAC_C1_DACBFWM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C1_DACBFWM field. +#define BR_DAC_C1_DACBFWM(x) (HW_DAC_C1(x).B.DACBFWM) +#endif + +//! @brief Format value for bitfield DAC_C1_DACBFWM. +#define BF_DAC_C1_DACBFWM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C1_DACBFWM), uint8_t) & BM_DAC_C1_DACBFWM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBFWM field to a new value. +#define BW_DAC_C1_DACBFWM(x, v) (HW_DAC_C1_WR(x, (HW_DAC_C1_RD(x) & ~BM_DAC_C1_DACBFWM) | BF_DAC_C1_DACBFWM(v))) +#endif +//@} + +/*! + * @name Register DAC_C1, field DMAEN[7] (RW) + * + * Values: + * - 0 - DMA is disabled. + * - 1 - DMA is enabled. When DMA is enabled, the DMA request will be generated + * by original interrupts. The interrupts will not be presented on this + * module at the same time. + */ +//@{ +#define BP_DAC_C1_DMAEN (7U) //!< Bit position for DAC_C1_DMAEN. +#define BM_DAC_C1_DMAEN (0x80U) //!< Bit mask for DAC_C1_DMAEN. +#define BS_DAC_C1_DMAEN (1U) //!< Bit field size in bits for DAC_C1_DMAEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C1_DMAEN field. +#define BR_DAC_C1_DMAEN(x) (BITBAND_ACCESS8(HW_DAC_C1_ADDR(x), BP_DAC_C1_DMAEN)) +#endif + +//! @brief Format value for bitfield DAC_C1_DMAEN. +#define BF_DAC_C1_DMAEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C1_DMAEN), uint8_t) & BM_DAC_C1_DMAEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAEN field to a new value. +#define BW_DAC_C1_DMAEN(x, v) (BITBAND_ACCESS8(HW_DAC_C1_ADDR(x), BP_DAC_C1_DMAEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DAC_C2 - DAC Control Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DAC_C2 - DAC Control Register 2 (RW) + * + * Reset value: 0x0FU + */ +typedef union _hw_dac_c2 +{ + uint8_t U; + struct _hw_dac_c2_bitfields + { + uint8_t DACBFUP : 4; //!< [3:0] DAC Buffer Upper Limit + uint8_t DACBFRP : 4; //!< [7:4] DAC Buffer Read Pointer + } B; +} hw_dac_c2_t; +#endif + +/*! + * @name Constants and macros for entire DAC_C2 register + */ +//@{ +#define HW_DAC_C2_ADDR(x) (REGS_DAC_BASE(x) + 0x23U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DAC_C2(x) (*(__IO hw_dac_c2_t *) HW_DAC_C2_ADDR(x)) +#define HW_DAC_C2_RD(x) (HW_DAC_C2(x).U) +#define HW_DAC_C2_WR(x, v) (HW_DAC_C2(x).U = (v)) +#define HW_DAC_C2_SET(x, v) (HW_DAC_C2_WR(x, HW_DAC_C2_RD(x) | (v))) +#define HW_DAC_C2_CLR(x, v) (HW_DAC_C2_WR(x, HW_DAC_C2_RD(x) & ~(v))) +#define HW_DAC_C2_TOG(x, v) (HW_DAC_C2_WR(x, HW_DAC_C2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DAC_C2 bitfields + */ + +/*! + * @name Register DAC_C2, field DACBFUP[3:0] (RW) + * + * Selects the upper limit of the DAC buffer. The buffer read pointer cannot + * exceed it. + */ +//@{ +#define BP_DAC_C2_DACBFUP (0U) //!< Bit position for DAC_C2_DACBFUP. +#define BM_DAC_C2_DACBFUP (0x0FU) //!< Bit mask for DAC_C2_DACBFUP. +#define BS_DAC_C2_DACBFUP (4U) //!< Bit field size in bits for DAC_C2_DACBFUP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C2_DACBFUP field. +#define BR_DAC_C2_DACBFUP(x) (HW_DAC_C2(x).B.DACBFUP) +#endif + +//! @brief Format value for bitfield DAC_C2_DACBFUP. +#define BF_DAC_C2_DACBFUP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C2_DACBFUP), uint8_t) & BM_DAC_C2_DACBFUP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBFUP field to a new value. +#define BW_DAC_C2_DACBFUP(x, v) (HW_DAC_C2_WR(x, (HW_DAC_C2_RD(x) & ~BM_DAC_C2_DACBFUP) | BF_DAC_C2_DACBFUP(v))) +#endif +//@} + +/*! + * @name Register DAC_C2, field DACBFRP[7:4] (RW) + * + * Keeps the current value of the buffer read pointer. + */ +//@{ +#define BP_DAC_C2_DACBFRP (4U) //!< Bit position for DAC_C2_DACBFRP. +#define BM_DAC_C2_DACBFRP (0xF0U) //!< Bit mask for DAC_C2_DACBFRP. +#define BS_DAC_C2_DACBFRP (4U) //!< Bit field size in bits for DAC_C2_DACBFRP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DAC_C2_DACBFRP field. +#define BR_DAC_C2_DACBFRP(x) (HW_DAC_C2(x).B.DACBFRP) +#endif + +//! @brief Format value for bitfield DAC_C2_DACBFRP. +#define BF_DAC_C2_DACBFRP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DAC_C2_DACBFRP), uint8_t) & BM_DAC_C2_DACBFRP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DACBFRP field to a new value. +#define BW_DAC_C2_DACBFRP(x, v) (HW_DAC_C2_WR(x, (HW_DAC_C2_RD(x) & ~BM_DAC_C2_DACBFRP) | BF_DAC_C2_DACBFRP(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_dac_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All DAC module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_dac +{ + struct { + __IO hw_dac_datnl_t DATnL; //!< [0x0] DAC Data Low Register + __IO hw_dac_datnh_t DATnH; //!< [0x1] DAC Data High Register + } DAT[16]; + __IO hw_dac_sr_t SR; //!< [0x20] DAC Status Register + __IO hw_dac_c0_t C0; //!< [0x21] DAC Control Register + __IO hw_dac_c1_t C1; //!< [0x22] DAC Control Register 1 + __IO hw_dac_c2_t C2; //!< [0x23] DAC Control Register 2 +} hw_dac_t; +#pragma pack() + +//! @brief Macro to access all DAC registers. +//! @param x DAC instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_DAC(0)</code>. +#define HW_DAC(x) (*(hw_dac_t *) REGS_DAC_BASE(x)) +#endif + +#endif // __HW_DAC_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_dma.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,5973 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_DMA_REGISTERS_H__ +#define __HW_DMA_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 DMA + * + * Enhanced direct memory access controller + * + * Registers defined in this header file: + * - HW_DMA_CR - Control Register + * - HW_DMA_ES - Error Status Register + * - HW_DMA_ERQ - Enable Request Register + * - HW_DMA_EEI - Enable Error Interrupt Register + * - HW_DMA_CEEI - Clear Enable Error Interrupt Register + * - HW_DMA_SEEI - Set Enable Error Interrupt Register + * - HW_DMA_CERQ - Clear Enable Request Register + * - HW_DMA_SERQ - Set Enable Request Register + * - HW_DMA_CDNE - Clear DONE Status Bit Register + * - HW_DMA_SSRT - Set START Bit Register + * - HW_DMA_CERR - Clear Error Register + * - HW_DMA_CINT - Clear Interrupt Request Register + * - HW_DMA_INT - Interrupt Request Register + * - HW_DMA_ERR - Error Register + * - HW_DMA_HRS - Hardware Request Status Register + * - HW_DMA_DCHPRIn - Channel n Priority Register + * - HW_DMA_TCDn_SADDR - TCD Source Address + * - HW_DMA_TCDn_SOFF - TCD Signed Source Address Offset + * - HW_DMA_TCDn_ATTR - TCD Transfer Attributes + * - HW_DMA_TCDn_NBYTES_MLNO - TCD Minor Byte Count (Minor Loop Disabled) + * - HW_DMA_TCDn_NBYTES_MLOFFNO - TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) + * - HW_DMA_TCDn_NBYTES_MLOFFYES - TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) + * - HW_DMA_TCDn_SLAST - TCD Last Source Address Adjustment + * - HW_DMA_TCDn_DADDR - TCD Destination Address + * - HW_DMA_TCDn_DOFF - TCD Signed Destination Address Offset + * - HW_DMA_TCDn_CITER_ELINKNO - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled) + * - HW_DMA_TCDn_CITER_ELINKYES - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) + * - HW_DMA_TCDn_DLASTSGA - TCD Last Destination Address Adjustment/Scatter Gather Address + * - HW_DMA_TCDn_CSR - TCD Control and Status + * - HW_DMA_TCDn_BITER_ELINKNO - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) + * - HW_DMA_TCDn_BITER_ELINKYES - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) + * + * - hw_dma_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_DMA_BASE +#define HW_DMA_INSTANCE_COUNT (1U) //!< Number of instances of the DMA module. +#define HW_DMA0 (0U) //!< Instance number for DMA. +#define REGS_DMA0_BASE (0x40008000U) //!< Base address for DMA. + +//! @brief Table of base addresses for DMA instances. +static const uint32_t __g_regs_DMA_base_addresses[] = { + REGS_DMA0_BASE, + }; + +//! @brief Get the base address of DMA by instance number. +//! @param x DMA instance number, from 0 through 0. +#define REGS_DMA_BASE(x) (__g_regs_DMA_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of DMA. +#define REGS_DMA_INSTANCE(b) ((b) == REGS_DMA0_BASE ? HW_DMA0 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_CR - Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_CR - Control Register (RW) + * + * Reset value: 0x00000000U + * + * The CR defines the basic operating configuration of the DMA. Arbitration can + * be configured to use either a fixed-priority or a round-robin scheme. For + * fixed-priority arbitration, the highest priority channel requesting service is + * selected to execute. The channel priority registers assign the priorities; see + * the DCHPRIn registers. For round-robin arbitration, the channel priorities are + * ignored and channels are cycled through (from high to low channel number) + * without regard to priority. For correct operation, writes to the CR register must + * be performed only when the DMA channels are inactive; that is, when + * TCDn_CSR[ACTIVE] bits are cleared. Minor loop offsets are address offset values added to + * the final source address (TCDn_SADDR) or destination address (TCDn_DADDR) upon + * minor loop completion. When minor loop offsets are enabled, the minor loop + * offset (MLOFF) is added to the final source address (TCDn_SADDR), to the final + * destination address (TCDn_DADDR), or to both prior to the addresses being + * written back into the TCD. If the major loop is complete, the minor loop offset is + * ignored and the major loop address offsets (TCDn_SLAST and TCDn_DLAST_SGA) are + * used to compute the next TCDn_SADDR and TCDn_DADDR values. When minor loop + * mapping is enabled (EMLM is 1), TCDn word2 is redefined. A portion of TCDn word2 + * is used to specify multiple fields: a source enable bit (SMLOE) to specify + * the minor loop offset should be applied to the source address (TCDn_SADDR) upon + * minor loop completion, a destination enable bit (DMLOE) to specify the minor + * loop offset should be applied to the destination address (TCDn_DADDR) upon + * minor loop completion, and the sign extended minor loop offset value (MLOFF). The + * same offset value (MLOFF) is used for both source and destination minor loop + * offsets. When either minor loop offset is enabled (SMLOE set or DMLOE set), the + * NBYTES field is reduced to 10 bits. When both minor loop offsets are disabled + * (SMLOE cleared and DMLOE cleared), the NBYTES field is a 30-bit vector. When + * minor loop mapping is disabled (EMLM is 0), all 32 bits of TCDn word2 are + * assigned to the NBYTES field. + */ +typedef union _hw_dma_cr +{ + uint32_t U; + struct _hw_dma_cr_bitfields + { + uint32_t RESERVED0 : 1; //!< [0] Reserved. + uint32_t EDBG : 1; //!< [1] Enable Debug + uint32_t ERCA : 1; //!< [2] Enable Round Robin Channel Arbitration + uint32_t RESERVED1 : 1; //!< [3] Reserved. + uint32_t HOE : 1; //!< [4] Halt On Error + uint32_t HALT : 1; //!< [5] Halt DMA Operations + uint32_t CLM : 1; //!< [6] Continuous Link Mode + uint32_t EMLM : 1; //!< [7] Enable Minor Loop Mapping + uint32_t RESERVED2 : 8; //!< [15:8] + uint32_t ECX : 1; //!< [16] Error Cancel Transfer + uint32_t CX : 1; //!< [17] Cancel Transfer + uint32_t RESERVED3 : 14; //!< [31:18] + } B; +} hw_dma_cr_t; +#endif + +/*! + * @name Constants and macros for entire DMA_CR register + */ +//@{ +#define HW_DMA_CR_ADDR(x) (REGS_DMA_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_CR(x) (*(__IO hw_dma_cr_t *) HW_DMA_CR_ADDR(x)) +#define HW_DMA_CR_RD(x) (HW_DMA_CR(x).U) +#define HW_DMA_CR_WR(x, v) (HW_DMA_CR(x).U = (v)) +#define HW_DMA_CR_SET(x, v) (HW_DMA_CR_WR(x, HW_DMA_CR_RD(x) | (v))) +#define HW_DMA_CR_CLR(x, v) (HW_DMA_CR_WR(x, HW_DMA_CR_RD(x) & ~(v))) +#define HW_DMA_CR_TOG(x, v) (HW_DMA_CR_WR(x, HW_DMA_CR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_CR bitfields + */ + +/*! + * @name Register DMA_CR, field EDBG[1] (RW) + * + * Values: + * - 0 - When in debug mode, the DMA continues to operate. + * - 1 - When in debug mode, the DMA stalls the start of a new channel. + * Executing channels are allowed to complete. Channel execution resumes when the + * system exits debug mode or the EDBG bit is cleared. + */ +//@{ +#define BP_DMA_CR_EDBG (1U) //!< Bit position for DMA_CR_EDBG. +#define BM_DMA_CR_EDBG (0x00000002U) //!< Bit mask for DMA_CR_EDBG. +#define BS_DMA_CR_EDBG (1U) //!< Bit field size in bits for DMA_CR_EDBG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_CR_EDBG field. +#define BR_DMA_CR_EDBG(x) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_EDBG)) +#endif + +//! @brief Format value for bitfield DMA_CR_EDBG. +#define BF_DMA_CR_EDBG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_CR_EDBG), uint32_t) & BM_DMA_CR_EDBG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EDBG field to a new value. +#define BW_DMA_CR_EDBG(x, v) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_EDBG) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CR, field ERCA[2] (RW) + * + * Values: + * - 0 - Fixed priority arbitration is used for channel selection . + * - 1 - Round robin arbitration is used for channel selection . + */ +//@{ +#define BP_DMA_CR_ERCA (2U) //!< Bit position for DMA_CR_ERCA. +#define BM_DMA_CR_ERCA (0x00000004U) //!< Bit mask for DMA_CR_ERCA. +#define BS_DMA_CR_ERCA (1U) //!< Bit field size in bits for DMA_CR_ERCA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_CR_ERCA field. +#define BR_DMA_CR_ERCA(x) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_ERCA)) +#endif + +//! @brief Format value for bitfield DMA_CR_ERCA. +#define BF_DMA_CR_ERCA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_CR_ERCA), uint32_t) & BM_DMA_CR_ERCA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERCA field to a new value. +#define BW_DMA_CR_ERCA(x, v) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_ERCA) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CR, field HOE[4] (RW) + * + * Values: + * - 0 - Normal operation + * - 1 - Any error causes the HALT bit to set. Subsequently, all service + * requests are ignored until the HALT bit is cleared. + */ +//@{ +#define BP_DMA_CR_HOE (4U) //!< Bit position for DMA_CR_HOE. +#define BM_DMA_CR_HOE (0x00000010U) //!< Bit mask for DMA_CR_HOE. +#define BS_DMA_CR_HOE (1U) //!< Bit field size in bits for DMA_CR_HOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_CR_HOE field. +#define BR_DMA_CR_HOE(x) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_HOE)) +#endif + +//! @brief Format value for bitfield DMA_CR_HOE. +#define BF_DMA_CR_HOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_CR_HOE), uint32_t) & BM_DMA_CR_HOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HOE field to a new value. +#define BW_DMA_CR_HOE(x, v) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_HOE) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CR, field HALT[5] (RW) + * + * Values: + * - 0 - Normal operation + * - 1 - Stall the start of any new channels. Executing channels are allowed to + * complete. Channel execution resumes when this bit is cleared. + */ +//@{ +#define BP_DMA_CR_HALT (5U) //!< Bit position for DMA_CR_HALT. +#define BM_DMA_CR_HALT (0x00000020U) //!< Bit mask for DMA_CR_HALT. +#define BS_DMA_CR_HALT (1U) //!< Bit field size in bits for DMA_CR_HALT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_CR_HALT field. +#define BR_DMA_CR_HALT(x) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_HALT)) +#endif + +//! @brief Format value for bitfield DMA_CR_HALT. +#define BF_DMA_CR_HALT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_CR_HALT), uint32_t) & BM_DMA_CR_HALT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HALT field to a new value. +#define BW_DMA_CR_HALT(x, v) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_HALT) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CR, field CLM[6] (RW) + * + * Values: + * - 0 - A minor loop channel link made to itself goes through channel + * arbitration before being activated again. + * - 1 - A minor loop channel link made to itself does not go through channel + * arbitration before being activated again. Upon minor loop completion, the + * channel activates again if that channel has a minor loop channel link + * enabled and the link channel is itself. This effectively applies the minor loop + * offsets and restarts the next minor loop. + */ +//@{ +#define BP_DMA_CR_CLM (6U) //!< Bit position for DMA_CR_CLM. +#define BM_DMA_CR_CLM (0x00000040U) //!< Bit mask for DMA_CR_CLM. +#define BS_DMA_CR_CLM (1U) //!< Bit field size in bits for DMA_CR_CLM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_CR_CLM field. +#define BR_DMA_CR_CLM(x) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_CLM)) +#endif + +//! @brief Format value for bitfield DMA_CR_CLM. +#define BF_DMA_CR_CLM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_CR_CLM), uint32_t) & BM_DMA_CR_CLM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLM field to a new value. +#define BW_DMA_CR_CLM(x, v) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_CLM) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CR, field EMLM[7] (RW) + * + * Values: + * - 0 - Disabled. TCDn.word2 is defined as a 32-bit NBYTES field. + * - 1 - Enabled. TCDn.word2 is redefined to include individual enable fields, + * an offset field, and the NBYTES field. The individual enable fields allow + * the minor loop offset to be applied to the source address, the destination + * address, or both. The NBYTES field is reduced when either offset is + * enabled. + */ +//@{ +#define BP_DMA_CR_EMLM (7U) //!< Bit position for DMA_CR_EMLM. +#define BM_DMA_CR_EMLM (0x00000080U) //!< Bit mask for DMA_CR_EMLM. +#define BS_DMA_CR_EMLM (1U) //!< Bit field size in bits for DMA_CR_EMLM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_CR_EMLM field. +#define BR_DMA_CR_EMLM(x) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_EMLM)) +#endif + +//! @brief Format value for bitfield DMA_CR_EMLM. +#define BF_DMA_CR_EMLM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_CR_EMLM), uint32_t) & BM_DMA_CR_EMLM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EMLM field to a new value. +#define BW_DMA_CR_EMLM(x, v) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_EMLM) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CR, field ECX[16] (RW) + * + * Values: + * - 0 - Normal operation + * - 1 - Cancel the remaining data transfer in the same fashion as the CX bit. + * Stop the executing channel and force the minor loop to finish. The cancel + * takes effect after the last write of the current read/write sequence. The + * ECX bit clears itself after the cancel is honored. In addition to + * cancelling the transfer, ECX treats the cancel as an error condition, thus updating + * the Error Status register (DMAx_ES) and generating an optional error + * interrupt. + */ +//@{ +#define BP_DMA_CR_ECX (16U) //!< Bit position for DMA_CR_ECX. +#define BM_DMA_CR_ECX (0x00010000U) //!< Bit mask for DMA_CR_ECX. +#define BS_DMA_CR_ECX (1U) //!< Bit field size in bits for DMA_CR_ECX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_CR_ECX field. +#define BR_DMA_CR_ECX(x) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_ECX)) +#endif + +//! @brief Format value for bitfield DMA_CR_ECX. +#define BF_DMA_CR_ECX(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_CR_ECX), uint32_t) & BM_DMA_CR_ECX) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ECX field to a new value. +#define BW_DMA_CR_ECX(x, v) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_ECX) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CR, field CX[17] (RW) + * + * Values: + * - 0 - Normal operation + * - 1 - Cancel the remaining data transfer. Stop the executing channel and + * force the minor loop to finish. The cancel takes effect after the last write + * of the current read/write sequence. The CX bit clears itself after the + * cancel has been honored. This cancel retires the channel normally as if the + * minor loop was completed. + */ +//@{ +#define BP_DMA_CR_CX (17U) //!< Bit position for DMA_CR_CX. +#define BM_DMA_CR_CX (0x00020000U) //!< Bit mask for DMA_CR_CX. +#define BS_DMA_CR_CX (1U) //!< Bit field size in bits for DMA_CR_CX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_CR_CX field. +#define BR_DMA_CR_CX(x) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_CX)) +#endif + +//! @brief Format value for bitfield DMA_CR_CX. +#define BF_DMA_CR_CX(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_CR_CX), uint32_t) & BM_DMA_CR_CX) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CX field to a new value. +#define BW_DMA_CR_CX(x, v) (BITBAND_ACCESS32(HW_DMA_CR_ADDR(x), BP_DMA_CR_CX) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_ES - Error Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_ES - Error Status Register (RO) + * + * Reset value: 0x00000000U + * + * The ES provides information concerning the last recorded channel error. + * Channel errors can be caused by: A configuration error, that is: An illegal setting + * in the transfer-control descriptor, or An illegal priority register setting + * in fixed-arbitration An error termination to a bus master read or write cycle + * See the Error Reporting and Handling section for more details. + */ +typedef union _hw_dma_es +{ + uint32_t U; + struct _hw_dma_es_bitfields + { + uint32_t DBE : 1; //!< [0] Destination Bus Error + uint32_t SBE : 1; //!< [1] Source Bus Error + uint32_t SGE : 1; //!< [2] Scatter/Gather Configuration Error + uint32_t NCE : 1; //!< [3] NBYTES/CITER Configuration Error + uint32_t DOE : 1; //!< [4] Destination Offset Error + uint32_t DAE : 1; //!< [5] Destination Address Error + uint32_t SOE : 1; //!< [6] Source Offset Error + uint32_t SAE : 1; //!< [7] Source Address Error + uint32_t ERRCHN : 4; //!< [11:8] Error Channel Number or Canceled + //! Channel Number + uint32_t RESERVED0 : 2; //!< [13:12] + uint32_t CPE : 1; //!< [14] Channel Priority Error + uint32_t RESERVED1 : 1; //!< [15] + uint32_t ECX : 1; //!< [16] Transfer Canceled + uint32_t RESERVED2 : 14; //!< [30:17] + uint32_t VLD : 1; //!< [31] + } B; +} hw_dma_es_t; +#endif + +/*! + * @name Constants and macros for entire DMA_ES register + */ +//@{ +#define HW_DMA_ES_ADDR(x) (REGS_DMA_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_ES(x) (*(__I hw_dma_es_t *) HW_DMA_ES_ADDR(x)) +#define HW_DMA_ES_RD(x) (HW_DMA_ES(x).U) +#endif +//@} + +/* + * Constants & macros for individual DMA_ES bitfields + */ + +/*! + * @name Register DMA_ES, field DBE[0] (RO) + * + * Values: + * - 0 - No destination bus error + * - 1 - The last recorded error was a bus error on a destination write + */ +//@{ +#define BP_DMA_ES_DBE (0U) //!< Bit position for DMA_ES_DBE. +#define BM_DMA_ES_DBE (0x00000001U) //!< Bit mask for DMA_ES_DBE. +#define BS_DMA_ES_DBE (1U) //!< Bit field size in bits for DMA_ES_DBE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_DBE field. +#define BR_DMA_ES_DBE(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_DBE)) +#endif +//@} + +/*! + * @name Register DMA_ES, field SBE[1] (RO) + * + * Values: + * - 0 - No source bus error + * - 1 - The last recorded error was a bus error on a source read + */ +//@{ +#define BP_DMA_ES_SBE (1U) //!< Bit position for DMA_ES_SBE. +#define BM_DMA_ES_SBE (0x00000002U) //!< Bit mask for DMA_ES_SBE. +#define BS_DMA_ES_SBE (1U) //!< Bit field size in bits for DMA_ES_SBE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_SBE field. +#define BR_DMA_ES_SBE(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_SBE)) +#endif +//@} + +/*! + * @name Register DMA_ES, field SGE[2] (RO) + * + * Values: + * - 0 - No scatter/gather configuration error + * - 1 - The last recorded error was a configuration error detected in the + * TCDn_DLASTSGA field. This field is checked at the beginning of a scatter/gather + * operation after major loop completion if TCDn_CSR[ESG] is enabled. + * TCDn_DLASTSGA is not on a 32 byte boundary. + */ +//@{ +#define BP_DMA_ES_SGE (2U) //!< Bit position for DMA_ES_SGE. +#define BM_DMA_ES_SGE (0x00000004U) //!< Bit mask for DMA_ES_SGE. +#define BS_DMA_ES_SGE (1U) //!< Bit field size in bits for DMA_ES_SGE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_SGE field. +#define BR_DMA_ES_SGE(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_SGE)) +#endif +//@} + +/*! + * @name Register DMA_ES, field NCE[3] (RO) + * + * Values: + * - 0 - No NBYTES/CITER configuration error + * - 1 - The last recorded error was a configuration error detected in the + * TCDn_NBYTES or TCDn_CITER fields. TCDn_NBYTES is not a multiple of + * TCDn_ATTR[SSIZE] and TCDn_ATTR[DSIZE], or TCDn_CITER[CITER] is equal to zero, or + * TCDn_CITER[ELINK] is not equal to TCDn_BITER[ELINK] + */ +//@{ +#define BP_DMA_ES_NCE (3U) //!< Bit position for DMA_ES_NCE. +#define BM_DMA_ES_NCE (0x00000008U) //!< Bit mask for DMA_ES_NCE. +#define BS_DMA_ES_NCE (1U) //!< Bit field size in bits for DMA_ES_NCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_NCE field. +#define BR_DMA_ES_NCE(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_NCE)) +#endif +//@} + +/*! + * @name Register DMA_ES, field DOE[4] (RO) + * + * Values: + * - 0 - No destination offset configuration error + * - 1 - The last recorded error was a configuration error detected in the + * TCDn_DOFF field. TCDn_DOFF is inconsistent with TCDn_ATTR[DSIZE]. + */ +//@{ +#define BP_DMA_ES_DOE (4U) //!< Bit position for DMA_ES_DOE. +#define BM_DMA_ES_DOE (0x00000010U) //!< Bit mask for DMA_ES_DOE. +#define BS_DMA_ES_DOE (1U) //!< Bit field size in bits for DMA_ES_DOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_DOE field. +#define BR_DMA_ES_DOE(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_DOE)) +#endif +//@} + +/*! + * @name Register DMA_ES, field DAE[5] (RO) + * + * Values: + * - 0 - No destination address configuration error + * - 1 - The last recorded error was a configuration error detected in the + * TCDn_DADDR field. TCDn_DADDR is inconsistent with TCDn_ATTR[DSIZE]. + */ +//@{ +#define BP_DMA_ES_DAE (5U) //!< Bit position for DMA_ES_DAE. +#define BM_DMA_ES_DAE (0x00000020U) //!< Bit mask for DMA_ES_DAE. +#define BS_DMA_ES_DAE (1U) //!< Bit field size in bits for DMA_ES_DAE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_DAE field. +#define BR_DMA_ES_DAE(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_DAE)) +#endif +//@} + +/*! + * @name Register DMA_ES, field SOE[6] (RO) + * + * Values: + * - 0 - No source offset configuration error + * - 1 - The last recorded error was a configuration error detected in the + * TCDn_SOFF field. TCDn_SOFF is inconsistent with TCDn_ATTR[SSIZE]. + */ +//@{ +#define BP_DMA_ES_SOE (6U) //!< Bit position for DMA_ES_SOE. +#define BM_DMA_ES_SOE (0x00000040U) //!< Bit mask for DMA_ES_SOE. +#define BS_DMA_ES_SOE (1U) //!< Bit field size in bits for DMA_ES_SOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_SOE field. +#define BR_DMA_ES_SOE(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_SOE)) +#endif +//@} + +/*! + * @name Register DMA_ES, field SAE[7] (RO) + * + * Values: + * - 0 - No source address configuration error. + * - 1 - The last recorded error was a configuration error detected in the + * TCDn_SADDR field. TCDn_SADDR is inconsistent with TCDn_ATTR[SSIZE]. + */ +//@{ +#define BP_DMA_ES_SAE (7U) //!< Bit position for DMA_ES_SAE. +#define BM_DMA_ES_SAE (0x00000080U) //!< Bit mask for DMA_ES_SAE. +#define BS_DMA_ES_SAE (1U) //!< Bit field size in bits for DMA_ES_SAE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_SAE field. +#define BR_DMA_ES_SAE(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_SAE)) +#endif +//@} + +/*! + * @name Register DMA_ES, field ERRCHN[11:8] (RO) + * + * The channel number of the last recorded error (excluding CPE errors) or last + * recorded error canceled transfer. + */ +//@{ +#define BP_DMA_ES_ERRCHN (8U) //!< Bit position for DMA_ES_ERRCHN. +#define BM_DMA_ES_ERRCHN (0x00000F00U) //!< Bit mask for DMA_ES_ERRCHN. +#define BS_DMA_ES_ERRCHN (4U) //!< Bit field size in bits for DMA_ES_ERRCHN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_ERRCHN field. +#define BR_DMA_ES_ERRCHN(x) (HW_DMA_ES(x).B.ERRCHN) +#endif +//@} + +/*! + * @name Register DMA_ES, field CPE[14] (RO) + * + * Values: + * - 0 - No channel priority error + * - 1 - The last recorded error was a configuration error in the channel + * priorities . Channel priorities are not unique. + */ +//@{ +#define BP_DMA_ES_CPE (14U) //!< Bit position for DMA_ES_CPE. +#define BM_DMA_ES_CPE (0x00004000U) //!< Bit mask for DMA_ES_CPE. +#define BS_DMA_ES_CPE (1U) //!< Bit field size in bits for DMA_ES_CPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_CPE field. +#define BR_DMA_ES_CPE(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_CPE)) +#endif +//@} + +/*! + * @name Register DMA_ES, field ECX[16] (RO) + * + * Values: + * - 0 - No canceled transfers + * - 1 - The last recorded entry was a canceled transfer by the error cancel + * transfer input + */ +//@{ +#define BP_DMA_ES_ECX (16U) //!< Bit position for DMA_ES_ECX. +#define BM_DMA_ES_ECX (0x00010000U) //!< Bit mask for DMA_ES_ECX. +#define BS_DMA_ES_ECX (1U) //!< Bit field size in bits for DMA_ES_ECX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_ECX field. +#define BR_DMA_ES_ECX(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_ECX)) +#endif +//@} + +/*! + * @name Register DMA_ES, field VLD[31] (RO) + * + * Logical OR of all ERR status bits + * + * Values: + * - 0 - No ERR bits are set + * - 1 - At least one ERR bit is set indicating a valid error exists that has + * not been cleared + */ +//@{ +#define BP_DMA_ES_VLD (31U) //!< Bit position for DMA_ES_VLD. +#define BM_DMA_ES_VLD (0x80000000U) //!< Bit mask for DMA_ES_VLD. +#define BS_DMA_ES_VLD (1U) //!< Bit field size in bits for DMA_ES_VLD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ES_VLD field. +#define BR_DMA_ES_VLD(x) (BITBAND_ACCESS32(HW_DMA_ES_ADDR(x), BP_DMA_ES_VLD)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_ERQ - Enable Request Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_ERQ - Enable Request Register (RW) + * + * Reset value: 0x00000000U + * + * The ERQ register provides a bit map for the 16 implemented channels to enable + * the request signal for each channel. The state of any given channel enable is + * directly affected by writes to this register; it is also affected by writes + * to the SERQ and CERQ. The {S,C}ERQ registers are provided so the request enable + * for a single channel can easily be modified without needing to perform a + * read-modify-write sequence to the ERQ. DMA request input signals and this enable + * request flag must be asserted before a channel's hardware service request is + * accepted. The state of the DMA enable request flag does not affect a channel + * service request made explicitly through software or a linked channel request. + */ +typedef union _hw_dma_erq +{ + uint32_t U; + struct _hw_dma_erq_bitfields + { + uint32_t ERQ0 : 1; //!< [0] Enable DMA Request 0 + uint32_t ERQ1 : 1; //!< [1] Enable DMA Request 1 + uint32_t ERQ2 : 1; //!< [2] Enable DMA Request 2 + uint32_t ERQ3 : 1; //!< [3] Enable DMA Request 3 + uint32_t ERQ4 : 1; //!< [4] Enable DMA Request 4 + uint32_t ERQ5 : 1; //!< [5] Enable DMA Request 5 + uint32_t ERQ6 : 1; //!< [6] Enable DMA Request 6 + uint32_t ERQ7 : 1; //!< [7] Enable DMA Request 7 + uint32_t ERQ8 : 1; //!< [8] Enable DMA Request 8 + uint32_t ERQ9 : 1; //!< [9] Enable DMA Request 9 + uint32_t ERQ10 : 1; //!< [10] Enable DMA Request 10 + uint32_t ERQ11 : 1; //!< [11] Enable DMA Request 11 + uint32_t ERQ12 : 1; //!< [12] Enable DMA Request 12 + uint32_t ERQ13 : 1; //!< [13] Enable DMA Request 13 + uint32_t ERQ14 : 1; //!< [14] Enable DMA Request 14 + uint32_t ERQ15 : 1; //!< [15] Enable DMA Request 15 + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_dma_erq_t; +#endif + +/*! + * @name Constants and macros for entire DMA_ERQ register + */ +//@{ +#define HW_DMA_ERQ_ADDR(x) (REGS_DMA_BASE(x) + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_ERQ(x) (*(__IO hw_dma_erq_t *) HW_DMA_ERQ_ADDR(x)) +#define HW_DMA_ERQ_RD(x) (HW_DMA_ERQ(x).U) +#define HW_DMA_ERQ_WR(x, v) (HW_DMA_ERQ(x).U = (v)) +#define HW_DMA_ERQ_SET(x, v) (HW_DMA_ERQ_WR(x, HW_DMA_ERQ_RD(x) | (v))) +#define HW_DMA_ERQ_CLR(x, v) (HW_DMA_ERQ_WR(x, HW_DMA_ERQ_RD(x) & ~(v))) +#define HW_DMA_ERQ_TOG(x, v) (HW_DMA_ERQ_WR(x, HW_DMA_ERQ_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_ERQ bitfields + */ + +/*! + * @name Register DMA_ERQ, field ERQ0[0] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ0 (0U) //!< Bit position for DMA_ERQ_ERQ0. +#define BM_DMA_ERQ_ERQ0 (0x00000001U) //!< Bit mask for DMA_ERQ_ERQ0. +#define BS_DMA_ERQ_ERQ0 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ0 field. +#define BR_DMA_ERQ_ERQ0(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ0)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ0. +#define BF_DMA_ERQ_ERQ0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ0), uint32_t) & BM_DMA_ERQ_ERQ0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ0 field to a new value. +#define BW_DMA_ERQ_ERQ0(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ0) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ1[1] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ1 (1U) //!< Bit position for DMA_ERQ_ERQ1. +#define BM_DMA_ERQ_ERQ1 (0x00000002U) //!< Bit mask for DMA_ERQ_ERQ1. +#define BS_DMA_ERQ_ERQ1 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ1 field. +#define BR_DMA_ERQ_ERQ1(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ1)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ1. +#define BF_DMA_ERQ_ERQ1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ1), uint32_t) & BM_DMA_ERQ_ERQ1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ1 field to a new value. +#define BW_DMA_ERQ_ERQ1(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ1) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ2[2] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ2 (2U) //!< Bit position for DMA_ERQ_ERQ2. +#define BM_DMA_ERQ_ERQ2 (0x00000004U) //!< Bit mask for DMA_ERQ_ERQ2. +#define BS_DMA_ERQ_ERQ2 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ2 field. +#define BR_DMA_ERQ_ERQ2(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ2)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ2. +#define BF_DMA_ERQ_ERQ2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ2), uint32_t) & BM_DMA_ERQ_ERQ2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ2 field to a new value. +#define BW_DMA_ERQ_ERQ2(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ2) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ3[3] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ3 (3U) //!< Bit position for DMA_ERQ_ERQ3. +#define BM_DMA_ERQ_ERQ3 (0x00000008U) //!< Bit mask for DMA_ERQ_ERQ3. +#define BS_DMA_ERQ_ERQ3 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ3 field. +#define BR_DMA_ERQ_ERQ3(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ3)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ3. +#define BF_DMA_ERQ_ERQ3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ3), uint32_t) & BM_DMA_ERQ_ERQ3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ3 field to a new value. +#define BW_DMA_ERQ_ERQ3(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ3) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ4[4] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ4 (4U) //!< Bit position for DMA_ERQ_ERQ4. +#define BM_DMA_ERQ_ERQ4 (0x00000010U) //!< Bit mask for DMA_ERQ_ERQ4. +#define BS_DMA_ERQ_ERQ4 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ4 field. +#define BR_DMA_ERQ_ERQ4(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ4)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ4. +#define BF_DMA_ERQ_ERQ4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ4), uint32_t) & BM_DMA_ERQ_ERQ4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ4 field to a new value. +#define BW_DMA_ERQ_ERQ4(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ4) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ5[5] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ5 (5U) //!< Bit position for DMA_ERQ_ERQ5. +#define BM_DMA_ERQ_ERQ5 (0x00000020U) //!< Bit mask for DMA_ERQ_ERQ5. +#define BS_DMA_ERQ_ERQ5 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ5 field. +#define BR_DMA_ERQ_ERQ5(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ5)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ5. +#define BF_DMA_ERQ_ERQ5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ5), uint32_t) & BM_DMA_ERQ_ERQ5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ5 field to a new value. +#define BW_DMA_ERQ_ERQ5(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ5) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ6[6] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ6 (6U) //!< Bit position for DMA_ERQ_ERQ6. +#define BM_DMA_ERQ_ERQ6 (0x00000040U) //!< Bit mask for DMA_ERQ_ERQ6. +#define BS_DMA_ERQ_ERQ6 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ6 field. +#define BR_DMA_ERQ_ERQ6(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ6)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ6. +#define BF_DMA_ERQ_ERQ6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ6), uint32_t) & BM_DMA_ERQ_ERQ6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ6 field to a new value. +#define BW_DMA_ERQ_ERQ6(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ6) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ7[7] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ7 (7U) //!< Bit position for DMA_ERQ_ERQ7. +#define BM_DMA_ERQ_ERQ7 (0x00000080U) //!< Bit mask for DMA_ERQ_ERQ7. +#define BS_DMA_ERQ_ERQ7 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ7 field. +#define BR_DMA_ERQ_ERQ7(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ7)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ7. +#define BF_DMA_ERQ_ERQ7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ7), uint32_t) & BM_DMA_ERQ_ERQ7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ7 field to a new value. +#define BW_DMA_ERQ_ERQ7(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ7) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ8[8] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ8 (8U) //!< Bit position for DMA_ERQ_ERQ8. +#define BM_DMA_ERQ_ERQ8 (0x00000100U) //!< Bit mask for DMA_ERQ_ERQ8. +#define BS_DMA_ERQ_ERQ8 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ8 field. +#define BR_DMA_ERQ_ERQ8(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ8)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ8. +#define BF_DMA_ERQ_ERQ8(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ8), uint32_t) & BM_DMA_ERQ_ERQ8) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ8 field to a new value. +#define BW_DMA_ERQ_ERQ8(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ8) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ9[9] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ9 (9U) //!< Bit position for DMA_ERQ_ERQ9. +#define BM_DMA_ERQ_ERQ9 (0x00000200U) //!< Bit mask for DMA_ERQ_ERQ9. +#define BS_DMA_ERQ_ERQ9 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ9. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ9 field. +#define BR_DMA_ERQ_ERQ9(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ9)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ9. +#define BF_DMA_ERQ_ERQ9(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ9), uint32_t) & BM_DMA_ERQ_ERQ9) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ9 field to a new value. +#define BW_DMA_ERQ_ERQ9(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ9) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ10[10] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ10 (10U) //!< Bit position for DMA_ERQ_ERQ10. +#define BM_DMA_ERQ_ERQ10 (0x00000400U) //!< Bit mask for DMA_ERQ_ERQ10. +#define BS_DMA_ERQ_ERQ10 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ10. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ10 field. +#define BR_DMA_ERQ_ERQ10(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ10)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ10. +#define BF_DMA_ERQ_ERQ10(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ10), uint32_t) & BM_DMA_ERQ_ERQ10) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ10 field to a new value. +#define BW_DMA_ERQ_ERQ10(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ10) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ11[11] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ11 (11U) //!< Bit position for DMA_ERQ_ERQ11. +#define BM_DMA_ERQ_ERQ11 (0x00000800U) //!< Bit mask for DMA_ERQ_ERQ11. +#define BS_DMA_ERQ_ERQ11 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ11. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ11 field. +#define BR_DMA_ERQ_ERQ11(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ11)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ11. +#define BF_DMA_ERQ_ERQ11(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ11), uint32_t) & BM_DMA_ERQ_ERQ11) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ11 field to a new value. +#define BW_DMA_ERQ_ERQ11(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ11) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ12[12] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ12 (12U) //!< Bit position for DMA_ERQ_ERQ12. +#define BM_DMA_ERQ_ERQ12 (0x00001000U) //!< Bit mask for DMA_ERQ_ERQ12. +#define BS_DMA_ERQ_ERQ12 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ12. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ12 field. +#define BR_DMA_ERQ_ERQ12(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ12)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ12. +#define BF_DMA_ERQ_ERQ12(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ12), uint32_t) & BM_DMA_ERQ_ERQ12) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ12 field to a new value. +#define BW_DMA_ERQ_ERQ12(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ12) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ13[13] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ13 (13U) //!< Bit position for DMA_ERQ_ERQ13. +#define BM_DMA_ERQ_ERQ13 (0x00002000U) //!< Bit mask for DMA_ERQ_ERQ13. +#define BS_DMA_ERQ_ERQ13 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ13. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ13 field. +#define BR_DMA_ERQ_ERQ13(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ13)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ13. +#define BF_DMA_ERQ_ERQ13(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ13), uint32_t) & BM_DMA_ERQ_ERQ13) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ13 field to a new value. +#define BW_DMA_ERQ_ERQ13(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ13) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ14[14] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ14 (14U) //!< Bit position for DMA_ERQ_ERQ14. +#define BM_DMA_ERQ_ERQ14 (0x00004000U) //!< Bit mask for DMA_ERQ_ERQ14. +#define BS_DMA_ERQ_ERQ14 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ14. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ14 field. +#define BR_DMA_ERQ_ERQ14(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ14)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ14. +#define BF_DMA_ERQ_ERQ14(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ14), uint32_t) & BM_DMA_ERQ_ERQ14) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ14 field to a new value. +#define BW_DMA_ERQ_ERQ14(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ14) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERQ, field ERQ15[15] (RW) + * + * Values: + * - 0 - The DMA request signal for the corresponding channel is disabled + * - 1 - The DMA request signal for the corresponding channel is enabled + */ +//@{ +#define BP_DMA_ERQ_ERQ15 (15U) //!< Bit position for DMA_ERQ_ERQ15. +#define BM_DMA_ERQ_ERQ15 (0x00008000U) //!< Bit mask for DMA_ERQ_ERQ15. +#define BS_DMA_ERQ_ERQ15 (1U) //!< Bit field size in bits for DMA_ERQ_ERQ15. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERQ_ERQ15 field. +#define BR_DMA_ERQ_ERQ15(x) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ15)) +#endif + +//! @brief Format value for bitfield DMA_ERQ_ERQ15. +#define BF_DMA_ERQ_ERQ15(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERQ_ERQ15), uint32_t) & BM_DMA_ERQ_ERQ15) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERQ15 field to a new value. +#define BW_DMA_ERQ_ERQ15(x, v) (BITBAND_ACCESS32(HW_DMA_ERQ_ADDR(x), BP_DMA_ERQ_ERQ15) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_EEI - Enable Error Interrupt Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_EEI - Enable Error Interrupt Register (RW) + * + * Reset value: 0x00000000U + * + * The EEI register provides a bit map for the 16 channels to enable the error + * interrupt signal for each channel. The state of any given channel's error + * interrupt enable is directly affected by writes to this register; it is also + * affected by writes to the SEEI and CEEI. The {S,C}EEI are provided so the error + * interrupt enable for a single channel can easily be modified without the need to + * perform a read-modify-write sequence to the EEI register. The DMA error + * indicator and the error interrupt enable flag must be asserted before an error + * interrupt request for a given channel is asserted to the interrupt controller. + */ +typedef union _hw_dma_eei +{ + uint32_t U; + struct _hw_dma_eei_bitfields + { + uint32_t EEI0 : 1; //!< [0] Enable Error Interrupt 0 + uint32_t EEI1 : 1; //!< [1] Enable Error Interrupt 1 + uint32_t EEI2 : 1; //!< [2] Enable Error Interrupt 2 + uint32_t EEI3 : 1; //!< [3] Enable Error Interrupt 3 + uint32_t EEI4 : 1; //!< [4] Enable Error Interrupt 4 + uint32_t EEI5 : 1; //!< [5] Enable Error Interrupt 5 + uint32_t EEI6 : 1; //!< [6] Enable Error Interrupt 6 + uint32_t EEI7 : 1; //!< [7] Enable Error Interrupt 7 + uint32_t EEI8 : 1; //!< [8] Enable Error Interrupt 8 + uint32_t EEI9 : 1; //!< [9] Enable Error Interrupt 9 + uint32_t EEI10 : 1; //!< [10] Enable Error Interrupt 10 + uint32_t EEI11 : 1; //!< [11] Enable Error Interrupt 11 + uint32_t EEI12 : 1; //!< [12] Enable Error Interrupt 12 + uint32_t EEI13 : 1; //!< [13] Enable Error Interrupt 13 + uint32_t EEI14 : 1; //!< [14] Enable Error Interrupt 14 + uint32_t EEI15 : 1; //!< [15] Enable Error Interrupt 15 + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_dma_eei_t; +#endif + +/*! + * @name Constants and macros for entire DMA_EEI register + */ +//@{ +#define HW_DMA_EEI_ADDR(x) (REGS_DMA_BASE(x) + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_EEI(x) (*(__IO hw_dma_eei_t *) HW_DMA_EEI_ADDR(x)) +#define HW_DMA_EEI_RD(x) (HW_DMA_EEI(x).U) +#define HW_DMA_EEI_WR(x, v) (HW_DMA_EEI(x).U = (v)) +#define HW_DMA_EEI_SET(x, v) (HW_DMA_EEI_WR(x, HW_DMA_EEI_RD(x) | (v))) +#define HW_DMA_EEI_CLR(x, v) (HW_DMA_EEI_WR(x, HW_DMA_EEI_RD(x) & ~(v))) +#define HW_DMA_EEI_TOG(x, v) (HW_DMA_EEI_WR(x, HW_DMA_EEI_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_EEI bitfields + */ + +/*! + * @name Register DMA_EEI, field EEI0[0] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI0 (0U) //!< Bit position for DMA_EEI_EEI0. +#define BM_DMA_EEI_EEI0 (0x00000001U) //!< Bit mask for DMA_EEI_EEI0. +#define BS_DMA_EEI_EEI0 (1U) //!< Bit field size in bits for DMA_EEI_EEI0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI0 field. +#define BR_DMA_EEI_EEI0(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI0)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI0. +#define BF_DMA_EEI_EEI0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI0), uint32_t) & BM_DMA_EEI_EEI0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI0 field to a new value. +#define BW_DMA_EEI_EEI0(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI0) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI1[1] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI1 (1U) //!< Bit position for DMA_EEI_EEI1. +#define BM_DMA_EEI_EEI1 (0x00000002U) //!< Bit mask for DMA_EEI_EEI1. +#define BS_DMA_EEI_EEI1 (1U) //!< Bit field size in bits for DMA_EEI_EEI1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI1 field. +#define BR_DMA_EEI_EEI1(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI1)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI1. +#define BF_DMA_EEI_EEI1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI1), uint32_t) & BM_DMA_EEI_EEI1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI1 field to a new value. +#define BW_DMA_EEI_EEI1(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI1) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI2[2] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI2 (2U) //!< Bit position for DMA_EEI_EEI2. +#define BM_DMA_EEI_EEI2 (0x00000004U) //!< Bit mask for DMA_EEI_EEI2. +#define BS_DMA_EEI_EEI2 (1U) //!< Bit field size in bits for DMA_EEI_EEI2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI2 field. +#define BR_DMA_EEI_EEI2(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI2)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI2. +#define BF_DMA_EEI_EEI2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI2), uint32_t) & BM_DMA_EEI_EEI2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI2 field to a new value. +#define BW_DMA_EEI_EEI2(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI2) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI3[3] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI3 (3U) //!< Bit position for DMA_EEI_EEI3. +#define BM_DMA_EEI_EEI3 (0x00000008U) //!< Bit mask for DMA_EEI_EEI3. +#define BS_DMA_EEI_EEI3 (1U) //!< Bit field size in bits for DMA_EEI_EEI3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI3 field. +#define BR_DMA_EEI_EEI3(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI3)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI3. +#define BF_DMA_EEI_EEI3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI3), uint32_t) & BM_DMA_EEI_EEI3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI3 field to a new value. +#define BW_DMA_EEI_EEI3(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI3) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI4[4] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI4 (4U) //!< Bit position for DMA_EEI_EEI4. +#define BM_DMA_EEI_EEI4 (0x00000010U) //!< Bit mask for DMA_EEI_EEI4. +#define BS_DMA_EEI_EEI4 (1U) //!< Bit field size in bits for DMA_EEI_EEI4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI4 field. +#define BR_DMA_EEI_EEI4(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI4)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI4. +#define BF_DMA_EEI_EEI4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI4), uint32_t) & BM_DMA_EEI_EEI4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI4 field to a new value. +#define BW_DMA_EEI_EEI4(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI4) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI5[5] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI5 (5U) //!< Bit position for DMA_EEI_EEI5. +#define BM_DMA_EEI_EEI5 (0x00000020U) //!< Bit mask for DMA_EEI_EEI5. +#define BS_DMA_EEI_EEI5 (1U) //!< Bit field size in bits for DMA_EEI_EEI5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI5 field. +#define BR_DMA_EEI_EEI5(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI5)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI5. +#define BF_DMA_EEI_EEI5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI5), uint32_t) & BM_DMA_EEI_EEI5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI5 field to a new value. +#define BW_DMA_EEI_EEI5(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI5) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI6[6] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI6 (6U) //!< Bit position for DMA_EEI_EEI6. +#define BM_DMA_EEI_EEI6 (0x00000040U) //!< Bit mask for DMA_EEI_EEI6. +#define BS_DMA_EEI_EEI6 (1U) //!< Bit field size in bits for DMA_EEI_EEI6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI6 field. +#define BR_DMA_EEI_EEI6(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI6)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI6. +#define BF_DMA_EEI_EEI6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI6), uint32_t) & BM_DMA_EEI_EEI6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI6 field to a new value. +#define BW_DMA_EEI_EEI6(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI6) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI7[7] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI7 (7U) //!< Bit position for DMA_EEI_EEI7. +#define BM_DMA_EEI_EEI7 (0x00000080U) //!< Bit mask for DMA_EEI_EEI7. +#define BS_DMA_EEI_EEI7 (1U) //!< Bit field size in bits for DMA_EEI_EEI7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI7 field. +#define BR_DMA_EEI_EEI7(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI7)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI7. +#define BF_DMA_EEI_EEI7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI7), uint32_t) & BM_DMA_EEI_EEI7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI7 field to a new value. +#define BW_DMA_EEI_EEI7(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI7) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI8[8] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI8 (8U) //!< Bit position for DMA_EEI_EEI8. +#define BM_DMA_EEI_EEI8 (0x00000100U) //!< Bit mask for DMA_EEI_EEI8. +#define BS_DMA_EEI_EEI8 (1U) //!< Bit field size in bits for DMA_EEI_EEI8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI8 field. +#define BR_DMA_EEI_EEI8(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI8)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI8. +#define BF_DMA_EEI_EEI8(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI8), uint32_t) & BM_DMA_EEI_EEI8) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI8 field to a new value. +#define BW_DMA_EEI_EEI8(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI8) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI9[9] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI9 (9U) //!< Bit position for DMA_EEI_EEI9. +#define BM_DMA_EEI_EEI9 (0x00000200U) //!< Bit mask for DMA_EEI_EEI9. +#define BS_DMA_EEI_EEI9 (1U) //!< Bit field size in bits for DMA_EEI_EEI9. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI9 field. +#define BR_DMA_EEI_EEI9(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI9)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI9. +#define BF_DMA_EEI_EEI9(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI9), uint32_t) & BM_DMA_EEI_EEI9) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI9 field to a new value. +#define BW_DMA_EEI_EEI9(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI9) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI10[10] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI10 (10U) //!< Bit position for DMA_EEI_EEI10. +#define BM_DMA_EEI_EEI10 (0x00000400U) //!< Bit mask for DMA_EEI_EEI10. +#define BS_DMA_EEI_EEI10 (1U) //!< Bit field size in bits for DMA_EEI_EEI10. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI10 field. +#define BR_DMA_EEI_EEI10(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI10)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI10. +#define BF_DMA_EEI_EEI10(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI10), uint32_t) & BM_DMA_EEI_EEI10) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI10 field to a new value. +#define BW_DMA_EEI_EEI10(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI10) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI11[11] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI11 (11U) //!< Bit position for DMA_EEI_EEI11. +#define BM_DMA_EEI_EEI11 (0x00000800U) //!< Bit mask for DMA_EEI_EEI11. +#define BS_DMA_EEI_EEI11 (1U) //!< Bit field size in bits for DMA_EEI_EEI11. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI11 field. +#define BR_DMA_EEI_EEI11(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI11)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI11. +#define BF_DMA_EEI_EEI11(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI11), uint32_t) & BM_DMA_EEI_EEI11) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI11 field to a new value. +#define BW_DMA_EEI_EEI11(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI11) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI12[12] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI12 (12U) //!< Bit position for DMA_EEI_EEI12. +#define BM_DMA_EEI_EEI12 (0x00001000U) //!< Bit mask for DMA_EEI_EEI12. +#define BS_DMA_EEI_EEI12 (1U) //!< Bit field size in bits for DMA_EEI_EEI12. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI12 field. +#define BR_DMA_EEI_EEI12(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI12)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI12. +#define BF_DMA_EEI_EEI12(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI12), uint32_t) & BM_DMA_EEI_EEI12) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI12 field to a new value. +#define BW_DMA_EEI_EEI12(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI12) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI13[13] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI13 (13U) //!< Bit position for DMA_EEI_EEI13. +#define BM_DMA_EEI_EEI13 (0x00002000U) //!< Bit mask for DMA_EEI_EEI13. +#define BS_DMA_EEI_EEI13 (1U) //!< Bit field size in bits for DMA_EEI_EEI13. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI13 field. +#define BR_DMA_EEI_EEI13(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI13)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI13. +#define BF_DMA_EEI_EEI13(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI13), uint32_t) & BM_DMA_EEI_EEI13) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI13 field to a new value. +#define BW_DMA_EEI_EEI13(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI13) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI14[14] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI14 (14U) //!< Bit position for DMA_EEI_EEI14. +#define BM_DMA_EEI_EEI14 (0x00004000U) //!< Bit mask for DMA_EEI_EEI14. +#define BS_DMA_EEI_EEI14 (1U) //!< Bit field size in bits for DMA_EEI_EEI14. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI14 field. +#define BR_DMA_EEI_EEI14(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI14)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI14. +#define BF_DMA_EEI_EEI14(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI14), uint32_t) & BM_DMA_EEI_EEI14) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI14 field to a new value. +#define BW_DMA_EEI_EEI14(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI14) = (v)) +#endif +//@} + +/*! + * @name Register DMA_EEI, field EEI15[15] (RW) + * + * Values: + * - 0 - The error signal for corresponding channel does not generate an error + * interrupt + * - 1 - The assertion of the error signal for corresponding channel generates + * an error interrupt request + */ +//@{ +#define BP_DMA_EEI_EEI15 (15U) //!< Bit position for DMA_EEI_EEI15. +#define BM_DMA_EEI_EEI15 (0x00008000U) //!< Bit mask for DMA_EEI_EEI15. +#define BS_DMA_EEI_EEI15 (1U) //!< Bit field size in bits for DMA_EEI_EEI15. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_EEI_EEI15 field. +#define BR_DMA_EEI_EEI15(x) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI15)) +#endif + +//! @brief Format value for bitfield DMA_EEI_EEI15. +#define BF_DMA_EEI_EEI15(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_EEI_EEI15), uint32_t) & BM_DMA_EEI_EEI15) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EEI15 field to a new value. +#define BW_DMA_EEI_EEI15(x, v) (BITBAND_ACCESS32(HW_DMA_EEI_ADDR(x), BP_DMA_EEI_EEI15) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_CEEI - Clear Enable Error Interrupt Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_CEEI - Clear Enable Error Interrupt Register (WO) + * + * Reset value: 0x00U + * + * The CEEI provides a simple memory-mapped mechanism to clear a given bit in + * the EEI to disable the error interrupt for a given channel. The data value on a + * register write causes the corresponding bit in the EEI to be cleared. Setting + * the CAEE bit provides a global clear function, forcing the EEI contents to be + * cleared, disabling all DMA request inputs. If the NOP bit is set, the command + * is ignored. This allows you to write multiple-byte registers as a 32-bit word. + * Reads of this register return all zeroes. + */ +typedef union _hw_dma_ceei +{ + uint8_t U; + struct _hw_dma_ceei_bitfields + { + uint8_t CEEI : 4; //!< [3:0] Clear Enable Error Interrupt + uint8_t RESERVED0 : 2; //!< [5:4] + uint8_t CAEE : 1; //!< [6] Clear All Enable Error Interrupts + uint8_t NOP : 1; //!< [7] No Op enable + } B; +} hw_dma_ceei_t; +#endif + +/*! + * @name Constants and macros for entire DMA_CEEI register + */ +//@{ +#define HW_DMA_CEEI_ADDR(x) (REGS_DMA_BASE(x) + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_CEEI(x) (*(__O hw_dma_ceei_t *) HW_DMA_CEEI_ADDR(x)) +#define HW_DMA_CEEI_RD(x) (HW_DMA_CEEI(x).U) +#define HW_DMA_CEEI_WR(x, v) (HW_DMA_CEEI(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual DMA_CEEI bitfields + */ + +/*! + * @name Register DMA_CEEI, field CEEI[3:0] (WORZ) + * + * Clears the corresponding bit in EEI + */ +//@{ +#define BP_DMA_CEEI_CEEI (0U) //!< Bit position for DMA_CEEI_CEEI. +#define BM_DMA_CEEI_CEEI (0x0FU) //!< Bit mask for DMA_CEEI_CEEI. +#define BS_DMA_CEEI_CEEI (4U) //!< Bit field size in bits for DMA_CEEI_CEEI. + +//! @brief Format value for bitfield DMA_CEEI_CEEI. +#define BF_DMA_CEEI_CEEI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CEEI_CEEI), uint8_t) & BM_DMA_CEEI_CEEI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CEEI field to a new value. +#define BW_DMA_CEEI_CEEI(x, v) (HW_DMA_CEEI_WR(x, (HW_DMA_CEEI_RD(x) & ~BM_DMA_CEEI_CEEI) | BF_DMA_CEEI_CEEI(v))) +#endif +//@} + +/*! + * @name Register DMA_CEEI, field CAEE[6] (WORZ) + * + * Values: + * - 0 - Clear only the EEI bit specified in the CEEI field + * - 1 - Clear all bits in EEI + */ +//@{ +#define BP_DMA_CEEI_CAEE (6U) //!< Bit position for DMA_CEEI_CAEE. +#define BM_DMA_CEEI_CAEE (0x40U) //!< Bit mask for DMA_CEEI_CAEE. +#define BS_DMA_CEEI_CAEE (1U) //!< Bit field size in bits for DMA_CEEI_CAEE. + +//! @brief Format value for bitfield DMA_CEEI_CAEE. +#define BF_DMA_CEEI_CAEE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CEEI_CAEE), uint8_t) & BM_DMA_CEEI_CAEE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CAEE field to a new value. +#define BW_DMA_CEEI_CAEE(x, v) (BITBAND_ACCESS8(HW_DMA_CEEI_ADDR(x), BP_DMA_CEEI_CAEE) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CEEI, field NOP[7] (WORZ) + * + * Values: + * - 0 - Normal operation + * - 1 - No operation, ignore the other bits in this register + */ +//@{ +#define BP_DMA_CEEI_NOP (7U) //!< Bit position for DMA_CEEI_NOP. +#define BM_DMA_CEEI_NOP (0x80U) //!< Bit mask for DMA_CEEI_NOP. +#define BS_DMA_CEEI_NOP (1U) //!< Bit field size in bits for DMA_CEEI_NOP. + +//! @brief Format value for bitfield DMA_CEEI_NOP. +#define BF_DMA_CEEI_NOP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CEEI_NOP), uint8_t) & BM_DMA_CEEI_NOP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NOP field to a new value. +#define BW_DMA_CEEI_NOP(x, v) (BITBAND_ACCESS8(HW_DMA_CEEI_ADDR(x), BP_DMA_CEEI_NOP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_SEEI - Set Enable Error Interrupt Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_SEEI - Set Enable Error Interrupt Register (WO) + * + * Reset value: 0x00U + * + * The SEEI provides a simple memory-mapped mechanism to set a given bit in the + * EEI to enable the error interrupt for a given channel. The data value on a + * register write causes the corresponding bit in the EEI to be set. Setting the + * SAEE bit provides a global set function, forcing the entire EEI contents to be + * set. If the NOP bit is set, the command is ignored. This allows you to write + * multiple-byte registers as a 32-bit word. Reads of this register return all + * zeroes. + */ +typedef union _hw_dma_seei +{ + uint8_t U; + struct _hw_dma_seei_bitfields + { + uint8_t SEEI : 4; //!< [3:0] Set Enable Error Interrupt + uint8_t RESERVED0 : 2; //!< [5:4] + uint8_t SAEE : 1; //!< [6] Sets All Enable Error Interrupts + uint8_t NOP : 1; //!< [7] No Op enable + } B; +} hw_dma_seei_t; +#endif + +/*! + * @name Constants and macros for entire DMA_SEEI register + */ +//@{ +#define HW_DMA_SEEI_ADDR(x) (REGS_DMA_BASE(x) + 0x19U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_SEEI(x) (*(__O hw_dma_seei_t *) HW_DMA_SEEI_ADDR(x)) +#define HW_DMA_SEEI_RD(x) (HW_DMA_SEEI(x).U) +#define HW_DMA_SEEI_WR(x, v) (HW_DMA_SEEI(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual DMA_SEEI bitfields + */ + +/*! + * @name Register DMA_SEEI, field SEEI[3:0] (WORZ) + * + * Sets the corresponding bit in EEI + */ +//@{ +#define BP_DMA_SEEI_SEEI (0U) //!< Bit position for DMA_SEEI_SEEI. +#define BM_DMA_SEEI_SEEI (0x0FU) //!< Bit mask for DMA_SEEI_SEEI. +#define BS_DMA_SEEI_SEEI (4U) //!< Bit field size in bits for DMA_SEEI_SEEI. + +//! @brief Format value for bitfield DMA_SEEI_SEEI. +#define BF_DMA_SEEI_SEEI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_SEEI_SEEI), uint8_t) & BM_DMA_SEEI_SEEI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SEEI field to a new value. +#define BW_DMA_SEEI_SEEI(x, v) (HW_DMA_SEEI_WR(x, (HW_DMA_SEEI_RD(x) & ~BM_DMA_SEEI_SEEI) | BF_DMA_SEEI_SEEI(v))) +#endif +//@} + +/*! + * @name Register DMA_SEEI, field SAEE[6] (WORZ) + * + * Values: + * - 0 - Set only the EEI bit specified in the SEEI field. + * - 1 - Sets all bits in EEI + */ +//@{ +#define BP_DMA_SEEI_SAEE (6U) //!< Bit position for DMA_SEEI_SAEE. +#define BM_DMA_SEEI_SAEE (0x40U) //!< Bit mask for DMA_SEEI_SAEE. +#define BS_DMA_SEEI_SAEE (1U) //!< Bit field size in bits for DMA_SEEI_SAEE. + +//! @brief Format value for bitfield DMA_SEEI_SAEE. +#define BF_DMA_SEEI_SAEE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_SEEI_SAEE), uint8_t) & BM_DMA_SEEI_SAEE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SAEE field to a new value. +#define BW_DMA_SEEI_SAEE(x, v) (BITBAND_ACCESS8(HW_DMA_SEEI_ADDR(x), BP_DMA_SEEI_SAEE) = (v)) +#endif +//@} + +/*! + * @name Register DMA_SEEI, field NOP[7] (WORZ) + * + * Values: + * - 0 - Normal operation + * - 1 - No operation, ignore the other bits in this register + */ +//@{ +#define BP_DMA_SEEI_NOP (7U) //!< Bit position for DMA_SEEI_NOP. +#define BM_DMA_SEEI_NOP (0x80U) //!< Bit mask for DMA_SEEI_NOP. +#define BS_DMA_SEEI_NOP (1U) //!< Bit field size in bits for DMA_SEEI_NOP. + +//! @brief Format value for bitfield DMA_SEEI_NOP. +#define BF_DMA_SEEI_NOP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_SEEI_NOP), uint8_t) & BM_DMA_SEEI_NOP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NOP field to a new value. +#define BW_DMA_SEEI_NOP(x, v) (BITBAND_ACCESS8(HW_DMA_SEEI_ADDR(x), BP_DMA_SEEI_NOP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_CERQ - Clear Enable Request Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_CERQ - Clear Enable Request Register (WO) + * + * Reset value: 0x00U + * + * The CERQ provides a simple memory-mapped mechanism to clear a given bit in + * the ERQ to disable the DMA request for a given channel. The data value on a + * register write causes the corresponding bit in the ERQ to be cleared. Setting the + * CAER bit provides a global clear function, forcing the entire contents of the + * ERQ to be cleared, disabling all DMA request inputs. If NOP is set, the + * command is ignored. This allows you to write multiple-byte registers as a 32-bit + * word. Reads of this register return all zeroes. + */ +typedef union _hw_dma_cerq +{ + uint8_t U; + struct _hw_dma_cerq_bitfields + { + uint8_t CERQ : 4; //!< [3:0] Clear Enable Request + uint8_t RESERVED0 : 2; //!< [5:4] + uint8_t CAER : 1; //!< [6] Clear All Enable Requests + uint8_t NOP : 1; //!< [7] No Op enable + } B; +} hw_dma_cerq_t; +#endif + +/*! + * @name Constants and macros for entire DMA_CERQ register + */ +//@{ +#define HW_DMA_CERQ_ADDR(x) (REGS_DMA_BASE(x) + 0x1AU) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_CERQ(x) (*(__O hw_dma_cerq_t *) HW_DMA_CERQ_ADDR(x)) +#define HW_DMA_CERQ_RD(x) (HW_DMA_CERQ(x).U) +#define HW_DMA_CERQ_WR(x, v) (HW_DMA_CERQ(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual DMA_CERQ bitfields + */ + +/*! + * @name Register DMA_CERQ, field CERQ[3:0] (WORZ) + * + * Clears the corresponding bit in ERQ + */ +//@{ +#define BP_DMA_CERQ_CERQ (0U) //!< Bit position for DMA_CERQ_CERQ. +#define BM_DMA_CERQ_CERQ (0x0FU) //!< Bit mask for DMA_CERQ_CERQ. +#define BS_DMA_CERQ_CERQ (4U) //!< Bit field size in bits for DMA_CERQ_CERQ. + +//! @brief Format value for bitfield DMA_CERQ_CERQ. +#define BF_DMA_CERQ_CERQ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CERQ_CERQ), uint8_t) & BM_DMA_CERQ_CERQ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CERQ field to a new value. +#define BW_DMA_CERQ_CERQ(x, v) (HW_DMA_CERQ_WR(x, (HW_DMA_CERQ_RD(x) & ~BM_DMA_CERQ_CERQ) | BF_DMA_CERQ_CERQ(v))) +#endif +//@} + +/*! + * @name Register DMA_CERQ, field CAER[6] (WORZ) + * + * Values: + * - 0 - Clear only the ERQ bit specified in the CERQ field + * - 1 - Clear all bits in ERQ + */ +//@{ +#define BP_DMA_CERQ_CAER (6U) //!< Bit position for DMA_CERQ_CAER. +#define BM_DMA_CERQ_CAER (0x40U) //!< Bit mask for DMA_CERQ_CAER. +#define BS_DMA_CERQ_CAER (1U) //!< Bit field size in bits for DMA_CERQ_CAER. + +//! @brief Format value for bitfield DMA_CERQ_CAER. +#define BF_DMA_CERQ_CAER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CERQ_CAER), uint8_t) & BM_DMA_CERQ_CAER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CAER field to a new value. +#define BW_DMA_CERQ_CAER(x, v) (BITBAND_ACCESS8(HW_DMA_CERQ_ADDR(x), BP_DMA_CERQ_CAER) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CERQ, field NOP[7] (WORZ) + * + * Values: + * - 0 - Normal operation + * - 1 - No operation, ignore the other bits in this register + */ +//@{ +#define BP_DMA_CERQ_NOP (7U) //!< Bit position for DMA_CERQ_NOP. +#define BM_DMA_CERQ_NOP (0x80U) //!< Bit mask for DMA_CERQ_NOP. +#define BS_DMA_CERQ_NOP (1U) //!< Bit field size in bits for DMA_CERQ_NOP. + +//! @brief Format value for bitfield DMA_CERQ_NOP. +#define BF_DMA_CERQ_NOP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CERQ_NOP), uint8_t) & BM_DMA_CERQ_NOP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NOP field to a new value. +#define BW_DMA_CERQ_NOP(x, v) (BITBAND_ACCESS8(HW_DMA_CERQ_ADDR(x), BP_DMA_CERQ_NOP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_SERQ - Set Enable Request Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_SERQ - Set Enable Request Register (WO) + * + * Reset value: 0x00U + * + * The SERQ provides a simple memory-mapped mechanism to set a given bit in the + * ERQ to enable the DMA request for a given channel. The data value on a + * register write causes the corresponding bit in the ERQ to be set. Setting the SAER + * bit provides a global set function, forcing the entire contents of ERQ to be + * set. If the NOP bit is set, the command is ignored. This allows you to write + * multiple-byte registers as a 32-bit word. Reads of this register return all zeroes. + */ +typedef union _hw_dma_serq +{ + uint8_t U; + struct _hw_dma_serq_bitfields + { + uint8_t SERQ : 4; //!< [3:0] Set enable request + uint8_t RESERVED0 : 2; //!< [5:4] + uint8_t SAER : 1; //!< [6] Set All Enable Requests + uint8_t NOP : 1; //!< [7] No Op enable + } B; +} hw_dma_serq_t; +#endif + +/*! + * @name Constants and macros for entire DMA_SERQ register + */ +//@{ +#define HW_DMA_SERQ_ADDR(x) (REGS_DMA_BASE(x) + 0x1BU) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_SERQ(x) (*(__O hw_dma_serq_t *) HW_DMA_SERQ_ADDR(x)) +#define HW_DMA_SERQ_RD(x) (HW_DMA_SERQ(x).U) +#define HW_DMA_SERQ_WR(x, v) (HW_DMA_SERQ(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual DMA_SERQ bitfields + */ + +/*! + * @name Register DMA_SERQ, field SERQ[3:0] (WORZ) + * + * Sets the corresponding bit in ERQ + */ +//@{ +#define BP_DMA_SERQ_SERQ (0U) //!< Bit position for DMA_SERQ_SERQ. +#define BM_DMA_SERQ_SERQ (0x0FU) //!< Bit mask for DMA_SERQ_SERQ. +#define BS_DMA_SERQ_SERQ (4U) //!< Bit field size in bits for DMA_SERQ_SERQ. + +//! @brief Format value for bitfield DMA_SERQ_SERQ. +#define BF_DMA_SERQ_SERQ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_SERQ_SERQ), uint8_t) & BM_DMA_SERQ_SERQ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SERQ field to a new value. +#define BW_DMA_SERQ_SERQ(x, v) (HW_DMA_SERQ_WR(x, (HW_DMA_SERQ_RD(x) & ~BM_DMA_SERQ_SERQ) | BF_DMA_SERQ_SERQ(v))) +#endif +//@} + +/*! + * @name Register DMA_SERQ, field SAER[6] (WORZ) + * + * Values: + * - 0 - Set only the ERQ bit specified in the SERQ field + * - 1 - Set all bits in ERQ + */ +//@{ +#define BP_DMA_SERQ_SAER (6U) //!< Bit position for DMA_SERQ_SAER. +#define BM_DMA_SERQ_SAER (0x40U) //!< Bit mask for DMA_SERQ_SAER. +#define BS_DMA_SERQ_SAER (1U) //!< Bit field size in bits for DMA_SERQ_SAER. + +//! @brief Format value for bitfield DMA_SERQ_SAER. +#define BF_DMA_SERQ_SAER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_SERQ_SAER), uint8_t) & BM_DMA_SERQ_SAER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SAER field to a new value. +#define BW_DMA_SERQ_SAER(x, v) (BITBAND_ACCESS8(HW_DMA_SERQ_ADDR(x), BP_DMA_SERQ_SAER) = (v)) +#endif +//@} + +/*! + * @name Register DMA_SERQ, field NOP[7] (WORZ) + * + * Values: + * - 0 - Normal operation + * - 1 - No operation, ignore the other bits in this register + */ +//@{ +#define BP_DMA_SERQ_NOP (7U) //!< Bit position for DMA_SERQ_NOP. +#define BM_DMA_SERQ_NOP (0x80U) //!< Bit mask for DMA_SERQ_NOP. +#define BS_DMA_SERQ_NOP (1U) //!< Bit field size in bits for DMA_SERQ_NOP. + +//! @brief Format value for bitfield DMA_SERQ_NOP. +#define BF_DMA_SERQ_NOP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_SERQ_NOP), uint8_t) & BM_DMA_SERQ_NOP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NOP field to a new value. +#define BW_DMA_SERQ_NOP(x, v) (BITBAND_ACCESS8(HW_DMA_SERQ_ADDR(x), BP_DMA_SERQ_NOP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_CDNE - Clear DONE Status Bit Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_CDNE - Clear DONE Status Bit Register (WO) + * + * Reset value: 0x00U + * + * The CDNE provides a simple memory-mapped mechanism to clear the DONE bit in + * the TCD of the given channel. The data value on a register write causes the + * DONE bit in the corresponding transfer control descriptor to be cleared. Setting + * the CADN bit provides a global clear function, forcing all DONE bits to be + * cleared. If the NOP bit is set, the command is ignored. This allows you to write + * multiple-byte registers as a 32-bit word. Reads of this register return all + * zeroes. + */ +typedef union _hw_dma_cdne +{ + uint8_t U; + struct _hw_dma_cdne_bitfields + { + uint8_t CDNE : 4; //!< [3:0] Clear DONE Bit + uint8_t RESERVED0 : 2; //!< [5:4] + uint8_t CADN : 1; //!< [6] Clears All DONE Bits + uint8_t NOP : 1; //!< [7] No Op enable + } B; +} hw_dma_cdne_t; +#endif + +/*! + * @name Constants and macros for entire DMA_CDNE register + */ +//@{ +#define HW_DMA_CDNE_ADDR(x) (REGS_DMA_BASE(x) + 0x1CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_CDNE(x) (*(__O hw_dma_cdne_t *) HW_DMA_CDNE_ADDR(x)) +#define HW_DMA_CDNE_RD(x) (HW_DMA_CDNE(x).U) +#define HW_DMA_CDNE_WR(x, v) (HW_DMA_CDNE(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual DMA_CDNE bitfields + */ + +/*! + * @name Register DMA_CDNE, field CDNE[3:0] (WORZ) + * + * Clears the corresponding bit in TCDn_CSR[DONE] + */ +//@{ +#define BP_DMA_CDNE_CDNE (0U) //!< Bit position for DMA_CDNE_CDNE. +#define BM_DMA_CDNE_CDNE (0x0FU) //!< Bit mask for DMA_CDNE_CDNE. +#define BS_DMA_CDNE_CDNE (4U) //!< Bit field size in bits for DMA_CDNE_CDNE. + +//! @brief Format value for bitfield DMA_CDNE_CDNE. +#define BF_DMA_CDNE_CDNE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CDNE_CDNE), uint8_t) & BM_DMA_CDNE_CDNE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CDNE field to a new value. +#define BW_DMA_CDNE_CDNE(x, v) (HW_DMA_CDNE_WR(x, (HW_DMA_CDNE_RD(x) & ~BM_DMA_CDNE_CDNE) | BF_DMA_CDNE_CDNE(v))) +#endif +//@} + +/*! + * @name Register DMA_CDNE, field CADN[6] (WORZ) + * + * Values: + * - 0 - Clears only the TCDn_CSR[DONE] bit specified in the CDNE field + * - 1 - Clears all bits in TCDn_CSR[DONE] + */ +//@{ +#define BP_DMA_CDNE_CADN (6U) //!< Bit position for DMA_CDNE_CADN. +#define BM_DMA_CDNE_CADN (0x40U) //!< Bit mask for DMA_CDNE_CADN. +#define BS_DMA_CDNE_CADN (1U) //!< Bit field size in bits for DMA_CDNE_CADN. + +//! @brief Format value for bitfield DMA_CDNE_CADN. +#define BF_DMA_CDNE_CADN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CDNE_CADN), uint8_t) & BM_DMA_CDNE_CADN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CADN field to a new value. +#define BW_DMA_CDNE_CADN(x, v) (BITBAND_ACCESS8(HW_DMA_CDNE_ADDR(x), BP_DMA_CDNE_CADN) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CDNE, field NOP[7] (WORZ) + * + * Values: + * - 0 - Normal operation + * - 1 - No operation, ignore the other bits in this register + */ +//@{ +#define BP_DMA_CDNE_NOP (7U) //!< Bit position for DMA_CDNE_NOP. +#define BM_DMA_CDNE_NOP (0x80U) //!< Bit mask for DMA_CDNE_NOP. +#define BS_DMA_CDNE_NOP (1U) //!< Bit field size in bits for DMA_CDNE_NOP. + +//! @brief Format value for bitfield DMA_CDNE_NOP. +#define BF_DMA_CDNE_NOP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CDNE_NOP), uint8_t) & BM_DMA_CDNE_NOP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NOP field to a new value. +#define BW_DMA_CDNE_NOP(x, v) (BITBAND_ACCESS8(HW_DMA_CDNE_ADDR(x), BP_DMA_CDNE_NOP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_SSRT - Set START Bit Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_SSRT - Set START Bit Register (WO) + * + * Reset value: 0x00U + * + * The SSRT provides a simple memory-mapped mechanism to set the START bit in + * the TCD of the given channel. The data value on a register write causes the + * START bit in the corresponding transfer control descriptor to be set. Setting the + * SAST bit provides a global set function, forcing all START bits to be set. If + * the NOP bit is set, the command is ignored. This allows you to write + * multiple-byte registers as a 32-bit word. Reads of this register return all zeroes. + */ +typedef union _hw_dma_ssrt +{ + uint8_t U; + struct _hw_dma_ssrt_bitfields + { + uint8_t SSRT : 4; //!< [3:0] Set START Bit + uint8_t RESERVED0 : 2; //!< [5:4] + uint8_t SAST : 1; //!< [6] Set All START Bits (activates all channels) + uint8_t NOP : 1; //!< [7] No Op enable + } B; +} hw_dma_ssrt_t; +#endif + +/*! + * @name Constants and macros for entire DMA_SSRT register + */ +//@{ +#define HW_DMA_SSRT_ADDR(x) (REGS_DMA_BASE(x) + 0x1DU) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_SSRT(x) (*(__O hw_dma_ssrt_t *) HW_DMA_SSRT_ADDR(x)) +#define HW_DMA_SSRT_RD(x) (HW_DMA_SSRT(x).U) +#define HW_DMA_SSRT_WR(x, v) (HW_DMA_SSRT(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual DMA_SSRT bitfields + */ + +/*! + * @name Register DMA_SSRT, field SSRT[3:0] (WORZ) + * + * Sets the corresponding bit in TCDn_CSR[START] + */ +//@{ +#define BP_DMA_SSRT_SSRT (0U) //!< Bit position for DMA_SSRT_SSRT. +#define BM_DMA_SSRT_SSRT (0x0FU) //!< Bit mask for DMA_SSRT_SSRT. +#define BS_DMA_SSRT_SSRT (4U) //!< Bit field size in bits for DMA_SSRT_SSRT. + +//! @brief Format value for bitfield DMA_SSRT_SSRT. +#define BF_DMA_SSRT_SSRT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_SSRT_SSRT), uint8_t) & BM_DMA_SSRT_SSRT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SSRT field to a new value. +#define BW_DMA_SSRT_SSRT(x, v) (HW_DMA_SSRT_WR(x, (HW_DMA_SSRT_RD(x) & ~BM_DMA_SSRT_SSRT) | BF_DMA_SSRT_SSRT(v))) +#endif +//@} + +/*! + * @name Register DMA_SSRT, field SAST[6] (WORZ) + * + * Values: + * - 0 - Set only the TCDn_CSR[START] bit specified in the SSRT field + * - 1 - Set all bits in TCDn_CSR[START] + */ +//@{ +#define BP_DMA_SSRT_SAST (6U) //!< Bit position for DMA_SSRT_SAST. +#define BM_DMA_SSRT_SAST (0x40U) //!< Bit mask for DMA_SSRT_SAST. +#define BS_DMA_SSRT_SAST (1U) //!< Bit field size in bits for DMA_SSRT_SAST. + +//! @brief Format value for bitfield DMA_SSRT_SAST. +#define BF_DMA_SSRT_SAST(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_SSRT_SAST), uint8_t) & BM_DMA_SSRT_SAST) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SAST field to a new value. +#define BW_DMA_SSRT_SAST(x, v) (BITBAND_ACCESS8(HW_DMA_SSRT_ADDR(x), BP_DMA_SSRT_SAST) = (v)) +#endif +//@} + +/*! + * @name Register DMA_SSRT, field NOP[7] (WORZ) + * + * Values: + * - 0 - Normal operation + * - 1 - No operation, ignore the other bits in this register + */ +//@{ +#define BP_DMA_SSRT_NOP (7U) //!< Bit position for DMA_SSRT_NOP. +#define BM_DMA_SSRT_NOP (0x80U) //!< Bit mask for DMA_SSRT_NOP. +#define BS_DMA_SSRT_NOP (1U) //!< Bit field size in bits for DMA_SSRT_NOP. + +//! @brief Format value for bitfield DMA_SSRT_NOP. +#define BF_DMA_SSRT_NOP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_SSRT_NOP), uint8_t) & BM_DMA_SSRT_NOP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NOP field to a new value. +#define BW_DMA_SSRT_NOP(x, v) (BITBAND_ACCESS8(HW_DMA_SSRT_ADDR(x), BP_DMA_SSRT_NOP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_CERR - Clear Error Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_CERR - Clear Error Register (WO) + * + * Reset value: 0x00U + * + * The CERR provides a simple memory-mapped mechanism to clear a given bit in + * the ERR to disable the error condition flag for a given channel. The given value + * on a register write causes the corresponding bit in the ERR to be cleared. + * Setting the CAEI bit provides a global clear function, forcing the ERR contents + * to be cleared, clearing all channel error indicators. If the NOP bit is set, + * the command is ignored. This allows you to write multiple-byte registers as a + * 32-bit word. Reads of this register return all zeroes. + */ +typedef union _hw_dma_cerr +{ + uint8_t U; + struct _hw_dma_cerr_bitfields + { + uint8_t CERR : 4; //!< [3:0] Clear Error Indicator + uint8_t RESERVED0 : 2; //!< [5:4] + uint8_t CAEI : 1; //!< [6] Clear All Error Indicators + uint8_t NOP : 1; //!< [7] No Op enable + } B; +} hw_dma_cerr_t; +#endif + +/*! + * @name Constants and macros for entire DMA_CERR register + */ +//@{ +#define HW_DMA_CERR_ADDR(x) (REGS_DMA_BASE(x) + 0x1EU) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_CERR(x) (*(__O hw_dma_cerr_t *) HW_DMA_CERR_ADDR(x)) +#define HW_DMA_CERR_RD(x) (HW_DMA_CERR(x).U) +#define HW_DMA_CERR_WR(x, v) (HW_DMA_CERR(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual DMA_CERR bitfields + */ + +/*! + * @name Register DMA_CERR, field CERR[3:0] (WORZ) + * + * Clears the corresponding bit in ERR + */ +//@{ +#define BP_DMA_CERR_CERR (0U) //!< Bit position for DMA_CERR_CERR. +#define BM_DMA_CERR_CERR (0x0FU) //!< Bit mask for DMA_CERR_CERR. +#define BS_DMA_CERR_CERR (4U) //!< Bit field size in bits for DMA_CERR_CERR. + +//! @brief Format value for bitfield DMA_CERR_CERR. +#define BF_DMA_CERR_CERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CERR_CERR), uint8_t) & BM_DMA_CERR_CERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CERR field to a new value. +#define BW_DMA_CERR_CERR(x, v) (HW_DMA_CERR_WR(x, (HW_DMA_CERR_RD(x) & ~BM_DMA_CERR_CERR) | BF_DMA_CERR_CERR(v))) +#endif +//@} + +/*! + * @name Register DMA_CERR, field CAEI[6] (WORZ) + * + * Values: + * - 0 - Clear only the ERR bit specified in the CERR field + * - 1 - Clear all bits in ERR + */ +//@{ +#define BP_DMA_CERR_CAEI (6U) //!< Bit position for DMA_CERR_CAEI. +#define BM_DMA_CERR_CAEI (0x40U) //!< Bit mask for DMA_CERR_CAEI. +#define BS_DMA_CERR_CAEI (1U) //!< Bit field size in bits for DMA_CERR_CAEI. + +//! @brief Format value for bitfield DMA_CERR_CAEI. +#define BF_DMA_CERR_CAEI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CERR_CAEI), uint8_t) & BM_DMA_CERR_CAEI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CAEI field to a new value. +#define BW_DMA_CERR_CAEI(x, v) (BITBAND_ACCESS8(HW_DMA_CERR_ADDR(x), BP_DMA_CERR_CAEI) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CERR, field NOP[7] (WORZ) + * + * Values: + * - 0 - Normal operation + * - 1 - No operation, ignore the other bits in this register + */ +//@{ +#define BP_DMA_CERR_NOP (7U) //!< Bit position for DMA_CERR_NOP. +#define BM_DMA_CERR_NOP (0x80U) //!< Bit mask for DMA_CERR_NOP. +#define BS_DMA_CERR_NOP (1U) //!< Bit field size in bits for DMA_CERR_NOP. + +//! @brief Format value for bitfield DMA_CERR_NOP. +#define BF_DMA_CERR_NOP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CERR_NOP), uint8_t) & BM_DMA_CERR_NOP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NOP field to a new value. +#define BW_DMA_CERR_NOP(x, v) (BITBAND_ACCESS8(HW_DMA_CERR_ADDR(x), BP_DMA_CERR_NOP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_CINT - Clear Interrupt Request Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_CINT - Clear Interrupt Request Register (WO) + * + * Reset value: 0x00U + * + * The CINT provides a simple, memory-mapped mechanism to clear a given bit in + * the INT to disable the interrupt request for a given channel. The given value + * on a register write causes the corresponding bit in the INT to be cleared. + * Setting the CAIR bit provides a global clear function, forcing the entire contents + * of the INT to be cleared, disabling all DMA interrupt requests. If the NOP + * bit is set, the command is ignored. This allows you to write multiple-byte + * registers as a 32-bit word. Reads of this register return all zeroes. + */ +typedef union _hw_dma_cint +{ + uint8_t U; + struct _hw_dma_cint_bitfields + { + uint8_t CINT : 4; //!< [3:0] Clear Interrupt Request + uint8_t RESERVED0 : 2; //!< [5:4] + uint8_t CAIR : 1; //!< [6] Clear All Interrupt Requests + uint8_t NOP : 1; //!< [7] No Op enable + } B; +} hw_dma_cint_t; +#endif + +/*! + * @name Constants and macros for entire DMA_CINT register + */ +//@{ +#define HW_DMA_CINT_ADDR(x) (REGS_DMA_BASE(x) + 0x1FU) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_CINT(x) (*(__O hw_dma_cint_t *) HW_DMA_CINT_ADDR(x)) +#define HW_DMA_CINT_RD(x) (HW_DMA_CINT(x).U) +#define HW_DMA_CINT_WR(x, v) (HW_DMA_CINT(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual DMA_CINT bitfields + */ + +/*! + * @name Register DMA_CINT, field CINT[3:0] (WORZ) + * + * Clears the corresponding bit in INT + */ +//@{ +#define BP_DMA_CINT_CINT (0U) //!< Bit position for DMA_CINT_CINT. +#define BM_DMA_CINT_CINT (0x0FU) //!< Bit mask for DMA_CINT_CINT. +#define BS_DMA_CINT_CINT (4U) //!< Bit field size in bits for DMA_CINT_CINT. + +//! @brief Format value for bitfield DMA_CINT_CINT. +#define BF_DMA_CINT_CINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CINT_CINT), uint8_t) & BM_DMA_CINT_CINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CINT field to a new value. +#define BW_DMA_CINT_CINT(x, v) (HW_DMA_CINT_WR(x, (HW_DMA_CINT_RD(x) & ~BM_DMA_CINT_CINT) | BF_DMA_CINT_CINT(v))) +#endif +//@} + +/*! + * @name Register DMA_CINT, field CAIR[6] (WORZ) + * + * Values: + * - 0 - Clear only the INT bit specified in the CINT field + * - 1 - Clear all bits in INT + */ +//@{ +#define BP_DMA_CINT_CAIR (6U) //!< Bit position for DMA_CINT_CAIR. +#define BM_DMA_CINT_CAIR (0x40U) //!< Bit mask for DMA_CINT_CAIR. +#define BS_DMA_CINT_CAIR (1U) //!< Bit field size in bits for DMA_CINT_CAIR. + +//! @brief Format value for bitfield DMA_CINT_CAIR. +#define BF_DMA_CINT_CAIR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CINT_CAIR), uint8_t) & BM_DMA_CINT_CAIR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CAIR field to a new value. +#define BW_DMA_CINT_CAIR(x, v) (BITBAND_ACCESS8(HW_DMA_CINT_ADDR(x), BP_DMA_CINT_CAIR) = (v)) +#endif +//@} + +/*! + * @name Register DMA_CINT, field NOP[7] (WORZ) + * + * Values: + * - 0 - Normal operation + * - 1 - No operation, ignore the other bits in this register + */ +//@{ +#define BP_DMA_CINT_NOP (7U) //!< Bit position for DMA_CINT_NOP. +#define BM_DMA_CINT_NOP (0x80U) //!< Bit mask for DMA_CINT_NOP. +#define BS_DMA_CINT_NOP (1U) //!< Bit field size in bits for DMA_CINT_NOP. + +//! @brief Format value for bitfield DMA_CINT_NOP. +#define BF_DMA_CINT_NOP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_CINT_NOP), uint8_t) & BM_DMA_CINT_NOP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NOP field to a new value. +#define BW_DMA_CINT_NOP(x, v) (BITBAND_ACCESS8(HW_DMA_CINT_ADDR(x), BP_DMA_CINT_NOP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_INT - Interrupt Request Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_INT - Interrupt Request Register (RW) + * + * Reset value: 0x00000000U + * + * The INT register provides a bit map for the 16 channels signaling the + * presence of an interrupt request for each channel. Depending on the appropriate bit + * setting in the transfer-control descriptors, the eDMA engine generates an + * interrupt on data transfer completion. The outputs of this register are directly + * routed to the interrupt controller (INTC). During the interrupt-service routine + * associated with any given channel, it is the software's responsibility to + * clear the appropriate bit, negating the interrupt request. Typically, a write to + * the CINT register in the interrupt service routine is used for this purpose. + * The state of any given channel's interrupt request is directly affected by + * writes to this register; it is also affected by writes to the CINT register. On + * writes to INT, a 1 in any bit position clears the corresponding channel's + * interrupt request. A zero in any bit position has no affect on the corresponding + * channel's current interrupt status. The CINT register is provided so the interrupt + * request for a single channel can easily be cleared without the need to + * perform a read-modify-write sequence to the INT register. + */ +typedef union _hw_dma_int +{ + uint32_t U; + struct _hw_dma_int_bitfields + { + uint32_t INT0 : 1; //!< [0] Interrupt Request 0 + uint32_t INT1 : 1; //!< [1] Interrupt Request 1 + uint32_t INT2 : 1; //!< [2] Interrupt Request 2 + uint32_t INT3 : 1; //!< [3] Interrupt Request 3 + uint32_t INT4 : 1; //!< [4] Interrupt Request 4 + uint32_t INT5 : 1; //!< [5] Interrupt Request 5 + uint32_t INT6 : 1; //!< [6] Interrupt Request 6 + uint32_t INT7 : 1; //!< [7] Interrupt Request 7 + uint32_t INT8 : 1; //!< [8] Interrupt Request 8 + uint32_t INT9 : 1; //!< [9] Interrupt Request 9 + uint32_t INT10 : 1; //!< [10] Interrupt Request 10 + uint32_t INT11 : 1; //!< [11] Interrupt Request 11 + uint32_t INT12 : 1; //!< [12] Interrupt Request 12 + uint32_t INT13 : 1; //!< [13] Interrupt Request 13 + uint32_t INT14 : 1; //!< [14] Interrupt Request 14 + uint32_t INT15 : 1; //!< [15] Interrupt Request 15 + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_dma_int_t; +#endif + +/*! + * @name Constants and macros for entire DMA_INT register + */ +//@{ +#define HW_DMA_INT_ADDR(x) (REGS_DMA_BASE(x) + 0x24U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_INT(x) (*(__IO hw_dma_int_t *) HW_DMA_INT_ADDR(x)) +#define HW_DMA_INT_RD(x) (HW_DMA_INT(x).U) +#define HW_DMA_INT_WR(x, v) (HW_DMA_INT(x).U = (v)) +#define HW_DMA_INT_SET(x, v) (HW_DMA_INT_WR(x, HW_DMA_INT_RD(x) | (v))) +#define HW_DMA_INT_CLR(x, v) (HW_DMA_INT_WR(x, HW_DMA_INT_RD(x) & ~(v))) +#define HW_DMA_INT_TOG(x, v) (HW_DMA_INT_WR(x, HW_DMA_INT_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_INT bitfields + */ + +/*! + * @name Register DMA_INT, field INT0[0] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT0 (0U) //!< Bit position for DMA_INT_INT0. +#define BM_DMA_INT_INT0 (0x00000001U) //!< Bit mask for DMA_INT_INT0. +#define BS_DMA_INT_INT0 (1U) //!< Bit field size in bits for DMA_INT_INT0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT0 field. +#define BR_DMA_INT_INT0(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT0)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT0. +#define BF_DMA_INT_INT0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT0), uint32_t) & BM_DMA_INT_INT0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT0 field to a new value. +#define BW_DMA_INT_INT0(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT0) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT1[1] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT1 (1U) //!< Bit position for DMA_INT_INT1. +#define BM_DMA_INT_INT1 (0x00000002U) //!< Bit mask for DMA_INT_INT1. +#define BS_DMA_INT_INT1 (1U) //!< Bit field size in bits for DMA_INT_INT1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT1 field. +#define BR_DMA_INT_INT1(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT1)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT1. +#define BF_DMA_INT_INT1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT1), uint32_t) & BM_DMA_INT_INT1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT1 field to a new value. +#define BW_DMA_INT_INT1(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT1) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT2[2] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT2 (2U) //!< Bit position for DMA_INT_INT2. +#define BM_DMA_INT_INT2 (0x00000004U) //!< Bit mask for DMA_INT_INT2. +#define BS_DMA_INT_INT2 (1U) //!< Bit field size in bits for DMA_INT_INT2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT2 field. +#define BR_DMA_INT_INT2(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT2)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT2. +#define BF_DMA_INT_INT2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT2), uint32_t) & BM_DMA_INT_INT2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT2 field to a new value. +#define BW_DMA_INT_INT2(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT2) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT3[3] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT3 (3U) //!< Bit position for DMA_INT_INT3. +#define BM_DMA_INT_INT3 (0x00000008U) //!< Bit mask for DMA_INT_INT3. +#define BS_DMA_INT_INT3 (1U) //!< Bit field size in bits for DMA_INT_INT3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT3 field. +#define BR_DMA_INT_INT3(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT3)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT3. +#define BF_DMA_INT_INT3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT3), uint32_t) & BM_DMA_INT_INT3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT3 field to a new value. +#define BW_DMA_INT_INT3(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT3) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT4[4] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT4 (4U) //!< Bit position for DMA_INT_INT4. +#define BM_DMA_INT_INT4 (0x00000010U) //!< Bit mask for DMA_INT_INT4. +#define BS_DMA_INT_INT4 (1U) //!< Bit field size in bits for DMA_INT_INT4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT4 field. +#define BR_DMA_INT_INT4(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT4)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT4. +#define BF_DMA_INT_INT4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT4), uint32_t) & BM_DMA_INT_INT4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT4 field to a new value. +#define BW_DMA_INT_INT4(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT4) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT5[5] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT5 (5U) //!< Bit position for DMA_INT_INT5. +#define BM_DMA_INT_INT5 (0x00000020U) //!< Bit mask for DMA_INT_INT5. +#define BS_DMA_INT_INT5 (1U) //!< Bit field size in bits for DMA_INT_INT5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT5 field. +#define BR_DMA_INT_INT5(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT5)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT5. +#define BF_DMA_INT_INT5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT5), uint32_t) & BM_DMA_INT_INT5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT5 field to a new value. +#define BW_DMA_INT_INT5(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT5) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT6[6] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT6 (6U) //!< Bit position for DMA_INT_INT6. +#define BM_DMA_INT_INT6 (0x00000040U) //!< Bit mask for DMA_INT_INT6. +#define BS_DMA_INT_INT6 (1U) //!< Bit field size in bits for DMA_INT_INT6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT6 field. +#define BR_DMA_INT_INT6(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT6)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT6. +#define BF_DMA_INT_INT6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT6), uint32_t) & BM_DMA_INT_INT6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT6 field to a new value. +#define BW_DMA_INT_INT6(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT6) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT7[7] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT7 (7U) //!< Bit position for DMA_INT_INT7. +#define BM_DMA_INT_INT7 (0x00000080U) //!< Bit mask for DMA_INT_INT7. +#define BS_DMA_INT_INT7 (1U) //!< Bit field size in bits for DMA_INT_INT7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT7 field. +#define BR_DMA_INT_INT7(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT7)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT7. +#define BF_DMA_INT_INT7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT7), uint32_t) & BM_DMA_INT_INT7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT7 field to a new value. +#define BW_DMA_INT_INT7(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT7) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT8[8] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT8 (8U) //!< Bit position for DMA_INT_INT8. +#define BM_DMA_INT_INT8 (0x00000100U) //!< Bit mask for DMA_INT_INT8. +#define BS_DMA_INT_INT8 (1U) //!< Bit field size in bits for DMA_INT_INT8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT8 field. +#define BR_DMA_INT_INT8(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT8)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT8. +#define BF_DMA_INT_INT8(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT8), uint32_t) & BM_DMA_INT_INT8) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT8 field to a new value. +#define BW_DMA_INT_INT8(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT8) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT9[9] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT9 (9U) //!< Bit position for DMA_INT_INT9. +#define BM_DMA_INT_INT9 (0x00000200U) //!< Bit mask for DMA_INT_INT9. +#define BS_DMA_INT_INT9 (1U) //!< Bit field size in bits for DMA_INT_INT9. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT9 field. +#define BR_DMA_INT_INT9(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT9)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT9. +#define BF_DMA_INT_INT9(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT9), uint32_t) & BM_DMA_INT_INT9) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT9 field to a new value. +#define BW_DMA_INT_INT9(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT9) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT10[10] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT10 (10U) //!< Bit position for DMA_INT_INT10. +#define BM_DMA_INT_INT10 (0x00000400U) //!< Bit mask for DMA_INT_INT10. +#define BS_DMA_INT_INT10 (1U) //!< Bit field size in bits for DMA_INT_INT10. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT10 field. +#define BR_DMA_INT_INT10(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT10)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT10. +#define BF_DMA_INT_INT10(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT10), uint32_t) & BM_DMA_INT_INT10) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT10 field to a new value. +#define BW_DMA_INT_INT10(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT10) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT11[11] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT11 (11U) //!< Bit position for DMA_INT_INT11. +#define BM_DMA_INT_INT11 (0x00000800U) //!< Bit mask for DMA_INT_INT11. +#define BS_DMA_INT_INT11 (1U) //!< Bit field size in bits for DMA_INT_INT11. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT11 field. +#define BR_DMA_INT_INT11(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT11)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT11. +#define BF_DMA_INT_INT11(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT11), uint32_t) & BM_DMA_INT_INT11) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT11 field to a new value. +#define BW_DMA_INT_INT11(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT11) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT12[12] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT12 (12U) //!< Bit position for DMA_INT_INT12. +#define BM_DMA_INT_INT12 (0x00001000U) //!< Bit mask for DMA_INT_INT12. +#define BS_DMA_INT_INT12 (1U) //!< Bit field size in bits for DMA_INT_INT12. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT12 field. +#define BR_DMA_INT_INT12(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT12)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT12. +#define BF_DMA_INT_INT12(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT12), uint32_t) & BM_DMA_INT_INT12) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT12 field to a new value. +#define BW_DMA_INT_INT12(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT12) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT13[13] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT13 (13U) //!< Bit position for DMA_INT_INT13. +#define BM_DMA_INT_INT13 (0x00002000U) //!< Bit mask for DMA_INT_INT13. +#define BS_DMA_INT_INT13 (1U) //!< Bit field size in bits for DMA_INT_INT13. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT13 field. +#define BR_DMA_INT_INT13(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT13)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT13. +#define BF_DMA_INT_INT13(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT13), uint32_t) & BM_DMA_INT_INT13) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT13 field to a new value. +#define BW_DMA_INT_INT13(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT13) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT14[14] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT14 (14U) //!< Bit position for DMA_INT_INT14. +#define BM_DMA_INT_INT14 (0x00004000U) //!< Bit mask for DMA_INT_INT14. +#define BS_DMA_INT_INT14 (1U) //!< Bit field size in bits for DMA_INT_INT14. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT14 field. +#define BR_DMA_INT_INT14(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT14)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT14. +#define BF_DMA_INT_INT14(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT14), uint32_t) & BM_DMA_INT_INT14) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT14 field to a new value. +#define BW_DMA_INT_INT14(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT14) = (v)) +#endif +//@} + +/*! + * @name Register DMA_INT, field INT15[15] (W1C) + * + * Values: + * - 0 - The interrupt request for corresponding channel is cleared + * - 1 - The interrupt request for corresponding channel is active + */ +//@{ +#define BP_DMA_INT_INT15 (15U) //!< Bit position for DMA_INT_INT15. +#define BM_DMA_INT_INT15 (0x00008000U) //!< Bit mask for DMA_INT_INT15. +#define BS_DMA_INT_INT15 (1U) //!< Bit field size in bits for DMA_INT_INT15. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_INT_INT15 field. +#define BR_DMA_INT_INT15(x) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT15)) +#endif + +//! @brief Format value for bitfield DMA_INT_INT15. +#define BF_DMA_INT_INT15(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_INT_INT15), uint32_t) & BM_DMA_INT_INT15) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT15 field to a new value. +#define BW_DMA_INT_INT15(x, v) (BITBAND_ACCESS32(HW_DMA_INT_ADDR(x), BP_DMA_INT_INT15) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_ERR - Error Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_ERR - Error Register (RW) + * + * Reset value: 0x00000000U + * + * The ERR provides a bit map for the 16 channels, signaling the presence of an + * error for each channel. The eDMA engine signals the occurrence of an error + * condition by setting the appropriate bit in this register. The outputs of this + * register are enabled by the contents of the EEI, and then routed to the + * interrupt controller. During the execution of the interrupt-service routine associated + * with any DMA errors, it is software's responsibility to clear the appropriate + * bit, negating the error-interrupt request. Typically, a write to the CERR in + * the interrupt-service routine is used for this purpose. The normal DMA channel + * completion indicators (setting the transfer control descriptor DONE flag and + * the possible assertion of an interrupt request) are not affected when an error + * is detected. The contents of this register can also be polled because a + * non-zero value indicates the presence of a channel error regardless of the state of + * the EEI. The state of any given channel's error indicators is affected by + * writes to this register; it is also affected by writes to the CERR. On writes to + * the ERR, a one in any bit position clears the corresponding channel's error + * status. A zero in any bit position has no affect on the corresponding channel's + * current error status. The CERR is provided so the error indicator for a single + * channel can easily be cleared. + */ +typedef union _hw_dma_err +{ + uint32_t U; + struct _hw_dma_err_bitfields + { + uint32_t ERR0 : 1; //!< [0] Error In Channel 0 + uint32_t ERR1 : 1; //!< [1] Error In Channel 1 + uint32_t ERR2 : 1; //!< [2] Error In Channel 2 + uint32_t ERR3 : 1; //!< [3] Error In Channel 3 + uint32_t ERR4 : 1; //!< [4] Error In Channel 4 + uint32_t ERR5 : 1; //!< [5] Error In Channel 5 + uint32_t ERR6 : 1; //!< [6] Error In Channel 6 + uint32_t ERR7 : 1; //!< [7] Error In Channel 7 + uint32_t ERR8 : 1; //!< [8] Error In Channel 8 + uint32_t ERR9 : 1; //!< [9] Error In Channel 9 + uint32_t ERR10 : 1; //!< [10] Error In Channel 10 + uint32_t ERR11 : 1; //!< [11] Error In Channel 11 + uint32_t ERR12 : 1; //!< [12] Error In Channel 12 + uint32_t ERR13 : 1; //!< [13] Error In Channel 13 + uint32_t ERR14 : 1; //!< [14] Error In Channel 14 + uint32_t ERR15 : 1; //!< [15] Error In Channel 15 + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_dma_err_t; +#endif + +/*! + * @name Constants and macros for entire DMA_ERR register + */ +//@{ +#define HW_DMA_ERR_ADDR(x) (REGS_DMA_BASE(x) + 0x2CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_ERR(x) (*(__IO hw_dma_err_t *) HW_DMA_ERR_ADDR(x)) +#define HW_DMA_ERR_RD(x) (HW_DMA_ERR(x).U) +#define HW_DMA_ERR_WR(x, v) (HW_DMA_ERR(x).U = (v)) +#define HW_DMA_ERR_SET(x, v) (HW_DMA_ERR_WR(x, HW_DMA_ERR_RD(x) | (v))) +#define HW_DMA_ERR_CLR(x, v) (HW_DMA_ERR_WR(x, HW_DMA_ERR_RD(x) & ~(v))) +#define HW_DMA_ERR_TOG(x, v) (HW_DMA_ERR_WR(x, HW_DMA_ERR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_ERR bitfields + */ + +/*! + * @name Register DMA_ERR, field ERR0[0] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR0 (0U) //!< Bit position for DMA_ERR_ERR0. +#define BM_DMA_ERR_ERR0 (0x00000001U) //!< Bit mask for DMA_ERR_ERR0. +#define BS_DMA_ERR_ERR0 (1U) //!< Bit field size in bits for DMA_ERR_ERR0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR0 field. +#define BR_DMA_ERR_ERR0(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR0)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR0. +#define BF_DMA_ERR_ERR0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR0), uint32_t) & BM_DMA_ERR_ERR0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR0 field to a new value. +#define BW_DMA_ERR_ERR0(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR0) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR1[1] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR1 (1U) //!< Bit position for DMA_ERR_ERR1. +#define BM_DMA_ERR_ERR1 (0x00000002U) //!< Bit mask for DMA_ERR_ERR1. +#define BS_DMA_ERR_ERR1 (1U) //!< Bit field size in bits for DMA_ERR_ERR1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR1 field. +#define BR_DMA_ERR_ERR1(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR1)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR1. +#define BF_DMA_ERR_ERR1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR1), uint32_t) & BM_DMA_ERR_ERR1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR1 field to a new value. +#define BW_DMA_ERR_ERR1(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR1) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR2[2] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR2 (2U) //!< Bit position for DMA_ERR_ERR2. +#define BM_DMA_ERR_ERR2 (0x00000004U) //!< Bit mask for DMA_ERR_ERR2. +#define BS_DMA_ERR_ERR2 (1U) //!< Bit field size in bits for DMA_ERR_ERR2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR2 field. +#define BR_DMA_ERR_ERR2(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR2)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR2. +#define BF_DMA_ERR_ERR2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR2), uint32_t) & BM_DMA_ERR_ERR2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR2 field to a new value. +#define BW_DMA_ERR_ERR2(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR2) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR3[3] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR3 (3U) //!< Bit position for DMA_ERR_ERR3. +#define BM_DMA_ERR_ERR3 (0x00000008U) //!< Bit mask for DMA_ERR_ERR3. +#define BS_DMA_ERR_ERR3 (1U) //!< Bit field size in bits for DMA_ERR_ERR3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR3 field. +#define BR_DMA_ERR_ERR3(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR3)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR3. +#define BF_DMA_ERR_ERR3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR3), uint32_t) & BM_DMA_ERR_ERR3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR3 field to a new value. +#define BW_DMA_ERR_ERR3(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR3) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR4[4] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR4 (4U) //!< Bit position for DMA_ERR_ERR4. +#define BM_DMA_ERR_ERR4 (0x00000010U) //!< Bit mask for DMA_ERR_ERR4. +#define BS_DMA_ERR_ERR4 (1U) //!< Bit field size in bits for DMA_ERR_ERR4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR4 field. +#define BR_DMA_ERR_ERR4(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR4)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR4. +#define BF_DMA_ERR_ERR4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR4), uint32_t) & BM_DMA_ERR_ERR4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR4 field to a new value. +#define BW_DMA_ERR_ERR4(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR4) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR5[5] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR5 (5U) //!< Bit position for DMA_ERR_ERR5. +#define BM_DMA_ERR_ERR5 (0x00000020U) //!< Bit mask for DMA_ERR_ERR5. +#define BS_DMA_ERR_ERR5 (1U) //!< Bit field size in bits for DMA_ERR_ERR5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR5 field. +#define BR_DMA_ERR_ERR5(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR5)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR5. +#define BF_DMA_ERR_ERR5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR5), uint32_t) & BM_DMA_ERR_ERR5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR5 field to a new value. +#define BW_DMA_ERR_ERR5(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR5) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR6[6] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR6 (6U) //!< Bit position for DMA_ERR_ERR6. +#define BM_DMA_ERR_ERR6 (0x00000040U) //!< Bit mask for DMA_ERR_ERR6. +#define BS_DMA_ERR_ERR6 (1U) //!< Bit field size in bits for DMA_ERR_ERR6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR6 field. +#define BR_DMA_ERR_ERR6(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR6)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR6. +#define BF_DMA_ERR_ERR6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR6), uint32_t) & BM_DMA_ERR_ERR6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR6 field to a new value. +#define BW_DMA_ERR_ERR6(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR6) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR7[7] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR7 (7U) //!< Bit position for DMA_ERR_ERR7. +#define BM_DMA_ERR_ERR7 (0x00000080U) //!< Bit mask for DMA_ERR_ERR7. +#define BS_DMA_ERR_ERR7 (1U) //!< Bit field size in bits for DMA_ERR_ERR7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR7 field. +#define BR_DMA_ERR_ERR7(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR7)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR7. +#define BF_DMA_ERR_ERR7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR7), uint32_t) & BM_DMA_ERR_ERR7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR7 field to a new value. +#define BW_DMA_ERR_ERR7(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR7) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR8[8] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR8 (8U) //!< Bit position for DMA_ERR_ERR8. +#define BM_DMA_ERR_ERR8 (0x00000100U) //!< Bit mask for DMA_ERR_ERR8. +#define BS_DMA_ERR_ERR8 (1U) //!< Bit field size in bits for DMA_ERR_ERR8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR8 field. +#define BR_DMA_ERR_ERR8(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR8)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR8. +#define BF_DMA_ERR_ERR8(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR8), uint32_t) & BM_DMA_ERR_ERR8) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR8 field to a new value. +#define BW_DMA_ERR_ERR8(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR8) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR9[9] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR9 (9U) //!< Bit position for DMA_ERR_ERR9. +#define BM_DMA_ERR_ERR9 (0x00000200U) //!< Bit mask for DMA_ERR_ERR9. +#define BS_DMA_ERR_ERR9 (1U) //!< Bit field size in bits for DMA_ERR_ERR9. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR9 field. +#define BR_DMA_ERR_ERR9(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR9)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR9. +#define BF_DMA_ERR_ERR9(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR9), uint32_t) & BM_DMA_ERR_ERR9) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR9 field to a new value. +#define BW_DMA_ERR_ERR9(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR9) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR10[10] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR10 (10U) //!< Bit position for DMA_ERR_ERR10. +#define BM_DMA_ERR_ERR10 (0x00000400U) //!< Bit mask for DMA_ERR_ERR10. +#define BS_DMA_ERR_ERR10 (1U) //!< Bit field size in bits for DMA_ERR_ERR10. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR10 field. +#define BR_DMA_ERR_ERR10(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR10)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR10. +#define BF_DMA_ERR_ERR10(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR10), uint32_t) & BM_DMA_ERR_ERR10) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR10 field to a new value. +#define BW_DMA_ERR_ERR10(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR10) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR11[11] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR11 (11U) //!< Bit position for DMA_ERR_ERR11. +#define BM_DMA_ERR_ERR11 (0x00000800U) //!< Bit mask for DMA_ERR_ERR11. +#define BS_DMA_ERR_ERR11 (1U) //!< Bit field size in bits for DMA_ERR_ERR11. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR11 field. +#define BR_DMA_ERR_ERR11(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR11)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR11. +#define BF_DMA_ERR_ERR11(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR11), uint32_t) & BM_DMA_ERR_ERR11) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR11 field to a new value. +#define BW_DMA_ERR_ERR11(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR11) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR12[12] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR12 (12U) //!< Bit position for DMA_ERR_ERR12. +#define BM_DMA_ERR_ERR12 (0x00001000U) //!< Bit mask for DMA_ERR_ERR12. +#define BS_DMA_ERR_ERR12 (1U) //!< Bit field size in bits for DMA_ERR_ERR12. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR12 field. +#define BR_DMA_ERR_ERR12(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR12)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR12. +#define BF_DMA_ERR_ERR12(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR12), uint32_t) & BM_DMA_ERR_ERR12) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR12 field to a new value. +#define BW_DMA_ERR_ERR12(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR12) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR13[13] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR13 (13U) //!< Bit position for DMA_ERR_ERR13. +#define BM_DMA_ERR_ERR13 (0x00002000U) //!< Bit mask for DMA_ERR_ERR13. +#define BS_DMA_ERR_ERR13 (1U) //!< Bit field size in bits for DMA_ERR_ERR13. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR13 field. +#define BR_DMA_ERR_ERR13(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR13)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR13. +#define BF_DMA_ERR_ERR13(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR13), uint32_t) & BM_DMA_ERR_ERR13) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR13 field to a new value. +#define BW_DMA_ERR_ERR13(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR13) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR14[14] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR14 (14U) //!< Bit position for DMA_ERR_ERR14. +#define BM_DMA_ERR_ERR14 (0x00004000U) //!< Bit mask for DMA_ERR_ERR14. +#define BS_DMA_ERR_ERR14 (1U) //!< Bit field size in bits for DMA_ERR_ERR14. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR14 field. +#define BR_DMA_ERR_ERR14(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR14)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR14. +#define BF_DMA_ERR_ERR14(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR14), uint32_t) & BM_DMA_ERR_ERR14) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR14 field to a new value. +#define BW_DMA_ERR_ERR14(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR14) = (v)) +#endif +//@} + +/*! + * @name Register DMA_ERR, field ERR15[15] (W1C) + * + * Values: + * - 0 - An error in the corresponding channel has not occurred + * - 1 - An error in the corresponding channel has occurred + */ +//@{ +#define BP_DMA_ERR_ERR15 (15U) //!< Bit position for DMA_ERR_ERR15. +#define BM_DMA_ERR_ERR15 (0x00008000U) //!< Bit mask for DMA_ERR_ERR15. +#define BS_DMA_ERR_ERR15 (1U) //!< Bit field size in bits for DMA_ERR_ERR15. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_ERR_ERR15 field. +#define BR_DMA_ERR_ERR15(x) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR15)) +#endif + +//! @brief Format value for bitfield DMA_ERR_ERR15. +#define BF_DMA_ERR_ERR15(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_ERR_ERR15), uint32_t) & BM_DMA_ERR_ERR15) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR15 field to a new value. +#define BW_DMA_ERR_ERR15(x, v) (BITBAND_ACCESS32(HW_DMA_ERR_ADDR(x), BP_DMA_ERR_ERR15) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_HRS - Hardware Request Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_HRS - Hardware Request Status Register (RO) + * + * Reset value: 0x00000000U + * + * The HRS register provides a bit map for the DMA channels, signaling the + * presence of a hardware request for each channel. The hardware request status bits + * reflect the current state of the register and qualified (via the ERQ fields) + * DMA request signals as seen by the DMA's arbitration logic. This view into the + * hardware request signals may be used for debug purposes. These bits reflect the + * state of the request as seen by the arbitration logic. Therefore, this status + * is affected by the ERQ bits. + */ +typedef union _hw_dma_hrs +{ + uint32_t U; + struct _hw_dma_hrs_bitfields + { + uint32_t HRS0 : 1; //!< [0] Hardware Request Status Channel 0 + uint32_t HRS1 : 1; //!< [1] Hardware Request Status Channel 1 + uint32_t HRS2 : 1; //!< [2] Hardware Request Status Channel 2 + uint32_t HRS3 : 1; //!< [3] Hardware Request Status Channel 3 + uint32_t HRS4 : 1; //!< [4] Hardware Request Status Channel 4 + uint32_t HRS5 : 1; //!< [5] Hardware Request Status Channel 5 + uint32_t HRS6 : 1; //!< [6] Hardware Request Status Channel 6 + uint32_t HRS7 : 1; //!< [7] Hardware Request Status Channel 7 + uint32_t HRS8 : 1; //!< [8] Hardware Request Status Channel 8 + uint32_t HRS9 : 1; //!< [9] Hardware Request Status Channel 9 + uint32_t HRS10 : 1; //!< [10] Hardware Request Status Channel 10 + uint32_t HRS11 : 1; //!< [11] Hardware Request Status Channel 11 + uint32_t HRS12 : 1; //!< [12] Hardware Request Status Channel 12 + uint32_t HRS13 : 1; //!< [13] Hardware Request Status Channel 13 + uint32_t HRS14 : 1; //!< [14] Hardware Request Status Channel 14 + uint32_t HRS15 : 1; //!< [15] Hardware Request Status Channel 15 + uint32_t RESERVED0 : 16; //!< [31:16] Reserved + } B; +} hw_dma_hrs_t; +#endif + +/*! + * @name Constants and macros for entire DMA_HRS register + */ +//@{ +#define HW_DMA_HRS_ADDR(x) (REGS_DMA_BASE(x) + 0x34U) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_HRS(x) (*(__I hw_dma_hrs_t *) HW_DMA_HRS_ADDR(x)) +#define HW_DMA_HRS_RD(x) (HW_DMA_HRS(x).U) +#endif +//@} + +/* + * Constants & macros for individual DMA_HRS bitfields + */ + +/*! + * @name Register DMA_HRS, field HRS0[0] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 0 is not present + * - 1 - A hardware service request for channel 0 is present + */ +//@{ +#define BP_DMA_HRS_HRS0 (0U) //!< Bit position for DMA_HRS_HRS0. +#define BM_DMA_HRS_HRS0 (0x00000001U) //!< Bit mask for DMA_HRS_HRS0. +#define BS_DMA_HRS_HRS0 (1U) //!< Bit field size in bits for DMA_HRS_HRS0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS0 field. +#define BR_DMA_HRS_HRS0(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS0)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS1[1] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 1 is not present + * - 1 - A hardware service request for channel 1 is present + */ +//@{ +#define BP_DMA_HRS_HRS1 (1U) //!< Bit position for DMA_HRS_HRS1. +#define BM_DMA_HRS_HRS1 (0x00000002U) //!< Bit mask for DMA_HRS_HRS1. +#define BS_DMA_HRS_HRS1 (1U) //!< Bit field size in bits for DMA_HRS_HRS1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS1 field. +#define BR_DMA_HRS_HRS1(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS1)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS2[2] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 2 is not present + * - 1 - A hardware service request for channel 2 is present + */ +//@{ +#define BP_DMA_HRS_HRS2 (2U) //!< Bit position for DMA_HRS_HRS2. +#define BM_DMA_HRS_HRS2 (0x00000004U) //!< Bit mask for DMA_HRS_HRS2. +#define BS_DMA_HRS_HRS2 (1U) //!< Bit field size in bits for DMA_HRS_HRS2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS2 field. +#define BR_DMA_HRS_HRS2(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS2)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS3[3] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 3 is not present + * - 1 - A hardware service request for channel 3 is present + */ +//@{ +#define BP_DMA_HRS_HRS3 (3U) //!< Bit position for DMA_HRS_HRS3. +#define BM_DMA_HRS_HRS3 (0x00000008U) //!< Bit mask for DMA_HRS_HRS3. +#define BS_DMA_HRS_HRS3 (1U) //!< Bit field size in bits for DMA_HRS_HRS3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS3 field. +#define BR_DMA_HRS_HRS3(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS3)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS4[4] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 4 is not present + * - 1 - A hardware service request for channel 4 is present + */ +//@{ +#define BP_DMA_HRS_HRS4 (4U) //!< Bit position for DMA_HRS_HRS4. +#define BM_DMA_HRS_HRS4 (0x00000010U) //!< Bit mask for DMA_HRS_HRS4. +#define BS_DMA_HRS_HRS4 (1U) //!< Bit field size in bits for DMA_HRS_HRS4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS4 field. +#define BR_DMA_HRS_HRS4(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS4)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS5[5] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 5 is not present + * - 1 - A hardware service request for channel 5 is present + */ +//@{ +#define BP_DMA_HRS_HRS5 (5U) //!< Bit position for DMA_HRS_HRS5. +#define BM_DMA_HRS_HRS5 (0x00000020U) //!< Bit mask for DMA_HRS_HRS5. +#define BS_DMA_HRS_HRS5 (1U) //!< Bit field size in bits for DMA_HRS_HRS5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS5 field. +#define BR_DMA_HRS_HRS5(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS5)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS6[6] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 6 is not present + * - 1 - A hardware service request for channel 6 is present + */ +//@{ +#define BP_DMA_HRS_HRS6 (6U) //!< Bit position for DMA_HRS_HRS6. +#define BM_DMA_HRS_HRS6 (0x00000040U) //!< Bit mask for DMA_HRS_HRS6. +#define BS_DMA_HRS_HRS6 (1U) //!< Bit field size in bits for DMA_HRS_HRS6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS6 field. +#define BR_DMA_HRS_HRS6(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS6)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS7[7] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 7 is not present + * - 1 - A hardware service request for channel 7 is present + */ +//@{ +#define BP_DMA_HRS_HRS7 (7U) //!< Bit position for DMA_HRS_HRS7. +#define BM_DMA_HRS_HRS7 (0x00000080U) //!< Bit mask for DMA_HRS_HRS7. +#define BS_DMA_HRS_HRS7 (1U) //!< Bit field size in bits for DMA_HRS_HRS7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS7 field. +#define BR_DMA_HRS_HRS7(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS7)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS8[8] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 8 is not present + * - 1 - A hardware service request for channel 8 is present + */ +//@{ +#define BP_DMA_HRS_HRS8 (8U) //!< Bit position for DMA_HRS_HRS8. +#define BM_DMA_HRS_HRS8 (0x00000100U) //!< Bit mask for DMA_HRS_HRS8. +#define BS_DMA_HRS_HRS8 (1U) //!< Bit field size in bits for DMA_HRS_HRS8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS8 field. +#define BR_DMA_HRS_HRS8(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS8)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS9[9] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 9 is not present + * - 1 - A hardware service request for channel 9 is present + */ +//@{ +#define BP_DMA_HRS_HRS9 (9U) //!< Bit position for DMA_HRS_HRS9. +#define BM_DMA_HRS_HRS9 (0x00000200U) //!< Bit mask for DMA_HRS_HRS9. +#define BS_DMA_HRS_HRS9 (1U) //!< Bit field size in bits for DMA_HRS_HRS9. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS9 field. +#define BR_DMA_HRS_HRS9(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS9)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS10[10] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 10 is not present + * - 1 - A hardware service request for channel 10 is present + */ +//@{ +#define BP_DMA_HRS_HRS10 (10U) //!< Bit position for DMA_HRS_HRS10. +#define BM_DMA_HRS_HRS10 (0x00000400U) //!< Bit mask for DMA_HRS_HRS10. +#define BS_DMA_HRS_HRS10 (1U) //!< Bit field size in bits for DMA_HRS_HRS10. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS10 field. +#define BR_DMA_HRS_HRS10(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS10)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS11[11] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 11 is not present + * - 1 - A hardware service request for channel 11 is present + */ +//@{ +#define BP_DMA_HRS_HRS11 (11U) //!< Bit position for DMA_HRS_HRS11. +#define BM_DMA_HRS_HRS11 (0x00000800U) //!< Bit mask for DMA_HRS_HRS11. +#define BS_DMA_HRS_HRS11 (1U) //!< Bit field size in bits for DMA_HRS_HRS11. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS11 field. +#define BR_DMA_HRS_HRS11(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS11)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS12[12] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 12 is not present + * - 1 - A hardware service request for channel 12 is present + */ +//@{ +#define BP_DMA_HRS_HRS12 (12U) //!< Bit position for DMA_HRS_HRS12. +#define BM_DMA_HRS_HRS12 (0x00001000U) //!< Bit mask for DMA_HRS_HRS12. +#define BS_DMA_HRS_HRS12 (1U) //!< Bit field size in bits for DMA_HRS_HRS12. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS12 field. +#define BR_DMA_HRS_HRS12(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS12)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS13[13] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 13 is not present + * - 1 - A hardware service request for channel 13 is present + */ +//@{ +#define BP_DMA_HRS_HRS13 (13U) //!< Bit position for DMA_HRS_HRS13. +#define BM_DMA_HRS_HRS13 (0x00002000U) //!< Bit mask for DMA_HRS_HRS13. +#define BS_DMA_HRS_HRS13 (1U) //!< Bit field size in bits for DMA_HRS_HRS13. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS13 field. +#define BR_DMA_HRS_HRS13(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS13)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS14[14] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 14 is not present + * - 1 - A hardware service request for channel 14 is present + */ +//@{ +#define BP_DMA_HRS_HRS14 (14U) //!< Bit position for DMA_HRS_HRS14. +#define BM_DMA_HRS_HRS14 (0x00004000U) //!< Bit mask for DMA_HRS_HRS14. +#define BS_DMA_HRS_HRS14 (1U) //!< Bit field size in bits for DMA_HRS_HRS14. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS14 field. +#define BR_DMA_HRS_HRS14(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS14)) +#endif +//@} + +/*! + * @name Register DMA_HRS, field HRS15[15] (RO) + * + * The HRS bit for its respective channel remains asserted for the period when a + * Hardware Request is Present on the Channel. After the Request is completed + * and Channel is free , the HRS bit is automatically cleared by hardware. + * + * Values: + * - 0 - A hardware service request for channel 15 is not present + * - 1 - A hardware service request for channel 15 is present + */ +//@{ +#define BP_DMA_HRS_HRS15 (15U) //!< Bit position for DMA_HRS_HRS15. +#define BM_DMA_HRS_HRS15 (0x00008000U) //!< Bit mask for DMA_HRS_HRS15. +#define BS_DMA_HRS_HRS15 (1U) //!< Bit field size in bits for DMA_HRS_HRS15. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_HRS_HRS15 field. +#define BR_DMA_HRS_HRS15(x) (BITBAND_ACCESS32(HW_DMA_HRS_ADDR(x), BP_DMA_HRS_HRS15)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_DCHPRIn - Channel n Priority Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_DCHPRIn - Channel n Priority Register (RW) + * + * Reset value: 0x00U + * + * When fixed-priority channel arbitration is enabled (CR[ERCA] = 0), the + * contents of these registers define the unique priorities associated with each + * channel . The channel priorities are evaluated by numeric value; for example, 0 is + * the lowest priority, 1 is the next priority, then 2, 3, etc. Software must + * program the channel priorities with unique values; otherwise, a configuration + * error is reported. The range of the priority value is limited to the values of 0 + * through 15. + */ +typedef union _hw_dma_dchprin +{ + uint8_t U; + struct _hw_dma_dchprin_bitfields + { + uint8_t CHPRI : 4; //!< [3:0] Channel n Arbitration Priority + uint8_t RESERVED0 : 2; //!< [5:4] + uint8_t DPA : 1; //!< [6] Disable Preempt Ability + uint8_t ECP : 1; //!< [7] Enable Channel Preemption + } B; +} hw_dma_dchprin_t; +#endif + +/*! + * @name Constants and macros for entire DMA_DCHPRIn register + */ +//@{ +#define HW_DMA_DCHPRIn_COUNT (16U) + +#define HW_DMA_DCHPRIn_ADDR(x, n) (REGS_DMA_BASE(x) + 0x100U + (0x1U * n)) + +/* DMA channel index to DMA channel priority register array index conversion macro */ +#define HW_DMA_DCHPRIn_CHANNEL(n) (((n) & ~0x03U) | (3 - ((n) & 0x03U))) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_DCHPRIn(x, n) (*(__IO hw_dma_dchprin_t *) HW_DMA_DCHPRIn_ADDR(x, n)) +#define HW_DMA_DCHPRIn_RD(x, n) (HW_DMA_DCHPRIn(x, n).U) +#define HW_DMA_DCHPRIn_WR(x, n, v) (HW_DMA_DCHPRIn(x, n).U = (v)) +#define HW_DMA_DCHPRIn_SET(x, n, v) (HW_DMA_DCHPRIn_WR(x, n, HW_DMA_DCHPRIn_RD(x, n) | (v))) +#define HW_DMA_DCHPRIn_CLR(x, n, v) (HW_DMA_DCHPRIn_WR(x, n, HW_DMA_DCHPRIn_RD(x, n) & ~(v))) +#define HW_DMA_DCHPRIn_TOG(x, n, v) (HW_DMA_DCHPRIn_WR(x, n, HW_DMA_DCHPRIn_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_DCHPRIn bitfields + */ + +/*! + * @name Register DMA_DCHPRIn, field CHPRI[3:0] (RW) + * + * Channel priority when fixed-priority arbitration is enabled Reset value for + * the channel priority fields, CHPRI, is equal to the corresponding channel + * number for each priority register, i.e., DCHPRI15[CHPRI] equals 0b1111. + */ +//@{ +#define BP_DMA_DCHPRIn_CHPRI (0U) //!< Bit position for DMA_DCHPRIn_CHPRI. +#define BM_DMA_DCHPRIn_CHPRI (0x0FU) //!< Bit mask for DMA_DCHPRIn_CHPRI. +#define BS_DMA_DCHPRIn_CHPRI (4U) //!< Bit field size in bits for DMA_DCHPRIn_CHPRI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_DCHPRIn_CHPRI field. +#define BR_DMA_DCHPRIn_CHPRI(x, n) (HW_DMA_DCHPRIn(x, n).B.CHPRI) +#endif + +//! @brief Format value for bitfield DMA_DCHPRIn_CHPRI. +#define BF_DMA_DCHPRIn_CHPRI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_DCHPRIn_CHPRI), uint8_t) & BM_DMA_DCHPRIn_CHPRI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CHPRI field to a new value. +#define BW_DMA_DCHPRIn_CHPRI(x, n, v) (HW_DMA_DCHPRIn_WR(x, n, (HW_DMA_DCHPRIn_RD(x, n) & ~BM_DMA_DCHPRIn_CHPRI) | BF_DMA_DCHPRIn_CHPRI(v))) +#endif +//@} + +/*! + * @name Register DMA_DCHPRIn, field DPA[6] (RW) + * + * Values: + * - 0 - Channel n can suspend a lower priority channel + * - 1 - Channel n cannot suspend any channel, regardless of channel priority + */ +//@{ +#define BP_DMA_DCHPRIn_DPA (6U) //!< Bit position for DMA_DCHPRIn_DPA. +#define BM_DMA_DCHPRIn_DPA (0x40U) //!< Bit mask for DMA_DCHPRIn_DPA. +#define BS_DMA_DCHPRIn_DPA (1U) //!< Bit field size in bits for DMA_DCHPRIn_DPA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_DCHPRIn_DPA field. +#define BR_DMA_DCHPRIn_DPA(x, n) (BITBAND_ACCESS8(HW_DMA_DCHPRIn_ADDR(x, n), BP_DMA_DCHPRIn_DPA)) +#endif + +//! @brief Format value for bitfield DMA_DCHPRIn_DPA. +#define BF_DMA_DCHPRIn_DPA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_DCHPRIn_DPA), uint8_t) & BM_DMA_DCHPRIn_DPA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DPA field to a new value. +#define BW_DMA_DCHPRIn_DPA(x, n, v) (BITBAND_ACCESS8(HW_DMA_DCHPRIn_ADDR(x, n), BP_DMA_DCHPRIn_DPA) = (v)) +#endif +//@} + +/*! + * @name Register DMA_DCHPRIn, field ECP[7] (RW) + * + * Values: + * - 0 - Channel n cannot be suspended by a higher priority channel's service + * request + * - 1 - Channel n can be temporarily suspended by the service request of a + * higher priority channel + */ +//@{ +#define BP_DMA_DCHPRIn_ECP (7U) //!< Bit position for DMA_DCHPRIn_ECP. +#define BM_DMA_DCHPRIn_ECP (0x80U) //!< Bit mask for DMA_DCHPRIn_ECP. +#define BS_DMA_DCHPRIn_ECP (1U) //!< Bit field size in bits for DMA_DCHPRIn_ECP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_DCHPRIn_ECP field. +#define BR_DMA_DCHPRIn_ECP(x, n) (BITBAND_ACCESS8(HW_DMA_DCHPRIn_ADDR(x, n), BP_DMA_DCHPRIn_ECP)) +#endif + +//! @brief Format value for bitfield DMA_DCHPRIn_ECP. +#define BF_DMA_DCHPRIn_ECP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMA_DCHPRIn_ECP), uint8_t) & BM_DMA_DCHPRIn_ECP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ECP field to a new value. +#define BW_DMA_DCHPRIn_ECP(x, n, v) (BITBAND_ACCESS8(HW_DMA_DCHPRIn_ADDR(x, n), BP_DMA_DCHPRIn_ECP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_SADDR - TCD Source Address +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_SADDR - TCD Source Address (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_dma_tcdn_saddr +{ + uint32_t U; + struct _hw_dma_tcdn_saddr_bitfields + { + uint32_t SADDR : 32; //!< [31:0] Source Address + } B; +} hw_dma_tcdn_saddr_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_SADDR register + */ +//@{ +#define HW_DMA_TCDn_SADDR_COUNT (16U) + +#define HW_DMA_TCDn_SADDR_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1000U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_SADDR(x, n) (*(__IO hw_dma_tcdn_saddr_t *) HW_DMA_TCDn_SADDR_ADDR(x, n)) +#define HW_DMA_TCDn_SADDR_RD(x, n) (HW_DMA_TCDn_SADDR(x, n).U) +#define HW_DMA_TCDn_SADDR_WR(x, n, v) (HW_DMA_TCDn_SADDR(x, n).U = (v)) +#define HW_DMA_TCDn_SADDR_SET(x, n, v) (HW_DMA_TCDn_SADDR_WR(x, n, HW_DMA_TCDn_SADDR_RD(x, n) | (v))) +#define HW_DMA_TCDn_SADDR_CLR(x, n, v) (HW_DMA_TCDn_SADDR_WR(x, n, HW_DMA_TCDn_SADDR_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_SADDR_TOG(x, n, v) (HW_DMA_TCDn_SADDR_WR(x, n, HW_DMA_TCDn_SADDR_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_SADDR bitfields + */ + +/*! + * @name Register DMA_TCDn_SADDR, field SADDR[31:0] (RW) + * + * Memory address pointing to the source data. + */ +//@{ +#define BP_DMA_TCDn_SADDR_SADDR (0U) //!< Bit position for DMA_TCDn_SADDR_SADDR. +#define BM_DMA_TCDn_SADDR_SADDR (0xFFFFFFFFU) //!< Bit mask for DMA_TCDn_SADDR_SADDR. +#define BS_DMA_TCDn_SADDR_SADDR (32U) //!< Bit field size in bits for DMA_TCDn_SADDR_SADDR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_SADDR_SADDR field. +#define BR_DMA_TCDn_SADDR_SADDR(x, n) (HW_DMA_TCDn_SADDR(x, n).U) +#endif + +//! @brief Format value for bitfield DMA_TCDn_SADDR_SADDR. +#define BF_DMA_TCDn_SADDR_SADDR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_SADDR_SADDR), uint32_t) & BM_DMA_TCDn_SADDR_SADDR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SADDR field to a new value. +#define BW_DMA_TCDn_SADDR_SADDR(x, n, v) (HW_DMA_TCDn_SADDR_WR(x, n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_SOFF - TCD Signed Source Address Offset +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_SOFF - TCD Signed Source Address Offset (RW) + * + * Reset value: 0x0000U + */ +typedef union _hw_dma_tcdn_soff +{ + uint16_t U; + struct _hw_dma_tcdn_soff_bitfields + { + uint16_t SOFF : 16; //!< [15:0] Source address signed offset + } B; +} hw_dma_tcdn_soff_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_SOFF register + */ +//@{ +#define HW_DMA_TCDn_SOFF_COUNT (16U) + +#define HW_DMA_TCDn_SOFF_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1004U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_SOFF(x, n) (*(__IO hw_dma_tcdn_soff_t *) HW_DMA_TCDn_SOFF_ADDR(x, n)) +#define HW_DMA_TCDn_SOFF_RD(x, n) (HW_DMA_TCDn_SOFF(x, n).U) +#define HW_DMA_TCDn_SOFF_WR(x, n, v) (HW_DMA_TCDn_SOFF(x, n).U = (v)) +#define HW_DMA_TCDn_SOFF_SET(x, n, v) (HW_DMA_TCDn_SOFF_WR(x, n, HW_DMA_TCDn_SOFF_RD(x, n) | (v))) +#define HW_DMA_TCDn_SOFF_CLR(x, n, v) (HW_DMA_TCDn_SOFF_WR(x, n, HW_DMA_TCDn_SOFF_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_SOFF_TOG(x, n, v) (HW_DMA_TCDn_SOFF_WR(x, n, HW_DMA_TCDn_SOFF_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_SOFF bitfields + */ + +/*! + * @name Register DMA_TCDn_SOFF, field SOFF[15:0] (RW) + * + * Sign-extended offset applied to the current source address to form the + * next-state value as each source read is completed. + */ +//@{ +#define BP_DMA_TCDn_SOFF_SOFF (0U) //!< Bit position for DMA_TCDn_SOFF_SOFF. +#define BM_DMA_TCDn_SOFF_SOFF (0xFFFFU) //!< Bit mask for DMA_TCDn_SOFF_SOFF. +#define BS_DMA_TCDn_SOFF_SOFF (16U) //!< Bit field size in bits for DMA_TCDn_SOFF_SOFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_SOFF_SOFF field. +#define BR_DMA_TCDn_SOFF_SOFF(x, n) (HW_DMA_TCDn_SOFF(x, n).U) +#endif + +//! @brief Format value for bitfield DMA_TCDn_SOFF_SOFF. +#define BF_DMA_TCDn_SOFF_SOFF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_SOFF_SOFF), uint16_t) & BM_DMA_TCDn_SOFF_SOFF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SOFF field to a new value. +#define BW_DMA_TCDn_SOFF_SOFF(x, n, v) (HW_DMA_TCDn_SOFF_WR(x, n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_ATTR - TCD Transfer Attributes +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_ATTR - TCD Transfer Attributes (RW) + * + * Reset value: 0x0000U + */ +typedef union _hw_dma_tcdn_attr +{ + uint16_t U; + struct _hw_dma_tcdn_attr_bitfields + { + uint16_t DSIZE : 3; //!< [2:0] Destination Data Transfer Size + uint16_t DMOD : 5; //!< [7:3] Destination Address Modulo + uint16_t SSIZE : 3; //!< [10:8] Source data transfer size + uint16_t SMOD : 5; //!< [15:11] Source Address Modulo. + } B; +} hw_dma_tcdn_attr_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_ATTR register + */ +//@{ +#define HW_DMA_TCDn_ATTR_COUNT (16U) + +#define HW_DMA_TCDn_ATTR_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1006U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_ATTR(x, n) (*(__IO hw_dma_tcdn_attr_t *) HW_DMA_TCDn_ATTR_ADDR(x, n)) +#define HW_DMA_TCDn_ATTR_RD(x, n) (HW_DMA_TCDn_ATTR(x, n).U) +#define HW_DMA_TCDn_ATTR_WR(x, n, v) (HW_DMA_TCDn_ATTR(x, n).U = (v)) +#define HW_DMA_TCDn_ATTR_SET(x, n, v) (HW_DMA_TCDn_ATTR_WR(x, n, HW_DMA_TCDn_ATTR_RD(x, n) | (v))) +#define HW_DMA_TCDn_ATTR_CLR(x, n, v) (HW_DMA_TCDn_ATTR_WR(x, n, HW_DMA_TCDn_ATTR_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_ATTR_TOG(x, n, v) (HW_DMA_TCDn_ATTR_WR(x, n, HW_DMA_TCDn_ATTR_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_ATTR bitfields + */ + +/*! + * @name Register DMA_TCDn_ATTR, field DSIZE[2:0] (RW) + * + * See the SSIZE definition + */ +//@{ +#define BP_DMA_TCDn_ATTR_DSIZE (0U) //!< Bit position for DMA_TCDn_ATTR_DSIZE. +#define BM_DMA_TCDn_ATTR_DSIZE (0x0007U) //!< Bit mask for DMA_TCDn_ATTR_DSIZE. +#define BS_DMA_TCDn_ATTR_DSIZE (3U) //!< Bit field size in bits for DMA_TCDn_ATTR_DSIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_ATTR_DSIZE field. +#define BR_DMA_TCDn_ATTR_DSIZE(x, n) (HW_DMA_TCDn_ATTR(x, n).B.DSIZE) +#endif + +//! @brief Format value for bitfield DMA_TCDn_ATTR_DSIZE. +#define BF_DMA_TCDn_ATTR_DSIZE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_ATTR_DSIZE), uint16_t) & BM_DMA_TCDn_ATTR_DSIZE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DSIZE field to a new value. +#define BW_DMA_TCDn_ATTR_DSIZE(x, n, v) (HW_DMA_TCDn_ATTR_WR(x, n, (HW_DMA_TCDn_ATTR_RD(x, n) & ~BM_DMA_TCDn_ATTR_DSIZE) | BF_DMA_TCDn_ATTR_DSIZE(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_ATTR, field DMOD[7:3] (RW) + * + * See the SMOD definition + */ +//@{ +#define BP_DMA_TCDn_ATTR_DMOD (3U) //!< Bit position for DMA_TCDn_ATTR_DMOD. +#define BM_DMA_TCDn_ATTR_DMOD (0x00F8U) //!< Bit mask for DMA_TCDn_ATTR_DMOD. +#define BS_DMA_TCDn_ATTR_DMOD (5U) //!< Bit field size in bits for DMA_TCDn_ATTR_DMOD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_ATTR_DMOD field. +#define BR_DMA_TCDn_ATTR_DMOD(x, n) (HW_DMA_TCDn_ATTR(x, n).B.DMOD) +#endif + +//! @brief Format value for bitfield DMA_TCDn_ATTR_DMOD. +#define BF_DMA_TCDn_ATTR_DMOD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_ATTR_DMOD), uint16_t) & BM_DMA_TCDn_ATTR_DMOD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMOD field to a new value. +#define BW_DMA_TCDn_ATTR_DMOD(x, n, v) (HW_DMA_TCDn_ATTR_WR(x, n, (HW_DMA_TCDn_ATTR_RD(x, n) & ~BM_DMA_TCDn_ATTR_DMOD) | BF_DMA_TCDn_ATTR_DMOD(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_ATTR, field SSIZE[10:8] (RW) + * + * The attempted use of a Reserved encoding causes a configuration error. + * + * Values: + * - 000 - 8-bit + * - 001 - 16-bit + * - 010 - 32-bit + * - 011 - Reserved + * - 100 - 16-byte + * - 101 - 32-byte + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_DMA_TCDn_ATTR_SSIZE (8U) //!< Bit position for DMA_TCDn_ATTR_SSIZE. +#define BM_DMA_TCDn_ATTR_SSIZE (0x0700U) //!< Bit mask for DMA_TCDn_ATTR_SSIZE. +#define BS_DMA_TCDn_ATTR_SSIZE (3U) //!< Bit field size in bits for DMA_TCDn_ATTR_SSIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_ATTR_SSIZE field. +#define BR_DMA_TCDn_ATTR_SSIZE(x, n) (HW_DMA_TCDn_ATTR(x, n).B.SSIZE) +#endif + +//! @brief Format value for bitfield DMA_TCDn_ATTR_SSIZE. +#define BF_DMA_TCDn_ATTR_SSIZE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_ATTR_SSIZE), uint16_t) & BM_DMA_TCDn_ATTR_SSIZE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SSIZE field to a new value. +#define BW_DMA_TCDn_ATTR_SSIZE(x, n, v) (HW_DMA_TCDn_ATTR_WR(x, n, (HW_DMA_TCDn_ATTR_RD(x, n) & ~BM_DMA_TCDn_ATTR_SSIZE) | BF_DMA_TCDn_ATTR_SSIZE(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_ATTR, field SMOD[15:11] (RW) + * + * Values: + * - 0 - Source address modulo feature is disabled + */ +//@{ +#define BP_DMA_TCDn_ATTR_SMOD (11U) //!< Bit position for DMA_TCDn_ATTR_SMOD. +#define BM_DMA_TCDn_ATTR_SMOD (0xF800U) //!< Bit mask for DMA_TCDn_ATTR_SMOD. +#define BS_DMA_TCDn_ATTR_SMOD (5U) //!< Bit field size in bits for DMA_TCDn_ATTR_SMOD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_ATTR_SMOD field. +#define BR_DMA_TCDn_ATTR_SMOD(x, n) (HW_DMA_TCDn_ATTR(x, n).B.SMOD) +#endif + +//! @brief Format value for bitfield DMA_TCDn_ATTR_SMOD. +#define BF_DMA_TCDn_ATTR_SMOD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_ATTR_SMOD), uint16_t) & BM_DMA_TCDn_ATTR_SMOD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SMOD field to a new value. +#define BW_DMA_TCDn_ATTR_SMOD(x, n, v) (HW_DMA_TCDn_ATTR_WR(x, n, (HW_DMA_TCDn_ATTR_RD(x, n) & ~BM_DMA_TCDn_ATTR_SMOD) | BF_DMA_TCDn_ATTR_SMOD(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_NBYTES_MLNO - TCD Minor Byte Count (Minor Loop Disabled) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_NBYTES_MLNO - TCD Minor Byte Count (Minor Loop Disabled) (RW) + * + * Reset value: 0x00000000U + * + * This register, or one of the next two registers (TCD_NBYTES_MLOFFNO, + * TCD_NBYTES_MLOFFYES), defines the number of bytes to transfer per request. Which + * register to use depends on whether minor loop mapping is disabled, enabled but not + * used for this channel, or enabled and used. TCD word 2 is defined as follows + * if: Minor loop mapping is disabled (CR[EMLM] = 0) If minor loop mapping is + * enabled, see the TCD_NBYTES_MLOFFNO and TCD_NBYTES_MLOFFYES register descriptions + * for TCD word 2's definition. + */ +typedef union _hw_dma_tcdn_nbytes_mlno +{ + uint32_t U; + struct _hw_dma_tcdn_nbytes_mlno_bitfields + { + uint32_t NBYTES : 32; //!< [31:0] Minor Byte Transfer Count + } B; +} hw_dma_tcdn_nbytes_mlno_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_NBYTES_MLNO register + */ +//@{ +#define HW_DMA_TCDn_NBYTES_MLNO_COUNT (16U) + +#define HW_DMA_TCDn_NBYTES_MLNO_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1008U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_NBYTES_MLNO(x, n) (*(__IO hw_dma_tcdn_nbytes_mlno_t *) HW_DMA_TCDn_NBYTES_MLNO_ADDR(x, n)) +#define HW_DMA_TCDn_NBYTES_MLNO_RD(x, n) (HW_DMA_TCDn_NBYTES_MLNO(x, n).U) +#define HW_DMA_TCDn_NBYTES_MLNO_WR(x, n, v) (HW_DMA_TCDn_NBYTES_MLNO(x, n).U = (v)) +#define HW_DMA_TCDn_NBYTES_MLNO_SET(x, n, v) (HW_DMA_TCDn_NBYTES_MLNO_WR(x, n, HW_DMA_TCDn_NBYTES_MLNO_RD(x, n) | (v))) +#define HW_DMA_TCDn_NBYTES_MLNO_CLR(x, n, v) (HW_DMA_TCDn_NBYTES_MLNO_WR(x, n, HW_DMA_TCDn_NBYTES_MLNO_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_NBYTES_MLNO_TOG(x, n, v) (HW_DMA_TCDn_NBYTES_MLNO_WR(x, n, HW_DMA_TCDn_NBYTES_MLNO_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_NBYTES_MLNO bitfields + */ + +/*! + * @name Register DMA_TCDn_NBYTES_MLNO, field NBYTES[31:0] (RW) + * + * Number of bytes to be transferred in each service request of the channel. As + * a channel activates, the appropriate TCD contents load into the eDMA engine, + * and the appropriate reads and writes perform until the minor byte transfer + * count has transferred. This is an indivisible operation and cannot be halted. + * (Although, it may be stalled by using the bandwidth control field, or via + * preemption.) After the minor count is exhausted, the SADDR and DADDR values are + * written back into the TCD memory, the major iteration count is decremented and + * restored to the TCD memory. If the major iteration count is completed, additional + * processing is performed. An NBYTES value of 0x0000_0000 is interpreted as a 4 + * GB transfer. + */ +//@{ +#define BP_DMA_TCDn_NBYTES_MLNO_NBYTES (0U) //!< Bit position for DMA_TCDn_NBYTES_MLNO_NBYTES. +#define BM_DMA_TCDn_NBYTES_MLNO_NBYTES (0xFFFFFFFFU) //!< Bit mask for DMA_TCDn_NBYTES_MLNO_NBYTES. +#define BS_DMA_TCDn_NBYTES_MLNO_NBYTES (32U) //!< Bit field size in bits for DMA_TCDn_NBYTES_MLNO_NBYTES. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_NBYTES_MLNO_NBYTES field. +#define BR_DMA_TCDn_NBYTES_MLNO_NBYTES(x, n) (HW_DMA_TCDn_NBYTES_MLNO(x, n).U) +#endif + +//! @brief Format value for bitfield DMA_TCDn_NBYTES_MLNO_NBYTES. +#define BF_DMA_TCDn_NBYTES_MLNO_NBYTES(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_NBYTES_MLNO_NBYTES), uint32_t) & BM_DMA_TCDn_NBYTES_MLNO_NBYTES) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NBYTES field to a new value. +#define BW_DMA_TCDn_NBYTES_MLNO_NBYTES(x, n, v) (HW_DMA_TCDn_NBYTES_MLNO_WR(x, n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_NBYTES_MLOFFNO - TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_NBYTES_MLOFFNO - TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (RW) + * + * Reset value: 0x00000000U + * + * One of three registers (this register, TCD_NBYTES_MLNO, or + * TCD_NBYTES_MLOFFYES), defines the number of bytes to transfer per request. Which register to use + * depends on whether minor loop mapping is disabled, enabled but not used for + * this channel, or enabled and used. TCD word 2 is defined as follows if: Minor + * loop mapping is enabled (CR[EMLM] = 1) and SMLOE = 0 and DMLOE = 0 If minor + * loop mapping is enabled and SMLOE or DMLOE is set, then refer to the + * TCD_NBYTES_MLOFFYES register description. If minor loop mapping is disabled, then refer to + * the TCD_NBYTES_MLNO register description. + */ +typedef union _hw_dma_tcdn_nbytes_mloffno +{ + uint32_t U; + struct _hw_dma_tcdn_nbytes_mloffno_bitfields + { + uint32_t NBYTES : 30; //!< [29:0] Minor Byte Transfer Count + uint32_t DMLOE : 1; //!< [30] Destination Minor Loop Offset enable + uint32_t SMLOE : 1; //!< [31] Source Minor Loop Offset Enable + } B; +} hw_dma_tcdn_nbytes_mloffno_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_NBYTES_MLOFFNO register + */ +//@{ +#define HW_DMA_TCDn_NBYTES_MLOFFNO_COUNT (16U) + +#define HW_DMA_TCDn_NBYTES_MLOFFNO_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1008U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_NBYTES_MLOFFNO(x, n) (*(__IO hw_dma_tcdn_nbytes_mloffno_t *) HW_DMA_TCDn_NBYTES_MLOFFNO_ADDR(x, n)) +#define HW_DMA_TCDn_NBYTES_MLOFFNO_RD(x, n) (HW_DMA_TCDn_NBYTES_MLOFFNO(x, n).U) +#define HW_DMA_TCDn_NBYTES_MLOFFNO_WR(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFNO(x, n).U = (v)) +#define HW_DMA_TCDn_NBYTES_MLOFFNO_SET(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFNO_WR(x, n, HW_DMA_TCDn_NBYTES_MLOFFNO_RD(x, n) | (v))) +#define HW_DMA_TCDn_NBYTES_MLOFFNO_CLR(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFNO_WR(x, n, HW_DMA_TCDn_NBYTES_MLOFFNO_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_NBYTES_MLOFFNO_TOG(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFNO_WR(x, n, HW_DMA_TCDn_NBYTES_MLOFFNO_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_NBYTES_MLOFFNO bitfields + */ + +/*! + * @name Register DMA_TCDn_NBYTES_MLOFFNO, field NBYTES[29:0] (RW) + * + * Number of bytes to be transferred in each service request of the channel. As + * a channel activates, the appropriate TCD contents load into the eDMA engine, + * and the appropriate reads and writes perform until the minor byte transfer + * count has transferred. This is an indivisible operation and cannot be halted; + * although, it may be stalled by using the bandwidth control field, or via + * preemption. After the minor count is exhausted, the SADDR and DADDR values are written + * back into the TCD memory, the major iteration count is decremented and + * restored to the TCD memory. If the major iteration count is completed, additional + * processing is performed. + */ +//@{ +#define BP_DMA_TCDn_NBYTES_MLOFFNO_NBYTES (0U) //!< Bit position for DMA_TCDn_NBYTES_MLOFFNO_NBYTES. +#define BM_DMA_TCDn_NBYTES_MLOFFNO_NBYTES (0x3FFFFFFFU) //!< Bit mask for DMA_TCDn_NBYTES_MLOFFNO_NBYTES. +#define BS_DMA_TCDn_NBYTES_MLOFFNO_NBYTES (30U) //!< Bit field size in bits for DMA_TCDn_NBYTES_MLOFFNO_NBYTES. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_NBYTES_MLOFFNO_NBYTES field. +#define BR_DMA_TCDn_NBYTES_MLOFFNO_NBYTES(x, n) (HW_DMA_TCDn_NBYTES_MLOFFNO(x, n).B.NBYTES) +#endif + +//! @brief Format value for bitfield DMA_TCDn_NBYTES_MLOFFNO_NBYTES. +#define BF_DMA_TCDn_NBYTES_MLOFFNO_NBYTES(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_NBYTES_MLOFFNO_NBYTES), uint32_t) & BM_DMA_TCDn_NBYTES_MLOFFNO_NBYTES) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NBYTES field to a new value. +#define BW_DMA_TCDn_NBYTES_MLOFFNO_NBYTES(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFNO_WR(x, n, (HW_DMA_TCDn_NBYTES_MLOFFNO_RD(x, n) & ~BM_DMA_TCDn_NBYTES_MLOFFNO_NBYTES) | BF_DMA_TCDn_NBYTES_MLOFFNO_NBYTES(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_NBYTES_MLOFFNO, field DMLOE[30] (RW) + * + * Selects whether the minor loop offset is applied to the destination address + * upon minor loop completion. + * + * Values: + * - 0 - The minor loop offset is not applied to the DADDR + * - 1 - The minor loop offset is applied to the DADDR + */ +//@{ +#define BP_DMA_TCDn_NBYTES_MLOFFNO_DMLOE (30U) //!< Bit position for DMA_TCDn_NBYTES_MLOFFNO_DMLOE. +#define BM_DMA_TCDn_NBYTES_MLOFFNO_DMLOE (0x40000000U) //!< Bit mask for DMA_TCDn_NBYTES_MLOFFNO_DMLOE. +#define BS_DMA_TCDn_NBYTES_MLOFFNO_DMLOE (1U) //!< Bit field size in bits for DMA_TCDn_NBYTES_MLOFFNO_DMLOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_NBYTES_MLOFFNO_DMLOE field. +#define BR_DMA_TCDn_NBYTES_MLOFFNO_DMLOE(x, n) (BITBAND_ACCESS32(HW_DMA_TCDn_NBYTES_MLOFFNO_ADDR(x, n), BP_DMA_TCDn_NBYTES_MLOFFNO_DMLOE)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_NBYTES_MLOFFNO_DMLOE. +#define BF_DMA_TCDn_NBYTES_MLOFFNO_DMLOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_NBYTES_MLOFFNO_DMLOE), uint32_t) & BM_DMA_TCDn_NBYTES_MLOFFNO_DMLOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMLOE field to a new value. +#define BW_DMA_TCDn_NBYTES_MLOFFNO_DMLOE(x, n, v) (BITBAND_ACCESS32(HW_DMA_TCDn_NBYTES_MLOFFNO_ADDR(x, n), BP_DMA_TCDn_NBYTES_MLOFFNO_DMLOE) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_NBYTES_MLOFFNO, field SMLOE[31] (RW) + * + * Selects whether the minor loop offset is applied to the source address upon + * minor loop completion. + * + * Values: + * - 0 - The minor loop offset is not applied to the SADDR + * - 1 - The minor loop offset is applied to the SADDR + */ +//@{ +#define BP_DMA_TCDn_NBYTES_MLOFFNO_SMLOE (31U) //!< Bit position for DMA_TCDn_NBYTES_MLOFFNO_SMLOE. +#define BM_DMA_TCDn_NBYTES_MLOFFNO_SMLOE (0x80000000U) //!< Bit mask for DMA_TCDn_NBYTES_MLOFFNO_SMLOE. +#define BS_DMA_TCDn_NBYTES_MLOFFNO_SMLOE (1U) //!< Bit field size in bits for DMA_TCDn_NBYTES_MLOFFNO_SMLOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_NBYTES_MLOFFNO_SMLOE field. +#define BR_DMA_TCDn_NBYTES_MLOFFNO_SMLOE(x, n) (BITBAND_ACCESS32(HW_DMA_TCDn_NBYTES_MLOFFNO_ADDR(x, n), BP_DMA_TCDn_NBYTES_MLOFFNO_SMLOE)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_NBYTES_MLOFFNO_SMLOE. +#define BF_DMA_TCDn_NBYTES_MLOFFNO_SMLOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_NBYTES_MLOFFNO_SMLOE), uint32_t) & BM_DMA_TCDn_NBYTES_MLOFFNO_SMLOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SMLOE field to a new value. +#define BW_DMA_TCDn_NBYTES_MLOFFNO_SMLOE(x, n, v) (BITBAND_ACCESS32(HW_DMA_TCDn_NBYTES_MLOFFNO_ADDR(x, n), BP_DMA_TCDn_NBYTES_MLOFFNO_SMLOE) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_NBYTES_MLOFFYES - TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_NBYTES_MLOFFYES - TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (RW) + * + * Reset value: 0x00000000U + * + * One of three registers (this register, TCD_NBYTES_MLNO, or + * TCD_NBYTES_MLOFFNO), defines the number of bytes to transfer per request. Which register to use + * depends on whether minor loop mapping is disabled, enabled but not used for + * this channel, or enabled and used. TCD word 2 is defined as follows if: Minor + * loop mapping is enabled (CR[EMLM] = 1) and Minor loop offset is enabled (SMLOE + * or DMLOE = 1) If minor loop mapping is enabled and SMLOE and DMLOE are cleared, + * then refer to the TCD_NBYTES_MLOFFNO register description. If minor loop + * mapping is disabled, then refer to the TCD_NBYTES_MLNO register description. + */ +typedef union _hw_dma_tcdn_nbytes_mloffyes +{ + uint32_t U; + struct _hw_dma_tcdn_nbytes_mloffyes_bitfields + { + uint32_t NBYTES : 10; //!< [9:0] Minor Byte Transfer Count + uint32_t MLOFF : 20; //!< [29:10] If SMLOE or DMLOE is set, this + //! field represents a sign-extended offset applied to the source or + //! destination address to form the next-state value after the minor loop completes. + uint32_t DMLOE : 1; //!< [30] Destination Minor Loop Offset enable + uint32_t SMLOE : 1; //!< [31] Source Minor Loop Offset Enable + } B; +} hw_dma_tcdn_nbytes_mloffyes_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_NBYTES_MLOFFYES register + */ +//@{ +#define HW_DMA_TCDn_NBYTES_MLOFFYES_COUNT (16U) + +#define HW_DMA_TCDn_NBYTES_MLOFFYES_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1008U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_NBYTES_MLOFFYES(x, n) (*(__IO hw_dma_tcdn_nbytes_mloffyes_t *) HW_DMA_TCDn_NBYTES_MLOFFYES_ADDR(x, n)) +#define HW_DMA_TCDn_NBYTES_MLOFFYES_RD(x, n) (HW_DMA_TCDn_NBYTES_MLOFFYES(x, n).U) +#define HW_DMA_TCDn_NBYTES_MLOFFYES_WR(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFYES(x, n).U = (v)) +#define HW_DMA_TCDn_NBYTES_MLOFFYES_SET(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFYES_WR(x, n, HW_DMA_TCDn_NBYTES_MLOFFYES_RD(x, n) | (v))) +#define HW_DMA_TCDn_NBYTES_MLOFFYES_CLR(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFYES_WR(x, n, HW_DMA_TCDn_NBYTES_MLOFFYES_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_NBYTES_MLOFFYES_TOG(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFYES_WR(x, n, HW_DMA_TCDn_NBYTES_MLOFFYES_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_NBYTES_MLOFFYES bitfields + */ + +/*! + * @name Register DMA_TCDn_NBYTES_MLOFFYES, field NBYTES[9:0] (RW) + * + * Number of bytes to be transferred in each service request of the channel. As + * a channel activates, the appropriate TCD contents load into the eDMA engine, + * and the appropriate reads and writes perform until the minor byte transfer + * count has transferred. This is an indivisible operation and cannot be halted. + * (Although, it may be stalled by using the bandwidth control field, or via + * preemption.) After the minor count is exhausted, the SADDR and DADDR values are + * written back into the TCD memory, the major iteration count is decremented and + * restored to the TCD memory. If the major iteration count is completed, additional + * processing is performed. + */ +//@{ +#define BP_DMA_TCDn_NBYTES_MLOFFYES_NBYTES (0U) //!< Bit position for DMA_TCDn_NBYTES_MLOFFYES_NBYTES. +#define BM_DMA_TCDn_NBYTES_MLOFFYES_NBYTES (0x000003FFU) //!< Bit mask for DMA_TCDn_NBYTES_MLOFFYES_NBYTES. +#define BS_DMA_TCDn_NBYTES_MLOFFYES_NBYTES (10U) //!< Bit field size in bits for DMA_TCDn_NBYTES_MLOFFYES_NBYTES. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_NBYTES_MLOFFYES_NBYTES field. +#define BR_DMA_TCDn_NBYTES_MLOFFYES_NBYTES(x, n) (HW_DMA_TCDn_NBYTES_MLOFFYES(x, n).B.NBYTES) +#endif + +//! @brief Format value for bitfield DMA_TCDn_NBYTES_MLOFFYES_NBYTES. +#define BF_DMA_TCDn_NBYTES_MLOFFYES_NBYTES(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_NBYTES_MLOFFYES_NBYTES), uint32_t) & BM_DMA_TCDn_NBYTES_MLOFFYES_NBYTES) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NBYTES field to a new value. +#define BW_DMA_TCDn_NBYTES_MLOFFYES_NBYTES(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFYES_WR(x, n, (HW_DMA_TCDn_NBYTES_MLOFFYES_RD(x, n) & ~BM_DMA_TCDn_NBYTES_MLOFFYES_NBYTES) | BF_DMA_TCDn_NBYTES_MLOFFYES_NBYTES(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_NBYTES_MLOFFYES, field MLOFF[29:10] (RW) + */ +//@{ +#define BP_DMA_TCDn_NBYTES_MLOFFYES_MLOFF (10U) //!< Bit position for DMA_TCDn_NBYTES_MLOFFYES_MLOFF. +#define BM_DMA_TCDn_NBYTES_MLOFFYES_MLOFF (0x3FFFFC00U) //!< Bit mask for DMA_TCDn_NBYTES_MLOFFYES_MLOFF. +#define BS_DMA_TCDn_NBYTES_MLOFFYES_MLOFF (20U) //!< Bit field size in bits for DMA_TCDn_NBYTES_MLOFFYES_MLOFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_NBYTES_MLOFFYES_MLOFF field. +#define BR_DMA_TCDn_NBYTES_MLOFFYES_MLOFF(x, n) (HW_DMA_TCDn_NBYTES_MLOFFYES(x, n).B.MLOFF) +#endif + +//! @brief Format value for bitfield DMA_TCDn_NBYTES_MLOFFYES_MLOFF. +#define BF_DMA_TCDn_NBYTES_MLOFFYES_MLOFF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_NBYTES_MLOFFYES_MLOFF), uint32_t) & BM_DMA_TCDn_NBYTES_MLOFFYES_MLOFF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MLOFF field to a new value. +#define BW_DMA_TCDn_NBYTES_MLOFFYES_MLOFF(x, n, v) (HW_DMA_TCDn_NBYTES_MLOFFYES_WR(x, n, (HW_DMA_TCDn_NBYTES_MLOFFYES_RD(x, n) & ~BM_DMA_TCDn_NBYTES_MLOFFYES_MLOFF) | BF_DMA_TCDn_NBYTES_MLOFFYES_MLOFF(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_NBYTES_MLOFFYES, field DMLOE[30] (RW) + * + * Selects whether the minor loop offset is applied to the destination address + * upon minor loop completion. + * + * Values: + * - 0 - The minor loop offset is not applied to the DADDR + * - 1 - The minor loop offset is applied to the DADDR + */ +//@{ +#define BP_DMA_TCDn_NBYTES_MLOFFYES_DMLOE (30U) //!< Bit position for DMA_TCDn_NBYTES_MLOFFYES_DMLOE. +#define BM_DMA_TCDn_NBYTES_MLOFFYES_DMLOE (0x40000000U) //!< Bit mask for DMA_TCDn_NBYTES_MLOFFYES_DMLOE. +#define BS_DMA_TCDn_NBYTES_MLOFFYES_DMLOE (1U) //!< Bit field size in bits for DMA_TCDn_NBYTES_MLOFFYES_DMLOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_NBYTES_MLOFFYES_DMLOE field. +#define BR_DMA_TCDn_NBYTES_MLOFFYES_DMLOE(x, n) (BITBAND_ACCESS32(HW_DMA_TCDn_NBYTES_MLOFFYES_ADDR(x, n), BP_DMA_TCDn_NBYTES_MLOFFYES_DMLOE)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_NBYTES_MLOFFYES_DMLOE. +#define BF_DMA_TCDn_NBYTES_MLOFFYES_DMLOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_NBYTES_MLOFFYES_DMLOE), uint32_t) & BM_DMA_TCDn_NBYTES_MLOFFYES_DMLOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMLOE field to a new value. +#define BW_DMA_TCDn_NBYTES_MLOFFYES_DMLOE(x, n, v) (BITBAND_ACCESS32(HW_DMA_TCDn_NBYTES_MLOFFYES_ADDR(x, n), BP_DMA_TCDn_NBYTES_MLOFFYES_DMLOE) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_NBYTES_MLOFFYES, field SMLOE[31] (RW) + * + * Selects whether the minor loop offset is applied to the source address upon + * minor loop completion. + * + * Values: + * - 0 - The minor loop offset is not applied to the SADDR + * - 1 - The minor loop offset is applied to the SADDR + */ +//@{ +#define BP_DMA_TCDn_NBYTES_MLOFFYES_SMLOE (31U) //!< Bit position for DMA_TCDn_NBYTES_MLOFFYES_SMLOE. +#define BM_DMA_TCDn_NBYTES_MLOFFYES_SMLOE (0x80000000U) //!< Bit mask for DMA_TCDn_NBYTES_MLOFFYES_SMLOE. +#define BS_DMA_TCDn_NBYTES_MLOFFYES_SMLOE (1U) //!< Bit field size in bits for DMA_TCDn_NBYTES_MLOFFYES_SMLOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_NBYTES_MLOFFYES_SMLOE field. +#define BR_DMA_TCDn_NBYTES_MLOFFYES_SMLOE(x, n) (BITBAND_ACCESS32(HW_DMA_TCDn_NBYTES_MLOFFYES_ADDR(x, n), BP_DMA_TCDn_NBYTES_MLOFFYES_SMLOE)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_NBYTES_MLOFFYES_SMLOE. +#define BF_DMA_TCDn_NBYTES_MLOFFYES_SMLOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_NBYTES_MLOFFYES_SMLOE), uint32_t) & BM_DMA_TCDn_NBYTES_MLOFFYES_SMLOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SMLOE field to a new value. +#define BW_DMA_TCDn_NBYTES_MLOFFYES_SMLOE(x, n, v) (BITBAND_ACCESS32(HW_DMA_TCDn_NBYTES_MLOFFYES_ADDR(x, n), BP_DMA_TCDn_NBYTES_MLOFFYES_SMLOE) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_SLAST - TCD Last Source Address Adjustment +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_SLAST - TCD Last Source Address Adjustment (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_dma_tcdn_slast +{ + uint32_t U; + struct _hw_dma_tcdn_slast_bitfields + { + uint32_t SLAST : 32; //!< [31:0] Last source Address Adjustment + } B; +} hw_dma_tcdn_slast_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_SLAST register + */ +//@{ +#define HW_DMA_TCDn_SLAST_COUNT (16U) + +#define HW_DMA_TCDn_SLAST_ADDR(x, n) (REGS_DMA_BASE(x) + 0x100CU + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_SLAST(x, n) (*(__IO hw_dma_tcdn_slast_t *) HW_DMA_TCDn_SLAST_ADDR(x, n)) +#define HW_DMA_TCDn_SLAST_RD(x, n) (HW_DMA_TCDn_SLAST(x, n).U) +#define HW_DMA_TCDn_SLAST_WR(x, n, v) (HW_DMA_TCDn_SLAST(x, n).U = (v)) +#define HW_DMA_TCDn_SLAST_SET(x, n, v) (HW_DMA_TCDn_SLAST_WR(x, n, HW_DMA_TCDn_SLAST_RD(x, n) | (v))) +#define HW_DMA_TCDn_SLAST_CLR(x, n, v) (HW_DMA_TCDn_SLAST_WR(x, n, HW_DMA_TCDn_SLAST_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_SLAST_TOG(x, n, v) (HW_DMA_TCDn_SLAST_WR(x, n, HW_DMA_TCDn_SLAST_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_SLAST bitfields + */ + +/*! + * @name Register DMA_TCDn_SLAST, field SLAST[31:0] (RW) + * + * Adjustment value added to the source address at the completion of the major + * iteration count. This value can be applied to restore the source address to the + * initial value, or adjust the address to reference the next data structure. + * This register uses two's complement notation; the overflow bit is discarded. + */ +//@{ +#define BP_DMA_TCDn_SLAST_SLAST (0U) //!< Bit position for DMA_TCDn_SLAST_SLAST. +#define BM_DMA_TCDn_SLAST_SLAST (0xFFFFFFFFU) //!< Bit mask for DMA_TCDn_SLAST_SLAST. +#define BS_DMA_TCDn_SLAST_SLAST (32U) //!< Bit field size in bits for DMA_TCDn_SLAST_SLAST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_SLAST_SLAST field. +#define BR_DMA_TCDn_SLAST_SLAST(x, n) (HW_DMA_TCDn_SLAST(x, n).U) +#endif + +//! @brief Format value for bitfield DMA_TCDn_SLAST_SLAST. +#define BF_DMA_TCDn_SLAST_SLAST(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_SLAST_SLAST), uint32_t) & BM_DMA_TCDn_SLAST_SLAST) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SLAST field to a new value. +#define BW_DMA_TCDn_SLAST_SLAST(x, n, v) (HW_DMA_TCDn_SLAST_WR(x, n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_DADDR - TCD Destination Address +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_DADDR - TCD Destination Address (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_dma_tcdn_daddr +{ + uint32_t U; + struct _hw_dma_tcdn_daddr_bitfields + { + uint32_t DADDR : 32; //!< [31:0] Destination Address + } B; +} hw_dma_tcdn_daddr_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_DADDR register + */ +//@{ +#define HW_DMA_TCDn_DADDR_COUNT (16U) + +#define HW_DMA_TCDn_DADDR_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1010U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_DADDR(x, n) (*(__IO hw_dma_tcdn_daddr_t *) HW_DMA_TCDn_DADDR_ADDR(x, n)) +#define HW_DMA_TCDn_DADDR_RD(x, n) (HW_DMA_TCDn_DADDR(x, n).U) +#define HW_DMA_TCDn_DADDR_WR(x, n, v) (HW_DMA_TCDn_DADDR(x, n).U = (v)) +#define HW_DMA_TCDn_DADDR_SET(x, n, v) (HW_DMA_TCDn_DADDR_WR(x, n, HW_DMA_TCDn_DADDR_RD(x, n) | (v))) +#define HW_DMA_TCDn_DADDR_CLR(x, n, v) (HW_DMA_TCDn_DADDR_WR(x, n, HW_DMA_TCDn_DADDR_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_DADDR_TOG(x, n, v) (HW_DMA_TCDn_DADDR_WR(x, n, HW_DMA_TCDn_DADDR_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_DADDR bitfields + */ + +/*! + * @name Register DMA_TCDn_DADDR, field DADDR[31:0] (RW) + * + * Memory address pointing to the destination data. + */ +//@{ +#define BP_DMA_TCDn_DADDR_DADDR (0U) //!< Bit position for DMA_TCDn_DADDR_DADDR. +#define BM_DMA_TCDn_DADDR_DADDR (0xFFFFFFFFU) //!< Bit mask for DMA_TCDn_DADDR_DADDR. +#define BS_DMA_TCDn_DADDR_DADDR (32U) //!< Bit field size in bits for DMA_TCDn_DADDR_DADDR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_DADDR_DADDR field. +#define BR_DMA_TCDn_DADDR_DADDR(x, n) (HW_DMA_TCDn_DADDR(x, n).U) +#endif + +//! @brief Format value for bitfield DMA_TCDn_DADDR_DADDR. +#define BF_DMA_TCDn_DADDR_DADDR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_DADDR_DADDR), uint32_t) & BM_DMA_TCDn_DADDR_DADDR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DADDR field to a new value. +#define BW_DMA_TCDn_DADDR_DADDR(x, n, v) (HW_DMA_TCDn_DADDR_WR(x, n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_DOFF - TCD Signed Destination Address Offset +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_DOFF - TCD Signed Destination Address Offset (RW) + * + * Reset value: 0x0000U + */ +typedef union _hw_dma_tcdn_doff +{ + uint16_t U; + struct _hw_dma_tcdn_doff_bitfields + { + uint16_t DOFF : 16; //!< [15:0] Destination Address Signed offset + } B; +} hw_dma_tcdn_doff_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_DOFF register + */ +//@{ +#define HW_DMA_TCDn_DOFF_COUNT (16U) + +#define HW_DMA_TCDn_DOFF_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1014U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_DOFF(x, n) (*(__IO hw_dma_tcdn_doff_t *) HW_DMA_TCDn_DOFF_ADDR(x, n)) +#define HW_DMA_TCDn_DOFF_RD(x, n) (HW_DMA_TCDn_DOFF(x, n).U) +#define HW_DMA_TCDn_DOFF_WR(x, n, v) (HW_DMA_TCDn_DOFF(x, n).U = (v)) +#define HW_DMA_TCDn_DOFF_SET(x, n, v) (HW_DMA_TCDn_DOFF_WR(x, n, HW_DMA_TCDn_DOFF_RD(x, n) | (v))) +#define HW_DMA_TCDn_DOFF_CLR(x, n, v) (HW_DMA_TCDn_DOFF_WR(x, n, HW_DMA_TCDn_DOFF_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_DOFF_TOG(x, n, v) (HW_DMA_TCDn_DOFF_WR(x, n, HW_DMA_TCDn_DOFF_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_DOFF bitfields + */ + +/*! + * @name Register DMA_TCDn_DOFF, field DOFF[15:0] (RW) + * + * Sign-extended offset applied to the current destination address to form the + * next-state value as each destination write is completed. + */ +//@{ +#define BP_DMA_TCDn_DOFF_DOFF (0U) //!< Bit position for DMA_TCDn_DOFF_DOFF. +#define BM_DMA_TCDn_DOFF_DOFF (0xFFFFU) //!< Bit mask for DMA_TCDn_DOFF_DOFF. +#define BS_DMA_TCDn_DOFF_DOFF (16U) //!< Bit field size in bits for DMA_TCDn_DOFF_DOFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_DOFF_DOFF field. +#define BR_DMA_TCDn_DOFF_DOFF(x, n) (HW_DMA_TCDn_DOFF(x, n).U) +#endif + +//! @brief Format value for bitfield DMA_TCDn_DOFF_DOFF. +#define BF_DMA_TCDn_DOFF_DOFF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_DOFF_DOFF), uint16_t) & BM_DMA_TCDn_DOFF_DOFF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DOFF field to a new value. +#define BW_DMA_TCDn_DOFF_DOFF(x, n, v) (HW_DMA_TCDn_DOFF_WR(x, n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_CITER_ELINKNO - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_CITER_ELINKNO - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled) (RW) + * + * Reset value: 0x0000U + * + * If TCDn_CITER[ELINK] is cleared, the TCDn_CITER register is defined as + * follows. + */ +typedef union _hw_dma_tcdn_citer_elinkno +{ + uint16_t U; + struct _hw_dma_tcdn_citer_elinkno_bitfields + { + uint16_t CITER : 15; //!< [14:0] Current Major Iteration Count + uint16_t ELINK : 1; //!< [15] Enable channel-to-channel linking on + //! minor-loop complete + } B; +} hw_dma_tcdn_citer_elinkno_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_CITER_ELINKNO register + */ +//@{ +#define HW_DMA_TCDn_CITER_ELINKNO_COUNT (16U) + +#define HW_DMA_TCDn_CITER_ELINKNO_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1016U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_CITER_ELINKNO(x, n) (*(__IO hw_dma_tcdn_citer_elinkno_t *) HW_DMA_TCDn_CITER_ELINKNO_ADDR(x, n)) +#define HW_DMA_TCDn_CITER_ELINKNO_RD(x, n) (HW_DMA_TCDn_CITER_ELINKNO(x, n).U) +#define HW_DMA_TCDn_CITER_ELINKNO_WR(x, n, v) (HW_DMA_TCDn_CITER_ELINKNO(x, n).U = (v)) +#define HW_DMA_TCDn_CITER_ELINKNO_SET(x, n, v) (HW_DMA_TCDn_CITER_ELINKNO_WR(x, n, HW_DMA_TCDn_CITER_ELINKNO_RD(x, n) | (v))) +#define HW_DMA_TCDn_CITER_ELINKNO_CLR(x, n, v) (HW_DMA_TCDn_CITER_ELINKNO_WR(x, n, HW_DMA_TCDn_CITER_ELINKNO_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_CITER_ELINKNO_TOG(x, n, v) (HW_DMA_TCDn_CITER_ELINKNO_WR(x, n, HW_DMA_TCDn_CITER_ELINKNO_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_CITER_ELINKNO bitfields + */ + +/*! + * @name Register DMA_TCDn_CITER_ELINKNO, field CITER[14:0] (RW) + * + * This 9-bit (ELINK = 1) or 15-bit (ELINK = 0) count represents the current + * major loop count for the channel. It is decremented each time the minor loop is + * completed and updated in the transfer control descriptor memory. After the + * major iteration count is exhausted, the channel performs a number of operations + * (e.g., final source and destination address calculations), optionally generating + * an interrupt to signal channel completion before reloading the CITER field + * from the beginning iteration count (BITER) field. When the CITER field is + * initially loaded by software, it must be set to the same value as that contained in + * the BITER field. If the channel is configured to execute a single service + * request, the initial values of BITER and CITER should be 0x0001. + */ +//@{ +#define BP_DMA_TCDn_CITER_ELINKNO_CITER (0U) //!< Bit position for DMA_TCDn_CITER_ELINKNO_CITER. +#define BM_DMA_TCDn_CITER_ELINKNO_CITER (0x7FFFU) //!< Bit mask for DMA_TCDn_CITER_ELINKNO_CITER. +#define BS_DMA_TCDn_CITER_ELINKNO_CITER (15U) //!< Bit field size in bits for DMA_TCDn_CITER_ELINKNO_CITER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CITER_ELINKNO_CITER field. +#define BR_DMA_TCDn_CITER_ELINKNO_CITER(x, n) (HW_DMA_TCDn_CITER_ELINKNO(x, n).B.CITER) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CITER_ELINKNO_CITER. +#define BF_DMA_TCDn_CITER_ELINKNO_CITER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CITER_ELINKNO_CITER), uint16_t) & BM_DMA_TCDn_CITER_ELINKNO_CITER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CITER field to a new value. +#define BW_DMA_TCDn_CITER_ELINKNO_CITER(x, n, v) (HW_DMA_TCDn_CITER_ELINKNO_WR(x, n, (HW_DMA_TCDn_CITER_ELINKNO_RD(x, n) & ~BM_DMA_TCDn_CITER_ELINKNO_CITER) | BF_DMA_TCDn_CITER_ELINKNO_CITER(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CITER_ELINKNO, field ELINK[15] (RW) + * + * As the channel completes the minor loop, this flag enables linking to another + * channel, defined by the LINKCH field. The link target channel initiates a + * channel service request via an internal mechanism that sets the TCDn_CSR[START] + * bit of the specified channel. If channel linking is disabled, the CITER value + * is extended to 15 bits in place of a link channel number. If the major loop is + * exhausted, this link mechanism is suppressed in favor of the MAJORELINK + * channel linking. This bit must be equal to the BITER[ELINK] bit; otherwise, a + * configuration error is reported. + * + * Values: + * - 0 - The channel-to-channel linking is disabled + * - 1 - The channel-to-channel linking is enabled + */ +//@{ +#define BP_DMA_TCDn_CITER_ELINKNO_ELINK (15U) //!< Bit position for DMA_TCDn_CITER_ELINKNO_ELINK. +#define BM_DMA_TCDn_CITER_ELINKNO_ELINK (0x8000U) //!< Bit mask for DMA_TCDn_CITER_ELINKNO_ELINK. +#define BS_DMA_TCDn_CITER_ELINKNO_ELINK (1U) //!< Bit field size in bits for DMA_TCDn_CITER_ELINKNO_ELINK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CITER_ELINKNO_ELINK field. +#define BR_DMA_TCDn_CITER_ELINKNO_ELINK(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CITER_ELINKNO_ADDR(x, n), BP_DMA_TCDn_CITER_ELINKNO_ELINK)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CITER_ELINKNO_ELINK. +#define BF_DMA_TCDn_CITER_ELINKNO_ELINK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CITER_ELINKNO_ELINK), uint16_t) & BM_DMA_TCDn_CITER_ELINKNO_ELINK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ELINK field to a new value. +#define BW_DMA_TCDn_CITER_ELINKNO_ELINK(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CITER_ELINKNO_ADDR(x, n), BP_DMA_TCDn_CITER_ELINKNO_ELINK) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_CITER_ELINKYES - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_CITER_ELINKYES - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (RW) + * + * Reset value: 0x0000U + * + * If TCDn_CITER[ELINK] is set, the TCDn_CITER register is defined as follows. + */ +typedef union _hw_dma_tcdn_citer_elinkyes +{ + uint16_t U; + struct _hw_dma_tcdn_citer_elinkyes_bitfields + { + uint16_t CITER : 9; //!< [8:0] Current Major Iteration Count + uint16_t LINKCH : 4; //!< [12:9] Link Channel Number + uint16_t RESERVED0 : 2; //!< [14:13] + uint16_t ELINK : 1; //!< [15] Enable channel-to-channel linking on + //! minor-loop complete + } B; +} hw_dma_tcdn_citer_elinkyes_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_CITER_ELINKYES register + */ +//@{ +#define HW_DMA_TCDn_CITER_ELINKYES_COUNT (16U) + +#define HW_DMA_TCDn_CITER_ELINKYES_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1016U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_CITER_ELINKYES(x, n) (*(__IO hw_dma_tcdn_citer_elinkyes_t *) HW_DMA_TCDn_CITER_ELINKYES_ADDR(x, n)) +#define HW_DMA_TCDn_CITER_ELINKYES_RD(x, n) (HW_DMA_TCDn_CITER_ELINKYES(x, n).U) +#define HW_DMA_TCDn_CITER_ELINKYES_WR(x, n, v) (HW_DMA_TCDn_CITER_ELINKYES(x, n).U = (v)) +#define HW_DMA_TCDn_CITER_ELINKYES_SET(x, n, v) (HW_DMA_TCDn_CITER_ELINKYES_WR(x, n, HW_DMA_TCDn_CITER_ELINKYES_RD(x, n) | (v))) +#define HW_DMA_TCDn_CITER_ELINKYES_CLR(x, n, v) (HW_DMA_TCDn_CITER_ELINKYES_WR(x, n, HW_DMA_TCDn_CITER_ELINKYES_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_CITER_ELINKYES_TOG(x, n, v) (HW_DMA_TCDn_CITER_ELINKYES_WR(x, n, HW_DMA_TCDn_CITER_ELINKYES_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_CITER_ELINKYES bitfields + */ + +/*! + * @name Register DMA_TCDn_CITER_ELINKYES, field CITER[8:0] (RW) + * + * This 9-bit (ELINK = 1) or 15-bit (ELINK = 0) count represents the current + * major loop count for the channel. It is decremented each time the minor loop is + * completed and updated in the transfer control descriptor memory. After the + * major iteration count is exhausted, the channel performs a number of operations + * (e.g., final source and destination address calculations), optionally generating + * an interrupt to signal channel completion before reloading the CITER field + * from the beginning iteration count (BITER) field. When the CITER field is + * initially loaded by software, it must be set to the same value as that contained in + * the BITER field. If the channel is configured to execute a single service + * request, the initial values of BITER and CITER should be 0x0001. + */ +//@{ +#define BP_DMA_TCDn_CITER_ELINKYES_CITER (0U) //!< Bit position for DMA_TCDn_CITER_ELINKYES_CITER. +#define BM_DMA_TCDn_CITER_ELINKYES_CITER (0x01FFU) //!< Bit mask for DMA_TCDn_CITER_ELINKYES_CITER. +#define BS_DMA_TCDn_CITER_ELINKYES_CITER (9U) //!< Bit field size in bits for DMA_TCDn_CITER_ELINKYES_CITER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CITER_ELINKYES_CITER field. +#define BR_DMA_TCDn_CITER_ELINKYES_CITER(x, n) (HW_DMA_TCDn_CITER_ELINKYES(x, n).B.CITER) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CITER_ELINKYES_CITER. +#define BF_DMA_TCDn_CITER_ELINKYES_CITER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CITER_ELINKYES_CITER), uint16_t) & BM_DMA_TCDn_CITER_ELINKYES_CITER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CITER field to a new value. +#define BW_DMA_TCDn_CITER_ELINKYES_CITER(x, n, v) (HW_DMA_TCDn_CITER_ELINKYES_WR(x, n, (HW_DMA_TCDn_CITER_ELINKYES_RD(x, n) & ~BM_DMA_TCDn_CITER_ELINKYES_CITER) | BF_DMA_TCDn_CITER_ELINKYES_CITER(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CITER_ELINKYES, field LINKCH[12:9] (RW) + * + * If channel-to-channel linking is enabled (ELINK = 1), then after the minor + * loop is exhausted, the eDMA engine initiates a channel service request to the + * channel defined by these four bits by setting that channel's TCDn_CSR[START] bit. + */ +//@{ +#define BP_DMA_TCDn_CITER_ELINKYES_LINKCH (9U) //!< Bit position for DMA_TCDn_CITER_ELINKYES_LINKCH. +#define BM_DMA_TCDn_CITER_ELINKYES_LINKCH (0x1E00U) //!< Bit mask for DMA_TCDn_CITER_ELINKYES_LINKCH. +#define BS_DMA_TCDn_CITER_ELINKYES_LINKCH (4U) //!< Bit field size in bits for DMA_TCDn_CITER_ELINKYES_LINKCH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CITER_ELINKYES_LINKCH field. +#define BR_DMA_TCDn_CITER_ELINKYES_LINKCH(x, n) (HW_DMA_TCDn_CITER_ELINKYES(x, n).B.LINKCH) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CITER_ELINKYES_LINKCH. +#define BF_DMA_TCDn_CITER_ELINKYES_LINKCH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CITER_ELINKYES_LINKCH), uint16_t) & BM_DMA_TCDn_CITER_ELINKYES_LINKCH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LINKCH field to a new value. +#define BW_DMA_TCDn_CITER_ELINKYES_LINKCH(x, n, v) (HW_DMA_TCDn_CITER_ELINKYES_WR(x, n, (HW_DMA_TCDn_CITER_ELINKYES_RD(x, n) & ~BM_DMA_TCDn_CITER_ELINKYES_LINKCH) | BF_DMA_TCDn_CITER_ELINKYES_LINKCH(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CITER_ELINKYES, field ELINK[15] (RW) + * + * As the channel completes the minor loop, this flag enables linking to another + * channel, defined by the LINKCH field. The link target channel initiates a + * channel service request via an internal mechanism that sets the TCDn_CSR[START] + * bit of the specified channel. If channel linking is disabled, the CITER value + * is extended to 15 bits in place of a link channel number. If the major loop is + * exhausted, this link mechanism is suppressed in favor of the MAJORELINK + * channel linking. This bit must be equal to the BITER[ELINK] bit; otherwise, a + * configuration error is reported. + * + * Values: + * - 0 - The channel-to-channel linking is disabled + * - 1 - The channel-to-channel linking is enabled + */ +//@{ +#define BP_DMA_TCDn_CITER_ELINKYES_ELINK (15U) //!< Bit position for DMA_TCDn_CITER_ELINKYES_ELINK. +#define BM_DMA_TCDn_CITER_ELINKYES_ELINK (0x8000U) //!< Bit mask for DMA_TCDn_CITER_ELINKYES_ELINK. +#define BS_DMA_TCDn_CITER_ELINKYES_ELINK (1U) //!< Bit field size in bits for DMA_TCDn_CITER_ELINKYES_ELINK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CITER_ELINKYES_ELINK field. +#define BR_DMA_TCDn_CITER_ELINKYES_ELINK(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CITER_ELINKYES_ADDR(x, n), BP_DMA_TCDn_CITER_ELINKYES_ELINK)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CITER_ELINKYES_ELINK. +#define BF_DMA_TCDn_CITER_ELINKYES_ELINK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CITER_ELINKYES_ELINK), uint16_t) & BM_DMA_TCDn_CITER_ELINKYES_ELINK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ELINK field to a new value. +#define BW_DMA_TCDn_CITER_ELINKYES_ELINK(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CITER_ELINKYES_ADDR(x, n), BP_DMA_TCDn_CITER_ELINKYES_ELINK) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_DLASTSGA - TCD Last Destination Address Adjustment/Scatter Gather Address +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_DLASTSGA - TCD Last Destination Address Adjustment/Scatter Gather Address (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_dma_tcdn_dlastsga +{ + uint32_t U; + struct _hw_dma_tcdn_dlastsga_bitfields + { + uint32_t DLASTSGA : 32; //!< [31:0] + } B; +} hw_dma_tcdn_dlastsga_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_DLASTSGA register + */ +//@{ +#define HW_DMA_TCDn_DLASTSGA_COUNT (16U) + +#define HW_DMA_TCDn_DLASTSGA_ADDR(x, n) (REGS_DMA_BASE(x) + 0x1018U + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_DLASTSGA(x, n) (*(__IO hw_dma_tcdn_dlastsga_t *) HW_DMA_TCDn_DLASTSGA_ADDR(x, n)) +#define HW_DMA_TCDn_DLASTSGA_RD(x, n) (HW_DMA_TCDn_DLASTSGA(x, n).U) +#define HW_DMA_TCDn_DLASTSGA_WR(x, n, v) (HW_DMA_TCDn_DLASTSGA(x, n).U = (v)) +#define HW_DMA_TCDn_DLASTSGA_SET(x, n, v) (HW_DMA_TCDn_DLASTSGA_WR(x, n, HW_DMA_TCDn_DLASTSGA_RD(x, n) | (v))) +#define HW_DMA_TCDn_DLASTSGA_CLR(x, n, v) (HW_DMA_TCDn_DLASTSGA_WR(x, n, HW_DMA_TCDn_DLASTSGA_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_DLASTSGA_TOG(x, n, v) (HW_DMA_TCDn_DLASTSGA_WR(x, n, HW_DMA_TCDn_DLASTSGA_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_DLASTSGA bitfields + */ + +/*! + * @name Register DMA_TCDn_DLASTSGA, field DLASTSGA[31:0] (RW) + * + * Destination last address adjustment or the memory address for the next + * transfer control descriptor to be loaded into this channel (scatter/gather). If + * (TCDn_CSR[ESG] = 0), then: Adjustment value added to the destination address at + * the completion of the major iteration count. This value can apply to restore the + * destination address to the initial value or adjust the address to reference + * the next data structure. This field uses two's complement notation for the + * final destination address adjustment. Otherwise: This address points to the + * beginning of a 0-modulo-32-byte region containing the next transfer control + * descriptor to be loaded into this channel. This channel reload is performed as the + * major iteration count completes. The scatter/gather address must be + * 0-modulo-32-byte, else a configuration error is reported. + */ +//@{ +#define BP_DMA_TCDn_DLASTSGA_DLASTSGA (0U) //!< Bit position for DMA_TCDn_DLASTSGA_DLASTSGA. +#define BM_DMA_TCDn_DLASTSGA_DLASTSGA (0xFFFFFFFFU) //!< Bit mask for DMA_TCDn_DLASTSGA_DLASTSGA. +#define BS_DMA_TCDn_DLASTSGA_DLASTSGA (32U) //!< Bit field size in bits for DMA_TCDn_DLASTSGA_DLASTSGA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_DLASTSGA_DLASTSGA field. +#define BR_DMA_TCDn_DLASTSGA_DLASTSGA(x, n) (HW_DMA_TCDn_DLASTSGA(x, n).U) +#endif + +//! @brief Format value for bitfield DMA_TCDn_DLASTSGA_DLASTSGA. +#define BF_DMA_TCDn_DLASTSGA_DLASTSGA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_DMA_TCDn_DLASTSGA_DLASTSGA), uint32_t) & BM_DMA_TCDn_DLASTSGA_DLASTSGA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DLASTSGA field to a new value. +#define BW_DMA_TCDn_DLASTSGA_DLASTSGA(x, n, v) (HW_DMA_TCDn_DLASTSGA_WR(x, n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_CSR - TCD Control and Status +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_CSR - TCD Control and Status (RW) + * + * Reset value: 0x0000U + */ +typedef union _hw_dma_tcdn_csr +{ + uint16_t U; + struct _hw_dma_tcdn_csr_bitfields + { + uint16_t START : 1; //!< [0] Channel Start + uint16_t INTMAJOR : 1; //!< [1] Enable an interrupt when major + //! iteration count completes + uint16_t INTHALF : 1; //!< [2] Enable an interrupt when major counter + //! is half complete. + uint16_t DREQ : 1; //!< [3] Disable Request + uint16_t ESG : 1; //!< [4] Enable Scatter/Gather Processing + uint16_t MAJORELINK : 1; //!< [5] Enable channel-to-channel linking + //! on major loop complete + uint16_t ACTIVE : 1; //!< [6] Channel Active + uint16_t DONE : 1; //!< [7] Channel Done + uint16_t MAJORLINKCH : 4; //!< [11:8] Link Channel Number + uint16_t RESERVED0 : 2; //!< [13:12] + uint16_t BWC : 2; //!< [15:14] Bandwidth Control + } B; +} hw_dma_tcdn_csr_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_CSR register + */ +//@{ +#define HW_DMA_TCDn_CSR_COUNT (16U) + +#define HW_DMA_TCDn_CSR_ADDR(x, n) (REGS_DMA_BASE(x) + 0x101CU + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_CSR(x, n) (*(__IO hw_dma_tcdn_csr_t *) HW_DMA_TCDn_CSR_ADDR(x, n)) +#define HW_DMA_TCDn_CSR_RD(x, n) (HW_DMA_TCDn_CSR(x, n).U) +#define HW_DMA_TCDn_CSR_WR(x, n, v) (HW_DMA_TCDn_CSR(x, n).U = (v)) +#define HW_DMA_TCDn_CSR_SET(x, n, v) (HW_DMA_TCDn_CSR_WR(x, n, HW_DMA_TCDn_CSR_RD(x, n) | (v))) +#define HW_DMA_TCDn_CSR_CLR(x, n, v) (HW_DMA_TCDn_CSR_WR(x, n, HW_DMA_TCDn_CSR_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_CSR_TOG(x, n, v) (HW_DMA_TCDn_CSR_WR(x, n, HW_DMA_TCDn_CSR_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_CSR bitfields + */ + +/*! + * @name Register DMA_TCDn_CSR, field START[0] (RW) + * + * If this flag is set, the channel is requesting service. The eDMA hardware + * automatically clears this flag after the channel begins execution. + * + * Values: + * - 0 - The channel is not explicitly started + * - 1 - The channel is explicitly started via a software initiated service + * request + */ +//@{ +#define BP_DMA_TCDn_CSR_START (0U) //!< Bit position for DMA_TCDn_CSR_START. +#define BM_DMA_TCDn_CSR_START (0x0001U) //!< Bit mask for DMA_TCDn_CSR_START. +#define BS_DMA_TCDn_CSR_START (1U) //!< Bit field size in bits for DMA_TCDn_CSR_START. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_START field. +#define BR_DMA_TCDn_CSR_START(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_START)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_START. +#define BF_DMA_TCDn_CSR_START(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_START), uint16_t) & BM_DMA_TCDn_CSR_START) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the START field to a new value. +#define BW_DMA_TCDn_CSR_START(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_START) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CSR, field INTMAJOR[1] (RW) + * + * If this flag is set, the channel generates an interrupt request by setting + * the appropriate bit in the INT when the current major iteration count reaches + * zero. + * + * Values: + * - 0 - The end-of-major loop interrupt is disabled + * - 1 - The end-of-major loop interrupt is enabled + */ +//@{ +#define BP_DMA_TCDn_CSR_INTMAJOR (1U) //!< Bit position for DMA_TCDn_CSR_INTMAJOR. +#define BM_DMA_TCDn_CSR_INTMAJOR (0x0002U) //!< Bit mask for DMA_TCDn_CSR_INTMAJOR. +#define BS_DMA_TCDn_CSR_INTMAJOR (1U) //!< Bit field size in bits for DMA_TCDn_CSR_INTMAJOR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_INTMAJOR field. +#define BR_DMA_TCDn_CSR_INTMAJOR(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_INTMAJOR)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_INTMAJOR. +#define BF_DMA_TCDn_CSR_INTMAJOR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_INTMAJOR), uint16_t) & BM_DMA_TCDn_CSR_INTMAJOR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INTMAJOR field to a new value. +#define BW_DMA_TCDn_CSR_INTMAJOR(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_INTMAJOR) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CSR, field INTHALF[2] (RW) + * + * If this flag is set, the channel generates an interrupt request by setting + * the appropriate bit in the INT register when the current major iteration count + * reaches the halfway point. Specifically, the comparison performed by the eDMA + * engine is (CITER == (BITER >> 1)). This halfway point interrupt request is + * provided to support double-buffered (aka ping-pong) schemes or other types of data + * movement where the processor needs an early indication of the transfer's + * progress. If BITER is set, do not use INTHALF. Use INTMAJOR instead. + * + * Values: + * - 0 - The half-point interrupt is disabled + * - 1 - The half-point interrupt is enabled + */ +//@{ +#define BP_DMA_TCDn_CSR_INTHALF (2U) //!< Bit position for DMA_TCDn_CSR_INTHALF. +#define BM_DMA_TCDn_CSR_INTHALF (0x0004U) //!< Bit mask for DMA_TCDn_CSR_INTHALF. +#define BS_DMA_TCDn_CSR_INTHALF (1U) //!< Bit field size in bits for DMA_TCDn_CSR_INTHALF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_INTHALF field. +#define BR_DMA_TCDn_CSR_INTHALF(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_INTHALF)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_INTHALF. +#define BF_DMA_TCDn_CSR_INTHALF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_INTHALF), uint16_t) & BM_DMA_TCDn_CSR_INTHALF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INTHALF field to a new value. +#define BW_DMA_TCDn_CSR_INTHALF(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_INTHALF) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CSR, field DREQ[3] (RW) + * + * If this flag is set, the eDMA hardware automatically clears the corresponding + * ERQ bit when the current major iteration count reaches zero. + * + * Values: + * - 0 - The channel's ERQ bit is not affected + * - 1 - The channel's ERQ bit is cleared when the major loop is complete + */ +//@{ +#define BP_DMA_TCDn_CSR_DREQ (3U) //!< Bit position for DMA_TCDn_CSR_DREQ. +#define BM_DMA_TCDn_CSR_DREQ (0x0008U) //!< Bit mask for DMA_TCDn_CSR_DREQ. +#define BS_DMA_TCDn_CSR_DREQ (1U) //!< Bit field size in bits for DMA_TCDn_CSR_DREQ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_DREQ field. +#define BR_DMA_TCDn_CSR_DREQ(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_DREQ)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_DREQ. +#define BF_DMA_TCDn_CSR_DREQ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_DREQ), uint16_t) & BM_DMA_TCDn_CSR_DREQ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DREQ field to a new value. +#define BW_DMA_TCDn_CSR_DREQ(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_DREQ) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CSR, field ESG[4] (RW) + * + * As the channel completes the major loop, this flag enables scatter/gather + * processing in the current channel. If enabled, the eDMA engine uses DLASTSGA as a + * memory pointer to a 0-modulo-32 address containing a 32-byte data structure + * loaded as the transfer control descriptor into the local memory. To support the + * dynamic scatter/gather coherency model, this field is forced to zero when + * written to while the TCDn_CSR[DONE] bit is set. + * + * Values: + * - 0 - The current channel's TCD is normal format. + * - 1 - The current channel's TCD specifies a scatter gather format. The + * DLASTSGA field provides a memory pointer to the next TCD to be loaded into this + * channel after the major loop completes its execution. + */ +//@{ +#define BP_DMA_TCDn_CSR_ESG (4U) //!< Bit position for DMA_TCDn_CSR_ESG. +#define BM_DMA_TCDn_CSR_ESG (0x0010U) //!< Bit mask for DMA_TCDn_CSR_ESG. +#define BS_DMA_TCDn_CSR_ESG (1U) //!< Bit field size in bits for DMA_TCDn_CSR_ESG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_ESG field. +#define BR_DMA_TCDn_CSR_ESG(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_ESG)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_ESG. +#define BF_DMA_TCDn_CSR_ESG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_ESG), uint16_t) & BM_DMA_TCDn_CSR_ESG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ESG field to a new value. +#define BW_DMA_TCDn_CSR_ESG(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_ESG) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CSR, field MAJORELINK[5] (RW) + * + * As the channel completes the major loop, this flag enables the linking to + * another channel, defined by MAJORLINKCH. The link target channel initiates a + * channel service request via an internal mechanism that sets the TCDn_CSR[START] + * bit of the specified channel. To support the dynamic linking coherency model, + * this field is forced to zero when written to while the TCDn_CSR[DONE] bit is set. + * + * Values: + * - 0 - The channel-to-channel linking is disabled + * - 1 - The channel-to-channel linking is enabled + */ +//@{ +#define BP_DMA_TCDn_CSR_MAJORELINK (5U) //!< Bit position for DMA_TCDn_CSR_MAJORELINK. +#define BM_DMA_TCDn_CSR_MAJORELINK (0x0020U) //!< Bit mask for DMA_TCDn_CSR_MAJORELINK. +#define BS_DMA_TCDn_CSR_MAJORELINK (1U) //!< Bit field size in bits for DMA_TCDn_CSR_MAJORELINK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_MAJORELINK field. +#define BR_DMA_TCDn_CSR_MAJORELINK(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_MAJORELINK)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_MAJORELINK. +#define BF_DMA_TCDn_CSR_MAJORELINK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_MAJORELINK), uint16_t) & BM_DMA_TCDn_CSR_MAJORELINK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MAJORELINK field to a new value. +#define BW_DMA_TCDn_CSR_MAJORELINK(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_MAJORELINK) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CSR, field ACTIVE[6] (RW) + * + * This flag signals the channel is currently in execution. It is set when + * channel service begins, and the eDMA clears it as the minor loop completes or if + * any error condition is detected. This bit resets to zero. + */ +//@{ +#define BP_DMA_TCDn_CSR_ACTIVE (6U) //!< Bit position for DMA_TCDn_CSR_ACTIVE. +#define BM_DMA_TCDn_CSR_ACTIVE (0x0040U) //!< Bit mask for DMA_TCDn_CSR_ACTIVE. +#define BS_DMA_TCDn_CSR_ACTIVE (1U) //!< Bit field size in bits for DMA_TCDn_CSR_ACTIVE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_ACTIVE field. +#define BR_DMA_TCDn_CSR_ACTIVE(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_ACTIVE)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_ACTIVE. +#define BF_DMA_TCDn_CSR_ACTIVE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_ACTIVE), uint16_t) & BM_DMA_TCDn_CSR_ACTIVE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ACTIVE field to a new value. +#define BW_DMA_TCDn_CSR_ACTIVE(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_ACTIVE) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CSR, field DONE[7] (RW) + * + * This flag indicates the eDMA has completed the major loop. The eDMA engine + * sets it as the CITER count reaches zero; The software clears it, or the hardware + * when the channel is activated. This bit must be cleared to write the + * MAJORELINK or ESG bits. + */ +//@{ +#define BP_DMA_TCDn_CSR_DONE (7U) //!< Bit position for DMA_TCDn_CSR_DONE. +#define BM_DMA_TCDn_CSR_DONE (0x0080U) //!< Bit mask for DMA_TCDn_CSR_DONE. +#define BS_DMA_TCDn_CSR_DONE (1U) //!< Bit field size in bits for DMA_TCDn_CSR_DONE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_DONE field. +#define BR_DMA_TCDn_CSR_DONE(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_DONE)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_DONE. +#define BF_DMA_TCDn_CSR_DONE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_DONE), uint16_t) & BM_DMA_TCDn_CSR_DONE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DONE field to a new value. +#define BW_DMA_TCDn_CSR_DONE(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_CSR_ADDR(x, n), BP_DMA_TCDn_CSR_DONE) = (v)) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CSR, field MAJORLINKCH[11:8] (RW) + * + * If (MAJORELINK = 0) then No channel-to-channel linking (or chaining) is + * performed after the major loop counter is exhausted. else After the major loop + * counter is exhausted, the eDMA engine initiates a channel service request at the + * channel defined by these six bits by setting that channel's TCDn_CSR[START] bit. + */ +//@{ +#define BP_DMA_TCDn_CSR_MAJORLINKCH (8U) //!< Bit position for DMA_TCDn_CSR_MAJORLINKCH. +#define BM_DMA_TCDn_CSR_MAJORLINKCH (0x0F00U) //!< Bit mask for DMA_TCDn_CSR_MAJORLINKCH. +#define BS_DMA_TCDn_CSR_MAJORLINKCH (4U) //!< Bit field size in bits for DMA_TCDn_CSR_MAJORLINKCH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_MAJORLINKCH field. +#define BR_DMA_TCDn_CSR_MAJORLINKCH(x, n) (HW_DMA_TCDn_CSR(x, n).B.MAJORLINKCH) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_MAJORLINKCH. +#define BF_DMA_TCDn_CSR_MAJORLINKCH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_MAJORLINKCH), uint16_t) & BM_DMA_TCDn_CSR_MAJORLINKCH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MAJORLINKCH field to a new value. +#define BW_DMA_TCDn_CSR_MAJORLINKCH(x, n, v) (HW_DMA_TCDn_CSR_WR(x, n, (HW_DMA_TCDn_CSR_RD(x, n) & ~BM_DMA_TCDn_CSR_MAJORLINKCH) | BF_DMA_TCDn_CSR_MAJORLINKCH(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_CSR, field BWC[15:14] (RW) + * + * Throttles the amount of bus bandwidth consumed by the eDMA. In general, as + * the eDMA processes the minor loop, it continuously generates read/write + * sequences until the minor count is exhausted. This field forces the eDMA to stall + * after the completion of each read/write access to control the bus request + * bandwidth seen by the crossbar switch. If the source and destination sizes are equal, + * this field is ignored between the first and second transfers and after the + * last write of each minor loop. This behavior is a side effect of reducing + * start-up latency. + * + * Values: + * - 00 - No eDMA engine stalls + * - 01 - Reserved + * - 10 - eDMA engine stalls for 4 cycles after each r/w + * - 11 - eDMA engine stalls for 8 cycles after each r/w + */ +//@{ +#define BP_DMA_TCDn_CSR_BWC (14U) //!< Bit position for DMA_TCDn_CSR_BWC. +#define BM_DMA_TCDn_CSR_BWC (0xC000U) //!< Bit mask for DMA_TCDn_CSR_BWC. +#define BS_DMA_TCDn_CSR_BWC (2U) //!< Bit field size in bits for DMA_TCDn_CSR_BWC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_CSR_BWC field. +#define BR_DMA_TCDn_CSR_BWC(x, n) (HW_DMA_TCDn_CSR(x, n).B.BWC) +#endif + +//! @brief Format value for bitfield DMA_TCDn_CSR_BWC. +#define BF_DMA_TCDn_CSR_BWC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_CSR_BWC), uint16_t) & BM_DMA_TCDn_CSR_BWC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BWC field to a new value. +#define BW_DMA_TCDn_CSR_BWC(x, n, v) (HW_DMA_TCDn_CSR_WR(x, n, (HW_DMA_TCDn_CSR_RD(x, n) & ~BM_DMA_TCDn_CSR_BWC) | BF_DMA_TCDn_CSR_BWC(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_BITER_ELINKNO - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_BITER_ELINKNO - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (RW) + * + * Reset value: 0x0000U + * + * If the TCDn_BITER[ELINK] bit is cleared, the TCDn_BITER register is defined + * as follows. + */ +typedef union _hw_dma_tcdn_biter_elinkno +{ + uint16_t U; + struct _hw_dma_tcdn_biter_elinkno_bitfields + { + uint16_t BITER : 15; //!< [14:0] Starting Major Iteration Count + uint16_t ELINK : 1; //!< [15] Enables channel-to-channel linking on + //! minor loop complete + } B; +} hw_dma_tcdn_biter_elinkno_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_BITER_ELINKNO register + */ +//@{ +#define HW_DMA_TCDn_BITER_ELINKNO_COUNT (16U) + +#define HW_DMA_TCDn_BITER_ELINKNO_ADDR(x, n) (REGS_DMA_BASE(x) + 0x101EU + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_BITER_ELINKNO(x, n) (*(__IO hw_dma_tcdn_biter_elinkno_t *) HW_DMA_TCDn_BITER_ELINKNO_ADDR(x, n)) +#define HW_DMA_TCDn_BITER_ELINKNO_RD(x, n) (HW_DMA_TCDn_BITER_ELINKNO(x, n).U) +#define HW_DMA_TCDn_BITER_ELINKNO_WR(x, n, v) (HW_DMA_TCDn_BITER_ELINKNO(x, n).U = (v)) +#define HW_DMA_TCDn_BITER_ELINKNO_SET(x, n, v) (HW_DMA_TCDn_BITER_ELINKNO_WR(x, n, HW_DMA_TCDn_BITER_ELINKNO_RD(x, n) | (v))) +#define HW_DMA_TCDn_BITER_ELINKNO_CLR(x, n, v) (HW_DMA_TCDn_BITER_ELINKNO_WR(x, n, HW_DMA_TCDn_BITER_ELINKNO_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_BITER_ELINKNO_TOG(x, n, v) (HW_DMA_TCDn_BITER_ELINKNO_WR(x, n, HW_DMA_TCDn_BITER_ELINKNO_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_BITER_ELINKNO bitfields + */ + +/*! + * @name Register DMA_TCDn_BITER_ELINKNO, field BITER[14:0] (RW) + * + * As the transfer control descriptor is first loaded by software, this 9-bit + * (ELINK = 1) or 15-bit (ELINK = 0) field must be equal to the value in the CITER + * field. As the major iteration count is exhausted, the contents of this field + * are reloaded into the CITER field. When the software loads the TCD, this field + * must be set equal to the corresponding CITER field; otherwise, a configuration + * error is reported. As the major iteration count is exhausted, the contents of + * this field is reloaded into the CITER field. If the channel is configured to + * execute a single service request, the initial values of BITER and CITER should + * be 0x0001. + */ +//@{ +#define BP_DMA_TCDn_BITER_ELINKNO_BITER (0U) //!< Bit position for DMA_TCDn_BITER_ELINKNO_BITER. +#define BM_DMA_TCDn_BITER_ELINKNO_BITER (0x7FFFU) //!< Bit mask for DMA_TCDn_BITER_ELINKNO_BITER. +#define BS_DMA_TCDn_BITER_ELINKNO_BITER (15U) //!< Bit field size in bits for DMA_TCDn_BITER_ELINKNO_BITER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_BITER_ELINKNO_BITER field. +#define BR_DMA_TCDn_BITER_ELINKNO_BITER(x, n) (HW_DMA_TCDn_BITER_ELINKNO(x, n).B.BITER) +#endif + +//! @brief Format value for bitfield DMA_TCDn_BITER_ELINKNO_BITER. +#define BF_DMA_TCDn_BITER_ELINKNO_BITER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_BITER_ELINKNO_BITER), uint16_t) & BM_DMA_TCDn_BITER_ELINKNO_BITER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BITER field to a new value. +#define BW_DMA_TCDn_BITER_ELINKNO_BITER(x, n, v) (HW_DMA_TCDn_BITER_ELINKNO_WR(x, n, (HW_DMA_TCDn_BITER_ELINKNO_RD(x, n) & ~BM_DMA_TCDn_BITER_ELINKNO_BITER) | BF_DMA_TCDn_BITER_ELINKNO_BITER(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_BITER_ELINKNO, field ELINK[15] (RW) + * + * As the channel completes the minor loop, this flag enables the linking to + * another channel, defined by BITER[LINKCH]. The link target channel initiates a + * channel service request via an internal mechanism that sets the TCDn_CSR[START] + * bit of the specified channel. If channel linking is disabled, the BITER value + * extends to 15 bits in place of a link channel number. If the major loop is + * exhausted, this link mechanism is suppressed in favor of the MAJORELINK channel + * linking. When the software loads the TCD, this field must be set equal to the + * corresponding CITER field; otherwise, a configuration error is reported. As the + * major iteration count is exhausted, the contents of this field is reloaded + * into the CITER field. + * + * Values: + * - 0 - The channel-to-channel linking is disabled + * - 1 - The channel-to-channel linking is enabled + */ +//@{ +#define BP_DMA_TCDn_BITER_ELINKNO_ELINK (15U) //!< Bit position for DMA_TCDn_BITER_ELINKNO_ELINK. +#define BM_DMA_TCDn_BITER_ELINKNO_ELINK (0x8000U) //!< Bit mask for DMA_TCDn_BITER_ELINKNO_ELINK. +#define BS_DMA_TCDn_BITER_ELINKNO_ELINK (1U) //!< Bit field size in bits for DMA_TCDn_BITER_ELINKNO_ELINK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_BITER_ELINKNO_ELINK field. +#define BR_DMA_TCDn_BITER_ELINKNO_ELINK(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_BITER_ELINKNO_ADDR(x, n), BP_DMA_TCDn_BITER_ELINKNO_ELINK)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_BITER_ELINKNO_ELINK. +#define BF_DMA_TCDn_BITER_ELINKNO_ELINK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_BITER_ELINKNO_ELINK), uint16_t) & BM_DMA_TCDn_BITER_ELINKNO_ELINK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ELINK field to a new value. +#define BW_DMA_TCDn_BITER_ELINKNO_ELINK(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_BITER_ELINKNO_ADDR(x, n), BP_DMA_TCDn_BITER_ELINKNO_ELINK) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_DMA_TCDn_BITER_ELINKYES - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMA_TCDn_BITER_ELINKYES - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (RW) + * + * Reset value: 0x0000U + * + * If the TCDn_BITER[ELINK] bit is set, the TCDn_BITER register is defined as + * follows. + */ +typedef union _hw_dma_tcdn_biter_elinkyes +{ + uint16_t U; + struct _hw_dma_tcdn_biter_elinkyes_bitfields + { + uint16_t BITER : 9; //!< [8:0] Starting Major Iteration Count + uint16_t LINKCH : 4; //!< [12:9] Link Channel Number + uint16_t RESERVED0 : 2; //!< [14:13] + uint16_t ELINK : 1; //!< [15] Enables channel-to-channel linking on + //! minor loop complete + } B; +} hw_dma_tcdn_biter_elinkyes_t; +#endif + +/*! + * @name Constants and macros for entire DMA_TCDn_BITER_ELINKYES register + */ +//@{ +#define HW_DMA_TCDn_BITER_ELINKYES_COUNT (16U) + +#define HW_DMA_TCDn_BITER_ELINKYES_ADDR(x, n) (REGS_DMA_BASE(x) + 0x101EU + (0x20U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMA_TCDn_BITER_ELINKYES(x, n) (*(__IO hw_dma_tcdn_biter_elinkyes_t *) HW_DMA_TCDn_BITER_ELINKYES_ADDR(x, n)) +#define HW_DMA_TCDn_BITER_ELINKYES_RD(x, n) (HW_DMA_TCDn_BITER_ELINKYES(x, n).U) +#define HW_DMA_TCDn_BITER_ELINKYES_WR(x, n, v) (HW_DMA_TCDn_BITER_ELINKYES(x, n).U = (v)) +#define HW_DMA_TCDn_BITER_ELINKYES_SET(x, n, v) (HW_DMA_TCDn_BITER_ELINKYES_WR(x, n, HW_DMA_TCDn_BITER_ELINKYES_RD(x, n) | (v))) +#define HW_DMA_TCDn_BITER_ELINKYES_CLR(x, n, v) (HW_DMA_TCDn_BITER_ELINKYES_WR(x, n, HW_DMA_TCDn_BITER_ELINKYES_RD(x, n) & ~(v))) +#define HW_DMA_TCDn_BITER_ELINKYES_TOG(x, n, v) (HW_DMA_TCDn_BITER_ELINKYES_WR(x, n, HW_DMA_TCDn_BITER_ELINKYES_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMA_TCDn_BITER_ELINKYES bitfields + */ + +/*! + * @name Register DMA_TCDn_BITER_ELINKYES, field BITER[8:0] (RW) + * + * As the transfer control descriptor is first loaded by software, this 9-bit + * (ELINK = 1) or 15-bit (ELINK = 0) field must be equal to the value in the CITER + * field. As the major iteration count is exhausted, the contents of this field + * are reloaded into the CITER field. When the software loads the TCD, this field + * must be set equal to the corresponding CITER field; otherwise, a configuration + * error is reported. As the major iteration count is exhausted, the contents of + * this field is reloaded into the CITER field. If the channel is configured to + * execute a single service request, the initial values of BITER and CITER should + * be 0x0001. + */ +//@{ +#define BP_DMA_TCDn_BITER_ELINKYES_BITER (0U) //!< Bit position for DMA_TCDn_BITER_ELINKYES_BITER. +#define BM_DMA_TCDn_BITER_ELINKYES_BITER (0x01FFU) //!< Bit mask for DMA_TCDn_BITER_ELINKYES_BITER. +#define BS_DMA_TCDn_BITER_ELINKYES_BITER (9U) //!< Bit field size in bits for DMA_TCDn_BITER_ELINKYES_BITER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_BITER_ELINKYES_BITER field. +#define BR_DMA_TCDn_BITER_ELINKYES_BITER(x, n) (HW_DMA_TCDn_BITER_ELINKYES(x, n).B.BITER) +#endif + +//! @brief Format value for bitfield DMA_TCDn_BITER_ELINKYES_BITER. +#define BF_DMA_TCDn_BITER_ELINKYES_BITER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_BITER_ELINKYES_BITER), uint16_t) & BM_DMA_TCDn_BITER_ELINKYES_BITER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BITER field to a new value. +#define BW_DMA_TCDn_BITER_ELINKYES_BITER(x, n, v) (HW_DMA_TCDn_BITER_ELINKYES_WR(x, n, (HW_DMA_TCDn_BITER_ELINKYES_RD(x, n) & ~BM_DMA_TCDn_BITER_ELINKYES_BITER) | BF_DMA_TCDn_BITER_ELINKYES_BITER(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_BITER_ELINKYES, field LINKCH[12:9] (RW) + * + * If channel-to-channel linking is enabled (ELINK = 1), then after the minor + * loop is exhausted, the eDMA engine initiates a channel service request at the + * channel defined by these four bits by setting that channel's TCDn_CSR[START] + * bit. When the software loads the TCD, this field must be set equal to the + * corresponding CITER field; otherwise, a configuration error is reported. As the major + * iteration count is exhausted, the contents of this field is reloaded into the + * CITER field. + */ +//@{ +#define BP_DMA_TCDn_BITER_ELINKYES_LINKCH (9U) //!< Bit position for DMA_TCDn_BITER_ELINKYES_LINKCH. +#define BM_DMA_TCDn_BITER_ELINKYES_LINKCH (0x1E00U) //!< Bit mask for DMA_TCDn_BITER_ELINKYES_LINKCH. +#define BS_DMA_TCDn_BITER_ELINKYES_LINKCH (4U) //!< Bit field size in bits for DMA_TCDn_BITER_ELINKYES_LINKCH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_BITER_ELINKYES_LINKCH field. +#define BR_DMA_TCDn_BITER_ELINKYES_LINKCH(x, n) (HW_DMA_TCDn_BITER_ELINKYES(x, n).B.LINKCH) +#endif + +//! @brief Format value for bitfield DMA_TCDn_BITER_ELINKYES_LINKCH. +#define BF_DMA_TCDn_BITER_ELINKYES_LINKCH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_BITER_ELINKYES_LINKCH), uint16_t) & BM_DMA_TCDn_BITER_ELINKYES_LINKCH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LINKCH field to a new value. +#define BW_DMA_TCDn_BITER_ELINKYES_LINKCH(x, n, v) (HW_DMA_TCDn_BITER_ELINKYES_WR(x, n, (HW_DMA_TCDn_BITER_ELINKYES_RD(x, n) & ~BM_DMA_TCDn_BITER_ELINKYES_LINKCH) | BF_DMA_TCDn_BITER_ELINKYES_LINKCH(v))) +#endif +//@} + +/*! + * @name Register DMA_TCDn_BITER_ELINKYES, field ELINK[15] (RW) + * + * As the channel completes the minor loop, this flag enables the linking to + * another channel, defined by BITER[LINKCH]. The link target channel initiates a + * channel service request via an internal mechanism that sets the TCDn_CSR[START] + * bit of the specified channel. If channel linking disables, the BITER value + * extends to 15 bits in place of a link channel number. If the major loop is + * exhausted, this link mechanism is suppressed in favor of the MAJORELINK channel + * linking. When the software loads the TCD, this field must be set equal to the + * corresponding CITER field; otherwise, a configuration error is reported. As the + * major iteration count is exhausted, the contents of this field is reloaded into + * the CITER field. + * + * Values: + * - 0 - The channel-to-channel linking is disabled + * - 1 - The channel-to-channel linking is enabled + */ +//@{ +#define BP_DMA_TCDn_BITER_ELINKYES_ELINK (15U) //!< Bit position for DMA_TCDn_BITER_ELINKYES_ELINK. +#define BM_DMA_TCDn_BITER_ELINKYES_ELINK (0x8000U) //!< Bit mask for DMA_TCDn_BITER_ELINKYES_ELINK. +#define BS_DMA_TCDn_BITER_ELINKYES_ELINK (1U) //!< Bit field size in bits for DMA_TCDn_BITER_ELINKYES_ELINK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMA_TCDn_BITER_ELINKYES_ELINK field. +#define BR_DMA_TCDn_BITER_ELINKYES_ELINK(x, n) (BITBAND_ACCESS16(HW_DMA_TCDn_BITER_ELINKYES_ADDR(x, n), BP_DMA_TCDn_BITER_ELINKYES_ELINK)) +#endif + +//! @brief Format value for bitfield DMA_TCDn_BITER_ELINKYES_ELINK. +#define BF_DMA_TCDn_BITER_ELINKYES_ELINK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_DMA_TCDn_BITER_ELINKYES_ELINK), uint16_t) & BM_DMA_TCDn_BITER_ELINKYES_ELINK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ELINK field to a new value. +#define BW_DMA_TCDn_BITER_ELINKYES_ELINK(x, n, v) (BITBAND_ACCESS16(HW_DMA_TCDn_BITER_ELINKYES_ADDR(x, n), BP_DMA_TCDn_BITER_ELINKYES_ELINK) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_dma_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All DMA module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_dma +{ + __IO hw_dma_cr_t CR; //!< [0x0] Control Register + __I hw_dma_es_t ES; //!< [0x4] Error Status Register + uint8_t _reserved0[4]; + __IO hw_dma_erq_t ERQ; //!< [0xC] Enable Request Register + uint8_t _reserved1[4]; + __IO hw_dma_eei_t EEI; //!< [0x14] Enable Error Interrupt Register + __O hw_dma_ceei_t CEEI; //!< [0x18] Clear Enable Error Interrupt Register + __O hw_dma_seei_t SEEI; //!< [0x19] Set Enable Error Interrupt Register + __O hw_dma_cerq_t CERQ; //!< [0x1A] Clear Enable Request Register + __O hw_dma_serq_t SERQ; //!< [0x1B] Set Enable Request Register + __O hw_dma_cdne_t CDNE; //!< [0x1C] Clear DONE Status Bit Register + __O hw_dma_ssrt_t SSRT; //!< [0x1D] Set START Bit Register + __O hw_dma_cerr_t CERR; //!< [0x1E] Clear Error Register + __O hw_dma_cint_t CINT; //!< [0x1F] Clear Interrupt Request Register + uint8_t _reserved2[4]; + __IO hw_dma_int_t INT; //!< [0x24] Interrupt Request Register + uint8_t _reserved3[4]; + __IO hw_dma_err_t ERR; //!< [0x2C] Error Register + uint8_t _reserved4[4]; + __I hw_dma_hrs_t HRS; //!< [0x34] Hardware Request Status Register + uint8_t _reserved5[200]; + __IO hw_dma_dchprin_t DCHPRIn[16]; //!< [0x100] Channel n Priority Register + uint8_t _reserved6[3824]; + struct { + __IO hw_dma_tcdn_saddr_t TCDn_SADDR; //!< [0x1000] TCD Source Address + __IO hw_dma_tcdn_soff_t TCDn_SOFF; //!< [0x1004] TCD Signed Source Address Offset + __IO hw_dma_tcdn_attr_t TCDn_ATTR; //!< [0x1006] TCD Transfer Attributes + union { + __IO hw_dma_tcdn_nbytes_mlno_t TCDn_NBYTES_MLNO; //!< [0x1008] TCD Minor Byte Count (Minor Loop Disabled) + __IO hw_dma_tcdn_nbytes_mloffno_t TCDn_NBYTES_MLOFFNO; //!< [0x1008] TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) + __IO hw_dma_tcdn_nbytes_mloffyes_t TCDn_NBYTES_MLOFFYES; //!< [0x1008] TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) + }; + __IO hw_dma_tcdn_slast_t TCDn_SLAST; //!< [0x100C] TCD Last Source Address Adjustment + __IO hw_dma_tcdn_daddr_t TCDn_DADDR; //!< [0x1010] TCD Destination Address + __IO hw_dma_tcdn_doff_t TCDn_DOFF; //!< [0x1014] TCD Signed Destination Address Offset + union { + __IO hw_dma_tcdn_citer_elinkno_t TCDn_CITER_ELINKNO; //!< [0x1016] TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled) + __IO hw_dma_tcdn_citer_elinkyes_t TCDn_CITER_ELINKYES; //!< [0x1016] TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) + }; + __IO hw_dma_tcdn_dlastsga_t TCDn_DLASTSGA; //!< [0x1018] TCD Last Destination Address Adjustment/Scatter Gather Address + __IO hw_dma_tcdn_csr_t TCDn_CSR; //!< [0x101C] TCD Control and Status + union { + __IO hw_dma_tcdn_biter_elinkno_t TCDn_BITER_ELINKNO; //!< [0x101E] TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) + __IO hw_dma_tcdn_biter_elinkyes_t TCDn_BITER_ELINKYES; //!< [0x101E] TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) + }; + } TCD[16]; +} hw_dma_t; +#pragma pack() + +//! @brief Macro to access all DMA registers. +//! @param x DMA instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_DMA(0)</code>. +#define HW_DMA(x) (*(hw_dma_t *) REGS_DMA_BASE(x)) +#endif + +#endif // __HW_DMA_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_dmamux.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_DMAMUX_REGISTERS_H__ +#define __HW_DMAMUX_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 DMAMUX + * + * DMA channel multiplexor + * + * Registers defined in this header file: + * - HW_DMAMUX_CHCFGn - Channel Configuration register + * + * - hw_dmamux_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_DMAMUX_BASE +#define HW_DMAMUX_INSTANCE_COUNT (1U) //!< Number of instances of the DMAMUX module. +#define HW_DMAMUX0 (0U) //!< Instance number for DMAMUX. +#define REGS_DMAMUX0_BASE (0x40021000U) //!< Base address for DMAMUX. + +//! @brief Table of base addresses for DMAMUX instances. +static const uint32_t __g_regs_DMAMUX_base_addresses[] = { + REGS_DMAMUX0_BASE, + }; + +//! @brief Get the base address of DMAMUX by instance number. +//! @param x DMAMUX instance number, from 0 through 0. +#define REGS_DMAMUX_BASE(x) (__g_regs_DMAMUX_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of DMAMUX. +#define REGS_DMAMUX_INSTANCE(b) ((b) == REGS_DMAMUX0_BASE ? HW_DMAMUX0 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_DMAMUX_CHCFGn - Channel Configuration register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_DMAMUX_CHCFGn - Channel Configuration register (RW) + * + * Reset value: 0x00U + * + * Each of the DMA channels can be independently enabled/disabled and associated + * with one of the DMA slots (peripheral slots or always-on slots) in the + * system. Setting multiple CHCFG registers with the same source value will result in + * unpredictable behavior. This is true, even if a channel is disabled (ENBL==0). + * Before changing the trigger or source settings, a DMA channel must be disabled + * via CHCFGn[ENBL]. + */ +typedef union _hw_dmamux_chcfgn +{ + uint8_t U; + struct _hw_dmamux_chcfgn_bitfields + { + uint8_t SOURCE : 6; //!< [5:0] DMA Channel Source (Slot) + uint8_t TRIG : 1; //!< [6] DMA Channel Trigger Enable + uint8_t ENBL : 1; //!< [7] DMA Channel Enable + } B; +} hw_dmamux_chcfgn_t; +#endif + +/*! + * @name Constants and macros for entire DMAMUX_CHCFGn register + */ +//@{ +#define HW_DMAMUX_CHCFGn_COUNT (16U) + +#define HW_DMAMUX_CHCFGn_ADDR(x, n) (REGS_DMAMUX_BASE(x) + 0x0U + (0x1U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_DMAMUX_CHCFGn(x, n) (*(__IO hw_dmamux_chcfgn_t *) HW_DMAMUX_CHCFGn_ADDR(x, n)) +#define HW_DMAMUX_CHCFGn_RD(x, n) (HW_DMAMUX_CHCFGn(x, n).U) +#define HW_DMAMUX_CHCFGn_WR(x, n, v) (HW_DMAMUX_CHCFGn(x, n).U = (v)) +#define HW_DMAMUX_CHCFGn_SET(x, n, v) (HW_DMAMUX_CHCFGn_WR(x, n, HW_DMAMUX_CHCFGn_RD(x, n) | (v))) +#define HW_DMAMUX_CHCFGn_CLR(x, n, v) (HW_DMAMUX_CHCFGn_WR(x, n, HW_DMAMUX_CHCFGn_RD(x, n) & ~(v))) +#define HW_DMAMUX_CHCFGn_TOG(x, n, v) (HW_DMAMUX_CHCFGn_WR(x, n, HW_DMAMUX_CHCFGn_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual DMAMUX_CHCFGn bitfields + */ + +/*! + * @name Register DMAMUX_CHCFGn, field SOURCE[5:0] (RW) + * + * Specifies which DMA source, if any, is routed to a particular DMA channel. + * See your device's chip configuration details for information about the + * peripherals and their slot numbers. + */ +//@{ +#define BP_DMAMUX_CHCFGn_SOURCE (0U) //!< Bit position for DMAMUX_CHCFGn_SOURCE. +#define BM_DMAMUX_CHCFGn_SOURCE (0x3FU) //!< Bit mask for DMAMUX_CHCFGn_SOURCE. +#define BS_DMAMUX_CHCFGn_SOURCE (6U) //!< Bit field size in bits for DMAMUX_CHCFGn_SOURCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMAMUX_CHCFGn_SOURCE field. +#define BR_DMAMUX_CHCFGn_SOURCE(x, n) (HW_DMAMUX_CHCFGn(x, n).B.SOURCE) +#endif + +//! @brief Format value for bitfield DMAMUX_CHCFGn_SOURCE. +#define BF_DMAMUX_CHCFGn_SOURCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMAMUX_CHCFGn_SOURCE), uint8_t) & BM_DMAMUX_CHCFGn_SOURCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SOURCE field to a new value. +#define BW_DMAMUX_CHCFGn_SOURCE(x, n, v) (HW_DMAMUX_CHCFGn_WR(x, n, (HW_DMAMUX_CHCFGn_RD(x, n) & ~BM_DMAMUX_CHCFGn_SOURCE) | BF_DMAMUX_CHCFGn_SOURCE(v))) +#endif +//@} + +/*! + * @name Register DMAMUX_CHCFGn, field TRIG[6] (RW) + * + * Enables the periodic trigger capability for the triggered DMA channel. + * + * Values: + * - 0 - Triggering is disabled. If triggering is disabled and ENBL is set, the + * DMA Channel will simply route the specified source to the DMA channel. + * (Normal mode) + * - 1 - Triggering is enabled. If triggering is enabled and ENBL is set, the + * DMAMUX is in Periodic Trigger mode. + */ +//@{ +#define BP_DMAMUX_CHCFGn_TRIG (6U) //!< Bit position for DMAMUX_CHCFGn_TRIG. +#define BM_DMAMUX_CHCFGn_TRIG (0x40U) //!< Bit mask for DMAMUX_CHCFGn_TRIG. +#define BS_DMAMUX_CHCFGn_TRIG (1U) //!< Bit field size in bits for DMAMUX_CHCFGn_TRIG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMAMUX_CHCFGn_TRIG field. +#define BR_DMAMUX_CHCFGn_TRIG(x, n) (BITBAND_ACCESS8(HW_DMAMUX_CHCFGn_ADDR(x, n), BP_DMAMUX_CHCFGn_TRIG)) +#endif + +//! @brief Format value for bitfield DMAMUX_CHCFGn_TRIG. +#define BF_DMAMUX_CHCFGn_TRIG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMAMUX_CHCFGn_TRIG), uint8_t) & BM_DMAMUX_CHCFGn_TRIG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TRIG field to a new value. +#define BW_DMAMUX_CHCFGn_TRIG(x, n, v) (BITBAND_ACCESS8(HW_DMAMUX_CHCFGn_ADDR(x, n), BP_DMAMUX_CHCFGn_TRIG) = (v)) +#endif +//@} + +/*! + * @name Register DMAMUX_CHCFGn, field ENBL[7] (RW) + * + * Enables the DMA channel. + * + * Values: + * - 0 - DMA channel is disabled. This mode is primarily used during + * configuration of the DMAMux. The DMA has separate channel enables/disables, which + * should be used to disable or reconfigure a DMA channel. + * - 1 - DMA channel is enabled + */ +//@{ +#define BP_DMAMUX_CHCFGn_ENBL (7U) //!< Bit position for DMAMUX_CHCFGn_ENBL. +#define BM_DMAMUX_CHCFGn_ENBL (0x80U) //!< Bit mask for DMAMUX_CHCFGn_ENBL. +#define BS_DMAMUX_CHCFGn_ENBL (1U) //!< Bit field size in bits for DMAMUX_CHCFGn_ENBL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the DMAMUX_CHCFGn_ENBL field. +#define BR_DMAMUX_CHCFGn_ENBL(x, n) (BITBAND_ACCESS8(HW_DMAMUX_CHCFGn_ADDR(x, n), BP_DMAMUX_CHCFGn_ENBL)) +#endif + +//! @brief Format value for bitfield DMAMUX_CHCFGn_ENBL. +#define BF_DMAMUX_CHCFGn_ENBL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_DMAMUX_CHCFGn_ENBL), uint8_t) & BM_DMAMUX_CHCFGn_ENBL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ENBL field to a new value. +#define BW_DMAMUX_CHCFGn_ENBL(x, n, v) (BITBAND_ACCESS8(HW_DMAMUX_CHCFGn_ADDR(x, n), BP_DMAMUX_CHCFGn_ENBL) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_dmamux_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All DMAMUX module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_dmamux +{ + __IO hw_dmamux_chcfgn_t CHCFGn[16]; //!< [0x0] Channel Configuration register +} hw_dmamux_t; +#pragma pack() + +//! @brief Macro to access all DMAMUX registers. +//! @param x DMAMUX instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_DMAMUX(0)</code>. +#define HW_DMAMUX(x) (*(hw_dmamux_t *) REGS_DMAMUX_BASE(x)) +#endif + +#endif // __HW_DMAMUX_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_enet.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,8441 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_ENET_REGISTERS_H__ +#define __HW_ENET_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 ENET + * + * Ethernet MAC-NET Core + * + * Registers defined in this header file: + * - HW_ENET_EIR - Interrupt Event Register + * - HW_ENET_EIMR - Interrupt Mask Register + * - HW_ENET_RDAR - Receive Descriptor Active Register + * - HW_ENET_TDAR - Transmit Descriptor Active Register + * - HW_ENET_ECR - Ethernet Control Register + * - HW_ENET_MMFR - MII Management Frame Register + * - HW_ENET_MSCR - MII Speed Control Register + * - HW_ENET_MIBC - MIB Control Register + * - HW_ENET_RCR - Receive Control Register + * - HW_ENET_TCR - Transmit Control Register + * - HW_ENET_PALR - Physical Address Lower Register + * - HW_ENET_PAUR - Physical Address Upper Register + * - HW_ENET_OPD - Opcode/Pause Duration Register + * - HW_ENET_IAUR - Descriptor Individual Upper Address Register + * - HW_ENET_IALR - Descriptor Individual Lower Address Register + * - HW_ENET_GAUR - Descriptor Group Upper Address Register + * - HW_ENET_GALR - Descriptor Group Lower Address Register + * - HW_ENET_TFWR - Transmit FIFO Watermark Register + * - HW_ENET_RDSR - Receive Descriptor Ring Start Register + * - HW_ENET_TDSR - Transmit Buffer Descriptor Ring Start Register + * - HW_ENET_MRBR - Maximum Receive Buffer Size Register + * - HW_ENET_RSFL - Receive FIFO Section Full Threshold + * - HW_ENET_RSEM - Receive FIFO Section Empty Threshold + * - HW_ENET_RAEM - Receive FIFO Almost Empty Threshold + * - HW_ENET_RAFL - Receive FIFO Almost Full Threshold + * - HW_ENET_TSEM - Transmit FIFO Section Empty Threshold + * - HW_ENET_TAEM - Transmit FIFO Almost Empty Threshold + * - HW_ENET_TAFL - Transmit FIFO Almost Full Threshold + * - HW_ENET_TIPG - Transmit Inter-Packet Gap + * - HW_ENET_FTRL - Frame Truncation Length + * - HW_ENET_TACC - Transmit Accelerator Function Configuration + * - HW_ENET_RACC - Receive Accelerator Function Configuration + * - HW_ENET_RMON_T_PACKETS - Tx Packet Count Statistic Register + * - HW_ENET_RMON_T_BC_PKT - Tx Broadcast Packets Statistic Register + * - HW_ENET_RMON_T_MC_PKT - Tx Multicast Packets Statistic Register + * - HW_ENET_RMON_T_CRC_ALIGN - Tx Packets with CRC/Align Error Statistic Register + * - HW_ENET_RMON_T_UNDERSIZE - Tx Packets Less Than Bytes and Good CRC Statistic Register + * - HW_ENET_RMON_T_OVERSIZE - Tx Packets GT MAX_FL bytes and Good CRC Statistic Register + * - HW_ENET_RMON_T_FRAG - Tx Packets Less Than 64 Bytes and Bad CRC Statistic Register + * - HW_ENET_RMON_T_JAB - Tx Packets Greater Than MAX_FL bytes and Bad CRC Statistic Register + * - HW_ENET_RMON_T_COL - Tx Collision Count Statistic Register + * - HW_ENET_RMON_T_P64 - Tx 64-Byte Packets Statistic Register + * - HW_ENET_RMON_T_P65TO127 - Tx 65- to 127-byte Packets Statistic Register + * - HW_ENET_RMON_T_P128TO255 - Tx 128- to 255-byte Packets Statistic Register + * - HW_ENET_RMON_T_P256TO511 - Tx 256- to 511-byte Packets Statistic Register + * - HW_ENET_RMON_T_P512TO1023 - Tx 512- to 1023-byte Packets Statistic Register + * - HW_ENET_RMON_T_P1024TO2047 - Tx 1024- to 2047-byte Packets Statistic Register + * - HW_ENET_RMON_T_P_GTE2048 - Tx Packets Greater Than 2048 Bytes Statistic Register + * - HW_ENET_RMON_T_OCTETS - Tx Octets Statistic Register + * - HW_ENET_IEEE_T_FRAME_OK - Frames Transmitted OK Statistic Register + * - HW_ENET_IEEE_T_1COL - Frames Transmitted with Single Collision Statistic Register + * - HW_ENET_IEEE_T_MCOL - Frames Transmitted with Multiple Collisions Statistic Register + * - HW_ENET_IEEE_T_DEF - Frames Transmitted after Deferral Delay Statistic Register + * - HW_ENET_IEEE_T_LCOL - Frames Transmitted with Late Collision Statistic Register + * - HW_ENET_IEEE_T_EXCOL - Frames Transmitted with Excessive Collisions Statistic Register + * - HW_ENET_IEEE_T_MACERR - Frames Transmitted with Tx FIFO Underrun Statistic Register + * - HW_ENET_IEEE_T_CSERR - Frames Transmitted with Carrier Sense Error Statistic Register + * - HW_ENET_IEEE_T_FDXFC - Flow Control Pause Frames Transmitted Statistic Register + * - HW_ENET_IEEE_T_OCTETS_OK - Octet Count for Frames Transmitted w/o Error Statistic Register + * - HW_ENET_RMON_R_PACKETS - Rx Packet Count Statistic Register + * - HW_ENET_RMON_R_BC_PKT - Rx Broadcast Packets Statistic Register + * - HW_ENET_RMON_R_MC_PKT - Rx Multicast Packets Statistic Register + * - HW_ENET_RMON_R_CRC_ALIGN - Rx Packets with CRC/Align Error Statistic Register + * - HW_ENET_RMON_R_UNDERSIZE - Rx Packets with Less Than 64 Bytes and Good CRC Statistic Register + * - HW_ENET_RMON_R_OVERSIZE - Rx Packets Greater Than MAX_FL and Good CRC Statistic Register + * - HW_ENET_RMON_R_FRAG - Rx Packets Less Than 64 Bytes and Bad CRC Statistic Register + * - HW_ENET_RMON_R_JAB - Rx Packets Greater Than MAX_FL Bytes and Bad CRC Statistic Register + * - HW_ENET_RMON_R_P64 - Rx 64-Byte Packets Statistic Register + * - HW_ENET_RMON_R_P65TO127 - Rx 65- to 127-Byte Packets Statistic Register + * - HW_ENET_RMON_R_P128TO255 - Rx 128- to 255-Byte Packets Statistic Register + * - HW_ENET_RMON_R_P256TO511 - Rx 256- to 511-Byte Packets Statistic Register + * - HW_ENET_RMON_R_P512TO1023 - Rx 512- to 1023-Byte Packets Statistic Register + * - HW_ENET_RMON_R_P1024TO2047 - Rx 1024- to 2047-Byte Packets Statistic Register + * - HW_ENET_RMON_R_GTE2048 - Rx Packets Greater than 2048 Bytes Statistic Register + * - HW_ENET_RMON_R_OCTETS - Rx Octets Statistic Register + * - HW_ENET_IEEE_R_DROP - Frames not Counted Correctly Statistic Register + * - HW_ENET_IEEE_R_FRAME_OK - Frames Received OK Statistic Register + * - HW_ENET_IEEE_R_CRC - Frames Received with CRC Error Statistic Register + * - HW_ENET_IEEE_R_ALIGN - Frames Received with Alignment Error Statistic Register + * - HW_ENET_IEEE_R_MACERR - Receive FIFO Overflow Count Statistic Register + * - HW_ENET_IEEE_R_FDXFC - Flow Control Pause Frames Received Statistic Register + * - HW_ENET_IEEE_R_OCTETS_OK - Octet Count for Frames Received without Error Statistic Register + * - HW_ENET_ATCR - Adjustable Timer Control Register + * - HW_ENET_ATVR - Timer Value Register + * - HW_ENET_ATOFF - Timer Offset Register + * - HW_ENET_ATPER - Timer Period Register + * - HW_ENET_ATCOR - Timer Correction Register + * - HW_ENET_ATINC - Time-Stamping Clock Period Register + * - HW_ENET_ATSTMP - Timestamp of Last Transmitted Frame + * - HW_ENET_TGSR - Timer Global Status Register + * - HW_ENET_TCSRn - Timer Control Status Register + * - HW_ENET_TCCRn - Timer Compare Capture Register + * + * - hw_enet_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_ENET_BASE +#define HW_ENET_INSTANCE_COUNT (1U) //!< Number of instances of the ENET module. +#define HW_ENET0 (0U) //!< Instance number for ENET. +#define REGS_ENET0_BASE (0x400C0000U) //!< Base address for ENET. + +//! @brief Table of base addresses for ENET instances. +static const uint32_t __g_regs_ENET_base_addresses[] = { + REGS_ENET0_BASE, + }; + +//! @brief Get the base address of ENET by instance number. +//! @param x ENET instance number, from 0 through 0. +#define REGS_ENET_BASE(x) (__g_regs_ENET_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of ENET. +#define REGS_ENET_INSTANCE(b) ((b) == REGS_ENET0_BASE ? HW_ENET0 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_EIR - Interrupt Event Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_EIR - Interrupt Event Register (RW) + * + * Reset value: 0x00000000U + * + * When an event occurs that sets a bit in EIR, an interrupt occurs if the + * corresponding bit in the interrupt mask register (EIMR) is also set. Writing a 1 to + * an EIR bit clears it; writing 0 has no effect. This register is cleared upon + * hardware reset. TxBD[INT] and RxBD[INT] must be set to 1 to allow setting the + * corresponding EIR register flags in enhanced mode, ENET_ECR[EN1588] = 1. + * Legacy mode does not require these flags to be enabled. + */ +typedef union _hw_enet_eir +{ + uint32_t U; + struct _hw_enet_eir_bitfields + { + uint32_t RESERVED0 : 15; //!< [14:0] + uint32_t TS_TIMER : 1; //!< [15] Timestamp Timer + uint32_t TS_AVAIL : 1; //!< [16] Transmit Timestamp Available + uint32_t WAKEUP : 1; //!< [17] Node Wakeup Request Indication + uint32_t PLR : 1; //!< [18] Payload Receive Error + uint32_t UN : 1; //!< [19] Transmit FIFO Underrun + uint32_t RL : 1; //!< [20] Collision Retry Limit + uint32_t LC : 1; //!< [21] Late Collision + uint32_t EBERR : 1; //!< [22] Ethernet Bus Error + uint32_t MII : 1; //!< [23] MII Interrupt. + uint32_t RXB : 1; //!< [24] Receive Buffer Interrupt + uint32_t RXF : 1; //!< [25] Receive Frame Interrupt + uint32_t TXB : 1; //!< [26] Transmit Buffer Interrupt + uint32_t TXF : 1; //!< [27] Transmit Frame Interrupt + uint32_t GRA : 1; //!< [28] Graceful Stop Complete + uint32_t BABT : 1; //!< [29] Babbling Transmit Error + uint32_t BABR : 1; //!< [30] Babbling Receive Error + uint32_t RESERVED1 : 1; //!< [31] + } B; +} hw_enet_eir_t; +#endif + +/*! + * @name Constants and macros for entire ENET_EIR register + */ +//@{ +#define HW_ENET_EIR_ADDR(x) (REGS_ENET_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_EIR(x) (*(__IO hw_enet_eir_t *) HW_ENET_EIR_ADDR(x)) +#define HW_ENET_EIR_RD(x) (HW_ENET_EIR(x).U) +#define HW_ENET_EIR_WR(x, v) (HW_ENET_EIR(x).U = (v)) +#define HW_ENET_EIR_SET(x, v) (HW_ENET_EIR_WR(x, HW_ENET_EIR_RD(x) | (v))) +#define HW_ENET_EIR_CLR(x, v) (HW_ENET_EIR_WR(x, HW_ENET_EIR_RD(x) & ~(v))) +#define HW_ENET_EIR_TOG(x, v) (HW_ENET_EIR_WR(x, HW_ENET_EIR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_EIR bitfields + */ + +/*! + * @name Register ENET_EIR, field TS_TIMER[15] (W1C) + * + * The adjustable timer reached the period event. A period event interrupt can + * be generated if ATCR[PEREN] is set and the timer wraps according to the + * periodic setting in the ATPER register. Set the timer period value before setting + * ATCR[PEREN]. + */ +//@{ +#define BP_ENET_EIR_TS_TIMER (15U) //!< Bit position for ENET_EIR_TS_TIMER. +#define BM_ENET_EIR_TS_TIMER (0x00008000U) //!< Bit mask for ENET_EIR_TS_TIMER. +#define BS_ENET_EIR_TS_TIMER (1U) //!< Bit field size in bits for ENET_EIR_TS_TIMER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_TS_TIMER field. +#define BR_ENET_EIR_TS_TIMER(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_TS_TIMER)) +#endif + +//! @brief Format value for bitfield ENET_EIR_TS_TIMER. +#define BF_ENET_EIR_TS_TIMER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_TS_TIMER), uint32_t) & BM_ENET_EIR_TS_TIMER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TS_TIMER field to a new value. +#define BW_ENET_EIR_TS_TIMER(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_TS_TIMER) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field TS_AVAIL[16] (W1C) + * + * Indicates that the timestamp of the last transmitted timing frame is + * available in the ATSTMP register. + */ +//@{ +#define BP_ENET_EIR_TS_AVAIL (16U) //!< Bit position for ENET_EIR_TS_AVAIL. +#define BM_ENET_EIR_TS_AVAIL (0x00010000U) //!< Bit mask for ENET_EIR_TS_AVAIL. +#define BS_ENET_EIR_TS_AVAIL (1U) //!< Bit field size in bits for ENET_EIR_TS_AVAIL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_TS_AVAIL field. +#define BR_ENET_EIR_TS_AVAIL(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_TS_AVAIL)) +#endif + +//! @brief Format value for bitfield ENET_EIR_TS_AVAIL. +#define BF_ENET_EIR_TS_AVAIL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_TS_AVAIL), uint32_t) & BM_ENET_EIR_TS_AVAIL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TS_AVAIL field to a new value. +#define BW_ENET_EIR_TS_AVAIL(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_TS_AVAIL) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field WAKEUP[17] (W1C) + * + * Read-only status bit to indicate that a magic packet has been detected. Will + * act only if ECR[MAGICEN] is set. + */ +//@{ +#define BP_ENET_EIR_WAKEUP (17U) //!< Bit position for ENET_EIR_WAKEUP. +#define BM_ENET_EIR_WAKEUP (0x00020000U) //!< Bit mask for ENET_EIR_WAKEUP. +#define BS_ENET_EIR_WAKEUP (1U) //!< Bit field size in bits for ENET_EIR_WAKEUP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_WAKEUP field. +#define BR_ENET_EIR_WAKEUP(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_WAKEUP)) +#endif + +//! @brief Format value for bitfield ENET_EIR_WAKEUP. +#define BF_ENET_EIR_WAKEUP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_WAKEUP), uint32_t) & BM_ENET_EIR_WAKEUP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WAKEUP field to a new value. +#define BW_ENET_EIR_WAKEUP(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_WAKEUP) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field PLR[18] (W1C) + * + * Indicates a frame was received with a payload length error. See Frame + * Length/Type Verification: Payload Length Check for more information. + */ +//@{ +#define BP_ENET_EIR_PLR (18U) //!< Bit position for ENET_EIR_PLR. +#define BM_ENET_EIR_PLR (0x00040000U) //!< Bit mask for ENET_EIR_PLR. +#define BS_ENET_EIR_PLR (1U) //!< Bit field size in bits for ENET_EIR_PLR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_PLR field. +#define BR_ENET_EIR_PLR(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_PLR)) +#endif + +//! @brief Format value for bitfield ENET_EIR_PLR. +#define BF_ENET_EIR_PLR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_PLR), uint32_t) & BM_ENET_EIR_PLR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PLR field to a new value. +#define BW_ENET_EIR_PLR(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_PLR) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field UN[19] (W1C) + * + * Indicates the transmit FIFO became empty before the complete frame was + * transmitted. A bad CRC is appended to the frame fragment and the remainder of the + * frame is discarded. + */ +//@{ +#define BP_ENET_EIR_UN (19U) //!< Bit position for ENET_EIR_UN. +#define BM_ENET_EIR_UN (0x00080000U) //!< Bit mask for ENET_EIR_UN. +#define BS_ENET_EIR_UN (1U) //!< Bit field size in bits for ENET_EIR_UN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_UN field. +#define BR_ENET_EIR_UN(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_UN)) +#endif + +//! @brief Format value for bitfield ENET_EIR_UN. +#define BF_ENET_EIR_UN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_UN), uint32_t) & BM_ENET_EIR_UN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UN field to a new value. +#define BW_ENET_EIR_UN(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_UN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field RL[20] (W1C) + * + * Indicates a collision occurred on each of 16 successive attempts to transmit + * the frame. The frame is discarded without being transmitted and transmission + * of the next frame commences. This error can only occur in half-duplex mode. + */ +//@{ +#define BP_ENET_EIR_RL (20U) //!< Bit position for ENET_EIR_RL. +#define BM_ENET_EIR_RL (0x00100000U) //!< Bit mask for ENET_EIR_RL. +#define BS_ENET_EIR_RL (1U) //!< Bit field size in bits for ENET_EIR_RL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_RL field. +#define BR_ENET_EIR_RL(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_RL)) +#endif + +//! @brief Format value for bitfield ENET_EIR_RL. +#define BF_ENET_EIR_RL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_RL), uint32_t) & BM_ENET_EIR_RL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RL field to a new value. +#define BW_ENET_EIR_RL(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_RL) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field LC[21] (W1C) + * + * Indicates a collision occurred beyond the collision window (slot time) in + * half-duplex mode. The frame truncates with a bad CRC and the remainder of the + * frame is discarded. + */ +//@{ +#define BP_ENET_EIR_LC (21U) //!< Bit position for ENET_EIR_LC. +#define BM_ENET_EIR_LC (0x00200000U) //!< Bit mask for ENET_EIR_LC. +#define BS_ENET_EIR_LC (1U) //!< Bit field size in bits for ENET_EIR_LC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_LC field. +#define BR_ENET_EIR_LC(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_LC)) +#endif + +//! @brief Format value for bitfield ENET_EIR_LC. +#define BF_ENET_EIR_LC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_LC), uint32_t) & BM_ENET_EIR_LC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LC field to a new value. +#define BW_ENET_EIR_LC(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_LC) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field EBERR[22] (W1C) + * + * Indicates a system bus error occurred when a uDMA transaction is underway. + * When this bit is set, ECR[ETHEREN] is cleared, halting frame processing by the + * MAC. When this occurs, software must ensure proper actions, possibly resetting + * the system, to resume normal operation. + */ +//@{ +#define BP_ENET_EIR_EBERR (22U) //!< Bit position for ENET_EIR_EBERR. +#define BM_ENET_EIR_EBERR (0x00400000U) //!< Bit mask for ENET_EIR_EBERR. +#define BS_ENET_EIR_EBERR (1U) //!< Bit field size in bits for ENET_EIR_EBERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_EBERR field. +#define BR_ENET_EIR_EBERR(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_EBERR)) +#endif + +//! @brief Format value for bitfield ENET_EIR_EBERR. +#define BF_ENET_EIR_EBERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_EBERR), uint32_t) & BM_ENET_EIR_EBERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EBERR field to a new value. +#define BW_ENET_EIR_EBERR(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_EBERR) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field MII[23] (W1C) + * + * Indicates that the MII has completed the data transfer requested. + */ +//@{ +#define BP_ENET_EIR_MII (23U) //!< Bit position for ENET_EIR_MII. +#define BM_ENET_EIR_MII (0x00800000U) //!< Bit mask for ENET_EIR_MII. +#define BS_ENET_EIR_MII (1U) //!< Bit field size in bits for ENET_EIR_MII. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_MII field. +#define BR_ENET_EIR_MII(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_MII)) +#endif + +//! @brief Format value for bitfield ENET_EIR_MII. +#define BF_ENET_EIR_MII(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_MII), uint32_t) & BM_ENET_EIR_MII) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MII field to a new value. +#define BW_ENET_EIR_MII(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_MII) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field RXB[24] (W1C) + * + * Indicates a receive buffer descriptor is not the last in the frame has been + * updated. + */ +//@{ +#define BP_ENET_EIR_RXB (24U) //!< Bit position for ENET_EIR_RXB. +#define BM_ENET_EIR_RXB (0x01000000U) //!< Bit mask for ENET_EIR_RXB. +#define BS_ENET_EIR_RXB (1U) //!< Bit field size in bits for ENET_EIR_RXB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_RXB field. +#define BR_ENET_EIR_RXB(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_RXB)) +#endif + +//! @brief Format value for bitfield ENET_EIR_RXB. +#define BF_ENET_EIR_RXB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_RXB), uint32_t) & BM_ENET_EIR_RXB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXB field to a new value. +#define BW_ENET_EIR_RXB(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_RXB) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field RXF[25] (W1C) + * + * Indicates a frame has been received and the last corresponding buffer + * descriptor has been updated. + */ +//@{ +#define BP_ENET_EIR_RXF (25U) //!< Bit position for ENET_EIR_RXF. +#define BM_ENET_EIR_RXF (0x02000000U) //!< Bit mask for ENET_EIR_RXF. +#define BS_ENET_EIR_RXF (1U) //!< Bit field size in bits for ENET_EIR_RXF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_RXF field. +#define BR_ENET_EIR_RXF(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_RXF)) +#endif + +//! @brief Format value for bitfield ENET_EIR_RXF. +#define BF_ENET_EIR_RXF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_RXF), uint32_t) & BM_ENET_EIR_RXF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXF field to a new value. +#define BW_ENET_EIR_RXF(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_RXF) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field TXB[26] (W1C) + * + * Indicates a transmit buffer descriptor has been updated. + */ +//@{ +#define BP_ENET_EIR_TXB (26U) //!< Bit position for ENET_EIR_TXB. +#define BM_ENET_EIR_TXB (0x04000000U) //!< Bit mask for ENET_EIR_TXB. +#define BS_ENET_EIR_TXB (1U) //!< Bit field size in bits for ENET_EIR_TXB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_TXB field. +#define BR_ENET_EIR_TXB(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_TXB)) +#endif + +//! @brief Format value for bitfield ENET_EIR_TXB. +#define BF_ENET_EIR_TXB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_TXB), uint32_t) & BM_ENET_EIR_TXB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXB field to a new value. +#define BW_ENET_EIR_TXB(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_TXB) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field TXF[27] (W1C) + * + * Indicates a frame has been transmitted and the last corresponding buffer + * descriptor has been updated. + */ +//@{ +#define BP_ENET_EIR_TXF (27U) //!< Bit position for ENET_EIR_TXF. +#define BM_ENET_EIR_TXF (0x08000000U) //!< Bit mask for ENET_EIR_TXF. +#define BS_ENET_EIR_TXF (1U) //!< Bit field size in bits for ENET_EIR_TXF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_TXF field. +#define BR_ENET_EIR_TXF(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_TXF)) +#endif + +//! @brief Format value for bitfield ENET_EIR_TXF. +#define BF_ENET_EIR_TXF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_TXF), uint32_t) & BM_ENET_EIR_TXF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXF field to a new value. +#define BW_ENET_EIR_TXF(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_TXF) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field GRA[28] (W1C) + * + * This interrupt is asserted after the transmitter is put into a pause state + * after completion of the frame currently being transmitted. See Graceful Transmit + * Stop (GTS) for conditions that lead to graceful stop. The GRA interrupt is + * asserted only when the TX transitions into the stopped state. If this bit is + * cleared by writing 1 and the TX is still stopped, the bit is not set again. + */ +//@{ +#define BP_ENET_EIR_GRA (28U) //!< Bit position for ENET_EIR_GRA. +#define BM_ENET_EIR_GRA (0x10000000U) //!< Bit mask for ENET_EIR_GRA. +#define BS_ENET_EIR_GRA (1U) //!< Bit field size in bits for ENET_EIR_GRA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_GRA field. +#define BR_ENET_EIR_GRA(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_GRA)) +#endif + +//! @brief Format value for bitfield ENET_EIR_GRA. +#define BF_ENET_EIR_GRA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_GRA), uint32_t) & BM_ENET_EIR_GRA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GRA field to a new value. +#define BW_ENET_EIR_GRA(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_GRA) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field BABT[29] (W1C) + * + * Indicates the transmitted frame length exceeds RCR[MAX_FL] bytes. Usually + * this condition is caused when a frame that is too long is placed into the + * transmit data buffer(s). Truncation does not occur. + */ +//@{ +#define BP_ENET_EIR_BABT (29U) //!< Bit position for ENET_EIR_BABT. +#define BM_ENET_EIR_BABT (0x20000000U) //!< Bit mask for ENET_EIR_BABT. +#define BS_ENET_EIR_BABT (1U) //!< Bit field size in bits for ENET_EIR_BABT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_BABT field. +#define BR_ENET_EIR_BABT(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_BABT)) +#endif + +//! @brief Format value for bitfield ENET_EIR_BABT. +#define BF_ENET_EIR_BABT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_BABT), uint32_t) & BM_ENET_EIR_BABT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BABT field to a new value. +#define BW_ENET_EIR_BABT(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_BABT) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIR, field BABR[30] (W1C) + * + * Indicates a frame was received with length in excess of RCR[MAX_FL] bytes. + */ +//@{ +#define BP_ENET_EIR_BABR (30U) //!< Bit position for ENET_EIR_BABR. +#define BM_ENET_EIR_BABR (0x40000000U) //!< Bit mask for ENET_EIR_BABR. +#define BS_ENET_EIR_BABR (1U) //!< Bit field size in bits for ENET_EIR_BABR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIR_BABR field. +#define BR_ENET_EIR_BABR(x) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_BABR)) +#endif + +//! @brief Format value for bitfield ENET_EIR_BABR. +#define BF_ENET_EIR_BABR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIR_BABR), uint32_t) & BM_ENET_EIR_BABR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BABR field to a new value. +#define BW_ENET_EIR_BABR(x, v) (BITBAND_ACCESS32(HW_ENET_EIR_ADDR(x), BP_ENET_EIR_BABR) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_EIMR - Interrupt Mask Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_EIMR - Interrupt Mask Register (RW) + * + * Reset value: 0x00000000U + * + * EIMR controls which interrupt events are allowed to generate actual + * interrupts. A hardware reset clears this register. If the corresponding bits in the EIR + * and EIMR registers are set, an interrupt is generated. The interrupt signal + * remains asserted until a 1 is written to the EIR field (write 1 to clear) or a + * 0 is written to the EIMR field. + */ +typedef union _hw_enet_eimr +{ + uint32_t U; + struct _hw_enet_eimr_bitfields + { + uint32_t RESERVED0 : 15; //!< [14:0] + uint32_t TS_TIMER : 1; //!< [15] TS_TIMER Interrupt Mask + uint32_t TS_AVAIL : 1; //!< [16] TS_AVAIL Interrupt Mask + uint32_t WAKEUP : 1; //!< [17] WAKEUP Interrupt Mask + uint32_t PLR : 1; //!< [18] PLR Interrupt Mask + uint32_t UN : 1; //!< [19] UN Interrupt Mask + uint32_t RL : 1; //!< [20] RL Interrupt Mask + uint32_t LC : 1; //!< [21] LC Interrupt Mask + uint32_t EBERR : 1; //!< [22] EBERR Interrupt Mask + uint32_t MII : 1; //!< [23] MII Interrupt Mask + uint32_t RXB : 1; //!< [24] RXB Interrupt Mask + uint32_t RXF : 1; //!< [25] RXF Interrupt Mask + uint32_t TXB : 1; //!< [26] TXB Interrupt Mask + uint32_t TXF : 1; //!< [27] TXF Interrupt Mask + uint32_t GRA : 1; //!< [28] GRA Interrupt Mask + uint32_t BABT : 1; //!< [29] BABT Interrupt Mask + uint32_t BABR : 1; //!< [30] BABR Interrupt Mask + uint32_t RESERVED1 : 1; //!< [31] + } B; +} hw_enet_eimr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_EIMR register + */ +//@{ +#define HW_ENET_EIMR_ADDR(x) (REGS_ENET_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_EIMR(x) (*(__IO hw_enet_eimr_t *) HW_ENET_EIMR_ADDR(x)) +#define HW_ENET_EIMR_RD(x) (HW_ENET_EIMR(x).U) +#define HW_ENET_EIMR_WR(x, v) (HW_ENET_EIMR(x).U = (v)) +#define HW_ENET_EIMR_SET(x, v) (HW_ENET_EIMR_WR(x, HW_ENET_EIMR_RD(x) | (v))) +#define HW_ENET_EIMR_CLR(x, v) (HW_ENET_EIMR_WR(x, HW_ENET_EIMR_RD(x) & ~(v))) +#define HW_ENET_EIMR_TOG(x, v) (HW_ENET_EIMR_WR(x, HW_ENET_EIMR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_EIMR bitfields + */ + +/*! + * @name Register ENET_EIMR, field TS_TIMER[15] (RW) + * + * Corresponds to interrupt source EIR[TS_TIMER] register and determines whether + * an interrupt condition can generate an interrupt. At every module clock, the + * EIR samples the signal generated by the interrupting source. The corresponding + * EIR TS_TIMER field reflects the state of the interrupt signal even if the + * corresponding EIMR field is cleared. + */ +//@{ +#define BP_ENET_EIMR_TS_TIMER (15U) //!< Bit position for ENET_EIMR_TS_TIMER. +#define BM_ENET_EIMR_TS_TIMER (0x00008000U) //!< Bit mask for ENET_EIMR_TS_TIMER. +#define BS_ENET_EIMR_TS_TIMER (1U) //!< Bit field size in bits for ENET_EIMR_TS_TIMER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_TS_TIMER field. +#define BR_ENET_EIMR_TS_TIMER(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_TS_TIMER)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_TS_TIMER. +#define BF_ENET_EIMR_TS_TIMER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_TS_TIMER), uint32_t) & BM_ENET_EIMR_TS_TIMER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TS_TIMER field to a new value. +#define BW_ENET_EIMR_TS_TIMER(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_TS_TIMER) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field TS_AVAIL[16] (RW) + * + * Corresponds to interrupt source EIR[TS_AVAIL] register and determines whether + * an interrupt condition can generate an interrupt. At every module clock, the + * EIR samples the signal generated by the interrupting source. The corresponding + * EIR TS_AVAIL field reflects the state of the interrupt signal even if the + * corresponding EIMR field is cleared. + */ +//@{ +#define BP_ENET_EIMR_TS_AVAIL (16U) //!< Bit position for ENET_EIMR_TS_AVAIL. +#define BM_ENET_EIMR_TS_AVAIL (0x00010000U) //!< Bit mask for ENET_EIMR_TS_AVAIL. +#define BS_ENET_EIMR_TS_AVAIL (1U) //!< Bit field size in bits for ENET_EIMR_TS_AVAIL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_TS_AVAIL field. +#define BR_ENET_EIMR_TS_AVAIL(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_TS_AVAIL)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_TS_AVAIL. +#define BF_ENET_EIMR_TS_AVAIL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_TS_AVAIL), uint32_t) & BM_ENET_EIMR_TS_AVAIL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TS_AVAIL field to a new value. +#define BW_ENET_EIMR_TS_AVAIL(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_TS_AVAIL) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field WAKEUP[17] (RW) + * + * Corresponds to interrupt source EIR[WAKEUP] register and determines whether + * an interrupt condition can generate an interrupt. At every module clock, the + * EIR samples the signal generated by the interrupting source. The corresponding + * EIR WAKEUP field reflects the state of the interrupt signal even if the + * corresponding EIMR field is cleared. + */ +//@{ +#define BP_ENET_EIMR_WAKEUP (17U) //!< Bit position for ENET_EIMR_WAKEUP. +#define BM_ENET_EIMR_WAKEUP (0x00020000U) //!< Bit mask for ENET_EIMR_WAKEUP. +#define BS_ENET_EIMR_WAKEUP (1U) //!< Bit field size in bits for ENET_EIMR_WAKEUP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_WAKEUP field. +#define BR_ENET_EIMR_WAKEUP(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_WAKEUP)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_WAKEUP. +#define BF_ENET_EIMR_WAKEUP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_WAKEUP), uint32_t) & BM_ENET_EIMR_WAKEUP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WAKEUP field to a new value. +#define BW_ENET_EIMR_WAKEUP(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_WAKEUP) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field PLR[18] (RW) + * + * Corresponds to interrupt source EIR[PLR] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR PLR field + * reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + */ +//@{ +#define BP_ENET_EIMR_PLR (18U) //!< Bit position for ENET_EIMR_PLR. +#define BM_ENET_EIMR_PLR (0x00040000U) //!< Bit mask for ENET_EIMR_PLR. +#define BS_ENET_EIMR_PLR (1U) //!< Bit field size in bits for ENET_EIMR_PLR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_PLR field. +#define BR_ENET_EIMR_PLR(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_PLR)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_PLR. +#define BF_ENET_EIMR_PLR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_PLR), uint32_t) & BM_ENET_EIMR_PLR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PLR field to a new value. +#define BW_ENET_EIMR_PLR(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_PLR) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field UN[19] (RW) + * + * Corresponds to interrupt source EIR[UN] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples the + * signal generated by the interrupting source. The corresponding EIR UN field + * reflects the state of the interrupt signal even if the corresponding EIMR field + * is cleared. + */ +//@{ +#define BP_ENET_EIMR_UN (19U) //!< Bit position for ENET_EIMR_UN. +#define BM_ENET_EIMR_UN (0x00080000U) //!< Bit mask for ENET_EIMR_UN. +#define BS_ENET_EIMR_UN (1U) //!< Bit field size in bits for ENET_EIMR_UN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_UN field. +#define BR_ENET_EIMR_UN(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_UN)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_UN. +#define BF_ENET_EIMR_UN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_UN), uint32_t) & BM_ENET_EIMR_UN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UN field to a new value. +#define BW_ENET_EIMR_UN(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_UN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field RL[20] (RW) + * + * Corresponds to interrupt source EIR[RL] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples the + * signal generated by the interrupting source. The corresponding EIR RL field + * reflects the state of the interrupt signal even if the corresponding EIMR field + * is cleared. + */ +//@{ +#define BP_ENET_EIMR_RL (20U) //!< Bit position for ENET_EIMR_RL. +#define BM_ENET_EIMR_RL (0x00100000U) //!< Bit mask for ENET_EIMR_RL. +#define BS_ENET_EIMR_RL (1U) //!< Bit field size in bits for ENET_EIMR_RL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_RL field. +#define BR_ENET_EIMR_RL(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_RL)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_RL. +#define BF_ENET_EIMR_RL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_RL), uint32_t) & BM_ENET_EIMR_RL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RL field to a new value. +#define BW_ENET_EIMR_RL(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_RL) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field LC[21] (RW) + * + * Corresponds to interrupt source EIR[LC] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples the + * signal generated by the interrupting source. The corresponding EIR LC field + * reflects the state of the interrupt signal even if the corresponding EIMR field + * is cleared. + */ +//@{ +#define BP_ENET_EIMR_LC (21U) //!< Bit position for ENET_EIMR_LC. +#define BM_ENET_EIMR_LC (0x00200000U) //!< Bit mask for ENET_EIMR_LC. +#define BS_ENET_EIMR_LC (1U) //!< Bit field size in bits for ENET_EIMR_LC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_LC field. +#define BR_ENET_EIMR_LC(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_LC)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_LC. +#define BF_ENET_EIMR_LC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_LC), uint32_t) & BM_ENET_EIMR_LC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LC field to a new value. +#define BW_ENET_EIMR_LC(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_LC) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field EBERR[22] (RW) + * + * Corresponds to interrupt source EIR[EBERR] and determines whether an + * interrupt condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR EBERR + * field reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + */ +//@{ +#define BP_ENET_EIMR_EBERR (22U) //!< Bit position for ENET_EIMR_EBERR. +#define BM_ENET_EIMR_EBERR (0x00400000U) //!< Bit mask for ENET_EIMR_EBERR. +#define BS_ENET_EIMR_EBERR (1U) //!< Bit field size in bits for ENET_EIMR_EBERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_EBERR field. +#define BR_ENET_EIMR_EBERR(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_EBERR)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_EBERR. +#define BF_ENET_EIMR_EBERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_EBERR), uint32_t) & BM_ENET_EIMR_EBERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EBERR field to a new value. +#define BW_ENET_EIMR_EBERR(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_EBERR) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field MII[23] (RW) + * + * Corresponds to interrupt source EIR[MII] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR MII field + * reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + */ +//@{ +#define BP_ENET_EIMR_MII (23U) //!< Bit position for ENET_EIMR_MII. +#define BM_ENET_EIMR_MII (0x00800000U) //!< Bit mask for ENET_EIMR_MII. +#define BS_ENET_EIMR_MII (1U) //!< Bit field size in bits for ENET_EIMR_MII. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_MII field. +#define BR_ENET_EIMR_MII(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_MII)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_MII. +#define BF_ENET_EIMR_MII(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_MII), uint32_t) & BM_ENET_EIMR_MII) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MII field to a new value. +#define BW_ENET_EIMR_MII(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_MII) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field RXB[24] (RW) + * + * Corresponds to interrupt source EIR[RXB] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR RXB field + * reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + */ +//@{ +#define BP_ENET_EIMR_RXB (24U) //!< Bit position for ENET_EIMR_RXB. +#define BM_ENET_EIMR_RXB (0x01000000U) //!< Bit mask for ENET_EIMR_RXB. +#define BS_ENET_EIMR_RXB (1U) //!< Bit field size in bits for ENET_EIMR_RXB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_RXB field. +#define BR_ENET_EIMR_RXB(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_RXB)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_RXB. +#define BF_ENET_EIMR_RXB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_RXB), uint32_t) & BM_ENET_EIMR_RXB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXB field to a new value. +#define BW_ENET_EIMR_RXB(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_RXB) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field RXF[25] (RW) + * + * Corresponds to interrupt source EIR[RXF] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR RXF field + * reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + */ +//@{ +#define BP_ENET_EIMR_RXF (25U) //!< Bit position for ENET_EIMR_RXF. +#define BM_ENET_EIMR_RXF (0x02000000U) //!< Bit mask for ENET_EIMR_RXF. +#define BS_ENET_EIMR_RXF (1U) //!< Bit field size in bits for ENET_EIMR_RXF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_RXF field. +#define BR_ENET_EIMR_RXF(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_RXF)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_RXF. +#define BF_ENET_EIMR_RXF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_RXF), uint32_t) & BM_ENET_EIMR_RXF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXF field to a new value. +#define BW_ENET_EIMR_RXF(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_RXF) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field TXB[26] (RW) + * + * Corresponds to interrupt source EIR[TXB] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR TXF field + * reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + * + * Values: + * - 0 - The corresponding interrupt source is masked. + * - 1 - The corresponding interrupt source is not masked. + */ +//@{ +#define BP_ENET_EIMR_TXB (26U) //!< Bit position for ENET_EIMR_TXB. +#define BM_ENET_EIMR_TXB (0x04000000U) //!< Bit mask for ENET_EIMR_TXB. +#define BS_ENET_EIMR_TXB (1U) //!< Bit field size in bits for ENET_EIMR_TXB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_TXB field. +#define BR_ENET_EIMR_TXB(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_TXB)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_TXB. +#define BF_ENET_EIMR_TXB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_TXB), uint32_t) & BM_ENET_EIMR_TXB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXB field to a new value. +#define BW_ENET_EIMR_TXB(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_TXB) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field TXF[27] (RW) + * + * Corresponds to interrupt source EIR[TXF] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR TXF field + * reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + * + * Values: + * - 0 - The corresponding interrupt source is masked. + * - 1 - The corresponding interrupt source is not masked. + */ +//@{ +#define BP_ENET_EIMR_TXF (27U) //!< Bit position for ENET_EIMR_TXF. +#define BM_ENET_EIMR_TXF (0x08000000U) //!< Bit mask for ENET_EIMR_TXF. +#define BS_ENET_EIMR_TXF (1U) //!< Bit field size in bits for ENET_EIMR_TXF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_TXF field. +#define BR_ENET_EIMR_TXF(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_TXF)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_TXF. +#define BF_ENET_EIMR_TXF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_TXF), uint32_t) & BM_ENET_EIMR_TXF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXF field to a new value. +#define BW_ENET_EIMR_TXF(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_TXF) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field GRA[28] (RW) + * + * Corresponds to interrupt source EIR[GRA] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR GRA field + * reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + * + * Values: + * - 0 - The corresponding interrupt source is masked. + * - 1 - The corresponding interrupt source is not masked. + */ +//@{ +#define BP_ENET_EIMR_GRA (28U) //!< Bit position for ENET_EIMR_GRA. +#define BM_ENET_EIMR_GRA (0x10000000U) //!< Bit mask for ENET_EIMR_GRA. +#define BS_ENET_EIMR_GRA (1U) //!< Bit field size in bits for ENET_EIMR_GRA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_GRA field. +#define BR_ENET_EIMR_GRA(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_GRA)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_GRA. +#define BF_ENET_EIMR_GRA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_GRA), uint32_t) & BM_ENET_EIMR_GRA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GRA field to a new value. +#define BW_ENET_EIMR_GRA(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_GRA) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field BABT[29] (RW) + * + * Corresponds to interrupt source EIR[BABT] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR BABT + * field reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + * + * Values: + * - 0 - The corresponding interrupt source is masked. + * - 1 - The corresponding interrupt source is not masked. + */ +//@{ +#define BP_ENET_EIMR_BABT (29U) //!< Bit position for ENET_EIMR_BABT. +#define BM_ENET_EIMR_BABT (0x20000000U) //!< Bit mask for ENET_EIMR_BABT. +#define BS_ENET_EIMR_BABT (1U) //!< Bit field size in bits for ENET_EIMR_BABT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_BABT field. +#define BR_ENET_EIMR_BABT(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_BABT)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_BABT. +#define BF_ENET_EIMR_BABT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_BABT), uint32_t) & BM_ENET_EIMR_BABT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BABT field to a new value. +#define BW_ENET_EIMR_BABT(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_BABT) = (v)) +#endif +//@} + +/*! + * @name Register ENET_EIMR, field BABR[30] (RW) + * + * Corresponds to interrupt source EIR[BABR] and determines whether an interrupt + * condition can generate an interrupt. At every module clock, the EIR samples + * the signal generated by the interrupting source. The corresponding EIR BABR + * field reflects the state of the interrupt signal even if the corresponding EIMR + * field is cleared. + * + * Values: + * - 0 - The corresponding interrupt source is masked. + * - 1 - The corresponding interrupt source is not masked. + */ +//@{ +#define BP_ENET_EIMR_BABR (30U) //!< Bit position for ENET_EIMR_BABR. +#define BM_ENET_EIMR_BABR (0x40000000U) //!< Bit mask for ENET_EIMR_BABR. +#define BS_ENET_EIMR_BABR (1U) //!< Bit field size in bits for ENET_EIMR_BABR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_EIMR_BABR field. +#define BR_ENET_EIMR_BABR(x) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_BABR)) +#endif + +//! @brief Format value for bitfield ENET_EIMR_BABR. +#define BF_ENET_EIMR_BABR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_EIMR_BABR), uint32_t) & BM_ENET_EIMR_BABR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BABR field to a new value. +#define BW_ENET_EIMR_BABR(x, v) (BITBAND_ACCESS32(HW_ENET_EIMR_ADDR(x), BP_ENET_EIMR_BABR) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RDAR - Receive Descriptor Active Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RDAR - Receive Descriptor Active Register (RW) + * + * Reset value: 0x00000000U + * + * RDAR is a command register, written by the user, to indicate that the receive + * descriptor ring has been updated, that is, that the driver produced empty + * receive buffers with the empty bit set. + */ +typedef union _hw_enet_rdar +{ + uint32_t U; + struct _hw_enet_rdar_bitfields + { + uint32_t RESERVED0 : 24; //!< [23:0] + uint32_t RDAR : 1; //!< [24] Receive Descriptor Active + uint32_t RESERVED1 : 7; //!< [31:25] + } B; +} hw_enet_rdar_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RDAR register + */ +//@{ +#define HW_ENET_RDAR_ADDR(x) (REGS_ENET_BASE(x) + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RDAR(x) (*(__IO hw_enet_rdar_t *) HW_ENET_RDAR_ADDR(x)) +#define HW_ENET_RDAR_RD(x) (HW_ENET_RDAR(x).U) +#define HW_ENET_RDAR_WR(x, v) (HW_ENET_RDAR(x).U = (v)) +#define HW_ENET_RDAR_SET(x, v) (HW_ENET_RDAR_WR(x, HW_ENET_RDAR_RD(x) | (v))) +#define HW_ENET_RDAR_CLR(x, v) (HW_ENET_RDAR_WR(x, HW_ENET_RDAR_RD(x) & ~(v))) +#define HW_ENET_RDAR_TOG(x, v) (HW_ENET_RDAR_WR(x, HW_ENET_RDAR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_RDAR bitfields + */ + +/*! + * @name Register ENET_RDAR, field RDAR[24] (RW) + * + * Always set to 1 when this register is written, regardless of the value + * written. This field is cleared by the MAC device when no additional empty + * descriptors remain in the receive ring. It is also cleared when ECR[ETHEREN] transitions + * from set to cleared or when ECR[RESET] is set. + */ +//@{ +#define BP_ENET_RDAR_RDAR (24U) //!< Bit position for ENET_RDAR_RDAR. +#define BM_ENET_RDAR_RDAR (0x01000000U) //!< Bit mask for ENET_RDAR_RDAR. +#define BS_ENET_RDAR_RDAR (1U) //!< Bit field size in bits for ENET_RDAR_RDAR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RDAR_RDAR field. +#define BR_ENET_RDAR_RDAR(x) (BITBAND_ACCESS32(HW_ENET_RDAR_ADDR(x), BP_ENET_RDAR_RDAR)) +#endif + +//! @brief Format value for bitfield ENET_RDAR_RDAR. +#define BF_ENET_RDAR_RDAR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RDAR_RDAR), uint32_t) & BM_ENET_RDAR_RDAR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RDAR field to a new value. +#define BW_ENET_RDAR_RDAR(x, v) (BITBAND_ACCESS32(HW_ENET_RDAR_ADDR(x), BP_ENET_RDAR_RDAR) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TDAR - Transmit Descriptor Active Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TDAR - Transmit Descriptor Active Register (RW) + * + * Reset value: 0x00000000U + * + * The TDAR is a command register that the user writes to indicate that the + * transmit descriptor ring has been updated, that is, that transmit buffers have + * been produced by the driver with the ready bit set in the buffer descriptor. The + * TDAR register is cleared at reset, when ECR[ETHEREN] transitions from set to + * cleared, or when ECR[RESET] is set. + */ +typedef union _hw_enet_tdar +{ + uint32_t U; + struct _hw_enet_tdar_bitfields + { + uint32_t RESERVED0 : 24; //!< [23:0] + uint32_t TDAR : 1; //!< [24] Transmit Descriptor Active + uint32_t RESERVED1 : 7; //!< [31:25] + } B; +} hw_enet_tdar_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TDAR register + */ +//@{ +#define HW_ENET_TDAR_ADDR(x) (REGS_ENET_BASE(x) + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TDAR(x) (*(__IO hw_enet_tdar_t *) HW_ENET_TDAR_ADDR(x)) +#define HW_ENET_TDAR_RD(x) (HW_ENET_TDAR(x).U) +#define HW_ENET_TDAR_WR(x, v) (HW_ENET_TDAR(x).U = (v)) +#define HW_ENET_TDAR_SET(x, v) (HW_ENET_TDAR_WR(x, HW_ENET_TDAR_RD(x) | (v))) +#define HW_ENET_TDAR_CLR(x, v) (HW_ENET_TDAR_WR(x, HW_ENET_TDAR_RD(x) & ~(v))) +#define HW_ENET_TDAR_TOG(x, v) (HW_ENET_TDAR_WR(x, HW_ENET_TDAR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TDAR bitfields + */ + +/*! + * @name Register ENET_TDAR, field TDAR[24] (RW) + * + * Always set to 1 when this register is written, regardless of the value + * written. This bit is cleared by the MAC device when no additional ready descriptors + * remain in the transmit ring. Also cleared when ECR[ETHEREN] transitions from + * set to cleared or when ECR[RESET] is set. + */ +//@{ +#define BP_ENET_TDAR_TDAR (24U) //!< Bit position for ENET_TDAR_TDAR. +#define BM_ENET_TDAR_TDAR (0x01000000U) //!< Bit mask for ENET_TDAR_TDAR. +#define BS_ENET_TDAR_TDAR (1U) //!< Bit field size in bits for ENET_TDAR_TDAR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TDAR_TDAR field. +#define BR_ENET_TDAR_TDAR(x) (BITBAND_ACCESS32(HW_ENET_TDAR_ADDR(x), BP_ENET_TDAR_TDAR)) +#endif + +//! @brief Format value for bitfield ENET_TDAR_TDAR. +#define BF_ENET_TDAR_TDAR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TDAR_TDAR), uint32_t) & BM_ENET_TDAR_TDAR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TDAR field to a new value. +#define BW_ENET_TDAR_TDAR(x, v) (BITBAND_ACCESS32(HW_ENET_TDAR_ADDR(x), BP_ENET_TDAR_TDAR) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_ECR - Ethernet Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_ECR - Ethernet Control Register (RW) + * + * Reset value: 0xF0000000U + * + * ECR is a read/write user register, though hardware may also alter fields in + * this register. It controls many of the high level features of the Ethernet MAC, + * including legacy FEC support through the EN1588 field. + */ +typedef union _hw_enet_ecr +{ + uint32_t U; + struct _hw_enet_ecr_bitfields + { + uint32_t RESET : 1; //!< [0] Ethernet MAC Reset + uint32_t ETHEREN : 1; //!< [1] Ethernet Enable + uint32_t MAGICEN : 1; //!< [2] Magic Packet Detection Enable + uint32_t SLEEP : 1; //!< [3] Sleep Mode Enable + uint32_t EN1588 : 1; //!< [4] EN1588 Enable + uint32_t RESERVED0 : 1; //!< [5] + uint32_t DBGEN : 1; //!< [6] Debug Enable + uint32_t STOPEN : 1; //!< [7] STOPEN Signal Control + uint32_t DBSWP : 1; //!< [8] Descriptor Byte Swapping Enable + uint32_t RESERVED1 : 23; //!< [31:9] + } B; +} hw_enet_ecr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_ECR register + */ +//@{ +#define HW_ENET_ECR_ADDR(x) (REGS_ENET_BASE(x) + 0x24U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_ECR(x) (*(__IO hw_enet_ecr_t *) HW_ENET_ECR_ADDR(x)) +#define HW_ENET_ECR_RD(x) (HW_ENET_ECR(x).U) +#define HW_ENET_ECR_WR(x, v) (HW_ENET_ECR(x).U = (v)) +#define HW_ENET_ECR_SET(x, v) (HW_ENET_ECR_WR(x, HW_ENET_ECR_RD(x) | (v))) +#define HW_ENET_ECR_CLR(x, v) (HW_ENET_ECR_WR(x, HW_ENET_ECR_RD(x) & ~(v))) +#define HW_ENET_ECR_TOG(x, v) (HW_ENET_ECR_WR(x, HW_ENET_ECR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_ECR bitfields + */ + +/*! + * @name Register ENET_ECR, field RESET[0] (RW) + * + * When this field is set, it clears the ETHEREN field. + */ +//@{ +#define BP_ENET_ECR_RESET (0U) //!< Bit position for ENET_ECR_RESET. +#define BM_ENET_ECR_RESET (0x00000001U) //!< Bit mask for ENET_ECR_RESET. +#define BS_ENET_ECR_RESET (1U) //!< Bit field size in bits for ENET_ECR_RESET. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ECR_RESET field. +#define BR_ENET_ECR_RESET(x) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_RESET)) +#endif + +//! @brief Format value for bitfield ENET_ECR_RESET. +#define BF_ENET_ECR_RESET(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ECR_RESET), uint32_t) & BM_ENET_ECR_RESET) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RESET field to a new value. +#define BW_ENET_ECR_RESET(x, v) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_RESET) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ECR, field ETHEREN[1] (RW) + * + * Enables/disables the Ethernet MAC. When the MAC is disabled, the buffer + * descriptors for an aborted transmit frame are not updated. The uDMA, buffer + * descriptor, and FIFO control logic are reset, including the buffer descriptor and + * FIFO pointers. Hardware clears this field under the following conditions: RESET + * is set by software An error condition causes the EBERR field to set. ETHEREN + * must be set at the very last step during ENET + * configuration/setup/initialization, only after all other ENET-related registers have been configured. If ETHEREN + * is cleared to 0 by software then then next time ETHEREN is set, the EIR + * interrupts must cleared to 0 due to previous pending interrupts. + * + * Values: + * - 0 - Reception immediately stops and transmission stops after a bad CRC is + * appended to any currently transmitted frame. + * - 1 - MAC is enabled, and reception and transmission are possible. + */ +//@{ +#define BP_ENET_ECR_ETHEREN (1U) //!< Bit position for ENET_ECR_ETHEREN. +#define BM_ENET_ECR_ETHEREN (0x00000002U) //!< Bit mask for ENET_ECR_ETHEREN. +#define BS_ENET_ECR_ETHEREN (1U) //!< Bit field size in bits for ENET_ECR_ETHEREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ECR_ETHEREN field. +#define BR_ENET_ECR_ETHEREN(x) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_ETHEREN)) +#endif + +//! @brief Format value for bitfield ENET_ECR_ETHEREN. +#define BF_ENET_ECR_ETHEREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ECR_ETHEREN), uint32_t) & BM_ENET_ECR_ETHEREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ETHEREN field to a new value. +#define BW_ENET_ECR_ETHEREN(x, v) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_ETHEREN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ECR, field MAGICEN[2] (RW) + * + * Enables/disables magic packet detection. MAGICEN is relevant only if the + * SLEEP field is set. If MAGICEN is set, changing the SLEEP field enables/disables + * sleep mode and magic packet detection. + * + * Values: + * - 0 - Magic detection logic disabled. + * - 1 - The MAC core detects magic packets and asserts EIR[WAKEUP] when a frame + * is detected. + */ +//@{ +#define BP_ENET_ECR_MAGICEN (2U) //!< Bit position for ENET_ECR_MAGICEN. +#define BM_ENET_ECR_MAGICEN (0x00000004U) //!< Bit mask for ENET_ECR_MAGICEN. +#define BS_ENET_ECR_MAGICEN (1U) //!< Bit field size in bits for ENET_ECR_MAGICEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ECR_MAGICEN field. +#define BR_ENET_ECR_MAGICEN(x) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_MAGICEN)) +#endif + +//! @brief Format value for bitfield ENET_ECR_MAGICEN. +#define BF_ENET_ECR_MAGICEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ECR_MAGICEN), uint32_t) & BM_ENET_ECR_MAGICEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MAGICEN field to a new value. +#define BW_ENET_ECR_MAGICEN(x, v) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_MAGICEN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ECR, field SLEEP[3] (RW) + * + * Values: + * - 0 - Normal operating mode. + * - 1 - Sleep mode. + */ +//@{ +#define BP_ENET_ECR_SLEEP (3U) //!< Bit position for ENET_ECR_SLEEP. +#define BM_ENET_ECR_SLEEP (0x00000008U) //!< Bit mask for ENET_ECR_SLEEP. +#define BS_ENET_ECR_SLEEP (1U) //!< Bit field size in bits for ENET_ECR_SLEEP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ECR_SLEEP field. +#define BR_ENET_ECR_SLEEP(x) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_SLEEP)) +#endif + +//! @brief Format value for bitfield ENET_ECR_SLEEP. +#define BF_ENET_ECR_SLEEP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ECR_SLEEP), uint32_t) & BM_ENET_ECR_SLEEP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SLEEP field to a new value. +#define BW_ENET_ECR_SLEEP(x, v) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_SLEEP) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ECR, field EN1588[4] (RW) + * + * Enables enhanced functionality of the MAC. + * + * Values: + * - 0 - Legacy FEC buffer descriptors and functions enabled. + * - 1 - Enhanced frame time-stamping functions enabled. + */ +//@{ +#define BP_ENET_ECR_EN1588 (4U) //!< Bit position for ENET_ECR_EN1588. +#define BM_ENET_ECR_EN1588 (0x00000010U) //!< Bit mask for ENET_ECR_EN1588. +#define BS_ENET_ECR_EN1588 (1U) //!< Bit field size in bits for ENET_ECR_EN1588. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ECR_EN1588 field. +#define BR_ENET_ECR_EN1588(x) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_EN1588)) +#endif + +//! @brief Format value for bitfield ENET_ECR_EN1588. +#define BF_ENET_ECR_EN1588(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ECR_EN1588), uint32_t) & BM_ENET_ECR_EN1588) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EN1588 field to a new value. +#define BW_ENET_ECR_EN1588(x, v) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_EN1588) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ECR, field DBGEN[6] (RW) + * + * Enables the MAC to enter hardware freeze mode when the device enters debug + * mode. + * + * Values: + * - 0 - MAC continues operation in debug mode. + * - 1 - MAC enters hardware freeze mode when the processor is in debug mode. + */ +//@{ +#define BP_ENET_ECR_DBGEN (6U) //!< Bit position for ENET_ECR_DBGEN. +#define BM_ENET_ECR_DBGEN (0x00000040U) //!< Bit mask for ENET_ECR_DBGEN. +#define BS_ENET_ECR_DBGEN (1U) //!< Bit field size in bits for ENET_ECR_DBGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ECR_DBGEN field. +#define BR_ENET_ECR_DBGEN(x) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_DBGEN)) +#endif + +//! @brief Format value for bitfield ENET_ECR_DBGEN. +#define BF_ENET_ECR_DBGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ECR_DBGEN), uint32_t) & BM_ENET_ECR_DBGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DBGEN field to a new value. +#define BW_ENET_ECR_DBGEN(x, v) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_DBGEN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ECR, field STOPEN[7] (RW) + * + * Controls device behavior in doze mode. In doze mode, if this field is set + * then all the clocks of the ENET assembly are disabled, except the RMII /MII + * clock. Doze mode is similar to a conditional stop mode entry for the ENET assembly + * depending on ECR[STOPEN]. If module clocks are gated in this mode, the module + * can still wake the system after receiving a magic packet in stop mode. MAGICEN + * must be set prior to entering sleep/stop mode. + */ +//@{ +#define BP_ENET_ECR_STOPEN (7U) //!< Bit position for ENET_ECR_STOPEN. +#define BM_ENET_ECR_STOPEN (0x00000080U) //!< Bit mask for ENET_ECR_STOPEN. +#define BS_ENET_ECR_STOPEN (1U) //!< Bit field size in bits for ENET_ECR_STOPEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ECR_STOPEN field. +#define BR_ENET_ECR_STOPEN(x) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_STOPEN)) +#endif + +//! @brief Format value for bitfield ENET_ECR_STOPEN. +#define BF_ENET_ECR_STOPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ECR_STOPEN), uint32_t) & BM_ENET_ECR_STOPEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STOPEN field to a new value. +#define BW_ENET_ECR_STOPEN(x, v) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_STOPEN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ECR, field DBSWP[8] (RW) + * + * Swaps the byte locations of the buffer descriptors. This field must be + * written to 1 after reset. + * + * Values: + * - 0 - The buffer descriptor bytes are not swapped to support big-endian + * devices. + * - 1 - The buffer descriptor bytes are swapped to support little-endian + * devices. + */ +//@{ +#define BP_ENET_ECR_DBSWP (8U) //!< Bit position for ENET_ECR_DBSWP. +#define BM_ENET_ECR_DBSWP (0x00000100U) //!< Bit mask for ENET_ECR_DBSWP. +#define BS_ENET_ECR_DBSWP (1U) //!< Bit field size in bits for ENET_ECR_DBSWP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ECR_DBSWP field. +#define BR_ENET_ECR_DBSWP(x) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_DBSWP)) +#endif + +//! @brief Format value for bitfield ENET_ECR_DBSWP. +#define BF_ENET_ECR_DBSWP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ECR_DBSWP), uint32_t) & BM_ENET_ECR_DBSWP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DBSWP field to a new value. +#define BW_ENET_ECR_DBSWP(x, v) (BITBAND_ACCESS32(HW_ENET_ECR_ADDR(x), BP_ENET_ECR_DBSWP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_MMFR - MII Management Frame Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_MMFR - MII Management Frame Register (RW) + * + * Reset value: 0x00000000U + * + * Writing to MMFR triggers a management frame transaction to the PHY device + * unless MSCR is programmed to zero. If MSCR is changed from zero to non-zero + * during a write to MMFR, an MII frame is generated with the data previously written + * to the MMFR. This allows MMFR and MSCR to be programmed in either order if + * MSCR is currently zero. If the MMFR register is written while frame generation is + * in progress, the frame contents are altered. Software must use the EIR[MII] + * interrupt indication to avoid writing to the MMFR register while frame + * generation is in progress. + */ +typedef union _hw_enet_mmfr +{ + uint32_t U; + struct _hw_enet_mmfr_bitfields + { + uint32_t DATA : 16; //!< [15:0] Management Frame Data + uint32_t TA : 2; //!< [17:16] Turn Around + uint32_t RA : 5; //!< [22:18] Register Address + uint32_t PA : 5; //!< [27:23] PHY Address + uint32_t OP : 2; //!< [29:28] Operation Code + uint32_t ST : 2; //!< [31:30] Start Of Frame Delimiter + } B; +} hw_enet_mmfr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_MMFR register + */ +//@{ +#define HW_ENET_MMFR_ADDR(x) (REGS_ENET_BASE(x) + 0x40U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_MMFR(x) (*(__IO hw_enet_mmfr_t *) HW_ENET_MMFR_ADDR(x)) +#define HW_ENET_MMFR_RD(x) (HW_ENET_MMFR(x).U) +#define HW_ENET_MMFR_WR(x, v) (HW_ENET_MMFR(x).U = (v)) +#define HW_ENET_MMFR_SET(x, v) (HW_ENET_MMFR_WR(x, HW_ENET_MMFR_RD(x) | (v))) +#define HW_ENET_MMFR_CLR(x, v) (HW_ENET_MMFR_WR(x, HW_ENET_MMFR_RD(x) & ~(v))) +#define HW_ENET_MMFR_TOG(x, v) (HW_ENET_MMFR_WR(x, HW_ENET_MMFR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_MMFR bitfields + */ + +/*! + * @name Register ENET_MMFR, field DATA[15:0] (RW) + * + * This is the field for data to be written to or read from the PHY register. + */ +//@{ +#define BP_ENET_MMFR_DATA (0U) //!< Bit position for ENET_MMFR_DATA. +#define BM_ENET_MMFR_DATA (0x0000FFFFU) //!< Bit mask for ENET_MMFR_DATA. +#define BS_ENET_MMFR_DATA (16U) //!< Bit field size in bits for ENET_MMFR_DATA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MMFR_DATA field. +#define BR_ENET_MMFR_DATA(x) (HW_ENET_MMFR(x).B.DATA) +#endif + +//! @brief Format value for bitfield ENET_MMFR_DATA. +#define BF_ENET_MMFR_DATA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MMFR_DATA), uint32_t) & BM_ENET_MMFR_DATA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA field to a new value. +#define BW_ENET_MMFR_DATA(x, v) (HW_ENET_MMFR_WR(x, (HW_ENET_MMFR_RD(x) & ~BM_ENET_MMFR_DATA) | BF_ENET_MMFR_DATA(v))) +#endif +//@} + +/*! + * @name Register ENET_MMFR, field TA[17:16] (RW) + * + * This field must be programmed to 10 to generate a valid MII management frame. + */ +//@{ +#define BP_ENET_MMFR_TA (16U) //!< Bit position for ENET_MMFR_TA. +#define BM_ENET_MMFR_TA (0x00030000U) //!< Bit mask for ENET_MMFR_TA. +#define BS_ENET_MMFR_TA (2U) //!< Bit field size in bits for ENET_MMFR_TA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MMFR_TA field. +#define BR_ENET_MMFR_TA(x) (HW_ENET_MMFR(x).B.TA) +#endif + +//! @brief Format value for bitfield ENET_MMFR_TA. +#define BF_ENET_MMFR_TA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MMFR_TA), uint32_t) & BM_ENET_MMFR_TA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TA field to a new value. +#define BW_ENET_MMFR_TA(x, v) (HW_ENET_MMFR_WR(x, (HW_ENET_MMFR_RD(x) & ~BM_ENET_MMFR_TA) | BF_ENET_MMFR_TA(v))) +#endif +//@} + +/*! + * @name Register ENET_MMFR, field RA[22:18] (RW) + * + * Specifies one of up to 32 registers within the specified PHY device. + */ +//@{ +#define BP_ENET_MMFR_RA (18U) //!< Bit position for ENET_MMFR_RA. +#define BM_ENET_MMFR_RA (0x007C0000U) //!< Bit mask for ENET_MMFR_RA. +#define BS_ENET_MMFR_RA (5U) //!< Bit field size in bits for ENET_MMFR_RA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MMFR_RA field. +#define BR_ENET_MMFR_RA(x) (HW_ENET_MMFR(x).B.RA) +#endif + +//! @brief Format value for bitfield ENET_MMFR_RA. +#define BF_ENET_MMFR_RA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MMFR_RA), uint32_t) & BM_ENET_MMFR_RA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RA field to a new value. +#define BW_ENET_MMFR_RA(x, v) (HW_ENET_MMFR_WR(x, (HW_ENET_MMFR_RD(x) & ~BM_ENET_MMFR_RA) | BF_ENET_MMFR_RA(v))) +#endif +//@} + +/*! + * @name Register ENET_MMFR, field PA[27:23] (RW) + * + * Specifies one of up to 32 attached PHY devices. + */ +//@{ +#define BP_ENET_MMFR_PA (23U) //!< Bit position for ENET_MMFR_PA. +#define BM_ENET_MMFR_PA (0x0F800000U) //!< Bit mask for ENET_MMFR_PA. +#define BS_ENET_MMFR_PA (5U) //!< Bit field size in bits for ENET_MMFR_PA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MMFR_PA field. +#define BR_ENET_MMFR_PA(x) (HW_ENET_MMFR(x).B.PA) +#endif + +//! @brief Format value for bitfield ENET_MMFR_PA. +#define BF_ENET_MMFR_PA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MMFR_PA), uint32_t) & BM_ENET_MMFR_PA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PA field to a new value. +#define BW_ENET_MMFR_PA(x, v) (HW_ENET_MMFR_WR(x, (HW_ENET_MMFR_RD(x) & ~BM_ENET_MMFR_PA) | BF_ENET_MMFR_PA(v))) +#endif +//@} + +/*! + * @name Register ENET_MMFR, field OP[29:28] (RW) + * + * Determines the frame operation. + * + * Values: + * - 00 - Write frame operation, but not MII compliant. + * - 01 - Write frame operation for a valid MII management frame. + * - 10 - Read frame operation for a valid MII management frame. + * - 11 - Read frame operation, but not MII compliant. + */ +//@{ +#define BP_ENET_MMFR_OP (28U) //!< Bit position for ENET_MMFR_OP. +#define BM_ENET_MMFR_OP (0x30000000U) //!< Bit mask for ENET_MMFR_OP. +#define BS_ENET_MMFR_OP (2U) //!< Bit field size in bits for ENET_MMFR_OP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MMFR_OP field. +#define BR_ENET_MMFR_OP(x) (HW_ENET_MMFR(x).B.OP) +#endif + +//! @brief Format value for bitfield ENET_MMFR_OP. +#define BF_ENET_MMFR_OP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MMFR_OP), uint32_t) & BM_ENET_MMFR_OP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OP field to a new value. +#define BW_ENET_MMFR_OP(x, v) (HW_ENET_MMFR_WR(x, (HW_ENET_MMFR_RD(x) & ~BM_ENET_MMFR_OP) | BF_ENET_MMFR_OP(v))) +#endif +//@} + +/*! + * @name Register ENET_MMFR, field ST[31:30] (RW) + * + * These fields must be programmed to 01 for a valid MII management frame. + */ +//@{ +#define BP_ENET_MMFR_ST (30U) //!< Bit position for ENET_MMFR_ST. +#define BM_ENET_MMFR_ST (0xC0000000U) //!< Bit mask for ENET_MMFR_ST. +#define BS_ENET_MMFR_ST (2U) //!< Bit field size in bits for ENET_MMFR_ST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MMFR_ST field. +#define BR_ENET_MMFR_ST(x) (HW_ENET_MMFR(x).B.ST) +#endif + +//! @brief Format value for bitfield ENET_MMFR_ST. +#define BF_ENET_MMFR_ST(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MMFR_ST), uint32_t) & BM_ENET_MMFR_ST) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ST field to a new value. +#define BW_ENET_MMFR_ST(x, v) (HW_ENET_MMFR_WR(x, (HW_ENET_MMFR_RD(x) & ~BM_ENET_MMFR_ST) | BF_ENET_MMFR_ST(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_MSCR - MII Speed Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_MSCR - MII Speed Control Register (RW) + * + * Reset value: 0x00000000U + * + * MSCR provides control of the MII clock (MDC pin) frequency and allows a + * preamble drop on the MII management frame. The MII_SPEED field must be programmed + * with a value to provide an MDC frequency of less than or equal to 2.5 MHz to be + * compliant with the IEEE 802.3 MII specification. The MII_SPEED must be set to + * a non-zero value to source a read or write management frame. After the + * management frame is complete, the MSCR register may optionally be cleared to turn + * off MDC. The MDC signal generated has a 50% duty cycle except when MII_SPEED + * changes during operation. This change takes effect following a rising or falling + * edge of MDC. If the internal module clock is 25 MHz, programming this register + * to 0x0000_0004 results in an MDC as stated in the following equation: 25 MHz + * / ((4 + 1) x 2) = 2.5 MHz The following table shows the optimum values for + * MII_SPEED as a function of internal module clock frequency. Programming Examples + * for MSCR Internal MAC clock frequency MSCR [MII_SPEED] MDC frequency 25 MHz + * 0x4 2.50 MHz 33 MHz 0x6 2.36 MHz 40 MHz 0x7 2.50 MHz 50 MHz 0x9 2.50 MHz 66 MHz + * 0xD 2.36 MHz + */ +typedef union _hw_enet_mscr +{ + uint32_t U; + struct _hw_enet_mscr_bitfields + { + uint32_t RESERVED0 : 1; //!< [0] + uint32_t MII_SPEED : 6; //!< [6:1] MII Speed + uint32_t DIS_PRE : 1; //!< [7] Disable Preamble + uint32_t HOLDTIME : 3; //!< [10:8] Hold time On MDIO Output + uint32_t RESERVED1 : 21; //!< [31:11] + } B; +} hw_enet_mscr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_MSCR register + */ +//@{ +#define HW_ENET_MSCR_ADDR(x) (REGS_ENET_BASE(x) + 0x44U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_MSCR(x) (*(__IO hw_enet_mscr_t *) HW_ENET_MSCR_ADDR(x)) +#define HW_ENET_MSCR_RD(x) (HW_ENET_MSCR(x).U) +#define HW_ENET_MSCR_WR(x, v) (HW_ENET_MSCR(x).U = (v)) +#define HW_ENET_MSCR_SET(x, v) (HW_ENET_MSCR_WR(x, HW_ENET_MSCR_RD(x) | (v))) +#define HW_ENET_MSCR_CLR(x, v) (HW_ENET_MSCR_WR(x, HW_ENET_MSCR_RD(x) & ~(v))) +#define HW_ENET_MSCR_TOG(x, v) (HW_ENET_MSCR_WR(x, HW_ENET_MSCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_MSCR bitfields + */ + +/*! + * @name Register ENET_MSCR, field MII_SPEED[6:1] (RW) + * + * Controls the frequency of the MII management interface clock (MDC) relative + * to the internal module clock. A value of 0 in this field turns off MDC and + * leaves it in low voltage state. Any non-zero value results in the MDC frequency + * of: 1/((MII_SPEED + 1) x 2) of the internal module clock frequency + */ +//@{ +#define BP_ENET_MSCR_MII_SPEED (1U) //!< Bit position for ENET_MSCR_MII_SPEED. +#define BM_ENET_MSCR_MII_SPEED (0x0000007EU) //!< Bit mask for ENET_MSCR_MII_SPEED. +#define BS_ENET_MSCR_MII_SPEED (6U) //!< Bit field size in bits for ENET_MSCR_MII_SPEED. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MSCR_MII_SPEED field. +#define BR_ENET_MSCR_MII_SPEED(x) (HW_ENET_MSCR(x).B.MII_SPEED) +#endif + +//! @brief Format value for bitfield ENET_MSCR_MII_SPEED. +#define BF_ENET_MSCR_MII_SPEED(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MSCR_MII_SPEED), uint32_t) & BM_ENET_MSCR_MII_SPEED) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MII_SPEED field to a new value. +#define BW_ENET_MSCR_MII_SPEED(x, v) (HW_ENET_MSCR_WR(x, (HW_ENET_MSCR_RD(x) & ~BM_ENET_MSCR_MII_SPEED) | BF_ENET_MSCR_MII_SPEED(v))) +#endif +//@} + +/*! + * @name Register ENET_MSCR, field DIS_PRE[7] (RW) + * + * Enables/disables prepending a preamble to the MII management frame. The MII + * standard allows the preamble to be dropped if the attached PHY devices do not + * require it. + * + * Values: + * - 0 - Preamble enabled. + * - 1 - Preamble (32 ones) is not prepended to the MII management frame. + */ +//@{ +#define BP_ENET_MSCR_DIS_PRE (7U) //!< Bit position for ENET_MSCR_DIS_PRE. +#define BM_ENET_MSCR_DIS_PRE (0x00000080U) //!< Bit mask for ENET_MSCR_DIS_PRE. +#define BS_ENET_MSCR_DIS_PRE (1U) //!< Bit field size in bits for ENET_MSCR_DIS_PRE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MSCR_DIS_PRE field. +#define BR_ENET_MSCR_DIS_PRE(x) (BITBAND_ACCESS32(HW_ENET_MSCR_ADDR(x), BP_ENET_MSCR_DIS_PRE)) +#endif + +//! @brief Format value for bitfield ENET_MSCR_DIS_PRE. +#define BF_ENET_MSCR_DIS_PRE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MSCR_DIS_PRE), uint32_t) & BM_ENET_MSCR_DIS_PRE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DIS_PRE field to a new value. +#define BW_ENET_MSCR_DIS_PRE(x, v) (BITBAND_ACCESS32(HW_ENET_MSCR_ADDR(x), BP_ENET_MSCR_DIS_PRE) = (v)) +#endif +//@} + +/*! + * @name Register ENET_MSCR, field HOLDTIME[10:8] (RW) + * + * IEEE802.3 clause 22 defines a minimum of 10 ns for the hold time on the MDIO + * output. Depending on the host bus frequency, the setting may need to be + * increased. + * + * Values: + * - 000 - 1 internal module clock cycle + * - 001 - 2 internal module clock cycles + * - 010 - 3 internal module clock cycles + * - 111 - 8 internal module clock cycles + */ +//@{ +#define BP_ENET_MSCR_HOLDTIME (8U) //!< Bit position for ENET_MSCR_HOLDTIME. +#define BM_ENET_MSCR_HOLDTIME (0x00000700U) //!< Bit mask for ENET_MSCR_HOLDTIME. +#define BS_ENET_MSCR_HOLDTIME (3U) //!< Bit field size in bits for ENET_MSCR_HOLDTIME. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MSCR_HOLDTIME field. +#define BR_ENET_MSCR_HOLDTIME(x) (HW_ENET_MSCR(x).B.HOLDTIME) +#endif + +//! @brief Format value for bitfield ENET_MSCR_HOLDTIME. +#define BF_ENET_MSCR_HOLDTIME(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MSCR_HOLDTIME), uint32_t) & BM_ENET_MSCR_HOLDTIME) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HOLDTIME field to a new value. +#define BW_ENET_MSCR_HOLDTIME(x, v) (HW_ENET_MSCR_WR(x, (HW_ENET_MSCR_RD(x) & ~BM_ENET_MSCR_HOLDTIME) | BF_ENET_MSCR_HOLDTIME(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_MIBC - MIB Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_MIBC - MIB Control Register (RW) + * + * Reset value: 0xC0000000U + * + * MIBC is a read/write register controlling and observing the state of the MIB + * block. Access this register to disable the MIB block operation or clear the + * MIB counters. The MIB_DIS field resets to 1. + */ +typedef union _hw_enet_mibc +{ + uint32_t U; + struct _hw_enet_mibc_bitfields + { + uint32_t RESERVED0 : 29; //!< [28:0] + uint32_t MIB_CLEAR : 1; //!< [29] MIB Clear + uint32_t MIB_IDLE : 1; //!< [30] MIB Idle + uint32_t MIB_DIS : 1; //!< [31] Disable MIB Logic + } B; +} hw_enet_mibc_t; +#endif + +/*! + * @name Constants and macros for entire ENET_MIBC register + */ +//@{ +#define HW_ENET_MIBC_ADDR(x) (REGS_ENET_BASE(x) + 0x64U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_MIBC(x) (*(__IO hw_enet_mibc_t *) HW_ENET_MIBC_ADDR(x)) +#define HW_ENET_MIBC_RD(x) (HW_ENET_MIBC(x).U) +#define HW_ENET_MIBC_WR(x, v) (HW_ENET_MIBC(x).U = (v)) +#define HW_ENET_MIBC_SET(x, v) (HW_ENET_MIBC_WR(x, HW_ENET_MIBC_RD(x) | (v))) +#define HW_ENET_MIBC_CLR(x, v) (HW_ENET_MIBC_WR(x, HW_ENET_MIBC_RD(x) & ~(v))) +#define HW_ENET_MIBC_TOG(x, v) (HW_ENET_MIBC_WR(x, HW_ENET_MIBC_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_MIBC bitfields + */ + +/*! + * @name Register ENET_MIBC, field MIB_CLEAR[29] (RW) + * + * If set, all statistics counters are reset to 0. This field is not + * self-clearing. To clear the MIB counters set and then clear the field. + */ +//@{ +#define BP_ENET_MIBC_MIB_CLEAR (29U) //!< Bit position for ENET_MIBC_MIB_CLEAR. +#define BM_ENET_MIBC_MIB_CLEAR (0x20000000U) //!< Bit mask for ENET_MIBC_MIB_CLEAR. +#define BS_ENET_MIBC_MIB_CLEAR (1U) //!< Bit field size in bits for ENET_MIBC_MIB_CLEAR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MIBC_MIB_CLEAR field. +#define BR_ENET_MIBC_MIB_CLEAR(x) (BITBAND_ACCESS32(HW_ENET_MIBC_ADDR(x), BP_ENET_MIBC_MIB_CLEAR)) +#endif + +//! @brief Format value for bitfield ENET_MIBC_MIB_CLEAR. +#define BF_ENET_MIBC_MIB_CLEAR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MIBC_MIB_CLEAR), uint32_t) & BM_ENET_MIBC_MIB_CLEAR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MIB_CLEAR field to a new value. +#define BW_ENET_MIBC_MIB_CLEAR(x, v) (BITBAND_ACCESS32(HW_ENET_MIBC_ADDR(x), BP_ENET_MIBC_MIB_CLEAR) = (v)) +#endif +//@} + +/*! + * @name Register ENET_MIBC, field MIB_IDLE[30] (RO) + * + * If this status field is set, the MIB block is not currently updating any MIB + * counters. + */ +//@{ +#define BP_ENET_MIBC_MIB_IDLE (30U) //!< Bit position for ENET_MIBC_MIB_IDLE. +#define BM_ENET_MIBC_MIB_IDLE (0x40000000U) //!< Bit mask for ENET_MIBC_MIB_IDLE. +#define BS_ENET_MIBC_MIB_IDLE (1U) //!< Bit field size in bits for ENET_MIBC_MIB_IDLE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MIBC_MIB_IDLE field. +#define BR_ENET_MIBC_MIB_IDLE(x) (BITBAND_ACCESS32(HW_ENET_MIBC_ADDR(x), BP_ENET_MIBC_MIB_IDLE)) +#endif +//@} + +/*! + * @name Register ENET_MIBC, field MIB_DIS[31] (RW) + * + * If this control field is set, the MIB logic halts and does not update any MIB + * counters. + */ +//@{ +#define BP_ENET_MIBC_MIB_DIS (31U) //!< Bit position for ENET_MIBC_MIB_DIS. +#define BM_ENET_MIBC_MIB_DIS (0x80000000U) //!< Bit mask for ENET_MIBC_MIB_DIS. +#define BS_ENET_MIBC_MIB_DIS (1U) //!< Bit field size in bits for ENET_MIBC_MIB_DIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MIBC_MIB_DIS field. +#define BR_ENET_MIBC_MIB_DIS(x) (BITBAND_ACCESS32(HW_ENET_MIBC_ADDR(x), BP_ENET_MIBC_MIB_DIS)) +#endif + +//! @brief Format value for bitfield ENET_MIBC_MIB_DIS. +#define BF_ENET_MIBC_MIB_DIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MIBC_MIB_DIS), uint32_t) & BM_ENET_MIBC_MIB_DIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MIB_DIS field to a new value. +#define BW_ENET_MIBC_MIB_DIS(x, v) (BITBAND_ACCESS32(HW_ENET_MIBC_ADDR(x), BP_ENET_MIBC_MIB_DIS) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RCR - Receive Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RCR - Receive Control Register (RW) + * + * Reset value: 0x05EE0001U + */ +typedef union _hw_enet_rcr +{ + uint32_t U; + struct _hw_enet_rcr_bitfields + { + uint32_t LOOP : 1; //!< [0] Internal Loopback + uint32_t DRT : 1; //!< [1] Disable Receive On Transmit + uint32_t MII_MODE : 1; //!< [2] Media Independent Interface Mode + uint32_t PROM : 1; //!< [3] Promiscuous Mode + uint32_t BC_REJ : 1; //!< [4] Broadcast Frame Reject + uint32_t FCE : 1; //!< [5] Flow Control Enable + uint32_t RESERVED0 : 2; //!< [7:6] + uint32_t RMII_MODE : 1; //!< [8] RMII Mode Enable + uint32_t RMII_10T : 1; //!< [9] + uint32_t RESERVED1 : 2; //!< [11:10] + uint32_t PADEN : 1; //!< [12] Enable Frame Padding Remove On Receive + uint32_t PAUFWD : 1; //!< [13] Terminate/Forward Pause Frames + uint32_t CRCFWD : 1; //!< [14] Terminate/Forward Received CRC + uint32_t CFEN : 1; //!< [15] MAC Control Frame Enable + uint32_t MAX_FL : 14; //!< [29:16] Maximum Frame Length + uint32_t NLC : 1; //!< [30] Payload Length Check Disable + uint32_t GRS : 1; //!< [31] Graceful Receive Stopped + } B; +} hw_enet_rcr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RCR register + */ +//@{ +#define HW_ENET_RCR_ADDR(x) (REGS_ENET_BASE(x) + 0x84U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RCR(x) (*(__IO hw_enet_rcr_t *) HW_ENET_RCR_ADDR(x)) +#define HW_ENET_RCR_RD(x) (HW_ENET_RCR(x).U) +#define HW_ENET_RCR_WR(x, v) (HW_ENET_RCR(x).U = (v)) +#define HW_ENET_RCR_SET(x, v) (HW_ENET_RCR_WR(x, HW_ENET_RCR_RD(x) | (v))) +#define HW_ENET_RCR_CLR(x, v) (HW_ENET_RCR_WR(x, HW_ENET_RCR_RD(x) & ~(v))) +#define HW_ENET_RCR_TOG(x, v) (HW_ENET_RCR_WR(x, HW_ENET_RCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_RCR bitfields + */ + +/*! + * @name Register ENET_RCR, field LOOP[0] (RW) + * + * This is an MII internal loopback, therefore MII_MODE must be written to 1 and + * RMII_MODE must be written to 0. + * + * Values: + * - 0 - Loopback disabled. + * - 1 - Transmitted frames are looped back internal to the device and transmit + * MII output signals are not asserted. DRT must be cleared. + */ +//@{ +#define BP_ENET_RCR_LOOP (0U) //!< Bit position for ENET_RCR_LOOP. +#define BM_ENET_RCR_LOOP (0x00000001U) //!< Bit mask for ENET_RCR_LOOP. +#define BS_ENET_RCR_LOOP (1U) //!< Bit field size in bits for ENET_RCR_LOOP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_LOOP field. +#define BR_ENET_RCR_LOOP(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_LOOP)) +#endif + +//! @brief Format value for bitfield ENET_RCR_LOOP. +#define BF_ENET_RCR_LOOP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_LOOP), uint32_t) & BM_ENET_RCR_LOOP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOOP field to a new value. +#define BW_ENET_RCR_LOOP(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_LOOP) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field DRT[1] (RW) + * + * Values: + * - 0 - Receive path operates independently of transmit. Used for full-duplex + * or to monitor transmit activity in half-duplex mode. + * - 1 - Disable reception of frames while transmitting. Normally used for + * half-duplex mode. + */ +//@{ +#define BP_ENET_RCR_DRT (1U) //!< Bit position for ENET_RCR_DRT. +#define BM_ENET_RCR_DRT (0x00000002U) //!< Bit mask for ENET_RCR_DRT. +#define BS_ENET_RCR_DRT (1U) //!< Bit field size in bits for ENET_RCR_DRT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_DRT field. +#define BR_ENET_RCR_DRT(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_DRT)) +#endif + +//! @brief Format value for bitfield ENET_RCR_DRT. +#define BF_ENET_RCR_DRT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_DRT), uint32_t) & BM_ENET_RCR_DRT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DRT field to a new value. +#define BW_ENET_RCR_DRT(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_DRT) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field MII_MODE[2] (RW) + * + * This field must always be set. + * + * Values: + * - 0 - Reserved. + * - 1 - MII or RMII mode, as indicated by the RMII_MODE field. + */ +//@{ +#define BP_ENET_RCR_MII_MODE (2U) //!< Bit position for ENET_RCR_MII_MODE. +#define BM_ENET_RCR_MII_MODE (0x00000004U) //!< Bit mask for ENET_RCR_MII_MODE. +#define BS_ENET_RCR_MII_MODE (1U) //!< Bit field size in bits for ENET_RCR_MII_MODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_MII_MODE field. +#define BR_ENET_RCR_MII_MODE(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_MII_MODE)) +#endif + +//! @brief Format value for bitfield ENET_RCR_MII_MODE. +#define BF_ENET_RCR_MII_MODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_MII_MODE), uint32_t) & BM_ENET_RCR_MII_MODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MII_MODE field to a new value. +#define BW_ENET_RCR_MII_MODE(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_MII_MODE) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field PROM[3] (RW) + * + * All frames are accepted regardless of address matching. + * + * Values: + * - 0 - Disabled. + * - 1 - Enabled. + */ +//@{ +#define BP_ENET_RCR_PROM (3U) //!< Bit position for ENET_RCR_PROM. +#define BM_ENET_RCR_PROM (0x00000008U) //!< Bit mask for ENET_RCR_PROM. +#define BS_ENET_RCR_PROM (1U) //!< Bit field size in bits for ENET_RCR_PROM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_PROM field. +#define BR_ENET_RCR_PROM(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_PROM)) +#endif + +//! @brief Format value for bitfield ENET_RCR_PROM. +#define BF_ENET_RCR_PROM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_PROM), uint32_t) & BM_ENET_RCR_PROM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PROM field to a new value. +#define BW_ENET_RCR_PROM(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_PROM) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field BC_REJ[4] (RW) + * + * If set, frames with destination address (DA) equal to 0xFFFF_FFFF_FFFF are + * rejected unless the PROM field is set. If BC_REJ and PROM are set, frames with + * broadcast DA are accepted and the MISS (M) is set in the receive buffer + * descriptor. + */ +//@{ +#define BP_ENET_RCR_BC_REJ (4U) //!< Bit position for ENET_RCR_BC_REJ. +#define BM_ENET_RCR_BC_REJ (0x00000010U) //!< Bit mask for ENET_RCR_BC_REJ. +#define BS_ENET_RCR_BC_REJ (1U) //!< Bit field size in bits for ENET_RCR_BC_REJ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_BC_REJ field. +#define BR_ENET_RCR_BC_REJ(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_BC_REJ)) +#endif + +//! @brief Format value for bitfield ENET_RCR_BC_REJ. +#define BF_ENET_RCR_BC_REJ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_BC_REJ), uint32_t) & BM_ENET_RCR_BC_REJ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BC_REJ field to a new value. +#define BW_ENET_RCR_BC_REJ(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_BC_REJ) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field FCE[5] (RW) + * + * If set, the receiver detects PAUSE frames. Upon PAUSE frame detection, the + * transmitter stops transmitting data frames for a given duration. + */ +//@{ +#define BP_ENET_RCR_FCE (5U) //!< Bit position for ENET_RCR_FCE. +#define BM_ENET_RCR_FCE (0x00000020U) //!< Bit mask for ENET_RCR_FCE. +#define BS_ENET_RCR_FCE (1U) //!< Bit field size in bits for ENET_RCR_FCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_FCE field. +#define BR_ENET_RCR_FCE(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_FCE)) +#endif + +//! @brief Format value for bitfield ENET_RCR_FCE. +#define BF_ENET_RCR_FCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_FCE), uint32_t) & BM_ENET_RCR_FCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FCE field to a new value. +#define BW_ENET_RCR_FCE(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_FCE) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field RMII_MODE[8] (RW) + * + * Specifies whether the MAC is configured for MII mode or RMII operation . + * + * Values: + * - 0 - MAC configured for MII mode. + * - 1 - MAC configured for RMII operation. + */ +//@{ +#define BP_ENET_RCR_RMII_MODE (8U) //!< Bit position for ENET_RCR_RMII_MODE. +#define BM_ENET_RCR_RMII_MODE (0x00000100U) //!< Bit mask for ENET_RCR_RMII_MODE. +#define BS_ENET_RCR_RMII_MODE (1U) //!< Bit field size in bits for ENET_RCR_RMII_MODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_RMII_MODE field. +#define BR_ENET_RCR_RMII_MODE(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_RMII_MODE)) +#endif + +//! @brief Format value for bitfield ENET_RCR_RMII_MODE. +#define BF_ENET_RCR_RMII_MODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_RMII_MODE), uint32_t) & BM_ENET_RCR_RMII_MODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RMII_MODE field to a new value. +#define BW_ENET_RCR_RMII_MODE(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_RMII_MODE) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field RMII_10T[9] (RW) + * + * Enables 10-Mbps mode of the RMII . + * + * Values: + * - 0 - 100 Mbps operation. + * - 1 - 10 Mbps operation. + */ +//@{ +#define BP_ENET_RCR_RMII_10T (9U) //!< Bit position for ENET_RCR_RMII_10T. +#define BM_ENET_RCR_RMII_10T (0x00000200U) //!< Bit mask for ENET_RCR_RMII_10T. +#define BS_ENET_RCR_RMII_10T (1U) //!< Bit field size in bits for ENET_RCR_RMII_10T. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_RMII_10T field. +#define BR_ENET_RCR_RMII_10T(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_RMII_10T)) +#endif + +//! @brief Format value for bitfield ENET_RCR_RMII_10T. +#define BF_ENET_RCR_RMII_10T(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_RMII_10T), uint32_t) & BM_ENET_RCR_RMII_10T) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RMII_10T field to a new value. +#define BW_ENET_RCR_RMII_10T(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_RMII_10T) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field PADEN[12] (RW) + * + * Specifies whether the MAC removes padding from received frames. + * + * Values: + * - 0 - No padding is removed on receive by the MAC. + * - 1 - Padding is removed from received frames. + */ +//@{ +#define BP_ENET_RCR_PADEN (12U) //!< Bit position for ENET_RCR_PADEN. +#define BM_ENET_RCR_PADEN (0x00001000U) //!< Bit mask for ENET_RCR_PADEN. +#define BS_ENET_RCR_PADEN (1U) //!< Bit field size in bits for ENET_RCR_PADEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_PADEN field. +#define BR_ENET_RCR_PADEN(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_PADEN)) +#endif + +//! @brief Format value for bitfield ENET_RCR_PADEN. +#define BF_ENET_RCR_PADEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_PADEN), uint32_t) & BM_ENET_RCR_PADEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PADEN field to a new value. +#define BW_ENET_RCR_PADEN(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_PADEN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field PAUFWD[13] (RW) + * + * Specifies whether pause frames are terminated or forwarded. + * + * Values: + * - 0 - Pause frames are terminated and discarded in the MAC. + * - 1 - Pause frames are forwarded to the user application. + */ +//@{ +#define BP_ENET_RCR_PAUFWD (13U) //!< Bit position for ENET_RCR_PAUFWD. +#define BM_ENET_RCR_PAUFWD (0x00002000U) //!< Bit mask for ENET_RCR_PAUFWD. +#define BS_ENET_RCR_PAUFWD (1U) //!< Bit field size in bits for ENET_RCR_PAUFWD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_PAUFWD field. +#define BR_ENET_RCR_PAUFWD(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_PAUFWD)) +#endif + +//! @brief Format value for bitfield ENET_RCR_PAUFWD. +#define BF_ENET_RCR_PAUFWD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_PAUFWD), uint32_t) & BM_ENET_RCR_PAUFWD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PAUFWD field to a new value. +#define BW_ENET_RCR_PAUFWD(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_PAUFWD) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field CRCFWD[14] (RW) + * + * Specifies whether the CRC field of received frames is transmitted or + * stripped. If padding function is enabled (PADEN = 1), CRCFWD is ignored and the CRC + * field is checked and always terminated and removed. + * + * Values: + * - 0 - The CRC field of received frames is transmitted to the user application. + * - 1 - The CRC field is stripped from the frame. + */ +//@{ +#define BP_ENET_RCR_CRCFWD (14U) //!< Bit position for ENET_RCR_CRCFWD. +#define BM_ENET_RCR_CRCFWD (0x00004000U) //!< Bit mask for ENET_RCR_CRCFWD. +#define BS_ENET_RCR_CRCFWD (1U) //!< Bit field size in bits for ENET_RCR_CRCFWD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_CRCFWD field. +#define BR_ENET_RCR_CRCFWD(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_CRCFWD)) +#endif + +//! @brief Format value for bitfield ENET_RCR_CRCFWD. +#define BF_ENET_RCR_CRCFWD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_CRCFWD), uint32_t) & BM_ENET_RCR_CRCFWD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRCFWD field to a new value. +#define BW_ENET_RCR_CRCFWD(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_CRCFWD) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field CFEN[15] (RW) + * + * Enables/disables the MAC control frame. + * + * Values: + * - 0 - MAC control frames with any opcode other than 0x0001 (pause frame) are + * accepted and forwarded to the client interface. + * - 1 - MAC control frames with any opcode other than 0x0001 (pause frame) are + * silently discarded. + */ +//@{ +#define BP_ENET_RCR_CFEN (15U) //!< Bit position for ENET_RCR_CFEN. +#define BM_ENET_RCR_CFEN (0x00008000U) //!< Bit mask for ENET_RCR_CFEN. +#define BS_ENET_RCR_CFEN (1U) //!< Bit field size in bits for ENET_RCR_CFEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_CFEN field. +#define BR_ENET_RCR_CFEN(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_CFEN)) +#endif + +//! @brief Format value for bitfield ENET_RCR_CFEN. +#define BF_ENET_RCR_CFEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_CFEN), uint32_t) & BM_ENET_RCR_CFEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CFEN field to a new value. +#define BW_ENET_RCR_CFEN(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_CFEN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field MAX_FL[29:16] (RW) + * + * Resets to decimal 1518. Length is measured starting at DA and includes the + * CRC at the end of the frame. Transmit frames longer than MAX_FL cause the BABT + * interrupt to occur. Receive frames longer than MAX_FL cause the BABR interrupt + * to occur and set the LG field in the end of frame receive buffer descriptor. + * The recommended default value to be programmed is 1518 or 1522 if VLAN tags are + * supported. + */ +//@{ +#define BP_ENET_RCR_MAX_FL (16U) //!< Bit position for ENET_RCR_MAX_FL. +#define BM_ENET_RCR_MAX_FL (0x3FFF0000U) //!< Bit mask for ENET_RCR_MAX_FL. +#define BS_ENET_RCR_MAX_FL (14U) //!< Bit field size in bits for ENET_RCR_MAX_FL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_MAX_FL field. +#define BR_ENET_RCR_MAX_FL(x) (HW_ENET_RCR(x).B.MAX_FL) +#endif + +//! @brief Format value for bitfield ENET_RCR_MAX_FL. +#define BF_ENET_RCR_MAX_FL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_MAX_FL), uint32_t) & BM_ENET_RCR_MAX_FL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MAX_FL field to a new value. +#define BW_ENET_RCR_MAX_FL(x, v) (HW_ENET_RCR_WR(x, (HW_ENET_RCR_RD(x) & ~BM_ENET_RCR_MAX_FL) | BF_ENET_RCR_MAX_FL(v))) +#endif +//@} + +/*! + * @name Register ENET_RCR, field NLC[30] (RW) + * + * Enables/disables a payload length check. + * + * Values: + * - 0 - The payload length check is disabled. + * - 1 - The core checks the frame's payload length with the frame length/type + * field. Errors are indicated in the EIR[PLC] field. + */ +//@{ +#define BP_ENET_RCR_NLC (30U) //!< Bit position for ENET_RCR_NLC. +#define BM_ENET_RCR_NLC (0x40000000U) //!< Bit mask for ENET_RCR_NLC. +#define BS_ENET_RCR_NLC (1U) //!< Bit field size in bits for ENET_RCR_NLC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_NLC field. +#define BR_ENET_RCR_NLC(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_NLC)) +#endif + +//! @brief Format value for bitfield ENET_RCR_NLC. +#define BF_ENET_RCR_NLC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RCR_NLC), uint32_t) & BM_ENET_RCR_NLC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NLC field to a new value. +#define BW_ENET_RCR_NLC(x, v) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_NLC) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RCR, field GRS[31] (RO) + * + * Read-only status indicating that the MAC receive datapath is stopped. + */ +//@{ +#define BP_ENET_RCR_GRS (31U) //!< Bit position for ENET_RCR_GRS. +#define BM_ENET_RCR_GRS (0x80000000U) //!< Bit mask for ENET_RCR_GRS. +#define BS_ENET_RCR_GRS (1U) //!< Bit field size in bits for ENET_RCR_GRS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RCR_GRS field. +#define BR_ENET_RCR_GRS(x) (BITBAND_ACCESS32(HW_ENET_RCR_ADDR(x), BP_ENET_RCR_GRS)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TCR - Transmit Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TCR - Transmit Control Register (RW) + * + * Reset value: 0x00000000U + * + * TCR is read/write and configures the transmit block. This register is cleared + * at system reset. FDEN can only be modified when ECR[ETHEREN] is cleared. + */ +typedef union _hw_enet_tcr +{ + uint32_t U; + struct _hw_enet_tcr_bitfields + { + uint32_t GTS : 1; //!< [0] Graceful Transmit Stop + uint32_t RESERVED0 : 1; //!< [1] + uint32_t FDEN : 1; //!< [2] Full-Duplex Enable + uint32_t TFC_PAUSE : 1; //!< [3] Transmit Frame Control Pause + uint32_t RFC_PAUSE : 1; //!< [4] Receive Frame Control Pause + uint32_t ADDSEL : 3; //!< [7:5] Source MAC Address Select On Transmit + uint32_t ADDINS : 1; //!< [8] Set MAC Address On Transmit + uint32_t CRCFWD : 1; //!< [9] Forward Frame From Application With CRC + uint32_t RESERVED1 : 22; //!< [31:10] + } B; +} hw_enet_tcr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TCR register + */ +//@{ +#define HW_ENET_TCR_ADDR(x) (REGS_ENET_BASE(x) + 0xC4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TCR(x) (*(__IO hw_enet_tcr_t *) HW_ENET_TCR_ADDR(x)) +#define HW_ENET_TCR_RD(x) (HW_ENET_TCR(x).U) +#define HW_ENET_TCR_WR(x, v) (HW_ENET_TCR(x).U = (v)) +#define HW_ENET_TCR_SET(x, v) (HW_ENET_TCR_WR(x, HW_ENET_TCR_RD(x) | (v))) +#define HW_ENET_TCR_CLR(x, v) (HW_ENET_TCR_WR(x, HW_ENET_TCR_RD(x) & ~(v))) +#define HW_ENET_TCR_TOG(x, v) (HW_ENET_TCR_WR(x, HW_ENET_TCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TCR bitfields + */ + +/*! + * @name Register ENET_TCR, field GTS[0] (RW) + * + * When this field is set, MAC stops transmission after any frame currently + * transmitted is complete and EIR[GRA] is set. If frame transmission is not + * currently underway, the GRA interrupt is asserted immediately. After transmission + * finishes, clear GTS to restart. The next frame in the transmit FIFO is then + * transmitted. If an early collision occurs during transmission when GTS is set, + * transmission stops after the collision. The frame is transmitted again after GTS is + * cleared. There may be old frames in the transmit FIFO that transmit when GTS + * is reasserted. To avoid this, clear ECR[ETHEREN] following the GRA interrupt. + */ +//@{ +#define BP_ENET_TCR_GTS (0U) //!< Bit position for ENET_TCR_GTS. +#define BM_ENET_TCR_GTS (0x00000001U) //!< Bit mask for ENET_TCR_GTS. +#define BS_ENET_TCR_GTS (1U) //!< Bit field size in bits for ENET_TCR_GTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCR_GTS field. +#define BR_ENET_TCR_GTS(x) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_GTS)) +#endif + +//! @brief Format value for bitfield ENET_TCR_GTS. +#define BF_ENET_TCR_GTS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCR_GTS), uint32_t) & BM_ENET_TCR_GTS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GTS field to a new value. +#define BW_ENET_TCR_GTS(x, v) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_GTS) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TCR, field FDEN[2] (RW) + * + * If this field is set, frames transmit independent of carrier sense and + * collision inputs. Only modify this bit when ECR[ETHEREN] is cleared. + */ +//@{ +#define BP_ENET_TCR_FDEN (2U) //!< Bit position for ENET_TCR_FDEN. +#define BM_ENET_TCR_FDEN (0x00000004U) //!< Bit mask for ENET_TCR_FDEN. +#define BS_ENET_TCR_FDEN (1U) //!< Bit field size in bits for ENET_TCR_FDEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCR_FDEN field. +#define BR_ENET_TCR_FDEN(x) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_FDEN)) +#endif + +//! @brief Format value for bitfield ENET_TCR_FDEN. +#define BF_ENET_TCR_FDEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCR_FDEN), uint32_t) & BM_ENET_TCR_FDEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FDEN field to a new value. +#define BW_ENET_TCR_FDEN(x, v) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_FDEN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TCR, field TFC_PAUSE[3] (RW) + * + * Pauses frame transmission. When this field is set, EIR[GRA] is set. With + * transmission of data frames stopped, the MAC transmits a MAC control PAUSE frame. + * Next, the MAC clears TFC_PAUSE and resumes transmitting data frames. If the + * transmitter pauses due to user assertion of GTS or reception of a PAUSE frame, + * the MAC may continue transmitting a MAC control PAUSE frame. + * + * Values: + * - 0 - No PAUSE frame transmitted. + * - 1 - The MAC stops transmission of data frames after the current + * transmission is complete. + */ +//@{ +#define BP_ENET_TCR_TFC_PAUSE (3U) //!< Bit position for ENET_TCR_TFC_PAUSE. +#define BM_ENET_TCR_TFC_PAUSE (0x00000008U) //!< Bit mask for ENET_TCR_TFC_PAUSE. +#define BS_ENET_TCR_TFC_PAUSE (1U) //!< Bit field size in bits for ENET_TCR_TFC_PAUSE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCR_TFC_PAUSE field. +#define BR_ENET_TCR_TFC_PAUSE(x) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_TFC_PAUSE)) +#endif + +//! @brief Format value for bitfield ENET_TCR_TFC_PAUSE. +#define BF_ENET_TCR_TFC_PAUSE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCR_TFC_PAUSE), uint32_t) & BM_ENET_TCR_TFC_PAUSE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TFC_PAUSE field to a new value. +#define BW_ENET_TCR_TFC_PAUSE(x, v) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_TFC_PAUSE) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TCR, field RFC_PAUSE[4] (RO) + * + * This status field is set when a full-duplex flow control pause frame is + * received and the transmitter pauses for the duration defined in this pause frame. + * This field automatically clears when the pause duration is complete. + */ +//@{ +#define BP_ENET_TCR_RFC_PAUSE (4U) //!< Bit position for ENET_TCR_RFC_PAUSE. +#define BM_ENET_TCR_RFC_PAUSE (0x00000010U) //!< Bit mask for ENET_TCR_RFC_PAUSE. +#define BS_ENET_TCR_RFC_PAUSE (1U) //!< Bit field size in bits for ENET_TCR_RFC_PAUSE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCR_RFC_PAUSE field. +#define BR_ENET_TCR_RFC_PAUSE(x) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_RFC_PAUSE)) +#endif +//@} + +/*! + * @name Register ENET_TCR, field ADDSEL[7:5] (RW) + * + * If ADDINS is set, indicates the MAC address that overwrites the source MAC + * address. + * + * Values: + * - 000 - Node MAC address programmed on PADDR1/2 registers. + * - 100 - Reserved. + * - 101 - Reserved. + * - 110 - Reserved. + */ +//@{ +#define BP_ENET_TCR_ADDSEL (5U) //!< Bit position for ENET_TCR_ADDSEL. +#define BM_ENET_TCR_ADDSEL (0x000000E0U) //!< Bit mask for ENET_TCR_ADDSEL. +#define BS_ENET_TCR_ADDSEL (3U) //!< Bit field size in bits for ENET_TCR_ADDSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCR_ADDSEL field. +#define BR_ENET_TCR_ADDSEL(x) (HW_ENET_TCR(x).B.ADDSEL) +#endif + +//! @brief Format value for bitfield ENET_TCR_ADDSEL. +#define BF_ENET_TCR_ADDSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCR_ADDSEL), uint32_t) & BM_ENET_TCR_ADDSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADDSEL field to a new value. +#define BW_ENET_TCR_ADDSEL(x, v) (HW_ENET_TCR_WR(x, (HW_ENET_TCR_RD(x) & ~BM_ENET_TCR_ADDSEL) | BF_ENET_TCR_ADDSEL(v))) +#endif +//@} + +/*! + * @name Register ENET_TCR, field ADDINS[8] (RW) + * + * Values: + * - 0 - The source MAC address is not modified by the MAC. + * - 1 - The MAC overwrites the source MAC address with the programmed MAC + * address according to ADDSEL. + */ +//@{ +#define BP_ENET_TCR_ADDINS (8U) //!< Bit position for ENET_TCR_ADDINS. +#define BM_ENET_TCR_ADDINS (0x00000100U) //!< Bit mask for ENET_TCR_ADDINS. +#define BS_ENET_TCR_ADDINS (1U) //!< Bit field size in bits for ENET_TCR_ADDINS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCR_ADDINS field. +#define BR_ENET_TCR_ADDINS(x) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_ADDINS)) +#endif + +//! @brief Format value for bitfield ENET_TCR_ADDINS. +#define BF_ENET_TCR_ADDINS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCR_ADDINS), uint32_t) & BM_ENET_TCR_ADDINS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADDINS field to a new value. +#define BW_ENET_TCR_ADDINS(x, v) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_ADDINS) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TCR, field CRCFWD[9] (RW) + * + * Values: + * - 0 - TxBD[TC] controls whether the frame has a CRC from the application. + * - 1 - The transmitter does not append any CRC to transmitted frames, as it is + * expecting a frame with CRC from the application. + */ +//@{ +#define BP_ENET_TCR_CRCFWD (9U) //!< Bit position for ENET_TCR_CRCFWD. +#define BM_ENET_TCR_CRCFWD (0x00000200U) //!< Bit mask for ENET_TCR_CRCFWD. +#define BS_ENET_TCR_CRCFWD (1U) //!< Bit field size in bits for ENET_TCR_CRCFWD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCR_CRCFWD field. +#define BR_ENET_TCR_CRCFWD(x) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_CRCFWD)) +#endif + +//! @brief Format value for bitfield ENET_TCR_CRCFWD. +#define BF_ENET_TCR_CRCFWD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCR_CRCFWD), uint32_t) & BM_ENET_TCR_CRCFWD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRCFWD field to a new value. +#define BW_ENET_TCR_CRCFWD(x, v) (BITBAND_ACCESS32(HW_ENET_TCR_ADDR(x), BP_ENET_TCR_CRCFWD) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_PALR - Physical Address Lower Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_PALR - Physical Address Lower Register (RW) + * + * Reset value: 0x00000000U + * + * PALR contains the lower 32 bits (bytes 0, 1, 2, 3) of the 48-bit address used + * in the address recognition process to compare with the destination address + * (DA) field of receive frames with an individual DA. In addition, this register + * is used in bytes 0 through 3 of the six-byte source address field when + * transmitting PAUSE frames. This register is not reset and you must initialize it. + */ +typedef union _hw_enet_palr +{ + uint32_t U; + struct _hw_enet_palr_bitfields + { + uint32_t PADDR1 : 32; //!< [31:0] Pause Address + } B; +} hw_enet_palr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_PALR register + */ +//@{ +#define HW_ENET_PALR_ADDR(x) (REGS_ENET_BASE(x) + 0xE4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_PALR(x) (*(__IO hw_enet_palr_t *) HW_ENET_PALR_ADDR(x)) +#define HW_ENET_PALR_RD(x) (HW_ENET_PALR(x).U) +#define HW_ENET_PALR_WR(x, v) (HW_ENET_PALR(x).U = (v)) +#define HW_ENET_PALR_SET(x, v) (HW_ENET_PALR_WR(x, HW_ENET_PALR_RD(x) | (v))) +#define HW_ENET_PALR_CLR(x, v) (HW_ENET_PALR_WR(x, HW_ENET_PALR_RD(x) & ~(v))) +#define HW_ENET_PALR_TOG(x, v) (HW_ENET_PALR_WR(x, HW_ENET_PALR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_PALR bitfields + */ + +/*! + * @name Register ENET_PALR, field PADDR1[31:0] (RW) + * + * Bytes 0 (bits 31:24), 1 (bits 23:16), 2 (bits 15:8), and 3 (bits 7:0) of the + * 6-byte individual address are used for exact match and the source address + * field in PAUSE frames. + */ +//@{ +#define BP_ENET_PALR_PADDR1 (0U) //!< Bit position for ENET_PALR_PADDR1. +#define BM_ENET_PALR_PADDR1 (0xFFFFFFFFU) //!< Bit mask for ENET_PALR_PADDR1. +#define BS_ENET_PALR_PADDR1 (32U) //!< Bit field size in bits for ENET_PALR_PADDR1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_PALR_PADDR1 field. +#define BR_ENET_PALR_PADDR1(x) (HW_ENET_PALR(x).U) +#endif + +//! @brief Format value for bitfield ENET_PALR_PADDR1. +#define BF_ENET_PALR_PADDR1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_PALR_PADDR1), uint32_t) & BM_ENET_PALR_PADDR1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PADDR1 field to a new value. +#define BW_ENET_PALR_PADDR1(x, v) (HW_ENET_PALR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_PAUR - Physical Address Upper Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_PAUR - Physical Address Upper Register (RW) + * + * Reset value: 0x00008808U + * + * PAUR contains the upper 16 bits (bytes 4 and 5) of the 48-bit address used in + * the address recognition process to compare with the destination address (DA) + * field of receive frames with an individual DA. In addition, this register is + * used in bytes 4 and 5 of the six-byte source address field when transmitting + * PAUSE frames. Bits 15:0 of PAUR contain a constant type field (0x8808) for + * transmission of PAUSE frames. The upper 16 bits of this register are not reset and + * you must initialize it. + */ +typedef union _hw_enet_paur +{ + uint32_t U; + struct _hw_enet_paur_bitfields + { + uint32_t TYPE : 16; //!< [15:0] Type Field In PAUSE Frames + uint32_t PADDR2 : 16; //!< [31:16] + } B; +} hw_enet_paur_t; +#endif + +/*! + * @name Constants and macros for entire ENET_PAUR register + */ +//@{ +#define HW_ENET_PAUR_ADDR(x) (REGS_ENET_BASE(x) + 0xE8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_PAUR(x) (*(__IO hw_enet_paur_t *) HW_ENET_PAUR_ADDR(x)) +#define HW_ENET_PAUR_RD(x) (HW_ENET_PAUR(x).U) +#define HW_ENET_PAUR_WR(x, v) (HW_ENET_PAUR(x).U = (v)) +#define HW_ENET_PAUR_SET(x, v) (HW_ENET_PAUR_WR(x, HW_ENET_PAUR_RD(x) | (v))) +#define HW_ENET_PAUR_CLR(x, v) (HW_ENET_PAUR_WR(x, HW_ENET_PAUR_RD(x) & ~(v))) +#define HW_ENET_PAUR_TOG(x, v) (HW_ENET_PAUR_WR(x, HW_ENET_PAUR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_PAUR bitfields + */ + +/*! + * @name Register ENET_PAUR, field TYPE[15:0] (RO) + * + * These fields have a constant value of 0x8808. + */ +//@{ +#define BP_ENET_PAUR_TYPE (0U) //!< Bit position for ENET_PAUR_TYPE. +#define BM_ENET_PAUR_TYPE (0x0000FFFFU) //!< Bit mask for ENET_PAUR_TYPE. +#define BS_ENET_PAUR_TYPE (16U) //!< Bit field size in bits for ENET_PAUR_TYPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_PAUR_TYPE field. +#define BR_ENET_PAUR_TYPE(x) (HW_ENET_PAUR(x).B.TYPE) +#endif +//@} + +/*! + * @name Register ENET_PAUR, field PADDR2[31:16] (RW) + * + * Bytes 4 (bits 31:24) and 5 (bits 23:16) of the 6-byte individual address used + * for exact match, and the source address field in PAUSE frames. + */ +//@{ +#define BP_ENET_PAUR_PADDR2 (16U) //!< Bit position for ENET_PAUR_PADDR2. +#define BM_ENET_PAUR_PADDR2 (0xFFFF0000U) //!< Bit mask for ENET_PAUR_PADDR2. +#define BS_ENET_PAUR_PADDR2 (16U) //!< Bit field size in bits for ENET_PAUR_PADDR2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_PAUR_PADDR2 field. +#define BR_ENET_PAUR_PADDR2(x) (HW_ENET_PAUR(x).B.PADDR2) +#endif + +//! @brief Format value for bitfield ENET_PAUR_PADDR2. +#define BF_ENET_PAUR_PADDR2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_PAUR_PADDR2), uint32_t) & BM_ENET_PAUR_PADDR2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PADDR2 field to a new value. +#define BW_ENET_PAUR_PADDR2(x, v) (HW_ENET_PAUR_WR(x, (HW_ENET_PAUR_RD(x) & ~BM_ENET_PAUR_PADDR2) | BF_ENET_PAUR_PADDR2(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_OPD - Opcode/Pause Duration Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_OPD - Opcode/Pause Duration Register (RW) + * + * Reset value: 0x00010000U + * + * OPD is read/write accessible. This register contains the 16-bit opcode and + * 16-bit pause duration fields used in transmission of a PAUSE frame. The opcode + * field is a constant value, 0x0001. When another node detects a PAUSE frame, + * that node pauses transmission for the duration specified in the pause duration + * field. The lower 16 bits of this register are not reset and you must initialize + * it. + */ +typedef union _hw_enet_opd +{ + uint32_t U; + struct _hw_enet_opd_bitfields + { + uint32_t PAUSE_DUR : 16; //!< [15:0] Pause Duration + uint32_t OPCODE : 16; //!< [31:16] Opcode Field In PAUSE Frames + } B; +} hw_enet_opd_t; +#endif + +/*! + * @name Constants and macros for entire ENET_OPD register + */ +//@{ +#define HW_ENET_OPD_ADDR(x) (REGS_ENET_BASE(x) + 0xECU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_OPD(x) (*(__IO hw_enet_opd_t *) HW_ENET_OPD_ADDR(x)) +#define HW_ENET_OPD_RD(x) (HW_ENET_OPD(x).U) +#define HW_ENET_OPD_WR(x, v) (HW_ENET_OPD(x).U = (v)) +#define HW_ENET_OPD_SET(x, v) (HW_ENET_OPD_WR(x, HW_ENET_OPD_RD(x) | (v))) +#define HW_ENET_OPD_CLR(x, v) (HW_ENET_OPD_WR(x, HW_ENET_OPD_RD(x) & ~(v))) +#define HW_ENET_OPD_TOG(x, v) (HW_ENET_OPD_WR(x, HW_ENET_OPD_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_OPD bitfields + */ + +/*! + * @name Register ENET_OPD, field PAUSE_DUR[15:0] (RW) + * + * Pause duration field used in PAUSE frames. + */ +//@{ +#define BP_ENET_OPD_PAUSE_DUR (0U) //!< Bit position for ENET_OPD_PAUSE_DUR. +#define BM_ENET_OPD_PAUSE_DUR (0x0000FFFFU) //!< Bit mask for ENET_OPD_PAUSE_DUR. +#define BS_ENET_OPD_PAUSE_DUR (16U) //!< Bit field size in bits for ENET_OPD_PAUSE_DUR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_OPD_PAUSE_DUR field. +#define BR_ENET_OPD_PAUSE_DUR(x) (HW_ENET_OPD(x).B.PAUSE_DUR) +#endif + +//! @brief Format value for bitfield ENET_OPD_PAUSE_DUR. +#define BF_ENET_OPD_PAUSE_DUR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_OPD_PAUSE_DUR), uint32_t) & BM_ENET_OPD_PAUSE_DUR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PAUSE_DUR field to a new value. +#define BW_ENET_OPD_PAUSE_DUR(x, v) (HW_ENET_OPD_WR(x, (HW_ENET_OPD_RD(x) & ~BM_ENET_OPD_PAUSE_DUR) | BF_ENET_OPD_PAUSE_DUR(v))) +#endif +//@} + +/*! + * @name Register ENET_OPD, field OPCODE[31:16] (RO) + * + * These fields have a constant value of 0x0001. + */ +//@{ +#define BP_ENET_OPD_OPCODE (16U) //!< Bit position for ENET_OPD_OPCODE. +#define BM_ENET_OPD_OPCODE (0xFFFF0000U) //!< Bit mask for ENET_OPD_OPCODE. +#define BS_ENET_OPD_OPCODE (16U) //!< Bit field size in bits for ENET_OPD_OPCODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_OPD_OPCODE field. +#define BR_ENET_OPD_OPCODE(x) (HW_ENET_OPD(x).B.OPCODE) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IAUR - Descriptor Individual Upper Address Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IAUR - Descriptor Individual Upper Address Register (RW) + * + * Reset value: 0x00000000U + * + * IAUR contains the upper 32 bits of the 64-bit individual address hash table. + * The address recognition process uses this table to check for a possible match + * with the destination address (DA) field of receive frames with an individual + * DA. This register is not reset and you must initialize it. + */ +typedef union _hw_enet_iaur +{ + uint32_t U; + struct _hw_enet_iaur_bitfields + { + uint32_t IADDR1 : 32; //!< [31:0] + } B; +} hw_enet_iaur_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IAUR register + */ +//@{ +#define HW_ENET_IAUR_ADDR(x) (REGS_ENET_BASE(x) + 0x118U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IAUR(x) (*(__IO hw_enet_iaur_t *) HW_ENET_IAUR_ADDR(x)) +#define HW_ENET_IAUR_RD(x) (HW_ENET_IAUR(x).U) +#define HW_ENET_IAUR_WR(x, v) (HW_ENET_IAUR(x).U = (v)) +#define HW_ENET_IAUR_SET(x, v) (HW_ENET_IAUR_WR(x, HW_ENET_IAUR_RD(x) | (v))) +#define HW_ENET_IAUR_CLR(x, v) (HW_ENET_IAUR_WR(x, HW_ENET_IAUR_RD(x) & ~(v))) +#define HW_ENET_IAUR_TOG(x, v) (HW_ENET_IAUR_WR(x, HW_ENET_IAUR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_IAUR bitfields + */ + +/*! + * @name Register ENET_IAUR, field IADDR1[31:0] (RW) + * + * Contains the upper 32 bits of the 64-bit hash table used in the address + * recognition process for receive frames with a unicast address. Bit 31 of IADDR1 + * contains hash index bit 63. Bit 0 of IADDR1 contains hash index bit 32. + */ +//@{ +#define BP_ENET_IAUR_IADDR1 (0U) //!< Bit position for ENET_IAUR_IADDR1. +#define BM_ENET_IAUR_IADDR1 (0xFFFFFFFFU) //!< Bit mask for ENET_IAUR_IADDR1. +#define BS_ENET_IAUR_IADDR1 (32U) //!< Bit field size in bits for ENET_IAUR_IADDR1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IAUR_IADDR1 field. +#define BR_ENET_IAUR_IADDR1(x) (HW_ENET_IAUR(x).U) +#endif + +//! @brief Format value for bitfield ENET_IAUR_IADDR1. +#define BF_ENET_IAUR_IADDR1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_IAUR_IADDR1), uint32_t) & BM_ENET_IAUR_IADDR1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IADDR1 field to a new value. +#define BW_ENET_IAUR_IADDR1(x, v) (HW_ENET_IAUR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IALR - Descriptor Individual Lower Address Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IALR - Descriptor Individual Lower Address Register (RW) + * + * Reset value: 0x00000000U + * + * IALR contains the lower 32 bits of the 64-bit individual address hash table. + * The address recognition process uses this table to check for a possible match + * with the DA field of receive frames with an individual DA. This register is + * not reset and you must initialize it. + */ +typedef union _hw_enet_ialr +{ + uint32_t U; + struct _hw_enet_ialr_bitfields + { + uint32_t IADDR2 : 32; //!< [31:0] + } B; +} hw_enet_ialr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IALR register + */ +//@{ +#define HW_ENET_IALR_ADDR(x) (REGS_ENET_BASE(x) + 0x11CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IALR(x) (*(__IO hw_enet_ialr_t *) HW_ENET_IALR_ADDR(x)) +#define HW_ENET_IALR_RD(x) (HW_ENET_IALR(x).U) +#define HW_ENET_IALR_WR(x, v) (HW_ENET_IALR(x).U = (v)) +#define HW_ENET_IALR_SET(x, v) (HW_ENET_IALR_WR(x, HW_ENET_IALR_RD(x) | (v))) +#define HW_ENET_IALR_CLR(x, v) (HW_ENET_IALR_WR(x, HW_ENET_IALR_RD(x) & ~(v))) +#define HW_ENET_IALR_TOG(x, v) (HW_ENET_IALR_WR(x, HW_ENET_IALR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_IALR bitfields + */ + +/*! + * @name Register ENET_IALR, field IADDR2[31:0] (RW) + * + * Contains the lower 32 bits of the 64-bit hash table used in the address + * recognition process for receive frames with a unicast address. Bit 31 of IADDR2 + * contains hash index bit 31. Bit 0 of IADDR2 contains hash index bit 0. + */ +//@{ +#define BP_ENET_IALR_IADDR2 (0U) //!< Bit position for ENET_IALR_IADDR2. +#define BM_ENET_IALR_IADDR2 (0xFFFFFFFFU) //!< Bit mask for ENET_IALR_IADDR2. +#define BS_ENET_IALR_IADDR2 (32U) //!< Bit field size in bits for ENET_IALR_IADDR2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IALR_IADDR2 field. +#define BR_ENET_IALR_IADDR2(x) (HW_ENET_IALR(x).U) +#endif + +//! @brief Format value for bitfield ENET_IALR_IADDR2. +#define BF_ENET_IALR_IADDR2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_IALR_IADDR2), uint32_t) & BM_ENET_IALR_IADDR2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IADDR2 field to a new value. +#define BW_ENET_IALR_IADDR2(x, v) (HW_ENET_IALR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_GAUR - Descriptor Group Upper Address Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_GAUR - Descriptor Group Upper Address Register (RW) + * + * Reset value: 0x00000000U + * + * GAUR contains the upper 32 bits of the 64-bit hash table used in the address + * recognition process for receive frames with a multicast address. You must + * initialize this register. + */ +typedef union _hw_enet_gaur +{ + uint32_t U; + struct _hw_enet_gaur_bitfields + { + uint32_t GADDR1 : 32; //!< [31:0] + } B; +} hw_enet_gaur_t; +#endif + +/*! + * @name Constants and macros for entire ENET_GAUR register + */ +//@{ +#define HW_ENET_GAUR_ADDR(x) (REGS_ENET_BASE(x) + 0x120U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_GAUR(x) (*(__IO hw_enet_gaur_t *) HW_ENET_GAUR_ADDR(x)) +#define HW_ENET_GAUR_RD(x) (HW_ENET_GAUR(x).U) +#define HW_ENET_GAUR_WR(x, v) (HW_ENET_GAUR(x).U = (v)) +#define HW_ENET_GAUR_SET(x, v) (HW_ENET_GAUR_WR(x, HW_ENET_GAUR_RD(x) | (v))) +#define HW_ENET_GAUR_CLR(x, v) (HW_ENET_GAUR_WR(x, HW_ENET_GAUR_RD(x) & ~(v))) +#define HW_ENET_GAUR_TOG(x, v) (HW_ENET_GAUR_WR(x, HW_ENET_GAUR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_GAUR bitfields + */ + +/*! + * @name Register ENET_GAUR, field GADDR1[31:0] (RW) + * + * Contains the upper 32 bits of the 64-bit hash table used in the address + * recognition process for receive frames with a multicast address. Bit 31 of GADDR1 + * contains hash index bit 63. Bit 0 of GADDR1 contains hash index bit 32. + */ +//@{ +#define BP_ENET_GAUR_GADDR1 (0U) //!< Bit position for ENET_GAUR_GADDR1. +#define BM_ENET_GAUR_GADDR1 (0xFFFFFFFFU) //!< Bit mask for ENET_GAUR_GADDR1. +#define BS_ENET_GAUR_GADDR1 (32U) //!< Bit field size in bits for ENET_GAUR_GADDR1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_GAUR_GADDR1 field. +#define BR_ENET_GAUR_GADDR1(x) (HW_ENET_GAUR(x).U) +#endif + +//! @brief Format value for bitfield ENET_GAUR_GADDR1. +#define BF_ENET_GAUR_GADDR1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_GAUR_GADDR1), uint32_t) & BM_ENET_GAUR_GADDR1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GADDR1 field to a new value. +#define BW_ENET_GAUR_GADDR1(x, v) (HW_ENET_GAUR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_GALR - Descriptor Group Lower Address Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_GALR - Descriptor Group Lower Address Register (RW) + * + * Reset value: 0x00000000U + * + * GALR contains the lower 32 bits of the 64-bit hash table used in the address + * recognition process for receive frames with a multicast address. You must + * initialize this register. + */ +typedef union _hw_enet_galr +{ + uint32_t U; + struct _hw_enet_galr_bitfields + { + uint32_t GADDR2 : 32; //!< [31:0] + } B; +} hw_enet_galr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_GALR register + */ +//@{ +#define HW_ENET_GALR_ADDR(x) (REGS_ENET_BASE(x) + 0x124U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_GALR(x) (*(__IO hw_enet_galr_t *) HW_ENET_GALR_ADDR(x)) +#define HW_ENET_GALR_RD(x) (HW_ENET_GALR(x).U) +#define HW_ENET_GALR_WR(x, v) (HW_ENET_GALR(x).U = (v)) +#define HW_ENET_GALR_SET(x, v) (HW_ENET_GALR_WR(x, HW_ENET_GALR_RD(x) | (v))) +#define HW_ENET_GALR_CLR(x, v) (HW_ENET_GALR_WR(x, HW_ENET_GALR_RD(x) & ~(v))) +#define HW_ENET_GALR_TOG(x, v) (HW_ENET_GALR_WR(x, HW_ENET_GALR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_GALR bitfields + */ + +/*! + * @name Register ENET_GALR, field GADDR2[31:0] (RW) + * + * Contains the lower 32 bits of the 64-bit hash table used in the address + * recognition process for receive frames with a multicast address. Bit 31 of GADDR2 + * contains hash index bit 31. Bit 0 of GADDR2 contains hash index bit 0. + */ +//@{ +#define BP_ENET_GALR_GADDR2 (0U) //!< Bit position for ENET_GALR_GADDR2. +#define BM_ENET_GALR_GADDR2 (0xFFFFFFFFU) //!< Bit mask for ENET_GALR_GADDR2. +#define BS_ENET_GALR_GADDR2 (32U) //!< Bit field size in bits for ENET_GALR_GADDR2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_GALR_GADDR2 field. +#define BR_ENET_GALR_GADDR2(x) (HW_ENET_GALR(x).U) +#endif + +//! @brief Format value for bitfield ENET_GALR_GADDR2. +#define BF_ENET_GALR_GADDR2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_GALR_GADDR2), uint32_t) & BM_ENET_GALR_GADDR2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GADDR2 field to a new value. +#define BW_ENET_GALR_GADDR2(x, v) (HW_ENET_GALR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TFWR - Transmit FIFO Watermark Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TFWR - Transmit FIFO Watermark Register (RW) + * + * Reset value: 0x00000000U + * + * If TFWR[STRFWD] is cleared, TFWR[TFWR] controls the amount of data required + * in the transmit FIFO before transmission of a frame can begin. This allows you + * to minimize transmit latency (TFWR = 00 or 01) or allow for larger bus access + * latency (TFWR = 11) due to contention for the system bus. Setting the + * watermark to a high value minimizes the risk of transmit FIFO underrun due to + * contention for the system bus. The byte counts associated with the TFWR field may need + * to be modified to match a given system requirement. For example, worst case + * bus access latency by the transmit data DMA channel. When the FIFO level + * reaches the value the TFWR field and when the STR_FWD is set to '0', the MAC + * transmit control logic starts frame transmission even before the end-of-frame is + * available in the FIFO (cut-through operation). If a complete frame has a size + * smaller than the threshold programmed with TFWR, the MAC also transmits the Frame + * to the line. To enable store and forward on the Transmit path, set STR_FWD to + * '1'. In this case, the MAC starts to transmit data only when a complete frame + * is stored in the Transmit FIFO. + */ +typedef union _hw_enet_tfwr +{ + uint32_t U; + struct _hw_enet_tfwr_bitfields + { + uint32_t TFWR : 6; //!< [5:0] Transmit FIFO Write + uint32_t RESERVED0 : 2; //!< [7:6] + uint32_t STRFWD : 1; //!< [8] Store And Forward Enable + uint32_t RESERVED1 : 23; //!< [31:9] + } B; +} hw_enet_tfwr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TFWR register + */ +//@{ +#define HW_ENET_TFWR_ADDR(x) (REGS_ENET_BASE(x) + 0x144U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TFWR(x) (*(__IO hw_enet_tfwr_t *) HW_ENET_TFWR_ADDR(x)) +#define HW_ENET_TFWR_RD(x) (HW_ENET_TFWR(x).U) +#define HW_ENET_TFWR_WR(x, v) (HW_ENET_TFWR(x).U = (v)) +#define HW_ENET_TFWR_SET(x, v) (HW_ENET_TFWR_WR(x, HW_ENET_TFWR_RD(x) | (v))) +#define HW_ENET_TFWR_CLR(x, v) (HW_ENET_TFWR_WR(x, HW_ENET_TFWR_RD(x) & ~(v))) +#define HW_ENET_TFWR_TOG(x, v) (HW_ENET_TFWR_WR(x, HW_ENET_TFWR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TFWR bitfields + */ + +/*! + * @name Register ENET_TFWR, field TFWR[5:0] (RW) + * + * If TFWR[STRFWD] is cleared, this field indicates the number of bytes, in + * steps of 64 bytes, written to the transmit FIFO before transmission of a frame + * begins. If a frame with less than the threshold is written, it is still sent + * independently of this threshold setting. The threshold is relevant only if the + * frame is larger than the threshold given. This chip may not support the maximum + * number of bytes written shown below. See the chip-specific information for the + * ENET module for this value. + * + * Values: + * - 000000 - 64 bytes written. + * - 000001 - 64 bytes written. + * - 000010 - 128 bytes written. + * - 000011 - 192 bytes written. + * - 111110 - 3968 bytes written. + * - 111111 - 4032 bytes written. + */ +//@{ +#define BP_ENET_TFWR_TFWR (0U) //!< Bit position for ENET_TFWR_TFWR. +#define BM_ENET_TFWR_TFWR (0x0000003FU) //!< Bit mask for ENET_TFWR_TFWR. +#define BS_ENET_TFWR_TFWR (6U) //!< Bit field size in bits for ENET_TFWR_TFWR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TFWR_TFWR field. +#define BR_ENET_TFWR_TFWR(x) (HW_ENET_TFWR(x).B.TFWR) +#endif + +//! @brief Format value for bitfield ENET_TFWR_TFWR. +#define BF_ENET_TFWR_TFWR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TFWR_TFWR), uint32_t) & BM_ENET_TFWR_TFWR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TFWR field to a new value. +#define BW_ENET_TFWR_TFWR(x, v) (HW_ENET_TFWR_WR(x, (HW_ENET_TFWR_RD(x) & ~BM_ENET_TFWR_TFWR) | BF_ENET_TFWR_TFWR(v))) +#endif +//@} + +/*! + * @name Register ENET_TFWR, field STRFWD[8] (RW) + * + * Values: + * - 0 - Reset. The transmission start threshold is programmed in TFWR[TFWR]. + * - 1 - Enabled. + */ +//@{ +#define BP_ENET_TFWR_STRFWD (8U) //!< Bit position for ENET_TFWR_STRFWD. +#define BM_ENET_TFWR_STRFWD (0x00000100U) //!< Bit mask for ENET_TFWR_STRFWD. +#define BS_ENET_TFWR_STRFWD (1U) //!< Bit field size in bits for ENET_TFWR_STRFWD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TFWR_STRFWD field. +#define BR_ENET_TFWR_STRFWD(x) (BITBAND_ACCESS32(HW_ENET_TFWR_ADDR(x), BP_ENET_TFWR_STRFWD)) +#endif + +//! @brief Format value for bitfield ENET_TFWR_STRFWD. +#define BF_ENET_TFWR_STRFWD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TFWR_STRFWD), uint32_t) & BM_ENET_TFWR_STRFWD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STRFWD field to a new value. +#define BW_ENET_TFWR_STRFWD(x, v) (BITBAND_ACCESS32(HW_ENET_TFWR_ADDR(x), BP_ENET_TFWR_STRFWD) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RDSR - Receive Descriptor Ring Start Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RDSR - Receive Descriptor Ring Start Register (RW) + * + * Reset value: 0x00000000U + * + * RDSR points to the beginning of the circular receive buffer descriptor queue + * in external memory. This pointer must be 64-bit aligned (bits 2-0 must be + * zero); however, it is recommended to be 128-bit aligned, that is, evenly divisible + * by 16. This register must be initialized prior to operation + */ +typedef union _hw_enet_rdsr +{ + uint32_t U; + struct _hw_enet_rdsr_bitfields + { + uint32_t RESERVED0 : 3; //!< [2:0] + uint32_t R_DES_START : 29; //!< [31:3] + } B; +} hw_enet_rdsr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RDSR register + */ +//@{ +#define HW_ENET_RDSR_ADDR(x) (REGS_ENET_BASE(x) + 0x180U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RDSR(x) (*(__IO hw_enet_rdsr_t *) HW_ENET_RDSR_ADDR(x)) +#define HW_ENET_RDSR_RD(x) (HW_ENET_RDSR(x).U) +#define HW_ENET_RDSR_WR(x, v) (HW_ENET_RDSR(x).U = (v)) +#define HW_ENET_RDSR_SET(x, v) (HW_ENET_RDSR_WR(x, HW_ENET_RDSR_RD(x) | (v))) +#define HW_ENET_RDSR_CLR(x, v) (HW_ENET_RDSR_WR(x, HW_ENET_RDSR_RD(x) & ~(v))) +#define HW_ENET_RDSR_TOG(x, v) (HW_ENET_RDSR_WR(x, HW_ENET_RDSR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_RDSR bitfields + */ + +/*! + * @name Register ENET_RDSR, field R_DES_START[31:3] (RW) + * + * Pointer to the beginning of the receive buffer descriptor queue. + */ +//@{ +#define BP_ENET_RDSR_R_DES_START (3U) //!< Bit position for ENET_RDSR_R_DES_START. +#define BM_ENET_RDSR_R_DES_START (0xFFFFFFF8U) //!< Bit mask for ENET_RDSR_R_DES_START. +#define BS_ENET_RDSR_R_DES_START (29U) //!< Bit field size in bits for ENET_RDSR_R_DES_START. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RDSR_R_DES_START field. +#define BR_ENET_RDSR_R_DES_START(x) (HW_ENET_RDSR(x).B.R_DES_START) +#endif + +//! @brief Format value for bitfield ENET_RDSR_R_DES_START. +#define BF_ENET_RDSR_R_DES_START(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RDSR_R_DES_START), uint32_t) & BM_ENET_RDSR_R_DES_START) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the R_DES_START field to a new value. +#define BW_ENET_RDSR_R_DES_START(x, v) (HW_ENET_RDSR_WR(x, (HW_ENET_RDSR_RD(x) & ~BM_ENET_RDSR_R_DES_START) | BF_ENET_RDSR_R_DES_START(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TDSR - Transmit Buffer Descriptor Ring Start Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TDSR - Transmit Buffer Descriptor Ring Start Register (RW) + * + * Reset value: 0x00000000U + * + * TDSR provides a pointer to the beginning of the circular transmit buffer + * descriptor queue in external memory. This pointer must be 64-bit aligned (bits 2-0 + * must be zero); however, it is recommended to be 128-bit aligned, that is, + * evenly divisible by 16. This register must be initialized prior to operation. + */ +typedef union _hw_enet_tdsr +{ + uint32_t U; + struct _hw_enet_tdsr_bitfields + { + uint32_t RESERVED0 : 3; //!< [2:0] + uint32_t X_DES_START : 29; //!< [31:3] + } B; +} hw_enet_tdsr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TDSR register + */ +//@{ +#define HW_ENET_TDSR_ADDR(x) (REGS_ENET_BASE(x) + 0x184U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TDSR(x) (*(__IO hw_enet_tdsr_t *) HW_ENET_TDSR_ADDR(x)) +#define HW_ENET_TDSR_RD(x) (HW_ENET_TDSR(x).U) +#define HW_ENET_TDSR_WR(x, v) (HW_ENET_TDSR(x).U = (v)) +#define HW_ENET_TDSR_SET(x, v) (HW_ENET_TDSR_WR(x, HW_ENET_TDSR_RD(x) | (v))) +#define HW_ENET_TDSR_CLR(x, v) (HW_ENET_TDSR_WR(x, HW_ENET_TDSR_RD(x) & ~(v))) +#define HW_ENET_TDSR_TOG(x, v) (HW_ENET_TDSR_WR(x, HW_ENET_TDSR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TDSR bitfields + */ + +/*! + * @name Register ENET_TDSR, field X_DES_START[31:3] (RW) + * + * Pointer to the beginning of the transmit buffer descriptor queue. + */ +//@{ +#define BP_ENET_TDSR_X_DES_START (3U) //!< Bit position for ENET_TDSR_X_DES_START. +#define BM_ENET_TDSR_X_DES_START (0xFFFFFFF8U) //!< Bit mask for ENET_TDSR_X_DES_START. +#define BS_ENET_TDSR_X_DES_START (29U) //!< Bit field size in bits for ENET_TDSR_X_DES_START. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TDSR_X_DES_START field. +#define BR_ENET_TDSR_X_DES_START(x) (HW_ENET_TDSR(x).B.X_DES_START) +#endif + +//! @brief Format value for bitfield ENET_TDSR_X_DES_START. +#define BF_ENET_TDSR_X_DES_START(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TDSR_X_DES_START), uint32_t) & BM_ENET_TDSR_X_DES_START) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the X_DES_START field to a new value. +#define BW_ENET_TDSR_X_DES_START(x, v) (HW_ENET_TDSR_WR(x, (HW_ENET_TDSR_RD(x) & ~BM_ENET_TDSR_X_DES_START) | BF_ENET_TDSR_X_DES_START(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_MRBR - Maximum Receive Buffer Size Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_MRBR - Maximum Receive Buffer Size Register (RW) + * + * Reset value: 0x00000000U + * + * The MRBR is a user-programmable register that dictates the maximum size of + * all receive buffers. This value should take into consideration that the receive + * CRC is always written into the last receive buffer. To allow one maximum size + * frame per buffer, MRBR must be set to RCR[MAX_FL] or larger. To properly align + * the buffer, MRBR must be evenly divisible by 16. To ensure this, bits 3-0 are + * set to zero by the device. To minimize bus usage (descriptor fetches), set + * MRBR greater than or equal to 256 bytes. This register must be initialized + * before operation. + */ +typedef union _hw_enet_mrbr +{ + uint32_t U; + struct _hw_enet_mrbr_bitfields + { + uint32_t RESERVED0 : 4; //!< [3:0] + uint32_t R_BUF_SIZE : 10; //!< [13:4] + uint32_t RESERVED1 : 18; //!< [31:14] + } B; +} hw_enet_mrbr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_MRBR register + */ +//@{ +#define HW_ENET_MRBR_ADDR(x) (REGS_ENET_BASE(x) + 0x188U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_MRBR(x) (*(__IO hw_enet_mrbr_t *) HW_ENET_MRBR_ADDR(x)) +#define HW_ENET_MRBR_RD(x) (HW_ENET_MRBR(x).U) +#define HW_ENET_MRBR_WR(x, v) (HW_ENET_MRBR(x).U = (v)) +#define HW_ENET_MRBR_SET(x, v) (HW_ENET_MRBR_WR(x, HW_ENET_MRBR_RD(x) | (v))) +#define HW_ENET_MRBR_CLR(x, v) (HW_ENET_MRBR_WR(x, HW_ENET_MRBR_RD(x) & ~(v))) +#define HW_ENET_MRBR_TOG(x, v) (HW_ENET_MRBR_WR(x, HW_ENET_MRBR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_MRBR bitfields + */ + +/*! + * @name Register ENET_MRBR, field R_BUF_SIZE[13:4] (RW) + * + * Receive buffer size in bytes. + */ +//@{ +#define BP_ENET_MRBR_R_BUF_SIZE (4U) //!< Bit position for ENET_MRBR_R_BUF_SIZE. +#define BM_ENET_MRBR_R_BUF_SIZE (0x00003FF0U) //!< Bit mask for ENET_MRBR_R_BUF_SIZE. +#define BS_ENET_MRBR_R_BUF_SIZE (10U) //!< Bit field size in bits for ENET_MRBR_R_BUF_SIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_MRBR_R_BUF_SIZE field. +#define BR_ENET_MRBR_R_BUF_SIZE(x) (HW_ENET_MRBR(x).B.R_BUF_SIZE) +#endif + +//! @brief Format value for bitfield ENET_MRBR_R_BUF_SIZE. +#define BF_ENET_MRBR_R_BUF_SIZE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_MRBR_R_BUF_SIZE), uint32_t) & BM_ENET_MRBR_R_BUF_SIZE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the R_BUF_SIZE field to a new value. +#define BW_ENET_MRBR_R_BUF_SIZE(x, v) (HW_ENET_MRBR_WR(x, (HW_ENET_MRBR_RD(x) & ~BM_ENET_MRBR_R_BUF_SIZE) | BF_ENET_MRBR_R_BUF_SIZE(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RSFL - Receive FIFO Section Full Threshold +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RSFL - Receive FIFO Section Full Threshold (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rsfl +{ + uint32_t U; + struct _hw_enet_rsfl_bitfields + { + uint32_t RX_SECTION_FULL : 8; //!< [7:0] Value Of Receive FIFO + //! Section Full Threshold + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_enet_rsfl_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RSFL register + */ +//@{ +#define HW_ENET_RSFL_ADDR(x) (REGS_ENET_BASE(x) + 0x190U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RSFL(x) (*(__IO hw_enet_rsfl_t *) HW_ENET_RSFL_ADDR(x)) +#define HW_ENET_RSFL_RD(x) (HW_ENET_RSFL(x).U) +#define HW_ENET_RSFL_WR(x, v) (HW_ENET_RSFL(x).U = (v)) +#define HW_ENET_RSFL_SET(x, v) (HW_ENET_RSFL_WR(x, HW_ENET_RSFL_RD(x) | (v))) +#define HW_ENET_RSFL_CLR(x, v) (HW_ENET_RSFL_WR(x, HW_ENET_RSFL_RD(x) & ~(v))) +#define HW_ENET_RSFL_TOG(x, v) (HW_ENET_RSFL_WR(x, HW_ENET_RSFL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_RSFL bitfields + */ + +/*! + * @name Register ENET_RSFL, field RX_SECTION_FULL[7:0] (RW) + * + * Value, in 64-bit words, of the receive FIFO section full threshold. Clear + * this field to enable store and forward on the RX FIFO. When programming a value + * greater than 0 (cut-through operation), it must be greater than + * RAEM[RX_ALMOST_EMPTY]. When the FIFO level reaches the value in this field, data is available + * in the Receive FIFO (cut-through operation). + */ +//@{ +#define BP_ENET_RSFL_RX_SECTION_FULL (0U) //!< Bit position for ENET_RSFL_RX_SECTION_FULL. +#define BM_ENET_RSFL_RX_SECTION_FULL (0x000000FFU) //!< Bit mask for ENET_RSFL_RX_SECTION_FULL. +#define BS_ENET_RSFL_RX_SECTION_FULL (8U) //!< Bit field size in bits for ENET_RSFL_RX_SECTION_FULL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RSFL_RX_SECTION_FULL field. +#define BR_ENET_RSFL_RX_SECTION_FULL(x) (HW_ENET_RSFL(x).B.RX_SECTION_FULL) +#endif + +//! @brief Format value for bitfield ENET_RSFL_RX_SECTION_FULL. +#define BF_ENET_RSFL_RX_SECTION_FULL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RSFL_RX_SECTION_FULL), uint32_t) & BM_ENET_RSFL_RX_SECTION_FULL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RX_SECTION_FULL field to a new value. +#define BW_ENET_RSFL_RX_SECTION_FULL(x, v) (HW_ENET_RSFL_WR(x, (HW_ENET_RSFL_RD(x) & ~BM_ENET_RSFL_RX_SECTION_FULL) | BF_ENET_RSFL_RX_SECTION_FULL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RSEM - Receive FIFO Section Empty Threshold +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RSEM - Receive FIFO Section Empty Threshold (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rsem +{ + uint32_t U; + struct _hw_enet_rsem_bitfields + { + uint32_t RX_SECTION_EMPTY : 8; //!< [7:0] Value Of The Receive FIFO + //! Section Empty Threshold + uint32_t RESERVED0 : 8; //!< [15:8] + uint32_t STAT_SECTION_EMPTY : 5; //!< [20:16] RX Status FIFO Section + //! Empty Threshold + uint32_t RESERVED1 : 11; //!< [31:21] + } B; +} hw_enet_rsem_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RSEM register + */ +//@{ +#define HW_ENET_RSEM_ADDR(x) (REGS_ENET_BASE(x) + 0x194U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RSEM(x) (*(__IO hw_enet_rsem_t *) HW_ENET_RSEM_ADDR(x)) +#define HW_ENET_RSEM_RD(x) (HW_ENET_RSEM(x).U) +#define HW_ENET_RSEM_WR(x, v) (HW_ENET_RSEM(x).U = (v)) +#define HW_ENET_RSEM_SET(x, v) (HW_ENET_RSEM_WR(x, HW_ENET_RSEM_RD(x) | (v))) +#define HW_ENET_RSEM_CLR(x, v) (HW_ENET_RSEM_WR(x, HW_ENET_RSEM_RD(x) & ~(v))) +#define HW_ENET_RSEM_TOG(x, v) (HW_ENET_RSEM_WR(x, HW_ENET_RSEM_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_RSEM bitfields + */ + +/*! + * @name Register ENET_RSEM, field RX_SECTION_EMPTY[7:0] (RW) + * + * Value, in 64-bit words, of the receive FIFO section empty threshold. When the + * FIFO has reached this level, a pause frame will be issued. A value of 0 + * disables automatic pause frame generation. When the FIFO level goes below the value + * programmed in this field, an XON pause frame is issued to indicate the FIFO + * congestion is cleared to the remote Ethernet client. The section-empty + * threshold indications from both FIFOs are OR'ed to cause XOFF pause frame generation. + */ +//@{ +#define BP_ENET_RSEM_RX_SECTION_EMPTY (0U) //!< Bit position for ENET_RSEM_RX_SECTION_EMPTY. +#define BM_ENET_RSEM_RX_SECTION_EMPTY (0x000000FFU) //!< Bit mask for ENET_RSEM_RX_SECTION_EMPTY. +#define BS_ENET_RSEM_RX_SECTION_EMPTY (8U) //!< Bit field size in bits for ENET_RSEM_RX_SECTION_EMPTY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RSEM_RX_SECTION_EMPTY field. +#define BR_ENET_RSEM_RX_SECTION_EMPTY(x) (HW_ENET_RSEM(x).B.RX_SECTION_EMPTY) +#endif + +//! @brief Format value for bitfield ENET_RSEM_RX_SECTION_EMPTY. +#define BF_ENET_RSEM_RX_SECTION_EMPTY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RSEM_RX_SECTION_EMPTY), uint32_t) & BM_ENET_RSEM_RX_SECTION_EMPTY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RX_SECTION_EMPTY field to a new value. +#define BW_ENET_RSEM_RX_SECTION_EMPTY(x, v) (HW_ENET_RSEM_WR(x, (HW_ENET_RSEM_RD(x) & ~BM_ENET_RSEM_RX_SECTION_EMPTY) | BF_ENET_RSEM_RX_SECTION_EMPTY(v))) +#endif +//@} + +/*! + * @name Register ENET_RSEM, field STAT_SECTION_EMPTY[20:16] (RW) + * + * Defines number of frames in the receive FIFO, independent of its size, that + * can be accepted. If the limit is reached, reception will continue normally, + * however a pause frame will be triggered to indicate a possible congestion to the + * remote device to avoid FIFO overflow. A value of 0 disables automatic pause + * frame generation + */ +//@{ +#define BP_ENET_RSEM_STAT_SECTION_EMPTY (16U) //!< Bit position for ENET_RSEM_STAT_SECTION_EMPTY. +#define BM_ENET_RSEM_STAT_SECTION_EMPTY (0x001F0000U) //!< Bit mask for ENET_RSEM_STAT_SECTION_EMPTY. +#define BS_ENET_RSEM_STAT_SECTION_EMPTY (5U) //!< Bit field size in bits for ENET_RSEM_STAT_SECTION_EMPTY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RSEM_STAT_SECTION_EMPTY field. +#define BR_ENET_RSEM_STAT_SECTION_EMPTY(x) (HW_ENET_RSEM(x).B.STAT_SECTION_EMPTY) +#endif + +//! @brief Format value for bitfield ENET_RSEM_STAT_SECTION_EMPTY. +#define BF_ENET_RSEM_STAT_SECTION_EMPTY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RSEM_STAT_SECTION_EMPTY), uint32_t) & BM_ENET_RSEM_STAT_SECTION_EMPTY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STAT_SECTION_EMPTY field to a new value. +#define BW_ENET_RSEM_STAT_SECTION_EMPTY(x, v) (HW_ENET_RSEM_WR(x, (HW_ENET_RSEM_RD(x) & ~BM_ENET_RSEM_STAT_SECTION_EMPTY) | BF_ENET_RSEM_STAT_SECTION_EMPTY(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RAEM - Receive FIFO Almost Empty Threshold +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RAEM - Receive FIFO Almost Empty Threshold (RW) + * + * Reset value: 0x00000004U + */ +typedef union _hw_enet_raem +{ + uint32_t U; + struct _hw_enet_raem_bitfields + { + uint32_t RX_ALMOST_EMPTY : 8; //!< [7:0] Value Of The Receive FIFO + //! Almost Empty Threshold + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_enet_raem_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RAEM register + */ +//@{ +#define HW_ENET_RAEM_ADDR(x) (REGS_ENET_BASE(x) + 0x198U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RAEM(x) (*(__IO hw_enet_raem_t *) HW_ENET_RAEM_ADDR(x)) +#define HW_ENET_RAEM_RD(x) (HW_ENET_RAEM(x).U) +#define HW_ENET_RAEM_WR(x, v) (HW_ENET_RAEM(x).U = (v)) +#define HW_ENET_RAEM_SET(x, v) (HW_ENET_RAEM_WR(x, HW_ENET_RAEM_RD(x) | (v))) +#define HW_ENET_RAEM_CLR(x, v) (HW_ENET_RAEM_WR(x, HW_ENET_RAEM_RD(x) & ~(v))) +#define HW_ENET_RAEM_TOG(x, v) (HW_ENET_RAEM_WR(x, HW_ENET_RAEM_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_RAEM bitfields + */ + +/*! + * @name Register ENET_RAEM, field RX_ALMOST_EMPTY[7:0] (RW) + * + * Value, in 64-bit words, of the receive FIFO almost empty threshold. When the + * FIFO level reaches the value programmed in this field and the end-of-frame has + * not been received for the frame yet, the core receive read control stops FIFO + * read (and subsequently stops transferring data to the MAC client + * application). It continues to deliver the frame, if again more data than the threshold or + * the end-of-frame is available in the FIFO. A minimum value of 4 should be set. + */ +//@{ +#define BP_ENET_RAEM_RX_ALMOST_EMPTY (0U) //!< Bit position for ENET_RAEM_RX_ALMOST_EMPTY. +#define BM_ENET_RAEM_RX_ALMOST_EMPTY (0x000000FFU) //!< Bit mask for ENET_RAEM_RX_ALMOST_EMPTY. +#define BS_ENET_RAEM_RX_ALMOST_EMPTY (8U) //!< Bit field size in bits for ENET_RAEM_RX_ALMOST_EMPTY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RAEM_RX_ALMOST_EMPTY field. +#define BR_ENET_RAEM_RX_ALMOST_EMPTY(x) (HW_ENET_RAEM(x).B.RX_ALMOST_EMPTY) +#endif + +//! @brief Format value for bitfield ENET_RAEM_RX_ALMOST_EMPTY. +#define BF_ENET_RAEM_RX_ALMOST_EMPTY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RAEM_RX_ALMOST_EMPTY), uint32_t) & BM_ENET_RAEM_RX_ALMOST_EMPTY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RX_ALMOST_EMPTY field to a new value. +#define BW_ENET_RAEM_RX_ALMOST_EMPTY(x, v) (HW_ENET_RAEM_WR(x, (HW_ENET_RAEM_RD(x) & ~BM_ENET_RAEM_RX_ALMOST_EMPTY) | BF_ENET_RAEM_RX_ALMOST_EMPTY(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RAFL - Receive FIFO Almost Full Threshold +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RAFL - Receive FIFO Almost Full Threshold (RW) + * + * Reset value: 0x00000004U + */ +typedef union _hw_enet_rafl +{ + uint32_t U; + struct _hw_enet_rafl_bitfields + { + uint32_t RX_ALMOST_FULL : 8; //!< [7:0] Value Of The Receive FIFO + //! Almost Full Threshold + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_enet_rafl_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RAFL register + */ +//@{ +#define HW_ENET_RAFL_ADDR(x) (REGS_ENET_BASE(x) + 0x19CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RAFL(x) (*(__IO hw_enet_rafl_t *) HW_ENET_RAFL_ADDR(x)) +#define HW_ENET_RAFL_RD(x) (HW_ENET_RAFL(x).U) +#define HW_ENET_RAFL_WR(x, v) (HW_ENET_RAFL(x).U = (v)) +#define HW_ENET_RAFL_SET(x, v) (HW_ENET_RAFL_WR(x, HW_ENET_RAFL_RD(x) | (v))) +#define HW_ENET_RAFL_CLR(x, v) (HW_ENET_RAFL_WR(x, HW_ENET_RAFL_RD(x) & ~(v))) +#define HW_ENET_RAFL_TOG(x, v) (HW_ENET_RAFL_WR(x, HW_ENET_RAFL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_RAFL bitfields + */ + +/*! + * @name Register ENET_RAFL, field RX_ALMOST_FULL[7:0] (RW) + * + * Value, in 64-bit words, of the receive FIFO almost full threshold. When the + * FIFO level comes close to the maximum, so that there is no more space for at + * least RX_ALMOST_FULL number of words, the MAC stops writing data in the FIFO and + * truncates the received frame to avoid FIFO overflow. The corresponding error + * status will be set when the frame is delivered to the application. A minimum + * value of 4 should be set. + */ +//@{ +#define BP_ENET_RAFL_RX_ALMOST_FULL (0U) //!< Bit position for ENET_RAFL_RX_ALMOST_FULL. +#define BM_ENET_RAFL_RX_ALMOST_FULL (0x000000FFU) //!< Bit mask for ENET_RAFL_RX_ALMOST_FULL. +#define BS_ENET_RAFL_RX_ALMOST_FULL (8U) //!< Bit field size in bits for ENET_RAFL_RX_ALMOST_FULL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RAFL_RX_ALMOST_FULL field. +#define BR_ENET_RAFL_RX_ALMOST_FULL(x) (HW_ENET_RAFL(x).B.RX_ALMOST_FULL) +#endif + +//! @brief Format value for bitfield ENET_RAFL_RX_ALMOST_FULL. +#define BF_ENET_RAFL_RX_ALMOST_FULL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RAFL_RX_ALMOST_FULL), uint32_t) & BM_ENET_RAFL_RX_ALMOST_FULL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RX_ALMOST_FULL field to a new value. +#define BW_ENET_RAFL_RX_ALMOST_FULL(x, v) (HW_ENET_RAFL_WR(x, (HW_ENET_RAFL_RD(x) & ~BM_ENET_RAFL_RX_ALMOST_FULL) | BF_ENET_RAFL_RX_ALMOST_FULL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TSEM - Transmit FIFO Section Empty Threshold +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TSEM - Transmit FIFO Section Empty Threshold (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_tsem +{ + uint32_t U; + struct _hw_enet_tsem_bitfields + { + uint32_t TX_SECTION_EMPTY : 8; //!< [7:0] Value Of The Transmit FIFO + //! Section Empty Threshold + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_enet_tsem_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TSEM register + */ +//@{ +#define HW_ENET_TSEM_ADDR(x) (REGS_ENET_BASE(x) + 0x1A0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TSEM(x) (*(__IO hw_enet_tsem_t *) HW_ENET_TSEM_ADDR(x)) +#define HW_ENET_TSEM_RD(x) (HW_ENET_TSEM(x).U) +#define HW_ENET_TSEM_WR(x, v) (HW_ENET_TSEM(x).U = (v)) +#define HW_ENET_TSEM_SET(x, v) (HW_ENET_TSEM_WR(x, HW_ENET_TSEM_RD(x) | (v))) +#define HW_ENET_TSEM_CLR(x, v) (HW_ENET_TSEM_WR(x, HW_ENET_TSEM_RD(x) & ~(v))) +#define HW_ENET_TSEM_TOG(x, v) (HW_ENET_TSEM_WR(x, HW_ENET_TSEM_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TSEM bitfields + */ + +/*! + * @name Register ENET_TSEM, field TX_SECTION_EMPTY[7:0] (RW) + * + * Value, in 64-bit words, of the transmit FIFO section empty threshold. See + * Transmit FIFOFour programmable thresholds are available which control the core + * operation. for more information. + */ +//@{ +#define BP_ENET_TSEM_TX_SECTION_EMPTY (0U) //!< Bit position for ENET_TSEM_TX_SECTION_EMPTY. +#define BM_ENET_TSEM_TX_SECTION_EMPTY (0x000000FFU) //!< Bit mask for ENET_TSEM_TX_SECTION_EMPTY. +#define BS_ENET_TSEM_TX_SECTION_EMPTY (8U) //!< Bit field size in bits for ENET_TSEM_TX_SECTION_EMPTY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TSEM_TX_SECTION_EMPTY field. +#define BR_ENET_TSEM_TX_SECTION_EMPTY(x) (HW_ENET_TSEM(x).B.TX_SECTION_EMPTY) +#endif + +//! @brief Format value for bitfield ENET_TSEM_TX_SECTION_EMPTY. +#define BF_ENET_TSEM_TX_SECTION_EMPTY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TSEM_TX_SECTION_EMPTY), uint32_t) & BM_ENET_TSEM_TX_SECTION_EMPTY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TX_SECTION_EMPTY field to a new value. +#define BW_ENET_TSEM_TX_SECTION_EMPTY(x, v) (HW_ENET_TSEM_WR(x, (HW_ENET_TSEM_RD(x) & ~BM_ENET_TSEM_TX_SECTION_EMPTY) | BF_ENET_TSEM_TX_SECTION_EMPTY(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TAEM - Transmit FIFO Almost Empty Threshold +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TAEM - Transmit FIFO Almost Empty Threshold (RW) + * + * Reset value: 0x00000004U + */ +typedef union _hw_enet_taem +{ + uint32_t U; + struct _hw_enet_taem_bitfields + { + uint32_t TX_ALMOST_EMPTY : 8; //!< [7:0] Value of Transmit FIFO + //! Almost Empty Threshold + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_enet_taem_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TAEM register + */ +//@{ +#define HW_ENET_TAEM_ADDR(x) (REGS_ENET_BASE(x) + 0x1A4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TAEM(x) (*(__IO hw_enet_taem_t *) HW_ENET_TAEM_ADDR(x)) +#define HW_ENET_TAEM_RD(x) (HW_ENET_TAEM(x).U) +#define HW_ENET_TAEM_WR(x, v) (HW_ENET_TAEM(x).U = (v)) +#define HW_ENET_TAEM_SET(x, v) (HW_ENET_TAEM_WR(x, HW_ENET_TAEM_RD(x) | (v))) +#define HW_ENET_TAEM_CLR(x, v) (HW_ENET_TAEM_WR(x, HW_ENET_TAEM_RD(x) & ~(v))) +#define HW_ENET_TAEM_TOG(x, v) (HW_ENET_TAEM_WR(x, HW_ENET_TAEM_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TAEM bitfields + */ + +/*! + * @name Register ENET_TAEM, field TX_ALMOST_EMPTY[7:0] (RW) + * + * Value, in 64-bit words, of the transmit FIFO almost empty threshold. When the + * FIFO level reaches the value programmed in this field, and no end-of-frame is + * available for the frame, the MAC transmit logic, to avoid FIFO underflow, + * stops reading the FIFO and transmits a frame with an MII error indication. See + * Transmit FIFOFour programmable thresholds are available which control the core + * operation. for more information. A minimum value of 4 should be set. + */ +//@{ +#define BP_ENET_TAEM_TX_ALMOST_EMPTY (0U) //!< Bit position for ENET_TAEM_TX_ALMOST_EMPTY. +#define BM_ENET_TAEM_TX_ALMOST_EMPTY (0x000000FFU) //!< Bit mask for ENET_TAEM_TX_ALMOST_EMPTY. +#define BS_ENET_TAEM_TX_ALMOST_EMPTY (8U) //!< Bit field size in bits for ENET_TAEM_TX_ALMOST_EMPTY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TAEM_TX_ALMOST_EMPTY field. +#define BR_ENET_TAEM_TX_ALMOST_EMPTY(x) (HW_ENET_TAEM(x).B.TX_ALMOST_EMPTY) +#endif + +//! @brief Format value for bitfield ENET_TAEM_TX_ALMOST_EMPTY. +#define BF_ENET_TAEM_TX_ALMOST_EMPTY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TAEM_TX_ALMOST_EMPTY), uint32_t) & BM_ENET_TAEM_TX_ALMOST_EMPTY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TX_ALMOST_EMPTY field to a new value. +#define BW_ENET_TAEM_TX_ALMOST_EMPTY(x, v) (HW_ENET_TAEM_WR(x, (HW_ENET_TAEM_RD(x) & ~BM_ENET_TAEM_TX_ALMOST_EMPTY) | BF_ENET_TAEM_TX_ALMOST_EMPTY(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TAFL - Transmit FIFO Almost Full Threshold +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TAFL - Transmit FIFO Almost Full Threshold (RW) + * + * Reset value: 0x00000008U + */ +typedef union _hw_enet_tafl +{ + uint32_t U; + struct _hw_enet_tafl_bitfields + { + uint32_t TX_ALMOST_FULL : 8; //!< [7:0] Value Of The Transmit FIFO + //! Almost Full Threshold + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_enet_tafl_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TAFL register + */ +//@{ +#define HW_ENET_TAFL_ADDR(x) (REGS_ENET_BASE(x) + 0x1A8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TAFL(x) (*(__IO hw_enet_tafl_t *) HW_ENET_TAFL_ADDR(x)) +#define HW_ENET_TAFL_RD(x) (HW_ENET_TAFL(x).U) +#define HW_ENET_TAFL_WR(x, v) (HW_ENET_TAFL(x).U = (v)) +#define HW_ENET_TAFL_SET(x, v) (HW_ENET_TAFL_WR(x, HW_ENET_TAFL_RD(x) | (v))) +#define HW_ENET_TAFL_CLR(x, v) (HW_ENET_TAFL_WR(x, HW_ENET_TAFL_RD(x) & ~(v))) +#define HW_ENET_TAFL_TOG(x, v) (HW_ENET_TAFL_WR(x, HW_ENET_TAFL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TAFL bitfields + */ + +/*! + * @name Register ENET_TAFL, field TX_ALMOST_FULL[7:0] (RW) + * + * Value, in 64-bit words, of the transmit FIFO almost full threshold. A minimum + * value of six is required . A recommended value of at least 8 should be set + * allowing a latency of two clock cycles to the application. If more latency is + * required the value can be increased as necessary (latency = TAFL - 5). When the + * FIFO level comes close to the maximum, so that there is no more space for at + * least TX_ALMOST_FULL number of words, the pin ff_tx_rdy is deasserted. If the + * application does not react on this signal, the FIFO write control logic, to + * avoid FIFO overflow, truncates the current frame and sets the error status. As a + * result, the frame will be transmitted with an GMII/MII error indication. See + * Transmit FIFOFour programmable thresholds are available which control the core + * operation. for more information. A FIFO overflow is a fatal error and requires + * a global reset on the transmit datapath or at least deassertion of ETHEREN. + */ +//@{ +#define BP_ENET_TAFL_TX_ALMOST_FULL (0U) //!< Bit position for ENET_TAFL_TX_ALMOST_FULL. +#define BM_ENET_TAFL_TX_ALMOST_FULL (0x000000FFU) //!< Bit mask for ENET_TAFL_TX_ALMOST_FULL. +#define BS_ENET_TAFL_TX_ALMOST_FULL (8U) //!< Bit field size in bits for ENET_TAFL_TX_ALMOST_FULL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TAFL_TX_ALMOST_FULL field. +#define BR_ENET_TAFL_TX_ALMOST_FULL(x) (HW_ENET_TAFL(x).B.TX_ALMOST_FULL) +#endif + +//! @brief Format value for bitfield ENET_TAFL_TX_ALMOST_FULL. +#define BF_ENET_TAFL_TX_ALMOST_FULL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TAFL_TX_ALMOST_FULL), uint32_t) & BM_ENET_TAFL_TX_ALMOST_FULL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TX_ALMOST_FULL field to a new value. +#define BW_ENET_TAFL_TX_ALMOST_FULL(x, v) (HW_ENET_TAFL_WR(x, (HW_ENET_TAFL_RD(x) & ~BM_ENET_TAFL_TX_ALMOST_FULL) | BF_ENET_TAFL_TX_ALMOST_FULL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TIPG - Transmit Inter-Packet Gap +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TIPG - Transmit Inter-Packet Gap (RW) + * + * Reset value: 0x0000000CU + */ +typedef union _hw_enet_tipg +{ + uint32_t U; + struct _hw_enet_tipg_bitfields + { + uint32_t IPG : 5; //!< [4:0] Transmit Inter-Packet Gap + uint32_t RESERVED0 : 27; //!< [31:5] + } B; +} hw_enet_tipg_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TIPG register + */ +//@{ +#define HW_ENET_TIPG_ADDR(x) (REGS_ENET_BASE(x) + 0x1ACU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TIPG(x) (*(__IO hw_enet_tipg_t *) HW_ENET_TIPG_ADDR(x)) +#define HW_ENET_TIPG_RD(x) (HW_ENET_TIPG(x).U) +#define HW_ENET_TIPG_WR(x, v) (HW_ENET_TIPG(x).U = (v)) +#define HW_ENET_TIPG_SET(x, v) (HW_ENET_TIPG_WR(x, HW_ENET_TIPG_RD(x) | (v))) +#define HW_ENET_TIPG_CLR(x, v) (HW_ENET_TIPG_WR(x, HW_ENET_TIPG_RD(x) & ~(v))) +#define HW_ENET_TIPG_TOG(x, v) (HW_ENET_TIPG_WR(x, HW_ENET_TIPG_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TIPG bitfields + */ + +/*! + * @name Register ENET_TIPG, field IPG[4:0] (RW) + * + * Indicates the IPG, in bytes, between transmitted frames. Valid values range + * from 8 to 27. If value is less than 8, the IPG is 8. If value is greater than + * 27, the IPG is 27. + */ +//@{ +#define BP_ENET_TIPG_IPG (0U) //!< Bit position for ENET_TIPG_IPG. +#define BM_ENET_TIPG_IPG (0x0000001FU) //!< Bit mask for ENET_TIPG_IPG. +#define BS_ENET_TIPG_IPG (5U) //!< Bit field size in bits for ENET_TIPG_IPG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TIPG_IPG field. +#define BR_ENET_TIPG_IPG(x) (HW_ENET_TIPG(x).B.IPG) +#endif + +//! @brief Format value for bitfield ENET_TIPG_IPG. +#define BF_ENET_TIPG_IPG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TIPG_IPG), uint32_t) & BM_ENET_TIPG_IPG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IPG field to a new value. +#define BW_ENET_TIPG_IPG(x, v) (HW_ENET_TIPG_WR(x, (HW_ENET_TIPG_RD(x) & ~BM_ENET_TIPG_IPG) | BF_ENET_TIPG_IPG(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_FTRL - Frame Truncation Length +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_FTRL - Frame Truncation Length (RW) + * + * Reset value: 0x000007FFU + */ +typedef union _hw_enet_ftrl +{ + uint32_t U; + struct _hw_enet_ftrl_bitfields + { + uint32_t TRUNC_FL : 14; //!< [13:0] Frame Truncation Length + uint32_t RESERVED0 : 18; //!< [31:14] + } B; +} hw_enet_ftrl_t; +#endif + +/*! + * @name Constants and macros for entire ENET_FTRL register + */ +//@{ +#define HW_ENET_FTRL_ADDR(x) (REGS_ENET_BASE(x) + 0x1B0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_FTRL(x) (*(__IO hw_enet_ftrl_t *) HW_ENET_FTRL_ADDR(x)) +#define HW_ENET_FTRL_RD(x) (HW_ENET_FTRL(x).U) +#define HW_ENET_FTRL_WR(x, v) (HW_ENET_FTRL(x).U = (v)) +#define HW_ENET_FTRL_SET(x, v) (HW_ENET_FTRL_WR(x, HW_ENET_FTRL_RD(x) | (v))) +#define HW_ENET_FTRL_CLR(x, v) (HW_ENET_FTRL_WR(x, HW_ENET_FTRL_RD(x) & ~(v))) +#define HW_ENET_FTRL_TOG(x, v) (HW_ENET_FTRL_WR(x, HW_ENET_FTRL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_FTRL bitfields + */ + +/*! + * @name Register ENET_FTRL, field TRUNC_FL[13:0] (RW) + * + * Indicates the value a receive frame is truncated, if it is greater than this + * value. Must be greater than or equal to RCR[MAX_FL]. Truncation happens at + * TRUNC_FL. However, when truncation occurs, the application (FIFO) may receive + * less data, guaranteeing that it never receives more than the set limit. + */ +//@{ +#define BP_ENET_FTRL_TRUNC_FL (0U) //!< Bit position for ENET_FTRL_TRUNC_FL. +#define BM_ENET_FTRL_TRUNC_FL (0x00003FFFU) //!< Bit mask for ENET_FTRL_TRUNC_FL. +#define BS_ENET_FTRL_TRUNC_FL (14U) //!< Bit field size in bits for ENET_FTRL_TRUNC_FL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_FTRL_TRUNC_FL field. +#define BR_ENET_FTRL_TRUNC_FL(x) (HW_ENET_FTRL(x).B.TRUNC_FL) +#endif + +//! @brief Format value for bitfield ENET_FTRL_TRUNC_FL. +#define BF_ENET_FTRL_TRUNC_FL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_FTRL_TRUNC_FL), uint32_t) & BM_ENET_FTRL_TRUNC_FL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TRUNC_FL field to a new value. +#define BW_ENET_FTRL_TRUNC_FL(x, v) (HW_ENET_FTRL_WR(x, (HW_ENET_FTRL_RD(x) & ~BM_ENET_FTRL_TRUNC_FL) | BF_ENET_FTRL_TRUNC_FL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TACC - Transmit Accelerator Function Configuration +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TACC - Transmit Accelerator Function Configuration (RW) + * + * Reset value: 0x00000000U + * + * TACC controls accelerator actions when sending frames. The register can be + * changed before or after each frame, but it must remain unmodified during frame + * writes into the transmit FIFO. The TFWR[STRFWD] field must be set to use the + * checksum feature. + */ +typedef union _hw_enet_tacc +{ + uint32_t U; + struct _hw_enet_tacc_bitfields + { + uint32_t SHIFT16 : 1; //!< [0] TX FIFO Shift-16 + uint32_t RESERVED0 : 2; //!< [2:1] + uint32_t IPCHK : 1; //!< [3] + uint32_t PROCHK : 1; //!< [4] + uint32_t RESERVED1 : 27; //!< [31:5] + } B; +} hw_enet_tacc_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TACC register + */ +//@{ +#define HW_ENET_TACC_ADDR(x) (REGS_ENET_BASE(x) + 0x1C0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TACC(x) (*(__IO hw_enet_tacc_t *) HW_ENET_TACC_ADDR(x)) +#define HW_ENET_TACC_RD(x) (HW_ENET_TACC(x).U) +#define HW_ENET_TACC_WR(x, v) (HW_ENET_TACC(x).U = (v)) +#define HW_ENET_TACC_SET(x, v) (HW_ENET_TACC_WR(x, HW_ENET_TACC_RD(x) | (v))) +#define HW_ENET_TACC_CLR(x, v) (HW_ENET_TACC_WR(x, HW_ENET_TACC_RD(x) & ~(v))) +#define HW_ENET_TACC_TOG(x, v) (HW_ENET_TACC_WR(x, HW_ENET_TACC_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TACC bitfields + */ + +/*! + * @name Register ENET_TACC, field SHIFT16[0] (RW) + * + * Values: + * - 0 - Disabled. + * - 1 - Indicates to the transmit data FIFO that the written frames contain two + * additional octets before the frame data. This means the actual frame + * begins at bit 16 of the first word written into the FIFO. This function allows + * putting the frame payload on a 32-bit boundary in memory, as the 14-byte + * Ethernet header is extended to a 16-byte header. + */ +//@{ +#define BP_ENET_TACC_SHIFT16 (0U) //!< Bit position for ENET_TACC_SHIFT16. +#define BM_ENET_TACC_SHIFT16 (0x00000001U) //!< Bit mask for ENET_TACC_SHIFT16. +#define BS_ENET_TACC_SHIFT16 (1U) //!< Bit field size in bits for ENET_TACC_SHIFT16. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TACC_SHIFT16 field. +#define BR_ENET_TACC_SHIFT16(x) (BITBAND_ACCESS32(HW_ENET_TACC_ADDR(x), BP_ENET_TACC_SHIFT16)) +#endif + +//! @brief Format value for bitfield ENET_TACC_SHIFT16. +#define BF_ENET_TACC_SHIFT16(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TACC_SHIFT16), uint32_t) & BM_ENET_TACC_SHIFT16) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SHIFT16 field to a new value. +#define BW_ENET_TACC_SHIFT16(x, v) (BITBAND_ACCESS32(HW_ENET_TACC_ADDR(x), BP_ENET_TACC_SHIFT16) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TACC, field IPCHK[3] (RW) + * + * Enables insertion of IP header checksum. + * + * Values: + * - 0 - Checksum is not inserted. + * - 1 - If an IP frame is transmitted, the checksum is inserted automatically. + * The IP header checksum field must be cleared. If a non-IP frame is + * transmitted the frame is not modified. + */ +//@{ +#define BP_ENET_TACC_IPCHK (3U) //!< Bit position for ENET_TACC_IPCHK. +#define BM_ENET_TACC_IPCHK (0x00000008U) //!< Bit mask for ENET_TACC_IPCHK. +#define BS_ENET_TACC_IPCHK (1U) //!< Bit field size in bits for ENET_TACC_IPCHK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TACC_IPCHK field. +#define BR_ENET_TACC_IPCHK(x) (BITBAND_ACCESS32(HW_ENET_TACC_ADDR(x), BP_ENET_TACC_IPCHK)) +#endif + +//! @brief Format value for bitfield ENET_TACC_IPCHK. +#define BF_ENET_TACC_IPCHK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TACC_IPCHK), uint32_t) & BM_ENET_TACC_IPCHK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IPCHK field to a new value. +#define BW_ENET_TACC_IPCHK(x, v) (BITBAND_ACCESS32(HW_ENET_TACC_ADDR(x), BP_ENET_TACC_IPCHK) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TACC, field PROCHK[4] (RW) + * + * Enables insertion of protocol checksum. + * + * Values: + * - 0 - Checksum not inserted. + * - 1 - If an IP frame with a known protocol is transmitted, the checksum is + * inserted automatically into the frame. The checksum field must be cleared. + * The other frames are not modified. + */ +//@{ +#define BP_ENET_TACC_PROCHK (4U) //!< Bit position for ENET_TACC_PROCHK. +#define BM_ENET_TACC_PROCHK (0x00000010U) //!< Bit mask for ENET_TACC_PROCHK. +#define BS_ENET_TACC_PROCHK (1U) //!< Bit field size in bits for ENET_TACC_PROCHK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TACC_PROCHK field. +#define BR_ENET_TACC_PROCHK(x) (BITBAND_ACCESS32(HW_ENET_TACC_ADDR(x), BP_ENET_TACC_PROCHK)) +#endif + +//! @brief Format value for bitfield ENET_TACC_PROCHK. +#define BF_ENET_TACC_PROCHK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TACC_PROCHK), uint32_t) & BM_ENET_TACC_PROCHK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PROCHK field to a new value. +#define BW_ENET_TACC_PROCHK(x, v) (BITBAND_ACCESS32(HW_ENET_TACC_ADDR(x), BP_ENET_TACC_PROCHK) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RACC - Receive Accelerator Function Configuration +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RACC - Receive Accelerator Function Configuration (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_racc +{ + uint32_t U; + struct _hw_enet_racc_bitfields + { + uint32_t PADREM : 1; //!< [0] Enable Padding Removal For Short IP + //! Frames + uint32_t IPDIS : 1; //!< [1] Enable Discard Of Frames With Wrong IPv4 + //! Header Checksum + uint32_t PRODIS : 1; //!< [2] Enable Discard Of Frames With Wrong + //! Protocol Checksum + uint32_t RESERVED0 : 3; //!< [5:3] + uint32_t LINEDIS : 1; //!< [6] Enable Discard Of Frames With MAC + //! Layer Errors + uint32_t SHIFT16 : 1; //!< [7] RX FIFO Shift-16 + uint32_t RESERVED1 : 24; //!< [31:8] + } B; +} hw_enet_racc_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RACC register + */ +//@{ +#define HW_ENET_RACC_ADDR(x) (REGS_ENET_BASE(x) + 0x1C4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RACC(x) (*(__IO hw_enet_racc_t *) HW_ENET_RACC_ADDR(x)) +#define HW_ENET_RACC_RD(x) (HW_ENET_RACC(x).U) +#define HW_ENET_RACC_WR(x, v) (HW_ENET_RACC(x).U = (v)) +#define HW_ENET_RACC_SET(x, v) (HW_ENET_RACC_WR(x, HW_ENET_RACC_RD(x) | (v))) +#define HW_ENET_RACC_CLR(x, v) (HW_ENET_RACC_WR(x, HW_ENET_RACC_RD(x) & ~(v))) +#define HW_ENET_RACC_TOG(x, v) (HW_ENET_RACC_WR(x, HW_ENET_RACC_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_RACC bitfields + */ + +/*! + * @name Register ENET_RACC, field PADREM[0] (RW) + * + * Values: + * - 0 - Padding not removed. + * - 1 - Any bytes following the IP payload section of the frame are removed + * from the frame. + */ +//@{ +#define BP_ENET_RACC_PADREM (0U) //!< Bit position for ENET_RACC_PADREM. +#define BM_ENET_RACC_PADREM (0x00000001U) //!< Bit mask for ENET_RACC_PADREM. +#define BS_ENET_RACC_PADREM (1U) //!< Bit field size in bits for ENET_RACC_PADREM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RACC_PADREM field. +#define BR_ENET_RACC_PADREM(x) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_PADREM)) +#endif + +//! @brief Format value for bitfield ENET_RACC_PADREM. +#define BF_ENET_RACC_PADREM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RACC_PADREM), uint32_t) & BM_ENET_RACC_PADREM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PADREM field to a new value. +#define BW_ENET_RACC_PADREM(x, v) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_PADREM) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RACC, field IPDIS[1] (RW) + * + * Values: + * - 0 - Frames with wrong IPv4 header checksum are not discarded. + * - 1 - If an IPv4 frame is received with a mismatching header checksum, the + * frame is discarded. IPv6 has no header checksum and is not affected by this + * setting. Discarding is only available when the RX FIFO operates in store + * and forward mode (RSFL cleared). + */ +//@{ +#define BP_ENET_RACC_IPDIS (1U) //!< Bit position for ENET_RACC_IPDIS. +#define BM_ENET_RACC_IPDIS (0x00000002U) //!< Bit mask for ENET_RACC_IPDIS. +#define BS_ENET_RACC_IPDIS (1U) //!< Bit field size in bits for ENET_RACC_IPDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RACC_IPDIS field. +#define BR_ENET_RACC_IPDIS(x) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_IPDIS)) +#endif + +//! @brief Format value for bitfield ENET_RACC_IPDIS. +#define BF_ENET_RACC_IPDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RACC_IPDIS), uint32_t) & BM_ENET_RACC_IPDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IPDIS field to a new value. +#define BW_ENET_RACC_IPDIS(x, v) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_IPDIS) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RACC, field PRODIS[2] (RW) + * + * Values: + * - 0 - Frames with wrong checksum are not discarded. + * - 1 - If a TCP/IP, UDP/IP, or ICMP/IP frame is received that has a wrong TCP, + * UDP, or ICMP checksum, the frame is discarded. Discarding is only + * available when the RX FIFO operates in store and forward mode (RSFL cleared). + */ +//@{ +#define BP_ENET_RACC_PRODIS (2U) //!< Bit position for ENET_RACC_PRODIS. +#define BM_ENET_RACC_PRODIS (0x00000004U) //!< Bit mask for ENET_RACC_PRODIS. +#define BS_ENET_RACC_PRODIS (1U) //!< Bit field size in bits for ENET_RACC_PRODIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RACC_PRODIS field. +#define BR_ENET_RACC_PRODIS(x) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_PRODIS)) +#endif + +//! @brief Format value for bitfield ENET_RACC_PRODIS. +#define BF_ENET_RACC_PRODIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RACC_PRODIS), uint32_t) & BM_ENET_RACC_PRODIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PRODIS field to a new value. +#define BW_ENET_RACC_PRODIS(x, v) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_PRODIS) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RACC, field LINEDIS[6] (RW) + * + * Values: + * - 0 - Frames with errors are not discarded. + * - 1 - Any frame received with a CRC, length, or PHY error is automatically + * discarded and not forwarded to the user application interface. + */ +//@{ +#define BP_ENET_RACC_LINEDIS (6U) //!< Bit position for ENET_RACC_LINEDIS. +#define BM_ENET_RACC_LINEDIS (0x00000040U) //!< Bit mask for ENET_RACC_LINEDIS. +#define BS_ENET_RACC_LINEDIS (1U) //!< Bit field size in bits for ENET_RACC_LINEDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RACC_LINEDIS field. +#define BR_ENET_RACC_LINEDIS(x) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_LINEDIS)) +#endif + +//! @brief Format value for bitfield ENET_RACC_LINEDIS. +#define BF_ENET_RACC_LINEDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RACC_LINEDIS), uint32_t) & BM_ENET_RACC_LINEDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LINEDIS field to a new value. +#define BW_ENET_RACC_LINEDIS(x, v) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_LINEDIS) = (v)) +#endif +//@} + +/*! + * @name Register ENET_RACC, field SHIFT16[7] (RW) + * + * When this field is set, the actual frame data starts at bit 16 of the first + * word read from the RX FIFO aligning the Ethernet payload on a 32-bit boundary. + * This function only affects the FIFO storage and has no influence on the + * statistics, which use the actual length of the frame received. + * + * Values: + * - 0 - Disabled. + * - 1 - Instructs the MAC to write two additional bytes in front of each frame + * received into the RX FIFO. + */ +//@{ +#define BP_ENET_RACC_SHIFT16 (7U) //!< Bit position for ENET_RACC_SHIFT16. +#define BM_ENET_RACC_SHIFT16 (0x00000080U) //!< Bit mask for ENET_RACC_SHIFT16. +#define BS_ENET_RACC_SHIFT16 (1U) //!< Bit field size in bits for ENET_RACC_SHIFT16. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RACC_SHIFT16 field. +#define BR_ENET_RACC_SHIFT16(x) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_SHIFT16)) +#endif + +//! @brief Format value for bitfield ENET_RACC_SHIFT16. +#define BF_ENET_RACC_SHIFT16(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_RACC_SHIFT16), uint32_t) & BM_ENET_RACC_SHIFT16) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SHIFT16 field to a new value. +#define BW_ENET_RACC_SHIFT16(x, v) (BITBAND_ACCESS32(HW_ENET_RACC_ADDR(x), BP_ENET_RACC_SHIFT16) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_PACKETS - Tx Packet Count Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_PACKETS - Tx Packet Count Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_packets +{ + uint32_t U; + struct _hw_enet_rmon_t_packets_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_packets_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_PACKETS register + */ +//@{ +#define HW_ENET_RMON_T_PACKETS_ADDR(x) (REGS_ENET_BASE(x) + 0x204U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_PACKETS(x) (*(__I hw_enet_rmon_t_packets_t *) HW_ENET_RMON_T_PACKETS_ADDR(x)) +#define HW_ENET_RMON_T_PACKETS_RD(x) (HW_ENET_RMON_T_PACKETS(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_PACKETS bitfields + */ + +/*! + * @name Register ENET_RMON_T_PACKETS, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_PACKETS_TXPKTS (0U) //!< Bit position for ENET_RMON_T_PACKETS_TXPKTS. +#define BM_ENET_RMON_T_PACKETS_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_PACKETS_TXPKTS. +#define BS_ENET_RMON_T_PACKETS_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_PACKETS_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_PACKETS_TXPKTS field. +#define BR_ENET_RMON_T_PACKETS_TXPKTS(x) (HW_ENET_RMON_T_PACKETS(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_BC_PKT - Tx Broadcast Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_BC_PKT - Tx Broadcast Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + * + * RMON Tx Broadcast Packets + */ +typedef union _hw_enet_rmon_t_bc_pkt +{ + uint32_t U; + struct _hw_enet_rmon_t_bc_pkt_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Broadcast packets + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_bc_pkt_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_BC_PKT register + */ +//@{ +#define HW_ENET_RMON_T_BC_PKT_ADDR(x) (REGS_ENET_BASE(x) + 0x208U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_BC_PKT(x) (*(__I hw_enet_rmon_t_bc_pkt_t *) HW_ENET_RMON_T_BC_PKT_ADDR(x)) +#define HW_ENET_RMON_T_BC_PKT_RD(x) (HW_ENET_RMON_T_BC_PKT(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_BC_PKT bitfields + */ + +/*! + * @name Register ENET_RMON_T_BC_PKT, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_BC_PKT_TXPKTS (0U) //!< Bit position for ENET_RMON_T_BC_PKT_TXPKTS. +#define BM_ENET_RMON_T_BC_PKT_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_BC_PKT_TXPKTS. +#define BS_ENET_RMON_T_BC_PKT_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_BC_PKT_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_BC_PKT_TXPKTS field. +#define BR_ENET_RMON_T_BC_PKT_TXPKTS(x) (HW_ENET_RMON_T_BC_PKT(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_MC_PKT - Tx Multicast Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_MC_PKT - Tx Multicast Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_mc_pkt +{ + uint32_t U; + struct _hw_enet_rmon_t_mc_pkt_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Multicast packets + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_mc_pkt_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_MC_PKT register + */ +//@{ +#define HW_ENET_RMON_T_MC_PKT_ADDR(x) (REGS_ENET_BASE(x) + 0x20CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_MC_PKT(x) (*(__I hw_enet_rmon_t_mc_pkt_t *) HW_ENET_RMON_T_MC_PKT_ADDR(x)) +#define HW_ENET_RMON_T_MC_PKT_RD(x) (HW_ENET_RMON_T_MC_PKT(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_MC_PKT bitfields + */ + +/*! + * @name Register ENET_RMON_T_MC_PKT, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_MC_PKT_TXPKTS (0U) //!< Bit position for ENET_RMON_T_MC_PKT_TXPKTS. +#define BM_ENET_RMON_T_MC_PKT_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_MC_PKT_TXPKTS. +#define BS_ENET_RMON_T_MC_PKT_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_MC_PKT_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_MC_PKT_TXPKTS field. +#define BR_ENET_RMON_T_MC_PKT_TXPKTS(x) (HW_ENET_RMON_T_MC_PKT(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_CRC_ALIGN - Tx Packets with CRC/Align Error Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_CRC_ALIGN - Tx Packets with CRC/Align Error Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_crc_align +{ + uint32_t U; + struct _hw_enet_rmon_t_crc_align_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packets with CRC/align error + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_crc_align_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_CRC_ALIGN register + */ +//@{ +#define HW_ENET_RMON_T_CRC_ALIGN_ADDR(x) (REGS_ENET_BASE(x) + 0x210U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_CRC_ALIGN(x) (*(__I hw_enet_rmon_t_crc_align_t *) HW_ENET_RMON_T_CRC_ALIGN_ADDR(x)) +#define HW_ENET_RMON_T_CRC_ALIGN_RD(x) (HW_ENET_RMON_T_CRC_ALIGN(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_CRC_ALIGN bitfields + */ + +/*! + * @name Register ENET_RMON_T_CRC_ALIGN, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_CRC_ALIGN_TXPKTS (0U) //!< Bit position for ENET_RMON_T_CRC_ALIGN_TXPKTS. +#define BM_ENET_RMON_T_CRC_ALIGN_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_CRC_ALIGN_TXPKTS. +#define BS_ENET_RMON_T_CRC_ALIGN_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_CRC_ALIGN_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_CRC_ALIGN_TXPKTS field. +#define BR_ENET_RMON_T_CRC_ALIGN_TXPKTS(x) (HW_ENET_RMON_T_CRC_ALIGN(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_UNDERSIZE - Tx Packets Less Than Bytes and Good CRC Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_UNDERSIZE - Tx Packets Less Than Bytes and Good CRC Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_undersize +{ + uint32_t U; + struct _hw_enet_rmon_t_undersize_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_undersize_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_UNDERSIZE register + */ +//@{ +#define HW_ENET_RMON_T_UNDERSIZE_ADDR(x) (REGS_ENET_BASE(x) + 0x214U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_UNDERSIZE(x) (*(__I hw_enet_rmon_t_undersize_t *) HW_ENET_RMON_T_UNDERSIZE_ADDR(x)) +#define HW_ENET_RMON_T_UNDERSIZE_RD(x) (HW_ENET_RMON_T_UNDERSIZE(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_UNDERSIZE bitfields + */ + +/*! + * @name Register ENET_RMON_T_UNDERSIZE, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_UNDERSIZE_TXPKTS (0U) //!< Bit position for ENET_RMON_T_UNDERSIZE_TXPKTS. +#define BM_ENET_RMON_T_UNDERSIZE_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_UNDERSIZE_TXPKTS. +#define BS_ENET_RMON_T_UNDERSIZE_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_UNDERSIZE_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_UNDERSIZE_TXPKTS field. +#define BR_ENET_RMON_T_UNDERSIZE_TXPKTS(x) (HW_ENET_RMON_T_UNDERSIZE(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_OVERSIZE - Tx Packets GT MAX_FL bytes and Good CRC Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_OVERSIZE - Tx Packets GT MAX_FL bytes and Good CRC Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_oversize +{ + uint32_t U; + struct _hw_enet_rmon_t_oversize_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_oversize_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_OVERSIZE register + */ +//@{ +#define HW_ENET_RMON_T_OVERSIZE_ADDR(x) (REGS_ENET_BASE(x) + 0x218U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_OVERSIZE(x) (*(__I hw_enet_rmon_t_oversize_t *) HW_ENET_RMON_T_OVERSIZE_ADDR(x)) +#define HW_ENET_RMON_T_OVERSIZE_RD(x) (HW_ENET_RMON_T_OVERSIZE(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_OVERSIZE bitfields + */ + +/*! + * @name Register ENET_RMON_T_OVERSIZE, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_OVERSIZE_TXPKTS (0U) //!< Bit position for ENET_RMON_T_OVERSIZE_TXPKTS. +#define BM_ENET_RMON_T_OVERSIZE_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_OVERSIZE_TXPKTS. +#define BS_ENET_RMON_T_OVERSIZE_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_OVERSIZE_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_OVERSIZE_TXPKTS field. +#define BR_ENET_RMON_T_OVERSIZE_TXPKTS(x) (HW_ENET_RMON_T_OVERSIZE(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_FRAG - Tx Packets Less Than 64 Bytes and Bad CRC Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_FRAG - Tx Packets Less Than 64 Bytes and Bad CRC Statistic Register (RO) + * + * Reset value: 0x00000000U + * + * . + */ +typedef union _hw_enet_rmon_t_frag +{ + uint32_t U; + struct _hw_enet_rmon_t_frag_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_frag_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_FRAG register + */ +//@{ +#define HW_ENET_RMON_T_FRAG_ADDR(x) (REGS_ENET_BASE(x) + 0x21CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_FRAG(x) (*(__I hw_enet_rmon_t_frag_t *) HW_ENET_RMON_T_FRAG_ADDR(x)) +#define HW_ENET_RMON_T_FRAG_RD(x) (HW_ENET_RMON_T_FRAG(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_FRAG bitfields + */ + +/*! + * @name Register ENET_RMON_T_FRAG, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_FRAG_TXPKTS (0U) //!< Bit position for ENET_RMON_T_FRAG_TXPKTS. +#define BM_ENET_RMON_T_FRAG_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_FRAG_TXPKTS. +#define BS_ENET_RMON_T_FRAG_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_FRAG_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_FRAG_TXPKTS field. +#define BR_ENET_RMON_T_FRAG_TXPKTS(x) (HW_ENET_RMON_T_FRAG(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_JAB - Tx Packets Greater Than MAX_FL bytes and Bad CRC Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_JAB - Tx Packets Greater Than MAX_FL bytes and Bad CRC Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_jab +{ + uint32_t U; + struct _hw_enet_rmon_t_jab_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_jab_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_JAB register + */ +//@{ +#define HW_ENET_RMON_T_JAB_ADDR(x) (REGS_ENET_BASE(x) + 0x220U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_JAB(x) (*(__I hw_enet_rmon_t_jab_t *) HW_ENET_RMON_T_JAB_ADDR(x)) +#define HW_ENET_RMON_T_JAB_RD(x) (HW_ENET_RMON_T_JAB(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_JAB bitfields + */ + +/*! + * @name Register ENET_RMON_T_JAB, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_JAB_TXPKTS (0U) //!< Bit position for ENET_RMON_T_JAB_TXPKTS. +#define BM_ENET_RMON_T_JAB_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_JAB_TXPKTS. +#define BS_ENET_RMON_T_JAB_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_JAB_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_JAB_TXPKTS field. +#define BR_ENET_RMON_T_JAB_TXPKTS(x) (HW_ENET_RMON_T_JAB(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_COL - Tx Collision Count Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_COL - Tx Collision Count Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_col +{ + uint32_t U; + struct _hw_enet_rmon_t_col_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_col_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_COL register + */ +//@{ +#define HW_ENET_RMON_T_COL_ADDR(x) (REGS_ENET_BASE(x) + 0x224U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_COL(x) (*(__I hw_enet_rmon_t_col_t *) HW_ENET_RMON_T_COL_ADDR(x)) +#define HW_ENET_RMON_T_COL_RD(x) (HW_ENET_RMON_T_COL(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_COL bitfields + */ + +/*! + * @name Register ENET_RMON_T_COL, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_COL_TXPKTS (0U) //!< Bit position for ENET_RMON_T_COL_TXPKTS. +#define BM_ENET_RMON_T_COL_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_COL_TXPKTS. +#define BS_ENET_RMON_T_COL_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_COL_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_COL_TXPKTS field. +#define BR_ENET_RMON_T_COL_TXPKTS(x) (HW_ENET_RMON_T_COL(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_P64 - Tx 64-Byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_P64 - Tx 64-Byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + * + * . + */ +typedef union _hw_enet_rmon_t_p64 +{ + uint32_t U; + struct _hw_enet_rmon_t_p64_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_p64_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_P64 register + */ +//@{ +#define HW_ENET_RMON_T_P64_ADDR(x) (REGS_ENET_BASE(x) + 0x228U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_P64(x) (*(__I hw_enet_rmon_t_p64_t *) HW_ENET_RMON_T_P64_ADDR(x)) +#define HW_ENET_RMON_T_P64_RD(x) (HW_ENET_RMON_T_P64(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_P64 bitfields + */ + +/*! + * @name Register ENET_RMON_T_P64, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_P64_TXPKTS (0U) //!< Bit position for ENET_RMON_T_P64_TXPKTS. +#define BM_ENET_RMON_T_P64_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_P64_TXPKTS. +#define BS_ENET_RMON_T_P64_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_P64_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_P64_TXPKTS field. +#define BR_ENET_RMON_T_P64_TXPKTS(x) (HW_ENET_RMON_T_P64(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_P65TO127 - Tx 65- to 127-byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_P65TO127 - Tx 65- to 127-byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_p65to127 +{ + uint32_t U; + struct _hw_enet_rmon_t_p65to127_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_p65to127_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_P65TO127 register + */ +//@{ +#define HW_ENET_RMON_T_P65TO127_ADDR(x) (REGS_ENET_BASE(x) + 0x22CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_P65TO127(x) (*(__I hw_enet_rmon_t_p65to127_t *) HW_ENET_RMON_T_P65TO127_ADDR(x)) +#define HW_ENET_RMON_T_P65TO127_RD(x) (HW_ENET_RMON_T_P65TO127(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_P65TO127 bitfields + */ + +/*! + * @name Register ENET_RMON_T_P65TO127, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_P65TO127_TXPKTS (0U) //!< Bit position for ENET_RMON_T_P65TO127_TXPKTS. +#define BM_ENET_RMON_T_P65TO127_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_P65TO127_TXPKTS. +#define BS_ENET_RMON_T_P65TO127_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_P65TO127_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_P65TO127_TXPKTS field. +#define BR_ENET_RMON_T_P65TO127_TXPKTS(x) (HW_ENET_RMON_T_P65TO127(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_P128TO255 - Tx 128- to 255-byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_P128TO255 - Tx 128- to 255-byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_p128to255 +{ + uint32_t U; + struct _hw_enet_rmon_t_p128to255_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_p128to255_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_P128TO255 register + */ +//@{ +#define HW_ENET_RMON_T_P128TO255_ADDR(x) (REGS_ENET_BASE(x) + 0x230U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_P128TO255(x) (*(__I hw_enet_rmon_t_p128to255_t *) HW_ENET_RMON_T_P128TO255_ADDR(x)) +#define HW_ENET_RMON_T_P128TO255_RD(x) (HW_ENET_RMON_T_P128TO255(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_P128TO255 bitfields + */ + +/*! + * @name Register ENET_RMON_T_P128TO255, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_P128TO255_TXPKTS (0U) //!< Bit position for ENET_RMON_T_P128TO255_TXPKTS. +#define BM_ENET_RMON_T_P128TO255_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_P128TO255_TXPKTS. +#define BS_ENET_RMON_T_P128TO255_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_P128TO255_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_P128TO255_TXPKTS field. +#define BR_ENET_RMON_T_P128TO255_TXPKTS(x) (HW_ENET_RMON_T_P128TO255(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_P256TO511 - Tx 256- to 511-byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_P256TO511 - Tx 256- to 511-byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_p256to511 +{ + uint32_t U; + struct _hw_enet_rmon_t_p256to511_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_p256to511_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_P256TO511 register + */ +//@{ +#define HW_ENET_RMON_T_P256TO511_ADDR(x) (REGS_ENET_BASE(x) + 0x234U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_P256TO511(x) (*(__I hw_enet_rmon_t_p256to511_t *) HW_ENET_RMON_T_P256TO511_ADDR(x)) +#define HW_ENET_RMON_T_P256TO511_RD(x) (HW_ENET_RMON_T_P256TO511(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_P256TO511 bitfields + */ + +/*! + * @name Register ENET_RMON_T_P256TO511, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_P256TO511_TXPKTS (0U) //!< Bit position for ENET_RMON_T_P256TO511_TXPKTS. +#define BM_ENET_RMON_T_P256TO511_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_P256TO511_TXPKTS. +#define BS_ENET_RMON_T_P256TO511_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_P256TO511_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_P256TO511_TXPKTS field. +#define BR_ENET_RMON_T_P256TO511_TXPKTS(x) (HW_ENET_RMON_T_P256TO511(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_P512TO1023 - Tx 512- to 1023-byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_P512TO1023 - Tx 512- to 1023-byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + * + * . + */ +typedef union _hw_enet_rmon_t_p512to1023 +{ + uint32_t U; + struct _hw_enet_rmon_t_p512to1023_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_p512to1023_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_P512TO1023 register + */ +//@{ +#define HW_ENET_RMON_T_P512TO1023_ADDR(x) (REGS_ENET_BASE(x) + 0x238U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_P512TO1023(x) (*(__I hw_enet_rmon_t_p512to1023_t *) HW_ENET_RMON_T_P512TO1023_ADDR(x)) +#define HW_ENET_RMON_T_P512TO1023_RD(x) (HW_ENET_RMON_T_P512TO1023(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_P512TO1023 bitfields + */ + +/*! + * @name Register ENET_RMON_T_P512TO1023, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_P512TO1023_TXPKTS (0U) //!< Bit position for ENET_RMON_T_P512TO1023_TXPKTS. +#define BM_ENET_RMON_T_P512TO1023_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_P512TO1023_TXPKTS. +#define BS_ENET_RMON_T_P512TO1023_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_P512TO1023_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_P512TO1023_TXPKTS field. +#define BR_ENET_RMON_T_P512TO1023_TXPKTS(x) (HW_ENET_RMON_T_P512TO1023(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_P1024TO2047 - Tx 1024- to 2047-byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_P1024TO2047 - Tx 1024- to 2047-byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_p1024to2047 +{ + uint32_t U; + struct _hw_enet_rmon_t_p1024to2047_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_p1024to2047_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_P1024TO2047 register + */ +//@{ +#define HW_ENET_RMON_T_P1024TO2047_ADDR(x) (REGS_ENET_BASE(x) + 0x23CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_P1024TO2047(x) (*(__I hw_enet_rmon_t_p1024to2047_t *) HW_ENET_RMON_T_P1024TO2047_ADDR(x)) +#define HW_ENET_RMON_T_P1024TO2047_RD(x) (HW_ENET_RMON_T_P1024TO2047(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_P1024TO2047 bitfields + */ + +/*! + * @name Register ENET_RMON_T_P1024TO2047, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_P1024TO2047_TXPKTS (0U) //!< Bit position for ENET_RMON_T_P1024TO2047_TXPKTS. +#define BM_ENET_RMON_T_P1024TO2047_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_P1024TO2047_TXPKTS. +#define BS_ENET_RMON_T_P1024TO2047_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_P1024TO2047_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_P1024TO2047_TXPKTS field. +#define BR_ENET_RMON_T_P1024TO2047_TXPKTS(x) (HW_ENET_RMON_T_P1024TO2047(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_P_GTE2048 - Tx Packets Greater Than 2048 Bytes Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_P_GTE2048 - Tx Packets Greater Than 2048 Bytes Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_p_gte2048 +{ + uint32_t U; + struct _hw_enet_rmon_t_p_gte2048_bitfields + { + uint32_t TXPKTS : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_t_p_gte2048_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_P_GTE2048 register + */ +//@{ +#define HW_ENET_RMON_T_P_GTE2048_ADDR(x) (REGS_ENET_BASE(x) + 0x240U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_P_GTE2048(x) (*(__I hw_enet_rmon_t_p_gte2048_t *) HW_ENET_RMON_T_P_GTE2048_ADDR(x)) +#define HW_ENET_RMON_T_P_GTE2048_RD(x) (HW_ENET_RMON_T_P_GTE2048(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_P_GTE2048 bitfields + */ + +/*! + * @name Register ENET_RMON_T_P_GTE2048, field TXPKTS[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_P_GTE2048_TXPKTS (0U) //!< Bit position for ENET_RMON_T_P_GTE2048_TXPKTS. +#define BM_ENET_RMON_T_P_GTE2048_TXPKTS (0x0000FFFFU) //!< Bit mask for ENET_RMON_T_P_GTE2048_TXPKTS. +#define BS_ENET_RMON_T_P_GTE2048_TXPKTS (16U) //!< Bit field size in bits for ENET_RMON_T_P_GTE2048_TXPKTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_P_GTE2048_TXPKTS field. +#define BR_ENET_RMON_T_P_GTE2048_TXPKTS(x) (HW_ENET_RMON_T_P_GTE2048(x).B.TXPKTS) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_T_OCTETS - Tx Octets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_T_OCTETS - Tx Octets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_t_octets +{ + uint32_t U; + struct _hw_enet_rmon_t_octets_bitfields + { + uint32_t TXOCTS : 32; //!< [31:0] Octet count + } B; +} hw_enet_rmon_t_octets_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_T_OCTETS register + */ +//@{ +#define HW_ENET_RMON_T_OCTETS_ADDR(x) (REGS_ENET_BASE(x) + 0x244U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_T_OCTETS(x) (*(__I hw_enet_rmon_t_octets_t *) HW_ENET_RMON_T_OCTETS_ADDR(x)) +#define HW_ENET_RMON_T_OCTETS_RD(x) (HW_ENET_RMON_T_OCTETS(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_T_OCTETS bitfields + */ + +/*! + * @name Register ENET_RMON_T_OCTETS, field TXOCTS[31:0] (RO) + */ +//@{ +#define BP_ENET_RMON_T_OCTETS_TXOCTS (0U) //!< Bit position for ENET_RMON_T_OCTETS_TXOCTS. +#define BM_ENET_RMON_T_OCTETS_TXOCTS (0xFFFFFFFFU) //!< Bit mask for ENET_RMON_T_OCTETS_TXOCTS. +#define BS_ENET_RMON_T_OCTETS_TXOCTS (32U) //!< Bit field size in bits for ENET_RMON_T_OCTETS_TXOCTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_T_OCTETS_TXOCTS field. +#define BR_ENET_RMON_T_OCTETS_TXOCTS(x) (HW_ENET_RMON_T_OCTETS(x).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_FRAME_OK - Frames Transmitted OK Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_FRAME_OK - Frames Transmitted OK Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_t_frame_ok +{ + uint32_t U; + struct _hw_enet_ieee_t_frame_ok_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_t_frame_ok_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_FRAME_OK register + */ +//@{ +#define HW_ENET_IEEE_T_FRAME_OK_ADDR(x) (REGS_ENET_BASE(x) + 0x24CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_FRAME_OK(x) (*(__I hw_enet_ieee_t_frame_ok_t *) HW_ENET_IEEE_T_FRAME_OK_ADDR(x)) +#define HW_ENET_IEEE_T_FRAME_OK_RD(x) (HW_ENET_IEEE_T_FRAME_OK(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_FRAME_OK bitfields + */ + +/*! + * @name Register ENET_IEEE_T_FRAME_OK, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_FRAME_OK_COUNT (0U) //!< Bit position for ENET_IEEE_T_FRAME_OK_COUNT. +#define BM_ENET_IEEE_T_FRAME_OK_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_T_FRAME_OK_COUNT. +#define BS_ENET_IEEE_T_FRAME_OK_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_T_FRAME_OK_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_FRAME_OK_COUNT field. +#define BR_ENET_IEEE_T_FRAME_OK_COUNT(x) (HW_ENET_IEEE_T_FRAME_OK(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_1COL - Frames Transmitted with Single Collision Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_1COL - Frames Transmitted with Single Collision Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_t_1col +{ + uint32_t U; + struct _hw_enet_ieee_t_1col_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_t_1col_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_1COL register + */ +//@{ +#define HW_ENET_IEEE_T_1COL_ADDR(x) (REGS_ENET_BASE(x) + 0x250U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_1COL(x) (*(__I hw_enet_ieee_t_1col_t *) HW_ENET_IEEE_T_1COL_ADDR(x)) +#define HW_ENET_IEEE_T_1COL_RD(x) (HW_ENET_IEEE_T_1COL(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_1COL bitfields + */ + +/*! + * @name Register ENET_IEEE_T_1COL, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_1COL_COUNT (0U) //!< Bit position for ENET_IEEE_T_1COL_COUNT. +#define BM_ENET_IEEE_T_1COL_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_T_1COL_COUNT. +#define BS_ENET_IEEE_T_1COL_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_T_1COL_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_1COL_COUNT field. +#define BR_ENET_IEEE_T_1COL_COUNT(x) (HW_ENET_IEEE_T_1COL(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_MCOL - Frames Transmitted with Multiple Collisions Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_MCOL - Frames Transmitted with Multiple Collisions Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_t_mcol +{ + uint32_t U; + struct _hw_enet_ieee_t_mcol_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_t_mcol_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_MCOL register + */ +//@{ +#define HW_ENET_IEEE_T_MCOL_ADDR(x) (REGS_ENET_BASE(x) + 0x254U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_MCOL(x) (*(__I hw_enet_ieee_t_mcol_t *) HW_ENET_IEEE_T_MCOL_ADDR(x)) +#define HW_ENET_IEEE_T_MCOL_RD(x) (HW_ENET_IEEE_T_MCOL(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_MCOL bitfields + */ + +/*! + * @name Register ENET_IEEE_T_MCOL, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_MCOL_COUNT (0U) //!< Bit position for ENET_IEEE_T_MCOL_COUNT. +#define BM_ENET_IEEE_T_MCOL_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_T_MCOL_COUNT. +#define BS_ENET_IEEE_T_MCOL_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_T_MCOL_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_MCOL_COUNT field. +#define BR_ENET_IEEE_T_MCOL_COUNT(x) (HW_ENET_IEEE_T_MCOL(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_DEF - Frames Transmitted after Deferral Delay Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_DEF - Frames Transmitted after Deferral Delay Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_t_def +{ + uint32_t U; + struct _hw_enet_ieee_t_def_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_t_def_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_DEF register + */ +//@{ +#define HW_ENET_IEEE_T_DEF_ADDR(x) (REGS_ENET_BASE(x) + 0x258U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_DEF(x) (*(__I hw_enet_ieee_t_def_t *) HW_ENET_IEEE_T_DEF_ADDR(x)) +#define HW_ENET_IEEE_T_DEF_RD(x) (HW_ENET_IEEE_T_DEF(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_DEF bitfields + */ + +/*! + * @name Register ENET_IEEE_T_DEF, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_DEF_COUNT (0U) //!< Bit position for ENET_IEEE_T_DEF_COUNT. +#define BM_ENET_IEEE_T_DEF_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_T_DEF_COUNT. +#define BS_ENET_IEEE_T_DEF_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_T_DEF_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_DEF_COUNT field. +#define BR_ENET_IEEE_T_DEF_COUNT(x) (HW_ENET_IEEE_T_DEF(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_LCOL - Frames Transmitted with Late Collision Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_LCOL - Frames Transmitted with Late Collision Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_t_lcol +{ + uint32_t U; + struct _hw_enet_ieee_t_lcol_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_t_lcol_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_LCOL register + */ +//@{ +#define HW_ENET_IEEE_T_LCOL_ADDR(x) (REGS_ENET_BASE(x) + 0x25CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_LCOL(x) (*(__I hw_enet_ieee_t_lcol_t *) HW_ENET_IEEE_T_LCOL_ADDR(x)) +#define HW_ENET_IEEE_T_LCOL_RD(x) (HW_ENET_IEEE_T_LCOL(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_LCOL bitfields + */ + +/*! + * @name Register ENET_IEEE_T_LCOL, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_LCOL_COUNT (0U) //!< Bit position for ENET_IEEE_T_LCOL_COUNT. +#define BM_ENET_IEEE_T_LCOL_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_T_LCOL_COUNT. +#define BS_ENET_IEEE_T_LCOL_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_T_LCOL_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_LCOL_COUNT field. +#define BR_ENET_IEEE_T_LCOL_COUNT(x) (HW_ENET_IEEE_T_LCOL(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_EXCOL - Frames Transmitted with Excessive Collisions Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_EXCOL - Frames Transmitted with Excessive Collisions Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_t_excol +{ + uint32_t U; + struct _hw_enet_ieee_t_excol_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_t_excol_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_EXCOL register + */ +//@{ +#define HW_ENET_IEEE_T_EXCOL_ADDR(x) (REGS_ENET_BASE(x) + 0x260U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_EXCOL(x) (*(__I hw_enet_ieee_t_excol_t *) HW_ENET_IEEE_T_EXCOL_ADDR(x)) +#define HW_ENET_IEEE_T_EXCOL_RD(x) (HW_ENET_IEEE_T_EXCOL(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_EXCOL bitfields + */ + +/*! + * @name Register ENET_IEEE_T_EXCOL, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_EXCOL_COUNT (0U) //!< Bit position for ENET_IEEE_T_EXCOL_COUNT. +#define BM_ENET_IEEE_T_EXCOL_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_T_EXCOL_COUNT. +#define BS_ENET_IEEE_T_EXCOL_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_T_EXCOL_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_EXCOL_COUNT field. +#define BR_ENET_IEEE_T_EXCOL_COUNT(x) (HW_ENET_IEEE_T_EXCOL(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_MACERR - Frames Transmitted with Tx FIFO Underrun Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_MACERR - Frames Transmitted with Tx FIFO Underrun Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_t_macerr +{ + uint32_t U; + struct _hw_enet_ieee_t_macerr_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_t_macerr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_MACERR register + */ +//@{ +#define HW_ENET_IEEE_T_MACERR_ADDR(x) (REGS_ENET_BASE(x) + 0x264U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_MACERR(x) (*(__I hw_enet_ieee_t_macerr_t *) HW_ENET_IEEE_T_MACERR_ADDR(x)) +#define HW_ENET_IEEE_T_MACERR_RD(x) (HW_ENET_IEEE_T_MACERR(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_MACERR bitfields + */ + +/*! + * @name Register ENET_IEEE_T_MACERR, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_MACERR_COUNT (0U) //!< Bit position for ENET_IEEE_T_MACERR_COUNT. +#define BM_ENET_IEEE_T_MACERR_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_T_MACERR_COUNT. +#define BS_ENET_IEEE_T_MACERR_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_T_MACERR_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_MACERR_COUNT field. +#define BR_ENET_IEEE_T_MACERR_COUNT(x) (HW_ENET_IEEE_T_MACERR(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_CSERR - Frames Transmitted with Carrier Sense Error Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_CSERR - Frames Transmitted with Carrier Sense Error Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_t_cserr +{ + uint32_t U; + struct _hw_enet_ieee_t_cserr_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_t_cserr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_CSERR register + */ +//@{ +#define HW_ENET_IEEE_T_CSERR_ADDR(x) (REGS_ENET_BASE(x) + 0x268U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_CSERR(x) (*(__I hw_enet_ieee_t_cserr_t *) HW_ENET_IEEE_T_CSERR_ADDR(x)) +#define HW_ENET_IEEE_T_CSERR_RD(x) (HW_ENET_IEEE_T_CSERR(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_CSERR bitfields + */ + +/*! + * @name Register ENET_IEEE_T_CSERR, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_CSERR_COUNT (0U) //!< Bit position for ENET_IEEE_T_CSERR_COUNT. +#define BM_ENET_IEEE_T_CSERR_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_T_CSERR_COUNT. +#define BS_ENET_IEEE_T_CSERR_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_T_CSERR_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_CSERR_COUNT field. +#define BR_ENET_IEEE_T_CSERR_COUNT(x) (HW_ENET_IEEE_T_CSERR(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_FDXFC - Flow Control Pause Frames Transmitted Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_FDXFC - Flow Control Pause Frames Transmitted Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_t_fdxfc +{ + uint32_t U; + struct _hw_enet_ieee_t_fdxfc_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_t_fdxfc_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_FDXFC register + */ +//@{ +#define HW_ENET_IEEE_T_FDXFC_ADDR(x) (REGS_ENET_BASE(x) + 0x270U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_FDXFC(x) (*(__I hw_enet_ieee_t_fdxfc_t *) HW_ENET_IEEE_T_FDXFC_ADDR(x)) +#define HW_ENET_IEEE_T_FDXFC_RD(x) (HW_ENET_IEEE_T_FDXFC(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_FDXFC bitfields + */ + +/*! + * @name Register ENET_IEEE_T_FDXFC, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_FDXFC_COUNT (0U) //!< Bit position for ENET_IEEE_T_FDXFC_COUNT. +#define BM_ENET_IEEE_T_FDXFC_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_T_FDXFC_COUNT. +#define BS_ENET_IEEE_T_FDXFC_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_T_FDXFC_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_FDXFC_COUNT field. +#define BR_ENET_IEEE_T_FDXFC_COUNT(x) (HW_ENET_IEEE_T_FDXFC(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_T_OCTETS_OK - Octet Count for Frames Transmitted w/o Error Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_T_OCTETS_OK - Octet Count for Frames Transmitted w/o Error Statistic Register (RO) + * + * Reset value: 0x00000000U + * + * Counts total octets (includes header and FCS fields). + */ +typedef union _hw_enet_ieee_t_octets_ok +{ + uint32_t U; + struct _hw_enet_ieee_t_octets_ok_bitfields + { + uint32_t COUNT : 32; //!< [31:0] Octet count + } B; +} hw_enet_ieee_t_octets_ok_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_T_OCTETS_OK register + */ +//@{ +#define HW_ENET_IEEE_T_OCTETS_OK_ADDR(x) (REGS_ENET_BASE(x) + 0x274U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_T_OCTETS_OK(x) (*(__I hw_enet_ieee_t_octets_ok_t *) HW_ENET_IEEE_T_OCTETS_OK_ADDR(x)) +#define HW_ENET_IEEE_T_OCTETS_OK_RD(x) (HW_ENET_IEEE_T_OCTETS_OK(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_T_OCTETS_OK bitfields + */ + +/*! + * @name Register ENET_IEEE_T_OCTETS_OK, field COUNT[31:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_T_OCTETS_OK_COUNT (0U) //!< Bit position for ENET_IEEE_T_OCTETS_OK_COUNT. +#define BM_ENET_IEEE_T_OCTETS_OK_COUNT (0xFFFFFFFFU) //!< Bit mask for ENET_IEEE_T_OCTETS_OK_COUNT. +#define BS_ENET_IEEE_T_OCTETS_OK_COUNT (32U) //!< Bit field size in bits for ENET_IEEE_T_OCTETS_OK_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_T_OCTETS_OK_COUNT field. +#define BR_ENET_IEEE_T_OCTETS_OK_COUNT(x) (HW_ENET_IEEE_T_OCTETS_OK(x).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_PACKETS - Rx Packet Count Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_PACKETS - Rx Packet Count Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_packets +{ + uint32_t U; + struct _hw_enet_rmon_r_packets_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_packets_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_PACKETS register + */ +//@{ +#define HW_ENET_RMON_R_PACKETS_ADDR(x) (REGS_ENET_BASE(x) + 0x284U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_PACKETS(x) (*(__I hw_enet_rmon_r_packets_t *) HW_ENET_RMON_R_PACKETS_ADDR(x)) +#define HW_ENET_RMON_R_PACKETS_RD(x) (HW_ENET_RMON_R_PACKETS(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_PACKETS bitfields + */ + +/*! + * @name Register ENET_RMON_R_PACKETS, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_PACKETS_COUNT (0U) //!< Bit position for ENET_RMON_R_PACKETS_COUNT. +#define BM_ENET_RMON_R_PACKETS_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_PACKETS_COUNT. +#define BS_ENET_RMON_R_PACKETS_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_PACKETS_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_PACKETS_COUNT field. +#define BR_ENET_RMON_R_PACKETS_COUNT(x) (HW_ENET_RMON_R_PACKETS(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_BC_PKT - Rx Broadcast Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_BC_PKT - Rx Broadcast Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_bc_pkt +{ + uint32_t U; + struct _hw_enet_rmon_r_bc_pkt_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_bc_pkt_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_BC_PKT register + */ +//@{ +#define HW_ENET_RMON_R_BC_PKT_ADDR(x) (REGS_ENET_BASE(x) + 0x288U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_BC_PKT(x) (*(__I hw_enet_rmon_r_bc_pkt_t *) HW_ENET_RMON_R_BC_PKT_ADDR(x)) +#define HW_ENET_RMON_R_BC_PKT_RD(x) (HW_ENET_RMON_R_BC_PKT(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_BC_PKT bitfields + */ + +/*! + * @name Register ENET_RMON_R_BC_PKT, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_BC_PKT_COUNT (0U) //!< Bit position for ENET_RMON_R_BC_PKT_COUNT. +#define BM_ENET_RMON_R_BC_PKT_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_BC_PKT_COUNT. +#define BS_ENET_RMON_R_BC_PKT_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_BC_PKT_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_BC_PKT_COUNT field. +#define BR_ENET_RMON_R_BC_PKT_COUNT(x) (HW_ENET_RMON_R_BC_PKT(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_MC_PKT - Rx Multicast Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_MC_PKT - Rx Multicast Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_mc_pkt +{ + uint32_t U; + struct _hw_enet_rmon_r_mc_pkt_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_mc_pkt_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_MC_PKT register + */ +//@{ +#define HW_ENET_RMON_R_MC_PKT_ADDR(x) (REGS_ENET_BASE(x) + 0x28CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_MC_PKT(x) (*(__I hw_enet_rmon_r_mc_pkt_t *) HW_ENET_RMON_R_MC_PKT_ADDR(x)) +#define HW_ENET_RMON_R_MC_PKT_RD(x) (HW_ENET_RMON_R_MC_PKT(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_MC_PKT bitfields + */ + +/*! + * @name Register ENET_RMON_R_MC_PKT, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_MC_PKT_COUNT (0U) //!< Bit position for ENET_RMON_R_MC_PKT_COUNT. +#define BM_ENET_RMON_R_MC_PKT_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_MC_PKT_COUNT. +#define BS_ENET_RMON_R_MC_PKT_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_MC_PKT_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_MC_PKT_COUNT field. +#define BR_ENET_RMON_R_MC_PKT_COUNT(x) (HW_ENET_RMON_R_MC_PKT(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_CRC_ALIGN - Rx Packets with CRC/Align Error Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_CRC_ALIGN - Rx Packets with CRC/Align Error Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_crc_align +{ + uint32_t U; + struct _hw_enet_rmon_r_crc_align_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_crc_align_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_CRC_ALIGN register + */ +//@{ +#define HW_ENET_RMON_R_CRC_ALIGN_ADDR(x) (REGS_ENET_BASE(x) + 0x290U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_CRC_ALIGN(x) (*(__I hw_enet_rmon_r_crc_align_t *) HW_ENET_RMON_R_CRC_ALIGN_ADDR(x)) +#define HW_ENET_RMON_R_CRC_ALIGN_RD(x) (HW_ENET_RMON_R_CRC_ALIGN(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_CRC_ALIGN bitfields + */ + +/*! + * @name Register ENET_RMON_R_CRC_ALIGN, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_CRC_ALIGN_COUNT (0U) //!< Bit position for ENET_RMON_R_CRC_ALIGN_COUNT. +#define BM_ENET_RMON_R_CRC_ALIGN_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_CRC_ALIGN_COUNT. +#define BS_ENET_RMON_R_CRC_ALIGN_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_CRC_ALIGN_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_CRC_ALIGN_COUNT field. +#define BR_ENET_RMON_R_CRC_ALIGN_COUNT(x) (HW_ENET_RMON_R_CRC_ALIGN(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_UNDERSIZE - Rx Packets with Less Than 64 Bytes and Good CRC Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_UNDERSIZE - Rx Packets with Less Than 64 Bytes and Good CRC Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_undersize +{ + uint32_t U; + struct _hw_enet_rmon_r_undersize_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_undersize_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_UNDERSIZE register + */ +//@{ +#define HW_ENET_RMON_R_UNDERSIZE_ADDR(x) (REGS_ENET_BASE(x) + 0x294U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_UNDERSIZE(x) (*(__I hw_enet_rmon_r_undersize_t *) HW_ENET_RMON_R_UNDERSIZE_ADDR(x)) +#define HW_ENET_RMON_R_UNDERSIZE_RD(x) (HW_ENET_RMON_R_UNDERSIZE(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_UNDERSIZE bitfields + */ + +/*! + * @name Register ENET_RMON_R_UNDERSIZE, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_UNDERSIZE_COUNT (0U) //!< Bit position for ENET_RMON_R_UNDERSIZE_COUNT. +#define BM_ENET_RMON_R_UNDERSIZE_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_UNDERSIZE_COUNT. +#define BS_ENET_RMON_R_UNDERSIZE_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_UNDERSIZE_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_UNDERSIZE_COUNT field. +#define BR_ENET_RMON_R_UNDERSIZE_COUNT(x) (HW_ENET_RMON_R_UNDERSIZE(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_OVERSIZE - Rx Packets Greater Than MAX_FL and Good CRC Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_OVERSIZE - Rx Packets Greater Than MAX_FL and Good CRC Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_oversize +{ + uint32_t U; + struct _hw_enet_rmon_r_oversize_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_oversize_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_OVERSIZE register + */ +//@{ +#define HW_ENET_RMON_R_OVERSIZE_ADDR(x) (REGS_ENET_BASE(x) + 0x298U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_OVERSIZE(x) (*(__I hw_enet_rmon_r_oversize_t *) HW_ENET_RMON_R_OVERSIZE_ADDR(x)) +#define HW_ENET_RMON_R_OVERSIZE_RD(x) (HW_ENET_RMON_R_OVERSIZE(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_OVERSIZE bitfields + */ + +/*! + * @name Register ENET_RMON_R_OVERSIZE, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_OVERSIZE_COUNT (0U) //!< Bit position for ENET_RMON_R_OVERSIZE_COUNT. +#define BM_ENET_RMON_R_OVERSIZE_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_OVERSIZE_COUNT. +#define BS_ENET_RMON_R_OVERSIZE_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_OVERSIZE_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_OVERSIZE_COUNT field. +#define BR_ENET_RMON_R_OVERSIZE_COUNT(x) (HW_ENET_RMON_R_OVERSIZE(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_FRAG - Rx Packets Less Than 64 Bytes and Bad CRC Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_FRAG - Rx Packets Less Than 64 Bytes and Bad CRC Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_frag +{ + uint32_t U; + struct _hw_enet_rmon_r_frag_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_frag_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_FRAG register + */ +//@{ +#define HW_ENET_RMON_R_FRAG_ADDR(x) (REGS_ENET_BASE(x) + 0x29CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_FRAG(x) (*(__I hw_enet_rmon_r_frag_t *) HW_ENET_RMON_R_FRAG_ADDR(x)) +#define HW_ENET_RMON_R_FRAG_RD(x) (HW_ENET_RMON_R_FRAG(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_FRAG bitfields + */ + +/*! + * @name Register ENET_RMON_R_FRAG, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_FRAG_COUNT (0U) //!< Bit position for ENET_RMON_R_FRAG_COUNT. +#define BM_ENET_RMON_R_FRAG_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_FRAG_COUNT. +#define BS_ENET_RMON_R_FRAG_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_FRAG_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_FRAG_COUNT field. +#define BR_ENET_RMON_R_FRAG_COUNT(x) (HW_ENET_RMON_R_FRAG(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_JAB - Rx Packets Greater Than MAX_FL Bytes and Bad CRC Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_JAB - Rx Packets Greater Than MAX_FL Bytes and Bad CRC Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_jab +{ + uint32_t U; + struct _hw_enet_rmon_r_jab_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_jab_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_JAB register + */ +//@{ +#define HW_ENET_RMON_R_JAB_ADDR(x) (REGS_ENET_BASE(x) + 0x2A0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_JAB(x) (*(__I hw_enet_rmon_r_jab_t *) HW_ENET_RMON_R_JAB_ADDR(x)) +#define HW_ENET_RMON_R_JAB_RD(x) (HW_ENET_RMON_R_JAB(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_JAB bitfields + */ + +/*! + * @name Register ENET_RMON_R_JAB, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_JAB_COUNT (0U) //!< Bit position for ENET_RMON_R_JAB_COUNT. +#define BM_ENET_RMON_R_JAB_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_JAB_COUNT. +#define BS_ENET_RMON_R_JAB_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_JAB_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_JAB_COUNT field. +#define BR_ENET_RMON_R_JAB_COUNT(x) (HW_ENET_RMON_R_JAB(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_P64 - Rx 64-Byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_P64 - Rx 64-Byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_p64 +{ + uint32_t U; + struct _hw_enet_rmon_r_p64_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_p64_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_P64 register + */ +//@{ +#define HW_ENET_RMON_R_P64_ADDR(x) (REGS_ENET_BASE(x) + 0x2A8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_P64(x) (*(__I hw_enet_rmon_r_p64_t *) HW_ENET_RMON_R_P64_ADDR(x)) +#define HW_ENET_RMON_R_P64_RD(x) (HW_ENET_RMON_R_P64(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_P64 bitfields + */ + +/*! + * @name Register ENET_RMON_R_P64, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_P64_COUNT (0U) //!< Bit position for ENET_RMON_R_P64_COUNT. +#define BM_ENET_RMON_R_P64_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_P64_COUNT. +#define BS_ENET_RMON_R_P64_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_P64_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_P64_COUNT field. +#define BR_ENET_RMON_R_P64_COUNT(x) (HW_ENET_RMON_R_P64(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_P65TO127 - Rx 65- to 127-Byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_P65TO127 - Rx 65- to 127-Byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_p65to127 +{ + uint32_t U; + struct _hw_enet_rmon_r_p65to127_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_p65to127_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_P65TO127 register + */ +//@{ +#define HW_ENET_RMON_R_P65TO127_ADDR(x) (REGS_ENET_BASE(x) + 0x2ACU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_P65TO127(x) (*(__I hw_enet_rmon_r_p65to127_t *) HW_ENET_RMON_R_P65TO127_ADDR(x)) +#define HW_ENET_RMON_R_P65TO127_RD(x) (HW_ENET_RMON_R_P65TO127(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_P65TO127 bitfields + */ + +/*! + * @name Register ENET_RMON_R_P65TO127, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_P65TO127_COUNT (0U) //!< Bit position for ENET_RMON_R_P65TO127_COUNT. +#define BM_ENET_RMON_R_P65TO127_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_P65TO127_COUNT. +#define BS_ENET_RMON_R_P65TO127_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_P65TO127_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_P65TO127_COUNT field. +#define BR_ENET_RMON_R_P65TO127_COUNT(x) (HW_ENET_RMON_R_P65TO127(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_P128TO255 - Rx 128- to 255-Byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_P128TO255 - Rx 128- to 255-Byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_p128to255 +{ + uint32_t U; + struct _hw_enet_rmon_r_p128to255_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_p128to255_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_P128TO255 register + */ +//@{ +#define HW_ENET_RMON_R_P128TO255_ADDR(x) (REGS_ENET_BASE(x) + 0x2B0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_P128TO255(x) (*(__I hw_enet_rmon_r_p128to255_t *) HW_ENET_RMON_R_P128TO255_ADDR(x)) +#define HW_ENET_RMON_R_P128TO255_RD(x) (HW_ENET_RMON_R_P128TO255(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_P128TO255 bitfields + */ + +/*! + * @name Register ENET_RMON_R_P128TO255, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_P128TO255_COUNT (0U) //!< Bit position for ENET_RMON_R_P128TO255_COUNT. +#define BM_ENET_RMON_R_P128TO255_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_P128TO255_COUNT. +#define BS_ENET_RMON_R_P128TO255_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_P128TO255_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_P128TO255_COUNT field. +#define BR_ENET_RMON_R_P128TO255_COUNT(x) (HW_ENET_RMON_R_P128TO255(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_P256TO511 - Rx 256- to 511-Byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_P256TO511 - Rx 256- to 511-Byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_p256to511 +{ + uint32_t U; + struct _hw_enet_rmon_r_p256to511_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_p256to511_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_P256TO511 register + */ +//@{ +#define HW_ENET_RMON_R_P256TO511_ADDR(x) (REGS_ENET_BASE(x) + 0x2B4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_P256TO511(x) (*(__I hw_enet_rmon_r_p256to511_t *) HW_ENET_RMON_R_P256TO511_ADDR(x)) +#define HW_ENET_RMON_R_P256TO511_RD(x) (HW_ENET_RMON_R_P256TO511(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_P256TO511 bitfields + */ + +/*! + * @name Register ENET_RMON_R_P256TO511, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_P256TO511_COUNT (0U) //!< Bit position for ENET_RMON_R_P256TO511_COUNT. +#define BM_ENET_RMON_R_P256TO511_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_P256TO511_COUNT. +#define BS_ENET_RMON_R_P256TO511_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_P256TO511_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_P256TO511_COUNT field. +#define BR_ENET_RMON_R_P256TO511_COUNT(x) (HW_ENET_RMON_R_P256TO511(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_P512TO1023 - Rx 512- to 1023-Byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_P512TO1023 - Rx 512- to 1023-Byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_p512to1023 +{ + uint32_t U; + struct _hw_enet_rmon_r_p512to1023_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_p512to1023_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_P512TO1023 register + */ +//@{ +#define HW_ENET_RMON_R_P512TO1023_ADDR(x) (REGS_ENET_BASE(x) + 0x2B8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_P512TO1023(x) (*(__I hw_enet_rmon_r_p512to1023_t *) HW_ENET_RMON_R_P512TO1023_ADDR(x)) +#define HW_ENET_RMON_R_P512TO1023_RD(x) (HW_ENET_RMON_R_P512TO1023(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_P512TO1023 bitfields + */ + +/*! + * @name Register ENET_RMON_R_P512TO1023, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_P512TO1023_COUNT (0U) //!< Bit position for ENET_RMON_R_P512TO1023_COUNT. +#define BM_ENET_RMON_R_P512TO1023_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_P512TO1023_COUNT. +#define BS_ENET_RMON_R_P512TO1023_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_P512TO1023_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_P512TO1023_COUNT field. +#define BR_ENET_RMON_R_P512TO1023_COUNT(x) (HW_ENET_RMON_R_P512TO1023(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_P1024TO2047 - Rx 1024- to 2047-Byte Packets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_P1024TO2047 - Rx 1024- to 2047-Byte Packets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_p1024to2047 +{ + uint32_t U; + struct _hw_enet_rmon_r_p1024to2047_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_p1024to2047_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_P1024TO2047 register + */ +//@{ +#define HW_ENET_RMON_R_P1024TO2047_ADDR(x) (REGS_ENET_BASE(x) + 0x2BCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_P1024TO2047(x) (*(__I hw_enet_rmon_r_p1024to2047_t *) HW_ENET_RMON_R_P1024TO2047_ADDR(x)) +#define HW_ENET_RMON_R_P1024TO2047_RD(x) (HW_ENET_RMON_R_P1024TO2047(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_P1024TO2047 bitfields + */ + +/*! + * @name Register ENET_RMON_R_P1024TO2047, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_P1024TO2047_COUNT (0U) //!< Bit position for ENET_RMON_R_P1024TO2047_COUNT. +#define BM_ENET_RMON_R_P1024TO2047_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_P1024TO2047_COUNT. +#define BS_ENET_RMON_R_P1024TO2047_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_P1024TO2047_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_P1024TO2047_COUNT field. +#define BR_ENET_RMON_R_P1024TO2047_COUNT(x) (HW_ENET_RMON_R_P1024TO2047(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_GTE2048 - Rx Packets Greater than 2048 Bytes Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_GTE2048 - Rx Packets Greater than 2048 Bytes Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_gte2048 +{ + uint32_t U; + struct _hw_enet_rmon_r_gte2048_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Packet count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_rmon_r_gte2048_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_GTE2048 register + */ +//@{ +#define HW_ENET_RMON_R_GTE2048_ADDR(x) (REGS_ENET_BASE(x) + 0x2C0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_GTE2048(x) (*(__I hw_enet_rmon_r_gte2048_t *) HW_ENET_RMON_R_GTE2048_ADDR(x)) +#define HW_ENET_RMON_R_GTE2048_RD(x) (HW_ENET_RMON_R_GTE2048(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_GTE2048 bitfields + */ + +/*! + * @name Register ENET_RMON_R_GTE2048, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_GTE2048_COUNT (0U) //!< Bit position for ENET_RMON_R_GTE2048_COUNT. +#define BM_ENET_RMON_R_GTE2048_COUNT (0x0000FFFFU) //!< Bit mask for ENET_RMON_R_GTE2048_COUNT. +#define BS_ENET_RMON_R_GTE2048_COUNT (16U) //!< Bit field size in bits for ENET_RMON_R_GTE2048_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_GTE2048_COUNT field. +#define BR_ENET_RMON_R_GTE2048_COUNT(x) (HW_ENET_RMON_R_GTE2048(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_RMON_R_OCTETS - Rx Octets Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_RMON_R_OCTETS - Rx Octets Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_rmon_r_octets +{ + uint32_t U; + struct _hw_enet_rmon_r_octets_bitfields + { + uint32_t COUNT : 32; //!< [31:0] Octet count + } B; +} hw_enet_rmon_r_octets_t; +#endif + +/*! + * @name Constants and macros for entire ENET_RMON_R_OCTETS register + */ +//@{ +#define HW_ENET_RMON_R_OCTETS_ADDR(x) (REGS_ENET_BASE(x) + 0x2C4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_RMON_R_OCTETS(x) (*(__I hw_enet_rmon_r_octets_t *) HW_ENET_RMON_R_OCTETS_ADDR(x)) +#define HW_ENET_RMON_R_OCTETS_RD(x) (HW_ENET_RMON_R_OCTETS(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_RMON_R_OCTETS bitfields + */ + +/*! + * @name Register ENET_RMON_R_OCTETS, field COUNT[31:0] (RO) + */ +//@{ +#define BP_ENET_RMON_R_OCTETS_COUNT (0U) //!< Bit position for ENET_RMON_R_OCTETS_COUNT. +#define BM_ENET_RMON_R_OCTETS_COUNT (0xFFFFFFFFU) //!< Bit mask for ENET_RMON_R_OCTETS_COUNT. +#define BS_ENET_RMON_R_OCTETS_COUNT (32U) //!< Bit field size in bits for ENET_RMON_R_OCTETS_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_RMON_R_OCTETS_COUNT field. +#define BR_ENET_RMON_R_OCTETS_COUNT(x) (HW_ENET_RMON_R_OCTETS(x).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_R_DROP - Frames not Counted Correctly Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_R_DROP - Frames not Counted Correctly Statistic Register (RO) + * + * Reset value: 0x00000000U + * + * Counter increments if a frame with invalid or missing SFD character is + * detected and has been dropped. None of the other counters increments if this counter + * increments. + */ +typedef union _hw_enet_ieee_r_drop +{ + uint32_t U; + struct _hw_enet_ieee_r_drop_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_r_drop_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_R_DROP register + */ +//@{ +#define HW_ENET_IEEE_R_DROP_ADDR(x) (REGS_ENET_BASE(x) + 0x2C8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_R_DROP(x) (*(__I hw_enet_ieee_r_drop_t *) HW_ENET_IEEE_R_DROP_ADDR(x)) +#define HW_ENET_IEEE_R_DROP_RD(x) (HW_ENET_IEEE_R_DROP(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_R_DROP bitfields + */ + +/*! + * @name Register ENET_IEEE_R_DROP, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_R_DROP_COUNT (0U) //!< Bit position for ENET_IEEE_R_DROP_COUNT. +#define BM_ENET_IEEE_R_DROP_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_R_DROP_COUNT. +#define BS_ENET_IEEE_R_DROP_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_R_DROP_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_R_DROP_COUNT field. +#define BR_ENET_IEEE_R_DROP_COUNT(x) (HW_ENET_IEEE_R_DROP(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_R_FRAME_OK - Frames Received OK Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_R_FRAME_OK - Frames Received OK Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_r_frame_ok +{ + uint32_t U; + struct _hw_enet_ieee_r_frame_ok_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_r_frame_ok_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_R_FRAME_OK register + */ +//@{ +#define HW_ENET_IEEE_R_FRAME_OK_ADDR(x) (REGS_ENET_BASE(x) + 0x2CCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_R_FRAME_OK(x) (*(__I hw_enet_ieee_r_frame_ok_t *) HW_ENET_IEEE_R_FRAME_OK_ADDR(x)) +#define HW_ENET_IEEE_R_FRAME_OK_RD(x) (HW_ENET_IEEE_R_FRAME_OK(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_R_FRAME_OK bitfields + */ + +/*! + * @name Register ENET_IEEE_R_FRAME_OK, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_R_FRAME_OK_COUNT (0U) //!< Bit position for ENET_IEEE_R_FRAME_OK_COUNT. +#define BM_ENET_IEEE_R_FRAME_OK_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_R_FRAME_OK_COUNT. +#define BS_ENET_IEEE_R_FRAME_OK_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_R_FRAME_OK_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_R_FRAME_OK_COUNT field. +#define BR_ENET_IEEE_R_FRAME_OK_COUNT(x) (HW_ENET_IEEE_R_FRAME_OK(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_R_CRC - Frames Received with CRC Error Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_R_CRC - Frames Received with CRC Error Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_r_crc +{ + uint32_t U; + struct _hw_enet_ieee_r_crc_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_r_crc_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_R_CRC register + */ +//@{ +#define HW_ENET_IEEE_R_CRC_ADDR(x) (REGS_ENET_BASE(x) + 0x2D0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_R_CRC(x) (*(__I hw_enet_ieee_r_crc_t *) HW_ENET_IEEE_R_CRC_ADDR(x)) +#define HW_ENET_IEEE_R_CRC_RD(x) (HW_ENET_IEEE_R_CRC(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_R_CRC bitfields + */ + +/*! + * @name Register ENET_IEEE_R_CRC, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_R_CRC_COUNT (0U) //!< Bit position for ENET_IEEE_R_CRC_COUNT. +#define BM_ENET_IEEE_R_CRC_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_R_CRC_COUNT. +#define BS_ENET_IEEE_R_CRC_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_R_CRC_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_R_CRC_COUNT field. +#define BR_ENET_IEEE_R_CRC_COUNT(x) (HW_ENET_IEEE_R_CRC(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_R_ALIGN - Frames Received with Alignment Error Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_R_ALIGN - Frames Received with Alignment Error Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_r_align +{ + uint32_t U; + struct _hw_enet_ieee_r_align_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_r_align_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_R_ALIGN register + */ +//@{ +#define HW_ENET_IEEE_R_ALIGN_ADDR(x) (REGS_ENET_BASE(x) + 0x2D4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_R_ALIGN(x) (*(__I hw_enet_ieee_r_align_t *) HW_ENET_IEEE_R_ALIGN_ADDR(x)) +#define HW_ENET_IEEE_R_ALIGN_RD(x) (HW_ENET_IEEE_R_ALIGN(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_R_ALIGN bitfields + */ + +/*! + * @name Register ENET_IEEE_R_ALIGN, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_R_ALIGN_COUNT (0U) //!< Bit position for ENET_IEEE_R_ALIGN_COUNT. +#define BM_ENET_IEEE_R_ALIGN_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_R_ALIGN_COUNT. +#define BS_ENET_IEEE_R_ALIGN_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_R_ALIGN_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_R_ALIGN_COUNT field. +#define BR_ENET_IEEE_R_ALIGN_COUNT(x) (HW_ENET_IEEE_R_ALIGN(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_R_MACERR - Receive FIFO Overflow Count Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_R_MACERR - Receive FIFO Overflow Count Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_r_macerr +{ + uint32_t U; + struct _hw_enet_ieee_r_macerr_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_r_macerr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_R_MACERR register + */ +//@{ +#define HW_ENET_IEEE_R_MACERR_ADDR(x) (REGS_ENET_BASE(x) + 0x2D8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_R_MACERR(x) (*(__I hw_enet_ieee_r_macerr_t *) HW_ENET_IEEE_R_MACERR_ADDR(x)) +#define HW_ENET_IEEE_R_MACERR_RD(x) (HW_ENET_IEEE_R_MACERR(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_R_MACERR bitfields + */ + +/*! + * @name Register ENET_IEEE_R_MACERR, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_R_MACERR_COUNT (0U) //!< Bit position for ENET_IEEE_R_MACERR_COUNT. +#define BM_ENET_IEEE_R_MACERR_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_R_MACERR_COUNT. +#define BS_ENET_IEEE_R_MACERR_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_R_MACERR_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_R_MACERR_COUNT field. +#define BR_ENET_IEEE_R_MACERR_COUNT(x) (HW_ENET_IEEE_R_MACERR(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_R_FDXFC - Flow Control Pause Frames Received Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_R_FDXFC - Flow Control Pause Frames Received Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_r_fdxfc +{ + uint32_t U; + struct _hw_enet_ieee_r_fdxfc_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Pause frame count + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_enet_ieee_r_fdxfc_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_R_FDXFC register + */ +//@{ +#define HW_ENET_IEEE_R_FDXFC_ADDR(x) (REGS_ENET_BASE(x) + 0x2DCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_R_FDXFC(x) (*(__I hw_enet_ieee_r_fdxfc_t *) HW_ENET_IEEE_R_FDXFC_ADDR(x)) +#define HW_ENET_IEEE_R_FDXFC_RD(x) (HW_ENET_IEEE_R_FDXFC(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_R_FDXFC bitfields + */ + +/*! + * @name Register ENET_IEEE_R_FDXFC, field COUNT[15:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_R_FDXFC_COUNT (0U) //!< Bit position for ENET_IEEE_R_FDXFC_COUNT. +#define BM_ENET_IEEE_R_FDXFC_COUNT (0x0000FFFFU) //!< Bit mask for ENET_IEEE_R_FDXFC_COUNT. +#define BS_ENET_IEEE_R_FDXFC_COUNT (16U) //!< Bit field size in bits for ENET_IEEE_R_FDXFC_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_R_FDXFC_COUNT field. +#define BR_ENET_IEEE_R_FDXFC_COUNT(x) (HW_ENET_IEEE_R_FDXFC(x).B.COUNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_IEEE_R_OCTETS_OK - Octet Count for Frames Received without Error Statistic Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_IEEE_R_OCTETS_OK - Octet Count for Frames Received without Error Statistic Register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_ieee_r_octets_ok +{ + uint32_t U; + struct _hw_enet_ieee_r_octets_ok_bitfields + { + uint32_t COUNT : 32; //!< [31:0] Octet count + } B; +} hw_enet_ieee_r_octets_ok_t; +#endif + +/*! + * @name Constants and macros for entire ENET_IEEE_R_OCTETS_OK register + */ +//@{ +#define HW_ENET_IEEE_R_OCTETS_OK_ADDR(x) (REGS_ENET_BASE(x) + 0x2E0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_IEEE_R_OCTETS_OK(x) (*(__I hw_enet_ieee_r_octets_ok_t *) HW_ENET_IEEE_R_OCTETS_OK_ADDR(x)) +#define HW_ENET_IEEE_R_OCTETS_OK_RD(x) (HW_ENET_IEEE_R_OCTETS_OK(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_IEEE_R_OCTETS_OK bitfields + */ + +/*! + * @name Register ENET_IEEE_R_OCTETS_OK, field COUNT[31:0] (RO) + */ +//@{ +#define BP_ENET_IEEE_R_OCTETS_OK_COUNT (0U) //!< Bit position for ENET_IEEE_R_OCTETS_OK_COUNT. +#define BM_ENET_IEEE_R_OCTETS_OK_COUNT (0xFFFFFFFFU) //!< Bit mask for ENET_IEEE_R_OCTETS_OK_COUNT. +#define BS_ENET_IEEE_R_OCTETS_OK_COUNT (32U) //!< Bit field size in bits for ENET_IEEE_R_OCTETS_OK_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_IEEE_R_OCTETS_OK_COUNT field. +#define BR_ENET_IEEE_R_OCTETS_OK_COUNT(x) (HW_ENET_IEEE_R_OCTETS_OK(x).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_ATCR - Adjustable Timer Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_ATCR - Adjustable Timer Control Register (RW) + * + * Reset value: 0x00000000U + * + * ATCR command fields can trigger the corresponding events directly. It is not + * necessary to preserve any of the configuration fields when a command field is + * set in the register, that is, no read-modify-write is required. The fields are + * automatically cleared after the command completes. + */ +typedef union _hw_enet_atcr +{ + uint32_t U; + struct _hw_enet_atcr_bitfields + { + uint32_t EN : 1; //!< [0] Enable Timer + uint32_t RESERVED0 : 1; //!< [1] + uint32_t OFFEN : 1; //!< [2] Enable One-Shot Offset Event + uint32_t OFFRST : 1; //!< [3] Reset Timer On Offset Event + uint32_t PEREN : 1; //!< [4] Enable Periodical Event + uint32_t RESERVED1 : 2; //!< [6:5] + uint32_t PINPER : 1; //!< [7] + uint32_t RESERVED2 : 1; //!< [8] + uint32_t RESTART : 1; //!< [9] Reset Timer + uint32_t RESERVED3 : 1; //!< [10] + uint32_t CAPTURE : 1; //!< [11] Capture Timer Value + uint32_t RESERVED4 : 1; //!< [12] + uint32_t SLAVE : 1; //!< [13] Enable Timer Slave Mode + uint32_t RESERVED5 : 18; //!< [31:14] + } B; +} hw_enet_atcr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_ATCR register + */ +//@{ +#define HW_ENET_ATCR_ADDR(x) (REGS_ENET_BASE(x) + 0x400U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_ATCR(x) (*(__IO hw_enet_atcr_t *) HW_ENET_ATCR_ADDR(x)) +#define HW_ENET_ATCR_RD(x) (HW_ENET_ATCR(x).U) +#define HW_ENET_ATCR_WR(x, v) (HW_ENET_ATCR(x).U = (v)) +#define HW_ENET_ATCR_SET(x, v) (HW_ENET_ATCR_WR(x, HW_ENET_ATCR_RD(x) | (v))) +#define HW_ENET_ATCR_CLR(x, v) (HW_ENET_ATCR_WR(x, HW_ENET_ATCR_RD(x) & ~(v))) +#define HW_ENET_ATCR_TOG(x, v) (HW_ENET_ATCR_WR(x, HW_ENET_ATCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_ATCR bitfields + */ + +/*! + * @name Register ENET_ATCR, field EN[0] (RW) + * + * Values: + * - 0 - The timer stops at the current value. + * - 1 - The timer starts incrementing. + */ +//@{ +#define BP_ENET_ATCR_EN (0U) //!< Bit position for ENET_ATCR_EN. +#define BM_ENET_ATCR_EN (0x00000001U) //!< Bit mask for ENET_ATCR_EN. +#define BS_ENET_ATCR_EN (1U) //!< Bit field size in bits for ENET_ATCR_EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATCR_EN field. +#define BR_ENET_ATCR_EN(x) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_EN)) +#endif + +//! @brief Format value for bitfield ENET_ATCR_EN. +#define BF_ENET_ATCR_EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATCR_EN), uint32_t) & BM_ENET_ATCR_EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EN field to a new value. +#define BW_ENET_ATCR_EN(x, v) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_EN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ATCR, field OFFEN[2] (RW) + * + * Values: + * - 0 - Disable. + * - 1 - The timer can be reset to zero when the given offset time is reached + * (offset event). The field is cleared when the offset event is reached, so no + * further event occurs until the field is set again. The timer offset value + * must be set before setting this field. + */ +//@{ +#define BP_ENET_ATCR_OFFEN (2U) //!< Bit position for ENET_ATCR_OFFEN. +#define BM_ENET_ATCR_OFFEN (0x00000004U) //!< Bit mask for ENET_ATCR_OFFEN. +#define BS_ENET_ATCR_OFFEN (1U) //!< Bit field size in bits for ENET_ATCR_OFFEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATCR_OFFEN field. +#define BR_ENET_ATCR_OFFEN(x) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_OFFEN)) +#endif + +//! @brief Format value for bitfield ENET_ATCR_OFFEN. +#define BF_ENET_ATCR_OFFEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATCR_OFFEN), uint32_t) & BM_ENET_ATCR_OFFEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OFFEN field to a new value. +#define BW_ENET_ATCR_OFFEN(x, v) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_OFFEN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ATCR, field OFFRST[3] (RW) + * + * Values: + * - 0 - The timer is not affected and no action occurs, besides clearing OFFEN, + * when the offset is reached. + * - 1 - If OFFEN is set, the timer resets to zero when the offset setting is + * reached. The offset event does not cause a timer interrupt. + */ +//@{ +#define BP_ENET_ATCR_OFFRST (3U) //!< Bit position for ENET_ATCR_OFFRST. +#define BM_ENET_ATCR_OFFRST (0x00000008U) //!< Bit mask for ENET_ATCR_OFFRST. +#define BS_ENET_ATCR_OFFRST (1U) //!< Bit field size in bits for ENET_ATCR_OFFRST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATCR_OFFRST field. +#define BR_ENET_ATCR_OFFRST(x) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_OFFRST)) +#endif + +//! @brief Format value for bitfield ENET_ATCR_OFFRST. +#define BF_ENET_ATCR_OFFRST(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATCR_OFFRST), uint32_t) & BM_ENET_ATCR_OFFRST) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OFFRST field to a new value. +#define BW_ENET_ATCR_OFFRST(x, v) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_OFFRST) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ATCR, field PEREN[4] (RW) + * + * Values: + * - 0 - Disable. + * - 1 - A period event interrupt can be generated (EIR[TS_TIMER]) and the event + * signal output is asserted when the timer wraps around according to the + * periodic setting ATPER. The timer period value must be set before setting + * this bit. Not all devices contain the event signal output. See the chip + * configuration details. + */ +//@{ +#define BP_ENET_ATCR_PEREN (4U) //!< Bit position for ENET_ATCR_PEREN. +#define BM_ENET_ATCR_PEREN (0x00000010U) //!< Bit mask for ENET_ATCR_PEREN. +#define BS_ENET_ATCR_PEREN (1U) //!< Bit field size in bits for ENET_ATCR_PEREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATCR_PEREN field. +#define BR_ENET_ATCR_PEREN(x) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_PEREN)) +#endif + +//! @brief Format value for bitfield ENET_ATCR_PEREN. +#define BF_ENET_ATCR_PEREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATCR_PEREN), uint32_t) & BM_ENET_ATCR_PEREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PEREN field to a new value. +#define BW_ENET_ATCR_PEREN(x, v) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_PEREN) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ATCR, field PINPER[7] (RW) + * + * Enables event signal output assertion on period event. Not all devices + * contain the event signal output. See the chip configuration details. + * + * Values: + * - 0 - Disable. + * - 1 - Enable. + */ +//@{ +#define BP_ENET_ATCR_PINPER (7U) //!< Bit position for ENET_ATCR_PINPER. +#define BM_ENET_ATCR_PINPER (0x00000080U) //!< Bit mask for ENET_ATCR_PINPER. +#define BS_ENET_ATCR_PINPER (1U) //!< Bit field size in bits for ENET_ATCR_PINPER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATCR_PINPER field. +#define BR_ENET_ATCR_PINPER(x) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_PINPER)) +#endif + +//! @brief Format value for bitfield ENET_ATCR_PINPER. +#define BF_ENET_ATCR_PINPER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATCR_PINPER), uint32_t) & BM_ENET_ATCR_PINPER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PINPER field to a new value. +#define BW_ENET_ATCR_PINPER(x, v) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_PINPER) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ATCR, field RESTART[9] (RW) + * + * Resets the timer to zero. This has no effect on the counter enable. If the + * counter is enabled when this field is set, the timer is reset to zero and starts + * counting from there. When set, all other fields are ignored during a write. + */ +//@{ +#define BP_ENET_ATCR_RESTART (9U) //!< Bit position for ENET_ATCR_RESTART. +#define BM_ENET_ATCR_RESTART (0x00000200U) //!< Bit mask for ENET_ATCR_RESTART. +#define BS_ENET_ATCR_RESTART (1U) //!< Bit field size in bits for ENET_ATCR_RESTART. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATCR_RESTART field. +#define BR_ENET_ATCR_RESTART(x) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_RESTART)) +#endif + +//! @brief Format value for bitfield ENET_ATCR_RESTART. +#define BF_ENET_ATCR_RESTART(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATCR_RESTART), uint32_t) & BM_ENET_ATCR_RESTART) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RESTART field to a new value. +#define BW_ENET_ATCR_RESTART(x, v) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_RESTART) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ATCR, field CAPTURE[11] (RW) + * + * Values: + * - 0 - No effect. + * - 1 - The current time is captured and can be read from the ATVR register. + */ +//@{ +#define BP_ENET_ATCR_CAPTURE (11U) //!< Bit position for ENET_ATCR_CAPTURE. +#define BM_ENET_ATCR_CAPTURE (0x00000800U) //!< Bit mask for ENET_ATCR_CAPTURE. +#define BS_ENET_ATCR_CAPTURE (1U) //!< Bit field size in bits for ENET_ATCR_CAPTURE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATCR_CAPTURE field. +#define BR_ENET_ATCR_CAPTURE(x) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_CAPTURE)) +#endif + +//! @brief Format value for bitfield ENET_ATCR_CAPTURE. +#define BF_ENET_ATCR_CAPTURE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATCR_CAPTURE), uint32_t) & BM_ENET_ATCR_CAPTURE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CAPTURE field to a new value. +#define BW_ENET_ATCR_CAPTURE(x, v) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_CAPTURE) = (v)) +#endif +//@} + +/*! + * @name Register ENET_ATCR, field SLAVE[13] (RW) + * + * Values: + * - 0 - The timer is active and all configuration fields in this register are + * relevant. + * - 1 - The internal timer is disabled and the externally provided timer value + * is used. All other fields, except CAPTURE, in this register have no + * effect. CAPTURE can still be used to capture the current timer value. + */ +//@{ +#define BP_ENET_ATCR_SLAVE (13U) //!< Bit position for ENET_ATCR_SLAVE. +#define BM_ENET_ATCR_SLAVE (0x00002000U) //!< Bit mask for ENET_ATCR_SLAVE. +#define BS_ENET_ATCR_SLAVE (1U) //!< Bit field size in bits for ENET_ATCR_SLAVE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATCR_SLAVE field. +#define BR_ENET_ATCR_SLAVE(x) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_SLAVE)) +#endif + +//! @brief Format value for bitfield ENET_ATCR_SLAVE. +#define BF_ENET_ATCR_SLAVE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATCR_SLAVE), uint32_t) & BM_ENET_ATCR_SLAVE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SLAVE field to a new value. +#define BW_ENET_ATCR_SLAVE(x, v) (BITBAND_ACCESS32(HW_ENET_ATCR_ADDR(x), BP_ENET_ATCR_SLAVE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_ATVR - Timer Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_ATVR - Timer Value Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_atvr +{ + uint32_t U; + struct _hw_enet_atvr_bitfields + { + uint32_t ATIME : 32; //!< [31:0] + } B; +} hw_enet_atvr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_ATVR register + */ +//@{ +#define HW_ENET_ATVR_ADDR(x) (REGS_ENET_BASE(x) + 0x404U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_ATVR(x) (*(__IO hw_enet_atvr_t *) HW_ENET_ATVR_ADDR(x)) +#define HW_ENET_ATVR_RD(x) (HW_ENET_ATVR(x).U) +#define HW_ENET_ATVR_WR(x, v) (HW_ENET_ATVR(x).U = (v)) +#define HW_ENET_ATVR_SET(x, v) (HW_ENET_ATVR_WR(x, HW_ENET_ATVR_RD(x) | (v))) +#define HW_ENET_ATVR_CLR(x, v) (HW_ENET_ATVR_WR(x, HW_ENET_ATVR_RD(x) & ~(v))) +#define HW_ENET_ATVR_TOG(x, v) (HW_ENET_ATVR_WR(x, HW_ENET_ATVR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_ATVR bitfields + */ + +/*! + * @name Register ENET_ATVR, field ATIME[31:0] (RW) + * + * A write sets the timer. A read returns the last captured value. To read the + * current value, issue a capture command (set ATCR[CAPTURE]) prior to reading + * this register. + */ +//@{ +#define BP_ENET_ATVR_ATIME (0U) //!< Bit position for ENET_ATVR_ATIME. +#define BM_ENET_ATVR_ATIME (0xFFFFFFFFU) //!< Bit mask for ENET_ATVR_ATIME. +#define BS_ENET_ATVR_ATIME (32U) //!< Bit field size in bits for ENET_ATVR_ATIME. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATVR_ATIME field. +#define BR_ENET_ATVR_ATIME(x) (HW_ENET_ATVR(x).U) +#endif + +//! @brief Format value for bitfield ENET_ATVR_ATIME. +#define BF_ENET_ATVR_ATIME(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATVR_ATIME), uint32_t) & BM_ENET_ATVR_ATIME) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ATIME field to a new value. +#define BW_ENET_ATVR_ATIME(x, v) (HW_ENET_ATVR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_ATOFF - Timer Offset Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_ATOFF - Timer Offset Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_atoff +{ + uint32_t U; + struct _hw_enet_atoff_bitfields + { + uint32_t OFFSET : 32; //!< [31:0] + } B; +} hw_enet_atoff_t; +#endif + +/*! + * @name Constants and macros for entire ENET_ATOFF register + */ +//@{ +#define HW_ENET_ATOFF_ADDR(x) (REGS_ENET_BASE(x) + 0x408U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_ATOFF(x) (*(__IO hw_enet_atoff_t *) HW_ENET_ATOFF_ADDR(x)) +#define HW_ENET_ATOFF_RD(x) (HW_ENET_ATOFF(x).U) +#define HW_ENET_ATOFF_WR(x, v) (HW_ENET_ATOFF(x).U = (v)) +#define HW_ENET_ATOFF_SET(x, v) (HW_ENET_ATOFF_WR(x, HW_ENET_ATOFF_RD(x) | (v))) +#define HW_ENET_ATOFF_CLR(x, v) (HW_ENET_ATOFF_WR(x, HW_ENET_ATOFF_RD(x) & ~(v))) +#define HW_ENET_ATOFF_TOG(x, v) (HW_ENET_ATOFF_WR(x, HW_ENET_ATOFF_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_ATOFF bitfields + */ + +/*! + * @name Register ENET_ATOFF, field OFFSET[31:0] (RW) + * + * Offset value for one-shot event generation. When the timer reaches the value, + * an event can be generated to reset the counter. If the increment value in + * ATINC is given in true nanoseconds, this value is also given in true nanoseconds. + */ +//@{ +#define BP_ENET_ATOFF_OFFSET (0U) //!< Bit position for ENET_ATOFF_OFFSET. +#define BM_ENET_ATOFF_OFFSET (0xFFFFFFFFU) //!< Bit mask for ENET_ATOFF_OFFSET. +#define BS_ENET_ATOFF_OFFSET (32U) //!< Bit field size in bits for ENET_ATOFF_OFFSET. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATOFF_OFFSET field. +#define BR_ENET_ATOFF_OFFSET(x) (HW_ENET_ATOFF(x).U) +#endif + +//! @brief Format value for bitfield ENET_ATOFF_OFFSET. +#define BF_ENET_ATOFF_OFFSET(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATOFF_OFFSET), uint32_t) & BM_ENET_ATOFF_OFFSET) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OFFSET field to a new value. +#define BW_ENET_ATOFF_OFFSET(x, v) (HW_ENET_ATOFF_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_ATPER - Timer Period Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_ATPER - Timer Period Register (RW) + * + * Reset value: 0x3B9ACA00U + */ +typedef union _hw_enet_atper +{ + uint32_t U; + struct _hw_enet_atper_bitfields + { + uint32_t PERIOD : 32; //!< [31:0] + } B; +} hw_enet_atper_t; +#endif + +/*! + * @name Constants and macros for entire ENET_ATPER register + */ +//@{ +#define HW_ENET_ATPER_ADDR(x) (REGS_ENET_BASE(x) + 0x40CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_ATPER(x) (*(__IO hw_enet_atper_t *) HW_ENET_ATPER_ADDR(x)) +#define HW_ENET_ATPER_RD(x) (HW_ENET_ATPER(x).U) +#define HW_ENET_ATPER_WR(x, v) (HW_ENET_ATPER(x).U = (v)) +#define HW_ENET_ATPER_SET(x, v) (HW_ENET_ATPER_WR(x, HW_ENET_ATPER_RD(x) | (v))) +#define HW_ENET_ATPER_CLR(x, v) (HW_ENET_ATPER_WR(x, HW_ENET_ATPER_RD(x) & ~(v))) +#define HW_ENET_ATPER_TOG(x, v) (HW_ENET_ATPER_WR(x, HW_ENET_ATPER_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_ATPER bitfields + */ + +/*! + * @name Register ENET_ATPER, field PERIOD[31:0] (RW) + * + * Value for generating periodic events. Each instance the timer reaches this + * value, the period event occurs and the timer restarts. If the increment value in + * ATINC is given in true nanoseconds, this value is also given in true + * nanoseconds. The value should be initialized to 1,000,000,000 (1 x 10 9 ) to represent + * a timer wrap around of one second. The increment value set in ATINC should be + * set to the true nanoseconds of the period of clock ts_clk, hence implementing + * a true 1 second counter. + */ +//@{ +#define BP_ENET_ATPER_PERIOD (0U) //!< Bit position for ENET_ATPER_PERIOD. +#define BM_ENET_ATPER_PERIOD (0xFFFFFFFFU) //!< Bit mask for ENET_ATPER_PERIOD. +#define BS_ENET_ATPER_PERIOD (32U) //!< Bit field size in bits for ENET_ATPER_PERIOD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATPER_PERIOD field. +#define BR_ENET_ATPER_PERIOD(x) (HW_ENET_ATPER(x).U) +#endif + +//! @brief Format value for bitfield ENET_ATPER_PERIOD. +#define BF_ENET_ATPER_PERIOD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATPER_PERIOD), uint32_t) & BM_ENET_ATPER_PERIOD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PERIOD field to a new value. +#define BW_ENET_ATPER_PERIOD(x, v) (HW_ENET_ATPER_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_ATCOR - Timer Correction Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_ATCOR - Timer Correction Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_atcor +{ + uint32_t U; + struct _hw_enet_atcor_bitfields + { + uint32_t COR : 31; //!< [30:0] Correction Counter Wrap-Around Value + uint32_t RESERVED0 : 1; //!< [31] + } B; +} hw_enet_atcor_t; +#endif + +/*! + * @name Constants and macros for entire ENET_ATCOR register + */ +//@{ +#define HW_ENET_ATCOR_ADDR(x) (REGS_ENET_BASE(x) + 0x410U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_ATCOR(x) (*(__IO hw_enet_atcor_t *) HW_ENET_ATCOR_ADDR(x)) +#define HW_ENET_ATCOR_RD(x) (HW_ENET_ATCOR(x).U) +#define HW_ENET_ATCOR_WR(x, v) (HW_ENET_ATCOR(x).U = (v)) +#define HW_ENET_ATCOR_SET(x, v) (HW_ENET_ATCOR_WR(x, HW_ENET_ATCOR_RD(x) | (v))) +#define HW_ENET_ATCOR_CLR(x, v) (HW_ENET_ATCOR_WR(x, HW_ENET_ATCOR_RD(x) & ~(v))) +#define HW_ENET_ATCOR_TOG(x, v) (HW_ENET_ATCOR_WR(x, HW_ENET_ATCOR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_ATCOR bitfields + */ + +/*! + * @name Register ENET_ATCOR, field COR[30:0] (RW) + * + * Defines after how many timer clock cycles (ts_clk) the correction counter + * should be reset and trigger a correction increment on the timer. The amount of + * correction is defined in ATINC[INC_CORR]. A value of 0 disables the correction + * counter and no corrections occur. This value is given in clock cycles, not in + * nanoseconds as all other values. + */ +//@{ +#define BP_ENET_ATCOR_COR (0U) //!< Bit position for ENET_ATCOR_COR. +#define BM_ENET_ATCOR_COR (0x7FFFFFFFU) //!< Bit mask for ENET_ATCOR_COR. +#define BS_ENET_ATCOR_COR (31U) //!< Bit field size in bits for ENET_ATCOR_COR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATCOR_COR field. +#define BR_ENET_ATCOR_COR(x) (HW_ENET_ATCOR(x).B.COR) +#endif + +//! @brief Format value for bitfield ENET_ATCOR_COR. +#define BF_ENET_ATCOR_COR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATCOR_COR), uint32_t) & BM_ENET_ATCOR_COR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COR field to a new value. +#define BW_ENET_ATCOR_COR(x, v) (HW_ENET_ATCOR_WR(x, (HW_ENET_ATCOR_RD(x) & ~BM_ENET_ATCOR_COR) | BF_ENET_ATCOR_COR(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_ATINC - Time-Stamping Clock Period Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_ATINC - Time-Stamping Clock Period Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_atinc +{ + uint32_t U; + struct _hw_enet_atinc_bitfields + { + uint32_t INC : 7; //!< [6:0] Clock Period Of The Timestamping Clock + //! (ts_clk) In Nanoseconds + uint32_t RESERVED0 : 1; //!< [7] + uint32_t INC_CORR : 7; //!< [14:8] Correction Increment Value + uint32_t RESERVED1 : 17; //!< [31:15] + } B; +} hw_enet_atinc_t; +#endif + +/*! + * @name Constants and macros for entire ENET_ATINC register + */ +//@{ +#define HW_ENET_ATINC_ADDR(x) (REGS_ENET_BASE(x) + 0x414U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_ATINC(x) (*(__IO hw_enet_atinc_t *) HW_ENET_ATINC_ADDR(x)) +#define HW_ENET_ATINC_RD(x) (HW_ENET_ATINC(x).U) +#define HW_ENET_ATINC_WR(x, v) (HW_ENET_ATINC(x).U = (v)) +#define HW_ENET_ATINC_SET(x, v) (HW_ENET_ATINC_WR(x, HW_ENET_ATINC_RD(x) | (v))) +#define HW_ENET_ATINC_CLR(x, v) (HW_ENET_ATINC_WR(x, HW_ENET_ATINC_RD(x) & ~(v))) +#define HW_ENET_ATINC_TOG(x, v) (HW_ENET_ATINC_WR(x, HW_ENET_ATINC_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_ATINC bitfields + */ + +/*! + * @name Register ENET_ATINC, field INC[6:0] (RW) + * + * The timer increments by this amount each clock cycle. For example, set to 10 + * for 100 MHz, 8 for 125 MHz, 5 for 200 MHz. For highest precision, use a value + * that is an integer fraction of the period set in ATPER. + */ +//@{ +#define BP_ENET_ATINC_INC (0U) //!< Bit position for ENET_ATINC_INC. +#define BM_ENET_ATINC_INC (0x0000007FU) //!< Bit mask for ENET_ATINC_INC. +#define BS_ENET_ATINC_INC (7U) //!< Bit field size in bits for ENET_ATINC_INC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATINC_INC field. +#define BR_ENET_ATINC_INC(x) (HW_ENET_ATINC(x).B.INC) +#endif + +//! @brief Format value for bitfield ENET_ATINC_INC. +#define BF_ENET_ATINC_INC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATINC_INC), uint32_t) & BM_ENET_ATINC_INC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INC field to a new value. +#define BW_ENET_ATINC_INC(x, v) (HW_ENET_ATINC_WR(x, (HW_ENET_ATINC_RD(x) & ~BM_ENET_ATINC_INC) | BF_ENET_ATINC_INC(v))) +#endif +//@} + +/*! + * @name Register ENET_ATINC, field INC_CORR[14:8] (RW) + * + * This value is added every time the correction timer expires (every clock + * cycle given in ATCOR). A value less than INC slows down the timer. A value greater + * than INC speeds up the timer. + */ +//@{ +#define BP_ENET_ATINC_INC_CORR (8U) //!< Bit position for ENET_ATINC_INC_CORR. +#define BM_ENET_ATINC_INC_CORR (0x00007F00U) //!< Bit mask for ENET_ATINC_INC_CORR. +#define BS_ENET_ATINC_INC_CORR (7U) //!< Bit field size in bits for ENET_ATINC_INC_CORR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATINC_INC_CORR field. +#define BR_ENET_ATINC_INC_CORR(x) (HW_ENET_ATINC(x).B.INC_CORR) +#endif + +//! @brief Format value for bitfield ENET_ATINC_INC_CORR. +#define BF_ENET_ATINC_INC_CORR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_ATINC_INC_CORR), uint32_t) & BM_ENET_ATINC_INC_CORR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INC_CORR field to a new value. +#define BW_ENET_ATINC_INC_CORR(x, v) (HW_ENET_ATINC_WR(x, (HW_ENET_ATINC_RD(x) & ~BM_ENET_ATINC_INC_CORR) | BF_ENET_ATINC_INC_CORR(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_ATSTMP - Timestamp of Last Transmitted Frame +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_ATSTMP - Timestamp of Last Transmitted Frame (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_atstmp +{ + uint32_t U; + struct _hw_enet_atstmp_bitfields + { + uint32_t TIMESTAMP : 32; //!< [31:0] + } B; +} hw_enet_atstmp_t; +#endif + +/*! + * @name Constants and macros for entire ENET_ATSTMP register + */ +//@{ +#define HW_ENET_ATSTMP_ADDR(x) (REGS_ENET_BASE(x) + 0x418U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_ATSTMP(x) (*(__I hw_enet_atstmp_t *) HW_ENET_ATSTMP_ADDR(x)) +#define HW_ENET_ATSTMP_RD(x) (HW_ENET_ATSTMP(x).U) +#endif +//@} + +/* + * Constants & macros for individual ENET_ATSTMP bitfields + */ + +/*! + * @name Register ENET_ATSTMP, field TIMESTAMP[31:0] (RO) + * + * Timestamp of the last frame transmitted by the core that had TxBD[TS] set . + * This register is only valid when EIR[TS_AVAIL] is set. + */ +//@{ +#define BP_ENET_ATSTMP_TIMESTAMP (0U) //!< Bit position for ENET_ATSTMP_TIMESTAMP. +#define BM_ENET_ATSTMP_TIMESTAMP (0xFFFFFFFFU) //!< Bit mask for ENET_ATSTMP_TIMESTAMP. +#define BS_ENET_ATSTMP_TIMESTAMP (32U) //!< Bit field size in bits for ENET_ATSTMP_TIMESTAMP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_ATSTMP_TIMESTAMP field. +#define BR_ENET_ATSTMP_TIMESTAMP(x) (HW_ENET_ATSTMP(x).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TGSR - Timer Global Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TGSR - Timer Global Status Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_tgsr +{ + uint32_t U; + struct _hw_enet_tgsr_bitfields + { + uint32_t TF0 : 1; //!< [0] Copy Of Timer Flag For Channel 0 + uint32_t TF1 : 1; //!< [1] Copy Of Timer Flag For Channel 1 + uint32_t TF2 : 1; //!< [2] Copy Of Timer Flag For Channel 2 + uint32_t TF3 : 1; //!< [3] Copy Of Timer Flag For Channel 3 + uint32_t RESERVED0 : 28; //!< [31:4] + } B; +} hw_enet_tgsr_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TGSR register + */ +//@{ +#define HW_ENET_TGSR_ADDR(x) (REGS_ENET_BASE(x) + 0x604U) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TGSR(x) (*(__IO hw_enet_tgsr_t *) HW_ENET_TGSR_ADDR(x)) +#define HW_ENET_TGSR_RD(x) (HW_ENET_TGSR(x).U) +#define HW_ENET_TGSR_WR(x, v) (HW_ENET_TGSR(x).U = (v)) +#define HW_ENET_TGSR_SET(x, v) (HW_ENET_TGSR_WR(x, HW_ENET_TGSR_RD(x) | (v))) +#define HW_ENET_TGSR_CLR(x, v) (HW_ENET_TGSR_WR(x, HW_ENET_TGSR_RD(x) & ~(v))) +#define HW_ENET_TGSR_TOG(x, v) (HW_ENET_TGSR_WR(x, HW_ENET_TGSR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TGSR bitfields + */ + +/*! + * @name Register ENET_TGSR, field TF0[0] (W1C) + * + * Values: + * - 0 - Timer Flag for Channel 0 is clear + * - 1 - Timer Flag for Channel 0 is set + */ +//@{ +#define BP_ENET_TGSR_TF0 (0U) //!< Bit position for ENET_TGSR_TF0. +#define BM_ENET_TGSR_TF0 (0x00000001U) //!< Bit mask for ENET_TGSR_TF0. +#define BS_ENET_TGSR_TF0 (1U) //!< Bit field size in bits for ENET_TGSR_TF0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TGSR_TF0 field. +#define BR_ENET_TGSR_TF0(x) (BITBAND_ACCESS32(HW_ENET_TGSR_ADDR(x), BP_ENET_TGSR_TF0)) +#endif + +//! @brief Format value for bitfield ENET_TGSR_TF0. +#define BF_ENET_TGSR_TF0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TGSR_TF0), uint32_t) & BM_ENET_TGSR_TF0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TF0 field to a new value. +#define BW_ENET_TGSR_TF0(x, v) (BITBAND_ACCESS32(HW_ENET_TGSR_ADDR(x), BP_ENET_TGSR_TF0) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TGSR, field TF1[1] (W1C) + * + * Values: + * - 0 - Timer Flag for Channel 1 is clear + * - 1 - Timer Flag for Channel 1 is set + */ +//@{ +#define BP_ENET_TGSR_TF1 (1U) //!< Bit position for ENET_TGSR_TF1. +#define BM_ENET_TGSR_TF1 (0x00000002U) //!< Bit mask for ENET_TGSR_TF1. +#define BS_ENET_TGSR_TF1 (1U) //!< Bit field size in bits for ENET_TGSR_TF1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TGSR_TF1 field. +#define BR_ENET_TGSR_TF1(x) (BITBAND_ACCESS32(HW_ENET_TGSR_ADDR(x), BP_ENET_TGSR_TF1)) +#endif + +//! @brief Format value for bitfield ENET_TGSR_TF1. +#define BF_ENET_TGSR_TF1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TGSR_TF1), uint32_t) & BM_ENET_TGSR_TF1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TF1 field to a new value. +#define BW_ENET_TGSR_TF1(x, v) (BITBAND_ACCESS32(HW_ENET_TGSR_ADDR(x), BP_ENET_TGSR_TF1) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TGSR, field TF2[2] (W1C) + * + * Values: + * - 0 - Timer Flag for Channel 2 is clear + * - 1 - Timer Flag for Channel 2 is set + */ +//@{ +#define BP_ENET_TGSR_TF2 (2U) //!< Bit position for ENET_TGSR_TF2. +#define BM_ENET_TGSR_TF2 (0x00000004U) //!< Bit mask for ENET_TGSR_TF2. +#define BS_ENET_TGSR_TF2 (1U) //!< Bit field size in bits for ENET_TGSR_TF2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TGSR_TF2 field. +#define BR_ENET_TGSR_TF2(x) (BITBAND_ACCESS32(HW_ENET_TGSR_ADDR(x), BP_ENET_TGSR_TF2)) +#endif + +//! @brief Format value for bitfield ENET_TGSR_TF2. +#define BF_ENET_TGSR_TF2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TGSR_TF2), uint32_t) & BM_ENET_TGSR_TF2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TF2 field to a new value. +#define BW_ENET_TGSR_TF2(x, v) (BITBAND_ACCESS32(HW_ENET_TGSR_ADDR(x), BP_ENET_TGSR_TF2) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TGSR, field TF3[3] (W1C) + * + * Values: + * - 0 - Timer Flag for Channel 3 is clear + * - 1 - Timer Flag for Channel 3 is set + */ +//@{ +#define BP_ENET_TGSR_TF3 (3U) //!< Bit position for ENET_TGSR_TF3. +#define BM_ENET_TGSR_TF3 (0x00000008U) //!< Bit mask for ENET_TGSR_TF3. +#define BS_ENET_TGSR_TF3 (1U) //!< Bit field size in bits for ENET_TGSR_TF3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TGSR_TF3 field. +#define BR_ENET_TGSR_TF3(x) (BITBAND_ACCESS32(HW_ENET_TGSR_ADDR(x), BP_ENET_TGSR_TF3)) +#endif + +//! @brief Format value for bitfield ENET_TGSR_TF3. +#define BF_ENET_TGSR_TF3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TGSR_TF3), uint32_t) & BM_ENET_TGSR_TF3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TF3 field to a new value. +#define BW_ENET_TGSR_TF3(x, v) (BITBAND_ACCESS32(HW_ENET_TGSR_ADDR(x), BP_ENET_TGSR_TF3) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_ENET_TCSRn - Timer Control Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TCSRn - Timer Control Status Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_tcsrn +{ + uint32_t U; + struct _hw_enet_tcsrn_bitfields + { + uint32_t TDRE : 1; //!< [0] Timer DMA Request Enable + uint32_t RESERVED0 : 1; //!< [1] + uint32_t TMODE : 4; //!< [5:2] Timer Mode + uint32_t TIE : 1; //!< [6] Timer Interrupt Enable + uint32_t TF : 1; //!< [7] Timer Flag + uint32_t RESERVED1 : 24; //!< [31:8] + } B; +} hw_enet_tcsrn_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TCSRn register + */ +//@{ +#define HW_ENET_TCSRn_COUNT (4U) + +#define HW_ENET_TCSRn_ADDR(x, n) (REGS_ENET_BASE(x) + 0x608U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TCSRn(x, n) (*(__IO hw_enet_tcsrn_t *) HW_ENET_TCSRn_ADDR(x, n)) +#define HW_ENET_TCSRn_RD(x, n) (HW_ENET_TCSRn(x, n).U) +#define HW_ENET_TCSRn_WR(x, n, v) (HW_ENET_TCSRn(x, n).U = (v)) +#define HW_ENET_TCSRn_SET(x, n, v) (HW_ENET_TCSRn_WR(x, n, HW_ENET_TCSRn_RD(x, n) | (v))) +#define HW_ENET_TCSRn_CLR(x, n, v) (HW_ENET_TCSRn_WR(x, n, HW_ENET_TCSRn_RD(x, n) & ~(v))) +#define HW_ENET_TCSRn_TOG(x, n, v) (HW_ENET_TCSRn_WR(x, n, HW_ENET_TCSRn_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TCSRn bitfields + */ + +/*! + * @name Register ENET_TCSRn, field TDRE[0] (RW) + * + * Values: + * - 0 - DMA request is disabled + * - 1 - DMA request is enabled + */ +//@{ +#define BP_ENET_TCSRn_TDRE (0U) //!< Bit position for ENET_TCSRn_TDRE. +#define BM_ENET_TCSRn_TDRE (0x00000001U) //!< Bit mask for ENET_TCSRn_TDRE. +#define BS_ENET_TCSRn_TDRE (1U) //!< Bit field size in bits for ENET_TCSRn_TDRE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCSRn_TDRE field. +#define BR_ENET_TCSRn_TDRE(x, n) (BITBAND_ACCESS32(HW_ENET_TCSRn_ADDR(x, n), BP_ENET_TCSRn_TDRE)) +#endif + +//! @brief Format value for bitfield ENET_TCSRn_TDRE. +#define BF_ENET_TCSRn_TDRE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCSRn_TDRE), uint32_t) & BM_ENET_TCSRn_TDRE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TDRE field to a new value. +#define BW_ENET_TCSRn_TDRE(x, n, v) (BITBAND_ACCESS32(HW_ENET_TCSRn_ADDR(x, n), BP_ENET_TCSRn_TDRE) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TCSRn, field TMODE[5:2] (RW) + * + * Updating the Timer Mode field takes a few cycles to register because it is + * synchronized to the 1588 clock. The version of Timer Mode returned on a read is + * from the 1588 clock domain. When changing Timer Mode, always disable the + * channel and read this register to verify the channel is disabled first. + * + * Values: + * - 0000 - Timer Channel is disabled. + * - 0001 - Timer Channel is configured for Input Capture on rising edge + * - 0010 - Timer Channel is configured for Input Capture on falling edge + * - 0011 - Timer Channel is configured for Input Capture on both edges + * - 0100 - Timer Channel is configured for Output Compare - software only + * - 0101 - Timer Channel is configured for Output Compare - toggle output on + * compare + * - 0110 - Timer Channel is configured for Output Compare - clear output on + * compare + * - 0111 - Timer Channel is configured for Output Compare - set output on + * compare + * - 1000 - Reserved + * - 1010 - Timer Channel is configured for Output Compare - clear output on + * compare, set output on overflow + * - 10x1 - Timer Channel is configured for Output Compare - set output on + * compare, clear output on overflow + * - 1100 - Reserved + * - 1110 - Timer Channel is configured for Output Compare - pulse output low on + * compare for one 1588 clock cycle + * - 1111 - Timer Channel is configured for Output Compare - pulse output high + * on compare for one 1588 clock cycle + */ +//@{ +#define BP_ENET_TCSRn_TMODE (2U) //!< Bit position for ENET_TCSRn_TMODE. +#define BM_ENET_TCSRn_TMODE (0x0000003CU) //!< Bit mask for ENET_TCSRn_TMODE. +#define BS_ENET_TCSRn_TMODE (4U) //!< Bit field size in bits for ENET_TCSRn_TMODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCSRn_TMODE field. +#define BR_ENET_TCSRn_TMODE(x, n) (HW_ENET_TCSRn(x, n).B.TMODE) +#endif + +//! @brief Format value for bitfield ENET_TCSRn_TMODE. +#define BF_ENET_TCSRn_TMODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCSRn_TMODE), uint32_t) & BM_ENET_TCSRn_TMODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TMODE field to a new value. +#define BW_ENET_TCSRn_TMODE(x, n, v) (HW_ENET_TCSRn_WR(x, n, (HW_ENET_TCSRn_RD(x, n) & ~BM_ENET_TCSRn_TMODE) | BF_ENET_TCSRn_TMODE(v))) +#endif +//@} + +/*! + * @name Register ENET_TCSRn, field TIE[6] (RW) + * + * Values: + * - 0 - Interrupt is disabled + * - 1 - Interrupt is enabled + */ +//@{ +#define BP_ENET_TCSRn_TIE (6U) //!< Bit position for ENET_TCSRn_TIE. +#define BM_ENET_TCSRn_TIE (0x00000040U) //!< Bit mask for ENET_TCSRn_TIE. +#define BS_ENET_TCSRn_TIE (1U) //!< Bit field size in bits for ENET_TCSRn_TIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCSRn_TIE field. +#define BR_ENET_TCSRn_TIE(x, n) (BITBAND_ACCESS32(HW_ENET_TCSRn_ADDR(x, n), BP_ENET_TCSRn_TIE)) +#endif + +//! @brief Format value for bitfield ENET_TCSRn_TIE. +#define BF_ENET_TCSRn_TIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCSRn_TIE), uint32_t) & BM_ENET_TCSRn_TIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIE field to a new value. +#define BW_ENET_TCSRn_TIE(x, n, v) (BITBAND_ACCESS32(HW_ENET_TCSRn_ADDR(x, n), BP_ENET_TCSRn_TIE) = (v)) +#endif +//@} + +/*! + * @name Register ENET_TCSRn, field TF[7] (W1C) + * + * Sets when input capture or output compare occurs. This flag is double + * buffered between the module clock and 1588 clock domains. When this field is 1, it + * can be cleared to 0 by writing 1 to it. + * + * Values: + * - 0 - Input Capture or Output Compare has not occurred + * - 1 - Input Capture or Output Compare has occurred + */ +//@{ +#define BP_ENET_TCSRn_TF (7U) //!< Bit position for ENET_TCSRn_TF. +#define BM_ENET_TCSRn_TF (0x00000080U) //!< Bit mask for ENET_TCSRn_TF. +#define BS_ENET_TCSRn_TF (1U) //!< Bit field size in bits for ENET_TCSRn_TF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCSRn_TF field. +#define BR_ENET_TCSRn_TF(x, n) (BITBAND_ACCESS32(HW_ENET_TCSRn_ADDR(x, n), BP_ENET_TCSRn_TF)) +#endif + +//! @brief Format value for bitfield ENET_TCSRn_TF. +#define BF_ENET_TCSRn_TF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCSRn_TF), uint32_t) & BM_ENET_TCSRn_TF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TF field to a new value. +#define BW_ENET_TCSRn_TF(x, n, v) (BITBAND_ACCESS32(HW_ENET_TCSRn_ADDR(x, n), BP_ENET_TCSRn_TF) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_ENET_TCCRn - Timer Compare Capture Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_ENET_TCCRn - Timer Compare Capture Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_enet_tccrn +{ + uint32_t U; + struct _hw_enet_tccrn_bitfields + { + uint32_t TCC : 32; //!< [31:0] Timer Capture Compare + } B; +} hw_enet_tccrn_t; +#endif + +/*! + * @name Constants and macros for entire ENET_TCCRn register + */ +//@{ +#define HW_ENET_TCCRn_COUNT (4U) + +#define HW_ENET_TCCRn_ADDR(x, n) (REGS_ENET_BASE(x) + 0x60CU + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_ENET_TCCRn(x, n) (*(__IO hw_enet_tccrn_t *) HW_ENET_TCCRn_ADDR(x, n)) +#define HW_ENET_TCCRn_RD(x, n) (HW_ENET_TCCRn(x, n).U) +#define HW_ENET_TCCRn_WR(x, n, v) (HW_ENET_TCCRn(x, n).U = (v)) +#define HW_ENET_TCCRn_SET(x, n, v) (HW_ENET_TCCRn_WR(x, n, HW_ENET_TCCRn_RD(x, n) | (v))) +#define HW_ENET_TCCRn_CLR(x, n, v) (HW_ENET_TCCRn_WR(x, n, HW_ENET_TCCRn_RD(x, n) & ~(v))) +#define HW_ENET_TCCRn_TOG(x, n, v) (HW_ENET_TCCRn_WR(x, n, HW_ENET_TCCRn_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual ENET_TCCRn bitfields + */ + +/*! + * @name Register ENET_TCCRn, field TCC[31:0] (RW) + * + * This register is double buffered between the module clock and 1588 clock + * domains. When configured for compare, the 1588 clock domain updates with the value + * in the module clock domain whenever the Timer Channel is first enabled and on + * each subsequent compare. Write to this register with the first compare value + * before enabling the Timer Channel. When the Timer Channel is enabled, write + * the second compare value either immediately, or at least before the first + * compare occurs. After each compare, write the next compare value before the previous + * compare occurs and before clearing the Timer Flag. The compare occurs one + * 1588 clock cycle after the IEEE 1588 Counter increments past the compare value in + * the 1588 clock domain. If the compare value is less than the value of the + * 1588 Counter when the Timer Channel is first enabled, then the compare does not + * occur until following the next overflow of the 1588 Counter. If the compare + * value is greater than the IEEE 1588 Counter when the 1588 Counter overflows, or + * the compare value is less than the value of the IEEE 1588 Counter after the + * overflow, then the compare occurs one 1588 clock cycle following the overflow. + * When configured for Capture, the value of the IEEE 1588 Counter is captured into + * the 1588 clock domain and then updated into the module clock domain, provided + * the Timer Flag is clear. Always read the capture value before clearing the + * Timer Flag. + */ +//@{ +#define BP_ENET_TCCRn_TCC (0U) //!< Bit position for ENET_TCCRn_TCC. +#define BM_ENET_TCCRn_TCC (0xFFFFFFFFU) //!< Bit mask for ENET_TCCRn_TCC. +#define BS_ENET_TCCRn_TCC (32U) //!< Bit field size in bits for ENET_TCCRn_TCC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the ENET_TCCRn_TCC field. +#define BR_ENET_TCCRn_TCC(x, n) (HW_ENET_TCCRn(x, n).U) +#endif + +//! @brief Format value for bitfield ENET_TCCRn_TCC. +#define BF_ENET_TCCRn_TCC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_ENET_TCCRn_TCC), uint32_t) & BM_ENET_TCCRn_TCC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCC field to a new value. +#define BW_ENET_TCCRn_TCC(x, n, v) (HW_ENET_TCCRn_WR(x, n, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_enet_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All ENET module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_enet +{ + uint8_t _reserved0[4]; + __IO hw_enet_eir_t EIR; //!< [0x4] Interrupt Event Register + __IO hw_enet_eimr_t EIMR; //!< [0x8] Interrupt Mask Register + uint8_t _reserved1[4]; + __IO hw_enet_rdar_t RDAR; //!< [0x10] Receive Descriptor Active Register + __IO hw_enet_tdar_t TDAR; //!< [0x14] Transmit Descriptor Active Register + uint8_t _reserved2[12]; + __IO hw_enet_ecr_t ECR; //!< [0x24] Ethernet Control Register + uint8_t _reserved3[24]; + __IO hw_enet_mmfr_t MMFR; //!< [0x40] MII Management Frame Register + __IO hw_enet_mscr_t MSCR; //!< [0x44] MII Speed Control Register + uint8_t _reserved4[28]; + __IO hw_enet_mibc_t MIBC; //!< [0x64] MIB Control Register + uint8_t _reserved5[28]; + __IO hw_enet_rcr_t RCR; //!< [0x84] Receive Control Register + uint8_t _reserved6[60]; + __IO hw_enet_tcr_t TCR; //!< [0xC4] Transmit Control Register + uint8_t _reserved7[28]; + __IO hw_enet_palr_t PALR; //!< [0xE4] Physical Address Lower Register + __IO hw_enet_paur_t PAUR; //!< [0xE8] Physical Address Upper Register + __IO hw_enet_opd_t OPD; //!< [0xEC] Opcode/Pause Duration Register + uint8_t _reserved8[40]; + __IO hw_enet_iaur_t IAUR; //!< [0x118] Descriptor Individual Upper Address Register + __IO hw_enet_ialr_t IALR; //!< [0x11C] Descriptor Individual Lower Address Register + __IO hw_enet_gaur_t GAUR; //!< [0x120] Descriptor Group Upper Address Register + __IO hw_enet_galr_t GALR; //!< [0x124] Descriptor Group Lower Address Register + uint8_t _reserved9[28]; + __IO hw_enet_tfwr_t TFWR; //!< [0x144] Transmit FIFO Watermark Register + uint8_t _reserved10[56]; + __IO hw_enet_rdsr_t RDSR; //!< [0x180] Receive Descriptor Ring Start Register + __IO hw_enet_tdsr_t TDSR; //!< [0x184] Transmit Buffer Descriptor Ring Start Register + __IO hw_enet_mrbr_t MRBR; //!< [0x188] Maximum Receive Buffer Size Register + uint8_t _reserved11[4]; + __IO hw_enet_rsfl_t RSFL; //!< [0x190] Receive FIFO Section Full Threshold + __IO hw_enet_rsem_t RSEM; //!< [0x194] Receive FIFO Section Empty Threshold + __IO hw_enet_raem_t RAEM; //!< [0x198] Receive FIFO Almost Empty Threshold + __IO hw_enet_rafl_t RAFL; //!< [0x19C] Receive FIFO Almost Full Threshold + __IO hw_enet_tsem_t TSEM; //!< [0x1A0] Transmit FIFO Section Empty Threshold + __IO hw_enet_taem_t TAEM; //!< [0x1A4] Transmit FIFO Almost Empty Threshold + __IO hw_enet_tafl_t TAFL; //!< [0x1A8] Transmit FIFO Almost Full Threshold + __IO hw_enet_tipg_t TIPG; //!< [0x1AC] Transmit Inter-Packet Gap + __IO hw_enet_ftrl_t FTRL; //!< [0x1B0] Frame Truncation Length + uint8_t _reserved12[12]; + __IO hw_enet_tacc_t TACC; //!< [0x1C0] Transmit Accelerator Function Configuration + __IO hw_enet_racc_t RACC; //!< [0x1C4] Receive Accelerator Function Configuration + uint8_t _reserved13[60]; + __I hw_enet_rmon_t_packets_t RMON_T_PACKETS; //!< [0x204] Tx Packet Count Statistic Register + __I hw_enet_rmon_t_bc_pkt_t RMON_T_BC_PKT; //!< [0x208] Tx Broadcast Packets Statistic Register + __I hw_enet_rmon_t_mc_pkt_t RMON_T_MC_PKT; //!< [0x20C] Tx Multicast Packets Statistic Register + __I hw_enet_rmon_t_crc_align_t RMON_T_CRC_ALIGN; //!< [0x210] Tx Packets with CRC/Align Error Statistic Register + __I hw_enet_rmon_t_undersize_t RMON_T_UNDERSIZE; //!< [0x214] Tx Packets Less Than Bytes and Good CRC Statistic Register + __I hw_enet_rmon_t_oversize_t RMON_T_OVERSIZE; //!< [0x218] Tx Packets GT MAX_FL bytes and Good CRC Statistic Register + __I hw_enet_rmon_t_frag_t RMON_T_FRAG; //!< [0x21C] Tx Packets Less Than 64 Bytes and Bad CRC Statistic Register + __I hw_enet_rmon_t_jab_t RMON_T_JAB; //!< [0x220] Tx Packets Greater Than MAX_FL bytes and Bad CRC Statistic Register + __I hw_enet_rmon_t_col_t RMON_T_COL; //!< [0x224] Tx Collision Count Statistic Register + __I hw_enet_rmon_t_p64_t RMON_T_P64; //!< [0x228] Tx 64-Byte Packets Statistic Register + __I hw_enet_rmon_t_p65to127_t RMON_T_P65TO127; //!< [0x22C] Tx 65- to 127-byte Packets Statistic Register + __I hw_enet_rmon_t_p128to255_t RMON_T_P128TO255; //!< [0x230] Tx 128- to 255-byte Packets Statistic Register + __I hw_enet_rmon_t_p256to511_t RMON_T_P256TO511; //!< [0x234] Tx 256- to 511-byte Packets Statistic Register + __I hw_enet_rmon_t_p512to1023_t RMON_T_P512TO1023; //!< [0x238] Tx 512- to 1023-byte Packets Statistic Register + __I hw_enet_rmon_t_p1024to2047_t RMON_T_P1024TO2047; //!< [0x23C] Tx 1024- to 2047-byte Packets Statistic Register + __I hw_enet_rmon_t_p_gte2048_t RMON_T_P_GTE2048; //!< [0x240] Tx Packets Greater Than 2048 Bytes Statistic Register + __I hw_enet_rmon_t_octets_t RMON_T_OCTETS; //!< [0x244] Tx Octets Statistic Register + uint8_t _reserved14[4]; + __I hw_enet_ieee_t_frame_ok_t IEEE_T_FRAME_OK; //!< [0x24C] Frames Transmitted OK Statistic Register + __I hw_enet_ieee_t_1col_t IEEE_T_1COL; //!< [0x250] Frames Transmitted with Single Collision Statistic Register + __I hw_enet_ieee_t_mcol_t IEEE_T_MCOL; //!< [0x254] Frames Transmitted with Multiple Collisions Statistic Register + __I hw_enet_ieee_t_def_t IEEE_T_DEF; //!< [0x258] Frames Transmitted after Deferral Delay Statistic Register + __I hw_enet_ieee_t_lcol_t IEEE_T_LCOL; //!< [0x25C] Frames Transmitted with Late Collision Statistic Register + __I hw_enet_ieee_t_excol_t IEEE_T_EXCOL; //!< [0x260] Frames Transmitted with Excessive Collisions Statistic Register + __I hw_enet_ieee_t_macerr_t IEEE_T_MACERR; //!< [0x264] Frames Transmitted with Tx FIFO Underrun Statistic Register + __I hw_enet_ieee_t_cserr_t IEEE_T_CSERR; //!< [0x268] Frames Transmitted with Carrier Sense Error Statistic Register + uint8_t _reserved15[4]; + __I hw_enet_ieee_t_fdxfc_t IEEE_T_FDXFC; //!< [0x270] Flow Control Pause Frames Transmitted Statistic Register + __I hw_enet_ieee_t_octets_ok_t IEEE_T_OCTETS_OK; //!< [0x274] Octet Count for Frames Transmitted w/o Error Statistic Register + uint8_t _reserved16[12]; + __I hw_enet_rmon_r_packets_t RMON_R_PACKETS; //!< [0x284] Rx Packet Count Statistic Register + __I hw_enet_rmon_r_bc_pkt_t RMON_R_BC_PKT; //!< [0x288] Rx Broadcast Packets Statistic Register + __I hw_enet_rmon_r_mc_pkt_t RMON_R_MC_PKT; //!< [0x28C] Rx Multicast Packets Statistic Register + __I hw_enet_rmon_r_crc_align_t RMON_R_CRC_ALIGN; //!< [0x290] Rx Packets with CRC/Align Error Statistic Register + __I hw_enet_rmon_r_undersize_t RMON_R_UNDERSIZE; //!< [0x294] Rx Packets with Less Than 64 Bytes and Good CRC Statistic Register + __I hw_enet_rmon_r_oversize_t RMON_R_OVERSIZE; //!< [0x298] Rx Packets Greater Than MAX_FL and Good CRC Statistic Register + __I hw_enet_rmon_r_frag_t RMON_R_FRAG; //!< [0x29C] Rx Packets Less Than 64 Bytes and Bad CRC Statistic Register + __I hw_enet_rmon_r_jab_t RMON_R_JAB; //!< [0x2A0] Rx Packets Greater Than MAX_FL Bytes and Bad CRC Statistic Register + uint8_t _reserved17[4]; + __I hw_enet_rmon_r_p64_t RMON_R_P64; //!< [0x2A8] Rx 64-Byte Packets Statistic Register + __I hw_enet_rmon_r_p65to127_t RMON_R_P65TO127; //!< [0x2AC] Rx 65- to 127-Byte Packets Statistic Register + __I hw_enet_rmon_r_p128to255_t RMON_R_P128TO255; //!< [0x2B0] Rx 128- to 255-Byte Packets Statistic Register + __I hw_enet_rmon_r_p256to511_t RMON_R_P256TO511; //!< [0x2B4] Rx 256- to 511-Byte Packets Statistic Register + __I hw_enet_rmon_r_p512to1023_t RMON_R_P512TO1023; //!< [0x2B8] Rx 512- to 1023-Byte Packets Statistic Register + __I hw_enet_rmon_r_p1024to2047_t RMON_R_P1024TO2047; //!< [0x2BC] Rx 1024- to 2047-Byte Packets Statistic Register + __I hw_enet_rmon_r_gte2048_t RMON_R_GTE2048; //!< [0x2C0] Rx Packets Greater than 2048 Bytes Statistic Register + __I hw_enet_rmon_r_octets_t RMON_R_OCTETS; //!< [0x2C4] Rx Octets Statistic Register + __I hw_enet_ieee_r_drop_t IEEE_R_DROP; //!< [0x2C8] Frames not Counted Correctly Statistic Register + __I hw_enet_ieee_r_frame_ok_t IEEE_R_FRAME_OK; //!< [0x2CC] Frames Received OK Statistic Register + __I hw_enet_ieee_r_crc_t IEEE_R_CRC; //!< [0x2D0] Frames Received with CRC Error Statistic Register + __I hw_enet_ieee_r_align_t IEEE_R_ALIGN; //!< [0x2D4] Frames Received with Alignment Error Statistic Register + __I hw_enet_ieee_r_macerr_t IEEE_R_MACERR; //!< [0x2D8] Receive FIFO Overflow Count Statistic Register + __I hw_enet_ieee_r_fdxfc_t IEEE_R_FDXFC; //!< [0x2DC] Flow Control Pause Frames Received Statistic Register + __I hw_enet_ieee_r_octets_ok_t IEEE_R_OCTETS_OK; //!< [0x2E0] Octet Count for Frames Received without Error Statistic Register + uint8_t _reserved18[284]; + __IO hw_enet_atcr_t ATCR; //!< [0x400] Adjustable Timer Control Register + __IO hw_enet_atvr_t ATVR; //!< [0x404] Timer Value Register + __IO hw_enet_atoff_t ATOFF; //!< [0x408] Timer Offset Register + __IO hw_enet_atper_t ATPER; //!< [0x40C] Timer Period Register + __IO hw_enet_atcor_t ATCOR; //!< [0x410] Timer Correction Register + __IO hw_enet_atinc_t ATINC; //!< [0x414] Time-Stamping Clock Period Register + __I hw_enet_atstmp_t ATSTMP; //!< [0x418] Timestamp of Last Transmitted Frame + uint8_t _reserved19[488]; + __IO hw_enet_tgsr_t TGSR; //!< [0x604] Timer Global Status Register + struct { + __IO hw_enet_tcsrn_t TCSRn; //!< [0x608] Timer Control Status Register + __IO hw_enet_tccrn_t TCCRn; //!< [0x60C] Timer Compare Capture Register + } CHANNEL[4]; +} hw_enet_t; +#pragma pack() + +//! @brief Macro to access all ENET registers. +//! @param x ENET instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_ENET(0)</code>. +#define HW_ENET(x) (*(hw_enet_t *) REGS_ENET_BASE(x)) +#endif + +#endif // __HW_ENET_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_ewm.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,430 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_EWM_REGISTERS_H__ +#define __HW_EWM_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 EWM + * + * External Watchdog Monitor + * + * Registers defined in this header file: + * - HW_EWM_CTRL - Control Register + * - HW_EWM_SERV - Service Register + * - HW_EWM_CMPL - Compare Low Register + * - HW_EWM_CMPH - Compare High Register + * + * - hw_ewm_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_EWM_BASE +#define HW_EWM_INSTANCE_COUNT (1U) //!< Number of instances of the EWM module. +#define REGS_EWM_BASE (0x40061000U) //!< Base address for EWM. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_EWM_CTRL - Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_EWM_CTRL - Control Register (RW) + * + * Reset value: 0x00U + * + * The CTRL register is cleared by any reset. INEN, ASSIN and EWMEN bits can be + * written once after a CPU reset. Modifying these bits more than once, generates + * a bus transfer error. + */ +typedef union _hw_ewm_ctrl +{ + uint8_t U; + struct _hw_ewm_ctrl_bitfields + { + uint8_t EWMEN : 1; //!< [0] EWM enable. + uint8_t ASSIN : 1; //!< [1] EWM_in's Assertion State Select. + uint8_t INEN : 1; //!< [2] Input Enable. + uint8_t INTEN : 1; //!< [3] Interrupt Enable. + uint8_t RESERVED0 : 4; //!< [7:4] + } B; +} hw_ewm_ctrl_t; +#endif + +/*! + * @name Constants and macros for entire EWM_CTRL register + */ +//@{ +#define HW_EWM_CTRL_ADDR (REGS_EWM_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_EWM_CTRL (*(__IO hw_ewm_ctrl_t *) HW_EWM_CTRL_ADDR) +#define HW_EWM_CTRL_RD() (HW_EWM_CTRL.U) +#define HW_EWM_CTRL_WR(v) (HW_EWM_CTRL.U = (v)) +#define HW_EWM_CTRL_SET(v) (HW_EWM_CTRL_WR(HW_EWM_CTRL_RD() | (v))) +#define HW_EWM_CTRL_CLR(v) (HW_EWM_CTRL_WR(HW_EWM_CTRL_RD() & ~(v))) +#define HW_EWM_CTRL_TOG(v) (HW_EWM_CTRL_WR(HW_EWM_CTRL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual EWM_CTRL bitfields + */ + +/*! + * @name Register EWM_CTRL, field EWMEN[0] (RW) + * + * This bit when set, enables the EWM module. This resets the EWM counter to + * zero and deasserts the EWM_out signal. Clearing EWMEN bit disables the EWM, and + * therefore it cannot be enabled until a reset occurs, due to the write-once + * nature of this bit. + */ +//@{ +#define BP_EWM_CTRL_EWMEN (0U) //!< Bit position for EWM_CTRL_EWMEN. +#define BM_EWM_CTRL_EWMEN (0x01U) //!< Bit mask for EWM_CTRL_EWMEN. +#define BS_EWM_CTRL_EWMEN (1U) //!< Bit field size in bits for EWM_CTRL_EWMEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the EWM_CTRL_EWMEN field. +#define BR_EWM_CTRL_EWMEN (BITBAND_ACCESS8(HW_EWM_CTRL_ADDR, BP_EWM_CTRL_EWMEN)) +#endif + +//! @brief Format value for bitfield EWM_CTRL_EWMEN. +#define BF_EWM_CTRL_EWMEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_EWM_CTRL_EWMEN), uint8_t) & BM_EWM_CTRL_EWMEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EWMEN field to a new value. +#define BW_EWM_CTRL_EWMEN(v) (BITBAND_ACCESS8(HW_EWM_CTRL_ADDR, BP_EWM_CTRL_EWMEN) = (v)) +#endif +//@} + +/*! + * @name Register EWM_CTRL, field ASSIN[1] (RW) + * + * Default assert state of the EWM_in signal is logic zero. Setting ASSIN bit + * inverts the assert state to a logic one. + */ +//@{ +#define BP_EWM_CTRL_ASSIN (1U) //!< Bit position for EWM_CTRL_ASSIN. +#define BM_EWM_CTRL_ASSIN (0x02U) //!< Bit mask for EWM_CTRL_ASSIN. +#define BS_EWM_CTRL_ASSIN (1U) //!< Bit field size in bits for EWM_CTRL_ASSIN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the EWM_CTRL_ASSIN field. +#define BR_EWM_CTRL_ASSIN (BITBAND_ACCESS8(HW_EWM_CTRL_ADDR, BP_EWM_CTRL_ASSIN)) +#endif + +//! @brief Format value for bitfield EWM_CTRL_ASSIN. +#define BF_EWM_CTRL_ASSIN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_EWM_CTRL_ASSIN), uint8_t) & BM_EWM_CTRL_ASSIN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ASSIN field to a new value. +#define BW_EWM_CTRL_ASSIN(v) (BITBAND_ACCESS8(HW_EWM_CTRL_ADDR, BP_EWM_CTRL_ASSIN) = (v)) +#endif +//@} + +/*! + * @name Register EWM_CTRL, field INEN[2] (RW) + * + * This bit when set, enables the EWM_in port. + */ +//@{ +#define BP_EWM_CTRL_INEN (2U) //!< Bit position for EWM_CTRL_INEN. +#define BM_EWM_CTRL_INEN (0x04U) //!< Bit mask for EWM_CTRL_INEN. +#define BS_EWM_CTRL_INEN (1U) //!< Bit field size in bits for EWM_CTRL_INEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the EWM_CTRL_INEN field. +#define BR_EWM_CTRL_INEN (BITBAND_ACCESS8(HW_EWM_CTRL_ADDR, BP_EWM_CTRL_INEN)) +#endif + +//! @brief Format value for bitfield EWM_CTRL_INEN. +#define BF_EWM_CTRL_INEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_EWM_CTRL_INEN), uint8_t) & BM_EWM_CTRL_INEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INEN field to a new value. +#define BW_EWM_CTRL_INEN(v) (BITBAND_ACCESS8(HW_EWM_CTRL_ADDR, BP_EWM_CTRL_INEN) = (v)) +#endif +//@} + +/*! + * @name Register EWM_CTRL, field INTEN[3] (RW) + * + * This bit when set and EWM_out is asserted, an interrupt request is generated. + * To de-assert interrupt request, user should clear this bit by writing 0. + */ +//@{ +#define BP_EWM_CTRL_INTEN (3U) //!< Bit position for EWM_CTRL_INTEN. +#define BM_EWM_CTRL_INTEN (0x08U) //!< Bit mask for EWM_CTRL_INTEN. +#define BS_EWM_CTRL_INTEN (1U) //!< Bit field size in bits for EWM_CTRL_INTEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the EWM_CTRL_INTEN field. +#define BR_EWM_CTRL_INTEN (BITBAND_ACCESS8(HW_EWM_CTRL_ADDR, BP_EWM_CTRL_INTEN)) +#endif + +//! @brief Format value for bitfield EWM_CTRL_INTEN. +#define BF_EWM_CTRL_INTEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_EWM_CTRL_INTEN), uint8_t) & BM_EWM_CTRL_INTEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INTEN field to a new value. +#define BW_EWM_CTRL_INTEN(v) (BITBAND_ACCESS8(HW_EWM_CTRL_ADDR, BP_EWM_CTRL_INTEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_EWM_SERV - Service Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_EWM_SERV - Service Register (WORZ) + * + * Reset value: 0x00U + * + * The SERV register provides the interface from the CPU to the EWM module. It + * is write-only and reads of this register return zero. + */ +typedef union _hw_ewm_serv +{ + uint8_t U; + struct _hw_ewm_serv_bitfields + { + uint8_t SERVICE : 8; //!< [7:0] + } B; +} hw_ewm_serv_t; +#endif + +/*! + * @name Constants and macros for entire EWM_SERV register + */ +//@{ +#define HW_EWM_SERV_ADDR (REGS_EWM_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_EWM_SERV (*(__O hw_ewm_serv_t *) HW_EWM_SERV_ADDR) +#define HW_EWM_SERV_RD() (HW_EWM_SERV.U) +#define HW_EWM_SERV_WR(v) (HW_EWM_SERV.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual EWM_SERV bitfields + */ + +/*! + * @name Register EWM_SERV, field SERVICE[7:0] (WORZ) + * + * The EWM service mechanism requires the CPU to write two values to the SERV + * register: a first data byte of 0xB4, followed by a second data byte of 0x2C. The + * EWM service is illegal if either of the following conditions is true. The + * first or second data byte is not written correctly. The second data byte is not + * written within a fixed number of peripheral bus cycles of the first data byte. + * This fixed number of cycles is called EWM_service_time. + */ +//@{ +#define BP_EWM_SERV_SERVICE (0U) //!< Bit position for EWM_SERV_SERVICE. +#define BM_EWM_SERV_SERVICE (0xFFU) //!< Bit mask for EWM_SERV_SERVICE. +#define BS_EWM_SERV_SERVICE (8U) //!< Bit field size in bits for EWM_SERV_SERVICE. + +//! @brief Format value for bitfield EWM_SERV_SERVICE. +#define BF_EWM_SERV_SERVICE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_EWM_SERV_SERVICE), uint8_t) & BM_EWM_SERV_SERVICE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SERVICE field to a new value. +#define BW_EWM_SERV_SERVICE(v) (HW_EWM_SERV_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_EWM_CMPL - Compare Low Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_EWM_CMPL - Compare Low Register (RW) + * + * Reset value: 0x00U + * + * The CMPL register is reset to zero after a CPU reset. This provides no + * minimum time for the CPU to service the EWM counter. This register can be written + * only once after a CPU reset. Writing this register more than once generates a + * bus transfer error. + */ +typedef union _hw_ewm_cmpl +{ + uint8_t U; + struct _hw_ewm_cmpl_bitfields + { + uint8_t COMPAREL : 8; //!< [7:0] + } B; +} hw_ewm_cmpl_t; +#endif + +/*! + * @name Constants and macros for entire EWM_CMPL register + */ +//@{ +#define HW_EWM_CMPL_ADDR (REGS_EWM_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_EWM_CMPL (*(__IO hw_ewm_cmpl_t *) HW_EWM_CMPL_ADDR) +#define HW_EWM_CMPL_RD() (HW_EWM_CMPL.U) +#define HW_EWM_CMPL_WR(v) (HW_EWM_CMPL.U = (v)) +#define HW_EWM_CMPL_SET(v) (HW_EWM_CMPL_WR(HW_EWM_CMPL_RD() | (v))) +#define HW_EWM_CMPL_CLR(v) (HW_EWM_CMPL_WR(HW_EWM_CMPL_RD() & ~(v))) +#define HW_EWM_CMPL_TOG(v) (HW_EWM_CMPL_WR(HW_EWM_CMPL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual EWM_CMPL bitfields + */ + +/*! + * @name Register EWM_CMPL, field COMPAREL[7:0] (RW) + * + * To prevent runaway code from changing this field, software should write to + * this field after a CPU reset even if the (default) minimum service time is + * required. + */ +//@{ +#define BP_EWM_CMPL_COMPAREL (0U) //!< Bit position for EWM_CMPL_COMPAREL. +#define BM_EWM_CMPL_COMPAREL (0xFFU) //!< Bit mask for EWM_CMPL_COMPAREL. +#define BS_EWM_CMPL_COMPAREL (8U) //!< Bit field size in bits for EWM_CMPL_COMPAREL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the EWM_CMPL_COMPAREL field. +#define BR_EWM_CMPL_COMPAREL (HW_EWM_CMPL.U) +#endif + +//! @brief Format value for bitfield EWM_CMPL_COMPAREL. +#define BF_EWM_CMPL_COMPAREL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_EWM_CMPL_COMPAREL), uint8_t) & BM_EWM_CMPL_COMPAREL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMPAREL field to a new value. +#define BW_EWM_CMPL_COMPAREL(v) (HW_EWM_CMPL_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_EWM_CMPH - Compare High Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_EWM_CMPH - Compare High Register (RW) + * + * Reset value: 0xFFU + * + * The CMPH register is reset to 0xFF after a CPU reset. This provides a maximum + * of 256 clocks time, for the CPU to service the EWM counter. This register can + * be written only once after a CPU reset. Writing this register more than once + * generates a bus transfer error. The valid values for CMPH are up to 0xFE + * because the EWM counter never expires when CMPH = 0xFF. The expiration happens only + * if EWM counter is greater than CMPH. + */ +typedef union _hw_ewm_cmph +{ + uint8_t U; + struct _hw_ewm_cmph_bitfields + { + uint8_t COMPAREH : 8; //!< [7:0] + } B; +} hw_ewm_cmph_t; +#endif + +/*! + * @name Constants and macros for entire EWM_CMPH register + */ +//@{ +#define HW_EWM_CMPH_ADDR (REGS_EWM_BASE + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_EWM_CMPH (*(__IO hw_ewm_cmph_t *) HW_EWM_CMPH_ADDR) +#define HW_EWM_CMPH_RD() (HW_EWM_CMPH.U) +#define HW_EWM_CMPH_WR(v) (HW_EWM_CMPH.U = (v)) +#define HW_EWM_CMPH_SET(v) (HW_EWM_CMPH_WR(HW_EWM_CMPH_RD() | (v))) +#define HW_EWM_CMPH_CLR(v) (HW_EWM_CMPH_WR(HW_EWM_CMPH_RD() & ~(v))) +#define HW_EWM_CMPH_TOG(v) (HW_EWM_CMPH_WR(HW_EWM_CMPH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual EWM_CMPH bitfields + */ + +/*! + * @name Register EWM_CMPH, field COMPAREH[7:0] (RW) + * + * To prevent runaway code from changing this field, software should write to + * this field after a CPU reset even if the (default) maximum service time is + * required. + */ +//@{ +#define BP_EWM_CMPH_COMPAREH (0U) //!< Bit position for EWM_CMPH_COMPAREH. +#define BM_EWM_CMPH_COMPAREH (0xFFU) //!< Bit mask for EWM_CMPH_COMPAREH. +#define BS_EWM_CMPH_COMPAREH (8U) //!< Bit field size in bits for EWM_CMPH_COMPAREH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the EWM_CMPH_COMPAREH field. +#define BR_EWM_CMPH_COMPAREH (HW_EWM_CMPH.U) +#endif + +//! @brief Format value for bitfield EWM_CMPH_COMPAREH. +#define BF_EWM_CMPH_COMPAREH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_EWM_CMPH_COMPAREH), uint8_t) & BM_EWM_CMPH_COMPAREH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMPAREH field to a new value. +#define BW_EWM_CMPH_COMPAREH(v) (HW_EWM_CMPH_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_ewm_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All EWM module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_ewm +{ + __IO hw_ewm_ctrl_t CTRL; //!< [0x0] Control Register + __O hw_ewm_serv_t SERV; //!< [0x1] Service Register + __IO hw_ewm_cmpl_t CMPL; //!< [0x2] Compare Low Register + __IO hw_ewm_cmph_t CMPH; //!< [0x3] Compare High Register +} hw_ewm_t; +#pragma pack() + +//! @brief Macro to access all EWM registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_EWM</code>. +#define HW_EWM (*(hw_ewm_t *) REGS_EWM_BASE) +#endif + +#endif // __HW_EWM_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_fb.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,959 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_FB_REGISTERS_H__ +#define __HW_FB_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 FB + * + * FlexBus external bus interface + * + * Registers defined in this header file: + * - HW_FB_CSARn - Chip Select Address Register + * - HW_FB_CSMRn - Chip Select Mask Register + * - HW_FB_CSCRn - Chip Select Control Register + * - HW_FB_CSPMCR - Chip Select port Multiplexing Control Register + * + * - hw_fb_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_FB_BASE +#define HW_FB_INSTANCE_COUNT (1U) //!< Number of instances of the FB module. +#define REGS_FB_BASE (0x4000C000U) //!< Base address for FB. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FB_CSARn - Chip Select Address Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FB_CSARn - Chip Select Address Register (RW) + * + * Reset value: 0x00000000U + * + * Specifies the associated chip-select's base address. + */ +typedef union _hw_fb_csarn +{ + uint32_t U; + struct _hw_fb_csarn_bitfields + { + uint32_t RESERVED0 : 16; //!< [15:0] + uint32_t BA : 16; //!< [31:16] Base Address + } B; +} hw_fb_csarn_t; +#endif + +/*! + * @name Constants and macros for entire FB_CSARn register + */ +//@{ +#define HW_FB_CSARn_COUNT (6U) + +#define HW_FB_CSARn_ADDR(n) (REGS_FB_BASE + 0x0U + (0xCU * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FB_CSARn(n) (*(__IO hw_fb_csarn_t *) HW_FB_CSARn_ADDR(n)) +#define HW_FB_CSARn_RD(n) (HW_FB_CSARn(n).U) +#define HW_FB_CSARn_WR(n, v) (HW_FB_CSARn(n).U = (v)) +#define HW_FB_CSARn_SET(n, v) (HW_FB_CSARn_WR(n, HW_FB_CSARn_RD(n) | (v))) +#define HW_FB_CSARn_CLR(n, v) (HW_FB_CSARn_WR(n, HW_FB_CSARn_RD(n) & ~(v))) +#define HW_FB_CSARn_TOG(n, v) (HW_FB_CSARn_WR(n, HW_FB_CSARn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FB_CSARn bitfields + */ + +/*! + * @name Register FB_CSARn, field BA[31:16] (RW) + * + * Defines the base address for memory dedicated to the associated chip-select. + * BA is compared to bits 31-16 on the internal address bus to determine if the + * associated chip-select's memory is being accessed. Because the FlexBus module + * is one of the slaves connected to the crossbar switch, it is only accessible + * within a certain memory range. See the chip memory map for the applicable + * FlexBus "expansion" address range for which the chip-selects can be active. Set the + * CSARn and CSMRn registers appropriately before accessing this region. + */ +//@{ +#define BP_FB_CSARn_BA (16U) //!< Bit position for FB_CSARn_BA. +#define BM_FB_CSARn_BA (0xFFFF0000U) //!< Bit mask for FB_CSARn_BA. +#define BS_FB_CSARn_BA (16U) //!< Bit field size in bits for FB_CSARn_BA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSARn_BA field. +#define BR_FB_CSARn_BA(n) (HW_FB_CSARn(n).B.BA) +#endif + +//! @brief Format value for bitfield FB_CSARn_BA. +#define BF_FB_CSARn_BA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSARn_BA), uint32_t) & BM_FB_CSARn_BA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BA field to a new value. +#define BW_FB_CSARn_BA(n, v) (HW_FB_CSARn_WR(n, (HW_FB_CSARn_RD(n) & ~BM_FB_CSARn_BA) | BF_FB_CSARn_BA(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_FB_CSMRn - Chip Select Mask Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FB_CSMRn - Chip Select Mask Register (RW) + * + * Reset value: 0x00000000U + * + * Specifies the address mask and allowable access types for the associated + * chip-select. + */ +typedef union _hw_fb_csmrn +{ + uint32_t U; + struct _hw_fb_csmrn_bitfields + { + uint32_t V : 1; //!< [0] Valid + uint32_t RESERVED0 : 7; //!< [7:1] + uint32_t WP : 1; //!< [8] Write Protect + uint32_t RESERVED1 : 7; //!< [15:9] + uint32_t BAM : 16; //!< [31:16] Base Address Mask + } B; +} hw_fb_csmrn_t; +#endif + +/*! + * @name Constants and macros for entire FB_CSMRn register + */ +//@{ +#define HW_FB_CSMRn_COUNT (6U) + +#define HW_FB_CSMRn_ADDR(n) (REGS_FB_BASE + 0x4U + (0xCU * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FB_CSMRn(n) (*(__IO hw_fb_csmrn_t *) HW_FB_CSMRn_ADDR(n)) +#define HW_FB_CSMRn_RD(n) (HW_FB_CSMRn(n).U) +#define HW_FB_CSMRn_WR(n, v) (HW_FB_CSMRn(n).U = (v)) +#define HW_FB_CSMRn_SET(n, v) (HW_FB_CSMRn_WR(n, HW_FB_CSMRn_RD(n) | (v))) +#define HW_FB_CSMRn_CLR(n, v) (HW_FB_CSMRn_WR(n, HW_FB_CSMRn_RD(n) & ~(v))) +#define HW_FB_CSMRn_TOG(n, v) (HW_FB_CSMRn_WR(n, HW_FB_CSMRn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FB_CSMRn bitfields + */ + +/*! + * @name Register FB_CSMRn, field V[0] (RW) + * + * Specifies whether the corresponding CSAR, CSMR, and CSCR contents are valid. + * Programmed chip-selects do not assert until the V bit is 1b (except for + * FB_CS0, which acts as the global chip-select). At reset, FB_CS0 will fire for any + * access to the FlexBus memory region. CSMR0[V] must be set as part of the chip + * select initialization sequence to allow other chip selects to function as + * programmed. + * + * Values: + * - 0 - Chip-select is invalid. + * - 1 - Chip-select is valid. + */ +//@{ +#define BP_FB_CSMRn_V (0U) //!< Bit position for FB_CSMRn_V. +#define BM_FB_CSMRn_V (0x00000001U) //!< Bit mask for FB_CSMRn_V. +#define BS_FB_CSMRn_V (1U) //!< Bit field size in bits for FB_CSMRn_V. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSMRn_V field. +#define BR_FB_CSMRn_V(n) (BITBAND_ACCESS32(HW_FB_CSMRn_ADDR(n), BP_FB_CSMRn_V)) +#endif + +//! @brief Format value for bitfield FB_CSMRn_V. +#define BF_FB_CSMRn_V(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSMRn_V), uint32_t) & BM_FB_CSMRn_V) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the V field to a new value. +#define BW_FB_CSMRn_V(n, v) (BITBAND_ACCESS32(HW_FB_CSMRn_ADDR(n), BP_FB_CSMRn_V) = (v)) +#endif +//@} + +/*! + * @name Register FB_CSMRn, field WP[8] (RW) + * + * Controls write accesses to the address range in the corresponding CSAR. + * + * Values: + * - 0 - Write accesses are allowed. + * - 1 - Write accesses are not allowed. Attempting to write to the range of + * addresses for which the WP bit is set results in a bus error termination of + * the internal cycle and no external cycle. + */ +//@{ +#define BP_FB_CSMRn_WP (8U) //!< Bit position for FB_CSMRn_WP. +#define BM_FB_CSMRn_WP (0x00000100U) //!< Bit mask for FB_CSMRn_WP. +#define BS_FB_CSMRn_WP (1U) //!< Bit field size in bits for FB_CSMRn_WP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSMRn_WP field. +#define BR_FB_CSMRn_WP(n) (BITBAND_ACCESS32(HW_FB_CSMRn_ADDR(n), BP_FB_CSMRn_WP)) +#endif + +//! @brief Format value for bitfield FB_CSMRn_WP. +#define BF_FB_CSMRn_WP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSMRn_WP), uint32_t) & BM_FB_CSMRn_WP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WP field to a new value. +#define BW_FB_CSMRn_WP(n, v) (BITBAND_ACCESS32(HW_FB_CSMRn_ADDR(n), BP_FB_CSMRn_WP) = (v)) +#endif +//@} + +/*! + * @name Register FB_CSMRn, field BAM[31:16] (RW) + * + * Defines the associated chip-select's block size by masking address bits. + * + * Values: + * - 0 - The corresponding address bit in CSAR is used in the chip-select decode. + * - 1 - The corresponding address bit in CSAR is a don't care in the + * chip-select decode. + */ +//@{ +#define BP_FB_CSMRn_BAM (16U) //!< Bit position for FB_CSMRn_BAM. +#define BM_FB_CSMRn_BAM (0xFFFF0000U) //!< Bit mask for FB_CSMRn_BAM. +#define BS_FB_CSMRn_BAM (16U) //!< Bit field size in bits for FB_CSMRn_BAM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSMRn_BAM field. +#define BR_FB_CSMRn_BAM(n) (HW_FB_CSMRn(n).B.BAM) +#endif + +//! @brief Format value for bitfield FB_CSMRn_BAM. +#define BF_FB_CSMRn_BAM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSMRn_BAM), uint32_t) & BM_FB_CSMRn_BAM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BAM field to a new value. +#define BW_FB_CSMRn_BAM(n, v) (HW_FB_CSMRn_WR(n, (HW_FB_CSMRn_RD(n) & ~BM_FB_CSMRn_BAM) | BF_FB_CSMRn_BAM(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_FB_CSCRn - Chip Select Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FB_CSCRn - Chip Select Control Register (RW) + * + * Reset value: 0x003FFC00U + * + * Controls the auto-acknowledge, address setup and hold times, port size, burst + * capability, and number of wait states for the associated chip select. To + * support the global chip-select (FB_CS0), the CSCR0 reset values differ from the + * other CSCRs. The reset value of CSCR0 is as follows: Bits 31-24 are 0b Bit 23-3 + * are chip-dependent Bits 3-0 are 0b See the chip configuration details for your + * particular chip for information on the exact CSCR0 reset value. + */ +typedef union _hw_fb_cscrn +{ + uint32_t U; + struct _hw_fb_cscrn_bitfields + { + uint32_t RESERVED0 : 3; //!< [2:0] + uint32_t BSTW : 1; //!< [3] Burst-Write Enable + uint32_t BSTR : 1; //!< [4] Burst-Read Enable + uint32_t BEM : 1; //!< [5] Byte-Enable Mode + uint32_t PS : 2; //!< [7:6] Port Size + uint32_t AA : 1; //!< [8] Auto-Acknowledge Enable + uint32_t BLS : 1; //!< [9] Byte-Lane Shift + uint32_t WS : 6; //!< [15:10] Wait States + uint32_t WRAH : 2; //!< [17:16] Write Address Hold or Deselect + uint32_t RDAH : 2; //!< [19:18] Read Address Hold or Deselect + uint32_t ASET : 2; //!< [21:20] Address Setup + uint32_t EXTS : 1; //!< [22] + uint32_t SWSEN : 1; //!< [23] Secondary Wait State Enable + uint32_t RESERVED1 : 2; //!< [25:24] + uint32_t SWS : 6; //!< [31:26] Secondary Wait States + } B; +} hw_fb_cscrn_t; +#endif + +/*! + * @name Constants and macros for entire FB_CSCRn register + */ +//@{ +#define HW_FB_CSCRn_COUNT (6U) + +#define HW_FB_CSCRn_ADDR(n) (REGS_FB_BASE + 0x8U + (0xCU * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FB_CSCRn(n) (*(__IO hw_fb_cscrn_t *) HW_FB_CSCRn_ADDR(n)) +#define HW_FB_CSCRn_RD(n) (HW_FB_CSCRn(n).U) +#define HW_FB_CSCRn_WR(n, v) (HW_FB_CSCRn(n).U = (v)) +#define HW_FB_CSCRn_SET(n, v) (HW_FB_CSCRn_WR(n, HW_FB_CSCRn_RD(n) | (v))) +#define HW_FB_CSCRn_CLR(n, v) (HW_FB_CSCRn_WR(n, HW_FB_CSCRn_RD(n) & ~(v))) +#define HW_FB_CSCRn_TOG(n, v) (HW_FB_CSCRn_WR(n, HW_FB_CSCRn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FB_CSCRn bitfields + */ + +/*! + * @name Register FB_CSCRn, field BSTW[3] (RW) + * + * Specifies whether burst writes are enabled for memory associated with each + * chip select. + * + * Values: + * - 0 - Disabled. Data exceeding the specified port size is broken into + * individual, port-sized, non-burst writes. For example, a 32-bit write to an 8-bit + * port takes four byte writes. + * - 1 - Enabled. Enables burst write of data larger than the specified port + * size, including 32-bit writes to 8- and 16-bit ports, 16-bit writes to 8-bit + * ports, and line writes to 8-, 16-, and 32-bit ports. + */ +//@{ +#define BP_FB_CSCRn_BSTW (3U) //!< Bit position for FB_CSCRn_BSTW. +#define BM_FB_CSCRn_BSTW (0x00000008U) //!< Bit mask for FB_CSCRn_BSTW. +#define BS_FB_CSCRn_BSTW (1U) //!< Bit field size in bits for FB_CSCRn_BSTW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_BSTW field. +#define BR_FB_CSCRn_BSTW(n) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_BSTW)) +#endif + +//! @brief Format value for bitfield FB_CSCRn_BSTW. +#define BF_FB_CSCRn_BSTW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_BSTW), uint32_t) & BM_FB_CSCRn_BSTW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BSTW field to a new value. +#define BW_FB_CSCRn_BSTW(n, v) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_BSTW) = (v)) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field BSTR[4] (RW) + * + * Specifies whether burst reads are enabled for memory associated with each + * chip select. + * + * Values: + * - 0 - Disabled. Data exceeding the specified port size is broken into + * individual, port-sized, non-burst reads. For example, a 32-bit read from an 8-bit + * port is broken into four 8-bit reads. + * - 1 - Enabled. Enables data burst reads larger than the specified port size, + * including 32-bit reads from 8- and 16-bit ports, 16-bit reads from 8-bit + * ports, and line reads from 8-, 16-, and 32-bit ports. + */ +//@{ +#define BP_FB_CSCRn_BSTR (4U) //!< Bit position for FB_CSCRn_BSTR. +#define BM_FB_CSCRn_BSTR (0x00000010U) //!< Bit mask for FB_CSCRn_BSTR. +#define BS_FB_CSCRn_BSTR (1U) //!< Bit field size in bits for FB_CSCRn_BSTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_BSTR field. +#define BR_FB_CSCRn_BSTR(n) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_BSTR)) +#endif + +//! @brief Format value for bitfield FB_CSCRn_BSTR. +#define BF_FB_CSCRn_BSTR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_BSTR), uint32_t) & BM_FB_CSCRn_BSTR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BSTR field to a new value. +#define BW_FB_CSCRn_BSTR(n, v) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_BSTR) = (v)) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field BEM[5] (RW) + * + * Specifies whether the corresponding FB_BE is asserted for read accesses. + * Certain memories have byte enables that must be asserted during reads and writes. + * Write 1b to the BEM bit in the relevant CSCR to provide the appropriate mode + * of byte enable support for these SRAMs. + * + * Values: + * - 0 - FB_BE is asserted for data write only. + * - 1 - FB_BE is asserted for data read and write accesses. + */ +//@{ +#define BP_FB_CSCRn_BEM (5U) //!< Bit position for FB_CSCRn_BEM. +#define BM_FB_CSCRn_BEM (0x00000020U) //!< Bit mask for FB_CSCRn_BEM. +#define BS_FB_CSCRn_BEM (1U) //!< Bit field size in bits for FB_CSCRn_BEM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_BEM field. +#define BR_FB_CSCRn_BEM(n) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_BEM)) +#endif + +//! @brief Format value for bitfield FB_CSCRn_BEM. +#define BF_FB_CSCRn_BEM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_BEM), uint32_t) & BM_FB_CSCRn_BEM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BEM field to a new value. +#define BW_FB_CSCRn_BEM(n, v) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_BEM) = (v)) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field PS[7:6] (RW) + * + * Specifies the data port width of the associated chip-select, and determines + * where data is driven during write cycles and where data is sampled during read + * cycles. + * + * Values: + * - 00 - 32-bit port size. Valid data is sampled and driven on FB_D[31:0]. + * - 01 - 8-bit port size. Valid data is sampled and driven on FB_D[31:24] when + * BLS is 0b, or FB_D[7:0] when BLS is 1b. + */ +//@{ +#define BP_FB_CSCRn_PS (6U) //!< Bit position for FB_CSCRn_PS. +#define BM_FB_CSCRn_PS (0x000000C0U) //!< Bit mask for FB_CSCRn_PS. +#define BS_FB_CSCRn_PS (2U) //!< Bit field size in bits for FB_CSCRn_PS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_PS field. +#define BR_FB_CSCRn_PS(n) (HW_FB_CSCRn(n).B.PS) +#endif + +//! @brief Format value for bitfield FB_CSCRn_PS. +#define BF_FB_CSCRn_PS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_PS), uint32_t) & BM_FB_CSCRn_PS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PS field to a new value. +#define BW_FB_CSCRn_PS(n, v) (HW_FB_CSCRn_WR(n, (HW_FB_CSCRn_RD(n) & ~BM_FB_CSCRn_PS) | BF_FB_CSCRn_PS(v))) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field AA[8] (RW) + * + * Asserts the internal transfer acknowledge for accesses specified by the + * chip-select address. If AA is 1b for a corresponding FB_CSn and the external system + * asserts an external FB_TA before the wait-state countdown asserts the + * internal FB_TA, the cycle is terminated. Burst cycles increment the address bus + * between each internal termination. This field must be 1b if CSPMCR disables FB_TA. + * + * Values: + * - 0 - Disabled. No internal transfer acknowledge is asserted and the cycle is + * terminated externally. + * - 1 - Enabled. Internal transfer acknowledge is asserted as specified by WS. + */ +//@{ +#define BP_FB_CSCRn_AA (8U) //!< Bit position for FB_CSCRn_AA. +#define BM_FB_CSCRn_AA (0x00000100U) //!< Bit mask for FB_CSCRn_AA. +#define BS_FB_CSCRn_AA (1U) //!< Bit field size in bits for FB_CSCRn_AA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_AA field. +#define BR_FB_CSCRn_AA(n) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_AA)) +#endif + +//! @brief Format value for bitfield FB_CSCRn_AA. +#define BF_FB_CSCRn_AA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_AA), uint32_t) & BM_FB_CSCRn_AA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AA field to a new value. +#define BW_FB_CSCRn_AA(n, v) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_AA) = (v)) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field BLS[9] (RW) + * + * Specifies if data on FB_AD appears left-aligned or right-aligned during the + * data phase of a FlexBus access. + * + * Values: + * - 0 - Not shifted. Data is left-aligned on FB_AD. + * - 1 - Shifted. Data is right-aligned on FB_AD. + */ +//@{ +#define BP_FB_CSCRn_BLS (9U) //!< Bit position for FB_CSCRn_BLS. +#define BM_FB_CSCRn_BLS (0x00000200U) //!< Bit mask for FB_CSCRn_BLS. +#define BS_FB_CSCRn_BLS (1U) //!< Bit field size in bits for FB_CSCRn_BLS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_BLS field. +#define BR_FB_CSCRn_BLS(n) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_BLS)) +#endif + +//! @brief Format value for bitfield FB_CSCRn_BLS. +#define BF_FB_CSCRn_BLS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_BLS), uint32_t) & BM_FB_CSCRn_BLS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BLS field to a new value. +#define BW_FB_CSCRn_BLS(n, v) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_BLS) = (v)) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field WS[15:10] (RW) + * + * Specifies the number of wait states inserted after FlexBus asserts the + * associated chip-select and before an internal transfer acknowledge is generated (WS + * = 00h inserts 0 wait states, ..., WS = 3Fh inserts 63 wait states). + */ +//@{ +#define BP_FB_CSCRn_WS (10U) //!< Bit position for FB_CSCRn_WS. +#define BM_FB_CSCRn_WS (0x0000FC00U) //!< Bit mask for FB_CSCRn_WS. +#define BS_FB_CSCRn_WS (6U) //!< Bit field size in bits for FB_CSCRn_WS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_WS field. +#define BR_FB_CSCRn_WS(n) (HW_FB_CSCRn(n).B.WS) +#endif + +//! @brief Format value for bitfield FB_CSCRn_WS. +#define BF_FB_CSCRn_WS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_WS), uint32_t) & BM_FB_CSCRn_WS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WS field to a new value. +#define BW_FB_CSCRn_WS(n, v) (HW_FB_CSCRn_WR(n, (HW_FB_CSCRn_RD(n) & ~BM_FB_CSCRn_WS) | BF_FB_CSCRn_WS(v))) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field WRAH[17:16] (RW) + * + * Controls the address, data, and attribute hold time after the termination of + * a write cycle that hits in the associated chip-select's address space. The + * hold time applies only at the end of a transfer. Therefore, during a burst + * transfer or a transfer to a port size smaller than the transfer size, the hold time + * is only added after the last bus cycle. + * + * Values: + * - 00 - 1 cycle (default for all but FB_CS0 ) + * - 01 - 2 cycles + * - 10 - 3 cycles + * - 11 - 4 cycles (default for FB_CS0 ) + */ +//@{ +#define BP_FB_CSCRn_WRAH (16U) //!< Bit position for FB_CSCRn_WRAH. +#define BM_FB_CSCRn_WRAH (0x00030000U) //!< Bit mask for FB_CSCRn_WRAH. +#define BS_FB_CSCRn_WRAH (2U) //!< Bit field size in bits for FB_CSCRn_WRAH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_WRAH field. +#define BR_FB_CSCRn_WRAH(n) (HW_FB_CSCRn(n).B.WRAH) +#endif + +//! @brief Format value for bitfield FB_CSCRn_WRAH. +#define BF_FB_CSCRn_WRAH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_WRAH), uint32_t) & BM_FB_CSCRn_WRAH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WRAH field to a new value. +#define BW_FB_CSCRn_WRAH(n, v) (HW_FB_CSCRn_WR(n, (HW_FB_CSCRn_RD(n) & ~BM_FB_CSCRn_WRAH) | BF_FB_CSCRn_WRAH(v))) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field RDAH[19:18] (RW) + * + * Controls the address and attribute hold time after the termination during a + * read cycle that hits in the associated chip-select's address space. The hold + * time applies only at the end of a transfer. Therefore, during a burst transfer + * or a transfer to a port size smaller than the transfer size, the hold time is + * only added after the last bus cycle. The number of cycles the address and + * attributes are held after FB_CSn deassertion depends on the value of the AA bit. + * + * Values: + * - 00 - When AA is 0b, 1 cycle. When AA is 1b, 0 cycles. + * - 01 - When AA is 0b, 2 cycles. When AA is 1b, 1 cycle. + * - 10 - When AA is 0b, 3 cycles. When AA is 1b, 2 cycles. + * - 11 - When AA is 0b, 4 cycles. When AA is 1b, 3 cycles. + */ +//@{ +#define BP_FB_CSCRn_RDAH (18U) //!< Bit position for FB_CSCRn_RDAH. +#define BM_FB_CSCRn_RDAH (0x000C0000U) //!< Bit mask for FB_CSCRn_RDAH. +#define BS_FB_CSCRn_RDAH (2U) //!< Bit field size in bits for FB_CSCRn_RDAH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_RDAH field. +#define BR_FB_CSCRn_RDAH(n) (HW_FB_CSCRn(n).B.RDAH) +#endif + +//! @brief Format value for bitfield FB_CSCRn_RDAH. +#define BF_FB_CSCRn_RDAH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_RDAH), uint32_t) & BM_FB_CSCRn_RDAH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RDAH field to a new value. +#define BW_FB_CSCRn_RDAH(n, v) (HW_FB_CSCRn_WR(n, (HW_FB_CSCRn_RD(n) & ~BM_FB_CSCRn_RDAH) | BF_FB_CSCRn_RDAH(v))) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field ASET[21:20] (RW) + * + * Controls when the chip-select is asserted with respect to assertion of a + * valid address and attributes. + * + * Values: + * - 00 - Assert FB_CSn on the first rising clock edge after the address is + * asserted (default for all but FB_CS0 ). + * - 01 - Assert FB_CSn on the second rising clock edge after the address is + * asserted. + * - 10 - Assert FB_CSn on the third rising clock edge after the address is + * asserted. + * - 11 - Assert FB_CSn on the fourth rising clock edge after the address is + * asserted (default for FB_CS0 ). + */ +//@{ +#define BP_FB_CSCRn_ASET (20U) //!< Bit position for FB_CSCRn_ASET. +#define BM_FB_CSCRn_ASET (0x00300000U) //!< Bit mask for FB_CSCRn_ASET. +#define BS_FB_CSCRn_ASET (2U) //!< Bit field size in bits for FB_CSCRn_ASET. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_ASET field. +#define BR_FB_CSCRn_ASET(n) (HW_FB_CSCRn(n).B.ASET) +#endif + +//! @brief Format value for bitfield FB_CSCRn_ASET. +#define BF_FB_CSCRn_ASET(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_ASET), uint32_t) & BM_FB_CSCRn_ASET) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ASET field to a new value. +#define BW_FB_CSCRn_ASET(n, v) (HW_FB_CSCRn_WR(n, (HW_FB_CSCRn_RD(n) & ~BM_FB_CSCRn_ASET) | BF_FB_CSCRn_ASET(v))) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field EXTS[22] (RW) + * + * Extended Transfer Start/Extended Address Latch Enable Controls how long FB_TS + * /FB_ALE is asserted. + * + * Values: + * - 0 - Disabled. FB_TS /FB_ALE asserts for one bus clock cycle. + * - 1 - Enabled. FB_TS /FB_ALE remains asserted until the first positive clock + * edge after FB_CSn asserts. + */ +//@{ +#define BP_FB_CSCRn_EXTS (22U) //!< Bit position for FB_CSCRn_EXTS. +#define BM_FB_CSCRn_EXTS (0x00400000U) //!< Bit mask for FB_CSCRn_EXTS. +#define BS_FB_CSCRn_EXTS (1U) //!< Bit field size in bits for FB_CSCRn_EXTS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_EXTS field. +#define BR_FB_CSCRn_EXTS(n) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_EXTS)) +#endif + +//! @brief Format value for bitfield FB_CSCRn_EXTS. +#define BF_FB_CSCRn_EXTS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_EXTS), uint32_t) & BM_FB_CSCRn_EXTS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EXTS field to a new value. +#define BW_FB_CSCRn_EXTS(n, v) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_EXTS) = (v)) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field SWSEN[23] (RW) + * + * Values: + * - 0 - Disabled. A number of wait states (specified by WS) are inserted before + * an internal transfer acknowledge is generated for all transfers. + * - 1 - Enabled. A number of wait states (specified by SWS) are inserted before + * an internal transfer acknowledge is generated for burst transfer + * secondary terminations. + */ +//@{ +#define BP_FB_CSCRn_SWSEN (23U) //!< Bit position for FB_CSCRn_SWSEN. +#define BM_FB_CSCRn_SWSEN (0x00800000U) //!< Bit mask for FB_CSCRn_SWSEN. +#define BS_FB_CSCRn_SWSEN (1U) //!< Bit field size in bits for FB_CSCRn_SWSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_SWSEN field. +#define BR_FB_CSCRn_SWSEN(n) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_SWSEN)) +#endif + +//! @brief Format value for bitfield FB_CSCRn_SWSEN. +#define BF_FB_CSCRn_SWSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_SWSEN), uint32_t) & BM_FB_CSCRn_SWSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWSEN field to a new value. +#define BW_FB_CSCRn_SWSEN(n, v) (BITBAND_ACCESS32(HW_FB_CSCRn_ADDR(n), BP_FB_CSCRn_SWSEN) = (v)) +#endif +//@} + +/*! + * @name Register FB_CSCRn, field SWS[31:26] (RW) + * + * Used only when the SWSEN bit is 1b. Specifies the number of wait states + * inserted before an internal transfer acknowledge is generated for a burst transfer + * (except for the first termination, which is controlled by WS). + */ +//@{ +#define BP_FB_CSCRn_SWS (26U) //!< Bit position for FB_CSCRn_SWS. +#define BM_FB_CSCRn_SWS (0xFC000000U) //!< Bit mask for FB_CSCRn_SWS. +#define BS_FB_CSCRn_SWS (6U) //!< Bit field size in bits for FB_CSCRn_SWS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSCRn_SWS field. +#define BR_FB_CSCRn_SWS(n) (HW_FB_CSCRn(n).B.SWS) +#endif + +//! @brief Format value for bitfield FB_CSCRn_SWS. +#define BF_FB_CSCRn_SWS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSCRn_SWS), uint32_t) & BM_FB_CSCRn_SWS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWS field to a new value. +#define BW_FB_CSCRn_SWS(n, v) (HW_FB_CSCRn_WR(n, (HW_FB_CSCRn_RD(n) & ~BM_FB_CSCRn_SWS) | BF_FB_CSCRn_SWS(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FB_CSPMCR - Chip Select port Multiplexing Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FB_CSPMCR - Chip Select port Multiplexing Control Register (RW) + * + * Reset value: 0x00000000U + * + * Controls the multiplexing of the FlexBus signals. A bus error occurs when you + * do any of the following: Write to a reserved address Write to a reserved + * field in this register, or Access this register using a size other than 32 bits. + */ +typedef union _hw_fb_cspmcr +{ + uint32_t U; + struct _hw_fb_cspmcr_bitfields + { + uint32_t RESERVED0 : 12; //!< [11:0] + uint32_t GROUP5 : 4; //!< [15:12] FlexBus Signal Group 5 Multiplex + //! control + uint32_t GROUP4 : 4; //!< [19:16] FlexBus Signal Group 4 Multiplex + //! control + uint32_t GROUP3 : 4; //!< [23:20] FlexBus Signal Group 3 Multiplex + //! control + uint32_t GROUP2 : 4; //!< [27:24] FlexBus Signal Group 2 Multiplex + //! control + uint32_t GROUP1 : 4; //!< [31:28] FlexBus Signal Group 1 Multiplex + //! control + } B; +} hw_fb_cspmcr_t; +#endif + +/*! + * @name Constants and macros for entire FB_CSPMCR register + */ +//@{ +#define HW_FB_CSPMCR_ADDR (REGS_FB_BASE + 0x60U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FB_CSPMCR (*(__IO hw_fb_cspmcr_t *) HW_FB_CSPMCR_ADDR) +#define HW_FB_CSPMCR_RD() (HW_FB_CSPMCR.U) +#define HW_FB_CSPMCR_WR(v) (HW_FB_CSPMCR.U = (v)) +#define HW_FB_CSPMCR_SET(v) (HW_FB_CSPMCR_WR(HW_FB_CSPMCR_RD() | (v))) +#define HW_FB_CSPMCR_CLR(v) (HW_FB_CSPMCR_WR(HW_FB_CSPMCR_RD() & ~(v))) +#define HW_FB_CSPMCR_TOG(v) (HW_FB_CSPMCR_WR(HW_FB_CSPMCR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FB_CSPMCR bitfields + */ + +/*! + * @name Register FB_CSPMCR, field GROUP5[15:12] (RW) + * + * Controls the multiplexing of the FB_TA , FB_CS3 , and FB_BE_7_0 signals. When + * GROUP5 is not 0000b, you must write 1b to the CSCR[AA] bit. Otherwise, the + * bus hangs during a transfer. + * + * Values: + * - 0000 - FB_TA + * - 0001 - FB_CS3 . You must also write 1b to CSCR[AA]. + * - 0010 - FB_BE_7_0 . You must also write 1b to CSCR[AA]. + */ +//@{ +#define BP_FB_CSPMCR_GROUP5 (12U) //!< Bit position for FB_CSPMCR_GROUP5. +#define BM_FB_CSPMCR_GROUP5 (0x0000F000U) //!< Bit mask for FB_CSPMCR_GROUP5. +#define BS_FB_CSPMCR_GROUP5 (4U) //!< Bit field size in bits for FB_CSPMCR_GROUP5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSPMCR_GROUP5 field. +#define BR_FB_CSPMCR_GROUP5 (HW_FB_CSPMCR.B.GROUP5) +#endif + +//! @brief Format value for bitfield FB_CSPMCR_GROUP5. +#define BF_FB_CSPMCR_GROUP5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSPMCR_GROUP5), uint32_t) & BM_FB_CSPMCR_GROUP5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GROUP5 field to a new value. +#define BW_FB_CSPMCR_GROUP5(v) (HW_FB_CSPMCR_WR((HW_FB_CSPMCR_RD() & ~BM_FB_CSPMCR_GROUP5) | BF_FB_CSPMCR_GROUP5(v))) +#endif +//@} + +/*! + * @name Register FB_CSPMCR, field GROUP4[19:16] (RW) + * + * Controls the multiplexing of the FB_TBST , FB_CS2 , and FB_BE_15_8 signals. + * + * Values: + * - 0000 - FB_TBST + * - 0001 - FB_CS2 + * - 0010 - FB_BE_15_8 + */ +//@{ +#define BP_FB_CSPMCR_GROUP4 (16U) //!< Bit position for FB_CSPMCR_GROUP4. +#define BM_FB_CSPMCR_GROUP4 (0x000F0000U) //!< Bit mask for FB_CSPMCR_GROUP4. +#define BS_FB_CSPMCR_GROUP4 (4U) //!< Bit field size in bits for FB_CSPMCR_GROUP4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSPMCR_GROUP4 field. +#define BR_FB_CSPMCR_GROUP4 (HW_FB_CSPMCR.B.GROUP4) +#endif + +//! @brief Format value for bitfield FB_CSPMCR_GROUP4. +#define BF_FB_CSPMCR_GROUP4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSPMCR_GROUP4), uint32_t) & BM_FB_CSPMCR_GROUP4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GROUP4 field to a new value. +#define BW_FB_CSPMCR_GROUP4(v) (HW_FB_CSPMCR_WR((HW_FB_CSPMCR_RD() & ~BM_FB_CSPMCR_GROUP4) | BF_FB_CSPMCR_GROUP4(v))) +#endif +//@} + +/*! + * @name Register FB_CSPMCR, field GROUP3[23:20] (RW) + * + * Controls the multiplexing of the FB_CS5 , FB_TSIZ1, and FB_BE_23_16 signals. + * + * Values: + * - 0000 - FB_CS5 + * - 0001 - FB_TSIZ1 + * - 0010 - FB_BE_23_16 + */ +//@{ +#define BP_FB_CSPMCR_GROUP3 (20U) //!< Bit position for FB_CSPMCR_GROUP3. +#define BM_FB_CSPMCR_GROUP3 (0x00F00000U) //!< Bit mask for FB_CSPMCR_GROUP3. +#define BS_FB_CSPMCR_GROUP3 (4U) //!< Bit field size in bits for FB_CSPMCR_GROUP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSPMCR_GROUP3 field. +#define BR_FB_CSPMCR_GROUP3 (HW_FB_CSPMCR.B.GROUP3) +#endif + +//! @brief Format value for bitfield FB_CSPMCR_GROUP3. +#define BF_FB_CSPMCR_GROUP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSPMCR_GROUP3), uint32_t) & BM_FB_CSPMCR_GROUP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GROUP3 field to a new value. +#define BW_FB_CSPMCR_GROUP3(v) (HW_FB_CSPMCR_WR((HW_FB_CSPMCR_RD() & ~BM_FB_CSPMCR_GROUP3) | BF_FB_CSPMCR_GROUP3(v))) +#endif +//@} + +/*! + * @name Register FB_CSPMCR, field GROUP2[27:24] (RW) + * + * Controls the multiplexing of the FB_CS4 , FB_TSIZ0, and FB_BE_31_24 signals. + * + * Values: + * - 0000 - FB_CS4 + * - 0001 - FB_TSIZ0 + * - 0010 - FB_BE_31_24 + */ +//@{ +#define BP_FB_CSPMCR_GROUP2 (24U) //!< Bit position for FB_CSPMCR_GROUP2. +#define BM_FB_CSPMCR_GROUP2 (0x0F000000U) //!< Bit mask for FB_CSPMCR_GROUP2. +#define BS_FB_CSPMCR_GROUP2 (4U) //!< Bit field size in bits for FB_CSPMCR_GROUP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSPMCR_GROUP2 field. +#define BR_FB_CSPMCR_GROUP2 (HW_FB_CSPMCR.B.GROUP2) +#endif + +//! @brief Format value for bitfield FB_CSPMCR_GROUP2. +#define BF_FB_CSPMCR_GROUP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSPMCR_GROUP2), uint32_t) & BM_FB_CSPMCR_GROUP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GROUP2 field to a new value. +#define BW_FB_CSPMCR_GROUP2(v) (HW_FB_CSPMCR_WR((HW_FB_CSPMCR_RD() & ~BM_FB_CSPMCR_GROUP2) | BF_FB_CSPMCR_GROUP2(v))) +#endif +//@} + +/*! + * @name Register FB_CSPMCR, field GROUP1[31:28] (RW) + * + * Controls the multiplexing of the FB_ALE, FB_CS1 , and FB_TS signals. + * + * Values: + * - 0000 - FB_ALE + * - 0001 - FB_CS1 + * - 0010 - FB_TS + */ +//@{ +#define BP_FB_CSPMCR_GROUP1 (28U) //!< Bit position for FB_CSPMCR_GROUP1. +#define BM_FB_CSPMCR_GROUP1 (0xF0000000U) //!< Bit mask for FB_CSPMCR_GROUP1. +#define BS_FB_CSPMCR_GROUP1 (4U) //!< Bit field size in bits for FB_CSPMCR_GROUP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FB_CSPMCR_GROUP1 field. +#define BR_FB_CSPMCR_GROUP1 (HW_FB_CSPMCR.B.GROUP1) +#endif + +//! @brief Format value for bitfield FB_CSPMCR_GROUP1. +#define BF_FB_CSPMCR_GROUP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FB_CSPMCR_GROUP1), uint32_t) & BM_FB_CSPMCR_GROUP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GROUP1 field to a new value. +#define BW_FB_CSPMCR_GROUP1(v) (HW_FB_CSPMCR_WR((HW_FB_CSPMCR_RD() & ~BM_FB_CSPMCR_GROUP1) | BF_FB_CSPMCR_GROUP1(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_fb_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All FB module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_fb +{ + struct { + __IO hw_fb_csarn_t CSARn; //!< [0x0] Chip Select Address Register + __IO hw_fb_csmrn_t CSMRn; //!< [0x4] Chip Select Mask Register + __IO hw_fb_cscrn_t CSCRn; //!< [0x8] Chip Select Control Register + } CS[6]; + uint8_t _reserved0[24]; + __IO hw_fb_cspmcr_t CSPMCR; //!< [0x60] Chip Select port Multiplexing Control Register +} hw_fb_t; +#pragma pack() + +//! @brief Macro to access all FB registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_FB</code>. +#define HW_FB (*(hw_fb_t *) REGS_FB_BASE) +#endif + +#endif // __HW_FB_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_fmc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,2177 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_FMC_REGISTERS_H__ +#define __HW_FMC_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 FMC + * + * Flash Memory Controller + * + * Registers defined in this header file: + * - HW_FMC_PFAPR - Flash Access Protection Register + * - HW_FMC_PFB0CR - Flash Bank 0 Control Register + * - HW_FMC_PFB1CR - Flash Bank 1 Control Register + * - HW_FMC_TAGVDW0Sn - Cache Tag Storage + * - HW_FMC_TAGVDW1Sn - Cache Tag Storage + * - HW_FMC_TAGVDW2Sn - Cache Tag Storage + * - HW_FMC_TAGVDW3Sn - Cache Tag Storage + * - HW_FMC_DATAW0SnU - Cache Data Storage (upper word) + * - HW_FMC_DATAW0SnL - Cache Data Storage (lower word) + * - HW_FMC_DATAW1SnU - Cache Data Storage (upper word) + * - HW_FMC_DATAW1SnL - Cache Data Storage (lower word) + * - HW_FMC_DATAW2SnU - Cache Data Storage (upper word) + * - HW_FMC_DATAW2SnL - Cache Data Storage (lower word) + * - HW_FMC_DATAW3SnU - Cache Data Storage (upper word) + * - HW_FMC_DATAW3SnL - Cache Data Storage (lower word) + * + * - hw_fmc_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_FMC_BASE +#define HW_FMC_INSTANCE_COUNT (1U) //!< Number of instances of the FMC module. +#define REGS_FMC_BASE (0x4001F000U) //!< Base address for FMC. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_PFAPR - Flash Access Protection Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_PFAPR - Flash Access Protection Register (RW) + * + * Reset value: 0x00F8003FU + */ +typedef union _hw_fmc_pfapr +{ + uint32_t U; + struct _hw_fmc_pfapr_bitfields + { + uint32_t M0AP : 2; //!< [1:0] Master 0 Access Protection + uint32_t M1AP : 2; //!< [3:2] Master 1 Access Protection + uint32_t M2AP : 2; //!< [5:4] Master 2 Access Protection + uint32_t M3AP : 2; //!< [7:6] Master 3 Access Protection + uint32_t M4AP : 2; //!< [9:8] Master 4 Access Protection + uint32_t M5AP : 2; //!< [11:10] Master 5 Access Protection + uint32_t M6AP : 2; //!< [13:12] Master 6 Access Protection + uint32_t M7AP : 2; //!< [15:14] Master 7 Access Protection + uint32_t M0PFD : 1; //!< [16] Master 0 Prefetch Disable + uint32_t M1PFD : 1; //!< [17] Master 1 Prefetch Disable + uint32_t M2PFD : 1; //!< [18] Master 2 Prefetch Disable + uint32_t M3PFD : 1; //!< [19] Master 3 Prefetch Disable + uint32_t M4PFD : 1; //!< [20] Master 4 Prefetch Disable + uint32_t M5PFD : 1; //!< [21] Master 5 Prefetch Disable + uint32_t M6PFD : 1; //!< [22] Master 6 Prefetch Disable + uint32_t M7PFD : 1; //!< [23] Master 7 Prefetch Disable + uint32_t RESERVED0 : 8; //!< [31:24] + } B; +} hw_fmc_pfapr_t; +#endif + +/*! + * @name Constants and macros for entire FMC_PFAPR register + */ +//@{ +#define HW_FMC_PFAPR_ADDR (REGS_FMC_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_PFAPR (*(__IO hw_fmc_pfapr_t *) HW_FMC_PFAPR_ADDR) +#define HW_FMC_PFAPR_RD() (HW_FMC_PFAPR.U) +#define HW_FMC_PFAPR_WR(v) (HW_FMC_PFAPR.U = (v)) +#define HW_FMC_PFAPR_SET(v) (HW_FMC_PFAPR_WR(HW_FMC_PFAPR_RD() | (v))) +#define HW_FMC_PFAPR_CLR(v) (HW_FMC_PFAPR_WR(HW_FMC_PFAPR_RD() & ~(v))) +#define HW_FMC_PFAPR_TOG(v) (HW_FMC_PFAPR_WR(HW_FMC_PFAPR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_PFAPR bitfields + */ + +/*! + * @name Register FMC_PFAPR, field M0AP[1:0] (RW) + * + * This field controls whether read and write access to the flash are allowed + * based on the logical master number of the requesting crossbar switch master. + * + * Values: + * - 00 - No access may be performed by this master + * - 01 - Only read accesses may be performed by this master + * - 10 - Only write accesses may be performed by this master + * - 11 - Both read and write accesses may be performed by this master + */ +//@{ +#define BP_FMC_PFAPR_M0AP (0U) //!< Bit position for FMC_PFAPR_M0AP. +#define BM_FMC_PFAPR_M0AP (0x00000003U) //!< Bit mask for FMC_PFAPR_M0AP. +#define BS_FMC_PFAPR_M0AP (2U) //!< Bit field size in bits for FMC_PFAPR_M0AP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M0AP field. +#define BR_FMC_PFAPR_M0AP (HW_FMC_PFAPR.B.M0AP) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M0AP. +#define BF_FMC_PFAPR_M0AP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M0AP), uint32_t) & BM_FMC_PFAPR_M0AP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M0AP field to a new value. +#define BW_FMC_PFAPR_M0AP(v) (HW_FMC_PFAPR_WR((HW_FMC_PFAPR_RD() & ~BM_FMC_PFAPR_M0AP) | BF_FMC_PFAPR_M0AP(v))) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M1AP[3:2] (RW) + * + * This field controls whether read and write access to the flash are allowed + * based on the logical master number of the requesting crossbar switch master. + * + * Values: + * - 00 - No access may be performed by this master + * - 01 - Only read accesses may be performed by this master + * - 10 - Only write accesses may be performed by this master + * - 11 - Both read and write accesses may be performed by this master + */ +//@{ +#define BP_FMC_PFAPR_M1AP (2U) //!< Bit position for FMC_PFAPR_M1AP. +#define BM_FMC_PFAPR_M1AP (0x0000000CU) //!< Bit mask for FMC_PFAPR_M1AP. +#define BS_FMC_PFAPR_M1AP (2U) //!< Bit field size in bits for FMC_PFAPR_M1AP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M1AP field. +#define BR_FMC_PFAPR_M1AP (HW_FMC_PFAPR.B.M1AP) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M1AP. +#define BF_FMC_PFAPR_M1AP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M1AP), uint32_t) & BM_FMC_PFAPR_M1AP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M1AP field to a new value. +#define BW_FMC_PFAPR_M1AP(v) (HW_FMC_PFAPR_WR((HW_FMC_PFAPR_RD() & ~BM_FMC_PFAPR_M1AP) | BF_FMC_PFAPR_M1AP(v))) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M2AP[5:4] (RW) + * + * This field controls whether read and write access to the flash are allowed + * based on the logical master number of the requesting crossbar switch master. + * + * Values: + * - 00 - No access may be performed by this master + * - 01 - Only read accesses may be performed by this master + * - 10 - Only write accesses may be performed by this master + * - 11 - Both read and write accesses may be performed by this master + */ +//@{ +#define BP_FMC_PFAPR_M2AP (4U) //!< Bit position for FMC_PFAPR_M2AP. +#define BM_FMC_PFAPR_M2AP (0x00000030U) //!< Bit mask for FMC_PFAPR_M2AP. +#define BS_FMC_PFAPR_M2AP (2U) //!< Bit field size in bits for FMC_PFAPR_M2AP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M2AP field. +#define BR_FMC_PFAPR_M2AP (HW_FMC_PFAPR.B.M2AP) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M2AP. +#define BF_FMC_PFAPR_M2AP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M2AP), uint32_t) & BM_FMC_PFAPR_M2AP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M2AP field to a new value. +#define BW_FMC_PFAPR_M2AP(v) (HW_FMC_PFAPR_WR((HW_FMC_PFAPR_RD() & ~BM_FMC_PFAPR_M2AP) | BF_FMC_PFAPR_M2AP(v))) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M3AP[7:6] (RW) + * + * This field controls whether read and write access to the flash are allowed + * based on the logical master number of the requesting crossbar switch master. + * + * Values: + * - 00 - No access may be performed by this master + * - 01 - Only read accesses may be performed by this master + * - 10 - Only write accesses may be performed by this master + * - 11 - Both read and write accesses may be performed by this master + */ +//@{ +#define BP_FMC_PFAPR_M3AP (6U) //!< Bit position for FMC_PFAPR_M3AP. +#define BM_FMC_PFAPR_M3AP (0x000000C0U) //!< Bit mask for FMC_PFAPR_M3AP. +#define BS_FMC_PFAPR_M3AP (2U) //!< Bit field size in bits for FMC_PFAPR_M3AP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M3AP field. +#define BR_FMC_PFAPR_M3AP (HW_FMC_PFAPR.B.M3AP) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M3AP. +#define BF_FMC_PFAPR_M3AP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M3AP), uint32_t) & BM_FMC_PFAPR_M3AP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M3AP field to a new value. +#define BW_FMC_PFAPR_M3AP(v) (HW_FMC_PFAPR_WR((HW_FMC_PFAPR_RD() & ~BM_FMC_PFAPR_M3AP) | BF_FMC_PFAPR_M3AP(v))) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M4AP[9:8] (RW) + * + * This field controls whether read and write access to the flash are allowed + * based on the logical master number of the requesting crossbar switch master. + * + * Values: + * - 00 - No access may be performed by this master + * - 01 - Only read accesses may be performed by this master + * - 10 - Only write accesses may be performed by this master + * - 11 - Both read and write accesses may be performed by this master + */ +//@{ +#define BP_FMC_PFAPR_M4AP (8U) //!< Bit position for FMC_PFAPR_M4AP. +#define BM_FMC_PFAPR_M4AP (0x00000300U) //!< Bit mask for FMC_PFAPR_M4AP. +#define BS_FMC_PFAPR_M4AP (2U) //!< Bit field size in bits for FMC_PFAPR_M4AP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M4AP field. +#define BR_FMC_PFAPR_M4AP (HW_FMC_PFAPR.B.M4AP) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M4AP. +#define BF_FMC_PFAPR_M4AP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M4AP), uint32_t) & BM_FMC_PFAPR_M4AP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M4AP field to a new value. +#define BW_FMC_PFAPR_M4AP(v) (HW_FMC_PFAPR_WR((HW_FMC_PFAPR_RD() & ~BM_FMC_PFAPR_M4AP) | BF_FMC_PFAPR_M4AP(v))) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M5AP[11:10] (RW) + * + * This field controls whether read and write access to the flash are allowed + * based on the logical master number of the requesting crossbar switch master. + * + * Values: + * - 00 - No access may be performed by this master + * - 01 - Only read accesses may be performed by this master + * - 10 - Only write accesses may be performed by this master + * - 11 - Both read and write accesses may be performed by this master + */ +//@{ +#define BP_FMC_PFAPR_M5AP (10U) //!< Bit position for FMC_PFAPR_M5AP. +#define BM_FMC_PFAPR_M5AP (0x00000C00U) //!< Bit mask for FMC_PFAPR_M5AP. +#define BS_FMC_PFAPR_M5AP (2U) //!< Bit field size in bits for FMC_PFAPR_M5AP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M5AP field. +#define BR_FMC_PFAPR_M5AP (HW_FMC_PFAPR.B.M5AP) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M5AP. +#define BF_FMC_PFAPR_M5AP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M5AP), uint32_t) & BM_FMC_PFAPR_M5AP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M5AP field to a new value. +#define BW_FMC_PFAPR_M5AP(v) (HW_FMC_PFAPR_WR((HW_FMC_PFAPR_RD() & ~BM_FMC_PFAPR_M5AP) | BF_FMC_PFAPR_M5AP(v))) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M6AP[13:12] (RW) + * + * This field controls whether read and write access to the flash are allowed + * based on the logical master number of the requesting crossbar switch master. + * + * Values: + * - 00 - No access may be performed by this master + * - 01 - Only read accesses may be performed by this master + * - 10 - Only write accesses may be performed by this master + * - 11 - Both read and write accesses may be performed by this master + */ +//@{ +#define BP_FMC_PFAPR_M6AP (12U) //!< Bit position for FMC_PFAPR_M6AP. +#define BM_FMC_PFAPR_M6AP (0x00003000U) //!< Bit mask for FMC_PFAPR_M6AP. +#define BS_FMC_PFAPR_M6AP (2U) //!< Bit field size in bits for FMC_PFAPR_M6AP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M6AP field. +#define BR_FMC_PFAPR_M6AP (HW_FMC_PFAPR.B.M6AP) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M6AP. +#define BF_FMC_PFAPR_M6AP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M6AP), uint32_t) & BM_FMC_PFAPR_M6AP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M6AP field to a new value. +#define BW_FMC_PFAPR_M6AP(v) (HW_FMC_PFAPR_WR((HW_FMC_PFAPR_RD() & ~BM_FMC_PFAPR_M6AP) | BF_FMC_PFAPR_M6AP(v))) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M7AP[15:14] (RW) + * + * This field controls whether read and write access to the flash are allowed + * based on the logical master number of the requesting crossbar switch master. + * + * Values: + * - 00 - No access may be performed by this master. + * - 01 - Only read accesses may be performed by this master. + * - 10 - Only write accesses may be performed by this master. + * - 11 - Both read and write accesses may be performed by this master. + */ +//@{ +#define BP_FMC_PFAPR_M7AP (14U) //!< Bit position for FMC_PFAPR_M7AP. +#define BM_FMC_PFAPR_M7AP (0x0000C000U) //!< Bit mask for FMC_PFAPR_M7AP. +#define BS_FMC_PFAPR_M7AP (2U) //!< Bit field size in bits for FMC_PFAPR_M7AP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M7AP field. +#define BR_FMC_PFAPR_M7AP (HW_FMC_PFAPR.B.M7AP) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M7AP. +#define BF_FMC_PFAPR_M7AP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M7AP), uint32_t) & BM_FMC_PFAPR_M7AP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M7AP field to a new value. +#define BW_FMC_PFAPR_M7AP(v) (HW_FMC_PFAPR_WR((HW_FMC_PFAPR_RD() & ~BM_FMC_PFAPR_M7AP) | BF_FMC_PFAPR_M7AP(v))) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M0PFD[16] (RW) + * + * These bits control whether prefetching is enabled based on the logical number + * of the requesting crossbar switch master. This field is further qualified by + * the PFBnCR[BxDPE,BxIPE] bits. + * + * Values: + * - 0 - Prefetching for this master is enabled. + * - 1 - Prefetching for this master is disabled. + */ +//@{ +#define BP_FMC_PFAPR_M0PFD (16U) //!< Bit position for FMC_PFAPR_M0PFD. +#define BM_FMC_PFAPR_M0PFD (0x00010000U) //!< Bit mask for FMC_PFAPR_M0PFD. +#define BS_FMC_PFAPR_M0PFD (1U) //!< Bit field size in bits for FMC_PFAPR_M0PFD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M0PFD field. +#define BR_FMC_PFAPR_M0PFD (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M0PFD)) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M0PFD. +#define BF_FMC_PFAPR_M0PFD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M0PFD), uint32_t) & BM_FMC_PFAPR_M0PFD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M0PFD field to a new value. +#define BW_FMC_PFAPR_M0PFD(v) (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M0PFD) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M1PFD[17] (RW) + * + * These bits control whether prefetching is enabled based on the logical number + * of the requesting crossbar switch master. This field is further qualified by + * the PFBnCR[BxDPE,BxIPE] bits. + * + * Values: + * - 0 - Prefetching for this master is enabled. + * - 1 - Prefetching for this master is disabled. + */ +//@{ +#define BP_FMC_PFAPR_M1PFD (17U) //!< Bit position for FMC_PFAPR_M1PFD. +#define BM_FMC_PFAPR_M1PFD (0x00020000U) //!< Bit mask for FMC_PFAPR_M1PFD. +#define BS_FMC_PFAPR_M1PFD (1U) //!< Bit field size in bits for FMC_PFAPR_M1PFD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M1PFD field. +#define BR_FMC_PFAPR_M1PFD (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M1PFD)) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M1PFD. +#define BF_FMC_PFAPR_M1PFD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M1PFD), uint32_t) & BM_FMC_PFAPR_M1PFD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M1PFD field to a new value. +#define BW_FMC_PFAPR_M1PFD(v) (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M1PFD) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M2PFD[18] (RW) + * + * These bits control whether prefetching is enabled based on the logical number + * of the requesting crossbar switch master. This field is further qualified by + * the PFBnCR[BxDPE,BxIPE] bits. + * + * Values: + * - 0 - Prefetching for this master is enabled. + * - 1 - Prefetching for this master is disabled. + */ +//@{ +#define BP_FMC_PFAPR_M2PFD (18U) //!< Bit position for FMC_PFAPR_M2PFD. +#define BM_FMC_PFAPR_M2PFD (0x00040000U) //!< Bit mask for FMC_PFAPR_M2PFD. +#define BS_FMC_PFAPR_M2PFD (1U) //!< Bit field size in bits for FMC_PFAPR_M2PFD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M2PFD field. +#define BR_FMC_PFAPR_M2PFD (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M2PFD)) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M2PFD. +#define BF_FMC_PFAPR_M2PFD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M2PFD), uint32_t) & BM_FMC_PFAPR_M2PFD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M2PFD field to a new value. +#define BW_FMC_PFAPR_M2PFD(v) (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M2PFD) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M3PFD[19] (RW) + * + * These bits control whether prefetching is enabled based on the logical number + * of the requesting crossbar switch master. This field is further qualified by + * the PFBnCR[BxDPE,BxIPE] bits. + * + * Values: + * - 0 - Prefetching for this master is enabled. + * - 1 - Prefetching for this master is disabled. + */ +//@{ +#define BP_FMC_PFAPR_M3PFD (19U) //!< Bit position for FMC_PFAPR_M3PFD. +#define BM_FMC_PFAPR_M3PFD (0x00080000U) //!< Bit mask for FMC_PFAPR_M3PFD. +#define BS_FMC_PFAPR_M3PFD (1U) //!< Bit field size in bits for FMC_PFAPR_M3PFD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M3PFD field. +#define BR_FMC_PFAPR_M3PFD (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M3PFD)) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M3PFD. +#define BF_FMC_PFAPR_M3PFD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M3PFD), uint32_t) & BM_FMC_PFAPR_M3PFD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M3PFD field to a new value. +#define BW_FMC_PFAPR_M3PFD(v) (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M3PFD) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M4PFD[20] (RW) + * + * These bits control whether prefetching is enabled based on the logical number + * of the requesting crossbar switch master. This field is further qualified by + * the PFBnCR[BxDPE,BxIPE] bits. + * + * Values: + * - 0 - Prefetching for this master is enabled. + * - 1 - Prefetching for this master is disabled. + */ +//@{ +#define BP_FMC_PFAPR_M4PFD (20U) //!< Bit position for FMC_PFAPR_M4PFD. +#define BM_FMC_PFAPR_M4PFD (0x00100000U) //!< Bit mask for FMC_PFAPR_M4PFD. +#define BS_FMC_PFAPR_M4PFD (1U) //!< Bit field size in bits for FMC_PFAPR_M4PFD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M4PFD field. +#define BR_FMC_PFAPR_M4PFD (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M4PFD)) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M4PFD. +#define BF_FMC_PFAPR_M4PFD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M4PFD), uint32_t) & BM_FMC_PFAPR_M4PFD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M4PFD field to a new value. +#define BW_FMC_PFAPR_M4PFD(v) (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M4PFD) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M5PFD[21] (RW) + * + * These bits control whether prefetching is enabled based on the logical number + * of the requesting crossbar switch master. This field is further qualified by + * the PFBnCR[BxDPE,BxIPE] bits. + * + * Values: + * - 0 - Prefetching for this master is enabled. + * - 1 - Prefetching for this master is disabled. + */ +//@{ +#define BP_FMC_PFAPR_M5PFD (21U) //!< Bit position for FMC_PFAPR_M5PFD. +#define BM_FMC_PFAPR_M5PFD (0x00200000U) //!< Bit mask for FMC_PFAPR_M5PFD. +#define BS_FMC_PFAPR_M5PFD (1U) //!< Bit field size in bits for FMC_PFAPR_M5PFD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M5PFD field. +#define BR_FMC_PFAPR_M5PFD (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M5PFD)) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M5PFD. +#define BF_FMC_PFAPR_M5PFD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M5PFD), uint32_t) & BM_FMC_PFAPR_M5PFD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M5PFD field to a new value. +#define BW_FMC_PFAPR_M5PFD(v) (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M5PFD) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M6PFD[22] (RW) + * + * These bits control whether prefetching is enabled based on the logical number + * of the requesting crossbar switch master. This field is further qualified by + * the PFBnCR[BxDPE,BxIPE] bits. + * + * Values: + * - 0 - Prefetching for this master is enabled. + * - 1 - Prefetching for this master is disabled. + */ +//@{ +#define BP_FMC_PFAPR_M6PFD (22U) //!< Bit position for FMC_PFAPR_M6PFD. +#define BM_FMC_PFAPR_M6PFD (0x00400000U) //!< Bit mask for FMC_PFAPR_M6PFD. +#define BS_FMC_PFAPR_M6PFD (1U) //!< Bit field size in bits for FMC_PFAPR_M6PFD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M6PFD field. +#define BR_FMC_PFAPR_M6PFD (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M6PFD)) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M6PFD. +#define BF_FMC_PFAPR_M6PFD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M6PFD), uint32_t) & BM_FMC_PFAPR_M6PFD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M6PFD field to a new value. +#define BW_FMC_PFAPR_M6PFD(v) (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M6PFD) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFAPR, field M7PFD[23] (RW) + * + * These bits control whether prefetching is enabled based on the logical number + * of the requesting crossbar switch master. This field is further qualified by + * the PFBnCR[BxDPE,BxIPE] bits. + * + * Values: + * - 0 - Prefetching for this master is enabled. + * - 1 - Prefetching for this master is disabled. + */ +//@{ +#define BP_FMC_PFAPR_M7PFD (23U) //!< Bit position for FMC_PFAPR_M7PFD. +#define BM_FMC_PFAPR_M7PFD (0x00800000U) //!< Bit mask for FMC_PFAPR_M7PFD. +#define BS_FMC_PFAPR_M7PFD (1U) //!< Bit field size in bits for FMC_PFAPR_M7PFD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFAPR_M7PFD field. +#define BR_FMC_PFAPR_M7PFD (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M7PFD)) +#endif + +//! @brief Format value for bitfield FMC_PFAPR_M7PFD. +#define BF_FMC_PFAPR_M7PFD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFAPR_M7PFD), uint32_t) & BM_FMC_PFAPR_M7PFD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M7PFD field to a new value. +#define BW_FMC_PFAPR_M7PFD(v) (BITBAND_ACCESS32(HW_FMC_PFAPR_ADDR, BP_FMC_PFAPR_M7PFD) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_PFB0CR - Flash Bank 0 Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_PFB0CR - Flash Bank 0 Control Register (RW) + * + * Reset value: 0x3004001FU + */ +typedef union _hw_fmc_pfb0cr +{ + uint32_t U; + struct _hw_fmc_pfb0cr_bitfields + { + uint32_t B0SEBE : 1; //!< [0] Bank 0 Single Entry Buffer Enable + uint32_t B0IPE : 1; //!< [1] Bank 0 Instruction Prefetch Enable + uint32_t B0DPE : 1; //!< [2] Bank 0 Data Prefetch Enable + uint32_t B0ICE : 1; //!< [3] Bank 0 Instruction Cache Enable + uint32_t B0DCE : 1; //!< [4] Bank 0 Data Cache Enable + uint32_t CRCb : 3; //!< [7:5] Cache Replacement Control + uint32_t RESERVED0 : 9; //!< [16:8] + uint32_t B0MW : 2; //!< [18:17] Bank 0 Memory Width + uint32_t S_B_INV : 1; //!< [19] Invalidate Prefetch Speculation Buffer + uint32_t CINV_WAY : 4; //!< [23:20] Cache Invalidate Way x + uint32_t CLCK_WAY : 4; //!< [27:24] Cache Lock Way x + uint32_t B0RWSC : 4; //!< [31:28] Bank 0 Read Wait State Control + } B; +} hw_fmc_pfb0cr_t; +#endif + +/*! + * @name Constants and macros for entire FMC_PFB0CR register + */ +//@{ +#define HW_FMC_PFB0CR_ADDR (REGS_FMC_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_PFB0CR (*(__IO hw_fmc_pfb0cr_t *) HW_FMC_PFB0CR_ADDR) +#define HW_FMC_PFB0CR_RD() (HW_FMC_PFB0CR.U) +#define HW_FMC_PFB0CR_WR(v) (HW_FMC_PFB0CR.U = (v)) +#define HW_FMC_PFB0CR_SET(v) (HW_FMC_PFB0CR_WR(HW_FMC_PFB0CR_RD() | (v))) +#define HW_FMC_PFB0CR_CLR(v) (HW_FMC_PFB0CR_WR(HW_FMC_PFB0CR_RD() & ~(v))) +#define HW_FMC_PFB0CR_TOG(v) (HW_FMC_PFB0CR_WR(HW_FMC_PFB0CR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_PFB0CR bitfields + */ + +/*! + * @name Register FMC_PFB0CR, field B0SEBE[0] (RW) + * + * This bit controls whether the single entry page buffer is enabled in response + * to flash read accesses. Its operation is independent from bank 1's cache. A + * high-to-low transition of this enable forces the page buffer to be invalidated. + * + * Values: + * - 0 - Single entry buffer is disabled. + * - 1 - Single entry buffer is enabled. + */ +//@{ +#define BP_FMC_PFB0CR_B0SEBE (0U) //!< Bit position for FMC_PFB0CR_B0SEBE. +#define BM_FMC_PFB0CR_B0SEBE (0x00000001U) //!< Bit mask for FMC_PFB0CR_B0SEBE. +#define BS_FMC_PFB0CR_B0SEBE (1U) //!< Bit field size in bits for FMC_PFB0CR_B0SEBE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB0CR_B0SEBE field. +#define BR_FMC_PFB0CR_B0SEBE (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0SEBE)) +#endif + +//! @brief Format value for bitfield FMC_PFB0CR_B0SEBE. +#define BF_FMC_PFB0CR_B0SEBE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB0CR_B0SEBE), uint32_t) & BM_FMC_PFB0CR_B0SEBE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B0SEBE field to a new value. +#define BW_FMC_PFB0CR_B0SEBE(v) (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0SEBE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field B0IPE[1] (RW) + * + * This bit controls whether prefetches (or speculative accesses) are initiated + * in response to instruction fetches. + * + * Values: + * - 0 - Do not prefetch in response to instruction fetches. + * - 1 - Enable prefetches in response to instruction fetches. + */ +//@{ +#define BP_FMC_PFB0CR_B0IPE (1U) //!< Bit position for FMC_PFB0CR_B0IPE. +#define BM_FMC_PFB0CR_B0IPE (0x00000002U) //!< Bit mask for FMC_PFB0CR_B0IPE. +#define BS_FMC_PFB0CR_B0IPE (1U) //!< Bit field size in bits for FMC_PFB0CR_B0IPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB0CR_B0IPE field. +#define BR_FMC_PFB0CR_B0IPE (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0IPE)) +#endif + +//! @brief Format value for bitfield FMC_PFB0CR_B0IPE. +#define BF_FMC_PFB0CR_B0IPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB0CR_B0IPE), uint32_t) & BM_FMC_PFB0CR_B0IPE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B0IPE field to a new value. +#define BW_FMC_PFB0CR_B0IPE(v) (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0IPE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field B0DPE[2] (RW) + * + * This bit controls whether prefetches (or speculative accesses) are initiated + * in response to data references. + * + * Values: + * - 0 - Do not prefetch in response to data references. + * - 1 - Enable prefetches in response to data references. + */ +//@{ +#define BP_FMC_PFB0CR_B0DPE (2U) //!< Bit position for FMC_PFB0CR_B0DPE. +#define BM_FMC_PFB0CR_B0DPE (0x00000004U) //!< Bit mask for FMC_PFB0CR_B0DPE. +#define BS_FMC_PFB0CR_B0DPE (1U) //!< Bit field size in bits for FMC_PFB0CR_B0DPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB0CR_B0DPE field. +#define BR_FMC_PFB0CR_B0DPE (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0DPE)) +#endif + +//! @brief Format value for bitfield FMC_PFB0CR_B0DPE. +#define BF_FMC_PFB0CR_B0DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB0CR_B0DPE), uint32_t) & BM_FMC_PFB0CR_B0DPE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B0DPE field to a new value. +#define BW_FMC_PFB0CR_B0DPE(v) (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0DPE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field B0ICE[3] (RW) + * + * This bit controls whether instruction fetches are loaded into the cache. + * + * Values: + * - 0 - Do not cache instruction fetches. + * - 1 - Cache instruction fetches. + */ +//@{ +#define BP_FMC_PFB0CR_B0ICE (3U) //!< Bit position for FMC_PFB0CR_B0ICE. +#define BM_FMC_PFB0CR_B0ICE (0x00000008U) //!< Bit mask for FMC_PFB0CR_B0ICE. +#define BS_FMC_PFB0CR_B0ICE (1U) //!< Bit field size in bits for FMC_PFB0CR_B0ICE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB0CR_B0ICE field. +#define BR_FMC_PFB0CR_B0ICE (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0ICE)) +#endif + +//! @brief Format value for bitfield FMC_PFB0CR_B0ICE. +#define BF_FMC_PFB0CR_B0ICE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB0CR_B0ICE), uint32_t) & BM_FMC_PFB0CR_B0ICE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B0ICE field to a new value. +#define BW_FMC_PFB0CR_B0ICE(v) (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0ICE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field B0DCE[4] (RW) + * + * This bit controls whether data references are loaded into the cache. + * + * Values: + * - 0 - Do not cache data references. + * - 1 - Cache data references. + */ +//@{ +#define BP_FMC_PFB0CR_B0DCE (4U) //!< Bit position for FMC_PFB0CR_B0DCE. +#define BM_FMC_PFB0CR_B0DCE (0x00000010U) //!< Bit mask for FMC_PFB0CR_B0DCE. +#define BS_FMC_PFB0CR_B0DCE (1U) //!< Bit field size in bits for FMC_PFB0CR_B0DCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB0CR_B0DCE field. +#define BR_FMC_PFB0CR_B0DCE (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0DCE)) +#endif + +//! @brief Format value for bitfield FMC_PFB0CR_B0DCE. +#define BF_FMC_PFB0CR_B0DCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB0CR_B0DCE), uint32_t) & BM_FMC_PFB0CR_B0DCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B0DCE field to a new value. +#define BW_FMC_PFB0CR_B0DCE(v) (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_B0DCE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field CRC[7:5] (RW) + * + * This 3-bit field defines the replacement algorithm for accesses that are + * cached. + * + * Values: + * - 000 - LRU replacement algorithm per set across all four ways + * - 001 - Reserved + * - 010 - Independent LRU with ways [0-1] for ifetches, [2-3] for data + * - 011 - Independent LRU with ways [0-2] for ifetches, [3] for data + * - 1xx - Reserved + */ +//@{ +#define BP_FMC_PFB0CR_CRC (5U) //!< Bit position for FMC_PFB0CR_CRC. +#define BM_FMC_PFB0CR_CRC (0x000000E0U) //!< Bit mask for FMC_PFB0CR_CRC. +#define BS_FMC_PFB0CR_CRC (3U) //!< Bit field size in bits for FMC_PFB0CR_CRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB0CR_CRC field. +#define BR_FMC_PFB0CR_CRC (HW_FMC_PFB0CR.B.CRC) +#endif + +//! @brief Format value for bitfield FMC_PFB0CR_CRC. +#define BF_FMC_PFB0CR_CRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB0CR_CRC), uint32_t) & BM_FMC_PFB0CR_CRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRC field to a new value. +#define BW_FMC_PFB0CR_CRC(v) (HW_FMC_PFB0CR_WR((HW_FMC_PFB0CR_RD() & ~BM_FMC_PFB0CR_CRC) | BF_FMC_PFB0CR_CRC(v))) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field B0MW[18:17] (RO) + * + * This read-only field defines the width of the bank 0 memory. + * + * Values: + * - 00 - 32 bits + * - 01 - 64 bits + * - 10 - 128 bits + * - 11 - Reserved + */ +//@{ +#define BP_FMC_PFB0CR_B0MW (17U) //!< Bit position for FMC_PFB0CR_B0MW. +#define BM_FMC_PFB0CR_B0MW (0x00060000U) //!< Bit mask for FMC_PFB0CR_B0MW. +#define BS_FMC_PFB0CR_B0MW (2U) //!< Bit field size in bits for FMC_PFB0CR_B0MW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB0CR_B0MW field. +#define BR_FMC_PFB0CR_B0MW (HW_FMC_PFB0CR.B.B0MW) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field S_B_INV[19] (WORZ) + * + * This bit determines if the FMC's prefetch speculation buffer and the single + * entry page buffer are to be invalidated (cleared). When this bit is written, + * the speculation buffer and single entry buffer are immediately cleared. This bit + * always reads as zero. + * + * Values: + * - 0 - Speculation buffer and single entry buffer are not affected. + * - 1 - Invalidate (clear) speculation buffer and single entry buffer. + */ +//@{ +#define BP_FMC_PFB0CR_S_B_INV (19U) //!< Bit position for FMC_PFB0CR_S_B_INV. +#define BM_FMC_PFB0CR_S_B_INV (0x00080000U) //!< Bit mask for FMC_PFB0CR_S_B_INV. +#define BS_FMC_PFB0CR_S_B_INV (1U) //!< Bit field size in bits for FMC_PFB0CR_S_B_INV. + +//! @brief Format value for bitfield FMC_PFB0CR_S_B_INV. +#define BF_FMC_PFB0CR_S_B_INV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB0CR_S_B_INV), uint32_t) & BM_FMC_PFB0CR_S_B_INV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the S_B_INV field to a new value. +#define BW_FMC_PFB0CR_S_B_INV(v) (BITBAND_ACCESS32(HW_FMC_PFB0CR_ADDR, BP_FMC_PFB0CR_S_B_INV) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field CINV_WAY[23:20] (WORZ) + * + * These bits determine if the given cache way is to be invalidated (cleared). + * When a bit within this field is written, the corresponding cache way is + * immediately invalidated: the way's tag, data, and valid contents are cleared. This + * field always reads as zero. Cache invalidation takes precedence over locking. + * The cache is invalidated by system reset. System software is required to + * maintain memory coherency when any segment of the flash memory is programmed or + * erased. Accordingly, cache invalidations must occur after a programming or erase + * event is completed and before the new memory image is accessed. The bit setting + * definitions are for each bit in the field. + * + * Values: + * - 0 - No cache way invalidation for the corresponding cache + * - 1 - Invalidate cache way for the corresponding cache: clear the tag, data, + * and vld bits of ways selected + */ +//@{ +#define BP_FMC_PFB0CR_CINV_WAY (20U) //!< Bit position for FMC_PFB0CR_CINV_WAY. +#define BM_FMC_PFB0CR_CINV_WAY (0x00F00000U) //!< Bit mask for FMC_PFB0CR_CINV_WAY. +#define BS_FMC_PFB0CR_CINV_WAY (4U) //!< Bit field size in bits for FMC_PFB0CR_CINV_WAY. + +//! @brief Format value for bitfield FMC_PFB0CR_CINV_WAY. +#define BF_FMC_PFB0CR_CINV_WAY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB0CR_CINV_WAY), uint32_t) & BM_FMC_PFB0CR_CINV_WAY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CINV_WAY field to a new value. +#define BW_FMC_PFB0CR_CINV_WAY(v) (HW_FMC_PFB0CR_WR((HW_FMC_PFB0CR_RD() & ~BM_FMC_PFB0CR_CINV_WAY) | BF_FMC_PFB0CR_CINV_WAY(v))) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field CLCK_WAY[27:24] (RW) + * + * These bits determine if the given cache way is locked such that its contents + * will not be displaced by future misses. The bit setting definitions are for + * each bit in the field. + * + * Values: + * - 0 - Cache way is unlocked and may be displaced + * - 1 - Cache way is locked and its contents are not displaced + */ +//@{ +#define BP_FMC_PFB0CR_CLCK_WAY (24U) //!< Bit position for FMC_PFB0CR_CLCK_WAY. +#define BM_FMC_PFB0CR_CLCK_WAY (0x0F000000U) //!< Bit mask for FMC_PFB0CR_CLCK_WAY. +#define BS_FMC_PFB0CR_CLCK_WAY (4U) //!< Bit field size in bits for FMC_PFB0CR_CLCK_WAY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB0CR_CLCK_WAY field. +#define BR_FMC_PFB0CR_CLCK_WAY (HW_FMC_PFB0CR.B.CLCK_WAY) +#endif + +//! @brief Format value for bitfield FMC_PFB0CR_CLCK_WAY. +#define BF_FMC_PFB0CR_CLCK_WAY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB0CR_CLCK_WAY), uint32_t) & BM_FMC_PFB0CR_CLCK_WAY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLCK_WAY field to a new value. +#define BW_FMC_PFB0CR_CLCK_WAY(v) (HW_FMC_PFB0CR_WR((HW_FMC_PFB0CR_RD() & ~BM_FMC_PFB0CR_CLCK_WAY) | BF_FMC_PFB0CR_CLCK_WAY(v))) +#endif +//@} + +/*! + * @name Register FMC_PFB0CR, field B0RWSC[31:28] (RO) + * + * This read-only field defines the number of wait states required to access the + * bank 0 flash memory. The relationship between the read access time of the + * flash array (expressed in system clock cycles) and RWSC is defined as: Access + * time of flash array [system clocks] = RWSC + 1 The FMC automatically calculates + * this value based on the ratio of the system clock speed to the flash clock + * speed. For example, when this ratio is 4:1, the field's value is 3h. + */ +//@{ +#define BP_FMC_PFB0CR_B0RWSC (28U) //!< Bit position for FMC_PFB0CR_B0RWSC. +#define BM_FMC_PFB0CR_B0RWSC (0xF0000000U) //!< Bit mask for FMC_PFB0CR_B0RWSC. +#define BS_FMC_PFB0CR_B0RWSC (4U) //!< Bit field size in bits for FMC_PFB0CR_B0RWSC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB0CR_B0RWSC field. +#define BR_FMC_PFB0CR_B0RWSC (HW_FMC_PFB0CR.B.B0RWSC) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_PFB1CR - Flash Bank 1 Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_PFB1CR - Flash Bank 1 Control Register (RW) + * + * Reset value: 0x3004001FU + * + * This register has a format similar to that for PFB0CR, except it controls the + * operation of flash bank 1, and the "global" cache control fields are empty. + */ +typedef union _hw_fmc_pfb1cr +{ + uint32_t U; + struct _hw_fmc_pfb1cr_bitfields + { + uint32_t B1SEBE : 1; //!< [0] Bank 1 Single Entry Buffer Enable + uint32_t B1IPE : 1; //!< [1] Bank 1 Instruction Prefetch Enable + uint32_t B1DPE : 1; //!< [2] Bank 1 Data Prefetch Enable + uint32_t B1ICE : 1; //!< [3] Bank 1 Instruction Cache Enable + uint32_t B1DCE : 1; //!< [4] Bank 1 Data Cache Enable + uint32_t RESERVED0 : 12; //!< [16:5] + uint32_t B1MW : 2; //!< [18:17] Bank 1 Memory Width + uint32_t RESERVED1 : 9; //!< [27:19] + uint32_t B1RWSC : 4; //!< [31:28] Bank 1 Read Wait State Control + } B; +} hw_fmc_pfb1cr_t; +#endif + +/*! + * @name Constants and macros for entire FMC_PFB1CR register + */ +//@{ +#define HW_FMC_PFB1CR_ADDR (REGS_FMC_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_PFB1CR (*(__IO hw_fmc_pfb1cr_t *) HW_FMC_PFB1CR_ADDR) +#define HW_FMC_PFB1CR_RD() (HW_FMC_PFB1CR.U) +#define HW_FMC_PFB1CR_WR(v) (HW_FMC_PFB1CR.U = (v)) +#define HW_FMC_PFB1CR_SET(v) (HW_FMC_PFB1CR_WR(HW_FMC_PFB1CR_RD() | (v))) +#define HW_FMC_PFB1CR_CLR(v) (HW_FMC_PFB1CR_WR(HW_FMC_PFB1CR_RD() & ~(v))) +#define HW_FMC_PFB1CR_TOG(v) (HW_FMC_PFB1CR_WR(HW_FMC_PFB1CR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_PFB1CR bitfields + */ + +/*! + * @name Register FMC_PFB1CR, field B1SEBE[0] (RW) + * + * This bit controls whether the single entry buffer is enabled in response to + * flash read accesses. Its operation is independent from bank 0's cache. A + * high-to-low transition of this enable forces the page buffer to be invalidated. + * + * Values: + * - 0 - Single entry buffer is disabled. + * - 1 - Single entry buffer is enabled. + */ +//@{ +#define BP_FMC_PFB1CR_B1SEBE (0U) //!< Bit position for FMC_PFB1CR_B1SEBE. +#define BM_FMC_PFB1CR_B1SEBE (0x00000001U) //!< Bit mask for FMC_PFB1CR_B1SEBE. +#define BS_FMC_PFB1CR_B1SEBE (1U) //!< Bit field size in bits for FMC_PFB1CR_B1SEBE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB1CR_B1SEBE field. +#define BR_FMC_PFB1CR_B1SEBE (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1SEBE)) +#endif + +//! @brief Format value for bitfield FMC_PFB1CR_B1SEBE. +#define BF_FMC_PFB1CR_B1SEBE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB1CR_B1SEBE), uint32_t) & BM_FMC_PFB1CR_B1SEBE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B1SEBE field to a new value. +#define BW_FMC_PFB1CR_B1SEBE(v) (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1SEBE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB1CR, field B1IPE[1] (RW) + * + * This bit controls whether prefetches (or speculative accesses) are initiated + * in response to instruction fetches. + * + * Values: + * - 0 - Do not prefetch in response to instruction fetches. + * - 1 - Enable prefetches in response to instruction fetches. + */ +//@{ +#define BP_FMC_PFB1CR_B1IPE (1U) //!< Bit position for FMC_PFB1CR_B1IPE. +#define BM_FMC_PFB1CR_B1IPE (0x00000002U) //!< Bit mask for FMC_PFB1CR_B1IPE. +#define BS_FMC_PFB1CR_B1IPE (1U) //!< Bit field size in bits for FMC_PFB1CR_B1IPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB1CR_B1IPE field. +#define BR_FMC_PFB1CR_B1IPE (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1IPE)) +#endif + +//! @brief Format value for bitfield FMC_PFB1CR_B1IPE. +#define BF_FMC_PFB1CR_B1IPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB1CR_B1IPE), uint32_t) & BM_FMC_PFB1CR_B1IPE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B1IPE field to a new value. +#define BW_FMC_PFB1CR_B1IPE(v) (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1IPE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB1CR, field B1DPE[2] (RW) + * + * This bit controls whether prefetches (or speculative accesses) are initiated + * in response to data references. + * + * Values: + * - 0 - Do not prefetch in response to data references. + * - 1 - Enable prefetches in response to data references. + */ +//@{ +#define BP_FMC_PFB1CR_B1DPE (2U) //!< Bit position for FMC_PFB1CR_B1DPE. +#define BM_FMC_PFB1CR_B1DPE (0x00000004U) //!< Bit mask for FMC_PFB1CR_B1DPE. +#define BS_FMC_PFB1CR_B1DPE (1U) //!< Bit field size in bits for FMC_PFB1CR_B1DPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB1CR_B1DPE field. +#define BR_FMC_PFB1CR_B1DPE (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1DPE)) +#endif + +//! @brief Format value for bitfield FMC_PFB1CR_B1DPE. +#define BF_FMC_PFB1CR_B1DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB1CR_B1DPE), uint32_t) & BM_FMC_PFB1CR_B1DPE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B1DPE field to a new value. +#define BW_FMC_PFB1CR_B1DPE(v) (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1DPE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB1CR, field B1ICE[3] (RW) + * + * This bit controls whether instruction fetches are loaded into the cache. + * + * Values: + * - 0 - Do not cache instruction fetches. + * - 1 - Cache instruction fetches. + */ +//@{ +#define BP_FMC_PFB1CR_B1ICE (3U) //!< Bit position for FMC_PFB1CR_B1ICE. +#define BM_FMC_PFB1CR_B1ICE (0x00000008U) //!< Bit mask for FMC_PFB1CR_B1ICE. +#define BS_FMC_PFB1CR_B1ICE (1U) //!< Bit field size in bits for FMC_PFB1CR_B1ICE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB1CR_B1ICE field. +#define BR_FMC_PFB1CR_B1ICE (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1ICE)) +#endif + +//! @brief Format value for bitfield FMC_PFB1CR_B1ICE. +#define BF_FMC_PFB1CR_B1ICE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB1CR_B1ICE), uint32_t) & BM_FMC_PFB1CR_B1ICE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B1ICE field to a new value. +#define BW_FMC_PFB1CR_B1ICE(v) (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1ICE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB1CR, field B1DCE[4] (RW) + * + * This bit controls whether data references are loaded into the cache. + * + * Values: + * - 0 - Do not cache data references. + * - 1 - Cache data references. + */ +//@{ +#define BP_FMC_PFB1CR_B1DCE (4U) //!< Bit position for FMC_PFB1CR_B1DCE. +#define BM_FMC_PFB1CR_B1DCE (0x00000010U) //!< Bit mask for FMC_PFB1CR_B1DCE. +#define BS_FMC_PFB1CR_B1DCE (1U) //!< Bit field size in bits for FMC_PFB1CR_B1DCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB1CR_B1DCE field. +#define BR_FMC_PFB1CR_B1DCE (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1DCE)) +#endif + +//! @brief Format value for bitfield FMC_PFB1CR_B1DCE. +#define BF_FMC_PFB1CR_B1DCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_PFB1CR_B1DCE), uint32_t) & BM_FMC_PFB1CR_B1DCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B1DCE field to a new value. +#define BW_FMC_PFB1CR_B1DCE(v) (BITBAND_ACCESS32(HW_FMC_PFB1CR_ADDR, BP_FMC_PFB1CR_B1DCE) = (v)) +#endif +//@} + +/*! + * @name Register FMC_PFB1CR, field B1MW[18:17] (RO) + * + * This read-only field defines the width of the bank 1 memory. + * + * Values: + * - 00 - 32 bits + * - 01 - 64 bits + * - 10 - 128 bits + * - 11 - Reserved + */ +//@{ +#define BP_FMC_PFB1CR_B1MW (17U) //!< Bit position for FMC_PFB1CR_B1MW. +#define BM_FMC_PFB1CR_B1MW (0x00060000U) //!< Bit mask for FMC_PFB1CR_B1MW. +#define BS_FMC_PFB1CR_B1MW (2U) //!< Bit field size in bits for FMC_PFB1CR_B1MW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB1CR_B1MW field. +#define BR_FMC_PFB1CR_B1MW (HW_FMC_PFB1CR.B.B1MW) +#endif +//@} + +/*! + * @name Register FMC_PFB1CR, field B1RWSC[31:28] (RO) + * + * This read-only field defines the number of wait states required to access the + * bank 1 flash memory. The relationship between the read access time of the + * flash array (expressed in system clock cycles) and RWSC is defined as: Access + * time of flash array [system clocks] = RWSC + 1 The FMC automatically calculates + * this value based on the ratio of the system clock speed to the flash clock + * speed. For example, when this ratio is 4:1, the field's value is 3h. + */ +//@{ +#define BP_FMC_PFB1CR_B1RWSC (28U) //!< Bit position for FMC_PFB1CR_B1RWSC. +#define BM_FMC_PFB1CR_B1RWSC (0xF0000000U) //!< Bit mask for FMC_PFB1CR_B1RWSC. +#define BS_FMC_PFB1CR_B1RWSC (4U) //!< Bit field size in bits for FMC_PFB1CR_B1RWSC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_PFB1CR_B1RWSC field. +#define BR_FMC_PFB1CR_B1RWSC (HW_FMC_PFB1CR.B.B1RWSC) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_TAGVDW0Sn - Cache Tag Storage +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_TAGVDW0Sn - Cache Tag Storage (RW) + * + * Reset value: 0x00000000U + * + * The cache is a 4-way, set-associative cache with 4 sets. The ways are + * numbered 0-3 and the sets are numbered 0-3. In TAGVDWxSy, x denotes the way, and y + * denotes the set. This section represents tag/vld information for all sets in the + * indicated way. + */ +typedef union _hw_fmc_tagvdw0sn +{ + uint32_t U; + struct _hw_fmc_tagvdw0sn_bitfields + { + uint32_t valid : 1; //!< [0] 1-bit valid for cache entry + uint32_t RESERVED0 : 4; //!< [4:1] + uint32_t tag : 14; //!< [18:5] 14-bit tag for cache entry + uint32_t RESERVED1 : 13; //!< [31:19] + } B; +} hw_fmc_tagvdw0sn_t; +#endif + +/*! + * @name Constants and macros for entire FMC_TAGVDW0Sn register + */ +//@{ +#define HW_FMC_TAGVDW0Sn_COUNT (4U) + +#define HW_FMC_TAGVDW0Sn_ADDR(n) (REGS_FMC_BASE + 0x100U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_TAGVDW0Sn(n) (*(__IO hw_fmc_tagvdw0sn_t *) HW_FMC_TAGVDW0Sn_ADDR(n)) +#define HW_FMC_TAGVDW0Sn_RD(n) (HW_FMC_TAGVDW0Sn(n).U) +#define HW_FMC_TAGVDW0Sn_WR(n, v) (HW_FMC_TAGVDW0Sn(n).U = (v)) +#define HW_FMC_TAGVDW0Sn_SET(n, v) (HW_FMC_TAGVDW0Sn_WR(n, HW_FMC_TAGVDW0Sn_RD(n) | (v))) +#define HW_FMC_TAGVDW0Sn_CLR(n, v) (HW_FMC_TAGVDW0Sn_WR(n, HW_FMC_TAGVDW0Sn_RD(n) & ~(v))) +#define HW_FMC_TAGVDW0Sn_TOG(n, v) (HW_FMC_TAGVDW0Sn_WR(n, HW_FMC_TAGVDW0Sn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_TAGVDW0Sn bitfields + */ + +/*! + * @name Register FMC_TAGVDW0Sn, field valid[0] (RW) + */ +//@{ +#define BP_FMC_TAGVDW0Sn_valid (0U) //!< Bit position for FMC_TAGVDW0Sn_valid. +#define BM_FMC_TAGVDW0Sn_valid (0x00000001U) //!< Bit mask for FMC_TAGVDW0Sn_valid. +#define BS_FMC_TAGVDW0Sn_valid (1U) //!< Bit field size in bits for FMC_TAGVDW0Sn_valid. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_TAGVDW0Sn_valid field. +#define BR_FMC_TAGVDW0Sn_valid(n) (BITBAND_ACCESS32(HW_FMC_TAGVDW0Sn_ADDR(n), BP_FMC_TAGVDW0Sn_valid)) +#endif + +//! @brief Format value for bitfield FMC_TAGVDW0Sn_valid. +#define BF_FMC_TAGVDW0Sn_valid(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_TAGVDW0Sn_valid), uint32_t) & BM_FMC_TAGVDW0Sn_valid) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the valid field to a new value. +#define BW_FMC_TAGVDW0Sn_valid(n, v) (BITBAND_ACCESS32(HW_FMC_TAGVDW0Sn_ADDR(n), BP_FMC_TAGVDW0Sn_valid) = (v)) +#endif +//@} + +/*! + * @name Register FMC_TAGVDW0Sn, field tag[18:5] (RW) + */ +//@{ +#define BP_FMC_TAGVDW0Sn_tag (5U) //!< Bit position for FMC_TAGVDW0Sn_tag. +#define BM_FMC_TAGVDW0Sn_tag (0x0007FFE0U) //!< Bit mask for FMC_TAGVDW0Sn_tag. +#define BS_FMC_TAGVDW0Sn_tag (14U) //!< Bit field size in bits for FMC_TAGVDW0Sn_tag. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_TAGVDW0Sn_tag field. +#define BR_FMC_TAGVDW0Sn_tag(n) (HW_FMC_TAGVDW0Sn(n).B.tag) +#endif + +//! @brief Format value for bitfield FMC_TAGVDW0Sn_tag. +#define BF_FMC_TAGVDW0Sn_tag(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_TAGVDW0Sn_tag), uint32_t) & BM_FMC_TAGVDW0Sn_tag) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the tag field to a new value. +#define BW_FMC_TAGVDW0Sn_tag(n, v) (HW_FMC_TAGVDW0Sn_WR(n, (HW_FMC_TAGVDW0Sn_RD(n) & ~BM_FMC_TAGVDW0Sn_tag) | BF_FMC_TAGVDW0Sn_tag(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_TAGVDW1Sn - Cache Tag Storage +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_TAGVDW1Sn - Cache Tag Storage (RW) + * + * Reset value: 0x00000000U + * + * The cache is a 4-way, set-associative cache with 4 sets. The ways are + * numbered 0-3 and the sets are numbered 0-3. In TAGVDWxSy, x denotes the way, and y + * denotes the set. This section represents tag/vld information for all sets in the + * indicated way. + */ +typedef union _hw_fmc_tagvdw1sn +{ + uint32_t U; + struct _hw_fmc_tagvdw1sn_bitfields + { + uint32_t valid : 1; //!< [0] 1-bit valid for cache entry + uint32_t RESERVED0 : 4; //!< [4:1] + uint32_t tag : 14; //!< [18:5] 14-bit tag for cache entry + uint32_t RESERVED1 : 13; //!< [31:19] + } B; +} hw_fmc_tagvdw1sn_t; +#endif + +/*! + * @name Constants and macros for entire FMC_TAGVDW1Sn register + */ +//@{ +#define HW_FMC_TAGVDW1Sn_COUNT (4U) + +#define HW_FMC_TAGVDW1Sn_ADDR(n) (REGS_FMC_BASE + 0x110U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_TAGVDW1Sn(n) (*(__IO hw_fmc_tagvdw1sn_t *) HW_FMC_TAGVDW1Sn_ADDR(n)) +#define HW_FMC_TAGVDW1Sn_RD(n) (HW_FMC_TAGVDW1Sn(n).U) +#define HW_FMC_TAGVDW1Sn_WR(n, v) (HW_FMC_TAGVDW1Sn(n).U = (v)) +#define HW_FMC_TAGVDW1Sn_SET(n, v) (HW_FMC_TAGVDW1Sn_WR(n, HW_FMC_TAGVDW1Sn_RD(n) | (v))) +#define HW_FMC_TAGVDW1Sn_CLR(n, v) (HW_FMC_TAGVDW1Sn_WR(n, HW_FMC_TAGVDW1Sn_RD(n) & ~(v))) +#define HW_FMC_TAGVDW1Sn_TOG(n, v) (HW_FMC_TAGVDW1Sn_WR(n, HW_FMC_TAGVDW1Sn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_TAGVDW1Sn bitfields + */ + +/*! + * @name Register FMC_TAGVDW1Sn, field valid[0] (RW) + */ +//@{ +#define BP_FMC_TAGVDW1Sn_valid (0U) //!< Bit position for FMC_TAGVDW1Sn_valid. +#define BM_FMC_TAGVDW1Sn_valid (0x00000001U) //!< Bit mask for FMC_TAGVDW1Sn_valid. +#define BS_FMC_TAGVDW1Sn_valid (1U) //!< Bit field size in bits for FMC_TAGVDW1Sn_valid. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_TAGVDW1Sn_valid field. +#define BR_FMC_TAGVDW1Sn_valid(n) (BITBAND_ACCESS32(HW_FMC_TAGVDW1Sn_ADDR(n), BP_FMC_TAGVDW1Sn_valid)) +#endif + +//! @brief Format value for bitfield FMC_TAGVDW1Sn_valid. +#define BF_FMC_TAGVDW1Sn_valid(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_TAGVDW1Sn_valid), uint32_t) & BM_FMC_TAGVDW1Sn_valid) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the valid field to a new value. +#define BW_FMC_TAGVDW1Sn_valid(n, v) (BITBAND_ACCESS32(HW_FMC_TAGVDW1Sn_ADDR(n), BP_FMC_TAGVDW1Sn_valid) = (v)) +#endif +//@} + +/*! + * @name Register FMC_TAGVDW1Sn, field tag[18:5] (RW) + */ +//@{ +#define BP_FMC_TAGVDW1Sn_tag (5U) //!< Bit position for FMC_TAGVDW1Sn_tag. +#define BM_FMC_TAGVDW1Sn_tag (0x0007FFE0U) //!< Bit mask for FMC_TAGVDW1Sn_tag. +#define BS_FMC_TAGVDW1Sn_tag (14U) //!< Bit field size in bits for FMC_TAGVDW1Sn_tag. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_TAGVDW1Sn_tag field. +#define BR_FMC_TAGVDW1Sn_tag(n) (HW_FMC_TAGVDW1Sn(n).B.tag) +#endif + +//! @brief Format value for bitfield FMC_TAGVDW1Sn_tag. +#define BF_FMC_TAGVDW1Sn_tag(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_TAGVDW1Sn_tag), uint32_t) & BM_FMC_TAGVDW1Sn_tag) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the tag field to a new value. +#define BW_FMC_TAGVDW1Sn_tag(n, v) (HW_FMC_TAGVDW1Sn_WR(n, (HW_FMC_TAGVDW1Sn_RD(n) & ~BM_FMC_TAGVDW1Sn_tag) | BF_FMC_TAGVDW1Sn_tag(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_TAGVDW2Sn - Cache Tag Storage +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_TAGVDW2Sn - Cache Tag Storage (RW) + * + * Reset value: 0x00000000U + * + * The cache is a 4-way, set-associative cache with 4 sets. The ways are + * numbered 0-3 and the sets are numbered 0-3. In TAGVDWxSy, x denotes the way, and y + * denotes the set. This section represents tag/vld information for all sets in the + * indicated way. + */ +typedef union _hw_fmc_tagvdw2sn +{ + uint32_t U; + struct _hw_fmc_tagvdw2sn_bitfields + { + uint32_t valid : 1; //!< [0] 1-bit valid for cache entry + uint32_t RESERVED0 : 4; //!< [4:1] + uint32_t tag : 14; //!< [18:5] 14-bit tag for cache entry + uint32_t RESERVED1 : 13; //!< [31:19] + } B; +} hw_fmc_tagvdw2sn_t; +#endif + +/*! + * @name Constants and macros for entire FMC_TAGVDW2Sn register + */ +//@{ +#define HW_FMC_TAGVDW2Sn_COUNT (4U) + +#define HW_FMC_TAGVDW2Sn_ADDR(n) (REGS_FMC_BASE + 0x120U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_TAGVDW2Sn(n) (*(__IO hw_fmc_tagvdw2sn_t *) HW_FMC_TAGVDW2Sn_ADDR(n)) +#define HW_FMC_TAGVDW2Sn_RD(n) (HW_FMC_TAGVDW2Sn(n).U) +#define HW_FMC_TAGVDW2Sn_WR(n, v) (HW_FMC_TAGVDW2Sn(n).U = (v)) +#define HW_FMC_TAGVDW2Sn_SET(n, v) (HW_FMC_TAGVDW2Sn_WR(n, HW_FMC_TAGVDW2Sn_RD(n) | (v))) +#define HW_FMC_TAGVDW2Sn_CLR(n, v) (HW_FMC_TAGVDW2Sn_WR(n, HW_FMC_TAGVDW2Sn_RD(n) & ~(v))) +#define HW_FMC_TAGVDW2Sn_TOG(n, v) (HW_FMC_TAGVDW2Sn_WR(n, HW_FMC_TAGVDW2Sn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_TAGVDW2Sn bitfields + */ + +/*! + * @name Register FMC_TAGVDW2Sn, field valid[0] (RW) + */ +//@{ +#define BP_FMC_TAGVDW2Sn_valid (0U) //!< Bit position for FMC_TAGVDW2Sn_valid. +#define BM_FMC_TAGVDW2Sn_valid (0x00000001U) //!< Bit mask for FMC_TAGVDW2Sn_valid. +#define BS_FMC_TAGVDW2Sn_valid (1U) //!< Bit field size in bits for FMC_TAGVDW2Sn_valid. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_TAGVDW2Sn_valid field. +#define BR_FMC_TAGVDW2Sn_valid(n) (BITBAND_ACCESS32(HW_FMC_TAGVDW2Sn_ADDR(n), BP_FMC_TAGVDW2Sn_valid)) +#endif + +//! @brief Format value for bitfield FMC_TAGVDW2Sn_valid. +#define BF_FMC_TAGVDW2Sn_valid(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_TAGVDW2Sn_valid), uint32_t) & BM_FMC_TAGVDW2Sn_valid) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the valid field to a new value. +#define BW_FMC_TAGVDW2Sn_valid(n, v) (BITBAND_ACCESS32(HW_FMC_TAGVDW2Sn_ADDR(n), BP_FMC_TAGVDW2Sn_valid) = (v)) +#endif +//@} + +/*! + * @name Register FMC_TAGVDW2Sn, field tag[18:5] (RW) + */ +//@{ +#define BP_FMC_TAGVDW2Sn_tag (5U) //!< Bit position for FMC_TAGVDW2Sn_tag. +#define BM_FMC_TAGVDW2Sn_tag (0x0007FFE0U) //!< Bit mask for FMC_TAGVDW2Sn_tag. +#define BS_FMC_TAGVDW2Sn_tag (14U) //!< Bit field size in bits for FMC_TAGVDW2Sn_tag. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_TAGVDW2Sn_tag field. +#define BR_FMC_TAGVDW2Sn_tag(n) (HW_FMC_TAGVDW2Sn(n).B.tag) +#endif + +//! @brief Format value for bitfield FMC_TAGVDW2Sn_tag. +#define BF_FMC_TAGVDW2Sn_tag(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_TAGVDW2Sn_tag), uint32_t) & BM_FMC_TAGVDW2Sn_tag) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the tag field to a new value. +#define BW_FMC_TAGVDW2Sn_tag(n, v) (HW_FMC_TAGVDW2Sn_WR(n, (HW_FMC_TAGVDW2Sn_RD(n) & ~BM_FMC_TAGVDW2Sn_tag) | BF_FMC_TAGVDW2Sn_tag(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_TAGVDW3Sn - Cache Tag Storage +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_TAGVDW3Sn - Cache Tag Storage (RW) + * + * Reset value: 0x00000000U + * + * The cache is a 4-way, set-associative cache with 4 sets. The ways are + * numbered 0-3 and the sets are numbered 0-3. In TAGVDWxSy, x denotes the way, and y + * denotes the set. This section represents tag/vld information for all sets in the + * indicated way. + */ +typedef union _hw_fmc_tagvdw3sn +{ + uint32_t U; + struct _hw_fmc_tagvdw3sn_bitfields + { + uint32_t valid : 1; //!< [0] 1-bit valid for cache entry + uint32_t RESERVED0 : 4; //!< [4:1] + uint32_t tag : 14; //!< [18:5] 14-bit tag for cache entry + uint32_t RESERVED1 : 13; //!< [31:19] + } B; +} hw_fmc_tagvdw3sn_t; +#endif + +/*! + * @name Constants and macros for entire FMC_TAGVDW3Sn register + */ +//@{ +#define HW_FMC_TAGVDW3Sn_COUNT (4U) + +#define HW_FMC_TAGVDW3Sn_ADDR(n) (REGS_FMC_BASE + 0x130U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_TAGVDW3Sn(n) (*(__IO hw_fmc_tagvdw3sn_t *) HW_FMC_TAGVDW3Sn_ADDR(n)) +#define HW_FMC_TAGVDW3Sn_RD(n) (HW_FMC_TAGVDW3Sn(n).U) +#define HW_FMC_TAGVDW3Sn_WR(n, v) (HW_FMC_TAGVDW3Sn(n).U = (v)) +#define HW_FMC_TAGVDW3Sn_SET(n, v) (HW_FMC_TAGVDW3Sn_WR(n, HW_FMC_TAGVDW3Sn_RD(n) | (v))) +#define HW_FMC_TAGVDW3Sn_CLR(n, v) (HW_FMC_TAGVDW3Sn_WR(n, HW_FMC_TAGVDW3Sn_RD(n) & ~(v))) +#define HW_FMC_TAGVDW3Sn_TOG(n, v) (HW_FMC_TAGVDW3Sn_WR(n, HW_FMC_TAGVDW3Sn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_TAGVDW3Sn bitfields + */ + +/*! + * @name Register FMC_TAGVDW3Sn, field valid[0] (RW) + */ +//@{ +#define BP_FMC_TAGVDW3Sn_valid (0U) //!< Bit position for FMC_TAGVDW3Sn_valid. +#define BM_FMC_TAGVDW3Sn_valid (0x00000001U) //!< Bit mask for FMC_TAGVDW3Sn_valid. +#define BS_FMC_TAGVDW3Sn_valid (1U) //!< Bit field size in bits for FMC_TAGVDW3Sn_valid. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_TAGVDW3Sn_valid field. +#define BR_FMC_TAGVDW3Sn_valid(n) (BITBAND_ACCESS32(HW_FMC_TAGVDW3Sn_ADDR(n), BP_FMC_TAGVDW3Sn_valid)) +#endif + +//! @brief Format value for bitfield FMC_TAGVDW3Sn_valid. +#define BF_FMC_TAGVDW3Sn_valid(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_TAGVDW3Sn_valid), uint32_t) & BM_FMC_TAGVDW3Sn_valid) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the valid field to a new value. +#define BW_FMC_TAGVDW3Sn_valid(n, v) (BITBAND_ACCESS32(HW_FMC_TAGVDW3Sn_ADDR(n), BP_FMC_TAGVDW3Sn_valid) = (v)) +#endif +//@} + +/*! + * @name Register FMC_TAGVDW3Sn, field tag[18:5] (RW) + */ +//@{ +#define BP_FMC_TAGVDW3Sn_tag (5U) //!< Bit position for FMC_TAGVDW3Sn_tag. +#define BM_FMC_TAGVDW3Sn_tag (0x0007FFE0U) //!< Bit mask for FMC_TAGVDW3Sn_tag. +#define BS_FMC_TAGVDW3Sn_tag (14U) //!< Bit field size in bits for FMC_TAGVDW3Sn_tag. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_TAGVDW3Sn_tag field. +#define BR_FMC_TAGVDW3Sn_tag(n) (HW_FMC_TAGVDW3Sn(n).B.tag) +#endif + +//! @brief Format value for bitfield FMC_TAGVDW3Sn_tag. +#define BF_FMC_TAGVDW3Sn_tag(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_TAGVDW3Sn_tag), uint32_t) & BM_FMC_TAGVDW3Sn_tag) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the tag field to a new value. +#define BW_FMC_TAGVDW3Sn_tag(n, v) (HW_FMC_TAGVDW3Sn_WR(n, (HW_FMC_TAGVDW3Sn_RD(n) & ~BM_FMC_TAGVDW3Sn_tag) | BF_FMC_TAGVDW3Sn_tag(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_DATAW0SnU - Cache Data Storage (upper word) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_DATAW0SnU - Cache Data Storage (upper word) (RW) + * + * Reset value: 0x00000000U + * + * The cache of 64-bit entries is a 4-way, set-associative cache with 4 sets. + * The ways are numbered 0-3 and the sets are numbered 0-3. In DATAWxSyU and + * DATAWxSyL, x denotes the way, y denotes the set, and U and L represent upper and + * lower word, respectively. This section represents data for the upper word (bits + * [63:32]) of all sets in the indicated way. + */ +typedef union _hw_fmc_dataw0snu +{ + uint32_t U; + struct _hw_fmc_dataw0snu_bitfields + { + uint32_t data : 32; //!< [31:0] Bits [63:32] of data entry + } B; +} hw_fmc_dataw0snu_t; +#endif + +/*! + * @name Constants and macros for entire FMC_DATAW0SnU register + */ +//@{ +#define HW_FMC_DATAW0SnU_COUNT (4U) + +#define HW_FMC_DATAW0SnU_ADDR(n) (REGS_FMC_BASE + 0x200U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_DATAW0SnU(n) (*(__IO hw_fmc_dataw0snu_t *) HW_FMC_DATAW0SnU_ADDR(n)) +#define HW_FMC_DATAW0SnU_RD(n) (HW_FMC_DATAW0SnU(n).U) +#define HW_FMC_DATAW0SnU_WR(n, v) (HW_FMC_DATAW0SnU(n).U = (v)) +#define HW_FMC_DATAW0SnU_SET(n, v) (HW_FMC_DATAW0SnU_WR(n, HW_FMC_DATAW0SnU_RD(n) | (v))) +#define HW_FMC_DATAW0SnU_CLR(n, v) (HW_FMC_DATAW0SnU_WR(n, HW_FMC_DATAW0SnU_RD(n) & ~(v))) +#define HW_FMC_DATAW0SnU_TOG(n, v) (HW_FMC_DATAW0SnU_WR(n, HW_FMC_DATAW0SnU_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_DATAW0SnU bitfields + */ + +/*! + * @name Register FMC_DATAW0SnU, field data[31:0] (RW) + */ +//@{ +#define BP_FMC_DATAW0SnU_data (0U) //!< Bit position for FMC_DATAW0SnU_data. +#define BM_FMC_DATAW0SnU_data (0xFFFFFFFFU) //!< Bit mask for FMC_DATAW0SnU_data. +#define BS_FMC_DATAW0SnU_data (32U) //!< Bit field size in bits for FMC_DATAW0SnU_data. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_DATAW0SnU_data field. +#define BR_FMC_DATAW0SnU_data(n) (HW_FMC_DATAW0SnU(n).U) +#endif + +//! @brief Format value for bitfield FMC_DATAW0SnU_data. +#define BF_FMC_DATAW0SnU_data(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_DATAW0SnU_data), uint32_t) & BM_FMC_DATAW0SnU_data) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the data field to a new value. +#define BW_FMC_DATAW0SnU_data(n, v) (HW_FMC_DATAW0SnU_WR(n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_FMC_DATAW0SnL - Cache Data Storage (lower word) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_DATAW0SnL - Cache Data Storage (lower word) (RW) + * + * Reset value: 0x00000000U + * + * The cache of 64-bit entries is a 4-way, set-associative cache with 4 sets. + * The ways are numbered 0-3 and the sets are numbered 0-3. In DATAWxSyU and + * DATAWxSyL, x denotes the way, y denotes the set, and U and L represent upper and + * lower word, respectively. This section represents data for the lower word (bits + * [31:0]) of all sets in the indicated way. + */ +typedef union _hw_fmc_dataw0snl +{ + uint32_t U; + struct _hw_fmc_dataw0snl_bitfields + { + uint32_t data : 32; //!< [31:0] Bits [31:0] of data entry + } B; +} hw_fmc_dataw0snl_t; +#endif + +/*! + * @name Constants and macros for entire FMC_DATAW0SnL register + */ +//@{ +#define HW_FMC_DATAW0SnL_COUNT (4U) + +#define HW_FMC_DATAW0SnL_ADDR(n) (REGS_FMC_BASE + 0x204U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_DATAW0SnL(n) (*(__IO hw_fmc_dataw0snl_t *) HW_FMC_DATAW0SnL_ADDR(n)) +#define HW_FMC_DATAW0SnL_RD(n) (HW_FMC_DATAW0SnL(n).U) +#define HW_FMC_DATAW0SnL_WR(n, v) (HW_FMC_DATAW0SnL(n).U = (v)) +#define HW_FMC_DATAW0SnL_SET(n, v) (HW_FMC_DATAW0SnL_WR(n, HW_FMC_DATAW0SnL_RD(n) | (v))) +#define HW_FMC_DATAW0SnL_CLR(n, v) (HW_FMC_DATAW0SnL_WR(n, HW_FMC_DATAW0SnL_RD(n) & ~(v))) +#define HW_FMC_DATAW0SnL_TOG(n, v) (HW_FMC_DATAW0SnL_WR(n, HW_FMC_DATAW0SnL_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_DATAW0SnL bitfields + */ + +/*! + * @name Register FMC_DATAW0SnL, field data[31:0] (RW) + */ +//@{ +#define BP_FMC_DATAW0SnL_data (0U) //!< Bit position for FMC_DATAW0SnL_data. +#define BM_FMC_DATAW0SnL_data (0xFFFFFFFFU) //!< Bit mask for FMC_DATAW0SnL_data. +#define BS_FMC_DATAW0SnL_data (32U) //!< Bit field size in bits for FMC_DATAW0SnL_data. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_DATAW0SnL_data field. +#define BR_FMC_DATAW0SnL_data(n) (HW_FMC_DATAW0SnL(n).U) +#endif + +//! @brief Format value for bitfield FMC_DATAW0SnL_data. +#define BF_FMC_DATAW0SnL_data(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_DATAW0SnL_data), uint32_t) & BM_FMC_DATAW0SnL_data) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the data field to a new value. +#define BW_FMC_DATAW0SnL_data(n, v) (HW_FMC_DATAW0SnL_WR(n, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_DATAW1SnU - Cache Data Storage (upper word) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_DATAW1SnU - Cache Data Storage (upper word) (RW) + * + * Reset value: 0x00000000U + * + * The cache of 64-bit entries is a 4-way, set-associative cache with 4 sets. + * The ways are numbered 0-3 and the sets are numbered 0-3. In DATAWxSyU and + * DATAWxSyL, x denotes the way, y denotes the set, and U and L represent upper and + * lower word, respectively. This section represents data for the upper word (bits + * [63:32]) of all sets in the indicated way. + */ +typedef union _hw_fmc_dataw1snu +{ + uint32_t U; + struct _hw_fmc_dataw1snu_bitfields + { + uint32_t data : 32; //!< [31:0] Bits [63:32] of data entry + } B; +} hw_fmc_dataw1snu_t; +#endif + +/*! + * @name Constants and macros for entire FMC_DATAW1SnU register + */ +//@{ +#define HW_FMC_DATAW1SnU_COUNT (4U) + +#define HW_FMC_DATAW1SnU_ADDR(n) (REGS_FMC_BASE + 0x220U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_DATAW1SnU(n) (*(__IO hw_fmc_dataw1snu_t *) HW_FMC_DATAW1SnU_ADDR(n)) +#define HW_FMC_DATAW1SnU_RD(n) (HW_FMC_DATAW1SnU(n).U) +#define HW_FMC_DATAW1SnU_WR(n, v) (HW_FMC_DATAW1SnU(n).U = (v)) +#define HW_FMC_DATAW1SnU_SET(n, v) (HW_FMC_DATAW1SnU_WR(n, HW_FMC_DATAW1SnU_RD(n) | (v))) +#define HW_FMC_DATAW1SnU_CLR(n, v) (HW_FMC_DATAW1SnU_WR(n, HW_FMC_DATAW1SnU_RD(n) & ~(v))) +#define HW_FMC_DATAW1SnU_TOG(n, v) (HW_FMC_DATAW1SnU_WR(n, HW_FMC_DATAW1SnU_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_DATAW1SnU bitfields + */ + +/*! + * @name Register FMC_DATAW1SnU, field data[31:0] (RW) + */ +//@{ +#define BP_FMC_DATAW1SnU_data (0U) //!< Bit position for FMC_DATAW1SnU_data. +#define BM_FMC_DATAW1SnU_data (0xFFFFFFFFU) //!< Bit mask for FMC_DATAW1SnU_data. +#define BS_FMC_DATAW1SnU_data (32U) //!< Bit field size in bits for FMC_DATAW1SnU_data. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_DATAW1SnU_data field. +#define BR_FMC_DATAW1SnU_data(n) (HW_FMC_DATAW1SnU(n).U) +#endif + +//! @brief Format value for bitfield FMC_DATAW1SnU_data. +#define BF_FMC_DATAW1SnU_data(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_DATAW1SnU_data), uint32_t) & BM_FMC_DATAW1SnU_data) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the data field to a new value. +#define BW_FMC_DATAW1SnU_data(n, v) (HW_FMC_DATAW1SnU_WR(n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_FMC_DATAW1SnL - Cache Data Storage (lower word) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_DATAW1SnL - Cache Data Storage (lower word) (RW) + * + * Reset value: 0x00000000U + * + * The cache of 64-bit entries is a 4-way, set-associative cache with 4 sets. + * The ways are numbered 0-3 and the sets are numbered 0-3. In DATAWxSyU and + * DATAWxSyL, x denotes the way, y denotes the set, and U and L represent upper and + * lower word, respectively. This section represents data for the lower word (bits + * [31:0]) of all sets in the indicated way. + */ +typedef union _hw_fmc_dataw1snl +{ + uint32_t U; + struct _hw_fmc_dataw1snl_bitfields + { + uint32_t data : 32; //!< [31:0] Bits [31:0] of data entry + } B; +} hw_fmc_dataw1snl_t; +#endif + +/*! + * @name Constants and macros for entire FMC_DATAW1SnL register + */ +//@{ +#define HW_FMC_DATAW1SnL_COUNT (4U) + +#define HW_FMC_DATAW1SnL_ADDR(n) (REGS_FMC_BASE + 0x224U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_DATAW1SnL(n) (*(__IO hw_fmc_dataw1snl_t *) HW_FMC_DATAW1SnL_ADDR(n)) +#define HW_FMC_DATAW1SnL_RD(n) (HW_FMC_DATAW1SnL(n).U) +#define HW_FMC_DATAW1SnL_WR(n, v) (HW_FMC_DATAW1SnL(n).U = (v)) +#define HW_FMC_DATAW1SnL_SET(n, v) (HW_FMC_DATAW1SnL_WR(n, HW_FMC_DATAW1SnL_RD(n) | (v))) +#define HW_FMC_DATAW1SnL_CLR(n, v) (HW_FMC_DATAW1SnL_WR(n, HW_FMC_DATAW1SnL_RD(n) & ~(v))) +#define HW_FMC_DATAW1SnL_TOG(n, v) (HW_FMC_DATAW1SnL_WR(n, HW_FMC_DATAW1SnL_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_DATAW1SnL bitfields + */ + +/*! + * @name Register FMC_DATAW1SnL, field data[31:0] (RW) + */ +//@{ +#define BP_FMC_DATAW1SnL_data (0U) //!< Bit position for FMC_DATAW1SnL_data. +#define BM_FMC_DATAW1SnL_data (0xFFFFFFFFU) //!< Bit mask for FMC_DATAW1SnL_data. +#define BS_FMC_DATAW1SnL_data (32U) //!< Bit field size in bits for FMC_DATAW1SnL_data. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_DATAW1SnL_data field. +#define BR_FMC_DATAW1SnL_data(n) (HW_FMC_DATAW1SnL(n).U) +#endif + +//! @brief Format value for bitfield FMC_DATAW1SnL_data. +#define BF_FMC_DATAW1SnL_data(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_DATAW1SnL_data), uint32_t) & BM_FMC_DATAW1SnL_data) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the data field to a new value. +#define BW_FMC_DATAW1SnL_data(n, v) (HW_FMC_DATAW1SnL_WR(n, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_DATAW2SnU - Cache Data Storage (upper word) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_DATAW2SnU - Cache Data Storage (upper word) (RW) + * + * Reset value: 0x00000000U + * + * The cache of 64-bit entries is a 4-way, set-associative cache with 4 sets. + * The ways are numbered 0-3 and the sets are numbered 0-3. In DATAWxSyU and + * DATAWxSyL, x denotes the way, y denotes the set, and U and L represent upper and + * lower word, respectively. This section represents data for the upper word (bits + * [63:32]) of all sets in the indicated way. + */ +typedef union _hw_fmc_dataw2snu +{ + uint32_t U; + struct _hw_fmc_dataw2snu_bitfields + { + uint32_t data : 32; //!< [31:0] Bits [63:32] of data entry + } B; +} hw_fmc_dataw2snu_t; +#endif + +/*! + * @name Constants and macros for entire FMC_DATAW2SnU register + */ +//@{ +#define HW_FMC_DATAW2SnU_COUNT (4U) + +#define HW_FMC_DATAW2SnU_ADDR(n) (REGS_FMC_BASE + 0x240U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_DATAW2SnU(n) (*(__IO hw_fmc_dataw2snu_t *) HW_FMC_DATAW2SnU_ADDR(n)) +#define HW_FMC_DATAW2SnU_RD(n) (HW_FMC_DATAW2SnU(n).U) +#define HW_FMC_DATAW2SnU_WR(n, v) (HW_FMC_DATAW2SnU(n).U = (v)) +#define HW_FMC_DATAW2SnU_SET(n, v) (HW_FMC_DATAW2SnU_WR(n, HW_FMC_DATAW2SnU_RD(n) | (v))) +#define HW_FMC_DATAW2SnU_CLR(n, v) (HW_FMC_DATAW2SnU_WR(n, HW_FMC_DATAW2SnU_RD(n) & ~(v))) +#define HW_FMC_DATAW2SnU_TOG(n, v) (HW_FMC_DATAW2SnU_WR(n, HW_FMC_DATAW2SnU_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_DATAW2SnU bitfields + */ + +/*! + * @name Register FMC_DATAW2SnU, field data[31:0] (RW) + */ +//@{ +#define BP_FMC_DATAW2SnU_data (0U) //!< Bit position for FMC_DATAW2SnU_data. +#define BM_FMC_DATAW2SnU_data (0xFFFFFFFFU) //!< Bit mask for FMC_DATAW2SnU_data. +#define BS_FMC_DATAW2SnU_data (32U) //!< Bit field size in bits for FMC_DATAW2SnU_data. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_DATAW2SnU_data field. +#define BR_FMC_DATAW2SnU_data(n) (HW_FMC_DATAW2SnU(n).U) +#endif + +//! @brief Format value for bitfield FMC_DATAW2SnU_data. +#define BF_FMC_DATAW2SnU_data(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_DATAW2SnU_data), uint32_t) & BM_FMC_DATAW2SnU_data) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the data field to a new value. +#define BW_FMC_DATAW2SnU_data(n, v) (HW_FMC_DATAW2SnU_WR(n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_FMC_DATAW2SnL - Cache Data Storage (lower word) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_DATAW2SnL - Cache Data Storage (lower word) (RW) + * + * Reset value: 0x00000000U + * + * The cache of 64-bit entries is a 4-way, set-associative cache with 4 sets. + * The ways are numbered 0-3 and the sets are numbered 0-3. In DATAWxSyU and + * DATAWxSyL, x denotes the way, y denotes the set, and U and L represent upper and + * lower word, respectively. This section represents data for the lower word (bits + * [31:0]) of all sets in the indicated way. + */ +typedef union _hw_fmc_dataw2snl +{ + uint32_t U; + struct _hw_fmc_dataw2snl_bitfields + { + uint32_t data : 32; //!< [31:0] Bits [31:0] of data entry + } B; +} hw_fmc_dataw2snl_t; +#endif + +/*! + * @name Constants and macros for entire FMC_DATAW2SnL register + */ +//@{ +#define HW_FMC_DATAW2SnL_COUNT (4U) + +#define HW_FMC_DATAW2SnL_ADDR(n) (REGS_FMC_BASE + 0x244U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_DATAW2SnL(n) (*(__IO hw_fmc_dataw2snl_t *) HW_FMC_DATAW2SnL_ADDR(n)) +#define HW_FMC_DATAW2SnL_RD(n) (HW_FMC_DATAW2SnL(n).U) +#define HW_FMC_DATAW2SnL_WR(n, v) (HW_FMC_DATAW2SnL(n).U = (v)) +#define HW_FMC_DATAW2SnL_SET(n, v) (HW_FMC_DATAW2SnL_WR(n, HW_FMC_DATAW2SnL_RD(n) | (v))) +#define HW_FMC_DATAW2SnL_CLR(n, v) (HW_FMC_DATAW2SnL_WR(n, HW_FMC_DATAW2SnL_RD(n) & ~(v))) +#define HW_FMC_DATAW2SnL_TOG(n, v) (HW_FMC_DATAW2SnL_WR(n, HW_FMC_DATAW2SnL_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_DATAW2SnL bitfields + */ + +/*! + * @name Register FMC_DATAW2SnL, field data[31:0] (RW) + */ +//@{ +#define BP_FMC_DATAW2SnL_data (0U) //!< Bit position for FMC_DATAW2SnL_data. +#define BM_FMC_DATAW2SnL_data (0xFFFFFFFFU) //!< Bit mask for FMC_DATAW2SnL_data. +#define BS_FMC_DATAW2SnL_data (32U) //!< Bit field size in bits for FMC_DATAW2SnL_data. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_DATAW2SnL_data field. +#define BR_FMC_DATAW2SnL_data(n) (HW_FMC_DATAW2SnL(n).U) +#endif + +//! @brief Format value for bitfield FMC_DATAW2SnL_data. +#define BF_FMC_DATAW2SnL_data(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_DATAW2SnL_data), uint32_t) & BM_FMC_DATAW2SnL_data) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the data field to a new value. +#define BW_FMC_DATAW2SnL_data(n, v) (HW_FMC_DATAW2SnL_WR(n, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FMC_DATAW3SnU - Cache Data Storage (upper word) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_DATAW3SnU - Cache Data Storage (upper word) (RW) + * + * Reset value: 0x00000000U + * + * The cache of 64-bit entries is a 4-way, set-associative cache with 4 sets. + * The ways are numbered 0-3 and the sets are numbered 0-3. In DATAWxSyU and + * DATAWxSyL, x denotes the way, y denotes the set, and U and L represent upper and + * lower word, respectively. This section represents data for the upper word (bits + * [63:32]) of all sets in the indicated way. + */ +typedef union _hw_fmc_dataw3snu +{ + uint32_t U; + struct _hw_fmc_dataw3snu_bitfields + { + uint32_t data : 32; //!< [31:0] Bits [63:32] of data entry + } B; +} hw_fmc_dataw3snu_t; +#endif + +/*! + * @name Constants and macros for entire FMC_DATAW3SnU register + */ +//@{ +#define HW_FMC_DATAW3SnU_COUNT (4U) + +#define HW_FMC_DATAW3SnU_ADDR(n) (REGS_FMC_BASE + 0x260U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_DATAW3SnU(n) (*(__IO hw_fmc_dataw3snu_t *) HW_FMC_DATAW3SnU_ADDR(n)) +#define HW_FMC_DATAW3SnU_RD(n) (HW_FMC_DATAW3SnU(n).U) +#define HW_FMC_DATAW3SnU_WR(n, v) (HW_FMC_DATAW3SnU(n).U = (v)) +#define HW_FMC_DATAW3SnU_SET(n, v) (HW_FMC_DATAW3SnU_WR(n, HW_FMC_DATAW3SnU_RD(n) | (v))) +#define HW_FMC_DATAW3SnU_CLR(n, v) (HW_FMC_DATAW3SnU_WR(n, HW_FMC_DATAW3SnU_RD(n) & ~(v))) +#define HW_FMC_DATAW3SnU_TOG(n, v) (HW_FMC_DATAW3SnU_WR(n, HW_FMC_DATAW3SnU_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_DATAW3SnU bitfields + */ + +/*! + * @name Register FMC_DATAW3SnU, field data[31:0] (RW) + */ +//@{ +#define BP_FMC_DATAW3SnU_data (0U) //!< Bit position for FMC_DATAW3SnU_data. +#define BM_FMC_DATAW3SnU_data (0xFFFFFFFFU) //!< Bit mask for FMC_DATAW3SnU_data. +#define BS_FMC_DATAW3SnU_data (32U) //!< Bit field size in bits for FMC_DATAW3SnU_data. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_DATAW3SnU_data field. +#define BR_FMC_DATAW3SnU_data(n) (HW_FMC_DATAW3SnU(n).U) +#endif + +//! @brief Format value for bitfield FMC_DATAW3SnU_data. +#define BF_FMC_DATAW3SnU_data(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_DATAW3SnU_data), uint32_t) & BM_FMC_DATAW3SnU_data) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the data field to a new value. +#define BW_FMC_DATAW3SnU_data(n, v) (HW_FMC_DATAW3SnU_WR(n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_FMC_DATAW3SnL - Cache Data Storage (lower word) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FMC_DATAW3SnL - Cache Data Storage (lower word) (RW) + * + * Reset value: 0x00000000U + * + * The cache of 64-bit entries is a 4-way, set-associative cache with 4 sets. + * The ways are numbered 0-3 and the sets are numbered 0-3. In DATAWxSyU and + * DATAWxSyL, x denotes the way, y denotes the set, and U and L represent upper and + * lower word, respectively. This section represents data for the lower word (bits + * [31:0]) of all sets in the indicated way. + */ +typedef union _hw_fmc_dataw3snl +{ + uint32_t U; + struct _hw_fmc_dataw3snl_bitfields + { + uint32_t data : 32; //!< [31:0] Bits [31:0] of data entry + } B; +} hw_fmc_dataw3snl_t; +#endif + +/*! + * @name Constants and macros for entire FMC_DATAW3SnL register + */ +//@{ +#define HW_FMC_DATAW3SnL_COUNT (4U) + +#define HW_FMC_DATAW3SnL_ADDR(n) (REGS_FMC_BASE + 0x264U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FMC_DATAW3SnL(n) (*(__IO hw_fmc_dataw3snl_t *) HW_FMC_DATAW3SnL_ADDR(n)) +#define HW_FMC_DATAW3SnL_RD(n) (HW_FMC_DATAW3SnL(n).U) +#define HW_FMC_DATAW3SnL_WR(n, v) (HW_FMC_DATAW3SnL(n).U = (v)) +#define HW_FMC_DATAW3SnL_SET(n, v) (HW_FMC_DATAW3SnL_WR(n, HW_FMC_DATAW3SnL_RD(n) | (v))) +#define HW_FMC_DATAW3SnL_CLR(n, v) (HW_FMC_DATAW3SnL_WR(n, HW_FMC_DATAW3SnL_RD(n) & ~(v))) +#define HW_FMC_DATAW3SnL_TOG(n, v) (HW_FMC_DATAW3SnL_WR(n, HW_FMC_DATAW3SnL_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FMC_DATAW3SnL bitfields + */ + +/*! + * @name Register FMC_DATAW3SnL, field data[31:0] (RW) + */ +//@{ +#define BP_FMC_DATAW3SnL_data (0U) //!< Bit position for FMC_DATAW3SnL_data. +#define BM_FMC_DATAW3SnL_data (0xFFFFFFFFU) //!< Bit mask for FMC_DATAW3SnL_data. +#define BS_FMC_DATAW3SnL_data (32U) //!< Bit field size in bits for FMC_DATAW3SnL_data. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FMC_DATAW3SnL_data field. +#define BR_FMC_DATAW3SnL_data(n) (HW_FMC_DATAW3SnL(n).U) +#endif + +//! @brief Format value for bitfield FMC_DATAW3SnL_data. +#define BF_FMC_DATAW3SnL_data(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FMC_DATAW3SnL_data), uint32_t) & BM_FMC_DATAW3SnL_data) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the data field to a new value. +#define BW_FMC_DATAW3SnL_data(n, v) (HW_FMC_DATAW3SnL_WR(n, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_fmc_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All FMC module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_fmc +{ + __IO hw_fmc_pfapr_t PFAPR; //!< [0x0] Flash Access Protection Register + __IO hw_fmc_pfb0cr_t PFB0CR; //!< [0x4] Flash Bank 0 Control Register + __IO hw_fmc_pfb1cr_t PFB1CR; //!< [0x8] Flash Bank 1 Control Register + uint8_t _reserved0[244]; + __IO hw_fmc_tagvdw0sn_t TAGVDW0Sn[4]; //!< [0x100] Cache Tag Storage + __IO hw_fmc_tagvdw1sn_t TAGVDW1Sn[4]; //!< [0x110] Cache Tag Storage + __IO hw_fmc_tagvdw2sn_t TAGVDW2Sn[4]; //!< [0x120] Cache Tag Storage + __IO hw_fmc_tagvdw3sn_t TAGVDW3Sn[4]; //!< [0x130] Cache Tag Storage + uint8_t _reserved1[192]; + struct { + __IO hw_fmc_dataw0snu_t DATAW0SnU; //!< [0x200] Cache Data Storage (upper word) + __IO hw_fmc_dataw0snl_t DATAW0SnL; //!< [0x204] Cache Data Storage (lower word) + } DATAW0Sn[4]; + struct { + __IO hw_fmc_dataw1snu_t DATAW1SnU; //!< [0x220] Cache Data Storage (upper word) + __IO hw_fmc_dataw1snl_t DATAW1SnL; //!< [0x224] Cache Data Storage (lower word) + } DATAW1Sn[4]; + struct { + __IO hw_fmc_dataw2snu_t DATAW2SnU; //!< [0x240] Cache Data Storage (upper word) + __IO hw_fmc_dataw2snl_t DATAW2SnL; //!< [0x244] Cache Data Storage (lower word) + } DATAW2Sn[4]; + struct { + __IO hw_fmc_dataw3snu_t DATAW3SnU; //!< [0x260] Cache Data Storage (upper word) + __IO hw_fmc_dataw3snl_t DATAW3SnL; //!< [0x264] Cache Data Storage (lower word) + } DATAW3Sn[4]; +} hw_fmc_t; +#pragma pack() + +//! @brief Macro to access all FMC registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_FMC</code>. +#define HW_FMC (*(hw_fmc_t *) REGS_FMC_BASE) +#endif + +#endif // __HW_FMC_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_ftfe.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,2500 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_FTFE_REGISTERS_H__ +#define __HW_FTFE_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 FTFE + * + * Flash Memory Interface + * + * Registers defined in this header file: + * - HW_FTFE_FSTAT - Flash Status Register + * - HW_FTFE_FCNFG - Flash Configuration Register + * - HW_FTFE_FSEC - Flash Security Register + * - HW_FTFE_FOPT - Flash Option Register + * - HW_FTFE_FCCOB3 - Flash Common Command Object Registers + * - HW_FTFE_FCCOB2 - Flash Common Command Object Registers + * - HW_FTFE_FCCOB1 - Flash Common Command Object Registers + * - HW_FTFE_FCCOB0 - Flash Common Command Object Registers + * - HW_FTFE_FCCOB7 - Flash Common Command Object Registers + * - HW_FTFE_FCCOB6 - Flash Common Command Object Registers + * - HW_FTFE_FCCOB5 - Flash Common Command Object Registers + * - HW_FTFE_FCCOB4 - Flash Common Command Object Registers + * - HW_FTFE_FCCOBB - Flash Common Command Object Registers + * - HW_FTFE_FCCOBA - Flash Common Command Object Registers + * - HW_FTFE_FCCOB9 - Flash Common Command Object Registers + * - HW_FTFE_FCCOB8 - Flash Common Command Object Registers + * - HW_FTFE_FPROT3 - Program Flash Protection Registers + * - HW_FTFE_FPROT2 - Program Flash Protection Registers + * - HW_FTFE_FPROT1 - Program Flash Protection Registers + * - HW_FTFE_FPROT0 - Program Flash Protection Registers + * - HW_FTFE_FEPROT - EEPROM Protection Register + * - HW_FTFE_FDPROT - Data Flash Protection Register + * + * - hw_ftfe_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_FTFE_BASE +#define HW_FTFE_INSTANCE_COUNT (1U) //!< Number of instances of the FTFE module. +#define REGS_FTFE_BASE (0x40020000U) //!< Base address for FTFE. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FSTAT - Flash Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FSTAT - Flash Status Register (RW) + * + * Reset value: 0x00U + * + * The FSTAT register reports the operational status of the FTFE module. The + * CCIF, RDCOLERR, ACCERR, and FPVIOL bits are readable and writable. The MGSTAT0 + * bit is read only. The unassigned bits read 0 and are not writable. When set, the + * Access Error (ACCERR) and Flash Protection Violation (FPVIOL) bits in this + * register prevent the launch of any more commands or writes to the FlexRAM (when + * EEERDY is set) until the flag is cleared (by writing a one to it). + */ +typedef union _hw_ftfe_fstat +{ + uint8_t U; + struct _hw_ftfe_fstat_bitfields + { + uint8_t MGSTAT0 : 1; //!< [0] Memory Controller Command Completion + //! Status Flag + uint8_t RESERVED0 : 3; //!< [3:1] + uint8_t FPVIOL : 1; //!< [4] Flash Protection Violation Flag + uint8_t ACCERR : 1; //!< [5] Flash Access Error Flag + uint8_t RDCOLERR : 1; //!< [6] FTFE Read Collision Error Flag + uint8_t CCIF : 1; //!< [7] Command Complete Interrupt Flag + } B; +} hw_ftfe_fstat_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FSTAT register + */ +//@{ +#define HW_FTFE_FSTAT_ADDR (REGS_FTFE_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FSTAT (*(__IO hw_ftfe_fstat_t *) HW_FTFE_FSTAT_ADDR) +#define HW_FTFE_FSTAT_RD() (HW_FTFE_FSTAT.U) +#define HW_FTFE_FSTAT_WR(v) (HW_FTFE_FSTAT.U = (v)) +#define HW_FTFE_FSTAT_SET(v) (HW_FTFE_FSTAT_WR(HW_FTFE_FSTAT_RD() | (v))) +#define HW_FTFE_FSTAT_CLR(v) (HW_FTFE_FSTAT_WR(HW_FTFE_FSTAT_RD() & ~(v))) +#define HW_FTFE_FSTAT_TOG(v) (HW_FTFE_FSTAT_WR(HW_FTFE_FSTAT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FSTAT bitfields + */ + +/*! + * @name Register FTFE_FSTAT, field MGSTAT0[0] (RO) + * + * The MGSTAT0 status flag is set if an error is detected during execution of an + * FTFE command or during the flash reset sequence. As a status flag, this bit + * cannot (and need not) be cleared by the user like the other error flags in this + * register. The value of the MGSTAT0 bit for "command-N" is valid only at the + * end of the "command-N" execution when CCIF=1 and before the next command has + * been launched. At some point during the execution of "command-N+1," the previous + * result is discarded and any previous error is cleared. + */ +//@{ +#define BP_FTFE_FSTAT_MGSTAT0 (0U) //!< Bit position for FTFE_FSTAT_MGSTAT0. +#define BM_FTFE_FSTAT_MGSTAT0 (0x01U) //!< Bit mask for FTFE_FSTAT_MGSTAT0. +#define BS_FTFE_FSTAT_MGSTAT0 (1U) //!< Bit field size in bits for FTFE_FSTAT_MGSTAT0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FSTAT_MGSTAT0 field. +#define BR_FTFE_FSTAT_MGSTAT0 (BITBAND_ACCESS8(HW_FTFE_FSTAT_ADDR, BP_FTFE_FSTAT_MGSTAT0)) +#endif +//@} + +/*! + * @name Register FTFE_FSTAT, field FPVIOL[4] (W1C) + * + * The FPVIOL error bit indicates an attempt was made to program or erase an + * address in a protected area of program flash or data flash memory during a + * command write sequence or a write was attempted to a protected area of the FlexRAM + * while enabled for EEPROM. While FPVIOL is set, the CCIF flag cannot be cleared + * to launch a command. The FPVIOL bit is cleared by writing a 1 to it. Writing a + * 0 to the FPVIOL bit has no effect. + * + * Values: + * - 0 - No protection violation detected + * - 1 - Protection violation detected + */ +//@{ +#define BP_FTFE_FSTAT_FPVIOL (4U) //!< Bit position for FTFE_FSTAT_FPVIOL. +#define BM_FTFE_FSTAT_FPVIOL (0x10U) //!< Bit mask for FTFE_FSTAT_FPVIOL. +#define BS_FTFE_FSTAT_FPVIOL (1U) //!< Bit field size in bits for FTFE_FSTAT_FPVIOL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FSTAT_FPVIOL field. +#define BR_FTFE_FSTAT_FPVIOL (BITBAND_ACCESS8(HW_FTFE_FSTAT_ADDR, BP_FTFE_FSTAT_FPVIOL)) +#endif + +//! @brief Format value for bitfield FTFE_FSTAT_FPVIOL. +#define BF_FTFE_FSTAT_FPVIOL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FSTAT_FPVIOL), uint8_t) & BM_FTFE_FSTAT_FPVIOL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FPVIOL field to a new value. +#define BW_FTFE_FSTAT_FPVIOL(v) (BITBAND_ACCESS8(HW_FTFE_FSTAT_ADDR, BP_FTFE_FSTAT_FPVIOL) = (v)) +#endif +//@} + +/*! + * @name Register FTFE_FSTAT, field ACCERR[5] (W1C) + * + * The ACCERR error bit indicates an illegal access has occurred to an FTFE + * resource caused by a violation of the command write sequence or issuing an illegal + * FTFE command. While ACCERR is set, the CCIF flag cannot be cleared to launch + * a command. The ACCERR bit is cleared by writing a 1 to it. Writing a 0 to the + * ACCERR bit has no effect. + * + * Values: + * - 0 - No access error detected + * - 1 - Access error detected + */ +//@{ +#define BP_FTFE_FSTAT_ACCERR (5U) //!< Bit position for FTFE_FSTAT_ACCERR. +#define BM_FTFE_FSTAT_ACCERR (0x20U) //!< Bit mask for FTFE_FSTAT_ACCERR. +#define BS_FTFE_FSTAT_ACCERR (1U) //!< Bit field size in bits for FTFE_FSTAT_ACCERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FSTAT_ACCERR field. +#define BR_FTFE_FSTAT_ACCERR (BITBAND_ACCESS8(HW_FTFE_FSTAT_ADDR, BP_FTFE_FSTAT_ACCERR)) +#endif + +//! @brief Format value for bitfield FTFE_FSTAT_ACCERR. +#define BF_FTFE_FSTAT_ACCERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FSTAT_ACCERR), uint8_t) & BM_FTFE_FSTAT_ACCERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ACCERR field to a new value. +#define BW_FTFE_FSTAT_ACCERR(v) (BITBAND_ACCESS8(HW_FTFE_FSTAT_ADDR, BP_FTFE_FSTAT_ACCERR) = (v)) +#endif +//@} + +/*! + * @name Register FTFE_FSTAT, field RDCOLERR[6] (W1C) + * + * The RDCOLERR error bit indicates that the MCU attempted a read from an FTFE + * resource that was being manipulated by an FTFE command (CCIF=0). Any + * simultaneous access is detected as a collision error by the block arbitration logic. The + * read data in this case cannot be guaranteed. The RDCOLERR bit is cleared by + * writing a 1 to it. Writing a 0 to RDCOLERR has no effect. + * + * Values: + * - 0 - No collision error detected + * - 1 - Collision error detected + */ +//@{ +#define BP_FTFE_FSTAT_RDCOLERR (6U) //!< Bit position for FTFE_FSTAT_RDCOLERR. +#define BM_FTFE_FSTAT_RDCOLERR (0x40U) //!< Bit mask for FTFE_FSTAT_RDCOLERR. +#define BS_FTFE_FSTAT_RDCOLERR (1U) //!< Bit field size in bits for FTFE_FSTAT_RDCOLERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FSTAT_RDCOLERR field. +#define BR_FTFE_FSTAT_RDCOLERR (BITBAND_ACCESS8(HW_FTFE_FSTAT_ADDR, BP_FTFE_FSTAT_RDCOLERR)) +#endif + +//! @brief Format value for bitfield FTFE_FSTAT_RDCOLERR. +#define BF_FTFE_FSTAT_RDCOLERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FSTAT_RDCOLERR), uint8_t) & BM_FTFE_FSTAT_RDCOLERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RDCOLERR field to a new value. +#define BW_FTFE_FSTAT_RDCOLERR(v) (BITBAND_ACCESS8(HW_FTFE_FSTAT_ADDR, BP_FTFE_FSTAT_RDCOLERR) = (v)) +#endif +//@} + +/*! + * @name Register FTFE_FSTAT, field CCIF[7] (W1C) + * + * The CCIF flag indicates that a FTFE command or EEPROM file system operation + * has completed. The CCIF flag is cleared by writing a 1 to CCIF to launch a + * command, and CCIF stays low until command completion or command violation. The + * CCIF flag is also cleared by a successful write to FlexRAM while enabled for EEE, + * and CCIF stays low until the EEPROM file system has created the associated + * EEPROM data record. The CCIF bit is reset to 0 but is set to 1 by the memory + * controller at the end of the reset initialization sequence. Depending on how + * quickly the read occurs after reset release, the user may or may not see the 0 + * hardware reset value. + * + * Values: + * - 0 - FTFE command or EEPROM file system operation in progress + * - 1 - FTFE command or EEPROM file system operation has completed + */ +//@{ +#define BP_FTFE_FSTAT_CCIF (7U) //!< Bit position for FTFE_FSTAT_CCIF. +#define BM_FTFE_FSTAT_CCIF (0x80U) //!< Bit mask for FTFE_FSTAT_CCIF. +#define BS_FTFE_FSTAT_CCIF (1U) //!< Bit field size in bits for FTFE_FSTAT_CCIF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FSTAT_CCIF field. +#define BR_FTFE_FSTAT_CCIF (BITBAND_ACCESS8(HW_FTFE_FSTAT_ADDR, BP_FTFE_FSTAT_CCIF)) +#endif + +//! @brief Format value for bitfield FTFE_FSTAT_CCIF. +#define BF_FTFE_FSTAT_CCIF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FSTAT_CCIF), uint8_t) & BM_FTFE_FSTAT_CCIF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCIF field to a new value. +#define BW_FTFE_FSTAT_CCIF(v) (BITBAND_ACCESS8(HW_FTFE_FSTAT_ADDR, BP_FTFE_FSTAT_CCIF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCNFG - Flash Configuration Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCNFG - Flash Configuration Register (RW) + * + * Reset value: 0x00U + * + * This register provides information on the current functional state of the + * FTFE module. The erase control bits (ERSAREQ and ERSSUSP) have write + * restrictions. SWAP, PFLSH, RAMRDY, and EEERDY are read-only status bits. The unassigned + * bits read as noted and are not writable. The reset values for the SWAP, PFLSH, + * RAMRDY, and EEERDY bits are determined during the reset sequence. + */ +typedef union _hw_ftfe_fcnfg +{ + uint8_t U; + struct _hw_ftfe_fcnfg_bitfields + { + uint8_t EEERDY : 1; //!< [0] + uint8_t RAMRDY : 1; //!< [1] RAM Ready + uint8_t PFLSH : 1; //!< [2] FTFE configuration + uint8_t SWAP : 1; //!< [3] Swap + uint8_t ERSSUSP : 1; //!< [4] Erase Suspend + uint8_t ERSAREQ : 1; //!< [5] Erase All Request + uint8_t RDCOLLIE : 1; //!< [6] Read Collision Error Interrupt Enable + uint8_t CCIE : 1; //!< [7] Command Complete Interrupt Enable + } B; +} hw_ftfe_fcnfg_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCNFG register + */ +//@{ +#define HW_FTFE_FCNFG_ADDR (REGS_FTFE_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCNFG (*(__IO hw_ftfe_fcnfg_t *) HW_FTFE_FCNFG_ADDR) +#define HW_FTFE_FCNFG_RD() (HW_FTFE_FCNFG.U) +#define HW_FTFE_FCNFG_WR(v) (HW_FTFE_FCNFG.U = (v)) +#define HW_FTFE_FCNFG_SET(v) (HW_FTFE_FCNFG_WR(HW_FTFE_FCNFG_RD() | (v))) +#define HW_FTFE_FCNFG_CLR(v) (HW_FTFE_FCNFG_WR(HW_FTFE_FCNFG_RD() & ~(v))) +#define HW_FTFE_FCNFG_TOG(v) (HW_FTFE_FCNFG_WR(HW_FTFE_FCNFG_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCNFG bitfields + */ + +/*! + * @name Register FTFE_FCNFG, field EEERDY[0] (RO) + * + * For devices with FlexNVM: This flag indicates if the EEPROM backup data has + * been copied to the FlexRAM and is therefore available for read access. During + * the reset sequence, the EEERDY flag remains clear while CCIF=0 and only sets if + * the FlexNVM block is partitioned for EEPROM. For devices without FlexNVM: + * This bit is reserved. + * + * Values: + * - 0 - For devices with FlexNVM: FlexRAM is not available for EEPROM operation. + * - 1 - For devices with FlexNVM: FlexRAM is available for EEPROM operations + * where: reads from the FlexRAM return data previously written to the FlexRAM + * in EEPROM mode and writes launch an EEPROM operation to store the written + * data in the FlexRAM and EEPROM backup. + */ +//@{ +#define BP_FTFE_FCNFG_EEERDY (0U) //!< Bit position for FTFE_FCNFG_EEERDY. +#define BM_FTFE_FCNFG_EEERDY (0x01U) //!< Bit mask for FTFE_FCNFG_EEERDY. +#define BS_FTFE_FCNFG_EEERDY (1U) //!< Bit field size in bits for FTFE_FCNFG_EEERDY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCNFG_EEERDY field. +#define BR_FTFE_FCNFG_EEERDY (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_EEERDY)) +#endif +//@} + +/*! + * @name Register FTFE_FCNFG, field RAMRDY[1] (RO) + * + * This flag indicates the current status of the FlexRAM/ programming + * acceleration RAM. For devices with FlexNVM: The state of the RAMRDY flag is normally + * controlled by the Set FlexRAM Function command. During the reset sequence, the + * RAMRDY flag is cleared if the FlexNVM block is partitioned for EEPROM and will + * be set if the FlexNVM block is not partitioned for EEPROM . The RAMRDY flag is + * cleared if the Program Partition command is run to partition the FlexNVM block + * for EEPROM. The RAMRDY flag sets after completion of the Erase All Blocks + * command or execution of the erase-all operation triggered external to the FTFE. + * For devices without FlexNVM: This bit should always be set. + * + * Values: + * - 0 - For devices with FlexNVM: FlexRAM is not available for traditional RAM + * access. For devices without FlexNVM: Programming acceleration RAM is not + * available. + * - 1 - For devices with FlexNVM: FlexRAM is available as traditional RAM only; + * writes to the FlexRAM do not trigger EEPROM operations. For devices + * without FlexNVM: Programming acceleration RAM is available. + */ +//@{ +#define BP_FTFE_FCNFG_RAMRDY (1U) //!< Bit position for FTFE_FCNFG_RAMRDY. +#define BM_FTFE_FCNFG_RAMRDY (0x02U) //!< Bit mask for FTFE_FCNFG_RAMRDY. +#define BS_FTFE_FCNFG_RAMRDY (1U) //!< Bit field size in bits for FTFE_FCNFG_RAMRDY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCNFG_RAMRDY field. +#define BR_FTFE_FCNFG_RAMRDY (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_RAMRDY)) +#endif +//@} + +/*! + * @name Register FTFE_FCNFG, field PFLSH[2] (RO) + * + * Values: + * - 0 - For devices with FlexNVM: FTFE configuration supports two program flash + * blocks and two FlexNVM blocks For devices with program flash only: + * Reserved + * - 1 - For devices with FlexNVM: Reserved For devices with program flash only: + * FTFE configuration supports four program flash blocks + */ +//@{ +#define BP_FTFE_FCNFG_PFLSH (2U) //!< Bit position for FTFE_FCNFG_PFLSH. +#define BM_FTFE_FCNFG_PFLSH (0x04U) //!< Bit mask for FTFE_FCNFG_PFLSH. +#define BS_FTFE_FCNFG_PFLSH (1U) //!< Bit field size in bits for FTFE_FCNFG_PFLSH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCNFG_PFLSH field. +#define BR_FTFE_FCNFG_PFLSH (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_PFLSH)) +#endif +//@} + +/*! + * @name Register FTFE_FCNFG, field SWAP[3] (RO) + * + * The SWAP flag indicates which half of the program flash space is located at + * relative address 0x0000. The state of the SWAP flag is set by the FTFE during + * the reset sequence. See for information on swap management. + * + * Values: + * - 0 - For devices with FlexNVM: Program flash 0 block is located at relative + * address 0x0000 For devices with program flash only: Program flash 0 block + * is located at relative address 0x0000 + * - 1 - For devices with FlexNVM: Reserved For devices with program flash only: + * Program flash 1 block is located at relative address 0x0000 + */ +//@{ +#define BP_FTFE_FCNFG_SWAP (3U) //!< Bit position for FTFE_FCNFG_SWAP. +#define BM_FTFE_FCNFG_SWAP (0x08U) //!< Bit mask for FTFE_FCNFG_SWAP. +#define BS_FTFE_FCNFG_SWAP (1U) //!< Bit field size in bits for FTFE_FCNFG_SWAP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCNFG_SWAP field. +#define BR_FTFE_FCNFG_SWAP (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_SWAP)) +#endif +//@} + +/*! + * @name Register FTFE_FCNFG, field ERSSUSP[4] (RW) + * + * The ERSSUSP bit allows the user to suspend (interrupt) the Erase Flash Sector + * command while it is executing. + * + * Values: + * - 0 - No suspend requested + * - 1 - Suspend the current Erase Flash Sector command execution. + */ +//@{ +#define BP_FTFE_FCNFG_ERSSUSP (4U) //!< Bit position for FTFE_FCNFG_ERSSUSP. +#define BM_FTFE_FCNFG_ERSSUSP (0x10U) //!< Bit mask for FTFE_FCNFG_ERSSUSP. +#define BS_FTFE_FCNFG_ERSSUSP (1U) //!< Bit field size in bits for FTFE_FCNFG_ERSSUSP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCNFG_ERSSUSP field. +#define BR_FTFE_FCNFG_ERSSUSP (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_ERSSUSP)) +#endif + +//! @brief Format value for bitfield FTFE_FCNFG_ERSSUSP. +#define BF_FTFE_FCNFG_ERSSUSP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCNFG_ERSSUSP), uint8_t) & BM_FTFE_FCNFG_ERSSUSP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERSSUSP field to a new value. +#define BW_FTFE_FCNFG_ERSSUSP(v) (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_ERSSUSP) = (v)) +#endif +//@} + +/*! + * @name Register FTFE_FCNFG, field ERSAREQ[5] (RO) + * + * This bit issues a request to the memory controller to execute the Erase All + * Blocks command and release security. ERSAREQ is not directly writable but is + * under indirect user control. Refer to the device's Chip Configuration details on + * how to request this command. The ERSAREQ bit sets when an erase all request + * is triggered external to the FTFE and CCIF is set (no command is currently + * being executed). ERSAREQ is cleared by the FTFE when the operation completes. + * + * Values: + * - 0 - No request or request complete + * - 1 - Request to: run the Erase All Blocks command, verify the erased state, + * program the security byte in the Flash Configuration Field to the unsecure + * state, and release MCU security by setting the FSEC[SEC] field to the + * unsecure state. + */ +//@{ +#define BP_FTFE_FCNFG_ERSAREQ (5U) //!< Bit position for FTFE_FCNFG_ERSAREQ. +#define BM_FTFE_FCNFG_ERSAREQ (0x20U) //!< Bit mask for FTFE_FCNFG_ERSAREQ. +#define BS_FTFE_FCNFG_ERSAREQ (1U) //!< Bit field size in bits for FTFE_FCNFG_ERSAREQ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCNFG_ERSAREQ field. +#define BR_FTFE_FCNFG_ERSAREQ (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_ERSAREQ)) +#endif +//@} + +/*! + * @name Register FTFE_FCNFG, field RDCOLLIE[6] (RW) + * + * The RDCOLLIE bit controls interrupt generation when an FTFE read collision + * error occurs. + * + * Values: + * - 0 - Read collision error interrupt disabled + * - 1 - Read collision error interrupt enabled. An interrupt request is + * generated whenever an FTFE read collision error is detected (see the description + * of FSTAT[RDCOLERR]). + */ +//@{ +#define BP_FTFE_FCNFG_RDCOLLIE (6U) //!< Bit position for FTFE_FCNFG_RDCOLLIE. +#define BM_FTFE_FCNFG_RDCOLLIE (0x40U) //!< Bit mask for FTFE_FCNFG_RDCOLLIE. +#define BS_FTFE_FCNFG_RDCOLLIE (1U) //!< Bit field size in bits for FTFE_FCNFG_RDCOLLIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCNFG_RDCOLLIE field. +#define BR_FTFE_FCNFG_RDCOLLIE (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_RDCOLLIE)) +#endif + +//! @brief Format value for bitfield FTFE_FCNFG_RDCOLLIE. +#define BF_FTFE_FCNFG_RDCOLLIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCNFG_RDCOLLIE), uint8_t) & BM_FTFE_FCNFG_RDCOLLIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RDCOLLIE field to a new value. +#define BW_FTFE_FCNFG_RDCOLLIE(v) (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_RDCOLLIE) = (v)) +#endif +//@} + +/*! + * @name Register FTFE_FCNFG, field CCIE[7] (RW) + * + * The CCIE bit controls interrupt generation when an FTFE command completes. + * + * Values: + * - 0 - Command complete interrupt disabled + * - 1 - Command complete interrupt enabled. An interrupt request is generated + * whenever the FSTAT[CCIF] flag is set. + */ +//@{ +#define BP_FTFE_FCNFG_CCIE (7U) //!< Bit position for FTFE_FCNFG_CCIE. +#define BM_FTFE_FCNFG_CCIE (0x80U) //!< Bit mask for FTFE_FCNFG_CCIE. +#define BS_FTFE_FCNFG_CCIE (1U) //!< Bit field size in bits for FTFE_FCNFG_CCIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCNFG_CCIE field. +#define BR_FTFE_FCNFG_CCIE (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_CCIE)) +#endif + +//! @brief Format value for bitfield FTFE_FCNFG_CCIE. +#define BF_FTFE_FCNFG_CCIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCNFG_CCIE), uint8_t) & BM_FTFE_FCNFG_CCIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCIE field to a new value. +#define BW_FTFE_FCNFG_CCIE(v) (BITBAND_ACCESS8(HW_FTFE_FCNFG_ADDR, BP_FTFE_FCNFG_CCIE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FSEC - Flash Security Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FSEC - Flash Security Register (RO) + * + * Reset value: 0x00U + * + * This read-only register holds all bits associated with the security of the + * MCU and FTFE module. During the reset sequence, the register is loaded with the + * contents of the flash security byte in the Flash Configuration Field located + * in program flash memory. The Flash basis for the values is signified by X in + * the reset value. + */ +typedef union _hw_ftfe_fsec +{ + uint8_t U; + struct _hw_ftfe_fsec_bitfields + { + uint8_t SEC : 2; //!< [1:0] Flash Security + uint8_t FSLACC : 2; //!< [3:2] Freescale Failure Analysis Access Code + uint8_t MEEN : 2; //!< [5:4] Mass Erase Enable Bits + uint8_t KEYEN : 2; //!< [7:6] Backdoor Key Security Enable + } B; +} hw_ftfe_fsec_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FSEC register + */ +//@{ +#define HW_FTFE_FSEC_ADDR (REGS_FTFE_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FSEC (*(__I hw_ftfe_fsec_t *) HW_FTFE_FSEC_ADDR) +#define HW_FTFE_FSEC_RD() (HW_FTFE_FSEC.U) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FSEC bitfields + */ + +/*! + * @name Register FTFE_FSEC, field SEC[1:0] (RO) + * + * These bits define the security state of the MCU. In the secure state, the MCU + * limits access to FTFE module resources. The limitations are defined per + * device and are detailed in the Chip Configuration details. If the FTFE module is + * unsecured using backdoor key access, the SEC bits are forced to 10b. + * + * Values: + * - 00 - MCU security status is secure + * - 01 - MCU security status is secure + * - 10 - MCU security status is unsecure (The standard shipping condition of + * the FTFE is unsecure.) + * - 11 - MCU security status is secure + */ +//@{ +#define BP_FTFE_FSEC_SEC (0U) //!< Bit position for FTFE_FSEC_SEC. +#define BM_FTFE_FSEC_SEC (0x03U) //!< Bit mask for FTFE_FSEC_SEC. +#define BS_FTFE_FSEC_SEC (2U) //!< Bit field size in bits for FTFE_FSEC_SEC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FSEC_SEC field. +#define BR_FTFE_FSEC_SEC (HW_FTFE_FSEC.B.SEC) +#endif +//@} + +/*! + * @name Register FTFE_FSEC, field FSLACC[3:2] (RO) + * + * These bits enable or disable access to the flash memory contents during + * returned part failure analysis at Freescale. When SEC is secure and FSLACC is + * denied, access to the program flash contents is denied and any failure analysis + * performed by Freescale factory test must begin with a full erase to unsecure the + * part. When access is granted (SEC is unsecure, or SEC is secure and FSLACC is + * granted), Freescale factory testing has visibility of the current flash + * contents. The state of the FSLACC bits is only relevant when the SEC bits are set to + * secure. When the SEC field is set to unsecure, the FSLACC setting does not + * matter. + * + * Values: + * - 00 - Freescale factory access granted + * - 01 - Freescale factory access denied + * - 10 - Freescale factory access denied + * - 11 - Freescale factory access granted + */ +//@{ +#define BP_FTFE_FSEC_FSLACC (2U) //!< Bit position for FTFE_FSEC_FSLACC. +#define BM_FTFE_FSEC_FSLACC (0x0CU) //!< Bit mask for FTFE_FSEC_FSLACC. +#define BS_FTFE_FSEC_FSLACC (2U) //!< Bit field size in bits for FTFE_FSEC_FSLACC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FSEC_FSLACC field. +#define BR_FTFE_FSEC_FSLACC (HW_FTFE_FSEC.B.FSLACC) +#endif +//@} + +/*! + * @name Register FTFE_FSEC, field MEEN[5:4] (RO) + * + * Enables and disables mass erase capability of the FTFE module. The state of + * the MEEN bits is only relevant when the SEC bits are set to secure outside of + * NVM Normal Mode. When the SEC field is set to unsecure, the MEEN setting does + * not matter. + * + * Values: + * - 00 - Mass erase is enabled + * - 01 - Mass erase is enabled + * - 10 - Mass erase is disabled + * - 11 - Mass erase is enabled + */ +//@{ +#define BP_FTFE_FSEC_MEEN (4U) //!< Bit position for FTFE_FSEC_MEEN. +#define BM_FTFE_FSEC_MEEN (0x30U) //!< Bit mask for FTFE_FSEC_MEEN. +#define BS_FTFE_FSEC_MEEN (2U) //!< Bit field size in bits for FTFE_FSEC_MEEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FSEC_MEEN field. +#define BR_FTFE_FSEC_MEEN (HW_FTFE_FSEC.B.MEEN) +#endif +//@} + +/*! + * @name Register FTFE_FSEC, field KEYEN[7:6] (RO) + * + * These bits enable and disable backdoor key access to the FTFE module. + * + * Values: + * - 00 - Backdoor key access disabled + * - 01 - Backdoor key access disabled (preferred KEYEN state to disable + * backdoor key access) + * - 10 - Backdoor key access enabled + * - 11 - Backdoor key access disabled + */ +//@{ +#define BP_FTFE_FSEC_KEYEN (6U) //!< Bit position for FTFE_FSEC_KEYEN. +#define BM_FTFE_FSEC_KEYEN (0xC0U) //!< Bit mask for FTFE_FSEC_KEYEN. +#define BS_FTFE_FSEC_KEYEN (2U) //!< Bit field size in bits for FTFE_FSEC_KEYEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FSEC_KEYEN field. +#define BR_FTFE_FSEC_KEYEN (HW_FTFE_FSEC.B.KEYEN) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FOPT - Flash Option Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FOPT - Flash Option Register (RO) + * + * Reset value: 0x00U + * + * The flash option register allows the MCU to customize its operations by + * examining the state of these read-only bits, which are loaded from NVM at reset. + * The function of the bits is defined in the device's Chip Configuration details. + * All bits in the register are read-only. During the reset sequence, the + * register is loaded from the flash nonvolatile option byte in the Flash Configuration + * Field located in program flash memory. The flash basis for the values is + * signified by X in the reset value. + */ +typedef union _hw_ftfe_fopt +{ + uint8_t U; + struct _hw_ftfe_fopt_bitfields + { + uint8_t OPT : 8; //!< [7:0] Nonvolatile Option + } B; +} hw_ftfe_fopt_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FOPT register + */ +//@{ +#define HW_FTFE_FOPT_ADDR (REGS_FTFE_BASE + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FOPT (*(__I hw_ftfe_fopt_t *) HW_FTFE_FOPT_ADDR) +#define HW_FTFE_FOPT_RD() (HW_FTFE_FOPT.U) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FOPT bitfields + */ + +/*! + * @name Register FTFE_FOPT, field OPT[7:0] (RO) + * + * These bits are loaded from flash to this register at reset. Refer to the + * device's Chip Configuration details for the definition and use of these bits. + */ +//@{ +#define BP_FTFE_FOPT_OPT (0U) //!< Bit position for FTFE_FOPT_OPT. +#define BM_FTFE_FOPT_OPT (0xFFU) //!< Bit mask for FTFE_FOPT_OPT. +#define BS_FTFE_FOPT_OPT (8U) //!< Bit field size in bits for FTFE_FOPT_OPT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FOPT_OPT field. +#define BR_FTFE_FOPT_OPT (HW_FTFE_FOPT.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB3 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB3 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob3 +{ + uint8_t U; + struct _hw_ftfe_fccob3_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob3_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB3 register + */ +//@{ +#define HW_FTFE_FCCOB3_ADDR (REGS_FTFE_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB3 (*(__IO hw_ftfe_fccob3_t *) HW_FTFE_FCCOB3_ADDR) +#define HW_FTFE_FCCOB3_RD() (HW_FTFE_FCCOB3.U) +#define HW_FTFE_FCCOB3_WR(v) (HW_FTFE_FCCOB3.U = (v)) +#define HW_FTFE_FCCOB3_SET(v) (HW_FTFE_FCCOB3_WR(HW_FTFE_FCCOB3_RD() | (v))) +#define HW_FTFE_FCCOB3_CLR(v) (HW_FTFE_FCCOB3_WR(HW_FTFE_FCCOB3_RD() & ~(v))) +#define HW_FTFE_FCCOB3_TOG(v) (HW_FTFE_FCCOB3_WR(HW_FTFE_FCCOB3_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB3 bitfields + */ + +/*! + * @name Register FTFE_FCCOB3, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB3_CCOBn (0U) //!< Bit position for FTFE_FCCOB3_CCOBn. +#define BM_FTFE_FCCOB3_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB3_CCOBn. +#define BS_FTFE_FCCOB3_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB3_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB3_CCOBn field. +#define BR_FTFE_FCCOB3_CCOBn (HW_FTFE_FCCOB3.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB3_CCOBn. +#define BF_FTFE_FCCOB3_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB3_CCOBn), uint8_t) & BM_FTFE_FCCOB3_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB3_CCOBn(v) (HW_FTFE_FCCOB3_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB2 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB2 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob2 +{ + uint8_t U; + struct _hw_ftfe_fccob2_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob2_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB2 register + */ +//@{ +#define HW_FTFE_FCCOB2_ADDR (REGS_FTFE_BASE + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB2 (*(__IO hw_ftfe_fccob2_t *) HW_FTFE_FCCOB2_ADDR) +#define HW_FTFE_FCCOB2_RD() (HW_FTFE_FCCOB2.U) +#define HW_FTFE_FCCOB2_WR(v) (HW_FTFE_FCCOB2.U = (v)) +#define HW_FTFE_FCCOB2_SET(v) (HW_FTFE_FCCOB2_WR(HW_FTFE_FCCOB2_RD() | (v))) +#define HW_FTFE_FCCOB2_CLR(v) (HW_FTFE_FCCOB2_WR(HW_FTFE_FCCOB2_RD() & ~(v))) +#define HW_FTFE_FCCOB2_TOG(v) (HW_FTFE_FCCOB2_WR(HW_FTFE_FCCOB2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB2 bitfields + */ + +/*! + * @name Register FTFE_FCCOB2, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB2_CCOBn (0U) //!< Bit position for FTFE_FCCOB2_CCOBn. +#define BM_FTFE_FCCOB2_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB2_CCOBn. +#define BS_FTFE_FCCOB2_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB2_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB2_CCOBn field. +#define BR_FTFE_FCCOB2_CCOBn (HW_FTFE_FCCOB2.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB2_CCOBn. +#define BF_FTFE_FCCOB2_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB2_CCOBn), uint8_t) & BM_FTFE_FCCOB2_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB2_CCOBn(v) (HW_FTFE_FCCOB2_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB1 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB1 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob1 +{ + uint8_t U; + struct _hw_ftfe_fccob1_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob1_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB1 register + */ +//@{ +#define HW_FTFE_FCCOB1_ADDR (REGS_FTFE_BASE + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB1 (*(__IO hw_ftfe_fccob1_t *) HW_FTFE_FCCOB1_ADDR) +#define HW_FTFE_FCCOB1_RD() (HW_FTFE_FCCOB1.U) +#define HW_FTFE_FCCOB1_WR(v) (HW_FTFE_FCCOB1.U = (v)) +#define HW_FTFE_FCCOB1_SET(v) (HW_FTFE_FCCOB1_WR(HW_FTFE_FCCOB1_RD() | (v))) +#define HW_FTFE_FCCOB1_CLR(v) (HW_FTFE_FCCOB1_WR(HW_FTFE_FCCOB1_RD() & ~(v))) +#define HW_FTFE_FCCOB1_TOG(v) (HW_FTFE_FCCOB1_WR(HW_FTFE_FCCOB1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB1 bitfields + */ + +/*! + * @name Register FTFE_FCCOB1, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB1_CCOBn (0U) //!< Bit position for FTFE_FCCOB1_CCOBn. +#define BM_FTFE_FCCOB1_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB1_CCOBn. +#define BS_FTFE_FCCOB1_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB1_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB1_CCOBn field. +#define BR_FTFE_FCCOB1_CCOBn (HW_FTFE_FCCOB1.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB1_CCOBn. +#define BF_FTFE_FCCOB1_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB1_CCOBn), uint8_t) & BM_FTFE_FCCOB1_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB1_CCOBn(v) (HW_FTFE_FCCOB1_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB0 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB0 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob0 +{ + uint8_t U; + struct _hw_ftfe_fccob0_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob0_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB0 register + */ +//@{ +#define HW_FTFE_FCCOB0_ADDR (REGS_FTFE_BASE + 0x7U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB0 (*(__IO hw_ftfe_fccob0_t *) HW_FTFE_FCCOB0_ADDR) +#define HW_FTFE_FCCOB0_RD() (HW_FTFE_FCCOB0.U) +#define HW_FTFE_FCCOB0_WR(v) (HW_FTFE_FCCOB0.U = (v)) +#define HW_FTFE_FCCOB0_SET(v) (HW_FTFE_FCCOB0_WR(HW_FTFE_FCCOB0_RD() | (v))) +#define HW_FTFE_FCCOB0_CLR(v) (HW_FTFE_FCCOB0_WR(HW_FTFE_FCCOB0_RD() & ~(v))) +#define HW_FTFE_FCCOB0_TOG(v) (HW_FTFE_FCCOB0_WR(HW_FTFE_FCCOB0_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB0 bitfields + */ + +/*! + * @name Register FTFE_FCCOB0, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB0_CCOBn (0U) //!< Bit position for FTFE_FCCOB0_CCOBn. +#define BM_FTFE_FCCOB0_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB0_CCOBn. +#define BS_FTFE_FCCOB0_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB0_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB0_CCOBn field. +#define BR_FTFE_FCCOB0_CCOBn (HW_FTFE_FCCOB0.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB0_CCOBn. +#define BF_FTFE_FCCOB0_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB0_CCOBn), uint8_t) & BM_FTFE_FCCOB0_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB0_CCOBn(v) (HW_FTFE_FCCOB0_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB7 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB7 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob7 +{ + uint8_t U; + struct _hw_ftfe_fccob7_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob7_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB7 register + */ +//@{ +#define HW_FTFE_FCCOB7_ADDR (REGS_FTFE_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB7 (*(__IO hw_ftfe_fccob7_t *) HW_FTFE_FCCOB7_ADDR) +#define HW_FTFE_FCCOB7_RD() (HW_FTFE_FCCOB7.U) +#define HW_FTFE_FCCOB7_WR(v) (HW_FTFE_FCCOB7.U = (v)) +#define HW_FTFE_FCCOB7_SET(v) (HW_FTFE_FCCOB7_WR(HW_FTFE_FCCOB7_RD() | (v))) +#define HW_FTFE_FCCOB7_CLR(v) (HW_FTFE_FCCOB7_WR(HW_FTFE_FCCOB7_RD() & ~(v))) +#define HW_FTFE_FCCOB7_TOG(v) (HW_FTFE_FCCOB7_WR(HW_FTFE_FCCOB7_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB7 bitfields + */ + +/*! + * @name Register FTFE_FCCOB7, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB7_CCOBn (0U) //!< Bit position for FTFE_FCCOB7_CCOBn. +#define BM_FTFE_FCCOB7_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB7_CCOBn. +#define BS_FTFE_FCCOB7_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB7_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB7_CCOBn field. +#define BR_FTFE_FCCOB7_CCOBn (HW_FTFE_FCCOB7.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB7_CCOBn. +#define BF_FTFE_FCCOB7_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB7_CCOBn), uint8_t) & BM_FTFE_FCCOB7_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB7_CCOBn(v) (HW_FTFE_FCCOB7_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB6 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB6 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob6 +{ + uint8_t U; + struct _hw_ftfe_fccob6_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob6_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB6 register + */ +//@{ +#define HW_FTFE_FCCOB6_ADDR (REGS_FTFE_BASE + 0x9U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB6 (*(__IO hw_ftfe_fccob6_t *) HW_FTFE_FCCOB6_ADDR) +#define HW_FTFE_FCCOB6_RD() (HW_FTFE_FCCOB6.U) +#define HW_FTFE_FCCOB6_WR(v) (HW_FTFE_FCCOB6.U = (v)) +#define HW_FTFE_FCCOB6_SET(v) (HW_FTFE_FCCOB6_WR(HW_FTFE_FCCOB6_RD() | (v))) +#define HW_FTFE_FCCOB6_CLR(v) (HW_FTFE_FCCOB6_WR(HW_FTFE_FCCOB6_RD() & ~(v))) +#define HW_FTFE_FCCOB6_TOG(v) (HW_FTFE_FCCOB6_WR(HW_FTFE_FCCOB6_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB6 bitfields + */ + +/*! + * @name Register FTFE_FCCOB6, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB6_CCOBn (0U) //!< Bit position for FTFE_FCCOB6_CCOBn. +#define BM_FTFE_FCCOB6_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB6_CCOBn. +#define BS_FTFE_FCCOB6_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB6_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB6_CCOBn field. +#define BR_FTFE_FCCOB6_CCOBn (HW_FTFE_FCCOB6.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB6_CCOBn. +#define BF_FTFE_FCCOB6_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB6_CCOBn), uint8_t) & BM_FTFE_FCCOB6_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB6_CCOBn(v) (HW_FTFE_FCCOB6_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB5 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB5 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob5 +{ + uint8_t U; + struct _hw_ftfe_fccob5_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob5_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB5 register + */ +//@{ +#define HW_FTFE_FCCOB5_ADDR (REGS_FTFE_BASE + 0xAU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB5 (*(__IO hw_ftfe_fccob5_t *) HW_FTFE_FCCOB5_ADDR) +#define HW_FTFE_FCCOB5_RD() (HW_FTFE_FCCOB5.U) +#define HW_FTFE_FCCOB5_WR(v) (HW_FTFE_FCCOB5.U = (v)) +#define HW_FTFE_FCCOB5_SET(v) (HW_FTFE_FCCOB5_WR(HW_FTFE_FCCOB5_RD() | (v))) +#define HW_FTFE_FCCOB5_CLR(v) (HW_FTFE_FCCOB5_WR(HW_FTFE_FCCOB5_RD() & ~(v))) +#define HW_FTFE_FCCOB5_TOG(v) (HW_FTFE_FCCOB5_WR(HW_FTFE_FCCOB5_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB5 bitfields + */ + +/*! + * @name Register FTFE_FCCOB5, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB5_CCOBn (0U) //!< Bit position for FTFE_FCCOB5_CCOBn. +#define BM_FTFE_FCCOB5_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB5_CCOBn. +#define BS_FTFE_FCCOB5_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB5_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB5_CCOBn field. +#define BR_FTFE_FCCOB5_CCOBn (HW_FTFE_FCCOB5.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB5_CCOBn. +#define BF_FTFE_FCCOB5_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB5_CCOBn), uint8_t) & BM_FTFE_FCCOB5_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB5_CCOBn(v) (HW_FTFE_FCCOB5_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB4 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB4 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob4 +{ + uint8_t U; + struct _hw_ftfe_fccob4_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob4_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB4 register + */ +//@{ +#define HW_FTFE_FCCOB4_ADDR (REGS_FTFE_BASE + 0xBU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB4 (*(__IO hw_ftfe_fccob4_t *) HW_FTFE_FCCOB4_ADDR) +#define HW_FTFE_FCCOB4_RD() (HW_FTFE_FCCOB4.U) +#define HW_FTFE_FCCOB4_WR(v) (HW_FTFE_FCCOB4.U = (v)) +#define HW_FTFE_FCCOB4_SET(v) (HW_FTFE_FCCOB4_WR(HW_FTFE_FCCOB4_RD() | (v))) +#define HW_FTFE_FCCOB4_CLR(v) (HW_FTFE_FCCOB4_WR(HW_FTFE_FCCOB4_RD() & ~(v))) +#define HW_FTFE_FCCOB4_TOG(v) (HW_FTFE_FCCOB4_WR(HW_FTFE_FCCOB4_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB4 bitfields + */ + +/*! + * @name Register FTFE_FCCOB4, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB4_CCOBn (0U) //!< Bit position for FTFE_FCCOB4_CCOBn. +#define BM_FTFE_FCCOB4_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB4_CCOBn. +#define BS_FTFE_FCCOB4_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB4_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB4_CCOBn field. +#define BR_FTFE_FCCOB4_CCOBn (HW_FTFE_FCCOB4.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB4_CCOBn. +#define BF_FTFE_FCCOB4_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB4_CCOBn), uint8_t) & BM_FTFE_FCCOB4_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB4_CCOBn(v) (HW_FTFE_FCCOB4_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOBB - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOBB - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccobb +{ + uint8_t U; + struct _hw_ftfe_fccobb_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccobb_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOBB register + */ +//@{ +#define HW_FTFE_FCCOBB_ADDR (REGS_FTFE_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOBB (*(__IO hw_ftfe_fccobb_t *) HW_FTFE_FCCOBB_ADDR) +#define HW_FTFE_FCCOBB_RD() (HW_FTFE_FCCOBB.U) +#define HW_FTFE_FCCOBB_WR(v) (HW_FTFE_FCCOBB.U = (v)) +#define HW_FTFE_FCCOBB_SET(v) (HW_FTFE_FCCOBB_WR(HW_FTFE_FCCOBB_RD() | (v))) +#define HW_FTFE_FCCOBB_CLR(v) (HW_FTFE_FCCOBB_WR(HW_FTFE_FCCOBB_RD() & ~(v))) +#define HW_FTFE_FCCOBB_TOG(v) (HW_FTFE_FCCOBB_WR(HW_FTFE_FCCOBB_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOBB bitfields + */ + +/*! + * @name Register FTFE_FCCOBB, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOBB_CCOBn (0U) //!< Bit position for FTFE_FCCOBB_CCOBn. +#define BM_FTFE_FCCOBB_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOBB_CCOBn. +#define BS_FTFE_FCCOBB_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOBB_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOBB_CCOBn field. +#define BR_FTFE_FCCOBB_CCOBn (HW_FTFE_FCCOBB.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOBB_CCOBn. +#define BF_FTFE_FCCOBB_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOBB_CCOBn), uint8_t) & BM_FTFE_FCCOBB_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOBB_CCOBn(v) (HW_FTFE_FCCOBB_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOBA - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOBA - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccoba +{ + uint8_t U; + struct _hw_ftfe_fccoba_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccoba_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOBA register + */ +//@{ +#define HW_FTFE_FCCOBA_ADDR (REGS_FTFE_BASE + 0xDU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOBA (*(__IO hw_ftfe_fccoba_t *) HW_FTFE_FCCOBA_ADDR) +#define HW_FTFE_FCCOBA_RD() (HW_FTFE_FCCOBA.U) +#define HW_FTFE_FCCOBA_WR(v) (HW_FTFE_FCCOBA.U = (v)) +#define HW_FTFE_FCCOBA_SET(v) (HW_FTFE_FCCOBA_WR(HW_FTFE_FCCOBA_RD() | (v))) +#define HW_FTFE_FCCOBA_CLR(v) (HW_FTFE_FCCOBA_WR(HW_FTFE_FCCOBA_RD() & ~(v))) +#define HW_FTFE_FCCOBA_TOG(v) (HW_FTFE_FCCOBA_WR(HW_FTFE_FCCOBA_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOBA bitfields + */ + +/*! + * @name Register FTFE_FCCOBA, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOBA_CCOBn (0U) //!< Bit position for FTFE_FCCOBA_CCOBn. +#define BM_FTFE_FCCOBA_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOBA_CCOBn. +#define BS_FTFE_FCCOBA_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOBA_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOBA_CCOBn field. +#define BR_FTFE_FCCOBA_CCOBn (HW_FTFE_FCCOBA.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOBA_CCOBn. +#define BF_FTFE_FCCOBA_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOBA_CCOBn), uint8_t) & BM_FTFE_FCCOBA_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOBA_CCOBn(v) (HW_FTFE_FCCOBA_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB9 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB9 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob9 +{ + uint8_t U; + struct _hw_ftfe_fccob9_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob9_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB9 register + */ +//@{ +#define HW_FTFE_FCCOB9_ADDR (REGS_FTFE_BASE + 0xEU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB9 (*(__IO hw_ftfe_fccob9_t *) HW_FTFE_FCCOB9_ADDR) +#define HW_FTFE_FCCOB9_RD() (HW_FTFE_FCCOB9.U) +#define HW_FTFE_FCCOB9_WR(v) (HW_FTFE_FCCOB9.U = (v)) +#define HW_FTFE_FCCOB9_SET(v) (HW_FTFE_FCCOB9_WR(HW_FTFE_FCCOB9_RD() | (v))) +#define HW_FTFE_FCCOB9_CLR(v) (HW_FTFE_FCCOB9_WR(HW_FTFE_FCCOB9_RD() & ~(v))) +#define HW_FTFE_FCCOB9_TOG(v) (HW_FTFE_FCCOB9_WR(HW_FTFE_FCCOB9_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB9 bitfields + */ + +/*! + * @name Register FTFE_FCCOB9, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB9_CCOBn (0U) //!< Bit position for FTFE_FCCOB9_CCOBn. +#define BM_FTFE_FCCOB9_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB9_CCOBn. +#define BS_FTFE_FCCOB9_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB9_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB9_CCOBn field. +#define BR_FTFE_FCCOB9_CCOBn (HW_FTFE_FCCOB9.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB9_CCOBn. +#define BF_FTFE_FCCOB9_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB9_CCOBn), uint8_t) & BM_FTFE_FCCOB9_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB9_CCOBn(v) (HW_FTFE_FCCOB9_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FCCOB8 - Flash Common Command Object Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FCCOB8 - Flash Common Command Object Registers (RW) + * + * Reset value: 0x00U + * + * The FCCOB register group provides 12 bytes for command codes and parameters. + * The individual bytes within the set append a 0-B hex identifier to the FCCOB + * register name: FCCOB0, FCCOB1, ..., FCCOBB. + */ +typedef union _hw_ftfe_fccob8 +{ + uint8_t U; + struct _hw_ftfe_fccob8_bitfields + { + uint8_t CCOBn : 8; //!< [7:0] + } B; +} hw_ftfe_fccob8_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FCCOB8 register + */ +//@{ +#define HW_FTFE_FCCOB8_ADDR (REGS_FTFE_BASE + 0xFU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FCCOB8 (*(__IO hw_ftfe_fccob8_t *) HW_FTFE_FCCOB8_ADDR) +#define HW_FTFE_FCCOB8_RD() (HW_FTFE_FCCOB8.U) +#define HW_FTFE_FCCOB8_WR(v) (HW_FTFE_FCCOB8.U = (v)) +#define HW_FTFE_FCCOB8_SET(v) (HW_FTFE_FCCOB8_WR(HW_FTFE_FCCOB8_RD() | (v))) +#define HW_FTFE_FCCOB8_CLR(v) (HW_FTFE_FCCOB8_WR(HW_FTFE_FCCOB8_RD() & ~(v))) +#define HW_FTFE_FCCOB8_TOG(v) (HW_FTFE_FCCOB8_WR(HW_FTFE_FCCOB8_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FCCOB8 bitfields + */ + +/*! + * @name Register FTFE_FCCOB8, field CCOBn[7:0] (RW) + * + * The FCCOB register provides a command code and relevant parameters to the + * memory controller. The individual registers that compose the FCCOB data set can + * be written in any order, but you must provide all needed values, which vary + * from command to command. First, set up all required FCCOB fields and then + * initiate the command's execution by writing a 1 to the FSTAT[CCIF] bit. This clears + * the CCIF bit, which locks all FCCOB parameter fields and they cannot be changed + * by the user until the command completes (CCIF returns to 1). No command + * buffering or queueing is provided; the next command can be loaded only after the + * current command completes. Some commands return information to the FCCOB + * registers. Any values returned to FCCOB are available for reading after the + * FSTAT[CCIF] flag returns to 1 by the memory controller. The following table shows a + * generic FTFE command format. The first FCCOB register, FCCOB0, always contains + * the command code. This 8-bit value defines the command to be executed. The + * command code is followed by the parameters required for this specific FTFE command, + * typically an address and/or data values. The command parameter table is + * written in terms of FCCOB Number (which is equivalent to the byte number). This + * number is a reference to the FCCOB register name and is not the register address. + * FCCOB NumberRefers to FCCOB register name, not register address Typical + * Command Parameter Contents [7:0] 0 FCMD (a code that defines the FTFE command) 1 + * Flash address [23:16] 2 Flash address [15:8] 3 Flash address [7:0] 4 Data Byte 0 + * 5 Data Byte 1 6 Data Byte 2 7 Data Byte 3 8 Data Byte 4 9 Data Byte 5 A Data + * Byte 6 B Data Byte 7 FCCOB Endianness and Multi-Byte Access: The FCCOB + * register group uses a big endian addressing convention. For all command parameter + * fields larger than 1 byte, the most significant data resides in the lowest FCCOB + * register number. The FCCOB register group may be read and written as + * individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes). + */ +//@{ +#define BP_FTFE_FCCOB8_CCOBn (0U) //!< Bit position for FTFE_FCCOB8_CCOBn. +#define BM_FTFE_FCCOB8_CCOBn (0xFFU) //!< Bit mask for FTFE_FCCOB8_CCOBn. +#define BS_FTFE_FCCOB8_CCOBn (8U) //!< Bit field size in bits for FTFE_FCCOB8_CCOBn. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FCCOB8_CCOBn field. +#define BR_FTFE_FCCOB8_CCOBn (HW_FTFE_FCCOB8.U) +#endif + +//! @brief Format value for bitfield FTFE_FCCOB8_CCOBn. +#define BF_FTFE_FCCOB8_CCOBn(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FCCOB8_CCOBn), uint8_t) & BM_FTFE_FCCOB8_CCOBn) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCOBn field to a new value. +#define BW_FTFE_FCCOB8_CCOBn(v) (HW_FTFE_FCCOB8_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FPROT3 - Program Flash Protection Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FPROT3 - Program Flash Protection Registers (RW) + * + * Reset value: 0x00U + * + * The FPROT registers define which program flash regions are protected from + * program and erase operations. Protected flash regions cannot have their content + * changed; that is, these regions cannot be programmed and cannot be erased by + * any FTFE command. Unprotected regions can be changed by program and erase + * operations. The four FPROT registers allow up to 32 protectable regions of equal + * memory size. Program flash protection register Program flash protection bits + * FPROT0 PROT[31:24] FPROT1 PROT[23:16] FPROT2 PROT[15:8] FPROT3 PROT[7:0] During + * the reset sequence, the FPROT registers are loaded with the contents of the + * program flash protection bytes in the Flash Configuration Field as indicated in + * the following table. Program flash protection register Flash Configuration Field + * offset address FPROT0 0x000B FPROT1 0x000A FPROT2 0x0009 FPROT3 0x0008 To + * change the program flash protection that is loaded during the reset sequence, + * unprotect the sector of program flash memory that contains the Flash + * Configuration Field. Then, reprogram the program flash protection byte. + */ +typedef union _hw_ftfe_fprot3 +{ + uint8_t U; + struct _hw_ftfe_fprot3_bitfields + { + uint8_t PROT : 8; //!< [7:0] Program Flash Region Protect + } B; +} hw_ftfe_fprot3_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FPROT3 register + */ +//@{ +#define HW_FTFE_FPROT3_ADDR (REGS_FTFE_BASE + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FPROT3 (*(__IO hw_ftfe_fprot3_t *) HW_FTFE_FPROT3_ADDR) +#define HW_FTFE_FPROT3_RD() (HW_FTFE_FPROT3.U) +#define HW_FTFE_FPROT3_WR(v) (HW_FTFE_FPROT3.U = (v)) +#define HW_FTFE_FPROT3_SET(v) (HW_FTFE_FPROT3_WR(HW_FTFE_FPROT3_RD() | (v))) +#define HW_FTFE_FPROT3_CLR(v) (HW_FTFE_FPROT3_WR(HW_FTFE_FPROT3_RD() & ~(v))) +#define HW_FTFE_FPROT3_TOG(v) (HW_FTFE_FPROT3_WR(HW_FTFE_FPROT3_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FPROT3 bitfields + */ + +/*! + * @name Register FTFE_FPROT3, field PROT[7:0] (RW) + * + * Each program flash region can be protected from program and erase operations + * by setting the associated PROT bit. In NVM Normal mode: The protection can + * only be increased, meaning that currently unprotected memory can be protected, + * but currently protected memory cannot be unprotected. Since unprotected regions + * are marked with a 1 and protected regions use a 0, only writes changing 1s to + * 0s are accepted. This 1-to-0 transition check is performed on a bit-by-bit + * basis. Those FPROT bits with 1-to-0 transitions are accepted while all bits with + * 0-to-1 transitions are ignored. In NVM Special mode: All bits of FPROT are + * writable without restriction. Unprotected areas can be protected and protected + * areas can be unprotected. The user must never write to any FPROT register while + * a command is running (CCIF=0). Trying to alter data in any protected area in + * the program flash memory results in a protection violation error and sets the + * FSTAT[FPVIOL] bit. A full block erase of a program flash block is not possible + * if it contains any protected region. + * + * Values: + * - 0 - Program flash region is protected. + * - 1 - Program flash region is not protected + */ +//@{ +#define BP_FTFE_FPROT3_PROT (0U) //!< Bit position for FTFE_FPROT3_PROT. +#define BM_FTFE_FPROT3_PROT (0xFFU) //!< Bit mask for FTFE_FPROT3_PROT. +#define BS_FTFE_FPROT3_PROT (8U) //!< Bit field size in bits for FTFE_FPROT3_PROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FPROT3_PROT field. +#define BR_FTFE_FPROT3_PROT (HW_FTFE_FPROT3.U) +#endif + +//! @brief Format value for bitfield FTFE_FPROT3_PROT. +#define BF_FTFE_FPROT3_PROT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FPROT3_PROT), uint8_t) & BM_FTFE_FPROT3_PROT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PROT field to a new value. +#define BW_FTFE_FPROT3_PROT(v) (HW_FTFE_FPROT3_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FPROT2 - Program Flash Protection Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FPROT2 - Program Flash Protection Registers (RW) + * + * Reset value: 0x00U + * + * The FPROT registers define which program flash regions are protected from + * program and erase operations. Protected flash regions cannot have their content + * changed; that is, these regions cannot be programmed and cannot be erased by + * any FTFE command. Unprotected regions can be changed by program and erase + * operations. The four FPROT registers allow up to 32 protectable regions of equal + * memory size. Program flash protection register Program flash protection bits + * FPROT0 PROT[31:24] FPROT1 PROT[23:16] FPROT2 PROT[15:8] FPROT3 PROT[7:0] During + * the reset sequence, the FPROT registers are loaded with the contents of the + * program flash protection bytes in the Flash Configuration Field as indicated in + * the following table. Program flash protection register Flash Configuration Field + * offset address FPROT0 0x000B FPROT1 0x000A FPROT2 0x0009 FPROT3 0x0008 To + * change the program flash protection that is loaded during the reset sequence, + * unprotect the sector of program flash memory that contains the Flash + * Configuration Field. Then, reprogram the program flash protection byte. + */ +typedef union _hw_ftfe_fprot2 +{ + uint8_t U; + struct _hw_ftfe_fprot2_bitfields + { + uint8_t PROT : 8; //!< [7:0] Program Flash Region Protect + } B; +} hw_ftfe_fprot2_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FPROT2 register + */ +//@{ +#define HW_FTFE_FPROT2_ADDR (REGS_FTFE_BASE + 0x11U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FPROT2 (*(__IO hw_ftfe_fprot2_t *) HW_FTFE_FPROT2_ADDR) +#define HW_FTFE_FPROT2_RD() (HW_FTFE_FPROT2.U) +#define HW_FTFE_FPROT2_WR(v) (HW_FTFE_FPROT2.U = (v)) +#define HW_FTFE_FPROT2_SET(v) (HW_FTFE_FPROT2_WR(HW_FTFE_FPROT2_RD() | (v))) +#define HW_FTFE_FPROT2_CLR(v) (HW_FTFE_FPROT2_WR(HW_FTFE_FPROT2_RD() & ~(v))) +#define HW_FTFE_FPROT2_TOG(v) (HW_FTFE_FPROT2_WR(HW_FTFE_FPROT2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FPROT2 bitfields + */ + +/*! + * @name Register FTFE_FPROT2, field PROT[7:0] (RW) + * + * Each program flash region can be protected from program and erase operations + * by setting the associated PROT bit. In NVM Normal mode: The protection can + * only be increased, meaning that currently unprotected memory can be protected, + * but currently protected memory cannot be unprotected. Since unprotected regions + * are marked with a 1 and protected regions use a 0, only writes changing 1s to + * 0s are accepted. This 1-to-0 transition check is performed on a bit-by-bit + * basis. Those FPROT bits with 1-to-0 transitions are accepted while all bits with + * 0-to-1 transitions are ignored. In NVM Special mode: All bits of FPROT are + * writable without restriction. Unprotected areas can be protected and protected + * areas can be unprotected. The user must never write to any FPROT register while + * a command is running (CCIF=0). Trying to alter data in any protected area in + * the program flash memory results in a protection violation error and sets the + * FSTAT[FPVIOL] bit. A full block erase of a program flash block is not possible + * if it contains any protected region. + * + * Values: + * - 0 - Program flash region is protected. + * - 1 - Program flash region is not protected + */ +//@{ +#define BP_FTFE_FPROT2_PROT (0U) //!< Bit position for FTFE_FPROT2_PROT. +#define BM_FTFE_FPROT2_PROT (0xFFU) //!< Bit mask for FTFE_FPROT2_PROT. +#define BS_FTFE_FPROT2_PROT (8U) //!< Bit field size in bits for FTFE_FPROT2_PROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FPROT2_PROT field. +#define BR_FTFE_FPROT2_PROT (HW_FTFE_FPROT2.U) +#endif + +//! @brief Format value for bitfield FTFE_FPROT2_PROT. +#define BF_FTFE_FPROT2_PROT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FPROT2_PROT), uint8_t) & BM_FTFE_FPROT2_PROT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PROT field to a new value. +#define BW_FTFE_FPROT2_PROT(v) (HW_FTFE_FPROT2_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FPROT1 - Program Flash Protection Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FPROT1 - Program Flash Protection Registers (RW) + * + * Reset value: 0x00U + * + * The FPROT registers define which program flash regions are protected from + * program and erase operations. Protected flash regions cannot have their content + * changed; that is, these regions cannot be programmed and cannot be erased by + * any FTFE command. Unprotected regions can be changed by program and erase + * operations. The four FPROT registers allow up to 32 protectable regions of equal + * memory size. Program flash protection register Program flash protection bits + * FPROT0 PROT[31:24] FPROT1 PROT[23:16] FPROT2 PROT[15:8] FPROT3 PROT[7:0] During + * the reset sequence, the FPROT registers are loaded with the contents of the + * program flash protection bytes in the Flash Configuration Field as indicated in + * the following table. Program flash protection register Flash Configuration Field + * offset address FPROT0 0x000B FPROT1 0x000A FPROT2 0x0009 FPROT3 0x0008 To + * change the program flash protection that is loaded during the reset sequence, + * unprotect the sector of program flash memory that contains the Flash + * Configuration Field. Then, reprogram the program flash protection byte. + */ +typedef union _hw_ftfe_fprot1 +{ + uint8_t U; + struct _hw_ftfe_fprot1_bitfields + { + uint8_t PROT : 8; //!< [7:0] Program Flash Region Protect + } B; +} hw_ftfe_fprot1_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FPROT1 register + */ +//@{ +#define HW_FTFE_FPROT1_ADDR (REGS_FTFE_BASE + 0x12U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FPROT1 (*(__IO hw_ftfe_fprot1_t *) HW_FTFE_FPROT1_ADDR) +#define HW_FTFE_FPROT1_RD() (HW_FTFE_FPROT1.U) +#define HW_FTFE_FPROT1_WR(v) (HW_FTFE_FPROT1.U = (v)) +#define HW_FTFE_FPROT1_SET(v) (HW_FTFE_FPROT1_WR(HW_FTFE_FPROT1_RD() | (v))) +#define HW_FTFE_FPROT1_CLR(v) (HW_FTFE_FPROT1_WR(HW_FTFE_FPROT1_RD() & ~(v))) +#define HW_FTFE_FPROT1_TOG(v) (HW_FTFE_FPROT1_WR(HW_FTFE_FPROT1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FPROT1 bitfields + */ + +/*! + * @name Register FTFE_FPROT1, field PROT[7:0] (RW) + * + * Each program flash region can be protected from program and erase operations + * by setting the associated PROT bit. In NVM Normal mode: The protection can + * only be increased, meaning that currently unprotected memory can be protected, + * but currently protected memory cannot be unprotected. Since unprotected regions + * are marked with a 1 and protected regions use a 0, only writes changing 1s to + * 0s are accepted. This 1-to-0 transition check is performed on a bit-by-bit + * basis. Those FPROT bits with 1-to-0 transitions are accepted while all bits with + * 0-to-1 transitions are ignored. In NVM Special mode: All bits of FPROT are + * writable without restriction. Unprotected areas can be protected and protected + * areas can be unprotected. The user must never write to any FPROT register while + * a command is running (CCIF=0). Trying to alter data in any protected area in + * the program flash memory results in a protection violation error and sets the + * FSTAT[FPVIOL] bit. A full block erase of a program flash block is not possible + * if it contains any protected region. + * + * Values: + * - 0 - Program flash region is protected. + * - 1 - Program flash region is not protected + */ +//@{ +#define BP_FTFE_FPROT1_PROT (0U) //!< Bit position for FTFE_FPROT1_PROT. +#define BM_FTFE_FPROT1_PROT (0xFFU) //!< Bit mask for FTFE_FPROT1_PROT. +#define BS_FTFE_FPROT1_PROT (8U) //!< Bit field size in bits for FTFE_FPROT1_PROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FPROT1_PROT field. +#define BR_FTFE_FPROT1_PROT (HW_FTFE_FPROT1.U) +#endif + +//! @brief Format value for bitfield FTFE_FPROT1_PROT. +#define BF_FTFE_FPROT1_PROT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FPROT1_PROT), uint8_t) & BM_FTFE_FPROT1_PROT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PROT field to a new value. +#define BW_FTFE_FPROT1_PROT(v) (HW_FTFE_FPROT1_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FPROT0 - Program Flash Protection Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FPROT0 - Program Flash Protection Registers (RW) + * + * Reset value: 0x00U + * + * The FPROT registers define which program flash regions are protected from + * program and erase operations. Protected flash regions cannot have their content + * changed; that is, these regions cannot be programmed and cannot be erased by + * any FTFE command. Unprotected regions can be changed by program and erase + * operations. The four FPROT registers allow up to 32 protectable regions of equal + * memory size. Program flash protection register Program flash protection bits + * FPROT0 PROT[31:24] FPROT1 PROT[23:16] FPROT2 PROT[15:8] FPROT3 PROT[7:0] During + * the reset sequence, the FPROT registers are loaded with the contents of the + * program flash protection bytes in the Flash Configuration Field as indicated in + * the following table. Program flash protection register Flash Configuration Field + * offset address FPROT0 0x000B FPROT1 0x000A FPROT2 0x0009 FPROT3 0x0008 To + * change the program flash protection that is loaded during the reset sequence, + * unprotect the sector of program flash memory that contains the Flash + * Configuration Field. Then, reprogram the program flash protection byte. + */ +typedef union _hw_ftfe_fprot0 +{ + uint8_t U; + struct _hw_ftfe_fprot0_bitfields + { + uint8_t PROT : 8; //!< [7:0] Program Flash Region Protect + } B; +} hw_ftfe_fprot0_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FPROT0 register + */ +//@{ +#define HW_FTFE_FPROT0_ADDR (REGS_FTFE_BASE + 0x13U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FPROT0 (*(__IO hw_ftfe_fprot0_t *) HW_FTFE_FPROT0_ADDR) +#define HW_FTFE_FPROT0_RD() (HW_FTFE_FPROT0.U) +#define HW_FTFE_FPROT0_WR(v) (HW_FTFE_FPROT0.U = (v)) +#define HW_FTFE_FPROT0_SET(v) (HW_FTFE_FPROT0_WR(HW_FTFE_FPROT0_RD() | (v))) +#define HW_FTFE_FPROT0_CLR(v) (HW_FTFE_FPROT0_WR(HW_FTFE_FPROT0_RD() & ~(v))) +#define HW_FTFE_FPROT0_TOG(v) (HW_FTFE_FPROT0_WR(HW_FTFE_FPROT0_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FPROT0 bitfields + */ + +/*! + * @name Register FTFE_FPROT0, field PROT[7:0] (RW) + * + * Each program flash region can be protected from program and erase operations + * by setting the associated PROT bit. In NVM Normal mode: The protection can + * only be increased, meaning that currently unprotected memory can be protected, + * but currently protected memory cannot be unprotected. Since unprotected regions + * are marked with a 1 and protected regions use a 0, only writes changing 1s to + * 0s are accepted. This 1-to-0 transition check is performed on a bit-by-bit + * basis. Those FPROT bits with 1-to-0 transitions are accepted while all bits with + * 0-to-1 transitions are ignored. In NVM Special mode: All bits of FPROT are + * writable without restriction. Unprotected areas can be protected and protected + * areas can be unprotected. The user must never write to any FPROT register while + * a command is running (CCIF=0). Trying to alter data in any protected area in + * the program flash memory results in a protection violation error and sets the + * FSTAT[FPVIOL] bit. A full block erase of a program flash block is not possible + * if it contains any protected region. + * + * Values: + * - 0 - Program flash region is protected. + * - 1 - Program flash region is not protected + */ +//@{ +#define BP_FTFE_FPROT0_PROT (0U) //!< Bit position for FTFE_FPROT0_PROT. +#define BM_FTFE_FPROT0_PROT (0xFFU) //!< Bit mask for FTFE_FPROT0_PROT. +#define BS_FTFE_FPROT0_PROT (8U) //!< Bit field size in bits for FTFE_FPROT0_PROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FPROT0_PROT field. +#define BR_FTFE_FPROT0_PROT (HW_FTFE_FPROT0.U) +#endif + +//! @brief Format value for bitfield FTFE_FPROT0_PROT. +#define BF_FTFE_FPROT0_PROT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FPROT0_PROT), uint8_t) & BM_FTFE_FPROT0_PROT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PROT field to a new value. +#define BW_FTFE_FPROT0_PROT(v) (HW_FTFE_FPROT0_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FEPROT - EEPROM Protection Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FEPROT - EEPROM Protection Register (RW) + * + * Reset value: 0x00U + * + * For devices with FlexNVM: The FEPROT register defines which EEPROM regions of + * the FlexRAM are protected against program and erase operations. Protected + * EEPROM regions cannot have their content changed by writing to it. Unprotected + * regions can be changed by writing to the FlexRAM. For devices with program flash + * only: This register is reserved and not used. + */ +typedef union _hw_ftfe_feprot +{ + uint8_t U; + struct _hw_ftfe_feprot_bitfields + { + uint8_t EPROT : 8; //!< [7:0] EEPROM Region Protect + } B; +} hw_ftfe_feprot_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FEPROT register + */ +//@{ +#define HW_FTFE_FEPROT_ADDR (REGS_FTFE_BASE + 0x16U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FEPROT (*(__IO hw_ftfe_feprot_t *) HW_FTFE_FEPROT_ADDR) +#define HW_FTFE_FEPROT_RD() (HW_FTFE_FEPROT.U) +#define HW_FTFE_FEPROT_WR(v) (HW_FTFE_FEPROT.U = (v)) +#define HW_FTFE_FEPROT_SET(v) (HW_FTFE_FEPROT_WR(HW_FTFE_FEPROT_RD() | (v))) +#define HW_FTFE_FEPROT_CLR(v) (HW_FTFE_FEPROT_WR(HW_FTFE_FEPROT_RD() & ~(v))) +#define HW_FTFE_FEPROT_TOG(v) (HW_FTFE_FEPROT_WR(HW_FTFE_FEPROT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FEPROT bitfields + */ + +/*! + * @name Register FTFE_FEPROT, field EPROT[7:0] (RW) + * + * For devices with program flash only: Reserved For devices with FlexNVM: + * Individual EEPROM regions can be protected from alteration by setting the + * associated EPROT bit. The EPROT bits are not used when the FlexNVM Partition Code is + * set to data flash only. When the FlexNVM Partition Code is set to data flash and + * EEPROM or EEPROM only, each EPROT bit covers one-eighth of the configured + * EEPROM data (see the EEPROM Data Set Size parameter description). In NVM Normal + * mode: The protection can only be increased. This means that + * currently-unprotected memory can be protected, but currently-protected memory cannot be + * unprotected. Since unprotected regions are marked with a 1 and protected regions use a + * 0, only writes changing 1s to 0s are accepted. This 1-to-0 transition check is + * performed on a bit-by-bit basis. Those FEPROT bits with 1-to-0 transitions + * are accepted while all bits with 0-to-1 transitions are ignored. In NVM Special + * mode: All bits of the FEPROT register are writable without restriction. + * Unprotected areas can be protected and protected areas can be unprotected. Never + * write to the FEPROT register while a command is running (CCIF=0). Reset: During + * the reset sequence, the FEPROT register is loaded with the contents of the + * FlexRAM protection byte in the Flash Configuration Field located in program flash. + * The flash basis for the reset values is signified by X in the register + * diagram. To change the EEPROM protection that will be loaded during the reset + * sequence, the sector of program flash that contains the Flash Configuration Field + * must be unprotected; then the EEPROM protection byte must be erased and + * reprogrammed. Trying to alter data by writing to any protected area in the EEPROM + * results in a protection violation error and sets the FSTAT[FPVIOL] bit. + * + * Values: + * - 0 - For devices with program flash only: Reserved For devices with FlexNVM: + * EEPROM region is protected + * - 1 - For devices with program flash only: Reserved For devices with FlexNVM: + * EEPROM region is not protected + */ +//@{ +#define BP_FTFE_FEPROT_EPROT (0U) //!< Bit position for FTFE_FEPROT_EPROT. +#define BM_FTFE_FEPROT_EPROT (0xFFU) //!< Bit mask for FTFE_FEPROT_EPROT. +#define BS_FTFE_FEPROT_EPROT (8U) //!< Bit field size in bits for FTFE_FEPROT_EPROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FEPROT_EPROT field. +#define BR_FTFE_FEPROT_EPROT (HW_FTFE_FEPROT.U) +#endif + +//! @brief Format value for bitfield FTFE_FEPROT_EPROT. +#define BF_FTFE_FEPROT_EPROT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FEPROT_EPROT), uint8_t) & BM_FTFE_FEPROT_EPROT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EPROT field to a new value. +#define BW_FTFE_FEPROT_EPROT(v) (HW_FTFE_FEPROT_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTFE_FDPROT - Data Flash Protection Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTFE_FDPROT - Data Flash Protection Register (RW) + * + * Reset value: 0x00U + * + * The FDPROT register defines which data flash regions are protected against + * program and erase operations. Protected Flash regions cannot have their content + * changed; that is, these regions cannot be programmed and cannot be erased by + * any FTFE command. Unprotected regions can be changed by both program and erase + * operations. + */ +typedef union _hw_ftfe_fdprot +{ + uint8_t U; + struct _hw_ftfe_fdprot_bitfields + { + uint8_t DPROT : 8; //!< [7:0] Data Flash Region Protect + } B; +} hw_ftfe_fdprot_t; +#endif + +/*! + * @name Constants and macros for entire FTFE_FDPROT register + */ +//@{ +#define HW_FTFE_FDPROT_ADDR (REGS_FTFE_BASE + 0x17U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTFE_FDPROT (*(__IO hw_ftfe_fdprot_t *) HW_FTFE_FDPROT_ADDR) +#define HW_FTFE_FDPROT_RD() (HW_FTFE_FDPROT.U) +#define HW_FTFE_FDPROT_WR(v) (HW_FTFE_FDPROT.U = (v)) +#define HW_FTFE_FDPROT_SET(v) (HW_FTFE_FDPROT_WR(HW_FTFE_FDPROT_RD() | (v))) +#define HW_FTFE_FDPROT_CLR(v) (HW_FTFE_FDPROT_WR(HW_FTFE_FDPROT_RD() & ~(v))) +#define HW_FTFE_FDPROT_TOG(v) (HW_FTFE_FDPROT_WR(HW_FTFE_FDPROT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTFE_FDPROT bitfields + */ + +/*! + * @name Register FTFE_FDPROT, field DPROT[7:0] (RW) + * + * Individual data flash regions can be protected from program and erase + * operations by setting the associated DPROT bit. Each DPROT bit protects one-eighth of + * the partitioned data flash memory space. The granularity of data flash + * protection cannot be less than the data flash sector size. If an unused DPROT bit is + * set, the Erase all Blocks command does not execute and sets the FSTAT[FPVIOL] + * bit. In NVM Normal mode: The protection can only be increased, meaning that + * currently unprotected memory can be protected but currently protected memory + * cannot be unprotected. Since unprotected regions are marked with a 1 and + * protected regions use a 0, only writes changing 1s to 0s are accepted. This 1-to-0 + * transition check is performed on a bit-by-bit basis. Those FDPROT bits with + * 1-to-0 transitions are accepted while all bits with 0-to-1 transitions are + * ignored. In NVM Special mode: All bits of the FDPROT register are writable without + * restriction. Unprotected areas can be protected and protected areas can be + * unprotected. The user must never write to the FDPROT register while a command is + * running (CCIF=0). Reset: During the reset sequence, the FDPROT register is + * loaded with the contents of the data flash protection byte in the Flash + * Configuration Field located in program flash memory. The flash basis for the reset values + * is signified by X in the register diagram. To change the data flash + * protection that will be loaded during the reset sequence, unprotect the sector of + * program flash that contains the Flash Configuration Field. Then, erase and + * reprogram the data flash protection byte. Trying to alter data with the program and + * erase commands in any protected area in the data flash memory results in a + * protection violation error and sets the FSTAT[FPVIOL] bit. A block erase of any + * data flash memory block (see the Erase Flash Block command description) is not + * possible if the data flash block contains any protected region or if the FlexNVM + * memory has been partitioned for EEPROM. + * + * Values: + * - 0 - Data Flash region is protected + * - 1 - Data Flash region is not protected + */ +//@{ +#define BP_FTFE_FDPROT_DPROT (0U) //!< Bit position for FTFE_FDPROT_DPROT. +#define BM_FTFE_FDPROT_DPROT (0xFFU) //!< Bit mask for FTFE_FDPROT_DPROT. +#define BS_FTFE_FDPROT_DPROT (8U) //!< Bit field size in bits for FTFE_FDPROT_DPROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTFE_FDPROT_DPROT field. +#define BR_FTFE_FDPROT_DPROT (HW_FTFE_FDPROT.U) +#endif + +//! @brief Format value for bitfield FTFE_FDPROT_DPROT. +#define BF_FTFE_FDPROT_DPROT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_FTFE_FDPROT_DPROT), uint8_t) & BM_FTFE_FDPROT_DPROT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DPROT field to a new value. +#define BW_FTFE_FDPROT_DPROT(v) (HW_FTFE_FDPROT_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_ftfe_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All FTFE module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_ftfe +{ + __IO hw_ftfe_fstat_t FSTAT; //!< [0x0] Flash Status Register + __IO hw_ftfe_fcnfg_t FCNFG; //!< [0x1] Flash Configuration Register + __I hw_ftfe_fsec_t FSEC; //!< [0x2] Flash Security Register + __I hw_ftfe_fopt_t FOPT; //!< [0x3] Flash Option Register + __IO hw_ftfe_fccob3_t FCCOB3; //!< [0x4] Flash Common Command Object Registers + __IO hw_ftfe_fccob2_t FCCOB2; //!< [0x5] Flash Common Command Object Registers + __IO hw_ftfe_fccob1_t FCCOB1; //!< [0x6] Flash Common Command Object Registers + __IO hw_ftfe_fccob0_t FCCOB0; //!< [0x7] Flash Common Command Object Registers + __IO hw_ftfe_fccob7_t FCCOB7; //!< [0x8] Flash Common Command Object Registers + __IO hw_ftfe_fccob6_t FCCOB6; //!< [0x9] Flash Common Command Object Registers + __IO hw_ftfe_fccob5_t FCCOB5; //!< [0xA] Flash Common Command Object Registers + __IO hw_ftfe_fccob4_t FCCOB4; //!< [0xB] Flash Common Command Object Registers + __IO hw_ftfe_fccobb_t FCCOBB; //!< [0xC] Flash Common Command Object Registers + __IO hw_ftfe_fccoba_t FCCOBA; //!< [0xD] Flash Common Command Object Registers + __IO hw_ftfe_fccob9_t FCCOB9; //!< [0xE] Flash Common Command Object Registers + __IO hw_ftfe_fccob8_t FCCOB8; //!< [0xF] Flash Common Command Object Registers + __IO hw_ftfe_fprot3_t FPROT3; //!< [0x10] Program Flash Protection Registers + __IO hw_ftfe_fprot2_t FPROT2; //!< [0x11] Program Flash Protection Registers + __IO hw_ftfe_fprot1_t FPROT1; //!< [0x12] Program Flash Protection Registers + __IO hw_ftfe_fprot0_t FPROT0; //!< [0x13] Program Flash Protection Registers + uint8_t _reserved0[2]; + __IO hw_ftfe_feprot_t FEPROT; //!< [0x16] EEPROM Protection Register + __IO hw_ftfe_fdprot_t FDPROT; //!< [0x17] Data Flash Protection Register +} hw_ftfe_t; +#pragma pack() + +//! @brief Macro to access all FTFE registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_FTFE</code>. +#define HW_FTFE (*(hw_ftfe_t *) REGS_FTFE_BASE) +#endif + +#endif // __HW_FTFE_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_ftm.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,6616 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_FTM_REGISTERS_H__ +#define __HW_FTM_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 FTM + * + * FlexTimer Module + * + * Registers defined in this header file: + * - HW_FTM_SC - Status And Control + * - HW_FTM_CNT - Counter + * - HW_FTM_MOD - Modulo + * - HW_FTM_CnSC - Channel (n) Status And Control + * - HW_FTM_CnV - Channel (n) Value + * - HW_FTM_CNTIN - Counter Initial Value + * - HW_FTM_STATUS - Capture And Compare Status + * - HW_FTM_MODE - Features Mode Selection + * - HW_FTM_SYNC - Synchronization + * - HW_FTM_OUTINIT - Initial State For Channels Output + * - HW_FTM_OUTMASK - Output Mask + * - HW_FTM_COMBINE - Function For Linked Channels + * - HW_FTM_DEADTIME - Deadtime Insertion Control + * - HW_FTM_EXTTRIG - FTM External Trigger + * - HW_FTM_POL - Channels Polarity + * - HW_FTM_FMS - Fault Mode Status + * - HW_FTM_FILTER - Input Capture Filter Control + * - HW_FTM_FLTCTRL - Fault Control + * - HW_FTM_QDCTRL - Quadrature Decoder Control And Status + * - HW_FTM_CONF - Configuration + * - HW_FTM_FLTPOL - FTM Fault Input Polarity + * - HW_FTM_SYNCONF - Synchronization Configuration + * - HW_FTM_INVCTRL - FTM Inverting Control + * - HW_FTM_SWOCTRL - FTM Software Output Control + * - HW_FTM_PWMLOAD - FTM PWM Load + * + * - hw_ftm_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_FTM_BASE +#define HW_FTM_INSTANCE_COUNT (4U) //!< Number of instances of the FTM module. +#define HW_FTM0 (0U) //!< Instance number for FTM0. +#define HW_FTM1 (1U) //!< Instance number for FTM1. +#define HW_FTM2 (2U) //!< Instance number for FTM2. +#define HW_FTM3 (3U) //!< Instance number for FTM3. +#define REGS_FTM0_BASE (0x40038000U) //!< Base address for FTM0. +#define REGS_FTM1_BASE (0x40039000U) //!< Base address for FTM1. +#define REGS_FTM2_BASE (0x4003A000U) //!< Base address for FTM2. +#define REGS_FTM3_BASE (0x400B9000U) //!< Base address for FTM3. + +//! @brief Table of base addresses for FTM instances. +static const uint32_t __g_regs_FTM_base_addresses[] = { + REGS_FTM0_BASE, + REGS_FTM1_BASE, + REGS_FTM2_BASE, + REGS_FTM3_BASE, + }; + +//! @brief Get the base address of FTM by instance number. +//! @param x FTM instance number, from 0 through 3. +#define REGS_FTM_BASE(x) (__g_regs_FTM_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of FTM. +#define REGS_FTM_INSTANCE(b) ((b) == REGS_FTM0_BASE ? HW_FTM0 : (b) == REGS_FTM1_BASE ? HW_FTM1 : (b) == REGS_FTM2_BASE ? HW_FTM2 : (b) == REGS_FTM3_BASE ? HW_FTM3 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_SC - Status And Control +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_SC - Status And Control (RW) + * + * Reset value: 0x00000000U + * + * SC contains the overflow status flag and control bits used to configure the + * interrupt enable, FTM configuration, clock source, and prescaler factor. These + * controls relate to all channels within this module. + */ +typedef union _hw_ftm_sc +{ + uint32_t U; + struct _hw_ftm_sc_bitfields + { + uint32_t PS : 3; //!< [2:0] Prescale Factor Selection + uint32_t CLKS : 2; //!< [4:3] Clock Source Selection + uint32_t CPWMS : 1; //!< [5] Center-Aligned PWM Select + uint32_t TOIE : 1; //!< [6] Timer Overflow Interrupt Enable + uint32_t TOF : 1; //!< [7] Timer Overflow Flag + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_sc_t; +#endif + +/*! + * @name Constants and macros for entire FTM_SC register + */ +//@{ +#define HW_FTM_SC_ADDR(x) (REGS_FTM_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_SC(x) (*(__IO hw_ftm_sc_t *) HW_FTM_SC_ADDR(x)) +#define HW_FTM_SC_RD(x) (HW_FTM_SC(x).U) +#define HW_FTM_SC_WR(x, v) (HW_FTM_SC(x).U = (v)) +#define HW_FTM_SC_SET(x, v) (HW_FTM_SC_WR(x, HW_FTM_SC_RD(x) | (v))) +#define HW_FTM_SC_CLR(x, v) (HW_FTM_SC_WR(x, HW_FTM_SC_RD(x) & ~(v))) +#define HW_FTM_SC_TOG(x, v) (HW_FTM_SC_WR(x, HW_FTM_SC_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_SC bitfields + */ + +/*! + * @name Register FTM_SC, field PS[2:0] (RW) + * + * Selects one of 8 division factors for the clock source selected by CLKS. The + * new prescaler factor affects the clock source on the next system clock cycle + * after the new value is updated into the register bits. This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 000 - Divide by 1 + * - 001 - Divide by 2 + * - 010 - Divide by 4 + * - 011 - Divide by 8 + * - 100 - Divide by 16 + * - 101 - Divide by 32 + * - 110 - Divide by 64 + * - 111 - Divide by 128 + */ +//@{ +#define BP_FTM_SC_PS (0U) //!< Bit position for FTM_SC_PS. +#define BM_FTM_SC_PS (0x00000007U) //!< Bit mask for FTM_SC_PS. +#define BS_FTM_SC_PS (3U) //!< Bit field size in bits for FTM_SC_PS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SC_PS field. +#define BR_FTM_SC_PS(x) (HW_FTM_SC(x).B.PS) +#endif + +//! @brief Format value for bitfield FTM_SC_PS. +#define BF_FTM_SC_PS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SC_PS), uint32_t) & BM_FTM_SC_PS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PS field to a new value. +#define BW_FTM_SC_PS(x, v) (HW_FTM_SC_WR(x, (HW_FTM_SC_RD(x) & ~BM_FTM_SC_PS) | BF_FTM_SC_PS(v))) +#endif +//@} + +/*! + * @name Register FTM_SC, field CLKS[4:3] (RW) + * + * Selects one of the three FTM counter clock sources. This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 00 - No clock selected. This in effect disables the FTM counter. + * - 01 - System clock + * - 10 - Fixed frequency clock + * - 11 - External clock + */ +//@{ +#define BP_FTM_SC_CLKS (3U) //!< Bit position for FTM_SC_CLKS. +#define BM_FTM_SC_CLKS (0x00000018U) //!< Bit mask for FTM_SC_CLKS. +#define BS_FTM_SC_CLKS (2U) //!< Bit field size in bits for FTM_SC_CLKS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SC_CLKS field. +#define BR_FTM_SC_CLKS(x) (HW_FTM_SC(x).B.CLKS) +#endif + +//! @brief Format value for bitfield FTM_SC_CLKS. +#define BF_FTM_SC_CLKS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SC_CLKS), uint32_t) & BM_FTM_SC_CLKS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLKS field to a new value. +#define BW_FTM_SC_CLKS(x, v) (HW_FTM_SC_WR(x, (HW_FTM_SC_RD(x) & ~BM_FTM_SC_CLKS) | BF_FTM_SC_CLKS(v))) +#endif +//@} + +/*! + * @name Register FTM_SC, field CPWMS[5] (RW) + * + * Selects CPWM mode. This mode configures the FTM to operate in Up-Down + * Counting mode. This field is write protected. It can be written only when MODE[WPDIS] + * = 1. + * + * Values: + * - 0 - FTM counter operates in Up Counting mode. + * - 1 - FTM counter operates in Up-Down Counting mode. + */ +//@{ +#define BP_FTM_SC_CPWMS (5U) //!< Bit position for FTM_SC_CPWMS. +#define BM_FTM_SC_CPWMS (0x00000020U) //!< Bit mask for FTM_SC_CPWMS. +#define BS_FTM_SC_CPWMS (1U) //!< Bit field size in bits for FTM_SC_CPWMS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SC_CPWMS field. +#define BR_FTM_SC_CPWMS(x) (BITBAND_ACCESS32(HW_FTM_SC_ADDR(x), BP_FTM_SC_CPWMS)) +#endif + +//! @brief Format value for bitfield FTM_SC_CPWMS. +#define BF_FTM_SC_CPWMS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SC_CPWMS), uint32_t) & BM_FTM_SC_CPWMS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CPWMS field to a new value. +#define BW_FTM_SC_CPWMS(x, v) (BITBAND_ACCESS32(HW_FTM_SC_ADDR(x), BP_FTM_SC_CPWMS) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SC, field TOIE[6] (RW) + * + * Enables FTM overflow interrupts. + * + * Values: + * - 0 - Disable TOF interrupts. Use software polling. + * - 1 - Enable TOF interrupts. An interrupt is generated when TOF equals one. + */ +//@{ +#define BP_FTM_SC_TOIE (6U) //!< Bit position for FTM_SC_TOIE. +#define BM_FTM_SC_TOIE (0x00000040U) //!< Bit mask for FTM_SC_TOIE. +#define BS_FTM_SC_TOIE (1U) //!< Bit field size in bits for FTM_SC_TOIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SC_TOIE field. +#define BR_FTM_SC_TOIE(x) (BITBAND_ACCESS32(HW_FTM_SC_ADDR(x), BP_FTM_SC_TOIE)) +#endif + +//! @brief Format value for bitfield FTM_SC_TOIE. +#define BF_FTM_SC_TOIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SC_TOIE), uint32_t) & BM_FTM_SC_TOIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOIE field to a new value. +#define BW_FTM_SC_TOIE(x, v) (BITBAND_ACCESS32(HW_FTM_SC_ADDR(x), BP_FTM_SC_TOIE) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SC, field TOF[7] (ROWZ) + * + * Set by hardware when the FTM counter passes the value in the MOD register. + * The TOF bit is cleared by reading the SC register while TOF is set and then + * writing a 0 to TOF bit. Writing a 1 to TOF has no effect. If another FTM overflow + * occurs between the read and write operations, the write operation has no + * effect; therefore, TOF remains set indicating an overflow has occurred. In this + * case, a TOF interrupt request is not lost due to the clearing sequence for a + * previous TOF. + * + * Values: + * - 0 - FTM counter has not overflowed. + * - 1 - FTM counter has overflowed. + */ +//@{ +#define BP_FTM_SC_TOF (7U) //!< Bit position for FTM_SC_TOF. +#define BM_FTM_SC_TOF (0x00000080U) //!< Bit mask for FTM_SC_TOF. +#define BS_FTM_SC_TOF (1U) //!< Bit field size in bits for FTM_SC_TOF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SC_TOF field. +#define BR_FTM_SC_TOF(x) (BITBAND_ACCESS32(HW_FTM_SC_ADDR(x), BP_FTM_SC_TOF)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_CNT - Counter +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_CNT - Counter (RW) + * + * Reset value: 0x00000000U + * + * The CNT register contains the FTM counter value. Reset clears the CNT + * register. Writing any value to COUNT updates the counter with its initial value, + * CNTIN. When BDM is active, the FTM counter is frozen. This is the value that you + * may read. + */ +typedef union _hw_ftm_cnt +{ + uint32_t U; + struct _hw_ftm_cnt_bitfields + { + uint32_t COUNT : 16; //!< [15:0] Counter Value + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_ftm_cnt_t; +#endif + +/*! + * @name Constants and macros for entire FTM_CNT register + */ +//@{ +#define HW_FTM_CNT_ADDR(x) (REGS_FTM_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_CNT(x) (*(__IO hw_ftm_cnt_t *) HW_FTM_CNT_ADDR(x)) +#define HW_FTM_CNT_RD(x) (HW_FTM_CNT(x).U) +#define HW_FTM_CNT_WR(x, v) (HW_FTM_CNT(x).U = (v)) +#define HW_FTM_CNT_SET(x, v) (HW_FTM_CNT_WR(x, HW_FTM_CNT_RD(x) | (v))) +#define HW_FTM_CNT_CLR(x, v) (HW_FTM_CNT_WR(x, HW_FTM_CNT_RD(x) & ~(v))) +#define HW_FTM_CNT_TOG(x, v) (HW_FTM_CNT_WR(x, HW_FTM_CNT_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_CNT bitfields + */ + +/*! + * @name Register FTM_CNT, field COUNT[15:0] (RW) + */ +//@{ +#define BP_FTM_CNT_COUNT (0U) //!< Bit position for FTM_CNT_COUNT. +#define BM_FTM_CNT_COUNT (0x0000FFFFU) //!< Bit mask for FTM_CNT_COUNT. +#define BS_FTM_CNT_COUNT (16U) //!< Bit field size in bits for FTM_CNT_COUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CNT_COUNT field. +#define BR_FTM_CNT_COUNT(x) (HW_FTM_CNT(x).B.COUNT) +#endif + +//! @brief Format value for bitfield FTM_CNT_COUNT. +#define BF_FTM_CNT_COUNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CNT_COUNT), uint32_t) & BM_FTM_CNT_COUNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COUNT field to a new value. +#define BW_FTM_CNT_COUNT(x, v) (HW_FTM_CNT_WR(x, (HW_FTM_CNT_RD(x) & ~BM_FTM_CNT_COUNT) | BF_FTM_CNT_COUNT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_MOD - Modulo +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_MOD - Modulo (RW) + * + * Reset value: 0x00000000U + * + * The Modulo register contains the modulo value for the FTM counter. After the + * FTM counter reaches the modulo value, the overflow flag (TOF) becomes set at + * the next clock, and the next value of FTM counter depends on the selected + * counting method; see Counter. Writing to the MOD register latches the value into a + * buffer. The MOD register is updated with the value of its write buffer + * according to Registers updated from write buffers. If FTMEN = 0, this write coherency + * mechanism may be manually reset by writing to the SC register whether BDM is + * active or not. Initialize the FTM counter, by writing to CNT, before writing + * to the MOD register to avoid confusion about when the first counter overflow + * will occur. + */ +typedef union _hw_ftm_mod +{ + uint32_t U; + struct _hw_ftm_mod_bitfields + { + uint32_t MOD : 16; //!< [15:0] + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_ftm_mod_t; +#endif + +/*! + * @name Constants and macros for entire FTM_MOD register + */ +//@{ +#define HW_FTM_MOD_ADDR(x) (REGS_FTM_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_MOD(x) (*(__IO hw_ftm_mod_t *) HW_FTM_MOD_ADDR(x)) +#define HW_FTM_MOD_RD(x) (HW_FTM_MOD(x).U) +#define HW_FTM_MOD_WR(x, v) (HW_FTM_MOD(x).U = (v)) +#define HW_FTM_MOD_SET(x, v) (HW_FTM_MOD_WR(x, HW_FTM_MOD_RD(x) | (v))) +#define HW_FTM_MOD_CLR(x, v) (HW_FTM_MOD_WR(x, HW_FTM_MOD_RD(x) & ~(v))) +#define HW_FTM_MOD_TOG(x, v) (HW_FTM_MOD_WR(x, HW_FTM_MOD_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_MOD bitfields + */ + +/*! + * @name Register FTM_MOD, field MOD[15:0] (RW) + * + * Modulo Value + */ +//@{ +#define BP_FTM_MOD_MOD (0U) //!< Bit position for FTM_MOD_MOD. +#define BM_FTM_MOD_MOD (0x0000FFFFU) //!< Bit mask for FTM_MOD_MOD. +#define BS_FTM_MOD_MOD (16U) //!< Bit field size in bits for FTM_MOD_MOD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_MOD_MOD field. +#define BR_FTM_MOD_MOD(x) (HW_FTM_MOD(x).B.MOD) +#endif + +//! @brief Format value for bitfield FTM_MOD_MOD. +#define BF_FTM_MOD_MOD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_MOD_MOD), uint32_t) & BM_FTM_MOD_MOD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MOD field to a new value. +#define BW_FTM_MOD_MOD(x, v) (HW_FTM_MOD_WR(x, (HW_FTM_MOD_RD(x) & ~BM_FTM_MOD_MOD) | BF_FTM_MOD_MOD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_CnSC - Channel (n) Status And Control +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_CnSC - Channel (n) Status And Control (RW) + * + * Reset value: 0x00000000U + * + * CnSC contains the channel-interrupt-status flag and control bits used to + * configure the interrupt enable, channel configuration, and pin function. Mode, + * edge, and level selection DECAPEN COMBINE CPWMS MSnB:MSnA ELSnB:ELSnA Mode + * Configuration X X X XX 0 Pin not used for FTM-revert the channel pin to general + * purpose I/O or other peripheral control 0 0 0 0 1 Input Capture Capture on Rising + * Edge Only 10 Capture on Falling Edge Only 11 Capture on Rising or Falling Edge + * 1 1 Output Compare Toggle Output on match 10 Clear Output on match 11 Set + * Output on match 1X 10 Edge-Aligned PWM High-true pulses (clear Output on match) + * X1 Low-true pulses (set Output on match) 1 XX 10 Center-Aligned PWM High-true + * pulses (clear Output on match-up) X1 Low-true pulses (set Output on match-up) 1 + * 0 XX 10 Combine PWM High-true pulses (set on channel (n) match, and clear on + * channel (n+1) match) X1 Low-true pulses (clear on channel (n) match, and set + * on channel (n+1) match) 1 0 0 X0 See the following table (#ModeSel2Table). Dual + * Edge Capture One-Shot Capture mode X1 Continuous Capture mode Dual Edge + * Capture mode - edge polarity selection ELSnB ELSnA Channel Port Enable Detected + * Edges 0 0 Disabled No edge 0 1 Enabled Rising edge 1 0 Enabled Falling edge 1 1 + * Enabled Rising and falling edges + */ +typedef union _hw_ftm_cnsc +{ + uint32_t U; + struct _hw_ftm_cnsc_bitfields + { + uint32_t DMAb : 1; //!< [0] DMA Enable + uint32_t RESERVED0 : 1; //!< [1] + uint32_t ELSA : 1; //!< [2] Edge or Level Select + uint32_t ELSB : 1; //!< [3] Edge or Level Select + uint32_t MSA : 1; //!< [4] Channel Mode Select + uint32_t MSB : 1; //!< [5] Channel Mode Select + uint32_t CHIE : 1; //!< [6] Channel Interrupt Enable + uint32_t CHF : 1; //!< [7] Channel Flag + uint32_t RESERVED1 : 24; //!< [31:8] + } B; +} hw_ftm_cnsc_t; +#endif + +/*! + * @name Constants and macros for entire FTM_CnSC register + */ +//@{ +#define HW_FTM_CnSC_COUNT (8U) + +#define HW_FTM_CnSC_ADDR(x, n) (REGS_FTM_BASE(x) + 0xCU + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_CnSC(x, n) (*(__IO hw_ftm_cnsc_t *) HW_FTM_CnSC_ADDR(x, n)) +#define HW_FTM_CnSC_RD(x, n) (HW_FTM_CnSC(x, n).U) +#define HW_FTM_CnSC_WR(x, n, v) (HW_FTM_CnSC(x, n).U = (v)) +#define HW_FTM_CnSC_SET(x, n, v) (HW_FTM_CnSC_WR(x, n, HW_FTM_CnSC_RD(x, n) | (v))) +#define HW_FTM_CnSC_CLR(x, n, v) (HW_FTM_CnSC_WR(x, n, HW_FTM_CnSC_RD(x, n) & ~(v))) +#define HW_FTM_CnSC_TOG(x, n, v) (HW_FTM_CnSC_WR(x, n, HW_FTM_CnSC_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_CnSC bitfields + */ + +/*! + * @name Register FTM_CnSC, field DMA[0] (RW) + * + * Enables DMA transfers for the channel. + * + * Values: + * - 0 - Disable DMA transfers. + * - 1 - Enable DMA transfers. + */ +//@{ +#define BP_FTM_CnSC_DMA (0U) //!< Bit position for FTM_CnSC_DMA. +#define BM_FTM_CnSC_DMA (0x00000001U) //!< Bit mask for FTM_CnSC_DMA. +#define BS_FTM_CnSC_DMA (1U) //!< Bit field size in bits for FTM_CnSC_DMA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CnSC_DMA field. +#define BR_FTM_CnSC_DMA(x, n) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_DMA)) +#endif + +//! @brief Format value for bitfield FTM_CnSC_DMA. +#define BF_FTM_CnSC_DMA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CnSC_DMA), uint32_t) & BM_FTM_CnSC_DMA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMA field to a new value. +#define BW_FTM_CnSC_DMA(x, n, v) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_DMA) = (v)) +#endif +//@} + +/*! + * @name Register FTM_CnSC, field ELSA[2] (RW) + * + * The functionality of ELSB and ELSA depends on the channel mode. See + * #ModeSel1Table. This field is write protected. It can be written only when MODE[WPDIS] + * = 1. + */ +//@{ +#define BP_FTM_CnSC_ELSA (2U) //!< Bit position for FTM_CnSC_ELSA. +#define BM_FTM_CnSC_ELSA (0x00000004U) //!< Bit mask for FTM_CnSC_ELSA. +#define BS_FTM_CnSC_ELSA (1U) //!< Bit field size in bits for FTM_CnSC_ELSA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CnSC_ELSA field. +#define BR_FTM_CnSC_ELSA(x, n) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_ELSA)) +#endif + +//! @brief Format value for bitfield FTM_CnSC_ELSA. +#define BF_FTM_CnSC_ELSA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CnSC_ELSA), uint32_t) & BM_FTM_CnSC_ELSA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ELSA field to a new value. +#define BW_FTM_CnSC_ELSA(x, n, v) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_ELSA) = (v)) +#endif +//@} + +/*! + * @name Register FTM_CnSC, field ELSB[3] (RW) + * + * The functionality of ELSB and ELSA depends on the channel mode. See + * #ModeSel1Table. This field is write protected. It can be written only when MODE[WPDIS] + * = 1. + */ +//@{ +#define BP_FTM_CnSC_ELSB (3U) //!< Bit position for FTM_CnSC_ELSB. +#define BM_FTM_CnSC_ELSB (0x00000008U) //!< Bit mask for FTM_CnSC_ELSB. +#define BS_FTM_CnSC_ELSB (1U) //!< Bit field size in bits for FTM_CnSC_ELSB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CnSC_ELSB field. +#define BR_FTM_CnSC_ELSB(x, n) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_ELSB)) +#endif + +//! @brief Format value for bitfield FTM_CnSC_ELSB. +#define BF_FTM_CnSC_ELSB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CnSC_ELSB), uint32_t) & BM_FTM_CnSC_ELSB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ELSB field to a new value. +#define BW_FTM_CnSC_ELSB(x, n, v) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_ELSB) = (v)) +#endif +//@} + +/*! + * @name Register FTM_CnSC, field MSA[4] (RW) + * + * Used for further selections in the channel logic. Its functionality is + * dependent on the channel mode. See #ModeSel1Table. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + */ +//@{ +#define BP_FTM_CnSC_MSA (4U) //!< Bit position for FTM_CnSC_MSA. +#define BM_FTM_CnSC_MSA (0x00000010U) //!< Bit mask for FTM_CnSC_MSA. +#define BS_FTM_CnSC_MSA (1U) //!< Bit field size in bits for FTM_CnSC_MSA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CnSC_MSA field. +#define BR_FTM_CnSC_MSA(x, n) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_MSA)) +#endif + +//! @brief Format value for bitfield FTM_CnSC_MSA. +#define BF_FTM_CnSC_MSA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CnSC_MSA), uint32_t) & BM_FTM_CnSC_MSA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MSA field to a new value. +#define BW_FTM_CnSC_MSA(x, n, v) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_MSA) = (v)) +#endif +//@} + +/*! + * @name Register FTM_CnSC, field MSB[5] (RW) + * + * Used for further selections in the channel logic. Its functionality is + * dependent on the channel mode. See #ModeSel1Table. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + */ +//@{ +#define BP_FTM_CnSC_MSB (5U) //!< Bit position for FTM_CnSC_MSB. +#define BM_FTM_CnSC_MSB (0x00000020U) //!< Bit mask for FTM_CnSC_MSB. +#define BS_FTM_CnSC_MSB (1U) //!< Bit field size in bits for FTM_CnSC_MSB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CnSC_MSB field. +#define BR_FTM_CnSC_MSB(x, n) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_MSB)) +#endif + +//! @brief Format value for bitfield FTM_CnSC_MSB. +#define BF_FTM_CnSC_MSB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CnSC_MSB), uint32_t) & BM_FTM_CnSC_MSB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MSB field to a new value. +#define BW_FTM_CnSC_MSB(x, n, v) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_MSB) = (v)) +#endif +//@} + +/*! + * @name Register FTM_CnSC, field CHIE[6] (RW) + * + * Enables channel interrupts. + * + * Values: + * - 0 - Disable channel interrupts. Use software polling. + * - 1 - Enable channel interrupts. + */ +//@{ +#define BP_FTM_CnSC_CHIE (6U) //!< Bit position for FTM_CnSC_CHIE. +#define BM_FTM_CnSC_CHIE (0x00000040U) //!< Bit mask for FTM_CnSC_CHIE. +#define BS_FTM_CnSC_CHIE (1U) //!< Bit field size in bits for FTM_CnSC_CHIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CnSC_CHIE field. +#define BR_FTM_CnSC_CHIE(x, n) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_CHIE)) +#endif + +//! @brief Format value for bitfield FTM_CnSC_CHIE. +#define BF_FTM_CnSC_CHIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CnSC_CHIE), uint32_t) & BM_FTM_CnSC_CHIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CHIE field to a new value. +#define BW_FTM_CnSC_CHIE(x, n, v) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_CHIE) = (v)) +#endif +//@} + +/*! + * @name Register FTM_CnSC, field CHF[7] (ROWZ) + * + * Set by hardware when an event occurs on the channel. CHF is cleared by + * reading the CSC register while CHnF is set and then writing a 0 to the CHF bit. + * Writing a 1 to CHF has no effect. If another event occurs between the read and + * write operations, the write operation has no effect; therefore, CHF remains set + * indicating an event has occurred. In this case a CHF interrupt request is not + * lost due to the clearing sequence for a previous CHF. + * + * Values: + * - 0 - No channel event has occurred. + * - 1 - A channel event has occurred. + */ +//@{ +#define BP_FTM_CnSC_CHF (7U) //!< Bit position for FTM_CnSC_CHF. +#define BM_FTM_CnSC_CHF (0x00000080U) //!< Bit mask for FTM_CnSC_CHF. +#define BS_FTM_CnSC_CHF (1U) //!< Bit field size in bits for FTM_CnSC_CHF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CnSC_CHF field. +#define BR_FTM_CnSC_CHF(x, n) (BITBAND_ACCESS32(HW_FTM_CnSC_ADDR(x, n), BP_FTM_CnSC_CHF)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_FTM_CnV - Channel (n) Value +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_CnV - Channel (n) Value (RW) + * + * Reset value: 0x00000000U + * + * These registers contain the captured FTM counter value for the input modes or + * the match value for the output modes. In Input Capture, Capture Test, and + * Dual Edge Capture modes, any write to a CnV register is ignored. In output modes, + * writing to a CnV register latches the value into a buffer. A CnV register is + * updated with the value of its write buffer according to Registers updated from + * write buffers. If FTMEN = 0, this write coherency mechanism may be manually + * reset by writing to the CnSC register whether BDM mode is active or not. + */ +typedef union _hw_ftm_cnv +{ + uint32_t U; + struct _hw_ftm_cnv_bitfields + { + uint32_t VAL : 16; //!< [15:0] Channel Value + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_ftm_cnv_t; +#endif + +/*! + * @name Constants and macros for entire FTM_CnV register + */ +//@{ +#define HW_FTM_CnV_COUNT (8U) + +#define HW_FTM_CnV_ADDR(x, n) (REGS_FTM_BASE(x) + 0x10U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_CnV(x, n) (*(__IO hw_ftm_cnv_t *) HW_FTM_CnV_ADDR(x, n)) +#define HW_FTM_CnV_RD(x, n) (HW_FTM_CnV(x, n).U) +#define HW_FTM_CnV_WR(x, n, v) (HW_FTM_CnV(x, n).U = (v)) +#define HW_FTM_CnV_SET(x, n, v) (HW_FTM_CnV_WR(x, n, HW_FTM_CnV_RD(x, n) | (v))) +#define HW_FTM_CnV_CLR(x, n, v) (HW_FTM_CnV_WR(x, n, HW_FTM_CnV_RD(x, n) & ~(v))) +#define HW_FTM_CnV_TOG(x, n, v) (HW_FTM_CnV_WR(x, n, HW_FTM_CnV_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_CnV bitfields + */ + +/*! + * @name Register FTM_CnV, field VAL[15:0] (RW) + * + * Captured FTM counter value of the input modes or the match value for the + * output modes + */ +//@{ +#define BP_FTM_CnV_VAL (0U) //!< Bit position for FTM_CnV_VAL. +#define BM_FTM_CnV_VAL (0x0000FFFFU) //!< Bit mask for FTM_CnV_VAL. +#define BS_FTM_CnV_VAL (16U) //!< Bit field size in bits for FTM_CnV_VAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CnV_VAL field. +#define BR_FTM_CnV_VAL(x, n) (HW_FTM_CnV(x, n).B.VAL) +#endif + +//! @brief Format value for bitfield FTM_CnV_VAL. +#define BF_FTM_CnV_VAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CnV_VAL), uint32_t) & BM_FTM_CnV_VAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the VAL field to a new value. +#define BW_FTM_CnV_VAL(x, n, v) (HW_FTM_CnV_WR(x, n, (HW_FTM_CnV_RD(x, n) & ~BM_FTM_CnV_VAL) | BF_FTM_CnV_VAL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_CNTIN - Counter Initial Value +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_CNTIN - Counter Initial Value (RW) + * + * Reset value: 0x00000000U + * + * The Counter Initial Value register contains the initial value for the FTM + * counter. Writing to the CNTIN register latches the value into a buffer. The CNTIN + * register is updated with the value of its write buffer according to Registers + * updated from write buffers. When the FTM clock is initially selected, by + * writing a non-zero value to the CLKS bits, the FTM counter starts with the value + * 0x0000. To avoid this behavior, before the first write to select the FTM clock, + * write the new value to the the CNTIN register and then initialize the FTM + * counter by writing any value to the CNT register. + */ +typedef union _hw_ftm_cntin +{ + uint32_t U; + struct _hw_ftm_cntin_bitfields + { + uint32_t INIT : 16; //!< [15:0] + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_ftm_cntin_t; +#endif + +/*! + * @name Constants and macros for entire FTM_CNTIN register + */ +//@{ +#define HW_FTM_CNTIN_ADDR(x) (REGS_FTM_BASE(x) + 0x4CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_CNTIN(x) (*(__IO hw_ftm_cntin_t *) HW_FTM_CNTIN_ADDR(x)) +#define HW_FTM_CNTIN_RD(x) (HW_FTM_CNTIN(x).U) +#define HW_FTM_CNTIN_WR(x, v) (HW_FTM_CNTIN(x).U = (v)) +#define HW_FTM_CNTIN_SET(x, v) (HW_FTM_CNTIN_WR(x, HW_FTM_CNTIN_RD(x) | (v))) +#define HW_FTM_CNTIN_CLR(x, v) (HW_FTM_CNTIN_WR(x, HW_FTM_CNTIN_RD(x) & ~(v))) +#define HW_FTM_CNTIN_TOG(x, v) (HW_FTM_CNTIN_WR(x, HW_FTM_CNTIN_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_CNTIN bitfields + */ + +/*! + * @name Register FTM_CNTIN, field INIT[15:0] (RW) + * + * Initial Value Of The FTM Counter + */ +//@{ +#define BP_FTM_CNTIN_INIT (0U) //!< Bit position for FTM_CNTIN_INIT. +#define BM_FTM_CNTIN_INIT (0x0000FFFFU) //!< Bit mask for FTM_CNTIN_INIT. +#define BS_FTM_CNTIN_INIT (16U) //!< Bit field size in bits for FTM_CNTIN_INIT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CNTIN_INIT field. +#define BR_FTM_CNTIN_INIT(x) (HW_FTM_CNTIN(x).B.INIT) +#endif + +//! @brief Format value for bitfield FTM_CNTIN_INIT. +#define BF_FTM_CNTIN_INIT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CNTIN_INIT), uint32_t) & BM_FTM_CNTIN_INIT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INIT field to a new value. +#define BW_FTM_CNTIN_INIT(x, v) (HW_FTM_CNTIN_WR(x, (HW_FTM_CNTIN_RD(x) & ~BM_FTM_CNTIN_INIT) | BF_FTM_CNTIN_INIT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_STATUS - Capture And Compare Status +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_STATUS - Capture And Compare Status (RW) + * + * Reset value: 0x00000000U + * + * The STATUS register contains a copy of the status flag CHnF bit in CnSC for + * each FTM channel for software convenience. Each CHnF bit in STATUS is a mirror + * of CHnF bit in CnSC. All CHnF bits can be checked using only one read of + * STATUS. All CHnF bits can be cleared by reading STATUS followed by writing 0x00 to + * STATUS. Hardware sets the individual channel flags when an event occurs on the + * channel. CHnF is cleared by reading STATUS while CHnF is set and then writing + * a 0 to the CHnF bit. Writing a 1 to CHnF has no effect. If another event + * occurs between the read and write operations, the write operation has no effect; + * therefore, CHnF remains set indicating an event has occurred. In this case, a + * CHnF interrupt request is not lost due to the clearing sequence for a previous + * CHnF. The STATUS register should be used only in Combine mode. + */ +typedef union _hw_ftm_status +{ + uint32_t U; + struct _hw_ftm_status_bitfields + { + uint32_t CH0F : 1; //!< [0] Channel 0 Flag + uint32_t CH1F : 1; //!< [1] Channel 1 Flag + uint32_t CH2F : 1; //!< [2] Channel 2 Flag + uint32_t CH3F : 1; //!< [3] Channel 3 Flag + uint32_t CH4F : 1; //!< [4] Channel 4 Flag + uint32_t CH5F : 1; //!< [5] Channel 5 Flag + uint32_t CH6F : 1; //!< [6] Channel 6 Flag + uint32_t CH7F : 1; //!< [7] Channel 7 Flag + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_status_t; +#endif + +/*! + * @name Constants and macros for entire FTM_STATUS register + */ +//@{ +#define HW_FTM_STATUS_ADDR(x) (REGS_FTM_BASE(x) + 0x50U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_STATUS(x) (*(__IO hw_ftm_status_t *) HW_FTM_STATUS_ADDR(x)) +#define HW_FTM_STATUS_RD(x) (HW_FTM_STATUS(x).U) +#define HW_FTM_STATUS_WR(x, v) (HW_FTM_STATUS(x).U = (v)) +#define HW_FTM_STATUS_SET(x, v) (HW_FTM_STATUS_WR(x, HW_FTM_STATUS_RD(x) | (v))) +#define HW_FTM_STATUS_CLR(x, v) (HW_FTM_STATUS_WR(x, HW_FTM_STATUS_RD(x) & ~(v))) +#define HW_FTM_STATUS_TOG(x, v) (HW_FTM_STATUS_WR(x, HW_FTM_STATUS_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_STATUS bitfields + */ + +/*! + * @name Register FTM_STATUS, field CH0F[0] (W1C) + * + * See the register description. + * + * Values: + * - 0 - No channel event has occurred. + * - 1 - A channel event has occurred. + */ +//@{ +#define BP_FTM_STATUS_CH0F (0U) //!< Bit position for FTM_STATUS_CH0F. +#define BM_FTM_STATUS_CH0F (0x00000001U) //!< Bit mask for FTM_STATUS_CH0F. +#define BS_FTM_STATUS_CH0F (1U) //!< Bit field size in bits for FTM_STATUS_CH0F. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_STATUS_CH0F field. +#define BR_FTM_STATUS_CH0F(x) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH0F)) +#endif + +//! @brief Format value for bitfield FTM_STATUS_CH0F. +#define BF_FTM_STATUS_CH0F(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_STATUS_CH0F), uint32_t) & BM_FTM_STATUS_CH0F) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH0F field to a new value. +#define BW_FTM_STATUS_CH0F(x, v) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH0F) = (v)) +#endif +//@} + +/*! + * @name Register FTM_STATUS, field CH1F[1] (W1C) + * + * See the register description. + * + * Values: + * - 0 - No channel event has occurred. + * - 1 - A channel event has occurred. + */ +//@{ +#define BP_FTM_STATUS_CH1F (1U) //!< Bit position for FTM_STATUS_CH1F. +#define BM_FTM_STATUS_CH1F (0x00000002U) //!< Bit mask for FTM_STATUS_CH1F. +#define BS_FTM_STATUS_CH1F (1U) //!< Bit field size in bits for FTM_STATUS_CH1F. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_STATUS_CH1F field. +#define BR_FTM_STATUS_CH1F(x) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH1F)) +#endif + +//! @brief Format value for bitfield FTM_STATUS_CH1F. +#define BF_FTM_STATUS_CH1F(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_STATUS_CH1F), uint32_t) & BM_FTM_STATUS_CH1F) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH1F field to a new value. +#define BW_FTM_STATUS_CH1F(x, v) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH1F) = (v)) +#endif +//@} + +/*! + * @name Register FTM_STATUS, field CH2F[2] (W1C) + * + * See the register description. + * + * Values: + * - 0 - No channel event has occurred. + * - 1 - A channel event has occurred. + */ +//@{ +#define BP_FTM_STATUS_CH2F (2U) //!< Bit position for FTM_STATUS_CH2F. +#define BM_FTM_STATUS_CH2F (0x00000004U) //!< Bit mask for FTM_STATUS_CH2F. +#define BS_FTM_STATUS_CH2F (1U) //!< Bit field size in bits for FTM_STATUS_CH2F. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_STATUS_CH2F field. +#define BR_FTM_STATUS_CH2F(x) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH2F)) +#endif + +//! @brief Format value for bitfield FTM_STATUS_CH2F. +#define BF_FTM_STATUS_CH2F(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_STATUS_CH2F), uint32_t) & BM_FTM_STATUS_CH2F) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH2F field to a new value. +#define BW_FTM_STATUS_CH2F(x, v) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH2F) = (v)) +#endif +//@} + +/*! + * @name Register FTM_STATUS, field CH3F[3] (W1C) + * + * See the register description. + * + * Values: + * - 0 - No channel event has occurred. + * - 1 - A channel event has occurred. + */ +//@{ +#define BP_FTM_STATUS_CH3F (3U) //!< Bit position for FTM_STATUS_CH3F. +#define BM_FTM_STATUS_CH3F (0x00000008U) //!< Bit mask for FTM_STATUS_CH3F. +#define BS_FTM_STATUS_CH3F (1U) //!< Bit field size in bits for FTM_STATUS_CH3F. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_STATUS_CH3F field. +#define BR_FTM_STATUS_CH3F(x) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH3F)) +#endif + +//! @brief Format value for bitfield FTM_STATUS_CH3F. +#define BF_FTM_STATUS_CH3F(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_STATUS_CH3F), uint32_t) & BM_FTM_STATUS_CH3F) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH3F field to a new value. +#define BW_FTM_STATUS_CH3F(x, v) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH3F) = (v)) +#endif +//@} + +/*! + * @name Register FTM_STATUS, field CH4F[4] (W1C) + * + * See the register description. + * + * Values: + * - 0 - No channel event has occurred. + * - 1 - A channel event has occurred. + */ +//@{ +#define BP_FTM_STATUS_CH4F (4U) //!< Bit position for FTM_STATUS_CH4F. +#define BM_FTM_STATUS_CH4F (0x00000010U) //!< Bit mask for FTM_STATUS_CH4F. +#define BS_FTM_STATUS_CH4F (1U) //!< Bit field size in bits for FTM_STATUS_CH4F. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_STATUS_CH4F field. +#define BR_FTM_STATUS_CH4F(x) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH4F)) +#endif + +//! @brief Format value for bitfield FTM_STATUS_CH4F. +#define BF_FTM_STATUS_CH4F(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_STATUS_CH4F), uint32_t) & BM_FTM_STATUS_CH4F) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH4F field to a new value. +#define BW_FTM_STATUS_CH4F(x, v) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH4F) = (v)) +#endif +//@} + +/*! + * @name Register FTM_STATUS, field CH5F[5] (W1C) + * + * See the register description. + * + * Values: + * - 0 - No channel event has occurred. + * - 1 - A channel event has occurred. + */ +//@{ +#define BP_FTM_STATUS_CH5F (5U) //!< Bit position for FTM_STATUS_CH5F. +#define BM_FTM_STATUS_CH5F (0x00000020U) //!< Bit mask for FTM_STATUS_CH5F. +#define BS_FTM_STATUS_CH5F (1U) //!< Bit field size in bits for FTM_STATUS_CH5F. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_STATUS_CH5F field. +#define BR_FTM_STATUS_CH5F(x) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH5F)) +#endif + +//! @brief Format value for bitfield FTM_STATUS_CH5F. +#define BF_FTM_STATUS_CH5F(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_STATUS_CH5F), uint32_t) & BM_FTM_STATUS_CH5F) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH5F field to a new value. +#define BW_FTM_STATUS_CH5F(x, v) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH5F) = (v)) +#endif +//@} + +/*! + * @name Register FTM_STATUS, field CH6F[6] (W1C) + * + * See the register description. + * + * Values: + * - 0 - No channel event has occurred. + * - 1 - A channel event has occurred. + */ +//@{ +#define BP_FTM_STATUS_CH6F (6U) //!< Bit position for FTM_STATUS_CH6F. +#define BM_FTM_STATUS_CH6F (0x00000040U) //!< Bit mask for FTM_STATUS_CH6F. +#define BS_FTM_STATUS_CH6F (1U) //!< Bit field size in bits for FTM_STATUS_CH6F. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_STATUS_CH6F field. +#define BR_FTM_STATUS_CH6F(x) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH6F)) +#endif + +//! @brief Format value for bitfield FTM_STATUS_CH6F. +#define BF_FTM_STATUS_CH6F(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_STATUS_CH6F), uint32_t) & BM_FTM_STATUS_CH6F) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH6F field to a new value. +#define BW_FTM_STATUS_CH6F(x, v) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH6F) = (v)) +#endif +//@} + +/*! + * @name Register FTM_STATUS, field CH7F[7] (W1C) + * + * See the register description. + * + * Values: + * - 0 - No channel event has occurred. + * - 1 - A channel event has occurred. + */ +//@{ +#define BP_FTM_STATUS_CH7F (7U) //!< Bit position for FTM_STATUS_CH7F. +#define BM_FTM_STATUS_CH7F (0x00000080U) //!< Bit mask for FTM_STATUS_CH7F. +#define BS_FTM_STATUS_CH7F (1U) //!< Bit field size in bits for FTM_STATUS_CH7F. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_STATUS_CH7F field. +#define BR_FTM_STATUS_CH7F(x) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH7F)) +#endif + +//! @brief Format value for bitfield FTM_STATUS_CH7F. +#define BF_FTM_STATUS_CH7F(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_STATUS_CH7F), uint32_t) & BM_FTM_STATUS_CH7F) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH7F field to a new value. +#define BW_FTM_STATUS_CH7F(x, v) (BITBAND_ACCESS32(HW_FTM_STATUS_ADDR(x), BP_FTM_STATUS_CH7F) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_MODE - Features Mode Selection +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_MODE - Features Mode Selection (RW) + * + * Reset value: 0x00000004U + * + * This register contains the global enable bit for FTM-specific features and + * the control bits used to configure: Fault control mode and interrupt Capture + * Test mode PWM synchronization Write protection Channel output initialization + * These controls relate to all channels within this module. + */ +typedef union _hw_ftm_mode +{ + uint32_t U; + struct _hw_ftm_mode_bitfields + { + uint32_t FTMEN : 1; //!< [0] FTM Enable + uint32_t INIT : 1; //!< [1] Initialize The Channels Output + uint32_t WPDIS : 1; //!< [2] Write Protection Disable + uint32_t PWMSYNC : 1; //!< [3] PWM Synchronization Mode + uint32_t CAPTEST : 1; //!< [4] Capture Test Mode Enable + uint32_t FAULTM : 2; //!< [6:5] Fault Control Mode + uint32_t FAULTIE : 1; //!< [7] Fault Interrupt Enable + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_mode_t; +#endif + +/*! + * @name Constants and macros for entire FTM_MODE register + */ +//@{ +#define HW_FTM_MODE_ADDR(x) (REGS_FTM_BASE(x) + 0x54U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_MODE(x) (*(__IO hw_ftm_mode_t *) HW_FTM_MODE_ADDR(x)) +#define HW_FTM_MODE_RD(x) (HW_FTM_MODE(x).U) +#define HW_FTM_MODE_WR(x, v) (HW_FTM_MODE(x).U = (v)) +#define HW_FTM_MODE_SET(x, v) (HW_FTM_MODE_WR(x, HW_FTM_MODE_RD(x) | (v))) +#define HW_FTM_MODE_CLR(x, v) (HW_FTM_MODE_WR(x, HW_FTM_MODE_RD(x) & ~(v))) +#define HW_FTM_MODE_TOG(x, v) (HW_FTM_MODE_WR(x, HW_FTM_MODE_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_MODE bitfields + */ + +/*! + * @name Register FTM_MODE, field FTMEN[0] (RW) + * + * This field is write protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Only the TPM-compatible registers (first set of registers) can be used + * without any restriction. Do not use the FTM-specific registers. + * - 1 - All registers including the FTM-specific registers (second set of + * registers) are available for use with no restrictions. + */ +//@{ +#define BP_FTM_MODE_FTMEN (0U) //!< Bit position for FTM_MODE_FTMEN. +#define BM_FTM_MODE_FTMEN (0x00000001U) //!< Bit mask for FTM_MODE_FTMEN. +#define BS_FTM_MODE_FTMEN (1U) //!< Bit field size in bits for FTM_MODE_FTMEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_MODE_FTMEN field. +#define BR_FTM_MODE_FTMEN(x) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_FTMEN)) +#endif + +//! @brief Format value for bitfield FTM_MODE_FTMEN. +#define BF_FTM_MODE_FTMEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_MODE_FTMEN), uint32_t) & BM_FTM_MODE_FTMEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTMEN field to a new value. +#define BW_FTM_MODE_FTMEN(x, v) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_FTMEN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_MODE, field INIT[1] (RW) + * + * When a 1 is written to INIT bit the channels output is initialized according + * to the state of their corresponding bit in the OUTINIT register. Writing a 0 + * to INIT bit has no effect. The INIT bit is always read as 0. + */ +//@{ +#define BP_FTM_MODE_INIT (1U) //!< Bit position for FTM_MODE_INIT. +#define BM_FTM_MODE_INIT (0x00000002U) //!< Bit mask for FTM_MODE_INIT. +#define BS_FTM_MODE_INIT (1U) //!< Bit field size in bits for FTM_MODE_INIT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_MODE_INIT field. +#define BR_FTM_MODE_INIT(x) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_INIT)) +#endif + +//! @brief Format value for bitfield FTM_MODE_INIT. +#define BF_FTM_MODE_INIT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_MODE_INIT), uint32_t) & BM_FTM_MODE_INIT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INIT field to a new value. +#define BW_FTM_MODE_INIT(x, v) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_INIT) = (v)) +#endif +//@} + +/*! + * @name Register FTM_MODE, field WPDIS[2] (RW) + * + * When write protection is enabled (WPDIS = 0), write protected bits cannot be + * written. When write protection is disabled (WPDIS = 1), write protected bits + * can be written. The WPDIS bit is the negation of the WPEN bit. WPDIS is cleared + * when 1 is written to WPEN. WPDIS is set when WPEN bit is read as a 1 and then + * 1 is written to WPDIS. Writing 0 to WPDIS has no effect. + * + * Values: + * - 0 - Write protection is enabled. + * - 1 - Write protection is disabled. + */ +//@{ +#define BP_FTM_MODE_WPDIS (2U) //!< Bit position for FTM_MODE_WPDIS. +#define BM_FTM_MODE_WPDIS (0x00000004U) //!< Bit mask for FTM_MODE_WPDIS. +#define BS_FTM_MODE_WPDIS (1U) //!< Bit field size in bits for FTM_MODE_WPDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_MODE_WPDIS field. +#define BR_FTM_MODE_WPDIS(x) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_WPDIS)) +#endif + +//! @brief Format value for bitfield FTM_MODE_WPDIS. +#define BF_FTM_MODE_WPDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_MODE_WPDIS), uint32_t) & BM_FTM_MODE_WPDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WPDIS field to a new value. +#define BW_FTM_MODE_WPDIS(x, v) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_WPDIS) = (v)) +#endif +//@} + +/*! + * @name Register FTM_MODE, field PWMSYNC[3] (RW) + * + * Selects which triggers can be used by MOD, CnV, OUTMASK, and FTM counter + * synchronization. See PWM synchronization. The PWMSYNC bit configures the + * synchronization when SYNCMODE is 0. + * + * Values: + * - 0 - No restrictions. Software and hardware triggers can be used by MOD, + * CnV, OUTMASK, and FTM counter synchronization. + * - 1 - Software trigger can only be used by MOD and CnV synchronization, and + * hardware triggers can only be used by OUTMASK and FTM counter + * synchronization. + */ +//@{ +#define BP_FTM_MODE_PWMSYNC (3U) //!< Bit position for FTM_MODE_PWMSYNC. +#define BM_FTM_MODE_PWMSYNC (0x00000008U) //!< Bit mask for FTM_MODE_PWMSYNC. +#define BS_FTM_MODE_PWMSYNC (1U) //!< Bit field size in bits for FTM_MODE_PWMSYNC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_MODE_PWMSYNC field. +#define BR_FTM_MODE_PWMSYNC(x) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_PWMSYNC)) +#endif + +//! @brief Format value for bitfield FTM_MODE_PWMSYNC. +#define BF_FTM_MODE_PWMSYNC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_MODE_PWMSYNC), uint32_t) & BM_FTM_MODE_PWMSYNC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PWMSYNC field to a new value. +#define BW_FTM_MODE_PWMSYNC(x, v) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_PWMSYNC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_MODE, field CAPTEST[4] (RW) + * + * Enables the capture test mode. This field is write protected. It can be + * written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Capture test mode is disabled. + * - 1 - Capture test mode is enabled. + */ +//@{ +#define BP_FTM_MODE_CAPTEST (4U) //!< Bit position for FTM_MODE_CAPTEST. +#define BM_FTM_MODE_CAPTEST (0x00000010U) //!< Bit mask for FTM_MODE_CAPTEST. +#define BS_FTM_MODE_CAPTEST (1U) //!< Bit field size in bits for FTM_MODE_CAPTEST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_MODE_CAPTEST field. +#define BR_FTM_MODE_CAPTEST(x) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_CAPTEST)) +#endif + +//! @brief Format value for bitfield FTM_MODE_CAPTEST. +#define BF_FTM_MODE_CAPTEST(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_MODE_CAPTEST), uint32_t) & BM_FTM_MODE_CAPTEST) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CAPTEST field to a new value. +#define BW_FTM_MODE_CAPTEST(x, v) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_CAPTEST) = (v)) +#endif +//@} + +/*! + * @name Register FTM_MODE, field FAULTM[6:5] (RW) + * + * Defines the FTM fault control mode. This field is write protected. It can be + * written only when MODE[WPDIS] = 1. + * + * Values: + * - 00 - Fault control is disabled for all channels. + * - 01 - Fault control is enabled for even channels only (channels 0, 2, 4, and + * 6), and the selected mode is the manual fault clearing. + * - 10 - Fault control is enabled for all channels, and the selected mode is + * the manual fault clearing. + * - 11 - Fault control is enabled for all channels, and the selected mode is + * the automatic fault clearing. + */ +//@{ +#define BP_FTM_MODE_FAULTM (5U) //!< Bit position for FTM_MODE_FAULTM. +#define BM_FTM_MODE_FAULTM (0x00000060U) //!< Bit mask for FTM_MODE_FAULTM. +#define BS_FTM_MODE_FAULTM (2U) //!< Bit field size in bits for FTM_MODE_FAULTM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_MODE_FAULTM field. +#define BR_FTM_MODE_FAULTM(x) (HW_FTM_MODE(x).B.FAULTM) +#endif + +//! @brief Format value for bitfield FTM_MODE_FAULTM. +#define BF_FTM_MODE_FAULTM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_MODE_FAULTM), uint32_t) & BM_FTM_MODE_FAULTM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULTM field to a new value. +#define BW_FTM_MODE_FAULTM(x, v) (HW_FTM_MODE_WR(x, (HW_FTM_MODE_RD(x) & ~BM_FTM_MODE_FAULTM) | BF_FTM_MODE_FAULTM(v))) +#endif +//@} + +/*! + * @name Register FTM_MODE, field FAULTIE[7] (RW) + * + * Enables the generation of an interrupt when a fault is detected by FTM and + * the FTM fault control is enabled. + * + * Values: + * - 0 - Fault control interrupt is disabled. + * - 1 - Fault control interrupt is enabled. + */ +//@{ +#define BP_FTM_MODE_FAULTIE (7U) //!< Bit position for FTM_MODE_FAULTIE. +#define BM_FTM_MODE_FAULTIE (0x00000080U) //!< Bit mask for FTM_MODE_FAULTIE. +#define BS_FTM_MODE_FAULTIE (1U) //!< Bit field size in bits for FTM_MODE_FAULTIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_MODE_FAULTIE field. +#define BR_FTM_MODE_FAULTIE(x) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_FAULTIE)) +#endif + +//! @brief Format value for bitfield FTM_MODE_FAULTIE. +#define BF_FTM_MODE_FAULTIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_MODE_FAULTIE), uint32_t) & BM_FTM_MODE_FAULTIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULTIE field to a new value. +#define BW_FTM_MODE_FAULTIE(x, v) (BITBAND_ACCESS32(HW_FTM_MODE_ADDR(x), BP_FTM_MODE_FAULTIE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_SYNC - Synchronization +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_SYNC - Synchronization (RW) + * + * Reset value: 0x00000000U + * + * This register configures the PWM synchronization. A synchronization event can + * perform the synchronized update of MOD, CV, and OUTMASK registers with the + * value of their write buffer and the FTM counter initialization. The software + * trigger, SWSYNC bit, and hardware triggers TRIG0, TRIG1, and TRIG2 bits have a + * potential conflict if used together when SYNCMODE = 0. Use only hardware or + * software triggers but not both at the same time, otherwise unpredictable behavior + * is likely to happen. The selection of the loading point, CNTMAX and CNTMIN + * bits, is intended to provide the update of MOD, CNTIN, and CnV registers across + * all enabled channels simultaneously. The use of the loading point selection + * together with SYNCMODE = 0 and hardware trigger selection, TRIG0, TRIG1, or TRIG2 + * bits, is likely to result in unpredictable behavior. The synchronization + * event selection also depends on the PWMSYNC (MODE register) and SYNCMODE (SYNCONF + * register) bits. See PWM synchronization. + */ +typedef union _hw_ftm_sync +{ + uint32_t U; + struct _hw_ftm_sync_bitfields + { + uint32_t CNTMIN : 1; //!< [0] Minimum Loading Point Enable + uint32_t CNTMAX : 1; //!< [1] Maximum Loading Point Enable + uint32_t REINIT : 1; //!< [2] FTM Counter Reinitialization By + //! Synchronization (FTM counter synchronization) + uint32_t SYNCHOM : 1; //!< [3] Output Mask Synchronization + uint32_t TRIG0 : 1; //!< [4] PWM Synchronization Hardware Trigger 0 + uint32_t TRIG1 : 1; //!< [5] PWM Synchronization Hardware Trigger 1 + uint32_t TRIG2 : 1; //!< [6] PWM Synchronization Hardware Trigger 2 + uint32_t SWSYNC : 1; //!< [7] PWM Synchronization Software Trigger + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_sync_t; +#endif + +/*! + * @name Constants and macros for entire FTM_SYNC register + */ +//@{ +#define HW_FTM_SYNC_ADDR(x) (REGS_FTM_BASE(x) + 0x58U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_SYNC(x) (*(__IO hw_ftm_sync_t *) HW_FTM_SYNC_ADDR(x)) +#define HW_FTM_SYNC_RD(x) (HW_FTM_SYNC(x).U) +#define HW_FTM_SYNC_WR(x, v) (HW_FTM_SYNC(x).U = (v)) +#define HW_FTM_SYNC_SET(x, v) (HW_FTM_SYNC_WR(x, HW_FTM_SYNC_RD(x) | (v))) +#define HW_FTM_SYNC_CLR(x, v) (HW_FTM_SYNC_WR(x, HW_FTM_SYNC_RD(x) & ~(v))) +#define HW_FTM_SYNC_TOG(x, v) (HW_FTM_SYNC_WR(x, HW_FTM_SYNC_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_SYNC bitfields + */ + +/*! + * @name Register FTM_SYNC, field CNTMIN[0] (RW) + * + * Selects the minimum loading point to PWM synchronization. See Boundary cycle + * and loading points. If CNTMIN is one, the selected loading point is when the + * FTM counter reaches its minimum value (CNTIN register). + * + * Values: + * - 0 - The minimum loading point is disabled. + * - 1 - The minimum loading point is enabled. + */ +//@{ +#define BP_FTM_SYNC_CNTMIN (0U) //!< Bit position for FTM_SYNC_CNTMIN. +#define BM_FTM_SYNC_CNTMIN (0x00000001U) //!< Bit mask for FTM_SYNC_CNTMIN. +#define BS_FTM_SYNC_CNTMIN (1U) //!< Bit field size in bits for FTM_SYNC_CNTMIN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNC_CNTMIN field. +#define BR_FTM_SYNC_CNTMIN(x) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_CNTMIN)) +#endif + +//! @brief Format value for bitfield FTM_SYNC_CNTMIN. +#define BF_FTM_SYNC_CNTMIN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNC_CNTMIN), uint32_t) & BM_FTM_SYNC_CNTMIN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CNTMIN field to a new value. +#define BW_FTM_SYNC_CNTMIN(x, v) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_CNTMIN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNC, field CNTMAX[1] (RW) + * + * Selects the maximum loading point to PWM synchronization. See Boundary cycle + * and loading points. If CNTMAX is 1, the selected loading point is when the FTM + * counter reaches its maximum value (MOD register). + * + * Values: + * - 0 - The maximum loading point is disabled. + * - 1 - The maximum loading point is enabled. + */ +//@{ +#define BP_FTM_SYNC_CNTMAX (1U) //!< Bit position for FTM_SYNC_CNTMAX. +#define BM_FTM_SYNC_CNTMAX (0x00000002U) //!< Bit mask for FTM_SYNC_CNTMAX. +#define BS_FTM_SYNC_CNTMAX (1U) //!< Bit field size in bits for FTM_SYNC_CNTMAX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNC_CNTMAX field. +#define BR_FTM_SYNC_CNTMAX(x) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_CNTMAX)) +#endif + +//! @brief Format value for bitfield FTM_SYNC_CNTMAX. +#define BF_FTM_SYNC_CNTMAX(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNC_CNTMAX), uint32_t) & BM_FTM_SYNC_CNTMAX) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CNTMAX field to a new value. +#define BW_FTM_SYNC_CNTMAX(x, v) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_CNTMAX) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNC, field REINIT[2] (RW) + * + * Determines if the FTM counter is reinitialized when the selected trigger for + * the synchronization is detected. The REINIT bit configures the synchronization + * when SYNCMODE is zero. + * + * Values: + * - 0 - FTM counter continues to count normally. + * - 1 - FTM counter is updated with its initial value when the selected trigger + * is detected. + */ +//@{ +#define BP_FTM_SYNC_REINIT (2U) //!< Bit position for FTM_SYNC_REINIT. +#define BM_FTM_SYNC_REINIT (0x00000004U) //!< Bit mask for FTM_SYNC_REINIT. +#define BS_FTM_SYNC_REINIT (1U) //!< Bit field size in bits for FTM_SYNC_REINIT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNC_REINIT field. +#define BR_FTM_SYNC_REINIT(x) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_REINIT)) +#endif + +//! @brief Format value for bitfield FTM_SYNC_REINIT. +#define BF_FTM_SYNC_REINIT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNC_REINIT), uint32_t) & BM_FTM_SYNC_REINIT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the REINIT field to a new value. +#define BW_FTM_SYNC_REINIT(x, v) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_REINIT) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNC, field SYNCHOM[3] (RW) + * + * Selects when the OUTMASK register is updated with the value of its buffer. + * + * Values: + * - 0 - OUTMASK register is updated with the value of its buffer in all rising + * edges of the system clock. + * - 1 - OUTMASK register is updated with the value of its buffer only by the + * PWM synchronization. + */ +//@{ +#define BP_FTM_SYNC_SYNCHOM (3U) //!< Bit position for FTM_SYNC_SYNCHOM. +#define BM_FTM_SYNC_SYNCHOM (0x00000008U) //!< Bit mask for FTM_SYNC_SYNCHOM. +#define BS_FTM_SYNC_SYNCHOM (1U) //!< Bit field size in bits for FTM_SYNC_SYNCHOM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNC_SYNCHOM field. +#define BR_FTM_SYNC_SYNCHOM(x) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_SYNCHOM)) +#endif + +//! @brief Format value for bitfield FTM_SYNC_SYNCHOM. +#define BF_FTM_SYNC_SYNCHOM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNC_SYNCHOM), uint32_t) & BM_FTM_SYNC_SYNCHOM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYNCHOM field to a new value. +#define BW_FTM_SYNC_SYNCHOM(x, v) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_SYNCHOM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNC, field TRIG0[4] (RW) + * + * Enables hardware trigger 0 to the PWM synchronization. Hardware trigger 0 + * occurs when a rising edge is detected at the trigger 0 input signal. + * + * Values: + * - 0 - Trigger is disabled. + * - 1 - Trigger is enabled. + */ +//@{ +#define BP_FTM_SYNC_TRIG0 (4U) //!< Bit position for FTM_SYNC_TRIG0. +#define BM_FTM_SYNC_TRIG0 (0x00000010U) //!< Bit mask for FTM_SYNC_TRIG0. +#define BS_FTM_SYNC_TRIG0 (1U) //!< Bit field size in bits for FTM_SYNC_TRIG0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNC_TRIG0 field. +#define BR_FTM_SYNC_TRIG0(x) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_TRIG0)) +#endif + +//! @brief Format value for bitfield FTM_SYNC_TRIG0. +#define BF_FTM_SYNC_TRIG0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNC_TRIG0), uint32_t) & BM_FTM_SYNC_TRIG0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TRIG0 field to a new value. +#define BW_FTM_SYNC_TRIG0(x, v) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_TRIG0) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNC, field TRIG1[5] (RW) + * + * Enables hardware trigger 1 to the PWM synchronization. Hardware trigger 1 + * happens when a rising edge is detected at the trigger 1 input signal. + * + * Values: + * - 0 - Trigger is disabled. + * - 1 - Trigger is enabled. + */ +//@{ +#define BP_FTM_SYNC_TRIG1 (5U) //!< Bit position for FTM_SYNC_TRIG1. +#define BM_FTM_SYNC_TRIG1 (0x00000020U) //!< Bit mask for FTM_SYNC_TRIG1. +#define BS_FTM_SYNC_TRIG1 (1U) //!< Bit field size in bits for FTM_SYNC_TRIG1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNC_TRIG1 field. +#define BR_FTM_SYNC_TRIG1(x) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_TRIG1)) +#endif + +//! @brief Format value for bitfield FTM_SYNC_TRIG1. +#define BF_FTM_SYNC_TRIG1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNC_TRIG1), uint32_t) & BM_FTM_SYNC_TRIG1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TRIG1 field to a new value. +#define BW_FTM_SYNC_TRIG1(x, v) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_TRIG1) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNC, field TRIG2[6] (RW) + * + * Enables hardware trigger 2 to the PWM synchronization. Hardware trigger 2 + * happens when a rising edge is detected at the trigger 2 input signal. + * + * Values: + * - 0 - Trigger is disabled. + * - 1 - Trigger is enabled. + */ +//@{ +#define BP_FTM_SYNC_TRIG2 (6U) //!< Bit position for FTM_SYNC_TRIG2. +#define BM_FTM_SYNC_TRIG2 (0x00000040U) //!< Bit mask for FTM_SYNC_TRIG2. +#define BS_FTM_SYNC_TRIG2 (1U) //!< Bit field size in bits for FTM_SYNC_TRIG2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNC_TRIG2 field. +#define BR_FTM_SYNC_TRIG2(x) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_TRIG2)) +#endif + +//! @brief Format value for bitfield FTM_SYNC_TRIG2. +#define BF_FTM_SYNC_TRIG2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNC_TRIG2), uint32_t) & BM_FTM_SYNC_TRIG2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TRIG2 field to a new value. +#define BW_FTM_SYNC_TRIG2(x, v) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_TRIG2) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNC, field SWSYNC[7] (RW) + * + * Selects the software trigger as the PWM synchronization trigger. The software + * trigger happens when a 1 is written to SWSYNC bit. + * + * Values: + * - 0 - Software trigger is not selected. + * - 1 - Software trigger is selected. + */ +//@{ +#define BP_FTM_SYNC_SWSYNC (7U) //!< Bit position for FTM_SYNC_SWSYNC. +#define BM_FTM_SYNC_SWSYNC (0x00000080U) //!< Bit mask for FTM_SYNC_SWSYNC. +#define BS_FTM_SYNC_SWSYNC (1U) //!< Bit field size in bits for FTM_SYNC_SWSYNC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNC_SWSYNC field. +#define BR_FTM_SYNC_SWSYNC(x) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_SWSYNC)) +#endif + +//! @brief Format value for bitfield FTM_SYNC_SWSYNC. +#define BF_FTM_SYNC_SWSYNC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNC_SWSYNC), uint32_t) & BM_FTM_SYNC_SWSYNC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWSYNC field to a new value. +#define BW_FTM_SYNC_SWSYNC(x, v) (BITBAND_ACCESS32(HW_FTM_SYNC_ADDR(x), BP_FTM_SYNC_SWSYNC) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_OUTINIT - Initial State For Channels Output +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_OUTINIT - Initial State For Channels Output (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_ftm_outinit +{ + uint32_t U; + struct _hw_ftm_outinit_bitfields + { + uint32_t CH0OI : 1; //!< [0] Channel 0 Output Initialization Value + uint32_t CH1OI : 1; //!< [1] Channel 1 Output Initialization Value + uint32_t CH2OI : 1; //!< [2] Channel 2 Output Initialization Value + uint32_t CH3OI : 1; //!< [3] Channel 3 Output Initialization Value + uint32_t CH4OI : 1; //!< [4] Channel 4 Output Initialization Value + uint32_t CH5OI : 1; //!< [5] Channel 5 Output Initialization Value + uint32_t CH6OI : 1; //!< [6] Channel 6 Output Initialization Value + uint32_t CH7OI : 1; //!< [7] Channel 7 Output Initialization Value + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_outinit_t; +#endif + +/*! + * @name Constants and macros for entire FTM_OUTINIT register + */ +//@{ +#define HW_FTM_OUTINIT_ADDR(x) (REGS_FTM_BASE(x) + 0x5CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_OUTINIT(x) (*(__IO hw_ftm_outinit_t *) HW_FTM_OUTINIT_ADDR(x)) +#define HW_FTM_OUTINIT_RD(x) (HW_FTM_OUTINIT(x).U) +#define HW_FTM_OUTINIT_WR(x, v) (HW_FTM_OUTINIT(x).U = (v)) +#define HW_FTM_OUTINIT_SET(x, v) (HW_FTM_OUTINIT_WR(x, HW_FTM_OUTINIT_RD(x) | (v))) +#define HW_FTM_OUTINIT_CLR(x, v) (HW_FTM_OUTINIT_WR(x, HW_FTM_OUTINIT_RD(x) & ~(v))) +#define HW_FTM_OUTINIT_TOG(x, v) (HW_FTM_OUTINIT_WR(x, HW_FTM_OUTINIT_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_OUTINIT bitfields + */ + +/*! + * @name Register FTM_OUTINIT, field CH0OI[0] (RW) + * + * Selects the value that is forced into the channel output when the + * initialization occurs. + * + * Values: + * - 0 - The initialization value is 0. + * - 1 - The initialization value is 1. + */ +//@{ +#define BP_FTM_OUTINIT_CH0OI (0U) //!< Bit position for FTM_OUTINIT_CH0OI. +#define BM_FTM_OUTINIT_CH0OI (0x00000001U) //!< Bit mask for FTM_OUTINIT_CH0OI. +#define BS_FTM_OUTINIT_CH0OI (1U) //!< Bit field size in bits for FTM_OUTINIT_CH0OI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTINIT_CH0OI field. +#define BR_FTM_OUTINIT_CH0OI(x) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH0OI)) +#endif + +//! @brief Format value for bitfield FTM_OUTINIT_CH0OI. +#define BF_FTM_OUTINIT_CH0OI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTINIT_CH0OI), uint32_t) & BM_FTM_OUTINIT_CH0OI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH0OI field to a new value. +#define BW_FTM_OUTINIT_CH0OI(x, v) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH0OI) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTINIT, field CH1OI[1] (RW) + * + * Selects the value that is forced into the channel output when the + * initialization occurs. + * + * Values: + * - 0 - The initialization value is 0. + * - 1 - The initialization value is 1. + */ +//@{ +#define BP_FTM_OUTINIT_CH1OI (1U) //!< Bit position for FTM_OUTINIT_CH1OI. +#define BM_FTM_OUTINIT_CH1OI (0x00000002U) //!< Bit mask for FTM_OUTINIT_CH1OI. +#define BS_FTM_OUTINIT_CH1OI (1U) //!< Bit field size in bits for FTM_OUTINIT_CH1OI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTINIT_CH1OI field. +#define BR_FTM_OUTINIT_CH1OI(x) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH1OI)) +#endif + +//! @brief Format value for bitfield FTM_OUTINIT_CH1OI. +#define BF_FTM_OUTINIT_CH1OI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTINIT_CH1OI), uint32_t) & BM_FTM_OUTINIT_CH1OI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH1OI field to a new value. +#define BW_FTM_OUTINIT_CH1OI(x, v) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH1OI) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTINIT, field CH2OI[2] (RW) + * + * Selects the value that is forced into the channel output when the + * initialization occurs. + * + * Values: + * - 0 - The initialization value is 0. + * - 1 - The initialization value is 1. + */ +//@{ +#define BP_FTM_OUTINIT_CH2OI (2U) //!< Bit position for FTM_OUTINIT_CH2OI. +#define BM_FTM_OUTINIT_CH2OI (0x00000004U) //!< Bit mask for FTM_OUTINIT_CH2OI. +#define BS_FTM_OUTINIT_CH2OI (1U) //!< Bit field size in bits for FTM_OUTINIT_CH2OI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTINIT_CH2OI field. +#define BR_FTM_OUTINIT_CH2OI(x) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH2OI)) +#endif + +//! @brief Format value for bitfield FTM_OUTINIT_CH2OI. +#define BF_FTM_OUTINIT_CH2OI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTINIT_CH2OI), uint32_t) & BM_FTM_OUTINIT_CH2OI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH2OI field to a new value. +#define BW_FTM_OUTINIT_CH2OI(x, v) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH2OI) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTINIT, field CH3OI[3] (RW) + * + * Selects the value that is forced into the channel output when the + * initialization occurs. + * + * Values: + * - 0 - The initialization value is 0. + * - 1 - The initialization value is 1. + */ +//@{ +#define BP_FTM_OUTINIT_CH3OI (3U) //!< Bit position for FTM_OUTINIT_CH3OI. +#define BM_FTM_OUTINIT_CH3OI (0x00000008U) //!< Bit mask for FTM_OUTINIT_CH3OI. +#define BS_FTM_OUTINIT_CH3OI (1U) //!< Bit field size in bits for FTM_OUTINIT_CH3OI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTINIT_CH3OI field. +#define BR_FTM_OUTINIT_CH3OI(x) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH3OI)) +#endif + +//! @brief Format value for bitfield FTM_OUTINIT_CH3OI. +#define BF_FTM_OUTINIT_CH3OI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTINIT_CH3OI), uint32_t) & BM_FTM_OUTINIT_CH3OI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH3OI field to a new value. +#define BW_FTM_OUTINIT_CH3OI(x, v) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH3OI) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTINIT, field CH4OI[4] (RW) + * + * Selects the value that is forced into the channel output when the + * initialization occurs. + * + * Values: + * - 0 - The initialization value is 0. + * - 1 - The initialization value is 1. + */ +//@{ +#define BP_FTM_OUTINIT_CH4OI (4U) //!< Bit position for FTM_OUTINIT_CH4OI. +#define BM_FTM_OUTINIT_CH4OI (0x00000010U) //!< Bit mask for FTM_OUTINIT_CH4OI. +#define BS_FTM_OUTINIT_CH4OI (1U) //!< Bit field size in bits for FTM_OUTINIT_CH4OI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTINIT_CH4OI field. +#define BR_FTM_OUTINIT_CH4OI(x) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH4OI)) +#endif + +//! @brief Format value for bitfield FTM_OUTINIT_CH4OI. +#define BF_FTM_OUTINIT_CH4OI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTINIT_CH4OI), uint32_t) & BM_FTM_OUTINIT_CH4OI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH4OI field to a new value. +#define BW_FTM_OUTINIT_CH4OI(x, v) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH4OI) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTINIT, field CH5OI[5] (RW) + * + * Selects the value that is forced into the channel output when the + * initialization occurs. + * + * Values: + * - 0 - The initialization value is 0. + * - 1 - The initialization value is 1. + */ +//@{ +#define BP_FTM_OUTINIT_CH5OI (5U) //!< Bit position for FTM_OUTINIT_CH5OI. +#define BM_FTM_OUTINIT_CH5OI (0x00000020U) //!< Bit mask for FTM_OUTINIT_CH5OI. +#define BS_FTM_OUTINIT_CH5OI (1U) //!< Bit field size in bits for FTM_OUTINIT_CH5OI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTINIT_CH5OI field. +#define BR_FTM_OUTINIT_CH5OI(x) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH5OI)) +#endif + +//! @brief Format value for bitfield FTM_OUTINIT_CH5OI. +#define BF_FTM_OUTINIT_CH5OI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTINIT_CH5OI), uint32_t) & BM_FTM_OUTINIT_CH5OI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH5OI field to a new value. +#define BW_FTM_OUTINIT_CH5OI(x, v) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH5OI) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTINIT, field CH6OI[6] (RW) + * + * Selects the value that is forced into the channel output when the + * initialization occurs. + * + * Values: + * - 0 - The initialization value is 0. + * - 1 - The initialization value is 1. + */ +//@{ +#define BP_FTM_OUTINIT_CH6OI (6U) //!< Bit position for FTM_OUTINIT_CH6OI. +#define BM_FTM_OUTINIT_CH6OI (0x00000040U) //!< Bit mask for FTM_OUTINIT_CH6OI. +#define BS_FTM_OUTINIT_CH6OI (1U) //!< Bit field size in bits for FTM_OUTINIT_CH6OI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTINIT_CH6OI field. +#define BR_FTM_OUTINIT_CH6OI(x) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH6OI)) +#endif + +//! @brief Format value for bitfield FTM_OUTINIT_CH6OI. +#define BF_FTM_OUTINIT_CH6OI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTINIT_CH6OI), uint32_t) & BM_FTM_OUTINIT_CH6OI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH6OI field to a new value. +#define BW_FTM_OUTINIT_CH6OI(x, v) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH6OI) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTINIT, field CH7OI[7] (RW) + * + * Selects the value that is forced into the channel output when the + * initialization occurs. + * + * Values: + * - 0 - The initialization value is 0. + * - 1 - The initialization value is 1. + */ +//@{ +#define BP_FTM_OUTINIT_CH7OI (7U) //!< Bit position for FTM_OUTINIT_CH7OI. +#define BM_FTM_OUTINIT_CH7OI (0x00000080U) //!< Bit mask for FTM_OUTINIT_CH7OI. +#define BS_FTM_OUTINIT_CH7OI (1U) //!< Bit field size in bits for FTM_OUTINIT_CH7OI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTINIT_CH7OI field. +#define BR_FTM_OUTINIT_CH7OI(x) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH7OI)) +#endif + +//! @brief Format value for bitfield FTM_OUTINIT_CH7OI. +#define BF_FTM_OUTINIT_CH7OI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTINIT_CH7OI), uint32_t) & BM_FTM_OUTINIT_CH7OI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH7OI field to a new value. +#define BW_FTM_OUTINIT_CH7OI(x, v) (BITBAND_ACCESS32(HW_FTM_OUTINIT_ADDR(x), BP_FTM_OUTINIT_CH7OI) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_OUTMASK - Output Mask +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_OUTMASK - Output Mask (RW) + * + * Reset value: 0x00000000U + * + * This register provides a mask for each FTM channel. The mask of a channel + * determines if its output responds, that is, it is masked or not, when a match + * occurs. This feature is used for BLDC control where the PWM signal is presented + * to an electric motor at specific times to provide electronic commutation. Any + * write to the OUTMASK register, stores the value in its write buffer. The + * register is updated with the value of its write buffer according to PWM + * synchronization. + */ +typedef union _hw_ftm_outmask +{ + uint32_t U; + struct _hw_ftm_outmask_bitfields + { + uint32_t CH0OM : 1; //!< [0] Channel 0 Output Mask + uint32_t CH1OM : 1; //!< [1] Channel 1 Output Mask + uint32_t CH2OM : 1; //!< [2] Channel 2 Output Mask + uint32_t CH3OM : 1; //!< [3] Channel 3 Output Mask + uint32_t CH4OM : 1; //!< [4] Channel 4 Output Mask + uint32_t CH5OM : 1; //!< [5] Channel 5 Output Mask + uint32_t CH6OM : 1; //!< [6] Channel 6 Output Mask + uint32_t CH7OM : 1; //!< [7] Channel 7 Output Mask + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_outmask_t; +#endif + +/*! + * @name Constants and macros for entire FTM_OUTMASK register + */ +//@{ +#define HW_FTM_OUTMASK_ADDR(x) (REGS_FTM_BASE(x) + 0x60U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_OUTMASK(x) (*(__IO hw_ftm_outmask_t *) HW_FTM_OUTMASK_ADDR(x)) +#define HW_FTM_OUTMASK_RD(x) (HW_FTM_OUTMASK(x).U) +#define HW_FTM_OUTMASK_WR(x, v) (HW_FTM_OUTMASK(x).U = (v)) +#define HW_FTM_OUTMASK_SET(x, v) (HW_FTM_OUTMASK_WR(x, HW_FTM_OUTMASK_RD(x) | (v))) +#define HW_FTM_OUTMASK_CLR(x, v) (HW_FTM_OUTMASK_WR(x, HW_FTM_OUTMASK_RD(x) & ~(v))) +#define HW_FTM_OUTMASK_TOG(x, v) (HW_FTM_OUTMASK_WR(x, HW_FTM_OUTMASK_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_OUTMASK bitfields + */ + +/*! + * @name Register FTM_OUTMASK, field CH0OM[0] (RW) + * + * Defines if the channel output is masked or unmasked. + * + * Values: + * - 0 - Channel output is not masked. It continues to operate normally. + * - 1 - Channel output is masked. It is forced to its inactive state. + */ +//@{ +#define BP_FTM_OUTMASK_CH0OM (0U) //!< Bit position for FTM_OUTMASK_CH0OM. +#define BM_FTM_OUTMASK_CH0OM (0x00000001U) //!< Bit mask for FTM_OUTMASK_CH0OM. +#define BS_FTM_OUTMASK_CH0OM (1U) //!< Bit field size in bits for FTM_OUTMASK_CH0OM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTMASK_CH0OM field. +#define BR_FTM_OUTMASK_CH0OM(x) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH0OM)) +#endif + +//! @brief Format value for bitfield FTM_OUTMASK_CH0OM. +#define BF_FTM_OUTMASK_CH0OM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTMASK_CH0OM), uint32_t) & BM_FTM_OUTMASK_CH0OM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH0OM field to a new value. +#define BW_FTM_OUTMASK_CH0OM(x, v) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH0OM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTMASK, field CH1OM[1] (RW) + * + * Defines if the channel output is masked or unmasked. + * + * Values: + * - 0 - Channel output is not masked. It continues to operate normally. + * - 1 - Channel output is masked. It is forced to its inactive state. + */ +//@{ +#define BP_FTM_OUTMASK_CH1OM (1U) //!< Bit position for FTM_OUTMASK_CH1OM. +#define BM_FTM_OUTMASK_CH1OM (0x00000002U) //!< Bit mask for FTM_OUTMASK_CH1OM. +#define BS_FTM_OUTMASK_CH1OM (1U) //!< Bit field size in bits for FTM_OUTMASK_CH1OM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTMASK_CH1OM field. +#define BR_FTM_OUTMASK_CH1OM(x) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH1OM)) +#endif + +//! @brief Format value for bitfield FTM_OUTMASK_CH1OM. +#define BF_FTM_OUTMASK_CH1OM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTMASK_CH1OM), uint32_t) & BM_FTM_OUTMASK_CH1OM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH1OM field to a new value. +#define BW_FTM_OUTMASK_CH1OM(x, v) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH1OM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTMASK, field CH2OM[2] (RW) + * + * Defines if the channel output is masked or unmasked. + * + * Values: + * - 0 - Channel output is not masked. It continues to operate normally. + * - 1 - Channel output is masked. It is forced to its inactive state. + */ +//@{ +#define BP_FTM_OUTMASK_CH2OM (2U) //!< Bit position for FTM_OUTMASK_CH2OM. +#define BM_FTM_OUTMASK_CH2OM (0x00000004U) //!< Bit mask for FTM_OUTMASK_CH2OM. +#define BS_FTM_OUTMASK_CH2OM (1U) //!< Bit field size in bits for FTM_OUTMASK_CH2OM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTMASK_CH2OM field. +#define BR_FTM_OUTMASK_CH2OM(x) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH2OM)) +#endif + +//! @brief Format value for bitfield FTM_OUTMASK_CH2OM. +#define BF_FTM_OUTMASK_CH2OM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTMASK_CH2OM), uint32_t) & BM_FTM_OUTMASK_CH2OM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH2OM field to a new value. +#define BW_FTM_OUTMASK_CH2OM(x, v) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH2OM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTMASK, field CH3OM[3] (RW) + * + * Defines if the channel output is masked or unmasked. + * + * Values: + * - 0 - Channel output is not masked. It continues to operate normally. + * - 1 - Channel output is masked. It is forced to its inactive state. + */ +//@{ +#define BP_FTM_OUTMASK_CH3OM (3U) //!< Bit position for FTM_OUTMASK_CH3OM. +#define BM_FTM_OUTMASK_CH3OM (0x00000008U) //!< Bit mask for FTM_OUTMASK_CH3OM. +#define BS_FTM_OUTMASK_CH3OM (1U) //!< Bit field size in bits for FTM_OUTMASK_CH3OM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTMASK_CH3OM field. +#define BR_FTM_OUTMASK_CH3OM(x) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH3OM)) +#endif + +//! @brief Format value for bitfield FTM_OUTMASK_CH3OM. +#define BF_FTM_OUTMASK_CH3OM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTMASK_CH3OM), uint32_t) & BM_FTM_OUTMASK_CH3OM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH3OM field to a new value. +#define BW_FTM_OUTMASK_CH3OM(x, v) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH3OM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTMASK, field CH4OM[4] (RW) + * + * Defines if the channel output is masked or unmasked. + * + * Values: + * - 0 - Channel output is not masked. It continues to operate normally. + * - 1 - Channel output is masked. It is forced to its inactive state. + */ +//@{ +#define BP_FTM_OUTMASK_CH4OM (4U) //!< Bit position for FTM_OUTMASK_CH4OM. +#define BM_FTM_OUTMASK_CH4OM (0x00000010U) //!< Bit mask for FTM_OUTMASK_CH4OM. +#define BS_FTM_OUTMASK_CH4OM (1U) //!< Bit field size in bits for FTM_OUTMASK_CH4OM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTMASK_CH4OM field. +#define BR_FTM_OUTMASK_CH4OM(x) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH4OM)) +#endif + +//! @brief Format value for bitfield FTM_OUTMASK_CH4OM. +#define BF_FTM_OUTMASK_CH4OM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTMASK_CH4OM), uint32_t) & BM_FTM_OUTMASK_CH4OM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH4OM field to a new value. +#define BW_FTM_OUTMASK_CH4OM(x, v) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH4OM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTMASK, field CH5OM[5] (RW) + * + * Defines if the channel output is masked or unmasked. + * + * Values: + * - 0 - Channel output is not masked. It continues to operate normally. + * - 1 - Channel output is masked. It is forced to its inactive state. + */ +//@{ +#define BP_FTM_OUTMASK_CH5OM (5U) //!< Bit position for FTM_OUTMASK_CH5OM. +#define BM_FTM_OUTMASK_CH5OM (0x00000020U) //!< Bit mask for FTM_OUTMASK_CH5OM. +#define BS_FTM_OUTMASK_CH5OM (1U) //!< Bit field size in bits for FTM_OUTMASK_CH5OM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTMASK_CH5OM field. +#define BR_FTM_OUTMASK_CH5OM(x) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH5OM)) +#endif + +//! @brief Format value for bitfield FTM_OUTMASK_CH5OM. +#define BF_FTM_OUTMASK_CH5OM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTMASK_CH5OM), uint32_t) & BM_FTM_OUTMASK_CH5OM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH5OM field to a new value. +#define BW_FTM_OUTMASK_CH5OM(x, v) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH5OM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTMASK, field CH6OM[6] (RW) + * + * Defines if the channel output is masked or unmasked. + * + * Values: + * - 0 - Channel output is not masked. It continues to operate normally. + * - 1 - Channel output is masked. It is forced to its inactive state. + */ +//@{ +#define BP_FTM_OUTMASK_CH6OM (6U) //!< Bit position for FTM_OUTMASK_CH6OM. +#define BM_FTM_OUTMASK_CH6OM (0x00000040U) //!< Bit mask for FTM_OUTMASK_CH6OM. +#define BS_FTM_OUTMASK_CH6OM (1U) //!< Bit field size in bits for FTM_OUTMASK_CH6OM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTMASK_CH6OM field. +#define BR_FTM_OUTMASK_CH6OM(x) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH6OM)) +#endif + +//! @brief Format value for bitfield FTM_OUTMASK_CH6OM. +#define BF_FTM_OUTMASK_CH6OM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTMASK_CH6OM), uint32_t) & BM_FTM_OUTMASK_CH6OM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH6OM field to a new value. +#define BW_FTM_OUTMASK_CH6OM(x, v) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH6OM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_OUTMASK, field CH7OM[7] (RW) + * + * Defines if the channel output is masked or unmasked. + * + * Values: + * - 0 - Channel output is not masked. It continues to operate normally. + * - 1 - Channel output is masked. It is forced to its inactive state. + */ +//@{ +#define BP_FTM_OUTMASK_CH7OM (7U) //!< Bit position for FTM_OUTMASK_CH7OM. +#define BM_FTM_OUTMASK_CH7OM (0x00000080U) //!< Bit mask for FTM_OUTMASK_CH7OM. +#define BS_FTM_OUTMASK_CH7OM (1U) //!< Bit field size in bits for FTM_OUTMASK_CH7OM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_OUTMASK_CH7OM field. +#define BR_FTM_OUTMASK_CH7OM(x) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH7OM)) +#endif + +//! @brief Format value for bitfield FTM_OUTMASK_CH7OM. +#define BF_FTM_OUTMASK_CH7OM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_OUTMASK_CH7OM), uint32_t) & BM_FTM_OUTMASK_CH7OM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH7OM field to a new value. +#define BW_FTM_OUTMASK_CH7OM(x, v) (BITBAND_ACCESS32(HW_FTM_OUTMASK_ADDR(x), BP_FTM_OUTMASK_CH7OM) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_COMBINE - Function For Linked Channels +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_COMBINE - Function For Linked Channels (RW) + * + * Reset value: 0x00000000U + * + * This register contains the control bits used to configure the fault control, + * synchronization, deadtime insertion, Dual Edge Capture mode, Complementary, + * and Combine mode for each pair of channels (n) and (n+1), where n equals 0, 2, + * 4, and 6. + */ +typedef union _hw_ftm_combine +{ + uint32_t U; + struct _hw_ftm_combine_bitfields + { + uint32_t COMBINE0 : 1; //!< [0] Combine Channels For n = 0 + uint32_t COMP0 : 1; //!< [1] Complement Of Channel (n) For n = 0 + uint32_t DECAPEN0 : 1; //!< [2] Dual Edge Capture Mode Enable For n = + //! 0 + uint32_t DECAP0 : 1; //!< [3] Dual Edge Capture Mode Captures For n = + //! 0 + uint32_t DTEN0 : 1; //!< [4] Deadtime Enable For n = 0 + uint32_t SYNCEN0 : 1; //!< [5] Synchronization Enable For n = 0 + uint32_t FAULTEN0 : 1; //!< [6] Fault Control Enable For n = 0 + uint32_t RESERVED0 : 1; //!< [7] + uint32_t COMBINE1 : 1; //!< [8] Combine Channels For n = 2 + uint32_t COMP1 : 1; //!< [9] Complement Of Channel (n) For n = 2 + uint32_t DECAPEN1 : 1; //!< [10] Dual Edge Capture Mode Enable For n + //! = 2 + uint32_t DECAP1 : 1; //!< [11] Dual Edge Capture Mode Captures For n + //! = 2 + uint32_t DTEN1 : 1; //!< [12] Deadtime Enable For n = 2 + uint32_t SYNCEN1 : 1; //!< [13] Synchronization Enable For n = 2 + uint32_t FAULTEN1 : 1; //!< [14] Fault Control Enable For n = 2 + uint32_t RESERVED1 : 1; //!< [15] + uint32_t COMBINE2 : 1; //!< [16] Combine Channels For n = 4 + uint32_t COMP2 : 1; //!< [17] Complement Of Channel (n) For n = 4 + uint32_t DECAPEN2 : 1; //!< [18] Dual Edge Capture Mode Enable For n + //! = 4 + uint32_t DECAP2 : 1; //!< [19] Dual Edge Capture Mode Captures For n + //! = 4 + uint32_t DTEN2 : 1; //!< [20] Deadtime Enable For n = 4 + uint32_t SYNCEN2 : 1; //!< [21] Synchronization Enable For n = 4 + uint32_t FAULTEN2 : 1; //!< [22] Fault Control Enable For n = 4 + uint32_t RESERVED2 : 1; //!< [23] + uint32_t COMBINE3 : 1; //!< [24] Combine Channels For n = 6 + uint32_t COMP3 : 1; //!< [25] Complement Of Channel (n) for n = 6 + uint32_t DECAPEN3 : 1; //!< [26] Dual Edge Capture Mode Enable For n + //! = 6 + uint32_t DECAP3 : 1; //!< [27] Dual Edge Capture Mode Captures For n + //! = 6 + uint32_t DTEN3 : 1; //!< [28] Deadtime Enable For n = 6 + uint32_t SYNCEN3 : 1; //!< [29] Synchronization Enable For n = 6 + uint32_t FAULTEN3 : 1; //!< [30] Fault Control Enable For n = 6 + uint32_t RESERVED3 : 1; //!< [31] + } B; +} hw_ftm_combine_t; +#endif + +/*! + * @name Constants and macros for entire FTM_COMBINE register + */ +//@{ +#define HW_FTM_COMBINE_ADDR(x) (REGS_FTM_BASE(x) + 0x64U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_COMBINE(x) (*(__IO hw_ftm_combine_t *) HW_FTM_COMBINE_ADDR(x)) +#define HW_FTM_COMBINE_RD(x) (HW_FTM_COMBINE(x).U) +#define HW_FTM_COMBINE_WR(x, v) (HW_FTM_COMBINE(x).U = (v)) +#define HW_FTM_COMBINE_SET(x, v) (HW_FTM_COMBINE_WR(x, HW_FTM_COMBINE_RD(x) | (v))) +#define HW_FTM_COMBINE_CLR(x, v) (HW_FTM_COMBINE_WR(x, HW_FTM_COMBINE_RD(x) & ~(v))) +#define HW_FTM_COMBINE_TOG(x, v) (HW_FTM_COMBINE_WR(x, HW_FTM_COMBINE_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_COMBINE bitfields + */ + +/*! + * @name Register FTM_COMBINE, field COMBINE0[0] (RW) + * + * Enables the combine feature for channels (n) and (n+1). This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Channels (n) and (n+1) are independent. + * - 1 - Channels (n) and (n+1) are combined. + */ +//@{ +#define BP_FTM_COMBINE_COMBINE0 (0U) //!< Bit position for FTM_COMBINE_COMBINE0. +#define BM_FTM_COMBINE_COMBINE0 (0x00000001U) //!< Bit mask for FTM_COMBINE_COMBINE0. +#define BS_FTM_COMBINE_COMBINE0 (1U) //!< Bit field size in bits for FTM_COMBINE_COMBINE0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_COMBINE0 field. +#define BR_FTM_COMBINE_COMBINE0(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMBINE0)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_COMBINE0. +#define BF_FTM_COMBINE_COMBINE0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_COMBINE0), uint32_t) & BM_FTM_COMBINE_COMBINE0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMBINE0 field to a new value. +#define BW_FTM_COMBINE_COMBINE0(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMBINE0) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field COMP0[1] (RW) + * + * Enables Complementary mode for the combined channels. In Complementary mode + * the channel (n+1) output is the inverse of the channel (n) output. This field + * is write protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel (n+1) output is the same as the channel (n) output. + * - 1 - The channel (n+1) output is the complement of the channel (n) output. + */ +//@{ +#define BP_FTM_COMBINE_COMP0 (1U) //!< Bit position for FTM_COMBINE_COMP0. +#define BM_FTM_COMBINE_COMP0 (0x00000002U) //!< Bit mask for FTM_COMBINE_COMP0. +#define BS_FTM_COMBINE_COMP0 (1U) //!< Bit field size in bits for FTM_COMBINE_COMP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_COMP0 field. +#define BR_FTM_COMBINE_COMP0(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMP0)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_COMP0. +#define BF_FTM_COMBINE_COMP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_COMP0), uint32_t) & BM_FTM_COMBINE_COMP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMP0 field to a new value. +#define BW_FTM_COMBINE_COMP0(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMP0) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DECAPEN0[2] (RW) + * + * Enables the Dual Edge Capture mode in the channels (n) and (n+1). This bit + * reconfigures the function of MSnA, ELSnB:ELSnA and ELS(n+1)B:ELS(n+1)A bits in + * Dual Edge Capture mode according to #ModeSel1Table. This field applies only + * when FTMEN = 1. This field is write protected. It can be written only when + * MODE[WPDIS] = 1. + * + * Values: + * - 0 - The Dual Edge Capture mode in this pair of channels is disabled. + * - 1 - The Dual Edge Capture mode in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_DECAPEN0 (2U) //!< Bit position for FTM_COMBINE_DECAPEN0. +#define BM_FTM_COMBINE_DECAPEN0 (0x00000004U) //!< Bit mask for FTM_COMBINE_DECAPEN0. +#define BS_FTM_COMBINE_DECAPEN0 (1U) //!< Bit field size in bits for FTM_COMBINE_DECAPEN0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DECAPEN0 field. +#define BR_FTM_COMBINE_DECAPEN0(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAPEN0)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DECAPEN0. +#define BF_FTM_COMBINE_DECAPEN0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DECAPEN0), uint32_t) & BM_FTM_COMBINE_DECAPEN0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DECAPEN0 field to a new value. +#define BW_FTM_COMBINE_DECAPEN0(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAPEN0) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DECAP0[3] (RW) + * + * Enables the capture of the FTM counter value according to the channel (n) + * input event and the configuration of the dual edge capture bits. This field + * applies only when FTMEN = 1 and DECAPEN = 1. DECAP bit is cleared automatically by + * hardware if dual edge capture - one-shot mode is selected and when the capture + * of channel (n+1) event is made. + * + * Values: + * - 0 - The dual edge captures are inactive. + * - 1 - The dual edge captures are active. + */ +//@{ +#define BP_FTM_COMBINE_DECAP0 (3U) //!< Bit position for FTM_COMBINE_DECAP0. +#define BM_FTM_COMBINE_DECAP0 (0x00000008U) //!< Bit mask for FTM_COMBINE_DECAP0. +#define BS_FTM_COMBINE_DECAP0 (1U) //!< Bit field size in bits for FTM_COMBINE_DECAP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DECAP0 field. +#define BR_FTM_COMBINE_DECAP0(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAP0)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DECAP0. +#define BF_FTM_COMBINE_DECAP0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DECAP0), uint32_t) & BM_FTM_COMBINE_DECAP0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DECAP0 field to a new value. +#define BW_FTM_COMBINE_DECAP0(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAP0) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DTEN0[4] (RW) + * + * Enables the deadtime insertion in the channels (n) and (n+1). This field is + * write protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The deadtime insertion in this pair of channels is disabled. + * - 1 - The deadtime insertion in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_DTEN0 (4U) //!< Bit position for FTM_COMBINE_DTEN0. +#define BM_FTM_COMBINE_DTEN0 (0x00000010U) //!< Bit mask for FTM_COMBINE_DTEN0. +#define BS_FTM_COMBINE_DTEN0 (1U) //!< Bit field size in bits for FTM_COMBINE_DTEN0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DTEN0 field. +#define BR_FTM_COMBINE_DTEN0(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DTEN0)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DTEN0. +#define BF_FTM_COMBINE_DTEN0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DTEN0), uint32_t) & BM_FTM_COMBINE_DTEN0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTEN0 field to a new value. +#define BW_FTM_COMBINE_DTEN0(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DTEN0) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field SYNCEN0[5] (RW) + * + * Enables PWM synchronization of registers C(n)V and C(n+1)V. + * + * Values: + * - 0 - The PWM synchronization in this pair of channels is disabled. + * - 1 - The PWM synchronization in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_SYNCEN0 (5U) //!< Bit position for FTM_COMBINE_SYNCEN0. +#define BM_FTM_COMBINE_SYNCEN0 (0x00000020U) //!< Bit mask for FTM_COMBINE_SYNCEN0. +#define BS_FTM_COMBINE_SYNCEN0 (1U) //!< Bit field size in bits for FTM_COMBINE_SYNCEN0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_SYNCEN0 field. +#define BR_FTM_COMBINE_SYNCEN0(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_SYNCEN0)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_SYNCEN0. +#define BF_FTM_COMBINE_SYNCEN0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_SYNCEN0), uint32_t) & BM_FTM_COMBINE_SYNCEN0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYNCEN0 field to a new value. +#define BW_FTM_COMBINE_SYNCEN0(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_SYNCEN0) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field FAULTEN0[6] (RW) + * + * Enables the fault control in channels (n) and (n+1). This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The fault control in this pair of channels is disabled. + * - 1 - The fault control in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_FAULTEN0 (6U) //!< Bit position for FTM_COMBINE_FAULTEN0. +#define BM_FTM_COMBINE_FAULTEN0 (0x00000040U) //!< Bit mask for FTM_COMBINE_FAULTEN0. +#define BS_FTM_COMBINE_FAULTEN0 (1U) //!< Bit field size in bits for FTM_COMBINE_FAULTEN0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_FAULTEN0 field. +#define BR_FTM_COMBINE_FAULTEN0(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_FAULTEN0)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_FAULTEN0. +#define BF_FTM_COMBINE_FAULTEN0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_FAULTEN0), uint32_t) & BM_FTM_COMBINE_FAULTEN0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULTEN0 field to a new value. +#define BW_FTM_COMBINE_FAULTEN0(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_FAULTEN0) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field COMBINE1[8] (RW) + * + * Enables the combine feature for channels (n) and (n+1). This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Channels (n) and (n+1) are independent. + * - 1 - Channels (n) and (n+1) are combined. + */ +//@{ +#define BP_FTM_COMBINE_COMBINE1 (8U) //!< Bit position for FTM_COMBINE_COMBINE1. +#define BM_FTM_COMBINE_COMBINE1 (0x00000100U) //!< Bit mask for FTM_COMBINE_COMBINE1. +#define BS_FTM_COMBINE_COMBINE1 (1U) //!< Bit field size in bits for FTM_COMBINE_COMBINE1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_COMBINE1 field. +#define BR_FTM_COMBINE_COMBINE1(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMBINE1)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_COMBINE1. +#define BF_FTM_COMBINE_COMBINE1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_COMBINE1), uint32_t) & BM_FTM_COMBINE_COMBINE1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMBINE1 field to a new value. +#define BW_FTM_COMBINE_COMBINE1(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMBINE1) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field COMP1[9] (RW) + * + * Enables Complementary mode for the combined channels. In Complementary mode + * the channel (n+1) output is the inverse of the channel (n) output. This field + * is write protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel (n+1) output is the same as the channel (n) output. + * - 1 - The channel (n+1) output is the complement of the channel (n) output. + */ +//@{ +#define BP_FTM_COMBINE_COMP1 (9U) //!< Bit position for FTM_COMBINE_COMP1. +#define BM_FTM_COMBINE_COMP1 (0x00000200U) //!< Bit mask for FTM_COMBINE_COMP1. +#define BS_FTM_COMBINE_COMP1 (1U) //!< Bit field size in bits for FTM_COMBINE_COMP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_COMP1 field. +#define BR_FTM_COMBINE_COMP1(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMP1)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_COMP1. +#define BF_FTM_COMBINE_COMP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_COMP1), uint32_t) & BM_FTM_COMBINE_COMP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMP1 field to a new value. +#define BW_FTM_COMBINE_COMP1(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMP1) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DECAPEN1[10] (RW) + * + * Enables the Dual Edge Capture mode in the channels (n) and (n+1). This bit + * reconfigures the function of MSnA, ELSnB:ELSnA and ELS(n+1)B:ELS(n+1)A bits in + * Dual Edge Capture mode according to #ModeSel1Table. This field applies only + * when FTMEN = 1. This field is write protected. It can be written only when + * MODE[WPDIS] = 1. + * + * Values: + * - 0 - The Dual Edge Capture mode in this pair of channels is disabled. + * - 1 - The Dual Edge Capture mode in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_DECAPEN1 (10U) //!< Bit position for FTM_COMBINE_DECAPEN1. +#define BM_FTM_COMBINE_DECAPEN1 (0x00000400U) //!< Bit mask for FTM_COMBINE_DECAPEN1. +#define BS_FTM_COMBINE_DECAPEN1 (1U) //!< Bit field size in bits for FTM_COMBINE_DECAPEN1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DECAPEN1 field. +#define BR_FTM_COMBINE_DECAPEN1(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAPEN1)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DECAPEN1. +#define BF_FTM_COMBINE_DECAPEN1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DECAPEN1), uint32_t) & BM_FTM_COMBINE_DECAPEN1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DECAPEN1 field to a new value. +#define BW_FTM_COMBINE_DECAPEN1(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAPEN1) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DECAP1[11] (RW) + * + * Enables the capture of the FTM counter value according to the channel (n) + * input event and the configuration of the dual edge capture bits. This field + * applies only when FTMEN = 1 and DECAPEN = 1. DECAP bit is cleared automatically by + * hardware if Dual Edge Capture - One-Shot mode is selected and when the capture + * of channel (n+1) event is made. + * + * Values: + * - 0 - The dual edge captures are inactive. + * - 1 - The dual edge captures are active. + */ +//@{ +#define BP_FTM_COMBINE_DECAP1 (11U) //!< Bit position for FTM_COMBINE_DECAP1. +#define BM_FTM_COMBINE_DECAP1 (0x00000800U) //!< Bit mask for FTM_COMBINE_DECAP1. +#define BS_FTM_COMBINE_DECAP1 (1U) //!< Bit field size in bits for FTM_COMBINE_DECAP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DECAP1 field. +#define BR_FTM_COMBINE_DECAP1(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAP1)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DECAP1. +#define BF_FTM_COMBINE_DECAP1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DECAP1), uint32_t) & BM_FTM_COMBINE_DECAP1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DECAP1 field to a new value. +#define BW_FTM_COMBINE_DECAP1(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAP1) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DTEN1[12] (RW) + * + * Enables the deadtime insertion in the channels (n) and (n+1). This field is + * write protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The deadtime insertion in this pair of channels is disabled. + * - 1 - The deadtime insertion in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_DTEN1 (12U) //!< Bit position for FTM_COMBINE_DTEN1. +#define BM_FTM_COMBINE_DTEN1 (0x00001000U) //!< Bit mask for FTM_COMBINE_DTEN1. +#define BS_FTM_COMBINE_DTEN1 (1U) //!< Bit field size in bits for FTM_COMBINE_DTEN1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DTEN1 field. +#define BR_FTM_COMBINE_DTEN1(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DTEN1)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DTEN1. +#define BF_FTM_COMBINE_DTEN1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DTEN1), uint32_t) & BM_FTM_COMBINE_DTEN1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTEN1 field to a new value. +#define BW_FTM_COMBINE_DTEN1(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DTEN1) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field SYNCEN1[13] (RW) + * + * Enables PWM synchronization of registers C(n)V and C(n+1)V. + * + * Values: + * - 0 - The PWM synchronization in this pair of channels is disabled. + * - 1 - The PWM synchronization in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_SYNCEN1 (13U) //!< Bit position for FTM_COMBINE_SYNCEN1. +#define BM_FTM_COMBINE_SYNCEN1 (0x00002000U) //!< Bit mask for FTM_COMBINE_SYNCEN1. +#define BS_FTM_COMBINE_SYNCEN1 (1U) //!< Bit field size in bits for FTM_COMBINE_SYNCEN1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_SYNCEN1 field. +#define BR_FTM_COMBINE_SYNCEN1(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_SYNCEN1)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_SYNCEN1. +#define BF_FTM_COMBINE_SYNCEN1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_SYNCEN1), uint32_t) & BM_FTM_COMBINE_SYNCEN1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYNCEN1 field to a new value. +#define BW_FTM_COMBINE_SYNCEN1(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_SYNCEN1) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field FAULTEN1[14] (RW) + * + * Enables the fault control in channels (n) and (n+1). This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The fault control in this pair of channels is disabled. + * - 1 - The fault control in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_FAULTEN1 (14U) //!< Bit position for FTM_COMBINE_FAULTEN1. +#define BM_FTM_COMBINE_FAULTEN1 (0x00004000U) //!< Bit mask for FTM_COMBINE_FAULTEN1. +#define BS_FTM_COMBINE_FAULTEN1 (1U) //!< Bit field size in bits for FTM_COMBINE_FAULTEN1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_FAULTEN1 field. +#define BR_FTM_COMBINE_FAULTEN1(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_FAULTEN1)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_FAULTEN1. +#define BF_FTM_COMBINE_FAULTEN1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_FAULTEN1), uint32_t) & BM_FTM_COMBINE_FAULTEN1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULTEN1 field to a new value. +#define BW_FTM_COMBINE_FAULTEN1(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_FAULTEN1) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field COMBINE2[16] (RW) + * + * Enables the combine feature for channels (n) and (n+1). This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Channels (n) and (n+1) are independent. + * - 1 - Channels (n) and (n+1) are combined. + */ +//@{ +#define BP_FTM_COMBINE_COMBINE2 (16U) //!< Bit position for FTM_COMBINE_COMBINE2. +#define BM_FTM_COMBINE_COMBINE2 (0x00010000U) //!< Bit mask for FTM_COMBINE_COMBINE2. +#define BS_FTM_COMBINE_COMBINE2 (1U) //!< Bit field size in bits for FTM_COMBINE_COMBINE2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_COMBINE2 field. +#define BR_FTM_COMBINE_COMBINE2(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMBINE2)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_COMBINE2. +#define BF_FTM_COMBINE_COMBINE2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_COMBINE2), uint32_t) & BM_FTM_COMBINE_COMBINE2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMBINE2 field to a new value. +#define BW_FTM_COMBINE_COMBINE2(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMBINE2) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field COMP2[17] (RW) + * + * Enables Complementary mode for the combined channels. In Complementary mode + * the channel (n+1) output is the inverse of the channel (n) output. This field + * is write protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel (n+1) output is the same as the channel (n) output. + * - 1 - The channel (n+1) output is the complement of the channel (n) output. + */ +//@{ +#define BP_FTM_COMBINE_COMP2 (17U) //!< Bit position for FTM_COMBINE_COMP2. +#define BM_FTM_COMBINE_COMP2 (0x00020000U) //!< Bit mask for FTM_COMBINE_COMP2. +#define BS_FTM_COMBINE_COMP2 (1U) //!< Bit field size in bits for FTM_COMBINE_COMP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_COMP2 field. +#define BR_FTM_COMBINE_COMP2(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMP2)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_COMP2. +#define BF_FTM_COMBINE_COMP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_COMP2), uint32_t) & BM_FTM_COMBINE_COMP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMP2 field to a new value. +#define BW_FTM_COMBINE_COMP2(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMP2) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DECAPEN2[18] (RW) + * + * Enables the Dual Edge Capture mode in the channels (n) and (n+1). This bit + * reconfigures the function of MSnA, ELSnB:ELSnA and ELS(n+1)B:ELS(n+1)A bits in + * Dual Edge Capture mode according to #ModeSel1Table. This field applies only + * when FTMEN = 1. This field is write protected. It can be written only when + * MODE[WPDIS] = 1. + * + * Values: + * - 0 - The Dual Edge Capture mode in this pair of channels is disabled. + * - 1 - The Dual Edge Capture mode in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_DECAPEN2 (18U) //!< Bit position for FTM_COMBINE_DECAPEN2. +#define BM_FTM_COMBINE_DECAPEN2 (0x00040000U) //!< Bit mask for FTM_COMBINE_DECAPEN2. +#define BS_FTM_COMBINE_DECAPEN2 (1U) //!< Bit field size in bits for FTM_COMBINE_DECAPEN2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DECAPEN2 field. +#define BR_FTM_COMBINE_DECAPEN2(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAPEN2)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DECAPEN2. +#define BF_FTM_COMBINE_DECAPEN2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DECAPEN2), uint32_t) & BM_FTM_COMBINE_DECAPEN2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DECAPEN2 field to a new value. +#define BW_FTM_COMBINE_DECAPEN2(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAPEN2) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DECAP2[19] (RW) + * + * Enables the capture of the FTM counter value according to the channel (n) + * input event and the configuration of the dual edge capture bits. This field + * applies only when FTMEN = 1 and DECAPEN = 1. DECAP bit is cleared automatically by + * hardware if dual edge capture - one-shot mode is selected and when the capture + * of channel (n+1) event is made. + * + * Values: + * - 0 - The dual edge captures are inactive. + * - 1 - The dual edge captures are active. + */ +//@{ +#define BP_FTM_COMBINE_DECAP2 (19U) //!< Bit position for FTM_COMBINE_DECAP2. +#define BM_FTM_COMBINE_DECAP2 (0x00080000U) //!< Bit mask for FTM_COMBINE_DECAP2. +#define BS_FTM_COMBINE_DECAP2 (1U) //!< Bit field size in bits for FTM_COMBINE_DECAP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DECAP2 field. +#define BR_FTM_COMBINE_DECAP2(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAP2)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DECAP2. +#define BF_FTM_COMBINE_DECAP2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DECAP2), uint32_t) & BM_FTM_COMBINE_DECAP2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DECAP2 field to a new value. +#define BW_FTM_COMBINE_DECAP2(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAP2) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DTEN2[20] (RW) + * + * Enables the deadtime insertion in the channels (n) and (n+1). This field is + * write protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The deadtime insertion in this pair of channels is disabled. + * - 1 - The deadtime insertion in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_DTEN2 (20U) //!< Bit position for FTM_COMBINE_DTEN2. +#define BM_FTM_COMBINE_DTEN2 (0x00100000U) //!< Bit mask for FTM_COMBINE_DTEN2. +#define BS_FTM_COMBINE_DTEN2 (1U) //!< Bit field size in bits for FTM_COMBINE_DTEN2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DTEN2 field. +#define BR_FTM_COMBINE_DTEN2(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DTEN2)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DTEN2. +#define BF_FTM_COMBINE_DTEN2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DTEN2), uint32_t) & BM_FTM_COMBINE_DTEN2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTEN2 field to a new value. +#define BW_FTM_COMBINE_DTEN2(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DTEN2) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field SYNCEN2[21] (RW) + * + * Enables PWM synchronization of registers C(n)V and C(n+1)V. + * + * Values: + * - 0 - The PWM synchronization in this pair of channels is disabled. + * - 1 - The PWM synchronization in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_SYNCEN2 (21U) //!< Bit position for FTM_COMBINE_SYNCEN2. +#define BM_FTM_COMBINE_SYNCEN2 (0x00200000U) //!< Bit mask for FTM_COMBINE_SYNCEN2. +#define BS_FTM_COMBINE_SYNCEN2 (1U) //!< Bit field size in bits for FTM_COMBINE_SYNCEN2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_SYNCEN2 field. +#define BR_FTM_COMBINE_SYNCEN2(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_SYNCEN2)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_SYNCEN2. +#define BF_FTM_COMBINE_SYNCEN2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_SYNCEN2), uint32_t) & BM_FTM_COMBINE_SYNCEN2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYNCEN2 field to a new value. +#define BW_FTM_COMBINE_SYNCEN2(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_SYNCEN2) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field FAULTEN2[22] (RW) + * + * Enables the fault control in channels (n) and (n+1). This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The fault control in this pair of channels is disabled. + * - 1 - The fault control in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_FAULTEN2 (22U) //!< Bit position for FTM_COMBINE_FAULTEN2. +#define BM_FTM_COMBINE_FAULTEN2 (0x00400000U) //!< Bit mask for FTM_COMBINE_FAULTEN2. +#define BS_FTM_COMBINE_FAULTEN2 (1U) //!< Bit field size in bits for FTM_COMBINE_FAULTEN2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_FAULTEN2 field. +#define BR_FTM_COMBINE_FAULTEN2(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_FAULTEN2)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_FAULTEN2. +#define BF_FTM_COMBINE_FAULTEN2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_FAULTEN2), uint32_t) & BM_FTM_COMBINE_FAULTEN2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULTEN2 field to a new value. +#define BW_FTM_COMBINE_FAULTEN2(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_FAULTEN2) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field COMBINE3[24] (RW) + * + * Enables the combine feature for channels (n) and (n+1). This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Channels (n) and (n+1) are independent. + * - 1 - Channels (n) and (n+1) are combined. + */ +//@{ +#define BP_FTM_COMBINE_COMBINE3 (24U) //!< Bit position for FTM_COMBINE_COMBINE3. +#define BM_FTM_COMBINE_COMBINE3 (0x01000000U) //!< Bit mask for FTM_COMBINE_COMBINE3. +#define BS_FTM_COMBINE_COMBINE3 (1U) //!< Bit field size in bits for FTM_COMBINE_COMBINE3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_COMBINE3 field. +#define BR_FTM_COMBINE_COMBINE3(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMBINE3)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_COMBINE3. +#define BF_FTM_COMBINE_COMBINE3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_COMBINE3), uint32_t) & BM_FTM_COMBINE_COMBINE3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMBINE3 field to a new value. +#define BW_FTM_COMBINE_COMBINE3(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMBINE3) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field COMP3[25] (RW) + * + * Enables Complementary mode for the combined channels. In Complementary mode + * the channel (n+1) output is the inverse of the channel (n) output. This field + * is write protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel (n+1) output is the same as the channel (n) output. + * - 1 - The channel (n+1) output is the complement of the channel (n) output. + */ +//@{ +#define BP_FTM_COMBINE_COMP3 (25U) //!< Bit position for FTM_COMBINE_COMP3. +#define BM_FTM_COMBINE_COMP3 (0x02000000U) //!< Bit mask for FTM_COMBINE_COMP3. +#define BS_FTM_COMBINE_COMP3 (1U) //!< Bit field size in bits for FTM_COMBINE_COMP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_COMP3 field. +#define BR_FTM_COMBINE_COMP3(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMP3)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_COMP3. +#define BF_FTM_COMBINE_COMP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_COMP3), uint32_t) & BM_FTM_COMBINE_COMP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMP3 field to a new value. +#define BW_FTM_COMBINE_COMP3(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_COMP3) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DECAPEN3[26] (RW) + * + * Enables the Dual Edge Capture mode in the channels (n) and (n+1). This bit + * reconfigures the function of MSnA, ELSnB:ELSnA and ELS(n+1)B:ELS(n+1)A bits in + * Dual Edge Capture mode according to #ModeSel1Table. This field applies only + * when FTMEN = 1. This field is write protected. It can be written only when + * MODE[WPDIS] = 1. + * + * Values: + * - 0 - The Dual Edge Capture mode in this pair of channels is disabled. + * - 1 - The Dual Edge Capture mode in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_DECAPEN3 (26U) //!< Bit position for FTM_COMBINE_DECAPEN3. +#define BM_FTM_COMBINE_DECAPEN3 (0x04000000U) //!< Bit mask for FTM_COMBINE_DECAPEN3. +#define BS_FTM_COMBINE_DECAPEN3 (1U) //!< Bit field size in bits for FTM_COMBINE_DECAPEN3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DECAPEN3 field. +#define BR_FTM_COMBINE_DECAPEN3(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAPEN3)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DECAPEN3. +#define BF_FTM_COMBINE_DECAPEN3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DECAPEN3), uint32_t) & BM_FTM_COMBINE_DECAPEN3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DECAPEN3 field to a new value. +#define BW_FTM_COMBINE_DECAPEN3(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAPEN3) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DECAP3[27] (RW) + * + * Enables the capture of the FTM counter value according to the channel (n) + * input event and the configuration of the dual edge capture bits. This field + * applies only when FTMEN = 1 and DECAPEN = 1. DECAP bit is cleared automatically by + * hardware if dual edge capture - one-shot mode is selected and when the capture + * of channel (n+1) event is made. + * + * Values: + * - 0 - The dual edge captures are inactive. + * - 1 - The dual edge captures are active. + */ +//@{ +#define BP_FTM_COMBINE_DECAP3 (27U) //!< Bit position for FTM_COMBINE_DECAP3. +#define BM_FTM_COMBINE_DECAP3 (0x08000000U) //!< Bit mask for FTM_COMBINE_DECAP3. +#define BS_FTM_COMBINE_DECAP3 (1U) //!< Bit field size in bits for FTM_COMBINE_DECAP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DECAP3 field. +#define BR_FTM_COMBINE_DECAP3(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAP3)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DECAP3. +#define BF_FTM_COMBINE_DECAP3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DECAP3), uint32_t) & BM_FTM_COMBINE_DECAP3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DECAP3 field to a new value. +#define BW_FTM_COMBINE_DECAP3(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DECAP3) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field DTEN3[28] (RW) + * + * Enables the deadtime insertion in the channels (n) and (n+1). This field is + * write protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The deadtime insertion in this pair of channels is disabled. + * - 1 - The deadtime insertion in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_DTEN3 (28U) //!< Bit position for FTM_COMBINE_DTEN3. +#define BM_FTM_COMBINE_DTEN3 (0x10000000U) //!< Bit mask for FTM_COMBINE_DTEN3. +#define BS_FTM_COMBINE_DTEN3 (1U) //!< Bit field size in bits for FTM_COMBINE_DTEN3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_DTEN3 field. +#define BR_FTM_COMBINE_DTEN3(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DTEN3)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_DTEN3. +#define BF_FTM_COMBINE_DTEN3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_DTEN3), uint32_t) & BM_FTM_COMBINE_DTEN3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTEN3 field to a new value. +#define BW_FTM_COMBINE_DTEN3(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_DTEN3) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field SYNCEN3[29] (RW) + * + * Enables PWM synchronization of registers C(n)V and C(n+1)V. + * + * Values: + * - 0 - The PWM synchronization in this pair of channels is disabled. + * - 1 - The PWM synchronization in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_SYNCEN3 (29U) //!< Bit position for FTM_COMBINE_SYNCEN3. +#define BM_FTM_COMBINE_SYNCEN3 (0x20000000U) //!< Bit mask for FTM_COMBINE_SYNCEN3. +#define BS_FTM_COMBINE_SYNCEN3 (1U) //!< Bit field size in bits for FTM_COMBINE_SYNCEN3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_SYNCEN3 field. +#define BR_FTM_COMBINE_SYNCEN3(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_SYNCEN3)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_SYNCEN3. +#define BF_FTM_COMBINE_SYNCEN3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_SYNCEN3), uint32_t) & BM_FTM_COMBINE_SYNCEN3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYNCEN3 field to a new value. +#define BW_FTM_COMBINE_SYNCEN3(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_SYNCEN3) = (v)) +#endif +//@} + +/*! + * @name Register FTM_COMBINE, field FAULTEN3[30] (RW) + * + * Enables the fault control in channels (n) and (n+1). This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The fault control in this pair of channels is disabled. + * - 1 - The fault control in this pair of channels is enabled. + */ +//@{ +#define BP_FTM_COMBINE_FAULTEN3 (30U) //!< Bit position for FTM_COMBINE_FAULTEN3. +#define BM_FTM_COMBINE_FAULTEN3 (0x40000000U) //!< Bit mask for FTM_COMBINE_FAULTEN3. +#define BS_FTM_COMBINE_FAULTEN3 (1U) //!< Bit field size in bits for FTM_COMBINE_FAULTEN3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_COMBINE_FAULTEN3 field. +#define BR_FTM_COMBINE_FAULTEN3(x) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_FAULTEN3)) +#endif + +//! @brief Format value for bitfield FTM_COMBINE_FAULTEN3. +#define BF_FTM_COMBINE_FAULTEN3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_COMBINE_FAULTEN3), uint32_t) & BM_FTM_COMBINE_FAULTEN3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULTEN3 field to a new value. +#define BW_FTM_COMBINE_FAULTEN3(x, v) (BITBAND_ACCESS32(HW_FTM_COMBINE_ADDR(x), BP_FTM_COMBINE_FAULTEN3) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_DEADTIME - Deadtime Insertion Control +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_DEADTIME - Deadtime Insertion Control (RW) + * + * Reset value: 0x00000000U + * + * This register selects the deadtime prescaler factor and deadtime value. All + * FTM channels use this clock prescaler and this deadtime value for the deadtime + * insertion. + */ +typedef union _hw_ftm_deadtime +{ + uint32_t U; + struct _hw_ftm_deadtime_bitfields + { + uint32_t DTVAL : 6; //!< [5:0] Deadtime Value + uint32_t DTPS : 2; //!< [7:6] Deadtime Prescaler Value + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_deadtime_t; +#endif + +/*! + * @name Constants and macros for entire FTM_DEADTIME register + */ +//@{ +#define HW_FTM_DEADTIME_ADDR(x) (REGS_FTM_BASE(x) + 0x68U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_DEADTIME(x) (*(__IO hw_ftm_deadtime_t *) HW_FTM_DEADTIME_ADDR(x)) +#define HW_FTM_DEADTIME_RD(x) (HW_FTM_DEADTIME(x).U) +#define HW_FTM_DEADTIME_WR(x, v) (HW_FTM_DEADTIME(x).U = (v)) +#define HW_FTM_DEADTIME_SET(x, v) (HW_FTM_DEADTIME_WR(x, HW_FTM_DEADTIME_RD(x) | (v))) +#define HW_FTM_DEADTIME_CLR(x, v) (HW_FTM_DEADTIME_WR(x, HW_FTM_DEADTIME_RD(x) & ~(v))) +#define HW_FTM_DEADTIME_TOG(x, v) (HW_FTM_DEADTIME_WR(x, HW_FTM_DEADTIME_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_DEADTIME bitfields + */ + +/*! + * @name Register FTM_DEADTIME, field DTVAL[5:0] (RW) + * + * Selects the deadtime insertion value for the deadtime counter. The deadtime + * counter is clocked by a scaled version of the system clock. See the description + * of DTPS. Deadtime insert value = (DTPS * DTVAL). DTVAL selects the number of + * deadtime counts inserted as follows: When DTVAL is 0, no counts are inserted. + * When DTVAL is 1, 1 count is inserted. When DTVAL is 2, 2 counts are inserted. + * This pattern continues up to a possible 63 counts. This field is write + * protected. It can be written only when MODE[WPDIS] = 1. + */ +//@{ +#define BP_FTM_DEADTIME_DTVAL (0U) //!< Bit position for FTM_DEADTIME_DTVAL. +#define BM_FTM_DEADTIME_DTVAL (0x0000003FU) //!< Bit mask for FTM_DEADTIME_DTVAL. +#define BS_FTM_DEADTIME_DTVAL (6U) //!< Bit field size in bits for FTM_DEADTIME_DTVAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_DEADTIME_DTVAL field. +#define BR_FTM_DEADTIME_DTVAL(x) (HW_FTM_DEADTIME(x).B.DTVAL) +#endif + +//! @brief Format value for bitfield FTM_DEADTIME_DTVAL. +#define BF_FTM_DEADTIME_DTVAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_DEADTIME_DTVAL), uint32_t) & BM_FTM_DEADTIME_DTVAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTVAL field to a new value. +#define BW_FTM_DEADTIME_DTVAL(x, v) (HW_FTM_DEADTIME_WR(x, (HW_FTM_DEADTIME_RD(x) & ~BM_FTM_DEADTIME_DTVAL) | BF_FTM_DEADTIME_DTVAL(v))) +#endif +//@} + +/*! + * @name Register FTM_DEADTIME, field DTPS[7:6] (RW) + * + * Selects the division factor of the system clock. This prescaled clock is used + * by the deadtime counter. This field is write protected. It can be written + * only when MODE[WPDIS] = 1. + * + * Values: + * - 0x - Divide the system clock by 1. + * - 10 - Divide the system clock by 4. + * - 11 - Divide the system clock by 16. + */ +//@{ +#define BP_FTM_DEADTIME_DTPS (6U) //!< Bit position for FTM_DEADTIME_DTPS. +#define BM_FTM_DEADTIME_DTPS (0x000000C0U) //!< Bit mask for FTM_DEADTIME_DTPS. +#define BS_FTM_DEADTIME_DTPS (2U) //!< Bit field size in bits for FTM_DEADTIME_DTPS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_DEADTIME_DTPS field. +#define BR_FTM_DEADTIME_DTPS(x) (HW_FTM_DEADTIME(x).B.DTPS) +#endif + +//! @brief Format value for bitfield FTM_DEADTIME_DTPS. +#define BF_FTM_DEADTIME_DTPS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_DEADTIME_DTPS), uint32_t) & BM_FTM_DEADTIME_DTPS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTPS field to a new value. +#define BW_FTM_DEADTIME_DTPS(x, v) (HW_FTM_DEADTIME_WR(x, (HW_FTM_DEADTIME_RD(x) & ~BM_FTM_DEADTIME_DTPS) | BF_FTM_DEADTIME_DTPS(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_EXTTRIG - FTM External Trigger +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_EXTTRIG - FTM External Trigger (RW) + * + * Reset value: 0x00000000U + * + * This register: Indicates when a channel trigger was generated Enables the + * generation of a trigger when the FTM counter is equal to its initial value + * Selects which channels are used in the generation of the channel triggers Several + * channels can be selected to generate multiple triggers in one PWM period. + * Channels 6 and 7 are not used to generate channel triggers. + */ +typedef union _hw_ftm_exttrig +{ + uint32_t U; + struct _hw_ftm_exttrig_bitfields + { + uint32_t CH2TRIG : 1; //!< [0] Channel 2 Trigger Enable + uint32_t CH3TRIG : 1; //!< [1] Channel 3 Trigger Enable + uint32_t CH4TRIG : 1; //!< [2] Channel 4 Trigger Enable + uint32_t CH5TRIG : 1; //!< [3] Channel 5 Trigger Enable + uint32_t CH0TRIG : 1; //!< [4] Channel 0 Trigger Enable + uint32_t CH1TRIG : 1; //!< [5] Channel 1 Trigger Enable + uint32_t INITTRIGEN : 1; //!< [6] Initialization Trigger Enable + uint32_t TRIGF : 1; //!< [7] Channel Trigger Flag + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_exttrig_t; +#endif + +/*! + * @name Constants and macros for entire FTM_EXTTRIG register + */ +//@{ +#define HW_FTM_EXTTRIG_ADDR(x) (REGS_FTM_BASE(x) + 0x6CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_EXTTRIG(x) (*(__IO hw_ftm_exttrig_t *) HW_FTM_EXTTRIG_ADDR(x)) +#define HW_FTM_EXTTRIG_RD(x) (HW_FTM_EXTTRIG(x).U) +#define HW_FTM_EXTTRIG_WR(x, v) (HW_FTM_EXTTRIG(x).U = (v)) +#define HW_FTM_EXTTRIG_SET(x, v) (HW_FTM_EXTTRIG_WR(x, HW_FTM_EXTTRIG_RD(x) | (v))) +#define HW_FTM_EXTTRIG_CLR(x, v) (HW_FTM_EXTTRIG_WR(x, HW_FTM_EXTTRIG_RD(x) & ~(v))) +#define HW_FTM_EXTTRIG_TOG(x, v) (HW_FTM_EXTTRIG_WR(x, HW_FTM_EXTTRIG_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_EXTTRIG bitfields + */ + +/*! + * @name Register FTM_EXTTRIG, field CH2TRIG[0] (RW) + * + * Enables the generation of the channel trigger when the FTM counter is equal + * to the CnV register. + * + * Values: + * - 0 - The generation of the channel trigger is disabled. + * - 1 - The generation of the channel trigger is enabled. + */ +//@{ +#define BP_FTM_EXTTRIG_CH2TRIG (0U) //!< Bit position for FTM_EXTTRIG_CH2TRIG. +#define BM_FTM_EXTTRIG_CH2TRIG (0x00000001U) //!< Bit mask for FTM_EXTTRIG_CH2TRIG. +#define BS_FTM_EXTTRIG_CH2TRIG (1U) //!< Bit field size in bits for FTM_EXTTRIG_CH2TRIG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_EXTTRIG_CH2TRIG field. +#define BR_FTM_EXTTRIG_CH2TRIG(x) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH2TRIG)) +#endif + +//! @brief Format value for bitfield FTM_EXTTRIG_CH2TRIG. +#define BF_FTM_EXTTRIG_CH2TRIG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_EXTTRIG_CH2TRIG), uint32_t) & BM_FTM_EXTTRIG_CH2TRIG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH2TRIG field to a new value. +#define BW_FTM_EXTTRIG_CH2TRIG(x, v) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH2TRIG) = (v)) +#endif +//@} + +/*! + * @name Register FTM_EXTTRIG, field CH3TRIG[1] (RW) + * + * Enables the generation of the channel trigger when the FTM counter is equal + * to the CnV register. + * + * Values: + * - 0 - The generation of the channel trigger is disabled. + * - 1 - The generation of the channel trigger is enabled. + */ +//@{ +#define BP_FTM_EXTTRIG_CH3TRIG (1U) //!< Bit position for FTM_EXTTRIG_CH3TRIG. +#define BM_FTM_EXTTRIG_CH3TRIG (0x00000002U) //!< Bit mask for FTM_EXTTRIG_CH3TRIG. +#define BS_FTM_EXTTRIG_CH3TRIG (1U) //!< Bit field size in bits for FTM_EXTTRIG_CH3TRIG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_EXTTRIG_CH3TRIG field. +#define BR_FTM_EXTTRIG_CH3TRIG(x) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH3TRIG)) +#endif + +//! @brief Format value for bitfield FTM_EXTTRIG_CH3TRIG. +#define BF_FTM_EXTTRIG_CH3TRIG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_EXTTRIG_CH3TRIG), uint32_t) & BM_FTM_EXTTRIG_CH3TRIG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH3TRIG field to a new value. +#define BW_FTM_EXTTRIG_CH3TRIG(x, v) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH3TRIG) = (v)) +#endif +//@} + +/*! + * @name Register FTM_EXTTRIG, field CH4TRIG[2] (RW) + * + * Enables the generation of the channel trigger when the FTM counter is equal + * to the CnV register. + * + * Values: + * - 0 - The generation of the channel trigger is disabled. + * - 1 - The generation of the channel trigger is enabled. + */ +//@{ +#define BP_FTM_EXTTRIG_CH4TRIG (2U) //!< Bit position for FTM_EXTTRIG_CH4TRIG. +#define BM_FTM_EXTTRIG_CH4TRIG (0x00000004U) //!< Bit mask for FTM_EXTTRIG_CH4TRIG. +#define BS_FTM_EXTTRIG_CH4TRIG (1U) //!< Bit field size in bits for FTM_EXTTRIG_CH4TRIG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_EXTTRIG_CH4TRIG field. +#define BR_FTM_EXTTRIG_CH4TRIG(x) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH4TRIG)) +#endif + +//! @brief Format value for bitfield FTM_EXTTRIG_CH4TRIG. +#define BF_FTM_EXTTRIG_CH4TRIG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_EXTTRIG_CH4TRIG), uint32_t) & BM_FTM_EXTTRIG_CH4TRIG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH4TRIG field to a new value. +#define BW_FTM_EXTTRIG_CH4TRIG(x, v) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH4TRIG) = (v)) +#endif +//@} + +/*! + * @name Register FTM_EXTTRIG, field CH5TRIG[3] (RW) + * + * Enables the generation of the channel trigger when the FTM counter is equal + * to the CnV register. + * + * Values: + * - 0 - The generation of the channel trigger is disabled. + * - 1 - The generation of the channel trigger is enabled. + */ +//@{ +#define BP_FTM_EXTTRIG_CH5TRIG (3U) //!< Bit position for FTM_EXTTRIG_CH5TRIG. +#define BM_FTM_EXTTRIG_CH5TRIG (0x00000008U) //!< Bit mask for FTM_EXTTRIG_CH5TRIG. +#define BS_FTM_EXTTRIG_CH5TRIG (1U) //!< Bit field size in bits for FTM_EXTTRIG_CH5TRIG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_EXTTRIG_CH5TRIG field. +#define BR_FTM_EXTTRIG_CH5TRIG(x) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH5TRIG)) +#endif + +//! @brief Format value for bitfield FTM_EXTTRIG_CH5TRIG. +#define BF_FTM_EXTTRIG_CH5TRIG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_EXTTRIG_CH5TRIG), uint32_t) & BM_FTM_EXTTRIG_CH5TRIG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH5TRIG field to a new value. +#define BW_FTM_EXTTRIG_CH5TRIG(x, v) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH5TRIG) = (v)) +#endif +//@} + +/*! + * @name Register FTM_EXTTRIG, field CH0TRIG[4] (RW) + * + * Enables the generation of the channel trigger when the FTM counter is equal + * to the CnV register. + * + * Values: + * - 0 - The generation of the channel trigger is disabled. + * - 1 - The generation of the channel trigger is enabled. + */ +//@{ +#define BP_FTM_EXTTRIG_CH0TRIG (4U) //!< Bit position for FTM_EXTTRIG_CH0TRIG. +#define BM_FTM_EXTTRIG_CH0TRIG (0x00000010U) //!< Bit mask for FTM_EXTTRIG_CH0TRIG. +#define BS_FTM_EXTTRIG_CH0TRIG (1U) //!< Bit field size in bits for FTM_EXTTRIG_CH0TRIG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_EXTTRIG_CH0TRIG field. +#define BR_FTM_EXTTRIG_CH0TRIG(x) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH0TRIG)) +#endif + +//! @brief Format value for bitfield FTM_EXTTRIG_CH0TRIG. +#define BF_FTM_EXTTRIG_CH0TRIG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_EXTTRIG_CH0TRIG), uint32_t) & BM_FTM_EXTTRIG_CH0TRIG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH0TRIG field to a new value. +#define BW_FTM_EXTTRIG_CH0TRIG(x, v) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH0TRIG) = (v)) +#endif +//@} + +/*! + * @name Register FTM_EXTTRIG, field CH1TRIG[5] (RW) + * + * Enables the generation of the channel trigger when the FTM counter is equal + * to the CnV register. + * + * Values: + * - 0 - The generation of the channel trigger is disabled. + * - 1 - The generation of the channel trigger is enabled. + */ +//@{ +#define BP_FTM_EXTTRIG_CH1TRIG (5U) //!< Bit position for FTM_EXTTRIG_CH1TRIG. +#define BM_FTM_EXTTRIG_CH1TRIG (0x00000020U) //!< Bit mask for FTM_EXTTRIG_CH1TRIG. +#define BS_FTM_EXTTRIG_CH1TRIG (1U) //!< Bit field size in bits for FTM_EXTTRIG_CH1TRIG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_EXTTRIG_CH1TRIG field. +#define BR_FTM_EXTTRIG_CH1TRIG(x) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH1TRIG)) +#endif + +//! @brief Format value for bitfield FTM_EXTTRIG_CH1TRIG. +#define BF_FTM_EXTTRIG_CH1TRIG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_EXTTRIG_CH1TRIG), uint32_t) & BM_FTM_EXTTRIG_CH1TRIG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH1TRIG field to a new value. +#define BW_FTM_EXTTRIG_CH1TRIG(x, v) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_CH1TRIG) = (v)) +#endif +//@} + +/*! + * @name Register FTM_EXTTRIG, field INITTRIGEN[6] (RW) + * + * Enables the generation of the trigger when the FTM counter is equal to the + * CNTIN register. + * + * Values: + * - 0 - The generation of initialization trigger is disabled. + * - 1 - The generation of initialization trigger is enabled. + */ +//@{ +#define BP_FTM_EXTTRIG_INITTRIGEN (6U) //!< Bit position for FTM_EXTTRIG_INITTRIGEN. +#define BM_FTM_EXTTRIG_INITTRIGEN (0x00000040U) //!< Bit mask for FTM_EXTTRIG_INITTRIGEN. +#define BS_FTM_EXTTRIG_INITTRIGEN (1U) //!< Bit field size in bits for FTM_EXTTRIG_INITTRIGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_EXTTRIG_INITTRIGEN field. +#define BR_FTM_EXTTRIG_INITTRIGEN(x) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_INITTRIGEN)) +#endif + +//! @brief Format value for bitfield FTM_EXTTRIG_INITTRIGEN. +#define BF_FTM_EXTTRIG_INITTRIGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_EXTTRIG_INITTRIGEN), uint32_t) & BM_FTM_EXTTRIG_INITTRIGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INITTRIGEN field to a new value. +#define BW_FTM_EXTTRIG_INITTRIGEN(x, v) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_INITTRIGEN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_EXTTRIG, field TRIGF[7] (ROWZ) + * + * Set by hardware when a channel trigger is generated. Clear TRIGF by reading + * EXTTRIG while TRIGF is set and then writing a 0 to TRIGF. Writing a 1 to TRIGF + * has no effect. If another channel trigger is generated before the clearing + * sequence is completed, the sequence is reset so TRIGF remains set after the clear + * sequence is completed for the earlier TRIGF. + * + * Values: + * - 0 - No channel trigger was generated. + * - 1 - A channel trigger was generated. + */ +//@{ +#define BP_FTM_EXTTRIG_TRIGF (7U) //!< Bit position for FTM_EXTTRIG_TRIGF. +#define BM_FTM_EXTTRIG_TRIGF (0x00000080U) //!< Bit mask for FTM_EXTTRIG_TRIGF. +#define BS_FTM_EXTTRIG_TRIGF (1U) //!< Bit field size in bits for FTM_EXTTRIG_TRIGF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_EXTTRIG_TRIGF field. +#define BR_FTM_EXTTRIG_TRIGF(x) (BITBAND_ACCESS32(HW_FTM_EXTTRIG_ADDR(x), BP_FTM_EXTTRIG_TRIGF)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_POL - Channels Polarity +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_POL - Channels Polarity (RW) + * + * Reset value: 0x00000000U + * + * This register defines the output polarity of the FTM channels. The safe value + * that is driven in a channel output when the fault control is enabled and a + * fault condition is detected is the inactive state of the channel. That is, the + * safe value of a channel is the value of its POL bit. + */ +typedef union _hw_ftm_pol +{ + uint32_t U; + struct _hw_ftm_pol_bitfields + { + uint32_t POL0 : 1; //!< [0] Channel 0 Polarity + uint32_t POL1 : 1; //!< [1] Channel 1 Polarity + uint32_t POL2 : 1; //!< [2] Channel 2 Polarity + uint32_t POL3 : 1; //!< [3] Channel 3 Polarity + uint32_t POL4 : 1; //!< [4] Channel 4 Polarity + uint32_t POL5 : 1; //!< [5] Channel 5 Polarity + uint32_t POL6 : 1; //!< [6] Channel 6 Polarity + uint32_t POL7 : 1; //!< [7] Channel 7 Polarity + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_pol_t; +#endif + +/*! + * @name Constants and macros for entire FTM_POL register + */ +//@{ +#define HW_FTM_POL_ADDR(x) (REGS_FTM_BASE(x) + 0x70U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_POL(x) (*(__IO hw_ftm_pol_t *) HW_FTM_POL_ADDR(x)) +#define HW_FTM_POL_RD(x) (HW_FTM_POL(x).U) +#define HW_FTM_POL_WR(x, v) (HW_FTM_POL(x).U = (v)) +#define HW_FTM_POL_SET(x, v) (HW_FTM_POL_WR(x, HW_FTM_POL_RD(x) | (v))) +#define HW_FTM_POL_CLR(x, v) (HW_FTM_POL_WR(x, HW_FTM_POL_RD(x) & ~(v))) +#define HW_FTM_POL_TOG(x, v) (HW_FTM_POL_WR(x, HW_FTM_POL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_POL bitfields + */ + +/*! + * @name Register FTM_POL, field POL0[0] (RW) + * + * Defines the polarity of the channel output. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel polarity is active high. + * - 1 - The channel polarity is active low. + */ +//@{ +#define BP_FTM_POL_POL0 (0U) //!< Bit position for FTM_POL_POL0. +#define BM_FTM_POL_POL0 (0x00000001U) //!< Bit mask for FTM_POL_POL0. +#define BS_FTM_POL_POL0 (1U) //!< Bit field size in bits for FTM_POL_POL0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_POL_POL0 field. +#define BR_FTM_POL_POL0(x) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL0)) +#endif + +//! @brief Format value for bitfield FTM_POL_POL0. +#define BF_FTM_POL_POL0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_POL_POL0), uint32_t) & BM_FTM_POL_POL0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the POL0 field to a new value. +#define BW_FTM_POL_POL0(x, v) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL0) = (v)) +#endif +//@} + +/*! + * @name Register FTM_POL, field POL1[1] (RW) + * + * Defines the polarity of the channel output. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel polarity is active high. + * - 1 - The channel polarity is active low. + */ +//@{ +#define BP_FTM_POL_POL1 (1U) //!< Bit position for FTM_POL_POL1. +#define BM_FTM_POL_POL1 (0x00000002U) //!< Bit mask for FTM_POL_POL1. +#define BS_FTM_POL_POL1 (1U) //!< Bit field size in bits for FTM_POL_POL1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_POL_POL1 field. +#define BR_FTM_POL_POL1(x) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL1)) +#endif + +//! @brief Format value for bitfield FTM_POL_POL1. +#define BF_FTM_POL_POL1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_POL_POL1), uint32_t) & BM_FTM_POL_POL1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the POL1 field to a new value. +#define BW_FTM_POL_POL1(x, v) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL1) = (v)) +#endif +//@} + +/*! + * @name Register FTM_POL, field POL2[2] (RW) + * + * Defines the polarity of the channel output. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel polarity is active high. + * - 1 - The channel polarity is active low. + */ +//@{ +#define BP_FTM_POL_POL2 (2U) //!< Bit position for FTM_POL_POL2. +#define BM_FTM_POL_POL2 (0x00000004U) //!< Bit mask for FTM_POL_POL2. +#define BS_FTM_POL_POL2 (1U) //!< Bit field size in bits for FTM_POL_POL2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_POL_POL2 field. +#define BR_FTM_POL_POL2(x) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL2)) +#endif + +//! @brief Format value for bitfield FTM_POL_POL2. +#define BF_FTM_POL_POL2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_POL_POL2), uint32_t) & BM_FTM_POL_POL2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the POL2 field to a new value. +#define BW_FTM_POL_POL2(x, v) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL2) = (v)) +#endif +//@} + +/*! + * @name Register FTM_POL, field POL3[3] (RW) + * + * Defines the polarity of the channel output. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel polarity is active high. + * - 1 - The channel polarity is active low. + */ +//@{ +#define BP_FTM_POL_POL3 (3U) //!< Bit position for FTM_POL_POL3. +#define BM_FTM_POL_POL3 (0x00000008U) //!< Bit mask for FTM_POL_POL3. +#define BS_FTM_POL_POL3 (1U) //!< Bit field size in bits for FTM_POL_POL3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_POL_POL3 field. +#define BR_FTM_POL_POL3(x) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL3)) +#endif + +//! @brief Format value for bitfield FTM_POL_POL3. +#define BF_FTM_POL_POL3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_POL_POL3), uint32_t) & BM_FTM_POL_POL3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the POL3 field to a new value. +#define BW_FTM_POL_POL3(x, v) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL3) = (v)) +#endif +//@} + +/*! + * @name Register FTM_POL, field POL4[4] (RW) + * + * Defines the polarity of the channel output. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel polarity is active high. + * - 1 - The channel polarity is active low. + */ +//@{ +#define BP_FTM_POL_POL4 (4U) //!< Bit position for FTM_POL_POL4. +#define BM_FTM_POL_POL4 (0x00000010U) //!< Bit mask for FTM_POL_POL4. +#define BS_FTM_POL_POL4 (1U) //!< Bit field size in bits for FTM_POL_POL4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_POL_POL4 field. +#define BR_FTM_POL_POL4(x) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL4)) +#endif + +//! @brief Format value for bitfield FTM_POL_POL4. +#define BF_FTM_POL_POL4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_POL_POL4), uint32_t) & BM_FTM_POL_POL4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the POL4 field to a new value. +#define BW_FTM_POL_POL4(x, v) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL4) = (v)) +#endif +//@} + +/*! + * @name Register FTM_POL, field POL5[5] (RW) + * + * Defines the polarity of the channel output. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel polarity is active high. + * - 1 - The channel polarity is active low. + */ +//@{ +#define BP_FTM_POL_POL5 (5U) //!< Bit position for FTM_POL_POL5. +#define BM_FTM_POL_POL5 (0x00000020U) //!< Bit mask for FTM_POL_POL5. +#define BS_FTM_POL_POL5 (1U) //!< Bit field size in bits for FTM_POL_POL5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_POL_POL5 field. +#define BR_FTM_POL_POL5(x) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL5)) +#endif + +//! @brief Format value for bitfield FTM_POL_POL5. +#define BF_FTM_POL_POL5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_POL_POL5), uint32_t) & BM_FTM_POL_POL5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the POL5 field to a new value. +#define BW_FTM_POL_POL5(x, v) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL5) = (v)) +#endif +//@} + +/*! + * @name Register FTM_POL, field POL6[6] (RW) + * + * Defines the polarity of the channel output. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel polarity is active high. + * - 1 - The channel polarity is active low. + */ +//@{ +#define BP_FTM_POL_POL6 (6U) //!< Bit position for FTM_POL_POL6. +#define BM_FTM_POL_POL6 (0x00000040U) //!< Bit mask for FTM_POL_POL6. +#define BS_FTM_POL_POL6 (1U) //!< Bit field size in bits for FTM_POL_POL6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_POL_POL6 field. +#define BR_FTM_POL_POL6(x) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL6)) +#endif + +//! @brief Format value for bitfield FTM_POL_POL6. +#define BF_FTM_POL_POL6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_POL_POL6), uint32_t) & BM_FTM_POL_POL6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the POL6 field to a new value. +#define BW_FTM_POL_POL6(x, v) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL6) = (v)) +#endif +//@} + +/*! + * @name Register FTM_POL, field POL7[7] (RW) + * + * Defines the polarity of the channel output. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The channel polarity is active high. + * - 1 - The channel polarity is active low. + */ +//@{ +#define BP_FTM_POL_POL7 (7U) //!< Bit position for FTM_POL_POL7. +#define BM_FTM_POL_POL7 (0x00000080U) //!< Bit mask for FTM_POL_POL7. +#define BS_FTM_POL_POL7 (1U) //!< Bit field size in bits for FTM_POL_POL7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_POL_POL7 field. +#define BR_FTM_POL_POL7(x) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL7)) +#endif + +//! @brief Format value for bitfield FTM_POL_POL7. +#define BF_FTM_POL_POL7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_POL_POL7), uint32_t) & BM_FTM_POL_POL7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the POL7 field to a new value. +#define BW_FTM_POL_POL7(x, v) (BITBAND_ACCESS32(HW_FTM_POL_ADDR(x), BP_FTM_POL_POL7) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_FMS - Fault Mode Status +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_FMS - Fault Mode Status (RW) + * + * Reset value: 0x00000000U + * + * This register contains the fault detection flags, write protection enable + * bit, and the logic OR of the enabled fault inputs. + */ +typedef union _hw_ftm_fms +{ + uint32_t U; + struct _hw_ftm_fms_bitfields + { + uint32_t FAULTF0 : 1; //!< [0] Fault Detection Flag 0 + uint32_t FAULTF1 : 1; //!< [1] Fault Detection Flag 1 + uint32_t FAULTF2 : 1; //!< [2] Fault Detection Flag 2 + uint32_t FAULTF3 : 1; //!< [3] Fault Detection Flag 3 + uint32_t RESERVED0 : 1; //!< [4] + uint32_t FAULTIN : 1; //!< [5] Fault Inputs + uint32_t WPEN : 1; //!< [6] Write Protection Enable + uint32_t FAULTF : 1; //!< [7] Fault Detection Flag + uint32_t RESERVED1 : 24; //!< [31:8] + } B; +} hw_ftm_fms_t; +#endif + +/*! + * @name Constants and macros for entire FTM_FMS register + */ +//@{ +#define HW_FTM_FMS_ADDR(x) (REGS_FTM_BASE(x) + 0x74U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_FMS(x) (*(__IO hw_ftm_fms_t *) HW_FTM_FMS_ADDR(x)) +#define HW_FTM_FMS_RD(x) (HW_FTM_FMS(x).U) +#define HW_FTM_FMS_WR(x, v) (HW_FTM_FMS(x).U = (v)) +#define HW_FTM_FMS_SET(x, v) (HW_FTM_FMS_WR(x, HW_FTM_FMS_RD(x) | (v))) +#define HW_FTM_FMS_CLR(x, v) (HW_FTM_FMS_WR(x, HW_FTM_FMS_RD(x) & ~(v))) +#define HW_FTM_FMS_TOG(x, v) (HW_FTM_FMS_WR(x, HW_FTM_FMS_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_FMS bitfields + */ + +/*! + * @name Register FTM_FMS, field FAULTF0[0] (ROWZ) + * + * Set by hardware when fault control is enabled, the corresponding fault input + * is enabled and a fault condition is detected at the fault input. Clear FAULTF0 + * by reading the FMS register while FAULTF0 is set and then writing a 0 to + * FAULTF0 while there is no existing fault condition at the corresponding fault + * input. Writing a 1 to FAULTF0 has no effect. FAULTF0 bit is also cleared when + * FAULTF bit is cleared. If another fault condition is detected at the corresponding + * fault input before the clearing sequence is completed, the sequence is reset + * so FAULTF0 remains set after the clearing sequence is completed for the + * earlier fault condition. + * + * Values: + * - 0 - No fault condition was detected at the fault input. + * - 1 - A fault condition was detected at the fault input. + */ +//@{ +#define BP_FTM_FMS_FAULTF0 (0U) //!< Bit position for FTM_FMS_FAULTF0. +#define BM_FTM_FMS_FAULTF0 (0x00000001U) //!< Bit mask for FTM_FMS_FAULTF0. +#define BS_FTM_FMS_FAULTF0 (1U) //!< Bit field size in bits for FTM_FMS_FAULTF0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FMS_FAULTF0 field. +#define BR_FTM_FMS_FAULTF0(x) (BITBAND_ACCESS32(HW_FTM_FMS_ADDR(x), BP_FTM_FMS_FAULTF0)) +#endif +//@} + +/*! + * @name Register FTM_FMS, field FAULTF1[1] (ROWZ) + * + * Set by hardware when fault control is enabled, the corresponding fault input + * is enabled and a fault condition is detected at the fault input. Clear FAULTF1 + * by reading the FMS register while FAULTF1 is set and then writing a 0 to + * FAULTF1 while there is no existing fault condition at the corresponding fault + * input. Writing a 1 to FAULTF1 has no effect. FAULTF1 bit is also cleared when + * FAULTF bit is cleared. If another fault condition is detected at the corresponding + * fault input before the clearing sequence is completed, the sequence is reset + * so FAULTF1 remains set after the clearing sequence is completed for the + * earlier fault condition. + * + * Values: + * - 0 - No fault condition was detected at the fault input. + * - 1 - A fault condition was detected at the fault input. + */ +//@{ +#define BP_FTM_FMS_FAULTF1 (1U) //!< Bit position for FTM_FMS_FAULTF1. +#define BM_FTM_FMS_FAULTF1 (0x00000002U) //!< Bit mask for FTM_FMS_FAULTF1. +#define BS_FTM_FMS_FAULTF1 (1U) //!< Bit field size in bits for FTM_FMS_FAULTF1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FMS_FAULTF1 field. +#define BR_FTM_FMS_FAULTF1(x) (BITBAND_ACCESS32(HW_FTM_FMS_ADDR(x), BP_FTM_FMS_FAULTF1)) +#endif +//@} + +/*! + * @name Register FTM_FMS, field FAULTF2[2] (ROWZ) + * + * Set by hardware when fault control is enabled, the corresponding fault input + * is enabled and a fault condition is detected at the fault input. Clear FAULTF2 + * by reading the FMS register while FAULTF2 is set and then writing a 0 to + * FAULTF2 while there is no existing fault condition at the corresponding fault + * input. Writing a 1 to FAULTF2 has no effect. FAULTF2 bit is also cleared when + * FAULTF bit is cleared. If another fault condition is detected at the corresponding + * fault input before the clearing sequence is completed, the sequence is reset + * so FAULTF2 remains set after the clearing sequence is completed for the + * earlier fault condition. + * + * Values: + * - 0 - No fault condition was detected at the fault input. + * - 1 - A fault condition was detected at the fault input. + */ +//@{ +#define BP_FTM_FMS_FAULTF2 (2U) //!< Bit position for FTM_FMS_FAULTF2. +#define BM_FTM_FMS_FAULTF2 (0x00000004U) //!< Bit mask for FTM_FMS_FAULTF2. +#define BS_FTM_FMS_FAULTF2 (1U) //!< Bit field size in bits for FTM_FMS_FAULTF2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FMS_FAULTF2 field. +#define BR_FTM_FMS_FAULTF2(x) (BITBAND_ACCESS32(HW_FTM_FMS_ADDR(x), BP_FTM_FMS_FAULTF2)) +#endif +//@} + +/*! + * @name Register FTM_FMS, field FAULTF3[3] (ROWZ) + * + * Set by hardware when fault control is enabled, the corresponding fault input + * is enabled and a fault condition is detected at the fault input. Clear FAULTF3 + * by reading the FMS register while FAULTF3 is set and then writing a 0 to + * FAULTF3 while there is no existing fault condition at the corresponding fault + * input. Writing a 1 to FAULTF3 has no effect. FAULTF3 bit is also cleared when + * FAULTF bit is cleared. If another fault condition is detected at the corresponding + * fault input before the clearing sequence is completed, the sequence is reset + * so FAULTF3 remains set after the clearing sequence is completed for the + * earlier fault condition. + * + * Values: + * - 0 - No fault condition was detected at the fault input. + * - 1 - A fault condition was detected at the fault input. + */ +//@{ +#define BP_FTM_FMS_FAULTF3 (3U) //!< Bit position for FTM_FMS_FAULTF3. +#define BM_FTM_FMS_FAULTF3 (0x00000008U) //!< Bit mask for FTM_FMS_FAULTF3. +#define BS_FTM_FMS_FAULTF3 (1U) //!< Bit field size in bits for FTM_FMS_FAULTF3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FMS_FAULTF3 field. +#define BR_FTM_FMS_FAULTF3(x) (BITBAND_ACCESS32(HW_FTM_FMS_ADDR(x), BP_FTM_FMS_FAULTF3)) +#endif +//@} + +/*! + * @name Register FTM_FMS, field FAULTIN[5] (RO) + * + * Represents the logic OR of the enabled fault inputs after their filter (if + * their filter is enabled) when fault control is enabled. + * + * Values: + * - 0 - The logic OR of the enabled fault inputs is 0. + * - 1 - The logic OR of the enabled fault inputs is 1. + */ +//@{ +#define BP_FTM_FMS_FAULTIN (5U) //!< Bit position for FTM_FMS_FAULTIN. +#define BM_FTM_FMS_FAULTIN (0x00000020U) //!< Bit mask for FTM_FMS_FAULTIN. +#define BS_FTM_FMS_FAULTIN (1U) //!< Bit field size in bits for FTM_FMS_FAULTIN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FMS_FAULTIN field. +#define BR_FTM_FMS_FAULTIN(x) (BITBAND_ACCESS32(HW_FTM_FMS_ADDR(x), BP_FTM_FMS_FAULTIN)) +#endif +//@} + +/*! + * @name Register FTM_FMS, field WPEN[6] (RW) + * + * The WPEN bit is the negation of the WPDIS bit. WPEN is set when 1 is written + * to it. WPEN is cleared when WPEN bit is read as a 1 and then 1 is written to + * WPDIS. Writing 0 to WPEN has no effect. + * + * Values: + * - 0 - Write protection is disabled. Write protected bits can be written. + * - 1 - Write protection is enabled. Write protected bits cannot be written. + */ +//@{ +#define BP_FTM_FMS_WPEN (6U) //!< Bit position for FTM_FMS_WPEN. +#define BM_FTM_FMS_WPEN (0x00000040U) //!< Bit mask for FTM_FMS_WPEN. +#define BS_FTM_FMS_WPEN (1U) //!< Bit field size in bits for FTM_FMS_WPEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FMS_WPEN field. +#define BR_FTM_FMS_WPEN(x) (BITBAND_ACCESS32(HW_FTM_FMS_ADDR(x), BP_FTM_FMS_WPEN)) +#endif + +//! @brief Format value for bitfield FTM_FMS_WPEN. +#define BF_FTM_FMS_WPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FMS_WPEN), uint32_t) & BM_FTM_FMS_WPEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WPEN field to a new value. +#define BW_FTM_FMS_WPEN(x, v) (BITBAND_ACCESS32(HW_FTM_FMS_ADDR(x), BP_FTM_FMS_WPEN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FMS, field FAULTF[7] (ROWZ) + * + * Represents the logic OR of the individual FAULTFj bits where j = 3, 2, 1, 0. + * Clear FAULTF by reading the FMS register while FAULTF is set and then writing + * a 0 to FAULTF while there is no existing fault condition at the enabled fault + * inputs. Writing a 1 to FAULTF has no effect. If another fault condition is + * detected in an enabled fault input before the clearing sequence is completed, the + * sequence is reset so FAULTF remains set after the clearing sequence is + * completed for the earlier fault condition. FAULTF is also cleared when FAULTFj bits + * are cleared individually. + * + * Values: + * - 0 - No fault condition was detected. + * - 1 - A fault condition was detected. + */ +//@{ +#define BP_FTM_FMS_FAULTF (7U) //!< Bit position for FTM_FMS_FAULTF. +#define BM_FTM_FMS_FAULTF (0x00000080U) //!< Bit mask for FTM_FMS_FAULTF. +#define BS_FTM_FMS_FAULTF (1U) //!< Bit field size in bits for FTM_FMS_FAULTF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FMS_FAULTF field. +#define BR_FTM_FMS_FAULTF(x) (BITBAND_ACCESS32(HW_FTM_FMS_ADDR(x), BP_FTM_FMS_FAULTF)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_FILTER - Input Capture Filter Control +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_FILTER - Input Capture Filter Control (RW) + * + * Reset value: 0x00000000U + * + * This register selects the filter value for the inputs of channels. Channels + * 4, 5, 6 and 7 do not have an input filter. Writing to the FILTER register has + * immediate effect and must be done only when the channels 0, 1, 2, and 3 are not + * in input modes. Failure to do this could result in a missing valid signal. + */ +typedef union _hw_ftm_filter +{ + uint32_t U; + struct _hw_ftm_filter_bitfields + { + uint32_t CH0FVAL : 4; //!< [3:0] Channel 0 Input Filter + uint32_t CH1FVAL : 4; //!< [7:4] Channel 1 Input Filter + uint32_t CH2FVAL : 4; //!< [11:8] Channel 2 Input Filter + uint32_t CH3FVAL : 4; //!< [15:12] Channel 3 Input Filter + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_ftm_filter_t; +#endif + +/*! + * @name Constants and macros for entire FTM_FILTER register + */ +//@{ +#define HW_FTM_FILTER_ADDR(x) (REGS_FTM_BASE(x) + 0x78U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_FILTER(x) (*(__IO hw_ftm_filter_t *) HW_FTM_FILTER_ADDR(x)) +#define HW_FTM_FILTER_RD(x) (HW_FTM_FILTER(x).U) +#define HW_FTM_FILTER_WR(x, v) (HW_FTM_FILTER(x).U = (v)) +#define HW_FTM_FILTER_SET(x, v) (HW_FTM_FILTER_WR(x, HW_FTM_FILTER_RD(x) | (v))) +#define HW_FTM_FILTER_CLR(x, v) (HW_FTM_FILTER_WR(x, HW_FTM_FILTER_RD(x) & ~(v))) +#define HW_FTM_FILTER_TOG(x, v) (HW_FTM_FILTER_WR(x, HW_FTM_FILTER_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_FILTER bitfields + */ + +/*! + * @name Register FTM_FILTER, field CH0FVAL[3:0] (RW) + * + * Selects the filter value for the channel input. The filter is disabled when + * the value is zero. + */ +//@{ +#define BP_FTM_FILTER_CH0FVAL (0U) //!< Bit position for FTM_FILTER_CH0FVAL. +#define BM_FTM_FILTER_CH0FVAL (0x0000000FU) //!< Bit mask for FTM_FILTER_CH0FVAL. +#define BS_FTM_FILTER_CH0FVAL (4U) //!< Bit field size in bits for FTM_FILTER_CH0FVAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FILTER_CH0FVAL field. +#define BR_FTM_FILTER_CH0FVAL(x) (HW_FTM_FILTER(x).B.CH0FVAL) +#endif + +//! @brief Format value for bitfield FTM_FILTER_CH0FVAL. +#define BF_FTM_FILTER_CH0FVAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FILTER_CH0FVAL), uint32_t) & BM_FTM_FILTER_CH0FVAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH0FVAL field to a new value. +#define BW_FTM_FILTER_CH0FVAL(x, v) (HW_FTM_FILTER_WR(x, (HW_FTM_FILTER_RD(x) & ~BM_FTM_FILTER_CH0FVAL) | BF_FTM_FILTER_CH0FVAL(v))) +#endif +//@} + +/*! + * @name Register FTM_FILTER, field CH1FVAL[7:4] (RW) + * + * Selects the filter value for the channel input. The filter is disabled when + * the value is zero. + */ +//@{ +#define BP_FTM_FILTER_CH1FVAL (4U) //!< Bit position for FTM_FILTER_CH1FVAL. +#define BM_FTM_FILTER_CH1FVAL (0x000000F0U) //!< Bit mask for FTM_FILTER_CH1FVAL. +#define BS_FTM_FILTER_CH1FVAL (4U) //!< Bit field size in bits for FTM_FILTER_CH1FVAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FILTER_CH1FVAL field. +#define BR_FTM_FILTER_CH1FVAL(x) (HW_FTM_FILTER(x).B.CH1FVAL) +#endif + +//! @brief Format value for bitfield FTM_FILTER_CH1FVAL. +#define BF_FTM_FILTER_CH1FVAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FILTER_CH1FVAL), uint32_t) & BM_FTM_FILTER_CH1FVAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH1FVAL field to a new value. +#define BW_FTM_FILTER_CH1FVAL(x, v) (HW_FTM_FILTER_WR(x, (HW_FTM_FILTER_RD(x) & ~BM_FTM_FILTER_CH1FVAL) | BF_FTM_FILTER_CH1FVAL(v))) +#endif +//@} + +/*! + * @name Register FTM_FILTER, field CH2FVAL[11:8] (RW) + * + * Selects the filter value for the channel input. The filter is disabled when + * the value is zero. + */ +//@{ +#define BP_FTM_FILTER_CH2FVAL (8U) //!< Bit position for FTM_FILTER_CH2FVAL. +#define BM_FTM_FILTER_CH2FVAL (0x00000F00U) //!< Bit mask for FTM_FILTER_CH2FVAL. +#define BS_FTM_FILTER_CH2FVAL (4U) //!< Bit field size in bits for FTM_FILTER_CH2FVAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FILTER_CH2FVAL field. +#define BR_FTM_FILTER_CH2FVAL(x) (HW_FTM_FILTER(x).B.CH2FVAL) +#endif + +//! @brief Format value for bitfield FTM_FILTER_CH2FVAL. +#define BF_FTM_FILTER_CH2FVAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FILTER_CH2FVAL), uint32_t) & BM_FTM_FILTER_CH2FVAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH2FVAL field to a new value. +#define BW_FTM_FILTER_CH2FVAL(x, v) (HW_FTM_FILTER_WR(x, (HW_FTM_FILTER_RD(x) & ~BM_FTM_FILTER_CH2FVAL) | BF_FTM_FILTER_CH2FVAL(v))) +#endif +//@} + +/*! + * @name Register FTM_FILTER, field CH3FVAL[15:12] (RW) + * + * Selects the filter value for the channel input. The filter is disabled when + * the value is zero. + */ +//@{ +#define BP_FTM_FILTER_CH3FVAL (12U) //!< Bit position for FTM_FILTER_CH3FVAL. +#define BM_FTM_FILTER_CH3FVAL (0x0000F000U) //!< Bit mask for FTM_FILTER_CH3FVAL. +#define BS_FTM_FILTER_CH3FVAL (4U) //!< Bit field size in bits for FTM_FILTER_CH3FVAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FILTER_CH3FVAL field. +#define BR_FTM_FILTER_CH3FVAL(x) (HW_FTM_FILTER(x).B.CH3FVAL) +#endif + +//! @brief Format value for bitfield FTM_FILTER_CH3FVAL. +#define BF_FTM_FILTER_CH3FVAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FILTER_CH3FVAL), uint32_t) & BM_FTM_FILTER_CH3FVAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH3FVAL field to a new value. +#define BW_FTM_FILTER_CH3FVAL(x, v) (HW_FTM_FILTER_WR(x, (HW_FTM_FILTER_RD(x) & ~BM_FTM_FILTER_CH3FVAL) | BF_FTM_FILTER_CH3FVAL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_FLTCTRL - Fault Control +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_FLTCTRL - Fault Control (RW) + * + * Reset value: 0x00000000U + * + * This register selects the filter value for the fault inputs, enables the + * fault inputs and the fault inputs filter. + */ +typedef union _hw_ftm_fltctrl +{ + uint32_t U; + struct _hw_ftm_fltctrl_bitfields + { + uint32_t FAULT0EN : 1; //!< [0] Fault Input 0 Enable + uint32_t FAULT1EN : 1; //!< [1] Fault Input 1 Enable + uint32_t FAULT2EN : 1; //!< [2] Fault Input 2 Enable + uint32_t FAULT3EN : 1; //!< [3] Fault Input 3 Enable + uint32_t FFLTR0EN : 1; //!< [4] Fault Input 0 Filter Enable + uint32_t FFLTR1EN : 1; //!< [5] Fault Input 1 Filter Enable + uint32_t FFLTR2EN : 1; //!< [6] Fault Input 2 Filter Enable + uint32_t FFLTR3EN : 1; //!< [7] Fault Input 3 Filter Enable + uint32_t FFVAL : 4; //!< [11:8] Fault Input Filter + uint32_t RESERVED0 : 20; //!< [31:12] + } B; +} hw_ftm_fltctrl_t; +#endif + +/*! + * @name Constants and macros for entire FTM_FLTCTRL register + */ +//@{ +#define HW_FTM_FLTCTRL_ADDR(x) (REGS_FTM_BASE(x) + 0x7CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_FLTCTRL(x) (*(__IO hw_ftm_fltctrl_t *) HW_FTM_FLTCTRL_ADDR(x)) +#define HW_FTM_FLTCTRL_RD(x) (HW_FTM_FLTCTRL(x).U) +#define HW_FTM_FLTCTRL_WR(x, v) (HW_FTM_FLTCTRL(x).U = (v)) +#define HW_FTM_FLTCTRL_SET(x, v) (HW_FTM_FLTCTRL_WR(x, HW_FTM_FLTCTRL_RD(x) | (v))) +#define HW_FTM_FLTCTRL_CLR(x, v) (HW_FTM_FLTCTRL_WR(x, HW_FTM_FLTCTRL_RD(x) & ~(v))) +#define HW_FTM_FLTCTRL_TOG(x, v) (HW_FTM_FLTCTRL_WR(x, HW_FTM_FLTCTRL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_FLTCTRL bitfields + */ + +/*! + * @name Register FTM_FLTCTRL, field FAULT0EN[0] (RW) + * + * Enables the fault input. This field is write protected. It can be written + * only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Fault input is disabled. + * - 1 - Fault input is enabled. + */ +//@{ +#define BP_FTM_FLTCTRL_FAULT0EN (0U) //!< Bit position for FTM_FLTCTRL_FAULT0EN. +#define BM_FTM_FLTCTRL_FAULT0EN (0x00000001U) //!< Bit mask for FTM_FLTCTRL_FAULT0EN. +#define BS_FTM_FLTCTRL_FAULT0EN (1U) //!< Bit field size in bits for FTM_FLTCTRL_FAULT0EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTCTRL_FAULT0EN field. +#define BR_FTM_FLTCTRL_FAULT0EN(x) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FAULT0EN)) +#endif + +//! @brief Format value for bitfield FTM_FLTCTRL_FAULT0EN. +#define BF_FTM_FLTCTRL_FAULT0EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTCTRL_FAULT0EN), uint32_t) & BM_FTM_FLTCTRL_FAULT0EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULT0EN field to a new value. +#define BW_FTM_FLTCTRL_FAULT0EN(x, v) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FAULT0EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTCTRL, field FAULT1EN[1] (RW) + * + * Enables the fault input. This field is write protected. It can be written + * only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Fault input is disabled. + * - 1 - Fault input is enabled. + */ +//@{ +#define BP_FTM_FLTCTRL_FAULT1EN (1U) //!< Bit position for FTM_FLTCTRL_FAULT1EN. +#define BM_FTM_FLTCTRL_FAULT1EN (0x00000002U) //!< Bit mask for FTM_FLTCTRL_FAULT1EN. +#define BS_FTM_FLTCTRL_FAULT1EN (1U) //!< Bit field size in bits for FTM_FLTCTRL_FAULT1EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTCTRL_FAULT1EN field. +#define BR_FTM_FLTCTRL_FAULT1EN(x) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FAULT1EN)) +#endif + +//! @brief Format value for bitfield FTM_FLTCTRL_FAULT1EN. +#define BF_FTM_FLTCTRL_FAULT1EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTCTRL_FAULT1EN), uint32_t) & BM_FTM_FLTCTRL_FAULT1EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULT1EN field to a new value. +#define BW_FTM_FLTCTRL_FAULT1EN(x, v) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FAULT1EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTCTRL, field FAULT2EN[2] (RW) + * + * Enables the fault input. This field is write protected. It can be written + * only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Fault input is disabled. + * - 1 - Fault input is enabled. + */ +//@{ +#define BP_FTM_FLTCTRL_FAULT2EN (2U) //!< Bit position for FTM_FLTCTRL_FAULT2EN. +#define BM_FTM_FLTCTRL_FAULT2EN (0x00000004U) //!< Bit mask for FTM_FLTCTRL_FAULT2EN. +#define BS_FTM_FLTCTRL_FAULT2EN (1U) //!< Bit field size in bits for FTM_FLTCTRL_FAULT2EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTCTRL_FAULT2EN field. +#define BR_FTM_FLTCTRL_FAULT2EN(x) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FAULT2EN)) +#endif + +//! @brief Format value for bitfield FTM_FLTCTRL_FAULT2EN. +#define BF_FTM_FLTCTRL_FAULT2EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTCTRL_FAULT2EN), uint32_t) & BM_FTM_FLTCTRL_FAULT2EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULT2EN field to a new value. +#define BW_FTM_FLTCTRL_FAULT2EN(x, v) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FAULT2EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTCTRL, field FAULT3EN[3] (RW) + * + * Enables the fault input. This field is write protected. It can be written + * only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Fault input is disabled. + * - 1 - Fault input is enabled. + */ +//@{ +#define BP_FTM_FLTCTRL_FAULT3EN (3U) //!< Bit position for FTM_FLTCTRL_FAULT3EN. +#define BM_FTM_FLTCTRL_FAULT3EN (0x00000008U) //!< Bit mask for FTM_FLTCTRL_FAULT3EN. +#define BS_FTM_FLTCTRL_FAULT3EN (1U) //!< Bit field size in bits for FTM_FLTCTRL_FAULT3EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTCTRL_FAULT3EN field. +#define BR_FTM_FLTCTRL_FAULT3EN(x) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FAULT3EN)) +#endif + +//! @brief Format value for bitfield FTM_FLTCTRL_FAULT3EN. +#define BF_FTM_FLTCTRL_FAULT3EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTCTRL_FAULT3EN), uint32_t) & BM_FTM_FLTCTRL_FAULT3EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FAULT3EN field to a new value. +#define BW_FTM_FLTCTRL_FAULT3EN(x, v) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FAULT3EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTCTRL, field FFLTR0EN[4] (RW) + * + * Enables the filter for the fault input. This field is write protected. It can + * be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Fault input filter is disabled. + * - 1 - Fault input filter is enabled. + */ +//@{ +#define BP_FTM_FLTCTRL_FFLTR0EN (4U) //!< Bit position for FTM_FLTCTRL_FFLTR0EN. +#define BM_FTM_FLTCTRL_FFLTR0EN (0x00000010U) //!< Bit mask for FTM_FLTCTRL_FFLTR0EN. +#define BS_FTM_FLTCTRL_FFLTR0EN (1U) //!< Bit field size in bits for FTM_FLTCTRL_FFLTR0EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTCTRL_FFLTR0EN field. +#define BR_FTM_FLTCTRL_FFLTR0EN(x) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FFLTR0EN)) +#endif + +//! @brief Format value for bitfield FTM_FLTCTRL_FFLTR0EN. +#define BF_FTM_FLTCTRL_FFLTR0EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTCTRL_FFLTR0EN), uint32_t) & BM_FTM_FLTCTRL_FFLTR0EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FFLTR0EN field to a new value. +#define BW_FTM_FLTCTRL_FFLTR0EN(x, v) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FFLTR0EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTCTRL, field FFLTR1EN[5] (RW) + * + * Enables the filter for the fault input. This field is write protected. It can + * be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Fault input filter is disabled. + * - 1 - Fault input filter is enabled. + */ +//@{ +#define BP_FTM_FLTCTRL_FFLTR1EN (5U) //!< Bit position for FTM_FLTCTRL_FFLTR1EN. +#define BM_FTM_FLTCTRL_FFLTR1EN (0x00000020U) //!< Bit mask for FTM_FLTCTRL_FFLTR1EN. +#define BS_FTM_FLTCTRL_FFLTR1EN (1U) //!< Bit field size in bits for FTM_FLTCTRL_FFLTR1EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTCTRL_FFLTR1EN field. +#define BR_FTM_FLTCTRL_FFLTR1EN(x) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FFLTR1EN)) +#endif + +//! @brief Format value for bitfield FTM_FLTCTRL_FFLTR1EN. +#define BF_FTM_FLTCTRL_FFLTR1EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTCTRL_FFLTR1EN), uint32_t) & BM_FTM_FLTCTRL_FFLTR1EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FFLTR1EN field to a new value. +#define BW_FTM_FLTCTRL_FFLTR1EN(x, v) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FFLTR1EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTCTRL, field FFLTR2EN[6] (RW) + * + * Enables the filter for the fault input. This field is write protected. It can + * be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Fault input filter is disabled. + * - 1 - Fault input filter is enabled. + */ +//@{ +#define BP_FTM_FLTCTRL_FFLTR2EN (6U) //!< Bit position for FTM_FLTCTRL_FFLTR2EN. +#define BM_FTM_FLTCTRL_FFLTR2EN (0x00000040U) //!< Bit mask for FTM_FLTCTRL_FFLTR2EN. +#define BS_FTM_FLTCTRL_FFLTR2EN (1U) //!< Bit field size in bits for FTM_FLTCTRL_FFLTR2EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTCTRL_FFLTR2EN field. +#define BR_FTM_FLTCTRL_FFLTR2EN(x) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FFLTR2EN)) +#endif + +//! @brief Format value for bitfield FTM_FLTCTRL_FFLTR2EN. +#define BF_FTM_FLTCTRL_FFLTR2EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTCTRL_FFLTR2EN), uint32_t) & BM_FTM_FLTCTRL_FFLTR2EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FFLTR2EN field to a new value. +#define BW_FTM_FLTCTRL_FFLTR2EN(x, v) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FFLTR2EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTCTRL, field FFLTR3EN[7] (RW) + * + * Enables the filter for the fault input. This field is write protected. It can + * be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Fault input filter is disabled. + * - 1 - Fault input filter is enabled. + */ +//@{ +#define BP_FTM_FLTCTRL_FFLTR3EN (7U) //!< Bit position for FTM_FLTCTRL_FFLTR3EN. +#define BM_FTM_FLTCTRL_FFLTR3EN (0x00000080U) //!< Bit mask for FTM_FLTCTRL_FFLTR3EN. +#define BS_FTM_FLTCTRL_FFLTR3EN (1U) //!< Bit field size in bits for FTM_FLTCTRL_FFLTR3EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTCTRL_FFLTR3EN field. +#define BR_FTM_FLTCTRL_FFLTR3EN(x) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FFLTR3EN)) +#endif + +//! @brief Format value for bitfield FTM_FLTCTRL_FFLTR3EN. +#define BF_FTM_FLTCTRL_FFLTR3EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTCTRL_FFLTR3EN), uint32_t) & BM_FTM_FLTCTRL_FFLTR3EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FFLTR3EN field to a new value. +#define BW_FTM_FLTCTRL_FFLTR3EN(x, v) (BITBAND_ACCESS32(HW_FTM_FLTCTRL_ADDR(x), BP_FTM_FLTCTRL_FFLTR3EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTCTRL, field FFVAL[11:8] (RW) + * + * Selects the filter value for the fault inputs. The fault filter is disabled + * when the value is zero. Writing to this field has immediate effect and must be + * done only when the fault control or all fault inputs are disabled. Failure to + * do this could result in a missing fault detection. + */ +//@{ +#define BP_FTM_FLTCTRL_FFVAL (8U) //!< Bit position for FTM_FLTCTRL_FFVAL. +#define BM_FTM_FLTCTRL_FFVAL (0x00000F00U) //!< Bit mask for FTM_FLTCTRL_FFVAL. +#define BS_FTM_FLTCTRL_FFVAL (4U) //!< Bit field size in bits for FTM_FLTCTRL_FFVAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTCTRL_FFVAL field. +#define BR_FTM_FLTCTRL_FFVAL(x) (HW_FTM_FLTCTRL(x).B.FFVAL) +#endif + +//! @brief Format value for bitfield FTM_FLTCTRL_FFVAL. +#define BF_FTM_FLTCTRL_FFVAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTCTRL_FFVAL), uint32_t) & BM_FTM_FLTCTRL_FFVAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FFVAL field to a new value. +#define BW_FTM_FLTCTRL_FFVAL(x, v) (HW_FTM_FLTCTRL_WR(x, (HW_FTM_FLTCTRL_RD(x) & ~BM_FTM_FLTCTRL_FFVAL) | BF_FTM_FLTCTRL_FFVAL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_QDCTRL - Quadrature Decoder Control And Status +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_QDCTRL - Quadrature Decoder Control And Status (RW) + * + * Reset value: 0x00000000U + * + * This register has the control and status bits for the Quadrature Decoder mode. + */ +typedef union _hw_ftm_qdctrl +{ + uint32_t U; + struct _hw_ftm_qdctrl_bitfields + { + uint32_t QUADEN : 1; //!< [0] Quadrature Decoder Mode Enable + uint32_t TOFDIR : 1; //!< [1] Timer Overflow Direction In Quadrature + //! Decoder Mode + uint32_t QUADIR : 1; //!< [2] FTM Counter Direction In Quadrature + //! Decoder Mode + uint32_t QUADMODE : 1; //!< [3] Quadrature Decoder Mode + uint32_t PHBPOL : 1; //!< [4] Phase B Input Polarity + uint32_t PHAPOL : 1; //!< [5] Phase A Input Polarity + uint32_t PHBFLTREN : 1; //!< [6] Phase B Input Filter Enable + uint32_t PHAFLTREN : 1; //!< [7] Phase A Input Filter Enable + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_ftm_qdctrl_t; +#endif + +/*! + * @name Constants and macros for entire FTM_QDCTRL register + */ +//@{ +#define HW_FTM_QDCTRL_ADDR(x) (REGS_FTM_BASE(x) + 0x80U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_QDCTRL(x) (*(__IO hw_ftm_qdctrl_t *) HW_FTM_QDCTRL_ADDR(x)) +#define HW_FTM_QDCTRL_RD(x) (HW_FTM_QDCTRL(x).U) +#define HW_FTM_QDCTRL_WR(x, v) (HW_FTM_QDCTRL(x).U = (v)) +#define HW_FTM_QDCTRL_SET(x, v) (HW_FTM_QDCTRL_WR(x, HW_FTM_QDCTRL_RD(x) | (v))) +#define HW_FTM_QDCTRL_CLR(x, v) (HW_FTM_QDCTRL_WR(x, HW_FTM_QDCTRL_RD(x) & ~(v))) +#define HW_FTM_QDCTRL_TOG(x, v) (HW_FTM_QDCTRL_WR(x, HW_FTM_QDCTRL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_QDCTRL bitfields + */ + +/*! + * @name Register FTM_QDCTRL, field QUADEN[0] (RW) + * + * Enables the Quadrature Decoder mode. In this mode, the phase A and B input + * signals control the FTM counter direction. The Quadrature Decoder mode has + * precedence over the other modes. See #ModeSel1Table. This field is write protected. + * It can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - Quadrature Decoder mode is disabled. + * - 1 - Quadrature Decoder mode is enabled. + */ +//@{ +#define BP_FTM_QDCTRL_QUADEN (0U) //!< Bit position for FTM_QDCTRL_QUADEN. +#define BM_FTM_QDCTRL_QUADEN (0x00000001U) //!< Bit mask for FTM_QDCTRL_QUADEN. +#define BS_FTM_QDCTRL_QUADEN (1U) //!< Bit field size in bits for FTM_QDCTRL_QUADEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_QDCTRL_QUADEN field. +#define BR_FTM_QDCTRL_QUADEN(x) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_QUADEN)) +#endif + +//! @brief Format value for bitfield FTM_QDCTRL_QUADEN. +#define BF_FTM_QDCTRL_QUADEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_QDCTRL_QUADEN), uint32_t) & BM_FTM_QDCTRL_QUADEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the QUADEN field to a new value. +#define BW_FTM_QDCTRL_QUADEN(x, v) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_QUADEN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_QDCTRL, field TOFDIR[1] (RO) + * + * Indicates if the TOF bit was set on the top or the bottom of counting. + * + * Values: + * - 0 - TOF bit was set on the bottom of counting. There was an FTM counter + * decrement and FTM counter changes from its minimum value (CNTIN register) to + * its maximum value (MOD register). + * - 1 - TOF bit was set on the top of counting. There was an FTM counter + * increment and FTM counter changes from its maximum value (MOD register) to its + * minimum value (CNTIN register). + */ +//@{ +#define BP_FTM_QDCTRL_TOFDIR (1U) //!< Bit position for FTM_QDCTRL_TOFDIR. +#define BM_FTM_QDCTRL_TOFDIR (0x00000002U) //!< Bit mask for FTM_QDCTRL_TOFDIR. +#define BS_FTM_QDCTRL_TOFDIR (1U) //!< Bit field size in bits for FTM_QDCTRL_TOFDIR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_QDCTRL_TOFDIR field. +#define BR_FTM_QDCTRL_TOFDIR(x) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_TOFDIR)) +#endif +//@} + +/*! + * @name Register FTM_QDCTRL, field QUADIR[2] (RO) + * + * Indicates the counting direction. + * + * Values: + * - 0 - Counting direction is decreasing (FTM counter decrement). + * - 1 - Counting direction is increasing (FTM counter increment). + */ +//@{ +#define BP_FTM_QDCTRL_QUADIR (2U) //!< Bit position for FTM_QDCTRL_QUADIR. +#define BM_FTM_QDCTRL_QUADIR (0x00000004U) //!< Bit mask for FTM_QDCTRL_QUADIR. +#define BS_FTM_QDCTRL_QUADIR (1U) //!< Bit field size in bits for FTM_QDCTRL_QUADIR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_QDCTRL_QUADIR field. +#define BR_FTM_QDCTRL_QUADIR(x) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_QUADIR)) +#endif +//@} + +/*! + * @name Register FTM_QDCTRL, field QUADMODE[3] (RW) + * + * Selects the encoding mode used in the Quadrature Decoder mode. + * + * Values: + * - 0 - Phase A and phase B encoding mode. + * - 1 - Count and direction encoding mode. + */ +//@{ +#define BP_FTM_QDCTRL_QUADMODE (3U) //!< Bit position for FTM_QDCTRL_QUADMODE. +#define BM_FTM_QDCTRL_QUADMODE (0x00000008U) //!< Bit mask for FTM_QDCTRL_QUADMODE. +#define BS_FTM_QDCTRL_QUADMODE (1U) //!< Bit field size in bits for FTM_QDCTRL_QUADMODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_QDCTRL_QUADMODE field. +#define BR_FTM_QDCTRL_QUADMODE(x) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_QUADMODE)) +#endif + +//! @brief Format value for bitfield FTM_QDCTRL_QUADMODE. +#define BF_FTM_QDCTRL_QUADMODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_QDCTRL_QUADMODE), uint32_t) & BM_FTM_QDCTRL_QUADMODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the QUADMODE field to a new value. +#define BW_FTM_QDCTRL_QUADMODE(x, v) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_QUADMODE) = (v)) +#endif +//@} + +/*! + * @name Register FTM_QDCTRL, field PHBPOL[4] (RW) + * + * Selects the polarity for the quadrature decoder phase B input. + * + * Values: + * - 0 - Normal polarity. Phase B input signal is not inverted before + * identifying the rising and falling edges of this signal. + * - 1 - Inverted polarity. Phase B input signal is inverted before identifying + * the rising and falling edges of this signal. + */ +//@{ +#define BP_FTM_QDCTRL_PHBPOL (4U) //!< Bit position for FTM_QDCTRL_PHBPOL. +#define BM_FTM_QDCTRL_PHBPOL (0x00000010U) //!< Bit mask for FTM_QDCTRL_PHBPOL. +#define BS_FTM_QDCTRL_PHBPOL (1U) //!< Bit field size in bits for FTM_QDCTRL_PHBPOL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_QDCTRL_PHBPOL field. +#define BR_FTM_QDCTRL_PHBPOL(x) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_PHBPOL)) +#endif + +//! @brief Format value for bitfield FTM_QDCTRL_PHBPOL. +#define BF_FTM_QDCTRL_PHBPOL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_QDCTRL_PHBPOL), uint32_t) & BM_FTM_QDCTRL_PHBPOL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PHBPOL field to a new value. +#define BW_FTM_QDCTRL_PHBPOL(x, v) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_PHBPOL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_QDCTRL, field PHAPOL[5] (RW) + * + * Selects the polarity for the quadrature decoder phase A input. + * + * Values: + * - 0 - Normal polarity. Phase A input signal is not inverted before + * identifying the rising and falling edges of this signal. + * - 1 - Inverted polarity. Phase A input signal is inverted before identifying + * the rising and falling edges of this signal. + */ +//@{ +#define BP_FTM_QDCTRL_PHAPOL (5U) //!< Bit position for FTM_QDCTRL_PHAPOL. +#define BM_FTM_QDCTRL_PHAPOL (0x00000020U) //!< Bit mask for FTM_QDCTRL_PHAPOL. +#define BS_FTM_QDCTRL_PHAPOL (1U) //!< Bit field size in bits for FTM_QDCTRL_PHAPOL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_QDCTRL_PHAPOL field. +#define BR_FTM_QDCTRL_PHAPOL(x) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_PHAPOL)) +#endif + +//! @brief Format value for bitfield FTM_QDCTRL_PHAPOL. +#define BF_FTM_QDCTRL_PHAPOL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_QDCTRL_PHAPOL), uint32_t) & BM_FTM_QDCTRL_PHAPOL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PHAPOL field to a new value. +#define BW_FTM_QDCTRL_PHAPOL(x, v) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_PHAPOL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_QDCTRL, field PHBFLTREN[6] (RW) + * + * Enables the filter for the quadrature decoder phase B input. The filter value + * for the phase B input is defined by the CH1FVAL field of FILTER. The phase B + * filter is also disabled when CH1FVAL is zero. + * + * Values: + * - 0 - Phase B input filter is disabled. + * - 1 - Phase B input filter is enabled. + */ +//@{ +#define BP_FTM_QDCTRL_PHBFLTREN (6U) //!< Bit position for FTM_QDCTRL_PHBFLTREN. +#define BM_FTM_QDCTRL_PHBFLTREN (0x00000040U) //!< Bit mask for FTM_QDCTRL_PHBFLTREN. +#define BS_FTM_QDCTRL_PHBFLTREN (1U) //!< Bit field size in bits for FTM_QDCTRL_PHBFLTREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_QDCTRL_PHBFLTREN field. +#define BR_FTM_QDCTRL_PHBFLTREN(x) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_PHBFLTREN)) +#endif + +//! @brief Format value for bitfield FTM_QDCTRL_PHBFLTREN. +#define BF_FTM_QDCTRL_PHBFLTREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_QDCTRL_PHBFLTREN), uint32_t) & BM_FTM_QDCTRL_PHBFLTREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PHBFLTREN field to a new value. +#define BW_FTM_QDCTRL_PHBFLTREN(x, v) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_PHBFLTREN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_QDCTRL, field PHAFLTREN[7] (RW) + * + * Enables the filter for the quadrature decoder phase A input. The filter value + * for the phase A input is defined by the CH0FVAL field of FILTER. The phase A + * filter is also disabled when CH0FVAL is zero. + * + * Values: + * - 0 - Phase A input filter is disabled. + * - 1 - Phase A input filter is enabled. + */ +//@{ +#define BP_FTM_QDCTRL_PHAFLTREN (7U) //!< Bit position for FTM_QDCTRL_PHAFLTREN. +#define BM_FTM_QDCTRL_PHAFLTREN (0x00000080U) //!< Bit mask for FTM_QDCTRL_PHAFLTREN. +#define BS_FTM_QDCTRL_PHAFLTREN (1U) //!< Bit field size in bits for FTM_QDCTRL_PHAFLTREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_QDCTRL_PHAFLTREN field. +#define BR_FTM_QDCTRL_PHAFLTREN(x) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_PHAFLTREN)) +#endif + +//! @brief Format value for bitfield FTM_QDCTRL_PHAFLTREN. +#define BF_FTM_QDCTRL_PHAFLTREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_QDCTRL_PHAFLTREN), uint32_t) & BM_FTM_QDCTRL_PHAFLTREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PHAFLTREN field to a new value. +#define BW_FTM_QDCTRL_PHAFLTREN(x, v) (BITBAND_ACCESS32(HW_FTM_QDCTRL_ADDR(x), BP_FTM_QDCTRL_PHAFLTREN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_CONF - Configuration +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_CONF - Configuration (RW) + * + * Reset value: 0x00000000U + * + * This register selects the number of times that the FTM counter overflow + * should occur before the TOF bit to be set, the FTM behavior in BDM modes, the use + * of an external global time base, and the global time base signal generation. + */ +typedef union _hw_ftm_conf +{ + uint32_t U; + struct _hw_ftm_conf_bitfields + { + uint32_t NUMTOF : 5; //!< [4:0] TOF Frequency + uint32_t RESERVED0 : 1; //!< [5] + uint32_t BDMMODE : 2; //!< [7:6] BDM Mode + uint32_t RESERVED1 : 1; //!< [8] + uint32_t GTBEEN : 1; //!< [9] Global Time Base Enable + uint32_t GTBEOUT : 1; //!< [10] Global Time Base Output + uint32_t RESERVED2 : 21; //!< [31:11] + } B; +} hw_ftm_conf_t; +#endif + +/*! + * @name Constants and macros for entire FTM_CONF register + */ +//@{ +#define HW_FTM_CONF_ADDR(x) (REGS_FTM_BASE(x) + 0x84U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_CONF(x) (*(__IO hw_ftm_conf_t *) HW_FTM_CONF_ADDR(x)) +#define HW_FTM_CONF_RD(x) (HW_FTM_CONF(x).U) +#define HW_FTM_CONF_WR(x, v) (HW_FTM_CONF(x).U = (v)) +#define HW_FTM_CONF_SET(x, v) (HW_FTM_CONF_WR(x, HW_FTM_CONF_RD(x) | (v))) +#define HW_FTM_CONF_CLR(x, v) (HW_FTM_CONF_WR(x, HW_FTM_CONF_RD(x) & ~(v))) +#define HW_FTM_CONF_TOG(x, v) (HW_FTM_CONF_WR(x, HW_FTM_CONF_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_CONF bitfields + */ + +/*! + * @name Register FTM_CONF, field NUMTOF[4:0] (RW) + * + * Selects the ratio between the number of counter overflows to the number of + * times the TOF bit is set. NUMTOF = 0: The TOF bit is set for each counter + * overflow. NUMTOF = 1: The TOF bit is set for the first counter overflow but not for + * the next overflow. NUMTOF = 2: The TOF bit is set for the first counter + * overflow but not for the next 2 overflows. NUMTOF = 3: The TOF bit is set for the + * first counter overflow but not for the next 3 overflows. This pattern continues + * up to a maximum of 31. + */ +//@{ +#define BP_FTM_CONF_NUMTOF (0U) //!< Bit position for FTM_CONF_NUMTOF. +#define BM_FTM_CONF_NUMTOF (0x0000001FU) //!< Bit mask for FTM_CONF_NUMTOF. +#define BS_FTM_CONF_NUMTOF (5U) //!< Bit field size in bits for FTM_CONF_NUMTOF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CONF_NUMTOF field. +#define BR_FTM_CONF_NUMTOF(x) (HW_FTM_CONF(x).B.NUMTOF) +#endif + +//! @brief Format value for bitfield FTM_CONF_NUMTOF. +#define BF_FTM_CONF_NUMTOF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CONF_NUMTOF), uint32_t) & BM_FTM_CONF_NUMTOF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NUMTOF field to a new value. +#define BW_FTM_CONF_NUMTOF(x, v) (HW_FTM_CONF_WR(x, (HW_FTM_CONF_RD(x) & ~BM_FTM_CONF_NUMTOF) | BF_FTM_CONF_NUMTOF(v))) +#endif +//@} + +/*! + * @name Register FTM_CONF, field BDMMODE[7:6] (RW) + * + * Selects the FTM behavior in BDM mode. See BDM mode. + */ +//@{ +#define BP_FTM_CONF_BDMMODE (6U) //!< Bit position for FTM_CONF_BDMMODE. +#define BM_FTM_CONF_BDMMODE (0x000000C0U) //!< Bit mask for FTM_CONF_BDMMODE. +#define BS_FTM_CONF_BDMMODE (2U) //!< Bit field size in bits for FTM_CONF_BDMMODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CONF_BDMMODE field. +#define BR_FTM_CONF_BDMMODE(x) (HW_FTM_CONF(x).B.BDMMODE) +#endif + +//! @brief Format value for bitfield FTM_CONF_BDMMODE. +#define BF_FTM_CONF_BDMMODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CONF_BDMMODE), uint32_t) & BM_FTM_CONF_BDMMODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BDMMODE field to a new value. +#define BW_FTM_CONF_BDMMODE(x, v) (HW_FTM_CONF_WR(x, (HW_FTM_CONF_RD(x) & ~BM_FTM_CONF_BDMMODE) | BF_FTM_CONF_BDMMODE(v))) +#endif +//@} + +/*! + * @name Register FTM_CONF, field GTBEEN[9] (RW) + * + * Configures the FTM to use an external global time base signal that is + * generated by another FTM. + * + * Values: + * - 0 - Use of an external global time base is disabled. + * - 1 - Use of an external global time base is enabled. + */ +//@{ +#define BP_FTM_CONF_GTBEEN (9U) //!< Bit position for FTM_CONF_GTBEEN. +#define BM_FTM_CONF_GTBEEN (0x00000200U) //!< Bit mask for FTM_CONF_GTBEEN. +#define BS_FTM_CONF_GTBEEN (1U) //!< Bit field size in bits for FTM_CONF_GTBEEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CONF_GTBEEN field. +#define BR_FTM_CONF_GTBEEN(x) (BITBAND_ACCESS32(HW_FTM_CONF_ADDR(x), BP_FTM_CONF_GTBEEN)) +#endif + +//! @brief Format value for bitfield FTM_CONF_GTBEEN. +#define BF_FTM_CONF_GTBEEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CONF_GTBEEN), uint32_t) & BM_FTM_CONF_GTBEEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GTBEEN field to a new value. +#define BW_FTM_CONF_GTBEEN(x, v) (BITBAND_ACCESS32(HW_FTM_CONF_ADDR(x), BP_FTM_CONF_GTBEEN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_CONF, field GTBEOUT[10] (RW) + * + * Enables the global time base signal generation to other FTMs. + * + * Values: + * - 0 - A global time base signal generation is disabled. + * - 1 - A global time base signal generation is enabled. + */ +//@{ +#define BP_FTM_CONF_GTBEOUT (10U) //!< Bit position for FTM_CONF_GTBEOUT. +#define BM_FTM_CONF_GTBEOUT (0x00000400U) //!< Bit mask for FTM_CONF_GTBEOUT. +#define BS_FTM_CONF_GTBEOUT (1U) //!< Bit field size in bits for FTM_CONF_GTBEOUT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_CONF_GTBEOUT field. +#define BR_FTM_CONF_GTBEOUT(x) (BITBAND_ACCESS32(HW_FTM_CONF_ADDR(x), BP_FTM_CONF_GTBEOUT)) +#endif + +//! @brief Format value for bitfield FTM_CONF_GTBEOUT. +#define BF_FTM_CONF_GTBEOUT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_CONF_GTBEOUT), uint32_t) & BM_FTM_CONF_GTBEOUT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GTBEOUT field to a new value. +#define BW_FTM_CONF_GTBEOUT(x, v) (BITBAND_ACCESS32(HW_FTM_CONF_ADDR(x), BP_FTM_CONF_GTBEOUT) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_FLTPOL - FTM Fault Input Polarity +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_FLTPOL - FTM Fault Input Polarity (RW) + * + * Reset value: 0x00000000U + * + * This register defines the fault inputs polarity. + */ +typedef union _hw_ftm_fltpol +{ + uint32_t U; + struct _hw_ftm_fltpol_bitfields + { + uint32_t FLT0POL : 1; //!< [0] Fault Input 0 Polarity + uint32_t FLT1POL : 1; //!< [1] Fault Input 1 Polarity + uint32_t FLT2POL : 1; //!< [2] Fault Input 2 Polarity + uint32_t FLT3POL : 1; //!< [3] Fault Input 3 Polarity + uint32_t RESERVED0 : 28; //!< [31:4] + } B; +} hw_ftm_fltpol_t; +#endif + +/*! + * @name Constants and macros for entire FTM_FLTPOL register + */ +//@{ +#define HW_FTM_FLTPOL_ADDR(x) (REGS_FTM_BASE(x) + 0x88U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_FLTPOL(x) (*(__IO hw_ftm_fltpol_t *) HW_FTM_FLTPOL_ADDR(x)) +#define HW_FTM_FLTPOL_RD(x) (HW_FTM_FLTPOL(x).U) +#define HW_FTM_FLTPOL_WR(x, v) (HW_FTM_FLTPOL(x).U = (v)) +#define HW_FTM_FLTPOL_SET(x, v) (HW_FTM_FLTPOL_WR(x, HW_FTM_FLTPOL_RD(x) | (v))) +#define HW_FTM_FLTPOL_CLR(x, v) (HW_FTM_FLTPOL_WR(x, HW_FTM_FLTPOL_RD(x) & ~(v))) +#define HW_FTM_FLTPOL_TOG(x, v) (HW_FTM_FLTPOL_WR(x, HW_FTM_FLTPOL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_FLTPOL bitfields + */ + +/*! + * @name Register FTM_FLTPOL, field FLT0POL[0] (RW) + * + * Defines the polarity of the fault input. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The fault input polarity is active high. A 1 at the fault input + * indicates a fault. + * - 1 - The fault input polarity is active low. A 0 at the fault input + * indicates a fault. + */ +//@{ +#define BP_FTM_FLTPOL_FLT0POL (0U) //!< Bit position for FTM_FLTPOL_FLT0POL. +#define BM_FTM_FLTPOL_FLT0POL (0x00000001U) //!< Bit mask for FTM_FLTPOL_FLT0POL. +#define BS_FTM_FLTPOL_FLT0POL (1U) //!< Bit field size in bits for FTM_FLTPOL_FLT0POL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTPOL_FLT0POL field. +#define BR_FTM_FLTPOL_FLT0POL(x) (BITBAND_ACCESS32(HW_FTM_FLTPOL_ADDR(x), BP_FTM_FLTPOL_FLT0POL)) +#endif + +//! @brief Format value for bitfield FTM_FLTPOL_FLT0POL. +#define BF_FTM_FLTPOL_FLT0POL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTPOL_FLT0POL), uint32_t) & BM_FTM_FLTPOL_FLT0POL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLT0POL field to a new value. +#define BW_FTM_FLTPOL_FLT0POL(x, v) (BITBAND_ACCESS32(HW_FTM_FLTPOL_ADDR(x), BP_FTM_FLTPOL_FLT0POL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTPOL, field FLT1POL[1] (RW) + * + * Defines the polarity of the fault input. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The fault input polarity is active high. A 1 at the fault input + * indicates a fault. + * - 1 - The fault input polarity is active low. A 0 at the fault input + * indicates a fault. + */ +//@{ +#define BP_FTM_FLTPOL_FLT1POL (1U) //!< Bit position for FTM_FLTPOL_FLT1POL. +#define BM_FTM_FLTPOL_FLT1POL (0x00000002U) //!< Bit mask for FTM_FLTPOL_FLT1POL. +#define BS_FTM_FLTPOL_FLT1POL (1U) //!< Bit field size in bits for FTM_FLTPOL_FLT1POL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTPOL_FLT1POL field. +#define BR_FTM_FLTPOL_FLT1POL(x) (BITBAND_ACCESS32(HW_FTM_FLTPOL_ADDR(x), BP_FTM_FLTPOL_FLT1POL)) +#endif + +//! @brief Format value for bitfield FTM_FLTPOL_FLT1POL. +#define BF_FTM_FLTPOL_FLT1POL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTPOL_FLT1POL), uint32_t) & BM_FTM_FLTPOL_FLT1POL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLT1POL field to a new value. +#define BW_FTM_FLTPOL_FLT1POL(x, v) (BITBAND_ACCESS32(HW_FTM_FLTPOL_ADDR(x), BP_FTM_FLTPOL_FLT1POL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTPOL, field FLT2POL[2] (RW) + * + * Defines the polarity of the fault input. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The fault input polarity is active high. A 1 at the fault input + * indicates a fault. + * - 1 - The fault input polarity is active low. A 0 at the fault input + * indicates a fault. + */ +//@{ +#define BP_FTM_FLTPOL_FLT2POL (2U) //!< Bit position for FTM_FLTPOL_FLT2POL. +#define BM_FTM_FLTPOL_FLT2POL (0x00000004U) //!< Bit mask for FTM_FLTPOL_FLT2POL. +#define BS_FTM_FLTPOL_FLT2POL (1U) //!< Bit field size in bits for FTM_FLTPOL_FLT2POL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTPOL_FLT2POL field. +#define BR_FTM_FLTPOL_FLT2POL(x) (BITBAND_ACCESS32(HW_FTM_FLTPOL_ADDR(x), BP_FTM_FLTPOL_FLT2POL)) +#endif + +//! @brief Format value for bitfield FTM_FLTPOL_FLT2POL. +#define BF_FTM_FLTPOL_FLT2POL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTPOL_FLT2POL), uint32_t) & BM_FTM_FLTPOL_FLT2POL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLT2POL field to a new value. +#define BW_FTM_FLTPOL_FLT2POL(x, v) (BITBAND_ACCESS32(HW_FTM_FLTPOL_ADDR(x), BP_FTM_FLTPOL_FLT2POL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_FLTPOL, field FLT3POL[3] (RW) + * + * Defines the polarity of the fault input. This field is write protected. It + * can be written only when MODE[WPDIS] = 1. + * + * Values: + * - 0 - The fault input polarity is active high. A 1 at the fault input + * indicates a fault. + * - 1 - The fault input polarity is active low. A 0 at the fault input + * indicates a fault. + */ +//@{ +#define BP_FTM_FLTPOL_FLT3POL (3U) //!< Bit position for FTM_FLTPOL_FLT3POL. +#define BM_FTM_FLTPOL_FLT3POL (0x00000008U) //!< Bit mask for FTM_FLTPOL_FLT3POL. +#define BS_FTM_FLTPOL_FLT3POL (1U) //!< Bit field size in bits for FTM_FLTPOL_FLT3POL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_FLTPOL_FLT3POL field. +#define BR_FTM_FLTPOL_FLT3POL(x) (BITBAND_ACCESS32(HW_FTM_FLTPOL_ADDR(x), BP_FTM_FLTPOL_FLT3POL)) +#endif + +//! @brief Format value for bitfield FTM_FLTPOL_FLT3POL. +#define BF_FTM_FLTPOL_FLT3POL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_FLTPOL_FLT3POL), uint32_t) & BM_FTM_FLTPOL_FLT3POL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLT3POL field to a new value. +#define BW_FTM_FLTPOL_FLT3POL(x, v) (BITBAND_ACCESS32(HW_FTM_FLTPOL_ADDR(x), BP_FTM_FLTPOL_FLT3POL) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_SYNCONF - Synchronization Configuration +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_SYNCONF - Synchronization Configuration (RW) + * + * Reset value: 0x00000000U + * + * This register selects the PWM synchronization configuration, SWOCTRL, INVCTRL + * and CNTIN registers synchronization, if FTM clears the TRIGj bit, where j = + * 0, 1, 2, when the hardware trigger j is detected. + */ +typedef union _hw_ftm_synconf +{ + uint32_t U; + struct _hw_ftm_synconf_bitfields + { + uint32_t HWTRIGMODE : 1; //!< [0] Hardware Trigger Mode + uint32_t RESERVED0 : 1; //!< [1] + uint32_t CNTINC : 1; //!< [2] CNTIN Register Synchronization + uint32_t RESERVED1 : 1; //!< [3] + uint32_t INVC : 1; //!< [4] INVCTRL Register Synchronization + uint32_t SWOC : 1; //!< [5] SWOCTRL Register Synchronization + uint32_t RESERVED2 : 1; //!< [6] + uint32_t SYNCMODE : 1; //!< [7] Synchronization Mode + uint32_t SWRSTCNT : 1; //!< [8] + uint32_t SWWRBUF : 1; //!< [9] + uint32_t SWOM : 1; //!< [10] + uint32_t SWINVC : 1; //!< [11] + uint32_t SWSOC : 1; //!< [12] + uint32_t RESERVED3 : 3; //!< [15:13] + uint32_t HWRSTCNT : 1; //!< [16] + uint32_t HWWRBUF : 1; //!< [17] + uint32_t HWOM : 1; //!< [18] + uint32_t HWINVC : 1; //!< [19] + uint32_t HWSOC : 1; //!< [20] + uint32_t RESERVED4 : 11; //!< [31:21] + } B; +} hw_ftm_synconf_t; +#endif + +/*! + * @name Constants and macros for entire FTM_SYNCONF register + */ +//@{ +#define HW_FTM_SYNCONF_ADDR(x) (REGS_FTM_BASE(x) + 0x8CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_SYNCONF(x) (*(__IO hw_ftm_synconf_t *) HW_FTM_SYNCONF_ADDR(x)) +#define HW_FTM_SYNCONF_RD(x) (HW_FTM_SYNCONF(x).U) +#define HW_FTM_SYNCONF_WR(x, v) (HW_FTM_SYNCONF(x).U = (v)) +#define HW_FTM_SYNCONF_SET(x, v) (HW_FTM_SYNCONF_WR(x, HW_FTM_SYNCONF_RD(x) | (v))) +#define HW_FTM_SYNCONF_CLR(x, v) (HW_FTM_SYNCONF_WR(x, HW_FTM_SYNCONF_RD(x) & ~(v))) +#define HW_FTM_SYNCONF_TOG(x, v) (HW_FTM_SYNCONF_WR(x, HW_FTM_SYNCONF_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_SYNCONF bitfields + */ + +/*! + * @name Register FTM_SYNCONF, field HWTRIGMODE[0] (RW) + * + * Values: + * - 0 - FTM clears the TRIGj bit when the hardware trigger j is detected, where + * j = 0, 1,2. + * - 1 - FTM does not clear the TRIGj bit when the hardware trigger j is + * detected, where j = 0, 1,2. + */ +//@{ +#define BP_FTM_SYNCONF_HWTRIGMODE (0U) //!< Bit position for FTM_SYNCONF_HWTRIGMODE. +#define BM_FTM_SYNCONF_HWTRIGMODE (0x00000001U) //!< Bit mask for FTM_SYNCONF_HWTRIGMODE. +#define BS_FTM_SYNCONF_HWTRIGMODE (1U) //!< Bit field size in bits for FTM_SYNCONF_HWTRIGMODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_HWTRIGMODE field. +#define BR_FTM_SYNCONF_HWTRIGMODE(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWTRIGMODE)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_HWTRIGMODE. +#define BF_FTM_SYNCONF_HWTRIGMODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_HWTRIGMODE), uint32_t) & BM_FTM_SYNCONF_HWTRIGMODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HWTRIGMODE field to a new value. +#define BW_FTM_SYNCONF_HWTRIGMODE(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWTRIGMODE) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field CNTINC[2] (RW) + * + * Values: + * - 0 - CNTIN register is updated with its buffer value at all rising edges of + * system clock. + * - 1 - CNTIN register is updated with its buffer value by the PWM + * synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_CNTINC (2U) //!< Bit position for FTM_SYNCONF_CNTINC. +#define BM_FTM_SYNCONF_CNTINC (0x00000004U) //!< Bit mask for FTM_SYNCONF_CNTINC. +#define BS_FTM_SYNCONF_CNTINC (1U) //!< Bit field size in bits for FTM_SYNCONF_CNTINC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_CNTINC field. +#define BR_FTM_SYNCONF_CNTINC(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_CNTINC)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_CNTINC. +#define BF_FTM_SYNCONF_CNTINC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_CNTINC), uint32_t) & BM_FTM_SYNCONF_CNTINC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CNTINC field to a new value. +#define BW_FTM_SYNCONF_CNTINC(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_CNTINC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field INVC[4] (RW) + * + * Values: + * - 0 - INVCTRL register is updated with its buffer value at all rising edges + * of system clock. + * - 1 - INVCTRL register is updated with its buffer value by the PWM + * synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_INVC (4U) //!< Bit position for FTM_SYNCONF_INVC. +#define BM_FTM_SYNCONF_INVC (0x00000010U) //!< Bit mask for FTM_SYNCONF_INVC. +#define BS_FTM_SYNCONF_INVC (1U) //!< Bit field size in bits for FTM_SYNCONF_INVC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_INVC field. +#define BR_FTM_SYNCONF_INVC(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_INVC)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_INVC. +#define BF_FTM_SYNCONF_INVC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_INVC), uint32_t) & BM_FTM_SYNCONF_INVC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INVC field to a new value. +#define BW_FTM_SYNCONF_INVC(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_INVC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field SWOC[5] (RW) + * + * Values: + * - 0 - SWOCTRL register is updated with its buffer value at all rising edges + * of system clock. + * - 1 - SWOCTRL register is updated with its buffer value by the PWM + * synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_SWOC (5U) //!< Bit position for FTM_SYNCONF_SWOC. +#define BM_FTM_SYNCONF_SWOC (0x00000020U) //!< Bit mask for FTM_SYNCONF_SWOC. +#define BS_FTM_SYNCONF_SWOC (1U) //!< Bit field size in bits for FTM_SYNCONF_SWOC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_SWOC field. +#define BR_FTM_SYNCONF_SWOC(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWOC)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_SWOC. +#define BF_FTM_SYNCONF_SWOC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_SWOC), uint32_t) & BM_FTM_SYNCONF_SWOC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWOC field to a new value. +#define BW_FTM_SYNCONF_SWOC(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWOC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field SYNCMODE[7] (RW) + * + * Selects the PWM Synchronization mode. + * + * Values: + * - 0 - Legacy PWM synchronization is selected. + * - 1 - Enhanced PWM synchronization is selected. + */ +//@{ +#define BP_FTM_SYNCONF_SYNCMODE (7U) //!< Bit position for FTM_SYNCONF_SYNCMODE. +#define BM_FTM_SYNCONF_SYNCMODE (0x00000080U) //!< Bit mask for FTM_SYNCONF_SYNCMODE. +#define BS_FTM_SYNCONF_SYNCMODE (1U) //!< Bit field size in bits for FTM_SYNCONF_SYNCMODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_SYNCMODE field. +#define BR_FTM_SYNCONF_SYNCMODE(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SYNCMODE)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_SYNCMODE. +#define BF_FTM_SYNCONF_SYNCMODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_SYNCMODE), uint32_t) & BM_FTM_SYNCONF_SYNCMODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYNCMODE field to a new value. +#define BW_FTM_SYNCONF_SYNCMODE(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SYNCMODE) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field SWRSTCNT[8] (RW) + * + * FTM counter synchronization is activated by the software trigger. + * + * Values: + * - 0 - The software trigger does not activate the FTM counter synchronization. + * - 1 - The software trigger activates the FTM counter synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_SWRSTCNT (8U) //!< Bit position for FTM_SYNCONF_SWRSTCNT. +#define BM_FTM_SYNCONF_SWRSTCNT (0x00000100U) //!< Bit mask for FTM_SYNCONF_SWRSTCNT. +#define BS_FTM_SYNCONF_SWRSTCNT (1U) //!< Bit field size in bits for FTM_SYNCONF_SWRSTCNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_SWRSTCNT field. +#define BR_FTM_SYNCONF_SWRSTCNT(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWRSTCNT)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_SWRSTCNT. +#define BF_FTM_SYNCONF_SWRSTCNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_SWRSTCNT), uint32_t) & BM_FTM_SYNCONF_SWRSTCNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWRSTCNT field to a new value. +#define BW_FTM_SYNCONF_SWRSTCNT(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWRSTCNT) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field SWWRBUF[9] (RW) + * + * MOD, CNTIN, and CV registers synchronization is activated by the software + * trigger. + * + * Values: + * - 0 - The software trigger does not activate MOD, CNTIN, and CV registers + * synchronization. + * - 1 - The software trigger activates MOD, CNTIN, and CV registers + * synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_SWWRBUF (9U) //!< Bit position for FTM_SYNCONF_SWWRBUF. +#define BM_FTM_SYNCONF_SWWRBUF (0x00000200U) //!< Bit mask for FTM_SYNCONF_SWWRBUF. +#define BS_FTM_SYNCONF_SWWRBUF (1U) //!< Bit field size in bits for FTM_SYNCONF_SWWRBUF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_SWWRBUF field. +#define BR_FTM_SYNCONF_SWWRBUF(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWWRBUF)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_SWWRBUF. +#define BF_FTM_SYNCONF_SWWRBUF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_SWWRBUF), uint32_t) & BM_FTM_SYNCONF_SWWRBUF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWWRBUF field to a new value. +#define BW_FTM_SYNCONF_SWWRBUF(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWWRBUF) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field SWOM[10] (RW) + * + * Output mask synchronization is activated by the software trigger. + * + * Values: + * - 0 - The software trigger does not activate the OUTMASK register + * synchronization. + * - 1 - The software trigger activates the OUTMASK register synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_SWOM (10U) //!< Bit position for FTM_SYNCONF_SWOM. +#define BM_FTM_SYNCONF_SWOM (0x00000400U) //!< Bit mask for FTM_SYNCONF_SWOM. +#define BS_FTM_SYNCONF_SWOM (1U) //!< Bit field size in bits for FTM_SYNCONF_SWOM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_SWOM field. +#define BR_FTM_SYNCONF_SWOM(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWOM)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_SWOM. +#define BF_FTM_SYNCONF_SWOM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_SWOM), uint32_t) & BM_FTM_SYNCONF_SWOM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWOM field to a new value. +#define BW_FTM_SYNCONF_SWOM(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWOM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field SWINVC[11] (RW) + * + * Inverting control synchronization is activated by the software trigger. + * + * Values: + * - 0 - The software trigger does not activate the INVCTRL register + * synchronization. + * - 1 - The software trigger activates the INVCTRL register synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_SWINVC (11U) //!< Bit position for FTM_SYNCONF_SWINVC. +#define BM_FTM_SYNCONF_SWINVC (0x00000800U) //!< Bit mask for FTM_SYNCONF_SWINVC. +#define BS_FTM_SYNCONF_SWINVC (1U) //!< Bit field size in bits for FTM_SYNCONF_SWINVC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_SWINVC field. +#define BR_FTM_SYNCONF_SWINVC(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWINVC)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_SWINVC. +#define BF_FTM_SYNCONF_SWINVC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_SWINVC), uint32_t) & BM_FTM_SYNCONF_SWINVC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWINVC field to a new value. +#define BW_FTM_SYNCONF_SWINVC(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWINVC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field SWSOC[12] (RW) + * + * Software output control synchronization is activated by the software trigger. + * + * Values: + * - 0 - The software trigger does not activate the SWOCTRL register + * synchronization. + * - 1 - The software trigger activates the SWOCTRL register synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_SWSOC (12U) //!< Bit position for FTM_SYNCONF_SWSOC. +#define BM_FTM_SYNCONF_SWSOC (0x00001000U) //!< Bit mask for FTM_SYNCONF_SWSOC. +#define BS_FTM_SYNCONF_SWSOC (1U) //!< Bit field size in bits for FTM_SYNCONF_SWSOC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_SWSOC field. +#define BR_FTM_SYNCONF_SWSOC(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWSOC)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_SWSOC. +#define BF_FTM_SYNCONF_SWSOC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_SWSOC), uint32_t) & BM_FTM_SYNCONF_SWSOC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWSOC field to a new value. +#define BW_FTM_SYNCONF_SWSOC(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_SWSOC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field HWRSTCNT[16] (RW) + * + * FTM counter synchronization is activated by a hardware trigger. + * + * Values: + * - 0 - A hardware trigger does not activate the FTM counter synchronization. + * - 1 - A hardware trigger activates the FTM counter synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_HWRSTCNT (16U) //!< Bit position for FTM_SYNCONF_HWRSTCNT. +#define BM_FTM_SYNCONF_HWRSTCNT (0x00010000U) //!< Bit mask for FTM_SYNCONF_HWRSTCNT. +#define BS_FTM_SYNCONF_HWRSTCNT (1U) //!< Bit field size in bits for FTM_SYNCONF_HWRSTCNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_HWRSTCNT field. +#define BR_FTM_SYNCONF_HWRSTCNT(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWRSTCNT)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_HWRSTCNT. +#define BF_FTM_SYNCONF_HWRSTCNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_HWRSTCNT), uint32_t) & BM_FTM_SYNCONF_HWRSTCNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HWRSTCNT field to a new value. +#define BW_FTM_SYNCONF_HWRSTCNT(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWRSTCNT) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field HWWRBUF[17] (RW) + * + * MOD, CNTIN, and CV registers synchronization is activated by a hardware + * trigger. + * + * Values: + * - 0 - A hardware trigger does not activate MOD, CNTIN, and CV registers + * synchronization. + * - 1 - A hardware trigger activates MOD, CNTIN, and CV registers + * synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_HWWRBUF (17U) //!< Bit position for FTM_SYNCONF_HWWRBUF. +#define BM_FTM_SYNCONF_HWWRBUF (0x00020000U) //!< Bit mask for FTM_SYNCONF_HWWRBUF. +#define BS_FTM_SYNCONF_HWWRBUF (1U) //!< Bit field size in bits for FTM_SYNCONF_HWWRBUF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_HWWRBUF field. +#define BR_FTM_SYNCONF_HWWRBUF(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWWRBUF)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_HWWRBUF. +#define BF_FTM_SYNCONF_HWWRBUF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_HWWRBUF), uint32_t) & BM_FTM_SYNCONF_HWWRBUF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HWWRBUF field to a new value. +#define BW_FTM_SYNCONF_HWWRBUF(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWWRBUF) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field HWOM[18] (RW) + * + * Output mask synchronization is activated by a hardware trigger. + * + * Values: + * - 0 - A hardware trigger does not activate the OUTMASK register + * synchronization. + * - 1 - A hardware trigger activates the OUTMASK register synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_HWOM (18U) //!< Bit position for FTM_SYNCONF_HWOM. +#define BM_FTM_SYNCONF_HWOM (0x00040000U) //!< Bit mask for FTM_SYNCONF_HWOM. +#define BS_FTM_SYNCONF_HWOM (1U) //!< Bit field size in bits for FTM_SYNCONF_HWOM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_HWOM field. +#define BR_FTM_SYNCONF_HWOM(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWOM)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_HWOM. +#define BF_FTM_SYNCONF_HWOM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_HWOM), uint32_t) & BM_FTM_SYNCONF_HWOM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HWOM field to a new value. +#define BW_FTM_SYNCONF_HWOM(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWOM) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field HWINVC[19] (RW) + * + * Inverting control synchronization is activated by a hardware trigger. + * + * Values: + * - 0 - A hardware trigger does not activate the INVCTRL register + * synchronization. + * - 1 - A hardware trigger activates the INVCTRL register synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_HWINVC (19U) //!< Bit position for FTM_SYNCONF_HWINVC. +#define BM_FTM_SYNCONF_HWINVC (0x00080000U) //!< Bit mask for FTM_SYNCONF_HWINVC. +#define BS_FTM_SYNCONF_HWINVC (1U) //!< Bit field size in bits for FTM_SYNCONF_HWINVC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_HWINVC field. +#define BR_FTM_SYNCONF_HWINVC(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWINVC)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_HWINVC. +#define BF_FTM_SYNCONF_HWINVC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_HWINVC), uint32_t) & BM_FTM_SYNCONF_HWINVC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HWINVC field to a new value. +#define BW_FTM_SYNCONF_HWINVC(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWINVC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SYNCONF, field HWSOC[20] (RW) + * + * Software output control synchronization is activated by a hardware trigger. + * + * Values: + * - 0 - A hardware trigger does not activate the SWOCTRL register + * synchronization. + * - 1 - A hardware trigger activates the SWOCTRL register synchronization. + */ +//@{ +#define BP_FTM_SYNCONF_HWSOC (20U) //!< Bit position for FTM_SYNCONF_HWSOC. +#define BM_FTM_SYNCONF_HWSOC (0x00100000U) //!< Bit mask for FTM_SYNCONF_HWSOC. +#define BS_FTM_SYNCONF_HWSOC (1U) //!< Bit field size in bits for FTM_SYNCONF_HWSOC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SYNCONF_HWSOC field. +#define BR_FTM_SYNCONF_HWSOC(x) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWSOC)) +#endif + +//! @brief Format value for bitfield FTM_SYNCONF_HWSOC. +#define BF_FTM_SYNCONF_HWSOC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SYNCONF_HWSOC), uint32_t) & BM_FTM_SYNCONF_HWSOC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HWSOC field to a new value. +#define BW_FTM_SYNCONF_HWSOC(x, v) (BITBAND_ACCESS32(HW_FTM_SYNCONF_ADDR(x), BP_FTM_SYNCONF_HWSOC) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_INVCTRL - FTM Inverting Control +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_INVCTRL - FTM Inverting Control (RW) + * + * Reset value: 0x00000000U + * + * This register controls when the channel (n) output becomes the channel (n+1) + * output, and channel (n+1) output becomes the channel (n) output. Each INVmEN + * bit enables the inverting operation for the corresponding pair channels m. This + * register has a write buffer. The INVmEN bit is updated by the INVCTRL + * register synchronization. + */ +typedef union _hw_ftm_invctrl +{ + uint32_t U; + struct _hw_ftm_invctrl_bitfields + { + uint32_t INV0EN : 1; //!< [0] Pair Channels 0 Inverting Enable + uint32_t INV1EN : 1; //!< [1] Pair Channels 1 Inverting Enable + uint32_t INV2EN : 1; //!< [2] Pair Channels 2 Inverting Enable + uint32_t INV3EN : 1; //!< [3] Pair Channels 3 Inverting Enable + uint32_t RESERVED0 : 28; //!< [31:4] + } B; +} hw_ftm_invctrl_t; +#endif + +/*! + * @name Constants and macros for entire FTM_INVCTRL register + */ +//@{ +#define HW_FTM_INVCTRL_ADDR(x) (REGS_FTM_BASE(x) + 0x90U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_INVCTRL(x) (*(__IO hw_ftm_invctrl_t *) HW_FTM_INVCTRL_ADDR(x)) +#define HW_FTM_INVCTRL_RD(x) (HW_FTM_INVCTRL(x).U) +#define HW_FTM_INVCTRL_WR(x, v) (HW_FTM_INVCTRL(x).U = (v)) +#define HW_FTM_INVCTRL_SET(x, v) (HW_FTM_INVCTRL_WR(x, HW_FTM_INVCTRL_RD(x) | (v))) +#define HW_FTM_INVCTRL_CLR(x, v) (HW_FTM_INVCTRL_WR(x, HW_FTM_INVCTRL_RD(x) & ~(v))) +#define HW_FTM_INVCTRL_TOG(x, v) (HW_FTM_INVCTRL_WR(x, HW_FTM_INVCTRL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_INVCTRL bitfields + */ + +/*! + * @name Register FTM_INVCTRL, field INV0EN[0] (RW) + * + * Values: + * - 0 - Inverting is disabled. + * - 1 - Inverting is enabled. + */ +//@{ +#define BP_FTM_INVCTRL_INV0EN (0U) //!< Bit position for FTM_INVCTRL_INV0EN. +#define BM_FTM_INVCTRL_INV0EN (0x00000001U) //!< Bit mask for FTM_INVCTRL_INV0EN. +#define BS_FTM_INVCTRL_INV0EN (1U) //!< Bit field size in bits for FTM_INVCTRL_INV0EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_INVCTRL_INV0EN field. +#define BR_FTM_INVCTRL_INV0EN(x) (BITBAND_ACCESS32(HW_FTM_INVCTRL_ADDR(x), BP_FTM_INVCTRL_INV0EN)) +#endif + +//! @brief Format value for bitfield FTM_INVCTRL_INV0EN. +#define BF_FTM_INVCTRL_INV0EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_INVCTRL_INV0EN), uint32_t) & BM_FTM_INVCTRL_INV0EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INV0EN field to a new value. +#define BW_FTM_INVCTRL_INV0EN(x, v) (BITBAND_ACCESS32(HW_FTM_INVCTRL_ADDR(x), BP_FTM_INVCTRL_INV0EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_INVCTRL, field INV1EN[1] (RW) + * + * Values: + * - 0 - Inverting is disabled. + * - 1 - Inverting is enabled. + */ +//@{ +#define BP_FTM_INVCTRL_INV1EN (1U) //!< Bit position for FTM_INVCTRL_INV1EN. +#define BM_FTM_INVCTRL_INV1EN (0x00000002U) //!< Bit mask for FTM_INVCTRL_INV1EN. +#define BS_FTM_INVCTRL_INV1EN (1U) //!< Bit field size in bits for FTM_INVCTRL_INV1EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_INVCTRL_INV1EN field. +#define BR_FTM_INVCTRL_INV1EN(x) (BITBAND_ACCESS32(HW_FTM_INVCTRL_ADDR(x), BP_FTM_INVCTRL_INV1EN)) +#endif + +//! @brief Format value for bitfield FTM_INVCTRL_INV1EN. +#define BF_FTM_INVCTRL_INV1EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_INVCTRL_INV1EN), uint32_t) & BM_FTM_INVCTRL_INV1EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INV1EN field to a new value. +#define BW_FTM_INVCTRL_INV1EN(x, v) (BITBAND_ACCESS32(HW_FTM_INVCTRL_ADDR(x), BP_FTM_INVCTRL_INV1EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_INVCTRL, field INV2EN[2] (RW) + * + * Values: + * - 0 - Inverting is disabled. + * - 1 - Inverting is enabled. + */ +//@{ +#define BP_FTM_INVCTRL_INV2EN (2U) //!< Bit position for FTM_INVCTRL_INV2EN. +#define BM_FTM_INVCTRL_INV2EN (0x00000004U) //!< Bit mask for FTM_INVCTRL_INV2EN. +#define BS_FTM_INVCTRL_INV2EN (1U) //!< Bit field size in bits for FTM_INVCTRL_INV2EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_INVCTRL_INV2EN field. +#define BR_FTM_INVCTRL_INV2EN(x) (BITBAND_ACCESS32(HW_FTM_INVCTRL_ADDR(x), BP_FTM_INVCTRL_INV2EN)) +#endif + +//! @brief Format value for bitfield FTM_INVCTRL_INV2EN. +#define BF_FTM_INVCTRL_INV2EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_INVCTRL_INV2EN), uint32_t) & BM_FTM_INVCTRL_INV2EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INV2EN field to a new value. +#define BW_FTM_INVCTRL_INV2EN(x, v) (BITBAND_ACCESS32(HW_FTM_INVCTRL_ADDR(x), BP_FTM_INVCTRL_INV2EN) = (v)) +#endif +//@} + +/*! + * @name Register FTM_INVCTRL, field INV3EN[3] (RW) + * + * Values: + * - 0 - Inverting is disabled. + * - 1 - Inverting is enabled. + */ +//@{ +#define BP_FTM_INVCTRL_INV3EN (3U) //!< Bit position for FTM_INVCTRL_INV3EN. +#define BM_FTM_INVCTRL_INV3EN (0x00000008U) //!< Bit mask for FTM_INVCTRL_INV3EN. +#define BS_FTM_INVCTRL_INV3EN (1U) //!< Bit field size in bits for FTM_INVCTRL_INV3EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_INVCTRL_INV3EN field. +#define BR_FTM_INVCTRL_INV3EN(x) (BITBAND_ACCESS32(HW_FTM_INVCTRL_ADDR(x), BP_FTM_INVCTRL_INV3EN)) +#endif + +//! @brief Format value for bitfield FTM_INVCTRL_INV3EN. +#define BF_FTM_INVCTRL_INV3EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_INVCTRL_INV3EN), uint32_t) & BM_FTM_INVCTRL_INV3EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INV3EN field to a new value. +#define BW_FTM_INVCTRL_INV3EN(x, v) (BITBAND_ACCESS32(HW_FTM_INVCTRL_ADDR(x), BP_FTM_INVCTRL_INV3EN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_SWOCTRL - FTM Software Output Control +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_SWOCTRL - FTM Software Output Control (RW) + * + * Reset value: 0x00000000U + * + * This register enables software control of channel (n) output and defines the + * value forced to the channel (n) output: The CHnOC bits enable the control of + * the corresponding channel (n) output by software. The CHnOCV bits select the + * value that is forced at the corresponding channel (n) output. This register has + * a write buffer. The fields are updated by the SWOCTRL register synchronization. + */ +typedef union _hw_ftm_swoctrl +{ + uint32_t U; + struct _hw_ftm_swoctrl_bitfields + { + uint32_t CH0OC : 1; //!< [0] Channel 0 Software Output Control Enable + uint32_t CH1OC : 1; //!< [1] Channel 1 Software Output Control Enable + uint32_t CH2OC : 1; //!< [2] Channel 2 Software Output Control Enable + uint32_t CH3OC : 1; //!< [3] Channel 3 Software Output Control Enable + uint32_t CH4OC : 1; //!< [4] Channel 4 Software Output Control Enable + uint32_t CH5OC : 1; //!< [5] Channel 5 Software Output Control Enable + uint32_t CH6OC : 1; //!< [6] Channel 6 Software Output Control Enable + uint32_t CH7OC : 1; //!< [7] Channel 7 Software Output Control Enable + uint32_t CH0OCV : 1; //!< [8] Channel 0 Software Output Control Value + uint32_t CH1OCV : 1; //!< [9] Channel 1 Software Output Control Value + uint32_t CH2OCV : 1; //!< [10] Channel 2 Software Output Control Value + uint32_t CH3OCV : 1; //!< [11] Channel 3 Software Output Control Value + uint32_t CH4OCV : 1; //!< [12] Channel 4 Software Output Control Value + uint32_t CH5OCV : 1; //!< [13] Channel 5 Software Output Control Value + uint32_t CH6OCV : 1; //!< [14] Channel 6 Software Output Control Value + uint32_t CH7OCV : 1; //!< [15] Channel 7 Software Output Control Value + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_ftm_swoctrl_t; +#endif + +/*! + * @name Constants and macros for entire FTM_SWOCTRL register + */ +//@{ +#define HW_FTM_SWOCTRL_ADDR(x) (REGS_FTM_BASE(x) + 0x94U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_SWOCTRL(x) (*(__IO hw_ftm_swoctrl_t *) HW_FTM_SWOCTRL_ADDR(x)) +#define HW_FTM_SWOCTRL_RD(x) (HW_FTM_SWOCTRL(x).U) +#define HW_FTM_SWOCTRL_WR(x, v) (HW_FTM_SWOCTRL(x).U = (v)) +#define HW_FTM_SWOCTRL_SET(x, v) (HW_FTM_SWOCTRL_WR(x, HW_FTM_SWOCTRL_RD(x) | (v))) +#define HW_FTM_SWOCTRL_CLR(x, v) (HW_FTM_SWOCTRL_WR(x, HW_FTM_SWOCTRL_RD(x) & ~(v))) +#define HW_FTM_SWOCTRL_TOG(x, v) (HW_FTM_SWOCTRL_WR(x, HW_FTM_SWOCTRL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_SWOCTRL bitfields + */ + +/*! + * @name Register FTM_SWOCTRL, field CH0OC[0] (RW) + * + * Values: + * - 0 - The channel output is not affected by software output control. + * - 1 - The channel output is affected by software output control. + */ +//@{ +#define BP_FTM_SWOCTRL_CH0OC (0U) //!< Bit position for FTM_SWOCTRL_CH0OC. +#define BM_FTM_SWOCTRL_CH0OC (0x00000001U) //!< Bit mask for FTM_SWOCTRL_CH0OC. +#define BS_FTM_SWOCTRL_CH0OC (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH0OC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH0OC field. +#define BR_FTM_SWOCTRL_CH0OC(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH0OC)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH0OC. +#define BF_FTM_SWOCTRL_CH0OC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH0OC), uint32_t) & BM_FTM_SWOCTRL_CH0OC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH0OC field to a new value. +#define BW_FTM_SWOCTRL_CH0OC(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH0OC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH1OC[1] (RW) + * + * Values: + * - 0 - The channel output is not affected by software output control. + * - 1 - The channel output is affected by software output control. + */ +//@{ +#define BP_FTM_SWOCTRL_CH1OC (1U) //!< Bit position for FTM_SWOCTRL_CH1OC. +#define BM_FTM_SWOCTRL_CH1OC (0x00000002U) //!< Bit mask for FTM_SWOCTRL_CH1OC. +#define BS_FTM_SWOCTRL_CH1OC (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH1OC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH1OC field. +#define BR_FTM_SWOCTRL_CH1OC(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH1OC)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH1OC. +#define BF_FTM_SWOCTRL_CH1OC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH1OC), uint32_t) & BM_FTM_SWOCTRL_CH1OC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH1OC field to a new value. +#define BW_FTM_SWOCTRL_CH1OC(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH1OC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH2OC[2] (RW) + * + * Values: + * - 0 - The channel output is not affected by software output control. + * - 1 - The channel output is affected by software output control. + */ +//@{ +#define BP_FTM_SWOCTRL_CH2OC (2U) //!< Bit position for FTM_SWOCTRL_CH2OC. +#define BM_FTM_SWOCTRL_CH2OC (0x00000004U) //!< Bit mask for FTM_SWOCTRL_CH2OC. +#define BS_FTM_SWOCTRL_CH2OC (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH2OC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH2OC field. +#define BR_FTM_SWOCTRL_CH2OC(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH2OC)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH2OC. +#define BF_FTM_SWOCTRL_CH2OC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH2OC), uint32_t) & BM_FTM_SWOCTRL_CH2OC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH2OC field to a new value. +#define BW_FTM_SWOCTRL_CH2OC(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH2OC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH3OC[3] (RW) + * + * Values: + * - 0 - The channel output is not affected by software output control. + * - 1 - The channel output is affected by software output control. + */ +//@{ +#define BP_FTM_SWOCTRL_CH3OC (3U) //!< Bit position for FTM_SWOCTRL_CH3OC. +#define BM_FTM_SWOCTRL_CH3OC (0x00000008U) //!< Bit mask for FTM_SWOCTRL_CH3OC. +#define BS_FTM_SWOCTRL_CH3OC (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH3OC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH3OC field. +#define BR_FTM_SWOCTRL_CH3OC(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH3OC)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH3OC. +#define BF_FTM_SWOCTRL_CH3OC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH3OC), uint32_t) & BM_FTM_SWOCTRL_CH3OC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH3OC field to a new value. +#define BW_FTM_SWOCTRL_CH3OC(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH3OC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH4OC[4] (RW) + * + * Values: + * - 0 - The channel output is not affected by software output control. + * - 1 - The channel output is affected by software output control. + */ +//@{ +#define BP_FTM_SWOCTRL_CH4OC (4U) //!< Bit position for FTM_SWOCTRL_CH4OC. +#define BM_FTM_SWOCTRL_CH4OC (0x00000010U) //!< Bit mask for FTM_SWOCTRL_CH4OC. +#define BS_FTM_SWOCTRL_CH4OC (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH4OC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH4OC field. +#define BR_FTM_SWOCTRL_CH4OC(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH4OC)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH4OC. +#define BF_FTM_SWOCTRL_CH4OC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH4OC), uint32_t) & BM_FTM_SWOCTRL_CH4OC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH4OC field to a new value. +#define BW_FTM_SWOCTRL_CH4OC(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH4OC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH5OC[5] (RW) + * + * Values: + * - 0 - The channel output is not affected by software output control. + * - 1 - The channel output is affected by software output control. + */ +//@{ +#define BP_FTM_SWOCTRL_CH5OC (5U) //!< Bit position for FTM_SWOCTRL_CH5OC. +#define BM_FTM_SWOCTRL_CH5OC (0x00000020U) //!< Bit mask for FTM_SWOCTRL_CH5OC. +#define BS_FTM_SWOCTRL_CH5OC (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH5OC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH5OC field. +#define BR_FTM_SWOCTRL_CH5OC(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH5OC)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH5OC. +#define BF_FTM_SWOCTRL_CH5OC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH5OC), uint32_t) & BM_FTM_SWOCTRL_CH5OC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH5OC field to a new value. +#define BW_FTM_SWOCTRL_CH5OC(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH5OC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH6OC[6] (RW) + * + * Values: + * - 0 - The channel output is not affected by software output control. + * - 1 - The channel output is affected by software output control. + */ +//@{ +#define BP_FTM_SWOCTRL_CH6OC (6U) //!< Bit position for FTM_SWOCTRL_CH6OC. +#define BM_FTM_SWOCTRL_CH6OC (0x00000040U) //!< Bit mask for FTM_SWOCTRL_CH6OC. +#define BS_FTM_SWOCTRL_CH6OC (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH6OC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH6OC field. +#define BR_FTM_SWOCTRL_CH6OC(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH6OC)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH6OC. +#define BF_FTM_SWOCTRL_CH6OC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH6OC), uint32_t) & BM_FTM_SWOCTRL_CH6OC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH6OC field to a new value. +#define BW_FTM_SWOCTRL_CH6OC(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH6OC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH7OC[7] (RW) + * + * Values: + * - 0 - The channel output is not affected by software output control. + * - 1 - The channel output is affected by software output control. + */ +//@{ +#define BP_FTM_SWOCTRL_CH7OC (7U) //!< Bit position for FTM_SWOCTRL_CH7OC. +#define BM_FTM_SWOCTRL_CH7OC (0x00000080U) //!< Bit mask for FTM_SWOCTRL_CH7OC. +#define BS_FTM_SWOCTRL_CH7OC (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH7OC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH7OC field. +#define BR_FTM_SWOCTRL_CH7OC(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH7OC)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH7OC. +#define BF_FTM_SWOCTRL_CH7OC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH7OC), uint32_t) & BM_FTM_SWOCTRL_CH7OC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH7OC field to a new value. +#define BW_FTM_SWOCTRL_CH7OC(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH7OC) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH0OCV[8] (RW) + * + * Values: + * - 0 - The software output control forces 0 to the channel output. + * - 1 - The software output control forces 1 to the channel output. + */ +//@{ +#define BP_FTM_SWOCTRL_CH0OCV (8U) //!< Bit position for FTM_SWOCTRL_CH0OCV. +#define BM_FTM_SWOCTRL_CH0OCV (0x00000100U) //!< Bit mask for FTM_SWOCTRL_CH0OCV. +#define BS_FTM_SWOCTRL_CH0OCV (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH0OCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH0OCV field. +#define BR_FTM_SWOCTRL_CH0OCV(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH0OCV)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH0OCV. +#define BF_FTM_SWOCTRL_CH0OCV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH0OCV), uint32_t) & BM_FTM_SWOCTRL_CH0OCV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH0OCV field to a new value. +#define BW_FTM_SWOCTRL_CH0OCV(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH0OCV) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH1OCV[9] (RW) + * + * Values: + * - 0 - The software output control forces 0 to the channel output. + * - 1 - The software output control forces 1 to the channel output. + */ +//@{ +#define BP_FTM_SWOCTRL_CH1OCV (9U) //!< Bit position for FTM_SWOCTRL_CH1OCV. +#define BM_FTM_SWOCTRL_CH1OCV (0x00000200U) //!< Bit mask for FTM_SWOCTRL_CH1OCV. +#define BS_FTM_SWOCTRL_CH1OCV (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH1OCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH1OCV field. +#define BR_FTM_SWOCTRL_CH1OCV(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH1OCV)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH1OCV. +#define BF_FTM_SWOCTRL_CH1OCV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH1OCV), uint32_t) & BM_FTM_SWOCTRL_CH1OCV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH1OCV field to a new value. +#define BW_FTM_SWOCTRL_CH1OCV(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH1OCV) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH2OCV[10] (RW) + * + * Values: + * - 0 - The software output control forces 0 to the channel output. + * - 1 - The software output control forces 1 to the channel output. + */ +//@{ +#define BP_FTM_SWOCTRL_CH2OCV (10U) //!< Bit position for FTM_SWOCTRL_CH2OCV. +#define BM_FTM_SWOCTRL_CH2OCV (0x00000400U) //!< Bit mask for FTM_SWOCTRL_CH2OCV. +#define BS_FTM_SWOCTRL_CH2OCV (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH2OCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH2OCV field. +#define BR_FTM_SWOCTRL_CH2OCV(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH2OCV)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH2OCV. +#define BF_FTM_SWOCTRL_CH2OCV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH2OCV), uint32_t) & BM_FTM_SWOCTRL_CH2OCV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH2OCV field to a new value. +#define BW_FTM_SWOCTRL_CH2OCV(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH2OCV) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH3OCV[11] (RW) + * + * Values: + * - 0 - The software output control forces 0 to the channel output. + * - 1 - The software output control forces 1 to the channel output. + */ +//@{ +#define BP_FTM_SWOCTRL_CH3OCV (11U) //!< Bit position for FTM_SWOCTRL_CH3OCV. +#define BM_FTM_SWOCTRL_CH3OCV (0x00000800U) //!< Bit mask for FTM_SWOCTRL_CH3OCV. +#define BS_FTM_SWOCTRL_CH3OCV (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH3OCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH3OCV field. +#define BR_FTM_SWOCTRL_CH3OCV(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH3OCV)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH3OCV. +#define BF_FTM_SWOCTRL_CH3OCV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH3OCV), uint32_t) & BM_FTM_SWOCTRL_CH3OCV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH3OCV field to a new value. +#define BW_FTM_SWOCTRL_CH3OCV(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH3OCV) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH4OCV[12] (RW) + * + * Values: + * - 0 - The software output control forces 0 to the channel output. + * - 1 - The software output control forces 1 to the channel output. + */ +//@{ +#define BP_FTM_SWOCTRL_CH4OCV (12U) //!< Bit position for FTM_SWOCTRL_CH4OCV. +#define BM_FTM_SWOCTRL_CH4OCV (0x00001000U) //!< Bit mask for FTM_SWOCTRL_CH4OCV. +#define BS_FTM_SWOCTRL_CH4OCV (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH4OCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH4OCV field. +#define BR_FTM_SWOCTRL_CH4OCV(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH4OCV)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH4OCV. +#define BF_FTM_SWOCTRL_CH4OCV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH4OCV), uint32_t) & BM_FTM_SWOCTRL_CH4OCV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH4OCV field to a new value. +#define BW_FTM_SWOCTRL_CH4OCV(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH4OCV) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH5OCV[13] (RW) + * + * Values: + * - 0 - The software output control forces 0 to the channel output. + * - 1 - The software output control forces 1 to the channel output. + */ +//@{ +#define BP_FTM_SWOCTRL_CH5OCV (13U) //!< Bit position for FTM_SWOCTRL_CH5OCV. +#define BM_FTM_SWOCTRL_CH5OCV (0x00002000U) //!< Bit mask for FTM_SWOCTRL_CH5OCV. +#define BS_FTM_SWOCTRL_CH5OCV (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH5OCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH5OCV field. +#define BR_FTM_SWOCTRL_CH5OCV(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH5OCV)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH5OCV. +#define BF_FTM_SWOCTRL_CH5OCV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH5OCV), uint32_t) & BM_FTM_SWOCTRL_CH5OCV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH5OCV field to a new value. +#define BW_FTM_SWOCTRL_CH5OCV(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH5OCV) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH6OCV[14] (RW) + * + * Values: + * - 0 - The software output control forces 0 to the channel output. + * - 1 - The software output control forces 1 to the channel output. + */ +//@{ +#define BP_FTM_SWOCTRL_CH6OCV (14U) //!< Bit position for FTM_SWOCTRL_CH6OCV. +#define BM_FTM_SWOCTRL_CH6OCV (0x00004000U) //!< Bit mask for FTM_SWOCTRL_CH6OCV. +#define BS_FTM_SWOCTRL_CH6OCV (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH6OCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH6OCV field. +#define BR_FTM_SWOCTRL_CH6OCV(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH6OCV)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH6OCV. +#define BF_FTM_SWOCTRL_CH6OCV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH6OCV), uint32_t) & BM_FTM_SWOCTRL_CH6OCV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH6OCV field to a new value. +#define BW_FTM_SWOCTRL_CH6OCV(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH6OCV) = (v)) +#endif +//@} + +/*! + * @name Register FTM_SWOCTRL, field CH7OCV[15] (RW) + * + * Values: + * - 0 - The software output control forces 0 to the channel output. + * - 1 - The software output control forces 1 to the channel output. + */ +//@{ +#define BP_FTM_SWOCTRL_CH7OCV (15U) //!< Bit position for FTM_SWOCTRL_CH7OCV. +#define BM_FTM_SWOCTRL_CH7OCV (0x00008000U) //!< Bit mask for FTM_SWOCTRL_CH7OCV. +#define BS_FTM_SWOCTRL_CH7OCV (1U) //!< Bit field size in bits for FTM_SWOCTRL_CH7OCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_SWOCTRL_CH7OCV field. +#define BR_FTM_SWOCTRL_CH7OCV(x) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH7OCV)) +#endif + +//! @brief Format value for bitfield FTM_SWOCTRL_CH7OCV. +#define BF_FTM_SWOCTRL_CH7OCV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_SWOCTRL_CH7OCV), uint32_t) & BM_FTM_SWOCTRL_CH7OCV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH7OCV field to a new value. +#define BW_FTM_SWOCTRL_CH7OCV(x, v) (BITBAND_ACCESS32(HW_FTM_SWOCTRL_ADDR(x), BP_FTM_SWOCTRL_CH7OCV) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_FTM_PWMLOAD - FTM PWM Load +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_FTM_PWMLOAD - FTM PWM Load (RW) + * + * Reset value: 0x00000000U + * + * Enables the loading of the MOD, CNTIN, C(n)V, and C(n+1)V registers with the + * values of their write buffers when the FTM counter changes from the MOD + * register value to its next value or when a channel (j) match occurs. A match occurs + * for the channel (j) when FTM counter = C(j)V. + */ +typedef union _hw_ftm_pwmload +{ + uint32_t U; + struct _hw_ftm_pwmload_bitfields + { + uint32_t CH0SEL : 1; //!< [0] Channel 0 Select + uint32_t CH1SEL : 1; //!< [1] Channel 1 Select + uint32_t CH2SEL : 1; //!< [2] Channel 2 Select + uint32_t CH3SEL : 1; //!< [3] Channel 3 Select + uint32_t CH4SEL : 1; //!< [4] Channel 4 Select + uint32_t CH5SEL : 1; //!< [5] Channel 5 Select + uint32_t CH6SEL : 1; //!< [6] Channel 6 Select + uint32_t CH7SEL : 1; //!< [7] Channel 7 Select + uint32_t RESERVED0 : 1; //!< [8] + uint32_t LDOK : 1; //!< [9] Load Enable + uint32_t RESERVED1 : 22; //!< [31:10] + } B; +} hw_ftm_pwmload_t; +#endif + +/*! + * @name Constants and macros for entire FTM_PWMLOAD register + */ +//@{ +#define HW_FTM_PWMLOAD_ADDR(x) (REGS_FTM_BASE(x) + 0x98U) + +#ifndef __LANGUAGE_ASM__ +#define HW_FTM_PWMLOAD(x) (*(__IO hw_ftm_pwmload_t *) HW_FTM_PWMLOAD_ADDR(x)) +#define HW_FTM_PWMLOAD_RD(x) (HW_FTM_PWMLOAD(x).U) +#define HW_FTM_PWMLOAD_WR(x, v) (HW_FTM_PWMLOAD(x).U = (v)) +#define HW_FTM_PWMLOAD_SET(x, v) (HW_FTM_PWMLOAD_WR(x, HW_FTM_PWMLOAD_RD(x) | (v))) +#define HW_FTM_PWMLOAD_CLR(x, v) (HW_FTM_PWMLOAD_WR(x, HW_FTM_PWMLOAD_RD(x) & ~(v))) +#define HW_FTM_PWMLOAD_TOG(x, v) (HW_FTM_PWMLOAD_WR(x, HW_FTM_PWMLOAD_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual FTM_PWMLOAD bitfields + */ + +/*! + * @name Register FTM_PWMLOAD, field CH0SEL[0] (RW) + * + * Values: + * - 0 - Do not include the channel in the matching process. + * - 1 - Include the channel in the matching process. + */ +//@{ +#define BP_FTM_PWMLOAD_CH0SEL (0U) //!< Bit position for FTM_PWMLOAD_CH0SEL. +#define BM_FTM_PWMLOAD_CH0SEL (0x00000001U) //!< Bit mask for FTM_PWMLOAD_CH0SEL. +#define BS_FTM_PWMLOAD_CH0SEL (1U) //!< Bit field size in bits for FTM_PWMLOAD_CH0SEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_PWMLOAD_CH0SEL field. +#define BR_FTM_PWMLOAD_CH0SEL(x) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH0SEL)) +#endif + +//! @brief Format value for bitfield FTM_PWMLOAD_CH0SEL. +#define BF_FTM_PWMLOAD_CH0SEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_PWMLOAD_CH0SEL), uint32_t) & BM_FTM_PWMLOAD_CH0SEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH0SEL field to a new value. +#define BW_FTM_PWMLOAD_CH0SEL(x, v) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH0SEL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_PWMLOAD, field CH1SEL[1] (RW) + * + * Values: + * - 0 - Do not include the channel in the matching process. + * - 1 - Include the channel in the matching process. + */ +//@{ +#define BP_FTM_PWMLOAD_CH1SEL (1U) //!< Bit position for FTM_PWMLOAD_CH1SEL. +#define BM_FTM_PWMLOAD_CH1SEL (0x00000002U) //!< Bit mask for FTM_PWMLOAD_CH1SEL. +#define BS_FTM_PWMLOAD_CH1SEL (1U) //!< Bit field size in bits for FTM_PWMLOAD_CH1SEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_PWMLOAD_CH1SEL field. +#define BR_FTM_PWMLOAD_CH1SEL(x) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH1SEL)) +#endif + +//! @brief Format value for bitfield FTM_PWMLOAD_CH1SEL. +#define BF_FTM_PWMLOAD_CH1SEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_PWMLOAD_CH1SEL), uint32_t) & BM_FTM_PWMLOAD_CH1SEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH1SEL field to a new value. +#define BW_FTM_PWMLOAD_CH1SEL(x, v) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH1SEL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_PWMLOAD, field CH2SEL[2] (RW) + * + * Values: + * - 0 - Do not include the channel in the matching process. + * - 1 - Include the channel in the matching process. + */ +//@{ +#define BP_FTM_PWMLOAD_CH2SEL (2U) //!< Bit position for FTM_PWMLOAD_CH2SEL. +#define BM_FTM_PWMLOAD_CH2SEL (0x00000004U) //!< Bit mask for FTM_PWMLOAD_CH2SEL. +#define BS_FTM_PWMLOAD_CH2SEL (1U) //!< Bit field size in bits for FTM_PWMLOAD_CH2SEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_PWMLOAD_CH2SEL field. +#define BR_FTM_PWMLOAD_CH2SEL(x) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH2SEL)) +#endif + +//! @brief Format value for bitfield FTM_PWMLOAD_CH2SEL. +#define BF_FTM_PWMLOAD_CH2SEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_PWMLOAD_CH2SEL), uint32_t) & BM_FTM_PWMLOAD_CH2SEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH2SEL field to a new value. +#define BW_FTM_PWMLOAD_CH2SEL(x, v) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH2SEL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_PWMLOAD, field CH3SEL[3] (RW) + * + * Values: + * - 0 - Do not include the channel in the matching process. + * - 1 - Include the channel in the matching process. + */ +//@{ +#define BP_FTM_PWMLOAD_CH3SEL (3U) //!< Bit position for FTM_PWMLOAD_CH3SEL. +#define BM_FTM_PWMLOAD_CH3SEL (0x00000008U) //!< Bit mask for FTM_PWMLOAD_CH3SEL. +#define BS_FTM_PWMLOAD_CH3SEL (1U) //!< Bit field size in bits for FTM_PWMLOAD_CH3SEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_PWMLOAD_CH3SEL field. +#define BR_FTM_PWMLOAD_CH3SEL(x) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH3SEL)) +#endif + +//! @brief Format value for bitfield FTM_PWMLOAD_CH3SEL. +#define BF_FTM_PWMLOAD_CH3SEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_PWMLOAD_CH3SEL), uint32_t) & BM_FTM_PWMLOAD_CH3SEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH3SEL field to a new value. +#define BW_FTM_PWMLOAD_CH3SEL(x, v) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH3SEL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_PWMLOAD, field CH4SEL[4] (RW) + * + * Values: + * - 0 - Do not include the channel in the matching process. + * - 1 - Include the channel in the matching process. + */ +//@{ +#define BP_FTM_PWMLOAD_CH4SEL (4U) //!< Bit position for FTM_PWMLOAD_CH4SEL. +#define BM_FTM_PWMLOAD_CH4SEL (0x00000010U) //!< Bit mask for FTM_PWMLOAD_CH4SEL. +#define BS_FTM_PWMLOAD_CH4SEL (1U) //!< Bit field size in bits for FTM_PWMLOAD_CH4SEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_PWMLOAD_CH4SEL field. +#define BR_FTM_PWMLOAD_CH4SEL(x) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH4SEL)) +#endif + +//! @brief Format value for bitfield FTM_PWMLOAD_CH4SEL. +#define BF_FTM_PWMLOAD_CH4SEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_PWMLOAD_CH4SEL), uint32_t) & BM_FTM_PWMLOAD_CH4SEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH4SEL field to a new value. +#define BW_FTM_PWMLOAD_CH4SEL(x, v) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH4SEL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_PWMLOAD, field CH5SEL[5] (RW) + * + * Values: + * - 0 - Do not include the channel in the matching process. + * - 1 - Include the channel in the matching process. + */ +//@{ +#define BP_FTM_PWMLOAD_CH5SEL (5U) //!< Bit position for FTM_PWMLOAD_CH5SEL. +#define BM_FTM_PWMLOAD_CH5SEL (0x00000020U) //!< Bit mask for FTM_PWMLOAD_CH5SEL. +#define BS_FTM_PWMLOAD_CH5SEL (1U) //!< Bit field size in bits for FTM_PWMLOAD_CH5SEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_PWMLOAD_CH5SEL field. +#define BR_FTM_PWMLOAD_CH5SEL(x) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH5SEL)) +#endif + +//! @brief Format value for bitfield FTM_PWMLOAD_CH5SEL. +#define BF_FTM_PWMLOAD_CH5SEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_PWMLOAD_CH5SEL), uint32_t) & BM_FTM_PWMLOAD_CH5SEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH5SEL field to a new value. +#define BW_FTM_PWMLOAD_CH5SEL(x, v) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH5SEL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_PWMLOAD, field CH6SEL[6] (RW) + * + * Values: + * - 0 - Do not include the channel in the matching process. + * - 1 - Include the channel in the matching process. + */ +//@{ +#define BP_FTM_PWMLOAD_CH6SEL (6U) //!< Bit position for FTM_PWMLOAD_CH6SEL. +#define BM_FTM_PWMLOAD_CH6SEL (0x00000040U) //!< Bit mask for FTM_PWMLOAD_CH6SEL. +#define BS_FTM_PWMLOAD_CH6SEL (1U) //!< Bit field size in bits for FTM_PWMLOAD_CH6SEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_PWMLOAD_CH6SEL field. +#define BR_FTM_PWMLOAD_CH6SEL(x) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH6SEL)) +#endif + +//! @brief Format value for bitfield FTM_PWMLOAD_CH6SEL. +#define BF_FTM_PWMLOAD_CH6SEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_PWMLOAD_CH6SEL), uint32_t) & BM_FTM_PWMLOAD_CH6SEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH6SEL field to a new value. +#define BW_FTM_PWMLOAD_CH6SEL(x, v) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH6SEL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_PWMLOAD, field CH7SEL[7] (RW) + * + * Values: + * - 0 - Do not include the channel in the matching process. + * - 1 - Include the channel in the matching process. + */ +//@{ +#define BP_FTM_PWMLOAD_CH7SEL (7U) //!< Bit position for FTM_PWMLOAD_CH7SEL. +#define BM_FTM_PWMLOAD_CH7SEL (0x00000080U) //!< Bit mask for FTM_PWMLOAD_CH7SEL. +#define BS_FTM_PWMLOAD_CH7SEL (1U) //!< Bit field size in bits for FTM_PWMLOAD_CH7SEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_PWMLOAD_CH7SEL field. +#define BR_FTM_PWMLOAD_CH7SEL(x) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH7SEL)) +#endif + +//! @brief Format value for bitfield FTM_PWMLOAD_CH7SEL. +#define BF_FTM_PWMLOAD_CH7SEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_PWMLOAD_CH7SEL), uint32_t) & BM_FTM_PWMLOAD_CH7SEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CH7SEL field to a new value. +#define BW_FTM_PWMLOAD_CH7SEL(x, v) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_CH7SEL) = (v)) +#endif +//@} + +/*! + * @name Register FTM_PWMLOAD, field LDOK[9] (RW) + * + * Enables the loading of the MOD, CNTIN, and CV registers with the values of + * their write buffers. + * + * Values: + * - 0 - Loading updated values is disabled. + * - 1 - Loading updated values is enabled. + */ +//@{ +#define BP_FTM_PWMLOAD_LDOK (9U) //!< Bit position for FTM_PWMLOAD_LDOK. +#define BM_FTM_PWMLOAD_LDOK (0x00000200U) //!< Bit mask for FTM_PWMLOAD_LDOK. +#define BS_FTM_PWMLOAD_LDOK (1U) //!< Bit field size in bits for FTM_PWMLOAD_LDOK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the FTM_PWMLOAD_LDOK field. +#define BR_FTM_PWMLOAD_LDOK(x) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_LDOK)) +#endif + +//! @brief Format value for bitfield FTM_PWMLOAD_LDOK. +#define BF_FTM_PWMLOAD_LDOK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_FTM_PWMLOAD_LDOK), uint32_t) & BM_FTM_PWMLOAD_LDOK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LDOK field to a new value. +#define BW_FTM_PWMLOAD_LDOK(x, v) (BITBAND_ACCESS32(HW_FTM_PWMLOAD_ADDR(x), BP_FTM_PWMLOAD_LDOK) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_ftm_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All FTM module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_ftm +{ + __IO hw_ftm_sc_t SC; //!< [0x0] Status And Control + __IO hw_ftm_cnt_t CNT; //!< [0x4] Counter + __IO hw_ftm_mod_t MOD; //!< [0x8] Modulo + struct { + __IO hw_ftm_cnsc_t CnSC; //!< [0xC] Channel (n) Status And Control + __IO hw_ftm_cnv_t CnV; //!< [0x10] Channel (n) Value + } CONTROLS[8]; + __IO hw_ftm_cntin_t CNTIN; //!< [0x4C] Counter Initial Value + __IO hw_ftm_status_t STATUS; //!< [0x50] Capture And Compare Status + __IO hw_ftm_mode_t MODE; //!< [0x54] Features Mode Selection + __IO hw_ftm_sync_t SYNC; //!< [0x58] Synchronization + __IO hw_ftm_outinit_t OUTINIT; //!< [0x5C] Initial State For Channels Output + __IO hw_ftm_outmask_t OUTMASK; //!< [0x60] Output Mask + __IO hw_ftm_combine_t COMBINE; //!< [0x64] Function For Linked Channels + __IO hw_ftm_deadtime_t DEADTIME; //!< [0x68] Deadtime Insertion Control + __IO hw_ftm_exttrig_t EXTTRIG; //!< [0x6C] FTM External Trigger + __IO hw_ftm_pol_t POL; //!< [0x70] Channels Polarity + __IO hw_ftm_fms_t FMS; //!< [0x74] Fault Mode Status + __IO hw_ftm_filter_t FILTER; //!< [0x78] Input Capture Filter Control + __IO hw_ftm_fltctrl_t FLTCTRL; //!< [0x7C] Fault Control + __IO hw_ftm_qdctrl_t QDCTRL; //!< [0x80] Quadrature Decoder Control And Status + __IO hw_ftm_conf_t CONF; //!< [0x84] Configuration + __IO hw_ftm_fltpol_t FLTPOL; //!< [0x88] FTM Fault Input Polarity + __IO hw_ftm_synconf_t SYNCONF; //!< [0x8C] Synchronization Configuration + __IO hw_ftm_invctrl_t INVCTRL; //!< [0x90] FTM Inverting Control + __IO hw_ftm_swoctrl_t SWOCTRL; //!< [0x94] FTM Software Output Control + __IO hw_ftm_pwmload_t PWMLOAD; //!< [0x98] FTM PWM Load +} hw_ftm_t; +#pragma pack() + +//! @brief Macro to access all FTM registers. +//! @param x FTM instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_FTM(0)</code>. +#define HW_FTM(x) (*(hw_ftm_t *) REGS_FTM_BASE(x)) +#endif + +#endif // __HW_FTM_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_gpio.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,500 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_GPIO_REGISTERS_H__ +#define __HW_GPIO_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 GPIO + * + * General Purpose Input/Output + * + * Registers defined in this header file: + * - HW_GPIO_PDOR - Port Data Output Register + * - HW_GPIO_PSOR - Port Set Output Register + * - HW_GPIO_PCOR - Port Clear Output Register + * - HW_GPIO_PTOR - Port Toggle Output Register + * - HW_GPIO_PDIR - Port Data Input Register + * - HW_GPIO_PDDR - Port Data Direction Register + * + * - hw_gpio_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_GPIO_BASE +#define HW_GPIO_INSTANCE_COUNT (5U) //!< Number of instances of the GPIO module. +#define HW_GPIOA (0U) //!< Instance number for GPIOA. +#define HW_GPIOB (1U) //!< Instance number for GPIOB. +#define HW_GPIOC (2U) //!< Instance number for GPIOC. +#define HW_GPIOD (3U) //!< Instance number for GPIOD. +#define HW_GPIOE (4U) //!< Instance number for GPIOE. +#define REGS_GPIOA_BASE (0x400FF000U) //!< Base address for GPIOA. +#define REGS_GPIOB_BASE (0x400FF040U) //!< Base address for GPIOB. +#define REGS_GPIOC_BASE (0x400FF080U) //!< Base address for GPIOC. +#define REGS_GPIOD_BASE (0x400FF0C0U) //!< Base address for GPIOD. +#define REGS_GPIOE_BASE (0x400FF100U) //!< Base address for GPIOE. + +//! @brief Table of base addresses for GPIO instances. +static const uint32_t __g_regs_GPIO_base_addresses[] = { + REGS_GPIOA_BASE, + REGS_GPIOB_BASE, + REGS_GPIOC_BASE, + REGS_GPIOD_BASE, + REGS_GPIOE_BASE, + }; + +//! @brief Get the base address of GPIO by instance number. +//! @param x GPIO instance number, from 0 through 4. +#define REGS_GPIO_BASE(x) (__g_regs_GPIO_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of GPIO. +#define REGS_GPIO_INSTANCE(b) ((b) == REGS_GPIOA_BASE ? HW_GPIOA : (b) == REGS_GPIOB_BASE ? HW_GPIOB : (b) == REGS_GPIOC_BASE ? HW_GPIOC : (b) == REGS_GPIOD_BASE ? HW_GPIOD : (b) == REGS_GPIOE_BASE ? HW_GPIOE : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_GPIO_PDOR - Port Data Output Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_GPIO_PDOR - Port Data Output Register (RW) + * + * Reset value: 0x00000000U + * + * This register configures the logic levels that are driven on each + * general-purpose output pins. Do not modify pin configuration registers associated with + * pins not available in your selected package. All unbonded pins not available in + * your package will default to DISABLE state for lowest power consumption. + */ +typedef union _hw_gpio_pdor +{ + uint32_t U; + struct _hw_gpio_pdor_bitfields + { + uint32_t PDO : 32; //!< [31:0] Port Data Output + } B; +} hw_gpio_pdor_t; +#endif + +/*! + * @name Constants and macros for entire GPIO_PDOR register + */ +//@{ +#define HW_GPIO_PDOR_ADDR(x) (REGS_GPIO_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_GPIO_PDOR(x) (*(__IO hw_gpio_pdor_t *) HW_GPIO_PDOR_ADDR(x)) +#define HW_GPIO_PDOR_RD(x) (HW_GPIO_PDOR(x).U) +#define HW_GPIO_PDOR_WR(x, v) (HW_GPIO_PDOR(x).U = (v)) +#define HW_GPIO_PDOR_SET(x, v) (HW_GPIO_PDOR_WR(x, HW_GPIO_PDOR_RD(x) | (v))) +#define HW_GPIO_PDOR_CLR(x, v) (HW_GPIO_PDOR_WR(x, HW_GPIO_PDOR_RD(x) & ~(v))) +#define HW_GPIO_PDOR_TOG(x, v) (HW_GPIO_PDOR_WR(x, HW_GPIO_PDOR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual GPIO_PDOR bitfields + */ + +/*! + * @name Register GPIO_PDOR, field PDO[31:0] (RW) + * + * Register bits for unbonded pins return a undefined value when read. + * + * Values: + * - 0 - Logic level 0 is driven on pin, provided pin is configured for + * general-purpose output. + * - 1 - Logic level 1 is driven on pin, provided pin is configured for + * general-purpose output. + */ +//@{ +#define BP_GPIO_PDOR_PDO (0U) //!< Bit position for GPIO_PDOR_PDO. +#define BM_GPIO_PDOR_PDO (0xFFFFFFFFU) //!< Bit mask for GPIO_PDOR_PDO. +#define BS_GPIO_PDOR_PDO (32U) //!< Bit field size in bits for GPIO_PDOR_PDO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the GPIO_PDOR_PDO field. +#define BR_GPIO_PDOR_PDO(x) (HW_GPIO_PDOR(x).U) +#endif + +//! @brief Format value for bitfield GPIO_PDOR_PDO. +#define BF_GPIO_PDOR_PDO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_GPIO_PDOR_PDO), uint32_t) & BM_GPIO_PDOR_PDO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PDO field to a new value. +#define BW_GPIO_PDOR_PDO(x, v) (HW_GPIO_PDOR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_GPIO_PSOR - Port Set Output Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_GPIO_PSOR - Port Set Output Register (WORZ) + * + * Reset value: 0x00000000U + * + * This register configures whether to set the fields of the PDOR. + */ +typedef union _hw_gpio_psor +{ + uint32_t U; + struct _hw_gpio_psor_bitfields + { + uint32_t PTSO : 32; //!< [31:0] Port Set Output + } B; +} hw_gpio_psor_t; +#endif + +/*! + * @name Constants and macros for entire GPIO_PSOR register + */ +//@{ +#define HW_GPIO_PSOR_ADDR(x) (REGS_GPIO_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_GPIO_PSOR(x) (*(__O hw_gpio_psor_t *) HW_GPIO_PSOR_ADDR(x)) +#define HW_GPIO_PSOR_RD(x) (HW_GPIO_PSOR(x).U) +#define HW_GPIO_PSOR_WR(x, v) (HW_GPIO_PSOR(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual GPIO_PSOR bitfields + */ + +/*! + * @name Register GPIO_PSOR, field PTSO[31:0] (WORZ) + * + * Writing to this register will update the contents of the corresponding bit in + * the PDOR as follows: + * + * Values: + * - 0 - Corresponding bit in PDORn does not change. + * - 1 - Corresponding bit in PDORn is set to logic 1. + */ +//@{ +#define BP_GPIO_PSOR_PTSO (0U) //!< Bit position for GPIO_PSOR_PTSO. +#define BM_GPIO_PSOR_PTSO (0xFFFFFFFFU) //!< Bit mask for GPIO_PSOR_PTSO. +#define BS_GPIO_PSOR_PTSO (32U) //!< Bit field size in bits for GPIO_PSOR_PTSO. + +//! @brief Format value for bitfield GPIO_PSOR_PTSO. +#define BF_GPIO_PSOR_PTSO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_GPIO_PSOR_PTSO), uint32_t) & BM_GPIO_PSOR_PTSO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PTSO field to a new value. +#define BW_GPIO_PSOR_PTSO(x, v) (HW_GPIO_PSOR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_GPIO_PCOR - Port Clear Output Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_GPIO_PCOR - Port Clear Output Register (WORZ) + * + * Reset value: 0x00000000U + * + * This register configures whether to clear the fields of PDOR. + */ +typedef union _hw_gpio_pcor +{ + uint32_t U; + struct _hw_gpio_pcor_bitfields + { + uint32_t PTCO : 32; //!< [31:0] Port Clear Output + } B; +} hw_gpio_pcor_t; +#endif + +/*! + * @name Constants and macros for entire GPIO_PCOR register + */ +//@{ +#define HW_GPIO_PCOR_ADDR(x) (REGS_GPIO_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_GPIO_PCOR(x) (*(__O hw_gpio_pcor_t *) HW_GPIO_PCOR_ADDR(x)) +#define HW_GPIO_PCOR_RD(x) (HW_GPIO_PCOR(x).U) +#define HW_GPIO_PCOR_WR(x, v) (HW_GPIO_PCOR(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual GPIO_PCOR bitfields + */ + +/*! + * @name Register GPIO_PCOR, field PTCO[31:0] (WORZ) + * + * Writing to this register will update the contents of the corresponding bit in + * the Port Data Output Register (PDOR) as follows: + * + * Values: + * - 0 - Corresponding bit in PDORn does not change. + * - 1 - Corresponding bit in PDORn is cleared to logic 0. + */ +//@{ +#define BP_GPIO_PCOR_PTCO (0U) //!< Bit position for GPIO_PCOR_PTCO. +#define BM_GPIO_PCOR_PTCO (0xFFFFFFFFU) //!< Bit mask for GPIO_PCOR_PTCO. +#define BS_GPIO_PCOR_PTCO (32U) //!< Bit field size in bits for GPIO_PCOR_PTCO. + +//! @brief Format value for bitfield GPIO_PCOR_PTCO. +#define BF_GPIO_PCOR_PTCO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_GPIO_PCOR_PTCO), uint32_t) & BM_GPIO_PCOR_PTCO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PTCO field to a new value. +#define BW_GPIO_PCOR_PTCO(x, v) (HW_GPIO_PCOR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_GPIO_PTOR - Port Toggle Output Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_GPIO_PTOR - Port Toggle Output Register (WORZ) + * + * Reset value: 0x00000000U + */ +typedef union _hw_gpio_ptor +{ + uint32_t U; + struct _hw_gpio_ptor_bitfields + { + uint32_t PTTO : 32; //!< [31:0] Port Toggle Output + } B; +} hw_gpio_ptor_t; +#endif + +/*! + * @name Constants and macros for entire GPIO_PTOR register + */ +//@{ +#define HW_GPIO_PTOR_ADDR(x) (REGS_GPIO_BASE(x) + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_GPIO_PTOR(x) (*(__O hw_gpio_ptor_t *) HW_GPIO_PTOR_ADDR(x)) +#define HW_GPIO_PTOR_RD(x) (HW_GPIO_PTOR(x).U) +#define HW_GPIO_PTOR_WR(x, v) (HW_GPIO_PTOR(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual GPIO_PTOR bitfields + */ + +/*! + * @name Register GPIO_PTOR, field PTTO[31:0] (WORZ) + * + * Writing to this register will update the contents of the corresponding bit in + * the PDOR as follows: + * + * Values: + * - 0 - Corresponding bit in PDORn does not change. + * - 1 - Corresponding bit in PDORn is set to the inverse of its existing logic + * state. + */ +//@{ +#define BP_GPIO_PTOR_PTTO (0U) //!< Bit position for GPIO_PTOR_PTTO. +#define BM_GPIO_PTOR_PTTO (0xFFFFFFFFU) //!< Bit mask for GPIO_PTOR_PTTO. +#define BS_GPIO_PTOR_PTTO (32U) //!< Bit field size in bits for GPIO_PTOR_PTTO. + +//! @brief Format value for bitfield GPIO_PTOR_PTTO. +#define BF_GPIO_PTOR_PTTO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_GPIO_PTOR_PTTO), uint32_t) & BM_GPIO_PTOR_PTTO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PTTO field to a new value. +#define BW_GPIO_PTOR_PTTO(x, v) (HW_GPIO_PTOR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_GPIO_PDIR - Port Data Input Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_GPIO_PDIR - Port Data Input Register (RO) + * + * Reset value: 0x00000000U + * + * Do not modify pin configuration registers associated with pins not available + * in your selected package. All unbonded pins not available in your package will + * default to DISABLE state for lowest power consumption. + */ +typedef union _hw_gpio_pdir +{ + uint32_t U; + struct _hw_gpio_pdir_bitfields + { + uint32_t PDI : 32; //!< [31:0] Port Data Input + } B; +} hw_gpio_pdir_t; +#endif + +/*! + * @name Constants and macros for entire GPIO_PDIR register + */ +//@{ +#define HW_GPIO_PDIR_ADDR(x) (REGS_GPIO_BASE(x) + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_GPIO_PDIR(x) (*(__I hw_gpio_pdir_t *) HW_GPIO_PDIR_ADDR(x)) +#define HW_GPIO_PDIR_RD(x) (HW_GPIO_PDIR(x).U) +#endif +//@} + +/* + * Constants & macros for individual GPIO_PDIR bitfields + */ + +/*! + * @name Register GPIO_PDIR, field PDI[31:0] (RO) + * + * Reads 0 at the unimplemented pins for a particular device. Pins that are not + * configured for a digital function read 0. If the Port Control and Interrupt + * module is disabled, then the corresponding bit in PDIR does not update. + * + * Values: + * - 0 - Pin logic level is logic 0, or is not configured for use by digital + * function. + * - 1 - Pin logic level is logic 1. + */ +//@{ +#define BP_GPIO_PDIR_PDI (0U) //!< Bit position for GPIO_PDIR_PDI. +#define BM_GPIO_PDIR_PDI (0xFFFFFFFFU) //!< Bit mask for GPIO_PDIR_PDI. +#define BS_GPIO_PDIR_PDI (32U) //!< Bit field size in bits for GPIO_PDIR_PDI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the GPIO_PDIR_PDI field. +#define BR_GPIO_PDIR_PDI(x) (HW_GPIO_PDIR(x).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_GPIO_PDDR - Port Data Direction Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_GPIO_PDDR - Port Data Direction Register (RW) + * + * Reset value: 0x00000000U + * + * The PDDR configures the individual port pins for input or output. + */ +typedef union _hw_gpio_pddr +{ + uint32_t U; + struct _hw_gpio_pddr_bitfields + { + uint32_t PDD : 32; //!< [31:0] Port Data Direction + } B; +} hw_gpio_pddr_t; +#endif + +/*! + * @name Constants and macros for entire GPIO_PDDR register + */ +//@{ +#define HW_GPIO_PDDR_ADDR(x) (REGS_GPIO_BASE(x) + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_GPIO_PDDR(x) (*(__IO hw_gpio_pddr_t *) HW_GPIO_PDDR_ADDR(x)) +#define HW_GPIO_PDDR_RD(x) (HW_GPIO_PDDR(x).U) +#define HW_GPIO_PDDR_WR(x, v) (HW_GPIO_PDDR(x).U = (v)) +#define HW_GPIO_PDDR_SET(x, v) (HW_GPIO_PDDR_WR(x, HW_GPIO_PDDR_RD(x) | (v))) +#define HW_GPIO_PDDR_CLR(x, v) (HW_GPIO_PDDR_WR(x, HW_GPIO_PDDR_RD(x) & ~(v))) +#define HW_GPIO_PDDR_TOG(x, v) (HW_GPIO_PDDR_WR(x, HW_GPIO_PDDR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual GPIO_PDDR bitfields + */ + +/*! + * @name Register GPIO_PDDR, field PDD[31:0] (RW) + * + * Configures individual port pins for input or output. + * + * Values: + * - 0 - Pin is configured as general-purpose input, for the GPIO function. + * - 1 - Pin is configured as general-purpose output, for the GPIO function. + */ +//@{ +#define BP_GPIO_PDDR_PDD (0U) //!< Bit position for GPIO_PDDR_PDD. +#define BM_GPIO_PDDR_PDD (0xFFFFFFFFU) //!< Bit mask for GPIO_PDDR_PDD. +#define BS_GPIO_PDDR_PDD (32U) //!< Bit field size in bits for GPIO_PDDR_PDD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the GPIO_PDDR_PDD field. +#define BR_GPIO_PDDR_PDD(x) (HW_GPIO_PDDR(x).U) +#endif + +//! @brief Format value for bitfield GPIO_PDDR_PDD. +#define BF_GPIO_PDDR_PDD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_GPIO_PDDR_PDD), uint32_t) & BM_GPIO_PDDR_PDD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PDD field to a new value. +#define BW_GPIO_PDDR_PDD(x, v) (HW_GPIO_PDDR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_gpio_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All GPIO module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_gpio +{ + __IO hw_gpio_pdor_t PDOR; //!< [0x0] Port Data Output Register + __O hw_gpio_psor_t PSOR; //!< [0x4] Port Set Output Register + __O hw_gpio_pcor_t PCOR; //!< [0x8] Port Clear Output Register + __O hw_gpio_ptor_t PTOR; //!< [0xC] Port Toggle Output Register + __I hw_gpio_pdir_t PDIR; //!< [0x10] Port Data Input Register + __IO hw_gpio_pddr_t PDDR; //!< [0x14] Port Data Direction Register +} hw_gpio_t; +#pragma pack() + +//! @brief Macro to access all GPIO registers. +//! @param x GPIO instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_GPIO(0)</code>. +#define HW_GPIO(x) (*(hw_gpio_t *) REGS_GPIO_BASE(x)) +#endif + +#endif // __HW_GPIO_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_i2c.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1902 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_I2C_REGISTERS_H__ +#define __HW_I2C_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 I2C + * + * Inter-Integrated Circuit + * + * Registers defined in this header file: + * - HW_I2C_A1 - I2C Address Register 1 + * - HW_I2C_F - I2C Frequency Divider register + * - HW_I2C_C1 - I2C Control Register 1 + * - HW_I2C_S - I2C Status register + * - HW_I2C_D - I2C Data I/O register + * - HW_I2C_C2 - I2C Control Register 2 + * - HW_I2C_FLT - I2C Programmable Input Glitch Filter register + * - HW_I2C_RA - I2C Range Address register + * - HW_I2C_SMB - I2C SMBus Control and Status register + * - HW_I2C_A2 - I2C Address Register 2 + * - HW_I2C_SLTH - I2C SCL Low Timeout Register High + * - HW_I2C_SLTL - I2C SCL Low Timeout Register Low + * + * - hw_i2c_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_I2C_BASE +#define HW_I2C_INSTANCE_COUNT (3U) //!< Number of instances of the I2C module. +#define HW_I2C0 (0U) //!< Instance number for I2C0. +#define HW_I2C1 (1U) //!< Instance number for I2C1. +#define HW_I2C2 (2U) //!< Instance number for I2C2. +#define REGS_I2C0_BASE (0x40066000U) //!< Base address for I2C0. +#define REGS_I2C1_BASE (0x40067000U) //!< Base address for I2C1. +#define REGS_I2C2_BASE (0x400E6000U) //!< Base address for I2C2. + +//! @brief Table of base addresses for I2C instances. +static const uint32_t __g_regs_I2C_base_addresses[] = { + REGS_I2C0_BASE, + REGS_I2C1_BASE, + REGS_I2C2_BASE, + }; + +//! @brief Get the base address of I2C by instance number. +//! @param x I2C instance number, from 0 through 2. +#define REGS_I2C_BASE(x) (__g_regs_I2C_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of I2C. +#define REGS_I2C_INSTANCE(b) ((b) == REGS_I2C0_BASE ? HW_I2C0 : (b) == REGS_I2C1_BASE ? HW_I2C1 : (b) == REGS_I2C2_BASE ? HW_I2C2 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_A1 - I2C Address Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_A1 - I2C Address Register 1 (RW) + * + * Reset value: 0x00U + * + * This register contains the slave address to be used by the I2C module. + */ +typedef union _hw_i2c_a1 +{ + uint8_t U; + struct _hw_i2c_a1_bitfields + { + uint8_t RESERVED0 : 1; //!< [0] + uint8_t AD : 7; //!< [7:1] Address + } B; +} hw_i2c_a1_t; +#endif + +/*! + * @name Constants and macros for entire I2C_A1 register + */ +//@{ +#define HW_I2C_A1_ADDR(x) (REGS_I2C_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_A1(x) (*(__IO hw_i2c_a1_t *) HW_I2C_A1_ADDR(x)) +#define HW_I2C_A1_RD(x) (HW_I2C_A1(x).U) +#define HW_I2C_A1_WR(x, v) (HW_I2C_A1(x).U = (v)) +#define HW_I2C_A1_SET(x, v) (HW_I2C_A1_WR(x, HW_I2C_A1_RD(x) | (v))) +#define HW_I2C_A1_CLR(x, v) (HW_I2C_A1_WR(x, HW_I2C_A1_RD(x) & ~(v))) +#define HW_I2C_A1_TOG(x, v) (HW_I2C_A1_WR(x, HW_I2C_A1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_A1 bitfields + */ + +/*! + * @name Register I2C_A1, field AD[7:1] (RW) + * + * Contains the primary slave address used by the I2C module when it is + * addressed as a slave. This field is used in the 7-bit address scheme and the lower + * seven bits in the 10-bit address scheme. + */ +//@{ +#define BP_I2C_A1_AD (1U) //!< Bit position for I2C_A1_AD. +#define BM_I2C_A1_AD (0xFEU) //!< Bit mask for I2C_A1_AD. +#define BS_I2C_A1_AD (7U) //!< Bit field size in bits for I2C_A1_AD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_A1_AD field. +#define BR_I2C_A1_AD(x) (HW_I2C_A1(x).B.AD) +#endif + +//! @brief Format value for bitfield I2C_A1_AD. +#define BF_I2C_A1_AD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_A1_AD), uint8_t) & BM_I2C_A1_AD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AD field to a new value. +#define BW_I2C_A1_AD(x, v) (HW_I2C_A1_WR(x, (HW_I2C_A1_RD(x) & ~BM_I2C_A1_AD) | BF_I2C_A1_AD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_F - I2C Frequency Divider register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_F - I2C Frequency Divider register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_i2c_f +{ + uint8_t U; + struct _hw_i2c_f_bitfields + { + uint8_t ICR : 6; //!< [5:0] ClockRate + uint8_t MULT : 2; //!< [7:6] Multiplier Factor + } B; +} hw_i2c_f_t; +#endif + +/*! + * @name Constants and macros for entire I2C_F register + */ +//@{ +#define HW_I2C_F_ADDR(x) (REGS_I2C_BASE(x) + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_F(x) (*(__IO hw_i2c_f_t *) HW_I2C_F_ADDR(x)) +#define HW_I2C_F_RD(x) (HW_I2C_F(x).U) +#define HW_I2C_F_WR(x, v) (HW_I2C_F(x).U = (v)) +#define HW_I2C_F_SET(x, v) (HW_I2C_F_WR(x, HW_I2C_F_RD(x) | (v))) +#define HW_I2C_F_CLR(x, v) (HW_I2C_F_WR(x, HW_I2C_F_RD(x) & ~(v))) +#define HW_I2C_F_TOG(x, v) (HW_I2C_F_WR(x, HW_I2C_F_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_F bitfields + */ + +/*! + * @name Register I2C_F, field ICR[5:0] (RW) + * + * Prescales the I2C module clock for bit rate selection. This field and the + * MULT field determine the I2C baud rate, the SDA hold time, the SCL start hold + * time, and the SCL stop hold time. For a list of values corresponding to each ICR + * setting, see I2C divider and hold values. The SCL divider multiplied by + * multiplier factor (mul) determines the I2C baud rate. I2C baud rate = I2C module + * clock speed (Hz)/(mul * SCL divider) The SDA hold time is the delay from the + * falling edge of SCL (I2C clock) to the changing of SDA (I2C data). SDA hold time = + * I2C module clock period (s) * mul * SDA hold value The SCL start hold time is + * the delay from the falling edge of SDA (I2C data) while SCL is high (start + * condition) to the falling edge of SCL (I2C clock). SCL start hold time = I2C + * module clock period (s) * mul * SCL start hold value The SCL stop hold time is + * the delay from the rising edge of SCL (I2C clock) to the rising edge of SDA (I2C + * data) while SCL is high (stop condition). SCL stop hold time = I2C module + * clock period (s) * mul * SCL stop hold value For example, if the I2C module clock + * speed is 8 MHz, the following table shows the possible hold time values with + * different ICR and MULT selections to achieve an I2C baud rate of 100 kbit/s. + * MULT ICR Hold times (μs) SDA SCL Start SCL Stop 2h 00h 3.500 3.000 5.500 1h + * 07h 2.500 4.000 5.250 1h 0Bh 2.250 4.000 5.250 0h 14h 2.125 4.250 5.125 0h 18h + * 1.125 4.750 5.125 + */ +//@{ +#define BP_I2C_F_ICR (0U) //!< Bit position for I2C_F_ICR. +#define BM_I2C_F_ICR (0x3FU) //!< Bit mask for I2C_F_ICR. +#define BS_I2C_F_ICR (6U) //!< Bit field size in bits for I2C_F_ICR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_F_ICR field. +#define BR_I2C_F_ICR(x) (HW_I2C_F(x).B.ICR) +#endif + +//! @brief Format value for bitfield I2C_F_ICR. +#define BF_I2C_F_ICR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_F_ICR), uint8_t) & BM_I2C_F_ICR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ICR field to a new value. +#define BW_I2C_F_ICR(x, v) (HW_I2C_F_WR(x, (HW_I2C_F_RD(x) & ~BM_I2C_F_ICR) | BF_I2C_F_ICR(v))) +#endif +//@} + +/*! + * @name Register I2C_F, field MULT[7:6] (RW) + * + * Defines the multiplier factor (mul). This factor is used along with the SCL + * divider to generate the I2C baud rate. + * + * Values: + * - 00 - mul = 1 + * - 01 - mul = 2 + * - 10 - mul = 4 + * - 11 - Reserved + */ +//@{ +#define BP_I2C_F_MULT (6U) //!< Bit position for I2C_F_MULT. +#define BM_I2C_F_MULT (0xC0U) //!< Bit mask for I2C_F_MULT. +#define BS_I2C_F_MULT (2U) //!< Bit field size in bits for I2C_F_MULT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_F_MULT field. +#define BR_I2C_F_MULT(x) (HW_I2C_F(x).B.MULT) +#endif + +//! @brief Format value for bitfield I2C_F_MULT. +#define BF_I2C_F_MULT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_F_MULT), uint8_t) & BM_I2C_F_MULT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MULT field to a new value. +#define BW_I2C_F_MULT(x, v) (HW_I2C_F_WR(x, (HW_I2C_F_RD(x) & ~BM_I2C_F_MULT) | BF_I2C_F_MULT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_C1 - I2C Control Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_C1 - I2C Control Register 1 (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_i2c_c1 +{ + uint8_t U; + struct _hw_i2c_c1_bitfields + { + uint8_t DMAEN : 1; //!< [0] DMA Enable + uint8_t WUEN : 1; //!< [1] Wakeup Enable + uint8_t RSTA : 1; //!< [2] Repeat START + uint8_t TXAK : 1; //!< [3] Transmit Acknowledge Enable + uint8_t TX : 1; //!< [4] Transmit Mode Select + uint8_t MST : 1; //!< [5] Master Mode Select + uint8_t IICIE : 1; //!< [6] I2C Interrupt Enable + uint8_t IICEN : 1; //!< [7] I2C Enable + } B; +} hw_i2c_c1_t; +#endif + +/*! + * @name Constants and macros for entire I2C_C1 register + */ +//@{ +#define HW_I2C_C1_ADDR(x) (REGS_I2C_BASE(x) + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_C1(x) (*(__IO hw_i2c_c1_t *) HW_I2C_C1_ADDR(x)) +#define HW_I2C_C1_RD(x) (HW_I2C_C1(x).U) +#define HW_I2C_C1_WR(x, v) (HW_I2C_C1(x).U = (v)) +#define HW_I2C_C1_SET(x, v) (HW_I2C_C1_WR(x, HW_I2C_C1_RD(x) | (v))) +#define HW_I2C_C1_CLR(x, v) (HW_I2C_C1_WR(x, HW_I2C_C1_RD(x) & ~(v))) +#define HW_I2C_C1_TOG(x, v) (HW_I2C_C1_WR(x, HW_I2C_C1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_C1 bitfields + */ + +/*! + * @name Register I2C_C1, field DMAEN[0] (RW) + * + * Enables or disables the DMA function. + * + * Values: + * - 0 - All DMA signalling disabled. + * - 1 - DMA transfer is enabled. While SMB[FACK] = 0, the following conditions + * trigger the DMA request: a data byte is received, and either address or + * data is transmitted. (ACK/NACK is automatic) the first byte received matches + * the A1 register or is a general call address. If any address matching + * occurs, S[IAAS] and S[TCF] are set. If the direction of transfer is known + * from master to slave, then it is not required to check S[SRW]. With this + * assumption, DMA can also be used in this case. In other cases, if the master + * reads data from the slave, then it is required to rewrite the C1 register + * operation. With this assumption, DMA cannot be used. When FACK = 1, an + * address or a data byte is transmitted. + */ +//@{ +#define BP_I2C_C1_DMAEN (0U) //!< Bit position for I2C_C1_DMAEN. +#define BM_I2C_C1_DMAEN (0x01U) //!< Bit mask for I2C_C1_DMAEN. +#define BS_I2C_C1_DMAEN (1U) //!< Bit field size in bits for I2C_C1_DMAEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C1_DMAEN field. +#define BR_I2C_C1_DMAEN(x) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_DMAEN)) +#endif + +//! @brief Format value for bitfield I2C_C1_DMAEN. +#define BF_I2C_C1_DMAEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C1_DMAEN), uint8_t) & BM_I2C_C1_DMAEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAEN field to a new value. +#define BW_I2C_C1_DMAEN(x, v) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_DMAEN) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C1, field WUEN[1] (RW) + * + * The I2C module can wake the MCU from low power mode with no peripheral bus + * running when slave address matching occurs. + * + * Values: + * - 0 - Normal operation. No interrupt generated when address matching in low + * power mode. + * - 1 - Enables the wakeup function in low power mode. + */ +//@{ +#define BP_I2C_C1_WUEN (1U) //!< Bit position for I2C_C1_WUEN. +#define BM_I2C_C1_WUEN (0x02U) //!< Bit mask for I2C_C1_WUEN. +#define BS_I2C_C1_WUEN (1U) //!< Bit field size in bits for I2C_C1_WUEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C1_WUEN field. +#define BR_I2C_C1_WUEN(x) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_WUEN)) +#endif + +//! @brief Format value for bitfield I2C_C1_WUEN. +#define BF_I2C_C1_WUEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C1_WUEN), uint8_t) & BM_I2C_C1_WUEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUEN field to a new value. +#define BW_I2C_C1_WUEN(x, v) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_WUEN) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C1, field RSTA[2] (WORZ) + * + * Writing 1 to this bit generates a repeated START condition provided it is the + * current master. This bit will always be read as 0. Attempting a repeat at the + * wrong time results in loss of arbitration. + */ +//@{ +#define BP_I2C_C1_RSTA (2U) //!< Bit position for I2C_C1_RSTA. +#define BM_I2C_C1_RSTA (0x04U) //!< Bit mask for I2C_C1_RSTA. +#define BS_I2C_C1_RSTA (1U) //!< Bit field size in bits for I2C_C1_RSTA. + +//! @brief Format value for bitfield I2C_C1_RSTA. +#define BF_I2C_C1_RSTA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C1_RSTA), uint8_t) & BM_I2C_C1_RSTA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSTA field to a new value. +#define BW_I2C_C1_RSTA(x, v) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_RSTA) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C1, field TXAK[3] (RW) + * + * Specifies the value driven onto the SDA during data acknowledge cycles for + * both master and slave receivers. The value of SMB[FACK] affects NACK/ACK + * generation. SCL is held low until TXAK is written. + * + * Values: + * - 0 - An acknowledge signal is sent to the bus on the following receiving + * byte (if FACK is cleared) or the current receiving byte (if FACK is set). + * - 1 - No acknowledge signal is sent to the bus on the following receiving + * data byte (if FACK is cleared) or the current receiving data byte (if FACK is + * set). + */ +//@{ +#define BP_I2C_C1_TXAK (3U) //!< Bit position for I2C_C1_TXAK. +#define BM_I2C_C1_TXAK (0x08U) //!< Bit mask for I2C_C1_TXAK. +#define BS_I2C_C1_TXAK (1U) //!< Bit field size in bits for I2C_C1_TXAK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C1_TXAK field. +#define BR_I2C_C1_TXAK(x) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_TXAK)) +#endif + +//! @brief Format value for bitfield I2C_C1_TXAK. +#define BF_I2C_C1_TXAK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C1_TXAK), uint8_t) & BM_I2C_C1_TXAK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXAK field to a new value. +#define BW_I2C_C1_TXAK(x, v) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_TXAK) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C1, field TX[4] (RW) + * + * Selects the direction of master and slave transfers. In master mode this bit + * must be set according to the type of transfer required. Therefore, for address + * cycles, this bit is always set. When addressed as a slave this bit must be + * set by software according to the SRW bit in the status register. + * + * Values: + * - 0 - Receive + * - 1 - Transmit + */ +//@{ +#define BP_I2C_C1_TX (4U) //!< Bit position for I2C_C1_TX. +#define BM_I2C_C1_TX (0x10U) //!< Bit mask for I2C_C1_TX. +#define BS_I2C_C1_TX (1U) //!< Bit field size in bits for I2C_C1_TX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C1_TX field. +#define BR_I2C_C1_TX(x) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_TX)) +#endif + +//! @brief Format value for bitfield I2C_C1_TX. +#define BF_I2C_C1_TX(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C1_TX), uint8_t) & BM_I2C_C1_TX) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TX field to a new value. +#define BW_I2C_C1_TX(x, v) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_TX) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C1, field MST[5] (RW) + * + * When MST is changed from 0 to 1, a START signal is generated on the bus and + * master mode is selected. When this bit changes from 1 to 0, a STOP signal is + * generated and the mode of operation changes from master to slave. + * + * Values: + * - 0 - Slave mode + * - 1 - Master mode + */ +//@{ +#define BP_I2C_C1_MST (5U) //!< Bit position for I2C_C1_MST. +#define BM_I2C_C1_MST (0x20U) //!< Bit mask for I2C_C1_MST. +#define BS_I2C_C1_MST (1U) //!< Bit field size in bits for I2C_C1_MST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C1_MST field. +#define BR_I2C_C1_MST(x) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_MST)) +#endif + +//! @brief Format value for bitfield I2C_C1_MST. +#define BF_I2C_C1_MST(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C1_MST), uint8_t) & BM_I2C_C1_MST) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MST field to a new value. +#define BW_I2C_C1_MST(x, v) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_MST) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C1, field IICIE[6] (RW) + * + * Enables I2C interrupt requests. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_I2C_C1_IICIE (6U) //!< Bit position for I2C_C1_IICIE. +#define BM_I2C_C1_IICIE (0x40U) //!< Bit mask for I2C_C1_IICIE. +#define BS_I2C_C1_IICIE (1U) //!< Bit field size in bits for I2C_C1_IICIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C1_IICIE field. +#define BR_I2C_C1_IICIE(x) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_IICIE)) +#endif + +//! @brief Format value for bitfield I2C_C1_IICIE. +#define BF_I2C_C1_IICIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C1_IICIE), uint8_t) & BM_I2C_C1_IICIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IICIE field to a new value. +#define BW_I2C_C1_IICIE(x, v) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_IICIE) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C1, field IICEN[7] (RW) + * + * Enables I2C module operation. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_I2C_C1_IICEN (7U) //!< Bit position for I2C_C1_IICEN. +#define BM_I2C_C1_IICEN (0x80U) //!< Bit mask for I2C_C1_IICEN. +#define BS_I2C_C1_IICEN (1U) //!< Bit field size in bits for I2C_C1_IICEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C1_IICEN field. +#define BR_I2C_C1_IICEN(x) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_IICEN)) +#endif + +//! @brief Format value for bitfield I2C_C1_IICEN. +#define BF_I2C_C1_IICEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C1_IICEN), uint8_t) & BM_I2C_C1_IICEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IICEN field to a new value. +#define BW_I2C_C1_IICEN(x, v) (BITBAND_ACCESS8(HW_I2C_C1_ADDR(x), BP_I2C_C1_IICEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_S - I2C Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_S - I2C Status register (RW) + * + * Reset value: 0x80U + */ +typedef union _hw_i2c_s +{ + uint8_t U; + struct _hw_i2c_s_bitfields + { + uint8_t RXAK : 1; //!< [0] Receive Acknowledge + uint8_t IICIF : 1; //!< [1] Interrupt Flag + uint8_t SRW : 1; //!< [2] Slave Read/Write + uint8_t RAM : 1; //!< [3] Range Address Match + uint8_t ARBL : 1; //!< [4] Arbitration Lost + uint8_t BUSY : 1; //!< [5] Bus Busy + uint8_t IAAS : 1; //!< [6] Addressed As A Slave + uint8_t TCF : 1; //!< [7] Transfer Complete Flag + } B; +} hw_i2c_s_t; +#endif + +/*! + * @name Constants and macros for entire I2C_S register + */ +//@{ +#define HW_I2C_S_ADDR(x) (REGS_I2C_BASE(x) + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_S(x) (*(__IO hw_i2c_s_t *) HW_I2C_S_ADDR(x)) +#define HW_I2C_S_RD(x) (HW_I2C_S(x).U) +#define HW_I2C_S_WR(x, v) (HW_I2C_S(x).U = (v)) +#define HW_I2C_S_SET(x, v) (HW_I2C_S_WR(x, HW_I2C_S_RD(x) | (v))) +#define HW_I2C_S_CLR(x, v) (HW_I2C_S_WR(x, HW_I2C_S_RD(x) & ~(v))) +#define HW_I2C_S_TOG(x, v) (HW_I2C_S_WR(x, HW_I2C_S_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_S bitfields + */ + +/*! + * @name Register I2C_S, field RXAK[0] (RO) + * + * Values: + * - 0 - Acknowledge signal was received after the completion of one byte of + * data transmission on the bus + * - 1 - No acknowledge signal detected + */ +//@{ +#define BP_I2C_S_RXAK (0U) //!< Bit position for I2C_S_RXAK. +#define BM_I2C_S_RXAK (0x01U) //!< Bit mask for I2C_S_RXAK. +#define BS_I2C_S_RXAK (1U) //!< Bit field size in bits for I2C_S_RXAK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_S_RXAK field. +#define BR_I2C_S_RXAK(x) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_RXAK)) +#endif +//@} + +/*! + * @name Register I2C_S, field IICIF[1] (W1C) + * + * This bit sets when an interrupt is pending. This bit must be cleared by + * software by writing 1 to it, such as in the interrupt routine. One of the following + * events can set this bit: One byte transfer, including ACK/NACK bit, completes + * if FACK is 0. An ACK or NACK is sent on the bus by writing 0 or 1 to TXAK + * after this bit is set in receive mode. One byte transfer, excluding ACK/NACK bit, + * completes if FACK is 1. Match of slave address to calling address including + * primary slave address, range slave address , alert response address, second + * slave address, or general call address. Arbitration lost In SMBus mode, any + * timeouts except SCL and SDA high timeouts I2C bus stop or start detection if the + * SSIE bit in the Input Glitch Filter register is 1 To clear the I2C bus stop or + * start detection interrupt: In the interrupt service routine, first clear the + * STOPF or STARTF bit in the Input Glitch Filter register by writing 1 to it, and + * then clear the IICIF bit. If this sequence is reversed, the IICIF bit is + * asserted again. + * + * Values: + * - 0 - No interrupt pending + * - 1 - Interrupt pending + */ +//@{ +#define BP_I2C_S_IICIF (1U) //!< Bit position for I2C_S_IICIF. +#define BM_I2C_S_IICIF (0x02U) //!< Bit mask for I2C_S_IICIF. +#define BS_I2C_S_IICIF (1U) //!< Bit field size in bits for I2C_S_IICIF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_S_IICIF field. +#define BR_I2C_S_IICIF(x) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_IICIF)) +#endif + +//! @brief Format value for bitfield I2C_S_IICIF. +#define BF_I2C_S_IICIF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_S_IICIF), uint8_t) & BM_I2C_S_IICIF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IICIF field to a new value. +#define BW_I2C_S_IICIF(x, v) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_IICIF) = (v)) +#endif +//@} + +/*! + * @name Register I2C_S, field SRW[2] (RO) + * + * When addressed as a slave, SRW indicates the value of the R/W command bit of + * the calling address sent to the master. + * + * Values: + * - 0 - Slave receive, master writing to slave + * - 1 - Slave transmit, master reading from slave + */ +//@{ +#define BP_I2C_S_SRW (2U) //!< Bit position for I2C_S_SRW. +#define BM_I2C_S_SRW (0x04U) //!< Bit mask for I2C_S_SRW. +#define BS_I2C_S_SRW (1U) //!< Bit field size in bits for I2C_S_SRW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_S_SRW field. +#define BR_I2C_S_SRW(x) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_SRW)) +#endif +//@} + +/*! + * @name Register I2C_S, field RAM[3] (RW) + * + * This bit is set to 1 by any of the following conditions, if I2C_C2[RMEN] = 1: + * Any nonzero calling address is received that matches the address in the RA + * register. The calling address is within the range of values of the A1 and RA + * registers. For the RAM bit to be set to 1 correctly, C1[IICIE] must be set to 1. + * Writing the C1 register with any value clears this bit to 0. + * + * Values: + * - 0 - Not addressed + * - 1 - Addressed as a slave + */ +//@{ +#define BP_I2C_S_RAM (3U) //!< Bit position for I2C_S_RAM. +#define BM_I2C_S_RAM (0x08U) //!< Bit mask for I2C_S_RAM. +#define BS_I2C_S_RAM (1U) //!< Bit field size in bits for I2C_S_RAM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_S_RAM field. +#define BR_I2C_S_RAM(x) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_RAM)) +#endif + +//! @brief Format value for bitfield I2C_S_RAM. +#define BF_I2C_S_RAM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_S_RAM), uint8_t) & BM_I2C_S_RAM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RAM field to a new value. +#define BW_I2C_S_RAM(x, v) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_RAM) = (v)) +#endif +//@} + +/*! + * @name Register I2C_S, field ARBL[4] (W1C) + * + * This bit is set by hardware when the arbitration procedure is lost. The ARBL + * bit must be cleared by software, by writing 1 to it. + * + * Values: + * - 0 - Standard bus operation. + * - 1 - Loss of arbitration. + */ +//@{ +#define BP_I2C_S_ARBL (4U) //!< Bit position for I2C_S_ARBL. +#define BM_I2C_S_ARBL (0x10U) //!< Bit mask for I2C_S_ARBL. +#define BS_I2C_S_ARBL (1U) //!< Bit field size in bits for I2C_S_ARBL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_S_ARBL field. +#define BR_I2C_S_ARBL(x) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_ARBL)) +#endif + +//! @brief Format value for bitfield I2C_S_ARBL. +#define BF_I2C_S_ARBL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_S_ARBL), uint8_t) & BM_I2C_S_ARBL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ARBL field to a new value. +#define BW_I2C_S_ARBL(x, v) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_ARBL) = (v)) +#endif +//@} + +/*! + * @name Register I2C_S, field BUSY[5] (RO) + * + * Indicates the status of the bus regardless of slave or master mode. This bit + * is set when a START signal is detected and cleared when a STOP signal is + * detected. + * + * Values: + * - 0 - Bus is idle + * - 1 - Bus is busy + */ +//@{ +#define BP_I2C_S_BUSY (5U) //!< Bit position for I2C_S_BUSY. +#define BM_I2C_S_BUSY (0x20U) //!< Bit mask for I2C_S_BUSY. +#define BS_I2C_S_BUSY (1U) //!< Bit field size in bits for I2C_S_BUSY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_S_BUSY field. +#define BR_I2C_S_BUSY(x) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_BUSY)) +#endif +//@} + +/*! + * @name Register I2C_S, field IAAS[6] (RW) + * + * This bit is set by one of the following conditions: The calling address + * matches the programmed primary slave address in the A1 register, or matches the + * range address in the RA register (which must be set to a nonzero value and under + * the condition I2C_C2[RMEN] = 1). C2[GCAEN] is set and a general call is + * received. SMB[SIICAEN] is set and the calling address matches the second programmed + * slave address. ALERTEN is set and an SMBus alert response address is received + * RMEN is set and an address is received that is within the range between the + * values of the A1 and RA registers. IAAS sets before the ACK bit. The CPU must + * check the SRW bit and set TX/RX accordingly. Writing the C1 register with any + * value clears this bit. + * + * Values: + * - 0 - Not addressed + * - 1 - Addressed as a slave + */ +//@{ +#define BP_I2C_S_IAAS (6U) //!< Bit position for I2C_S_IAAS. +#define BM_I2C_S_IAAS (0x40U) //!< Bit mask for I2C_S_IAAS. +#define BS_I2C_S_IAAS (1U) //!< Bit field size in bits for I2C_S_IAAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_S_IAAS field. +#define BR_I2C_S_IAAS(x) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_IAAS)) +#endif + +//! @brief Format value for bitfield I2C_S_IAAS. +#define BF_I2C_S_IAAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_S_IAAS), uint8_t) & BM_I2C_S_IAAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IAAS field to a new value. +#define BW_I2C_S_IAAS(x, v) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_IAAS) = (v)) +#endif +//@} + +/*! + * @name Register I2C_S, field TCF[7] (RO) + * + * Acknowledges a byte transfer; TCF sets on the completion of a byte transfer. + * This bit is valid only during or immediately following a transfer to or from + * the I2C module. TCF is cleared by reading the I2C data register in receive mode + * or by writing to the I2C data register in transmit mode. + * + * Values: + * - 0 - Transfer in progress + * - 1 - Transfer complete + */ +//@{ +#define BP_I2C_S_TCF (7U) //!< Bit position for I2C_S_TCF. +#define BM_I2C_S_TCF (0x80U) //!< Bit mask for I2C_S_TCF. +#define BS_I2C_S_TCF (1U) //!< Bit field size in bits for I2C_S_TCF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_S_TCF field. +#define BR_I2C_S_TCF(x) (BITBAND_ACCESS8(HW_I2C_S_ADDR(x), BP_I2C_S_TCF)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_D - I2C Data I/O register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_D - I2C Data I/O register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_i2c_d +{ + uint8_t U; + struct _hw_i2c_d_bitfields + { + uint8_t DATA : 8; //!< [7:0] Data + } B; +} hw_i2c_d_t; +#endif + +/*! + * @name Constants and macros for entire I2C_D register + */ +//@{ +#define HW_I2C_D_ADDR(x) (REGS_I2C_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_D(x) (*(__IO hw_i2c_d_t *) HW_I2C_D_ADDR(x)) +#define HW_I2C_D_RD(x) (HW_I2C_D(x).U) +#define HW_I2C_D_WR(x, v) (HW_I2C_D(x).U = (v)) +#define HW_I2C_D_SET(x, v) (HW_I2C_D_WR(x, HW_I2C_D_RD(x) | (v))) +#define HW_I2C_D_CLR(x, v) (HW_I2C_D_WR(x, HW_I2C_D_RD(x) & ~(v))) +#define HW_I2C_D_TOG(x, v) (HW_I2C_D_WR(x, HW_I2C_D_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_D bitfields + */ + +/*! + * @name Register I2C_D, field DATA[7:0] (RW) + * + * In master transmit mode, when data is written to this register, a data + * transfer is initiated. The most significant bit is sent first. In master receive + * mode, reading this register initiates receiving of the next byte of data. When + * making the transition out of master receive mode, switch the I2C mode before + * reading the Data register to prevent an inadvertent initiation of a master + * receive data transfer. In slave mode, the same functions are available after an + * address match occurs. The C1[TX] bit must correctly reflect the desired direction + * of transfer in master and slave modes for the transmission to begin. For + * example, if the I2C module is configured for master transmit but a master receive + * is desired, reading the Data register does not initiate the receive. Reading + * the Data register returns the last byte received while the I2C module is + * configured in master receive or slave receive mode. The Data register does not + * reflect every byte that is transmitted on the I2C bus, and neither can software + * verify that a byte has been written to the Data register correctly by reading it + * back. In master transmit mode, the first byte of data written to the Data + * register following assertion of MST (start bit) or assertion of RSTA (repeated + * start bit) is used for the address transfer and must consist of the calling + * address (in bits 7-1) concatenated with the required R/W bit (in position bit 0). + */ +//@{ +#define BP_I2C_D_DATA (0U) //!< Bit position for I2C_D_DATA. +#define BM_I2C_D_DATA (0xFFU) //!< Bit mask for I2C_D_DATA. +#define BS_I2C_D_DATA (8U) //!< Bit field size in bits for I2C_D_DATA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_D_DATA field. +#define BR_I2C_D_DATA(x) (HW_I2C_D(x).U) +#endif + +//! @brief Format value for bitfield I2C_D_DATA. +#define BF_I2C_D_DATA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_D_DATA), uint8_t) & BM_I2C_D_DATA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATA field to a new value. +#define BW_I2C_D_DATA(x, v) (HW_I2C_D_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_C2 - I2C Control Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_C2 - I2C Control Register 2 (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_i2c_c2 +{ + uint8_t U; + struct _hw_i2c_c2_bitfields + { + uint8_t AD : 3; //!< [2:0] Slave Address + uint8_t RMEN : 1; //!< [3] Range Address Matching Enable + uint8_t SBRC : 1; //!< [4] Slave Baud Rate Control + uint8_t HDRS : 1; //!< [5] High Drive Select + uint8_t ADEXT : 1; //!< [6] Address Extension + uint8_t GCAEN : 1; //!< [7] General Call Address Enable + } B; +} hw_i2c_c2_t; +#endif + +/*! + * @name Constants and macros for entire I2C_C2 register + */ +//@{ +#define HW_I2C_C2_ADDR(x) (REGS_I2C_BASE(x) + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_C2(x) (*(__IO hw_i2c_c2_t *) HW_I2C_C2_ADDR(x)) +#define HW_I2C_C2_RD(x) (HW_I2C_C2(x).U) +#define HW_I2C_C2_WR(x, v) (HW_I2C_C2(x).U = (v)) +#define HW_I2C_C2_SET(x, v) (HW_I2C_C2_WR(x, HW_I2C_C2_RD(x) | (v))) +#define HW_I2C_C2_CLR(x, v) (HW_I2C_C2_WR(x, HW_I2C_C2_RD(x) & ~(v))) +#define HW_I2C_C2_TOG(x, v) (HW_I2C_C2_WR(x, HW_I2C_C2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_C2 bitfields + */ + +/*! + * @name Register I2C_C2, field AD[2:0] (RW) + * + * Contains the upper three bits of the slave address in the 10-bit address + * scheme. This field is valid only while the ADEXT bit is set. + */ +//@{ +#define BP_I2C_C2_AD (0U) //!< Bit position for I2C_C2_AD. +#define BM_I2C_C2_AD (0x07U) //!< Bit mask for I2C_C2_AD. +#define BS_I2C_C2_AD (3U) //!< Bit field size in bits for I2C_C2_AD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C2_AD field. +#define BR_I2C_C2_AD(x) (HW_I2C_C2(x).B.AD) +#endif + +//! @brief Format value for bitfield I2C_C2_AD. +#define BF_I2C_C2_AD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C2_AD), uint8_t) & BM_I2C_C2_AD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AD field to a new value. +#define BW_I2C_C2_AD(x, v) (HW_I2C_C2_WR(x, (HW_I2C_C2_RD(x) & ~BM_I2C_C2_AD) | BF_I2C_C2_AD(v))) +#endif +//@} + +/*! + * @name Register I2C_C2, field RMEN[3] (RW) + * + * This bit controls the slave address matching for addresses between the values + * of the A1 and RA registers. When this bit is set, a slave address matching + * occurs for any address greater than the value of the A1 register and less than + * or equal to the value of the RA register. + * + * Values: + * - 0 - Range mode disabled. No address matching occurs for an address within + * the range of values of the A1 and RA registers. + * - 1 - Range mode enabled. Address matching occurs when a slave receives an + * address within the range of values of the A1 and RA registers. + */ +//@{ +#define BP_I2C_C2_RMEN (3U) //!< Bit position for I2C_C2_RMEN. +#define BM_I2C_C2_RMEN (0x08U) //!< Bit mask for I2C_C2_RMEN. +#define BS_I2C_C2_RMEN (1U) //!< Bit field size in bits for I2C_C2_RMEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C2_RMEN field. +#define BR_I2C_C2_RMEN(x) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_RMEN)) +#endif + +//! @brief Format value for bitfield I2C_C2_RMEN. +#define BF_I2C_C2_RMEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C2_RMEN), uint8_t) & BM_I2C_C2_RMEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RMEN field to a new value. +#define BW_I2C_C2_RMEN(x, v) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_RMEN) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C2, field SBRC[4] (RW) + * + * Enables independent slave mode baud rate at maximum frequency, which forces + * clock stretching on SCL in very fast I2C modes. To a slave, an example of a + * "very fast" mode is when the master transfers at 40 kbit/s but the slave can + * capture the master's data at only 10 kbit/s. + * + * Values: + * - 0 - The slave baud rate follows the master baud rate and clock stretching + * may occur + * - 1 - Slave baud rate is independent of the master baud rate + */ +//@{ +#define BP_I2C_C2_SBRC (4U) //!< Bit position for I2C_C2_SBRC. +#define BM_I2C_C2_SBRC (0x10U) //!< Bit mask for I2C_C2_SBRC. +#define BS_I2C_C2_SBRC (1U) //!< Bit field size in bits for I2C_C2_SBRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C2_SBRC field. +#define BR_I2C_C2_SBRC(x) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_SBRC)) +#endif + +//! @brief Format value for bitfield I2C_C2_SBRC. +#define BF_I2C_C2_SBRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C2_SBRC), uint8_t) & BM_I2C_C2_SBRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SBRC field to a new value. +#define BW_I2C_C2_SBRC(x, v) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_SBRC) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C2, field HDRS[5] (RW) + * + * Controls the drive capability of the I2C pads. + * + * Values: + * - 0 - Normal drive mode + * - 1 - High drive mode + */ +//@{ +#define BP_I2C_C2_HDRS (5U) //!< Bit position for I2C_C2_HDRS. +#define BM_I2C_C2_HDRS (0x20U) //!< Bit mask for I2C_C2_HDRS. +#define BS_I2C_C2_HDRS (1U) //!< Bit field size in bits for I2C_C2_HDRS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C2_HDRS field. +#define BR_I2C_C2_HDRS(x) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_HDRS)) +#endif + +//! @brief Format value for bitfield I2C_C2_HDRS. +#define BF_I2C_C2_HDRS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C2_HDRS), uint8_t) & BM_I2C_C2_HDRS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HDRS field to a new value. +#define BW_I2C_C2_HDRS(x, v) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_HDRS) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C2, field ADEXT[6] (RW) + * + * Controls the number of bits used for the slave address. + * + * Values: + * - 0 - 7-bit address scheme + * - 1 - 10-bit address scheme + */ +//@{ +#define BP_I2C_C2_ADEXT (6U) //!< Bit position for I2C_C2_ADEXT. +#define BM_I2C_C2_ADEXT (0x40U) //!< Bit mask for I2C_C2_ADEXT. +#define BS_I2C_C2_ADEXT (1U) //!< Bit field size in bits for I2C_C2_ADEXT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C2_ADEXT field. +#define BR_I2C_C2_ADEXT(x) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_ADEXT)) +#endif + +//! @brief Format value for bitfield I2C_C2_ADEXT. +#define BF_I2C_C2_ADEXT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C2_ADEXT), uint8_t) & BM_I2C_C2_ADEXT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADEXT field to a new value. +#define BW_I2C_C2_ADEXT(x, v) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_ADEXT) = (v)) +#endif +//@} + +/*! + * @name Register I2C_C2, field GCAEN[7] (RW) + * + * Enables general call address. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_I2C_C2_GCAEN (7U) //!< Bit position for I2C_C2_GCAEN. +#define BM_I2C_C2_GCAEN (0x80U) //!< Bit mask for I2C_C2_GCAEN. +#define BS_I2C_C2_GCAEN (1U) //!< Bit field size in bits for I2C_C2_GCAEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_C2_GCAEN field. +#define BR_I2C_C2_GCAEN(x) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_GCAEN)) +#endif + +//! @brief Format value for bitfield I2C_C2_GCAEN. +#define BF_I2C_C2_GCAEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_C2_GCAEN), uint8_t) & BM_I2C_C2_GCAEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GCAEN field to a new value. +#define BW_I2C_C2_GCAEN(x, v) (BITBAND_ACCESS8(HW_I2C_C2_ADDR(x), BP_I2C_C2_GCAEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_FLT - I2C Programmable Input Glitch Filter register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_FLT - I2C Programmable Input Glitch Filter register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_i2c_flt +{ + uint8_t U; + struct _hw_i2c_flt_bitfields + { + uint8_t FLT : 4; //!< [3:0] I2C Programmable Filter Factor + uint8_t STARTF : 1; //!< [4] I2C Bus Start Detect Flag + uint8_t SSIE : 1; //!< [5] I2C Bus Stop or Start Interrupt Enable + uint8_t STOPF : 1; //!< [6] I2C Bus Stop Detect Flag + uint8_t SHEN : 1; //!< [7] Stop Hold Enable + } B; +} hw_i2c_flt_t; +#endif + +/*! + * @name Constants and macros for entire I2C_FLT register + */ +//@{ +#define HW_I2C_FLT_ADDR(x) (REGS_I2C_BASE(x) + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_FLT(x) (*(__IO hw_i2c_flt_t *) HW_I2C_FLT_ADDR(x)) +#define HW_I2C_FLT_RD(x) (HW_I2C_FLT(x).U) +#define HW_I2C_FLT_WR(x, v) (HW_I2C_FLT(x).U = (v)) +#define HW_I2C_FLT_SET(x, v) (HW_I2C_FLT_WR(x, HW_I2C_FLT_RD(x) | (v))) +#define HW_I2C_FLT_CLR(x, v) (HW_I2C_FLT_WR(x, HW_I2C_FLT_RD(x) & ~(v))) +#define HW_I2C_FLT_TOG(x, v) (HW_I2C_FLT_WR(x, HW_I2C_FLT_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_FLT bitfields + */ + +/*! + * @name Register I2C_FLT, field FLT[3:0] (RW) + * + * Controls the width of the glitch, in terms of I2C module clock cycles, that + * the filter must absorb. For any glitch whose size is less than or equal to this + * width setting, the filter does not allow the glitch to pass. + * + * Values: + * - 0 - No filter/bypass + */ +//@{ +#define BP_I2C_FLT_FLT (0U) //!< Bit position for I2C_FLT_FLT. +#define BM_I2C_FLT_FLT (0x0FU) //!< Bit mask for I2C_FLT_FLT. +#define BS_I2C_FLT_FLT (4U) //!< Bit field size in bits for I2C_FLT_FLT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_FLT_FLT field. +#define BR_I2C_FLT_FLT(x) (HW_I2C_FLT(x).B.FLT) +#endif + +//! @brief Format value for bitfield I2C_FLT_FLT. +#define BF_I2C_FLT_FLT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_FLT_FLT), uint8_t) & BM_I2C_FLT_FLT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLT field to a new value. +#define BW_I2C_FLT_FLT(x, v) (HW_I2C_FLT_WR(x, (HW_I2C_FLT_RD(x) & ~BM_I2C_FLT_FLT) | BF_I2C_FLT_FLT(v))) +#endif +//@} + +/*! + * @name Register I2C_FLT, field STARTF[4] (W1C) + * + * Hardware sets this bit when the I2C bus's start status is detected. The + * STARTF bit must be cleared by writing 1 to it. + * + * Values: + * - 0 - No start happens on I2C bus + * - 1 - Start detected on I2C bus + */ +//@{ +#define BP_I2C_FLT_STARTF (4U) //!< Bit position for I2C_FLT_STARTF. +#define BM_I2C_FLT_STARTF (0x10U) //!< Bit mask for I2C_FLT_STARTF. +#define BS_I2C_FLT_STARTF (1U) //!< Bit field size in bits for I2C_FLT_STARTF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_FLT_STARTF field. +#define BR_I2C_FLT_STARTF(x) (BITBAND_ACCESS8(HW_I2C_FLT_ADDR(x), BP_I2C_FLT_STARTF)) +#endif + +//! @brief Format value for bitfield I2C_FLT_STARTF. +#define BF_I2C_FLT_STARTF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_FLT_STARTF), uint8_t) & BM_I2C_FLT_STARTF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STARTF field to a new value. +#define BW_I2C_FLT_STARTF(x, v) (BITBAND_ACCESS8(HW_I2C_FLT_ADDR(x), BP_I2C_FLT_STARTF) = (v)) +#endif +//@} + +/*! + * @name Register I2C_FLT, field SSIE[5] (RW) + * + * This bit enables the interrupt for I2C bus stop or start detection. To clear + * the I2C bus stop or start detection interrupt: In the interrupt service + * routine, first clear the STOPF or STARTF bit by writing 1 to it, and then clear the + * IICIF bit in the status register. If this sequence is reversed, the IICIF bit + * is asserted again. + * + * Values: + * - 0 - Stop or start detection interrupt is disabled + * - 1 - Stop or start detection interrupt is enabled + */ +//@{ +#define BP_I2C_FLT_SSIE (5U) //!< Bit position for I2C_FLT_SSIE. +#define BM_I2C_FLT_SSIE (0x20U) //!< Bit mask for I2C_FLT_SSIE. +#define BS_I2C_FLT_SSIE (1U) //!< Bit field size in bits for I2C_FLT_SSIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_FLT_SSIE field. +#define BR_I2C_FLT_SSIE(x) (BITBAND_ACCESS8(HW_I2C_FLT_ADDR(x), BP_I2C_FLT_SSIE)) +#endif + +//! @brief Format value for bitfield I2C_FLT_SSIE. +#define BF_I2C_FLT_SSIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_FLT_SSIE), uint8_t) & BM_I2C_FLT_SSIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SSIE field to a new value. +#define BW_I2C_FLT_SSIE(x, v) (BITBAND_ACCESS8(HW_I2C_FLT_ADDR(x), BP_I2C_FLT_SSIE) = (v)) +#endif +//@} + +/*! + * @name Register I2C_FLT, field STOPF[6] (W1C) + * + * Hardware sets this bit when the I2C bus's stop status is detected. The STOPF + * bit must be cleared by writing 1 to it. + * + * Values: + * - 0 - No stop happens on I2C bus + * - 1 - Stop detected on I2C bus + */ +//@{ +#define BP_I2C_FLT_STOPF (6U) //!< Bit position for I2C_FLT_STOPF. +#define BM_I2C_FLT_STOPF (0x40U) //!< Bit mask for I2C_FLT_STOPF. +#define BS_I2C_FLT_STOPF (1U) //!< Bit field size in bits for I2C_FLT_STOPF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_FLT_STOPF field. +#define BR_I2C_FLT_STOPF(x) (BITBAND_ACCESS8(HW_I2C_FLT_ADDR(x), BP_I2C_FLT_STOPF)) +#endif + +//! @brief Format value for bitfield I2C_FLT_STOPF. +#define BF_I2C_FLT_STOPF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_FLT_STOPF), uint8_t) & BM_I2C_FLT_STOPF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STOPF field to a new value. +#define BW_I2C_FLT_STOPF(x, v) (BITBAND_ACCESS8(HW_I2C_FLT_ADDR(x), BP_I2C_FLT_STOPF) = (v)) +#endif +//@} + +/*! + * @name Register I2C_FLT, field SHEN[7] (RW) + * + * Set this bit to hold off entry to stop mode when any data transmission or + * reception is occurring. The following scenario explains the holdoff + * functionality: The I2C module is configured for a basic transfer, and the SHEN bit is set + * to 1. A transfer begins. The MCU signals the I2C module to enter stop mode. The + * byte currently being transferred, including both address and data, completes + * its transfer. The I2C slave or master acknowledges that the in-transfer byte + * completed its transfer and acknowledges the request to enter stop mode. After + * receiving the I2C module's acknowledgment of the request to enter stop mode, + * the MCU determines whether to shut off the I2C module's clock. If the SHEN bit + * is set to 1 and the I2C module is in an idle or disabled state when the MCU + * signals to enter stop mode, the module immediately acknowledges the request to + * enter stop mode. If SHEN is cleared to 0 and the overall data transmission or + * reception that was suspended by stop mode entry was incomplete: To resume the + * overall transmission or reception after the MCU exits stop mode, software must + * reinitialize the transfer by resending the address of the slave. If the I2C + * Control Register 1's IICIE bit was set to 1 before the MCU entered stop mode, + * system software will receive the interrupt triggered by the I2C Status Register's + * TCF bit after the MCU wakes from the stop mode. + * + * Values: + * - 0 - Stop holdoff is disabled. The MCU's entry to stop mode is not gated. + * - 1 - Stop holdoff is enabled. + */ +//@{ +#define BP_I2C_FLT_SHEN (7U) //!< Bit position for I2C_FLT_SHEN. +#define BM_I2C_FLT_SHEN (0x80U) //!< Bit mask for I2C_FLT_SHEN. +#define BS_I2C_FLT_SHEN (1U) //!< Bit field size in bits for I2C_FLT_SHEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_FLT_SHEN field. +#define BR_I2C_FLT_SHEN(x) (BITBAND_ACCESS8(HW_I2C_FLT_ADDR(x), BP_I2C_FLT_SHEN)) +#endif + +//! @brief Format value for bitfield I2C_FLT_SHEN. +#define BF_I2C_FLT_SHEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_FLT_SHEN), uint8_t) & BM_I2C_FLT_SHEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SHEN field to a new value. +#define BW_I2C_FLT_SHEN(x, v) (BITBAND_ACCESS8(HW_I2C_FLT_ADDR(x), BP_I2C_FLT_SHEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_RA - I2C Range Address register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_RA - I2C Range Address register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_i2c_ra +{ + uint8_t U; + struct _hw_i2c_ra_bitfields + { + uint8_t RESERVED0 : 1; //!< [0] + uint8_t RAD : 7; //!< [7:1] Range Slave Address + } B; +} hw_i2c_ra_t; +#endif + +/*! + * @name Constants and macros for entire I2C_RA register + */ +//@{ +#define HW_I2C_RA_ADDR(x) (REGS_I2C_BASE(x) + 0x7U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_RA(x) (*(__IO hw_i2c_ra_t *) HW_I2C_RA_ADDR(x)) +#define HW_I2C_RA_RD(x) (HW_I2C_RA(x).U) +#define HW_I2C_RA_WR(x, v) (HW_I2C_RA(x).U = (v)) +#define HW_I2C_RA_SET(x, v) (HW_I2C_RA_WR(x, HW_I2C_RA_RD(x) | (v))) +#define HW_I2C_RA_CLR(x, v) (HW_I2C_RA_WR(x, HW_I2C_RA_RD(x) & ~(v))) +#define HW_I2C_RA_TOG(x, v) (HW_I2C_RA_WR(x, HW_I2C_RA_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_RA bitfields + */ + +/*! + * @name Register I2C_RA, field RAD[7:1] (RW) + * + * This field contains the slave address to be used by the I2C module. The field + * is used in the 7-bit address scheme. If I2C_C2[RMEN] is set to 1, any nonzero + * value write enables this register. This register value can be considered as a + * maximum boundary in the range matching mode. + */ +//@{ +#define BP_I2C_RA_RAD (1U) //!< Bit position for I2C_RA_RAD. +#define BM_I2C_RA_RAD (0xFEU) //!< Bit mask for I2C_RA_RAD. +#define BS_I2C_RA_RAD (7U) //!< Bit field size in bits for I2C_RA_RAD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_RA_RAD field. +#define BR_I2C_RA_RAD(x) (HW_I2C_RA(x).B.RAD) +#endif + +//! @brief Format value for bitfield I2C_RA_RAD. +#define BF_I2C_RA_RAD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_RA_RAD), uint8_t) & BM_I2C_RA_RAD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RAD field to a new value. +#define BW_I2C_RA_RAD(x, v) (HW_I2C_RA_WR(x, (HW_I2C_RA_RD(x) & ~BM_I2C_RA_RAD) | BF_I2C_RA_RAD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_SMB - I2C SMBus Control and Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_SMB - I2C SMBus Control and Status register (RW) + * + * Reset value: 0x00U + * + * When the SCL and SDA signals are held high for a length of time greater than + * the high timeout period, the SHTF1 flag sets. Before reaching this threshold, + * while the system is detecting how long these signals are being held high, a + * master assumes that the bus is free. However, the SHTF1 bit is set to 1 in the + * bus transmission process with the idle bus state. When the TCKSEL bit is set, + * there is no need to monitor the SHTF1 bit because the bus speed is too high to + * match the protocol of SMBus. + */ +typedef union _hw_i2c_smb +{ + uint8_t U; + struct _hw_i2c_smb_bitfields + { + uint8_t SHTF2IE : 1; //!< [0] SHTF2 Interrupt Enable + uint8_t SHTF2 : 1; //!< [1] SCL High Timeout Flag 2 + uint8_t SHTF1 : 1; //!< [2] SCL High Timeout Flag 1 + uint8_t SLTF : 1; //!< [3] SCL Low Timeout Flag + uint8_t TCKSEL : 1; //!< [4] Timeout Counter Clock Select + uint8_t SIICAEN : 1; //!< [5] Second I2C Address Enable + uint8_t ALERTEN : 1; //!< [6] SMBus Alert Response Address Enable + uint8_t FACK : 1; //!< [7] Fast NACK/ACK Enable + } B; +} hw_i2c_smb_t; +#endif + +/*! + * @name Constants and macros for entire I2C_SMB register + */ +//@{ +#define HW_I2C_SMB_ADDR(x) (REGS_I2C_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_SMB(x) (*(__IO hw_i2c_smb_t *) HW_I2C_SMB_ADDR(x)) +#define HW_I2C_SMB_RD(x) (HW_I2C_SMB(x).U) +#define HW_I2C_SMB_WR(x, v) (HW_I2C_SMB(x).U = (v)) +#define HW_I2C_SMB_SET(x, v) (HW_I2C_SMB_WR(x, HW_I2C_SMB_RD(x) | (v))) +#define HW_I2C_SMB_CLR(x, v) (HW_I2C_SMB_WR(x, HW_I2C_SMB_RD(x) & ~(v))) +#define HW_I2C_SMB_TOG(x, v) (HW_I2C_SMB_WR(x, HW_I2C_SMB_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_SMB bitfields + */ + +/*! + * @name Register I2C_SMB, field SHTF2IE[0] (RW) + * + * Enables SCL high and SDA low timeout interrupt. + * + * Values: + * - 0 - SHTF2 interrupt is disabled + * - 1 - SHTF2 interrupt is enabled + */ +//@{ +#define BP_I2C_SMB_SHTF2IE (0U) //!< Bit position for I2C_SMB_SHTF2IE. +#define BM_I2C_SMB_SHTF2IE (0x01U) //!< Bit mask for I2C_SMB_SHTF2IE. +#define BS_I2C_SMB_SHTF2IE (1U) //!< Bit field size in bits for I2C_SMB_SHTF2IE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SMB_SHTF2IE field. +#define BR_I2C_SMB_SHTF2IE(x) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_SHTF2IE)) +#endif + +//! @brief Format value for bitfield I2C_SMB_SHTF2IE. +#define BF_I2C_SMB_SHTF2IE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_SMB_SHTF2IE), uint8_t) & BM_I2C_SMB_SHTF2IE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SHTF2IE field to a new value. +#define BW_I2C_SMB_SHTF2IE(x, v) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_SHTF2IE) = (v)) +#endif +//@} + +/*! + * @name Register I2C_SMB, field SHTF2[1] (W1C) + * + * This bit sets when SCL is held high and SDA is held low more than clock * + * LoValue / 512. Software clears this bit by writing 1 to it. + * + * Values: + * - 0 - No SCL high and SDA low timeout occurs + * - 1 - SCL high and SDA low timeout occurs + */ +//@{ +#define BP_I2C_SMB_SHTF2 (1U) //!< Bit position for I2C_SMB_SHTF2. +#define BM_I2C_SMB_SHTF2 (0x02U) //!< Bit mask for I2C_SMB_SHTF2. +#define BS_I2C_SMB_SHTF2 (1U) //!< Bit field size in bits for I2C_SMB_SHTF2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SMB_SHTF2 field. +#define BR_I2C_SMB_SHTF2(x) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_SHTF2)) +#endif + +//! @brief Format value for bitfield I2C_SMB_SHTF2. +#define BF_I2C_SMB_SHTF2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_SMB_SHTF2), uint8_t) & BM_I2C_SMB_SHTF2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SHTF2 field to a new value. +#define BW_I2C_SMB_SHTF2(x, v) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_SHTF2) = (v)) +#endif +//@} + +/*! + * @name Register I2C_SMB, field SHTF1[2] (RO) + * + * This read-only bit sets when SCL and SDA are held high more than clock * + * LoValue / 512, which indicates the bus is free. This bit is cleared automatically. + * + * Values: + * - 0 - No SCL high and SDA high timeout occurs + * - 1 - SCL high and SDA high timeout occurs + */ +//@{ +#define BP_I2C_SMB_SHTF1 (2U) //!< Bit position for I2C_SMB_SHTF1. +#define BM_I2C_SMB_SHTF1 (0x04U) //!< Bit mask for I2C_SMB_SHTF1. +#define BS_I2C_SMB_SHTF1 (1U) //!< Bit field size in bits for I2C_SMB_SHTF1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SMB_SHTF1 field. +#define BR_I2C_SMB_SHTF1(x) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_SHTF1)) +#endif +//@} + +/*! + * @name Register I2C_SMB, field SLTF[3] (W1C) + * + * This bit is set when the SLT register (consisting of the SLTH and SLTL + * registers) is loaded with a non-zero value (LoValue) and an SCL low timeout occurs. + * Software clears this bit by writing a logic 1 to it. The low timeout function + * is disabled when the SLT register's value is 0. + * + * Values: + * - 0 - No low timeout occurs + * - 1 - Low timeout occurs + */ +//@{ +#define BP_I2C_SMB_SLTF (3U) //!< Bit position for I2C_SMB_SLTF. +#define BM_I2C_SMB_SLTF (0x08U) //!< Bit mask for I2C_SMB_SLTF. +#define BS_I2C_SMB_SLTF (1U) //!< Bit field size in bits for I2C_SMB_SLTF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SMB_SLTF field. +#define BR_I2C_SMB_SLTF(x) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_SLTF)) +#endif + +//! @brief Format value for bitfield I2C_SMB_SLTF. +#define BF_I2C_SMB_SLTF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_SMB_SLTF), uint8_t) & BM_I2C_SMB_SLTF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SLTF field to a new value. +#define BW_I2C_SMB_SLTF(x, v) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_SLTF) = (v)) +#endif +//@} + +/*! + * @name Register I2C_SMB, field TCKSEL[4] (RW) + * + * Selects the clock source of the timeout counter. + * + * Values: + * - 0 - Timeout counter counts at the frequency of the I2C module clock / 64 + * - 1 - Timeout counter counts at the frequency of the I2C module clock + */ +//@{ +#define BP_I2C_SMB_TCKSEL (4U) //!< Bit position for I2C_SMB_TCKSEL. +#define BM_I2C_SMB_TCKSEL (0x10U) //!< Bit mask for I2C_SMB_TCKSEL. +#define BS_I2C_SMB_TCKSEL (1U) //!< Bit field size in bits for I2C_SMB_TCKSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SMB_TCKSEL field. +#define BR_I2C_SMB_TCKSEL(x) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_TCKSEL)) +#endif + +//! @brief Format value for bitfield I2C_SMB_TCKSEL. +#define BF_I2C_SMB_TCKSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_SMB_TCKSEL), uint8_t) & BM_I2C_SMB_TCKSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCKSEL field to a new value. +#define BW_I2C_SMB_TCKSEL(x, v) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_TCKSEL) = (v)) +#endif +//@} + +/*! + * @name Register I2C_SMB, field SIICAEN[5] (RW) + * + * Enables or disables SMBus device default address. + * + * Values: + * - 0 - I2C address register 2 matching is disabled + * - 1 - I2C address register 2 matching is enabled + */ +//@{ +#define BP_I2C_SMB_SIICAEN (5U) //!< Bit position for I2C_SMB_SIICAEN. +#define BM_I2C_SMB_SIICAEN (0x20U) //!< Bit mask for I2C_SMB_SIICAEN. +#define BS_I2C_SMB_SIICAEN (1U) //!< Bit field size in bits for I2C_SMB_SIICAEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SMB_SIICAEN field. +#define BR_I2C_SMB_SIICAEN(x) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_SIICAEN)) +#endif + +//! @brief Format value for bitfield I2C_SMB_SIICAEN. +#define BF_I2C_SMB_SIICAEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_SMB_SIICAEN), uint8_t) & BM_I2C_SMB_SIICAEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SIICAEN field to a new value. +#define BW_I2C_SMB_SIICAEN(x, v) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_SIICAEN) = (v)) +#endif +//@} + +/*! + * @name Register I2C_SMB, field ALERTEN[6] (RW) + * + * Enables or disables SMBus alert response address matching. After the host + * responds to a device that used the alert response address, you must use software + * to put the device's address on the bus. The alert protocol is described in the + * SMBus specification. + * + * Values: + * - 0 - SMBus alert response address matching is disabled + * - 1 - SMBus alert response address matching is enabled + */ +//@{ +#define BP_I2C_SMB_ALERTEN (6U) //!< Bit position for I2C_SMB_ALERTEN. +#define BM_I2C_SMB_ALERTEN (0x40U) //!< Bit mask for I2C_SMB_ALERTEN. +#define BS_I2C_SMB_ALERTEN (1U) //!< Bit field size in bits for I2C_SMB_ALERTEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SMB_ALERTEN field. +#define BR_I2C_SMB_ALERTEN(x) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_ALERTEN)) +#endif + +//! @brief Format value for bitfield I2C_SMB_ALERTEN. +#define BF_I2C_SMB_ALERTEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_SMB_ALERTEN), uint8_t) & BM_I2C_SMB_ALERTEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ALERTEN field to a new value. +#define BW_I2C_SMB_ALERTEN(x, v) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_ALERTEN) = (v)) +#endif +//@} + +/*! + * @name Register I2C_SMB, field FACK[7] (RW) + * + * For SMBus packet error checking, the CPU must be able to issue an ACK or NACK + * according to the result of receiving data byte. + * + * Values: + * - 0 - An ACK or NACK is sent on the following receiving data byte + * - 1 - Writing 0 to TXAK after receiving a data byte generates an ACK. Writing + * 1 to TXAK after receiving a data byte generates a NACK. + */ +//@{ +#define BP_I2C_SMB_FACK (7U) //!< Bit position for I2C_SMB_FACK. +#define BM_I2C_SMB_FACK (0x80U) //!< Bit mask for I2C_SMB_FACK. +#define BS_I2C_SMB_FACK (1U) //!< Bit field size in bits for I2C_SMB_FACK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SMB_FACK field. +#define BR_I2C_SMB_FACK(x) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_FACK)) +#endif + +//! @brief Format value for bitfield I2C_SMB_FACK. +#define BF_I2C_SMB_FACK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_SMB_FACK), uint8_t) & BM_I2C_SMB_FACK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FACK field to a new value. +#define BW_I2C_SMB_FACK(x, v) (BITBAND_ACCESS8(HW_I2C_SMB_ADDR(x), BP_I2C_SMB_FACK) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_A2 - I2C Address Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_A2 - I2C Address Register 2 (RW) + * + * Reset value: 0xC2U + */ +typedef union _hw_i2c_a2 +{ + uint8_t U; + struct _hw_i2c_a2_bitfields + { + uint8_t RESERVED0 : 1; //!< [0] + uint8_t SAD : 7; //!< [7:1] SMBus Address + } B; +} hw_i2c_a2_t; +#endif + +/*! + * @name Constants and macros for entire I2C_A2 register + */ +//@{ +#define HW_I2C_A2_ADDR(x) (REGS_I2C_BASE(x) + 0x9U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_A2(x) (*(__IO hw_i2c_a2_t *) HW_I2C_A2_ADDR(x)) +#define HW_I2C_A2_RD(x) (HW_I2C_A2(x).U) +#define HW_I2C_A2_WR(x, v) (HW_I2C_A2(x).U = (v)) +#define HW_I2C_A2_SET(x, v) (HW_I2C_A2_WR(x, HW_I2C_A2_RD(x) | (v))) +#define HW_I2C_A2_CLR(x, v) (HW_I2C_A2_WR(x, HW_I2C_A2_RD(x) & ~(v))) +#define HW_I2C_A2_TOG(x, v) (HW_I2C_A2_WR(x, HW_I2C_A2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_A2 bitfields + */ + +/*! + * @name Register I2C_A2, field SAD[7:1] (RW) + * + * Contains the slave address used by the SMBus. This field is used on the + * device default address or other related addresses. + */ +//@{ +#define BP_I2C_A2_SAD (1U) //!< Bit position for I2C_A2_SAD. +#define BM_I2C_A2_SAD (0xFEU) //!< Bit mask for I2C_A2_SAD. +#define BS_I2C_A2_SAD (7U) //!< Bit field size in bits for I2C_A2_SAD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_A2_SAD field. +#define BR_I2C_A2_SAD(x) (HW_I2C_A2(x).B.SAD) +#endif + +//! @brief Format value for bitfield I2C_A2_SAD. +#define BF_I2C_A2_SAD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_A2_SAD), uint8_t) & BM_I2C_A2_SAD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SAD field to a new value. +#define BW_I2C_A2_SAD(x, v) (HW_I2C_A2_WR(x, (HW_I2C_A2_RD(x) & ~BM_I2C_A2_SAD) | BF_I2C_A2_SAD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_SLTH - I2C SCL Low Timeout Register High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_SLTH - I2C SCL Low Timeout Register High (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_i2c_slth +{ + uint8_t U; + struct _hw_i2c_slth_bitfields + { + uint8_t SSLT : 8; //!< [7:0] + } B; +} hw_i2c_slth_t; +#endif + +/*! + * @name Constants and macros for entire I2C_SLTH register + */ +//@{ +#define HW_I2C_SLTH_ADDR(x) (REGS_I2C_BASE(x) + 0xAU) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_SLTH(x) (*(__IO hw_i2c_slth_t *) HW_I2C_SLTH_ADDR(x)) +#define HW_I2C_SLTH_RD(x) (HW_I2C_SLTH(x).U) +#define HW_I2C_SLTH_WR(x, v) (HW_I2C_SLTH(x).U = (v)) +#define HW_I2C_SLTH_SET(x, v) (HW_I2C_SLTH_WR(x, HW_I2C_SLTH_RD(x) | (v))) +#define HW_I2C_SLTH_CLR(x, v) (HW_I2C_SLTH_WR(x, HW_I2C_SLTH_RD(x) & ~(v))) +#define HW_I2C_SLTH_TOG(x, v) (HW_I2C_SLTH_WR(x, HW_I2C_SLTH_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_SLTH bitfields + */ + +/*! + * @name Register I2C_SLTH, field SSLT[7:0] (RW) + * + * Most significant byte of SCL low timeout value that determines the timeout + * period of SCL low. + */ +//@{ +#define BP_I2C_SLTH_SSLT (0U) //!< Bit position for I2C_SLTH_SSLT. +#define BM_I2C_SLTH_SSLT (0xFFU) //!< Bit mask for I2C_SLTH_SSLT. +#define BS_I2C_SLTH_SSLT (8U) //!< Bit field size in bits for I2C_SLTH_SSLT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SLTH_SSLT field. +#define BR_I2C_SLTH_SSLT(x) (HW_I2C_SLTH(x).U) +#endif + +//! @brief Format value for bitfield I2C_SLTH_SSLT. +#define BF_I2C_SLTH_SSLT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_SLTH_SSLT), uint8_t) & BM_I2C_SLTH_SSLT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SSLT field to a new value. +#define BW_I2C_SLTH_SSLT(x, v) (HW_I2C_SLTH_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2C_SLTL - I2C SCL Low Timeout Register Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2C_SLTL - I2C SCL Low Timeout Register Low (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_i2c_sltl +{ + uint8_t U; + struct _hw_i2c_sltl_bitfields + { + uint8_t SSLT : 8; //!< [7:0] + } B; +} hw_i2c_sltl_t; +#endif + +/*! + * @name Constants and macros for entire I2C_SLTL register + */ +//@{ +#define HW_I2C_SLTL_ADDR(x) (REGS_I2C_BASE(x) + 0xBU) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2C_SLTL(x) (*(__IO hw_i2c_sltl_t *) HW_I2C_SLTL_ADDR(x)) +#define HW_I2C_SLTL_RD(x) (HW_I2C_SLTL(x).U) +#define HW_I2C_SLTL_WR(x, v) (HW_I2C_SLTL(x).U = (v)) +#define HW_I2C_SLTL_SET(x, v) (HW_I2C_SLTL_WR(x, HW_I2C_SLTL_RD(x) | (v))) +#define HW_I2C_SLTL_CLR(x, v) (HW_I2C_SLTL_WR(x, HW_I2C_SLTL_RD(x) & ~(v))) +#define HW_I2C_SLTL_TOG(x, v) (HW_I2C_SLTL_WR(x, HW_I2C_SLTL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2C_SLTL bitfields + */ + +/*! + * @name Register I2C_SLTL, field SSLT[7:0] (RW) + * + * Least significant byte of SCL low timeout value that determines the timeout + * period of SCL low. + */ +//@{ +#define BP_I2C_SLTL_SSLT (0U) //!< Bit position for I2C_SLTL_SSLT. +#define BM_I2C_SLTL_SSLT (0xFFU) //!< Bit mask for I2C_SLTL_SSLT. +#define BS_I2C_SLTL_SSLT (8U) //!< Bit field size in bits for I2C_SLTL_SSLT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2C_SLTL_SSLT field. +#define BR_I2C_SLTL_SSLT(x) (HW_I2C_SLTL(x).U) +#endif + +//! @brief Format value for bitfield I2C_SLTL_SSLT. +#define BF_I2C_SLTL_SSLT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_I2C_SLTL_SSLT), uint8_t) & BM_I2C_SLTL_SSLT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SSLT field to a new value. +#define BW_I2C_SLTL_SSLT(x, v) (HW_I2C_SLTL_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_i2c_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All I2C module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_i2c +{ + __IO hw_i2c_a1_t A1; //!< [0x0] I2C Address Register 1 + __IO hw_i2c_f_t F; //!< [0x1] I2C Frequency Divider register + __IO hw_i2c_c1_t C1; //!< [0x2] I2C Control Register 1 + __IO hw_i2c_s_t S; //!< [0x3] I2C Status register + __IO hw_i2c_d_t D; //!< [0x4] I2C Data I/O register + __IO hw_i2c_c2_t C2; //!< [0x5] I2C Control Register 2 + __IO hw_i2c_flt_t FLT; //!< [0x6] I2C Programmable Input Glitch Filter register + __IO hw_i2c_ra_t RA; //!< [0x7] I2C Range Address register + __IO hw_i2c_smb_t SMB; //!< [0x8] I2C SMBus Control and Status register + __IO hw_i2c_a2_t A2; //!< [0x9] I2C Address Register 2 + __IO hw_i2c_slth_t SLTH; //!< [0xA] I2C SCL Low Timeout Register High + __IO hw_i2c_sltl_t SLTL; //!< [0xB] I2C SCL Low Timeout Register Low +} hw_i2c_t; +#pragma pack() + +//! @brief Macro to access all I2C registers. +//! @param x I2C instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_I2C(0)</code>. +#define HW_I2C(x) (*(hw_i2c_t *) REGS_I2C_BASE(x)) +#endif + +#endif // __HW_I2C_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_i2s.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,3463 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_I2S_REGISTERS_H__ +#define __HW_I2S_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 I2S + * + * Inter-IC Sound / Synchronous Audio Interface + * + * Registers defined in this header file: + * - HW_I2S_TCSR - SAI Transmit Control Register + * - HW_I2S_TCR1 - SAI Transmit Configuration 1 Register + * - HW_I2S_TCR2 - SAI Transmit Configuration 2 Register + * - HW_I2S_TCR3 - SAI Transmit Configuration 3 Register + * - HW_I2S_TCR4 - SAI Transmit Configuration 4 Register + * - HW_I2S_TCR5 - SAI Transmit Configuration 5 Register + * - HW_I2S_TDRn - SAI Transmit Data Register + * - HW_I2S_TFRn - SAI Transmit FIFO Register + * - HW_I2S_TMR - SAI Transmit Mask Register + * - HW_I2S_RCSR - SAI Receive Control Register + * - HW_I2S_RCR1 - SAI Receive Configuration 1 Register + * - HW_I2S_RCR2 - SAI Receive Configuration 2 Register + * - HW_I2S_RCR3 - SAI Receive Configuration 3 Register + * - HW_I2S_RCR4 - SAI Receive Configuration 4 Register + * - HW_I2S_RCR5 - SAI Receive Configuration 5 Register + * - HW_I2S_RDRn - SAI Receive Data Register + * - HW_I2S_RFRn - SAI Receive FIFO Register + * - HW_I2S_RMR - SAI Receive Mask Register + * - HW_I2S_MCR - SAI MCLK Control Register + * - HW_I2S_MDR - SAI MCLK Divide Register + * + * - hw_i2s_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_I2S_BASE +#define HW_I2S_INSTANCE_COUNT (1U) //!< Number of instances of the I2S module. +#define HW_I2S0 (0U) //!< Instance number for I2S0. +#define REGS_I2S0_BASE (0x4002F000U) //!< Base address for I2S0. + +//! @brief Table of base addresses for I2S instances. +static const uint32_t __g_regs_I2S_base_addresses[] = { + REGS_I2S0_BASE, + }; + +//! @brief Get the base address of I2S by instance number. +//! @param x I2S instance number, from 0 through 0. +#define REGS_I2S_BASE(x) (__g_regs_I2S_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of I2S. +#define REGS_I2S_INSTANCE(b) ((b) == REGS_I2S0_BASE ? HW_I2S0 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_TCSR - SAI Transmit Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_TCSR - SAI Transmit Control Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_i2s_tcsr +{ + uint32_t U; + struct _hw_i2s_tcsr_bitfields + { + uint32_t FRDE : 1; //!< [0] FIFO Request DMA Enable + uint32_t FWDE : 1; //!< [1] FIFO Warning DMA Enable + uint32_t RESERVED0 : 6; //!< [7:2] + uint32_t FRIE : 1; //!< [8] FIFO Request Interrupt Enable + uint32_t FWIE : 1; //!< [9] FIFO Warning Interrupt Enable + uint32_t FEIE : 1; //!< [10] FIFO Error Interrupt Enable + uint32_t SEIE : 1; //!< [11] Sync Error Interrupt Enable + uint32_t WSIE : 1; //!< [12] Word Start Interrupt Enable + uint32_t RESERVED1 : 3; //!< [15:13] + uint32_t FRF : 1; //!< [16] FIFO Request Flag + uint32_t FWF : 1; //!< [17] FIFO Warning Flag + uint32_t FEF : 1; //!< [18] FIFO Error Flag + uint32_t SEF : 1; //!< [19] Sync Error Flag + uint32_t WSF : 1; //!< [20] Word Start Flag + uint32_t RESERVED2 : 3; //!< [23:21] + uint32_t SR : 1; //!< [24] Software Reset + uint32_t FR : 1; //!< [25] FIFO Reset + uint32_t RESERVED3 : 2; //!< [27:26] + uint32_t BCE : 1; //!< [28] Bit Clock Enable + uint32_t DBGE : 1; //!< [29] Debug Enable + uint32_t STOPE : 1; //!< [30] Stop Enable + uint32_t TE : 1; //!< [31] Transmitter Enable + } B; +} hw_i2s_tcsr_t; +#endif + +/*! + * @name Constants and macros for entire I2S_TCSR register + */ +//@{ +#define HW_I2S_TCSR_ADDR(x) (REGS_I2S_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_TCSR(x) (*(__IO hw_i2s_tcsr_t *) HW_I2S_TCSR_ADDR(x)) +#define HW_I2S_TCSR_RD(x) (HW_I2S_TCSR(x).U) +#define HW_I2S_TCSR_WR(x, v) (HW_I2S_TCSR(x).U = (v)) +#define HW_I2S_TCSR_SET(x, v) (HW_I2S_TCSR_WR(x, HW_I2S_TCSR_RD(x) | (v))) +#define HW_I2S_TCSR_CLR(x, v) (HW_I2S_TCSR_WR(x, HW_I2S_TCSR_RD(x) & ~(v))) +#define HW_I2S_TCSR_TOG(x, v) (HW_I2S_TCSR_WR(x, HW_I2S_TCSR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_TCSR bitfields + */ + +/*! + * @name Register I2S_TCSR, field FRDE[0] (RW) + * + * Enables/disables DMA requests. + * + * Values: + * - 0 - Disables the DMA request. + * - 1 - Enables the DMA request. + */ +//@{ +#define BP_I2S_TCSR_FRDE (0U) //!< Bit position for I2S_TCSR_FRDE. +#define BM_I2S_TCSR_FRDE (0x00000001U) //!< Bit mask for I2S_TCSR_FRDE. +#define BS_I2S_TCSR_FRDE (1U) //!< Bit field size in bits for I2S_TCSR_FRDE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_FRDE field. +#define BR_I2S_TCSR_FRDE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FRDE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_FRDE. +#define BF_I2S_TCSR_FRDE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_FRDE), uint32_t) & BM_I2S_TCSR_FRDE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRDE field to a new value. +#define BW_I2S_TCSR_FRDE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FRDE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field FWDE[1] (RW) + * + * Enables/disables DMA requests. + * + * Values: + * - 0 - Disables the DMA request. + * - 1 - Enables the DMA request. + */ +//@{ +#define BP_I2S_TCSR_FWDE (1U) //!< Bit position for I2S_TCSR_FWDE. +#define BM_I2S_TCSR_FWDE (0x00000002U) //!< Bit mask for I2S_TCSR_FWDE. +#define BS_I2S_TCSR_FWDE (1U) //!< Bit field size in bits for I2S_TCSR_FWDE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_FWDE field. +#define BR_I2S_TCSR_FWDE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FWDE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_FWDE. +#define BF_I2S_TCSR_FWDE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_FWDE), uint32_t) & BM_I2S_TCSR_FWDE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FWDE field to a new value. +#define BW_I2S_TCSR_FWDE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FWDE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field FRIE[8] (RW) + * + * Enables/disables FIFO request interrupts. + * + * Values: + * - 0 - Disables the interrupt. + * - 1 - Enables the interrupt. + */ +//@{ +#define BP_I2S_TCSR_FRIE (8U) //!< Bit position for I2S_TCSR_FRIE. +#define BM_I2S_TCSR_FRIE (0x00000100U) //!< Bit mask for I2S_TCSR_FRIE. +#define BS_I2S_TCSR_FRIE (1U) //!< Bit field size in bits for I2S_TCSR_FRIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_FRIE field. +#define BR_I2S_TCSR_FRIE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FRIE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_FRIE. +#define BF_I2S_TCSR_FRIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_FRIE), uint32_t) & BM_I2S_TCSR_FRIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRIE field to a new value. +#define BW_I2S_TCSR_FRIE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FRIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field FWIE[9] (RW) + * + * Enables/disables FIFO warning interrupts. + * + * Values: + * - 0 - Disables the interrupt. + * - 1 - Enables the interrupt. + */ +//@{ +#define BP_I2S_TCSR_FWIE (9U) //!< Bit position for I2S_TCSR_FWIE. +#define BM_I2S_TCSR_FWIE (0x00000200U) //!< Bit mask for I2S_TCSR_FWIE. +#define BS_I2S_TCSR_FWIE (1U) //!< Bit field size in bits for I2S_TCSR_FWIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_FWIE field. +#define BR_I2S_TCSR_FWIE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FWIE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_FWIE. +#define BF_I2S_TCSR_FWIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_FWIE), uint32_t) & BM_I2S_TCSR_FWIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FWIE field to a new value. +#define BW_I2S_TCSR_FWIE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FWIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field FEIE[10] (RW) + * + * Enables/disables FIFO error interrupts. + * + * Values: + * - 0 - Disables the interrupt. + * - 1 - Enables the interrupt. + */ +//@{ +#define BP_I2S_TCSR_FEIE (10U) //!< Bit position for I2S_TCSR_FEIE. +#define BM_I2S_TCSR_FEIE (0x00000400U) //!< Bit mask for I2S_TCSR_FEIE. +#define BS_I2S_TCSR_FEIE (1U) //!< Bit field size in bits for I2S_TCSR_FEIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_FEIE field. +#define BR_I2S_TCSR_FEIE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FEIE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_FEIE. +#define BF_I2S_TCSR_FEIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_FEIE), uint32_t) & BM_I2S_TCSR_FEIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FEIE field to a new value. +#define BW_I2S_TCSR_FEIE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FEIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field SEIE[11] (RW) + * + * Enables/disables sync error interrupts. + * + * Values: + * - 0 - Disables interrupt. + * - 1 - Enables interrupt. + */ +//@{ +#define BP_I2S_TCSR_SEIE (11U) //!< Bit position for I2S_TCSR_SEIE. +#define BM_I2S_TCSR_SEIE (0x00000800U) //!< Bit mask for I2S_TCSR_SEIE. +#define BS_I2S_TCSR_SEIE (1U) //!< Bit field size in bits for I2S_TCSR_SEIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_SEIE field. +#define BR_I2S_TCSR_SEIE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_SEIE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_SEIE. +#define BF_I2S_TCSR_SEIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_SEIE), uint32_t) & BM_I2S_TCSR_SEIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SEIE field to a new value. +#define BW_I2S_TCSR_SEIE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_SEIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field WSIE[12] (RW) + * + * Enables/disables word start interrupts. + * + * Values: + * - 0 - Disables interrupt. + * - 1 - Enables interrupt. + */ +//@{ +#define BP_I2S_TCSR_WSIE (12U) //!< Bit position for I2S_TCSR_WSIE. +#define BM_I2S_TCSR_WSIE (0x00001000U) //!< Bit mask for I2S_TCSR_WSIE. +#define BS_I2S_TCSR_WSIE (1U) //!< Bit field size in bits for I2S_TCSR_WSIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_WSIE field. +#define BR_I2S_TCSR_WSIE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_WSIE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_WSIE. +#define BF_I2S_TCSR_WSIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_WSIE), uint32_t) & BM_I2S_TCSR_WSIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WSIE field to a new value. +#define BW_I2S_TCSR_WSIE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_WSIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field FRF[16] (RO) + * + * Indicates that the number of words in an enabled transmit channel FIFO is + * less than or equal to the transmit FIFO watermark. + * + * Values: + * - 0 - Transmit FIFO watermark has not been reached. + * - 1 - Transmit FIFO watermark has been reached. + */ +//@{ +#define BP_I2S_TCSR_FRF (16U) //!< Bit position for I2S_TCSR_FRF. +#define BM_I2S_TCSR_FRF (0x00010000U) //!< Bit mask for I2S_TCSR_FRF. +#define BS_I2S_TCSR_FRF (1U) //!< Bit field size in bits for I2S_TCSR_FRF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_FRF field. +#define BR_I2S_TCSR_FRF(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FRF)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field FWF[17] (RO) + * + * Indicates that an enabled transmit FIFO is empty. + * + * Values: + * - 0 - No enabled transmit FIFO is empty. + * - 1 - Enabled transmit FIFO is empty. + */ +//@{ +#define BP_I2S_TCSR_FWF (17U) //!< Bit position for I2S_TCSR_FWF. +#define BM_I2S_TCSR_FWF (0x00020000U) //!< Bit mask for I2S_TCSR_FWF. +#define BS_I2S_TCSR_FWF (1U) //!< Bit field size in bits for I2S_TCSR_FWF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_FWF field. +#define BR_I2S_TCSR_FWF(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FWF)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field FEF[18] (W1C) + * + * Indicates that an enabled transmit FIFO has underrun. Write a logic 1 to this + * field to clear this flag. + * + * Values: + * - 0 - Transmit underrun not detected. + * - 1 - Transmit underrun detected. + */ +//@{ +#define BP_I2S_TCSR_FEF (18U) //!< Bit position for I2S_TCSR_FEF. +#define BM_I2S_TCSR_FEF (0x00040000U) //!< Bit mask for I2S_TCSR_FEF. +#define BS_I2S_TCSR_FEF (1U) //!< Bit field size in bits for I2S_TCSR_FEF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_FEF field. +#define BR_I2S_TCSR_FEF(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FEF)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_FEF. +#define BF_I2S_TCSR_FEF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_FEF), uint32_t) & BM_I2S_TCSR_FEF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FEF field to a new value. +#define BW_I2S_TCSR_FEF(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FEF) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field SEF[19] (W1C) + * + * Indicates that an error in the externally-generated frame sync has been + * detected. Write a logic 1 to this field to clear this flag. + * + * Values: + * - 0 - Sync error not detected. + * - 1 - Frame sync error detected. + */ +//@{ +#define BP_I2S_TCSR_SEF (19U) //!< Bit position for I2S_TCSR_SEF. +#define BM_I2S_TCSR_SEF (0x00080000U) //!< Bit mask for I2S_TCSR_SEF. +#define BS_I2S_TCSR_SEF (1U) //!< Bit field size in bits for I2S_TCSR_SEF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_SEF field. +#define BR_I2S_TCSR_SEF(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_SEF)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_SEF. +#define BF_I2S_TCSR_SEF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_SEF), uint32_t) & BM_I2S_TCSR_SEF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SEF field to a new value. +#define BW_I2S_TCSR_SEF(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_SEF) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field WSF[20] (W1C) + * + * Indicates that the start of the configured word has been detected. Write a + * logic 1 to this field to clear this flag. + * + * Values: + * - 0 - Start of word not detected. + * - 1 - Start of word detected. + */ +//@{ +#define BP_I2S_TCSR_WSF (20U) //!< Bit position for I2S_TCSR_WSF. +#define BM_I2S_TCSR_WSF (0x00100000U) //!< Bit mask for I2S_TCSR_WSF. +#define BS_I2S_TCSR_WSF (1U) //!< Bit field size in bits for I2S_TCSR_WSF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_WSF field. +#define BR_I2S_TCSR_WSF(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_WSF)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_WSF. +#define BF_I2S_TCSR_WSF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_WSF), uint32_t) & BM_I2S_TCSR_WSF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WSF field to a new value. +#define BW_I2S_TCSR_WSF(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_WSF) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field SR[24] (RW) + * + * When set, resets the internal transmitter logic including the FIFO pointers. + * Software-visible registers are not affected, except for the status registers. + * + * Values: + * - 0 - No effect. + * - 1 - Software reset. + */ +//@{ +#define BP_I2S_TCSR_SR (24U) //!< Bit position for I2S_TCSR_SR. +#define BM_I2S_TCSR_SR (0x01000000U) //!< Bit mask for I2S_TCSR_SR. +#define BS_I2S_TCSR_SR (1U) //!< Bit field size in bits for I2S_TCSR_SR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_SR field. +#define BR_I2S_TCSR_SR(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_SR)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_SR. +#define BF_I2S_TCSR_SR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_SR), uint32_t) & BM_I2S_TCSR_SR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SR field to a new value. +#define BW_I2S_TCSR_SR(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_SR) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field FR[25] (WORZ) + * + * Resets the FIFO pointers. Reading this field will always return zero. FIFO + * pointers should only be reset when the transmitter is disabled or the FIFO error + * flag is set. + * + * Values: + * - 0 - No effect. + * - 1 - FIFO reset. + */ +//@{ +#define BP_I2S_TCSR_FR (25U) //!< Bit position for I2S_TCSR_FR. +#define BM_I2S_TCSR_FR (0x02000000U) //!< Bit mask for I2S_TCSR_FR. +#define BS_I2S_TCSR_FR (1U) //!< Bit field size in bits for I2S_TCSR_FR. + +//! @brief Format value for bitfield I2S_TCSR_FR. +#define BF_I2S_TCSR_FR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_FR), uint32_t) & BM_I2S_TCSR_FR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FR field to a new value. +#define BW_I2S_TCSR_FR(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_FR) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field BCE[28] (RW) + * + * Enables the transmit bit clock, separately from the TE. This field is + * automatically set whenever TE is set. When software clears this field, the transmit + * bit clock remains enabled, and this bit remains set, until the end of the + * current frame. + * + * Values: + * - 0 - Transmit bit clock is disabled. + * - 1 - Transmit bit clock is enabled. + */ +//@{ +#define BP_I2S_TCSR_BCE (28U) //!< Bit position for I2S_TCSR_BCE. +#define BM_I2S_TCSR_BCE (0x10000000U) //!< Bit mask for I2S_TCSR_BCE. +#define BS_I2S_TCSR_BCE (1U) //!< Bit field size in bits for I2S_TCSR_BCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_BCE field. +#define BR_I2S_TCSR_BCE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_BCE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_BCE. +#define BF_I2S_TCSR_BCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_BCE), uint32_t) & BM_I2S_TCSR_BCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCE field to a new value. +#define BW_I2S_TCSR_BCE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_BCE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field DBGE[29] (RW) + * + * Enables/disables transmitter operation in Debug mode. The transmit bit clock + * is not affected by debug mode. + * + * Values: + * - 0 - Transmitter is disabled in Debug mode, after completing the current + * frame. + * - 1 - Transmitter is enabled in Debug mode. + */ +//@{ +#define BP_I2S_TCSR_DBGE (29U) //!< Bit position for I2S_TCSR_DBGE. +#define BM_I2S_TCSR_DBGE (0x20000000U) //!< Bit mask for I2S_TCSR_DBGE. +#define BS_I2S_TCSR_DBGE (1U) //!< Bit field size in bits for I2S_TCSR_DBGE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_DBGE field. +#define BR_I2S_TCSR_DBGE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_DBGE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_DBGE. +#define BF_I2S_TCSR_DBGE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_DBGE), uint32_t) & BM_I2S_TCSR_DBGE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DBGE field to a new value. +#define BW_I2S_TCSR_DBGE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_DBGE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field STOPE[30] (RW) + * + * Configures transmitter operation in Stop mode. This field is ignored and the + * transmitter is disabled in all low-leakage stop modes. + * + * Values: + * - 0 - Transmitter disabled in Stop mode. + * - 1 - Transmitter enabled in Stop mode. + */ +//@{ +#define BP_I2S_TCSR_STOPE (30U) //!< Bit position for I2S_TCSR_STOPE. +#define BM_I2S_TCSR_STOPE (0x40000000U) //!< Bit mask for I2S_TCSR_STOPE. +#define BS_I2S_TCSR_STOPE (1U) //!< Bit field size in bits for I2S_TCSR_STOPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_STOPE field. +#define BR_I2S_TCSR_STOPE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_STOPE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_STOPE. +#define BF_I2S_TCSR_STOPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_STOPE), uint32_t) & BM_I2S_TCSR_STOPE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STOPE field to a new value. +#define BW_I2S_TCSR_STOPE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_STOPE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCSR, field TE[31] (RW) + * + * Enables/disables the transmitter. When software clears this field, the + * transmitter remains enabled, and this bit remains set, until the end of the current + * frame. + * + * Values: + * - 0 - Transmitter is disabled. + * - 1 - Transmitter is enabled, or transmitter has been disabled and has not + * yet reached end of frame. + */ +//@{ +#define BP_I2S_TCSR_TE (31U) //!< Bit position for I2S_TCSR_TE. +#define BM_I2S_TCSR_TE (0x80000000U) //!< Bit mask for I2S_TCSR_TE. +#define BS_I2S_TCSR_TE (1U) //!< Bit field size in bits for I2S_TCSR_TE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCSR_TE field. +#define BR_I2S_TCSR_TE(x) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_TE)) +#endif + +//! @brief Format value for bitfield I2S_TCSR_TE. +#define BF_I2S_TCSR_TE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCSR_TE), uint32_t) & BM_I2S_TCSR_TE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TE field to a new value. +#define BW_I2S_TCSR_TE(x, v) (BITBAND_ACCESS32(HW_I2S_TCSR_ADDR(x), BP_I2S_TCSR_TE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_TCR1 - SAI Transmit Configuration 1 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_TCR1 - SAI Transmit Configuration 1 Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_i2s_tcr1 +{ + uint32_t U; + struct _hw_i2s_tcr1_bitfields + { + uint32_t TFW : 3; //!< [2:0] Transmit FIFO Watermark + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_i2s_tcr1_t; +#endif + +/*! + * @name Constants and macros for entire I2S_TCR1 register + */ +//@{ +#define HW_I2S_TCR1_ADDR(x) (REGS_I2S_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_TCR1(x) (*(__IO hw_i2s_tcr1_t *) HW_I2S_TCR1_ADDR(x)) +#define HW_I2S_TCR1_RD(x) (HW_I2S_TCR1(x).U) +#define HW_I2S_TCR1_WR(x, v) (HW_I2S_TCR1(x).U = (v)) +#define HW_I2S_TCR1_SET(x, v) (HW_I2S_TCR1_WR(x, HW_I2S_TCR1_RD(x) | (v))) +#define HW_I2S_TCR1_CLR(x, v) (HW_I2S_TCR1_WR(x, HW_I2S_TCR1_RD(x) & ~(v))) +#define HW_I2S_TCR1_TOG(x, v) (HW_I2S_TCR1_WR(x, HW_I2S_TCR1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_TCR1 bitfields + */ + +/*! + * @name Register I2S_TCR1, field TFW[2:0] (RW) + * + * Configures the watermark level for all enabled transmit channels. + */ +//@{ +#define BP_I2S_TCR1_TFW (0U) //!< Bit position for I2S_TCR1_TFW. +#define BM_I2S_TCR1_TFW (0x00000007U) //!< Bit mask for I2S_TCR1_TFW. +#define BS_I2S_TCR1_TFW (3U) //!< Bit field size in bits for I2S_TCR1_TFW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR1_TFW field. +#define BR_I2S_TCR1_TFW(x) (HW_I2S_TCR1(x).B.TFW) +#endif + +//! @brief Format value for bitfield I2S_TCR1_TFW. +#define BF_I2S_TCR1_TFW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR1_TFW), uint32_t) & BM_I2S_TCR1_TFW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TFW field to a new value. +#define BW_I2S_TCR1_TFW(x, v) (HW_I2S_TCR1_WR(x, (HW_I2S_TCR1_RD(x) & ~BM_I2S_TCR1_TFW) | BF_I2S_TCR1_TFW(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_TCR2 - SAI Transmit Configuration 2 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_TCR2 - SAI Transmit Configuration 2 Register (RW) + * + * Reset value: 0x00000000U + * + * This register must not be altered when TCSR[TE] is set. + */ +typedef union _hw_i2s_tcr2 +{ + uint32_t U; + struct _hw_i2s_tcr2_bitfields + { + uint32_t DIV : 8; //!< [7:0] Bit Clock Divide + uint32_t RESERVED0 : 16; //!< [23:8] + uint32_t BCD : 1; //!< [24] Bit Clock Direction + uint32_t BCP : 1; //!< [25] Bit Clock Polarity + uint32_t MSEL : 2; //!< [27:26] MCLK Select + uint32_t BCI : 1; //!< [28] Bit Clock Input + uint32_t BCS : 1; //!< [29] Bit Clock Swap + uint32_t SYNC : 2; //!< [31:30] Synchronous Mode + } B; +} hw_i2s_tcr2_t; +#endif + +/*! + * @name Constants and macros for entire I2S_TCR2 register + */ +//@{ +#define HW_I2S_TCR2_ADDR(x) (REGS_I2S_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_TCR2(x) (*(__IO hw_i2s_tcr2_t *) HW_I2S_TCR2_ADDR(x)) +#define HW_I2S_TCR2_RD(x) (HW_I2S_TCR2(x).U) +#define HW_I2S_TCR2_WR(x, v) (HW_I2S_TCR2(x).U = (v)) +#define HW_I2S_TCR2_SET(x, v) (HW_I2S_TCR2_WR(x, HW_I2S_TCR2_RD(x) | (v))) +#define HW_I2S_TCR2_CLR(x, v) (HW_I2S_TCR2_WR(x, HW_I2S_TCR2_RD(x) & ~(v))) +#define HW_I2S_TCR2_TOG(x, v) (HW_I2S_TCR2_WR(x, HW_I2S_TCR2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_TCR2 bitfields + */ + +/*! + * @name Register I2S_TCR2, field DIV[7:0] (RW) + * + * Divides down the audio master clock to generate the bit clock when configured + * for an internal bit clock. The division value is (DIV + 1) * 2. + */ +//@{ +#define BP_I2S_TCR2_DIV (0U) //!< Bit position for I2S_TCR2_DIV. +#define BM_I2S_TCR2_DIV (0x000000FFU) //!< Bit mask for I2S_TCR2_DIV. +#define BS_I2S_TCR2_DIV (8U) //!< Bit field size in bits for I2S_TCR2_DIV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR2_DIV field. +#define BR_I2S_TCR2_DIV(x) (HW_I2S_TCR2(x).B.DIV) +#endif + +//! @brief Format value for bitfield I2S_TCR2_DIV. +#define BF_I2S_TCR2_DIV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR2_DIV), uint32_t) & BM_I2S_TCR2_DIV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DIV field to a new value. +#define BW_I2S_TCR2_DIV(x, v) (HW_I2S_TCR2_WR(x, (HW_I2S_TCR2_RD(x) & ~BM_I2S_TCR2_DIV) | BF_I2S_TCR2_DIV(v))) +#endif +//@} + +/*! + * @name Register I2S_TCR2, field BCD[24] (RW) + * + * Configures the direction of the bit clock. + * + * Values: + * - 0 - Bit clock is generated externally in Slave mode. + * - 1 - Bit clock is generated internally in Master mode. + */ +//@{ +#define BP_I2S_TCR2_BCD (24U) //!< Bit position for I2S_TCR2_BCD. +#define BM_I2S_TCR2_BCD (0x01000000U) //!< Bit mask for I2S_TCR2_BCD. +#define BS_I2S_TCR2_BCD (1U) //!< Bit field size in bits for I2S_TCR2_BCD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR2_BCD field. +#define BR_I2S_TCR2_BCD(x) (BITBAND_ACCESS32(HW_I2S_TCR2_ADDR(x), BP_I2S_TCR2_BCD)) +#endif + +//! @brief Format value for bitfield I2S_TCR2_BCD. +#define BF_I2S_TCR2_BCD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR2_BCD), uint32_t) & BM_I2S_TCR2_BCD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCD field to a new value. +#define BW_I2S_TCR2_BCD(x, v) (BITBAND_ACCESS32(HW_I2S_TCR2_ADDR(x), BP_I2S_TCR2_BCD) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCR2, field BCP[25] (RW) + * + * Configures the polarity of the bit clock. + * + * Values: + * - 0 - Bit clock is active high with drive outputs on rising edge and sample + * inputs on falling edge. + * - 1 - Bit clock is active low with drive outputs on falling edge and sample + * inputs on rising edge. + */ +//@{ +#define BP_I2S_TCR2_BCP (25U) //!< Bit position for I2S_TCR2_BCP. +#define BM_I2S_TCR2_BCP (0x02000000U) //!< Bit mask for I2S_TCR2_BCP. +#define BS_I2S_TCR2_BCP (1U) //!< Bit field size in bits for I2S_TCR2_BCP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR2_BCP field. +#define BR_I2S_TCR2_BCP(x) (BITBAND_ACCESS32(HW_I2S_TCR2_ADDR(x), BP_I2S_TCR2_BCP)) +#endif + +//! @brief Format value for bitfield I2S_TCR2_BCP. +#define BF_I2S_TCR2_BCP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR2_BCP), uint32_t) & BM_I2S_TCR2_BCP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCP field to a new value. +#define BW_I2S_TCR2_BCP(x, v) (BITBAND_ACCESS32(HW_I2S_TCR2_ADDR(x), BP_I2S_TCR2_BCP) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCR2, field MSEL[27:26] (RW) + * + * Selects the audio Master Clock option used to generate an internally + * generated bit clock. This field has no effect when configured for an externally + * generated bit clock. Depending on the device, some Master Clock options might not be + * available. See the chip configuration details for the availability and + * chip-specific meaning of each option. + * + * Values: + * - 00 - Bus Clock selected. + * - 01 - Master Clock (MCLK) 1 option selected. + * - 10 - Master Clock (MCLK) 2 option selected. + * - 11 - Master Clock (MCLK) 3 option selected. + */ +//@{ +#define BP_I2S_TCR2_MSEL (26U) //!< Bit position for I2S_TCR2_MSEL. +#define BM_I2S_TCR2_MSEL (0x0C000000U) //!< Bit mask for I2S_TCR2_MSEL. +#define BS_I2S_TCR2_MSEL (2U) //!< Bit field size in bits for I2S_TCR2_MSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR2_MSEL field. +#define BR_I2S_TCR2_MSEL(x) (HW_I2S_TCR2(x).B.MSEL) +#endif + +//! @brief Format value for bitfield I2S_TCR2_MSEL. +#define BF_I2S_TCR2_MSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR2_MSEL), uint32_t) & BM_I2S_TCR2_MSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MSEL field to a new value. +#define BW_I2S_TCR2_MSEL(x, v) (HW_I2S_TCR2_WR(x, (HW_I2S_TCR2_RD(x) & ~BM_I2S_TCR2_MSEL) | BF_I2S_TCR2_MSEL(v))) +#endif +//@} + +/*! + * @name Register I2S_TCR2, field BCI[28] (RW) + * + * When this field is set and using an internally generated bit clock in either + * synchronous or asynchronous mode, the bit clock actually used by the + * transmitter is delayed by the pad output delay (the transmitter is clocked by the pad + * input as if the clock was externally generated). This has the effect of + * decreasing the data input setup time, but increasing the data output valid time. The + * slave mode timing from the datasheet should be used for the transmitter when + * this bit is set. In synchronous mode, this bit allows the transmitter to use + * the slave mode timing from the datasheet, while the receiver uses the master + * mode timing. This field has no effect when configured for an externally generated + * bit clock or when synchronous to another SAI peripheral . + * + * Values: + * - 0 - No effect. + * - 1 - Internal logic is clocked as if bit clock was externally generated. + */ +//@{ +#define BP_I2S_TCR2_BCI (28U) //!< Bit position for I2S_TCR2_BCI. +#define BM_I2S_TCR2_BCI (0x10000000U) //!< Bit mask for I2S_TCR2_BCI. +#define BS_I2S_TCR2_BCI (1U) //!< Bit field size in bits for I2S_TCR2_BCI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR2_BCI field. +#define BR_I2S_TCR2_BCI(x) (BITBAND_ACCESS32(HW_I2S_TCR2_ADDR(x), BP_I2S_TCR2_BCI)) +#endif + +//! @brief Format value for bitfield I2S_TCR2_BCI. +#define BF_I2S_TCR2_BCI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR2_BCI), uint32_t) & BM_I2S_TCR2_BCI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCI field to a new value. +#define BW_I2S_TCR2_BCI(x, v) (BITBAND_ACCESS32(HW_I2S_TCR2_ADDR(x), BP_I2S_TCR2_BCI) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCR2, field BCS[29] (RW) + * + * This field swaps the bit clock used by the transmitter. When the transmitter + * is configured in asynchronous mode and this bit is set, the transmitter is + * clocked by the receiver bit clock (SAI_RX_BCLK). This allows the transmitter and + * receiver to share the same bit clock, but the transmitter continues to use the + * transmit frame sync (SAI_TX_SYNC). When the transmitter is configured in + * synchronous mode, the transmitter BCS field and receiver BCS field must be set to + * the same value. When both are set, the transmitter and receiver are both + * clocked by the transmitter bit clock (SAI_TX_BCLK) but use the receiver frame sync + * (SAI_RX_SYNC). This field has no effect when synchronous to another SAI + * peripheral. + * + * Values: + * - 0 - Use the normal bit clock source. + * - 1 - Swap the bit clock source. + */ +//@{ +#define BP_I2S_TCR2_BCS (29U) //!< Bit position for I2S_TCR2_BCS. +#define BM_I2S_TCR2_BCS (0x20000000U) //!< Bit mask for I2S_TCR2_BCS. +#define BS_I2S_TCR2_BCS (1U) //!< Bit field size in bits for I2S_TCR2_BCS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR2_BCS field. +#define BR_I2S_TCR2_BCS(x) (BITBAND_ACCESS32(HW_I2S_TCR2_ADDR(x), BP_I2S_TCR2_BCS)) +#endif + +//! @brief Format value for bitfield I2S_TCR2_BCS. +#define BF_I2S_TCR2_BCS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR2_BCS), uint32_t) & BM_I2S_TCR2_BCS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCS field to a new value. +#define BW_I2S_TCR2_BCS(x, v) (BITBAND_ACCESS32(HW_I2S_TCR2_ADDR(x), BP_I2S_TCR2_BCS) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCR2, field SYNC[31:30] (RW) + * + * Configures between asynchronous and synchronous modes of operation. When + * configured for a synchronous mode of operation, the receiver or other SAI + * peripheral must be configured for asynchronous operation. + * + * Values: + * - 00 - Asynchronous mode. + * - 01 - Synchronous with receiver. + * - 10 - Synchronous with another SAI transmitter. + * - 11 - Synchronous with another SAI receiver. + */ +//@{ +#define BP_I2S_TCR2_SYNC (30U) //!< Bit position for I2S_TCR2_SYNC. +#define BM_I2S_TCR2_SYNC (0xC0000000U) //!< Bit mask for I2S_TCR2_SYNC. +#define BS_I2S_TCR2_SYNC (2U) //!< Bit field size in bits for I2S_TCR2_SYNC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR2_SYNC field. +#define BR_I2S_TCR2_SYNC(x) (HW_I2S_TCR2(x).B.SYNC) +#endif + +//! @brief Format value for bitfield I2S_TCR2_SYNC. +#define BF_I2S_TCR2_SYNC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR2_SYNC), uint32_t) & BM_I2S_TCR2_SYNC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYNC field to a new value. +#define BW_I2S_TCR2_SYNC(x, v) (HW_I2S_TCR2_WR(x, (HW_I2S_TCR2_RD(x) & ~BM_I2S_TCR2_SYNC) | BF_I2S_TCR2_SYNC(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_TCR3 - SAI Transmit Configuration 3 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_TCR3 - SAI Transmit Configuration 3 Register (RW) + * + * Reset value: 0x00000000U + * + * This register must not be altered when TCSR[TE] is set. + */ +typedef union _hw_i2s_tcr3 +{ + uint32_t U; + struct _hw_i2s_tcr3_bitfields + { + uint32_t WDFL : 5; //!< [4:0] Word Flag Configuration + uint32_t RESERVED0 : 11; //!< [15:5] + uint32_t TCE : 2; //!< [17:16] Transmit Channel Enable + uint32_t RESERVED1 : 14; //!< [31:18] + } B; +} hw_i2s_tcr3_t; +#endif + +/*! + * @name Constants and macros for entire I2S_TCR3 register + */ +//@{ +#define HW_I2S_TCR3_ADDR(x) (REGS_I2S_BASE(x) + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_TCR3(x) (*(__IO hw_i2s_tcr3_t *) HW_I2S_TCR3_ADDR(x)) +#define HW_I2S_TCR3_RD(x) (HW_I2S_TCR3(x).U) +#define HW_I2S_TCR3_WR(x, v) (HW_I2S_TCR3(x).U = (v)) +#define HW_I2S_TCR3_SET(x, v) (HW_I2S_TCR3_WR(x, HW_I2S_TCR3_RD(x) | (v))) +#define HW_I2S_TCR3_CLR(x, v) (HW_I2S_TCR3_WR(x, HW_I2S_TCR3_RD(x) & ~(v))) +#define HW_I2S_TCR3_TOG(x, v) (HW_I2S_TCR3_WR(x, HW_I2S_TCR3_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_TCR3 bitfields + */ + +/*! + * @name Register I2S_TCR3, field WDFL[4:0] (RW) + * + * Configures which word sets the start of word flag. The value written must be + * one less than the word number. For example, writing 0 configures the first + * word in the frame. When configured to a value greater than TCR4[FRSZ], then the + * start of word flag is never set. + */ +//@{ +#define BP_I2S_TCR3_WDFL (0U) //!< Bit position for I2S_TCR3_WDFL. +#define BM_I2S_TCR3_WDFL (0x0000001FU) //!< Bit mask for I2S_TCR3_WDFL. +#define BS_I2S_TCR3_WDFL (5U) //!< Bit field size in bits for I2S_TCR3_WDFL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR3_WDFL field. +#define BR_I2S_TCR3_WDFL(x) (HW_I2S_TCR3(x).B.WDFL) +#endif + +//! @brief Format value for bitfield I2S_TCR3_WDFL. +#define BF_I2S_TCR3_WDFL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR3_WDFL), uint32_t) & BM_I2S_TCR3_WDFL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WDFL field to a new value. +#define BW_I2S_TCR3_WDFL(x, v) (HW_I2S_TCR3_WR(x, (HW_I2S_TCR3_RD(x) & ~BM_I2S_TCR3_WDFL) | BF_I2S_TCR3_WDFL(v))) +#endif +//@} + +/*! + * @name Register I2S_TCR3, field TCE[17:16] (RW) + * + * Enables the corresponding data channel for transmit operation. A channel must + * be enabled before its FIFO is accessed. + * + * Values: + * - 0 - Transmit data channel N is disabled. + * - 1 - Transmit data channel N is enabled. + */ +//@{ +#define BP_I2S_TCR3_TCE (16U) //!< Bit position for I2S_TCR3_TCE. +#define BM_I2S_TCR3_TCE (0x00030000U) //!< Bit mask for I2S_TCR3_TCE. +#define BS_I2S_TCR3_TCE (2U) //!< Bit field size in bits for I2S_TCR3_TCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR3_TCE field. +#define BR_I2S_TCR3_TCE(x) (HW_I2S_TCR3(x).B.TCE) +#endif + +//! @brief Format value for bitfield I2S_TCR3_TCE. +#define BF_I2S_TCR3_TCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR3_TCE), uint32_t) & BM_I2S_TCR3_TCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCE field to a new value. +#define BW_I2S_TCR3_TCE(x, v) (HW_I2S_TCR3_WR(x, (HW_I2S_TCR3_RD(x) & ~BM_I2S_TCR3_TCE) | BF_I2S_TCR3_TCE(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_TCR4 - SAI Transmit Configuration 4 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_TCR4 - SAI Transmit Configuration 4 Register (RW) + * + * Reset value: 0x00000000U + * + * This register must not be altered when TCSR[TE] is set. + */ +typedef union _hw_i2s_tcr4 +{ + uint32_t U; + struct _hw_i2s_tcr4_bitfields + { + uint32_t FSD : 1; //!< [0] Frame Sync Direction + uint32_t FSP : 1; //!< [1] Frame Sync Polarity + uint32_t RESERVED0 : 1; //!< [2] + uint32_t FSE : 1; //!< [3] Frame Sync Early + uint32_t MF : 1; //!< [4] MSB First + uint32_t RESERVED1 : 3; //!< [7:5] + uint32_t SYWD : 5; //!< [12:8] Sync Width + uint32_t RESERVED2 : 3; //!< [15:13] + uint32_t FRSZ : 5; //!< [20:16] Frame size + uint32_t RESERVED3 : 11; //!< [31:21] + } B; +} hw_i2s_tcr4_t; +#endif + +/*! + * @name Constants and macros for entire I2S_TCR4 register + */ +//@{ +#define HW_I2S_TCR4_ADDR(x) (REGS_I2S_BASE(x) + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_TCR4(x) (*(__IO hw_i2s_tcr4_t *) HW_I2S_TCR4_ADDR(x)) +#define HW_I2S_TCR4_RD(x) (HW_I2S_TCR4(x).U) +#define HW_I2S_TCR4_WR(x, v) (HW_I2S_TCR4(x).U = (v)) +#define HW_I2S_TCR4_SET(x, v) (HW_I2S_TCR4_WR(x, HW_I2S_TCR4_RD(x) | (v))) +#define HW_I2S_TCR4_CLR(x, v) (HW_I2S_TCR4_WR(x, HW_I2S_TCR4_RD(x) & ~(v))) +#define HW_I2S_TCR4_TOG(x, v) (HW_I2S_TCR4_WR(x, HW_I2S_TCR4_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_TCR4 bitfields + */ + +/*! + * @name Register I2S_TCR4, field FSD[0] (RW) + * + * Configures the direction of the frame sync. + * + * Values: + * - 0 - Frame sync is generated externally in Slave mode. + * - 1 - Frame sync is generated internally in Master mode. + */ +//@{ +#define BP_I2S_TCR4_FSD (0U) //!< Bit position for I2S_TCR4_FSD. +#define BM_I2S_TCR4_FSD (0x00000001U) //!< Bit mask for I2S_TCR4_FSD. +#define BS_I2S_TCR4_FSD (1U) //!< Bit field size in bits for I2S_TCR4_FSD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR4_FSD field. +#define BR_I2S_TCR4_FSD(x) (BITBAND_ACCESS32(HW_I2S_TCR4_ADDR(x), BP_I2S_TCR4_FSD)) +#endif + +//! @brief Format value for bitfield I2S_TCR4_FSD. +#define BF_I2S_TCR4_FSD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR4_FSD), uint32_t) & BM_I2S_TCR4_FSD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FSD field to a new value. +#define BW_I2S_TCR4_FSD(x, v) (BITBAND_ACCESS32(HW_I2S_TCR4_ADDR(x), BP_I2S_TCR4_FSD) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCR4, field FSP[1] (RW) + * + * Configures the polarity of the frame sync. + * + * Values: + * - 0 - Frame sync is active high. + * - 1 - Frame sync is active low. + */ +//@{ +#define BP_I2S_TCR4_FSP (1U) //!< Bit position for I2S_TCR4_FSP. +#define BM_I2S_TCR4_FSP (0x00000002U) //!< Bit mask for I2S_TCR4_FSP. +#define BS_I2S_TCR4_FSP (1U) //!< Bit field size in bits for I2S_TCR4_FSP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR4_FSP field. +#define BR_I2S_TCR4_FSP(x) (BITBAND_ACCESS32(HW_I2S_TCR4_ADDR(x), BP_I2S_TCR4_FSP)) +#endif + +//! @brief Format value for bitfield I2S_TCR4_FSP. +#define BF_I2S_TCR4_FSP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR4_FSP), uint32_t) & BM_I2S_TCR4_FSP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FSP field to a new value. +#define BW_I2S_TCR4_FSP(x, v) (BITBAND_ACCESS32(HW_I2S_TCR4_ADDR(x), BP_I2S_TCR4_FSP) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCR4, field FSE[3] (RW) + * + * Values: + * - 0 - Frame sync asserts with the first bit of the frame. + * - 1 - Frame sync asserts one bit before the first bit of the frame. + */ +//@{ +#define BP_I2S_TCR4_FSE (3U) //!< Bit position for I2S_TCR4_FSE. +#define BM_I2S_TCR4_FSE (0x00000008U) //!< Bit mask for I2S_TCR4_FSE. +#define BS_I2S_TCR4_FSE (1U) //!< Bit field size in bits for I2S_TCR4_FSE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR4_FSE field. +#define BR_I2S_TCR4_FSE(x) (BITBAND_ACCESS32(HW_I2S_TCR4_ADDR(x), BP_I2S_TCR4_FSE)) +#endif + +//! @brief Format value for bitfield I2S_TCR4_FSE. +#define BF_I2S_TCR4_FSE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR4_FSE), uint32_t) & BM_I2S_TCR4_FSE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FSE field to a new value. +#define BW_I2S_TCR4_FSE(x, v) (BITBAND_ACCESS32(HW_I2S_TCR4_ADDR(x), BP_I2S_TCR4_FSE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCR4, field MF[4] (RW) + * + * Configures whether the LSB or the MSB is transmitted first. + * + * Values: + * - 0 - LSB is transmitted first. + * - 1 - MSB is transmitted first. + */ +//@{ +#define BP_I2S_TCR4_MF (4U) //!< Bit position for I2S_TCR4_MF. +#define BM_I2S_TCR4_MF (0x00000010U) //!< Bit mask for I2S_TCR4_MF. +#define BS_I2S_TCR4_MF (1U) //!< Bit field size in bits for I2S_TCR4_MF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR4_MF field. +#define BR_I2S_TCR4_MF(x) (BITBAND_ACCESS32(HW_I2S_TCR4_ADDR(x), BP_I2S_TCR4_MF)) +#endif + +//! @brief Format value for bitfield I2S_TCR4_MF. +#define BF_I2S_TCR4_MF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR4_MF), uint32_t) & BM_I2S_TCR4_MF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MF field to a new value. +#define BW_I2S_TCR4_MF(x, v) (BITBAND_ACCESS32(HW_I2S_TCR4_ADDR(x), BP_I2S_TCR4_MF) = (v)) +#endif +//@} + +/*! + * @name Register I2S_TCR4, field SYWD[12:8] (RW) + * + * Configures the length of the frame sync in number of bit clocks. The value + * written must be one less than the number of bit clocks. For example, write 0 for + * the frame sync to assert for one bit clock only. The sync width cannot be + * configured longer than the first word of the frame. + */ +//@{ +#define BP_I2S_TCR4_SYWD (8U) //!< Bit position for I2S_TCR4_SYWD. +#define BM_I2S_TCR4_SYWD (0x00001F00U) //!< Bit mask for I2S_TCR4_SYWD. +#define BS_I2S_TCR4_SYWD (5U) //!< Bit field size in bits for I2S_TCR4_SYWD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR4_SYWD field. +#define BR_I2S_TCR4_SYWD(x) (HW_I2S_TCR4(x).B.SYWD) +#endif + +//! @brief Format value for bitfield I2S_TCR4_SYWD. +#define BF_I2S_TCR4_SYWD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR4_SYWD), uint32_t) & BM_I2S_TCR4_SYWD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYWD field to a new value. +#define BW_I2S_TCR4_SYWD(x, v) (HW_I2S_TCR4_WR(x, (HW_I2S_TCR4_RD(x) & ~BM_I2S_TCR4_SYWD) | BF_I2S_TCR4_SYWD(v))) +#endif +//@} + +/*! + * @name Register I2S_TCR4, field FRSZ[20:16] (RW) + * + * Configures the number of words in each frame. The value written must be one + * less than the number of words in the frame. For example, write 0 for one word + * per frame. The maximum supported frame size is 32 words. + */ +//@{ +#define BP_I2S_TCR4_FRSZ (16U) //!< Bit position for I2S_TCR4_FRSZ. +#define BM_I2S_TCR4_FRSZ (0x001F0000U) //!< Bit mask for I2S_TCR4_FRSZ. +#define BS_I2S_TCR4_FRSZ (5U) //!< Bit field size in bits for I2S_TCR4_FRSZ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR4_FRSZ field. +#define BR_I2S_TCR4_FRSZ(x) (HW_I2S_TCR4(x).B.FRSZ) +#endif + +//! @brief Format value for bitfield I2S_TCR4_FRSZ. +#define BF_I2S_TCR4_FRSZ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR4_FRSZ), uint32_t) & BM_I2S_TCR4_FRSZ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRSZ field to a new value. +#define BW_I2S_TCR4_FRSZ(x, v) (HW_I2S_TCR4_WR(x, (HW_I2S_TCR4_RD(x) & ~BM_I2S_TCR4_FRSZ) | BF_I2S_TCR4_FRSZ(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_TCR5 - SAI Transmit Configuration 5 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_TCR5 - SAI Transmit Configuration 5 Register (RW) + * + * Reset value: 0x00000000U + * + * This register must not be altered when TCSR[TE] is set. + */ +typedef union _hw_i2s_tcr5 +{ + uint32_t U; + struct _hw_i2s_tcr5_bitfields + { + uint32_t RESERVED0 : 8; //!< [7:0] + uint32_t FBT : 5; //!< [12:8] First Bit Shifted + uint32_t RESERVED1 : 3; //!< [15:13] + uint32_t W0W : 5; //!< [20:16] Word 0 Width + uint32_t RESERVED2 : 3; //!< [23:21] + uint32_t WNW : 5; //!< [28:24] Word N Width + uint32_t RESERVED3 : 3; //!< [31:29] + } B; +} hw_i2s_tcr5_t; +#endif + +/*! + * @name Constants and macros for entire I2S_TCR5 register + */ +//@{ +#define HW_I2S_TCR5_ADDR(x) (REGS_I2S_BASE(x) + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_TCR5(x) (*(__IO hw_i2s_tcr5_t *) HW_I2S_TCR5_ADDR(x)) +#define HW_I2S_TCR5_RD(x) (HW_I2S_TCR5(x).U) +#define HW_I2S_TCR5_WR(x, v) (HW_I2S_TCR5(x).U = (v)) +#define HW_I2S_TCR5_SET(x, v) (HW_I2S_TCR5_WR(x, HW_I2S_TCR5_RD(x) | (v))) +#define HW_I2S_TCR5_CLR(x, v) (HW_I2S_TCR5_WR(x, HW_I2S_TCR5_RD(x) & ~(v))) +#define HW_I2S_TCR5_TOG(x, v) (HW_I2S_TCR5_WR(x, HW_I2S_TCR5_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_TCR5 bitfields + */ + +/*! + * @name Register I2S_TCR5, field FBT[12:8] (RW) + * + * Configures the bit index for the first bit transmitted for each word in the + * frame. If configured for MSB First, the index of the next bit transmitted is + * one less than the current bit transmitted. If configured for LSB First, the + * index of the next bit transmitted is one more than the current bit transmitted. + * The value written must be greater than or equal to the word width when + * configured for MSB First. The value written must be less than or equal to 31-word width + * when configured for LSB First. + */ +//@{ +#define BP_I2S_TCR5_FBT (8U) //!< Bit position for I2S_TCR5_FBT. +#define BM_I2S_TCR5_FBT (0x00001F00U) //!< Bit mask for I2S_TCR5_FBT. +#define BS_I2S_TCR5_FBT (5U) //!< Bit field size in bits for I2S_TCR5_FBT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR5_FBT field. +#define BR_I2S_TCR5_FBT(x) (HW_I2S_TCR5(x).B.FBT) +#endif + +//! @brief Format value for bitfield I2S_TCR5_FBT. +#define BF_I2S_TCR5_FBT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR5_FBT), uint32_t) & BM_I2S_TCR5_FBT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FBT field to a new value. +#define BW_I2S_TCR5_FBT(x, v) (HW_I2S_TCR5_WR(x, (HW_I2S_TCR5_RD(x) & ~BM_I2S_TCR5_FBT) | BF_I2S_TCR5_FBT(v))) +#endif +//@} + +/*! + * @name Register I2S_TCR5, field W0W[20:16] (RW) + * + * Configures the number of bits in the first word in each frame. The value + * written must be one less than the number of bits in the first word. Word width of + * less than 8 bits is not supported if there is only one word per frame. + */ +//@{ +#define BP_I2S_TCR5_W0W (16U) //!< Bit position for I2S_TCR5_W0W. +#define BM_I2S_TCR5_W0W (0x001F0000U) //!< Bit mask for I2S_TCR5_W0W. +#define BS_I2S_TCR5_W0W (5U) //!< Bit field size in bits for I2S_TCR5_W0W. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR5_W0W field. +#define BR_I2S_TCR5_W0W(x) (HW_I2S_TCR5(x).B.W0W) +#endif + +//! @brief Format value for bitfield I2S_TCR5_W0W. +#define BF_I2S_TCR5_W0W(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR5_W0W), uint32_t) & BM_I2S_TCR5_W0W) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the W0W field to a new value. +#define BW_I2S_TCR5_W0W(x, v) (HW_I2S_TCR5_WR(x, (HW_I2S_TCR5_RD(x) & ~BM_I2S_TCR5_W0W) | BF_I2S_TCR5_W0W(v))) +#endif +//@} + +/*! + * @name Register I2S_TCR5, field WNW[28:24] (RW) + * + * Configures the number of bits in each word, for each word except the first in + * the frame. The value written must be one less than the number of bits per + * word. Word width of less than 8 bits is not supported. + */ +//@{ +#define BP_I2S_TCR5_WNW (24U) //!< Bit position for I2S_TCR5_WNW. +#define BM_I2S_TCR5_WNW (0x1F000000U) //!< Bit mask for I2S_TCR5_WNW. +#define BS_I2S_TCR5_WNW (5U) //!< Bit field size in bits for I2S_TCR5_WNW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TCR5_WNW field. +#define BR_I2S_TCR5_WNW(x) (HW_I2S_TCR5(x).B.WNW) +#endif + +//! @brief Format value for bitfield I2S_TCR5_WNW. +#define BF_I2S_TCR5_WNW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TCR5_WNW), uint32_t) & BM_I2S_TCR5_WNW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WNW field to a new value. +#define BW_I2S_TCR5_WNW(x, v) (HW_I2S_TCR5_WR(x, (HW_I2S_TCR5_RD(x) & ~BM_I2S_TCR5_WNW) | BF_I2S_TCR5_WNW(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_TDRn - SAI Transmit Data Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_TDRn - SAI Transmit Data Register (WORZ) + * + * Reset value: 0x00000000U + */ +typedef union _hw_i2s_tdrn +{ + uint32_t U; + struct _hw_i2s_tdrn_bitfields + { + uint32_t TDR : 32; //!< [31:0] Transmit Data Register + } B; +} hw_i2s_tdrn_t; +#endif + +/*! + * @name Constants and macros for entire I2S_TDRn register + */ +//@{ +#define HW_I2S_TDRn_COUNT (2U) + +#define HW_I2S_TDRn_ADDR(x, n) (REGS_I2S_BASE(x) + 0x20U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_TDRn(x, n) (*(__O hw_i2s_tdrn_t *) HW_I2S_TDRn_ADDR(x, n)) +#define HW_I2S_TDRn_RD(x, n) (HW_I2S_TDRn(x, n).U) +#define HW_I2S_TDRn_WR(x, n, v) (HW_I2S_TDRn(x, n).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual I2S_TDRn bitfields + */ + +/*! + * @name Register I2S_TDRn, field TDR[31:0] (WORZ) + * + * The corresponding TCR3[TCE] bit must be set before accessing the channel's + * transmit data register. Writes to this register when the transmit FIFO is not + * full will push the data written into the transmit data FIFO. Writes to this + * register when the transmit FIFO is full are ignored. + */ +//@{ +#define BP_I2S_TDRn_TDR (0U) //!< Bit position for I2S_TDRn_TDR. +#define BM_I2S_TDRn_TDR (0xFFFFFFFFU) //!< Bit mask for I2S_TDRn_TDR. +#define BS_I2S_TDRn_TDR (32U) //!< Bit field size in bits for I2S_TDRn_TDR. + +//! @brief Format value for bitfield I2S_TDRn_TDR. +#define BF_I2S_TDRn_TDR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TDRn_TDR), uint32_t) & BM_I2S_TDRn_TDR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TDR field to a new value. +#define BW_I2S_TDRn_TDR(x, n, v) (HW_I2S_TDRn_WR(x, n, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_TFRn - SAI Transmit FIFO Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_TFRn - SAI Transmit FIFO Register (RO) + * + * Reset value: 0x00000000U + * + * The MSB of the read and write pointers is used to distinguish between FIFO + * full and empty conditions. If the read and write pointers are identical, then + * the FIFO is empty. If the read and write pointers are identical except for the + * MSB, then the FIFO is full. + */ +typedef union _hw_i2s_tfrn +{ + uint32_t U; + struct _hw_i2s_tfrn_bitfields + { + uint32_t RFP : 4; //!< [3:0] Read FIFO Pointer + uint32_t RESERVED0 : 12; //!< [15:4] + uint32_t WFP : 4; //!< [19:16] Write FIFO Pointer + uint32_t RESERVED1 : 12; //!< [31:20] + } B; +} hw_i2s_tfrn_t; +#endif + +/*! + * @name Constants and macros for entire I2S_TFRn register + */ +//@{ +#define HW_I2S_TFRn_COUNT (2U) + +#define HW_I2S_TFRn_ADDR(x, n) (REGS_I2S_BASE(x) + 0x40U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_TFRn(x, n) (*(__I hw_i2s_tfrn_t *) HW_I2S_TFRn_ADDR(x, n)) +#define HW_I2S_TFRn_RD(x, n) (HW_I2S_TFRn(x, n).U) +#endif +//@} + +/* + * Constants & macros for individual I2S_TFRn bitfields + */ + +/*! + * @name Register I2S_TFRn, field RFP[3:0] (RO) + * + * FIFO read pointer for transmit data channel. + */ +//@{ +#define BP_I2S_TFRn_RFP (0U) //!< Bit position for I2S_TFRn_RFP. +#define BM_I2S_TFRn_RFP (0x0000000FU) //!< Bit mask for I2S_TFRn_RFP. +#define BS_I2S_TFRn_RFP (4U) //!< Bit field size in bits for I2S_TFRn_RFP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TFRn_RFP field. +#define BR_I2S_TFRn_RFP(x, n) (HW_I2S_TFRn(x, n).B.RFP) +#endif +//@} + +/*! + * @name Register I2S_TFRn, field WFP[19:16] (RO) + * + * FIFO write pointer for transmit data channel. + */ +//@{ +#define BP_I2S_TFRn_WFP (16U) //!< Bit position for I2S_TFRn_WFP. +#define BM_I2S_TFRn_WFP (0x000F0000U) //!< Bit mask for I2S_TFRn_WFP. +#define BS_I2S_TFRn_WFP (4U) //!< Bit field size in bits for I2S_TFRn_WFP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TFRn_WFP field. +#define BR_I2S_TFRn_WFP(x, n) (HW_I2S_TFRn(x, n).B.WFP) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_TMR - SAI Transmit Mask Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_TMR - SAI Transmit Mask Register (RW) + * + * Reset value: 0x00000000U + * + * This register is double-buffered and updates: When TCSR[TE] is first set At + * the end of each frame. This allows the masked words in each frame to change + * from frame to frame. + */ +typedef union _hw_i2s_tmr +{ + uint32_t U; + struct _hw_i2s_tmr_bitfields + { + uint32_t TWM : 32; //!< [31:0] Transmit Word Mask + } B; +} hw_i2s_tmr_t; +#endif + +/*! + * @name Constants and macros for entire I2S_TMR register + */ +//@{ +#define HW_I2S_TMR_ADDR(x) (REGS_I2S_BASE(x) + 0x60U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_TMR(x) (*(__IO hw_i2s_tmr_t *) HW_I2S_TMR_ADDR(x)) +#define HW_I2S_TMR_RD(x) (HW_I2S_TMR(x).U) +#define HW_I2S_TMR_WR(x, v) (HW_I2S_TMR(x).U = (v)) +#define HW_I2S_TMR_SET(x, v) (HW_I2S_TMR_WR(x, HW_I2S_TMR_RD(x) | (v))) +#define HW_I2S_TMR_CLR(x, v) (HW_I2S_TMR_WR(x, HW_I2S_TMR_RD(x) & ~(v))) +#define HW_I2S_TMR_TOG(x, v) (HW_I2S_TMR_WR(x, HW_I2S_TMR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_TMR bitfields + */ + +/*! + * @name Register I2S_TMR, field TWM[31:0] (RW) + * + * Configures whether the transmit word is masked (transmit data pin tristated + * and transmit data not read from FIFO) for the corresponding word in the frame. + * + * Values: + * - 0 - Word N is enabled. + * - 1 - Word N is masked. The transmit data pins are tri-stated when masked. + */ +//@{ +#define BP_I2S_TMR_TWM (0U) //!< Bit position for I2S_TMR_TWM. +#define BM_I2S_TMR_TWM (0xFFFFFFFFU) //!< Bit mask for I2S_TMR_TWM. +#define BS_I2S_TMR_TWM (32U) //!< Bit field size in bits for I2S_TMR_TWM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_TMR_TWM field. +#define BR_I2S_TMR_TWM(x) (HW_I2S_TMR(x).U) +#endif + +//! @brief Format value for bitfield I2S_TMR_TWM. +#define BF_I2S_TMR_TWM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_TMR_TWM), uint32_t) & BM_I2S_TMR_TWM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TWM field to a new value. +#define BW_I2S_TMR_TWM(x, v) (HW_I2S_TMR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_RCSR - SAI Receive Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_RCSR - SAI Receive Control Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_i2s_rcsr +{ + uint32_t U; + struct _hw_i2s_rcsr_bitfields + { + uint32_t FRDE : 1; //!< [0] FIFO Request DMA Enable + uint32_t FWDE : 1; //!< [1] FIFO Warning DMA Enable + uint32_t RESERVED0 : 6; //!< [7:2] + uint32_t FRIE : 1; //!< [8] FIFO Request Interrupt Enable + uint32_t FWIE : 1; //!< [9] FIFO Warning Interrupt Enable + uint32_t FEIE : 1; //!< [10] FIFO Error Interrupt Enable + uint32_t SEIE : 1; //!< [11] Sync Error Interrupt Enable + uint32_t WSIE : 1; //!< [12] Word Start Interrupt Enable + uint32_t RESERVED1 : 3; //!< [15:13] + uint32_t FRF : 1; //!< [16] FIFO Request Flag + uint32_t FWF : 1; //!< [17] FIFO Warning Flag + uint32_t FEF : 1; //!< [18] FIFO Error Flag + uint32_t SEF : 1; //!< [19] Sync Error Flag + uint32_t WSF : 1; //!< [20] Word Start Flag + uint32_t RESERVED2 : 3; //!< [23:21] + uint32_t SR : 1; //!< [24] Software Reset + uint32_t FR : 1; //!< [25] FIFO Reset + uint32_t RESERVED3 : 2; //!< [27:26] + uint32_t BCE : 1; //!< [28] Bit Clock Enable + uint32_t DBGE : 1; //!< [29] Debug Enable + uint32_t STOPE : 1; //!< [30] Stop Enable + uint32_t RE : 1; //!< [31] Receiver Enable + } B; +} hw_i2s_rcsr_t; +#endif + +/*! + * @name Constants and macros for entire I2S_RCSR register + */ +//@{ +#define HW_I2S_RCSR_ADDR(x) (REGS_I2S_BASE(x) + 0x80U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_RCSR(x) (*(__IO hw_i2s_rcsr_t *) HW_I2S_RCSR_ADDR(x)) +#define HW_I2S_RCSR_RD(x) (HW_I2S_RCSR(x).U) +#define HW_I2S_RCSR_WR(x, v) (HW_I2S_RCSR(x).U = (v)) +#define HW_I2S_RCSR_SET(x, v) (HW_I2S_RCSR_WR(x, HW_I2S_RCSR_RD(x) | (v))) +#define HW_I2S_RCSR_CLR(x, v) (HW_I2S_RCSR_WR(x, HW_I2S_RCSR_RD(x) & ~(v))) +#define HW_I2S_RCSR_TOG(x, v) (HW_I2S_RCSR_WR(x, HW_I2S_RCSR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_RCSR bitfields + */ + +/*! + * @name Register I2S_RCSR, field FRDE[0] (RW) + * + * Enables/disables DMA requests. + * + * Values: + * - 0 - Disables the DMA request. + * - 1 - Enables the DMA request. + */ +//@{ +#define BP_I2S_RCSR_FRDE (0U) //!< Bit position for I2S_RCSR_FRDE. +#define BM_I2S_RCSR_FRDE (0x00000001U) //!< Bit mask for I2S_RCSR_FRDE. +#define BS_I2S_RCSR_FRDE (1U) //!< Bit field size in bits for I2S_RCSR_FRDE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_FRDE field. +#define BR_I2S_RCSR_FRDE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FRDE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_FRDE. +#define BF_I2S_RCSR_FRDE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_FRDE), uint32_t) & BM_I2S_RCSR_FRDE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRDE field to a new value. +#define BW_I2S_RCSR_FRDE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FRDE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field FWDE[1] (RW) + * + * Enables/disables DMA requests. + * + * Values: + * - 0 - Disables the DMA request. + * - 1 - Enables the DMA request. + */ +//@{ +#define BP_I2S_RCSR_FWDE (1U) //!< Bit position for I2S_RCSR_FWDE. +#define BM_I2S_RCSR_FWDE (0x00000002U) //!< Bit mask for I2S_RCSR_FWDE. +#define BS_I2S_RCSR_FWDE (1U) //!< Bit field size in bits for I2S_RCSR_FWDE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_FWDE field. +#define BR_I2S_RCSR_FWDE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FWDE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_FWDE. +#define BF_I2S_RCSR_FWDE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_FWDE), uint32_t) & BM_I2S_RCSR_FWDE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FWDE field to a new value. +#define BW_I2S_RCSR_FWDE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FWDE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field FRIE[8] (RW) + * + * Enables/disables FIFO request interrupts. + * + * Values: + * - 0 - Disables the interrupt. + * - 1 - Enables the interrupt. + */ +//@{ +#define BP_I2S_RCSR_FRIE (8U) //!< Bit position for I2S_RCSR_FRIE. +#define BM_I2S_RCSR_FRIE (0x00000100U) //!< Bit mask for I2S_RCSR_FRIE. +#define BS_I2S_RCSR_FRIE (1U) //!< Bit field size in bits for I2S_RCSR_FRIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_FRIE field. +#define BR_I2S_RCSR_FRIE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FRIE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_FRIE. +#define BF_I2S_RCSR_FRIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_FRIE), uint32_t) & BM_I2S_RCSR_FRIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRIE field to a new value. +#define BW_I2S_RCSR_FRIE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FRIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field FWIE[9] (RW) + * + * Enables/disables FIFO warning interrupts. + * + * Values: + * - 0 - Disables the interrupt. + * - 1 - Enables the interrupt. + */ +//@{ +#define BP_I2S_RCSR_FWIE (9U) //!< Bit position for I2S_RCSR_FWIE. +#define BM_I2S_RCSR_FWIE (0x00000200U) //!< Bit mask for I2S_RCSR_FWIE. +#define BS_I2S_RCSR_FWIE (1U) //!< Bit field size in bits for I2S_RCSR_FWIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_FWIE field. +#define BR_I2S_RCSR_FWIE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FWIE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_FWIE. +#define BF_I2S_RCSR_FWIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_FWIE), uint32_t) & BM_I2S_RCSR_FWIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FWIE field to a new value. +#define BW_I2S_RCSR_FWIE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FWIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field FEIE[10] (RW) + * + * Enables/disables FIFO error interrupts. + * + * Values: + * - 0 - Disables the interrupt. + * - 1 - Enables the interrupt. + */ +//@{ +#define BP_I2S_RCSR_FEIE (10U) //!< Bit position for I2S_RCSR_FEIE. +#define BM_I2S_RCSR_FEIE (0x00000400U) //!< Bit mask for I2S_RCSR_FEIE. +#define BS_I2S_RCSR_FEIE (1U) //!< Bit field size in bits for I2S_RCSR_FEIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_FEIE field. +#define BR_I2S_RCSR_FEIE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FEIE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_FEIE. +#define BF_I2S_RCSR_FEIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_FEIE), uint32_t) & BM_I2S_RCSR_FEIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FEIE field to a new value. +#define BW_I2S_RCSR_FEIE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FEIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field SEIE[11] (RW) + * + * Enables/disables sync error interrupts. + * + * Values: + * - 0 - Disables interrupt. + * - 1 - Enables interrupt. + */ +//@{ +#define BP_I2S_RCSR_SEIE (11U) //!< Bit position for I2S_RCSR_SEIE. +#define BM_I2S_RCSR_SEIE (0x00000800U) //!< Bit mask for I2S_RCSR_SEIE. +#define BS_I2S_RCSR_SEIE (1U) //!< Bit field size in bits for I2S_RCSR_SEIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_SEIE field. +#define BR_I2S_RCSR_SEIE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_SEIE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_SEIE. +#define BF_I2S_RCSR_SEIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_SEIE), uint32_t) & BM_I2S_RCSR_SEIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SEIE field to a new value. +#define BW_I2S_RCSR_SEIE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_SEIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field WSIE[12] (RW) + * + * Enables/disables word start interrupts. + * + * Values: + * - 0 - Disables interrupt. + * - 1 - Enables interrupt. + */ +//@{ +#define BP_I2S_RCSR_WSIE (12U) //!< Bit position for I2S_RCSR_WSIE. +#define BM_I2S_RCSR_WSIE (0x00001000U) //!< Bit mask for I2S_RCSR_WSIE. +#define BS_I2S_RCSR_WSIE (1U) //!< Bit field size in bits for I2S_RCSR_WSIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_WSIE field. +#define BR_I2S_RCSR_WSIE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_WSIE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_WSIE. +#define BF_I2S_RCSR_WSIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_WSIE), uint32_t) & BM_I2S_RCSR_WSIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WSIE field to a new value. +#define BW_I2S_RCSR_WSIE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_WSIE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field FRF[16] (RO) + * + * Indicates that the number of words in an enabled receive channel FIFO is + * greater than the receive FIFO watermark. + * + * Values: + * - 0 - Receive FIFO watermark not reached. + * - 1 - Receive FIFO watermark has been reached. + */ +//@{ +#define BP_I2S_RCSR_FRF (16U) //!< Bit position for I2S_RCSR_FRF. +#define BM_I2S_RCSR_FRF (0x00010000U) //!< Bit mask for I2S_RCSR_FRF. +#define BS_I2S_RCSR_FRF (1U) //!< Bit field size in bits for I2S_RCSR_FRF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_FRF field. +#define BR_I2S_RCSR_FRF(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FRF)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field FWF[17] (RO) + * + * Indicates that an enabled receive FIFO is full. + * + * Values: + * - 0 - No enabled receive FIFO is full. + * - 1 - Enabled receive FIFO is full. + */ +//@{ +#define BP_I2S_RCSR_FWF (17U) //!< Bit position for I2S_RCSR_FWF. +#define BM_I2S_RCSR_FWF (0x00020000U) //!< Bit mask for I2S_RCSR_FWF. +#define BS_I2S_RCSR_FWF (1U) //!< Bit field size in bits for I2S_RCSR_FWF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_FWF field. +#define BR_I2S_RCSR_FWF(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FWF)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field FEF[18] (W1C) + * + * Indicates that an enabled receive FIFO has overflowed. Write a logic 1 to + * this field to clear this flag. + * + * Values: + * - 0 - Receive overflow not detected. + * - 1 - Receive overflow detected. + */ +//@{ +#define BP_I2S_RCSR_FEF (18U) //!< Bit position for I2S_RCSR_FEF. +#define BM_I2S_RCSR_FEF (0x00040000U) //!< Bit mask for I2S_RCSR_FEF. +#define BS_I2S_RCSR_FEF (1U) //!< Bit field size in bits for I2S_RCSR_FEF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_FEF field. +#define BR_I2S_RCSR_FEF(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FEF)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_FEF. +#define BF_I2S_RCSR_FEF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_FEF), uint32_t) & BM_I2S_RCSR_FEF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FEF field to a new value. +#define BW_I2S_RCSR_FEF(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FEF) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field SEF[19] (W1C) + * + * Indicates that an error in the externally-generated frame sync has been + * detected. Write a logic 1 to this field to clear this flag. + * + * Values: + * - 0 - Sync error not detected. + * - 1 - Frame sync error detected. + */ +//@{ +#define BP_I2S_RCSR_SEF (19U) //!< Bit position for I2S_RCSR_SEF. +#define BM_I2S_RCSR_SEF (0x00080000U) //!< Bit mask for I2S_RCSR_SEF. +#define BS_I2S_RCSR_SEF (1U) //!< Bit field size in bits for I2S_RCSR_SEF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_SEF field. +#define BR_I2S_RCSR_SEF(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_SEF)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_SEF. +#define BF_I2S_RCSR_SEF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_SEF), uint32_t) & BM_I2S_RCSR_SEF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SEF field to a new value. +#define BW_I2S_RCSR_SEF(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_SEF) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field WSF[20] (W1C) + * + * Indicates that the start of the configured word has been detected. Write a + * logic 1 to this field to clear this flag. + * + * Values: + * - 0 - Start of word not detected. + * - 1 - Start of word detected. + */ +//@{ +#define BP_I2S_RCSR_WSF (20U) //!< Bit position for I2S_RCSR_WSF. +#define BM_I2S_RCSR_WSF (0x00100000U) //!< Bit mask for I2S_RCSR_WSF. +#define BS_I2S_RCSR_WSF (1U) //!< Bit field size in bits for I2S_RCSR_WSF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_WSF field. +#define BR_I2S_RCSR_WSF(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_WSF)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_WSF. +#define BF_I2S_RCSR_WSF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_WSF), uint32_t) & BM_I2S_RCSR_WSF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WSF field to a new value. +#define BW_I2S_RCSR_WSF(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_WSF) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field SR[24] (RW) + * + * Resets the internal receiver logic including the FIFO pointers. + * Software-visible registers are not affected, except for the status registers. + * + * Values: + * - 0 - No effect. + * - 1 - Software reset. + */ +//@{ +#define BP_I2S_RCSR_SR (24U) //!< Bit position for I2S_RCSR_SR. +#define BM_I2S_RCSR_SR (0x01000000U) //!< Bit mask for I2S_RCSR_SR. +#define BS_I2S_RCSR_SR (1U) //!< Bit field size in bits for I2S_RCSR_SR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_SR field. +#define BR_I2S_RCSR_SR(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_SR)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_SR. +#define BF_I2S_RCSR_SR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_SR), uint32_t) & BM_I2S_RCSR_SR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SR field to a new value. +#define BW_I2S_RCSR_SR(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_SR) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field FR[25] (WORZ) + * + * Resets the FIFO pointers. Reading this field will always return zero. FIFO + * pointers should only be reset when the receiver is disabled or the FIFO error + * flag is set. + * + * Values: + * - 0 - No effect. + * - 1 - FIFO reset. + */ +//@{ +#define BP_I2S_RCSR_FR (25U) //!< Bit position for I2S_RCSR_FR. +#define BM_I2S_RCSR_FR (0x02000000U) //!< Bit mask for I2S_RCSR_FR. +#define BS_I2S_RCSR_FR (1U) //!< Bit field size in bits for I2S_RCSR_FR. + +//! @brief Format value for bitfield I2S_RCSR_FR. +#define BF_I2S_RCSR_FR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_FR), uint32_t) & BM_I2S_RCSR_FR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FR field to a new value. +#define BW_I2S_RCSR_FR(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_FR) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field BCE[28] (RW) + * + * Enables the receive bit clock, separately from RE. This field is + * automatically set whenever RE is set. When software clears this field, the receive bit + * clock remains enabled, and this field remains set, until the end of the current + * frame. + * + * Values: + * - 0 - Receive bit clock is disabled. + * - 1 - Receive bit clock is enabled. + */ +//@{ +#define BP_I2S_RCSR_BCE (28U) //!< Bit position for I2S_RCSR_BCE. +#define BM_I2S_RCSR_BCE (0x10000000U) //!< Bit mask for I2S_RCSR_BCE. +#define BS_I2S_RCSR_BCE (1U) //!< Bit field size in bits for I2S_RCSR_BCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_BCE field. +#define BR_I2S_RCSR_BCE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_BCE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_BCE. +#define BF_I2S_RCSR_BCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_BCE), uint32_t) & BM_I2S_RCSR_BCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCE field to a new value. +#define BW_I2S_RCSR_BCE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_BCE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field DBGE[29] (RW) + * + * Enables/disables receiver operation in Debug mode. The receive bit clock is + * not affected by Debug mode. + * + * Values: + * - 0 - Receiver is disabled in Debug mode, after completing the current frame. + * - 1 - Receiver is enabled in Debug mode. + */ +//@{ +#define BP_I2S_RCSR_DBGE (29U) //!< Bit position for I2S_RCSR_DBGE. +#define BM_I2S_RCSR_DBGE (0x20000000U) //!< Bit mask for I2S_RCSR_DBGE. +#define BS_I2S_RCSR_DBGE (1U) //!< Bit field size in bits for I2S_RCSR_DBGE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_DBGE field. +#define BR_I2S_RCSR_DBGE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_DBGE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_DBGE. +#define BF_I2S_RCSR_DBGE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_DBGE), uint32_t) & BM_I2S_RCSR_DBGE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DBGE field to a new value. +#define BW_I2S_RCSR_DBGE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_DBGE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field STOPE[30] (RW) + * + * Configures receiver operation in Stop mode. This bit is ignored and the + * receiver is disabled in all low-leakage stop modes. + * + * Values: + * - 0 - Receiver disabled in Stop mode. + * - 1 - Receiver enabled in Stop mode. + */ +//@{ +#define BP_I2S_RCSR_STOPE (30U) //!< Bit position for I2S_RCSR_STOPE. +#define BM_I2S_RCSR_STOPE (0x40000000U) //!< Bit mask for I2S_RCSR_STOPE. +#define BS_I2S_RCSR_STOPE (1U) //!< Bit field size in bits for I2S_RCSR_STOPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_STOPE field. +#define BR_I2S_RCSR_STOPE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_STOPE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_STOPE. +#define BF_I2S_RCSR_STOPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_STOPE), uint32_t) & BM_I2S_RCSR_STOPE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STOPE field to a new value. +#define BW_I2S_RCSR_STOPE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_STOPE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCSR, field RE[31] (RW) + * + * Enables/disables the receiver. When software clears this field, the receiver + * remains enabled, and this bit remains set, until the end of the current frame. + * + * Values: + * - 0 - Receiver is disabled. + * - 1 - Receiver is enabled, or receiver has been disabled and has not yet + * reached end of frame. + */ +//@{ +#define BP_I2S_RCSR_RE (31U) //!< Bit position for I2S_RCSR_RE. +#define BM_I2S_RCSR_RE (0x80000000U) //!< Bit mask for I2S_RCSR_RE. +#define BS_I2S_RCSR_RE (1U) //!< Bit field size in bits for I2S_RCSR_RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCSR_RE field. +#define BR_I2S_RCSR_RE(x) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_RE)) +#endif + +//! @brief Format value for bitfield I2S_RCSR_RE. +#define BF_I2S_RCSR_RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCSR_RE), uint32_t) & BM_I2S_RCSR_RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RE field to a new value. +#define BW_I2S_RCSR_RE(x, v) (BITBAND_ACCESS32(HW_I2S_RCSR_ADDR(x), BP_I2S_RCSR_RE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_RCR1 - SAI Receive Configuration 1 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_RCR1 - SAI Receive Configuration 1 Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_i2s_rcr1 +{ + uint32_t U; + struct _hw_i2s_rcr1_bitfields + { + uint32_t RFW : 3; //!< [2:0] Receive FIFO Watermark + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_i2s_rcr1_t; +#endif + +/*! + * @name Constants and macros for entire I2S_RCR1 register + */ +//@{ +#define HW_I2S_RCR1_ADDR(x) (REGS_I2S_BASE(x) + 0x84U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_RCR1(x) (*(__IO hw_i2s_rcr1_t *) HW_I2S_RCR1_ADDR(x)) +#define HW_I2S_RCR1_RD(x) (HW_I2S_RCR1(x).U) +#define HW_I2S_RCR1_WR(x, v) (HW_I2S_RCR1(x).U = (v)) +#define HW_I2S_RCR1_SET(x, v) (HW_I2S_RCR1_WR(x, HW_I2S_RCR1_RD(x) | (v))) +#define HW_I2S_RCR1_CLR(x, v) (HW_I2S_RCR1_WR(x, HW_I2S_RCR1_RD(x) & ~(v))) +#define HW_I2S_RCR1_TOG(x, v) (HW_I2S_RCR1_WR(x, HW_I2S_RCR1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_RCR1 bitfields + */ + +/*! + * @name Register I2S_RCR1, field RFW[2:0] (RW) + * + * Configures the watermark level for all enabled receiver channels. + */ +//@{ +#define BP_I2S_RCR1_RFW (0U) //!< Bit position for I2S_RCR1_RFW. +#define BM_I2S_RCR1_RFW (0x00000007U) //!< Bit mask for I2S_RCR1_RFW. +#define BS_I2S_RCR1_RFW (3U) //!< Bit field size in bits for I2S_RCR1_RFW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR1_RFW field. +#define BR_I2S_RCR1_RFW(x) (HW_I2S_RCR1(x).B.RFW) +#endif + +//! @brief Format value for bitfield I2S_RCR1_RFW. +#define BF_I2S_RCR1_RFW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR1_RFW), uint32_t) & BM_I2S_RCR1_RFW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RFW field to a new value. +#define BW_I2S_RCR1_RFW(x, v) (HW_I2S_RCR1_WR(x, (HW_I2S_RCR1_RD(x) & ~BM_I2S_RCR1_RFW) | BF_I2S_RCR1_RFW(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_RCR2 - SAI Receive Configuration 2 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_RCR2 - SAI Receive Configuration 2 Register (RW) + * + * Reset value: 0x00000000U + * + * This register must not be altered when RCSR[RE] is set. + */ +typedef union _hw_i2s_rcr2 +{ + uint32_t U; + struct _hw_i2s_rcr2_bitfields + { + uint32_t DIV : 8; //!< [7:0] Bit Clock Divide + uint32_t RESERVED0 : 16; //!< [23:8] + uint32_t BCD : 1; //!< [24] Bit Clock Direction + uint32_t BCP : 1; //!< [25] Bit Clock Polarity + uint32_t MSEL : 2; //!< [27:26] MCLK Select + uint32_t BCI : 1; //!< [28] Bit Clock Input + uint32_t BCS : 1; //!< [29] Bit Clock Swap + uint32_t SYNC : 2; //!< [31:30] Synchronous Mode + } B; +} hw_i2s_rcr2_t; +#endif + +/*! + * @name Constants and macros for entire I2S_RCR2 register + */ +//@{ +#define HW_I2S_RCR2_ADDR(x) (REGS_I2S_BASE(x) + 0x88U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_RCR2(x) (*(__IO hw_i2s_rcr2_t *) HW_I2S_RCR2_ADDR(x)) +#define HW_I2S_RCR2_RD(x) (HW_I2S_RCR2(x).U) +#define HW_I2S_RCR2_WR(x, v) (HW_I2S_RCR2(x).U = (v)) +#define HW_I2S_RCR2_SET(x, v) (HW_I2S_RCR2_WR(x, HW_I2S_RCR2_RD(x) | (v))) +#define HW_I2S_RCR2_CLR(x, v) (HW_I2S_RCR2_WR(x, HW_I2S_RCR2_RD(x) & ~(v))) +#define HW_I2S_RCR2_TOG(x, v) (HW_I2S_RCR2_WR(x, HW_I2S_RCR2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_RCR2 bitfields + */ + +/*! + * @name Register I2S_RCR2, field DIV[7:0] (RW) + * + * Divides down the audio master clock to generate the bit clock when configured + * for an internal bit clock. The division value is (DIV + 1) * 2. + */ +//@{ +#define BP_I2S_RCR2_DIV (0U) //!< Bit position for I2S_RCR2_DIV. +#define BM_I2S_RCR2_DIV (0x000000FFU) //!< Bit mask for I2S_RCR2_DIV. +#define BS_I2S_RCR2_DIV (8U) //!< Bit field size in bits for I2S_RCR2_DIV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR2_DIV field. +#define BR_I2S_RCR2_DIV(x) (HW_I2S_RCR2(x).B.DIV) +#endif + +//! @brief Format value for bitfield I2S_RCR2_DIV. +#define BF_I2S_RCR2_DIV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR2_DIV), uint32_t) & BM_I2S_RCR2_DIV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DIV field to a new value. +#define BW_I2S_RCR2_DIV(x, v) (HW_I2S_RCR2_WR(x, (HW_I2S_RCR2_RD(x) & ~BM_I2S_RCR2_DIV) | BF_I2S_RCR2_DIV(v))) +#endif +//@} + +/*! + * @name Register I2S_RCR2, field BCD[24] (RW) + * + * Configures the direction of the bit clock. + * + * Values: + * - 0 - Bit clock is generated externally in Slave mode. + * - 1 - Bit clock is generated internally in Master mode. + */ +//@{ +#define BP_I2S_RCR2_BCD (24U) //!< Bit position for I2S_RCR2_BCD. +#define BM_I2S_RCR2_BCD (0x01000000U) //!< Bit mask for I2S_RCR2_BCD. +#define BS_I2S_RCR2_BCD (1U) //!< Bit field size in bits for I2S_RCR2_BCD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR2_BCD field. +#define BR_I2S_RCR2_BCD(x) (BITBAND_ACCESS32(HW_I2S_RCR2_ADDR(x), BP_I2S_RCR2_BCD)) +#endif + +//! @brief Format value for bitfield I2S_RCR2_BCD. +#define BF_I2S_RCR2_BCD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR2_BCD), uint32_t) & BM_I2S_RCR2_BCD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCD field to a new value. +#define BW_I2S_RCR2_BCD(x, v) (BITBAND_ACCESS32(HW_I2S_RCR2_ADDR(x), BP_I2S_RCR2_BCD) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCR2, field BCP[25] (RW) + * + * Configures the polarity of the bit clock. + * + * Values: + * - 0 - Bit Clock is active high with drive outputs on rising edge and sample + * inputs on falling edge. + * - 1 - Bit Clock is active low with drive outputs on falling edge and sample + * inputs on rising edge. + */ +//@{ +#define BP_I2S_RCR2_BCP (25U) //!< Bit position for I2S_RCR2_BCP. +#define BM_I2S_RCR2_BCP (0x02000000U) //!< Bit mask for I2S_RCR2_BCP. +#define BS_I2S_RCR2_BCP (1U) //!< Bit field size in bits for I2S_RCR2_BCP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR2_BCP field. +#define BR_I2S_RCR2_BCP(x) (BITBAND_ACCESS32(HW_I2S_RCR2_ADDR(x), BP_I2S_RCR2_BCP)) +#endif + +//! @brief Format value for bitfield I2S_RCR2_BCP. +#define BF_I2S_RCR2_BCP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR2_BCP), uint32_t) & BM_I2S_RCR2_BCP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCP field to a new value. +#define BW_I2S_RCR2_BCP(x, v) (BITBAND_ACCESS32(HW_I2S_RCR2_ADDR(x), BP_I2S_RCR2_BCP) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCR2, field MSEL[27:26] (RW) + * + * Selects the audio Master Clock option used to generate an internally + * generated bit clock. This field has no effect when configured for an externally + * generated bit clock. Depending on the device, some Master Clock options might not be + * available. See the chip configuration details for the availability and + * chip-specific meaning of each option. + * + * Values: + * - 00 - Bus Clock selected. + * - 01 - Master Clock (MCLK) 1 option selected. + * - 10 - Master Clock (MCLK) 2 option selected. + * - 11 - Master Clock (MCLK) 3 option selected. + */ +//@{ +#define BP_I2S_RCR2_MSEL (26U) //!< Bit position for I2S_RCR2_MSEL. +#define BM_I2S_RCR2_MSEL (0x0C000000U) //!< Bit mask for I2S_RCR2_MSEL. +#define BS_I2S_RCR2_MSEL (2U) //!< Bit field size in bits for I2S_RCR2_MSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR2_MSEL field. +#define BR_I2S_RCR2_MSEL(x) (HW_I2S_RCR2(x).B.MSEL) +#endif + +//! @brief Format value for bitfield I2S_RCR2_MSEL. +#define BF_I2S_RCR2_MSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR2_MSEL), uint32_t) & BM_I2S_RCR2_MSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MSEL field to a new value. +#define BW_I2S_RCR2_MSEL(x, v) (HW_I2S_RCR2_WR(x, (HW_I2S_RCR2_RD(x) & ~BM_I2S_RCR2_MSEL) | BF_I2S_RCR2_MSEL(v))) +#endif +//@} + +/*! + * @name Register I2S_RCR2, field BCI[28] (RW) + * + * When this field is set and using an internally generated bit clock in either + * synchronous or asynchronous mode, the bit clock actually used by the receiver + * is delayed by the pad output delay (the receiver is clocked by the pad input + * as if the clock was externally generated). This has the effect of decreasing + * the data input setup time, but increasing the data output valid time. The slave + * mode timing from the datasheet should be used for the receiver when this bit + * is set. In synchronous mode, this bit allows the receiver to use the slave mode + * timing from the datasheet, while the transmitter uses the master mode timing. + * This field has no effect when configured for an externally generated bit + * clock or when synchronous to another SAI peripheral . + * + * Values: + * - 0 - No effect. + * - 1 - Internal logic is clocked as if bit clock was externally generated. + */ +//@{ +#define BP_I2S_RCR2_BCI (28U) //!< Bit position for I2S_RCR2_BCI. +#define BM_I2S_RCR2_BCI (0x10000000U) //!< Bit mask for I2S_RCR2_BCI. +#define BS_I2S_RCR2_BCI (1U) //!< Bit field size in bits for I2S_RCR2_BCI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR2_BCI field. +#define BR_I2S_RCR2_BCI(x) (BITBAND_ACCESS32(HW_I2S_RCR2_ADDR(x), BP_I2S_RCR2_BCI)) +#endif + +//! @brief Format value for bitfield I2S_RCR2_BCI. +#define BF_I2S_RCR2_BCI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR2_BCI), uint32_t) & BM_I2S_RCR2_BCI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCI field to a new value. +#define BW_I2S_RCR2_BCI(x, v) (BITBAND_ACCESS32(HW_I2S_RCR2_ADDR(x), BP_I2S_RCR2_BCI) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCR2, field BCS[29] (RW) + * + * This field swaps the bit clock used by the receiver. When the receiver is + * configured in asynchronous mode and this bit is set, the receiver is clocked by + * the transmitter bit clock (SAI_TX_BCLK). This allows the transmitter and + * receiver to share the same bit clock, but the receiver continues to use the receiver + * frame sync (SAI_RX_SYNC). When the receiver is configured in synchronous + * mode, the transmitter BCS field and receiver BCS field must be set to the same + * value. When both are set, the transmitter and receiver are both clocked by the + * receiver bit clock (SAI_RX_BCLK) but use the transmitter frame sync + * (SAI_TX_SYNC). This field has no effect when synchronous to another SAI peripheral. + * + * Values: + * - 0 - Use the normal bit clock source. + * - 1 - Swap the bit clock source. + */ +//@{ +#define BP_I2S_RCR2_BCS (29U) //!< Bit position for I2S_RCR2_BCS. +#define BM_I2S_RCR2_BCS (0x20000000U) //!< Bit mask for I2S_RCR2_BCS. +#define BS_I2S_RCR2_BCS (1U) //!< Bit field size in bits for I2S_RCR2_BCS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR2_BCS field. +#define BR_I2S_RCR2_BCS(x) (BITBAND_ACCESS32(HW_I2S_RCR2_ADDR(x), BP_I2S_RCR2_BCS)) +#endif + +//! @brief Format value for bitfield I2S_RCR2_BCS. +#define BF_I2S_RCR2_BCS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR2_BCS), uint32_t) & BM_I2S_RCR2_BCS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCS field to a new value. +#define BW_I2S_RCR2_BCS(x, v) (BITBAND_ACCESS32(HW_I2S_RCR2_ADDR(x), BP_I2S_RCR2_BCS) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCR2, field SYNC[31:30] (RW) + * + * Configures between asynchronous and synchronous modes of operation. When + * configured for a synchronous mode of operation, the transmitter or other SAI + * peripheral must be configured for asynchronous operation. + * + * Values: + * - 00 - Asynchronous mode. + * - 01 - Synchronous with transmitter. + * - 10 - Synchronous with another SAI receiver. + * - 11 - Synchronous with another SAI transmitter. + */ +//@{ +#define BP_I2S_RCR2_SYNC (30U) //!< Bit position for I2S_RCR2_SYNC. +#define BM_I2S_RCR2_SYNC (0xC0000000U) //!< Bit mask for I2S_RCR2_SYNC. +#define BS_I2S_RCR2_SYNC (2U) //!< Bit field size in bits for I2S_RCR2_SYNC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR2_SYNC field. +#define BR_I2S_RCR2_SYNC(x) (HW_I2S_RCR2(x).B.SYNC) +#endif + +//! @brief Format value for bitfield I2S_RCR2_SYNC. +#define BF_I2S_RCR2_SYNC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR2_SYNC), uint32_t) & BM_I2S_RCR2_SYNC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYNC field to a new value. +#define BW_I2S_RCR2_SYNC(x, v) (HW_I2S_RCR2_WR(x, (HW_I2S_RCR2_RD(x) & ~BM_I2S_RCR2_SYNC) | BF_I2S_RCR2_SYNC(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_RCR3 - SAI Receive Configuration 3 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_RCR3 - SAI Receive Configuration 3 Register (RW) + * + * Reset value: 0x00000000U + * + * This register must not be altered when RCSR[RE] is set. + */ +typedef union _hw_i2s_rcr3 +{ + uint32_t U; + struct _hw_i2s_rcr3_bitfields + { + uint32_t WDFL : 5; //!< [4:0] Word Flag Configuration + uint32_t RESERVED0 : 11; //!< [15:5] + uint32_t RCE : 2; //!< [17:16] Receive Channel Enable + uint32_t RESERVED1 : 14; //!< [31:18] + } B; +} hw_i2s_rcr3_t; +#endif + +/*! + * @name Constants and macros for entire I2S_RCR3 register + */ +//@{ +#define HW_I2S_RCR3_ADDR(x) (REGS_I2S_BASE(x) + 0x8CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_RCR3(x) (*(__IO hw_i2s_rcr3_t *) HW_I2S_RCR3_ADDR(x)) +#define HW_I2S_RCR3_RD(x) (HW_I2S_RCR3(x).U) +#define HW_I2S_RCR3_WR(x, v) (HW_I2S_RCR3(x).U = (v)) +#define HW_I2S_RCR3_SET(x, v) (HW_I2S_RCR3_WR(x, HW_I2S_RCR3_RD(x) | (v))) +#define HW_I2S_RCR3_CLR(x, v) (HW_I2S_RCR3_WR(x, HW_I2S_RCR3_RD(x) & ~(v))) +#define HW_I2S_RCR3_TOG(x, v) (HW_I2S_RCR3_WR(x, HW_I2S_RCR3_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_RCR3 bitfields + */ + +/*! + * @name Register I2S_RCR3, field WDFL[4:0] (RW) + * + * Configures which word the start of word flag is set. The value written should + * be one less than the word number (for example, write zero to configure for + * the first word in the frame). When configured to a value greater than the Frame + * Size field, then the start of word flag is never set. + */ +//@{ +#define BP_I2S_RCR3_WDFL (0U) //!< Bit position for I2S_RCR3_WDFL. +#define BM_I2S_RCR3_WDFL (0x0000001FU) //!< Bit mask for I2S_RCR3_WDFL. +#define BS_I2S_RCR3_WDFL (5U) //!< Bit field size in bits for I2S_RCR3_WDFL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR3_WDFL field. +#define BR_I2S_RCR3_WDFL(x) (HW_I2S_RCR3(x).B.WDFL) +#endif + +//! @brief Format value for bitfield I2S_RCR3_WDFL. +#define BF_I2S_RCR3_WDFL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR3_WDFL), uint32_t) & BM_I2S_RCR3_WDFL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WDFL field to a new value. +#define BW_I2S_RCR3_WDFL(x, v) (HW_I2S_RCR3_WR(x, (HW_I2S_RCR3_RD(x) & ~BM_I2S_RCR3_WDFL) | BF_I2S_RCR3_WDFL(v))) +#endif +//@} + +/*! + * @name Register I2S_RCR3, field RCE[17:16] (RW) + * + * Enables the corresponding data channel for receive operation. A channel must + * be enabled before its FIFO is accessed. + * + * Values: + * - 0 - Receive data channel N is disabled. + * - 1 - Receive data channel N is enabled. + */ +//@{ +#define BP_I2S_RCR3_RCE (16U) //!< Bit position for I2S_RCR3_RCE. +#define BM_I2S_RCR3_RCE (0x00030000U) //!< Bit mask for I2S_RCR3_RCE. +#define BS_I2S_RCR3_RCE (2U) //!< Bit field size in bits for I2S_RCR3_RCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR3_RCE field. +#define BR_I2S_RCR3_RCE(x) (HW_I2S_RCR3(x).B.RCE) +#endif + +//! @brief Format value for bitfield I2S_RCR3_RCE. +#define BF_I2S_RCR3_RCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR3_RCE), uint32_t) & BM_I2S_RCR3_RCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RCE field to a new value. +#define BW_I2S_RCR3_RCE(x, v) (HW_I2S_RCR3_WR(x, (HW_I2S_RCR3_RD(x) & ~BM_I2S_RCR3_RCE) | BF_I2S_RCR3_RCE(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_RCR4 - SAI Receive Configuration 4 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_RCR4 - SAI Receive Configuration 4 Register (RW) + * + * Reset value: 0x00000000U + * + * This register must not be altered when RCSR[RE] is set. + */ +typedef union _hw_i2s_rcr4 +{ + uint32_t U; + struct _hw_i2s_rcr4_bitfields + { + uint32_t FSD : 1; //!< [0] Frame Sync Direction + uint32_t FSP : 1; //!< [1] Frame Sync Polarity + uint32_t RESERVED0 : 1; //!< [2] + uint32_t FSE : 1; //!< [3] Frame Sync Early + uint32_t MF : 1; //!< [4] MSB First + uint32_t RESERVED1 : 3; //!< [7:5] + uint32_t SYWD : 5; //!< [12:8] Sync Width + uint32_t RESERVED2 : 3; //!< [15:13] + uint32_t FRSZ : 5; //!< [20:16] Frame Size + uint32_t RESERVED3 : 11; //!< [31:21] + } B; +} hw_i2s_rcr4_t; +#endif + +/*! + * @name Constants and macros for entire I2S_RCR4 register + */ +//@{ +#define HW_I2S_RCR4_ADDR(x) (REGS_I2S_BASE(x) + 0x90U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_RCR4(x) (*(__IO hw_i2s_rcr4_t *) HW_I2S_RCR4_ADDR(x)) +#define HW_I2S_RCR4_RD(x) (HW_I2S_RCR4(x).U) +#define HW_I2S_RCR4_WR(x, v) (HW_I2S_RCR4(x).U = (v)) +#define HW_I2S_RCR4_SET(x, v) (HW_I2S_RCR4_WR(x, HW_I2S_RCR4_RD(x) | (v))) +#define HW_I2S_RCR4_CLR(x, v) (HW_I2S_RCR4_WR(x, HW_I2S_RCR4_RD(x) & ~(v))) +#define HW_I2S_RCR4_TOG(x, v) (HW_I2S_RCR4_WR(x, HW_I2S_RCR4_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_RCR4 bitfields + */ + +/*! + * @name Register I2S_RCR4, field FSD[0] (RW) + * + * Configures the direction of the frame sync. + * + * Values: + * - 0 - Frame Sync is generated externally in Slave mode. + * - 1 - Frame Sync is generated internally in Master mode. + */ +//@{ +#define BP_I2S_RCR4_FSD (0U) //!< Bit position for I2S_RCR4_FSD. +#define BM_I2S_RCR4_FSD (0x00000001U) //!< Bit mask for I2S_RCR4_FSD. +#define BS_I2S_RCR4_FSD (1U) //!< Bit field size in bits for I2S_RCR4_FSD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR4_FSD field. +#define BR_I2S_RCR4_FSD(x) (BITBAND_ACCESS32(HW_I2S_RCR4_ADDR(x), BP_I2S_RCR4_FSD)) +#endif + +//! @brief Format value for bitfield I2S_RCR4_FSD. +#define BF_I2S_RCR4_FSD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR4_FSD), uint32_t) & BM_I2S_RCR4_FSD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FSD field to a new value. +#define BW_I2S_RCR4_FSD(x, v) (BITBAND_ACCESS32(HW_I2S_RCR4_ADDR(x), BP_I2S_RCR4_FSD) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCR4, field FSP[1] (RW) + * + * Configures the polarity of the frame sync. + * + * Values: + * - 0 - Frame sync is active high. + * - 1 - Frame sync is active low. + */ +//@{ +#define BP_I2S_RCR4_FSP (1U) //!< Bit position for I2S_RCR4_FSP. +#define BM_I2S_RCR4_FSP (0x00000002U) //!< Bit mask for I2S_RCR4_FSP. +#define BS_I2S_RCR4_FSP (1U) //!< Bit field size in bits for I2S_RCR4_FSP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR4_FSP field. +#define BR_I2S_RCR4_FSP(x) (BITBAND_ACCESS32(HW_I2S_RCR4_ADDR(x), BP_I2S_RCR4_FSP)) +#endif + +//! @brief Format value for bitfield I2S_RCR4_FSP. +#define BF_I2S_RCR4_FSP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR4_FSP), uint32_t) & BM_I2S_RCR4_FSP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FSP field to a new value. +#define BW_I2S_RCR4_FSP(x, v) (BITBAND_ACCESS32(HW_I2S_RCR4_ADDR(x), BP_I2S_RCR4_FSP) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCR4, field FSE[3] (RW) + * + * Values: + * - 0 - Frame sync asserts with the first bit of the frame. + * - 1 - Frame sync asserts one bit before the first bit of the frame. + */ +//@{ +#define BP_I2S_RCR4_FSE (3U) //!< Bit position for I2S_RCR4_FSE. +#define BM_I2S_RCR4_FSE (0x00000008U) //!< Bit mask for I2S_RCR4_FSE. +#define BS_I2S_RCR4_FSE (1U) //!< Bit field size in bits for I2S_RCR4_FSE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR4_FSE field. +#define BR_I2S_RCR4_FSE(x) (BITBAND_ACCESS32(HW_I2S_RCR4_ADDR(x), BP_I2S_RCR4_FSE)) +#endif + +//! @brief Format value for bitfield I2S_RCR4_FSE. +#define BF_I2S_RCR4_FSE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR4_FSE), uint32_t) & BM_I2S_RCR4_FSE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FSE field to a new value. +#define BW_I2S_RCR4_FSE(x, v) (BITBAND_ACCESS32(HW_I2S_RCR4_ADDR(x), BP_I2S_RCR4_FSE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCR4, field MF[4] (RW) + * + * Configures whether the LSB or the MSB is received first. + * + * Values: + * - 0 - LSB is received first. + * - 1 - MSB is received first. + */ +//@{ +#define BP_I2S_RCR4_MF (4U) //!< Bit position for I2S_RCR4_MF. +#define BM_I2S_RCR4_MF (0x00000010U) //!< Bit mask for I2S_RCR4_MF. +#define BS_I2S_RCR4_MF (1U) //!< Bit field size in bits for I2S_RCR4_MF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR4_MF field. +#define BR_I2S_RCR4_MF(x) (BITBAND_ACCESS32(HW_I2S_RCR4_ADDR(x), BP_I2S_RCR4_MF)) +#endif + +//! @brief Format value for bitfield I2S_RCR4_MF. +#define BF_I2S_RCR4_MF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR4_MF), uint32_t) & BM_I2S_RCR4_MF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MF field to a new value. +#define BW_I2S_RCR4_MF(x, v) (BITBAND_ACCESS32(HW_I2S_RCR4_ADDR(x), BP_I2S_RCR4_MF) = (v)) +#endif +//@} + +/*! + * @name Register I2S_RCR4, field SYWD[12:8] (RW) + * + * Configures the length of the frame sync in number of bit clocks. The value + * written must be one less than the number of bit clocks. For example, write 0 for + * the frame sync to assert for one bit clock only. The sync width cannot be + * configured longer than the first word of the frame. + */ +//@{ +#define BP_I2S_RCR4_SYWD (8U) //!< Bit position for I2S_RCR4_SYWD. +#define BM_I2S_RCR4_SYWD (0x00001F00U) //!< Bit mask for I2S_RCR4_SYWD. +#define BS_I2S_RCR4_SYWD (5U) //!< Bit field size in bits for I2S_RCR4_SYWD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR4_SYWD field. +#define BR_I2S_RCR4_SYWD(x) (HW_I2S_RCR4(x).B.SYWD) +#endif + +//! @brief Format value for bitfield I2S_RCR4_SYWD. +#define BF_I2S_RCR4_SYWD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR4_SYWD), uint32_t) & BM_I2S_RCR4_SYWD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SYWD field to a new value. +#define BW_I2S_RCR4_SYWD(x, v) (HW_I2S_RCR4_WR(x, (HW_I2S_RCR4_RD(x) & ~BM_I2S_RCR4_SYWD) | BF_I2S_RCR4_SYWD(v))) +#endif +//@} + +/*! + * @name Register I2S_RCR4, field FRSZ[20:16] (RW) + * + * Configures the number of words in each frame. The value written must be one + * less than the number of words in the frame. For example, write 0 for one word + * per frame. The maximum supported frame size is 32 words. + */ +//@{ +#define BP_I2S_RCR4_FRSZ (16U) //!< Bit position for I2S_RCR4_FRSZ. +#define BM_I2S_RCR4_FRSZ (0x001F0000U) //!< Bit mask for I2S_RCR4_FRSZ. +#define BS_I2S_RCR4_FRSZ (5U) //!< Bit field size in bits for I2S_RCR4_FRSZ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR4_FRSZ field. +#define BR_I2S_RCR4_FRSZ(x) (HW_I2S_RCR4(x).B.FRSZ) +#endif + +//! @brief Format value for bitfield I2S_RCR4_FRSZ. +#define BF_I2S_RCR4_FRSZ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR4_FRSZ), uint32_t) & BM_I2S_RCR4_FRSZ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRSZ field to a new value. +#define BW_I2S_RCR4_FRSZ(x, v) (HW_I2S_RCR4_WR(x, (HW_I2S_RCR4_RD(x) & ~BM_I2S_RCR4_FRSZ) | BF_I2S_RCR4_FRSZ(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_RCR5 - SAI Receive Configuration 5 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_RCR5 - SAI Receive Configuration 5 Register (RW) + * + * Reset value: 0x00000000U + * + * This register must not be altered when RCSR[RE] is set. + */ +typedef union _hw_i2s_rcr5 +{ + uint32_t U; + struct _hw_i2s_rcr5_bitfields + { + uint32_t RESERVED0 : 8; //!< [7:0] + uint32_t FBT : 5; //!< [12:8] First Bit Shifted + uint32_t RESERVED1 : 3; //!< [15:13] + uint32_t W0W : 5; //!< [20:16] Word 0 Width + uint32_t RESERVED2 : 3; //!< [23:21] + uint32_t WNW : 5; //!< [28:24] Word N Width + uint32_t RESERVED3 : 3; //!< [31:29] + } B; +} hw_i2s_rcr5_t; +#endif + +/*! + * @name Constants and macros for entire I2S_RCR5 register + */ +//@{ +#define HW_I2S_RCR5_ADDR(x) (REGS_I2S_BASE(x) + 0x94U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_RCR5(x) (*(__IO hw_i2s_rcr5_t *) HW_I2S_RCR5_ADDR(x)) +#define HW_I2S_RCR5_RD(x) (HW_I2S_RCR5(x).U) +#define HW_I2S_RCR5_WR(x, v) (HW_I2S_RCR5(x).U = (v)) +#define HW_I2S_RCR5_SET(x, v) (HW_I2S_RCR5_WR(x, HW_I2S_RCR5_RD(x) | (v))) +#define HW_I2S_RCR5_CLR(x, v) (HW_I2S_RCR5_WR(x, HW_I2S_RCR5_RD(x) & ~(v))) +#define HW_I2S_RCR5_TOG(x, v) (HW_I2S_RCR5_WR(x, HW_I2S_RCR5_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_RCR5 bitfields + */ + +/*! + * @name Register I2S_RCR5, field FBT[12:8] (RW) + * + * Configures the bit index for the first bit received for each word in the + * frame. If configured for MSB First, the index of the next bit received is one less + * than the current bit received. If configured for LSB First, the index of the + * next bit received is one more than the current bit received. The value written + * must be greater than or equal to the word width when configured for MSB + * First. The value written must be less than or equal to 31-word width when + * configured for LSB First. + */ +//@{ +#define BP_I2S_RCR5_FBT (8U) //!< Bit position for I2S_RCR5_FBT. +#define BM_I2S_RCR5_FBT (0x00001F00U) //!< Bit mask for I2S_RCR5_FBT. +#define BS_I2S_RCR5_FBT (5U) //!< Bit field size in bits for I2S_RCR5_FBT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR5_FBT field. +#define BR_I2S_RCR5_FBT(x) (HW_I2S_RCR5(x).B.FBT) +#endif + +//! @brief Format value for bitfield I2S_RCR5_FBT. +#define BF_I2S_RCR5_FBT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR5_FBT), uint32_t) & BM_I2S_RCR5_FBT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FBT field to a new value. +#define BW_I2S_RCR5_FBT(x, v) (HW_I2S_RCR5_WR(x, (HW_I2S_RCR5_RD(x) & ~BM_I2S_RCR5_FBT) | BF_I2S_RCR5_FBT(v))) +#endif +//@} + +/*! + * @name Register I2S_RCR5, field W0W[20:16] (RW) + * + * Configures the number of bits in the first word in each frame. The value + * written must be one less than the number of bits in the first word. Word width of + * less than 8 bits is not supported if there is only one word per frame. + */ +//@{ +#define BP_I2S_RCR5_W0W (16U) //!< Bit position for I2S_RCR5_W0W. +#define BM_I2S_RCR5_W0W (0x001F0000U) //!< Bit mask for I2S_RCR5_W0W. +#define BS_I2S_RCR5_W0W (5U) //!< Bit field size in bits for I2S_RCR5_W0W. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR5_W0W field. +#define BR_I2S_RCR5_W0W(x) (HW_I2S_RCR5(x).B.W0W) +#endif + +//! @brief Format value for bitfield I2S_RCR5_W0W. +#define BF_I2S_RCR5_W0W(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR5_W0W), uint32_t) & BM_I2S_RCR5_W0W) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the W0W field to a new value. +#define BW_I2S_RCR5_W0W(x, v) (HW_I2S_RCR5_WR(x, (HW_I2S_RCR5_RD(x) & ~BM_I2S_RCR5_W0W) | BF_I2S_RCR5_W0W(v))) +#endif +//@} + +/*! + * @name Register I2S_RCR5, field WNW[28:24] (RW) + * + * Configures the number of bits in each word, for each word except the first in + * the frame. The value written must be one less than the number of bits per + * word. Word width of less than 8 bits is not supported. + */ +//@{ +#define BP_I2S_RCR5_WNW (24U) //!< Bit position for I2S_RCR5_WNW. +#define BM_I2S_RCR5_WNW (0x1F000000U) //!< Bit mask for I2S_RCR5_WNW. +#define BS_I2S_RCR5_WNW (5U) //!< Bit field size in bits for I2S_RCR5_WNW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RCR5_WNW field. +#define BR_I2S_RCR5_WNW(x) (HW_I2S_RCR5(x).B.WNW) +#endif + +//! @brief Format value for bitfield I2S_RCR5_WNW. +#define BF_I2S_RCR5_WNW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RCR5_WNW), uint32_t) & BM_I2S_RCR5_WNW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WNW field to a new value. +#define BW_I2S_RCR5_WNW(x, v) (HW_I2S_RCR5_WR(x, (HW_I2S_RCR5_RD(x) & ~BM_I2S_RCR5_WNW) | BF_I2S_RCR5_WNW(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_RDRn - SAI Receive Data Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_RDRn - SAI Receive Data Register (RO) + * + * Reset value: 0x00000000U + * + * Reading this register introduces one additional peripheral clock wait state + * on each read. + */ +typedef union _hw_i2s_rdrn +{ + uint32_t U; + struct _hw_i2s_rdrn_bitfields + { + uint32_t RDR : 32; //!< [31:0] Receive Data Register + } B; +} hw_i2s_rdrn_t; +#endif + +/*! + * @name Constants and macros for entire I2S_RDRn register + */ +//@{ +#define HW_I2S_RDRn_COUNT (2U) + +#define HW_I2S_RDRn_ADDR(x, n) (REGS_I2S_BASE(x) + 0xA0U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_RDRn(x, n) (*(__I hw_i2s_rdrn_t *) HW_I2S_RDRn_ADDR(x, n)) +#define HW_I2S_RDRn_RD(x, n) (HW_I2S_RDRn(x, n).U) +#endif +//@} + +/* + * Constants & macros for individual I2S_RDRn bitfields + */ + +/*! + * @name Register I2S_RDRn, field RDR[31:0] (RO) + * + * The corresponding RCR3[RCE] bit must be set before accessing the channel's + * receive data register. Reads from this register when the receive FIFO is not + * empty will return the data from the top of the receive FIFO. Reads from this + * register when the receive FIFO is empty are ignored. + */ +//@{ +#define BP_I2S_RDRn_RDR (0U) //!< Bit position for I2S_RDRn_RDR. +#define BM_I2S_RDRn_RDR (0xFFFFFFFFU) //!< Bit mask for I2S_RDRn_RDR. +#define BS_I2S_RDRn_RDR (32U) //!< Bit field size in bits for I2S_RDRn_RDR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RDRn_RDR field. +#define BR_I2S_RDRn_RDR(x, n) (HW_I2S_RDRn(x, n).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_RFRn - SAI Receive FIFO Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_RFRn - SAI Receive FIFO Register (RO) + * + * Reset value: 0x00000000U + * + * The MSB of the read and write pointers is used to distinguish between FIFO + * full and empty conditions. If the read and write pointers are identical, then + * the FIFO is empty. If the read and write pointers are identical except for the + * MSB, then the FIFO is full. + */ +typedef union _hw_i2s_rfrn +{ + uint32_t U; + struct _hw_i2s_rfrn_bitfields + { + uint32_t RFP : 4; //!< [3:0] Read FIFO Pointer + uint32_t RESERVED0 : 12; //!< [15:4] + uint32_t WFP : 4; //!< [19:16] Write FIFO Pointer + uint32_t RESERVED1 : 12; //!< [31:20] + } B; +} hw_i2s_rfrn_t; +#endif + +/*! + * @name Constants and macros for entire I2S_RFRn register + */ +//@{ +#define HW_I2S_RFRn_COUNT (2U) + +#define HW_I2S_RFRn_ADDR(x, n) (REGS_I2S_BASE(x) + 0xC0U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_RFRn(x, n) (*(__I hw_i2s_rfrn_t *) HW_I2S_RFRn_ADDR(x, n)) +#define HW_I2S_RFRn_RD(x, n) (HW_I2S_RFRn(x, n).U) +#endif +//@} + +/* + * Constants & macros for individual I2S_RFRn bitfields + */ + +/*! + * @name Register I2S_RFRn, field RFP[3:0] (RO) + * + * FIFO read pointer for receive data channel. + */ +//@{ +#define BP_I2S_RFRn_RFP (0U) //!< Bit position for I2S_RFRn_RFP. +#define BM_I2S_RFRn_RFP (0x0000000FU) //!< Bit mask for I2S_RFRn_RFP. +#define BS_I2S_RFRn_RFP (4U) //!< Bit field size in bits for I2S_RFRn_RFP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RFRn_RFP field. +#define BR_I2S_RFRn_RFP(x, n) (HW_I2S_RFRn(x, n).B.RFP) +#endif +//@} + +/*! + * @name Register I2S_RFRn, field WFP[19:16] (RO) + * + * FIFO write pointer for receive data channel. + */ +//@{ +#define BP_I2S_RFRn_WFP (16U) //!< Bit position for I2S_RFRn_WFP. +#define BM_I2S_RFRn_WFP (0x000F0000U) //!< Bit mask for I2S_RFRn_WFP. +#define BS_I2S_RFRn_WFP (4U) //!< Bit field size in bits for I2S_RFRn_WFP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RFRn_WFP field. +#define BR_I2S_RFRn_WFP(x, n) (HW_I2S_RFRn(x, n).B.WFP) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_RMR - SAI Receive Mask Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_RMR - SAI Receive Mask Register (RW) + * + * Reset value: 0x00000000U + * + * This register is double-buffered and updates: When RCSR[RE] is first set At + * the end of each frame This allows the masked words in each frame to change from + * frame to frame. + */ +typedef union _hw_i2s_rmr +{ + uint32_t U; + struct _hw_i2s_rmr_bitfields + { + uint32_t RWM : 32; //!< [31:0] Receive Word Mask + } B; +} hw_i2s_rmr_t; +#endif + +/*! + * @name Constants and macros for entire I2S_RMR register + */ +//@{ +#define HW_I2S_RMR_ADDR(x) (REGS_I2S_BASE(x) + 0xE0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_RMR(x) (*(__IO hw_i2s_rmr_t *) HW_I2S_RMR_ADDR(x)) +#define HW_I2S_RMR_RD(x) (HW_I2S_RMR(x).U) +#define HW_I2S_RMR_WR(x, v) (HW_I2S_RMR(x).U = (v)) +#define HW_I2S_RMR_SET(x, v) (HW_I2S_RMR_WR(x, HW_I2S_RMR_RD(x) | (v))) +#define HW_I2S_RMR_CLR(x, v) (HW_I2S_RMR_WR(x, HW_I2S_RMR_RD(x) & ~(v))) +#define HW_I2S_RMR_TOG(x, v) (HW_I2S_RMR_WR(x, HW_I2S_RMR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_RMR bitfields + */ + +/*! + * @name Register I2S_RMR, field RWM[31:0] (RW) + * + * Configures whether the receive word is masked (received data ignored and not + * written to receive FIFO) for the corresponding word in the frame. + * + * Values: + * - 0 - Word N is enabled. + * - 1 - Word N is masked. + */ +//@{ +#define BP_I2S_RMR_RWM (0U) //!< Bit position for I2S_RMR_RWM. +#define BM_I2S_RMR_RWM (0xFFFFFFFFU) //!< Bit mask for I2S_RMR_RWM. +#define BS_I2S_RMR_RWM (32U) //!< Bit field size in bits for I2S_RMR_RWM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_RMR_RWM field. +#define BR_I2S_RMR_RWM(x) (HW_I2S_RMR(x).U) +#endif + +//! @brief Format value for bitfield I2S_RMR_RWM. +#define BF_I2S_RMR_RWM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_RMR_RWM), uint32_t) & BM_I2S_RMR_RWM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RWM field to a new value. +#define BW_I2S_RMR_RWM(x, v) (HW_I2S_RMR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_MCR - SAI MCLK Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_MCR - SAI MCLK Control Register (RW) + * + * Reset value: 0x00000000U + * + * The MCLK Control Register (MCR) controls the clock source and direction of + * the audio master clock. + */ +typedef union _hw_i2s_mcr +{ + uint32_t U; + struct _hw_i2s_mcr_bitfields + { + uint32_t RESERVED0 : 24; //!< [23:0] + uint32_t MICS : 2; //!< [25:24] MCLK Input Clock Select + uint32_t RESERVED1 : 4; //!< [29:26] + uint32_t MOE : 1; //!< [30] MCLK Output Enable + uint32_t DUF : 1; //!< [31] Divider Update Flag + } B; +} hw_i2s_mcr_t; +#endif + +/*! + * @name Constants and macros for entire I2S_MCR register + */ +//@{ +#define HW_I2S_MCR_ADDR(x) (REGS_I2S_BASE(x) + 0x100U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_MCR(x) (*(__IO hw_i2s_mcr_t *) HW_I2S_MCR_ADDR(x)) +#define HW_I2S_MCR_RD(x) (HW_I2S_MCR(x).U) +#define HW_I2S_MCR_WR(x, v) (HW_I2S_MCR(x).U = (v)) +#define HW_I2S_MCR_SET(x, v) (HW_I2S_MCR_WR(x, HW_I2S_MCR_RD(x) | (v))) +#define HW_I2S_MCR_CLR(x, v) (HW_I2S_MCR_WR(x, HW_I2S_MCR_RD(x) & ~(v))) +#define HW_I2S_MCR_TOG(x, v) (HW_I2S_MCR_WR(x, HW_I2S_MCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_MCR bitfields + */ + +/*! + * @name Register I2S_MCR, field MICS[25:24] (RW) + * + * Selects the clock input to the MCLK divider. This field cannot be changed + * while the MCLK divider is enabled. See the chip configuration details for + * information about the connections to these inputs. + * + * Values: + * - 00 - MCLK divider input clock 0 selected. + * - 01 - MCLK divider input clock 1 selected. + * - 10 - MCLK divider input clock 2 selected. + * - 11 - MCLK divider input clock 3 selected. + */ +//@{ +#define BP_I2S_MCR_MICS (24U) //!< Bit position for I2S_MCR_MICS. +#define BM_I2S_MCR_MICS (0x03000000U) //!< Bit mask for I2S_MCR_MICS. +#define BS_I2S_MCR_MICS (2U) //!< Bit field size in bits for I2S_MCR_MICS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_MCR_MICS field. +#define BR_I2S_MCR_MICS(x) (HW_I2S_MCR(x).B.MICS) +#endif + +//! @brief Format value for bitfield I2S_MCR_MICS. +#define BF_I2S_MCR_MICS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_MCR_MICS), uint32_t) & BM_I2S_MCR_MICS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MICS field to a new value. +#define BW_I2S_MCR_MICS(x, v) (HW_I2S_MCR_WR(x, (HW_I2S_MCR_RD(x) & ~BM_I2S_MCR_MICS) | BF_I2S_MCR_MICS(v))) +#endif +//@} + +/*! + * @name Register I2S_MCR, field MOE[30] (RW) + * + * Enables the MCLK divider and configures the MCLK signal pin as an output. + * When software clears this field, it remains set until the MCLK divider is fully + * disabled. + * + * Values: + * - 0 - MCLK signal pin is configured as an input that bypasses the MCLK + * divider. + * - 1 - MCLK signal pin is configured as an output from the MCLK divider and + * the MCLK divider is enabled. + */ +//@{ +#define BP_I2S_MCR_MOE (30U) //!< Bit position for I2S_MCR_MOE. +#define BM_I2S_MCR_MOE (0x40000000U) //!< Bit mask for I2S_MCR_MOE. +#define BS_I2S_MCR_MOE (1U) //!< Bit field size in bits for I2S_MCR_MOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_MCR_MOE field. +#define BR_I2S_MCR_MOE(x) (BITBAND_ACCESS32(HW_I2S_MCR_ADDR(x), BP_I2S_MCR_MOE)) +#endif + +//! @brief Format value for bitfield I2S_MCR_MOE. +#define BF_I2S_MCR_MOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_MCR_MOE), uint32_t) & BM_I2S_MCR_MOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MOE field to a new value. +#define BW_I2S_MCR_MOE(x, v) (BITBAND_ACCESS32(HW_I2S_MCR_ADDR(x), BP_I2S_MCR_MOE) = (v)) +#endif +//@} + +/*! + * @name Register I2S_MCR, field DUF[31] (RO) + * + * Provides the status of on-the-fly updates to the MCLK divider ratio. + * + * Values: + * - 0 - MCLK divider ratio is not being updated currently. + * - 1 - MCLK divider ratio is updating on-the-fly. Further updates to the MCLK + * divider ratio are blocked while this flag remains set. + */ +//@{ +#define BP_I2S_MCR_DUF (31U) //!< Bit position for I2S_MCR_DUF. +#define BM_I2S_MCR_DUF (0x80000000U) //!< Bit mask for I2S_MCR_DUF. +#define BS_I2S_MCR_DUF (1U) //!< Bit field size in bits for I2S_MCR_DUF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_MCR_DUF field. +#define BR_I2S_MCR_DUF(x) (BITBAND_ACCESS32(HW_I2S_MCR_ADDR(x), BP_I2S_MCR_DUF)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_I2S_MDR - SAI MCLK Divide Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_I2S_MDR - SAI MCLK Divide Register (RW) + * + * Reset value: 0x00000000U + * + * The MCLK Divide Register (MDR) configures the MCLK divide ratio. Although the + * MDR can be changed when the MCLK divider clock is enabled, additional writes + * to the MDR are blocked while MCR[DUF] is set. Writes to the MDR when the MCLK + * divided clock is disabled do not set MCR[DUF]. + */ +typedef union _hw_i2s_mdr +{ + uint32_t U; + struct _hw_i2s_mdr_bitfields + { + uint32_t DIVIDE : 12; //!< [11:0] MCLK Divide + uint32_t FRACT : 8; //!< [19:12] MCLK Fraction + uint32_t RESERVED0 : 12; //!< [31:20] + } B; +} hw_i2s_mdr_t; +#endif + +/*! + * @name Constants and macros for entire I2S_MDR register + */ +//@{ +#define HW_I2S_MDR_ADDR(x) (REGS_I2S_BASE(x) + 0x104U) + +#ifndef __LANGUAGE_ASM__ +#define HW_I2S_MDR(x) (*(__IO hw_i2s_mdr_t *) HW_I2S_MDR_ADDR(x)) +#define HW_I2S_MDR_RD(x) (HW_I2S_MDR(x).U) +#define HW_I2S_MDR_WR(x, v) (HW_I2S_MDR(x).U = (v)) +#define HW_I2S_MDR_SET(x, v) (HW_I2S_MDR_WR(x, HW_I2S_MDR_RD(x) | (v))) +#define HW_I2S_MDR_CLR(x, v) (HW_I2S_MDR_WR(x, HW_I2S_MDR_RD(x) & ~(v))) +#define HW_I2S_MDR_TOG(x, v) (HW_I2S_MDR_WR(x, HW_I2S_MDR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual I2S_MDR bitfields + */ + +/*! + * @name Register I2S_MDR, field DIVIDE[11:0] (RW) + * + * Sets the MCLK divide ratio such that: MCLK output = MCLK input * ( (FRACT + + * 1) / (DIVIDE + 1) ). FRACT must be set equal or less than the value in the + * DIVIDE field. + */ +//@{ +#define BP_I2S_MDR_DIVIDE (0U) //!< Bit position for I2S_MDR_DIVIDE. +#define BM_I2S_MDR_DIVIDE (0x00000FFFU) //!< Bit mask for I2S_MDR_DIVIDE. +#define BS_I2S_MDR_DIVIDE (12U) //!< Bit field size in bits for I2S_MDR_DIVIDE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_MDR_DIVIDE field. +#define BR_I2S_MDR_DIVIDE(x) (HW_I2S_MDR(x).B.DIVIDE) +#endif + +//! @brief Format value for bitfield I2S_MDR_DIVIDE. +#define BF_I2S_MDR_DIVIDE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_MDR_DIVIDE), uint32_t) & BM_I2S_MDR_DIVIDE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DIVIDE field to a new value. +#define BW_I2S_MDR_DIVIDE(x, v) (HW_I2S_MDR_WR(x, (HW_I2S_MDR_RD(x) & ~BM_I2S_MDR_DIVIDE) | BF_I2S_MDR_DIVIDE(v))) +#endif +//@} + +/*! + * @name Register I2S_MDR, field FRACT[19:12] (RW) + * + * Sets the MCLK divide ratio such that: MCLK output = MCLK input * ( (FRACT + + * 1) / (DIVIDE + 1) ). FRACT must be set equal or less than the value in the + * DIVIDE field. + */ +//@{ +#define BP_I2S_MDR_FRACT (12U) //!< Bit position for I2S_MDR_FRACT. +#define BM_I2S_MDR_FRACT (0x000FF000U) //!< Bit mask for I2S_MDR_FRACT. +#define BS_I2S_MDR_FRACT (8U) //!< Bit field size in bits for I2S_MDR_FRACT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the I2S_MDR_FRACT field. +#define BR_I2S_MDR_FRACT(x) (HW_I2S_MDR(x).B.FRACT) +#endif + +//! @brief Format value for bitfield I2S_MDR_FRACT. +#define BF_I2S_MDR_FRACT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_I2S_MDR_FRACT), uint32_t) & BM_I2S_MDR_FRACT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRACT field to a new value. +#define BW_I2S_MDR_FRACT(x, v) (HW_I2S_MDR_WR(x, (HW_I2S_MDR_RD(x) & ~BM_I2S_MDR_FRACT) | BF_I2S_MDR_FRACT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_i2s_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All I2S module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_i2s +{ + __IO hw_i2s_tcsr_t TCSR; //!< [0x0] SAI Transmit Control Register + __IO hw_i2s_tcr1_t TCR1; //!< [0x4] SAI Transmit Configuration 1 Register + __IO hw_i2s_tcr2_t TCR2; //!< [0x8] SAI Transmit Configuration 2 Register + __IO hw_i2s_tcr3_t TCR3; //!< [0xC] SAI Transmit Configuration 3 Register + __IO hw_i2s_tcr4_t TCR4; //!< [0x10] SAI Transmit Configuration 4 Register + __IO hw_i2s_tcr5_t TCR5; //!< [0x14] SAI Transmit Configuration 5 Register + uint8_t _reserved0[8]; + __O hw_i2s_tdrn_t TDRn[2]; //!< [0x20] SAI Transmit Data Register + uint8_t _reserved1[24]; + __I hw_i2s_tfrn_t TFRn[2]; //!< [0x40] SAI Transmit FIFO Register + uint8_t _reserved2[24]; + __IO hw_i2s_tmr_t TMR; //!< [0x60] SAI Transmit Mask Register + uint8_t _reserved3[28]; + __IO hw_i2s_rcsr_t RCSR; //!< [0x80] SAI Receive Control Register + __IO hw_i2s_rcr1_t RCR1; //!< [0x84] SAI Receive Configuration 1 Register + __IO hw_i2s_rcr2_t RCR2; //!< [0x88] SAI Receive Configuration 2 Register + __IO hw_i2s_rcr3_t RCR3; //!< [0x8C] SAI Receive Configuration 3 Register + __IO hw_i2s_rcr4_t RCR4; //!< [0x90] SAI Receive Configuration 4 Register + __IO hw_i2s_rcr5_t RCR5; //!< [0x94] SAI Receive Configuration 5 Register + uint8_t _reserved4[8]; + __I hw_i2s_rdrn_t RDRn[2]; //!< [0xA0] SAI Receive Data Register + uint8_t _reserved5[24]; + __I hw_i2s_rfrn_t RFRn[2]; //!< [0xC0] SAI Receive FIFO Register + uint8_t _reserved6[24]; + __IO hw_i2s_rmr_t RMR; //!< [0xE0] SAI Receive Mask Register + uint8_t _reserved7[28]; + __IO hw_i2s_mcr_t MCR; //!< [0x100] SAI MCLK Control Register + __IO hw_i2s_mdr_t MDR; //!< [0x104] SAI MCLK Divide Register +} hw_i2s_t; +#pragma pack() + +//! @brief Macro to access all I2S registers. +//! @param x I2S instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_I2S(0)</code>. +#define HW_I2S(x) (*(hw_i2s_t *) REGS_I2S_BASE(x)) +#endif + +#endif // __HW_I2S_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_llwu.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,2252 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_LLWU_REGISTERS_H__ +#define __HW_LLWU_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 LLWU + * + * Low leakage wakeup unit + * + * Registers defined in this header file: + * - HW_LLWU_PE1 - LLWU Pin Enable 1 register + * - HW_LLWU_PE2 - LLWU Pin Enable 2 register + * - HW_LLWU_PE3 - LLWU Pin Enable 3 register + * - HW_LLWU_PE4 - LLWU Pin Enable 4 register + * - HW_LLWU_ME - LLWU Module Enable register + * - HW_LLWU_F1 - LLWU Flag 1 register + * - HW_LLWU_F2 - LLWU Flag 2 register + * - HW_LLWU_F3 - LLWU Flag 3 register + * - HW_LLWU_FILT1 - LLWU Pin Filter 1 register + * - HW_LLWU_FILT2 - LLWU Pin Filter 2 register + * - HW_LLWU_RST - LLWU Reset Enable register + * + * - hw_llwu_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_LLWU_BASE +#define HW_LLWU_INSTANCE_COUNT (1U) //!< Number of instances of the LLWU module. +#define REGS_LLWU_BASE (0x4007C000U) //!< Base address for LLWU. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_PE1 - LLWU Pin Enable 1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_PE1 - LLWU Pin Enable 1 register (RW) + * + * Reset value: 0x00U + * + * LLWU_PE1 contains the field to enable and select the edge detect type for the + * external wakeup input pins LLWU_P3-LLWU_P0. This register is reset on Chip + * Reset not VLLS and by reset types that trigger Chip Reset not VLLS. It is + * unaffected by reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control Module + * (RCM). The RCM implements many of the reset functions for the chip. See the + * chip's reset chapter for more information. details for more information. + */ +typedef union _hw_llwu_pe1 +{ + uint8_t U; + struct _hw_llwu_pe1_bitfields + { + uint8_t WUPE0 : 2; //!< [1:0] Wakeup Pin Enable For LLWU_P0 + uint8_t WUPE1 : 2; //!< [3:2] Wakeup Pin Enable For LLWU_P1 + uint8_t WUPE2 : 2; //!< [5:4] Wakeup Pin Enable For LLWU_P2 + uint8_t WUPE3 : 2; //!< [7:6] Wakeup Pin Enable For LLWU_P3 + } B; +} hw_llwu_pe1_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_PE1 register + */ +//@{ +#define HW_LLWU_PE1_ADDR (REGS_LLWU_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_PE1 (*(__IO hw_llwu_pe1_t *) HW_LLWU_PE1_ADDR) +#define HW_LLWU_PE1_RD() (HW_LLWU_PE1.U) +#define HW_LLWU_PE1_WR(v) (HW_LLWU_PE1.U = (v)) +#define HW_LLWU_PE1_SET(v) (HW_LLWU_PE1_WR(HW_LLWU_PE1_RD() | (v))) +#define HW_LLWU_PE1_CLR(v) (HW_LLWU_PE1_WR(HW_LLWU_PE1_RD() & ~(v))) +#define HW_LLWU_PE1_TOG(v) (HW_LLWU_PE1_WR(HW_LLWU_PE1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_PE1 bitfields + */ + +/*! + * @name Register LLWU_PE1, field WUPE0[1:0] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE1_WUPE0 (0U) //!< Bit position for LLWU_PE1_WUPE0. +#define BM_LLWU_PE1_WUPE0 (0x03U) //!< Bit mask for LLWU_PE1_WUPE0. +#define BS_LLWU_PE1_WUPE0 (2U) //!< Bit field size in bits for LLWU_PE1_WUPE0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE1_WUPE0 field. +#define BR_LLWU_PE1_WUPE0 (HW_LLWU_PE1.B.WUPE0) +#endif + +//! @brief Format value for bitfield LLWU_PE1_WUPE0. +#define BF_LLWU_PE1_WUPE0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE1_WUPE0), uint8_t) & BM_LLWU_PE1_WUPE0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE0 field to a new value. +#define BW_LLWU_PE1_WUPE0(v) (HW_LLWU_PE1_WR((HW_LLWU_PE1_RD() & ~BM_LLWU_PE1_WUPE0) | BF_LLWU_PE1_WUPE0(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE1, field WUPE1[3:2] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE1_WUPE1 (2U) //!< Bit position for LLWU_PE1_WUPE1. +#define BM_LLWU_PE1_WUPE1 (0x0CU) //!< Bit mask for LLWU_PE1_WUPE1. +#define BS_LLWU_PE1_WUPE1 (2U) //!< Bit field size in bits for LLWU_PE1_WUPE1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE1_WUPE1 field. +#define BR_LLWU_PE1_WUPE1 (HW_LLWU_PE1.B.WUPE1) +#endif + +//! @brief Format value for bitfield LLWU_PE1_WUPE1. +#define BF_LLWU_PE1_WUPE1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE1_WUPE1), uint8_t) & BM_LLWU_PE1_WUPE1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE1 field to a new value. +#define BW_LLWU_PE1_WUPE1(v) (HW_LLWU_PE1_WR((HW_LLWU_PE1_RD() & ~BM_LLWU_PE1_WUPE1) | BF_LLWU_PE1_WUPE1(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE1, field WUPE2[5:4] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE1_WUPE2 (4U) //!< Bit position for LLWU_PE1_WUPE2. +#define BM_LLWU_PE1_WUPE2 (0x30U) //!< Bit mask for LLWU_PE1_WUPE2. +#define BS_LLWU_PE1_WUPE2 (2U) //!< Bit field size in bits for LLWU_PE1_WUPE2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE1_WUPE2 field. +#define BR_LLWU_PE1_WUPE2 (HW_LLWU_PE1.B.WUPE2) +#endif + +//! @brief Format value for bitfield LLWU_PE1_WUPE2. +#define BF_LLWU_PE1_WUPE2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE1_WUPE2), uint8_t) & BM_LLWU_PE1_WUPE2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE2 field to a new value. +#define BW_LLWU_PE1_WUPE2(v) (HW_LLWU_PE1_WR((HW_LLWU_PE1_RD() & ~BM_LLWU_PE1_WUPE2) | BF_LLWU_PE1_WUPE2(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE1, field WUPE3[7:6] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE1_WUPE3 (6U) //!< Bit position for LLWU_PE1_WUPE3. +#define BM_LLWU_PE1_WUPE3 (0xC0U) //!< Bit mask for LLWU_PE1_WUPE3. +#define BS_LLWU_PE1_WUPE3 (2U) //!< Bit field size in bits for LLWU_PE1_WUPE3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE1_WUPE3 field. +#define BR_LLWU_PE1_WUPE3 (HW_LLWU_PE1.B.WUPE3) +#endif + +//! @brief Format value for bitfield LLWU_PE1_WUPE3. +#define BF_LLWU_PE1_WUPE3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE1_WUPE3), uint8_t) & BM_LLWU_PE1_WUPE3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE3 field to a new value. +#define BW_LLWU_PE1_WUPE3(v) (HW_LLWU_PE1_WR((HW_LLWU_PE1_RD() & ~BM_LLWU_PE1_WUPE3) | BF_LLWU_PE1_WUPE3(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_PE2 - LLWU Pin Enable 2 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_PE2 - LLWU Pin Enable 2 register (RW) + * + * Reset value: 0x00U + * + * LLWU_PE2 contains the field to enable and select the edge detect type for the + * external wakeup input pins LLWU_P7-LLWU_P4. This register is reset on Chip + * Reset not VLLS and by reset types that trigger Chip Reset not VLLS. It is + * unaffected by reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control Module + * (RCM). The RCM implements many of the reset functions for the chip. See the + * chip's reset chapter for more information. details for more information. + */ +typedef union _hw_llwu_pe2 +{ + uint8_t U; + struct _hw_llwu_pe2_bitfields + { + uint8_t WUPE4 : 2; //!< [1:0] Wakeup Pin Enable For LLWU_P4 + uint8_t WUPE5 : 2; //!< [3:2] Wakeup Pin Enable For LLWU_P5 + uint8_t WUPE6 : 2; //!< [5:4] Wakeup Pin Enable For LLWU_P6 + uint8_t WUPE7 : 2; //!< [7:6] Wakeup Pin Enable For LLWU_P7 + } B; +} hw_llwu_pe2_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_PE2 register + */ +//@{ +#define HW_LLWU_PE2_ADDR (REGS_LLWU_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_PE2 (*(__IO hw_llwu_pe2_t *) HW_LLWU_PE2_ADDR) +#define HW_LLWU_PE2_RD() (HW_LLWU_PE2.U) +#define HW_LLWU_PE2_WR(v) (HW_LLWU_PE2.U = (v)) +#define HW_LLWU_PE2_SET(v) (HW_LLWU_PE2_WR(HW_LLWU_PE2_RD() | (v))) +#define HW_LLWU_PE2_CLR(v) (HW_LLWU_PE2_WR(HW_LLWU_PE2_RD() & ~(v))) +#define HW_LLWU_PE2_TOG(v) (HW_LLWU_PE2_WR(HW_LLWU_PE2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_PE2 bitfields + */ + +/*! + * @name Register LLWU_PE2, field WUPE4[1:0] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE2_WUPE4 (0U) //!< Bit position for LLWU_PE2_WUPE4. +#define BM_LLWU_PE2_WUPE4 (0x03U) //!< Bit mask for LLWU_PE2_WUPE4. +#define BS_LLWU_PE2_WUPE4 (2U) //!< Bit field size in bits for LLWU_PE2_WUPE4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE2_WUPE4 field. +#define BR_LLWU_PE2_WUPE4 (HW_LLWU_PE2.B.WUPE4) +#endif + +//! @brief Format value for bitfield LLWU_PE2_WUPE4. +#define BF_LLWU_PE2_WUPE4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE2_WUPE4), uint8_t) & BM_LLWU_PE2_WUPE4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE4 field to a new value. +#define BW_LLWU_PE2_WUPE4(v) (HW_LLWU_PE2_WR((HW_LLWU_PE2_RD() & ~BM_LLWU_PE2_WUPE4) | BF_LLWU_PE2_WUPE4(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE2, field WUPE5[3:2] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE2_WUPE5 (2U) //!< Bit position for LLWU_PE2_WUPE5. +#define BM_LLWU_PE2_WUPE5 (0x0CU) //!< Bit mask for LLWU_PE2_WUPE5. +#define BS_LLWU_PE2_WUPE5 (2U) //!< Bit field size in bits for LLWU_PE2_WUPE5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE2_WUPE5 field. +#define BR_LLWU_PE2_WUPE5 (HW_LLWU_PE2.B.WUPE5) +#endif + +//! @brief Format value for bitfield LLWU_PE2_WUPE5. +#define BF_LLWU_PE2_WUPE5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE2_WUPE5), uint8_t) & BM_LLWU_PE2_WUPE5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE5 field to a new value. +#define BW_LLWU_PE2_WUPE5(v) (HW_LLWU_PE2_WR((HW_LLWU_PE2_RD() & ~BM_LLWU_PE2_WUPE5) | BF_LLWU_PE2_WUPE5(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE2, field WUPE6[5:4] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE2_WUPE6 (4U) //!< Bit position for LLWU_PE2_WUPE6. +#define BM_LLWU_PE2_WUPE6 (0x30U) //!< Bit mask for LLWU_PE2_WUPE6. +#define BS_LLWU_PE2_WUPE6 (2U) //!< Bit field size in bits for LLWU_PE2_WUPE6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE2_WUPE6 field. +#define BR_LLWU_PE2_WUPE6 (HW_LLWU_PE2.B.WUPE6) +#endif + +//! @brief Format value for bitfield LLWU_PE2_WUPE6. +#define BF_LLWU_PE2_WUPE6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE2_WUPE6), uint8_t) & BM_LLWU_PE2_WUPE6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE6 field to a new value. +#define BW_LLWU_PE2_WUPE6(v) (HW_LLWU_PE2_WR((HW_LLWU_PE2_RD() & ~BM_LLWU_PE2_WUPE6) | BF_LLWU_PE2_WUPE6(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE2, field WUPE7[7:6] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE2_WUPE7 (6U) //!< Bit position for LLWU_PE2_WUPE7. +#define BM_LLWU_PE2_WUPE7 (0xC0U) //!< Bit mask for LLWU_PE2_WUPE7. +#define BS_LLWU_PE2_WUPE7 (2U) //!< Bit field size in bits for LLWU_PE2_WUPE7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE2_WUPE7 field. +#define BR_LLWU_PE2_WUPE7 (HW_LLWU_PE2.B.WUPE7) +#endif + +//! @brief Format value for bitfield LLWU_PE2_WUPE7. +#define BF_LLWU_PE2_WUPE7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE2_WUPE7), uint8_t) & BM_LLWU_PE2_WUPE7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE7 field to a new value. +#define BW_LLWU_PE2_WUPE7(v) (HW_LLWU_PE2_WR((HW_LLWU_PE2_RD() & ~BM_LLWU_PE2_WUPE7) | BF_LLWU_PE2_WUPE7(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_PE3 - LLWU Pin Enable 3 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_PE3 - LLWU Pin Enable 3 register (RW) + * + * Reset value: 0x00U + * + * LLWU_PE3 contains the field to enable and select the edge detect type for the + * external wakeup input pins LLWU_P11-LLWU_P8. This register is reset on Chip + * Reset not VLLS and by reset types that trigger Chip Reset not VLLS. It is + * unaffected by reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control Module + * (RCM). The RCM implements many of the reset functions for the chip. See the + * chip's reset chapter for more information. details for more information. + */ +typedef union _hw_llwu_pe3 +{ + uint8_t U; + struct _hw_llwu_pe3_bitfields + { + uint8_t WUPE8 : 2; //!< [1:0] Wakeup Pin Enable For LLWU_P8 + uint8_t WUPE9 : 2; //!< [3:2] Wakeup Pin Enable For LLWU_P9 + uint8_t WUPE10 : 2; //!< [5:4] Wakeup Pin Enable For LLWU_P10 + uint8_t WUPE11 : 2; //!< [7:6] Wakeup Pin Enable For LLWU_P11 + } B; +} hw_llwu_pe3_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_PE3 register + */ +//@{ +#define HW_LLWU_PE3_ADDR (REGS_LLWU_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_PE3 (*(__IO hw_llwu_pe3_t *) HW_LLWU_PE3_ADDR) +#define HW_LLWU_PE3_RD() (HW_LLWU_PE3.U) +#define HW_LLWU_PE3_WR(v) (HW_LLWU_PE3.U = (v)) +#define HW_LLWU_PE3_SET(v) (HW_LLWU_PE3_WR(HW_LLWU_PE3_RD() | (v))) +#define HW_LLWU_PE3_CLR(v) (HW_LLWU_PE3_WR(HW_LLWU_PE3_RD() & ~(v))) +#define HW_LLWU_PE3_TOG(v) (HW_LLWU_PE3_WR(HW_LLWU_PE3_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_PE3 bitfields + */ + +/*! + * @name Register LLWU_PE3, field WUPE8[1:0] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE3_WUPE8 (0U) //!< Bit position for LLWU_PE3_WUPE8. +#define BM_LLWU_PE3_WUPE8 (0x03U) //!< Bit mask for LLWU_PE3_WUPE8. +#define BS_LLWU_PE3_WUPE8 (2U) //!< Bit field size in bits for LLWU_PE3_WUPE8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE3_WUPE8 field. +#define BR_LLWU_PE3_WUPE8 (HW_LLWU_PE3.B.WUPE8) +#endif + +//! @brief Format value for bitfield LLWU_PE3_WUPE8. +#define BF_LLWU_PE3_WUPE8(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE3_WUPE8), uint8_t) & BM_LLWU_PE3_WUPE8) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE8 field to a new value. +#define BW_LLWU_PE3_WUPE8(v) (HW_LLWU_PE3_WR((HW_LLWU_PE3_RD() & ~BM_LLWU_PE3_WUPE8) | BF_LLWU_PE3_WUPE8(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE3, field WUPE9[3:2] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE3_WUPE9 (2U) //!< Bit position for LLWU_PE3_WUPE9. +#define BM_LLWU_PE3_WUPE9 (0x0CU) //!< Bit mask for LLWU_PE3_WUPE9. +#define BS_LLWU_PE3_WUPE9 (2U) //!< Bit field size in bits for LLWU_PE3_WUPE9. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE3_WUPE9 field. +#define BR_LLWU_PE3_WUPE9 (HW_LLWU_PE3.B.WUPE9) +#endif + +//! @brief Format value for bitfield LLWU_PE3_WUPE9. +#define BF_LLWU_PE3_WUPE9(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE3_WUPE9), uint8_t) & BM_LLWU_PE3_WUPE9) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE9 field to a new value. +#define BW_LLWU_PE3_WUPE9(v) (HW_LLWU_PE3_WR((HW_LLWU_PE3_RD() & ~BM_LLWU_PE3_WUPE9) | BF_LLWU_PE3_WUPE9(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE3, field WUPE10[5:4] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE3_WUPE10 (4U) //!< Bit position for LLWU_PE3_WUPE10. +#define BM_LLWU_PE3_WUPE10 (0x30U) //!< Bit mask for LLWU_PE3_WUPE10. +#define BS_LLWU_PE3_WUPE10 (2U) //!< Bit field size in bits for LLWU_PE3_WUPE10. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE3_WUPE10 field. +#define BR_LLWU_PE3_WUPE10 (HW_LLWU_PE3.B.WUPE10) +#endif + +//! @brief Format value for bitfield LLWU_PE3_WUPE10. +#define BF_LLWU_PE3_WUPE10(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE3_WUPE10), uint8_t) & BM_LLWU_PE3_WUPE10) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE10 field to a new value. +#define BW_LLWU_PE3_WUPE10(v) (HW_LLWU_PE3_WR((HW_LLWU_PE3_RD() & ~BM_LLWU_PE3_WUPE10) | BF_LLWU_PE3_WUPE10(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE3, field WUPE11[7:6] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE3_WUPE11 (6U) //!< Bit position for LLWU_PE3_WUPE11. +#define BM_LLWU_PE3_WUPE11 (0xC0U) //!< Bit mask for LLWU_PE3_WUPE11. +#define BS_LLWU_PE3_WUPE11 (2U) //!< Bit field size in bits for LLWU_PE3_WUPE11. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE3_WUPE11 field. +#define BR_LLWU_PE3_WUPE11 (HW_LLWU_PE3.B.WUPE11) +#endif + +//! @brief Format value for bitfield LLWU_PE3_WUPE11. +#define BF_LLWU_PE3_WUPE11(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE3_WUPE11), uint8_t) & BM_LLWU_PE3_WUPE11) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE11 field to a new value. +#define BW_LLWU_PE3_WUPE11(v) (HW_LLWU_PE3_WR((HW_LLWU_PE3_RD() & ~BM_LLWU_PE3_WUPE11) | BF_LLWU_PE3_WUPE11(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_PE4 - LLWU Pin Enable 4 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_PE4 - LLWU Pin Enable 4 register (RW) + * + * Reset value: 0x00U + * + * LLWU_PE4 contains the field to enable and select the edge detect type for the + * external wakeup input pins LLWU_P15-LLWU_P12. This register is reset on Chip + * Reset not VLLS and by reset types that trigger Chip Reset not VLLS. It is + * unaffected by reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control + * Module (RCM). The RCM implements many of the reset functions for the chip. See the + * chip's reset chapter for more information. details for more information. + */ +typedef union _hw_llwu_pe4 +{ + uint8_t U; + struct _hw_llwu_pe4_bitfields + { + uint8_t WUPE12 : 2; //!< [1:0] Wakeup Pin Enable For LLWU_P12 + uint8_t WUPE13 : 2; //!< [3:2] Wakeup Pin Enable For LLWU_P13 + uint8_t WUPE14 : 2; //!< [5:4] Wakeup Pin Enable For LLWU_P14 + uint8_t WUPE15 : 2; //!< [7:6] Wakeup Pin Enable For LLWU_P15 + } B; +} hw_llwu_pe4_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_PE4 register + */ +//@{ +#define HW_LLWU_PE4_ADDR (REGS_LLWU_BASE + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_PE4 (*(__IO hw_llwu_pe4_t *) HW_LLWU_PE4_ADDR) +#define HW_LLWU_PE4_RD() (HW_LLWU_PE4.U) +#define HW_LLWU_PE4_WR(v) (HW_LLWU_PE4.U = (v)) +#define HW_LLWU_PE4_SET(v) (HW_LLWU_PE4_WR(HW_LLWU_PE4_RD() | (v))) +#define HW_LLWU_PE4_CLR(v) (HW_LLWU_PE4_WR(HW_LLWU_PE4_RD() & ~(v))) +#define HW_LLWU_PE4_TOG(v) (HW_LLWU_PE4_WR(HW_LLWU_PE4_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_PE4 bitfields + */ + +/*! + * @name Register LLWU_PE4, field WUPE12[1:0] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE4_WUPE12 (0U) //!< Bit position for LLWU_PE4_WUPE12. +#define BM_LLWU_PE4_WUPE12 (0x03U) //!< Bit mask for LLWU_PE4_WUPE12. +#define BS_LLWU_PE4_WUPE12 (2U) //!< Bit field size in bits for LLWU_PE4_WUPE12. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE4_WUPE12 field. +#define BR_LLWU_PE4_WUPE12 (HW_LLWU_PE4.B.WUPE12) +#endif + +//! @brief Format value for bitfield LLWU_PE4_WUPE12. +#define BF_LLWU_PE4_WUPE12(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE4_WUPE12), uint8_t) & BM_LLWU_PE4_WUPE12) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE12 field to a new value. +#define BW_LLWU_PE4_WUPE12(v) (HW_LLWU_PE4_WR((HW_LLWU_PE4_RD() & ~BM_LLWU_PE4_WUPE12) | BF_LLWU_PE4_WUPE12(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE4, field WUPE13[3:2] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE4_WUPE13 (2U) //!< Bit position for LLWU_PE4_WUPE13. +#define BM_LLWU_PE4_WUPE13 (0x0CU) //!< Bit mask for LLWU_PE4_WUPE13. +#define BS_LLWU_PE4_WUPE13 (2U) //!< Bit field size in bits for LLWU_PE4_WUPE13. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE4_WUPE13 field. +#define BR_LLWU_PE4_WUPE13 (HW_LLWU_PE4.B.WUPE13) +#endif + +//! @brief Format value for bitfield LLWU_PE4_WUPE13. +#define BF_LLWU_PE4_WUPE13(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE4_WUPE13), uint8_t) & BM_LLWU_PE4_WUPE13) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE13 field to a new value. +#define BW_LLWU_PE4_WUPE13(v) (HW_LLWU_PE4_WR((HW_LLWU_PE4_RD() & ~BM_LLWU_PE4_WUPE13) | BF_LLWU_PE4_WUPE13(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE4, field WUPE14[5:4] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE4_WUPE14 (4U) //!< Bit position for LLWU_PE4_WUPE14. +#define BM_LLWU_PE4_WUPE14 (0x30U) //!< Bit mask for LLWU_PE4_WUPE14. +#define BS_LLWU_PE4_WUPE14 (2U) //!< Bit field size in bits for LLWU_PE4_WUPE14. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE4_WUPE14 field. +#define BR_LLWU_PE4_WUPE14 (HW_LLWU_PE4.B.WUPE14) +#endif + +//! @brief Format value for bitfield LLWU_PE4_WUPE14. +#define BF_LLWU_PE4_WUPE14(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE4_WUPE14), uint8_t) & BM_LLWU_PE4_WUPE14) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE14 field to a new value. +#define BW_LLWU_PE4_WUPE14(v) (HW_LLWU_PE4_WR((HW_LLWU_PE4_RD() & ~BM_LLWU_PE4_WUPE14) | BF_LLWU_PE4_WUPE14(v))) +#endif +//@} + +/*! + * @name Register LLWU_PE4, field WUPE15[7:6] (RW) + * + * Enables and configures the edge detection for the wakeup pin. + * + * Values: + * - 00 - External input pin disabled as wakeup input + * - 01 - External input pin enabled with rising edge detection + * - 10 - External input pin enabled with falling edge detection + * - 11 - External input pin enabled with any change detection + */ +//@{ +#define BP_LLWU_PE4_WUPE15 (6U) //!< Bit position for LLWU_PE4_WUPE15. +#define BM_LLWU_PE4_WUPE15 (0xC0U) //!< Bit mask for LLWU_PE4_WUPE15. +#define BS_LLWU_PE4_WUPE15 (2U) //!< Bit field size in bits for LLWU_PE4_WUPE15. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_PE4_WUPE15 field. +#define BR_LLWU_PE4_WUPE15 (HW_LLWU_PE4.B.WUPE15) +#endif + +//! @brief Format value for bitfield LLWU_PE4_WUPE15. +#define BF_LLWU_PE4_WUPE15(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_PE4_WUPE15), uint8_t) & BM_LLWU_PE4_WUPE15) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUPE15 field to a new value. +#define BW_LLWU_PE4_WUPE15(v) (HW_LLWU_PE4_WR((HW_LLWU_PE4_RD() & ~BM_LLWU_PE4_WUPE15) | BF_LLWU_PE4_WUPE15(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_ME - LLWU Module Enable register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_ME - LLWU Module Enable register (RW) + * + * Reset value: 0x00U + * + * LLWU_ME contains the bits to enable the internal module flag as a wakeup + * input source for inputs MWUF7-MWUF0. This register is reset on Chip Reset not VLLS + * and by reset types that trigger Chip Reset not VLLS. It is unaffected by + * reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control Module (RCM). The + * RCM implements many of the reset functions for the chip. See the chip's reset + * chapter for more information. details for more information. + */ +typedef union _hw_llwu_me +{ + uint8_t U; + struct _hw_llwu_me_bitfields + { + uint8_t WUME0 : 1; //!< [0] Wakeup Module Enable For Module 0 + uint8_t WUME1 : 1; //!< [1] Wakeup Module Enable for Module 1 + uint8_t WUME2 : 1; //!< [2] Wakeup Module Enable For Module 2 + uint8_t WUME3 : 1; //!< [3] Wakeup Module Enable For Module 3 + uint8_t WUME4 : 1; //!< [4] Wakeup Module Enable For Module 4 + uint8_t WUME5 : 1; //!< [5] Wakeup Module Enable For Module 5 + uint8_t WUME6 : 1; //!< [6] Wakeup Module Enable For Module 6 + uint8_t WUME7 : 1; //!< [7] Wakeup Module Enable For Module 7 + } B; +} hw_llwu_me_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_ME register + */ +//@{ +#define HW_LLWU_ME_ADDR (REGS_LLWU_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_ME (*(__IO hw_llwu_me_t *) HW_LLWU_ME_ADDR) +#define HW_LLWU_ME_RD() (HW_LLWU_ME.U) +#define HW_LLWU_ME_WR(v) (HW_LLWU_ME.U = (v)) +#define HW_LLWU_ME_SET(v) (HW_LLWU_ME_WR(HW_LLWU_ME_RD() | (v))) +#define HW_LLWU_ME_CLR(v) (HW_LLWU_ME_WR(HW_LLWU_ME_RD() & ~(v))) +#define HW_LLWU_ME_TOG(v) (HW_LLWU_ME_WR(HW_LLWU_ME_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_ME bitfields + */ + +/*! + * @name Register LLWU_ME, field WUME0[0] (RW) + * + * Enables an internal module as a wakeup source input. + * + * Values: + * - 0 - Internal module flag not used as wakeup source + * - 1 - Internal module flag used as wakeup source + */ +//@{ +#define BP_LLWU_ME_WUME0 (0U) //!< Bit position for LLWU_ME_WUME0. +#define BM_LLWU_ME_WUME0 (0x01U) //!< Bit mask for LLWU_ME_WUME0. +#define BS_LLWU_ME_WUME0 (1U) //!< Bit field size in bits for LLWU_ME_WUME0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_ME_WUME0 field. +#define BR_LLWU_ME_WUME0 (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME0)) +#endif + +//! @brief Format value for bitfield LLWU_ME_WUME0. +#define BF_LLWU_ME_WUME0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_ME_WUME0), uint8_t) & BM_LLWU_ME_WUME0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUME0 field to a new value. +#define BW_LLWU_ME_WUME0(v) (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME0) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_ME, field WUME1[1] (RW) + * + * Enables an internal module as a wakeup source input. + * + * Values: + * - 0 - Internal module flag not used as wakeup source + * - 1 - Internal module flag used as wakeup source + */ +//@{ +#define BP_LLWU_ME_WUME1 (1U) //!< Bit position for LLWU_ME_WUME1. +#define BM_LLWU_ME_WUME1 (0x02U) //!< Bit mask for LLWU_ME_WUME1. +#define BS_LLWU_ME_WUME1 (1U) //!< Bit field size in bits for LLWU_ME_WUME1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_ME_WUME1 field. +#define BR_LLWU_ME_WUME1 (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME1)) +#endif + +//! @brief Format value for bitfield LLWU_ME_WUME1. +#define BF_LLWU_ME_WUME1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_ME_WUME1), uint8_t) & BM_LLWU_ME_WUME1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUME1 field to a new value. +#define BW_LLWU_ME_WUME1(v) (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME1) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_ME, field WUME2[2] (RW) + * + * Enables an internal module as a wakeup source input. + * + * Values: + * - 0 - Internal module flag not used as wakeup source + * - 1 - Internal module flag used as wakeup source + */ +//@{ +#define BP_LLWU_ME_WUME2 (2U) //!< Bit position for LLWU_ME_WUME2. +#define BM_LLWU_ME_WUME2 (0x04U) //!< Bit mask for LLWU_ME_WUME2. +#define BS_LLWU_ME_WUME2 (1U) //!< Bit field size in bits for LLWU_ME_WUME2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_ME_WUME2 field. +#define BR_LLWU_ME_WUME2 (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME2)) +#endif + +//! @brief Format value for bitfield LLWU_ME_WUME2. +#define BF_LLWU_ME_WUME2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_ME_WUME2), uint8_t) & BM_LLWU_ME_WUME2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUME2 field to a new value. +#define BW_LLWU_ME_WUME2(v) (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME2) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_ME, field WUME3[3] (RW) + * + * Enables an internal module as a wakeup source input. + * + * Values: + * - 0 - Internal module flag not used as wakeup source + * - 1 - Internal module flag used as wakeup source + */ +//@{ +#define BP_LLWU_ME_WUME3 (3U) //!< Bit position for LLWU_ME_WUME3. +#define BM_LLWU_ME_WUME3 (0x08U) //!< Bit mask for LLWU_ME_WUME3. +#define BS_LLWU_ME_WUME3 (1U) //!< Bit field size in bits for LLWU_ME_WUME3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_ME_WUME3 field. +#define BR_LLWU_ME_WUME3 (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME3)) +#endif + +//! @brief Format value for bitfield LLWU_ME_WUME3. +#define BF_LLWU_ME_WUME3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_ME_WUME3), uint8_t) & BM_LLWU_ME_WUME3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUME3 field to a new value. +#define BW_LLWU_ME_WUME3(v) (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME3) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_ME, field WUME4[4] (RW) + * + * Enables an internal module as a wakeup source input. + * + * Values: + * - 0 - Internal module flag not used as wakeup source + * - 1 - Internal module flag used as wakeup source + */ +//@{ +#define BP_LLWU_ME_WUME4 (4U) //!< Bit position for LLWU_ME_WUME4. +#define BM_LLWU_ME_WUME4 (0x10U) //!< Bit mask for LLWU_ME_WUME4. +#define BS_LLWU_ME_WUME4 (1U) //!< Bit field size in bits for LLWU_ME_WUME4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_ME_WUME4 field. +#define BR_LLWU_ME_WUME4 (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME4)) +#endif + +//! @brief Format value for bitfield LLWU_ME_WUME4. +#define BF_LLWU_ME_WUME4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_ME_WUME4), uint8_t) & BM_LLWU_ME_WUME4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUME4 field to a new value. +#define BW_LLWU_ME_WUME4(v) (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME4) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_ME, field WUME5[5] (RW) + * + * Enables an internal module as a wakeup source input. + * + * Values: + * - 0 - Internal module flag not used as wakeup source + * - 1 - Internal module flag used as wakeup source + */ +//@{ +#define BP_LLWU_ME_WUME5 (5U) //!< Bit position for LLWU_ME_WUME5. +#define BM_LLWU_ME_WUME5 (0x20U) //!< Bit mask for LLWU_ME_WUME5. +#define BS_LLWU_ME_WUME5 (1U) //!< Bit field size in bits for LLWU_ME_WUME5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_ME_WUME5 field. +#define BR_LLWU_ME_WUME5 (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME5)) +#endif + +//! @brief Format value for bitfield LLWU_ME_WUME5. +#define BF_LLWU_ME_WUME5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_ME_WUME5), uint8_t) & BM_LLWU_ME_WUME5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUME5 field to a new value. +#define BW_LLWU_ME_WUME5(v) (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME5) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_ME, field WUME6[6] (RW) + * + * Enables an internal module as a wakeup source input. + * + * Values: + * - 0 - Internal module flag not used as wakeup source + * - 1 - Internal module flag used as wakeup source + */ +//@{ +#define BP_LLWU_ME_WUME6 (6U) //!< Bit position for LLWU_ME_WUME6. +#define BM_LLWU_ME_WUME6 (0x40U) //!< Bit mask for LLWU_ME_WUME6. +#define BS_LLWU_ME_WUME6 (1U) //!< Bit field size in bits for LLWU_ME_WUME6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_ME_WUME6 field. +#define BR_LLWU_ME_WUME6 (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME6)) +#endif + +//! @brief Format value for bitfield LLWU_ME_WUME6. +#define BF_LLWU_ME_WUME6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_ME_WUME6), uint8_t) & BM_LLWU_ME_WUME6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUME6 field to a new value. +#define BW_LLWU_ME_WUME6(v) (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME6) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_ME, field WUME7[7] (RW) + * + * Enables an internal module as a wakeup source input. + * + * Values: + * - 0 - Internal module flag not used as wakeup source + * - 1 - Internal module flag used as wakeup source + */ +//@{ +#define BP_LLWU_ME_WUME7 (7U) //!< Bit position for LLWU_ME_WUME7. +#define BM_LLWU_ME_WUME7 (0x80U) //!< Bit mask for LLWU_ME_WUME7. +#define BS_LLWU_ME_WUME7 (1U) //!< Bit field size in bits for LLWU_ME_WUME7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_ME_WUME7 field. +#define BR_LLWU_ME_WUME7 (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME7)) +#endif + +//! @brief Format value for bitfield LLWU_ME_WUME7. +#define BF_LLWU_ME_WUME7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_ME_WUME7), uint8_t) & BM_LLWU_ME_WUME7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUME7 field to a new value. +#define BW_LLWU_ME_WUME7(v) (BITBAND_ACCESS8(HW_LLWU_ME_ADDR, BP_LLWU_ME_WUME7) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_F1 - LLWU Flag 1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_F1 - LLWU Flag 1 register (W1C) + * + * Reset value: 0x00U + * + * LLWU_F1 contains the wakeup flags indicating which wakeup source caused the + * MCU to exit LLS or VLLS mode. For LLS, this is the source causing the CPU + * interrupt flow. For VLLS, this is the source causing the MCU reset flow. The + * external wakeup flags are read-only and clearing a flag is accomplished by a write + * of a 1 to the corresponding WUFx bit. The wakeup flag (WUFx), if set, will + * remain set if the associated WUPEx bit is cleared. This register is reset on Chip + * Reset not VLLS and by reset types that trigger Chip Reset not VLLS. It is + * unaffected by reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control + * Module (RCM). The RCM implements many of the reset functions for the chip. See the + * chip's reset chapter for more information. details for more information. + */ +typedef union _hw_llwu_f1 +{ + uint8_t U; + struct _hw_llwu_f1_bitfields + { + uint8_t WUF0 : 1; //!< [0] Wakeup Flag For LLWU_P0 + uint8_t WUF1 : 1; //!< [1] Wakeup Flag For LLWU_P1 + uint8_t WUF2 : 1; //!< [2] Wakeup Flag For LLWU_P2 + uint8_t WUF3 : 1; //!< [3] Wakeup Flag For LLWU_P3 + uint8_t WUF4 : 1; //!< [4] Wakeup Flag For LLWU_P4 + uint8_t WUF5 : 1; //!< [5] Wakeup Flag For LLWU_P5 + uint8_t WUF6 : 1; //!< [6] Wakeup Flag For LLWU_P6 + uint8_t WUF7 : 1; //!< [7] Wakeup Flag For LLWU_P7 + } B; +} hw_llwu_f1_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_F1 register + */ +//@{ +#define HW_LLWU_F1_ADDR (REGS_LLWU_BASE + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_F1 (*(__IO hw_llwu_f1_t *) HW_LLWU_F1_ADDR) +#define HW_LLWU_F1_RD() (HW_LLWU_F1.U) +#define HW_LLWU_F1_WR(v) (HW_LLWU_F1.U = (v)) +#define HW_LLWU_F1_SET(v) (HW_LLWU_F1_WR(HW_LLWU_F1_RD() | (v))) +#define HW_LLWU_F1_CLR(v) (HW_LLWU_F1_WR(HW_LLWU_F1_RD() & ~(v))) +#define HW_LLWU_F1_TOG(v) (HW_LLWU_F1_WR(HW_LLWU_F1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_F1 bitfields + */ + +/*! + * @name Register LLWU_F1, field WUF0[0] (W1C) + * + * Indicates that an enabled external wake-up pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF0. + * + * Values: + * - 0 - LLWU_P0 input was not a wakeup source + * - 1 - LLWU_P0 input was a wakeup source + */ +//@{ +#define BP_LLWU_F1_WUF0 (0U) //!< Bit position for LLWU_F1_WUF0. +#define BM_LLWU_F1_WUF0 (0x01U) //!< Bit mask for LLWU_F1_WUF0. +#define BS_LLWU_F1_WUF0 (1U) //!< Bit field size in bits for LLWU_F1_WUF0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F1_WUF0 field. +#define BR_LLWU_F1_WUF0 (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF0)) +#endif + +//! @brief Format value for bitfield LLWU_F1_WUF0. +#define BF_LLWU_F1_WUF0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F1_WUF0), uint8_t) & BM_LLWU_F1_WUF0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF0 field to a new value. +#define BW_LLWU_F1_WUF0(v) (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF0) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F1, field WUF1[1] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF1. + * + * Values: + * - 0 - LLWU_P1 input was not a wakeup source + * - 1 - LLWU_P1 input was a wakeup source + */ +//@{ +#define BP_LLWU_F1_WUF1 (1U) //!< Bit position for LLWU_F1_WUF1. +#define BM_LLWU_F1_WUF1 (0x02U) //!< Bit mask for LLWU_F1_WUF1. +#define BS_LLWU_F1_WUF1 (1U) //!< Bit field size in bits for LLWU_F1_WUF1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F1_WUF1 field. +#define BR_LLWU_F1_WUF1 (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF1)) +#endif + +//! @brief Format value for bitfield LLWU_F1_WUF1. +#define BF_LLWU_F1_WUF1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F1_WUF1), uint8_t) & BM_LLWU_F1_WUF1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF1 field to a new value. +#define BW_LLWU_F1_WUF1(v) (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF1) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F1, field WUF2[2] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF2. + * + * Values: + * - 0 - LLWU_P2 input was not a wakeup source + * - 1 - LLWU_P2 input was a wakeup source + */ +//@{ +#define BP_LLWU_F1_WUF2 (2U) //!< Bit position for LLWU_F1_WUF2. +#define BM_LLWU_F1_WUF2 (0x04U) //!< Bit mask for LLWU_F1_WUF2. +#define BS_LLWU_F1_WUF2 (1U) //!< Bit field size in bits for LLWU_F1_WUF2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F1_WUF2 field. +#define BR_LLWU_F1_WUF2 (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF2)) +#endif + +//! @brief Format value for bitfield LLWU_F1_WUF2. +#define BF_LLWU_F1_WUF2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F1_WUF2), uint8_t) & BM_LLWU_F1_WUF2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF2 field to a new value. +#define BW_LLWU_F1_WUF2(v) (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF2) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F1, field WUF3[3] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF3. + * + * Values: + * - 0 - LLWU_P3 input was not a wake-up source + * - 1 - LLWU_P3 input was a wake-up source + */ +//@{ +#define BP_LLWU_F1_WUF3 (3U) //!< Bit position for LLWU_F1_WUF3. +#define BM_LLWU_F1_WUF3 (0x08U) //!< Bit mask for LLWU_F1_WUF3. +#define BS_LLWU_F1_WUF3 (1U) //!< Bit field size in bits for LLWU_F1_WUF3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F1_WUF3 field. +#define BR_LLWU_F1_WUF3 (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF3)) +#endif + +//! @brief Format value for bitfield LLWU_F1_WUF3. +#define BF_LLWU_F1_WUF3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F1_WUF3), uint8_t) & BM_LLWU_F1_WUF3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF3 field to a new value. +#define BW_LLWU_F1_WUF3(v) (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF3) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F1, field WUF4[4] (W1C) + * + * Indicates that an enabled external wake-up pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF4. + * + * Values: + * - 0 - LLWU_P4 input was not a wakeup source + * - 1 - LLWU_P4 input was a wakeup source + */ +//@{ +#define BP_LLWU_F1_WUF4 (4U) //!< Bit position for LLWU_F1_WUF4. +#define BM_LLWU_F1_WUF4 (0x10U) //!< Bit mask for LLWU_F1_WUF4. +#define BS_LLWU_F1_WUF4 (1U) //!< Bit field size in bits for LLWU_F1_WUF4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F1_WUF4 field. +#define BR_LLWU_F1_WUF4 (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF4)) +#endif + +//! @brief Format value for bitfield LLWU_F1_WUF4. +#define BF_LLWU_F1_WUF4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F1_WUF4), uint8_t) & BM_LLWU_F1_WUF4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF4 field to a new value. +#define BW_LLWU_F1_WUF4(v) (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF4) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F1, field WUF5[5] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF5. + * + * Values: + * - 0 - LLWU_P5 input was not a wakeup source + * - 1 - LLWU_P5 input was a wakeup source + */ +//@{ +#define BP_LLWU_F1_WUF5 (5U) //!< Bit position for LLWU_F1_WUF5. +#define BM_LLWU_F1_WUF5 (0x20U) //!< Bit mask for LLWU_F1_WUF5. +#define BS_LLWU_F1_WUF5 (1U) //!< Bit field size in bits for LLWU_F1_WUF5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F1_WUF5 field. +#define BR_LLWU_F1_WUF5 (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF5)) +#endif + +//! @brief Format value for bitfield LLWU_F1_WUF5. +#define BF_LLWU_F1_WUF5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F1_WUF5), uint8_t) & BM_LLWU_F1_WUF5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF5 field to a new value. +#define BW_LLWU_F1_WUF5(v) (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF5) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F1, field WUF6[6] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF6. + * + * Values: + * - 0 - LLWU_P6 input was not a wakeup source + * - 1 - LLWU_P6 input was a wakeup source + */ +//@{ +#define BP_LLWU_F1_WUF6 (6U) //!< Bit position for LLWU_F1_WUF6. +#define BM_LLWU_F1_WUF6 (0x40U) //!< Bit mask for LLWU_F1_WUF6. +#define BS_LLWU_F1_WUF6 (1U) //!< Bit field size in bits for LLWU_F1_WUF6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F1_WUF6 field. +#define BR_LLWU_F1_WUF6 (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF6)) +#endif + +//! @brief Format value for bitfield LLWU_F1_WUF6. +#define BF_LLWU_F1_WUF6(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F1_WUF6), uint8_t) & BM_LLWU_F1_WUF6) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF6 field to a new value. +#define BW_LLWU_F1_WUF6(v) (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF6) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F1, field WUF7[7] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF7. + * + * Values: + * - 0 - LLWU_P7 input was not a wakeup source + * - 1 - LLWU_P7 input was a wakeup source + */ +//@{ +#define BP_LLWU_F1_WUF7 (7U) //!< Bit position for LLWU_F1_WUF7. +#define BM_LLWU_F1_WUF7 (0x80U) //!< Bit mask for LLWU_F1_WUF7. +#define BS_LLWU_F1_WUF7 (1U) //!< Bit field size in bits for LLWU_F1_WUF7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F1_WUF7 field. +#define BR_LLWU_F1_WUF7 (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF7)) +#endif + +//! @brief Format value for bitfield LLWU_F1_WUF7. +#define BF_LLWU_F1_WUF7(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F1_WUF7), uint8_t) & BM_LLWU_F1_WUF7) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF7 field to a new value. +#define BW_LLWU_F1_WUF7(v) (BITBAND_ACCESS8(HW_LLWU_F1_ADDR, BP_LLWU_F1_WUF7) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_F2 - LLWU Flag 2 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_F2 - LLWU Flag 2 register (W1C) + * + * Reset value: 0x00U + * + * LLWU_F2 contains the wakeup flags indicating which wakeup source caused the + * MCU to exit LLS or VLLS mode. For LLS, this is the source causing the CPU + * interrupt flow. For VLLS, this is the source causing the MCU reset flow. The + * external wakeup flags are read-only and clearing a flag is accomplished by a write + * of a 1 to the corresponding WUFx bit. The wakeup flag (WUFx), if set, will + * remain set if the associated WUPEx bit is cleared. This register is reset on Chip + * Reset not VLLS and by reset types that trigger Chip Reset not VLLS. It is + * unaffected by reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control + * Module (RCM). The RCM implements many of the reset functions for the chip. See the + * chip's reset chapter for more information. details for more information. + */ +typedef union _hw_llwu_f2 +{ + uint8_t U; + struct _hw_llwu_f2_bitfields + { + uint8_t WUF8 : 1; //!< [0] Wakeup Flag For LLWU_P8 + uint8_t WUF9 : 1; //!< [1] Wakeup Flag For LLWU_P9 + uint8_t WUF10 : 1; //!< [2] Wakeup Flag For LLWU_P10 + uint8_t WUF11 : 1; //!< [3] Wakeup Flag For LLWU_P11 + uint8_t WUF12 : 1; //!< [4] Wakeup Flag For LLWU_P12 + uint8_t WUF13 : 1; //!< [5] Wakeup Flag For LLWU_P13 + uint8_t WUF14 : 1; //!< [6] Wakeup Flag For LLWU_P14 + uint8_t WUF15 : 1; //!< [7] Wakeup Flag For LLWU_P15 + } B; +} hw_llwu_f2_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_F2 register + */ +//@{ +#define HW_LLWU_F2_ADDR (REGS_LLWU_BASE + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_F2 (*(__IO hw_llwu_f2_t *) HW_LLWU_F2_ADDR) +#define HW_LLWU_F2_RD() (HW_LLWU_F2.U) +#define HW_LLWU_F2_WR(v) (HW_LLWU_F2.U = (v)) +#define HW_LLWU_F2_SET(v) (HW_LLWU_F2_WR(HW_LLWU_F2_RD() | (v))) +#define HW_LLWU_F2_CLR(v) (HW_LLWU_F2_WR(HW_LLWU_F2_RD() & ~(v))) +#define HW_LLWU_F2_TOG(v) (HW_LLWU_F2_WR(HW_LLWU_F2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_F2 bitfields + */ + +/*! + * @name Register LLWU_F2, field WUF8[0] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF8. + * + * Values: + * - 0 - LLWU_P8 input was not a wakeup source + * - 1 - LLWU_P8 input was a wakeup source + */ +//@{ +#define BP_LLWU_F2_WUF8 (0U) //!< Bit position for LLWU_F2_WUF8. +#define BM_LLWU_F2_WUF8 (0x01U) //!< Bit mask for LLWU_F2_WUF8. +#define BS_LLWU_F2_WUF8 (1U) //!< Bit field size in bits for LLWU_F2_WUF8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F2_WUF8 field. +#define BR_LLWU_F2_WUF8 (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF8)) +#endif + +//! @brief Format value for bitfield LLWU_F2_WUF8. +#define BF_LLWU_F2_WUF8(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F2_WUF8), uint8_t) & BM_LLWU_F2_WUF8) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF8 field to a new value. +#define BW_LLWU_F2_WUF8(v) (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF8) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F2, field WUF9[1] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF9. + * + * Values: + * - 0 - LLWU_P9 input was not a wakeup source + * - 1 - LLWU_P9 input was a wakeup source + */ +//@{ +#define BP_LLWU_F2_WUF9 (1U) //!< Bit position for LLWU_F2_WUF9. +#define BM_LLWU_F2_WUF9 (0x02U) //!< Bit mask for LLWU_F2_WUF9. +#define BS_LLWU_F2_WUF9 (1U) //!< Bit field size in bits for LLWU_F2_WUF9. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F2_WUF9 field. +#define BR_LLWU_F2_WUF9 (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF9)) +#endif + +//! @brief Format value for bitfield LLWU_F2_WUF9. +#define BF_LLWU_F2_WUF9(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F2_WUF9), uint8_t) & BM_LLWU_F2_WUF9) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF9 field to a new value. +#define BW_LLWU_F2_WUF9(v) (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF9) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F2, field WUF10[2] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF10. + * + * Values: + * - 0 - LLWU_P10 input was not a wakeup source + * - 1 - LLWU_P10 input was a wakeup source + */ +//@{ +#define BP_LLWU_F2_WUF10 (2U) //!< Bit position for LLWU_F2_WUF10. +#define BM_LLWU_F2_WUF10 (0x04U) //!< Bit mask for LLWU_F2_WUF10. +#define BS_LLWU_F2_WUF10 (1U) //!< Bit field size in bits for LLWU_F2_WUF10. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F2_WUF10 field. +#define BR_LLWU_F2_WUF10 (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF10)) +#endif + +//! @brief Format value for bitfield LLWU_F2_WUF10. +#define BF_LLWU_F2_WUF10(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F2_WUF10), uint8_t) & BM_LLWU_F2_WUF10) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF10 field to a new value. +#define BW_LLWU_F2_WUF10(v) (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF10) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F2, field WUF11[3] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF11. + * + * Values: + * - 0 - LLWU_P11 input was not a wakeup source + * - 1 - LLWU_P11 input was a wakeup source + */ +//@{ +#define BP_LLWU_F2_WUF11 (3U) //!< Bit position for LLWU_F2_WUF11. +#define BM_LLWU_F2_WUF11 (0x08U) //!< Bit mask for LLWU_F2_WUF11. +#define BS_LLWU_F2_WUF11 (1U) //!< Bit field size in bits for LLWU_F2_WUF11. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F2_WUF11 field. +#define BR_LLWU_F2_WUF11 (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF11)) +#endif + +//! @brief Format value for bitfield LLWU_F2_WUF11. +#define BF_LLWU_F2_WUF11(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F2_WUF11), uint8_t) & BM_LLWU_F2_WUF11) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF11 field to a new value. +#define BW_LLWU_F2_WUF11(v) (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF11) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F2, field WUF12[4] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF12. + * + * Values: + * - 0 - LLWU_P12 input was not a wakeup source + * - 1 - LLWU_P12 input was a wakeup source + */ +//@{ +#define BP_LLWU_F2_WUF12 (4U) //!< Bit position for LLWU_F2_WUF12. +#define BM_LLWU_F2_WUF12 (0x10U) //!< Bit mask for LLWU_F2_WUF12. +#define BS_LLWU_F2_WUF12 (1U) //!< Bit field size in bits for LLWU_F2_WUF12. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F2_WUF12 field. +#define BR_LLWU_F2_WUF12 (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF12)) +#endif + +//! @brief Format value for bitfield LLWU_F2_WUF12. +#define BF_LLWU_F2_WUF12(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F2_WUF12), uint8_t) & BM_LLWU_F2_WUF12) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF12 field to a new value. +#define BW_LLWU_F2_WUF12(v) (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF12) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F2, field WUF13[5] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF13. + * + * Values: + * - 0 - LLWU_P13 input was not a wakeup source + * - 1 - LLWU_P13 input was a wakeup source + */ +//@{ +#define BP_LLWU_F2_WUF13 (5U) //!< Bit position for LLWU_F2_WUF13. +#define BM_LLWU_F2_WUF13 (0x20U) //!< Bit mask for LLWU_F2_WUF13. +#define BS_LLWU_F2_WUF13 (1U) //!< Bit field size in bits for LLWU_F2_WUF13. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F2_WUF13 field. +#define BR_LLWU_F2_WUF13 (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF13)) +#endif + +//! @brief Format value for bitfield LLWU_F2_WUF13. +#define BF_LLWU_F2_WUF13(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F2_WUF13), uint8_t) & BM_LLWU_F2_WUF13) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF13 field to a new value. +#define BW_LLWU_F2_WUF13(v) (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF13) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F2, field WUF14[6] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF14. + * + * Values: + * - 0 - LLWU_P14 input was not a wakeup source + * - 1 - LLWU_P14 input was a wakeup source + */ +//@{ +#define BP_LLWU_F2_WUF14 (6U) //!< Bit position for LLWU_F2_WUF14. +#define BM_LLWU_F2_WUF14 (0x40U) //!< Bit mask for LLWU_F2_WUF14. +#define BS_LLWU_F2_WUF14 (1U) //!< Bit field size in bits for LLWU_F2_WUF14. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F2_WUF14 field. +#define BR_LLWU_F2_WUF14 (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF14)) +#endif + +//! @brief Format value for bitfield LLWU_F2_WUF14. +#define BF_LLWU_F2_WUF14(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F2_WUF14), uint8_t) & BM_LLWU_F2_WUF14) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF14 field to a new value. +#define BW_LLWU_F2_WUF14(v) (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF14) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_F2, field WUF15[7] (W1C) + * + * Indicates that an enabled external wakeup pin was a source of exiting a + * low-leakage power mode. To clear the flag, write a 1 to WUF15. + * + * Values: + * - 0 - LLWU_P15 input was not a wakeup source + * - 1 - LLWU_P15 input was a wakeup source + */ +//@{ +#define BP_LLWU_F2_WUF15 (7U) //!< Bit position for LLWU_F2_WUF15. +#define BM_LLWU_F2_WUF15 (0x80U) //!< Bit mask for LLWU_F2_WUF15. +#define BS_LLWU_F2_WUF15 (1U) //!< Bit field size in bits for LLWU_F2_WUF15. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F2_WUF15 field. +#define BR_LLWU_F2_WUF15 (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF15)) +#endif + +//! @brief Format value for bitfield LLWU_F2_WUF15. +#define BF_LLWU_F2_WUF15(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_F2_WUF15), uint8_t) & BM_LLWU_F2_WUF15) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WUF15 field to a new value. +#define BW_LLWU_F2_WUF15(v) (BITBAND_ACCESS8(HW_LLWU_F2_ADDR, BP_LLWU_F2_WUF15) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_F3 - LLWU Flag 3 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_F3 - LLWU Flag 3 register (RO) + * + * Reset value: 0x00U + * + * LLWU_F3 contains the wakeup flags indicating which internal wakeup source + * caused the MCU to exit LLS or VLLS mode. For LLS, this is the source causing the + * CPU interrupt flow. For VLLS, this is the source causing the MCU reset flow. + * For internal peripherals that are capable of running in a low-leakage power + * mode, such as a real time clock module or CMP module, the flag from the + * associated peripheral is accessible as the MWUFx bit. The flag will need to be cleared + * in the peripheral instead of writing a 1 to the MWUFx bit. This register is + * reset on Chip Reset not VLLS and by reset types that trigger Chip Reset not + * VLLS. It is unaffected by reset types that do not trigger Chip Reset not VLLS. See + * the IntroductionInformation found here describes the registers of the Reset + * Control Module (RCM). The RCM implements many of the reset functions for the + * chip. See the chip's reset chapter for more information. details for more + * information. + */ +typedef union _hw_llwu_f3 +{ + uint8_t U; + struct _hw_llwu_f3_bitfields + { + uint8_t MWUF0 : 1; //!< [0] Wakeup flag For module 0 + uint8_t MWUF1 : 1; //!< [1] Wakeup flag For module 1 + uint8_t MWUF2 : 1; //!< [2] Wakeup flag For module 2 + uint8_t MWUF3 : 1; //!< [3] Wakeup flag For module 3 + uint8_t MWUF4 : 1; //!< [4] Wakeup flag For module 4 + uint8_t MWUF5 : 1; //!< [5] Wakeup flag For module 5 + uint8_t MWUF6 : 1; //!< [6] Wakeup flag For module 6 + uint8_t MWUF7 : 1; //!< [7] Wakeup flag For module 7 + } B; +} hw_llwu_f3_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_F3 register + */ +//@{ +#define HW_LLWU_F3_ADDR (REGS_LLWU_BASE + 0x7U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_F3 (*(__I hw_llwu_f3_t *) HW_LLWU_F3_ADDR) +#define HW_LLWU_F3_RD() (HW_LLWU_F3.U) +#endif +//@} + +/* + * Constants & macros for individual LLWU_F3 bitfields + */ + +/*! + * @name Register LLWU_F3, field MWUF0[0] (RO) + * + * Indicates that an enabled internal peripheral was a source of exiting a + * low-leakage power mode. To clear the flag, follow the internal peripheral flag + * clearing mechanism. + * + * Values: + * - 0 - Module 0 input was not a wakeup source + * - 1 - Module 0 input was a wakeup source + */ +//@{ +#define BP_LLWU_F3_MWUF0 (0U) //!< Bit position for LLWU_F3_MWUF0. +#define BM_LLWU_F3_MWUF0 (0x01U) //!< Bit mask for LLWU_F3_MWUF0. +#define BS_LLWU_F3_MWUF0 (1U) //!< Bit field size in bits for LLWU_F3_MWUF0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F3_MWUF0 field. +#define BR_LLWU_F3_MWUF0 (BITBAND_ACCESS8(HW_LLWU_F3_ADDR, BP_LLWU_F3_MWUF0)) +#endif +//@} + +/*! + * @name Register LLWU_F3, field MWUF1[1] (RO) + * + * Indicates that an enabled internal peripheral was a source of exiting a + * low-leakage power mode. To clear the flag, follow the internal peripheral flag + * clearing mechanism. + * + * Values: + * - 0 - Module 1 input was not a wakeup source + * - 1 - Module 1 input was a wakeup source + */ +//@{ +#define BP_LLWU_F3_MWUF1 (1U) //!< Bit position for LLWU_F3_MWUF1. +#define BM_LLWU_F3_MWUF1 (0x02U) //!< Bit mask for LLWU_F3_MWUF1. +#define BS_LLWU_F3_MWUF1 (1U) //!< Bit field size in bits for LLWU_F3_MWUF1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F3_MWUF1 field. +#define BR_LLWU_F3_MWUF1 (BITBAND_ACCESS8(HW_LLWU_F3_ADDR, BP_LLWU_F3_MWUF1)) +#endif +//@} + +/*! + * @name Register LLWU_F3, field MWUF2[2] (RO) + * + * Indicates that an enabled internal peripheral was a source of exiting a + * low-leakage power mode. To clear the flag, follow the internal peripheral flag + * clearing mechanism. + * + * Values: + * - 0 - Module 2 input was not a wakeup source + * - 1 - Module 2 input was a wakeup source + */ +//@{ +#define BP_LLWU_F3_MWUF2 (2U) //!< Bit position for LLWU_F3_MWUF2. +#define BM_LLWU_F3_MWUF2 (0x04U) //!< Bit mask for LLWU_F3_MWUF2. +#define BS_LLWU_F3_MWUF2 (1U) //!< Bit field size in bits for LLWU_F3_MWUF2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F3_MWUF2 field. +#define BR_LLWU_F3_MWUF2 (BITBAND_ACCESS8(HW_LLWU_F3_ADDR, BP_LLWU_F3_MWUF2)) +#endif +//@} + +/*! + * @name Register LLWU_F3, field MWUF3[3] (RO) + * + * Indicates that an enabled internal peripheral was a source of exiting a + * low-leakage power mode. To clear the flag, follow the internal peripheral flag + * clearing mechanism. + * + * Values: + * - 0 - Module 3 input was not a wakeup source + * - 1 - Module 3 input was a wakeup source + */ +//@{ +#define BP_LLWU_F3_MWUF3 (3U) //!< Bit position for LLWU_F3_MWUF3. +#define BM_LLWU_F3_MWUF3 (0x08U) //!< Bit mask for LLWU_F3_MWUF3. +#define BS_LLWU_F3_MWUF3 (1U) //!< Bit field size in bits for LLWU_F3_MWUF3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F3_MWUF3 field. +#define BR_LLWU_F3_MWUF3 (BITBAND_ACCESS8(HW_LLWU_F3_ADDR, BP_LLWU_F3_MWUF3)) +#endif +//@} + +/*! + * @name Register LLWU_F3, field MWUF4[4] (RO) + * + * Indicates that an enabled internal peripheral was a source of exiting a + * low-leakage power mode. To clear the flag, follow the internal peripheral flag + * clearing mechanism. + * + * Values: + * - 0 - Module 4 input was not a wakeup source + * - 1 - Module 4 input was a wakeup source + */ +//@{ +#define BP_LLWU_F3_MWUF4 (4U) //!< Bit position for LLWU_F3_MWUF4. +#define BM_LLWU_F3_MWUF4 (0x10U) //!< Bit mask for LLWU_F3_MWUF4. +#define BS_LLWU_F3_MWUF4 (1U) //!< Bit field size in bits for LLWU_F3_MWUF4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F3_MWUF4 field. +#define BR_LLWU_F3_MWUF4 (BITBAND_ACCESS8(HW_LLWU_F3_ADDR, BP_LLWU_F3_MWUF4)) +#endif +//@} + +/*! + * @name Register LLWU_F3, field MWUF5[5] (RO) + * + * Indicates that an enabled internal peripheral was a source of exiting a + * low-leakage power mode. To clear the flag, follow the internal peripheral flag + * clearing mechanism. + * + * Values: + * - 0 - Module 5 input was not a wakeup source + * - 1 - Module 5 input was a wakeup source + */ +//@{ +#define BP_LLWU_F3_MWUF5 (5U) //!< Bit position for LLWU_F3_MWUF5. +#define BM_LLWU_F3_MWUF5 (0x20U) //!< Bit mask for LLWU_F3_MWUF5. +#define BS_LLWU_F3_MWUF5 (1U) //!< Bit field size in bits for LLWU_F3_MWUF5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F3_MWUF5 field. +#define BR_LLWU_F3_MWUF5 (BITBAND_ACCESS8(HW_LLWU_F3_ADDR, BP_LLWU_F3_MWUF5)) +#endif +//@} + +/*! + * @name Register LLWU_F3, field MWUF6[6] (RO) + * + * Indicates that an enabled internal peripheral was a source of exiting a + * low-leakage power mode. To clear the flag, follow the internal peripheral flag + * clearing mechanism. + * + * Values: + * - 0 - Module 6 input was not a wakeup source + * - 1 - Module 6 input was a wakeup source + */ +//@{ +#define BP_LLWU_F3_MWUF6 (6U) //!< Bit position for LLWU_F3_MWUF6. +#define BM_LLWU_F3_MWUF6 (0x40U) //!< Bit mask for LLWU_F3_MWUF6. +#define BS_LLWU_F3_MWUF6 (1U) //!< Bit field size in bits for LLWU_F3_MWUF6. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F3_MWUF6 field. +#define BR_LLWU_F3_MWUF6 (BITBAND_ACCESS8(HW_LLWU_F3_ADDR, BP_LLWU_F3_MWUF6)) +#endif +//@} + +/*! + * @name Register LLWU_F3, field MWUF7[7] (RO) + * + * Indicates that an enabled internal peripheral was a source of exiting a + * low-leakage power mode. To clear the flag, follow the internal peripheral flag + * clearing mechanism. + * + * Values: + * - 0 - Module 7 input was not a wakeup source + * - 1 - Module 7 input was a wakeup source + */ +//@{ +#define BP_LLWU_F3_MWUF7 (7U) //!< Bit position for LLWU_F3_MWUF7. +#define BM_LLWU_F3_MWUF7 (0x80U) //!< Bit mask for LLWU_F3_MWUF7. +#define BS_LLWU_F3_MWUF7 (1U) //!< Bit field size in bits for LLWU_F3_MWUF7. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_F3_MWUF7 field. +#define BR_LLWU_F3_MWUF7 (BITBAND_ACCESS8(HW_LLWU_F3_ADDR, BP_LLWU_F3_MWUF7)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_FILT1 - LLWU Pin Filter 1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_FILT1 - LLWU Pin Filter 1 register (RW) + * + * Reset value: 0x00U + * + * LLWU_FILT1 is a control and status register that is used to enable/disable + * the digital filter 1 features for an external pin. This register is reset on + * Chip Reset not VLLS and by reset types that trigger Chip Reset not VLLS. It is + * unaffected by reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control + * Module (RCM). The RCM implements many of the reset functions for the chip. See + * the chip's reset chapter for more information. details for more information. + */ +typedef union _hw_llwu_filt1 +{ + uint8_t U; + struct _hw_llwu_filt1_bitfields + { + uint8_t FILTSEL : 4; //!< [3:0] Filter Pin Select + uint8_t RESERVED0 : 1; //!< [4] + uint8_t FILTE : 2; //!< [6:5] Digital Filter On External Pin + uint8_t FILTF : 1; //!< [7] Filter Detect Flag + } B; +} hw_llwu_filt1_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_FILT1 register + */ +//@{ +#define HW_LLWU_FILT1_ADDR (REGS_LLWU_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_FILT1 (*(__IO hw_llwu_filt1_t *) HW_LLWU_FILT1_ADDR) +#define HW_LLWU_FILT1_RD() (HW_LLWU_FILT1.U) +#define HW_LLWU_FILT1_WR(v) (HW_LLWU_FILT1.U = (v)) +#define HW_LLWU_FILT1_SET(v) (HW_LLWU_FILT1_WR(HW_LLWU_FILT1_RD() | (v))) +#define HW_LLWU_FILT1_CLR(v) (HW_LLWU_FILT1_WR(HW_LLWU_FILT1_RD() & ~(v))) +#define HW_LLWU_FILT1_TOG(v) (HW_LLWU_FILT1_WR(HW_LLWU_FILT1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_FILT1 bitfields + */ + +/*! + * @name Register LLWU_FILT1, field FILTSEL[3:0] (RW) + * + * Selects 1 out of the 16 wakeup pins to be muxed into the filter. + * + * Values: + * - 0000 - Select LLWU_P0 for filter + * - 1111 - Select LLWU_P15 for filter + */ +//@{ +#define BP_LLWU_FILT1_FILTSEL (0U) //!< Bit position for LLWU_FILT1_FILTSEL. +#define BM_LLWU_FILT1_FILTSEL (0x0FU) //!< Bit mask for LLWU_FILT1_FILTSEL. +#define BS_LLWU_FILT1_FILTSEL (4U) //!< Bit field size in bits for LLWU_FILT1_FILTSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_FILT1_FILTSEL field. +#define BR_LLWU_FILT1_FILTSEL (HW_LLWU_FILT1.B.FILTSEL) +#endif + +//! @brief Format value for bitfield LLWU_FILT1_FILTSEL. +#define BF_LLWU_FILT1_FILTSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_FILT1_FILTSEL), uint8_t) & BM_LLWU_FILT1_FILTSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FILTSEL field to a new value. +#define BW_LLWU_FILT1_FILTSEL(v) (HW_LLWU_FILT1_WR((HW_LLWU_FILT1_RD() & ~BM_LLWU_FILT1_FILTSEL) | BF_LLWU_FILT1_FILTSEL(v))) +#endif +//@} + +/*! + * @name Register LLWU_FILT1, field FILTE[6:5] (RW) + * + * Controls the digital filter options for the external pin detect. + * + * Values: + * - 00 - Filter disabled + * - 01 - Filter posedge detect enabled + * - 10 - Filter negedge detect enabled + * - 11 - Filter any edge detect enabled + */ +//@{ +#define BP_LLWU_FILT1_FILTE (5U) //!< Bit position for LLWU_FILT1_FILTE. +#define BM_LLWU_FILT1_FILTE (0x60U) //!< Bit mask for LLWU_FILT1_FILTE. +#define BS_LLWU_FILT1_FILTE (2U) //!< Bit field size in bits for LLWU_FILT1_FILTE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_FILT1_FILTE field. +#define BR_LLWU_FILT1_FILTE (HW_LLWU_FILT1.B.FILTE) +#endif + +//! @brief Format value for bitfield LLWU_FILT1_FILTE. +#define BF_LLWU_FILT1_FILTE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_FILT1_FILTE), uint8_t) & BM_LLWU_FILT1_FILTE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FILTE field to a new value. +#define BW_LLWU_FILT1_FILTE(v) (HW_LLWU_FILT1_WR((HW_LLWU_FILT1_RD() & ~BM_LLWU_FILT1_FILTE) | BF_LLWU_FILT1_FILTE(v))) +#endif +//@} + +/*! + * @name Register LLWU_FILT1, field FILTF[7] (W1C) + * + * Indicates that the filtered external wakeup pin, selected by FILTSEL, was a + * source of exiting a low-leakage power mode. To clear the flag write a one to + * FILTF. + * + * Values: + * - 0 - Pin Filter 1 was not a wakeup source + * - 1 - Pin Filter 1 was a wakeup source + */ +//@{ +#define BP_LLWU_FILT1_FILTF (7U) //!< Bit position for LLWU_FILT1_FILTF. +#define BM_LLWU_FILT1_FILTF (0x80U) //!< Bit mask for LLWU_FILT1_FILTF. +#define BS_LLWU_FILT1_FILTF (1U) //!< Bit field size in bits for LLWU_FILT1_FILTF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_FILT1_FILTF field. +#define BR_LLWU_FILT1_FILTF (BITBAND_ACCESS8(HW_LLWU_FILT1_ADDR, BP_LLWU_FILT1_FILTF)) +#endif + +//! @brief Format value for bitfield LLWU_FILT1_FILTF. +#define BF_LLWU_FILT1_FILTF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_FILT1_FILTF), uint8_t) & BM_LLWU_FILT1_FILTF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FILTF field to a new value. +#define BW_LLWU_FILT1_FILTF(v) (BITBAND_ACCESS8(HW_LLWU_FILT1_ADDR, BP_LLWU_FILT1_FILTF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_FILT2 - LLWU Pin Filter 2 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_FILT2 - LLWU Pin Filter 2 register (RW) + * + * Reset value: 0x00U + * + * LLWU_FILT2 is a control and status register that is used to enable/disable + * the digital filter 2 features for an external pin. This register is reset on + * Chip Reset not VLLS and by reset types that trigger Chip Reset not VLLS. It is + * unaffected by reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control + * Module (RCM). The RCM implements many of the reset functions for the chip. See + * the chip's reset chapter for more information. details for more information. + */ +typedef union _hw_llwu_filt2 +{ + uint8_t U; + struct _hw_llwu_filt2_bitfields + { + uint8_t FILTSEL : 4; //!< [3:0] Filter Pin Select + uint8_t RESERVED0 : 1; //!< [4] + uint8_t FILTE : 2; //!< [6:5] Digital Filter On External Pin + uint8_t FILTF : 1; //!< [7] Filter Detect Flag + } B; +} hw_llwu_filt2_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_FILT2 register + */ +//@{ +#define HW_LLWU_FILT2_ADDR (REGS_LLWU_BASE + 0x9U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_FILT2 (*(__IO hw_llwu_filt2_t *) HW_LLWU_FILT2_ADDR) +#define HW_LLWU_FILT2_RD() (HW_LLWU_FILT2.U) +#define HW_LLWU_FILT2_WR(v) (HW_LLWU_FILT2.U = (v)) +#define HW_LLWU_FILT2_SET(v) (HW_LLWU_FILT2_WR(HW_LLWU_FILT2_RD() | (v))) +#define HW_LLWU_FILT2_CLR(v) (HW_LLWU_FILT2_WR(HW_LLWU_FILT2_RD() & ~(v))) +#define HW_LLWU_FILT2_TOG(v) (HW_LLWU_FILT2_WR(HW_LLWU_FILT2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_FILT2 bitfields + */ + +/*! + * @name Register LLWU_FILT2, field FILTSEL[3:0] (RW) + * + * Selects 1 out of the 16 wakeup pins to be muxed into the filter. + * + * Values: + * - 0000 - Select LLWU_P0 for filter + * - 1111 - Select LLWU_P15 for filter + */ +//@{ +#define BP_LLWU_FILT2_FILTSEL (0U) //!< Bit position for LLWU_FILT2_FILTSEL. +#define BM_LLWU_FILT2_FILTSEL (0x0FU) //!< Bit mask for LLWU_FILT2_FILTSEL. +#define BS_LLWU_FILT2_FILTSEL (4U) //!< Bit field size in bits for LLWU_FILT2_FILTSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_FILT2_FILTSEL field. +#define BR_LLWU_FILT2_FILTSEL (HW_LLWU_FILT2.B.FILTSEL) +#endif + +//! @brief Format value for bitfield LLWU_FILT2_FILTSEL. +#define BF_LLWU_FILT2_FILTSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_FILT2_FILTSEL), uint8_t) & BM_LLWU_FILT2_FILTSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FILTSEL field to a new value. +#define BW_LLWU_FILT2_FILTSEL(v) (HW_LLWU_FILT2_WR((HW_LLWU_FILT2_RD() & ~BM_LLWU_FILT2_FILTSEL) | BF_LLWU_FILT2_FILTSEL(v))) +#endif +//@} + +/*! + * @name Register LLWU_FILT2, field FILTE[6:5] (RW) + * + * Controls the digital filter options for the external pin detect. + * + * Values: + * - 00 - Filter disabled + * - 01 - Filter posedge detect enabled + * - 10 - Filter negedge detect enabled + * - 11 - Filter any edge detect enabled + */ +//@{ +#define BP_LLWU_FILT2_FILTE (5U) //!< Bit position for LLWU_FILT2_FILTE. +#define BM_LLWU_FILT2_FILTE (0x60U) //!< Bit mask for LLWU_FILT2_FILTE. +#define BS_LLWU_FILT2_FILTE (2U) //!< Bit field size in bits for LLWU_FILT2_FILTE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_FILT2_FILTE field. +#define BR_LLWU_FILT2_FILTE (HW_LLWU_FILT2.B.FILTE) +#endif + +//! @brief Format value for bitfield LLWU_FILT2_FILTE. +#define BF_LLWU_FILT2_FILTE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_FILT2_FILTE), uint8_t) & BM_LLWU_FILT2_FILTE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FILTE field to a new value. +#define BW_LLWU_FILT2_FILTE(v) (HW_LLWU_FILT2_WR((HW_LLWU_FILT2_RD() & ~BM_LLWU_FILT2_FILTE) | BF_LLWU_FILT2_FILTE(v))) +#endif +//@} + +/*! + * @name Register LLWU_FILT2, field FILTF[7] (W1C) + * + * Indicates that the filtered external wakeup pin, selected by FILTSEL, was a + * source of exiting a low-leakage power mode. To clear the flag write a one to + * FILTF. + * + * Values: + * - 0 - Pin Filter 2 was not a wakeup source + * - 1 - Pin Filter 2 was a wakeup source + */ +//@{ +#define BP_LLWU_FILT2_FILTF (7U) //!< Bit position for LLWU_FILT2_FILTF. +#define BM_LLWU_FILT2_FILTF (0x80U) //!< Bit mask for LLWU_FILT2_FILTF. +#define BS_LLWU_FILT2_FILTF (1U) //!< Bit field size in bits for LLWU_FILT2_FILTF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_FILT2_FILTF field. +#define BR_LLWU_FILT2_FILTF (BITBAND_ACCESS8(HW_LLWU_FILT2_ADDR, BP_LLWU_FILT2_FILTF)) +#endif + +//! @brief Format value for bitfield LLWU_FILT2_FILTF. +#define BF_LLWU_FILT2_FILTF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_FILT2_FILTF), uint8_t) & BM_LLWU_FILT2_FILTF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FILTF field to a new value. +#define BW_LLWU_FILT2_FILTF(v) (BITBAND_ACCESS8(HW_LLWU_FILT2_ADDR, BP_LLWU_FILT2_FILTF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LLWU_RST - LLWU Reset Enable register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LLWU_RST - LLWU Reset Enable register (RW) + * + * Reset value: 0x02U + * + * LLWU_RST is a control register that is used to enable/disable the digital + * filter for the external pin detect and RESET pin. This register is reset on Chip + * Reset not VLLS and by reset types that trigger Chip Reset not VLLS. It is + * unaffected by reset types that do not trigger Chip Reset not VLLS. See the + * IntroductionInformation found here describes the registers of the Reset Control + * Module (RCM). The RCM implements many of the reset functions for the chip. See the + * chip's reset chapter for more information. details for more information. + */ +typedef union _hw_llwu_rst +{ + uint8_t U; + struct _hw_llwu_rst_bitfields + { + uint8_t RSTFILT : 1; //!< [0] Digital Filter On RESET Pin + uint8_t LLRSTE : 1; //!< [1] Low-Leakage Mode RESET Enable + uint8_t RESERVED0 : 6; //!< [7:2] + } B; +} hw_llwu_rst_t; +#endif + +/*! + * @name Constants and macros for entire LLWU_RST register + */ +//@{ +#define HW_LLWU_RST_ADDR (REGS_LLWU_BASE + 0xAU) + +#ifndef __LANGUAGE_ASM__ +#define HW_LLWU_RST (*(__IO hw_llwu_rst_t *) HW_LLWU_RST_ADDR) +#define HW_LLWU_RST_RD() (HW_LLWU_RST.U) +#define HW_LLWU_RST_WR(v) (HW_LLWU_RST.U = (v)) +#define HW_LLWU_RST_SET(v) (HW_LLWU_RST_WR(HW_LLWU_RST_RD() | (v))) +#define HW_LLWU_RST_CLR(v) (HW_LLWU_RST_WR(HW_LLWU_RST_RD() & ~(v))) +#define HW_LLWU_RST_TOG(v) (HW_LLWU_RST_WR(HW_LLWU_RST_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LLWU_RST bitfields + */ + +/*! + * @name Register LLWU_RST, field RSTFILT[0] (RW) + * + * Enables the digital filter for the RESET pin during LLS, VLLS3, VLLS2, or + * VLLS1 modes. + * + * Values: + * - 0 - Filter not enabled + * - 1 - Filter enabled + */ +//@{ +#define BP_LLWU_RST_RSTFILT (0U) //!< Bit position for LLWU_RST_RSTFILT. +#define BM_LLWU_RST_RSTFILT (0x01U) //!< Bit mask for LLWU_RST_RSTFILT. +#define BS_LLWU_RST_RSTFILT (1U) //!< Bit field size in bits for LLWU_RST_RSTFILT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_RST_RSTFILT field. +#define BR_LLWU_RST_RSTFILT (BITBAND_ACCESS8(HW_LLWU_RST_ADDR, BP_LLWU_RST_RSTFILT)) +#endif + +//! @brief Format value for bitfield LLWU_RST_RSTFILT. +#define BF_LLWU_RST_RSTFILT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_RST_RSTFILT), uint8_t) & BM_LLWU_RST_RSTFILT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSTFILT field to a new value. +#define BW_LLWU_RST_RSTFILT(v) (BITBAND_ACCESS8(HW_LLWU_RST_ADDR, BP_LLWU_RST_RSTFILT) = (v)) +#endif +//@} + +/*! + * @name Register LLWU_RST, field LLRSTE[1] (RW) + * + * This bit must be set to allow the device to be reset while in a low-leakage + * power mode. On devices where Reset is not a dedicated pin, the RESET pin must + * also be enabled in the explicit port mux control. + * + * Values: + * - 0 - RESET pin not enabled as a leakage mode exit source + * - 1 - RESET pin enabled as a low leakage mode exit source + */ +//@{ +#define BP_LLWU_RST_LLRSTE (1U) //!< Bit position for LLWU_RST_LLRSTE. +#define BM_LLWU_RST_LLRSTE (0x02U) //!< Bit mask for LLWU_RST_LLRSTE. +#define BS_LLWU_RST_LLRSTE (1U) //!< Bit field size in bits for LLWU_RST_LLRSTE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LLWU_RST_LLRSTE field. +#define BR_LLWU_RST_LLRSTE (BITBAND_ACCESS8(HW_LLWU_RST_ADDR, BP_LLWU_RST_LLRSTE)) +#endif + +//! @brief Format value for bitfield LLWU_RST_LLRSTE. +#define BF_LLWU_RST_LLRSTE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_LLWU_RST_LLRSTE), uint8_t) & BM_LLWU_RST_LLRSTE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LLRSTE field to a new value. +#define BW_LLWU_RST_LLRSTE(v) (BITBAND_ACCESS8(HW_LLWU_RST_ADDR, BP_LLWU_RST_LLRSTE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_llwu_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All LLWU module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_llwu +{ + __IO hw_llwu_pe1_t PE1; //!< [0x0] LLWU Pin Enable 1 register + __IO hw_llwu_pe2_t PE2; //!< [0x1] LLWU Pin Enable 2 register + __IO hw_llwu_pe3_t PE3; //!< [0x2] LLWU Pin Enable 3 register + __IO hw_llwu_pe4_t PE4; //!< [0x3] LLWU Pin Enable 4 register + __IO hw_llwu_me_t ME; //!< [0x4] LLWU Module Enable register + __IO hw_llwu_f1_t F1; //!< [0x5] LLWU Flag 1 register + __IO hw_llwu_f2_t F2; //!< [0x6] LLWU Flag 2 register + __I hw_llwu_f3_t F3; //!< [0x7] LLWU Flag 3 register + __IO hw_llwu_filt1_t FILT1; //!< [0x8] LLWU Pin Filter 1 register + __IO hw_llwu_filt2_t FILT2; //!< [0x9] LLWU Pin Filter 2 register + __IO hw_llwu_rst_t RST; //!< [0xA] LLWU Reset Enable register +} hw_llwu_t; +#pragma pack() + +//! @brief Macro to access all LLWU registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_LLWU</code>. +#define HW_LLWU (*(hw_llwu_t *) REGS_LLWU_BASE) +#endif + +#endif // __HW_LLWU_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_lptmr.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,629 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_LPTMR_REGISTERS_H__ +#define __HW_LPTMR_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 LPTMR + * + * Low Power Timer + * + * Registers defined in this header file: + * - HW_LPTMR_CSR - Low Power Timer Control Status Register + * - HW_LPTMR_PSR - Low Power Timer Prescale Register + * - HW_LPTMR_CMR - Low Power Timer Compare Register + * - HW_LPTMR_CNR - Low Power Timer Counter Register + * + * - hw_lptmr_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_LPTMR_BASE +#define HW_LPTMR_INSTANCE_COUNT (1U) //!< Number of instances of the LPTMR module. +#define REGS_LPTMR_BASE (0x40040000U) //!< Base address for LPTMR0. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LPTMR_CSR - Low Power Timer Control Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LPTMR_CSR - Low Power Timer Control Status Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_lptmr_csr +{ + uint32_t U; + struct _hw_lptmr_csr_bitfields + { + uint32_t TEN : 1; //!< [0] Timer Enable + uint32_t TMS : 1; //!< [1] Timer Mode Select + uint32_t TFC : 1; //!< [2] Timer Free-Running Counter + uint32_t TPP : 1; //!< [3] Timer Pin Polarity + uint32_t TPS : 2; //!< [5:4] Timer Pin Select + uint32_t TIE : 1; //!< [6] Timer Interrupt Enable + uint32_t TCF : 1; //!< [7] Timer Compare Flag + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_lptmr_csr_t; +#endif + +/*! + * @name Constants and macros for entire LPTMR_CSR register + */ +//@{ +#define HW_LPTMR_CSR_ADDR (REGS_LPTMR_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LPTMR_CSR (*(__IO hw_lptmr_csr_t *) HW_LPTMR_CSR_ADDR) +#define HW_LPTMR_CSR_RD() (HW_LPTMR_CSR.U) +#define HW_LPTMR_CSR_WR(v) (HW_LPTMR_CSR.U = (v)) +#define HW_LPTMR_CSR_SET(v) (HW_LPTMR_CSR_WR(HW_LPTMR_CSR_RD() | (v))) +#define HW_LPTMR_CSR_CLR(v) (HW_LPTMR_CSR_WR(HW_LPTMR_CSR_RD() & ~(v))) +#define HW_LPTMR_CSR_TOG(v) (HW_LPTMR_CSR_WR(HW_LPTMR_CSR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LPTMR_CSR bitfields + */ + +/*! + * @name Register LPTMR_CSR, field TEN[0] (RW) + * + * When TEN is clear, it resets the LPTMR internal logic, including the CNR and + * TCF. When TEN is set, the LPTMR is enabled. While writing 1 to this field, + * CSR[5:1] must not be altered. + * + * Values: + * - 0 - LPTMR is disabled and internal logic is reset. + * - 1 - LPTMR is enabled. + */ +//@{ +#define BP_LPTMR_CSR_TEN (0U) //!< Bit position for LPTMR_CSR_TEN. +#define BM_LPTMR_CSR_TEN (0x00000001U) //!< Bit mask for LPTMR_CSR_TEN. +#define BS_LPTMR_CSR_TEN (1U) //!< Bit field size in bits for LPTMR_CSR_TEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_CSR_TEN field. +#define BR_LPTMR_CSR_TEN (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TEN)) +#endif + +//! @brief Format value for bitfield LPTMR_CSR_TEN. +#define BF_LPTMR_CSR_TEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_CSR_TEN), uint32_t) & BM_LPTMR_CSR_TEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TEN field to a new value. +#define BW_LPTMR_CSR_TEN(v) (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TEN) = (v)) +#endif +//@} + +/*! + * @name Register LPTMR_CSR, field TMS[1] (RW) + * + * Configures the mode of the LPTMR. TMS must be altered only when the LPTMR is + * disabled. + * + * Values: + * - 0 - Time Counter mode. + * - 1 - Pulse Counter mode. + */ +//@{ +#define BP_LPTMR_CSR_TMS (1U) //!< Bit position for LPTMR_CSR_TMS. +#define BM_LPTMR_CSR_TMS (0x00000002U) //!< Bit mask for LPTMR_CSR_TMS. +#define BS_LPTMR_CSR_TMS (1U) //!< Bit field size in bits for LPTMR_CSR_TMS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_CSR_TMS field. +#define BR_LPTMR_CSR_TMS (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TMS)) +#endif + +//! @brief Format value for bitfield LPTMR_CSR_TMS. +#define BF_LPTMR_CSR_TMS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_CSR_TMS), uint32_t) & BM_LPTMR_CSR_TMS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TMS field to a new value. +#define BW_LPTMR_CSR_TMS(v) (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TMS) = (v)) +#endif +//@} + +/*! + * @name Register LPTMR_CSR, field TFC[2] (RW) + * + * When clear, TFC configures the CNR to reset whenever TCF is set. When set, + * TFC configures the CNR to reset on overflow. TFC must be altered only when the + * LPTMR is disabled. + * + * Values: + * - 0 - CNR is reset whenever TCF is set. + * - 1 - CNR is reset on overflow. + */ +//@{ +#define BP_LPTMR_CSR_TFC (2U) //!< Bit position for LPTMR_CSR_TFC. +#define BM_LPTMR_CSR_TFC (0x00000004U) //!< Bit mask for LPTMR_CSR_TFC. +#define BS_LPTMR_CSR_TFC (1U) //!< Bit field size in bits for LPTMR_CSR_TFC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_CSR_TFC field. +#define BR_LPTMR_CSR_TFC (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TFC)) +#endif + +//! @brief Format value for bitfield LPTMR_CSR_TFC. +#define BF_LPTMR_CSR_TFC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_CSR_TFC), uint32_t) & BM_LPTMR_CSR_TFC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TFC field to a new value. +#define BW_LPTMR_CSR_TFC(v) (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TFC) = (v)) +#endif +//@} + +/*! + * @name Register LPTMR_CSR, field TPP[3] (RW) + * + * Configures the polarity of the input source in Pulse Counter mode. TPP must + * be changed only when the LPTMR is disabled. + * + * Values: + * - 0 - Pulse Counter input source is active-high, and the CNR will increment + * on the rising-edge. + * - 1 - Pulse Counter input source is active-low, and the CNR will increment on + * the falling-edge. + */ +//@{ +#define BP_LPTMR_CSR_TPP (3U) //!< Bit position for LPTMR_CSR_TPP. +#define BM_LPTMR_CSR_TPP (0x00000008U) //!< Bit mask for LPTMR_CSR_TPP. +#define BS_LPTMR_CSR_TPP (1U) //!< Bit field size in bits for LPTMR_CSR_TPP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_CSR_TPP field. +#define BR_LPTMR_CSR_TPP (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TPP)) +#endif + +//! @brief Format value for bitfield LPTMR_CSR_TPP. +#define BF_LPTMR_CSR_TPP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_CSR_TPP), uint32_t) & BM_LPTMR_CSR_TPP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TPP field to a new value. +#define BW_LPTMR_CSR_TPP(v) (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TPP) = (v)) +#endif +//@} + +/*! + * @name Register LPTMR_CSR, field TPS[5:4] (RW) + * + * Configures the input source to be used in Pulse Counter mode. TPS must be + * altered only when the LPTMR is disabled. The input connections vary by device. + * See the chip configuration details for information on the connections to these + * inputs. + * + * Values: + * - 00 - Pulse counter input 0 is selected. + * - 01 - Pulse counter input 1 is selected. + * - 10 - Pulse counter input 2 is selected. + * - 11 - Pulse counter input 3 is selected. + */ +//@{ +#define BP_LPTMR_CSR_TPS (4U) //!< Bit position for LPTMR_CSR_TPS. +#define BM_LPTMR_CSR_TPS (0x00000030U) //!< Bit mask for LPTMR_CSR_TPS. +#define BS_LPTMR_CSR_TPS (2U) //!< Bit field size in bits for LPTMR_CSR_TPS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_CSR_TPS field. +#define BR_LPTMR_CSR_TPS (HW_LPTMR_CSR.B.TPS) +#endif + +//! @brief Format value for bitfield LPTMR_CSR_TPS. +#define BF_LPTMR_CSR_TPS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_CSR_TPS), uint32_t) & BM_LPTMR_CSR_TPS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TPS field to a new value. +#define BW_LPTMR_CSR_TPS(v) (HW_LPTMR_CSR_WR((HW_LPTMR_CSR_RD() & ~BM_LPTMR_CSR_TPS) | BF_LPTMR_CSR_TPS(v))) +#endif +//@} + +/*! + * @name Register LPTMR_CSR, field TIE[6] (RW) + * + * When TIE is set, the LPTMR Interrupt is generated whenever TCF is also set. + * + * Values: + * - 0 - Timer interrupt disabled. + * - 1 - Timer interrupt enabled. + */ +//@{ +#define BP_LPTMR_CSR_TIE (6U) //!< Bit position for LPTMR_CSR_TIE. +#define BM_LPTMR_CSR_TIE (0x00000040U) //!< Bit mask for LPTMR_CSR_TIE. +#define BS_LPTMR_CSR_TIE (1U) //!< Bit field size in bits for LPTMR_CSR_TIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_CSR_TIE field. +#define BR_LPTMR_CSR_TIE (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TIE)) +#endif + +//! @brief Format value for bitfield LPTMR_CSR_TIE. +#define BF_LPTMR_CSR_TIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_CSR_TIE), uint32_t) & BM_LPTMR_CSR_TIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIE field to a new value. +#define BW_LPTMR_CSR_TIE(v) (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TIE) = (v)) +#endif +//@} + +/*! + * @name Register LPTMR_CSR, field TCF[7] (W1C) + * + * TCF is set when the LPTMR is enabled and the CNR equals the CMR and + * increments. TCF is cleared when the LPTMR is disabled or a logic 1 is written to it. + * + * Values: + * - 0 - The value of CNR is not equal to CMR and increments. + * - 1 - The value of CNR is equal to CMR and increments. + */ +//@{ +#define BP_LPTMR_CSR_TCF (7U) //!< Bit position for LPTMR_CSR_TCF. +#define BM_LPTMR_CSR_TCF (0x00000080U) //!< Bit mask for LPTMR_CSR_TCF. +#define BS_LPTMR_CSR_TCF (1U) //!< Bit field size in bits for LPTMR_CSR_TCF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_CSR_TCF field. +#define BR_LPTMR_CSR_TCF (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TCF)) +#endif + +//! @brief Format value for bitfield LPTMR_CSR_TCF. +#define BF_LPTMR_CSR_TCF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_CSR_TCF), uint32_t) & BM_LPTMR_CSR_TCF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCF field to a new value. +#define BW_LPTMR_CSR_TCF(v) (BITBAND_ACCESS32(HW_LPTMR_CSR_ADDR, BP_LPTMR_CSR_TCF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LPTMR_PSR - Low Power Timer Prescale Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LPTMR_PSR - Low Power Timer Prescale Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_lptmr_psr +{ + uint32_t U; + struct _hw_lptmr_psr_bitfields + { + uint32_t PCS : 2; //!< [1:0] Prescaler Clock Select + uint32_t PBYP : 1; //!< [2] Prescaler Bypass + uint32_t PRESCALE : 4; //!< [6:3] Prescale Value + uint32_t RESERVED0 : 25; //!< [31:7] + } B; +} hw_lptmr_psr_t; +#endif + +/*! + * @name Constants and macros for entire LPTMR_PSR register + */ +//@{ +#define HW_LPTMR_PSR_ADDR (REGS_LPTMR_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LPTMR_PSR (*(__IO hw_lptmr_psr_t *) HW_LPTMR_PSR_ADDR) +#define HW_LPTMR_PSR_RD() (HW_LPTMR_PSR.U) +#define HW_LPTMR_PSR_WR(v) (HW_LPTMR_PSR.U = (v)) +#define HW_LPTMR_PSR_SET(v) (HW_LPTMR_PSR_WR(HW_LPTMR_PSR_RD() | (v))) +#define HW_LPTMR_PSR_CLR(v) (HW_LPTMR_PSR_WR(HW_LPTMR_PSR_RD() & ~(v))) +#define HW_LPTMR_PSR_TOG(v) (HW_LPTMR_PSR_WR(HW_LPTMR_PSR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LPTMR_PSR bitfields + */ + +/*! + * @name Register LPTMR_PSR, field PCS[1:0] (RW) + * + * Selects the clock to be used by the LPTMR prescaler/glitch filter. PCS must + * be altered only when the LPTMR is disabled. The clock connections vary by + * device. See the chip configuration details for information on the connections to + * these inputs. + * + * Values: + * - 00 - Prescaler/glitch filter clock 0 selected. + * - 01 - Prescaler/glitch filter clock 1 selected. + * - 10 - Prescaler/glitch filter clock 2 selected. + * - 11 - Prescaler/glitch filter clock 3 selected. + */ +//@{ +#define BP_LPTMR_PSR_PCS (0U) //!< Bit position for LPTMR_PSR_PCS. +#define BM_LPTMR_PSR_PCS (0x00000003U) //!< Bit mask for LPTMR_PSR_PCS. +#define BS_LPTMR_PSR_PCS (2U) //!< Bit field size in bits for LPTMR_PSR_PCS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_PSR_PCS field. +#define BR_LPTMR_PSR_PCS (HW_LPTMR_PSR.B.PCS) +#endif + +//! @brief Format value for bitfield LPTMR_PSR_PCS. +#define BF_LPTMR_PSR_PCS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_PSR_PCS), uint32_t) & BM_LPTMR_PSR_PCS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PCS field to a new value. +#define BW_LPTMR_PSR_PCS(v) (HW_LPTMR_PSR_WR((HW_LPTMR_PSR_RD() & ~BM_LPTMR_PSR_PCS) | BF_LPTMR_PSR_PCS(v))) +#endif +//@} + +/*! + * @name Register LPTMR_PSR, field PBYP[2] (RW) + * + * When PBYP is set, the selected prescaler clock in Time Counter mode or + * selected input source in Pulse Counter mode directly clocks the CNR. When PBYP is + * clear, the CNR is clocked by the output of the prescaler/glitch filter. PBYP + * must be altered only when the LPTMR is disabled. + * + * Values: + * - 0 - Prescaler/glitch filter is enabled. + * - 1 - Prescaler/glitch filter is bypassed. + */ +//@{ +#define BP_LPTMR_PSR_PBYP (2U) //!< Bit position for LPTMR_PSR_PBYP. +#define BM_LPTMR_PSR_PBYP (0x00000004U) //!< Bit mask for LPTMR_PSR_PBYP. +#define BS_LPTMR_PSR_PBYP (1U) //!< Bit field size in bits for LPTMR_PSR_PBYP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_PSR_PBYP field. +#define BR_LPTMR_PSR_PBYP (BITBAND_ACCESS32(HW_LPTMR_PSR_ADDR, BP_LPTMR_PSR_PBYP)) +#endif + +//! @brief Format value for bitfield LPTMR_PSR_PBYP. +#define BF_LPTMR_PSR_PBYP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_PSR_PBYP), uint32_t) & BM_LPTMR_PSR_PBYP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PBYP field to a new value. +#define BW_LPTMR_PSR_PBYP(v) (BITBAND_ACCESS32(HW_LPTMR_PSR_ADDR, BP_LPTMR_PSR_PBYP) = (v)) +#endif +//@} + +/*! + * @name Register LPTMR_PSR, field PRESCALE[6:3] (RW) + * + * Configures the size of the Prescaler in Time Counter mode or width of the + * glitch filter in Pulse Counter mode. PRESCALE must be altered only when the LPTMR + * is disabled. + * + * Values: + * - 0000 - Prescaler divides the prescaler clock by 2; glitch filter does not + * support this configuration. + * - 0001 - Prescaler divides the prescaler clock by 4; glitch filter recognizes + * change on input pin after 2 rising clock edges. + * - 0010 - Prescaler divides the prescaler clock by 8; glitch filter recognizes + * change on input pin after 4 rising clock edges. + * - 0011 - Prescaler divides the prescaler clock by 16; glitch filter + * recognizes change on input pin after 8 rising clock edges. + * - 0100 - Prescaler divides the prescaler clock by 32; glitch filter + * recognizes change on input pin after 16 rising clock edges. + * - 0101 - Prescaler divides the prescaler clock by 64; glitch filter + * recognizes change on input pin after 32 rising clock edges. + * - 0110 - Prescaler divides the prescaler clock by 128; glitch filter + * recognizes change on input pin after 64 rising clock edges. + * - 0111 - Prescaler divides the prescaler clock by 256; glitch filter + * recognizes change on input pin after 128 rising clock edges. + * - 1000 - Prescaler divides the prescaler clock by 512; glitch filter + * recognizes change on input pin after 256 rising clock edges. + * - 1001 - Prescaler divides the prescaler clock by 1024; glitch filter + * recognizes change on input pin after 512 rising clock edges. + * - 1010 - Prescaler divides the prescaler clock by 2048; glitch filter + * recognizes change on input pin after 1024 rising clock edges. + * - 1011 - Prescaler divides the prescaler clock by 4096; glitch filter + * recognizes change on input pin after 2048 rising clock edges. + * - 1100 - Prescaler divides the prescaler clock by 8192; glitch filter + * recognizes change on input pin after 4096 rising clock edges. + * - 1101 - Prescaler divides the prescaler clock by 16,384; glitch filter + * recognizes change on input pin after 8192 rising clock edges. + * - 1110 - Prescaler divides the prescaler clock by 32,768; glitch filter + * recognizes change on input pin after 16,384 rising clock edges. + * - 1111 - Prescaler divides the prescaler clock by 65,536; glitch filter + * recognizes change on input pin after 32,768 rising clock edges. + */ +//@{ +#define BP_LPTMR_PSR_PRESCALE (3U) //!< Bit position for LPTMR_PSR_PRESCALE. +#define BM_LPTMR_PSR_PRESCALE (0x00000078U) //!< Bit mask for LPTMR_PSR_PRESCALE. +#define BS_LPTMR_PSR_PRESCALE (4U) //!< Bit field size in bits for LPTMR_PSR_PRESCALE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_PSR_PRESCALE field. +#define BR_LPTMR_PSR_PRESCALE (HW_LPTMR_PSR.B.PRESCALE) +#endif + +//! @brief Format value for bitfield LPTMR_PSR_PRESCALE. +#define BF_LPTMR_PSR_PRESCALE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_PSR_PRESCALE), uint32_t) & BM_LPTMR_PSR_PRESCALE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PRESCALE field to a new value. +#define BW_LPTMR_PSR_PRESCALE(v) (HW_LPTMR_PSR_WR((HW_LPTMR_PSR_RD() & ~BM_LPTMR_PSR_PRESCALE) | BF_LPTMR_PSR_PRESCALE(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LPTMR_CMR - Low Power Timer Compare Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LPTMR_CMR - Low Power Timer Compare Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_lptmr_cmr +{ + uint32_t U; + struct _hw_lptmr_cmr_bitfields + { + uint32_t COMPARE : 16; //!< [15:0] Compare Value + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_lptmr_cmr_t; +#endif + +/*! + * @name Constants and macros for entire LPTMR_CMR register + */ +//@{ +#define HW_LPTMR_CMR_ADDR (REGS_LPTMR_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_LPTMR_CMR (*(__IO hw_lptmr_cmr_t *) HW_LPTMR_CMR_ADDR) +#define HW_LPTMR_CMR_RD() (HW_LPTMR_CMR.U) +#define HW_LPTMR_CMR_WR(v) (HW_LPTMR_CMR.U = (v)) +#define HW_LPTMR_CMR_SET(v) (HW_LPTMR_CMR_WR(HW_LPTMR_CMR_RD() | (v))) +#define HW_LPTMR_CMR_CLR(v) (HW_LPTMR_CMR_WR(HW_LPTMR_CMR_RD() & ~(v))) +#define HW_LPTMR_CMR_TOG(v) (HW_LPTMR_CMR_WR(HW_LPTMR_CMR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LPTMR_CMR bitfields + */ + +/*! + * @name Register LPTMR_CMR, field COMPARE[15:0] (RW) + * + * When the LPTMR is enabled and the CNR equals the value in the CMR and + * increments, TCF is set and the hardware trigger asserts until the next time the CNR + * increments. If the CMR is 0, the hardware trigger will remain asserted until + * the LPTMR is disabled. If the LPTMR is enabled, the CMR must be altered only + * when TCF is set. + */ +//@{ +#define BP_LPTMR_CMR_COMPARE (0U) //!< Bit position for LPTMR_CMR_COMPARE. +#define BM_LPTMR_CMR_COMPARE (0x0000FFFFU) //!< Bit mask for LPTMR_CMR_COMPARE. +#define BS_LPTMR_CMR_COMPARE (16U) //!< Bit field size in bits for LPTMR_CMR_COMPARE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_CMR_COMPARE field. +#define BR_LPTMR_CMR_COMPARE (HW_LPTMR_CMR.B.COMPARE) +#endif + +//! @brief Format value for bitfield LPTMR_CMR_COMPARE. +#define BF_LPTMR_CMR_COMPARE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_CMR_COMPARE), uint32_t) & BM_LPTMR_CMR_COMPARE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COMPARE field to a new value. +#define BW_LPTMR_CMR_COMPARE(v) (HW_LPTMR_CMR_WR((HW_LPTMR_CMR_RD() & ~BM_LPTMR_CMR_COMPARE) | BF_LPTMR_CMR_COMPARE(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_LPTMR_CNR - Low Power Timer Counter Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_LPTMR_CNR - Low Power Timer Counter Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_lptmr_cnr +{ + uint32_t U; + struct _hw_lptmr_cnr_bitfields + { + uint32_t COUNTER : 16; //!< [15:0] Counter Value + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_lptmr_cnr_t; +#endif + +/*! + * @name Constants and macros for entire LPTMR_CNR register + */ +//@{ +#define HW_LPTMR_CNR_ADDR (REGS_LPTMR_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_LPTMR_CNR (*(__IO hw_lptmr_cnr_t *) HW_LPTMR_CNR_ADDR) +#define HW_LPTMR_CNR_RD() (HW_LPTMR_CNR.U) +#define HW_LPTMR_CNR_WR(v) (HW_LPTMR_CNR.U = (v)) +#define HW_LPTMR_CNR_SET(v) (HW_LPTMR_CNR_WR(HW_LPTMR_CNR_RD() | (v))) +#define HW_LPTMR_CNR_CLR(v) (HW_LPTMR_CNR_WR(HW_LPTMR_CNR_RD() & ~(v))) +#define HW_LPTMR_CNR_TOG(v) (HW_LPTMR_CNR_WR(HW_LPTMR_CNR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual LPTMR_CNR bitfields + */ + +/*! + * @name Register LPTMR_CNR, field COUNTER[15:0] (RW) + */ +//@{ +#define BP_LPTMR_CNR_COUNTER (0U) //!< Bit position for LPTMR_CNR_COUNTER. +#define BM_LPTMR_CNR_COUNTER (0x0000FFFFU) //!< Bit mask for LPTMR_CNR_COUNTER. +#define BS_LPTMR_CNR_COUNTER (16U) //!< Bit field size in bits for LPTMR_CNR_COUNTER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the LPTMR_CNR_COUNTER field. +#define BR_LPTMR_CNR_COUNTER (HW_LPTMR_CNR.B.COUNTER) +#endif + +//! @brief Format value for bitfield LPTMR_CNR_COUNTER. +#define BF_LPTMR_CNR_COUNTER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_LPTMR_CNR_COUNTER), uint32_t) & BM_LPTMR_CNR_COUNTER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the COUNTER field to a new value. +#define BW_LPTMR_CNR_COUNTER(v) (HW_LPTMR_CNR_WR((HW_LPTMR_CNR_RD() & ~BM_LPTMR_CNR_COUNTER) | BF_LPTMR_CNR_COUNTER(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_lptmr_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All LPTMR module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_lptmr +{ + __IO hw_lptmr_csr_t CSR; //!< [0x0] Low Power Timer Control Status Register + __IO hw_lptmr_psr_t PSR; //!< [0x4] Low Power Timer Prescale Register + __IO hw_lptmr_cmr_t CMR; //!< [0x8] Low Power Timer Compare Register + __IO hw_lptmr_cnr_t CNR; //!< [0xC] Low Power Timer Counter Register +} hw_lptmr_t; +#pragma pack() + +//! @brief Macro to access all LPTMR registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_LPTMR</code>. +#define HW_LPTMR (*(hw_lptmr_t *) REGS_LPTMR_BASE) +#endif + +#endif // __HW_LPTMR_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_mcg.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1939 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_MCG_REGISTERS_H__ +#define __HW_MCG_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 MCG + * + * Multipurpose Clock Generator module + * + * Registers defined in this header file: + * - HW_MCG_C1 - MCG Control 1 Register + * - HW_MCG_C2 - MCG Control 2 Register + * - HW_MCG_C3 - MCG Control 3 Register + * - HW_MCG_C4 - MCG Control 4 Register + * - HW_MCG_C5 - MCG Control 5 Register + * - HW_MCG_C6 - MCG Control 6 Register + * - HW_MCG_S - MCG Status Register + * - HW_MCG_SC - MCG Status and Control Register + * - HW_MCG_ATCVH - MCG Auto Trim Compare Value High Register + * - HW_MCG_ATCVL - MCG Auto Trim Compare Value Low Register + * - HW_MCG_C7 - MCG Control 7 Register + * - HW_MCG_C8 - MCG Control 8 Register + * + * - hw_mcg_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_MCG_BASE +#define HW_MCG_INSTANCE_COUNT (1U) //!< Number of instances of the MCG module. +#define REGS_MCG_BASE (0x40064000U) //!< Base address for MCG. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_C1 - MCG Control 1 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_C1 - MCG Control 1 Register (RW) + * + * Reset value: 0x04U + */ +typedef union _hw_mcg_c1 +{ + uint8_t U; + struct _hw_mcg_c1_bitfields + { + uint8_t IREFSTEN : 1; //!< [0] Internal Reference Stop Enable + uint8_t IRCLKEN : 1; //!< [1] Internal Reference Clock Enable + uint8_t IREFS : 1; //!< [2] Internal Reference Select + uint8_t FRDIV : 3; //!< [5:3] FLL External Reference Divider + uint8_t CLKS : 2; //!< [7:6] Clock Source Select + } B; +} hw_mcg_c1_t; +#endif + +/*! + * @name Constants and macros for entire MCG_C1 register + */ +//@{ +#define HW_MCG_C1_ADDR (REGS_MCG_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_C1 (*(__IO hw_mcg_c1_t *) HW_MCG_C1_ADDR) +#define HW_MCG_C1_RD() (HW_MCG_C1.U) +#define HW_MCG_C1_WR(v) (HW_MCG_C1.U = (v)) +#define HW_MCG_C1_SET(v) (HW_MCG_C1_WR(HW_MCG_C1_RD() | (v))) +#define HW_MCG_C1_CLR(v) (HW_MCG_C1_WR(HW_MCG_C1_RD() & ~(v))) +#define HW_MCG_C1_TOG(v) (HW_MCG_C1_WR(HW_MCG_C1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_C1 bitfields + */ + +/*! + * @name Register MCG_C1, field IREFSTEN[0] (RW) + * + * Controls whether or not the internal reference clock remains enabled when the + * MCG enters Stop mode. + * + * Values: + * - 0 - Internal reference clock is disabled in Stop mode. + * - 1 - Internal reference clock is enabled in Stop mode if IRCLKEN is set or + * if MCG is in FEI, FBI, or BLPI modes before entering Stop mode. + */ +//@{ +#define BP_MCG_C1_IREFSTEN (0U) //!< Bit position for MCG_C1_IREFSTEN. +#define BM_MCG_C1_IREFSTEN (0x01U) //!< Bit mask for MCG_C1_IREFSTEN. +#define BS_MCG_C1_IREFSTEN (1U) //!< Bit field size in bits for MCG_C1_IREFSTEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C1_IREFSTEN field. +#define BR_MCG_C1_IREFSTEN (BITBAND_ACCESS8(HW_MCG_C1_ADDR, BP_MCG_C1_IREFSTEN)) +#endif + +//! @brief Format value for bitfield MCG_C1_IREFSTEN. +#define BF_MCG_C1_IREFSTEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C1_IREFSTEN), uint8_t) & BM_MCG_C1_IREFSTEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IREFSTEN field to a new value. +#define BW_MCG_C1_IREFSTEN(v) (BITBAND_ACCESS8(HW_MCG_C1_ADDR, BP_MCG_C1_IREFSTEN) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C1, field IRCLKEN[1] (RW) + * + * Enables the internal reference clock for use as MCGIRCLK. + * + * Values: + * - 0 - MCGIRCLK inactive. + * - 1 - MCGIRCLK active. + */ +//@{ +#define BP_MCG_C1_IRCLKEN (1U) //!< Bit position for MCG_C1_IRCLKEN. +#define BM_MCG_C1_IRCLKEN (0x02U) //!< Bit mask for MCG_C1_IRCLKEN. +#define BS_MCG_C1_IRCLKEN (1U) //!< Bit field size in bits for MCG_C1_IRCLKEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C1_IRCLKEN field. +#define BR_MCG_C1_IRCLKEN (BITBAND_ACCESS8(HW_MCG_C1_ADDR, BP_MCG_C1_IRCLKEN)) +#endif + +//! @brief Format value for bitfield MCG_C1_IRCLKEN. +#define BF_MCG_C1_IRCLKEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C1_IRCLKEN), uint8_t) & BM_MCG_C1_IRCLKEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IRCLKEN field to a new value. +#define BW_MCG_C1_IRCLKEN(v) (BITBAND_ACCESS8(HW_MCG_C1_ADDR, BP_MCG_C1_IRCLKEN) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C1, field IREFS[2] (RW) + * + * Selects the reference clock source for the FLL. + * + * Values: + * - 0 - External reference clock is selected. + * - 1 - The slow internal reference clock is selected. + */ +//@{ +#define BP_MCG_C1_IREFS (2U) //!< Bit position for MCG_C1_IREFS. +#define BM_MCG_C1_IREFS (0x04U) //!< Bit mask for MCG_C1_IREFS. +#define BS_MCG_C1_IREFS (1U) //!< Bit field size in bits for MCG_C1_IREFS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C1_IREFS field. +#define BR_MCG_C1_IREFS (BITBAND_ACCESS8(HW_MCG_C1_ADDR, BP_MCG_C1_IREFS)) +#endif + +//! @brief Format value for bitfield MCG_C1_IREFS. +#define BF_MCG_C1_IREFS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C1_IREFS), uint8_t) & BM_MCG_C1_IREFS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IREFS field to a new value. +#define BW_MCG_C1_IREFS(v) (BITBAND_ACCESS8(HW_MCG_C1_ADDR, BP_MCG_C1_IREFS) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C1, field FRDIV[5:3] (RW) + * + * Selects the amount to divide down the external reference clock for the FLL. + * The resulting frequency must be in the range 31.25 kHz to 39.0625 kHz (This is + * required when FLL/DCO is the clock source for MCGOUTCLK . In FBE mode, it is + * not required to meet this range, but it is recommended in the cases when trying + * to enter a FLL mode from FBE). + * + * Values: + * - 000 - If RANGE = 0 or OSCSEL=1 , Divide Factor is 1; for all other RANGE + * values, Divide Factor is 32. + * - 001 - If RANGE = 0 or OSCSEL=1 , Divide Factor is 2; for all other RANGE + * values, Divide Factor is 64. + * - 010 - If RANGE = 0 or OSCSEL=1 , Divide Factor is 4; for all other RANGE + * values, Divide Factor is 128. + * - 011 - If RANGE = 0 or OSCSEL=1 , Divide Factor is 8; for all other RANGE + * values, Divide Factor is 256. + * - 100 - If RANGE = 0 or OSCSEL=1 , Divide Factor is 16; for all other RANGE + * values, Divide Factor is 512. + * - 101 - If RANGE = 0 or OSCSEL=1 , Divide Factor is 32; for all other RANGE + * values, Divide Factor is 1024. + * - 110 - If RANGE = 0 or OSCSEL=1 , Divide Factor is 64; for all other RANGE + * values, Divide Factor is 1280 . + * - 111 - If RANGE = 0 or OSCSEL=1 , Divide Factor is 128; for all other RANGE + * values, Divide Factor is 1536 . + */ +//@{ +#define BP_MCG_C1_FRDIV (3U) //!< Bit position for MCG_C1_FRDIV. +#define BM_MCG_C1_FRDIV (0x38U) //!< Bit mask for MCG_C1_FRDIV. +#define BS_MCG_C1_FRDIV (3U) //!< Bit field size in bits for MCG_C1_FRDIV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C1_FRDIV field. +#define BR_MCG_C1_FRDIV (HW_MCG_C1.B.FRDIV) +#endif + +//! @brief Format value for bitfield MCG_C1_FRDIV. +#define BF_MCG_C1_FRDIV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C1_FRDIV), uint8_t) & BM_MCG_C1_FRDIV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRDIV field to a new value. +#define BW_MCG_C1_FRDIV(v) (HW_MCG_C1_WR((HW_MCG_C1_RD() & ~BM_MCG_C1_FRDIV) | BF_MCG_C1_FRDIV(v))) +#endif +//@} + +/*! + * @name Register MCG_C1, field CLKS[7:6] (RW) + * + * Selects the clock source for MCGOUTCLK . + * + * Values: + * - 00 - Encoding 0 - Output of FLL or PLL is selected (depends on PLLS control + * bit). + * - 01 - Encoding 1 - Internal reference clock is selected. + * - 10 - Encoding 2 - External reference clock is selected. + * - 11 - Encoding 3 - Reserved. + */ +//@{ +#define BP_MCG_C1_CLKS (6U) //!< Bit position for MCG_C1_CLKS. +#define BM_MCG_C1_CLKS (0xC0U) //!< Bit mask for MCG_C1_CLKS. +#define BS_MCG_C1_CLKS (2U) //!< Bit field size in bits for MCG_C1_CLKS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C1_CLKS field. +#define BR_MCG_C1_CLKS (HW_MCG_C1.B.CLKS) +#endif + +//! @brief Format value for bitfield MCG_C1_CLKS. +#define BF_MCG_C1_CLKS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C1_CLKS), uint8_t) & BM_MCG_C1_CLKS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLKS field to a new value. +#define BW_MCG_C1_CLKS(v) (HW_MCG_C1_WR((HW_MCG_C1_RD() & ~BM_MCG_C1_CLKS) | BF_MCG_C1_CLKS(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_C2 - MCG Control 2 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_C2 - MCG Control 2 Register (RW) + * + * Reset value: 0x80U + */ +typedef union _hw_mcg_c2 +{ + uint8_t U; + struct _hw_mcg_c2_bitfields + { + uint8_t IRCS : 1; //!< [0] Internal Reference Clock Select + uint8_t LP : 1; //!< [1] Low Power Select + uint8_t EREFS : 1; //!< [2] External Reference Select + uint8_t HGO : 1; //!< [3] High Gain Oscillator Select + uint8_t RANGE : 2; //!< [5:4] Frequency Range Select + uint8_t FCFTRIM : 1; //!< [6] Fast Internal Reference Clock Fine Trim + uint8_t LOCRE0 : 1; //!< [7] Loss of Clock Reset Enable + } B; +} hw_mcg_c2_t; +#endif + +/*! + * @name Constants and macros for entire MCG_C2 register + */ +//@{ +#define HW_MCG_C2_ADDR (REGS_MCG_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_C2 (*(__IO hw_mcg_c2_t *) HW_MCG_C2_ADDR) +#define HW_MCG_C2_RD() (HW_MCG_C2.U) +#define HW_MCG_C2_WR(v) (HW_MCG_C2.U = (v)) +#define HW_MCG_C2_SET(v) (HW_MCG_C2_WR(HW_MCG_C2_RD() | (v))) +#define HW_MCG_C2_CLR(v) (HW_MCG_C2_WR(HW_MCG_C2_RD() & ~(v))) +#define HW_MCG_C2_TOG(v) (HW_MCG_C2_WR(HW_MCG_C2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_C2 bitfields + */ + +/*! + * @name Register MCG_C2, field IRCS[0] (RW) + * + * Selects between the fast or slow internal reference clock source. + * + * Values: + * - 0 - Slow internal reference clock selected. + * - 1 - Fast internal reference clock selected. + */ +//@{ +#define BP_MCG_C2_IRCS (0U) //!< Bit position for MCG_C2_IRCS. +#define BM_MCG_C2_IRCS (0x01U) //!< Bit mask for MCG_C2_IRCS. +#define BS_MCG_C2_IRCS (1U) //!< Bit field size in bits for MCG_C2_IRCS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C2_IRCS field. +#define BR_MCG_C2_IRCS (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_IRCS)) +#endif + +//! @brief Format value for bitfield MCG_C2_IRCS. +#define BF_MCG_C2_IRCS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C2_IRCS), uint8_t) & BM_MCG_C2_IRCS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IRCS field to a new value. +#define BW_MCG_C2_IRCS(v) (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_IRCS) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C2, field LP[1] (RW) + * + * Controls whether the FLL or PLL is disabled in BLPI and BLPE modes. In FBE or + * PBE modes, setting this bit to 1 will transition the MCG into BLPE mode; in + * FBI mode, setting this bit to 1 will transition the MCG into BLPI mode. In any + * other MCG mode, LP bit has no affect. + * + * Values: + * - 0 - FLL or PLL is not disabled in bypass modes. + * - 1 - FLL or PLL is disabled in bypass modes (lower power) + */ +//@{ +#define BP_MCG_C2_LP (1U) //!< Bit position for MCG_C2_LP. +#define BM_MCG_C2_LP (0x02U) //!< Bit mask for MCG_C2_LP. +#define BS_MCG_C2_LP (1U) //!< Bit field size in bits for MCG_C2_LP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C2_LP field. +#define BR_MCG_C2_LP (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_LP)) +#endif + +//! @brief Format value for bitfield MCG_C2_LP. +#define BF_MCG_C2_LP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C2_LP), uint8_t) & BM_MCG_C2_LP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LP field to a new value. +#define BW_MCG_C2_LP(v) (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_LP) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C2, field EREFS[2] (RW) + * + * Selects the source for the external reference clock. See the Oscillator (OSC) + * chapter for more details. + * + * Values: + * - 0 - External reference clock requested. + * - 1 - Oscillator requested. + */ +//@{ +#define BP_MCG_C2_EREFS (2U) //!< Bit position for MCG_C2_EREFS. +#define BM_MCG_C2_EREFS (0x04U) //!< Bit mask for MCG_C2_EREFS. +#define BS_MCG_C2_EREFS (1U) //!< Bit field size in bits for MCG_C2_EREFS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C2_EREFS field. +#define BR_MCG_C2_EREFS (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_EREFS)) +#endif + +//! @brief Format value for bitfield MCG_C2_EREFS. +#define BF_MCG_C2_EREFS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C2_EREFS), uint8_t) & BM_MCG_C2_EREFS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EREFS field to a new value. +#define BW_MCG_C2_EREFS(v) (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_EREFS) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C2, field HGO[3] (RW) + * + * Controls the crystal oscillator mode of operation. See the Oscillator (OSC) + * chapter for more details. + * + * Values: + * - 0 - Configure crystal oscillator for low-power operation. + * - 1 - Configure crystal oscillator for high-gain operation. + */ +//@{ +#define BP_MCG_C2_HGO (3U) //!< Bit position for MCG_C2_HGO. +#define BM_MCG_C2_HGO (0x08U) //!< Bit mask for MCG_C2_HGO. +#define BS_MCG_C2_HGO (1U) //!< Bit field size in bits for MCG_C2_HGO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C2_HGO field. +#define BR_MCG_C2_HGO (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_HGO)) +#endif + +//! @brief Format value for bitfield MCG_C2_HGO. +#define BF_MCG_C2_HGO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C2_HGO), uint8_t) & BM_MCG_C2_HGO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HGO field to a new value. +#define BW_MCG_C2_HGO(v) (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_HGO) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C2, field RANGE[5:4] (RW) + * + * Selects the frequency range for the crystal oscillator or external clock + * source. See the Oscillator (OSC) chapter for more details and the device data + * sheet for the frequency ranges used. + * + * Values: + * - 00 - Encoding 0 - Low frequency range selected for the crystal oscillator . + * - 01 - Encoding 1 - High frequency range selected for the crystal oscillator . + */ +//@{ +#define BP_MCG_C2_RANGE (4U) //!< Bit position for MCG_C2_RANGE. +#define BM_MCG_C2_RANGE (0x30U) //!< Bit mask for MCG_C2_RANGE. +#define BS_MCG_C2_RANGE (2U) //!< Bit field size in bits for MCG_C2_RANGE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C2_RANGE field. +#define BR_MCG_C2_RANGE (HW_MCG_C2.B.RANGE) +#endif + +//! @brief Format value for bitfield MCG_C2_RANGE. +#define BF_MCG_C2_RANGE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C2_RANGE), uint8_t) & BM_MCG_C2_RANGE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RANGE field to a new value. +#define BW_MCG_C2_RANGE(v) (HW_MCG_C2_WR((HW_MCG_C2_RD() & ~BM_MCG_C2_RANGE) | BF_MCG_C2_RANGE(v))) +#endif +//@} + +/*! + * @name Register MCG_C2, field FCFTRIM[6] (RW) + * + * FCFTRIM controls the smallest adjustment of the fast internal reference clock + * frequency. Setting FCFTRIM increases the period and clearing FCFTRIM + * decreases the period by the smallest amount possible. If an FCFTRIM value stored in + * nonvolatile memory is to be used, it is your responsibility to copy that value + * from the nonvolatile memory location to this bit. + */ +//@{ +#define BP_MCG_C2_FCFTRIM (6U) //!< Bit position for MCG_C2_FCFTRIM. +#define BM_MCG_C2_FCFTRIM (0x40U) //!< Bit mask for MCG_C2_FCFTRIM. +#define BS_MCG_C2_FCFTRIM (1U) //!< Bit field size in bits for MCG_C2_FCFTRIM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C2_FCFTRIM field. +#define BR_MCG_C2_FCFTRIM (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_FCFTRIM)) +#endif + +//! @brief Format value for bitfield MCG_C2_FCFTRIM. +#define BF_MCG_C2_FCFTRIM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C2_FCFTRIM), uint8_t) & BM_MCG_C2_FCFTRIM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FCFTRIM field to a new value. +#define BW_MCG_C2_FCFTRIM(v) (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_FCFTRIM) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C2, field LOCRE0[7] (RW) + * + * Determines whether an interrupt or a reset request is made following a loss + * of OSC0 external reference clock. The LOCRE0 only has an affect when CME0 is + * set. + * + * Values: + * - 0 - Interrupt request is generated on a loss of OSC0 external reference + * clock. + * - 1 - Generate a reset request on a loss of OSC0 external reference clock. + */ +//@{ +#define BP_MCG_C2_LOCRE0 (7U) //!< Bit position for MCG_C2_LOCRE0. +#define BM_MCG_C2_LOCRE0 (0x80U) //!< Bit mask for MCG_C2_LOCRE0. +#define BS_MCG_C2_LOCRE0 (1U) //!< Bit field size in bits for MCG_C2_LOCRE0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C2_LOCRE0 field. +#define BR_MCG_C2_LOCRE0 (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_LOCRE0)) +#endif + +//! @brief Format value for bitfield MCG_C2_LOCRE0. +#define BF_MCG_C2_LOCRE0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C2_LOCRE0), uint8_t) & BM_MCG_C2_LOCRE0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOCRE0 field to a new value. +#define BW_MCG_C2_LOCRE0(v) (BITBAND_ACCESS8(HW_MCG_C2_ADDR, BP_MCG_C2_LOCRE0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_C3 - MCG Control 3 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_C3 - MCG Control 3 Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_mcg_c3 +{ + uint8_t U; + struct _hw_mcg_c3_bitfields + { + uint8_t SCTRIM : 8; //!< [7:0] Slow Internal Reference Clock Trim + //! Setting + } B; +} hw_mcg_c3_t; +#endif + +/*! + * @name Constants and macros for entire MCG_C3 register + */ +//@{ +#define HW_MCG_C3_ADDR (REGS_MCG_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_C3 (*(__IO hw_mcg_c3_t *) HW_MCG_C3_ADDR) +#define HW_MCG_C3_RD() (HW_MCG_C3.U) +#define HW_MCG_C3_WR(v) (HW_MCG_C3.U = (v)) +#define HW_MCG_C3_SET(v) (HW_MCG_C3_WR(HW_MCG_C3_RD() | (v))) +#define HW_MCG_C3_CLR(v) (HW_MCG_C3_WR(HW_MCG_C3_RD() & ~(v))) +#define HW_MCG_C3_TOG(v) (HW_MCG_C3_WR(HW_MCG_C3_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_C3 bitfields + */ + +/*! + * @name Register MCG_C3, field SCTRIM[7:0] (RW) + * + * SCTRIM A value for SCTRIM is loaded during reset from a factory programmed + * location. controls the slow internal reference clock frequency by controlling + * the slow internal reference clock period. The SCTRIM bits are binary weighted, + * that is, bit 1 adjusts twice as much as bit 0. Increasing the binary value + * increases the period, and decreasing the value decreases the period. An additional + * fine trim bit is available in C4 register as the SCFTRIM bit. Upon reset, + * this value is loaded with a factory trim value. If an SCTRIM value stored in + * nonvolatile memory is to be used, it is your responsibility to copy that value + * from the nonvolatile memory location to this register. + */ +//@{ +#define BP_MCG_C3_SCTRIM (0U) //!< Bit position for MCG_C3_SCTRIM. +#define BM_MCG_C3_SCTRIM (0xFFU) //!< Bit mask for MCG_C3_SCTRIM. +#define BS_MCG_C3_SCTRIM (8U) //!< Bit field size in bits for MCG_C3_SCTRIM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C3_SCTRIM field. +#define BR_MCG_C3_SCTRIM (HW_MCG_C3.U) +#endif + +//! @brief Format value for bitfield MCG_C3_SCTRIM. +#define BF_MCG_C3_SCTRIM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C3_SCTRIM), uint8_t) & BM_MCG_C3_SCTRIM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SCTRIM field to a new value. +#define BW_MCG_C3_SCTRIM(v) (HW_MCG_C3_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_C4 - MCG Control 4 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_C4 - MCG Control 4 Register (RW) + * + * Reset value: 0x00U + * + * Reset values for DRST and DMX32 bits are 0. + */ +typedef union _hw_mcg_c4 +{ + uint8_t U; + struct _hw_mcg_c4_bitfields + { + uint8_t SCFTRIM : 1; //!< [0] Slow Internal Reference Clock Fine Trim + uint8_t FCTRIM : 4; //!< [4:1] Fast Internal Reference Clock Trim + //! Setting + uint8_t DRST_DRS : 2; //!< [6:5] DCO Range Select + uint8_t DMX32 : 1; //!< [7] DCO Maximum Frequency with 32.768 kHz + //! Reference + } B; +} hw_mcg_c4_t; +#endif + +/*! + * @name Constants and macros for entire MCG_C4 register + */ +//@{ +#define HW_MCG_C4_ADDR (REGS_MCG_BASE + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_C4 (*(__IO hw_mcg_c4_t *) HW_MCG_C4_ADDR) +#define HW_MCG_C4_RD() (HW_MCG_C4.U) +#define HW_MCG_C4_WR(v) (HW_MCG_C4.U = (v)) +#define HW_MCG_C4_SET(v) (HW_MCG_C4_WR(HW_MCG_C4_RD() | (v))) +#define HW_MCG_C4_CLR(v) (HW_MCG_C4_WR(HW_MCG_C4_RD() & ~(v))) +#define HW_MCG_C4_TOG(v) (HW_MCG_C4_WR(HW_MCG_C4_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_C4 bitfields + */ + +/*! + * @name Register MCG_C4, field SCFTRIM[0] (RW) + * + * SCFTRIM A value for SCFTRIM is loaded during reset from a factory programmed + * location . controls the smallest adjustment of the slow internal reference + * clock frequency. Setting SCFTRIM increases the period and clearing SCFTRIM + * decreases the period by the smallest amount possible. If an SCFTRIM value stored in + * nonvolatile memory is to be used, it is your responsibility to copy that value + * from the nonvolatile memory location to this bit. + */ +//@{ +#define BP_MCG_C4_SCFTRIM (0U) //!< Bit position for MCG_C4_SCFTRIM. +#define BM_MCG_C4_SCFTRIM (0x01U) //!< Bit mask for MCG_C4_SCFTRIM. +#define BS_MCG_C4_SCFTRIM (1U) //!< Bit field size in bits for MCG_C4_SCFTRIM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C4_SCFTRIM field. +#define BR_MCG_C4_SCFTRIM (BITBAND_ACCESS8(HW_MCG_C4_ADDR, BP_MCG_C4_SCFTRIM)) +#endif + +//! @brief Format value for bitfield MCG_C4_SCFTRIM. +#define BF_MCG_C4_SCFTRIM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C4_SCFTRIM), uint8_t) & BM_MCG_C4_SCFTRIM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SCFTRIM field to a new value. +#define BW_MCG_C4_SCFTRIM(v) (BITBAND_ACCESS8(HW_MCG_C4_ADDR, BP_MCG_C4_SCFTRIM) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C4, field FCTRIM[4:1] (RW) + * + * FCTRIM A value for FCTRIM is loaded during reset from a factory programmed + * location. controls the fast internal reference clock frequency by controlling + * the fast internal reference clock period. The FCTRIM bits are binary weighted, + * that is, bit 1 adjusts twice as much as bit 0. Increasing the binary value + * increases the period, and decreasing the value decreases the period. If an + * FCTRIM[3:0] value stored in nonvolatile memory is to be used, it is your + * responsibility to copy that value from the nonvolatile memory location to this register. + */ +//@{ +#define BP_MCG_C4_FCTRIM (1U) //!< Bit position for MCG_C4_FCTRIM. +#define BM_MCG_C4_FCTRIM (0x1EU) //!< Bit mask for MCG_C4_FCTRIM. +#define BS_MCG_C4_FCTRIM (4U) //!< Bit field size in bits for MCG_C4_FCTRIM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C4_FCTRIM field. +#define BR_MCG_C4_FCTRIM (HW_MCG_C4.B.FCTRIM) +#endif + +//! @brief Format value for bitfield MCG_C4_FCTRIM. +#define BF_MCG_C4_FCTRIM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C4_FCTRIM), uint8_t) & BM_MCG_C4_FCTRIM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FCTRIM field to a new value. +#define BW_MCG_C4_FCTRIM(v) (HW_MCG_C4_WR((HW_MCG_C4_RD() & ~BM_MCG_C4_FCTRIM) | BF_MCG_C4_FCTRIM(v))) +#endif +//@} + +/*! + * @name Register MCG_C4, field DRST_DRS[6:5] (RW) + * + * The DRS bits select the frequency range for the FLL output, DCOOUT. When the + * LP bit is set, writes to the DRS bits are ignored. The DRST read field + * indicates the current frequency range for DCOOUT. The DRST field does not update + * immediately after a write to the DRS field due to internal synchronization between + * clock domains. See the DCO Frequency Range table for more details. + * + * Values: + * - 00 - Encoding 0 - Low range (reset default). + * - 01 - Encoding 1 - Mid range. + * - 10 - Encoding 2 - Mid-high range. + * - 11 - Encoding 3 - High range. + */ +//@{ +#define BP_MCG_C4_DRST_DRS (5U) //!< Bit position for MCG_C4_DRST_DRS. +#define BM_MCG_C4_DRST_DRS (0x60U) //!< Bit mask for MCG_C4_DRST_DRS. +#define BS_MCG_C4_DRST_DRS (2U) //!< Bit field size in bits for MCG_C4_DRST_DRS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C4_DRST_DRS field. +#define BR_MCG_C4_DRST_DRS (HW_MCG_C4.B.DRST_DRS) +#endif + +//! @brief Format value for bitfield MCG_C4_DRST_DRS. +#define BF_MCG_C4_DRST_DRS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C4_DRST_DRS), uint8_t) & BM_MCG_C4_DRST_DRS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DRST_DRS field to a new value. +#define BW_MCG_C4_DRST_DRS(v) (HW_MCG_C4_WR((HW_MCG_C4_RD() & ~BM_MCG_C4_DRST_DRS) | BF_MCG_C4_DRST_DRS(v))) +#endif +//@} + +/*! + * @name Register MCG_C4, field DMX32[7] (RW) + * + * The DMX32 bit controls whether the DCO frequency range is narrowed to its + * maximum frequency with a 32.768 kHz reference. The following table identifies + * settings for the DCO frequency range. The system clocks derived from this source + * should not exceed their specified maximums. DRST_DRS DMX32 Reference Range FLL + * Factor DCO Range 00 0 31.25-39.0625 kHz 640 20-25 MHz 1 32.768 kHz 732 24 MHz + * 01 0 31.25-39.0625 kHz 1280 40-50 MHz 1 32.768 kHz 1464 48 MHz 10 0 + * 31.25-39.0625 kHz 1920 60-75 MHz 1 32.768 kHz 2197 72 MHz 11 0 31.25-39.0625 kHz 2560 + * 80-100 MHz 1 32.768 kHz 2929 96 MHz + * + * Values: + * - 0 - DCO has a default range of 25%. + * - 1 - DCO is fine-tuned for maximum frequency with 32.768 kHz reference. + */ +//@{ +#define BP_MCG_C4_DMX32 (7U) //!< Bit position for MCG_C4_DMX32. +#define BM_MCG_C4_DMX32 (0x80U) //!< Bit mask for MCG_C4_DMX32. +#define BS_MCG_C4_DMX32 (1U) //!< Bit field size in bits for MCG_C4_DMX32. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C4_DMX32 field. +#define BR_MCG_C4_DMX32 (BITBAND_ACCESS8(HW_MCG_C4_ADDR, BP_MCG_C4_DMX32)) +#endif + +//! @brief Format value for bitfield MCG_C4_DMX32. +#define BF_MCG_C4_DMX32(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C4_DMX32), uint8_t) & BM_MCG_C4_DMX32) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMX32 field to a new value. +#define BW_MCG_C4_DMX32(v) (BITBAND_ACCESS8(HW_MCG_C4_ADDR, BP_MCG_C4_DMX32) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_C5 - MCG Control 5 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_C5 - MCG Control 5 Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_mcg_c5 +{ + uint8_t U; + struct _hw_mcg_c5_bitfields + { + uint8_t PRDIV0 : 5; //!< [4:0] PLL External Reference Divider + uint8_t PLLSTEN0 : 1; //!< [5] PLL Stop Enable + uint8_t PLLCLKEN0 : 1; //!< [6] PLL Clock Enable + uint8_t RESERVED0 : 1; //!< [7] + } B; +} hw_mcg_c5_t; +#endif + +/*! + * @name Constants and macros for entire MCG_C5 register + */ +//@{ +#define HW_MCG_C5_ADDR (REGS_MCG_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_C5 (*(__IO hw_mcg_c5_t *) HW_MCG_C5_ADDR) +#define HW_MCG_C5_RD() (HW_MCG_C5.U) +#define HW_MCG_C5_WR(v) (HW_MCG_C5.U = (v)) +#define HW_MCG_C5_SET(v) (HW_MCG_C5_WR(HW_MCG_C5_RD() | (v))) +#define HW_MCG_C5_CLR(v) (HW_MCG_C5_WR(HW_MCG_C5_RD() & ~(v))) +#define HW_MCG_C5_TOG(v) (HW_MCG_C5_WR(HW_MCG_C5_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_C5 bitfields + */ + +/*! + * @name Register MCG_C5, field PRDIV0[4:0] (RW) + * + * Selects the amount to divide down the external reference clock for the PLL. + * The resulting frequency must be in the range of 2 MHz to 4 MHz. After the PLL + * is enabled (by setting either PLLCLKEN 0 or PLLS), the PRDIV 0 value must not + * be changed when LOCK0 is zero. PLL External Reference Divide Factor PRDIV 0 + * Divide Factor PRDIV 0 Divide Factor PRDIV 0 Divide Factor PRDIV 0 Divide Factor + * 00000 1 01000 9 10000 17 11000 25 00001 2 01001 10 10001 18 11001 Reserved + * 00010 3 01010 11 10010 19 11010 Reserved 00011 4 01011 12 10011 20 11011 Reserved + * 00100 5 01100 13 10100 21 11100 Reserved 00101 6 01101 14 10101 22 11101 + * Reserved 00110 7 01110 15 10110 23 11110 Reserved 00111 8 01111 16 10111 24 11111 + * Reserved + */ +//@{ +#define BP_MCG_C5_PRDIV0 (0U) //!< Bit position for MCG_C5_PRDIV0. +#define BM_MCG_C5_PRDIV0 (0x1FU) //!< Bit mask for MCG_C5_PRDIV0. +#define BS_MCG_C5_PRDIV0 (5U) //!< Bit field size in bits for MCG_C5_PRDIV0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C5_PRDIV0 field. +#define BR_MCG_C5_PRDIV0 (HW_MCG_C5.B.PRDIV0) +#endif + +//! @brief Format value for bitfield MCG_C5_PRDIV0. +#define BF_MCG_C5_PRDIV0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C5_PRDIV0), uint8_t) & BM_MCG_C5_PRDIV0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PRDIV0 field to a new value. +#define BW_MCG_C5_PRDIV0(v) (HW_MCG_C5_WR((HW_MCG_C5_RD() & ~BM_MCG_C5_PRDIV0) | BF_MCG_C5_PRDIV0(v))) +#endif +//@} + +/*! + * @name Register MCG_C5, field PLLSTEN0[5] (RW) + * + * Enables the PLL Clock during Normal Stop. In Low Power Stop mode, the PLL + * clock gets disabled even if PLLSTEN 0 =1. All other power modes, PLLSTEN 0 bit + * has no affect and does not enable the PLL Clock to run if it is written to 1. + * + * Values: + * - 0 - MCGPLLCLK is disabled in any of the Stop modes. + * - 1 - MCGPLLCLK is enabled if system is in Normal Stop mode. + */ +//@{ +#define BP_MCG_C5_PLLSTEN0 (5U) //!< Bit position for MCG_C5_PLLSTEN0. +#define BM_MCG_C5_PLLSTEN0 (0x20U) //!< Bit mask for MCG_C5_PLLSTEN0. +#define BS_MCG_C5_PLLSTEN0 (1U) //!< Bit field size in bits for MCG_C5_PLLSTEN0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C5_PLLSTEN0 field. +#define BR_MCG_C5_PLLSTEN0 (BITBAND_ACCESS8(HW_MCG_C5_ADDR, BP_MCG_C5_PLLSTEN0)) +#endif + +//! @brief Format value for bitfield MCG_C5_PLLSTEN0. +#define BF_MCG_C5_PLLSTEN0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C5_PLLSTEN0), uint8_t) & BM_MCG_C5_PLLSTEN0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PLLSTEN0 field to a new value. +#define BW_MCG_C5_PLLSTEN0(v) (BITBAND_ACCESS8(HW_MCG_C5_ADDR, BP_MCG_C5_PLLSTEN0) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C5, field PLLCLKEN0[6] (RW) + * + * Enables the PLL independent of PLLS and enables the PLL clock for use as + * MCGPLLCLK. (PRDIV 0 needs to be programmed to the correct divider to generate a + * PLL reference clock in the range of 2 - 4 MHz range prior to setting the + * PLLCLKEN 0 bit). Setting PLLCLKEN 0 will enable the external oscillator if not + * already enabled. Whenever the PLL is being enabled by means of the PLLCLKEN 0 bit, + * and the external oscillator is being used as the reference clock, the OSCINIT 0 + * bit should be checked to make sure it is set. + * + * Values: + * - 0 - MCGPLLCLK is inactive. + * - 1 - MCGPLLCLK is active. + */ +//@{ +#define BP_MCG_C5_PLLCLKEN0 (6U) //!< Bit position for MCG_C5_PLLCLKEN0. +#define BM_MCG_C5_PLLCLKEN0 (0x40U) //!< Bit mask for MCG_C5_PLLCLKEN0. +#define BS_MCG_C5_PLLCLKEN0 (1U) //!< Bit field size in bits for MCG_C5_PLLCLKEN0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C5_PLLCLKEN0 field. +#define BR_MCG_C5_PLLCLKEN0 (BITBAND_ACCESS8(HW_MCG_C5_ADDR, BP_MCG_C5_PLLCLKEN0)) +#endif + +//! @brief Format value for bitfield MCG_C5_PLLCLKEN0. +#define BF_MCG_C5_PLLCLKEN0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C5_PLLCLKEN0), uint8_t) & BM_MCG_C5_PLLCLKEN0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PLLCLKEN0 field to a new value. +#define BW_MCG_C5_PLLCLKEN0(v) (BITBAND_ACCESS8(HW_MCG_C5_ADDR, BP_MCG_C5_PLLCLKEN0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_C6 - MCG Control 6 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_C6 - MCG Control 6 Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_mcg_c6 +{ + uint8_t U; + struct _hw_mcg_c6_bitfields + { + uint8_t VDIV0 : 5; //!< [4:0] VCO 0 Divider + uint8_t CME0 : 1; //!< [5] Clock Monitor Enable + uint8_t PLLS : 1; //!< [6] PLL Select + uint8_t LOLIE0 : 1; //!< [7] Loss of Lock Interrrupt Enable + } B; +} hw_mcg_c6_t; +#endif + +/*! + * @name Constants and macros for entire MCG_C6 register + */ +//@{ +#define HW_MCG_C6_ADDR (REGS_MCG_BASE + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_C6 (*(__IO hw_mcg_c6_t *) HW_MCG_C6_ADDR) +#define HW_MCG_C6_RD() (HW_MCG_C6.U) +#define HW_MCG_C6_WR(v) (HW_MCG_C6.U = (v)) +#define HW_MCG_C6_SET(v) (HW_MCG_C6_WR(HW_MCG_C6_RD() | (v))) +#define HW_MCG_C6_CLR(v) (HW_MCG_C6_WR(HW_MCG_C6_RD() & ~(v))) +#define HW_MCG_C6_TOG(v) (HW_MCG_C6_WR(HW_MCG_C6_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_C6 bitfields + */ + +/*! + * @name Register MCG_C6, field VDIV0[4:0] (RW) + * + * Selects the amount to divide the VCO output of the PLL. The VDIV 0 bits + * establish the multiplication factor (M) applied to the reference clock frequency. + * After the PLL is enabled (by setting either PLLCLKEN 0 or PLLS), the VDIV 0 + * value must not be changed when LOCK 0 is zero. PLL VCO Divide Factor VDIV 0 + * Multiply Factor VDIV 0 Multiply Factor VDIV 0 Multiply Factor VDIV 0 Multiply + * Factor 00000 24 01000 32 10000 40 11000 48 00001 25 01001 33 10001 41 11001 49 + * 00010 26 01010 34 10010 42 11010 50 00011 27 01011 35 10011 43 11011 51 00100 28 + * 01100 36 10100 44 11100 52 00101 29 01101 37 10101 45 11101 53 00110 30 01110 + * 38 10110 46 11110 54 00111 31 01111 39 10111 47 11111 55 + */ +//@{ +#define BP_MCG_C6_VDIV0 (0U) //!< Bit position for MCG_C6_VDIV0. +#define BM_MCG_C6_VDIV0 (0x1FU) //!< Bit mask for MCG_C6_VDIV0. +#define BS_MCG_C6_VDIV0 (5U) //!< Bit field size in bits for MCG_C6_VDIV0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C6_VDIV0 field. +#define BR_MCG_C6_VDIV0 (HW_MCG_C6.B.VDIV0) +#endif + +//! @brief Format value for bitfield MCG_C6_VDIV0. +#define BF_MCG_C6_VDIV0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C6_VDIV0), uint8_t) & BM_MCG_C6_VDIV0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the VDIV0 field to a new value. +#define BW_MCG_C6_VDIV0(v) (HW_MCG_C6_WR((HW_MCG_C6_RD() & ~BM_MCG_C6_VDIV0) | BF_MCG_C6_VDIV0(v))) +#endif +//@} + +/*! + * @name Register MCG_C6, field CME0[5] (RW) + * + * Enables the loss of clock monitoring circuit for the OSC0 external reference + * mux select. The LOCRE0 bit will determine if a interrupt or a reset request is + * generated following a loss of OSC0 indication. The CME0 bit must only be set + * to a logic 1 when the MCG is in an operational mode that uses the external + * clock (FEE, FBE, PEE, PBE, or BLPE) . Whenever the CME0 bit is set to a logic 1, + * the value of the RANGE0 bits in the C2 register should not be changed. CME0 + * bit should be set to a logic 0 before the MCG enters any Stop mode. Otherwise, a + * reset request may occur while in Stop mode. CME0 should also be set to a + * logic 0 before entering VLPR or VLPW power modes if the MCG is in BLPE mode. + * + * Values: + * - 0 - External clock monitor is disabled for OSC0. + * - 1 - External clock monitor is enabled for OSC0. + */ +//@{ +#define BP_MCG_C6_CME0 (5U) //!< Bit position for MCG_C6_CME0. +#define BM_MCG_C6_CME0 (0x20U) //!< Bit mask for MCG_C6_CME0. +#define BS_MCG_C6_CME0 (1U) //!< Bit field size in bits for MCG_C6_CME0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C6_CME0 field. +#define BR_MCG_C6_CME0 (BITBAND_ACCESS8(HW_MCG_C6_ADDR, BP_MCG_C6_CME0)) +#endif + +//! @brief Format value for bitfield MCG_C6_CME0. +#define BF_MCG_C6_CME0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C6_CME0), uint8_t) & BM_MCG_C6_CME0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CME0 field to a new value. +#define BW_MCG_C6_CME0(v) (BITBAND_ACCESS8(HW_MCG_C6_ADDR, BP_MCG_C6_CME0) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C6, field PLLS[6] (RW) + * + * Controls whether the PLL or FLL output is selected as the MCG source when + * CLKS[1:0]=00. If the PLLS bit is cleared and PLLCLKEN 0 is not set, the PLL is + * disabled in all modes. If the PLLS is set, the FLL is disabled in all modes. + * + * Values: + * - 0 - FLL is selected. + * - 1 - PLL is selected (PRDIV 0 need to be programmed to the correct divider + * to generate a PLL reference clock in the range of 2-4 MHz prior to setting + * the PLLS bit). + */ +//@{ +#define BP_MCG_C6_PLLS (6U) //!< Bit position for MCG_C6_PLLS. +#define BM_MCG_C6_PLLS (0x40U) //!< Bit mask for MCG_C6_PLLS. +#define BS_MCG_C6_PLLS (1U) //!< Bit field size in bits for MCG_C6_PLLS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C6_PLLS field. +#define BR_MCG_C6_PLLS (BITBAND_ACCESS8(HW_MCG_C6_ADDR, BP_MCG_C6_PLLS)) +#endif + +//! @brief Format value for bitfield MCG_C6_PLLS. +#define BF_MCG_C6_PLLS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C6_PLLS), uint8_t) & BM_MCG_C6_PLLS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PLLS field to a new value. +#define BW_MCG_C6_PLLS(v) (BITBAND_ACCESS8(HW_MCG_C6_ADDR, BP_MCG_C6_PLLS) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C6, field LOLIE0[7] (RW) + * + * Determines if an interrupt request is made following a loss of lock + * indication. This bit only has an effect when LOLS 0 is set. + * + * Values: + * - 0 - No interrupt request is generated on loss of lock. + * - 1 - Generate an interrupt request on loss of lock. + */ +//@{ +#define BP_MCG_C6_LOLIE0 (7U) //!< Bit position for MCG_C6_LOLIE0. +#define BM_MCG_C6_LOLIE0 (0x80U) //!< Bit mask for MCG_C6_LOLIE0. +#define BS_MCG_C6_LOLIE0 (1U) //!< Bit field size in bits for MCG_C6_LOLIE0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C6_LOLIE0 field. +#define BR_MCG_C6_LOLIE0 (BITBAND_ACCESS8(HW_MCG_C6_ADDR, BP_MCG_C6_LOLIE0)) +#endif + +//! @brief Format value for bitfield MCG_C6_LOLIE0. +#define BF_MCG_C6_LOLIE0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C6_LOLIE0), uint8_t) & BM_MCG_C6_LOLIE0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOLIE0 field to a new value. +#define BW_MCG_C6_LOLIE0(v) (BITBAND_ACCESS8(HW_MCG_C6_ADDR, BP_MCG_C6_LOLIE0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_S - MCG Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_S - MCG Status Register (RW) + * + * Reset value: 0x10U + */ +typedef union _hw_mcg_s +{ + uint8_t U; + struct _hw_mcg_s_bitfields + { + uint8_t IRCST : 1; //!< [0] Internal Reference Clock Status + uint8_t OSCINIT0 : 1; //!< [1] OSC Initialization + uint8_t CLKST : 2; //!< [3:2] Clock Mode Status + uint8_t IREFST : 1; //!< [4] Internal Reference Status + uint8_t PLLST : 1; //!< [5] PLL Select Status + uint8_t LOCK0 : 1; //!< [6] Lock Status + uint8_t LOLS0 : 1; //!< [7] Loss of Lock Status + } B; +} hw_mcg_s_t; +#endif + +/*! + * @name Constants and macros for entire MCG_S register + */ +//@{ +#define HW_MCG_S_ADDR (REGS_MCG_BASE + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_S (*(__IO hw_mcg_s_t *) HW_MCG_S_ADDR) +#define HW_MCG_S_RD() (HW_MCG_S.U) +#define HW_MCG_S_WR(v) (HW_MCG_S.U = (v)) +#define HW_MCG_S_SET(v) (HW_MCG_S_WR(HW_MCG_S_RD() | (v))) +#define HW_MCG_S_CLR(v) (HW_MCG_S_WR(HW_MCG_S_RD() & ~(v))) +#define HW_MCG_S_TOG(v) (HW_MCG_S_WR(HW_MCG_S_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_S bitfields + */ + +/*! + * @name Register MCG_S, field IRCST[0] (RO) + * + * The IRCST bit indicates the current source for the internal reference clock + * select clock (IRCSCLK). The IRCST bit does not update immediately after a write + * to the IRCS bit due to internal synchronization between clock domains. The + * IRCST bit will only be updated if the internal reference clock is enabled, + * either by the MCG being in a mode that uses the IRC or by setting the C1[IRCLKEN] + * bit . + * + * Values: + * - 0 - Source of internal reference clock is the slow clock (32 kHz IRC). + * - 1 - Source of internal reference clock is the fast clock (4 MHz IRC). + */ +//@{ +#define BP_MCG_S_IRCST (0U) //!< Bit position for MCG_S_IRCST. +#define BM_MCG_S_IRCST (0x01U) //!< Bit mask for MCG_S_IRCST. +#define BS_MCG_S_IRCST (1U) //!< Bit field size in bits for MCG_S_IRCST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_S_IRCST field. +#define BR_MCG_S_IRCST (BITBAND_ACCESS8(HW_MCG_S_ADDR, BP_MCG_S_IRCST)) +#endif +//@} + +/*! + * @name Register MCG_S, field OSCINIT0[1] (RO) + * + * This bit, which resets to 0, is set to 1 after the initialization cycles of + * the crystal oscillator clock have completed. After being set, the bit is + * cleared to 0 if the OSC is subsequently disabled. See the OSC module's detailed + * description for more information. + */ +//@{ +#define BP_MCG_S_OSCINIT0 (1U) //!< Bit position for MCG_S_OSCINIT0. +#define BM_MCG_S_OSCINIT0 (0x02U) //!< Bit mask for MCG_S_OSCINIT0. +#define BS_MCG_S_OSCINIT0 (1U) //!< Bit field size in bits for MCG_S_OSCINIT0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_S_OSCINIT0 field. +#define BR_MCG_S_OSCINIT0 (BITBAND_ACCESS8(HW_MCG_S_ADDR, BP_MCG_S_OSCINIT0)) +#endif +//@} + +/*! + * @name Register MCG_S, field CLKST[3:2] (RO) + * + * These bits indicate the current clock mode. The CLKST bits do not update + * immediately after a write to the CLKS bits due to internal synchronization between + * clock domains. + * + * Values: + * - 00 - Encoding 0 - Output of the FLL is selected (reset default). + * - 01 - Encoding 1 - Internal reference clock is selected. + * - 10 - Encoding 2 - External reference clock is selected. + * - 11 - Encoding 3 - Output of the PLL is selected. + */ +//@{ +#define BP_MCG_S_CLKST (2U) //!< Bit position for MCG_S_CLKST. +#define BM_MCG_S_CLKST (0x0CU) //!< Bit mask for MCG_S_CLKST. +#define BS_MCG_S_CLKST (2U) //!< Bit field size in bits for MCG_S_CLKST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_S_CLKST field. +#define BR_MCG_S_CLKST (HW_MCG_S.B.CLKST) +#endif +//@} + +/*! + * @name Register MCG_S, field IREFST[4] (RO) + * + * This bit indicates the current source for the FLL reference clock. The IREFST + * bit does not update immediately after a write to the IREFS bit due to + * internal synchronization between clock domains. + * + * Values: + * - 0 - Source of FLL reference clock is the external reference clock. + * - 1 - Source of FLL reference clock is the internal reference clock. + */ +//@{ +#define BP_MCG_S_IREFST (4U) //!< Bit position for MCG_S_IREFST. +#define BM_MCG_S_IREFST (0x10U) //!< Bit mask for MCG_S_IREFST. +#define BS_MCG_S_IREFST (1U) //!< Bit field size in bits for MCG_S_IREFST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_S_IREFST field. +#define BR_MCG_S_IREFST (BITBAND_ACCESS8(HW_MCG_S_ADDR, BP_MCG_S_IREFST)) +#endif +//@} + +/*! + * @name Register MCG_S, field PLLST[5] (RO) + * + * This bit indicates the clock source selected by PLLS . The PLLST bit does not + * update immediately after a write to the PLLS bit due to internal + * synchronization between clock domains. + * + * Values: + * - 0 - Source of PLLS clock is FLL clock. + * - 1 - Source of PLLS clock is PLL output clock. + */ +//@{ +#define BP_MCG_S_PLLST (5U) //!< Bit position for MCG_S_PLLST. +#define BM_MCG_S_PLLST (0x20U) //!< Bit mask for MCG_S_PLLST. +#define BS_MCG_S_PLLST (1U) //!< Bit field size in bits for MCG_S_PLLST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_S_PLLST field. +#define BR_MCG_S_PLLST (BITBAND_ACCESS8(HW_MCG_S_ADDR, BP_MCG_S_PLLST)) +#endif +//@} + +/*! + * @name Register MCG_S, field LOCK0[6] (RO) + * + * This bit indicates whether the PLL has acquired lock. Lock detection is only + * enabled when the PLL is enabled (either through clock mode selection or + * PLLCLKEN0=1 setting). While the PLL clock is locking to the desired frequency, the + * MCG PLL clock (MCGPLLCLK) will be gated off until the LOCK bit gets asserted. + * If the lock status bit is set, changing the value of the PRDIV0 [4:0] bits in + * the C5 register or the VDIV0[4:0] bits in the C6 register causes the lock + * status bit to clear and stay cleared until the PLL has reacquired lock. Loss of PLL + * reference clock will also cause the LOCK0 bit to clear until the PLL has + * reacquired lock. Entry into LLS, VLPS, or regular Stop with PLLSTEN=0 also causes + * the lock status bit to clear and stay cleared until the Stop mode is exited + * and the PLL has reacquired lock. Any time the PLL is enabled and the LOCK0 bit + * is cleared, the MCGPLLCLK will be gated off until the LOCK0 bit is asserted + * again. + * + * Values: + * - 0 - PLL is currently unlocked. + * - 1 - PLL is currently locked. + */ +//@{ +#define BP_MCG_S_LOCK0 (6U) //!< Bit position for MCG_S_LOCK0. +#define BM_MCG_S_LOCK0 (0x40U) //!< Bit mask for MCG_S_LOCK0. +#define BS_MCG_S_LOCK0 (1U) //!< Bit field size in bits for MCG_S_LOCK0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_S_LOCK0 field. +#define BR_MCG_S_LOCK0 (BITBAND_ACCESS8(HW_MCG_S_ADDR, BP_MCG_S_LOCK0)) +#endif +//@} + +/*! + * @name Register MCG_S, field LOLS0[7] (W1C) + * + * This bit is a sticky bit indicating the lock status for the PLL. LOLS is set + * if after acquiring lock, the PLL output frequency has fallen outside the lock + * exit frequency tolerance, D unl . LOLIE determines whether an interrupt + * request is made when LOLS is set. LOLRE determines whether a reset request is made + * when LOLS is set. This bit is cleared by reset or by writing a logic 1 to it + * when set. Writing a logic 0 to this bit has no effect. + * + * Values: + * - 0 - PLL has not lost lock since LOLS 0 was last cleared. + * - 1 - PLL has lost lock since LOLS 0 was last cleared. + */ +//@{ +#define BP_MCG_S_LOLS0 (7U) //!< Bit position for MCG_S_LOLS0. +#define BM_MCG_S_LOLS0 (0x80U) //!< Bit mask for MCG_S_LOLS0. +#define BS_MCG_S_LOLS0 (1U) //!< Bit field size in bits for MCG_S_LOLS0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_S_LOLS0 field. +#define BR_MCG_S_LOLS0 (BITBAND_ACCESS8(HW_MCG_S_ADDR, BP_MCG_S_LOLS0)) +#endif + +//! @brief Format value for bitfield MCG_S_LOLS0. +#define BF_MCG_S_LOLS0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_S_LOLS0), uint8_t) & BM_MCG_S_LOLS0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOLS0 field to a new value. +#define BW_MCG_S_LOLS0(v) (BITBAND_ACCESS8(HW_MCG_S_ADDR, BP_MCG_S_LOLS0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_SC - MCG Status and Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_SC - MCG Status and Control Register (RW) + * + * Reset value: 0x02U + */ +typedef union _hw_mcg_sc +{ + uint8_t U; + struct _hw_mcg_sc_bitfields + { + uint8_t LOCS0 : 1; //!< [0] OSC0 Loss of Clock Status + uint8_t FCRDIV : 3; //!< [3:1] Fast Clock Internal Reference Divider + uint8_t FLTPRSRV : 1; //!< [4] FLL Filter Preserve Enable + uint8_t ATMF : 1; //!< [5] Automatic Trim Machine Fail Flag + uint8_t ATMS : 1; //!< [6] Automatic Trim Machine Select + uint8_t ATME : 1; //!< [7] Automatic Trim Machine Enable + } B; +} hw_mcg_sc_t; +#endif + +/*! + * @name Constants and macros for entire MCG_SC register + */ +//@{ +#define HW_MCG_SC_ADDR (REGS_MCG_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_SC (*(__IO hw_mcg_sc_t *) HW_MCG_SC_ADDR) +#define HW_MCG_SC_RD() (HW_MCG_SC.U) +#define HW_MCG_SC_WR(v) (HW_MCG_SC.U = (v)) +#define HW_MCG_SC_SET(v) (HW_MCG_SC_WR(HW_MCG_SC_RD() | (v))) +#define HW_MCG_SC_CLR(v) (HW_MCG_SC_WR(HW_MCG_SC_RD() & ~(v))) +#define HW_MCG_SC_TOG(v) (HW_MCG_SC_WR(HW_MCG_SC_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_SC bitfields + */ + +/*! + * @name Register MCG_SC, field LOCS0[0] (W1C) + * + * The LOCS0 indicates when a loss of OSC0 reference clock has occurred. The + * LOCS0 bit only has an effect when CME0 is set. This bit is cleared by writing a + * logic 1 to it when set. + * + * Values: + * - 0 - Loss of OSC0 has not occurred. + * - 1 - Loss of OSC0 has occurred. + */ +//@{ +#define BP_MCG_SC_LOCS0 (0U) //!< Bit position for MCG_SC_LOCS0. +#define BM_MCG_SC_LOCS0 (0x01U) //!< Bit mask for MCG_SC_LOCS0. +#define BS_MCG_SC_LOCS0 (1U) //!< Bit field size in bits for MCG_SC_LOCS0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_SC_LOCS0 field. +#define BR_MCG_SC_LOCS0 (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_LOCS0)) +#endif + +//! @brief Format value for bitfield MCG_SC_LOCS0. +#define BF_MCG_SC_LOCS0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_SC_LOCS0), uint8_t) & BM_MCG_SC_LOCS0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOCS0 field to a new value. +#define BW_MCG_SC_LOCS0(v) (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_LOCS0) = (v)) +#endif +//@} + +/*! + * @name Register MCG_SC, field FCRDIV[3:1] (RW) + * + * Selects the amount to divide down the fast internal reference clock. The + * resulting frequency will be in the range 31.25 kHz to 4 MHz (Note: Changing the + * divider when the Fast IRC is enabled is not supported). + * + * Values: + * - 000 - Divide Factor is 1 + * - 001 - Divide Factor is 2. + * - 010 - Divide Factor is 4. + * - 011 - Divide Factor is 8. + * - 100 - Divide Factor is 16 + * - 101 - Divide Factor is 32 + * - 110 - Divide Factor is 64 + * - 111 - Divide Factor is 128. + */ +//@{ +#define BP_MCG_SC_FCRDIV (1U) //!< Bit position for MCG_SC_FCRDIV. +#define BM_MCG_SC_FCRDIV (0x0EU) //!< Bit mask for MCG_SC_FCRDIV. +#define BS_MCG_SC_FCRDIV (3U) //!< Bit field size in bits for MCG_SC_FCRDIV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_SC_FCRDIV field. +#define BR_MCG_SC_FCRDIV (HW_MCG_SC.B.FCRDIV) +#endif + +//! @brief Format value for bitfield MCG_SC_FCRDIV. +#define BF_MCG_SC_FCRDIV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_SC_FCRDIV), uint8_t) & BM_MCG_SC_FCRDIV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FCRDIV field to a new value. +#define BW_MCG_SC_FCRDIV(v) (HW_MCG_SC_WR((HW_MCG_SC_RD() & ~BM_MCG_SC_FCRDIV) | BF_MCG_SC_FCRDIV(v))) +#endif +//@} + +/*! + * @name Register MCG_SC, field FLTPRSRV[4] (RW) + * + * This bit will prevent the FLL filter values from resetting allowing the FLL + * output frequency to remain the same during clock mode changes where the FLL/DCO + * output is still valid. (Note: This requires that the FLL reference frequency + * to remain the same as what it was prior to the new clock mode switch. + * Otherwise FLL filter and frequency values will change.) + * + * Values: + * - 0 - FLL filter and FLL frequency will reset on changes to currect clock + * mode. + * - 1 - Fll filter and FLL frequency retain their previous values during new + * clock mode change. + */ +//@{ +#define BP_MCG_SC_FLTPRSRV (4U) //!< Bit position for MCG_SC_FLTPRSRV. +#define BM_MCG_SC_FLTPRSRV (0x10U) //!< Bit mask for MCG_SC_FLTPRSRV. +#define BS_MCG_SC_FLTPRSRV (1U) //!< Bit field size in bits for MCG_SC_FLTPRSRV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_SC_FLTPRSRV field. +#define BR_MCG_SC_FLTPRSRV (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_FLTPRSRV)) +#endif + +//! @brief Format value for bitfield MCG_SC_FLTPRSRV. +#define BF_MCG_SC_FLTPRSRV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_SC_FLTPRSRV), uint8_t) & BM_MCG_SC_FLTPRSRV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLTPRSRV field to a new value. +#define BW_MCG_SC_FLTPRSRV(v) (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_FLTPRSRV) = (v)) +#endif +//@} + +/*! + * @name Register MCG_SC, field ATMF[5] (RW) + * + * Fail flag for the Automatic Trim Machine (ATM). This bit asserts when the + * Automatic Trim Machine is enabled, ATME=1, and a write to the C1, C3, C4, and SC + * registers is detected or the MCG enters into any Stop mode. A write to ATMF + * clears the flag. + * + * Values: + * - 0 - Automatic Trim Machine completed normally. + * - 1 - Automatic Trim Machine failed. + */ +//@{ +#define BP_MCG_SC_ATMF (5U) //!< Bit position for MCG_SC_ATMF. +#define BM_MCG_SC_ATMF (0x20U) //!< Bit mask for MCG_SC_ATMF. +#define BS_MCG_SC_ATMF (1U) //!< Bit field size in bits for MCG_SC_ATMF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_SC_ATMF field. +#define BR_MCG_SC_ATMF (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_ATMF)) +#endif + +//! @brief Format value for bitfield MCG_SC_ATMF. +#define BF_MCG_SC_ATMF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_SC_ATMF), uint8_t) & BM_MCG_SC_ATMF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ATMF field to a new value. +#define BW_MCG_SC_ATMF(v) (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_ATMF) = (v)) +#endif +//@} + +/*! + * @name Register MCG_SC, field ATMS[6] (RW) + * + * Selects the IRCS clock for Auto Trim Test. + * + * Values: + * - 0 - 32 kHz Internal Reference Clock selected. + * - 1 - 4 MHz Internal Reference Clock selected. + */ +//@{ +#define BP_MCG_SC_ATMS (6U) //!< Bit position for MCG_SC_ATMS. +#define BM_MCG_SC_ATMS (0x40U) //!< Bit mask for MCG_SC_ATMS. +#define BS_MCG_SC_ATMS (1U) //!< Bit field size in bits for MCG_SC_ATMS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_SC_ATMS field. +#define BR_MCG_SC_ATMS (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_ATMS)) +#endif + +//! @brief Format value for bitfield MCG_SC_ATMS. +#define BF_MCG_SC_ATMS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_SC_ATMS), uint8_t) & BM_MCG_SC_ATMS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ATMS field to a new value. +#define BW_MCG_SC_ATMS(v) (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_ATMS) = (v)) +#endif +//@} + +/*! + * @name Register MCG_SC, field ATME[7] (RW) + * + * Enables the Auto Trim Machine to start automatically trimming the selected + * Internal Reference Clock. ATME deasserts after the Auto Trim Machine has + * completed trimming all trim bits of the IRCS clock selected by the ATMS bit. Writing + * to C1, C3, C4, and SC registers or entering Stop mode aborts the auto trim + * operation and clears this bit. + * + * Values: + * - 0 - Auto Trim Machine disabled. + * - 1 - Auto Trim Machine enabled. + */ +//@{ +#define BP_MCG_SC_ATME (7U) //!< Bit position for MCG_SC_ATME. +#define BM_MCG_SC_ATME (0x80U) //!< Bit mask for MCG_SC_ATME. +#define BS_MCG_SC_ATME (1U) //!< Bit field size in bits for MCG_SC_ATME. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_SC_ATME field. +#define BR_MCG_SC_ATME (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_ATME)) +#endif + +//! @brief Format value for bitfield MCG_SC_ATME. +#define BF_MCG_SC_ATME(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_SC_ATME), uint8_t) & BM_MCG_SC_ATME) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ATME field to a new value. +#define BW_MCG_SC_ATME(v) (BITBAND_ACCESS8(HW_MCG_SC_ADDR, BP_MCG_SC_ATME) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_ATCVH - MCG Auto Trim Compare Value High Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_ATCVH - MCG Auto Trim Compare Value High Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_mcg_atcvh +{ + uint8_t U; + struct _hw_mcg_atcvh_bitfields + { + uint8_t ATCVH : 8; //!< [7:0] ATM Compare Value High + } B; +} hw_mcg_atcvh_t; +#endif + +/*! + * @name Constants and macros for entire MCG_ATCVH register + */ +//@{ +#define HW_MCG_ATCVH_ADDR (REGS_MCG_BASE + 0xAU) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_ATCVH (*(__IO hw_mcg_atcvh_t *) HW_MCG_ATCVH_ADDR) +#define HW_MCG_ATCVH_RD() (HW_MCG_ATCVH.U) +#define HW_MCG_ATCVH_WR(v) (HW_MCG_ATCVH.U = (v)) +#define HW_MCG_ATCVH_SET(v) (HW_MCG_ATCVH_WR(HW_MCG_ATCVH_RD() | (v))) +#define HW_MCG_ATCVH_CLR(v) (HW_MCG_ATCVH_WR(HW_MCG_ATCVH_RD() & ~(v))) +#define HW_MCG_ATCVH_TOG(v) (HW_MCG_ATCVH_WR(HW_MCG_ATCVH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_ATCVH bitfields + */ + +/*! + * @name Register MCG_ATCVH, field ATCVH[7:0] (RW) + * + * Values are used by Auto Trim Machine to compare and adjust Internal Reference + * trim values during ATM SAR conversion. + */ +//@{ +#define BP_MCG_ATCVH_ATCVH (0U) //!< Bit position for MCG_ATCVH_ATCVH. +#define BM_MCG_ATCVH_ATCVH (0xFFU) //!< Bit mask for MCG_ATCVH_ATCVH. +#define BS_MCG_ATCVH_ATCVH (8U) //!< Bit field size in bits for MCG_ATCVH_ATCVH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_ATCVH_ATCVH field. +#define BR_MCG_ATCVH_ATCVH (HW_MCG_ATCVH.U) +#endif + +//! @brief Format value for bitfield MCG_ATCVH_ATCVH. +#define BF_MCG_ATCVH_ATCVH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_ATCVH_ATCVH), uint8_t) & BM_MCG_ATCVH_ATCVH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ATCVH field to a new value. +#define BW_MCG_ATCVH_ATCVH(v) (HW_MCG_ATCVH_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_ATCVL - MCG Auto Trim Compare Value Low Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_ATCVL - MCG Auto Trim Compare Value Low Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_mcg_atcvl +{ + uint8_t U; + struct _hw_mcg_atcvl_bitfields + { + uint8_t ATCVL : 8; //!< [7:0] ATM Compare Value Low + } B; +} hw_mcg_atcvl_t; +#endif + +/*! + * @name Constants and macros for entire MCG_ATCVL register + */ +//@{ +#define HW_MCG_ATCVL_ADDR (REGS_MCG_BASE + 0xBU) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_ATCVL (*(__IO hw_mcg_atcvl_t *) HW_MCG_ATCVL_ADDR) +#define HW_MCG_ATCVL_RD() (HW_MCG_ATCVL.U) +#define HW_MCG_ATCVL_WR(v) (HW_MCG_ATCVL.U = (v)) +#define HW_MCG_ATCVL_SET(v) (HW_MCG_ATCVL_WR(HW_MCG_ATCVL_RD() | (v))) +#define HW_MCG_ATCVL_CLR(v) (HW_MCG_ATCVL_WR(HW_MCG_ATCVL_RD() & ~(v))) +#define HW_MCG_ATCVL_TOG(v) (HW_MCG_ATCVL_WR(HW_MCG_ATCVL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_ATCVL bitfields + */ + +/*! + * @name Register MCG_ATCVL, field ATCVL[7:0] (RW) + * + * Values are used by Auto Trim Machine to compare and adjust Internal Reference + * trim values during ATM SAR conversion. + */ +//@{ +#define BP_MCG_ATCVL_ATCVL (0U) //!< Bit position for MCG_ATCVL_ATCVL. +#define BM_MCG_ATCVL_ATCVL (0xFFU) //!< Bit mask for MCG_ATCVL_ATCVL. +#define BS_MCG_ATCVL_ATCVL (8U) //!< Bit field size in bits for MCG_ATCVL_ATCVL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_ATCVL_ATCVL field. +#define BR_MCG_ATCVL_ATCVL (HW_MCG_ATCVL.U) +#endif + +//! @brief Format value for bitfield MCG_ATCVL_ATCVL. +#define BF_MCG_ATCVL_ATCVL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_ATCVL_ATCVL), uint8_t) & BM_MCG_ATCVL_ATCVL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ATCVL field to a new value. +#define BW_MCG_ATCVL_ATCVL(v) (HW_MCG_ATCVL_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_C7 - MCG Control 7 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_C7 - MCG Control 7 Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_mcg_c7 +{ + uint8_t U; + struct _hw_mcg_c7_bitfields + { + uint8_t OSCSEL : 2; //!< [1:0] MCG OSC Clock Select + uint8_t RESERVED0 : 6; //!< [7:2] + } B; +} hw_mcg_c7_t; +#endif + +/*! + * @name Constants and macros for entire MCG_C7 register + */ +//@{ +#define HW_MCG_C7_ADDR (REGS_MCG_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_C7 (*(__IO hw_mcg_c7_t *) HW_MCG_C7_ADDR) +#define HW_MCG_C7_RD() (HW_MCG_C7.U) +#define HW_MCG_C7_WR(v) (HW_MCG_C7.U = (v)) +#define HW_MCG_C7_SET(v) (HW_MCG_C7_WR(HW_MCG_C7_RD() | (v))) +#define HW_MCG_C7_CLR(v) (HW_MCG_C7_WR(HW_MCG_C7_RD() & ~(v))) +#define HW_MCG_C7_TOG(v) (HW_MCG_C7_WR(HW_MCG_C7_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_C7 bitfields + */ + +/*! + * @name Register MCG_C7, field OSCSEL[1:0] (RW) + * + * Selects the MCG FLL external reference clock + * + * Values: + * - 00 - Selects Oscillator (OSCCLK0). + * - 01 - Selects 32 kHz RTC Oscillator. + * - 10 - Selects Oscillator (OSCCLK1). + * - 11 - RESERVED + */ +//@{ +#define BP_MCG_C7_OSCSEL (0U) //!< Bit position for MCG_C7_OSCSEL. +#define BM_MCG_C7_OSCSEL (0x03U) //!< Bit mask for MCG_C7_OSCSEL. +#define BS_MCG_C7_OSCSEL (2U) //!< Bit field size in bits for MCG_C7_OSCSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C7_OSCSEL field. +#define BR_MCG_C7_OSCSEL (HW_MCG_C7.B.OSCSEL) +#endif + +//! @brief Format value for bitfield MCG_C7_OSCSEL. +#define BF_MCG_C7_OSCSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C7_OSCSEL), uint8_t) & BM_MCG_C7_OSCSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OSCSEL field to a new value. +#define BW_MCG_C7_OSCSEL(v) (HW_MCG_C7_WR((HW_MCG_C7_RD() & ~BM_MCG_C7_OSCSEL) | BF_MCG_C7_OSCSEL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCG_C8 - MCG Control 8 Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCG_C8 - MCG Control 8 Register (RW) + * + * Reset value: 0x80U + */ +typedef union _hw_mcg_c8 +{ + uint8_t U; + struct _hw_mcg_c8_bitfields + { + uint8_t LOCS1 : 1; //!< [0] RTC Loss of Clock Status + uint8_t RESERVED0 : 4; //!< [4:1] + uint8_t CME1 : 1; //!< [5] Clock Monitor Enable1 + uint8_t LOLRE : 1; //!< [6] PLL Loss of Lock Reset Enable + uint8_t LOCRE1 : 1; //!< [7] Loss of Clock Reset Enable + } B; +} hw_mcg_c8_t; +#endif + +/*! + * @name Constants and macros for entire MCG_C8 register + */ +//@{ +#define HW_MCG_C8_ADDR (REGS_MCG_BASE + 0xDU) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCG_C8 (*(__IO hw_mcg_c8_t *) HW_MCG_C8_ADDR) +#define HW_MCG_C8_RD() (HW_MCG_C8.U) +#define HW_MCG_C8_WR(v) (HW_MCG_C8.U = (v)) +#define HW_MCG_C8_SET(v) (HW_MCG_C8_WR(HW_MCG_C8_RD() | (v))) +#define HW_MCG_C8_CLR(v) (HW_MCG_C8_WR(HW_MCG_C8_RD() & ~(v))) +#define HW_MCG_C8_TOG(v) (HW_MCG_C8_WR(HW_MCG_C8_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCG_C8 bitfields + */ + +/*! + * @name Register MCG_C8, field LOCS1[0] (W1C) + * + * This bit indicates when a loss of clock has occurred. This bit is cleared by + * writing a logic 1 to it when set. + * + * Values: + * - 0 - Loss of RTC has not occur. + * - 1 - Loss of RTC has occur + */ +//@{ +#define BP_MCG_C8_LOCS1 (0U) //!< Bit position for MCG_C8_LOCS1. +#define BM_MCG_C8_LOCS1 (0x01U) //!< Bit mask for MCG_C8_LOCS1. +#define BS_MCG_C8_LOCS1 (1U) //!< Bit field size in bits for MCG_C8_LOCS1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C8_LOCS1 field. +#define BR_MCG_C8_LOCS1 (BITBAND_ACCESS8(HW_MCG_C8_ADDR, BP_MCG_C8_LOCS1)) +#endif + +//! @brief Format value for bitfield MCG_C8_LOCS1. +#define BF_MCG_C8_LOCS1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C8_LOCS1), uint8_t) & BM_MCG_C8_LOCS1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOCS1 field to a new value. +#define BW_MCG_C8_LOCS1(v) (BITBAND_ACCESS8(HW_MCG_C8_ADDR, BP_MCG_C8_LOCS1) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C8, field CME1[5] (RW) + * + * Enables the loss of clock monitoring circuit for the output of the RTC + * external reference clock. The LOCRE1 bit will determine whether an interrupt or a + * reset request is generated following a loss of RTC clock indication. The CME1 + * bit should be set to a logic 1 when the MCG is in an operational mode that uses + * the RTC as its external reference clock or if the RTC is operational. CME1 bit + * must be set to a logic 0 before the MCG enters any Stop mode. Otherwise, a + * reset request may occur when in Stop mode. CME1 should also be set to a logic 0 + * before entering VLPR or VLPW power modes. + * + * Values: + * - 0 - External clock monitor is disabled for RTC clock. + * - 1 - External clock monitor is enabled for RTC clock. + */ +//@{ +#define BP_MCG_C8_CME1 (5U) //!< Bit position for MCG_C8_CME1. +#define BM_MCG_C8_CME1 (0x20U) //!< Bit mask for MCG_C8_CME1. +#define BS_MCG_C8_CME1 (1U) //!< Bit field size in bits for MCG_C8_CME1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C8_CME1 field. +#define BR_MCG_C8_CME1 (BITBAND_ACCESS8(HW_MCG_C8_ADDR, BP_MCG_C8_CME1)) +#endif + +//! @brief Format value for bitfield MCG_C8_CME1. +#define BF_MCG_C8_CME1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C8_CME1), uint8_t) & BM_MCG_C8_CME1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CME1 field to a new value. +#define BW_MCG_C8_CME1(v) (BITBAND_ACCESS8(HW_MCG_C8_ADDR, BP_MCG_C8_CME1) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C8, field LOLRE[6] (RW) + * + * Determines if an interrupt or a reset request is made following a PLL loss of + * lock. + * + * Values: + * - 0 - Interrupt request is generated on a PLL loss of lock indication. The + * PLL loss of lock interrupt enable bit must also be set to generate the + * interrupt request. + * - 1 - Generate a reset request on a PLL loss of lock indication. + */ +//@{ +#define BP_MCG_C8_LOLRE (6U) //!< Bit position for MCG_C8_LOLRE. +#define BM_MCG_C8_LOLRE (0x40U) //!< Bit mask for MCG_C8_LOLRE. +#define BS_MCG_C8_LOLRE (1U) //!< Bit field size in bits for MCG_C8_LOLRE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C8_LOLRE field. +#define BR_MCG_C8_LOLRE (BITBAND_ACCESS8(HW_MCG_C8_ADDR, BP_MCG_C8_LOLRE)) +#endif + +//! @brief Format value for bitfield MCG_C8_LOLRE. +#define BF_MCG_C8_LOLRE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C8_LOLRE), uint8_t) & BM_MCG_C8_LOLRE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOLRE field to a new value. +#define BW_MCG_C8_LOLRE(v) (BITBAND_ACCESS8(HW_MCG_C8_ADDR, BP_MCG_C8_LOLRE) = (v)) +#endif +//@} + +/*! + * @name Register MCG_C8, field LOCRE1[7] (RW) + * + * Determines if a interrupt or a reset request is made following a loss of RTC + * external reference clock. The LOCRE1 only has an affect when CME1 is set. + * + * Values: + * - 0 - Interrupt request is generated on a loss of RTC external reference + * clock. + * - 1 - Generate a reset request on a loss of RTC external reference clock + */ +//@{ +#define BP_MCG_C8_LOCRE1 (7U) //!< Bit position for MCG_C8_LOCRE1. +#define BM_MCG_C8_LOCRE1 (0x80U) //!< Bit mask for MCG_C8_LOCRE1. +#define BS_MCG_C8_LOCRE1 (1U) //!< Bit field size in bits for MCG_C8_LOCRE1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCG_C8_LOCRE1 field. +#define BR_MCG_C8_LOCRE1 (BITBAND_ACCESS8(HW_MCG_C8_ADDR, BP_MCG_C8_LOCRE1)) +#endif + +//! @brief Format value for bitfield MCG_C8_LOCRE1. +#define BF_MCG_C8_LOCRE1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_MCG_C8_LOCRE1), uint8_t) & BM_MCG_C8_LOCRE1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOCRE1 field to a new value. +#define BW_MCG_C8_LOCRE1(v) (BITBAND_ACCESS8(HW_MCG_C8_ADDR, BP_MCG_C8_LOCRE1) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_mcg_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All MCG module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_mcg +{ + __IO hw_mcg_c1_t C1; //!< [0x0] MCG Control 1 Register + __IO hw_mcg_c2_t C2; //!< [0x1] MCG Control 2 Register + __IO hw_mcg_c3_t C3; //!< [0x2] MCG Control 3 Register + __IO hw_mcg_c4_t C4; //!< [0x3] MCG Control 4 Register + __IO hw_mcg_c5_t C5; //!< [0x4] MCG Control 5 Register + __IO hw_mcg_c6_t C6; //!< [0x5] MCG Control 6 Register + __IO hw_mcg_s_t S; //!< [0x6] MCG Status Register + uint8_t _reserved0[1]; + __IO hw_mcg_sc_t SC; //!< [0x8] MCG Status and Control Register + uint8_t _reserved1[1]; + __IO hw_mcg_atcvh_t ATCVH; //!< [0xA] MCG Auto Trim Compare Value High Register + __IO hw_mcg_atcvl_t ATCVL; //!< [0xB] MCG Auto Trim Compare Value Low Register + __IO hw_mcg_c7_t C7; //!< [0xC] MCG Control 7 Register + __IO hw_mcg_c8_t C8; //!< [0xD] MCG Control 8 Register +} hw_mcg_t; +#pragma pack() + +//! @brief Macro to access all MCG registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_MCG</code>. +#define HW_MCG (*(hw_mcg_t *) REGS_MCG_BASE) +#endif + +#endif // __HW_MCG_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_mcm.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1164 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_MCM_REGISTERS_H__ +#define __HW_MCM_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 MCM + * + * Core Platform Miscellaneous Control Module + * + * Registers defined in this header file: + * - HW_MCM_PLASC - Crossbar Switch (AXBS) Slave Configuration + * - HW_MCM_PLAMC - Crossbar Switch (AXBS) Master Configuration + * - HW_MCM_CR - Control Register + * - HW_MCM_ISR - Interrupt Status Register + * - HW_MCM_ETBCC - ETB Counter Control register + * - HW_MCM_ETBRL - ETB Reload register + * - HW_MCM_ETBCNT - ETB Counter Value register + * - HW_MCM_PID - Process ID register + * + * - hw_mcm_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_MCM_BASE +#define HW_MCM_INSTANCE_COUNT (1U) //!< Number of instances of the MCM module. +#define REGS_MCM_BASE (0xE0080000U) //!< Base address for MCM. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCM_PLASC - Crossbar Switch (AXBS) Slave Configuration +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCM_PLASC - Crossbar Switch (AXBS) Slave Configuration (RO) + * + * Reset value: 0x001FU + * + * PLASC is a 16-bit read-only register identifying the presence/absence of bus + * slave connections to the device's crossbar switch. + */ +typedef union _hw_mcm_plasc +{ + uint16_t U; + struct _hw_mcm_plasc_bitfields + { + uint16_t ASC : 8; //!< [7:0] Each bit in the ASC field indicates + //! whether there is a corresponding connection to the crossbar switch's slave + //! input port. + uint16_t RESERVED0 : 8; //!< [15:8] + } B; +} hw_mcm_plasc_t; +#endif + +/*! + * @name Constants and macros for entire MCM_PLASC register + */ +//@{ +#define HW_MCM_PLASC_ADDR (REGS_MCM_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCM_PLASC (*(__I hw_mcm_plasc_t *) HW_MCM_PLASC_ADDR) +#define HW_MCM_PLASC_RD() (HW_MCM_PLASC.U) +#endif +//@} + +/* + * Constants & macros for individual MCM_PLASC bitfields + */ + +/*! + * @name Register MCM_PLASC, field ASC[7:0] (RO) + * + * Values: + * - 0 - A bus slave connection to AXBS input port n is absent + * - 1 - A bus slave connection to AXBS input port n is present + */ +//@{ +#define BP_MCM_PLASC_ASC (0U) //!< Bit position for MCM_PLASC_ASC. +#define BM_MCM_PLASC_ASC (0x00FFU) //!< Bit mask for MCM_PLASC_ASC. +#define BS_MCM_PLASC_ASC (8U) //!< Bit field size in bits for MCM_PLASC_ASC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_PLASC_ASC field. +#define BR_MCM_PLASC_ASC (HW_MCM_PLASC.B.ASC) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCM_PLAMC - Crossbar Switch (AXBS) Master Configuration +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCM_PLAMC - Crossbar Switch (AXBS) Master Configuration (RO) + * + * Reset value: 0x0037U + * + * PLAMC is a 16-bit read-only register identifying the presence/absence of bus + * master connections to the device's crossbar switch. + */ +typedef union _hw_mcm_plamc +{ + uint16_t U; + struct _hw_mcm_plamc_bitfields + { + uint16_t AMC : 8; //!< [7:0] Each bit in the AMC field indicates + //! whether there is a corresponding connection to the AXBS master input port. + uint16_t RESERVED0 : 8; //!< [15:8] + } B; +} hw_mcm_plamc_t; +#endif + +/*! + * @name Constants and macros for entire MCM_PLAMC register + */ +//@{ +#define HW_MCM_PLAMC_ADDR (REGS_MCM_BASE + 0xAU) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCM_PLAMC (*(__I hw_mcm_plamc_t *) HW_MCM_PLAMC_ADDR) +#define HW_MCM_PLAMC_RD() (HW_MCM_PLAMC.U) +#endif +//@} + +/* + * Constants & macros for individual MCM_PLAMC bitfields + */ + +/*! + * @name Register MCM_PLAMC, field AMC[7:0] (RO) + * + * Values: + * - 0 - A bus master connection to AXBS input port n is absent + * - 1 - A bus master connection to AXBS input port n is present + */ +//@{ +#define BP_MCM_PLAMC_AMC (0U) //!< Bit position for MCM_PLAMC_AMC. +#define BM_MCM_PLAMC_AMC (0x00FFU) //!< Bit mask for MCM_PLAMC_AMC. +#define BS_MCM_PLAMC_AMC (8U) //!< Bit field size in bits for MCM_PLAMC_AMC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_PLAMC_AMC field. +#define BR_MCM_PLAMC_AMC (HW_MCM_PLAMC.B.AMC) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCM_CR - Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCM_CR - Control Register (RW) + * + * Reset value: 0x00000000U + * + * CR defines the arbitration and protection schemes for the two system RAM + * arrays. + */ +typedef union _hw_mcm_cr +{ + uint32_t U; + struct _hw_mcm_cr_bitfields + { + uint32_t RESERVED0 : 24; //!< [23:0] + uint32_t SRAMUAP : 2; //!< [25:24] SRAM_U arbitration priority + uint32_t SRAMUWP : 1; //!< [26] SRAM_U write protect + uint32_t RESERVED1 : 1; //!< [27] + uint32_t SRAMLAP : 2; //!< [29:28] SRAM_L arbitration priority + uint32_t SRAMLWP : 1; //!< [30] SRAM_L Write Protect + uint32_t RESERVED2 : 1; //!< [31] + } B; +} hw_mcm_cr_t; +#endif + +/*! + * @name Constants and macros for entire MCM_CR register + */ +//@{ +#define HW_MCM_CR_ADDR (REGS_MCM_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCM_CR (*(__IO hw_mcm_cr_t *) HW_MCM_CR_ADDR) +#define HW_MCM_CR_RD() (HW_MCM_CR.U) +#define HW_MCM_CR_WR(v) (HW_MCM_CR.U = (v)) +#define HW_MCM_CR_SET(v) (HW_MCM_CR_WR(HW_MCM_CR_RD() | (v))) +#define HW_MCM_CR_CLR(v) (HW_MCM_CR_WR(HW_MCM_CR_RD() & ~(v))) +#define HW_MCM_CR_TOG(v) (HW_MCM_CR_WR(HW_MCM_CR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCM_CR bitfields + */ + +/*! + * @name Register MCM_CR, field SRAMUAP[25:24] (RW) + * + * Defines the arbitration scheme and priority for the processor and SRAM + * backdoor accesses to the SRAM_U array. + * + * Values: + * - 00 - Round robin + * - 01 - Special round robin (favors SRAM backoor accesses over the processor) + * - 10 - Fixed priority. Processor has highest, backdoor has lowest + * - 11 - Fixed priority. Backdoor has highest, processor has lowest + */ +//@{ +#define BP_MCM_CR_SRAMUAP (24U) //!< Bit position for MCM_CR_SRAMUAP. +#define BM_MCM_CR_SRAMUAP (0x03000000U) //!< Bit mask for MCM_CR_SRAMUAP. +#define BS_MCM_CR_SRAMUAP (2U) //!< Bit field size in bits for MCM_CR_SRAMUAP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_CR_SRAMUAP field. +#define BR_MCM_CR_SRAMUAP (HW_MCM_CR.B.SRAMUAP) +#endif + +//! @brief Format value for bitfield MCM_CR_SRAMUAP. +#define BF_MCM_CR_SRAMUAP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_CR_SRAMUAP), uint32_t) & BM_MCM_CR_SRAMUAP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRAMUAP field to a new value. +#define BW_MCM_CR_SRAMUAP(v) (HW_MCM_CR_WR((HW_MCM_CR_RD() & ~BM_MCM_CR_SRAMUAP) | BF_MCM_CR_SRAMUAP(v))) +#endif +//@} + +/*! + * @name Register MCM_CR, field SRAMUWP[26] (RW) + * + * When this bit is set, writes to SRAM_U array generates a bus error. + */ +//@{ +#define BP_MCM_CR_SRAMUWP (26U) //!< Bit position for MCM_CR_SRAMUWP. +#define BM_MCM_CR_SRAMUWP (0x04000000U) //!< Bit mask for MCM_CR_SRAMUWP. +#define BS_MCM_CR_SRAMUWP (1U) //!< Bit field size in bits for MCM_CR_SRAMUWP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_CR_SRAMUWP field. +#define BR_MCM_CR_SRAMUWP (BITBAND_ACCESS32(HW_MCM_CR_ADDR, BP_MCM_CR_SRAMUWP)) +#endif + +//! @brief Format value for bitfield MCM_CR_SRAMUWP. +#define BF_MCM_CR_SRAMUWP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_CR_SRAMUWP), uint32_t) & BM_MCM_CR_SRAMUWP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRAMUWP field to a new value. +#define BW_MCM_CR_SRAMUWP(v) (BITBAND_ACCESS32(HW_MCM_CR_ADDR, BP_MCM_CR_SRAMUWP) = (v)) +#endif +//@} + +/*! + * @name Register MCM_CR, field SRAMLAP[29:28] (RW) + * + * Defines the arbitration scheme and priority for the processor and SRAM + * backdoor accesses to the SRAM_L array. + * + * Values: + * - 00 - Round robin + * - 01 - Special round robin (favors SRAM backoor accesses over the processor) + * - 10 - Fixed priority. Processor has highest, backdoor has lowest + * - 11 - Fixed priority. Backdoor has highest, processor has lowest + */ +//@{ +#define BP_MCM_CR_SRAMLAP (28U) //!< Bit position for MCM_CR_SRAMLAP. +#define BM_MCM_CR_SRAMLAP (0x30000000U) //!< Bit mask for MCM_CR_SRAMLAP. +#define BS_MCM_CR_SRAMLAP (2U) //!< Bit field size in bits for MCM_CR_SRAMLAP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_CR_SRAMLAP field. +#define BR_MCM_CR_SRAMLAP (HW_MCM_CR.B.SRAMLAP) +#endif + +//! @brief Format value for bitfield MCM_CR_SRAMLAP. +#define BF_MCM_CR_SRAMLAP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_CR_SRAMLAP), uint32_t) & BM_MCM_CR_SRAMLAP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRAMLAP field to a new value. +#define BW_MCM_CR_SRAMLAP(v) (HW_MCM_CR_WR((HW_MCM_CR_RD() & ~BM_MCM_CR_SRAMLAP) | BF_MCM_CR_SRAMLAP(v))) +#endif +//@} + +/*! + * @name Register MCM_CR, field SRAMLWP[30] (RW) + * + * When this bit is set, writes to SRAM_L array generates a bus error. + */ +//@{ +#define BP_MCM_CR_SRAMLWP (30U) //!< Bit position for MCM_CR_SRAMLWP. +#define BM_MCM_CR_SRAMLWP (0x40000000U) //!< Bit mask for MCM_CR_SRAMLWP. +#define BS_MCM_CR_SRAMLWP (1U) //!< Bit field size in bits for MCM_CR_SRAMLWP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_CR_SRAMLWP field. +#define BR_MCM_CR_SRAMLWP (BITBAND_ACCESS32(HW_MCM_CR_ADDR, BP_MCM_CR_SRAMLWP)) +#endif + +//! @brief Format value for bitfield MCM_CR_SRAMLWP. +#define BF_MCM_CR_SRAMLWP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_CR_SRAMLWP), uint32_t) & BM_MCM_CR_SRAMLWP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRAMLWP field to a new value. +#define BW_MCM_CR_SRAMLWP(v) (BITBAND_ACCESS32(HW_MCM_CR_ADDR, BP_MCM_CR_SRAMLWP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCM_ISR - Interrupt Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCM_ISR - Interrupt Status Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_mcm_isr +{ + uint32_t U; + struct _hw_mcm_isr_bitfields + { + uint32_t RESERVED0 : 1; //!< [0] + uint32_t IRQ : 1; //!< [1] Normal Interrupt Pending + uint32_t NMI : 1; //!< [2] Non-maskable Interrupt Pending + uint32_t DHREQ : 1; //!< [3] Debug Halt Request Indicator + uint32_t RESERVED1 : 4; //!< [7:4] + uint32_t FIOC : 1; //!< [8] FPU invalid operation interrupt status + uint32_t FDZC : 1; //!< [9] FPU divide-by-zero interrupt status + uint32_t FOFC : 1; //!< [10] FPU overflow interrupt status + uint32_t FUFC : 1; //!< [11] FPU underflow interrupt status + uint32_t FIXC : 1; //!< [12] FPU inexact interrupt status + uint32_t RESERVED2 : 2; //!< [14:13] + uint32_t FIDC : 1; //!< [15] FPU input denormal interrupt status + uint32_t RESERVED3 : 8; //!< [23:16] + uint32_t FIOCE : 1; //!< [24] FPU invalid operation interrupt enable + uint32_t FDZCE : 1; //!< [25] FPU divide-by-zero interrupt enable + uint32_t FOFCE : 1; //!< [26] FPU overflow interrupt enable + uint32_t FUFCE : 1; //!< [27] FPU underflow interrupt enable + uint32_t FIXCE : 1; //!< [28] FPU inexact interrupt enable + uint32_t RESERVED4 : 2; //!< [30:29] + uint32_t FIDCE : 1; //!< [31] FPU input denormal interrupt enable + } B; +} hw_mcm_isr_t; +#endif + +/*! + * @name Constants and macros for entire MCM_ISR register + */ +//@{ +#define HW_MCM_ISR_ADDR (REGS_MCM_BASE + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCM_ISR (*(__IO hw_mcm_isr_t *) HW_MCM_ISR_ADDR) +#define HW_MCM_ISR_RD() (HW_MCM_ISR.U) +#define HW_MCM_ISR_WR(v) (HW_MCM_ISR.U = (v)) +#define HW_MCM_ISR_SET(v) (HW_MCM_ISR_WR(HW_MCM_ISR_RD() | (v))) +#define HW_MCM_ISR_CLR(v) (HW_MCM_ISR_WR(HW_MCM_ISR_RD() & ~(v))) +#define HW_MCM_ISR_TOG(v) (HW_MCM_ISR_WR(HW_MCM_ISR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCM_ISR bitfields + */ + +/*! + * @name Register MCM_ISR, field IRQ[1] (W1C) + * + * If ETBCC[RSPT] is set to 01b, this bit is set when the ETB counter expires. + * + * Values: + * - 0 - No pending interrupt + * - 1 - Due to the ETB counter expiring, a normal interrupt is pending + */ +//@{ +#define BP_MCM_ISR_IRQ (1U) //!< Bit position for MCM_ISR_IRQ. +#define BM_MCM_ISR_IRQ (0x00000002U) //!< Bit mask for MCM_ISR_IRQ. +#define BS_MCM_ISR_IRQ (1U) //!< Bit field size in bits for MCM_ISR_IRQ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_IRQ field. +#define BR_MCM_ISR_IRQ (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_IRQ)) +#endif + +//! @brief Format value for bitfield MCM_ISR_IRQ. +#define BF_MCM_ISR_IRQ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ISR_IRQ), uint32_t) & BM_MCM_ISR_IRQ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IRQ field to a new value. +#define BW_MCM_ISR_IRQ(v) (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_IRQ) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field NMI[2] (W1C) + * + * If ETBCC[RSPT] is set to 10b, this bit is set when the ETB counter expires. + * + * Values: + * - 0 - No pending NMI + * - 1 - Due to the ETB counter expiring, an NMI is pending + */ +//@{ +#define BP_MCM_ISR_NMI (2U) //!< Bit position for MCM_ISR_NMI. +#define BM_MCM_ISR_NMI (0x00000004U) //!< Bit mask for MCM_ISR_NMI. +#define BS_MCM_ISR_NMI (1U) //!< Bit field size in bits for MCM_ISR_NMI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_NMI field. +#define BR_MCM_ISR_NMI (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_NMI)) +#endif + +//! @brief Format value for bitfield MCM_ISR_NMI. +#define BF_MCM_ISR_NMI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ISR_NMI), uint32_t) & BM_MCM_ISR_NMI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NMI field to a new value. +#define BW_MCM_ISR_NMI(v) (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_NMI) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field DHREQ[3] (RO) + * + * Indicates that a debug halt request is initiated due to a ETB counter + * expiration, ETBCC[2:0] = 3b111 & ETBCV[10:0] = 11h0. This bit is cleared when the + * counter is disabled or when the ETB counter is reloaded. + * + * Values: + * - 0 - No debug halt request + * - 1 - Debug halt request initiated + */ +//@{ +#define BP_MCM_ISR_DHREQ (3U) //!< Bit position for MCM_ISR_DHREQ. +#define BM_MCM_ISR_DHREQ (0x00000008U) //!< Bit mask for MCM_ISR_DHREQ. +#define BS_MCM_ISR_DHREQ (1U) //!< Bit field size in bits for MCM_ISR_DHREQ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_DHREQ field. +#define BR_MCM_ISR_DHREQ (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_DHREQ)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FIOC[8] (RO) + * + * This read-only bit is a copy of the core's FPSCR[IOC] bit and signals an + * illegal operation has been detected in the processor's FPU. Once set, this bit + * remains set until software clears the FPSCR[IOC] bit. + * + * Values: + * - 0 - No interrupt + * - 1 - Interrupt occurred + */ +//@{ +#define BP_MCM_ISR_FIOC (8U) //!< Bit position for MCM_ISR_FIOC. +#define BM_MCM_ISR_FIOC (0x00000100U) //!< Bit mask for MCM_ISR_FIOC. +#define BS_MCM_ISR_FIOC (1U) //!< Bit field size in bits for MCM_ISR_FIOC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FIOC field. +#define BR_MCM_ISR_FIOC (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FIOC)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FDZC[9] (RO) + * + * This read-only bit is a copy of the core's FPSCR[DZC] bit and signals a + * divide by zero has been detected in the processor's FPU. Once set, this bit remains + * set until software clears the FPSCR[DZC] bit. + * + * Values: + * - 0 - No interrupt + * - 1 - Interrupt occurred + */ +//@{ +#define BP_MCM_ISR_FDZC (9U) //!< Bit position for MCM_ISR_FDZC. +#define BM_MCM_ISR_FDZC (0x00000200U) //!< Bit mask for MCM_ISR_FDZC. +#define BS_MCM_ISR_FDZC (1U) //!< Bit field size in bits for MCM_ISR_FDZC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FDZC field. +#define BR_MCM_ISR_FDZC (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FDZC)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FOFC[10] (RO) + * + * This read-only bit is a copy of the core's FPSCR[OFC] bit and signals an + * overflow has been detected in the processor's FPU. Once set, this bit remains set + * until software clears the FPSCR[OFC] bit. + * + * Values: + * - 0 - No interrupt + * - 1 - Interrupt occurred + */ +//@{ +#define BP_MCM_ISR_FOFC (10U) //!< Bit position for MCM_ISR_FOFC. +#define BM_MCM_ISR_FOFC (0x00000400U) //!< Bit mask for MCM_ISR_FOFC. +#define BS_MCM_ISR_FOFC (1U) //!< Bit field size in bits for MCM_ISR_FOFC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FOFC field. +#define BR_MCM_ISR_FOFC (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FOFC)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FUFC[11] (RO) + * + * This read-only bit is a copy of the core's FPSCR[UFC] bit and signals an + * underflow has been detected in the processor's FPU. Once set, this bit remains set + * until software clears the FPSCR[UFC] bit. + * + * Values: + * - 0 - No interrupt + * - 1 - Interrupt occurred + */ +//@{ +#define BP_MCM_ISR_FUFC (11U) //!< Bit position for MCM_ISR_FUFC. +#define BM_MCM_ISR_FUFC (0x00000800U) //!< Bit mask for MCM_ISR_FUFC. +#define BS_MCM_ISR_FUFC (1U) //!< Bit field size in bits for MCM_ISR_FUFC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FUFC field. +#define BR_MCM_ISR_FUFC (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FUFC)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FIXC[12] (RO) + * + * This read-only bit is a copy of the core's FPSCR[IXC] bit and signals an + * inexact number has been detected in the processor's FPU. Once set, this bit + * remains set until software clears the FPSCR[IXC] bit. + * + * Values: + * - 0 - No interrupt + * - 1 - Interrupt occurred + */ +//@{ +#define BP_MCM_ISR_FIXC (12U) //!< Bit position for MCM_ISR_FIXC. +#define BM_MCM_ISR_FIXC (0x00001000U) //!< Bit mask for MCM_ISR_FIXC. +#define BS_MCM_ISR_FIXC (1U) //!< Bit field size in bits for MCM_ISR_FIXC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FIXC field. +#define BR_MCM_ISR_FIXC (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FIXC)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FIDC[15] (RO) + * + * This read-only bit is a copy of the core's FPSCR[IDC] bit and signals input + * denormalized number has been detected in the processor's FPU. Once set, this + * bit remains set until software clears the FPSCR[IDC] bit. + * + * Values: + * - 0 - No interrupt + * - 1 - Interrupt occurred + */ +//@{ +#define BP_MCM_ISR_FIDC (15U) //!< Bit position for MCM_ISR_FIDC. +#define BM_MCM_ISR_FIDC (0x00008000U) //!< Bit mask for MCM_ISR_FIDC. +#define BS_MCM_ISR_FIDC (1U) //!< Bit field size in bits for MCM_ISR_FIDC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FIDC field. +#define BR_MCM_ISR_FIDC (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FIDC)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FIOCE[24] (RW) + * + * Values: + * - 0 - Disable interrupt + * - 1 - Enable interrupt + */ +//@{ +#define BP_MCM_ISR_FIOCE (24U) //!< Bit position for MCM_ISR_FIOCE. +#define BM_MCM_ISR_FIOCE (0x01000000U) //!< Bit mask for MCM_ISR_FIOCE. +#define BS_MCM_ISR_FIOCE (1U) //!< Bit field size in bits for MCM_ISR_FIOCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FIOCE field. +#define BR_MCM_ISR_FIOCE (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FIOCE)) +#endif + +//! @brief Format value for bitfield MCM_ISR_FIOCE. +#define BF_MCM_ISR_FIOCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ISR_FIOCE), uint32_t) & BM_MCM_ISR_FIOCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FIOCE field to a new value. +#define BW_MCM_ISR_FIOCE(v) (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FIOCE) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FDZCE[25] (RW) + * + * Values: + * - 0 - Disable interrupt + * - 1 - Enable interrupt + */ +//@{ +#define BP_MCM_ISR_FDZCE (25U) //!< Bit position for MCM_ISR_FDZCE. +#define BM_MCM_ISR_FDZCE (0x02000000U) //!< Bit mask for MCM_ISR_FDZCE. +#define BS_MCM_ISR_FDZCE (1U) //!< Bit field size in bits for MCM_ISR_FDZCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FDZCE field. +#define BR_MCM_ISR_FDZCE (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FDZCE)) +#endif + +//! @brief Format value for bitfield MCM_ISR_FDZCE. +#define BF_MCM_ISR_FDZCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ISR_FDZCE), uint32_t) & BM_MCM_ISR_FDZCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FDZCE field to a new value. +#define BW_MCM_ISR_FDZCE(v) (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FDZCE) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FOFCE[26] (RW) + * + * Values: + * - 0 - Disable interrupt + * - 1 - Enable interrupt + */ +//@{ +#define BP_MCM_ISR_FOFCE (26U) //!< Bit position for MCM_ISR_FOFCE. +#define BM_MCM_ISR_FOFCE (0x04000000U) //!< Bit mask for MCM_ISR_FOFCE. +#define BS_MCM_ISR_FOFCE (1U) //!< Bit field size in bits for MCM_ISR_FOFCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FOFCE field. +#define BR_MCM_ISR_FOFCE (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FOFCE)) +#endif + +//! @brief Format value for bitfield MCM_ISR_FOFCE. +#define BF_MCM_ISR_FOFCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ISR_FOFCE), uint32_t) & BM_MCM_ISR_FOFCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FOFCE field to a new value. +#define BW_MCM_ISR_FOFCE(v) (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FOFCE) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FUFCE[27] (RW) + * + * Values: + * - 0 - Disable interrupt + * - 1 - Enable interrupt + */ +//@{ +#define BP_MCM_ISR_FUFCE (27U) //!< Bit position for MCM_ISR_FUFCE. +#define BM_MCM_ISR_FUFCE (0x08000000U) //!< Bit mask for MCM_ISR_FUFCE. +#define BS_MCM_ISR_FUFCE (1U) //!< Bit field size in bits for MCM_ISR_FUFCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FUFCE field. +#define BR_MCM_ISR_FUFCE (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FUFCE)) +#endif + +//! @brief Format value for bitfield MCM_ISR_FUFCE. +#define BF_MCM_ISR_FUFCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ISR_FUFCE), uint32_t) & BM_MCM_ISR_FUFCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FUFCE field to a new value. +#define BW_MCM_ISR_FUFCE(v) (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FUFCE) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FIXCE[28] (RW) + * + * Values: + * - 0 - Disable interrupt + * - 1 - Enable interrupt + */ +//@{ +#define BP_MCM_ISR_FIXCE (28U) //!< Bit position for MCM_ISR_FIXCE. +#define BM_MCM_ISR_FIXCE (0x10000000U) //!< Bit mask for MCM_ISR_FIXCE. +#define BS_MCM_ISR_FIXCE (1U) //!< Bit field size in bits for MCM_ISR_FIXCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FIXCE field. +#define BR_MCM_ISR_FIXCE (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FIXCE)) +#endif + +//! @brief Format value for bitfield MCM_ISR_FIXCE. +#define BF_MCM_ISR_FIXCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ISR_FIXCE), uint32_t) & BM_MCM_ISR_FIXCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FIXCE field to a new value. +#define BW_MCM_ISR_FIXCE(v) (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FIXCE) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ISR, field FIDCE[31] (RW) + * + * Values: + * - 0 - Disable interrupt + * - 1 - Enable interrupt + */ +//@{ +#define BP_MCM_ISR_FIDCE (31U) //!< Bit position for MCM_ISR_FIDCE. +#define BM_MCM_ISR_FIDCE (0x80000000U) //!< Bit mask for MCM_ISR_FIDCE. +#define BS_MCM_ISR_FIDCE (1U) //!< Bit field size in bits for MCM_ISR_FIDCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ISR_FIDCE field. +#define BR_MCM_ISR_FIDCE (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FIDCE)) +#endif + +//! @brief Format value for bitfield MCM_ISR_FIDCE. +#define BF_MCM_ISR_FIDCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ISR_FIDCE), uint32_t) & BM_MCM_ISR_FIDCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FIDCE field to a new value. +#define BW_MCM_ISR_FIDCE(v) (BITBAND_ACCESS32(HW_MCM_ISR_ADDR, BP_MCM_ISR_FIDCE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCM_ETBCC - ETB Counter Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCM_ETBCC - ETB Counter Control register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_mcm_etbcc +{ + uint32_t U; + struct _hw_mcm_etbcc_bitfields + { + uint32_t CNTEN : 1; //!< [0] Counter Enable + uint32_t RSPT : 2; //!< [2:1] Response Type + uint32_t RLRQ : 1; //!< [3] Reload Request + uint32_t ETDIS : 1; //!< [4] ETM-To-TPIU Disable + uint32_t ITDIS : 1; //!< [5] ITM-To-TPIU Disable + uint32_t RESERVED0 : 26; //!< [31:6] + } B; +} hw_mcm_etbcc_t; +#endif + +/*! + * @name Constants and macros for entire MCM_ETBCC register + */ +//@{ +#define HW_MCM_ETBCC_ADDR (REGS_MCM_BASE + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCM_ETBCC (*(__IO hw_mcm_etbcc_t *) HW_MCM_ETBCC_ADDR) +#define HW_MCM_ETBCC_RD() (HW_MCM_ETBCC.U) +#define HW_MCM_ETBCC_WR(v) (HW_MCM_ETBCC.U = (v)) +#define HW_MCM_ETBCC_SET(v) (HW_MCM_ETBCC_WR(HW_MCM_ETBCC_RD() | (v))) +#define HW_MCM_ETBCC_CLR(v) (HW_MCM_ETBCC_WR(HW_MCM_ETBCC_RD() & ~(v))) +#define HW_MCM_ETBCC_TOG(v) (HW_MCM_ETBCC_WR(HW_MCM_ETBCC_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCM_ETBCC bitfields + */ + +/*! + * @name Register MCM_ETBCC, field CNTEN[0] (RW) + * + * Enables the ETB counter. + * + * Values: + * - 0 - ETB counter disabled + * - 1 - ETB counter enabled + */ +//@{ +#define BP_MCM_ETBCC_CNTEN (0U) //!< Bit position for MCM_ETBCC_CNTEN. +#define BM_MCM_ETBCC_CNTEN (0x00000001U) //!< Bit mask for MCM_ETBCC_CNTEN. +#define BS_MCM_ETBCC_CNTEN (1U) //!< Bit field size in bits for MCM_ETBCC_CNTEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ETBCC_CNTEN field. +#define BR_MCM_ETBCC_CNTEN (BITBAND_ACCESS32(HW_MCM_ETBCC_ADDR, BP_MCM_ETBCC_CNTEN)) +#endif + +//! @brief Format value for bitfield MCM_ETBCC_CNTEN. +#define BF_MCM_ETBCC_CNTEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ETBCC_CNTEN), uint32_t) & BM_MCM_ETBCC_CNTEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CNTEN field to a new value. +#define BW_MCM_ETBCC_CNTEN(v) (BITBAND_ACCESS32(HW_MCM_ETBCC_ADDR, BP_MCM_ETBCC_CNTEN) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ETBCC, field RSPT[2:1] (RW) + * + * Values: + * - 00 - No response when the ETB count expires + * - 01 - Generate a normal interrupt when the ETB count expires + * - 10 - Generate an NMI when the ETB count expires + * - 11 - Generate a debug halt when the ETB count expires + */ +//@{ +#define BP_MCM_ETBCC_RSPT (1U) //!< Bit position for MCM_ETBCC_RSPT. +#define BM_MCM_ETBCC_RSPT (0x00000006U) //!< Bit mask for MCM_ETBCC_RSPT. +#define BS_MCM_ETBCC_RSPT (2U) //!< Bit field size in bits for MCM_ETBCC_RSPT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ETBCC_RSPT field. +#define BR_MCM_ETBCC_RSPT (HW_MCM_ETBCC.B.RSPT) +#endif + +//! @brief Format value for bitfield MCM_ETBCC_RSPT. +#define BF_MCM_ETBCC_RSPT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ETBCC_RSPT), uint32_t) & BM_MCM_ETBCC_RSPT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSPT field to a new value. +#define BW_MCM_ETBCC_RSPT(v) (HW_MCM_ETBCC_WR((HW_MCM_ETBCC_RD() & ~BM_MCM_ETBCC_RSPT) | BF_MCM_ETBCC_RSPT(v))) +#endif +//@} + +/*! + * @name Register MCM_ETBCC, field RLRQ[3] (RW) + * + * Reloads the ETB packet counter with the MCM_ETBRL RELOAD value. If IRQ or NMI + * interrupts were enabled and an NMI or IRQ interrupt was generated on counter + * expiration, setting this bit clears the pending NMI or IRQ interrupt request. + * If debug halt was enabled and a debug halt request was asserted on counter + * expiration, setting this bit clears the debug halt request. + * + * Values: + * - 0 - No effect + * - 1 - Clears pending debug halt, NMI, or IRQ interrupt requests + */ +//@{ +#define BP_MCM_ETBCC_RLRQ (3U) //!< Bit position for MCM_ETBCC_RLRQ. +#define BM_MCM_ETBCC_RLRQ (0x00000008U) //!< Bit mask for MCM_ETBCC_RLRQ. +#define BS_MCM_ETBCC_RLRQ (1U) //!< Bit field size in bits for MCM_ETBCC_RLRQ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ETBCC_RLRQ field. +#define BR_MCM_ETBCC_RLRQ (BITBAND_ACCESS32(HW_MCM_ETBCC_ADDR, BP_MCM_ETBCC_RLRQ)) +#endif + +//! @brief Format value for bitfield MCM_ETBCC_RLRQ. +#define BF_MCM_ETBCC_RLRQ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ETBCC_RLRQ), uint32_t) & BM_MCM_ETBCC_RLRQ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RLRQ field to a new value. +#define BW_MCM_ETBCC_RLRQ(v) (BITBAND_ACCESS32(HW_MCM_ETBCC_ADDR, BP_MCM_ETBCC_RLRQ) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ETBCC, field ETDIS[4] (RW) + * + * Disables the trace path from ETM to TPIU. + * + * Values: + * - 0 - ETM-to-TPIU trace path enabled + * - 1 - ETM-to-TPIU trace path disabled + */ +//@{ +#define BP_MCM_ETBCC_ETDIS (4U) //!< Bit position for MCM_ETBCC_ETDIS. +#define BM_MCM_ETBCC_ETDIS (0x00000010U) //!< Bit mask for MCM_ETBCC_ETDIS. +#define BS_MCM_ETBCC_ETDIS (1U) //!< Bit field size in bits for MCM_ETBCC_ETDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ETBCC_ETDIS field. +#define BR_MCM_ETBCC_ETDIS (BITBAND_ACCESS32(HW_MCM_ETBCC_ADDR, BP_MCM_ETBCC_ETDIS)) +#endif + +//! @brief Format value for bitfield MCM_ETBCC_ETDIS. +#define BF_MCM_ETBCC_ETDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ETBCC_ETDIS), uint32_t) & BM_MCM_ETBCC_ETDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ETDIS field to a new value. +#define BW_MCM_ETBCC_ETDIS(v) (BITBAND_ACCESS32(HW_MCM_ETBCC_ADDR, BP_MCM_ETBCC_ETDIS) = (v)) +#endif +//@} + +/*! + * @name Register MCM_ETBCC, field ITDIS[5] (RW) + * + * Disables the trace path from ITM to TPIU. + * + * Values: + * - 0 - ITM-to-TPIU trace path enabled + * - 1 - ITM-to-TPIU trace path disabled + */ +//@{ +#define BP_MCM_ETBCC_ITDIS (5U) //!< Bit position for MCM_ETBCC_ITDIS. +#define BM_MCM_ETBCC_ITDIS (0x00000020U) //!< Bit mask for MCM_ETBCC_ITDIS. +#define BS_MCM_ETBCC_ITDIS (1U) //!< Bit field size in bits for MCM_ETBCC_ITDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ETBCC_ITDIS field. +#define BR_MCM_ETBCC_ITDIS (BITBAND_ACCESS32(HW_MCM_ETBCC_ADDR, BP_MCM_ETBCC_ITDIS)) +#endif + +//! @brief Format value for bitfield MCM_ETBCC_ITDIS. +#define BF_MCM_ETBCC_ITDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ETBCC_ITDIS), uint32_t) & BM_MCM_ETBCC_ITDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ITDIS field to a new value. +#define BW_MCM_ETBCC_ITDIS(v) (BITBAND_ACCESS32(HW_MCM_ETBCC_ADDR, BP_MCM_ETBCC_ITDIS) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCM_ETBRL - ETB Reload register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCM_ETBRL - ETB Reload register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_mcm_etbrl +{ + uint32_t U; + struct _hw_mcm_etbrl_bitfields + { + uint32_t RELOAD : 11; //!< [10:0] Byte Count Reload Value + uint32_t RESERVED0 : 21; //!< [31:11] + } B; +} hw_mcm_etbrl_t; +#endif + +/*! + * @name Constants and macros for entire MCM_ETBRL register + */ +//@{ +#define HW_MCM_ETBRL_ADDR (REGS_MCM_BASE + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCM_ETBRL (*(__IO hw_mcm_etbrl_t *) HW_MCM_ETBRL_ADDR) +#define HW_MCM_ETBRL_RD() (HW_MCM_ETBRL.U) +#define HW_MCM_ETBRL_WR(v) (HW_MCM_ETBRL.U = (v)) +#define HW_MCM_ETBRL_SET(v) (HW_MCM_ETBRL_WR(HW_MCM_ETBRL_RD() | (v))) +#define HW_MCM_ETBRL_CLR(v) (HW_MCM_ETBRL_WR(HW_MCM_ETBRL_RD() & ~(v))) +#define HW_MCM_ETBRL_TOG(v) (HW_MCM_ETBRL_WR(HW_MCM_ETBRL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCM_ETBRL bitfields + */ + +/*! + * @name Register MCM_ETBRL, field RELOAD[10:0] (RW) + * + * Indicates the 0-mod-4 value the counter reloads to. Writing a non-0-mod-4 + * value to this field results in a bus error. + */ +//@{ +#define BP_MCM_ETBRL_RELOAD (0U) //!< Bit position for MCM_ETBRL_RELOAD. +#define BM_MCM_ETBRL_RELOAD (0x000007FFU) //!< Bit mask for MCM_ETBRL_RELOAD. +#define BS_MCM_ETBRL_RELOAD (11U) //!< Bit field size in bits for MCM_ETBRL_RELOAD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ETBRL_RELOAD field. +#define BR_MCM_ETBRL_RELOAD (HW_MCM_ETBRL.B.RELOAD) +#endif + +//! @brief Format value for bitfield MCM_ETBRL_RELOAD. +#define BF_MCM_ETBRL_RELOAD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_ETBRL_RELOAD), uint32_t) & BM_MCM_ETBRL_RELOAD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RELOAD field to a new value. +#define BW_MCM_ETBRL_RELOAD(v) (HW_MCM_ETBRL_WR((HW_MCM_ETBRL_RD() & ~BM_MCM_ETBRL_RELOAD) | BF_MCM_ETBRL_RELOAD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCM_ETBCNT - ETB Counter Value register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCM_ETBCNT - ETB Counter Value register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_mcm_etbcnt +{ + uint32_t U; + struct _hw_mcm_etbcnt_bitfields + { + uint32_t COUNTER : 11; //!< [10:0] Byte Count Counter Value + uint32_t RESERVED0 : 21; //!< [31:11] + } B; +} hw_mcm_etbcnt_t; +#endif + +/*! + * @name Constants and macros for entire MCM_ETBCNT register + */ +//@{ +#define HW_MCM_ETBCNT_ADDR (REGS_MCM_BASE + 0x1CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCM_ETBCNT (*(__I hw_mcm_etbcnt_t *) HW_MCM_ETBCNT_ADDR) +#define HW_MCM_ETBCNT_RD() (HW_MCM_ETBCNT.U) +#endif +//@} + +/* + * Constants & macros for individual MCM_ETBCNT bitfields + */ + +/*! + * @name Register MCM_ETBCNT, field COUNTER[10:0] (RO) + * + * Indicates the current 0-mod-4 value of the counter. + */ +//@{ +#define BP_MCM_ETBCNT_COUNTER (0U) //!< Bit position for MCM_ETBCNT_COUNTER. +#define BM_MCM_ETBCNT_COUNTER (0x000007FFU) //!< Bit mask for MCM_ETBCNT_COUNTER. +#define BS_MCM_ETBCNT_COUNTER (11U) //!< Bit field size in bits for MCM_ETBCNT_COUNTER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_ETBCNT_COUNTER field. +#define BR_MCM_ETBCNT_COUNTER (HW_MCM_ETBCNT.B.COUNTER) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MCM_PID - Process ID register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MCM_PID - Process ID register (RW) + * + * Reset value: 0x00000000U + * + * This register drives the M0_PID and M1_PID values in the Memory Protection + * Unit(MPU). System software loads this register before passing control to a given + * user mode process. If the PID of the process does not match the value in this + * register, a bus error occurs. See the MPU chapter for more details. + */ +typedef union _hw_mcm_pid +{ + uint32_t U; + struct _hw_mcm_pid_bitfields + { + uint32_t PID : 8; //!< [7:0] M0_PID And M1_PID For MPU + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_mcm_pid_t; +#endif + +/*! + * @name Constants and macros for entire MCM_PID register + */ +//@{ +#define HW_MCM_PID_ADDR (REGS_MCM_BASE + 0x30U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MCM_PID (*(__IO hw_mcm_pid_t *) HW_MCM_PID_ADDR) +#define HW_MCM_PID_RD() (HW_MCM_PID.U) +#define HW_MCM_PID_WR(v) (HW_MCM_PID.U = (v)) +#define HW_MCM_PID_SET(v) (HW_MCM_PID_WR(HW_MCM_PID_RD() | (v))) +#define HW_MCM_PID_CLR(v) (HW_MCM_PID_WR(HW_MCM_PID_RD() & ~(v))) +#define HW_MCM_PID_TOG(v) (HW_MCM_PID_WR(HW_MCM_PID_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MCM_PID bitfields + */ + +/*! + * @name Register MCM_PID, field PID[7:0] (RW) + * + * Drives the M0_PID and M1_PID values in the MPU. + */ +//@{ +#define BP_MCM_PID_PID (0U) //!< Bit position for MCM_PID_PID. +#define BM_MCM_PID_PID (0x000000FFU) //!< Bit mask for MCM_PID_PID. +#define BS_MCM_PID_PID (8U) //!< Bit field size in bits for MCM_PID_PID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MCM_PID_PID field. +#define BR_MCM_PID_PID (HW_MCM_PID.B.PID) +#endif + +//! @brief Format value for bitfield MCM_PID_PID. +#define BF_MCM_PID_PID(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MCM_PID_PID), uint32_t) & BM_MCM_PID_PID) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PID field to a new value. +#define BW_MCM_PID_PID(v) (HW_MCM_PID_WR((HW_MCM_PID_RD() & ~BM_MCM_PID_PID) | BF_MCM_PID_PID(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_mcm_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All MCM module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_mcm +{ + uint8_t _reserved0[8]; + __I hw_mcm_plasc_t PLASC; //!< [0x8] Crossbar Switch (AXBS) Slave Configuration + __I hw_mcm_plamc_t PLAMC; //!< [0xA] Crossbar Switch (AXBS) Master Configuration + __IO hw_mcm_cr_t CR; //!< [0xC] Control Register + __IO hw_mcm_isr_t ISR; //!< [0x10] Interrupt Status Register + __IO hw_mcm_etbcc_t ETBCC; //!< [0x14] ETB Counter Control register + __IO hw_mcm_etbrl_t ETBRL; //!< [0x18] ETB Reload register + __I hw_mcm_etbcnt_t ETBCNT; //!< [0x1C] ETB Counter Value register + uint8_t _reserved1[16]; + __IO hw_mcm_pid_t PID; //!< [0x30] Process ID register +} hw_mcm_t; +#pragma pack() + +//! @brief Macro to access all MCM registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_MCM</code>. +#define HW_MCM (*(hw_mcm_t *) REGS_MCM_BASE) +#endif + +#endif // __HW_MCM_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_mpu.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1923 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_MPU_REGISTERS_H__ +#define __HW_MPU_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 MPU + * + * Memory protection unit + * + * Registers defined in this header file: + * - HW_MPU_CESR - Control/Error Status Register + * - HW_MPU_EARn - Error Address Register, slave port n + * - HW_MPU_EDRn - Error Detail Register, slave port n + * - HW_MPU_RGDn_WORD0 - Region Descriptor n, Word 0 + * - HW_MPU_RGDn_WORD1 - Region Descriptor n, Word 1 + * - HW_MPU_RGDn_WORD2 - Region Descriptor n, Word 2 + * - HW_MPU_RGDn_WORD3 - Region Descriptor n, Word 3 + * - HW_MPU_RGDAACn - Region Descriptor Alternate Access Control n + * + * - hw_mpu_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_MPU_BASE +#define HW_MPU_INSTANCE_COUNT (1U) //!< Number of instances of the MPU module. +#define REGS_MPU_BASE (0x4000D000U) //!< Base address for MPU. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MPU_CESR - Control/Error Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MPU_CESR - Control/Error Status Register (RW) + * + * Reset value: 0x00815101U + */ +typedef union _hw_mpu_cesr +{ + uint32_t U; + struct _hw_mpu_cesr_bitfields + { + uint32_t VLD : 1; //!< [0] Valid + uint32_t RESERVED0 : 7; //!< [7:1] + uint32_t NRGD : 4; //!< [11:8] Number Of Region Descriptors + uint32_t NSP : 4; //!< [15:12] Number Of Slave Ports + uint32_t HRL : 4; //!< [19:16] Hardware Revision Level + uint32_t RESERVED1 : 7; //!< [26:20] + uint32_t SPERR : 5; //!< [31:27] Slave Port n Error + } B; +} hw_mpu_cesr_t; +#endif + +/*! + * @name Constants and macros for entire MPU_CESR register + */ +//@{ +#define HW_MPU_CESR_ADDR (REGS_MPU_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_MPU_CESR (*(__IO hw_mpu_cesr_t *) HW_MPU_CESR_ADDR) +#define HW_MPU_CESR_RD() (HW_MPU_CESR.U) +#define HW_MPU_CESR_WR(v) (HW_MPU_CESR.U = (v)) +#define HW_MPU_CESR_SET(v) (HW_MPU_CESR_WR(HW_MPU_CESR_RD() | (v))) +#define HW_MPU_CESR_CLR(v) (HW_MPU_CESR_WR(HW_MPU_CESR_RD() & ~(v))) +#define HW_MPU_CESR_TOG(v) (HW_MPU_CESR_WR(HW_MPU_CESR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MPU_CESR bitfields + */ + +/*! + * @name Register MPU_CESR, field VLD[0] (RW) + * + * Global enable/disable for the MPU. + * + * Values: + * - 0 - MPU is disabled. All accesses from all bus masters are allowed. + * - 1 - MPU is enabled + */ +//@{ +#define BP_MPU_CESR_VLD (0U) //!< Bit position for MPU_CESR_VLD. +#define BM_MPU_CESR_VLD (0x00000001U) //!< Bit mask for MPU_CESR_VLD. +#define BS_MPU_CESR_VLD (1U) //!< Bit field size in bits for MPU_CESR_VLD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_CESR_VLD field. +#define BR_MPU_CESR_VLD (BITBAND_ACCESS32(HW_MPU_CESR_ADDR, BP_MPU_CESR_VLD)) +#endif + +//! @brief Format value for bitfield MPU_CESR_VLD. +#define BF_MPU_CESR_VLD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_CESR_VLD), uint32_t) & BM_MPU_CESR_VLD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the VLD field to a new value. +#define BW_MPU_CESR_VLD(v) (BITBAND_ACCESS32(HW_MPU_CESR_ADDR, BP_MPU_CESR_VLD) = (v)) +#endif +//@} + +/*! + * @name Register MPU_CESR, field NRGD[11:8] (RO) + * + * Indicates the number of region descriptors implemented in the MPU. + * + * Values: + * - 0000 - 8 region descriptors + * - 0001 - 12 region descriptors + * - 0010 - 16 region descriptors + */ +//@{ +#define BP_MPU_CESR_NRGD (8U) //!< Bit position for MPU_CESR_NRGD. +#define BM_MPU_CESR_NRGD (0x00000F00U) //!< Bit mask for MPU_CESR_NRGD. +#define BS_MPU_CESR_NRGD (4U) //!< Bit field size in bits for MPU_CESR_NRGD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_CESR_NRGD field. +#define BR_MPU_CESR_NRGD (HW_MPU_CESR.B.NRGD) +#endif +//@} + +/*! + * @name Register MPU_CESR, field NSP[15:12] (RO) + * + * Specifies the number of slave ports connected to the MPU. + */ +//@{ +#define BP_MPU_CESR_NSP (12U) //!< Bit position for MPU_CESR_NSP. +#define BM_MPU_CESR_NSP (0x0000F000U) //!< Bit mask for MPU_CESR_NSP. +#define BS_MPU_CESR_NSP (4U) //!< Bit field size in bits for MPU_CESR_NSP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_CESR_NSP field. +#define BR_MPU_CESR_NSP (HW_MPU_CESR.B.NSP) +#endif +//@} + +/*! + * @name Register MPU_CESR, field HRL[19:16] (RO) + * + * Specifies the MPU's hardware and definition revision level. It can be read by + * software to determine the functional definition of the module. + */ +//@{ +#define BP_MPU_CESR_HRL (16U) //!< Bit position for MPU_CESR_HRL. +#define BM_MPU_CESR_HRL (0x000F0000U) //!< Bit mask for MPU_CESR_HRL. +#define BS_MPU_CESR_HRL (4U) //!< Bit field size in bits for MPU_CESR_HRL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_CESR_HRL field. +#define BR_MPU_CESR_HRL (HW_MPU_CESR.B.HRL) +#endif +//@} + +/*! + * @name Register MPU_CESR, field SPERR[31:27] (W1C) + * + * Indicates a captured error in EARn and EDRn. This bit is set when the + * hardware detects an error and records the faulting address and attributes. It is + * cleared by writing one to it. If another error is captured at the exact same cycle + * as the write, the flag remains set. A find-first-one instruction or + * equivalent can detect the presence of a captured error. The following shows the + * correspondence between the bit number and slave port number: Bit 31 corresponds to + * slave port 0. Bit 30 corresponds to slave port 1. Bit 29 corresponds to slave + * port 2. Bit 28 corresponds to slave port 3. Bit 27 corresponds to slave port 4. + * + * Values: + * - 0 - No error has occurred for slave port n. + * - 1 - An error has occurred for slave port n. + */ +//@{ +#define BP_MPU_CESR_SPERR (27U) //!< Bit position for MPU_CESR_SPERR. +#define BM_MPU_CESR_SPERR (0xF8000000U) //!< Bit mask for MPU_CESR_SPERR. +#define BS_MPU_CESR_SPERR (5U) //!< Bit field size in bits for MPU_CESR_SPERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_CESR_SPERR field. +#define BR_MPU_CESR_SPERR (HW_MPU_CESR.B.SPERR) +#endif + +//! @brief Format value for bitfield MPU_CESR_SPERR. +#define BF_MPU_CESR_SPERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_CESR_SPERR), uint32_t) & BM_MPU_CESR_SPERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SPERR field to a new value. +#define BW_MPU_CESR_SPERR(v) (HW_MPU_CESR_WR((HW_MPU_CESR_RD() & ~BM_MPU_CESR_SPERR) | BF_MPU_CESR_SPERR(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MPU_EARn - Error Address Register, slave port n +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MPU_EARn - Error Address Register, slave port n (RO) + * + * Reset value: 0x00000000U + * + * When the MPU detects an access error on slave port n, the 32-bit reference + * address is captured in this read-only register and the corresponding bit in + * CESR[SPERR] set. Additional information about the faulting access is captured in + * the corresponding EDRn at the same time. This register and the corresponding + * EDRn contain the most recent access error; there are no hardware interlocks with + * CESR[SPERR], as the error registers are always loaded upon the occurrence of + * each protection violation. + */ +typedef union _hw_mpu_earn +{ + uint32_t U; + struct _hw_mpu_earn_bitfields + { + uint32_t EADDR : 32; //!< [31:0] Error Address + } B; +} hw_mpu_earn_t; +#endif + +/*! + * @name Constants and macros for entire MPU_EARn register + */ +//@{ +#define HW_MPU_EARn_COUNT (5U) + +#define HW_MPU_EARn_ADDR(n) (REGS_MPU_BASE + 0x10U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_MPU_EARn(n) (*(__I hw_mpu_earn_t *) HW_MPU_EARn_ADDR(n)) +#define HW_MPU_EARn_RD(n) (HW_MPU_EARn(n).U) +#endif +//@} + +/* + * Constants & macros for individual MPU_EARn bitfields + */ + +/*! + * @name Register MPU_EARn, field EADDR[31:0] (RO) + * + * Indicates the reference address from slave port n that generated the access + * error + */ +//@{ +#define BP_MPU_EARn_EADDR (0U) //!< Bit position for MPU_EARn_EADDR. +#define BM_MPU_EARn_EADDR (0xFFFFFFFFU) //!< Bit mask for MPU_EARn_EADDR. +#define BS_MPU_EARn_EADDR (32U) //!< Bit field size in bits for MPU_EARn_EADDR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_EARn_EADDR field. +#define BR_MPU_EARn_EADDR(n) (HW_MPU_EARn(n).U) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_MPU_EDRn - Error Detail Register, slave port n +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MPU_EDRn - Error Detail Register, slave port n (RO) + * + * Reset value: 0x00000000U + * + * When the MPU detects an access error on slave port n, 32 bits of error detail + * are captured in this read-only register and the corresponding bit in + * CESR[SPERR] is set. Information on the faulting address is captured in the + * corresponding EARn register at the same time. This register and the corresponding EARn + * register contain the most recent access error; there are no hardware interlocks + * with CESR[SPERR] as the error registers are always loaded upon the occurrence + * of each protection violation. + */ +typedef union _hw_mpu_edrn +{ + uint32_t U; + struct _hw_mpu_edrn_bitfields + { + uint32_t ERW : 1; //!< [0] Error Read/Write + uint32_t EATTR : 3; //!< [3:1] Error Attributes + uint32_t EMN : 4; //!< [7:4] Error Master Number + uint32_t EPID : 8; //!< [15:8] Error Process Identification + uint32_t EACD : 16; //!< [31:16] Error Access Control Detail + } B; +} hw_mpu_edrn_t; +#endif + +/*! + * @name Constants and macros for entire MPU_EDRn register + */ +//@{ +#define HW_MPU_EDRn_COUNT (5U) + +#define HW_MPU_EDRn_ADDR(n) (REGS_MPU_BASE + 0x14U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_MPU_EDRn(n) (*(__I hw_mpu_edrn_t *) HW_MPU_EDRn_ADDR(n)) +#define HW_MPU_EDRn_RD(n) (HW_MPU_EDRn(n).U) +#endif +//@} + +/* + * Constants & macros for individual MPU_EDRn bitfields + */ + +/*! + * @name Register MPU_EDRn, field ERW[0] (RO) + * + * Indicates the access type of the faulting reference. + * + * Values: + * - 0 - Read + * - 1 - Write + */ +//@{ +#define BP_MPU_EDRn_ERW (0U) //!< Bit position for MPU_EDRn_ERW. +#define BM_MPU_EDRn_ERW (0x00000001U) //!< Bit mask for MPU_EDRn_ERW. +#define BS_MPU_EDRn_ERW (1U) //!< Bit field size in bits for MPU_EDRn_ERW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_EDRn_ERW field. +#define BR_MPU_EDRn_ERW(n) (BITBAND_ACCESS32(HW_MPU_EDRn_ADDR(n), BP_MPU_EDRn_ERW)) +#endif +//@} + +/*! + * @name Register MPU_EDRn, field EATTR[3:1] (RO) + * + * Indicates attribute information about the faulting reference. All other + * encodings are reserved. + * + * Values: + * - 000 - User mode, instruction access + * - 001 - User mode, data access + * - 010 - Supervisor mode, instruction access + * - 011 - Supervisor mode, data access + */ +//@{ +#define BP_MPU_EDRn_EATTR (1U) //!< Bit position for MPU_EDRn_EATTR. +#define BM_MPU_EDRn_EATTR (0x0000000EU) //!< Bit mask for MPU_EDRn_EATTR. +#define BS_MPU_EDRn_EATTR (3U) //!< Bit field size in bits for MPU_EDRn_EATTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_EDRn_EATTR field. +#define BR_MPU_EDRn_EATTR(n) (HW_MPU_EDRn(n).B.EATTR) +#endif +//@} + +/*! + * @name Register MPU_EDRn, field EMN[7:4] (RO) + * + * Indicates the bus master that generated the access error. + */ +//@{ +#define BP_MPU_EDRn_EMN (4U) //!< Bit position for MPU_EDRn_EMN. +#define BM_MPU_EDRn_EMN (0x000000F0U) //!< Bit mask for MPU_EDRn_EMN. +#define BS_MPU_EDRn_EMN (4U) //!< Bit field size in bits for MPU_EDRn_EMN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_EDRn_EMN field. +#define BR_MPU_EDRn_EMN(n) (HW_MPU_EDRn(n).B.EMN) +#endif +//@} + +/*! + * @name Register MPU_EDRn, field EPID[15:8] (RO) + * + * Records the process identifier of the faulting reference. The process + * identifier is typically driven only by processor cores; for other bus masters, this + * field is cleared. + */ +//@{ +#define BP_MPU_EDRn_EPID (8U) //!< Bit position for MPU_EDRn_EPID. +#define BM_MPU_EDRn_EPID (0x0000FF00U) //!< Bit mask for MPU_EDRn_EPID. +#define BS_MPU_EDRn_EPID (8U) //!< Bit field size in bits for MPU_EDRn_EPID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_EDRn_EPID field. +#define BR_MPU_EDRn_EPID(n) (HW_MPU_EDRn(n).B.EPID) +#endif +//@} + +/*! + * @name Register MPU_EDRn, field EACD[31:16] (RO) + * + * Indicates the region descriptor with the access error. If EDRn contains a + * captured error and EACD is cleared, an access did not hit in any region + * descriptor. If only a single EACD bit is set, the protection error was caused by a + * single non-overlapping region descriptor. If two or more EACD bits are set, the + * protection error was caused by an overlapping set of region descriptors. + */ +//@{ +#define BP_MPU_EDRn_EACD (16U) //!< Bit position for MPU_EDRn_EACD. +#define BM_MPU_EDRn_EACD (0xFFFF0000U) //!< Bit mask for MPU_EDRn_EACD. +#define BS_MPU_EDRn_EACD (16U) //!< Bit field size in bits for MPU_EDRn_EACD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_EDRn_EACD field. +#define BR_MPU_EDRn_EACD(n) (HW_MPU_EDRn(n).B.EACD) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MPU_RGDn_WORD0 - Region Descriptor n, Word 0 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MPU_RGDn_WORD0 - Region Descriptor n, Word 0 (RW) + * + * Reset value: 0x00000000U + * + * The first word of the region descriptor defines the 0-modulo-32 byte start + * address of the memory region. Writes to this register clear the region + * descriptor's valid bit (RGDn_WORD3[VLD]). + */ +typedef union _hw_mpu_rgdn_word0 +{ + uint32_t U; + struct _hw_mpu_rgdn_word0_bitfields + { + uint32_t RESERVED0 : 5; //!< [4:0] + uint32_t SRTADDR : 27; //!< [31:5] Start Address + } B; +} hw_mpu_rgdn_word0_t; +#endif + +/*! + * @name Constants and macros for entire MPU_RGDn_WORD0 register + */ +//@{ +#define HW_MPU_RGDn_WORD0_COUNT (12U) + +#define HW_MPU_RGDn_WORD0_ADDR(n) (REGS_MPU_BASE + 0x400U + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_MPU_RGDn_WORD0(n) (*(__IO hw_mpu_rgdn_word0_t *) HW_MPU_RGDn_WORD0_ADDR(n)) +#define HW_MPU_RGDn_WORD0_RD(n) (HW_MPU_RGDn_WORD0(n).U) +#define HW_MPU_RGDn_WORD0_WR(n, v) (HW_MPU_RGDn_WORD0(n).U = (v)) +#define HW_MPU_RGDn_WORD0_SET(n, v) (HW_MPU_RGDn_WORD0_WR(n, HW_MPU_RGDn_WORD0_RD(n) | (v))) +#define HW_MPU_RGDn_WORD0_CLR(n, v) (HW_MPU_RGDn_WORD0_WR(n, HW_MPU_RGDn_WORD0_RD(n) & ~(v))) +#define HW_MPU_RGDn_WORD0_TOG(n, v) (HW_MPU_RGDn_WORD0_WR(n, HW_MPU_RGDn_WORD0_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MPU_RGDn_WORD0 bitfields + */ + +/*! + * @name Register MPU_RGDn_WORD0, field SRTADDR[31:5] (RW) + * + * Defines the most significant bits of the 0-modulo-32 byte start address of + * the memory region. + */ +//@{ +#define BP_MPU_RGDn_WORD0_SRTADDR (5U) //!< Bit position for MPU_RGDn_WORD0_SRTADDR. +#define BM_MPU_RGDn_WORD0_SRTADDR (0xFFFFFFE0U) //!< Bit mask for MPU_RGDn_WORD0_SRTADDR. +#define BS_MPU_RGDn_WORD0_SRTADDR (27U) //!< Bit field size in bits for MPU_RGDn_WORD0_SRTADDR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD0_SRTADDR field. +#define BR_MPU_RGDn_WORD0_SRTADDR(n) (HW_MPU_RGDn_WORD0(n).B.SRTADDR) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD0_SRTADDR. +#define BF_MPU_RGDn_WORD0_SRTADDR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD0_SRTADDR), uint32_t) & BM_MPU_RGDn_WORD0_SRTADDR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRTADDR field to a new value. +#define BW_MPU_RGDn_WORD0_SRTADDR(n, v) (HW_MPU_RGDn_WORD0_WR(n, (HW_MPU_RGDn_WORD0_RD(n) & ~BM_MPU_RGDn_WORD0_SRTADDR) | BF_MPU_RGDn_WORD0_SRTADDR(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_MPU_RGDn_WORD1 - Region Descriptor n, Word 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MPU_RGDn_WORD1 - Region Descriptor n, Word 1 (RW) + * + * Reset value: 0xFFFFFFFFU + * + * The second word of the region descriptor defines the 31-modulo-32 byte end + * address of the memory region. Writes to this register clear the region + * descriptor's valid bit (RGDn_WORD3[VLD]). + */ +typedef union _hw_mpu_rgdn_word1 +{ + uint32_t U; + struct _hw_mpu_rgdn_word1_bitfields + { + uint32_t RESERVED0 : 5; //!< [4:0] + uint32_t ENDADDR : 27; //!< [31:5] End Address + } B; +} hw_mpu_rgdn_word1_t; +#endif + +/*! + * @name Constants and macros for entire MPU_RGDn_WORD1 register + */ +//@{ +#define HW_MPU_RGDn_WORD1_COUNT (12U) + +#define HW_MPU_RGDn_WORD1_ADDR(n) (REGS_MPU_BASE + 0x404U + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_MPU_RGDn_WORD1(n) (*(__IO hw_mpu_rgdn_word1_t *) HW_MPU_RGDn_WORD1_ADDR(n)) +#define HW_MPU_RGDn_WORD1_RD(n) (HW_MPU_RGDn_WORD1(n).U) +#define HW_MPU_RGDn_WORD1_WR(n, v) (HW_MPU_RGDn_WORD1(n).U = (v)) +#define HW_MPU_RGDn_WORD1_SET(n, v) (HW_MPU_RGDn_WORD1_WR(n, HW_MPU_RGDn_WORD1_RD(n) | (v))) +#define HW_MPU_RGDn_WORD1_CLR(n, v) (HW_MPU_RGDn_WORD1_WR(n, HW_MPU_RGDn_WORD1_RD(n) & ~(v))) +#define HW_MPU_RGDn_WORD1_TOG(n, v) (HW_MPU_RGDn_WORD1_WR(n, HW_MPU_RGDn_WORD1_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MPU_RGDn_WORD1 bitfields + */ + +/*! + * @name Register MPU_RGDn_WORD1, field ENDADDR[31:5] (RW) + * + * Defines the most significant bits of the 31-modulo-32 byte end address of the + * memory region. The MPU does not verify that ENDADDR >= SRTADDR. + */ +//@{ +#define BP_MPU_RGDn_WORD1_ENDADDR (5U) //!< Bit position for MPU_RGDn_WORD1_ENDADDR. +#define BM_MPU_RGDn_WORD1_ENDADDR (0xFFFFFFE0U) //!< Bit mask for MPU_RGDn_WORD1_ENDADDR. +#define BS_MPU_RGDn_WORD1_ENDADDR (27U) //!< Bit field size in bits for MPU_RGDn_WORD1_ENDADDR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD1_ENDADDR field. +#define BR_MPU_RGDn_WORD1_ENDADDR(n) (HW_MPU_RGDn_WORD1(n).B.ENDADDR) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD1_ENDADDR. +#define BF_MPU_RGDn_WORD1_ENDADDR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD1_ENDADDR), uint32_t) & BM_MPU_RGDn_WORD1_ENDADDR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ENDADDR field to a new value. +#define BW_MPU_RGDn_WORD1_ENDADDR(n, v) (HW_MPU_RGDn_WORD1_WR(n, (HW_MPU_RGDn_WORD1_RD(n) & ~BM_MPU_RGDn_WORD1_ENDADDR) | BF_MPU_RGDn_WORD1_ENDADDR(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_MPU_RGDn_WORD2 - Region Descriptor n, Word 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MPU_RGDn_WORD2 - Region Descriptor n, Word 2 (RW) + * + * Reset value: 0x0061F7DFU + * + * The third word of the region descriptor defines the access control rights of + * the memory region. The access control privileges depend on two broad + * classifications of bus masters: Bus masters 0-3 have a 5-bit field defining separate + * privilege rights for user and supervisor mode accesses, as well as the optional + * inclusion of a process identification field within the definition. Bus masters + * 4-7 are limited to separate read and write permissions. For the privilege + * rights of bus masters 0-3, there are three flags associated with this function: + * Read (r) refers to accessing the referenced memory address using an operand + * (data) fetch Write (w) refers to updating the referenced memory address using a + * store (data) instruction Execute (x) refers to reading the referenced memory + * address using an instruction fetch Writes to RGDn_WORD2 clear the region + * descriptor's valid bit (RGDn_WORD3[VLD]). If only updating the access controls, write + * to RGDAACn instead because stores to these locations do not affect the + * descriptor's valid bit. + */ +typedef union _hw_mpu_rgdn_word2 +{ + uint32_t U; + struct _hw_mpu_rgdn_word2_bitfields + { + uint32_t M0UM : 3; //!< [2:0] Bus Master 0 User Mode Access Control + uint32_t M0SM : 2; //!< [4:3] Bus Master 0 Supervisor Mode Access + //! Control + uint32_t M0PE : 1; //!< [5] Bus Master 0 Process Identifier enable + uint32_t M1UM : 3; //!< [8:6] Bus Master 1 User Mode Access Control + uint32_t M1SM : 2; //!< [10:9] Bus Master 1 Supervisor Mode Access + //! Control + uint32_t M1PE : 1; //!< [11] Bus Master 1 Process Identifier enable + uint32_t M2UM : 3; //!< [14:12] Bus Master 2 User Mode Access control + uint32_t M2SM : 2; //!< [16:15] Bus Master 2 Supervisor Mode Access + //! Control + uint32_t M2PE : 1; //!< [17] Bus Master 2 Process Identifier Enable + uint32_t M3UM : 3; //!< [20:18] Bus Master 3 User Mode Access Control + uint32_t M3SM : 2; //!< [22:21] Bus Master 3 Supervisor Mode Access + //! Control + uint32_t M3PE : 1; //!< [23] Bus Master 3 Process Identifier Enable + uint32_t M4WE : 1; //!< [24] Bus Master 4 Write Enable + uint32_t M4RE : 1; //!< [25] Bus Master 4 Read Enable + uint32_t M5WE : 1; //!< [26] Bus Master 5 Write Enable + uint32_t M5RE : 1; //!< [27] Bus Master 5 Read Enable + uint32_t M6WE : 1; //!< [28] Bus Master 6 Write Enable + uint32_t M6RE : 1; //!< [29] Bus Master 6 Read Enable + uint32_t M7WE : 1; //!< [30] Bus Master 7 Write Enable + uint32_t M7RE : 1; //!< [31] Bus Master 7 Read Enable + } B; +} hw_mpu_rgdn_word2_t; +#endif + +/*! + * @name Constants and macros for entire MPU_RGDn_WORD2 register + */ +//@{ +#define HW_MPU_RGDn_WORD2_COUNT (12U) + +#define HW_MPU_RGDn_WORD2_ADDR(n) (REGS_MPU_BASE + 0x408U + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_MPU_RGDn_WORD2(n) (*(__IO hw_mpu_rgdn_word2_t *) HW_MPU_RGDn_WORD2_ADDR(n)) +#define HW_MPU_RGDn_WORD2_RD(n) (HW_MPU_RGDn_WORD2(n).U) +#define HW_MPU_RGDn_WORD2_WR(n, v) (HW_MPU_RGDn_WORD2(n).U = (v)) +#define HW_MPU_RGDn_WORD2_SET(n, v) (HW_MPU_RGDn_WORD2_WR(n, HW_MPU_RGDn_WORD2_RD(n) | (v))) +#define HW_MPU_RGDn_WORD2_CLR(n, v) (HW_MPU_RGDn_WORD2_WR(n, HW_MPU_RGDn_WORD2_RD(n) & ~(v))) +#define HW_MPU_RGDn_WORD2_TOG(n, v) (HW_MPU_RGDn_WORD2_WR(n, HW_MPU_RGDn_WORD2_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MPU_RGDn_WORD2 bitfields + */ + +/*! + * @name Register MPU_RGDn_WORD2, field M0UM[2:0] (RW) + * + * See M3UM description. + */ +//@{ +#define BP_MPU_RGDn_WORD2_M0UM (0U) //!< Bit position for MPU_RGDn_WORD2_M0UM. +#define BM_MPU_RGDn_WORD2_M0UM (0x00000007U) //!< Bit mask for MPU_RGDn_WORD2_M0UM. +#define BS_MPU_RGDn_WORD2_M0UM (3U) //!< Bit field size in bits for MPU_RGDn_WORD2_M0UM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M0UM field. +#define BR_MPU_RGDn_WORD2_M0UM(n) (HW_MPU_RGDn_WORD2(n).B.M0UM) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M0UM. +#define BF_MPU_RGDn_WORD2_M0UM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M0UM), uint32_t) & BM_MPU_RGDn_WORD2_M0UM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M0UM field to a new value. +#define BW_MPU_RGDn_WORD2_M0UM(n, v) (HW_MPU_RGDn_WORD2_WR(n, (HW_MPU_RGDn_WORD2_RD(n) & ~BM_MPU_RGDn_WORD2_M0UM) | BF_MPU_RGDn_WORD2_M0UM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M0SM[4:3] (RW) + * + * See M3SM description. + */ +//@{ +#define BP_MPU_RGDn_WORD2_M0SM (3U) //!< Bit position for MPU_RGDn_WORD2_M0SM. +#define BM_MPU_RGDn_WORD2_M0SM (0x00000018U) //!< Bit mask for MPU_RGDn_WORD2_M0SM. +#define BS_MPU_RGDn_WORD2_M0SM (2U) //!< Bit field size in bits for MPU_RGDn_WORD2_M0SM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M0SM field. +#define BR_MPU_RGDn_WORD2_M0SM(n) (HW_MPU_RGDn_WORD2(n).B.M0SM) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M0SM. +#define BF_MPU_RGDn_WORD2_M0SM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M0SM), uint32_t) & BM_MPU_RGDn_WORD2_M0SM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M0SM field to a new value. +#define BW_MPU_RGDn_WORD2_M0SM(n, v) (HW_MPU_RGDn_WORD2_WR(n, (HW_MPU_RGDn_WORD2_RD(n) & ~BM_MPU_RGDn_WORD2_M0SM) | BF_MPU_RGDn_WORD2_M0SM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M0PE[5] (RW) + * + * See M0PE description. + */ +//@{ +#define BP_MPU_RGDn_WORD2_M0PE (5U) //!< Bit position for MPU_RGDn_WORD2_M0PE. +#define BM_MPU_RGDn_WORD2_M0PE (0x00000020U) //!< Bit mask for MPU_RGDn_WORD2_M0PE. +#define BS_MPU_RGDn_WORD2_M0PE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M0PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M0PE field. +#define BR_MPU_RGDn_WORD2_M0PE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M0PE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M0PE. +#define BF_MPU_RGDn_WORD2_M0PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M0PE), uint32_t) & BM_MPU_RGDn_WORD2_M0PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M0PE field to a new value. +#define BW_MPU_RGDn_WORD2_M0PE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M0PE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M1UM[8:6] (RW) + * + * See M3UM description. + */ +//@{ +#define BP_MPU_RGDn_WORD2_M1UM (6U) //!< Bit position for MPU_RGDn_WORD2_M1UM. +#define BM_MPU_RGDn_WORD2_M1UM (0x000001C0U) //!< Bit mask for MPU_RGDn_WORD2_M1UM. +#define BS_MPU_RGDn_WORD2_M1UM (3U) //!< Bit field size in bits for MPU_RGDn_WORD2_M1UM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M1UM field. +#define BR_MPU_RGDn_WORD2_M1UM(n) (HW_MPU_RGDn_WORD2(n).B.M1UM) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M1UM. +#define BF_MPU_RGDn_WORD2_M1UM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M1UM), uint32_t) & BM_MPU_RGDn_WORD2_M1UM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M1UM field to a new value. +#define BW_MPU_RGDn_WORD2_M1UM(n, v) (HW_MPU_RGDn_WORD2_WR(n, (HW_MPU_RGDn_WORD2_RD(n) & ~BM_MPU_RGDn_WORD2_M1UM) | BF_MPU_RGDn_WORD2_M1UM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M1SM[10:9] (RW) + * + * See M3SM description. + */ +//@{ +#define BP_MPU_RGDn_WORD2_M1SM (9U) //!< Bit position for MPU_RGDn_WORD2_M1SM. +#define BM_MPU_RGDn_WORD2_M1SM (0x00000600U) //!< Bit mask for MPU_RGDn_WORD2_M1SM. +#define BS_MPU_RGDn_WORD2_M1SM (2U) //!< Bit field size in bits for MPU_RGDn_WORD2_M1SM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M1SM field. +#define BR_MPU_RGDn_WORD2_M1SM(n) (HW_MPU_RGDn_WORD2(n).B.M1SM) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M1SM. +#define BF_MPU_RGDn_WORD2_M1SM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M1SM), uint32_t) & BM_MPU_RGDn_WORD2_M1SM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M1SM field to a new value. +#define BW_MPU_RGDn_WORD2_M1SM(n, v) (HW_MPU_RGDn_WORD2_WR(n, (HW_MPU_RGDn_WORD2_RD(n) & ~BM_MPU_RGDn_WORD2_M1SM) | BF_MPU_RGDn_WORD2_M1SM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M1PE[11] (RW) + * + * See M3PE description. + */ +//@{ +#define BP_MPU_RGDn_WORD2_M1PE (11U) //!< Bit position for MPU_RGDn_WORD2_M1PE. +#define BM_MPU_RGDn_WORD2_M1PE (0x00000800U) //!< Bit mask for MPU_RGDn_WORD2_M1PE. +#define BS_MPU_RGDn_WORD2_M1PE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M1PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M1PE field. +#define BR_MPU_RGDn_WORD2_M1PE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M1PE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M1PE. +#define BF_MPU_RGDn_WORD2_M1PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M1PE), uint32_t) & BM_MPU_RGDn_WORD2_M1PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M1PE field to a new value. +#define BW_MPU_RGDn_WORD2_M1PE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M1PE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M2UM[14:12] (RW) + * + * See M3UM description. + */ +//@{ +#define BP_MPU_RGDn_WORD2_M2UM (12U) //!< Bit position for MPU_RGDn_WORD2_M2UM. +#define BM_MPU_RGDn_WORD2_M2UM (0x00007000U) //!< Bit mask for MPU_RGDn_WORD2_M2UM. +#define BS_MPU_RGDn_WORD2_M2UM (3U) //!< Bit field size in bits for MPU_RGDn_WORD2_M2UM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M2UM field. +#define BR_MPU_RGDn_WORD2_M2UM(n) (HW_MPU_RGDn_WORD2(n).B.M2UM) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M2UM. +#define BF_MPU_RGDn_WORD2_M2UM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M2UM), uint32_t) & BM_MPU_RGDn_WORD2_M2UM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M2UM field to a new value. +#define BW_MPU_RGDn_WORD2_M2UM(n, v) (HW_MPU_RGDn_WORD2_WR(n, (HW_MPU_RGDn_WORD2_RD(n) & ~BM_MPU_RGDn_WORD2_M2UM) | BF_MPU_RGDn_WORD2_M2UM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M2SM[16:15] (RW) + * + * See M3SM description. + */ +//@{ +#define BP_MPU_RGDn_WORD2_M2SM (15U) //!< Bit position for MPU_RGDn_WORD2_M2SM. +#define BM_MPU_RGDn_WORD2_M2SM (0x00018000U) //!< Bit mask for MPU_RGDn_WORD2_M2SM. +#define BS_MPU_RGDn_WORD2_M2SM (2U) //!< Bit field size in bits for MPU_RGDn_WORD2_M2SM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M2SM field. +#define BR_MPU_RGDn_WORD2_M2SM(n) (HW_MPU_RGDn_WORD2(n).B.M2SM) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M2SM. +#define BF_MPU_RGDn_WORD2_M2SM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M2SM), uint32_t) & BM_MPU_RGDn_WORD2_M2SM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M2SM field to a new value. +#define BW_MPU_RGDn_WORD2_M2SM(n, v) (HW_MPU_RGDn_WORD2_WR(n, (HW_MPU_RGDn_WORD2_RD(n) & ~BM_MPU_RGDn_WORD2_M2SM) | BF_MPU_RGDn_WORD2_M2SM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M2PE[17] (RW) + * + * See M3PE description. + */ +//@{ +#define BP_MPU_RGDn_WORD2_M2PE (17U) //!< Bit position for MPU_RGDn_WORD2_M2PE. +#define BM_MPU_RGDn_WORD2_M2PE (0x00020000U) //!< Bit mask for MPU_RGDn_WORD2_M2PE. +#define BS_MPU_RGDn_WORD2_M2PE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M2PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M2PE field. +#define BR_MPU_RGDn_WORD2_M2PE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M2PE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M2PE. +#define BF_MPU_RGDn_WORD2_M2PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M2PE), uint32_t) & BM_MPU_RGDn_WORD2_M2PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M2PE field to a new value. +#define BW_MPU_RGDn_WORD2_M2PE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M2PE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M3UM[20:18] (RW) + * + * Defines the access controls for bus master 3 in User mode. M3UM consists of + * three independent bits, enabling read (r), write (w), and execute (x) + * permissions. + * + * Values: + * - 0 - An attempted access of that mode may be terminated with an access error + * (if not allowed by another descriptor) and the access not performed. + * - 1 - Allows the given access type to occur + */ +//@{ +#define BP_MPU_RGDn_WORD2_M3UM (18U) //!< Bit position for MPU_RGDn_WORD2_M3UM. +#define BM_MPU_RGDn_WORD2_M3UM (0x001C0000U) //!< Bit mask for MPU_RGDn_WORD2_M3UM. +#define BS_MPU_RGDn_WORD2_M3UM (3U) //!< Bit field size in bits for MPU_RGDn_WORD2_M3UM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M3UM field. +#define BR_MPU_RGDn_WORD2_M3UM(n) (HW_MPU_RGDn_WORD2(n).B.M3UM) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M3UM. +#define BF_MPU_RGDn_WORD2_M3UM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M3UM), uint32_t) & BM_MPU_RGDn_WORD2_M3UM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M3UM field to a new value. +#define BW_MPU_RGDn_WORD2_M3UM(n, v) (HW_MPU_RGDn_WORD2_WR(n, (HW_MPU_RGDn_WORD2_RD(n) & ~BM_MPU_RGDn_WORD2_M3UM) | BF_MPU_RGDn_WORD2_M3UM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M3SM[22:21] (RW) + * + * Defines the access controls for bus master 3 in Supervisor mode. + * + * Values: + * - 00 - r/w/x; read, write and execute allowed + * - 01 - r/x; read and execute allowed, but no write + * - 10 - r/w; read and write allowed, but no execute + * - 11 - Same as User mode defined in M3UM + */ +//@{ +#define BP_MPU_RGDn_WORD2_M3SM (21U) //!< Bit position for MPU_RGDn_WORD2_M3SM. +#define BM_MPU_RGDn_WORD2_M3SM (0x00600000U) //!< Bit mask for MPU_RGDn_WORD2_M3SM. +#define BS_MPU_RGDn_WORD2_M3SM (2U) //!< Bit field size in bits for MPU_RGDn_WORD2_M3SM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M3SM field. +#define BR_MPU_RGDn_WORD2_M3SM(n) (HW_MPU_RGDn_WORD2(n).B.M3SM) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M3SM. +#define BF_MPU_RGDn_WORD2_M3SM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M3SM), uint32_t) & BM_MPU_RGDn_WORD2_M3SM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M3SM field to a new value. +#define BW_MPU_RGDn_WORD2_M3SM(n, v) (HW_MPU_RGDn_WORD2_WR(n, (HW_MPU_RGDn_WORD2_RD(n) & ~BM_MPU_RGDn_WORD2_M3SM) | BF_MPU_RGDn_WORD2_M3SM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M3PE[23] (RW) + * + * Values: + * - 0 - Do not include the process identifier in the evaluation + * - 1 - Include the process identifier and mask (RGDn_WORD3) in the region hit + * evaluation + */ +//@{ +#define BP_MPU_RGDn_WORD2_M3PE (23U) //!< Bit position for MPU_RGDn_WORD2_M3PE. +#define BM_MPU_RGDn_WORD2_M3PE (0x00800000U) //!< Bit mask for MPU_RGDn_WORD2_M3PE. +#define BS_MPU_RGDn_WORD2_M3PE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M3PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M3PE field. +#define BR_MPU_RGDn_WORD2_M3PE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M3PE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M3PE. +#define BF_MPU_RGDn_WORD2_M3PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M3PE), uint32_t) & BM_MPU_RGDn_WORD2_M3PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M3PE field to a new value. +#define BW_MPU_RGDn_WORD2_M3PE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M3PE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M4WE[24] (RW) + * + * Values: + * - 0 - Bus master 4 writes terminate with an access error and the write is not + * performed + * - 1 - Bus master 4 writes allowed + */ +//@{ +#define BP_MPU_RGDn_WORD2_M4WE (24U) //!< Bit position for MPU_RGDn_WORD2_M4WE. +#define BM_MPU_RGDn_WORD2_M4WE (0x01000000U) //!< Bit mask for MPU_RGDn_WORD2_M4WE. +#define BS_MPU_RGDn_WORD2_M4WE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M4WE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M4WE field. +#define BR_MPU_RGDn_WORD2_M4WE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M4WE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M4WE. +#define BF_MPU_RGDn_WORD2_M4WE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M4WE), uint32_t) & BM_MPU_RGDn_WORD2_M4WE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M4WE field to a new value. +#define BW_MPU_RGDn_WORD2_M4WE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M4WE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M4RE[25] (RW) + * + * Values: + * - 0 - Bus master 4 reads terminate with an access error and the read is not + * performed + * - 1 - Bus master 4 reads allowed + */ +//@{ +#define BP_MPU_RGDn_WORD2_M4RE (25U) //!< Bit position for MPU_RGDn_WORD2_M4RE. +#define BM_MPU_RGDn_WORD2_M4RE (0x02000000U) //!< Bit mask for MPU_RGDn_WORD2_M4RE. +#define BS_MPU_RGDn_WORD2_M4RE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M4RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M4RE field. +#define BR_MPU_RGDn_WORD2_M4RE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M4RE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M4RE. +#define BF_MPU_RGDn_WORD2_M4RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M4RE), uint32_t) & BM_MPU_RGDn_WORD2_M4RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M4RE field to a new value. +#define BW_MPU_RGDn_WORD2_M4RE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M4RE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M5WE[26] (RW) + * + * Values: + * - 0 - Bus master 5 writes terminate with an access error and the write is not + * performed + * - 1 - Bus master 5 writes allowed + */ +//@{ +#define BP_MPU_RGDn_WORD2_M5WE (26U) //!< Bit position for MPU_RGDn_WORD2_M5WE. +#define BM_MPU_RGDn_WORD2_M5WE (0x04000000U) //!< Bit mask for MPU_RGDn_WORD2_M5WE. +#define BS_MPU_RGDn_WORD2_M5WE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M5WE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M5WE field. +#define BR_MPU_RGDn_WORD2_M5WE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M5WE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M5WE. +#define BF_MPU_RGDn_WORD2_M5WE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M5WE), uint32_t) & BM_MPU_RGDn_WORD2_M5WE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M5WE field to a new value. +#define BW_MPU_RGDn_WORD2_M5WE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M5WE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M5RE[27] (RW) + * + * Values: + * - 0 - Bus master 5 reads terminate with an access error and the read is not + * performed + * - 1 - Bus master 5 reads allowed + */ +//@{ +#define BP_MPU_RGDn_WORD2_M5RE (27U) //!< Bit position for MPU_RGDn_WORD2_M5RE. +#define BM_MPU_RGDn_WORD2_M5RE (0x08000000U) //!< Bit mask for MPU_RGDn_WORD2_M5RE. +#define BS_MPU_RGDn_WORD2_M5RE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M5RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M5RE field. +#define BR_MPU_RGDn_WORD2_M5RE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M5RE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M5RE. +#define BF_MPU_RGDn_WORD2_M5RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M5RE), uint32_t) & BM_MPU_RGDn_WORD2_M5RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M5RE field to a new value. +#define BW_MPU_RGDn_WORD2_M5RE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M5RE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M6WE[28] (RW) + * + * Values: + * - 0 - Bus master 6 writes terminate with an access error and the write is not + * performed + * - 1 - Bus master 6 writes allowed + */ +//@{ +#define BP_MPU_RGDn_WORD2_M6WE (28U) //!< Bit position for MPU_RGDn_WORD2_M6WE. +#define BM_MPU_RGDn_WORD2_M6WE (0x10000000U) //!< Bit mask for MPU_RGDn_WORD2_M6WE. +#define BS_MPU_RGDn_WORD2_M6WE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M6WE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M6WE field. +#define BR_MPU_RGDn_WORD2_M6WE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M6WE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M6WE. +#define BF_MPU_RGDn_WORD2_M6WE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M6WE), uint32_t) & BM_MPU_RGDn_WORD2_M6WE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M6WE field to a new value. +#define BW_MPU_RGDn_WORD2_M6WE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M6WE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M6RE[29] (RW) + * + * Values: + * - 0 - Bus master 6 reads terminate with an access error and the read is not + * performed + * - 1 - Bus master 6 reads allowed + */ +//@{ +#define BP_MPU_RGDn_WORD2_M6RE (29U) //!< Bit position for MPU_RGDn_WORD2_M6RE. +#define BM_MPU_RGDn_WORD2_M6RE (0x20000000U) //!< Bit mask for MPU_RGDn_WORD2_M6RE. +#define BS_MPU_RGDn_WORD2_M6RE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M6RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M6RE field. +#define BR_MPU_RGDn_WORD2_M6RE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M6RE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M6RE. +#define BF_MPU_RGDn_WORD2_M6RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M6RE), uint32_t) & BM_MPU_RGDn_WORD2_M6RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M6RE field to a new value. +#define BW_MPU_RGDn_WORD2_M6RE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M6RE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M7WE[30] (RW) + * + * Values: + * - 0 - Bus master 7 writes terminate with an access error and the write is not + * performed + * - 1 - Bus master 7 writes allowed + */ +//@{ +#define BP_MPU_RGDn_WORD2_M7WE (30U) //!< Bit position for MPU_RGDn_WORD2_M7WE. +#define BM_MPU_RGDn_WORD2_M7WE (0x40000000U) //!< Bit mask for MPU_RGDn_WORD2_M7WE. +#define BS_MPU_RGDn_WORD2_M7WE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M7WE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M7WE field. +#define BR_MPU_RGDn_WORD2_M7WE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M7WE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M7WE. +#define BF_MPU_RGDn_WORD2_M7WE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M7WE), uint32_t) & BM_MPU_RGDn_WORD2_M7WE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M7WE field to a new value. +#define BW_MPU_RGDn_WORD2_M7WE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M7WE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD2, field M7RE[31] (RW) + * + * Values: + * - 0 - Bus master 7 reads terminate with an access error and the read is not + * performed + * - 1 - Bus master 7 reads allowed + */ +//@{ +#define BP_MPU_RGDn_WORD2_M7RE (31U) //!< Bit position for MPU_RGDn_WORD2_M7RE. +#define BM_MPU_RGDn_WORD2_M7RE (0x80000000U) //!< Bit mask for MPU_RGDn_WORD2_M7RE. +#define BS_MPU_RGDn_WORD2_M7RE (1U) //!< Bit field size in bits for MPU_RGDn_WORD2_M7RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD2_M7RE field. +#define BR_MPU_RGDn_WORD2_M7RE(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M7RE)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD2_M7RE. +#define BF_MPU_RGDn_WORD2_M7RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD2_M7RE), uint32_t) & BM_MPU_RGDn_WORD2_M7RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M7RE field to a new value. +#define BW_MPU_RGDn_WORD2_M7RE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD2_ADDR(n), BP_MPU_RGDn_WORD2_M7RE) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_MPU_RGDn_WORD3 - Region Descriptor n, Word 3 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MPU_RGDn_WORD3 - Region Descriptor n, Word 3 (RW) + * + * Reset value: 0x00000001U + * + * The fourth word of the region descriptor contains the optional process + * identifier and mask, plus the region descriptor's valid bit. + */ +typedef union _hw_mpu_rgdn_word3 +{ + uint32_t U; + struct _hw_mpu_rgdn_word3_bitfields + { + uint32_t VLD : 1; //!< [0] Valid + uint32_t RESERVED0 : 15; //!< [15:1] + uint32_t PIDMASK : 8; //!< [23:16] Process Identifier Mask + uint32_t PID : 8; //!< [31:24] Process Identifier + } B; +} hw_mpu_rgdn_word3_t; +#endif + +/*! + * @name Constants and macros for entire MPU_RGDn_WORD3 register + */ +//@{ +#define HW_MPU_RGDn_WORD3_COUNT (12U) + +#define HW_MPU_RGDn_WORD3_ADDR(n) (REGS_MPU_BASE + 0x40CU + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_MPU_RGDn_WORD3(n) (*(__IO hw_mpu_rgdn_word3_t *) HW_MPU_RGDn_WORD3_ADDR(n)) +#define HW_MPU_RGDn_WORD3_RD(n) (HW_MPU_RGDn_WORD3(n).U) +#define HW_MPU_RGDn_WORD3_WR(n, v) (HW_MPU_RGDn_WORD3(n).U = (v)) +#define HW_MPU_RGDn_WORD3_SET(n, v) (HW_MPU_RGDn_WORD3_WR(n, HW_MPU_RGDn_WORD3_RD(n) | (v))) +#define HW_MPU_RGDn_WORD3_CLR(n, v) (HW_MPU_RGDn_WORD3_WR(n, HW_MPU_RGDn_WORD3_RD(n) & ~(v))) +#define HW_MPU_RGDn_WORD3_TOG(n, v) (HW_MPU_RGDn_WORD3_WR(n, HW_MPU_RGDn_WORD3_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MPU_RGDn_WORD3 bitfields + */ + +/*! + * @name Register MPU_RGDn_WORD3, field VLD[0] (RW) + * + * Signals the region descriptor is valid. Any write to RGDn_WORD0-2 clears this + * bit. + * + * Values: + * - 0 - Region descriptor is invalid + * - 1 - Region descriptor is valid + */ +//@{ +#define BP_MPU_RGDn_WORD3_VLD (0U) //!< Bit position for MPU_RGDn_WORD3_VLD. +#define BM_MPU_RGDn_WORD3_VLD (0x00000001U) //!< Bit mask for MPU_RGDn_WORD3_VLD. +#define BS_MPU_RGDn_WORD3_VLD (1U) //!< Bit field size in bits for MPU_RGDn_WORD3_VLD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD3_VLD field. +#define BR_MPU_RGDn_WORD3_VLD(n) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD3_ADDR(n), BP_MPU_RGDn_WORD3_VLD)) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD3_VLD. +#define BF_MPU_RGDn_WORD3_VLD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD3_VLD), uint32_t) & BM_MPU_RGDn_WORD3_VLD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the VLD field to a new value. +#define BW_MPU_RGDn_WORD3_VLD(n, v) (BITBAND_ACCESS32(HW_MPU_RGDn_WORD3_ADDR(n), BP_MPU_RGDn_WORD3_VLD) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD3, field PIDMASK[23:16] (RW) + * + * Provides a masking capability so that multiple process identifiers can be + * included as part of the region hit determination. If a bit in PIDMASK is set, + * then the corresponding PID bit is ignored in the comparison. This field and PID + * are included in the region hit determination if RGDn_WORD2[MxPE] is set. For + * more information on the handling of the PID and PIDMASK, see "Access Evaluation + * - Hit Determination." + */ +//@{ +#define BP_MPU_RGDn_WORD3_PIDMASK (16U) //!< Bit position for MPU_RGDn_WORD3_PIDMASK. +#define BM_MPU_RGDn_WORD3_PIDMASK (0x00FF0000U) //!< Bit mask for MPU_RGDn_WORD3_PIDMASK. +#define BS_MPU_RGDn_WORD3_PIDMASK (8U) //!< Bit field size in bits for MPU_RGDn_WORD3_PIDMASK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD3_PIDMASK field. +#define BR_MPU_RGDn_WORD3_PIDMASK(n) (HW_MPU_RGDn_WORD3(n).B.PIDMASK) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD3_PIDMASK. +#define BF_MPU_RGDn_WORD3_PIDMASK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD3_PIDMASK), uint32_t) & BM_MPU_RGDn_WORD3_PIDMASK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PIDMASK field to a new value. +#define BW_MPU_RGDn_WORD3_PIDMASK(n, v) (HW_MPU_RGDn_WORD3_WR(n, (HW_MPU_RGDn_WORD3_RD(n) & ~BM_MPU_RGDn_WORD3_PIDMASK) | BF_MPU_RGDn_WORD3_PIDMASK(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDn_WORD3, field PID[31:24] (RW) + * + * Specifies the process identifier that is included in the region hit + * determination if RGDn_WORD2[MxPE] is set. PIDMASK can mask individual bits in this + * field. + */ +//@{ +#define BP_MPU_RGDn_WORD3_PID (24U) //!< Bit position for MPU_RGDn_WORD3_PID. +#define BM_MPU_RGDn_WORD3_PID (0xFF000000U) //!< Bit mask for MPU_RGDn_WORD3_PID. +#define BS_MPU_RGDn_WORD3_PID (8U) //!< Bit field size in bits for MPU_RGDn_WORD3_PID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDn_WORD3_PID field. +#define BR_MPU_RGDn_WORD3_PID(n) (HW_MPU_RGDn_WORD3(n).B.PID) +#endif + +//! @brief Format value for bitfield MPU_RGDn_WORD3_PID. +#define BF_MPU_RGDn_WORD3_PID(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDn_WORD3_PID), uint32_t) & BM_MPU_RGDn_WORD3_PID) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PID field to a new value. +#define BW_MPU_RGDn_WORD3_PID(n, v) (HW_MPU_RGDn_WORD3_WR(n, (HW_MPU_RGDn_WORD3_RD(n) & ~BM_MPU_RGDn_WORD3_PID) | BF_MPU_RGDn_WORD3_PID(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_MPU_RGDAACn - Region Descriptor Alternate Access Control n +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_MPU_RGDAACn - Region Descriptor Alternate Access Control n (RW) + * + * Reset value: 0x0061F7DFU + * + * Because software may adjust only the access controls within a region + * descriptor (RGDn_WORD2) as different tasks execute, an alternate programming view of + * this 32-bit entity is available. Writing to this register does not affect the + * descriptor's valid bit. + */ +typedef union _hw_mpu_rgdaacn +{ + uint32_t U; + struct _hw_mpu_rgdaacn_bitfields + { + uint32_t M0UM : 3; //!< [2:0] Bus Master 0 User Mode Access Control + uint32_t M0SM : 2; //!< [4:3] Bus Master 0 Supervisor Mode Access + //! Control + uint32_t M0PE : 1; //!< [5] Bus Master 0 Process Identifier Enable + uint32_t M1UM : 3; //!< [8:6] Bus Master 1 User Mode Access Control + uint32_t M1SM : 2; //!< [10:9] Bus Master 1 Supervisor Mode Access + //! Control + uint32_t M1PE : 1; //!< [11] Bus Master 1 Process Identifier Enable + uint32_t M2UM : 3; //!< [14:12] Bus Master 2 User Mode Access Control + uint32_t M2SM : 2; //!< [16:15] Bus Master 2 Supervisor Mode Access + //! Control + uint32_t M2PE : 1; //!< [17] Bus Master 2 Process Identifier Enable + uint32_t M3UM : 3; //!< [20:18] Bus Master 3 User Mode Access Control + uint32_t M3SM : 2; //!< [22:21] Bus Master 3 Supervisor Mode Access + //! Control + uint32_t M3PE : 1; //!< [23] Bus Master 3 Process Identifier Enable + uint32_t M4WE : 1; //!< [24] Bus Master 4 Write Enable + uint32_t M4RE : 1; //!< [25] Bus Master 4 Read Enable + uint32_t M5WE : 1; //!< [26] Bus Master 5 Write Enable + uint32_t M5RE : 1; //!< [27] Bus Master 5 Read Enable + uint32_t M6WE : 1; //!< [28] Bus Master 6 Write Enable + uint32_t M6RE : 1; //!< [29] Bus Master 6 Read Enable + uint32_t M7WE : 1; //!< [30] Bus Master 7 Write Enable + uint32_t M7RE : 1; //!< [31] Bus Master 7 Read Enable + } B; +} hw_mpu_rgdaacn_t; +#endif + +/*! + * @name Constants and macros for entire MPU_RGDAACn register + */ +//@{ +#define HW_MPU_RGDAACn_COUNT (12U) + +#define HW_MPU_RGDAACn_ADDR(n) (REGS_MPU_BASE + 0x800U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_MPU_RGDAACn(n) (*(__IO hw_mpu_rgdaacn_t *) HW_MPU_RGDAACn_ADDR(n)) +#define HW_MPU_RGDAACn_RD(n) (HW_MPU_RGDAACn(n).U) +#define HW_MPU_RGDAACn_WR(n, v) (HW_MPU_RGDAACn(n).U = (v)) +#define HW_MPU_RGDAACn_SET(n, v) (HW_MPU_RGDAACn_WR(n, HW_MPU_RGDAACn_RD(n) | (v))) +#define HW_MPU_RGDAACn_CLR(n, v) (HW_MPU_RGDAACn_WR(n, HW_MPU_RGDAACn_RD(n) & ~(v))) +#define HW_MPU_RGDAACn_TOG(n, v) (HW_MPU_RGDAACn_WR(n, HW_MPU_RGDAACn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual MPU_RGDAACn bitfields + */ + +/*! + * @name Register MPU_RGDAACn, field M0UM[2:0] (RW) + * + * See M3UM description. + */ +//@{ +#define BP_MPU_RGDAACn_M0UM (0U) //!< Bit position for MPU_RGDAACn_M0UM. +#define BM_MPU_RGDAACn_M0UM (0x00000007U) //!< Bit mask for MPU_RGDAACn_M0UM. +#define BS_MPU_RGDAACn_M0UM (3U) //!< Bit field size in bits for MPU_RGDAACn_M0UM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M0UM field. +#define BR_MPU_RGDAACn_M0UM(n) (HW_MPU_RGDAACn(n).B.M0UM) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M0UM. +#define BF_MPU_RGDAACn_M0UM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M0UM), uint32_t) & BM_MPU_RGDAACn_M0UM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M0UM field to a new value. +#define BW_MPU_RGDAACn_M0UM(n, v) (HW_MPU_RGDAACn_WR(n, (HW_MPU_RGDAACn_RD(n) & ~BM_MPU_RGDAACn_M0UM) | BF_MPU_RGDAACn_M0UM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M0SM[4:3] (RW) + * + * See M3SM description. + */ +//@{ +#define BP_MPU_RGDAACn_M0SM (3U) //!< Bit position for MPU_RGDAACn_M0SM. +#define BM_MPU_RGDAACn_M0SM (0x00000018U) //!< Bit mask for MPU_RGDAACn_M0SM. +#define BS_MPU_RGDAACn_M0SM (2U) //!< Bit field size in bits for MPU_RGDAACn_M0SM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M0SM field. +#define BR_MPU_RGDAACn_M0SM(n) (HW_MPU_RGDAACn(n).B.M0SM) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M0SM. +#define BF_MPU_RGDAACn_M0SM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M0SM), uint32_t) & BM_MPU_RGDAACn_M0SM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M0SM field to a new value. +#define BW_MPU_RGDAACn_M0SM(n, v) (HW_MPU_RGDAACn_WR(n, (HW_MPU_RGDAACn_RD(n) & ~BM_MPU_RGDAACn_M0SM) | BF_MPU_RGDAACn_M0SM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M0PE[5] (RW) + * + * See M3PE description. + */ +//@{ +#define BP_MPU_RGDAACn_M0PE (5U) //!< Bit position for MPU_RGDAACn_M0PE. +#define BM_MPU_RGDAACn_M0PE (0x00000020U) //!< Bit mask for MPU_RGDAACn_M0PE. +#define BS_MPU_RGDAACn_M0PE (1U) //!< Bit field size in bits for MPU_RGDAACn_M0PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M0PE field. +#define BR_MPU_RGDAACn_M0PE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M0PE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M0PE. +#define BF_MPU_RGDAACn_M0PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M0PE), uint32_t) & BM_MPU_RGDAACn_M0PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M0PE field to a new value. +#define BW_MPU_RGDAACn_M0PE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M0PE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M1UM[8:6] (RW) + * + * See M3UM description. + */ +//@{ +#define BP_MPU_RGDAACn_M1UM (6U) //!< Bit position for MPU_RGDAACn_M1UM. +#define BM_MPU_RGDAACn_M1UM (0x000001C0U) //!< Bit mask for MPU_RGDAACn_M1UM. +#define BS_MPU_RGDAACn_M1UM (3U) //!< Bit field size in bits for MPU_RGDAACn_M1UM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M1UM field. +#define BR_MPU_RGDAACn_M1UM(n) (HW_MPU_RGDAACn(n).B.M1UM) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M1UM. +#define BF_MPU_RGDAACn_M1UM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M1UM), uint32_t) & BM_MPU_RGDAACn_M1UM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M1UM field to a new value. +#define BW_MPU_RGDAACn_M1UM(n, v) (HW_MPU_RGDAACn_WR(n, (HW_MPU_RGDAACn_RD(n) & ~BM_MPU_RGDAACn_M1UM) | BF_MPU_RGDAACn_M1UM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M1SM[10:9] (RW) + * + * See M3SM description. + */ +//@{ +#define BP_MPU_RGDAACn_M1SM (9U) //!< Bit position for MPU_RGDAACn_M1SM. +#define BM_MPU_RGDAACn_M1SM (0x00000600U) //!< Bit mask for MPU_RGDAACn_M1SM. +#define BS_MPU_RGDAACn_M1SM (2U) //!< Bit field size in bits for MPU_RGDAACn_M1SM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M1SM field. +#define BR_MPU_RGDAACn_M1SM(n) (HW_MPU_RGDAACn(n).B.M1SM) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M1SM. +#define BF_MPU_RGDAACn_M1SM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M1SM), uint32_t) & BM_MPU_RGDAACn_M1SM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M1SM field to a new value. +#define BW_MPU_RGDAACn_M1SM(n, v) (HW_MPU_RGDAACn_WR(n, (HW_MPU_RGDAACn_RD(n) & ~BM_MPU_RGDAACn_M1SM) | BF_MPU_RGDAACn_M1SM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M1PE[11] (RW) + * + * See M3PE description. + */ +//@{ +#define BP_MPU_RGDAACn_M1PE (11U) //!< Bit position for MPU_RGDAACn_M1PE. +#define BM_MPU_RGDAACn_M1PE (0x00000800U) //!< Bit mask for MPU_RGDAACn_M1PE. +#define BS_MPU_RGDAACn_M1PE (1U) //!< Bit field size in bits for MPU_RGDAACn_M1PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M1PE field. +#define BR_MPU_RGDAACn_M1PE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M1PE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M1PE. +#define BF_MPU_RGDAACn_M1PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M1PE), uint32_t) & BM_MPU_RGDAACn_M1PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M1PE field to a new value. +#define BW_MPU_RGDAACn_M1PE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M1PE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M2UM[14:12] (RW) + * + * See M3UM description. + */ +//@{ +#define BP_MPU_RGDAACn_M2UM (12U) //!< Bit position for MPU_RGDAACn_M2UM. +#define BM_MPU_RGDAACn_M2UM (0x00007000U) //!< Bit mask for MPU_RGDAACn_M2UM. +#define BS_MPU_RGDAACn_M2UM (3U) //!< Bit field size in bits for MPU_RGDAACn_M2UM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M2UM field. +#define BR_MPU_RGDAACn_M2UM(n) (HW_MPU_RGDAACn(n).B.M2UM) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M2UM. +#define BF_MPU_RGDAACn_M2UM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M2UM), uint32_t) & BM_MPU_RGDAACn_M2UM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M2UM field to a new value. +#define BW_MPU_RGDAACn_M2UM(n, v) (HW_MPU_RGDAACn_WR(n, (HW_MPU_RGDAACn_RD(n) & ~BM_MPU_RGDAACn_M2UM) | BF_MPU_RGDAACn_M2UM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M2SM[16:15] (RW) + * + * See M3SM description. + */ +//@{ +#define BP_MPU_RGDAACn_M2SM (15U) //!< Bit position for MPU_RGDAACn_M2SM. +#define BM_MPU_RGDAACn_M2SM (0x00018000U) //!< Bit mask for MPU_RGDAACn_M2SM. +#define BS_MPU_RGDAACn_M2SM (2U) //!< Bit field size in bits for MPU_RGDAACn_M2SM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M2SM field. +#define BR_MPU_RGDAACn_M2SM(n) (HW_MPU_RGDAACn(n).B.M2SM) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M2SM. +#define BF_MPU_RGDAACn_M2SM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M2SM), uint32_t) & BM_MPU_RGDAACn_M2SM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M2SM field to a new value. +#define BW_MPU_RGDAACn_M2SM(n, v) (HW_MPU_RGDAACn_WR(n, (HW_MPU_RGDAACn_RD(n) & ~BM_MPU_RGDAACn_M2SM) | BF_MPU_RGDAACn_M2SM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M2PE[17] (RW) + * + * See M3PE description. + */ +//@{ +#define BP_MPU_RGDAACn_M2PE (17U) //!< Bit position for MPU_RGDAACn_M2PE. +#define BM_MPU_RGDAACn_M2PE (0x00020000U) //!< Bit mask for MPU_RGDAACn_M2PE. +#define BS_MPU_RGDAACn_M2PE (1U) //!< Bit field size in bits for MPU_RGDAACn_M2PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M2PE field. +#define BR_MPU_RGDAACn_M2PE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M2PE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M2PE. +#define BF_MPU_RGDAACn_M2PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M2PE), uint32_t) & BM_MPU_RGDAACn_M2PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M2PE field to a new value. +#define BW_MPU_RGDAACn_M2PE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M2PE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M3UM[20:18] (RW) + * + * Defines the access controls for bus master 3 in user mode. M3UM consists of + * three independent bits, enabling read (r), write (w), and execute (x) + * permissions. + * + * Values: + * - 0 - An attempted access of that mode may be terminated with an access error + * (if not allowed by another descriptor) and the access not performed. + * - 1 - Allows the given access type to occur + */ +//@{ +#define BP_MPU_RGDAACn_M3UM (18U) //!< Bit position for MPU_RGDAACn_M3UM. +#define BM_MPU_RGDAACn_M3UM (0x001C0000U) //!< Bit mask for MPU_RGDAACn_M3UM. +#define BS_MPU_RGDAACn_M3UM (3U) //!< Bit field size in bits for MPU_RGDAACn_M3UM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M3UM field. +#define BR_MPU_RGDAACn_M3UM(n) (HW_MPU_RGDAACn(n).B.M3UM) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M3UM. +#define BF_MPU_RGDAACn_M3UM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M3UM), uint32_t) & BM_MPU_RGDAACn_M3UM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M3UM field to a new value. +#define BW_MPU_RGDAACn_M3UM(n, v) (HW_MPU_RGDAACn_WR(n, (HW_MPU_RGDAACn_RD(n) & ~BM_MPU_RGDAACn_M3UM) | BF_MPU_RGDAACn_M3UM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M3SM[22:21] (RW) + * + * Defines the access controls for bus master 3 in Supervisor mode. + * + * Values: + * - 00 - r/w/x; read, write and execute allowed + * - 01 - r/x; read and execute allowed, but no write + * - 10 - r/w; read and write allowed, but no execute + * - 11 - Same as User mode defined in M3UM + */ +//@{ +#define BP_MPU_RGDAACn_M3SM (21U) //!< Bit position for MPU_RGDAACn_M3SM. +#define BM_MPU_RGDAACn_M3SM (0x00600000U) //!< Bit mask for MPU_RGDAACn_M3SM. +#define BS_MPU_RGDAACn_M3SM (2U) //!< Bit field size in bits for MPU_RGDAACn_M3SM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M3SM field. +#define BR_MPU_RGDAACn_M3SM(n) (HW_MPU_RGDAACn(n).B.M3SM) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M3SM. +#define BF_MPU_RGDAACn_M3SM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M3SM), uint32_t) & BM_MPU_RGDAACn_M3SM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M3SM field to a new value. +#define BW_MPU_RGDAACn_M3SM(n, v) (HW_MPU_RGDAACn_WR(n, (HW_MPU_RGDAACn_RD(n) & ~BM_MPU_RGDAACn_M3SM) | BF_MPU_RGDAACn_M3SM(v))) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M3PE[23] (RW) + * + * Values: + * - 0 - Do not include the process identifier in the evaluation + * - 1 - Include the process identifier and mask (RGDn.RGDAAC) in the region hit + * evaluation + */ +//@{ +#define BP_MPU_RGDAACn_M3PE (23U) //!< Bit position for MPU_RGDAACn_M3PE. +#define BM_MPU_RGDAACn_M3PE (0x00800000U) //!< Bit mask for MPU_RGDAACn_M3PE. +#define BS_MPU_RGDAACn_M3PE (1U) //!< Bit field size in bits for MPU_RGDAACn_M3PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M3PE field. +#define BR_MPU_RGDAACn_M3PE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M3PE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M3PE. +#define BF_MPU_RGDAACn_M3PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M3PE), uint32_t) & BM_MPU_RGDAACn_M3PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M3PE field to a new value. +#define BW_MPU_RGDAACn_M3PE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M3PE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M4WE[24] (RW) + * + * Values: + * - 0 - Bus master 4 writes terminate with an access error and the write is not + * performed + * - 1 - Bus master 4 writes allowed + */ +//@{ +#define BP_MPU_RGDAACn_M4WE (24U) //!< Bit position for MPU_RGDAACn_M4WE. +#define BM_MPU_RGDAACn_M4WE (0x01000000U) //!< Bit mask for MPU_RGDAACn_M4WE. +#define BS_MPU_RGDAACn_M4WE (1U) //!< Bit field size in bits for MPU_RGDAACn_M4WE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M4WE field. +#define BR_MPU_RGDAACn_M4WE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M4WE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M4WE. +#define BF_MPU_RGDAACn_M4WE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M4WE), uint32_t) & BM_MPU_RGDAACn_M4WE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M4WE field to a new value. +#define BW_MPU_RGDAACn_M4WE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M4WE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M4RE[25] (RW) + * + * Values: + * - 0 - Bus master 4 reads terminate with an access error and the read is not + * performed + * - 1 - Bus master 4 reads allowed + */ +//@{ +#define BP_MPU_RGDAACn_M4RE (25U) //!< Bit position for MPU_RGDAACn_M4RE. +#define BM_MPU_RGDAACn_M4RE (0x02000000U) //!< Bit mask for MPU_RGDAACn_M4RE. +#define BS_MPU_RGDAACn_M4RE (1U) //!< Bit field size in bits for MPU_RGDAACn_M4RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M4RE field. +#define BR_MPU_RGDAACn_M4RE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M4RE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M4RE. +#define BF_MPU_RGDAACn_M4RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M4RE), uint32_t) & BM_MPU_RGDAACn_M4RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M4RE field to a new value. +#define BW_MPU_RGDAACn_M4RE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M4RE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M5WE[26] (RW) + * + * Values: + * - 0 - Bus master 5 writes terminate with an access error and the write is not + * performed + * - 1 - Bus master 5 writes allowed + */ +//@{ +#define BP_MPU_RGDAACn_M5WE (26U) //!< Bit position for MPU_RGDAACn_M5WE. +#define BM_MPU_RGDAACn_M5WE (0x04000000U) //!< Bit mask for MPU_RGDAACn_M5WE. +#define BS_MPU_RGDAACn_M5WE (1U) //!< Bit field size in bits for MPU_RGDAACn_M5WE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M5WE field. +#define BR_MPU_RGDAACn_M5WE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M5WE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M5WE. +#define BF_MPU_RGDAACn_M5WE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M5WE), uint32_t) & BM_MPU_RGDAACn_M5WE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M5WE field to a new value. +#define BW_MPU_RGDAACn_M5WE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M5WE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M5RE[27] (RW) + * + * Values: + * - 0 - Bus master 5 reads terminate with an access error and the read is not + * performed + * - 1 - Bus master 5 reads allowed + */ +//@{ +#define BP_MPU_RGDAACn_M5RE (27U) //!< Bit position for MPU_RGDAACn_M5RE. +#define BM_MPU_RGDAACn_M5RE (0x08000000U) //!< Bit mask for MPU_RGDAACn_M5RE. +#define BS_MPU_RGDAACn_M5RE (1U) //!< Bit field size in bits for MPU_RGDAACn_M5RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M5RE field. +#define BR_MPU_RGDAACn_M5RE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M5RE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M5RE. +#define BF_MPU_RGDAACn_M5RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M5RE), uint32_t) & BM_MPU_RGDAACn_M5RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M5RE field to a new value. +#define BW_MPU_RGDAACn_M5RE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M5RE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M6WE[28] (RW) + * + * Values: + * - 0 - Bus master 6 writes terminate with an access error and the write is not + * performed + * - 1 - Bus master 6 writes allowed + */ +//@{ +#define BP_MPU_RGDAACn_M6WE (28U) //!< Bit position for MPU_RGDAACn_M6WE. +#define BM_MPU_RGDAACn_M6WE (0x10000000U) //!< Bit mask for MPU_RGDAACn_M6WE. +#define BS_MPU_RGDAACn_M6WE (1U) //!< Bit field size in bits for MPU_RGDAACn_M6WE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M6WE field. +#define BR_MPU_RGDAACn_M6WE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M6WE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M6WE. +#define BF_MPU_RGDAACn_M6WE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M6WE), uint32_t) & BM_MPU_RGDAACn_M6WE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M6WE field to a new value. +#define BW_MPU_RGDAACn_M6WE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M6WE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M6RE[29] (RW) + * + * Values: + * - 0 - Bus master 6 reads terminate with an access error and the read is not + * performed + * - 1 - Bus master 6 reads allowed + */ +//@{ +#define BP_MPU_RGDAACn_M6RE (29U) //!< Bit position for MPU_RGDAACn_M6RE. +#define BM_MPU_RGDAACn_M6RE (0x20000000U) //!< Bit mask for MPU_RGDAACn_M6RE. +#define BS_MPU_RGDAACn_M6RE (1U) //!< Bit field size in bits for MPU_RGDAACn_M6RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M6RE field. +#define BR_MPU_RGDAACn_M6RE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M6RE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M6RE. +#define BF_MPU_RGDAACn_M6RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M6RE), uint32_t) & BM_MPU_RGDAACn_M6RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M6RE field to a new value. +#define BW_MPU_RGDAACn_M6RE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M6RE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M7WE[30] (RW) + * + * Values: + * - 0 - Bus master 7 writes terminate with an access error and the write is not + * performed + * - 1 - Bus master 7 writes allowed + */ +//@{ +#define BP_MPU_RGDAACn_M7WE (30U) //!< Bit position for MPU_RGDAACn_M7WE. +#define BM_MPU_RGDAACn_M7WE (0x40000000U) //!< Bit mask for MPU_RGDAACn_M7WE. +#define BS_MPU_RGDAACn_M7WE (1U) //!< Bit field size in bits for MPU_RGDAACn_M7WE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M7WE field. +#define BR_MPU_RGDAACn_M7WE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M7WE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M7WE. +#define BF_MPU_RGDAACn_M7WE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M7WE), uint32_t) & BM_MPU_RGDAACn_M7WE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M7WE field to a new value. +#define BW_MPU_RGDAACn_M7WE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M7WE) = (v)) +#endif +//@} + +/*! + * @name Register MPU_RGDAACn, field M7RE[31] (RW) + * + * Values: + * - 0 - Bus master 7 reads terminate with an access error and the read is not + * performed + * - 1 - Bus master 7 reads allowed + */ +//@{ +#define BP_MPU_RGDAACn_M7RE (31U) //!< Bit position for MPU_RGDAACn_M7RE. +#define BM_MPU_RGDAACn_M7RE (0x80000000U) //!< Bit mask for MPU_RGDAACn_M7RE. +#define BS_MPU_RGDAACn_M7RE (1U) //!< Bit field size in bits for MPU_RGDAACn_M7RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the MPU_RGDAACn_M7RE field. +#define BR_MPU_RGDAACn_M7RE(n) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M7RE)) +#endif + +//! @brief Format value for bitfield MPU_RGDAACn_M7RE. +#define BF_MPU_RGDAACn_M7RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_MPU_RGDAACn_M7RE), uint32_t) & BM_MPU_RGDAACn_M7RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M7RE field to a new value. +#define BW_MPU_RGDAACn_M7RE(n, v) (BITBAND_ACCESS32(HW_MPU_RGDAACn_ADDR(n), BP_MPU_RGDAACn_M7RE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_mpu_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All MPU module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_mpu +{ + __IO hw_mpu_cesr_t CESR; //!< [0x0] Control/Error Status Register + uint8_t _reserved0[12]; + struct { + __I hw_mpu_earn_t EARn; //!< [0x10] Error Address Register, slave port n + __I hw_mpu_edrn_t EDRn; //!< [0x14] Error Detail Register, slave port n + } SP[5]; + uint8_t _reserved1[968]; + struct { + __IO hw_mpu_rgdn_word0_t RGDn_WORD0; //!< [0x400] Region Descriptor n, Word 0 + __IO hw_mpu_rgdn_word1_t RGDn_WORD1; //!< [0x404] Region Descriptor n, Word 1 + __IO hw_mpu_rgdn_word2_t RGDn_WORD2; //!< [0x408] Region Descriptor n, Word 2 + __IO hw_mpu_rgdn_word3_t RGDn_WORD3; //!< [0x40C] Region Descriptor n, Word 3 + } RGD[12]; + uint8_t _reserved2[832]; + __IO hw_mpu_rgdaacn_t RGDAACn[12]; //!< [0x800] Region Descriptor Alternate Access Control n +} hw_mpu_t; +#pragma pack() + +//! @brief Macro to access all MPU registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_MPU</code>. +#define HW_MPU (*(hw_mpu_t *) REGS_MPU_BASE) +#endif + +#endif // __HW_MPU_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_nv.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,958 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_NV_REGISTERS_H__ +#define __HW_NV_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 NV + * + * Flash configuration field + * + * Registers defined in this header file: + * - HW_NV_BACKKEY3 - Backdoor Comparison Key 3. + * - HW_NV_BACKKEY2 - Backdoor Comparison Key 2. + * - HW_NV_BACKKEY1 - Backdoor Comparison Key 1. + * - HW_NV_BACKKEY0 - Backdoor Comparison Key 0. + * - HW_NV_BACKKEY7 - Backdoor Comparison Key 7. + * - HW_NV_BACKKEY6 - Backdoor Comparison Key 6. + * - HW_NV_BACKKEY5 - Backdoor Comparison Key 5. + * - HW_NV_BACKKEY4 - Backdoor Comparison Key 4. + * - HW_NV_FPROT3 - Non-volatile P-Flash Protection 1 - Low Register + * - HW_NV_FPROT2 - Non-volatile P-Flash Protection 1 - High Register + * - HW_NV_FPROT1 - Non-volatile P-Flash Protection 0 - Low Register + * - HW_NV_FPROT0 - Non-volatile P-Flash Protection 0 - High Register + * - HW_NV_FSEC - Non-volatile Flash Security Register + * - HW_NV_FOPT - Non-volatile Flash Option Register + * - HW_NV_FEPROT - Non-volatile EERAM Protection Register + * - HW_NV_FDPROT - Non-volatile D-Flash Protection Register + * + * - hw_nv_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_NV_BASE +#define HW_NV_INSTANCE_COUNT (1U) //!< Number of instances of the NV module. +#define REGS_NV_BASE (0x400U) //!< Base address for FTFE_FlashConfig. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_BACKKEY3 - Backdoor Comparison Key 3. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_BACKKEY3 - Backdoor Comparison Key 3. (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_backkey3 +{ + uint8_t U; + struct _hw_nv_backkey3_bitfields + { + uint8_t KEY : 8; //!< [7:0] Backdoor Comparison Key. + } B; +} hw_nv_backkey3_t; +#endif + +/*! + * @name Constants and macros for entire NV_BACKKEY3 register + */ +//@{ +#define HW_NV_BACKKEY3_ADDR (REGS_NV_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_BACKKEY3 (*(__I hw_nv_backkey3_t *) HW_NV_BACKKEY3_ADDR) +#define HW_NV_BACKKEY3_RD() (HW_NV_BACKKEY3.U) +#endif +//@} + +/* + * Constants & macros for individual NV_BACKKEY3 bitfields + */ + +/*! + * @name Register NV_BACKKEY3, field KEY[7:0] (RO) + */ +//@{ +#define BP_NV_BACKKEY3_KEY (0U) //!< Bit position for NV_BACKKEY3_KEY. +#define BM_NV_BACKKEY3_KEY (0xFFU) //!< Bit mask for NV_BACKKEY3_KEY. +#define BS_NV_BACKKEY3_KEY (8U) //!< Bit field size in bits for NV_BACKKEY3_KEY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_BACKKEY3_KEY field. +#define BR_NV_BACKKEY3_KEY (HW_NV_BACKKEY3.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_BACKKEY2 - Backdoor Comparison Key 2. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_BACKKEY2 - Backdoor Comparison Key 2. (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_backkey2 +{ + uint8_t U; + struct _hw_nv_backkey2_bitfields + { + uint8_t KEY : 8; //!< [7:0] Backdoor Comparison Key. + } B; +} hw_nv_backkey2_t; +#endif + +/*! + * @name Constants and macros for entire NV_BACKKEY2 register + */ +//@{ +#define HW_NV_BACKKEY2_ADDR (REGS_NV_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_BACKKEY2 (*(__I hw_nv_backkey2_t *) HW_NV_BACKKEY2_ADDR) +#define HW_NV_BACKKEY2_RD() (HW_NV_BACKKEY2.U) +#endif +//@} + +/* + * Constants & macros for individual NV_BACKKEY2 bitfields + */ + +/*! + * @name Register NV_BACKKEY2, field KEY[7:0] (RO) + */ +//@{ +#define BP_NV_BACKKEY2_KEY (0U) //!< Bit position for NV_BACKKEY2_KEY. +#define BM_NV_BACKKEY2_KEY (0xFFU) //!< Bit mask for NV_BACKKEY2_KEY. +#define BS_NV_BACKKEY2_KEY (8U) //!< Bit field size in bits for NV_BACKKEY2_KEY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_BACKKEY2_KEY field. +#define BR_NV_BACKKEY2_KEY (HW_NV_BACKKEY2.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_BACKKEY1 - Backdoor Comparison Key 1. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_BACKKEY1 - Backdoor Comparison Key 1. (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_backkey1 +{ + uint8_t U; + struct _hw_nv_backkey1_bitfields + { + uint8_t KEY : 8; //!< [7:0] Backdoor Comparison Key. + } B; +} hw_nv_backkey1_t; +#endif + +/*! + * @name Constants and macros for entire NV_BACKKEY1 register + */ +//@{ +#define HW_NV_BACKKEY1_ADDR (REGS_NV_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_BACKKEY1 (*(__I hw_nv_backkey1_t *) HW_NV_BACKKEY1_ADDR) +#define HW_NV_BACKKEY1_RD() (HW_NV_BACKKEY1.U) +#endif +//@} + +/* + * Constants & macros for individual NV_BACKKEY1 bitfields + */ + +/*! + * @name Register NV_BACKKEY1, field KEY[7:0] (RO) + */ +//@{ +#define BP_NV_BACKKEY1_KEY (0U) //!< Bit position for NV_BACKKEY1_KEY. +#define BM_NV_BACKKEY1_KEY (0xFFU) //!< Bit mask for NV_BACKKEY1_KEY. +#define BS_NV_BACKKEY1_KEY (8U) //!< Bit field size in bits for NV_BACKKEY1_KEY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_BACKKEY1_KEY field. +#define BR_NV_BACKKEY1_KEY (HW_NV_BACKKEY1.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_BACKKEY0 - Backdoor Comparison Key 0. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_BACKKEY0 - Backdoor Comparison Key 0. (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_backkey0 +{ + uint8_t U; + struct _hw_nv_backkey0_bitfields + { + uint8_t KEY : 8; //!< [7:0] Backdoor Comparison Key. + } B; +} hw_nv_backkey0_t; +#endif + +/*! + * @name Constants and macros for entire NV_BACKKEY0 register + */ +//@{ +#define HW_NV_BACKKEY0_ADDR (REGS_NV_BASE + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_BACKKEY0 (*(__I hw_nv_backkey0_t *) HW_NV_BACKKEY0_ADDR) +#define HW_NV_BACKKEY0_RD() (HW_NV_BACKKEY0.U) +#endif +//@} + +/* + * Constants & macros for individual NV_BACKKEY0 bitfields + */ + +/*! + * @name Register NV_BACKKEY0, field KEY[7:0] (RO) + */ +//@{ +#define BP_NV_BACKKEY0_KEY (0U) //!< Bit position for NV_BACKKEY0_KEY. +#define BM_NV_BACKKEY0_KEY (0xFFU) //!< Bit mask for NV_BACKKEY0_KEY. +#define BS_NV_BACKKEY0_KEY (8U) //!< Bit field size in bits for NV_BACKKEY0_KEY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_BACKKEY0_KEY field. +#define BR_NV_BACKKEY0_KEY (HW_NV_BACKKEY0.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_BACKKEY7 - Backdoor Comparison Key 7. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_BACKKEY7 - Backdoor Comparison Key 7. (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_backkey7 +{ + uint8_t U; + struct _hw_nv_backkey7_bitfields + { + uint8_t KEY : 8; //!< [7:0] Backdoor Comparison Key. + } B; +} hw_nv_backkey7_t; +#endif + +/*! + * @name Constants and macros for entire NV_BACKKEY7 register + */ +//@{ +#define HW_NV_BACKKEY7_ADDR (REGS_NV_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_BACKKEY7 (*(__I hw_nv_backkey7_t *) HW_NV_BACKKEY7_ADDR) +#define HW_NV_BACKKEY7_RD() (HW_NV_BACKKEY7.U) +#endif +//@} + +/* + * Constants & macros for individual NV_BACKKEY7 bitfields + */ + +/*! + * @name Register NV_BACKKEY7, field KEY[7:0] (RO) + */ +//@{ +#define BP_NV_BACKKEY7_KEY (0U) //!< Bit position for NV_BACKKEY7_KEY. +#define BM_NV_BACKKEY7_KEY (0xFFU) //!< Bit mask for NV_BACKKEY7_KEY. +#define BS_NV_BACKKEY7_KEY (8U) //!< Bit field size in bits for NV_BACKKEY7_KEY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_BACKKEY7_KEY field. +#define BR_NV_BACKKEY7_KEY (HW_NV_BACKKEY7.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_BACKKEY6 - Backdoor Comparison Key 6. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_BACKKEY6 - Backdoor Comparison Key 6. (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_backkey6 +{ + uint8_t U; + struct _hw_nv_backkey6_bitfields + { + uint8_t KEY : 8; //!< [7:0] Backdoor Comparison Key. + } B; +} hw_nv_backkey6_t; +#endif + +/*! + * @name Constants and macros for entire NV_BACKKEY6 register + */ +//@{ +#define HW_NV_BACKKEY6_ADDR (REGS_NV_BASE + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_BACKKEY6 (*(__I hw_nv_backkey6_t *) HW_NV_BACKKEY6_ADDR) +#define HW_NV_BACKKEY6_RD() (HW_NV_BACKKEY6.U) +#endif +//@} + +/* + * Constants & macros for individual NV_BACKKEY6 bitfields + */ + +/*! + * @name Register NV_BACKKEY6, field KEY[7:0] (RO) + */ +//@{ +#define BP_NV_BACKKEY6_KEY (0U) //!< Bit position for NV_BACKKEY6_KEY. +#define BM_NV_BACKKEY6_KEY (0xFFU) //!< Bit mask for NV_BACKKEY6_KEY. +#define BS_NV_BACKKEY6_KEY (8U) //!< Bit field size in bits for NV_BACKKEY6_KEY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_BACKKEY6_KEY field. +#define BR_NV_BACKKEY6_KEY (HW_NV_BACKKEY6.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_BACKKEY5 - Backdoor Comparison Key 5. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_BACKKEY5 - Backdoor Comparison Key 5. (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_backkey5 +{ + uint8_t U; + struct _hw_nv_backkey5_bitfields + { + uint8_t KEY : 8; //!< [7:0] Backdoor Comparison Key. + } B; +} hw_nv_backkey5_t; +#endif + +/*! + * @name Constants and macros for entire NV_BACKKEY5 register + */ +//@{ +#define HW_NV_BACKKEY5_ADDR (REGS_NV_BASE + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_BACKKEY5 (*(__I hw_nv_backkey5_t *) HW_NV_BACKKEY5_ADDR) +#define HW_NV_BACKKEY5_RD() (HW_NV_BACKKEY5.U) +#endif +//@} + +/* + * Constants & macros for individual NV_BACKKEY5 bitfields + */ + +/*! + * @name Register NV_BACKKEY5, field KEY[7:0] (RO) + */ +//@{ +#define BP_NV_BACKKEY5_KEY (0U) //!< Bit position for NV_BACKKEY5_KEY. +#define BM_NV_BACKKEY5_KEY (0xFFU) //!< Bit mask for NV_BACKKEY5_KEY. +#define BS_NV_BACKKEY5_KEY (8U) //!< Bit field size in bits for NV_BACKKEY5_KEY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_BACKKEY5_KEY field. +#define BR_NV_BACKKEY5_KEY (HW_NV_BACKKEY5.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_BACKKEY4 - Backdoor Comparison Key 4. +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_BACKKEY4 - Backdoor Comparison Key 4. (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_backkey4 +{ + uint8_t U; + struct _hw_nv_backkey4_bitfields + { + uint8_t KEY : 8; //!< [7:0] Backdoor Comparison Key. + } B; +} hw_nv_backkey4_t; +#endif + +/*! + * @name Constants and macros for entire NV_BACKKEY4 register + */ +//@{ +#define HW_NV_BACKKEY4_ADDR (REGS_NV_BASE + 0x7U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_BACKKEY4 (*(__I hw_nv_backkey4_t *) HW_NV_BACKKEY4_ADDR) +#define HW_NV_BACKKEY4_RD() (HW_NV_BACKKEY4.U) +#endif +//@} + +/* + * Constants & macros for individual NV_BACKKEY4 bitfields + */ + +/*! + * @name Register NV_BACKKEY4, field KEY[7:0] (RO) + */ +//@{ +#define BP_NV_BACKKEY4_KEY (0U) //!< Bit position for NV_BACKKEY4_KEY. +#define BM_NV_BACKKEY4_KEY (0xFFU) //!< Bit mask for NV_BACKKEY4_KEY. +#define BS_NV_BACKKEY4_KEY (8U) //!< Bit field size in bits for NV_BACKKEY4_KEY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_BACKKEY4_KEY field. +#define BR_NV_BACKKEY4_KEY (HW_NV_BACKKEY4.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_FPROT3 - Non-volatile P-Flash Protection 1 - Low Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_FPROT3 - Non-volatile P-Flash Protection 1 - Low Register (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_fprot3 +{ + uint8_t U; + struct _hw_nv_fprot3_bitfields + { + uint8_t PROT : 8; //!< [7:0] P-Flash Region Protect + } B; +} hw_nv_fprot3_t; +#endif + +/*! + * @name Constants and macros for entire NV_FPROT3 register + */ +//@{ +#define HW_NV_FPROT3_ADDR (REGS_NV_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_FPROT3 (*(__I hw_nv_fprot3_t *) HW_NV_FPROT3_ADDR) +#define HW_NV_FPROT3_RD() (HW_NV_FPROT3.U) +#endif +//@} + +/* + * Constants & macros for individual NV_FPROT3 bitfields + */ + +/*! + * @name Register NV_FPROT3, field PROT[7:0] (RO) + */ +//@{ +#define BP_NV_FPROT3_PROT (0U) //!< Bit position for NV_FPROT3_PROT. +#define BM_NV_FPROT3_PROT (0xFFU) //!< Bit mask for NV_FPROT3_PROT. +#define BS_NV_FPROT3_PROT (8U) //!< Bit field size in bits for NV_FPROT3_PROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FPROT3_PROT field. +#define BR_NV_FPROT3_PROT (HW_NV_FPROT3.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_FPROT2 - Non-volatile P-Flash Protection 1 - High Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_FPROT2 - Non-volatile P-Flash Protection 1 - High Register (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_fprot2 +{ + uint8_t U; + struct _hw_nv_fprot2_bitfields + { + uint8_t PROT : 8; //!< [7:0] P-Flash Region Protect + } B; +} hw_nv_fprot2_t; +#endif + +/*! + * @name Constants and macros for entire NV_FPROT2 register + */ +//@{ +#define HW_NV_FPROT2_ADDR (REGS_NV_BASE + 0x9U) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_FPROT2 (*(__I hw_nv_fprot2_t *) HW_NV_FPROT2_ADDR) +#define HW_NV_FPROT2_RD() (HW_NV_FPROT2.U) +#endif +//@} + +/* + * Constants & macros for individual NV_FPROT2 bitfields + */ + +/*! + * @name Register NV_FPROT2, field PROT[7:0] (RO) + */ +//@{ +#define BP_NV_FPROT2_PROT (0U) //!< Bit position for NV_FPROT2_PROT. +#define BM_NV_FPROT2_PROT (0xFFU) //!< Bit mask for NV_FPROT2_PROT. +#define BS_NV_FPROT2_PROT (8U) //!< Bit field size in bits for NV_FPROT2_PROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FPROT2_PROT field. +#define BR_NV_FPROT2_PROT (HW_NV_FPROT2.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_FPROT1 - Non-volatile P-Flash Protection 0 - Low Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_FPROT1 - Non-volatile P-Flash Protection 0 - Low Register (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_fprot1 +{ + uint8_t U; + struct _hw_nv_fprot1_bitfields + { + uint8_t PROT : 8; //!< [7:0] P-Flash Region Protect + } B; +} hw_nv_fprot1_t; +#endif + +/*! + * @name Constants and macros for entire NV_FPROT1 register + */ +//@{ +#define HW_NV_FPROT1_ADDR (REGS_NV_BASE + 0xAU) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_FPROT1 (*(__I hw_nv_fprot1_t *) HW_NV_FPROT1_ADDR) +#define HW_NV_FPROT1_RD() (HW_NV_FPROT1.U) +#endif +//@} + +/* + * Constants & macros for individual NV_FPROT1 bitfields + */ + +/*! + * @name Register NV_FPROT1, field PROT[7:0] (RO) + */ +//@{ +#define BP_NV_FPROT1_PROT (0U) //!< Bit position for NV_FPROT1_PROT. +#define BM_NV_FPROT1_PROT (0xFFU) //!< Bit mask for NV_FPROT1_PROT. +#define BS_NV_FPROT1_PROT (8U) //!< Bit field size in bits for NV_FPROT1_PROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FPROT1_PROT field. +#define BR_NV_FPROT1_PROT (HW_NV_FPROT1.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_FPROT0 - Non-volatile P-Flash Protection 0 - High Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_FPROT0 - Non-volatile P-Flash Protection 0 - High Register (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_fprot0 +{ + uint8_t U; + struct _hw_nv_fprot0_bitfields + { + uint8_t PROT : 8; //!< [7:0] P-Flash Region Protect + } B; +} hw_nv_fprot0_t; +#endif + +/*! + * @name Constants and macros for entire NV_FPROT0 register + */ +//@{ +#define HW_NV_FPROT0_ADDR (REGS_NV_BASE + 0xBU) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_FPROT0 (*(__I hw_nv_fprot0_t *) HW_NV_FPROT0_ADDR) +#define HW_NV_FPROT0_RD() (HW_NV_FPROT0.U) +#endif +//@} + +/* + * Constants & macros for individual NV_FPROT0 bitfields + */ + +/*! + * @name Register NV_FPROT0, field PROT[7:0] (RO) + */ +//@{ +#define BP_NV_FPROT0_PROT (0U) //!< Bit position for NV_FPROT0_PROT. +#define BM_NV_FPROT0_PROT (0xFFU) //!< Bit mask for NV_FPROT0_PROT. +#define BS_NV_FPROT0_PROT (8U) //!< Bit field size in bits for NV_FPROT0_PROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FPROT0_PROT field. +#define BR_NV_FPROT0_PROT (HW_NV_FPROT0.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_FSEC - Non-volatile Flash Security Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_FSEC - Non-volatile Flash Security Register (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_fsec +{ + uint8_t U; + struct _hw_nv_fsec_bitfields + { + uint8_t SEC : 2; //!< [1:0] Flash Security + uint8_t FSLACC : 2; //!< [3:2] Freescale Failure Analysis Access Code + uint8_t MEEN : 2; //!< [5:4] + uint8_t KEYEN : 2; //!< [7:6] Backdoor Key Security Enable + } B; +} hw_nv_fsec_t; +#endif + +/*! + * @name Constants and macros for entire NV_FSEC register + */ +//@{ +#define HW_NV_FSEC_ADDR (REGS_NV_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_FSEC (*(__I hw_nv_fsec_t *) HW_NV_FSEC_ADDR) +#define HW_NV_FSEC_RD() (HW_NV_FSEC.U) +#endif +//@} + +/* + * Constants & macros for individual NV_FSEC bitfields + */ + +/*! + * @name Register NV_FSEC, field SEC[1:0] (RO) + */ +//@{ +#define BP_NV_FSEC_SEC (0U) //!< Bit position for NV_FSEC_SEC. +#define BM_NV_FSEC_SEC (0x03U) //!< Bit mask for NV_FSEC_SEC. +#define BS_NV_FSEC_SEC (2U) //!< Bit field size in bits for NV_FSEC_SEC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FSEC_SEC field. +#define BR_NV_FSEC_SEC (HW_NV_FSEC.B.SEC) +#endif +//@} + +/*! + * @name Register NV_FSEC, field FSLACC[3:2] (RO) + */ +//@{ +#define BP_NV_FSEC_FSLACC (2U) //!< Bit position for NV_FSEC_FSLACC. +#define BM_NV_FSEC_FSLACC (0x0CU) //!< Bit mask for NV_FSEC_FSLACC. +#define BS_NV_FSEC_FSLACC (2U) //!< Bit field size in bits for NV_FSEC_FSLACC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FSEC_FSLACC field. +#define BR_NV_FSEC_FSLACC (HW_NV_FSEC.B.FSLACC) +#endif +//@} + +/*! + * @name Register NV_FSEC, field MEEN[5:4] (RO) + */ +//@{ +#define BP_NV_FSEC_MEEN (4U) //!< Bit position for NV_FSEC_MEEN. +#define BM_NV_FSEC_MEEN (0x30U) //!< Bit mask for NV_FSEC_MEEN. +#define BS_NV_FSEC_MEEN (2U) //!< Bit field size in bits for NV_FSEC_MEEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FSEC_MEEN field. +#define BR_NV_FSEC_MEEN (HW_NV_FSEC.B.MEEN) +#endif +//@} + +/*! + * @name Register NV_FSEC, field KEYEN[7:6] (RO) + */ +//@{ +#define BP_NV_FSEC_KEYEN (6U) //!< Bit position for NV_FSEC_KEYEN. +#define BM_NV_FSEC_KEYEN (0xC0U) //!< Bit mask for NV_FSEC_KEYEN. +#define BS_NV_FSEC_KEYEN (2U) //!< Bit field size in bits for NV_FSEC_KEYEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FSEC_KEYEN field. +#define BR_NV_FSEC_KEYEN (HW_NV_FSEC.B.KEYEN) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_FOPT - Non-volatile Flash Option Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_FOPT - Non-volatile Flash Option Register (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_fopt +{ + uint8_t U; + struct _hw_nv_fopt_bitfields + { + uint8_t LPBOOT : 1; //!< [0] + uint8_t EZPORT_DIS : 1; //!< [1] + uint8_t RESERVED0 : 6; //!< [7:2] + } B; +} hw_nv_fopt_t; +#endif + +/*! + * @name Constants and macros for entire NV_FOPT register + */ +//@{ +#define HW_NV_FOPT_ADDR (REGS_NV_BASE + 0xDU) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_FOPT (*(__I hw_nv_fopt_t *) HW_NV_FOPT_ADDR) +#define HW_NV_FOPT_RD() (HW_NV_FOPT.U) +#endif +//@} + +/* + * Constants & macros for individual NV_FOPT bitfields + */ + +/*! + * @name Register NV_FOPT, field LPBOOT[0] (RO) + */ +//@{ +#define BP_NV_FOPT_LPBOOT (0U) //!< Bit position for NV_FOPT_LPBOOT. +#define BM_NV_FOPT_LPBOOT (0x01U) //!< Bit mask for NV_FOPT_LPBOOT. +#define BS_NV_FOPT_LPBOOT (1U) //!< Bit field size in bits for NV_FOPT_LPBOOT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FOPT_LPBOOT field. +#define BR_NV_FOPT_LPBOOT (BITBAND_ACCESS8(HW_NV_FOPT_ADDR, BP_NV_FOPT_LPBOOT)) +#endif +//@} + +/*! + * @name Register NV_FOPT, field EZPORT_DIS[1] (RO) + */ +//@{ +#define BP_NV_FOPT_EZPORT_DIS (1U) //!< Bit position for NV_FOPT_EZPORT_DIS. +#define BM_NV_FOPT_EZPORT_DIS (0x02U) //!< Bit mask for NV_FOPT_EZPORT_DIS. +#define BS_NV_FOPT_EZPORT_DIS (1U) //!< Bit field size in bits for NV_FOPT_EZPORT_DIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FOPT_EZPORT_DIS field. +#define BR_NV_FOPT_EZPORT_DIS (BITBAND_ACCESS8(HW_NV_FOPT_ADDR, BP_NV_FOPT_EZPORT_DIS)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_FEPROT - Non-volatile EERAM Protection Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_FEPROT - Non-volatile EERAM Protection Register (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_feprot +{ + uint8_t U; + struct _hw_nv_feprot_bitfields + { + uint8_t EPROT : 8; //!< [7:0] + } B; +} hw_nv_feprot_t; +#endif + +/*! + * @name Constants and macros for entire NV_FEPROT register + */ +//@{ +#define HW_NV_FEPROT_ADDR (REGS_NV_BASE + 0xEU) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_FEPROT (*(__I hw_nv_feprot_t *) HW_NV_FEPROT_ADDR) +#define HW_NV_FEPROT_RD() (HW_NV_FEPROT.U) +#endif +//@} + +/* + * Constants & macros for individual NV_FEPROT bitfields + */ + +/*! + * @name Register NV_FEPROT, field EPROT[7:0] (RO) + */ +//@{ +#define BP_NV_FEPROT_EPROT (0U) //!< Bit position for NV_FEPROT_EPROT. +#define BM_NV_FEPROT_EPROT (0xFFU) //!< Bit mask for NV_FEPROT_EPROT. +#define BS_NV_FEPROT_EPROT (8U) //!< Bit field size in bits for NV_FEPROT_EPROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FEPROT_EPROT field. +#define BR_NV_FEPROT_EPROT (HW_NV_FEPROT.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_NV_FDPROT - Non-volatile D-Flash Protection Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_NV_FDPROT - Non-volatile D-Flash Protection Register (RO) + * + * Reset value: 0xFFU + */ +typedef union _hw_nv_fdprot +{ + uint8_t U; + struct _hw_nv_fdprot_bitfields + { + uint8_t DPROT : 8; //!< [7:0] D-Flash Region Protect + } B; +} hw_nv_fdprot_t; +#endif + +/*! + * @name Constants and macros for entire NV_FDPROT register + */ +//@{ +#define HW_NV_FDPROT_ADDR (REGS_NV_BASE + 0xFU) + +#ifndef __LANGUAGE_ASM__ +#define HW_NV_FDPROT (*(__I hw_nv_fdprot_t *) HW_NV_FDPROT_ADDR) +#define HW_NV_FDPROT_RD() (HW_NV_FDPROT.U) +#endif +//@} + +/* + * Constants & macros for individual NV_FDPROT bitfields + */ + +/*! + * @name Register NV_FDPROT, field DPROT[7:0] (RO) + */ +//@{ +#define BP_NV_FDPROT_DPROT (0U) //!< Bit position for NV_FDPROT_DPROT. +#define BM_NV_FDPROT_DPROT (0xFFU) //!< Bit mask for NV_FDPROT_DPROT. +#define BS_NV_FDPROT_DPROT (8U) //!< Bit field size in bits for NV_FDPROT_DPROT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the NV_FDPROT_DPROT field. +#define BR_NV_FDPROT_DPROT (HW_NV_FDPROT.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_nv_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All NV module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_nv +{ + __I hw_nv_backkey3_t BACKKEY3; //!< [0x0] Backdoor Comparison Key 3. + __I hw_nv_backkey2_t BACKKEY2; //!< [0x1] Backdoor Comparison Key 2. + __I hw_nv_backkey1_t BACKKEY1; //!< [0x2] Backdoor Comparison Key 1. + __I hw_nv_backkey0_t BACKKEY0; //!< [0x3] Backdoor Comparison Key 0. + __I hw_nv_backkey7_t BACKKEY7; //!< [0x4] Backdoor Comparison Key 7. + __I hw_nv_backkey6_t BACKKEY6; //!< [0x5] Backdoor Comparison Key 6. + __I hw_nv_backkey5_t BACKKEY5; //!< [0x6] Backdoor Comparison Key 5. + __I hw_nv_backkey4_t BACKKEY4; //!< [0x7] Backdoor Comparison Key 4. + __I hw_nv_fprot3_t FPROT3; //!< [0x8] Non-volatile P-Flash Protection 1 - Low Register + __I hw_nv_fprot2_t FPROT2; //!< [0x9] Non-volatile P-Flash Protection 1 - High Register + __I hw_nv_fprot1_t FPROT1; //!< [0xA] Non-volatile P-Flash Protection 0 - Low Register + __I hw_nv_fprot0_t FPROT0; //!< [0xB] Non-volatile P-Flash Protection 0 - High Register + __I hw_nv_fsec_t FSEC; //!< [0xC] Non-volatile Flash Security Register + __I hw_nv_fopt_t FOPT; //!< [0xD] Non-volatile Flash Option Register + __I hw_nv_feprot_t FEPROT; //!< [0xE] Non-volatile EERAM Protection Register + __I hw_nv_fdprot_t FDPROT; //!< [0xF] Non-volatile D-Flash Protection Register +} hw_nv_t; +#pragma pack() + +//! @brief Macro to access all NV registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_NV</code>. +#define HW_NV (*(hw_nv_t *) REGS_NV_BASE) +#endif + +#endif // __HW_NV_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_osc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,302 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_OSC_REGISTERS_H__ +#define __HW_OSC_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 OSC + * + * Oscillator + * + * Registers defined in this header file: + * - HW_OSC_CR - OSC Control Register + * + * - hw_osc_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_OSC_BASE +#define HW_OSC_INSTANCE_COUNT (1U) //!< Number of instances of the OSC module. +#define HW_OSC0 (0U) //!< Instance number for OSC. +#define REGS_OSC0_BASE (0x40065000U) //!< Base address for OSC. + +//! @brief Table of base addresses for OSC instances. +static const uint32_t __g_regs_OSC_base_addresses[] = { + REGS_OSC0_BASE, + }; + +//! @brief Get the base address of OSC by instance number. +//! @param x OSC instance number, from 0 through 0. +#define REGS_OSC_BASE(x) (__g_regs_OSC_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of OSC. +#define REGS_OSC_INSTANCE(b) ((b) == REGS_OSC0_BASE ? HW_OSC0 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_OSC_CR - OSC Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_OSC_CR - OSC Control Register (RW) + * + * Reset value: 0x00U + * + * After OSC is enabled and starts generating the clocks, the configurations + * such as low power and frequency range, must not be changed. + */ +typedef union _hw_osc_cr +{ + uint8_t U; + struct _hw_osc_cr_bitfields + { + uint8_t SC16P : 1; //!< [0] Oscillator 16 pF Capacitor Load Configure + uint8_t SC8P : 1; //!< [1] Oscillator 8 pF Capacitor Load Configure + uint8_t SC4P : 1; //!< [2] Oscillator 4 pF Capacitor Load Configure + uint8_t SC2P : 1; //!< [3] Oscillator 2 pF Capacitor Load Configure + uint8_t RESERVED0 : 1; //!< [4] + uint8_t EREFSTEN : 1; //!< [5] External Reference Stop Enable + uint8_t RESERVED1 : 1; //!< [6] + uint8_t ERCLKEN : 1; //!< [7] External Reference Enable + } B; +} hw_osc_cr_t; +#endif + +/*! + * @name Constants and macros for entire OSC_CR register + */ +//@{ +#define HW_OSC_CR_ADDR(x) (REGS_OSC_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_OSC_CR(x) (*(__IO hw_osc_cr_t *) HW_OSC_CR_ADDR(x)) +#define HW_OSC_CR_RD(x) (HW_OSC_CR(x).U) +#define HW_OSC_CR_WR(x, v) (HW_OSC_CR(x).U = (v)) +#define HW_OSC_CR_SET(x, v) (HW_OSC_CR_WR(x, HW_OSC_CR_RD(x) | (v))) +#define HW_OSC_CR_CLR(x, v) (HW_OSC_CR_WR(x, HW_OSC_CR_RD(x) & ~(v))) +#define HW_OSC_CR_TOG(x, v) (HW_OSC_CR_WR(x, HW_OSC_CR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual OSC_CR bitfields + */ + +/*! + * @name Register OSC_CR, field SC16P[0] (RW) + * + * Configures the oscillator load. + * + * Values: + * - 0 - Disable the selection. + * - 1 - Add 16 pF capacitor to the oscillator load. + */ +//@{ +#define BP_OSC_CR_SC16P (0U) //!< Bit position for OSC_CR_SC16P. +#define BM_OSC_CR_SC16P (0x01U) //!< Bit mask for OSC_CR_SC16P. +#define BS_OSC_CR_SC16P (1U) //!< Bit field size in bits for OSC_CR_SC16P. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the OSC_CR_SC16P field. +#define BR_OSC_CR_SC16P(x) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_SC16P)) +#endif + +//! @brief Format value for bitfield OSC_CR_SC16P. +#define BF_OSC_CR_SC16P(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_OSC_CR_SC16P), uint8_t) & BM_OSC_CR_SC16P) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SC16P field to a new value. +#define BW_OSC_CR_SC16P(x, v) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_SC16P) = (v)) +#endif +//@} + +/*! + * @name Register OSC_CR, field SC8P[1] (RW) + * + * Configures the oscillator load. + * + * Values: + * - 0 - Disable the selection. + * - 1 - Add 8 pF capacitor to the oscillator load. + */ +//@{ +#define BP_OSC_CR_SC8P (1U) //!< Bit position for OSC_CR_SC8P. +#define BM_OSC_CR_SC8P (0x02U) //!< Bit mask for OSC_CR_SC8P. +#define BS_OSC_CR_SC8P (1U) //!< Bit field size in bits for OSC_CR_SC8P. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the OSC_CR_SC8P field. +#define BR_OSC_CR_SC8P(x) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_SC8P)) +#endif + +//! @brief Format value for bitfield OSC_CR_SC8P. +#define BF_OSC_CR_SC8P(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_OSC_CR_SC8P), uint8_t) & BM_OSC_CR_SC8P) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SC8P field to a new value. +#define BW_OSC_CR_SC8P(x, v) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_SC8P) = (v)) +#endif +//@} + +/*! + * @name Register OSC_CR, field SC4P[2] (RW) + * + * Configures the oscillator load. + * + * Values: + * - 0 - Disable the selection. + * - 1 - Add 4 pF capacitor to the oscillator load. + */ +//@{ +#define BP_OSC_CR_SC4P (2U) //!< Bit position for OSC_CR_SC4P. +#define BM_OSC_CR_SC4P (0x04U) //!< Bit mask for OSC_CR_SC4P. +#define BS_OSC_CR_SC4P (1U) //!< Bit field size in bits for OSC_CR_SC4P. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the OSC_CR_SC4P field. +#define BR_OSC_CR_SC4P(x) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_SC4P)) +#endif + +//! @brief Format value for bitfield OSC_CR_SC4P. +#define BF_OSC_CR_SC4P(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_OSC_CR_SC4P), uint8_t) & BM_OSC_CR_SC4P) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SC4P field to a new value. +#define BW_OSC_CR_SC4P(x, v) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_SC4P) = (v)) +#endif +//@} + +/*! + * @name Register OSC_CR, field SC2P[3] (RW) + * + * Configures the oscillator load. + * + * Values: + * - 0 - Disable the selection. + * - 1 - Add 2 pF capacitor to the oscillator load. + */ +//@{ +#define BP_OSC_CR_SC2P (3U) //!< Bit position for OSC_CR_SC2P. +#define BM_OSC_CR_SC2P (0x08U) //!< Bit mask for OSC_CR_SC2P. +#define BS_OSC_CR_SC2P (1U) //!< Bit field size in bits for OSC_CR_SC2P. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the OSC_CR_SC2P field. +#define BR_OSC_CR_SC2P(x) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_SC2P)) +#endif + +//! @brief Format value for bitfield OSC_CR_SC2P. +#define BF_OSC_CR_SC2P(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_OSC_CR_SC2P), uint8_t) & BM_OSC_CR_SC2P) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SC2P field to a new value. +#define BW_OSC_CR_SC2P(x, v) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_SC2P) = (v)) +#endif +//@} + +/*! + * @name Register OSC_CR, field EREFSTEN[5] (RW) + * + * Controls whether or not the external reference clock (OSCERCLK) remains + * enabled when MCU enters Stop mode. + * + * Values: + * - 0 - External reference clock is disabled in Stop mode. + * - 1 - External reference clock stays enabled in Stop mode if ERCLKEN is set + * before entering Stop mode. + */ +//@{ +#define BP_OSC_CR_EREFSTEN (5U) //!< Bit position for OSC_CR_EREFSTEN. +#define BM_OSC_CR_EREFSTEN (0x20U) //!< Bit mask for OSC_CR_EREFSTEN. +#define BS_OSC_CR_EREFSTEN (1U) //!< Bit field size in bits for OSC_CR_EREFSTEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the OSC_CR_EREFSTEN field. +#define BR_OSC_CR_EREFSTEN(x) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_EREFSTEN)) +#endif + +//! @brief Format value for bitfield OSC_CR_EREFSTEN. +#define BF_OSC_CR_EREFSTEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_OSC_CR_EREFSTEN), uint8_t) & BM_OSC_CR_EREFSTEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EREFSTEN field to a new value. +#define BW_OSC_CR_EREFSTEN(x, v) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_EREFSTEN) = (v)) +#endif +//@} + +/*! + * @name Register OSC_CR, field ERCLKEN[7] (RW) + * + * Enables external reference clock (OSCERCLK). + * + * Values: + * - 0 - External reference clock is inactive. + * - 1 - External reference clock is enabled. + */ +//@{ +#define BP_OSC_CR_ERCLKEN (7U) //!< Bit position for OSC_CR_ERCLKEN. +#define BM_OSC_CR_ERCLKEN (0x80U) //!< Bit mask for OSC_CR_ERCLKEN. +#define BS_OSC_CR_ERCLKEN (1U) //!< Bit field size in bits for OSC_CR_ERCLKEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the OSC_CR_ERCLKEN field. +#define BR_OSC_CR_ERCLKEN(x) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_ERCLKEN)) +#endif + +//! @brief Format value for bitfield OSC_CR_ERCLKEN. +#define BF_OSC_CR_ERCLKEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_OSC_CR_ERCLKEN), uint8_t) & BM_OSC_CR_ERCLKEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERCLKEN field to a new value. +#define BW_OSC_CR_ERCLKEN(x, v) (BITBAND_ACCESS8(HW_OSC_CR_ADDR(x), BP_OSC_CR_ERCLKEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_osc_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All OSC module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_osc +{ + __IO hw_osc_cr_t CR; //!< [0x0] OSC Control Register +} hw_osc_t; +#pragma pack() + +//! @brief Macro to access all OSC registers. +//! @param x OSC instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_OSC(0)</code>. +#define HW_OSC(x) (*(hw_osc_t *) REGS_OSC_BASE(x)) +#endif + +#endif // __HW_OSC_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_pdb.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1433 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_PDB_REGISTERS_H__ +#define __HW_PDB_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 PDB + * + * Programmable Delay Block + * + * Registers defined in this header file: + * - HW_PDB_SC - Status and Control register + * - HW_PDB_MOD - Modulus register + * - HW_PDB_CNT - Counter register + * - HW_PDB_IDLY - Interrupt Delay register + * - HW_PDB_CHnC1 - Channel n Control register 1 + * - HW_PDB_CHnS - Channel n Status register + * - HW_PDB_CHnDLY0 - Channel n Delay 0 register + * - HW_PDB_CHnDLY1 - Channel n Delay 1 register + * - HW_PDB_DACINTCn - DAC Interval Trigger n Control register + * - HW_PDB_DACINTn - DAC Interval n register + * - HW_PDB_POEN - Pulse-Out n Enable register + * - HW_PDB_POnDLY - Pulse-Out n Delay register + * + * - hw_pdb_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_PDB_BASE +#define HW_PDB_INSTANCE_COUNT (1U) //!< Number of instances of the PDB module. +#define REGS_PDB_BASE (0x40036000U) //!< Base address for PDB0. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PDB_SC - Status and Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_SC - Status and Control register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_pdb_sc +{ + uint32_t U; + struct _hw_pdb_sc_bitfields + { + uint32_t LDOK : 1; //!< [0] Load OK + uint32_t CONT : 1; //!< [1] Continuous Mode Enable + uint32_t MULT : 2; //!< [3:2] Multiplication Factor Select for + //! Prescaler + uint32_t RESERVED0 : 1; //!< [4] + uint32_t PDBIE : 1; //!< [5] PDB Interrupt Enable + uint32_t PDBIF : 1; //!< [6] PDB Interrupt Flag + uint32_t PDBEN : 1; //!< [7] PDB Enable + uint32_t TRGSEL : 4; //!< [11:8] Trigger Input Source Select + uint32_t PRESCALER : 3; //!< [14:12] Prescaler Divider Select + uint32_t DMAEN : 1; //!< [15] DMA Enable + uint32_t SWTRIG : 1; //!< [16] Software Trigger + uint32_t PDBEIE : 1; //!< [17] PDB Sequence Error Interrupt Enable + uint32_t LDMOD : 2; //!< [19:18] Load Mode Select + uint32_t RESERVED1 : 12; //!< [31:20] + } B; +} hw_pdb_sc_t; +#endif + +/*! + * @name Constants and macros for entire PDB_SC register + */ +//@{ +#define HW_PDB_SC_ADDR (REGS_PDB_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_SC (*(__IO hw_pdb_sc_t *) HW_PDB_SC_ADDR) +#define HW_PDB_SC_RD() (HW_PDB_SC.U) +#define HW_PDB_SC_WR(v) (HW_PDB_SC.U = (v)) +#define HW_PDB_SC_SET(v) (HW_PDB_SC_WR(HW_PDB_SC_RD() | (v))) +#define HW_PDB_SC_CLR(v) (HW_PDB_SC_WR(HW_PDB_SC_RD() & ~(v))) +#define HW_PDB_SC_TOG(v) (HW_PDB_SC_WR(HW_PDB_SC_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_SC bitfields + */ + +/*! + * @name Register PDB_SC, field LDOK[0] (RW) + * + * Writing 1 to this bit updates the internal registers of MOD, IDLY, CHnDLYm, + * DACINTx,and POyDLY with the values written to their buffers. The MOD, IDLY, + * CHnDLYm, DACINTx, and POyDLY will take effect according to the LDMOD. After 1 is + * written to the LDOK field, the values in the buffers of above registers are + * not effective and the buffers cannot be written until the values in buffers are + * loaded into their internal registers. LDOK can be written only when PDBEN is + * set or it can be written at the same time with PDBEN being written to 1. It is + * automatically cleared when the values in buffers are loaded into the internal + * registers or the PDBEN is cleared. Writing 0 to it has no effect. + */ +//@{ +#define BP_PDB_SC_LDOK (0U) //!< Bit position for PDB_SC_LDOK. +#define BM_PDB_SC_LDOK (0x00000001U) //!< Bit mask for PDB_SC_LDOK. +#define BS_PDB_SC_LDOK (1U) //!< Bit field size in bits for PDB_SC_LDOK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_LDOK field. +#define BR_PDB_SC_LDOK (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_LDOK)) +#endif + +//! @brief Format value for bitfield PDB_SC_LDOK. +#define BF_PDB_SC_LDOK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_LDOK), uint32_t) & BM_PDB_SC_LDOK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LDOK field to a new value. +#define BW_PDB_SC_LDOK(v) (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_LDOK) = (v)) +#endif +//@} + +/*! + * @name Register PDB_SC, field CONT[1] (RW) + * + * Enables the PDB operation in Continuous mode. + * + * Values: + * - 0 - PDB operation in One-Shot mode + * - 1 - PDB operation in Continuous mode + */ +//@{ +#define BP_PDB_SC_CONT (1U) //!< Bit position for PDB_SC_CONT. +#define BM_PDB_SC_CONT (0x00000002U) //!< Bit mask for PDB_SC_CONT. +#define BS_PDB_SC_CONT (1U) //!< Bit field size in bits for PDB_SC_CONT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_CONT field. +#define BR_PDB_SC_CONT (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_CONT)) +#endif + +//! @brief Format value for bitfield PDB_SC_CONT. +#define BF_PDB_SC_CONT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_CONT), uint32_t) & BM_PDB_SC_CONT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CONT field to a new value. +#define BW_PDB_SC_CONT(v) (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_CONT) = (v)) +#endif +//@} + +/*! + * @name Register PDB_SC, field MULT[3:2] (RW) + * + * Selects the multiplication factor of the prescaler divider for the counter + * clock. + * + * Values: + * - 00 - Multiplication factor is 1. + * - 01 - Multiplication factor is 10. + * - 10 - Multiplication factor is 20. + * - 11 - Multiplication factor is 40. + */ +//@{ +#define BP_PDB_SC_MULT (2U) //!< Bit position for PDB_SC_MULT. +#define BM_PDB_SC_MULT (0x0000000CU) //!< Bit mask for PDB_SC_MULT. +#define BS_PDB_SC_MULT (2U) //!< Bit field size in bits for PDB_SC_MULT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_MULT field. +#define BR_PDB_SC_MULT (HW_PDB_SC.B.MULT) +#endif + +//! @brief Format value for bitfield PDB_SC_MULT. +#define BF_PDB_SC_MULT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_MULT), uint32_t) & BM_PDB_SC_MULT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MULT field to a new value. +#define BW_PDB_SC_MULT(v) (HW_PDB_SC_WR((HW_PDB_SC_RD() & ~BM_PDB_SC_MULT) | BF_PDB_SC_MULT(v))) +#endif +//@} + +/*! + * @name Register PDB_SC, field PDBIE[5] (RW) + * + * Enables the PDB interrupt. When this field is set and DMAEN is cleared, PDBIF + * generates a PDB interrupt. + * + * Values: + * - 0 - PDB interrupt disabled. + * - 1 - PDB interrupt enabled. + */ +//@{ +#define BP_PDB_SC_PDBIE (5U) //!< Bit position for PDB_SC_PDBIE. +#define BM_PDB_SC_PDBIE (0x00000020U) //!< Bit mask for PDB_SC_PDBIE. +#define BS_PDB_SC_PDBIE (1U) //!< Bit field size in bits for PDB_SC_PDBIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_PDBIE field. +#define BR_PDB_SC_PDBIE (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_PDBIE)) +#endif + +//! @brief Format value for bitfield PDB_SC_PDBIE. +#define BF_PDB_SC_PDBIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_PDBIE), uint32_t) & BM_PDB_SC_PDBIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PDBIE field to a new value. +#define BW_PDB_SC_PDBIE(v) (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_PDBIE) = (v)) +#endif +//@} + +/*! + * @name Register PDB_SC, field PDBIF[6] (RW) + * + * This field is set when the counter value is equal to the IDLY register. + * Writing zero clears this field. + */ +//@{ +#define BP_PDB_SC_PDBIF (6U) //!< Bit position for PDB_SC_PDBIF. +#define BM_PDB_SC_PDBIF (0x00000040U) //!< Bit mask for PDB_SC_PDBIF. +#define BS_PDB_SC_PDBIF (1U) //!< Bit field size in bits for PDB_SC_PDBIF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_PDBIF field. +#define BR_PDB_SC_PDBIF (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_PDBIF)) +#endif + +//! @brief Format value for bitfield PDB_SC_PDBIF. +#define BF_PDB_SC_PDBIF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_PDBIF), uint32_t) & BM_PDB_SC_PDBIF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PDBIF field to a new value. +#define BW_PDB_SC_PDBIF(v) (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_PDBIF) = (v)) +#endif +//@} + +/*! + * @name Register PDB_SC, field PDBEN[7] (RW) + * + * Values: + * - 0 - PDB disabled. Counter is off. + * - 1 - PDB enabled. + */ +//@{ +#define BP_PDB_SC_PDBEN (7U) //!< Bit position for PDB_SC_PDBEN. +#define BM_PDB_SC_PDBEN (0x00000080U) //!< Bit mask for PDB_SC_PDBEN. +#define BS_PDB_SC_PDBEN (1U) //!< Bit field size in bits for PDB_SC_PDBEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_PDBEN field. +#define BR_PDB_SC_PDBEN (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_PDBEN)) +#endif + +//! @brief Format value for bitfield PDB_SC_PDBEN. +#define BF_PDB_SC_PDBEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_PDBEN), uint32_t) & BM_PDB_SC_PDBEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PDBEN field to a new value. +#define BW_PDB_SC_PDBEN(v) (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_PDBEN) = (v)) +#endif +//@} + +/*! + * @name Register PDB_SC, field TRGSEL[11:8] (RW) + * + * Selects the trigger input source for the PDB. The trigger input source can be + * internal or external (EXTRG pin), or the software trigger. Refer to chip + * configuration details for the actual PDB input trigger connections. + * + * Values: + * - 0000 - Trigger-In 0 is selected. + * - 0001 - Trigger-In 1 is selected. + * - 0010 - Trigger-In 2 is selected. + * - 0011 - Trigger-In 3 is selected. + * - 0100 - Trigger-In 4 is selected. + * - 0101 - Trigger-In 5 is selected. + * - 0110 - Trigger-In 6 is selected. + * - 0111 - Trigger-In 7 is selected. + * - 1000 - Trigger-In 8 is selected. + * - 1001 - Trigger-In 9 is selected. + * - 1010 - Trigger-In 10 is selected. + * - 1011 - Trigger-In 11 is selected. + * - 1100 - Trigger-In 12 is selected. + * - 1101 - Trigger-In 13 is selected. + * - 1110 - Trigger-In 14 is selected. + * - 1111 - Software trigger is selected. + */ +//@{ +#define BP_PDB_SC_TRGSEL (8U) //!< Bit position for PDB_SC_TRGSEL. +#define BM_PDB_SC_TRGSEL (0x00000F00U) //!< Bit mask for PDB_SC_TRGSEL. +#define BS_PDB_SC_TRGSEL (4U) //!< Bit field size in bits for PDB_SC_TRGSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_TRGSEL field. +#define BR_PDB_SC_TRGSEL (HW_PDB_SC.B.TRGSEL) +#endif + +//! @brief Format value for bitfield PDB_SC_TRGSEL. +#define BF_PDB_SC_TRGSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_TRGSEL), uint32_t) & BM_PDB_SC_TRGSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TRGSEL field to a new value. +#define BW_PDB_SC_TRGSEL(v) (HW_PDB_SC_WR((HW_PDB_SC_RD() & ~BM_PDB_SC_TRGSEL) | BF_PDB_SC_TRGSEL(v))) +#endif +//@} + +/*! + * @name Register PDB_SC, field PRESCALER[14:12] (RW) + * + * Values: + * - 000 - Counting uses the peripheral clock divided by multiplication factor + * selected by MULT. + * - 001 - Counting uses the peripheral clock divided by twice of the + * multiplication factor selected by MULT. + * - 010 - Counting uses the peripheral clock divided by four times of the + * multiplication factor selected by MULT. + * - 011 - Counting uses the peripheral clock divided by eight times of the + * multiplication factor selected by MULT. + * - 100 - Counting uses the peripheral clock divided by 16 times of the + * multiplication factor selected by MULT. + * - 101 - Counting uses the peripheral clock divided by 32 times of the + * multiplication factor selected by MULT. + * - 110 - Counting uses the peripheral clock divided by 64 times of the + * multiplication factor selected by MULT. + * - 111 - Counting uses the peripheral clock divided by 128 times of the + * multiplication factor selected by MULT. + */ +//@{ +#define BP_PDB_SC_PRESCALER (12U) //!< Bit position for PDB_SC_PRESCALER. +#define BM_PDB_SC_PRESCALER (0x00007000U) //!< Bit mask for PDB_SC_PRESCALER. +#define BS_PDB_SC_PRESCALER (3U) //!< Bit field size in bits for PDB_SC_PRESCALER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_PRESCALER field. +#define BR_PDB_SC_PRESCALER (HW_PDB_SC.B.PRESCALER) +#endif + +//! @brief Format value for bitfield PDB_SC_PRESCALER. +#define BF_PDB_SC_PRESCALER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_PRESCALER), uint32_t) & BM_PDB_SC_PRESCALER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PRESCALER field to a new value. +#define BW_PDB_SC_PRESCALER(v) (HW_PDB_SC_WR((HW_PDB_SC_RD() & ~BM_PDB_SC_PRESCALER) | BF_PDB_SC_PRESCALER(v))) +#endif +//@} + +/*! + * @name Register PDB_SC, field DMAEN[15] (RW) + * + * When DMA is enabled, the PDBIF flag generates a DMA request instead of an + * interrupt. + * + * Values: + * - 0 - DMA disabled. + * - 1 - DMA enabled. + */ +//@{ +#define BP_PDB_SC_DMAEN (15U) //!< Bit position for PDB_SC_DMAEN. +#define BM_PDB_SC_DMAEN (0x00008000U) //!< Bit mask for PDB_SC_DMAEN. +#define BS_PDB_SC_DMAEN (1U) //!< Bit field size in bits for PDB_SC_DMAEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_DMAEN field. +#define BR_PDB_SC_DMAEN (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_DMAEN)) +#endif + +//! @brief Format value for bitfield PDB_SC_DMAEN. +#define BF_PDB_SC_DMAEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_DMAEN), uint32_t) & BM_PDB_SC_DMAEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAEN field to a new value. +#define BW_PDB_SC_DMAEN(v) (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_DMAEN) = (v)) +#endif +//@} + +/*! + * @name Register PDB_SC, field SWTRIG[16] (WORZ) + * + * When PDB is enabled and the software trigger is selected as the trigger input + * source, writing 1 to this field resets and restarts the counter. Writing 0 to + * this field has no effect. Reading this field results 0. + */ +//@{ +#define BP_PDB_SC_SWTRIG (16U) //!< Bit position for PDB_SC_SWTRIG. +#define BM_PDB_SC_SWTRIG (0x00010000U) //!< Bit mask for PDB_SC_SWTRIG. +#define BS_PDB_SC_SWTRIG (1U) //!< Bit field size in bits for PDB_SC_SWTRIG. + +//! @brief Format value for bitfield PDB_SC_SWTRIG. +#define BF_PDB_SC_SWTRIG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_SWTRIG), uint32_t) & BM_PDB_SC_SWTRIG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWTRIG field to a new value. +#define BW_PDB_SC_SWTRIG(v) (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_SWTRIG) = (v)) +#endif +//@} + +/*! + * @name Register PDB_SC, field PDBEIE[17] (RW) + * + * Enables the PDB sequence error interrupt. When this field is set, any of the + * PDB channel sequence error flags generates a PDB sequence error interrupt. + * + * Values: + * - 0 - PDB sequence error interrupt disabled. + * - 1 - PDB sequence error interrupt enabled. + */ +//@{ +#define BP_PDB_SC_PDBEIE (17U) //!< Bit position for PDB_SC_PDBEIE. +#define BM_PDB_SC_PDBEIE (0x00020000U) //!< Bit mask for PDB_SC_PDBEIE. +#define BS_PDB_SC_PDBEIE (1U) //!< Bit field size in bits for PDB_SC_PDBEIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_PDBEIE field. +#define BR_PDB_SC_PDBEIE (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_PDBEIE)) +#endif + +//! @brief Format value for bitfield PDB_SC_PDBEIE. +#define BF_PDB_SC_PDBEIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_PDBEIE), uint32_t) & BM_PDB_SC_PDBEIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PDBEIE field to a new value. +#define BW_PDB_SC_PDBEIE(v) (BITBAND_ACCESS32(HW_PDB_SC_ADDR, BP_PDB_SC_PDBEIE) = (v)) +#endif +//@} + +/*! + * @name Register PDB_SC, field LDMOD[19:18] (RW) + * + * Selects the mode to load the MOD, IDLY, CHnDLYm, INTx, and POyDLY registers, + * after 1 is written to LDOK. + * + * Values: + * - 00 - The internal registers are loaded with the values from their buffers + * immediately after 1 is written to LDOK. + * - 01 - The internal registers are loaded with the values from their buffers + * when the PDB counter reaches the MOD register value after 1 is written to + * LDOK. + * - 10 - The internal registers are loaded with the values from their buffers + * when a trigger input event is detected after 1 is written to LDOK. + * - 11 - The internal registers are loaded with the values from their buffers + * when either the PDB counter reaches the MOD register value or a trigger + * input event is detected, after 1 is written to LDOK. + */ +//@{ +#define BP_PDB_SC_LDMOD (18U) //!< Bit position for PDB_SC_LDMOD. +#define BM_PDB_SC_LDMOD (0x000C0000U) //!< Bit mask for PDB_SC_LDMOD. +#define BS_PDB_SC_LDMOD (2U) //!< Bit field size in bits for PDB_SC_LDMOD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_SC_LDMOD field. +#define BR_PDB_SC_LDMOD (HW_PDB_SC.B.LDMOD) +#endif + +//! @brief Format value for bitfield PDB_SC_LDMOD. +#define BF_PDB_SC_LDMOD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_SC_LDMOD), uint32_t) & BM_PDB_SC_LDMOD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LDMOD field to a new value. +#define BW_PDB_SC_LDMOD(v) (HW_PDB_SC_WR((HW_PDB_SC_RD() & ~BM_PDB_SC_LDMOD) | BF_PDB_SC_LDMOD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PDB_MOD - Modulus register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_MOD - Modulus register (RW) + * + * Reset value: 0x0000FFFFU + */ +typedef union _hw_pdb_mod +{ + uint32_t U; + struct _hw_pdb_mod_bitfields + { + uint32_t MOD : 16; //!< [15:0] PDB Modulus + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_pdb_mod_t; +#endif + +/*! + * @name Constants and macros for entire PDB_MOD register + */ +//@{ +#define HW_PDB_MOD_ADDR (REGS_PDB_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_MOD (*(__IO hw_pdb_mod_t *) HW_PDB_MOD_ADDR) +#define HW_PDB_MOD_RD() (HW_PDB_MOD.U) +#define HW_PDB_MOD_WR(v) (HW_PDB_MOD.U = (v)) +#define HW_PDB_MOD_SET(v) (HW_PDB_MOD_WR(HW_PDB_MOD_RD() | (v))) +#define HW_PDB_MOD_CLR(v) (HW_PDB_MOD_WR(HW_PDB_MOD_RD() & ~(v))) +#define HW_PDB_MOD_TOG(v) (HW_PDB_MOD_WR(HW_PDB_MOD_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_MOD bitfields + */ + +/*! + * @name Register PDB_MOD, field MOD[15:0] (RW) + * + * Specifies the period of the counter. When the counter reaches this value, it + * will be reset back to zero. If the PDB is in Continuous mode, the count begins + * anew. Reading this field returns the value of the internal register that is + * effective for the current cycle of PDB. + */ +//@{ +#define BP_PDB_MOD_MOD (0U) //!< Bit position for PDB_MOD_MOD. +#define BM_PDB_MOD_MOD (0x0000FFFFU) //!< Bit mask for PDB_MOD_MOD. +#define BS_PDB_MOD_MOD (16U) //!< Bit field size in bits for PDB_MOD_MOD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_MOD_MOD field. +#define BR_PDB_MOD_MOD (HW_PDB_MOD.B.MOD) +#endif + +//! @brief Format value for bitfield PDB_MOD_MOD. +#define BF_PDB_MOD_MOD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_MOD_MOD), uint32_t) & BM_PDB_MOD_MOD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MOD field to a new value. +#define BW_PDB_MOD_MOD(v) (HW_PDB_MOD_WR((HW_PDB_MOD_RD() & ~BM_PDB_MOD_MOD) | BF_PDB_MOD_MOD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PDB_CNT - Counter register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_CNT - Counter register (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_pdb_cnt +{ + uint32_t U; + struct _hw_pdb_cnt_bitfields + { + uint32_t CNT : 16; //!< [15:0] PDB Counter + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_pdb_cnt_t; +#endif + +/*! + * @name Constants and macros for entire PDB_CNT register + */ +//@{ +#define HW_PDB_CNT_ADDR (REGS_PDB_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_CNT (*(__I hw_pdb_cnt_t *) HW_PDB_CNT_ADDR) +#define HW_PDB_CNT_RD() (HW_PDB_CNT.U) +#endif +//@} + +/* + * Constants & macros for individual PDB_CNT bitfields + */ + +/*! + * @name Register PDB_CNT, field CNT[15:0] (RO) + * + * Contains the current value of the counter. + */ +//@{ +#define BP_PDB_CNT_CNT (0U) //!< Bit position for PDB_CNT_CNT. +#define BM_PDB_CNT_CNT (0x0000FFFFU) //!< Bit mask for PDB_CNT_CNT. +#define BS_PDB_CNT_CNT (16U) //!< Bit field size in bits for PDB_CNT_CNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_CNT_CNT field. +#define BR_PDB_CNT_CNT (HW_PDB_CNT.B.CNT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PDB_IDLY - Interrupt Delay register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_IDLY - Interrupt Delay register (RW) + * + * Reset value: 0x0000FFFFU + */ +typedef union _hw_pdb_idly +{ + uint32_t U; + struct _hw_pdb_idly_bitfields + { + uint32_t IDLY : 16; //!< [15:0] PDB Interrupt Delay + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_pdb_idly_t; +#endif + +/*! + * @name Constants and macros for entire PDB_IDLY register + */ +//@{ +#define HW_PDB_IDLY_ADDR (REGS_PDB_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_IDLY (*(__IO hw_pdb_idly_t *) HW_PDB_IDLY_ADDR) +#define HW_PDB_IDLY_RD() (HW_PDB_IDLY.U) +#define HW_PDB_IDLY_WR(v) (HW_PDB_IDLY.U = (v)) +#define HW_PDB_IDLY_SET(v) (HW_PDB_IDLY_WR(HW_PDB_IDLY_RD() | (v))) +#define HW_PDB_IDLY_CLR(v) (HW_PDB_IDLY_WR(HW_PDB_IDLY_RD() & ~(v))) +#define HW_PDB_IDLY_TOG(v) (HW_PDB_IDLY_WR(HW_PDB_IDLY_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_IDLY bitfields + */ + +/*! + * @name Register PDB_IDLY, field IDLY[15:0] (RW) + * + * Specifies the delay value to schedule the PDB interrupt. It can be used to + * schedule an independent interrupt at some point in the PDB cycle. If enabled, a + * PDB interrupt is generated, when the counter is equal to the IDLY. Reading + * this field returns the value of internal register that is effective for the + * current cycle of the PDB. + */ +//@{ +#define BP_PDB_IDLY_IDLY (0U) //!< Bit position for PDB_IDLY_IDLY. +#define BM_PDB_IDLY_IDLY (0x0000FFFFU) //!< Bit mask for PDB_IDLY_IDLY. +#define BS_PDB_IDLY_IDLY (16U) //!< Bit field size in bits for PDB_IDLY_IDLY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_IDLY_IDLY field. +#define BR_PDB_IDLY_IDLY (HW_PDB_IDLY.B.IDLY) +#endif + +//! @brief Format value for bitfield PDB_IDLY_IDLY. +#define BF_PDB_IDLY_IDLY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_IDLY_IDLY), uint32_t) & BM_PDB_IDLY_IDLY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IDLY field to a new value. +#define BW_PDB_IDLY_IDLY(v) (HW_PDB_IDLY_WR((HW_PDB_IDLY_RD() & ~BM_PDB_IDLY_IDLY) | BF_PDB_IDLY_IDLY(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PDB_CHnC1 - Channel n Control register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_CHnC1 - Channel n Control register 1 (RW) + * + * Reset value: 0x00000000U + * + * Each PDB channel has one control register, CHnC1. The bits in this register + * control the functionality of each PDB channel operation. + */ +typedef union _hw_pdb_chnc1 +{ + uint32_t U; + struct _hw_pdb_chnc1_bitfields + { + uint32_t EN : 8; //!< [7:0] PDB Channel Pre-Trigger Enable + uint32_t TOS : 8; //!< [15:8] PDB Channel Pre-Trigger Output Select + uint32_t BB : 8; //!< [23:16] PDB Channel Pre-Trigger Back-to-Back + //! Operation Enable + uint32_t RESERVED0 : 8; //!< [31:24] + } B; +} hw_pdb_chnc1_t; +#endif + +/*! + * @name Constants and macros for entire PDB_CHnC1 register + */ +//@{ +#define HW_PDB_CHnC1_COUNT (2U) + +#define HW_PDB_CHnC1_ADDR(n) (REGS_PDB_BASE + 0x10U + (0x28U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_CHnC1(n) (*(__IO hw_pdb_chnc1_t *) HW_PDB_CHnC1_ADDR(n)) +#define HW_PDB_CHnC1_RD(n) (HW_PDB_CHnC1(n).U) +#define HW_PDB_CHnC1_WR(n, v) (HW_PDB_CHnC1(n).U = (v)) +#define HW_PDB_CHnC1_SET(n, v) (HW_PDB_CHnC1_WR(n, HW_PDB_CHnC1_RD(n) | (v))) +#define HW_PDB_CHnC1_CLR(n, v) (HW_PDB_CHnC1_WR(n, HW_PDB_CHnC1_RD(n) & ~(v))) +#define HW_PDB_CHnC1_TOG(n, v) (HW_PDB_CHnC1_WR(n, HW_PDB_CHnC1_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_CHnC1 bitfields + */ + +/*! + * @name Register PDB_CHnC1, field EN[7:0] (RW) + * + * These bits enable the PDB ADC pre-trigger outputs. Only lower M pre-trigger + * bits are implemented in this MCU. + * + * Values: + * - 0 - PDB channel's corresponding pre-trigger disabled. + * - 1 - PDB channel's corresponding pre-trigger enabled. + */ +//@{ +#define BP_PDB_CHnC1_EN (0U) //!< Bit position for PDB_CHnC1_EN. +#define BM_PDB_CHnC1_EN (0x000000FFU) //!< Bit mask for PDB_CHnC1_EN. +#define BS_PDB_CHnC1_EN (8U) //!< Bit field size in bits for PDB_CHnC1_EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_CHnC1_EN field. +#define BR_PDB_CHnC1_EN(n) (HW_PDB_CHnC1(n).B.EN) +#endif + +//! @brief Format value for bitfield PDB_CHnC1_EN. +#define BF_PDB_CHnC1_EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_CHnC1_EN), uint32_t) & BM_PDB_CHnC1_EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EN field to a new value. +#define BW_PDB_CHnC1_EN(n, v) (HW_PDB_CHnC1_WR(n, (HW_PDB_CHnC1_RD(n) & ~BM_PDB_CHnC1_EN) | BF_PDB_CHnC1_EN(v))) +#endif +//@} + +/*! + * @name Register PDB_CHnC1, field TOS[15:8] (RW) + * + * Selects the PDB ADC pre-trigger outputs. Only lower M pre-trigger fields are + * implemented in this MCU. + * + * Values: + * - 0 - PDB channel's corresponding pre-trigger is in bypassed mode. The + * pre-trigger asserts one peripheral clock cycle after a rising edge is detected + * on selected trigger input source or software trigger is selected and SWTRIG + * is written with 1. + * - 1 - PDB channel's corresponding pre-trigger asserts when the counter + * reaches the channel delay register and one peripheral clock cycle after a rising + * edge is detected on selected trigger input source or software trigger is + * selected and SETRIG is written with 1. + */ +//@{ +#define BP_PDB_CHnC1_TOS (8U) //!< Bit position for PDB_CHnC1_TOS. +#define BM_PDB_CHnC1_TOS (0x0000FF00U) //!< Bit mask for PDB_CHnC1_TOS. +#define BS_PDB_CHnC1_TOS (8U) //!< Bit field size in bits for PDB_CHnC1_TOS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_CHnC1_TOS field. +#define BR_PDB_CHnC1_TOS(n) (HW_PDB_CHnC1(n).B.TOS) +#endif + +//! @brief Format value for bitfield PDB_CHnC1_TOS. +#define BF_PDB_CHnC1_TOS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_CHnC1_TOS), uint32_t) & BM_PDB_CHnC1_TOS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOS field to a new value. +#define BW_PDB_CHnC1_TOS(n, v) (HW_PDB_CHnC1_WR(n, (HW_PDB_CHnC1_RD(n) & ~BM_PDB_CHnC1_TOS) | BF_PDB_CHnC1_TOS(v))) +#endif +//@} + +/*! + * @name Register PDB_CHnC1, field BB[23:16] (RW) + * + * These bits enable the PDB ADC pre-trigger operation as back-to-back mode. + * Only lower M pre-trigger bits are implemented in this MCU. Back-to-back operation + * enables the ADC conversions complete to trigger the next PDB channel + * pre-trigger and trigger output, so that the ADC conversions can be triggered on next + * set of configuration and results registers. Application code must only enable + * the back-to-back operation of the PDB pre-triggers at the leading of the + * back-to-back connection chain. + * + * Values: + * - 0 - PDB channel's corresponding pre-trigger back-to-back operation disabled. + * - 1 - PDB channel's corresponding pre-trigger back-to-back operation enabled. + */ +//@{ +#define BP_PDB_CHnC1_BB (16U) //!< Bit position for PDB_CHnC1_BB. +#define BM_PDB_CHnC1_BB (0x00FF0000U) //!< Bit mask for PDB_CHnC1_BB. +#define BS_PDB_CHnC1_BB (8U) //!< Bit field size in bits for PDB_CHnC1_BB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_CHnC1_BB field. +#define BR_PDB_CHnC1_BB(n) (HW_PDB_CHnC1(n).B.BB) +#endif + +//! @brief Format value for bitfield PDB_CHnC1_BB. +#define BF_PDB_CHnC1_BB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_CHnC1_BB), uint32_t) & BM_PDB_CHnC1_BB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BB field to a new value. +#define BW_PDB_CHnC1_BB(n, v) (HW_PDB_CHnC1_WR(n, (HW_PDB_CHnC1_RD(n) & ~BM_PDB_CHnC1_BB) | BF_PDB_CHnC1_BB(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_PDB_CHnS - Channel n Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_CHnS - Channel n Status register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_pdb_chns +{ + uint32_t U; + struct _hw_pdb_chns_bitfields + { + uint32_t ERR : 8; //!< [7:0] PDB Channel Sequence Error Flags + uint32_t RESERVED0 : 8; //!< [15:8] + uint32_t CF : 8; //!< [23:16] PDB Channel Flags + uint32_t RESERVED1 : 8; //!< [31:24] + } B; +} hw_pdb_chns_t; +#endif + +/*! + * @name Constants and macros for entire PDB_CHnS register + */ +//@{ +#define HW_PDB_CHnS_COUNT (2U) + +#define HW_PDB_CHnS_ADDR(n) (REGS_PDB_BASE + 0x14U + (0x28U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_CHnS(n) (*(__IO hw_pdb_chns_t *) HW_PDB_CHnS_ADDR(n)) +#define HW_PDB_CHnS_RD(n) (HW_PDB_CHnS(n).U) +#define HW_PDB_CHnS_WR(n, v) (HW_PDB_CHnS(n).U = (v)) +#define HW_PDB_CHnS_SET(n, v) (HW_PDB_CHnS_WR(n, HW_PDB_CHnS_RD(n) | (v))) +#define HW_PDB_CHnS_CLR(n, v) (HW_PDB_CHnS_WR(n, HW_PDB_CHnS_RD(n) & ~(v))) +#define HW_PDB_CHnS_TOG(n, v) (HW_PDB_CHnS_WR(n, HW_PDB_CHnS_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_CHnS bitfields + */ + +/*! + * @name Register PDB_CHnS, field ERR[7:0] (RW) + * + * Only the lower M bits are implemented in this MCU. + * + * Values: + * - 0 - Sequence error not detected on PDB channel's corresponding pre-trigger. + * - 1 - Sequence error detected on PDB channel's corresponding pre-trigger. + * ADCn block can be triggered for a conversion by one pre-trigger from PDB + * channel n. When one conversion, which is triggered by one of the pre-triggers + * from PDB channel n, is in progress, new trigger from PDB channel's + * corresponding pre-trigger m cannot be accepted by ADCn, and ERR[m] is set. + * Writing 0's to clear the sequence error flags. + */ +//@{ +#define BP_PDB_CHnS_ERR (0U) //!< Bit position for PDB_CHnS_ERR. +#define BM_PDB_CHnS_ERR (0x000000FFU) //!< Bit mask for PDB_CHnS_ERR. +#define BS_PDB_CHnS_ERR (8U) //!< Bit field size in bits for PDB_CHnS_ERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_CHnS_ERR field. +#define BR_PDB_CHnS_ERR(n) (HW_PDB_CHnS(n).B.ERR) +#endif + +//! @brief Format value for bitfield PDB_CHnS_ERR. +#define BF_PDB_CHnS_ERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_CHnS_ERR), uint32_t) & BM_PDB_CHnS_ERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERR field to a new value. +#define BW_PDB_CHnS_ERR(n, v) (HW_PDB_CHnS_WR(n, (HW_PDB_CHnS_RD(n) & ~BM_PDB_CHnS_ERR) | BF_PDB_CHnS_ERR(v))) +#endif +//@} + +/*! + * @name Register PDB_CHnS, field CF[23:16] (RW) + * + * The CF[m] bit is set when the PDB counter matches the CHnDLYm. Write 0 to + * clear these bits. + */ +//@{ +#define BP_PDB_CHnS_CF (16U) //!< Bit position for PDB_CHnS_CF. +#define BM_PDB_CHnS_CF (0x00FF0000U) //!< Bit mask for PDB_CHnS_CF. +#define BS_PDB_CHnS_CF (8U) //!< Bit field size in bits for PDB_CHnS_CF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_CHnS_CF field. +#define BR_PDB_CHnS_CF(n) (HW_PDB_CHnS(n).B.CF) +#endif + +//! @brief Format value for bitfield PDB_CHnS_CF. +#define BF_PDB_CHnS_CF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_CHnS_CF), uint32_t) & BM_PDB_CHnS_CF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CF field to a new value. +#define BW_PDB_CHnS_CF(n, v) (HW_PDB_CHnS_WR(n, (HW_PDB_CHnS_RD(n) & ~BM_PDB_CHnS_CF) | BF_PDB_CHnS_CF(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_PDB_CHnDLY0 - Channel n Delay 0 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_CHnDLY0 - Channel n Delay 0 register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_pdb_chndly0 +{ + uint32_t U; + struct _hw_pdb_chndly0_bitfields + { + uint32_t DLY : 16; //!< [15:0] PDB Channel Delay + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_pdb_chndly0_t; +#endif + +/*! + * @name Constants and macros for entire PDB_CHnDLY0 register + */ +//@{ +#define HW_PDB_CHnDLY0_COUNT (2U) + +#define HW_PDB_CHnDLY0_ADDR(n) (REGS_PDB_BASE + 0x18U + (0x28U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_CHnDLY0(n) (*(__IO hw_pdb_chndly0_t *) HW_PDB_CHnDLY0_ADDR(n)) +#define HW_PDB_CHnDLY0_RD(n) (HW_PDB_CHnDLY0(n).U) +#define HW_PDB_CHnDLY0_WR(n, v) (HW_PDB_CHnDLY0(n).U = (v)) +#define HW_PDB_CHnDLY0_SET(n, v) (HW_PDB_CHnDLY0_WR(n, HW_PDB_CHnDLY0_RD(n) | (v))) +#define HW_PDB_CHnDLY0_CLR(n, v) (HW_PDB_CHnDLY0_WR(n, HW_PDB_CHnDLY0_RD(n) & ~(v))) +#define HW_PDB_CHnDLY0_TOG(n, v) (HW_PDB_CHnDLY0_WR(n, HW_PDB_CHnDLY0_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_CHnDLY0 bitfields + */ + +/*! + * @name Register PDB_CHnDLY0, field DLY[15:0] (RW) + * + * Specifies the delay value for the channel's corresponding pre-trigger. The + * pre-trigger asserts when the counter is equal to DLY. Reading this field returns + * the value of internal register that is effective for the current PDB cycle. + */ +//@{ +#define BP_PDB_CHnDLY0_DLY (0U) //!< Bit position for PDB_CHnDLY0_DLY. +#define BM_PDB_CHnDLY0_DLY (0x0000FFFFU) //!< Bit mask for PDB_CHnDLY0_DLY. +#define BS_PDB_CHnDLY0_DLY (16U) //!< Bit field size in bits for PDB_CHnDLY0_DLY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_CHnDLY0_DLY field. +#define BR_PDB_CHnDLY0_DLY(n) (HW_PDB_CHnDLY0(n).B.DLY) +#endif + +//! @brief Format value for bitfield PDB_CHnDLY0_DLY. +#define BF_PDB_CHnDLY0_DLY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_CHnDLY0_DLY), uint32_t) & BM_PDB_CHnDLY0_DLY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DLY field to a new value. +#define BW_PDB_CHnDLY0_DLY(n, v) (HW_PDB_CHnDLY0_WR(n, (HW_PDB_CHnDLY0_RD(n) & ~BM_PDB_CHnDLY0_DLY) | BF_PDB_CHnDLY0_DLY(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_PDB_CHnDLY1 - Channel n Delay 1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_CHnDLY1 - Channel n Delay 1 register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_pdb_chndly1 +{ + uint32_t U; + struct _hw_pdb_chndly1_bitfields + { + uint32_t DLY : 16; //!< [15:0] PDB Channel Delay + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_pdb_chndly1_t; +#endif + +/*! + * @name Constants and macros for entire PDB_CHnDLY1 register + */ +//@{ +#define HW_PDB_CHnDLY1_COUNT (2U) + +#define HW_PDB_CHnDLY1_ADDR(n) (REGS_PDB_BASE + 0x1CU + (0x28U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_CHnDLY1(n) (*(__IO hw_pdb_chndly1_t *) HW_PDB_CHnDLY1_ADDR(n)) +#define HW_PDB_CHnDLY1_RD(n) (HW_PDB_CHnDLY1(n).U) +#define HW_PDB_CHnDLY1_WR(n, v) (HW_PDB_CHnDLY1(n).U = (v)) +#define HW_PDB_CHnDLY1_SET(n, v) (HW_PDB_CHnDLY1_WR(n, HW_PDB_CHnDLY1_RD(n) | (v))) +#define HW_PDB_CHnDLY1_CLR(n, v) (HW_PDB_CHnDLY1_WR(n, HW_PDB_CHnDLY1_RD(n) & ~(v))) +#define HW_PDB_CHnDLY1_TOG(n, v) (HW_PDB_CHnDLY1_WR(n, HW_PDB_CHnDLY1_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_CHnDLY1 bitfields + */ + +/*! + * @name Register PDB_CHnDLY1, field DLY[15:0] (RW) + * + * These bits specify the delay value for the channel's corresponding + * pre-trigger. The pre-trigger asserts when the counter is equal to DLY. Reading these + * bits returns the value of internal register that is effective for the current PDB + * cycle. + */ +//@{ +#define BP_PDB_CHnDLY1_DLY (0U) //!< Bit position for PDB_CHnDLY1_DLY. +#define BM_PDB_CHnDLY1_DLY (0x0000FFFFU) //!< Bit mask for PDB_CHnDLY1_DLY. +#define BS_PDB_CHnDLY1_DLY (16U) //!< Bit field size in bits for PDB_CHnDLY1_DLY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_CHnDLY1_DLY field. +#define BR_PDB_CHnDLY1_DLY(n) (HW_PDB_CHnDLY1(n).B.DLY) +#endif + +//! @brief Format value for bitfield PDB_CHnDLY1_DLY. +#define BF_PDB_CHnDLY1_DLY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_CHnDLY1_DLY), uint32_t) & BM_PDB_CHnDLY1_DLY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DLY field to a new value. +#define BW_PDB_CHnDLY1_DLY(n, v) (HW_PDB_CHnDLY1_WR(n, (HW_PDB_CHnDLY1_RD(n) & ~BM_PDB_CHnDLY1_DLY) | BF_PDB_CHnDLY1_DLY(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PDB_DACINTCn - DAC Interval Trigger n Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_DACINTCn - DAC Interval Trigger n Control register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_pdb_dacintcn +{ + uint32_t U; + struct _hw_pdb_dacintcn_bitfields + { + uint32_t TOE : 1; //!< [0] DAC Interval Trigger Enable + uint32_t EXT : 1; //!< [1] DAC External Trigger Input Enable + uint32_t RESERVED0 : 30; //!< [31:2] + } B; +} hw_pdb_dacintcn_t; +#endif + +/*! + * @name Constants and macros for entire PDB_DACINTCn register + */ +//@{ +#define HW_PDB_DACINTCn_COUNT (2U) + +#define HW_PDB_DACINTCn_ADDR(n) (REGS_PDB_BASE + 0x150U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_DACINTCn(n) (*(__IO hw_pdb_dacintcn_t *) HW_PDB_DACINTCn_ADDR(n)) +#define HW_PDB_DACINTCn_RD(n) (HW_PDB_DACINTCn(n).U) +#define HW_PDB_DACINTCn_WR(n, v) (HW_PDB_DACINTCn(n).U = (v)) +#define HW_PDB_DACINTCn_SET(n, v) (HW_PDB_DACINTCn_WR(n, HW_PDB_DACINTCn_RD(n) | (v))) +#define HW_PDB_DACINTCn_CLR(n, v) (HW_PDB_DACINTCn_WR(n, HW_PDB_DACINTCn_RD(n) & ~(v))) +#define HW_PDB_DACINTCn_TOG(n, v) (HW_PDB_DACINTCn_WR(n, HW_PDB_DACINTCn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_DACINTCn bitfields + */ + +/*! + * @name Register PDB_DACINTCn, field TOE[0] (RW) + * + * This bit enables the DAC interval trigger. + * + * Values: + * - 0 - DAC interval trigger disabled. + * - 1 - DAC interval trigger enabled. + */ +//@{ +#define BP_PDB_DACINTCn_TOE (0U) //!< Bit position for PDB_DACINTCn_TOE. +#define BM_PDB_DACINTCn_TOE (0x00000001U) //!< Bit mask for PDB_DACINTCn_TOE. +#define BS_PDB_DACINTCn_TOE (1U) //!< Bit field size in bits for PDB_DACINTCn_TOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_DACINTCn_TOE field. +#define BR_PDB_DACINTCn_TOE(n) (BITBAND_ACCESS32(HW_PDB_DACINTCn_ADDR(n), BP_PDB_DACINTCn_TOE)) +#endif + +//! @brief Format value for bitfield PDB_DACINTCn_TOE. +#define BF_PDB_DACINTCn_TOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_DACINTCn_TOE), uint32_t) & BM_PDB_DACINTCn_TOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOE field to a new value. +#define BW_PDB_DACINTCn_TOE(n, v) (BITBAND_ACCESS32(HW_PDB_DACINTCn_ADDR(n), BP_PDB_DACINTCn_TOE) = (v)) +#endif +//@} + +/*! + * @name Register PDB_DACINTCn, field EXT[1] (RW) + * + * Enables the external trigger for DAC interval counter. + * + * Values: + * - 0 - DAC external trigger input disabled. DAC interval counter is reset and + * counting starts when a rising edge is detected on selected trigger input + * source or software trigger is selected and SWTRIG is written with 1. + * - 1 - DAC external trigger input enabled. DAC interval counter is bypassed + * and DAC external trigger input triggers the DAC interval trigger. + */ +//@{ +#define BP_PDB_DACINTCn_EXT (1U) //!< Bit position for PDB_DACINTCn_EXT. +#define BM_PDB_DACINTCn_EXT (0x00000002U) //!< Bit mask for PDB_DACINTCn_EXT. +#define BS_PDB_DACINTCn_EXT (1U) //!< Bit field size in bits for PDB_DACINTCn_EXT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_DACINTCn_EXT field. +#define BR_PDB_DACINTCn_EXT(n) (BITBAND_ACCESS32(HW_PDB_DACINTCn_ADDR(n), BP_PDB_DACINTCn_EXT)) +#endif + +//! @brief Format value for bitfield PDB_DACINTCn_EXT. +#define BF_PDB_DACINTCn_EXT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_DACINTCn_EXT), uint32_t) & BM_PDB_DACINTCn_EXT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EXT field to a new value. +#define BW_PDB_DACINTCn_EXT(n, v) (BITBAND_ACCESS32(HW_PDB_DACINTCn_ADDR(n), BP_PDB_DACINTCn_EXT) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_PDB_DACINTn - DAC Interval n register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_DACINTn - DAC Interval n register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_pdb_dacintn +{ + uint32_t U; + struct _hw_pdb_dacintn_bitfields + { + uint32_t INT : 16; //!< [15:0] DAC Interval + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_pdb_dacintn_t; +#endif + +/*! + * @name Constants and macros for entire PDB_DACINTn register + */ +//@{ +#define HW_PDB_DACINTn_COUNT (2U) + +#define HW_PDB_DACINTn_ADDR(n) (REGS_PDB_BASE + 0x154U + (0x8U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_DACINTn(n) (*(__IO hw_pdb_dacintn_t *) HW_PDB_DACINTn_ADDR(n)) +#define HW_PDB_DACINTn_RD(n) (HW_PDB_DACINTn(n).U) +#define HW_PDB_DACINTn_WR(n, v) (HW_PDB_DACINTn(n).U = (v)) +#define HW_PDB_DACINTn_SET(n, v) (HW_PDB_DACINTn_WR(n, HW_PDB_DACINTn_RD(n) | (v))) +#define HW_PDB_DACINTn_CLR(n, v) (HW_PDB_DACINTn_WR(n, HW_PDB_DACINTn_RD(n) & ~(v))) +#define HW_PDB_DACINTn_TOG(n, v) (HW_PDB_DACINTn_WR(n, HW_PDB_DACINTn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_DACINTn bitfields + */ + +/*! + * @name Register PDB_DACINTn, field INT[15:0] (RW) + * + * Specifies the interval value for DAC interval trigger. DAC interval trigger + * triggers DAC[1:0] update when the DAC interval counter is equal to the DACINT. + * Reading this field returns the value of internal register that is effective + * for the current PDB cycle. + */ +//@{ +#define BP_PDB_DACINTn_INT (0U) //!< Bit position for PDB_DACINTn_INT. +#define BM_PDB_DACINTn_INT (0x0000FFFFU) //!< Bit mask for PDB_DACINTn_INT. +#define BS_PDB_DACINTn_INT (16U) //!< Bit field size in bits for PDB_DACINTn_INT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_DACINTn_INT field. +#define BR_PDB_DACINTn_INT(n) (HW_PDB_DACINTn(n).B.INT) +#endif + +//! @brief Format value for bitfield PDB_DACINTn_INT. +#define BF_PDB_DACINTn_INT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_DACINTn_INT), uint32_t) & BM_PDB_DACINTn_INT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INT field to a new value. +#define BW_PDB_DACINTn_INT(n, v) (HW_PDB_DACINTn_WR(n, (HW_PDB_DACINTn_RD(n) & ~BM_PDB_DACINTn_INT) | BF_PDB_DACINTn_INT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PDB_POEN - Pulse-Out n Enable register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_POEN - Pulse-Out n Enable register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_pdb_poen +{ + uint32_t U; + struct _hw_pdb_poen_bitfields + { + uint32_t POEN : 8; //!< [7:0] PDB Pulse-Out Enable + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_pdb_poen_t; +#endif + +/*! + * @name Constants and macros for entire PDB_POEN register + */ +//@{ +#define HW_PDB_POEN_ADDR (REGS_PDB_BASE + 0x190U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_POEN (*(__IO hw_pdb_poen_t *) HW_PDB_POEN_ADDR) +#define HW_PDB_POEN_RD() (HW_PDB_POEN.U) +#define HW_PDB_POEN_WR(v) (HW_PDB_POEN.U = (v)) +#define HW_PDB_POEN_SET(v) (HW_PDB_POEN_WR(HW_PDB_POEN_RD() | (v))) +#define HW_PDB_POEN_CLR(v) (HW_PDB_POEN_WR(HW_PDB_POEN_RD() & ~(v))) +#define HW_PDB_POEN_TOG(v) (HW_PDB_POEN_WR(HW_PDB_POEN_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_POEN bitfields + */ + +/*! + * @name Register PDB_POEN, field POEN[7:0] (RW) + * + * Enables the pulse output. Only lower Y bits are implemented in this MCU. + * + * Values: + * - 0 - PDB Pulse-Out disabled + * - 1 - PDB Pulse-Out enabled + */ +//@{ +#define BP_PDB_POEN_POEN (0U) //!< Bit position for PDB_POEN_POEN. +#define BM_PDB_POEN_POEN (0x000000FFU) //!< Bit mask for PDB_POEN_POEN. +#define BS_PDB_POEN_POEN (8U) //!< Bit field size in bits for PDB_POEN_POEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_POEN_POEN field. +#define BR_PDB_POEN_POEN (HW_PDB_POEN.B.POEN) +#endif + +//! @brief Format value for bitfield PDB_POEN_POEN. +#define BF_PDB_POEN_POEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_POEN_POEN), uint32_t) & BM_PDB_POEN_POEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the POEN field to a new value. +#define BW_PDB_POEN_POEN(v) (HW_PDB_POEN_WR((HW_PDB_POEN_RD() & ~BM_PDB_POEN_POEN) | BF_PDB_POEN_POEN(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PDB_POnDLY - Pulse-Out n Delay register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PDB_POnDLY - Pulse-Out n Delay register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_pdb_pondly +{ + uint32_t U; + struct _hw_pdb_pondly_bitfields + { + uint32_t DLY2 : 16; //!< [15:0] PDB Pulse-Out Delay 2 + uint32_t DLY1 : 16; //!< [31:16] PDB Pulse-Out Delay 1 + } B; +} hw_pdb_pondly_t; +#endif + +/*! + * @name Constants and macros for entire PDB_POnDLY register + */ +//@{ +#define HW_PDB_POnDLY_COUNT (3U) + +#define HW_PDB_POnDLY_ADDR(n) (REGS_PDB_BASE + 0x194U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PDB_POnDLY(n) (*(__IO hw_pdb_pondly_t *) HW_PDB_POnDLY_ADDR(n)) +#define HW_PDB_POnDLY_RD(n) (HW_PDB_POnDLY(n).U) +#define HW_PDB_POnDLY_WR(n, v) (HW_PDB_POnDLY(n).U = (v)) +#define HW_PDB_POnDLY_SET(n, v) (HW_PDB_POnDLY_WR(n, HW_PDB_POnDLY_RD(n) | (v))) +#define HW_PDB_POnDLY_CLR(n, v) (HW_PDB_POnDLY_WR(n, HW_PDB_POnDLY_RD(n) & ~(v))) +#define HW_PDB_POnDLY_TOG(n, v) (HW_PDB_POnDLY_WR(n, HW_PDB_POnDLY_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PDB_POnDLY bitfields + */ + +/*! + * @name Register PDB_POnDLY, field DLY2[15:0] (RW) + * + * These bits specify the delay 2 value for the PDB Pulse-Out. Pulse-Out goes + * low when the PDB counter is equal to the DLY2. Reading these bits returns the + * value of internal register that is effective for the current PDB cycle. + */ +//@{ +#define BP_PDB_POnDLY_DLY2 (0U) //!< Bit position for PDB_POnDLY_DLY2. +#define BM_PDB_POnDLY_DLY2 (0x0000FFFFU) //!< Bit mask for PDB_POnDLY_DLY2. +#define BS_PDB_POnDLY_DLY2 (16U) //!< Bit field size in bits for PDB_POnDLY_DLY2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_POnDLY_DLY2 field. +#define BR_PDB_POnDLY_DLY2(n) (HW_PDB_POnDLY(n).B.DLY2) +#endif + +//! @brief Format value for bitfield PDB_POnDLY_DLY2. +#define BF_PDB_POnDLY_DLY2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_POnDLY_DLY2), uint32_t) & BM_PDB_POnDLY_DLY2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DLY2 field to a new value. +#define BW_PDB_POnDLY_DLY2(n, v) (HW_PDB_POnDLY_WR(n, (HW_PDB_POnDLY_RD(n) & ~BM_PDB_POnDLY_DLY2) | BF_PDB_POnDLY_DLY2(v))) +#endif +//@} + +/*! + * @name Register PDB_POnDLY, field DLY1[31:16] (RW) + * + * These bits specify the delay 1 value for the PDB Pulse-Out. Pulse-Out goes + * high when the PDB counter is equal to the DLY1. Reading these bits returns the + * value of internal register that is effective for the current PDB cycle. + */ +//@{ +#define BP_PDB_POnDLY_DLY1 (16U) //!< Bit position for PDB_POnDLY_DLY1. +#define BM_PDB_POnDLY_DLY1 (0xFFFF0000U) //!< Bit mask for PDB_POnDLY_DLY1. +#define BS_PDB_POnDLY_DLY1 (16U) //!< Bit field size in bits for PDB_POnDLY_DLY1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PDB_POnDLY_DLY1 field. +#define BR_PDB_POnDLY_DLY1(n) (HW_PDB_POnDLY(n).B.DLY1) +#endif + +//! @brief Format value for bitfield PDB_POnDLY_DLY1. +#define BF_PDB_POnDLY_DLY1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PDB_POnDLY_DLY1), uint32_t) & BM_PDB_POnDLY_DLY1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DLY1 field to a new value. +#define BW_PDB_POnDLY_DLY1(n, v) (HW_PDB_POnDLY_WR(n, (HW_PDB_POnDLY_RD(n) & ~BM_PDB_POnDLY_DLY1) | BF_PDB_POnDLY_DLY1(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_pdb_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All PDB module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_pdb +{ + __IO hw_pdb_sc_t SC; //!< [0x0] Status and Control register + __IO hw_pdb_mod_t MOD; //!< [0x4] Modulus register + __I hw_pdb_cnt_t CNT; //!< [0x8] Counter register + __IO hw_pdb_idly_t IDLY; //!< [0xC] Interrupt Delay register + struct { + __IO hw_pdb_chnc1_t CHnC1; //!< [0x10] Channel n Control register 1 + __IO hw_pdb_chns_t CHnS; //!< [0x14] Channel n Status register + __IO hw_pdb_chndly0_t CHnDLY0; //!< [0x18] Channel n Delay 0 register + __IO hw_pdb_chndly1_t CHnDLY1; //!< [0x1C] Channel n Delay 1 register + uint8_t _reserved0[24]; + } CH[2]; + uint8_t _reserved0[240]; + struct { + __IO hw_pdb_dacintcn_t DACINTCn; //!< [0x150] DAC Interval Trigger n Control register + __IO hw_pdb_dacintn_t DACINTn; //!< [0x154] DAC Interval n register + } DAC[2]; + uint8_t _reserved1[48]; + __IO hw_pdb_poen_t POEN; //!< [0x190] Pulse-Out n Enable register + __IO hw_pdb_pondly_t POnDLY[3]; //!< [0x194] Pulse-Out n Delay register +} hw_pdb_t; +#pragma pack() + +//! @brief Macro to access all PDB registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_PDB</code>. +#define HW_PDB (*(hw_pdb_t *) REGS_PDB_BASE) +#endif + +#endif // __HW_PDB_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_pit.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,517 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_PIT_REGISTERS_H__ +#define __HW_PIT_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 PIT + * + * Periodic Interrupt Timer + * + * Registers defined in this header file: + * - HW_PIT_MCR - PIT Module Control Register + * - HW_PIT_LDVALn - Timer Load Value Register + * - HW_PIT_CVALn - Current Timer Value Register + * - HW_PIT_TCTRLn - Timer Control Register + * - HW_PIT_TFLGn - Timer Flag Register + * + * - hw_pit_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_PIT_BASE +#define HW_PIT_INSTANCE_COUNT (1U) //!< Number of instances of the PIT module. +#define REGS_PIT_BASE (0x40037000U) //!< Base address for PIT. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PIT_MCR - PIT Module Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PIT_MCR - PIT Module Control Register (RW) + * + * Reset value: 0x00000006U + * + * This register enables or disables the PIT timer clocks and controls the + * timers when the PIT enters the Debug mode. + */ +typedef union _hw_pit_mcr +{ + uint32_t U; + struct _hw_pit_mcr_bitfields + { + uint32_t FRZ : 1; //!< [0] Freeze + uint32_t MDIS : 1; //!< [1] Module Disable - (PIT section) + uint32_t RESERVED0 : 30; //!< [31:2] + } B; +} hw_pit_mcr_t; +#endif + +/*! + * @name Constants and macros for entire PIT_MCR register + */ +//@{ +#define HW_PIT_MCR_ADDR (REGS_PIT_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PIT_MCR (*(__IO hw_pit_mcr_t *) HW_PIT_MCR_ADDR) +#define HW_PIT_MCR_RD() (HW_PIT_MCR.U) +#define HW_PIT_MCR_WR(v) (HW_PIT_MCR.U = (v)) +#define HW_PIT_MCR_SET(v) (HW_PIT_MCR_WR(HW_PIT_MCR_RD() | (v))) +#define HW_PIT_MCR_CLR(v) (HW_PIT_MCR_WR(HW_PIT_MCR_RD() & ~(v))) +#define HW_PIT_MCR_TOG(v) (HW_PIT_MCR_WR(HW_PIT_MCR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PIT_MCR bitfields + */ + +/*! + * @name Register PIT_MCR, field FRZ[0] (RW) + * + * Allows the timers to be stopped when the device enters the Debug mode. + * + * Values: + * - 0 - Timers continue to run in Debug mode. + * - 1 - Timers are stopped in Debug mode. + */ +//@{ +#define BP_PIT_MCR_FRZ (0U) //!< Bit position for PIT_MCR_FRZ. +#define BM_PIT_MCR_FRZ (0x00000001U) //!< Bit mask for PIT_MCR_FRZ. +#define BS_PIT_MCR_FRZ (1U) //!< Bit field size in bits for PIT_MCR_FRZ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PIT_MCR_FRZ field. +#define BR_PIT_MCR_FRZ (BITBAND_ACCESS32(HW_PIT_MCR_ADDR, BP_PIT_MCR_FRZ)) +#endif + +//! @brief Format value for bitfield PIT_MCR_FRZ. +#define BF_PIT_MCR_FRZ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PIT_MCR_FRZ), uint32_t) & BM_PIT_MCR_FRZ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRZ field to a new value. +#define BW_PIT_MCR_FRZ(v) (BITBAND_ACCESS32(HW_PIT_MCR_ADDR, BP_PIT_MCR_FRZ) = (v)) +#endif +//@} + +/*! + * @name Register PIT_MCR, field MDIS[1] (RW) + * + * Disables the standard timers. This field must be enabled before any other + * setup is done. + * + * Values: + * - 0 - Clock for standard PIT timers is enabled. + * - 1 - Clock for standard PIT timers is disabled. + */ +//@{ +#define BP_PIT_MCR_MDIS (1U) //!< Bit position for PIT_MCR_MDIS. +#define BM_PIT_MCR_MDIS (0x00000002U) //!< Bit mask for PIT_MCR_MDIS. +#define BS_PIT_MCR_MDIS (1U) //!< Bit field size in bits for PIT_MCR_MDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PIT_MCR_MDIS field. +#define BR_PIT_MCR_MDIS (BITBAND_ACCESS32(HW_PIT_MCR_ADDR, BP_PIT_MCR_MDIS)) +#endif + +//! @brief Format value for bitfield PIT_MCR_MDIS. +#define BF_PIT_MCR_MDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PIT_MCR_MDIS), uint32_t) & BM_PIT_MCR_MDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MDIS field to a new value. +#define BW_PIT_MCR_MDIS(v) (BITBAND_ACCESS32(HW_PIT_MCR_ADDR, BP_PIT_MCR_MDIS) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PIT_LDVALn - Timer Load Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PIT_LDVALn - Timer Load Value Register (RW) + * + * Reset value: 0x00000000U + * + * These registers select the timeout period for the timer interrupts. + */ +typedef union _hw_pit_ldvaln +{ + uint32_t U; + struct _hw_pit_ldvaln_bitfields + { + uint32_t TSV : 32; //!< [31:0] Timer Start Value + } B; +} hw_pit_ldvaln_t; +#endif + +/*! + * @name Constants and macros for entire PIT_LDVALn register + */ +//@{ +#define HW_PIT_LDVALn_COUNT (4U) + +#define HW_PIT_LDVALn_ADDR(n) (REGS_PIT_BASE + 0x100U + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PIT_LDVALn(n) (*(__IO hw_pit_ldvaln_t *) HW_PIT_LDVALn_ADDR(n)) +#define HW_PIT_LDVALn_RD(n) (HW_PIT_LDVALn(n).U) +#define HW_PIT_LDVALn_WR(n, v) (HW_PIT_LDVALn(n).U = (v)) +#define HW_PIT_LDVALn_SET(n, v) (HW_PIT_LDVALn_WR(n, HW_PIT_LDVALn_RD(n) | (v))) +#define HW_PIT_LDVALn_CLR(n, v) (HW_PIT_LDVALn_WR(n, HW_PIT_LDVALn_RD(n) & ~(v))) +#define HW_PIT_LDVALn_TOG(n, v) (HW_PIT_LDVALn_WR(n, HW_PIT_LDVALn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PIT_LDVALn bitfields + */ + +/*! + * @name Register PIT_LDVALn, field TSV[31:0] (RW) + * + * Sets the timer start value. The timer will count down until it reaches 0, + * then it will generate an interrupt and load this register value again. Writing a + * new value to this register will not restart the timer; instead the value will + * be loaded after the timer expires. To abort the current cycle and start a + * timer period with the new value, the timer must be disabled and enabled again. + */ +//@{ +#define BP_PIT_LDVALn_TSV (0U) //!< Bit position for PIT_LDVALn_TSV. +#define BM_PIT_LDVALn_TSV (0xFFFFFFFFU) //!< Bit mask for PIT_LDVALn_TSV. +#define BS_PIT_LDVALn_TSV (32U) //!< Bit field size in bits for PIT_LDVALn_TSV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PIT_LDVALn_TSV field. +#define BR_PIT_LDVALn_TSV(n) (HW_PIT_LDVALn(n).U) +#endif + +//! @brief Format value for bitfield PIT_LDVALn_TSV. +#define BF_PIT_LDVALn_TSV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PIT_LDVALn_TSV), uint32_t) & BM_PIT_LDVALn_TSV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TSV field to a new value. +#define BW_PIT_LDVALn_TSV(n, v) (HW_PIT_LDVALn_WR(n, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_PIT_CVALn - Current Timer Value Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PIT_CVALn - Current Timer Value Register (RO) + * + * Reset value: 0x00000000U + * + * These registers indicate the current timer position. + */ +typedef union _hw_pit_cvaln +{ + uint32_t U; + struct _hw_pit_cvaln_bitfields + { + uint32_t TVL : 32; //!< [31:0] Current Timer Value + } B; +} hw_pit_cvaln_t; +#endif + +/*! + * @name Constants and macros for entire PIT_CVALn register + */ +//@{ +#define HW_PIT_CVALn_COUNT (4U) + +#define HW_PIT_CVALn_ADDR(n) (REGS_PIT_BASE + 0x104U + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PIT_CVALn(n) (*(__I hw_pit_cvaln_t *) HW_PIT_CVALn_ADDR(n)) +#define HW_PIT_CVALn_RD(n) (HW_PIT_CVALn(n).U) +#endif +//@} + +/* + * Constants & macros for individual PIT_CVALn bitfields + */ + +/*! + * @name Register PIT_CVALn, field TVL[31:0] (RO) + * + * Represents the current timer value, if the timer is enabled. If the timer is + * disabled, do not use this field as its value is unreliable. The timer uses a + * downcounter. The timer values are frozen in Debug mode if MCR[FRZ] is set. + */ +//@{ +#define BP_PIT_CVALn_TVL (0U) //!< Bit position for PIT_CVALn_TVL. +#define BM_PIT_CVALn_TVL (0xFFFFFFFFU) //!< Bit mask for PIT_CVALn_TVL. +#define BS_PIT_CVALn_TVL (32U) //!< Bit field size in bits for PIT_CVALn_TVL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PIT_CVALn_TVL field. +#define BR_PIT_CVALn_TVL(n) (HW_PIT_CVALn(n).U) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_PIT_TCTRLn - Timer Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PIT_TCTRLn - Timer Control Register (RW) + * + * Reset value: 0x00000000U + * + * These registers contain the control bits for each timer. + */ +typedef union _hw_pit_tctrln +{ + uint32_t U; + struct _hw_pit_tctrln_bitfields + { + uint32_t TEN : 1; //!< [0] Timer Enable + uint32_t TIE : 1; //!< [1] Timer Interrupt Enable + uint32_t CHN : 1; //!< [2] Chain Mode + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_pit_tctrln_t; +#endif + +/*! + * @name Constants and macros for entire PIT_TCTRLn register + */ +//@{ +#define HW_PIT_TCTRLn_COUNT (4U) + +#define HW_PIT_TCTRLn_ADDR(n) (REGS_PIT_BASE + 0x108U + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PIT_TCTRLn(n) (*(__IO hw_pit_tctrln_t *) HW_PIT_TCTRLn_ADDR(n)) +#define HW_PIT_TCTRLn_RD(n) (HW_PIT_TCTRLn(n).U) +#define HW_PIT_TCTRLn_WR(n, v) (HW_PIT_TCTRLn(n).U = (v)) +#define HW_PIT_TCTRLn_SET(n, v) (HW_PIT_TCTRLn_WR(n, HW_PIT_TCTRLn_RD(n) | (v))) +#define HW_PIT_TCTRLn_CLR(n, v) (HW_PIT_TCTRLn_WR(n, HW_PIT_TCTRLn_RD(n) & ~(v))) +#define HW_PIT_TCTRLn_TOG(n, v) (HW_PIT_TCTRLn_WR(n, HW_PIT_TCTRLn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PIT_TCTRLn bitfields + */ + +/*! + * @name Register PIT_TCTRLn, field TEN[0] (RW) + * + * Enables or disables the timer. + * + * Values: + * - 0 - Timer n is disabled. + * - 1 - Timer n is enabled. + */ +//@{ +#define BP_PIT_TCTRLn_TEN (0U) //!< Bit position for PIT_TCTRLn_TEN. +#define BM_PIT_TCTRLn_TEN (0x00000001U) //!< Bit mask for PIT_TCTRLn_TEN. +#define BS_PIT_TCTRLn_TEN (1U) //!< Bit field size in bits for PIT_TCTRLn_TEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PIT_TCTRLn_TEN field. +#define BR_PIT_TCTRLn_TEN(n) (BITBAND_ACCESS32(HW_PIT_TCTRLn_ADDR(n), BP_PIT_TCTRLn_TEN)) +#endif + +//! @brief Format value for bitfield PIT_TCTRLn_TEN. +#define BF_PIT_TCTRLn_TEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PIT_TCTRLn_TEN), uint32_t) & BM_PIT_TCTRLn_TEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TEN field to a new value. +#define BW_PIT_TCTRLn_TEN(n, v) (BITBAND_ACCESS32(HW_PIT_TCTRLn_ADDR(n), BP_PIT_TCTRLn_TEN) = (v)) +#endif +//@} + +/*! + * @name Register PIT_TCTRLn, field TIE[1] (RW) + * + * When an interrupt is pending, or, TFLGn[TIF] is set, enabling the interrupt + * will immediately cause an interrupt event. To avoid this, the associated + * TFLGn[TIF] must be cleared first. + * + * Values: + * - 0 - Interrupt requests from Timer n are disabled. + * - 1 - Interrupt will be requested whenever TIF is set. + */ +//@{ +#define BP_PIT_TCTRLn_TIE (1U) //!< Bit position for PIT_TCTRLn_TIE. +#define BM_PIT_TCTRLn_TIE (0x00000002U) //!< Bit mask for PIT_TCTRLn_TIE. +#define BS_PIT_TCTRLn_TIE (1U) //!< Bit field size in bits for PIT_TCTRLn_TIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PIT_TCTRLn_TIE field. +#define BR_PIT_TCTRLn_TIE(n) (BITBAND_ACCESS32(HW_PIT_TCTRLn_ADDR(n), BP_PIT_TCTRLn_TIE)) +#endif + +//! @brief Format value for bitfield PIT_TCTRLn_TIE. +#define BF_PIT_TCTRLn_TIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PIT_TCTRLn_TIE), uint32_t) & BM_PIT_TCTRLn_TIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIE field to a new value. +#define BW_PIT_TCTRLn_TIE(n, v) (BITBAND_ACCESS32(HW_PIT_TCTRLn_ADDR(n), BP_PIT_TCTRLn_TIE) = (v)) +#endif +//@} + +/*! + * @name Register PIT_TCTRLn, field CHN[2] (RW) + * + * When activated, Timer n-1 needs to expire before timer n can decrement by 1. + * Timer 0 cannot be chained. + * + * Values: + * - 0 - Timer is not chained. + * - 1 - Timer is chained to previous timer. For example, for Channel 2, if this + * field is set, Timer 2 is chained to Timer 1. + */ +//@{ +#define BP_PIT_TCTRLn_CHN (2U) //!< Bit position for PIT_TCTRLn_CHN. +#define BM_PIT_TCTRLn_CHN (0x00000004U) //!< Bit mask for PIT_TCTRLn_CHN. +#define BS_PIT_TCTRLn_CHN (1U) //!< Bit field size in bits for PIT_TCTRLn_CHN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PIT_TCTRLn_CHN field. +#define BR_PIT_TCTRLn_CHN(n) (BITBAND_ACCESS32(HW_PIT_TCTRLn_ADDR(n), BP_PIT_TCTRLn_CHN)) +#endif + +//! @brief Format value for bitfield PIT_TCTRLn_CHN. +#define BF_PIT_TCTRLn_CHN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PIT_TCTRLn_CHN), uint32_t) & BM_PIT_TCTRLn_CHN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CHN field to a new value. +#define BW_PIT_TCTRLn_CHN(n, v) (BITBAND_ACCESS32(HW_PIT_TCTRLn_ADDR(n), BP_PIT_TCTRLn_CHN) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_PIT_TFLGn - Timer Flag Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PIT_TFLGn - Timer Flag Register (RW) + * + * Reset value: 0x00000000U + * + * These registers hold the PIT interrupt flags. + */ +typedef union _hw_pit_tflgn +{ + uint32_t U; + struct _hw_pit_tflgn_bitfields + { + uint32_t TIF : 1; //!< [0] Timer Interrupt Flag + uint32_t RESERVED0 : 31; //!< [31:1] + } B; +} hw_pit_tflgn_t; +#endif + +/*! + * @name Constants and macros for entire PIT_TFLGn register + */ +//@{ +#define HW_PIT_TFLGn_COUNT (4U) + +#define HW_PIT_TFLGn_ADDR(n) (REGS_PIT_BASE + 0x10CU + (0x10U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PIT_TFLGn(n) (*(__IO hw_pit_tflgn_t *) HW_PIT_TFLGn_ADDR(n)) +#define HW_PIT_TFLGn_RD(n) (HW_PIT_TFLGn(n).U) +#define HW_PIT_TFLGn_WR(n, v) (HW_PIT_TFLGn(n).U = (v)) +#define HW_PIT_TFLGn_SET(n, v) (HW_PIT_TFLGn_WR(n, HW_PIT_TFLGn_RD(n) | (v))) +#define HW_PIT_TFLGn_CLR(n, v) (HW_PIT_TFLGn_WR(n, HW_PIT_TFLGn_RD(n) & ~(v))) +#define HW_PIT_TFLGn_TOG(n, v) (HW_PIT_TFLGn_WR(n, HW_PIT_TFLGn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PIT_TFLGn bitfields + */ + +/*! + * @name Register PIT_TFLGn, field TIF[0] (W1C) + * + * Sets to 1 at the end of the timer period. Writing 1 to this flag clears it. + * Writing 0 has no effect. If enabled, or, when TCTRLn[TIE] = 1, TIF causes an + * interrupt request. + * + * Values: + * - 0 - Timeout has not yet occurred. + * - 1 - Timeout has occurred. + */ +//@{ +#define BP_PIT_TFLGn_TIF (0U) //!< Bit position for PIT_TFLGn_TIF. +#define BM_PIT_TFLGn_TIF (0x00000001U) //!< Bit mask for PIT_TFLGn_TIF. +#define BS_PIT_TFLGn_TIF (1U) //!< Bit field size in bits for PIT_TFLGn_TIF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PIT_TFLGn_TIF field. +#define BR_PIT_TFLGn_TIF(n) (BITBAND_ACCESS32(HW_PIT_TFLGn_ADDR(n), BP_PIT_TFLGn_TIF)) +#endif + +//! @brief Format value for bitfield PIT_TFLGn_TIF. +#define BF_PIT_TFLGn_TIF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PIT_TFLGn_TIF), uint32_t) & BM_PIT_TFLGn_TIF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIF field to a new value. +#define BW_PIT_TFLGn_TIF(n, v) (BITBAND_ACCESS32(HW_PIT_TFLGn_ADDR(n), BP_PIT_TFLGn_TIF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_pit_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All PIT module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_pit +{ + __IO hw_pit_mcr_t MCR; //!< [0x0] PIT Module Control Register + uint8_t _reserved0[252]; + struct { + __IO hw_pit_ldvaln_t LDVALn; //!< [0x100] Timer Load Value Register + __I hw_pit_cvaln_t CVALn; //!< [0x104] Current Timer Value Register + __IO hw_pit_tctrln_t TCTRLn; //!< [0x108] Timer Control Register + __IO hw_pit_tflgn_t TFLGn; //!< [0x10C] Timer Flag Register + } CHANNEL[4]; +} hw_pit_t; +#pragma pack() + +//! @brief Macro to access all PIT registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_PIT</code>. +#define HW_PIT (*(hw_pit_t *) REGS_PIT_BASE) +#endif + +#endif // __HW_PIT_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_pmc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,577 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_PMC_REGISTERS_H__ +#define __HW_PMC_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 PMC + * + * Power Management Controller + * + * Registers defined in this header file: + * - HW_PMC_LVDSC1 - Low Voltage Detect Status And Control 1 register + * - HW_PMC_LVDSC2 - Low Voltage Detect Status And Control 2 register + * - HW_PMC_REGSC - Regulator Status And Control register + * + * - hw_pmc_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_PMC_BASE +#define HW_PMC_INSTANCE_COUNT (1U) //!< Number of instances of the PMC module. +#define REGS_PMC_BASE (0x4007D000U) //!< Base address for PMC. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PMC_LVDSC1 - Low Voltage Detect Status And Control 1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PMC_LVDSC1 - Low Voltage Detect Status And Control 1 register (RW) + * + * Reset value: 0x10U + * + * This register contains status and control bits to support the low voltage + * detect function. This register should be written during the reset initialization + * program to set the desired controls even if the desired settings are the same + * as the reset settings. While the device is in the very low power or low + * leakage modes, the LVD system is disabled regardless of LVDSC1 settings. To protect + * systems that must have LVD always on, configure the Power Mode Protection + * (PMPROT) register of the SMC module (SMC_PMPROT) to disallow any very low power or + * low leakage modes from being enabled. See the device's data sheet for the + * exact LVD trip voltages. The LVDV bits are reset solely on a POR Only event. The + * register's other bits are reset on Chip Reset Not VLLS. For more information + * about these reset types, refer to the Reset section details. + */ +typedef union _hw_pmc_lvdsc1 +{ + uint8_t U; + struct _hw_pmc_lvdsc1_bitfields + { + uint8_t LVDV : 2; //!< [1:0] Low-Voltage Detect Voltage Select + uint8_t RESERVED0 : 2; //!< [3:2] + uint8_t LVDRE : 1; //!< [4] Low-Voltage Detect Reset Enable + uint8_t LVDIE : 1; //!< [5] Low-Voltage Detect Interrupt Enable + uint8_t LVDACK : 1; //!< [6] Low-Voltage Detect Acknowledge + uint8_t LVDF : 1; //!< [7] Low-Voltage Detect Flag + } B; +} hw_pmc_lvdsc1_t; +#endif + +/*! + * @name Constants and macros for entire PMC_LVDSC1 register + */ +//@{ +#define HW_PMC_LVDSC1_ADDR (REGS_PMC_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PMC_LVDSC1 (*(__IO hw_pmc_lvdsc1_t *) HW_PMC_LVDSC1_ADDR) +#define HW_PMC_LVDSC1_RD() (HW_PMC_LVDSC1.U) +#define HW_PMC_LVDSC1_WR(v) (HW_PMC_LVDSC1.U = (v)) +#define HW_PMC_LVDSC1_SET(v) (HW_PMC_LVDSC1_WR(HW_PMC_LVDSC1_RD() | (v))) +#define HW_PMC_LVDSC1_CLR(v) (HW_PMC_LVDSC1_WR(HW_PMC_LVDSC1_RD() & ~(v))) +#define HW_PMC_LVDSC1_TOG(v) (HW_PMC_LVDSC1_WR(HW_PMC_LVDSC1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PMC_LVDSC1 bitfields + */ + +/*! + * @name Register PMC_LVDSC1, field LVDV[1:0] (RW) + * + * Selects the LVD trip point voltage (V LVD ). + * + * Values: + * - 00 - Low trip point selected (V LVD = V LVDL ) + * - 01 - High trip point selected (V LVD = V LVDH ) + * - 10 - Reserved + * - 11 - Reserved + */ +//@{ +#define BP_PMC_LVDSC1_LVDV (0U) //!< Bit position for PMC_LVDSC1_LVDV. +#define BM_PMC_LVDSC1_LVDV (0x03U) //!< Bit mask for PMC_LVDSC1_LVDV. +#define BS_PMC_LVDSC1_LVDV (2U) //!< Bit field size in bits for PMC_LVDSC1_LVDV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_LVDSC1_LVDV field. +#define BR_PMC_LVDSC1_LVDV (HW_PMC_LVDSC1.B.LVDV) +#endif + +//! @brief Format value for bitfield PMC_LVDSC1_LVDV. +#define BF_PMC_LVDSC1_LVDV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_LVDSC1_LVDV), uint8_t) & BM_PMC_LVDSC1_LVDV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LVDV field to a new value. +#define BW_PMC_LVDSC1_LVDV(v) (HW_PMC_LVDSC1_WR((HW_PMC_LVDSC1_RD() & ~BM_PMC_LVDSC1_LVDV) | BF_PMC_LVDSC1_LVDV(v))) +#endif +//@} + +/*! + * @name Register PMC_LVDSC1, field LVDRE[4] (RW) + * + * This write-once bit enables LVDF events to generate a hardware reset. + * Additional writes are ignored. + * + * Values: + * - 0 - LVDF does not generate hardware resets + * - 1 - Force an MCU reset when LVDF = 1 + */ +//@{ +#define BP_PMC_LVDSC1_LVDRE (4U) //!< Bit position for PMC_LVDSC1_LVDRE. +#define BM_PMC_LVDSC1_LVDRE (0x10U) //!< Bit mask for PMC_LVDSC1_LVDRE. +#define BS_PMC_LVDSC1_LVDRE (1U) //!< Bit field size in bits for PMC_LVDSC1_LVDRE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_LVDSC1_LVDRE field. +#define BR_PMC_LVDSC1_LVDRE (BITBAND_ACCESS8(HW_PMC_LVDSC1_ADDR, BP_PMC_LVDSC1_LVDRE)) +#endif + +//! @brief Format value for bitfield PMC_LVDSC1_LVDRE. +#define BF_PMC_LVDSC1_LVDRE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_LVDSC1_LVDRE), uint8_t) & BM_PMC_LVDSC1_LVDRE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LVDRE field to a new value. +#define BW_PMC_LVDSC1_LVDRE(v) (BITBAND_ACCESS8(HW_PMC_LVDSC1_ADDR, BP_PMC_LVDSC1_LVDRE) = (v)) +#endif +//@} + +/*! + * @name Register PMC_LVDSC1, field LVDIE[5] (RW) + * + * Enables hardware interrupt requests for LVDF. + * + * Values: + * - 0 - Hardware interrupt disabled (use polling) + * - 1 - Request a hardware interrupt when LVDF = 1 + */ +//@{ +#define BP_PMC_LVDSC1_LVDIE (5U) //!< Bit position for PMC_LVDSC1_LVDIE. +#define BM_PMC_LVDSC1_LVDIE (0x20U) //!< Bit mask for PMC_LVDSC1_LVDIE. +#define BS_PMC_LVDSC1_LVDIE (1U) //!< Bit field size in bits for PMC_LVDSC1_LVDIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_LVDSC1_LVDIE field. +#define BR_PMC_LVDSC1_LVDIE (BITBAND_ACCESS8(HW_PMC_LVDSC1_ADDR, BP_PMC_LVDSC1_LVDIE)) +#endif + +//! @brief Format value for bitfield PMC_LVDSC1_LVDIE. +#define BF_PMC_LVDSC1_LVDIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_LVDSC1_LVDIE), uint8_t) & BM_PMC_LVDSC1_LVDIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LVDIE field to a new value. +#define BW_PMC_LVDSC1_LVDIE(v) (BITBAND_ACCESS8(HW_PMC_LVDSC1_ADDR, BP_PMC_LVDSC1_LVDIE) = (v)) +#endif +//@} + +/*! + * @name Register PMC_LVDSC1, field LVDACK[6] (WORZ) + * + * This write-only field is used to acknowledge low voltage detection errors. + * Write 1 to clear LVDF. Reads always return 0. + */ +//@{ +#define BP_PMC_LVDSC1_LVDACK (6U) //!< Bit position for PMC_LVDSC1_LVDACK. +#define BM_PMC_LVDSC1_LVDACK (0x40U) //!< Bit mask for PMC_LVDSC1_LVDACK. +#define BS_PMC_LVDSC1_LVDACK (1U) //!< Bit field size in bits for PMC_LVDSC1_LVDACK. + +//! @brief Format value for bitfield PMC_LVDSC1_LVDACK. +#define BF_PMC_LVDSC1_LVDACK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_LVDSC1_LVDACK), uint8_t) & BM_PMC_LVDSC1_LVDACK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LVDACK field to a new value. +#define BW_PMC_LVDSC1_LVDACK(v) (BITBAND_ACCESS8(HW_PMC_LVDSC1_ADDR, BP_PMC_LVDSC1_LVDACK) = (v)) +#endif +//@} + +/*! + * @name Register PMC_LVDSC1, field LVDF[7] (RO) + * + * This read-only status field indicates a low-voltage detect event. + * + * Values: + * - 0 - Low-voltage event not detected + * - 1 - Low-voltage event detected + */ +//@{ +#define BP_PMC_LVDSC1_LVDF (7U) //!< Bit position for PMC_LVDSC1_LVDF. +#define BM_PMC_LVDSC1_LVDF (0x80U) //!< Bit mask for PMC_LVDSC1_LVDF. +#define BS_PMC_LVDSC1_LVDF (1U) //!< Bit field size in bits for PMC_LVDSC1_LVDF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_LVDSC1_LVDF field. +#define BR_PMC_LVDSC1_LVDF (BITBAND_ACCESS8(HW_PMC_LVDSC1_ADDR, BP_PMC_LVDSC1_LVDF)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PMC_LVDSC2 - Low Voltage Detect Status And Control 2 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PMC_LVDSC2 - Low Voltage Detect Status And Control 2 register (RW) + * + * Reset value: 0x00U + * + * This register contains status and control bits to support the low voltage + * warning function. While the device is in the very low power or low leakage modes, + * the LVD system is disabled regardless of LVDSC2 settings. See the device's + * data sheet for the exact LVD trip voltages. The LVW trip voltages depend on LVWV + * and LVDV. LVWV is reset solely on a POR Only event. The other fields of the + * register are reset on Chip Reset Not VLLS. For more information about these + * reset types, refer to the Reset section details. + */ +typedef union _hw_pmc_lvdsc2 +{ + uint8_t U; + struct _hw_pmc_lvdsc2_bitfields + { + uint8_t LVWV : 2; //!< [1:0] Low-Voltage Warning Voltage Select + uint8_t RESERVED0 : 3; //!< [4:2] + uint8_t LVWIE : 1; //!< [5] Low-Voltage Warning Interrupt Enable + uint8_t LVWACK : 1; //!< [6] Low-Voltage Warning Acknowledge + uint8_t LVWF : 1; //!< [7] Low-Voltage Warning Flag + } B; +} hw_pmc_lvdsc2_t; +#endif + +/*! + * @name Constants and macros for entire PMC_LVDSC2 register + */ +//@{ +#define HW_PMC_LVDSC2_ADDR (REGS_PMC_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PMC_LVDSC2 (*(__IO hw_pmc_lvdsc2_t *) HW_PMC_LVDSC2_ADDR) +#define HW_PMC_LVDSC2_RD() (HW_PMC_LVDSC2.U) +#define HW_PMC_LVDSC2_WR(v) (HW_PMC_LVDSC2.U = (v)) +#define HW_PMC_LVDSC2_SET(v) (HW_PMC_LVDSC2_WR(HW_PMC_LVDSC2_RD() | (v))) +#define HW_PMC_LVDSC2_CLR(v) (HW_PMC_LVDSC2_WR(HW_PMC_LVDSC2_RD() & ~(v))) +#define HW_PMC_LVDSC2_TOG(v) (HW_PMC_LVDSC2_WR(HW_PMC_LVDSC2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PMC_LVDSC2 bitfields + */ + +/*! + * @name Register PMC_LVDSC2, field LVWV[1:0] (RW) + * + * Selects the LVW trip point voltage (VLVW). The actual voltage for the warning + * depends on LVDSC1[LVDV]. + * + * Values: + * - 00 - Low trip point selected (VLVW = VLVW1) + * - 01 - Mid 1 trip point selected (VLVW = VLVW2) + * - 10 - Mid 2 trip point selected (VLVW = VLVW3) + * - 11 - High trip point selected (VLVW = VLVW4) + */ +//@{ +#define BP_PMC_LVDSC2_LVWV (0U) //!< Bit position for PMC_LVDSC2_LVWV. +#define BM_PMC_LVDSC2_LVWV (0x03U) //!< Bit mask for PMC_LVDSC2_LVWV. +#define BS_PMC_LVDSC2_LVWV (2U) //!< Bit field size in bits for PMC_LVDSC2_LVWV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_LVDSC2_LVWV field. +#define BR_PMC_LVDSC2_LVWV (HW_PMC_LVDSC2.B.LVWV) +#endif + +//! @brief Format value for bitfield PMC_LVDSC2_LVWV. +#define BF_PMC_LVDSC2_LVWV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_LVDSC2_LVWV), uint8_t) & BM_PMC_LVDSC2_LVWV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LVWV field to a new value. +#define BW_PMC_LVDSC2_LVWV(v) (HW_PMC_LVDSC2_WR((HW_PMC_LVDSC2_RD() & ~BM_PMC_LVDSC2_LVWV) | BF_PMC_LVDSC2_LVWV(v))) +#endif +//@} + +/*! + * @name Register PMC_LVDSC2, field LVWIE[5] (RW) + * + * Enables hardware interrupt requests for LVWF. + * + * Values: + * - 0 - Hardware interrupt disabled (use polling) + * - 1 - Request a hardware interrupt when LVWF = 1 + */ +//@{ +#define BP_PMC_LVDSC2_LVWIE (5U) //!< Bit position for PMC_LVDSC2_LVWIE. +#define BM_PMC_LVDSC2_LVWIE (0x20U) //!< Bit mask for PMC_LVDSC2_LVWIE. +#define BS_PMC_LVDSC2_LVWIE (1U) //!< Bit field size in bits for PMC_LVDSC2_LVWIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_LVDSC2_LVWIE field. +#define BR_PMC_LVDSC2_LVWIE (BITBAND_ACCESS8(HW_PMC_LVDSC2_ADDR, BP_PMC_LVDSC2_LVWIE)) +#endif + +//! @brief Format value for bitfield PMC_LVDSC2_LVWIE. +#define BF_PMC_LVDSC2_LVWIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_LVDSC2_LVWIE), uint8_t) & BM_PMC_LVDSC2_LVWIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LVWIE field to a new value. +#define BW_PMC_LVDSC2_LVWIE(v) (BITBAND_ACCESS8(HW_PMC_LVDSC2_ADDR, BP_PMC_LVDSC2_LVWIE) = (v)) +#endif +//@} + +/*! + * @name Register PMC_LVDSC2, field LVWACK[6] (WORZ) + * + * This write-only field is used to acknowledge low voltage warning errors. + * Write 1 to clear LVWF. Reads always return 0. + */ +//@{ +#define BP_PMC_LVDSC2_LVWACK (6U) //!< Bit position for PMC_LVDSC2_LVWACK. +#define BM_PMC_LVDSC2_LVWACK (0x40U) //!< Bit mask for PMC_LVDSC2_LVWACK. +#define BS_PMC_LVDSC2_LVWACK (1U) //!< Bit field size in bits for PMC_LVDSC2_LVWACK. + +//! @brief Format value for bitfield PMC_LVDSC2_LVWACK. +#define BF_PMC_LVDSC2_LVWACK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_LVDSC2_LVWACK), uint8_t) & BM_PMC_LVDSC2_LVWACK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LVWACK field to a new value. +#define BW_PMC_LVDSC2_LVWACK(v) (BITBAND_ACCESS8(HW_PMC_LVDSC2_ADDR, BP_PMC_LVDSC2_LVWACK) = (v)) +#endif +//@} + +/*! + * @name Register PMC_LVDSC2, field LVWF[7] (RO) + * + * This read-only status field indicates a low-voltage warning event. LVWF is + * set when VSupply transitions below the trip point, or after reset and VSupply is + * already below VLVW. LVWF may be 1 after power-on reset, therefore, to use LVW + * interrupt function, before enabling LVWIE, LVWF must be cleared by writing + * LVWACK first. + * + * Values: + * - 0 - Low-voltage warning event not detected + * - 1 - Low-voltage warning event detected + */ +//@{ +#define BP_PMC_LVDSC2_LVWF (7U) //!< Bit position for PMC_LVDSC2_LVWF. +#define BM_PMC_LVDSC2_LVWF (0x80U) //!< Bit mask for PMC_LVDSC2_LVWF. +#define BS_PMC_LVDSC2_LVWF (1U) //!< Bit field size in bits for PMC_LVDSC2_LVWF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_LVDSC2_LVWF field. +#define BR_PMC_LVDSC2_LVWF (BITBAND_ACCESS8(HW_PMC_LVDSC2_ADDR, BP_PMC_LVDSC2_LVWF)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PMC_REGSC - Regulator Status And Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PMC_REGSC - Regulator Status And Control register (RW) + * + * Reset value: 0x04U + * + * The PMC contains an internal voltage regulator. The voltage regulator design + * uses a bandgap reference that is also available through a buffer as input to + * certain internal peripherals, such as the CMP and ADC. The internal regulator + * provides a status bit (REGONS) indicating the regulator is in run regulation. + * This register is reset on Chip Reset Not VLLS and by reset types that trigger + * Chip Reset not VLLS. See the Reset section details for more information. + */ +typedef union _hw_pmc_regsc +{ + uint8_t U; + struct _hw_pmc_regsc_bitfields + { + uint8_t BGBE : 1; //!< [0] Bandgap Buffer Enable + uint8_t RESERVED0 : 1; //!< [1] + uint8_t REGONS : 1; //!< [2] Regulator In Run Regulation Status + uint8_t ACKISO : 1; //!< [3] Acknowledge Isolation + uint8_t BGEN : 1; //!< [4] Bandgap Enable In VLPx Operation + uint8_t RESERVED1 : 3; //!< [7:5] + } B; +} hw_pmc_regsc_t; +#endif + +/*! + * @name Constants and macros for entire PMC_REGSC register + */ +//@{ +#define HW_PMC_REGSC_ADDR (REGS_PMC_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PMC_REGSC (*(__IO hw_pmc_regsc_t *) HW_PMC_REGSC_ADDR) +#define HW_PMC_REGSC_RD() (HW_PMC_REGSC.U) +#define HW_PMC_REGSC_WR(v) (HW_PMC_REGSC.U = (v)) +#define HW_PMC_REGSC_SET(v) (HW_PMC_REGSC_WR(HW_PMC_REGSC_RD() | (v))) +#define HW_PMC_REGSC_CLR(v) (HW_PMC_REGSC_WR(HW_PMC_REGSC_RD() & ~(v))) +#define HW_PMC_REGSC_TOG(v) (HW_PMC_REGSC_WR(HW_PMC_REGSC_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PMC_REGSC bitfields + */ + +/*! + * @name Register PMC_REGSC, field BGBE[0] (RW) + * + * Enables the bandgap buffer. + * + * Values: + * - 0 - Bandgap buffer not enabled + * - 1 - Bandgap buffer enabled + */ +//@{ +#define BP_PMC_REGSC_BGBE (0U) //!< Bit position for PMC_REGSC_BGBE. +#define BM_PMC_REGSC_BGBE (0x01U) //!< Bit mask for PMC_REGSC_BGBE. +#define BS_PMC_REGSC_BGBE (1U) //!< Bit field size in bits for PMC_REGSC_BGBE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_REGSC_BGBE field. +#define BR_PMC_REGSC_BGBE (BITBAND_ACCESS8(HW_PMC_REGSC_ADDR, BP_PMC_REGSC_BGBE)) +#endif + +//! @brief Format value for bitfield PMC_REGSC_BGBE. +#define BF_PMC_REGSC_BGBE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_REGSC_BGBE), uint8_t) & BM_PMC_REGSC_BGBE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BGBE field to a new value. +#define BW_PMC_REGSC_BGBE(v) (BITBAND_ACCESS8(HW_PMC_REGSC_ADDR, BP_PMC_REGSC_BGBE) = (v)) +#endif +//@} + +/*! + * @name Register PMC_REGSC, field REGONS[2] (RO) + * + * This read-only field provides the current status of the internal voltage + * regulator. + * + * Values: + * - 0 - Regulator is in stop regulation or in transition to/from it + * - 1 - Regulator is in run regulation + */ +//@{ +#define BP_PMC_REGSC_REGONS (2U) //!< Bit position for PMC_REGSC_REGONS. +#define BM_PMC_REGSC_REGONS (0x04U) //!< Bit mask for PMC_REGSC_REGONS. +#define BS_PMC_REGSC_REGONS (1U) //!< Bit field size in bits for PMC_REGSC_REGONS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_REGSC_REGONS field. +#define BR_PMC_REGSC_REGONS (BITBAND_ACCESS8(HW_PMC_REGSC_ADDR, BP_PMC_REGSC_REGONS)) +#endif +//@} + +/*! + * @name Register PMC_REGSC, field ACKISO[3] (W1C) + * + * Reading this field indicates whether certain peripherals and the I/O pads are + * in a latched state as a result of having been in a VLLS mode. Writing 1 to + * this field when it is set releases the I/O pads and certain peripherals to their + * normal run mode state. After recovering from a VLLS mode, user should restore + * chip configuration before clearing ACKISO. In particular, pin configuration + * for enabled LLWU wakeup pins should be restored to avoid any LLWU flag from + * being falsely set when ACKISO is cleared. + * + * Values: + * - 0 - Peripherals and I/O pads are in normal run state. + * - 1 - Certain peripherals and I/O pads are in an isolated and latched state. + */ +//@{ +#define BP_PMC_REGSC_ACKISO (3U) //!< Bit position for PMC_REGSC_ACKISO. +#define BM_PMC_REGSC_ACKISO (0x08U) //!< Bit mask for PMC_REGSC_ACKISO. +#define BS_PMC_REGSC_ACKISO (1U) //!< Bit field size in bits for PMC_REGSC_ACKISO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_REGSC_ACKISO field. +#define BR_PMC_REGSC_ACKISO (BITBAND_ACCESS8(HW_PMC_REGSC_ADDR, BP_PMC_REGSC_ACKISO)) +#endif + +//! @brief Format value for bitfield PMC_REGSC_ACKISO. +#define BF_PMC_REGSC_ACKISO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_REGSC_ACKISO), uint8_t) & BM_PMC_REGSC_ACKISO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ACKISO field to a new value. +#define BW_PMC_REGSC_ACKISO(v) (BITBAND_ACCESS8(HW_PMC_REGSC_ADDR, BP_PMC_REGSC_ACKISO) = (v)) +#endif +//@} + +/*! + * @name Register PMC_REGSC, field BGEN[4] (RW) + * + * BGEN controls whether the bandgap is enabled in lower power modes of + * operation (VLPx, LLS, and VLLSx). When on-chip peripherals require the bandgap voltage + * reference in low power modes of operation, set BGEN to continue to enable the + * bandgap operation. When the bandgap voltage reference is not needed in low + * power modes, clear BGEN to avoid excess power consumption. + * + * Values: + * - 0 - Bandgap voltage reference is disabled in VLPx , LLS , and VLLSx modes. + * - 1 - Bandgap voltage reference is enabled in VLPx , LLS , and VLLSx modes. + */ +//@{ +#define BP_PMC_REGSC_BGEN (4U) //!< Bit position for PMC_REGSC_BGEN. +#define BM_PMC_REGSC_BGEN (0x10U) //!< Bit mask for PMC_REGSC_BGEN. +#define BS_PMC_REGSC_BGEN (1U) //!< Bit field size in bits for PMC_REGSC_BGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PMC_REGSC_BGEN field. +#define BR_PMC_REGSC_BGEN (BITBAND_ACCESS8(HW_PMC_REGSC_ADDR, BP_PMC_REGSC_BGEN)) +#endif + +//! @brief Format value for bitfield PMC_REGSC_BGEN. +#define BF_PMC_REGSC_BGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_PMC_REGSC_BGEN), uint8_t) & BM_PMC_REGSC_BGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BGEN field to a new value. +#define BW_PMC_REGSC_BGEN(v) (BITBAND_ACCESS8(HW_PMC_REGSC_ADDR, BP_PMC_REGSC_BGEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_pmc_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All PMC module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_pmc +{ + __IO hw_pmc_lvdsc1_t LVDSC1; //!< [0x0] Low Voltage Detect Status And Control 1 register + __IO hw_pmc_lvdsc2_t LVDSC2; //!< [0x1] Low Voltage Detect Status And Control 2 register + __IO hw_pmc_regsc_t REGSC; //!< [0x2] Regulator Status And Control register +} hw_pmc_t; +#pragma pack() + +//! @brief Macro to access all PMC registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_PMC</code>. +#define HW_PMC (*(hw_pmc_t *) REGS_PMC_BASE) +#endif + +#endif // __HW_PMC_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_port.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,957 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_PORT_REGISTERS_H__ +#define __HW_PORT_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 PORT + * + * Pin Control and Interrupts + * + * Registers defined in this header file: + * - HW_PORT_PCRn - Pin Control Register n + * - HW_PORT_GPCLR - Global Pin Control Low Register + * - HW_PORT_GPCHR - Global Pin Control High Register + * - HW_PORT_ISFR - Interrupt Status Flag Register + * - HW_PORT_DFER - Digital Filter Enable Register + * - HW_PORT_DFCR - Digital Filter Clock Register + * - HW_PORT_DFWR - Digital Filter Width Register + * + * - hw_port_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_PORT_BASE +#define HW_PORT_INSTANCE_COUNT (5U) //!< Number of instances of the PORT module. +#define HW_PORTA (0U) //!< Instance number for PORTA. +#define HW_PORTB (1U) //!< Instance number for PORTB. +#define HW_PORTC (2U) //!< Instance number for PORTC. +#define HW_PORTD (3U) //!< Instance number for PORTD. +#define HW_PORTE (4U) //!< Instance number for PORTE. +#define REGS_PORTA_BASE (0x40049000U) //!< Base address for PORTA. +#define REGS_PORTB_BASE (0x4004A000U) //!< Base address for PORTB. +#define REGS_PORTC_BASE (0x4004B000U) //!< Base address for PORTC. +#define REGS_PORTD_BASE (0x4004C000U) //!< Base address for PORTD. +#define REGS_PORTE_BASE (0x4004D000U) //!< Base address for PORTE. + +//! @brief Table of base addresses for PORT instances. +static const uint32_t __g_regs_PORT_base_addresses[] = { + REGS_PORTA_BASE, + REGS_PORTB_BASE, + REGS_PORTC_BASE, + REGS_PORTD_BASE, + REGS_PORTE_BASE, + }; + +//! @brief Get the base address of PORT by instance number. +//! @param x PORT instance number, from 0 through 4. +#define REGS_PORT_BASE(x) (__g_regs_PORT_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of PORT. +#define REGS_PORT_INSTANCE(b) ((b) == REGS_PORTA_BASE ? HW_PORTA : (b) == REGS_PORTB_BASE ? HW_PORTB : (b) == REGS_PORTC_BASE ? HW_PORTC : (b) == REGS_PORTD_BASE ? HW_PORTD : (b) == REGS_PORTE_BASE ? HW_PORTE : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PORT_PCRn - Pin Control Register n +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PORT_PCRn - Pin Control Register n (RW) + * + * Reset value: 0x00000742U + * + * See the Signal Multiplexing and Pin Assignment chapter for the reset value of + * this device. See the GPIO Configuration section for details on the available + * functions for each pin. Do not modify pin configuration registers associated + * with pins not available in your selected package. All unbonded pins not + * available in your package will default to DISABLE state for lowest power consumption. + */ +typedef union _hw_port_pcrn +{ + uint32_t U; + struct _hw_port_pcrn_bitfields + { + uint32_t PS : 1; //!< [0] Pull Select + uint32_t PE : 1; //!< [1] Pull Enable + uint32_t SRE : 1; //!< [2] Slew Rate Enable + uint32_t RESERVED0 : 1; //!< [3] + uint32_t PFE : 1; //!< [4] Passive Filter Enable + uint32_t ODE : 1; //!< [5] Open Drain Enable + uint32_t DSE : 1; //!< [6] Drive Strength Enable + uint32_t RESERVED1 : 1; //!< [7] + uint32_t MUX : 3; //!< [10:8] Pin Mux Control + uint32_t RESERVED2 : 4; //!< [14:11] + uint32_t LK : 1; //!< [15] Lock Register + uint32_t IRQC : 4; //!< [19:16] Interrupt Configuration + uint32_t RESERVED3 : 4; //!< [23:20] + uint32_t ISF : 1; //!< [24] Interrupt Status Flag + uint32_t RESERVED4 : 7; //!< [31:25] + } B; +} hw_port_pcrn_t; +#endif + +/*! + * @name Constants and macros for entire PORT_PCRn register + */ +//@{ +#define HW_PORT_PCRn_COUNT (32U) + +#define HW_PORT_PCRn_ADDR(x, n) (REGS_PORT_BASE(x) + 0x0U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_PORT_PCRn(x, n) (*(__IO hw_port_pcrn_t *) HW_PORT_PCRn_ADDR(x, n)) +#define HW_PORT_PCRn_RD(x, n) (HW_PORT_PCRn(x, n).U) +#define HW_PORT_PCRn_WR(x, n, v) (HW_PORT_PCRn(x, n).U = (v)) +#define HW_PORT_PCRn_SET(x, n, v) (HW_PORT_PCRn_WR(x, n, HW_PORT_PCRn_RD(x, n) | (v))) +#define HW_PORT_PCRn_CLR(x, n, v) (HW_PORT_PCRn_WR(x, n, HW_PORT_PCRn_RD(x, n) & ~(v))) +#define HW_PORT_PCRn_TOG(x, n, v) (HW_PORT_PCRn_WR(x, n, HW_PORT_PCRn_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PORT_PCRn bitfields + */ + +/*! + * @name Register PORT_PCRn, field PS[0] (RW) + * + * Pull configuration is valid in all digital pin muxing modes. + * + * Values: + * - 0 - Internal pulldown resistor is enabled on the corresponding pin, if the + * corresponding PE field is set. + * - 1 - Internal pullup resistor is enabled on the corresponding pin, if the + * corresponding PE field is set. + */ +//@{ +#define BP_PORT_PCRn_PS (0U) //!< Bit position for PORT_PCRn_PS. +#define BM_PORT_PCRn_PS (0x00000001U) //!< Bit mask for PORT_PCRn_PS. +#define BS_PORT_PCRn_PS (1U) //!< Bit field size in bits for PORT_PCRn_PS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_PS field. +#define BR_PORT_PCRn_PS(x, n) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_PS)) +#endif + +//! @brief Format value for bitfield PORT_PCRn_PS. +#define BF_PORT_PCRn_PS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_PS), uint32_t) & BM_PORT_PCRn_PS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PS field to a new value. +#define BW_PORT_PCRn_PS(x, n, v) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_PS) = (v)) +#endif +//@} + +/*! + * @name Register PORT_PCRn, field PE[1] (RW) + * + * Pull configuration is valid in all digital pin muxing modes. + * + * Values: + * - 0 - Internal pullup or pulldown resistor is not enabled on the + * corresponding pin. + * - 1 - Internal pullup or pulldown resistor is enabled on the corresponding + * pin, if the pin is configured as a digital input. + */ +//@{ +#define BP_PORT_PCRn_PE (1U) //!< Bit position for PORT_PCRn_PE. +#define BM_PORT_PCRn_PE (0x00000002U) //!< Bit mask for PORT_PCRn_PE. +#define BS_PORT_PCRn_PE (1U) //!< Bit field size in bits for PORT_PCRn_PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_PE field. +#define BR_PORT_PCRn_PE(x, n) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_PE)) +#endif + +//! @brief Format value for bitfield PORT_PCRn_PE. +#define BF_PORT_PCRn_PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_PE), uint32_t) & BM_PORT_PCRn_PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PE field to a new value. +#define BW_PORT_PCRn_PE(x, n, v) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_PE) = (v)) +#endif +//@} + +/*! + * @name Register PORT_PCRn, field SRE[2] (RW) + * + * Slew rate configuration is valid in all digital pin muxing modes. + * + * Values: + * - 0 - Fast slew rate is configured on the corresponding pin, if the pin is + * configured as a digital output. + * - 1 - Slow slew rate is configured on the corresponding pin, if the pin is + * configured as a digital output. + */ +//@{ +#define BP_PORT_PCRn_SRE (2U) //!< Bit position for PORT_PCRn_SRE. +#define BM_PORT_PCRn_SRE (0x00000004U) //!< Bit mask for PORT_PCRn_SRE. +#define BS_PORT_PCRn_SRE (1U) //!< Bit field size in bits for PORT_PCRn_SRE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_SRE field. +#define BR_PORT_PCRn_SRE(x, n) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_SRE)) +#endif + +//! @brief Format value for bitfield PORT_PCRn_SRE. +#define BF_PORT_PCRn_SRE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_SRE), uint32_t) & BM_PORT_PCRn_SRE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRE field to a new value. +#define BW_PORT_PCRn_SRE(x, n, v) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_SRE) = (v)) +#endif +//@} + +/*! + * @name Register PORT_PCRn, field PFE[4] (RW) + * + * Passive filter configuration is valid in all digital pin muxing modes. + * + * Values: + * - 0 - Passive input filter is disabled on the corresponding pin. + * - 1 - Passive input filter is enabled on the corresponding pin, if the pin is + * configured as a digital input. Refer to the device data sheet for filter + * characteristics. + */ +//@{ +#define BP_PORT_PCRn_PFE (4U) //!< Bit position for PORT_PCRn_PFE. +#define BM_PORT_PCRn_PFE (0x00000010U) //!< Bit mask for PORT_PCRn_PFE. +#define BS_PORT_PCRn_PFE (1U) //!< Bit field size in bits for PORT_PCRn_PFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_PFE field. +#define BR_PORT_PCRn_PFE(x, n) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_PFE)) +#endif + +//! @brief Format value for bitfield PORT_PCRn_PFE. +#define BF_PORT_PCRn_PFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_PFE), uint32_t) & BM_PORT_PCRn_PFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PFE field to a new value. +#define BW_PORT_PCRn_PFE(x, n, v) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_PFE) = (v)) +#endif +//@} + +/*! + * @name Register PORT_PCRn, field ODE[5] (RW) + * + * Open drain configuration is valid in all digital pin muxing modes. + * + * Values: + * - 0 - Open drain output is disabled on the corresponding pin. + * - 1 - Open drain output is enabled on the corresponding pin, if the pin is + * configured as a digital output. + */ +//@{ +#define BP_PORT_PCRn_ODE (5U) //!< Bit position for PORT_PCRn_ODE. +#define BM_PORT_PCRn_ODE (0x00000020U) //!< Bit mask for PORT_PCRn_ODE. +#define BS_PORT_PCRn_ODE (1U) //!< Bit field size in bits for PORT_PCRn_ODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_ODE field. +#define BR_PORT_PCRn_ODE(x, n) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_ODE)) +#endif + +//! @brief Format value for bitfield PORT_PCRn_ODE. +#define BF_PORT_PCRn_ODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_ODE), uint32_t) & BM_PORT_PCRn_ODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ODE field to a new value. +#define BW_PORT_PCRn_ODE(x, n, v) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_ODE) = (v)) +#endif +//@} + +/*! + * @name Register PORT_PCRn, field DSE[6] (RW) + * + * Drive strength configuration is valid in all digital pin muxing modes. + * + * Values: + * - 0 - Low drive strength is configured on the corresponding pin, if pin is + * configured as a digital output. + * - 1 - High drive strength is configured on the corresponding pin, if pin is + * configured as a digital output. + */ +//@{ +#define BP_PORT_PCRn_DSE (6U) //!< Bit position for PORT_PCRn_DSE. +#define BM_PORT_PCRn_DSE (0x00000040U) //!< Bit mask for PORT_PCRn_DSE. +#define BS_PORT_PCRn_DSE (1U) //!< Bit field size in bits for PORT_PCRn_DSE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_DSE field. +#define BR_PORT_PCRn_DSE(x, n) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_DSE)) +#endif + +//! @brief Format value for bitfield PORT_PCRn_DSE. +#define BF_PORT_PCRn_DSE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_DSE), uint32_t) & BM_PORT_PCRn_DSE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DSE field to a new value. +#define BW_PORT_PCRn_DSE(x, n, v) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_DSE) = (v)) +#endif +//@} + +/*! + * @name Register PORT_PCRn, field MUX[10:8] (RW) + * + * Not all pins support all pin muxing slots. Unimplemented pin muxing slots are + * reserved and may result in configuring the pin for a different pin muxing + * slot. The corresponding pin is configured in the following pin muxing slot as + * follows: + * + * Values: + * - 000 - Pin disabled (analog). + * - 001 - Alternative 1 (GPIO). + * - 010 - Alternative 2 (chip-specific). + * - 011 - Alternative 3 (chip-specific). + * - 100 - Alternative 4 (chip-specific). + * - 101 - Alternative 5 (chip-specific). + * - 110 - Alternative 6 (chip-specific). + * - 111 - Alternative 7 (chip-specific). + */ +//@{ +#define BP_PORT_PCRn_MUX (8U) //!< Bit position for PORT_PCRn_MUX. +#define BM_PORT_PCRn_MUX (0x00000700U) //!< Bit mask for PORT_PCRn_MUX. +#define BS_PORT_PCRn_MUX (3U) //!< Bit field size in bits for PORT_PCRn_MUX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_MUX field. +#define BR_PORT_PCRn_MUX(x, n) (HW_PORT_PCRn(x, n).B.MUX) +#endif + +//! @brief Format value for bitfield PORT_PCRn_MUX. +#define BF_PORT_PCRn_MUX(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_MUX), uint32_t) & BM_PORT_PCRn_MUX) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MUX field to a new value. +#define BW_PORT_PCRn_MUX(x, n, v) (HW_PORT_PCRn_WR(x, n, (HW_PORT_PCRn_RD(x, n) & ~BM_PORT_PCRn_MUX) | BF_PORT_PCRn_MUX(v))) +#endif +//@} + +/*! + * @name Register PORT_PCRn, field LK[15] (RW) + * + * Values: + * - 0 - Pin Control Register fields [15:0] are not locked. + * - 1 - Pin Control Register fields [15:0] are locked and cannot be updated + * until the next system reset. + */ +//@{ +#define BP_PORT_PCRn_LK (15U) //!< Bit position for PORT_PCRn_LK. +#define BM_PORT_PCRn_LK (0x00008000U) //!< Bit mask for PORT_PCRn_LK. +#define BS_PORT_PCRn_LK (1U) //!< Bit field size in bits for PORT_PCRn_LK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_LK field. +#define BR_PORT_PCRn_LK(x, n) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_LK)) +#endif + +//! @brief Format value for bitfield PORT_PCRn_LK. +#define BF_PORT_PCRn_LK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_LK), uint32_t) & BM_PORT_PCRn_LK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LK field to a new value. +#define BW_PORT_PCRn_LK(x, n, v) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_LK) = (v)) +#endif +//@} + +/*! + * @name Register PORT_PCRn, field IRQC[19:16] (RW) + * + * The pin interrupt configuration is valid in all digital pin muxing modes. The + * corresponding pin is configured to generate interrupt/DMA request as follows: + * + * Values: + * - 0000 - Interrupt/DMA request disabled. + * - 0001 - DMA request on rising edge. + * - 0010 - DMA request on falling edge. + * - 0011 - DMA request on either edge. + * - 1000 - Interrupt when logic 0. + * - 1001 - Interrupt on rising-edge. + * - 1010 - Interrupt on falling-edge. + * - 1011 - Interrupt on either edge. + * - 1100 - Interrupt when logic 1. + */ +//@{ +#define BP_PORT_PCRn_IRQC (16U) //!< Bit position for PORT_PCRn_IRQC. +#define BM_PORT_PCRn_IRQC (0x000F0000U) //!< Bit mask for PORT_PCRn_IRQC. +#define BS_PORT_PCRn_IRQC (4U) //!< Bit field size in bits for PORT_PCRn_IRQC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_IRQC field. +#define BR_PORT_PCRn_IRQC(x, n) (HW_PORT_PCRn(x, n).B.IRQC) +#endif + +//! @brief Format value for bitfield PORT_PCRn_IRQC. +#define BF_PORT_PCRn_IRQC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_IRQC), uint32_t) & BM_PORT_PCRn_IRQC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IRQC field to a new value. +#define BW_PORT_PCRn_IRQC(x, n, v) (HW_PORT_PCRn_WR(x, n, (HW_PORT_PCRn_RD(x, n) & ~BM_PORT_PCRn_IRQC) | BF_PORT_PCRn_IRQC(v))) +#endif +//@} + +/*! + * @name Register PORT_PCRn, field ISF[24] (W1C) + * + * The pin interrupt configuration is valid in all digital pin muxing modes. + * + * Values: + * - 0 - Configured interrupt is not detected. + * - 1 - Configured interrupt is detected. If the pin is configured to generate + * a DMA request, then the corresponding flag will be cleared automatically + * at the completion of the requested DMA transfer. Otherwise, the flag + * remains set until a logic 1 is written to the flag. If the pin is configured for + * a level sensitive interrupt and the pin remains asserted, then the flag + * is set again immediately after it is cleared. + */ +//@{ +#define BP_PORT_PCRn_ISF (24U) //!< Bit position for PORT_PCRn_ISF. +#define BM_PORT_PCRn_ISF (0x01000000U) //!< Bit mask for PORT_PCRn_ISF. +#define BS_PORT_PCRn_ISF (1U) //!< Bit field size in bits for PORT_PCRn_ISF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_PCRn_ISF field. +#define BR_PORT_PCRn_ISF(x, n) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_ISF)) +#endif + +//! @brief Format value for bitfield PORT_PCRn_ISF. +#define BF_PORT_PCRn_ISF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_PCRn_ISF), uint32_t) & BM_PORT_PCRn_ISF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ISF field to a new value. +#define BW_PORT_PCRn_ISF(x, n, v) (BITBAND_ACCESS32(HW_PORT_PCRn_ADDR(x, n), BP_PORT_PCRn_ISF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PORT_GPCLR - Global Pin Control Low Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PORT_GPCLR - Global Pin Control Low Register (WORZ) + * + * Reset value: 0x00000000U + * + * Only 32-bit writes are supported to this register. + */ +typedef union _hw_port_gpclr +{ + uint32_t U; + struct _hw_port_gpclr_bitfields + { + uint32_t GPWD : 16; //!< [15:0] Global Pin Write Data + uint32_t GPWE : 16; //!< [31:16] Global Pin Write Enable + } B; +} hw_port_gpclr_t; +#endif + +/*! + * @name Constants and macros for entire PORT_GPCLR register + */ +//@{ +#define HW_PORT_GPCLR_ADDR(x) (REGS_PORT_BASE(x) + 0x80U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PORT_GPCLR(x) (*(__O hw_port_gpclr_t *) HW_PORT_GPCLR_ADDR(x)) +#define HW_PORT_GPCLR_RD(x) (HW_PORT_GPCLR(x).U) +#define HW_PORT_GPCLR_WR(x, v) (HW_PORT_GPCLR(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual PORT_GPCLR bitfields + */ + +/*! + * @name Register PORT_GPCLR, field GPWD[15:0] (WORZ) + * + * Write value that is written to all Pin Control Registers bits [15:0] that are + * selected by GPWE. + */ +//@{ +#define BP_PORT_GPCLR_GPWD (0U) //!< Bit position for PORT_GPCLR_GPWD. +#define BM_PORT_GPCLR_GPWD (0x0000FFFFU) //!< Bit mask for PORT_GPCLR_GPWD. +#define BS_PORT_GPCLR_GPWD (16U) //!< Bit field size in bits for PORT_GPCLR_GPWD. + +//! @brief Format value for bitfield PORT_GPCLR_GPWD. +#define BF_PORT_GPCLR_GPWD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_GPCLR_GPWD), uint32_t) & BM_PORT_GPCLR_GPWD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPWD field to a new value. +#define BW_PORT_GPCLR_GPWD(x, v) (HW_PORT_GPCLR_WR(x, (HW_PORT_GPCLR_RD(x) & ~BM_PORT_GPCLR_GPWD) | BF_PORT_GPCLR_GPWD(v))) +#endif +//@} + +/*! + * @name Register PORT_GPCLR, field GPWE[31:16] (WORZ) + * + * Selects which Pin Control Registers (15 through 0) bits [15:0] update with + * the value in GPWD. If a selected Pin Control Register is locked then the write + * to that register is ignored. + * + * Values: + * - 0 - Corresponding Pin Control Register is not updated with the value in + * GPWD. + * - 1 - Corresponding Pin Control Register is updated with the value in GPWD. + */ +//@{ +#define BP_PORT_GPCLR_GPWE (16U) //!< Bit position for PORT_GPCLR_GPWE. +#define BM_PORT_GPCLR_GPWE (0xFFFF0000U) //!< Bit mask for PORT_GPCLR_GPWE. +#define BS_PORT_GPCLR_GPWE (16U) //!< Bit field size in bits for PORT_GPCLR_GPWE. + +//! @brief Format value for bitfield PORT_GPCLR_GPWE. +#define BF_PORT_GPCLR_GPWE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_GPCLR_GPWE), uint32_t) & BM_PORT_GPCLR_GPWE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPWE field to a new value. +#define BW_PORT_GPCLR_GPWE(x, v) (HW_PORT_GPCLR_WR(x, (HW_PORT_GPCLR_RD(x) & ~BM_PORT_GPCLR_GPWE) | BF_PORT_GPCLR_GPWE(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PORT_GPCHR - Global Pin Control High Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PORT_GPCHR - Global Pin Control High Register (WORZ) + * + * Reset value: 0x00000000U + * + * Only 32-bit writes are supported to this register. + */ +typedef union _hw_port_gpchr +{ + uint32_t U; + struct _hw_port_gpchr_bitfields + { + uint32_t GPWD : 16; //!< [15:0] Global Pin Write Data + uint32_t GPWE : 16; //!< [31:16] Global Pin Write Enable + } B; +} hw_port_gpchr_t; +#endif + +/*! + * @name Constants and macros for entire PORT_GPCHR register + */ +//@{ +#define HW_PORT_GPCHR_ADDR(x) (REGS_PORT_BASE(x) + 0x84U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PORT_GPCHR(x) (*(__O hw_port_gpchr_t *) HW_PORT_GPCHR_ADDR(x)) +#define HW_PORT_GPCHR_RD(x) (HW_PORT_GPCHR(x).U) +#define HW_PORT_GPCHR_WR(x, v) (HW_PORT_GPCHR(x).U = (v)) +#endif +//@} + +/* + * Constants & macros for individual PORT_GPCHR bitfields + */ + +/*! + * @name Register PORT_GPCHR, field GPWD[15:0] (WORZ) + * + * Write value that is written to all Pin Control Registers bits [15:0] that are + * selected by GPWE. + */ +//@{ +#define BP_PORT_GPCHR_GPWD (0U) //!< Bit position for PORT_GPCHR_GPWD. +#define BM_PORT_GPCHR_GPWD (0x0000FFFFU) //!< Bit mask for PORT_GPCHR_GPWD. +#define BS_PORT_GPCHR_GPWD (16U) //!< Bit field size in bits for PORT_GPCHR_GPWD. + +//! @brief Format value for bitfield PORT_GPCHR_GPWD. +#define BF_PORT_GPCHR_GPWD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_GPCHR_GPWD), uint32_t) & BM_PORT_GPCHR_GPWD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPWD field to a new value. +#define BW_PORT_GPCHR_GPWD(x, v) (HW_PORT_GPCHR_WR(x, (HW_PORT_GPCHR_RD(x) & ~BM_PORT_GPCHR_GPWD) | BF_PORT_GPCHR_GPWD(v))) +#endif +//@} + +/*! + * @name Register PORT_GPCHR, field GPWE[31:16] (WORZ) + * + * Selects which Pin Control Registers (31 through 16) bits [15:0] update with + * the value in GPWD. If a selected Pin Control Register is locked then the write + * to that register is ignored. + * + * Values: + * - 0 - Corresponding Pin Control Register is not updated with the value in + * GPWD. + * - 1 - Corresponding Pin Control Register is updated with the value in GPWD. + */ +//@{ +#define BP_PORT_GPCHR_GPWE (16U) //!< Bit position for PORT_GPCHR_GPWE. +#define BM_PORT_GPCHR_GPWE (0xFFFF0000U) //!< Bit mask for PORT_GPCHR_GPWE. +#define BS_PORT_GPCHR_GPWE (16U) //!< Bit field size in bits for PORT_GPCHR_GPWE. + +//! @brief Format value for bitfield PORT_GPCHR_GPWE. +#define BF_PORT_GPCHR_GPWE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_GPCHR_GPWE), uint32_t) & BM_PORT_GPCHR_GPWE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GPWE field to a new value. +#define BW_PORT_GPCHR_GPWE(x, v) (HW_PORT_GPCHR_WR(x, (HW_PORT_GPCHR_RD(x) & ~BM_PORT_GPCHR_GPWE) | BF_PORT_GPCHR_GPWE(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PORT_ISFR - Interrupt Status Flag Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PORT_ISFR - Interrupt Status Flag Register (W1C) + * + * Reset value: 0x00000000U + * + * The pin interrupt configuration is valid in all digital pin muxing modes. The + * Interrupt Status Flag for each pin is also visible in the corresponding Pin + * Control Register, and each flag can be cleared in either location. + */ +typedef union _hw_port_isfr +{ + uint32_t U; + struct _hw_port_isfr_bitfields + { + uint32_t ISF : 32; //!< [31:0] Interrupt Status Flag + } B; +} hw_port_isfr_t; +#endif + +/*! + * @name Constants and macros for entire PORT_ISFR register + */ +//@{ +#define HW_PORT_ISFR_ADDR(x) (REGS_PORT_BASE(x) + 0xA0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PORT_ISFR(x) (*(__IO hw_port_isfr_t *) HW_PORT_ISFR_ADDR(x)) +#define HW_PORT_ISFR_RD(x) (HW_PORT_ISFR(x).U) +#define HW_PORT_ISFR_WR(x, v) (HW_PORT_ISFR(x).U = (v)) +#define HW_PORT_ISFR_SET(x, v) (HW_PORT_ISFR_WR(x, HW_PORT_ISFR_RD(x) | (v))) +#define HW_PORT_ISFR_CLR(x, v) (HW_PORT_ISFR_WR(x, HW_PORT_ISFR_RD(x) & ~(v))) +#define HW_PORT_ISFR_TOG(x, v) (HW_PORT_ISFR_WR(x, HW_PORT_ISFR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PORT_ISFR bitfields + */ + +/*! + * @name Register PORT_ISFR, field ISF[31:0] (W1C) + * + * Each bit in the field indicates the detection of the configured interrupt of + * the same number as the field. + * + * Values: + * - 0 - Configured interrupt is not detected. + * - 1 - Configured interrupt is detected. If the pin is configured to generate + * a DMA request, then the corresponding flag will be cleared automatically + * at the completion of the requested DMA transfer. Otherwise, the flag + * remains set until a logic 1 is written to the flag. If the pin is configured for + * a level sensitive interrupt and the pin remains asserted, then the flag + * is set again immediately after it is cleared. + */ +//@{ +#define BP_PORT_ISFR_ISF (0U) //!< Bit position for PORT_ISFR_ISF. +#define BM_PORT_ISFR_ISF (0xFFFFFFFFU) //!< Bit mask for PORT_ISFR_ISF. +#define BS_PORT_ISFR_ISF (32U) //!< Bit field size in bits for PORT_ISFR_ISF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_ISFR_ISF field. +#define BR_PORT_ISFR_ISF(x) (HW_PORT_ISFR(x).U) +#endif + +//! @brief Format value for bitfield PORT_ISFR_ISF. +#define BF_PORT_ISFR_ISF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_ISFR_ISF), uint32_t) & BM_PORT_ISFR_ISF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ISF field to a new value. +#define BW_PORT_ISFR_ISF(x, v) (HW_PORT_ISFR_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PORT_DFER - Digital Filter Enable Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PORT_DFER - Digital Filter Enable Register (RW) + * + * Reset value: 0x00000000U + * + * The corresponding bit is read only for pins that do not support a digital + * filter. Refer to the Chapter of Signal Multiplexing and Signal Descriptions for + * the pins that support digital filter. The digital filter configuration is valid + * in all digital pin muxing modes. + */ +typedef union _hw_port_dfer +{ + uint32_t U; + struct _hw_port_dfer_bitfields + { + uint32_t DFE : 32; //!< [31:0] Digital Filter Enable + } B; +} hw_port_dfer_t; +#endif + +/*! + * @name Constants and macros for entire PORT_DFER register + */ +//@{ +#define HW_PORT_DFER_ADDR(x) (REGS_PORT_BASE(x) + 0xC0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PORT_DFER(x) (*(__IO hw_port_dfer_t *) HW_PORT_DFER_ADDR(x)) +#define HW_PORT_DFER_RD(x) (HW_PORT_DFER(x).U) +#define HW_PORT_DFER_WR(x, v) (HW_PORT_DFER(x).U = (v)) +#define HW_PORT_DFER_SET(x, v) (HW_PORT_DFER_WR(x, HW_PORT_DFER_RD(x) | (v))) +#define HW_PORT_DFER_CLR(x, v) (HW_PORT_DFER_WR(x, HW_PORT_DFER_RD(x) & ~(v))) +#define HW_PORT_DFER_TOG(x, v) (HW_PORT_DFER_WR(x, HW_PORT_DFER_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PORT_DFER bitfields + */ + +/*! + * @name Register PORT_DFER, field DFE[31:0] (RW) + * + * The digital filter configuration is valid in all digital pin muxing modes. + * The output of each digital filter is reset to zero at system reset and whenever + * the digital filter is disabled. Each bit in the field enables the digital + * filter of the same number as the field. + * + * Values: + * - 0 - Digital filter is disabled on the corresponding pin and output of the + * digital filter is reset to zero. + * - 1 - Digital filter is enabled on the corresponding pin, if the pin is + * configured as a digital input. + */ +//@{ +#define BP_PORT_DFER_DFE (0U) //!< Bit position for PORT_DFER_DFE. +#define BM_PORT_DFER_DFE (0xFFFFFFFFU) //!< Bit mask for PORT_DFER_DFE. +#define BS_PORT_DFER_DFE (32U) //!< Bit field size in bits for PORT_DFER_DFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_DFER_DFE field. +#define BR_PORT_DFER_DFE(x) (HW_PORT_DFER(x).U) +#endif + +//! @brief Format value for bitfield PORT_DFER_DFE. +#define BF_PORT_DFER_DFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_DFER_DFE), uint32_t) & BM_PORT_DFER_DFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DFE field to a new value. +#define BW_PORT_DFER_DFE(x, v) (HW_PORT_DFER_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PORT_DFCR - Digital Filter Clock Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PORT_DFCR - Digital Filter Clock Register (RW) + * + * Reset value: 0x00000000U + * + * This register is read only for ports that do not support a digital filter. + * The digital filter configuration is valid in all digital pin muxing modes. + */ +typedef union _hw_port_dfcr +{ + uint32_t U; + struct _hw_port_dfcr_bitfields + { + uint32_t CS : 1; //!< [0] Clock Source + uint32_t RESERVED0 : 31; //!< [31:1] + } B; +} hw_port_dfcr_t; +#endif + +/*! + * @name Constants and macros for entire PORT_DFCR register + */ +//@{ +#define HW_PORT_DFCR_ADDR(x) (REGS_PORT_BASE(x) + 0xC4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PORT_DFCR(x) (*(__IO hw_port_dfcr_t *) HW_PORT_DFCR_ADDR(x)) +#define HW_PORT_DFCR_RD(x) (HW_PORT_DFCR(x).U) +#define HW_PORT_DFCR_WR(x, v) (HW_PORT_DFCR(x).U = (v)) +#define HW_PORT_DFCR_SET(x, v) (HW_PORT_DFCR_WR(x, HW_PORT_DFCR_RD(x) | (v))) +#define HW_PORT_DFCR_CLR(x, v) (HW_PORT_DFCR_WR(x, HW_PORT_DFCR_RD(x) & ~(v))) +#define HW_PORT_DFCR_TOG(x, v) (HW_PORT_DFCR_WR(x, HW_PORT_DFCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PORT_DFCR bitfields + */ + +/*! + * @name Register PORT_DFCR, field CS[0] (RW) + * + * The digital filter configuration is valid in all digital pin muxing modes. + * Configures the clock source for the digital input filters. Changing the filter + * clock source must be done only when all digital filters are disabled. + * + * Values: + * - 0 - Digital filters are clocked by the bus clock. + * - 1 - Digital filters are clocked by the 1 kHz LPO clock. + */ +//@{ +#define BP_PORT_DFCR_CS (0U) //!< Bit position for PORT_DFCR_CS. +#define BM_PORT_DFCR_CS (0x00000001U) //!< Bit mask for PORT_DFCR_CS. +#define BS_PORT_DFCR_CS (1U) //!< Bit field size in bits for PORT_DFCR_CS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_DFCR_CS field. +#define BR_PORT_DFCR_CS(x) (BITBAND_ACCESS32(HW_PORT_DFCR_ADDR(x), BP_PORT_DFCR_CS)) +#endif + +//! @brief Format value for bitfield PORT_DFCR_CS. +#define BF_PORT_DFCR_CS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_DFCR_CS), uint32_t) & BM_PORT_DFCR_CS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CS field to a new value. +#define BW_PORT_DFCR_CS(x, v) (BITBAND_ACCESS32(HW_PORT_DFCR_ADDR(x), BP_PORT_DFCR_CS) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_PORT_DFWR - Digital Filter Width Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_PORT_DFWR - Digital Filter Width Register (RW) + * + * Reset value: 0x00000000U + * + * This register is read only for ports that do not support a digital filter. + * The digital filter configuration is valid in all digital pin muxing modes. + */ +typedef union _hw_port_dfwr +{ + uint32_t U; + struct _hw_port_dfwr_bitfields + { + uint32_t FILT : 5; //!< [4:0] Filter Length + uint32_t RESERVED0 : 27; //!< [31:5] + } B; +} hw_port_dfwr_t; +#endif + +/*! + * @name Constants and macros for entire PORT_DFWR register + */ +//@{ +#define HW_PORT_DFWR_ADDR(x) (REGS_PORT_BASE(x) + 0xC8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_PORT_DFWR(x) (*(__IO hw_port_dfwr_t *) HW_PORT_DFWR_ADDR(x)) +#define HW_PORT_DFWR_RD(x) (HW_PORT_DFWR(x).U) +#define HW_PORT_DFWR_WR(x, v) (HW_PORT_DFWR(x).U = (v)) +#define HW_PORT_DFWR_SET(x, v) (HW_PORT_DFWR_WR(x, HW_PORT_DFWR_RD(x) | (v))) +#define HW_PORT_DFWR_CLR(x, v) (HW_PORT_DFWR_WR(x, HW_PORT_DFWR_RD(x) & ~(v))) +#define HW_PORT_DFWR_TOG(x, v) (HW_PORT_DFWR_WR(x, HW_PORT_DFWR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual PORT_DFWR bitfields + */ + +/*! + * @name Register PORT_DFWR, field FILT[4:0] (RW) + * + * The digital filter configuration is valid in all digital pin muxing modes. + * Configures the maximum size of the glitches, in clock cycles, that the digital + * filter absorbs for the enabled digital filters. Glitches that are longer than + * this register setting will pass through the digital filter, and glitches that + * are equal to or less than this register setting are filtered. Changing the + * filter length must be done only after all filters are disabled. + */ +//@{ +#define BP_PORT_DFWR_FILT (0U) //!< Bit position for PORT_DFWR_FILT. +#define BM_PORT_DFWR_FILT (0x0000001FU) //!< Bit mask for PORT_DFWR_FILT. +#define BS_PORT_DFWR_FILT (5U) //!< Bit field size in bits for PORT_DFWR_FILT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the PORT_DFWR_FILT field. +#define BR_PORT_DFWR_FILT(x) (HW_PORT_DFWR(x).B.FILT) +#endif + +//! @brief Format value for bitfield PORT_DFWR_FILT. +#define BF_PORT_DFWR_FILT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_PORT_DFWR_FILT), uint32_t) & BM_PORT_DFWR_FILT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FILT field to a new value. +#define BW_PORT_DFWR_FILT(x, v) (HW_PORT_DFWR_WR(x, (HW_PORT_DFWR_RD(x) & ~BM_PORT_DFWR_FILT) | BF_PORT_DFWR_FILT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_port_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All PORT module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_port +{ + __IO hw_port_pcrn_t PCRn[32]; //!< [0x0] Pin Control Register n + __O hw_port_gpclr_t GPCLR; //!< [0x80] Global Pin Control Low Register + __O hw_port_gpchr_t GPCHR; //!< [0x84] Global Pin Control High Register + uint8_t _reserved0[24]; + __IO hw_port_isfr_t ISFR; //!< [0xA0] Interrupt Status Flag Register + uint8_t _reserved1[28]; + __IO hw_port_dfer_t DFER; //!< [0xC0] Digital Filter Enable Register + __IO hw_port_dfcr_t DFCR; //!< [0xC4] Digital Filter Clock Register + __IO hw_port_dfwr_t DFWR; //!< [0xC8] Digital Filter Width Register +} hw_port_t; +#pragma pack() + +//! @brief Macro to access all PORT registers. +//! @param x PORT instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_PORT(0)</code>. +#define HW_PORT(x) (*(hw_port_t *) REGS_PORT_BASE(x)) +#endif + +#endif // __HW_PORT_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_rcm.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,730 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_RCM_REGISTERS_H__ +#define __HW_RCM_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 RCM + * + * Reset Control Module + * + * Registers defined in this header file: + * - HW_RCM_SRS0 - System Reset Status Register 0 + * - HW_RCM_SRS1 - System Reset Status Register 1 + * - HW_RCM_RPFC - Reset Pin Filter Control register + * - HW_RCM_RPFW - Reset Pin Filter Width register + * - HW_RCM_MR - Mode Register + * + * - hw_rcm_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_RCM_BASE +#define HW_RCM_INSTANCE_COUNT (1U) //!< Number of instances of the RCM module. +#define REGS_RCM_BASE (0x4007F000U) //!< Base address for RCM. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RCM_SRS0 - System Reset Status Register 0 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RCM_SRS0 - System Reset Status Register 0 (RO) + * + * Reset value: 0x82U + * + * This register includes read-only status flags to indicate the source of the + * most recent reset. The reset state of these bits depends on what caused the MCU + * to reset. The reset value of this register depends on the reset source: POR + * (including LVD) - 0x82 LVD (without POR) - 0x02 VLLS mode wakeup due to RESET + * pin assertion - 0x41 VLLS mode wakeup due to other wakeup sources - 0x01 Other + * reset - a bit is set if its corresponding reset source caused the reset + */ +typedef union _hw_rcm_srs0 +{ + uint8_t U; + struct _hw_rcm_srs0_bitfields + { + uint8_t WAKEUP : 1; //!< [0] Low Leakage Wakeup Reset + uint8_t LVD : 1; //!< [1] Low-Voltage Detect Reset + uint8_t LOC : 1; //!< [2] Loss-of-Clock Reset + uint8_t LOL : 1; //!< [3] Loss-of-Lock Reset + uint8_t RESERVED0 : 1; //!< [4] + uint8_t WDOGb : 1; //!< [5] Watchdog + uint8_t PIN : 1; //!< [6] External Reset Pin + uint8_t POR : 1; //!< [7] Power-On Reset + } B; +} hw_rcm_srs0_t; +#endif + +/*! + * @name Constants and macros for entire RCM_SRS0 register + */ +//@{ +#define HW_RCM_SRS0_ADDR (REGS_RCM_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RCM_SRS0 (*(__I hw_rcm_srs0_t *) HW_RCM_SRS0_ADDR) +#define HW_RCM_SRS0_RD() (HW_RCM_SRS0.U) +#endif +//@} + +/* + * Constants & macros for individual RCM_SRS0 bitfields + */ + +/*! + * @name Register RCM_SRS0, field WAKEUP[0] (RO) + * + * Indicates a reset has been caused by an enabled LLWU module wakeup source + * while the chip was in a low leakage mode. In LLS mode, the RESET pin is the only + * wakeup source that can cause this reset. Any enabled wakeup source in a VLLSx + * mode causes a reset. This bit is cleared by any reset except WAKEUP. + * + * Values: + * - 0 - Reset not caused by LLWU module wakeup source + * - 1 - Reset caused by LLWU module wakeup source + */ +//@{ +#define BP_RCM_SRS0_WAKEUP (0U) //!< Bit position for RCM_SRS0_WAKEUP. +#define BM_RCM_SRS0_WAKEUP (0x01U) //!< Bit mask for RCM_SRS0_WAKEUP. +#define BS_RCM_SRS0_WAKEUP (1U) //!< Bit field size in bits for RCM_SRS0_WAKEUP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS0_WAKEUP field. +#define BR_RCM_SRS0_WAKEUP (BITBAND_ACCESS8(HW_RCM_SRS0_ADDR, BP_RCM_SRS0_WAKEUP)) +#endif +//@} + +/*! + * @name Register RCM_SRS0, field LVD[1] (RO) + * + * If PMC_LVDSC1[LVDRE] is set and the supply drops below the LVD trip voltage, + * an LVD reset occurs. This field is also set by POR. + * + * Values: + * - 0 - Reset not caused by LVD trip or POR + * - 1 - Reset caused by LVD trip or POR + */ +//@{ +#define BP_RCM_SRS0_LVD (1U) //!< Bit position for RCM_SRS0_LVD. +#define BM_RCM_SRS0_LVD (0x02U) //!< Bit mask for RCM_SRS0_LVD. +#define BS_RCM_SRS0_LVD (1U) //!< Bit field size in bits for RCM_SRS0_LVD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS0_LVD field. +#define BR_RCM_SRS0_LVD (BITBAND_ACCESS8(HW_RCM_SRS0_ADDR, BP_RCM_SRS0_LVD)) +#endif +//@} + +/*! + * @name Register RCM_SRS0, field LOC[2] (RO) + * + * Indicates a reset has been caused by a loss of external clock. The MCG clock + * monitor must be enabled for a loss of clock to be detected. Refer to the + * detailed MCG description for information on enabling the clock monitor. + * + * Values: + * - 0 - Reset not caused by a loss of external clock. + * - 1 - Reset caused by a loss of external clock. + */ +//@{ +#define BP_RCM_SRS0_LOC (2U) //!< Bit position for RCM_SRS0_LOC. +#define BM_RCM_SRS0_LOC (0x04U) //!< Bit mask for RCM_SRS0_LOC. +#define BS_RCM_SRS0_LOC (1U) //!< Bit field size in bits for RCM_SRS0_LOC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS0_LOC field. +#define BR_RCM_SRS0_LOC (BITBAND_ACCESS8(HW_RCM_SRS0_ADDR, BP_RCM_SRS0_LOC)) +#endif +//@} + +/*! + * @name Register RCM_SRS0, field LOL[3] (RO) + * + * Indicates a reset has been caused by a loss of lock in the MCG PLL. See the + * MCG description for information on the loss-of-clock event. + * + * Values: + * - 0 - Reset not caused by a loss of lock in the PLL + * - 1 - Reset caused by a loss of lock in the PLL + */ +//@{ +#define BP_RCM_SRS0_LOL (3U) //!< Bit position for RCM_SRS0_LOL. +#define BM_RCM_SRS0_LOL (0x08U) //!< Bit mask for RCM_SRS0_LOL. +#define BS_RCM_SRS0_LOL (1U) //!< Bit field size in bits for RCM_SRS0_LOL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS0_LOL field. +#define BR_RCM_SRS0_LOL (BITBAND_ACCESS8(HW_RCM_SRS0_ADDR, BP_RCM_SRS0_LOL)) +#endif +//@} + +/*! + * @name Register RCM_SRS0, field WDOG[5] (RO) + * + * Indicates a reset has been caused by the watchdog timer Computer Operating + * Properly (COP) timing out. This reset source can be blocked by disabling the COP + * watchdog: write 00 to SIM_COPCTRL[COPT]. + * + * Values: + * - 0 - Reset not caused by watchdog timeout + * - 1 - Reset caused by watchdog timeout + */ +//@{ +#define BP_RCM_SRS0_WDOG (5U) //!< Bit position for RCM_SRS0_WDOG. +#define BM_RCM_SRS0_WDOG (0x20U) //!< Bit mask for RCM_SRS0_WDOG. +#define BS_RCM_SRS0_WDOG (1U) //!< Bit field size in bits for RCM_SRS0_WDOG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS0_WDOG field. +#define BR_RCM_SRS0_WDOG (BITBAND_ACCESS8(HW_RCM_SRS0_ADDR, BP_RCM_SRS0_WDOG)) +#endif +//@} + +/*! + * @name Register RCM_SRS0, field PIN[6] (RO) + * + * Indicates a reset has been caused by an active-low level on the external + * RESET pin. + * + * Values: + * - 0 - Reset not caused by external reset pin + * - 1 - Reset caused by external reset pin + */ +//@{ +#define BP_RCM_SRS0_PIN (6U) //!< Bit position for RCM_SRS0_PIN. +#define BM_RCM_SRS0_PIN (0x40U) //!< Bit mask for RCM_SRS0_PIN. +#define BS_RCM_SRS0_PIN (1U) //!< Bit field size in bits for RCM_SRS0_PIN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS0_PIN field. +#define BR_RCM_SRS0_PIN (BITBAND_ACCESS8(HW_RCM_SRS0_ADDR, BP_RCM_SRS0_PIN)) +#endif +//@} + +/*! + * @name Register RCM_SRS0, field POR[7] (RO) + * + * Indicates a reset has been caused by the power-on detection logic. Because + * the internal supply voltage was ramping up at the time, the low-voltage reset + * (LVD) status bit is also set to indicate that the reset occurred while the + * internal supply was below the LVD threshold. + * + * Values: + * - 0 - Reset not caused by POR + * - 1 - Reset caused by POR + */ +//@{ +#define BP_RCM_SRS0_POR (7U) //!< Bit position for RCM_SRS0_POR. +#define BM_RCM_SRS0_POR (0x80U) //!< Bit mask for RCM_SRS0_POR. +#define BS_RCM_SRS0_POR (1U) //!< Bit field size in bits for RCM_SRS0_POR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS0_POR field. +#define BR_RCM_SRS0_POR (BITBAND_ACCESS8(HW_RCM_SRS0_ADDR, BP_RCM_SRS0_POR)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RCM_SRS1 - System Reset Status Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RCM_SRS1 - System Reset Status Register 1 (RO) + * + * Reset value: 0x00U + * + * This register includes read-only status flags to indicate the source of the + * most recent reset. The reset state of these bits depends on what caused the MCU + * to reset. The reset value of this register depends on the reset source: POR + * (including LVD) - 0x00 LVD (without POR) - 0x00 VLLS mode wakeup - 0x00 Other + * reset - a bit is set if its corresponding reset source caused the reset + */ +typedef union _hw_rcm_srs1 +{ + uint8_t U; + struct _hw_rcm_srs1_bitfields + { + uint8_t JTAG : 1; //!< [0] JTAG Generated Reset + uint8_t LOCKUP : 1; //!< [1] Core Lockup + uint8_t SW : 1; //!< [2] Software + uint8_t MDM_AP : 1; //!< [3] MDM-AP System Reset Request + uint8_t EZPT : 1; //!< [4] EzPort Reset + uint8_t SACKERR : 1; //!< [5] Stop Mode Acknowledge Error Reset + uint8_t RESERVED0 : 2; //!< [7:6] + } B; +} hw_rcm_srs1_t; +#endif + +/*! + * @name Constants and macros for entire RCM_SRS1 register + */ +//@{ +#define HW_RCM_SRS1_ADDR (REGS_RCM_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RCM_SRS1 (*(__I hw_rcm_srs1_t *) HW_RCM_SRS1_ADDR) +#define HW_RCM_SRS1_RD() (HW_RCM_SRS1.U) +#endif +//@} + +/* + * Constants & macros for individual RCM_SRS1 bitfields + */ + +/*! + * @name Register RCM_SRS1, field JTAG[0] (RO) + * + * Indicates a reset has been caused by JTAG selection of certain IR codes: + * EZPORT, EXTEST, HIGHZ, and CLAMP. + * + * Values: + * - 0 - Reset not caused by JTAG + * - 1 - Reset caused by JTAG + */ +//@{ +#define BP_RCM_SRS1_JTAG (0U) //!< Bit position for RCM_SRS1_JTAG. +#define BM_RCM_SRS1_JTAG (0x01U) //!< Bit mask for RCM_SRS1_JTAG. +#define BS_RCM_SRS1_JTAG (1U) //!< Bit field size in bits for RCM_SRS1_JTAG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS1_JTAG field. +#define BR_RCM_SRS1_JTAG (BITBAND_ACCESS8(HW_RCM_SRS1_ADDR, BP_RCM_SRS1_JTAG)) +#endif +//@} + +/*! + * @name Register RCM_SRS1, field LOCKUP[1] (RO) + * + * Indicates a reset has been caused by the ARM core indication of a LOCKUP + * event. + * + * Values: + * - 0 - Reset not caused by core LOCKUP event + * - 1 - Reset caused by core LOCKUP event + */ +//@{ +#define BP_RCM_SRS1_LOCKUP (1U) //!< Bit position for RCM_SRS1_LOCKUP. +#define BM_RCM_SRS1_LOCKUP (0x02U) //!< Bit mask for RCM_SRS1_LOCKUP. +#define BS_RCM_SRS1_LOCKUP (1U) //!< Bit field size in bits for RCM_SRS1_LOCKUP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS1_LOCKUP field. +#define BR_RCM_SRS1_LOCKUP (BITBAND_ACCESS8(HW_RCM_SRS1_ADDR, BP_RCM_SRS1_LOCKUP)) +#endif +//@} + +/*! + * @name Register RCM_SRS1, field SW[2] (RO) + * + * Indicates a reset has been caused by software setting of SYSRESETREQ bit in + * Application Interrupt and Reset Control Register in the ARM core. + * + * Values: + * - 0 - Reset not caused by software setting of SYSRESETREQ bit + * - 1 - Reset caused by software setting of SYSRESETREQ bit + */ +//@{ +#define BP_RCM_SRS1_SW (2U) //!< Bit position for RCM_SRS1_SW. +#define BM_RCM_SRS1_SW (0x04U) //!< Bit mask for RCM_SRS1_SW. +#define BS_RCM_SRS1_SW (1U) //!< Bit field size in bits for RCM_SRS1_SW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS1_SW field. +#define BR_RCM_SRS1_SW (BITBAND_ACCESS8(HW_RCM_SRS1_ADDR, BP_RCM_SRS1_SW)) +#endif +//@} + +/*! + * @name Register RCM_SRS1, field MDM_AP[3] (RO) + * + * Indicates a reset has been caused by the host debugger system setting of the + * System Reset Request bit in the MDM-AP Control Register. + * + * Values: + * - 0 - Reset not caused by host debugger system setting of the System Reset + * Request bit + * - 1 - Reset caused by host debugger system setting of the System Reset + * Request bit + */ +//@{ +#define BP_RCM_SRS1_MDM_AP (3U) //!< Bit position for RCM_SRS1_MDM_AP. +#define BM_RCM_SRS1_MDM_AP (0x08U) //!< Bit mask for RCM_SRS1_MDM_AP. +#define BS_RCM_SRS1_MDM_AP (1U) //!< Bit field size in bits for RCM_SRS1_MDM_AP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS1_MDM_AP field. +#define BR_RCM_SRS1_MDM_AP (BITBAND_ACCESS8(HW_RCM_SRS1_ADDR, BP_RCM_SRS1_MDM_AP)) +#endif +//@} + +/*! + * @name Register RCM_SRS1, field EZPT[4] (RO) + * + * Indicates a reset has been caused by EzPort receiving the RESET command while + * the device is in EzPort mode. + * + * Values: + * - 0 - Reset not caused by EzPort receiving the RESET command while the device + * is in EzPort mode + * - 1 - Reset caused by EzPort receiving the RESET command while the device is + * in EzPort mode + */ +//@{ +#define BP_RCM_SRS1_EZPT (4U) //!< Bit position for RCM_SRS1_EZPT. +#define BM_RCM_SRS1_EZPT (0x10U) //!< Bit mask for RCM_SRS1_EZPT. +#define BS_RCM_SRS1_EZPT (1U) //!< Bit field size in bits for RCM_SRS1_EZPT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS1_EZPT field. +#define BR_RCM_SRS1_EZPT (BITBAND_ACCESS8(HW_RCM_SRS1_ADDR, BP_RCM_SRS1_EZPT)) +#endif +//@} + +/*! + * @name Register RCM_SRS1, field SACKERR[5] (RO) + * + * Indicates that after an attempt to enter Stop mode, a reset has been caused + * by a failure of one or more peripherals to acknowledge within approximately one + * second to enter stop mode. + * + * Values: + * - 0 - Reset not caused by peripheral failure to acknowledge attempt to enter + * stop mode + * - 1 - Reset caused by peripheral failure to acknowledge attempt to enter stop + * mode + */ +//@{ +#define BP_RCM_SRS1_SACKERR (5U) //!< Bit position for RCM_SRS1_SACKERR. +#define BM_RCM_SRS1_SACKERR (0x20U) //!< Bit mask for RCM_SRS1_SACKERR. +#define BS_RCM_SRS1_SACKERR (1U) //!< Bit field size in bits for RCM_SRS1_SACKERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_SRS1_SACKERR field. +#define BR_RCM_SRS1_SACKERR (BITBAND_ACCESS8(HW_RCM_SRS1_ADDR, BP_RCM_SRS1_SACKERR)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RCM_RPFC - Reset Pin Filter Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RCM_RPFC - Reset Pin Filter Control register (RW) + * + * Reset value: 0x00U + * + * The reset values of bits 2-0 are for Chip POR only. They are unaffected by + * other reset types. The bus clock filter is reset when disabled or when entering + * stop mode. The LPO filter is reset when disabled or when entering any low + * leakage stop mode . + */ +typedef union _hw_rcm_rpfc +{ + uint8_t U; + struct _hw_rcm_rpfc_bitfields + { + uint8_t RSTFLTSRW : 2; //!< [1:0] Reset Pin Filter Select in Run and + //! Wait Modes + uint8_t RSTFLTSS : 1; //!< [2] Reset Pin Filter Select in Stop Mode + uint8_t RESERVED0 : 5; //!< [7:3] + } B; +} hw_rcm_rpfc_t; +#endif + +/*! + * @name Constants and macros for entire RCM_RPFC register + */ +//@{ +#define HW_RCM_RPFC_ADDR (REGS_RCM_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RCM_RPFC (*(__IO hw_rcm_rpfc_t *) HW_RCM_RPFC_ADDR) +#define HW_RCM_RPFC_RD() (HW_RCM_RPFC.U) +#define HW_RCM_RPFC_WR(v) (HW_RCM_RPFC.U = (v)) +#define HW_RCM_RPFC_SET(v) (HW_RCM_RPFC_WR(HW_RCM_RPFC_RD() | (v))) +#define HW_RCM_RPFC_CLR(v) (HW_RCM_RPFC_WR(HW_RCM_RPFC_RD() & ~(v))) +#define HW_RCM_RPFC_TOG(v) (HW_RCM_RPFC_WR(HW_RCM_RPFC_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RCM_RPFC bitfields + */ + +/*! + * @name Register RCM_RPFC, field RSTFLTSRW[1:0] (RW) + * + * Selects how the reset pin filter is enabled in run and wait modes. + * + * Values: + * - 00 - All filtering disabled + * - 01 - Bus clock filter enabled for normal operation + * - 10 - LPO clock filter enabled for normal operation + * - 11 - Reserved + */ +//@{ +#define BP_RCM_RPFC_RSTFLTSRW (0U) //!< Bit position for RCM_RPFC_RSTFLTSRW. +#define BM_RCM_RPFC_RSTFLTSRW (0x03U) //!< Bit mask for RCM_RPFC_RSTFLTSRW. +#define BS_RCM_RPFC_RSTFLTSRW (2U) //!< Bit field size in bits for RCM_RPFC_RSTFLTSRW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_RPFC_RSTFLTSRW field. +#define BR_RCM_RPFC_RSTFLTSRW (HW_RCM_RPFC.B.RSTFLTSRW) +#endif + +//! @brief Format value for bitfield RCM_RPFC_RSTFLTSRW. +#define BF_RCM_RPFC_RSTFLTSRW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_RCM_RPFC_RSTFLTSRW), uint8_t) & BM_RCM_RPFC_RSTFLTSRW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSTFLTSRW field to a new value. +#define BW_RCM_RPFC_RSTFLTSRW(v) (HW_RCM_RPFC_WR((HW_RCM_RPFC_RD() & ~BM_RCM_RPFC_RSTFLTSRW) | BF_RCM_RPFC_RSTFLTSRW(v))) +#endif +//@} + +/*! + * @name Register RCM_RPFC, field RSTFLTSS[2] (RW) + * + * Selects how the reset pin filter is enabled in Stop and VLPS modes + * + * Values: + * - 0 - All filtering disabled + * - 1 - LPO clock filter enabled + */ +//@{ +#define BP_RCM_RPFC_RSTFLTSS (2U) //!< Bit position for RCM_RPFC_RSTFLTSS. +#define BM_RCM_RPFC_RSTFLTSS (0x04U) //!< Bit mask for RCM_RPFC_RSTFLTSS. +#define BS_RCM_RPFC_RSTFLTSS (1U) //!< Bit field size in bits for RCM_RPFC_RSTFLTSS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_RPFC_RSTFLTSS field. +#define BR_RCM_RPFC_RSTFLTSS (BITBAND_ACCESS8(HW_RCM_RPFC_ADDR, BP_RCM_RPFC_RSTFLTSS)) +#endif + +//! @brief Format value for bitfield RCM_RPFC_RSTFLTSS. +#define BF_RCM_RPFC_RSTFLTSS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_RCM_RPFC_RSTFLTSS), uint8_t) & BM_RCM_RPFC_RSTFLTSS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSTFLTSS field to a new value. +#define BW_RCM_RPFC_RSTFLTSS(v) (BITBAND_ACCESS8(HW_RCM_RPFC_ADDR, BP_RCM_RPFC_RSTFLTSS) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RCM_RPFW - Reset Pin Filter Width register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RCM_RPFW - Reset Pin Filter Width register (RW) + * + * Reset value: 0x00U + * + * The reset values of the bits in the RSTFLTSEL field are for Chip POR only. + * They are unaffected by other reset types. + */ +typedef union _hw_rcm_rpfw +{ + uint8_t U; + struct _hw_rcm_rpfw_bitfields + { + uint8_t RSTFLTSEL : 5; //!< [4:0] Reset Pin Filter Bus Clock Select + uint8_t RESERVED0 : 3; //!< [7:5] + } B; +} hw_rcm_rpfw_t; +#endif + +/*! + * @name Constants and macros for entire RCM_RPFW register + */ +//@{ +#define HW_RCM_RPFW_ADDR (REGS_RCM_BASE + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RCM_RPFW (*(__IO hw_rcm_rpfw_t *) HW_RCM_RPFW_ADDR) +#define HW_RCM_RPFW_RD() (HW_RCM_RPFW.U) +#define HW_RCM_RPFW_WR(v) (HW_RCM_RPFW.U = (v)) +#define HW_RCM_RPFW_SET(v) (HW_RCM_RPFW_WR(HW_RCM_RPFW_RD() | (v))) +#define HW_RCM_RPFW_CLR(v) (HW_RCM_RPFW_WR(HW_RCM_RPFW_RD() & ~(v))) +#define HW_RCM_RPFW_TOG(v) (HW_RCM_RPFW_WR(HW_RCM_RPFW_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RCM_RPFW bitfields + */ + +/*! + * @name Register RCM_RPFW, field RSTFLTSEL[4:0] (RW) + * + * Selects the reset pin bus clock filter width. + * + * Values: + * - 00000 - Bus clock filter count is 1 + * - 00001 - Bus clock filter count is 2 + * - 00010 - Bus clock filter count is 3 + * - 00011 - Bus clock filter count is 4 + * - 00100 - Bus clock filter count is 5 + * - 00101 - Bus clock filter count is 6 + * - 00110 - Bus clock filter count is 7 + * - 00111 - Bus clock filter count is 8 + * - 01000 - Bus clock filter count is 9 + * - 01001 - Bus clock filter count is 10 + * - 01010 - Bus clock filter count is 11 + * - 01011 - Bus clock filter count is 12 + * - 01100 - Bus clock filter count is 13 + * - 01101 - Bus clock filter count is 14 + * - 01110 - Bus clock filter count is 15 + * - 01111 - Bus clock filter count is 16 + * - 10000 - Bus clock filter count is 17 + * - 10001 - Bus clock filter count is 18 + * - 10010 - Bus clock filter count is 19 + * - 10011 - Bus clock filter count is 20 + * - 10100 - Bus clock filter count is 21 + * - 10101 - Bus clock filter count is 22 + * - 10110 - Bus clock filter count is 23 + * - 10111 - Bus clock filter count is 24 + * - 11000 - Bus clock filter count is 25 + * - 11001 - Bus clock filter count is 26 + * - 11010 - Bus clock filter count is 27 + * - 11011 - Bus clock filter count is 28 + * - 11100 - Bus clock filter count is 29 + * - 11101 - Bus clock filter count is 30 + * - 11110 - Bus clock filter count is 31 + * - 11111 - Bus clock filter count is 32 + */ +//@{ +#define BP_RCM_RPFW_RSTFLTSEL (0U) //!< Bit position for RCM_RPFW_RSTFLTSEL. +#define BM_RCM_RPFW_RSTFLTSEL (0x1FU) //!< Bit mask for RCM_RPFW_RSTFLTSEL. +#define BS_RCM_RPFW_RSTFLTSEL (5U) //!< Bit field size in bits for RCM_RPFW_RSTFLTSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_RPFW_RSTFLTSEL field. +#define BR_RCM_RPFW_RSTFLTSEL (HW_RCM_RPFW.B.RSTFLTSEL) +#endif + +//! @brief Format value for bitfield RCM_RPFW_RSTFLTSEL. +#define BF_RCM_RPFW_RSTFLTSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_RCM_RPFW_RSTFLTSEL), uint8_t) & BM_RCM_RPFW_RSTFLTSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSTFLTSEL field to a new value. +#define BW_RCM_RPFW_RSTFLTSEL(v) (HW_RCM_RPFW_WR((HW_RCM_RPFW_RD() & ~BM_RCM_RPFW_RSTFLTSEL) | BF_RCM_RPFW_RSTFLTSEL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RCM_MR - Mode Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RCM_MR - Mode Register (RO) + * + * Reset value: 0x00U + * + * This register includes read-only status flags to indicate the state of the + * mode pins during the last Chip Reset. + */ +typedef union _hw_rcm_mr +{ + uint8_t U; + struct _hw_rcm_mr_bitfields + { + uint8_t RESERVED0 : 1; //!< [0] + uint8_t EZP_MS : 1; //!< [1] EZP_MS_B pin state + uint8_t RESERVED1 : 6; //!< [7:2] + } B; +} hw_rcm_mr_t; +#endif + +/*! + * @name Constants and macros for entire RCM_MR register + */ +//@{ +#define HW_RCM_MR_ADDR (REGS_RCM_BASE + 0x7U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RCM_MR (*(__I hw_rcm_mr_t *) HW_RCM_MR_ADDR) +#define HW_RCM_MR_RD() (HW_RCM_MR.U) +#endif +//@} + +/* + * Constants & macros for individual RCM_MR bitfields + */ + +/*! + * @name Register RCM_MR, field EZP_MS[1] (RO) + * + * Reflects the state of the EZP_MS pin during the last Chip Reset + * + * Values: + * - 0 - Pin deasserted (logic 1) + * - 1 - Pin asserted (logic 0) + */ +//@{ +#define BP_RCM_MR_EZP_MS (1U) //!< Bit position for RCM_MR_EZP_MS. +#define BM_RCM_MR_EZP_MS (0x02U) //!< Bit mask for RCM_MR_EZP_MS. +#define BS_RCM_MR_EZP_MS (1U) //!< Bit field size in bits for RCM_MR_EZP_MS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RCM_MR_EZP_MS field. +#define BR_RCM_MR_EZP_MS (BITBAND_ACCESS8(HW_RCM_MR_ADDR, BP_RCM_MR_EZP_MS)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_rcm_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All RCM module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_rcm +{ + __I hw_rcm_srs0_t SRS0; //!< [0x0] System Reset Status Register 0 + __I hw_rcm_srs1_t SRS1; //!< [0x1] System Reset Status Register 1 + uint8_t _reserved0[2]; + __IO hw_rcm_rpfc_t RPFC; //!< [0x4] Reset Pin Filter Control register + __IO hw_rcm_rpfw_t RPFW; //!< [0x5] Reset Pin Filter Width register + uint8_t _reserved1[1]; + __I hw_rcm_mr_t MR; //!< [0x7] Mode Register +} hw_rcm_t; +#pragma pack() + +//! @brief Macro to access all RCM registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_RCM</code>. +#define HW_RCM (*(hw_rcm_t *) REGS_RCM_BASE) +#endif + +#endif // __HW_RCM_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_rfsys.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_RFSYS_REGISTERS_H__ +#define __HW_RFSYS_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 RFSYS + * + * System register file + * + * Registers defined in this header file: + * - HW_RFSYS_REGn - Register file register + * + * - hw_rfsys_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_RFSYS_BASE +#define HW_RFSYS_INSTANCE_COUNT (1U) //!< Number of instances of the RFSYS module. +#define REGS_RFSYS_BASE (0x40041000U) //!< Base address for RFSYS. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RFSYS_REGn - Register file register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RFSYS_REGn - Register file register (RW) + * + * Reset value: 0x00000000U + * + * Each register can be accessed as 8-, 16-, or 32-bits. + */ +typedef union _hw_rfsys_regn +{ + uint32_t U; + struct _hw_rfsys_regn_bitfields + { + uint32_t LL : 8; //!< [7:0] + uint32_t LH : 8; //!< [15:8] + uint32_t HL : 8; //!< [23:16] + uint32_t HH : 8; //!< [31:24] + } B; +} hw_rfsys_regn_t; +#endif + +/*! + * @name Constants and macros for entire RFSYS_REGn register + */ +//@{ +#define HW_RFSYS_REGn_COUNT (8U) + +#define HW_RFSYS_REGn_ADDR(n) (REGS_RFSYS_BASE + 0x0U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_RFSYS_REGn(n) (*(__IO hw_rfsys_regn_t *) HW_RFSYS_REGn_ADDR(n)) +#define HW_RFSYS_REGn_RD(n) (HW_RFSYS_REGn(n).U) +#define HW_RFSYS_REGn_WR(n, v) (HW_RFSYS_REGn(n).U = (v)) +#define HW_RFSYS_REGn_SET(n, v) (HW_RFSYS_REGn_WR(n, HW_RFSYS_REGn_RD(n) | (v))) +#define HW_RFSYS_REGn_CLR(n, v) (HW_RFSYS_REGn_WR(n, HW_RFSYS_REGn_RD(n) & ~(v))) +#define HW_RFSYS_REGn_TOG(n, v) (HW_RFSYS_REGn_WR(n, HW_RFSYS_REGn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RFSYS_REGn bitfields + */ + +/*! + * @name Register RFSYS_REGn, field LL[7:0] (RW) + * + * Low lower byte + */ +//@{ +#define BP_RFSYS_REGn_LL (0U) //!< Bit position for RFSYS_REGn_LL. +#define BM_RFSYS_REGn_LL (0x000000FFU) //!< Bit mask for RFSYS_REGn_LL. +#define BS_RFSYS_REGn_LL (8U) //!< Bit field size in bits for RFSYS_REGn_LL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RFSYS_REGn_LL field. +#define BR_RFSYS_REGn_LL(n) (HW_RFSYS_REGn(n).B.LL) +#endif + +//! @brief Format value for bitfield RFSYS_REGn_LL. +#define BF_RFSYS_REGn_LL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RFSYS_REGn_LL), uint32_t) & BM_RFSYS_REGn_LL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LL field to a new value. +#define BW_RFSYS_REGn_LL(n, v) (HW_RFSYS_REGn_WR(n, (HW_RFSYS_REGn_RD(n) & ~BM_RFSYS_REGn_LL) | BF_RFSYS_REGn_LL(v))) +#endif +//@} + +/*! + * @name Register RFSYS_REGn, field LH[15:8] (RW) + * + * Low higher byte + */ +//@{ +#define BP_RFSYS_REGn_LH (8U) //!< Bit position for RFSYS_REGn_LH. +#define BM_RFSYS_REGn_LH (0x0000FF00U) //!< Bit mask for RFSYS_REGn_LH. +#define BS_RFSYS_REGn_LH (8U) //!< Bit field size in bits for RFSYS_REGn_LH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RFSYS_REGn_LH field. +#define BR_RFSYS_REGn_LH(n) (HW_RFSYS_REGn(n).B.LH) +#endif + +//! @brief Format value for bitfield RFSYS_REGn_LH. +#define BF_RFSYS_REGn_LH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RFSYS_REGn_LH), uint32_t) & BM_RFSYS_REGn_LH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LH field to a new value. +#define BW_RFSYS_REGn_LH(n, v) (HW_RFSYS_REGn_WR(n, (HW_RFSYS_REGn_RD(n) & ~BM_RFSYS_REGn_LH) | BF_RFSYS_REGn_LH(v))) +#endif +//@} + +/*! + * @name Register RFSYS_REGn, field HL[23:16] (RW) + * + * High lower byte + */ +//@{ +#define BP_RFSYS_REGn_HL (16U) //!< Bit position for RFSYS_REGn_HL. +#define BM_RFSYS_REGn_HL (0x00FF0000U) //!< Bit mask for RFSYS_REGn_HL. +#define BS_RFSYS_REGn_HL (8U) //!< Bit field size in bits for RFSYS_REGn_HL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RFSYS_REGn_HL field. +#define BR_RFSYS_REGn_HL(n) (HW_RFSYS_REGn(n).B.HL) +#endif + +//! @brief Format value for bitfield RFSYS_REGn_HL. +#define BF_RFSYS_REGn_HL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RFSYS_REGn_HL), uint32_t) & BM_RFSYS_REGn_HL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HL field to a new value. +#define BW_RFSYS_REGn_HL(n, v) (HW_RFSYS_REGn_WR(n, (HW_RFSYS_REGn_RD(n) & ~BM_RFSYS_REGn_HL) | BF_RFSYS_REGn_HL(v))) +#endif +//@} + +/*! + * @name Register RFSYS_REGn, field HH[31:24] (RW) + * + * High higher byte + */ +//@{ +#define BP_RFSYS_REGn_HH (24U) //!< Bit position for RFSYS_REGn_HH. +#define BM_RFSYS_REGn_HH (0xFF000000U) //!< Bit mask for RFSYS_REGn_HH. +#define BS_RFSYS_REGn_HH (8U) //!< Bit field size in bits for RFSYS_REGn_HH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RFSYS_REGn_HH field. +#define BR_RFSYS_REGn_HH(n) (HW_RFSYS_REGn(n).B.HH) +#endif + +//! @brief Format value for bitfield RFSYS_REGn_HH. +#define BF_RFSYS_REGn_HH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RFSYS_REGn_HH), uint32_t) & BM_RFSYS_REGn_HH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HH field to a new value. +#define BW_RFSYS_REGn_HH(n, v) (HW_RFSYS_REGn_WR(n, (HW_RFSYS_REGn_RD(n) & ~BM_RFSYS_REGn_HH) | BF_RFSYS_REGn_HH(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_rfsys_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All RFSYS module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_rfsys +{ + __IO hw_rfsys_regn_t REGn[8]; //!< [0x0] Register file register +} hw_rfsys_t; +#pragma pack() + +//! @brief Macro to access all RFSYS registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_RFSYS</code>. +#define HW_RFSYS (*(hw_rfsys_t *) REGS_RFSYS_BASE) +#endif + +#endif // __HW_RFSYS_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_rfvbat.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_RFVBAT_REGISTERS_H__ +#define __HW_RFVBAT_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 RFVBAT + * + * VBAT register file + * + * Registers defined in this header file: + * - HW_RFVBAT_REGn - VBAT register file register + * + * - hw_rfvbat_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_RFVBAT_BASE +#define HW_RFVBAT_INSTANCE_COUNT (1U) //!< Number of instances of the RFVBAT module. +#define REGS_RFVBAT_BASE (0x4003E000U) //!< Base address for RFVBAT. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RFVBAT_REGn - VBAT register file register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RFVBAT_REGn - VBAT register file register (RW) + * + * Reset value: 0x00000000U + * + * Each register can be accessed as 8-, 16-, or 32-bits. + */ +typedef union _hw_rfvbat_regn +{ + uint32_t U; + struct _hw_rfvbat_regn_bitfields + { + uint32_t LL : 8; //!< [7:0] + uint32_t LH : 8; //!< [15:8] + uint32_t HL : 8; //!< [23:16] + uint32_t HH : 8; //!< [31:24] + } B; +} hw_rfvbat_regn_t; +#endif + +/*! + * @name Constants and macros for entire RFVBAT_REGn register + */ +//@{ +#define HW_RFVBAT_REGn_COUNT (8U) + +#define HW_RFVBAT_REGn_ADDR(n) (REGS_RFVBAT_BASE + 0x0U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_RFVBAT_REGn(n) (*(__IO hw_rfvbat_regn_t *) HW_RFVBAT_REGn_ADDR(n)) +#define HW_RFVBAT_REGn_RD(n) (HW_RFVBAT_REGn(n).U) +#define HW_RFVBAT_REGn_WR(n, v) (HW_RFVBAT_REGn(n).U = (v)) +#define HW_RFVBAT_REGn_SET(n, v) (HW_RFVBAT_REGn_WR(n, HW_RFVBAT_REGn_RD(n) | (v))) +#define HW_RFVBAT_REGn_CLR(n, v) (HW_RFVBAT_REGn_WR(n, HW_RFVBAT_REGn_RD(n) & ~(v))) +#define HW_RFVBAT_REGn_TOG(n, v) (HW_RFVBAT_REGn_WR(n, HW_RFVBAT_REGn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RFVBAT_REGn bitfields + */ + +/*! + * @name Register RFVBAT_REGn, field LL[7:0] (RW) + * + * Low lower byte + */ +//@{ +#define BP_RFVBAT_REGn_LL (0U) //!< Bit position for RFVBAT_REGn_LL. +#define BM_RFVBAT_REGn_LL (0x000000FFU) //!< Bit mask for RFVBAT_REGn_LL. +#define BS_RFVBAT_REGn_LL (8U) //!< Bit field size in bits for RFVBAT_REGn_LL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RFVBAT_REGn_LL field. +#define BR_RFVBAT_REGn_LL(n) (HW_RFVBAT_REGn(n).B.LL) +#endif + +//! @brief Format value for bitfield RFVBAT_REGn_LL. +#define BF_RFVBAT_REGn_LL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RFVBAT_REGn_LL), uint32_t) & BM_RFVBAT_REGn_LL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LL field to a new value. +#define BW_RFVBAT_REGn_LL(n, v) (HW_RFVBAT_REGn_WR(n, (HW_RFVBAT_REGn_RD(n) & ~BM_RFVBAT_REGn_LL) | BF_RFVBAT_REGn_LL(v))) +#endif +//@} + +/*! + * @name Register RFVBAT_REGn, field LH[15:8] (RW) + * + * Low higher byte + */ +//@{ +#define BP_RFVBAT_REGn_LH (8U) //!< Bit position for RFVBAT_REGn_LH. +#define BM_RFVBAT_REGn_LH (0x0000FF00U) //!< Bit mask for RFVBAT_REGn_LH. +#define BS_RFVBAT_REGn_LH (8U) //!< Bit field size in bits for RFVBAT_REGn_LH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RFVBAT_REGn_LH field. +#define BR_RFVBAT_REGn_LH(n) (HW_RFVBAT_REGn(n).B.LH) +#endif + +//! @brief Format value for bitfield RFVBAT_REGn_LH. +#define BF_RFVBAT_REGn_LH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RFVBAT_REGn_LH), uint32_t) & BM_RFVBAT_REGn_LH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LH field to a new value. +#define BW_RFVBAT_REGn_LH(n, v) (HW_RFVBAT_REGn_WR(n, (HW_RFVBAT_REGn_RD(n) & ~BM_RFVBAT_REGn_LH) | BF_RFVBAT_REGn_LH(v))) +#endif +//@} + +/*! + * @name Register RFVBAT_REGn, field HL[23:16] (RW) + * + * High lower byte + */ +//@{ +#define BP_RFVBAT_REGn_HL (16U) //!< Bit position for RFVBAT_REGn_HL. +#define BM_RFVBAT_REGn_HL (0x00FF0000U) //!< Bit mask for RFVBAT_REGn_HL. +#define BS_RFVBAT_REGn_HL (8U) //!< Bit field size in bits for RFVBAT_REGn_HL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RFVBAT_REGn_HL field. +#define BR_RFVBAT_REGn_HL(n) (HW_RFVBAT_REGn(n).B.HL) +#endif + +//! @brief Format value for bitfield RFVBAT_REGn_HL. +#define BF_RFVBAT_REGn_HL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RFVBAT_REGn_HL), uint32_t) & BM_RFVBAT_REGn_HL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HL field to a new value. +#define BW_RFVBAT_REGn_HL(n, v) (HW_RFVBAT_REGn_WR(n, (HW_RFVBAT_REGn_RD(n) & ~BM_RFVBAT_REGn_HL) | BF_RFVBAT_REGn_HL(v))) +#endif +//@} + +/*! + * @name Register RFVBAT_REGn, field HH[31:24] (RW) + * + * High higher byte + */ +//@{ +#define BP_RFVBAT_REGn_HH (24U) //!< Bit position for RFVBAT_REGn_HH. +#define BM_RFVBAT_REGn_HH (0xFF000000U) //!< Bit mask for RFVBAT_REGn_HH. +#define BS_RFVBAT_REGn_HH (8U) //!< Bit field size in bits for RFVBAT_REGn_HH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RFVBAT_REGn_HH field. +#define BR_RFVBAT_REGn_HH(n) (HW_RFVBAT_REGn(n).B.HH) +#endif + +//! @brief Format value for bitfield RFVBAT_REGn_HH. +#define BF_RFVBAT_REGn_HH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RFVBAT_REGn_HH), uint32_t) & BM_RFVBAT_REGn_HH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HH field to a new value. +#define BW_RFVBAT_REGn_HH(n, v) (HW_RFVBAT_REGn_WR(n, (HW_RFVBAT_REGn_RD(n) & ~BM_RFVBAT_REGn_HH) | BF_RFVBAT_REGn_HH(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_rfvbat_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All RFVBAT module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_rfvbat +{ + __IO hw_rfvbat_regn_t REGn[8]; //!< [0x0] VBAT register file register +} hw_rfvbat_t; +#pragma pack() + +//! @brief Macro to access all RFVBAT registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_RFVBAT</code>. +#define HW_RFVBAT (*(hw_rfvbat_t *) REGS_RFVBAT_BASE) +#endif + +#endif // __HW_RFVBAT_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_rng.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,590 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_RNG_REGISTERS_H__ +#define __HW_RNG_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 RNG + * + * Random Number Generator Accelerator + * + * Registers defined in this header file: + * - HW_RNG_CR - RNGA Control Register + * - HW_RNG_SR - RNGA Status Register + * - HW_RNG_ER - RNGA Entropy Register + * - HW_RNG_OR - RNGA Output Register + * + * - hw_rng_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_RNG_BASE +#define HW_RNG_INSTANCE_COUNT (1U) //!< Number of instances of the RNG module. +#define REGS_RNG_BASE (0x40029000U) //!< Base address for RNG. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RNG_CR - RNGA Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RNG_CR - RNGA Control Register (RW) + * + * Reset value: 0x00000000U + * + * Controls the operation of RNGA. + */ +typedef union _hw_rng_cr +{ + uint32_t U; + struct _hw_rng_cr_bitfields + { + uint32_t GO : 1; //!< [0] Go + uint32_t HA : 1; //!< [1] High Assurance + uint32_t INTM : 1; //!< [2] Interrupt Mask + uint32_t CLRI : 1; //!< [3] Clear Interrupt + uint32_t SLP : 1; //!< [4] Sleep + uint32_t RESERVED0 : 27; //!< [31:5] + } B; +} hw_rng_cr_t; +#endif + +/*! + * @name Constants and macros for entire RNG_CR register + */ +//@{ +#define HW_RNG_CR_ADDR (REGS_RNG_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RNG_CR (*(__IO hw_rng_cr_t *) HW_RNG_CR_ADDR) +#define HW_RNG_CR_RD() (HW_RNG_CR.U) +#define HW_RNG_CR_WR(v) (HW_RNG_CR.U = (v)) +#define HW_RNG_CR_SET(v) (HW_RNG_CR_WR(HW_RNG_CR_RD() | (v))) +#define HW_RNG_CR_CLR(v) (HW_RNG_CR_WR(HW_RNG_CR_RD() & ~(v))) +#define HW_RNG_CR_TOG(v) (HW_RNG_CR_WR(HW_RNG_CR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RNG_CR bitfields + */ + +/*! + * @name Register RNG_CR, field GO[0] (RW) + * + * Specifies whether random-data generation and loading (into OR[RANDOUT]) is + * enabled.This field is sticky. You must reset RNGA to stop RNGA from loading + * OR[RANDOUT] with data. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_RNG_CR_GO (0U) //!< Bit position for RNG_CR_GO. +#define BM_RNG_CR_GO (0x00000001U) //!< Bit mask for RNG_CR_GO. +#define BS_RNG_CR_GO (1U) //!< Bit field size in bits for RNG_CR_GO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_CR_GO field. +#define BR_RNG_CR_GO (BITBAND_ACCESS32(HW_RNG_CR_ADDR, BP_RNG_CR_GO)) +#endif + +//! @brief Format value for bitfield RNG_CR_GO. +#define BF_RNG_CR_GO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RNG_CR_GO), uint32_t) & BM_RNG_CR_GO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GO field to a new value. +#define BW_RNG_CR_GO(v) (BITBAND_ACCESS32(HW_RNG_CR_ADDR, BP_RNG_CR_GO) = (v)) +#endif +//@} + +/*! + * @name Register RNG_CR, field HA[1] (RW) + * + * Enables notification of security violations (via SR[SECV]). A security + * violation occurs when you read OR[RANDOUT] and SR[OREG_LVL]=0. This field is sticky. + * After enabling notification of security violations, you must reset RNGA to + * disable them again. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_RNG_CR_HA (1U) //!< Bit position for RNG_CR_HA. +#define BM_RNG_CR_HA (0x00000002U) //!< Bit mask for RNG_CR_HA. +#define BS_RNG_CR_HA (1U) //!< Bit field size in bits for RNG_CR_HA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_CR_HA field. +#define BR_RNG_CR_HA (BITBAND_ACCESS32(HW_RNG_CR_ADDR, BP_RNG_CR_HA)) +#endif + +//! @brief Format value for bitfield RNG_CR_HA. +#define BF_RNG_CR_HA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RNG_CR_HA), uint32_t) & BM_RNG_CR_HA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HA field to a new value. +#define BW_RNG_CR_HA(v) (BITBAND_ACCESS32(HW_RNG_CR_ADDR, BP_RNG_CR_HA) = (v)) +#endif +//@} + +/*! + * @name Register RNG_CR, field INTM[2] (RW) + * + * Masks the triggering of an error interrupt to the interrupt controller when + * an OR underflow condition occurs. An OR underflow condition occurs when you + * read OR[RANDOUT] and SR[OREG_LVL]=0. See the Output Register (OR) description. + * + * Values: + * - 0 - Not masked + * - 1 - Masked + */ +//@{ +#define BP_RNG_CR_INTM (2U) //!< Bit position for RNG_CR_INTM. +#define BM_RNG_CR_INTM (0x00000004U) //!< Bit mask for RNG_CR_INTM. +#define BS_RNG_CR_INTM (1U) //!< Bit field size in bits for RNG_CR_INTM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_CR_INTM field. +#define BR_RNG_CR_INTM (BITBAND_ACCESS32(HW_RNG_CR_ADDR, BP_RNG_CR_INTM)) +#endif + +//! @brief Format value for bitfield RNG_CR_INTM. +#define BF_RNG_CR_INTM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RNG_CR_INTM), uint32_t) & BM_RNG_CR_INTM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INTM field to a new value. +#define BW_RNG_CR_INTM(v) (BITBAND_ACCESS32(HW_RNG_CR_ADDR, BP_RNG_CR_INTM) = (v)) +#endif +//@} + +/*! + * @name Register RNG_CR, field CLRI[3] (WORZ) + * + * Clears the interrupt by resetting the error-interrupt indicator (SR[ERRI]). + * + * Values: + * - 0 - Do not clear the interrupt. + * - 1 - Clear the interrupt. When you write 1 to this field, RNGA then resets + * the error-interrupt indicator (SR[ERRI]). This bit always reads as 0. + */ +//@{ +#define BP_RNG_CR_CLRI (3U) //!< Bit position for RNG_CR_CLRI. +#define BM_RNG_CR_CLRI (0x00000008U) //!< Bit mask for RNG_CR_CLRI. +#define BS_RNG_CR_CLRI (1U) //!< Bit field size in bits for RNG_CR_CLRI. + +//! @brief Format value for bitfield RNG_CR_CLRI. +#define BF_RNG_CR_CLRI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RNG_CR_CLRI), uint32_t) & BM_RNG_CR_CLRI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLRI field to a new value. +#define BW_RNG_CR_CLRI(v) (BITBAND_ACCESS32(HW_RNG_CR_ADDR, BP_RNG_CR_CLRI) = (v)) +#endif +//@} + +/*! + * @name Register RNG_CR, field SLP[4] (RW) + * + * Specifies whether RNGA is in Sleep or Normal mode. You can also enter Sleep + * mode by asserting the DOZE signal. + * + * Values: + * - 0 - Normal mode + * - 1 - Sleep (low-power) mode + */ +//@{ +#define BP_RNG_CR_SLP (4U) //!< Bit position for RNG_CR_SLP. +#define BM_RNG_CR_SLP (0x00000010U) //!< Bit mask for RNG_CR_SLP. +#define BS_RNG_CR_SLP (1U) //!< Bit field size in bits for RNG_CR_SLP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_CR_SLP field. +#define BR_RNG_CR_SLP (BITBAND_ACCESS32(HW_RNG_CR_ADDR, BP_RNG_CR_SLP)) +#endif + +//! @brief Format value for bitfield RNG_CR_SLP. +#define BF_RNG_CR_SLP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RNG_CR_SLP), uint32_t) & BM_RNG_CR_SLP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SLP field to a new value. +#define BW_RNG_CR_SLP(v) (BITBAND_ACCESS32(HW_RNG_CR_ADDR, BP_RNG_CR_SLP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RNG_SR - RNGA Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RNG_SR - RNGA Status Register (RO) + * + * Reset value: 0x00010000U + * + * Indicates the status of RNGA. This register is read-only. + */ +typedef union _hw_rng_sr +{ + uint32_t U; + struct _hw_rng_sr_bitfields + { + uint32_t SECV : 1; //!< [0] Security Violation + uint32_t LRS : 1; //!< [1] Last Read Status + uint32_t ORU : 1; //!< [2] Output Register Underflow + uint32_t ERRI : 1; //!< [3] Error Interrupt + uint32_t SLP : 1; //!< [4] Sleep + uint32_t RESERVED0 : 3; //!< [7:5] + uint32_t OREG_LVL : 8; //!< [15:8] Output Register Level + uint32_t OREG_SIZE : 8; //!< [23:16] Output Register Size + uint32_t RESERVED1 : 8; //!< [31:24] + } B; +} hw_rng_sr_t; +#endif + +/*! + * @name Constants and macros for entire RNG_SR register + */ +//@{ +#define HW_RNG_SR_ADDR (REGS_RNG_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RNG_SR (*(__I hw_rng_sr_t *) HW_RNG_SR_ADDR) +#define HW_RNG_SR_RD() (HW_RNG_SR.U) +#endif +//@} + +/* + * Constants & macros for individual RNG_SR bitfields + */ + +/*! + * @name Register RNG_SR, field SECV[0] (RO) + * + * Used only when high assurance is enabled (CR[HA]). Indicates that a security + * violation has occurred.This field is sticky. To clear SR[SECV], you must reset + * RNGA. + * + * Values: + * - 0 - No security violation + * - 1 - Security violation + */ +//@{ +#define BP_RNG_SR_SECV (0U) //!< Bit position for RNG_SR_SECV. +#define BM_RNG_SR_SECV (0x00000001U) //!< Bit mask for RNG_SR_SECV. +#define BS_RNG_SR_SECV (1U) //!< Bit field size in bits for RNG_SR_SECV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_SR_SECV field. +#define BR_RNG_SR_SECV (BITBAND_ACCESS32(HW_RNG_SR_ADDR, BP_RNG_SR_SECV)) +#endif +//@} + +/*! + * @name Register RNG_SR, field LRS[1] (RO) + * + * Indicates whether the most recent read of OR[RANDOUT] caused an OR underflow + * condition, regardless of whether the error interrupt is masked (CR[INTM]). An + * OR underflow condition occurs when you read OR[RANDOUT] and SR[OREG_LVL]=0. + * After you read this register, RNGA writes 0 to this field. + * + * Values: + * - 0 - No underflow + * - 1 - Underflow + */ +//@{ +#define BP_RNG_SR_LRS (1U) //!< Bit position for RNG_SR_LRS. +#define BM_RNG_SR_LRS (0x00000002U) //!< Bit mask for RNG_SR_LRS. +#define BS_RNG_SR_LRS (1U) //!< Bit field size in bits for RNG_SR_LRS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_SR_LRS field. +#define BR_RNG_SR_LRS (BITBAND_ACCESS32(HW_RNG_SR_ADDR, BP_RNG_SR_LRS)) +#endif +//@} + +/*! + * @name Register RNG_SR, field ORU[2] (RO) + * + * Indicates whether an OR underflow condition has occurred since you last read + * this register (SR) or RNGA was reset, regardless of whether the error + * interrupt is masked (CR[INTM]). An OR underflow condition occurs when you read + * OR[RANDOUT] and SR[OREG_LVL]=0. After you read this register, RNGA writes 0 to this + * field. + * + * Values: + * - 0 - No underflow + * - 1 - Underflow + */ +//@{ +#define BP_RNG_SR_ORU (2U) //!< Bit position for RNG_SR_ORU. +#define BM_RNG_SR_ORU (0x00000004U) //!< Bit mask for RNG_SR_ORU. +#define BS_RNG_SR_ORU (1U) //!< Bit field size in bits for RNG_SR_ORU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_SR_ORU field. +#define BR_RNG_SR_ORU (BITBAND_ACCESS32(HW_RNG_SR_ADDR, BP_RNG_SR_ORU)) +#endif +//@} + +/*! + * @name Register RNG_SR, field ERRI[3] (RO) + * + * Indicates whether an OR underflow condition has occurred since you last + * cleared the error interrupt (CR[CLRI]) or RNGA was reset, regardless of whether the + * error interrupt is masked (CR[INTM]). An OR underflow condition occurs when + * you read OR[RANDOUT] and SR[OREG_LVL]=0. After you reset the error-interrupt + * indicator (via CR[CLRI]), RNGA writes 0 to this field. + * + * Values: + * - 0 - No underflow + * - 1 - Underflow + */ +//@{ +#define BP_RNG_SR_ERRI (3U) //!< Bit position for RNG_SR_ERRI. +#define BM_RNG_SR_ERRI (0x00000008U) //!< Bit mask for RNG_SR_ERRI. +#define BS_RNG_SR_ERRI (1U) //!< Bit field size in bits for RNG_SR_ERRI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_SR_ERRI field. +#define BR_RNG_SR_ERRI (BITBAND_ACCESS32(HW_RNG_SR_ADDR, BP_RNG_SR_ERRI)) +#endif +//@} + +/*! + * @name Register RNG_SR, field SLP[4] (RO) + * + * Specifies whether RNGA is in Sleep or Normal mode. You can also enter Sleep + * mode by asserting the DOZE signal. + * + * Values: + * - 0 - Normal mode + * - 1 - Sleep (low-power) mode + */ +//@{ +#define BP_RNG_SR_SLP (4U) //!< Bit position for RNG_SR_SLP. +#define BM_RNG_SR_SLP (0x00000010U) //!< Bit mask for RNG_SR_SLP. +#define BS_RNG_SR_SLP (1U) //!< Bit field size in bits for RNG_SR_SLP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_SR_SLP field. +#define BR_RNG_SR_SLP (BITBAND_ACCESS32(HW_RNG_SR_ADDR, BP_RNG_SR_SLP)) +#endif +//@} + +/*! + * @name Register RNG_SR, field OREG_LVL[15:8] (RO) + * + * Indicates the number of random-data words that are in OR[RANDOUT], which + * indicates whether OR[RANDOUT] is valid.If you read OR[RANDOUT] when SR[OREG_LVL] + * is not 0, then the contents of a random number contained in OR[RANDOUT] are + * returned, and RNGA writes 0 to both OR[RANDOUT] and SR[OREG_LVL]. + * + * Values: + * - 0 - No words (empty) + * - 1 - One word (valid) + */ +//@{ +#define BP_RNG_SR_OREG_LVL (8U) //!< Bit position for RNG_SR_OREG_LVL. +#define BM_RNG_SR_OREG_LVL (0x0000FF00U) //!< Bit mask for RNG_SR_OREG_LVL. +#define BS_RNG_SR_OREG_LVL (8U) //!< Bit field size in bits for RNG_SR_OREG_LVL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_SR_OREG_LVL field. +#define BR_RNG_SR_OREG_LVL (HW_RNG_SR.B.OREG_LVL) +#endif +//@} + +/*! + * @name Register RNG_SR, field OREG_SIZE[23:16] (RO) + * + * Indicates the size of the Output (OR) register in terms of the number of + * 32-bit random-data words it can hold. + * + * Values: + * - 1 - One word (this value is fixed) + */ +//@{ +#define BP_RNG_SR_OREG_SIZE (16U) //!< Bit position for RNG_SR_OREG_SIZE. +#define BM_RNG_SR_OREG_SIZE (0x00FF0000U) //!< Bit mask for RNG_SR_OREG_SIZE. +#define BS_RNG_SR_OREG_SIZE (8U) //!< Bit field size in bits for RNG_SR_OREG_SIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_SR_OREG_SIZE field. +#define BR_RNG_SR_OREG_SIZE (HW_RNG_SR.B.OREG_SIZE) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RNG_ER - RNGA Entropy Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RNG_ER - RNGA Entropy Register (WORZ) + * + * Reset value: 0x00000000U + * + * Specifies an entropy value that RNGA uses in addition to its ring oscillators + * to seed its pseudorandom algorithm. This is a write-only register; reads + * return all zeros. + */ +typedef union _hw_rng_er +{ + uint32_t U; + struct _hw_rng_er_bitfields + { + uint32_t EXT_ENT : 32; //!< [31:0] External Entropy + } B; +} hw_rng_er_t; +#endif + +/*! + * @name Constants and macros for entire RNG_ER register + */ +//@{ +#define HW_RNG_ER_ADDR (REGS_RNG_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RNG_ER (*(__O hw_rng_er_t *) HW_RNG_ER_ADDR) +#define HW_RNG_ER_RD() (HW_RNG_ER.U) +#define HW_RNG_ER_WR(v) (HW_RNG_ER.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual RNG_ER bitfields + */ + +/*! + * @name Register RNG_ER, field EXT_ENT[31:0] (WORZ) + * + * Specifies an entropy value that RNGA uses in addition to its ring oscillators + * to seed its pseudorandom algorithm.Specifying a value for this field is + * optional but recommended. You can write to this field at any time during operation. + */ +//@{ +#define BP_RNG_ER_EXT_ENT (0U) //!< Bit position for RNG_ER_EXT_ENT. +#define BM_RNG_ER_EXT_ENT (0xFFFFFFFFU) //!< Bit mask for RNG_ER_EXT_ENT. +#define BS_RNG_ER_EXT_ENT (32U) //!< Bit field size in bits for RNG_ER_EXT_ENT. + +//! @brief Format value for bitfield RNG_ER_EXT_ENT. +#define BF_RNG_ER_EXT_ENT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RNG_ER_EXT_ENT), uint32_t) & BM_RNG_ER_EXT_ENT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EXT_ENT field to a new value. +#define BW_RNG_ER_EXT_ENT(v) (HW_RNG_ER_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RNG_OR - RNGA Output Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RNG_OR - RNGA Output Register (RO) + * + * Reset value: 0x00000000U + * + * Stores a random-data word generated by RNGA. + */ +typedef union _hw_rng_or +{ + uint32_t U; + struct _hw_rng_or_bitfields + { + uint32_t RANDOUT : 32; //!< [31:0] Random Output + } B; +} hw_rng_or_t; +#endif + +/*! + * @name Constants and macros for entire RNG_OR register + */ +//@{ +#define HW_RNG_OR_ADDR (REGS_RNG_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_RNG_OR (*(__I hw_rng_or_t *) HW_RNG_OR_ADDR) +#define HW_RNG_OR_RD() (HW_RNG_OR.U) +#endif +//@} + +/* + * Constants & macros for individual RNG_OR bitfields + */ + +/*! + * @name Register RNG_OR, field RANDOUT[31:0] (RO) + * + * Stores a random-data word generated by RNGA. This is a read-only field.Before + * reading RANDOUT, be sure it is valid (SR[OREG_LVL]=1). + * + * Values: + * - 0 - Invalid data (if you read this field when it is 0 and SR[OREG_LVL] is + * 0, RNGA then writes 1 to SR[ERRI], SR[ORU], and SR[LRS]; when the error + * interrupt is not masked (CR[INTM]=0), RNGA also asserts an error interrupt + * request to the interrupt controller). + */ +//@{ +#define BP_RNG_OR_RANDOUT (0U) //!< Bit position for RNG_OR_RANDOUT. +#define BM_RNG_OR_RANDOUT (0xFFFFFFFFU) //!< Bit mask for RNG_OR_RANDOUT. +#define BS_RNG_OR_RANDOUT (32U) //!< Bit field size in bits for RNG_OR_RANDOUT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RNG_OR_RANDOUT field. +#define BR_RNG_OR_RANDOUT (HW_RNG_OR.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_rng_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All RNG module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_rng +{ + __IO hw_rng_cr_t CR; //!< [0x0] RNGA Control Register + __I hw_rng_sr_t SR; //!< [0x4] RNGA Status Register + __O hw_rng_er_t ER; //!< [0x8] RNGA Entropy Register + __I hw_rng_or_t OR; //!< [0xC] RNGA Output Register +} hw_rng_t; +#pragma pack() + +//! @brief Macro to access all RNG registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_RNG</code>. +#define HW_RNG (*(hw_rng_t *) REGS_RNG_BASE) +#endif + +#endif // __HW_RNG_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_rtc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1828 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_RTC_REGISTERS_H__ +#define __HW_RTC_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 RTC + * + * Secure Real Time Clock + * + * Registers defined in this header file: + * - HW_RTC_TSR - RTC Time Seconds Register + * - HW_RTC_TPR - RTC Time Prescaler Register + * - HW_RTC_TAR - RTC Time Alarm Register + * - HW_RTC_TCR - RTC Time Compensation Register + * - HW_RTC_CR - RTC Control Register + * - HW_RTC_SR - RTC Status Register + * - HW_RTC_LR - RTC Lock Register + * - HW_RTC_IER - RTC Interrupt Enable Register + * - HW_RTC_WAR - RTC Write Access Register + * - HW_RTC_RAR - RTC Read Access Register + * + * - hw_rtc_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_RTC_BASE +#define HW_RTC_INSTANCE_COUNT (1U) //!< Number of instances of the RTC module. +#define REGS_RTC_BASE (0x4003D000U) //!< Base address for RTC. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_TSR - RTC Time Seconds Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_TSR - RTC Time Seconds Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_rtc_tsr +{ + uint32_t U; + struct _hw_rtc_tsr_bitfields + { + uint32_t TSR : 32; //!< [31:0] Time Seconds Register + } B; +} hw_rtc_tsr_t; +#endif + +/*! + * @name Constants and macros for entire RTC_TSR register + */ +//@{ +#define HW_RTC_TSR_ADDR (REGS_RTC_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_TSR (*(__IO hw_rtc_tsr_t *) HW_RTC_TSR_ADDR) +#define HW_RTC_TSR_RD() (HW_RTC_TSR.U) +#define HW_RTC_TSR_WR(v) (HW_RTC_TSR.U = (v)) +#define HW_RTC_TSR_SET(v) (HW_RTC_TSR_WR(HW_RTC_TSR_RD() | (v))) +#define HW_RTC_TSR_CLR(v) (HW_RTC_TSR_WR(HW_RTC_TSR_RD() & ~(v))) +#define HW_RTC_TSR_TOG(v) (HW_RTC_TSR_WR(HW_RTC_TSR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_TSR bitfields + */ + +/*! + * @name Register RTC_TSR, field TSR[31:0] (RW) + * + * When the time counter is enabled, the TSR is read only and increments once a + * second provided SR[TOF] or SR[TIF] are not set. The time counter will read as + * zero when SR[TOF] or SR[TIF] are set. When the time counter is disabled, the + * TSR can be read or written. Writing to the TSR when the time counter is + * disabled will clear the SR[TOF] and/or the SR[TIF]. Writing to TSR with zero is + * supported, but not recommended because TSR will read as zero when SR[TIF] or + * SR[TOF] are set (indicating the time is invalid). + */ +//@{ +#define BP_RTC_TSR_TSR (0U) //!< Bit position for RTC_TSR_TSR. +#define BM_RTC_TSR_TSR (0xFFFFFFFFU) //!< Bit mask for RTC_TSR_TSR. +#define BS_RTC_TSR_TSR (32U) //!< Bit field size in bits for RTC_TSR_TSR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_TSR_TSR field. +#define BR_RTC_TSR_TSR (HW_RTC_TSR.U) +#endif + +//! @brief Format value for bitfield RTC_TSR_TSR. +#define BF_RTC_TSR_TSR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_TSR_TSR), uint32_t) & BM_RTC_TSR_TSR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TSR field to a new value. +#define BW_RTC_TSR_TSR(v) (HW_RTC_TSR_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_TPR - RTC Time Prescaler Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_TPR - RTC Time Prescaler Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_rtc_tpr +{ + uint32_t U; + struct _hw_rtc_tpr_bitfields + { + uint32_t TPR : 16; //!< [15:0] Time Prescaler Register + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_rtc_tpr_t; +#endif + +/*! + * @name Constants and macros for entire RTC_TPR register + */ +//@{ +#define HW_RTC_TPR_ADDR (REGS_RTC_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_TPR (*(__IO hw_rtc_tpr_t *) HW_RTC_TPR_ADDR) +#define HW_RTC_TPR_RD() (HW_RTC_TPR.U) +#define HW_RTC_TPR_WR(v) (HW_RTC_TPR.U = (v)) +#define HW_RTC_TPR_SET(v) (HW_RTC_TPR_WR(HW_RTC_TPR_RD() | (v))) +#define HW_RTC_TPR_CLR(v) (HW_RTC_TPR_WR(HW_RTC_TPR_RD() & ~(v))) +#define HW_RTC_TPR_TOG(v) (HW_RTC_TPR_WR(HW_RTC_TPR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_TPR bitfields + */ + +/*! + * @name Register RTC_TPR, field TPR[15:0] (RW) + * + * When the time counter is enabled, the TPR is read only and increments every + * 32.768 kHz clock cycle. The time counter will read as zero when SR[TOF] or + * SR[TIF] are set. When the time counter is disabled, the TPR can be read or + * written. The TSR[TSR] increments when bit 14 of the TPR transitions from a logic one + * to a logic zero. + */ +//@{ +#define BP_RTC_TPR_TPR (0U) //!< Bit position for RTC_TPR_TPR. +#define BM_RTC_TPR_TPR (0x0000FFFFU) //!< Bit mask for RTC_TPR_TPR. +#define BS_RTC_TPR_TPR (16U) //!< Bit field size in bits for RTC_TPR_TPR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_TPR_TPR field. +#define BR_RTC_TPR_TPR (HW_RTC_TPR.B.TPR) +#endif + +//! @brief Format value for bitfield RTC_TPR_TPR. +#define BF_RTC_TPR_TPR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_TPR_TPR), uint32_t) & BM_RTC_TPR_TPR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TPR field to a new value. +#define BW_RTC_TPR_TPR(v) (HW_RTC_TPR_WR((HW_RTC_TPR_RD() & ~BM_RTC_TPR_TPR) | BF_RTC_TPR_TPR(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_TAR - RTC Time Alarm Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_TAR - RTC Time Alarm Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_rtc_tar +{ + uint32_t U; + struct _hw_rtc_tar_bitfields + { + uint32_t TAR : 32; //!< [31:0] Time Alarm Register + } B; +} hw_rtc_tar_t; +#endif + +/*! + * @name Constants and macros for entire RTC_TAR register + */ +//@{ +#define HW_RTC_TAR_ADDR (REGS_RTC_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_TAR (*(__IO hw_rtc_tar_t *) HW_RTC_TAR_ADDR) +#define HW_RTC_TAR_RD() (HW_RTC_TAR.U) +#define HW_RTC_TAR_WR(v) (HW_RTC_TAR.U = (v)) +#define HW_RTC_TAR_SET(v) (HW_RTC_TAR_WR(HW_RTC_TAR_RD() | (v))) +#define HW_RTC_TAR_CLR(v) (HW_RTC_TAR_WR(HW_RTC_TAR_RD() & ~(v))) +#define HW_RTC_TAR_TOG(v) (HW_RTC_TAR_WR(HW_RTC_TAR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_TAR bitfields + */ + +/*! + * @name Register RTC_TAR, field TAR[31:0] (RW) + * + * When the time counter is enabled, the SR[TAF] is set whenever the TAR[TAR] + * equals the TSR[TSR] and the TSR[TSR] increments. Writing to the TAR clears the + * SR[TAF]. + */ +//@{ +#define BP_RTC_TAR_TAR (0U) //!< Bit position for RTC_TAR_TAR. +#define BM_RTC_TAR_TAR (0xFFFFFFFFU) //!< Bit mask for RTC_TAR_TAR. +#define BS_RTC_TAR_TAR (32U) //!< Bit field size in bits for RTC_TAR_TAR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_TAR_TAR field. +#define BR_RTC_TAR_TAR (HW_RTC_TAR.U) +#endif + +//! @brief Format value for bitfield RTC_TAR_TAR. +#define BF_RTC_TAR_TAR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_TAR_TAR), uint32_t) & BM_RTC_TAR_TAR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TAR field to a new value. +#define BW_RTC_TAR_TAR(v) (HW_RTC_TAR_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_TCR - RTC Time Compensation Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_TCR - RTC Time Compensation Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_rtc_tcr +{ + uint32_t U; + struct _hw_rtc_tcr_bitfields + { + uint32_t TCR : 8; //!< [7:0] Time Compensation Register + uint32_t CIR : 8; //!< [15:8] Compensation Interval Register + uint32_t TCV : 8; //!< [23:16] Time Compensation Value + uint32_t CIC : 8; //!< [31:24] Compensation Interval Counter + } B; +} hw_rtc_tcr_t; +#endif + +/*! + * @name Constants and macros for entire RTC_TCR register + */ +//@{ +#define HW_RTC_TCR_ADDR (REGS_RTC_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_TCR (*(__IO hw_rtc_tcr_t *) HW_RTC_TCR_ADDR) +#define HW_RTC_TCR_RD() (HW_RTC_TCR.U) +#define HW_RTC_TCR_WR(v) (HW_RTC_TCR.U = (v)) +#define HW_RTC_TCR_SET(v) (HW_RTC_TCR_WR(HW_RTC_TCR_RD() | (v))) +#define HW_RTC_TCR_CLR(v) (HW_RTC_TCR_WR(HW_RTC_TCR_RD() & ~(v))) +#define HW_RTC_TCR_TOG(v) (HW_RTC_TCR_WR(HW_RTC_TCR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_TCR bitfields + */ + +/*! + * @name Register RTC_TCR, field TCR[7:0] (RW) + * + * Configures the number of 32.768 kHz clock cycles in each second. This + * register is double buffered and writes do not take affect until the end of the + * current compensation interval. + * + * Values: + * - 10000000 - Time Prescaler Register overflows every 32896 clock cycles. + * - 11111111 - Time Prescaler Register overflows every 32769 clock cycles. + * - 0 - Time Prescaler Register overflows every 32768 clock cycles. + * - 1 - Time Prescaler Register overflows every 32767 clock cycles. + * - 1111111 - Time Prescaler Register overflows every 32641 clock cycles. + */ +//@{ +#define BP_RTC_TCR_TCR (0U) //!< Bit position for RTC_TCR_TCR. +#define BM_RTC_TCR_TCR (0x000000FFU) //!< Bit mask for RTC_TCR_TCR. +#define BS_RTC_TCR_TCR (8U) //!< Bit field size in bits for RTC_TCR_TCR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_TCR_TCR field. +#define BR_RTC_TCR_TCR (HW_RTC_TCR.B.TCR) +#endif + +//! @brief Format value for bitfield RTC_TCR_TCR. +#define BF_RTC_TCR_TCR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_TCR_TCR), uint32_t) & BM_RTC_TCR_TCR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCR field to a new value. +#define BW_RTC_TCR_TCR(v) (HW_RTC_TCR_WR((HW_RTC_TCR_RD() & ~BM_RTC_TCR_TCR) | BF_RTC_TCR_TCR(v))) +#endif +//@} + +/*! + * @name Register RTC_TCR, field CIR[15:8] (RW) + * + * Configures the compensation interval in seconds from 1 to 256 to control how + * frequently the TCR should adjust the number of 32.768 kHz cycles in each + * second. The value written should be one less than the number of seconds. For + * example, write zero to configure for a compensation interval of one second. This + * register is double buffered and writes do not take affect until the end of the + * current compensation interval. + */ +//@{ +#define BP_RTC_TCR_CIR (8U) //!< Bit position for RTC_TCR_CIR. +#define BM_RTC_TCR_CIR (0x0000FF00U) //!< Bit mask for RTC_TCR_CIR. +#define BS_RTC_TCR_CIR (8U) //!< Bit field size in bits for RTC_TCR_CIR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_TCR_CIR field. +#define BR_RTC_TCR_CIR (HW_RTC_TCR.B.CIR) +#endif + +//! @brief Format value for bitfield RTC_TCR_CIR. +#define BF_RTC_TCR_CIR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_TCR_CIR), uint32_t) & BM_RTC_TCR_CIR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CIR field to a new value. +#define BW_RTC_TCR_CIR(v) (HW_RTC_TCR_WR((HW_RTC_TCR_RD() & ~BM_RTC_TCR_CIR) | BF_RTC_TCR_CIR(v))) +#endif +//@} + +/*! + * @name Register RTC_TCR, field TCV[23:16] (RO) + * + * Current value used by the compensation logic for the present second interval. + * Updated once a second if the CIC equals 0 with the contents of the TCR field. + * If the CIC does not equal zero then it is loaded with zero (compensation is + * not enabled for that second increment). + */ +//@{ +#define BP_RTC_TCR_TCV (16U) //!< Bit position for RTC_TCR_TCV. +#define BM_RTC_TCR_TCV (0x00FF0000U) //!< Bit mask for RTC_TCR_TCV. +#define BS_RTC_TCR_TCV (8U) //!< Bit field size in bits for RTC_TCR_TCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_TCR_TCV field. +#define BR_RTC_TCR_TCV (HW_RTC_TCR.B.TCV) +#endif +//@} + +/*! + * @name Register RTC_TCR, field CIC[31:24] (RO) + * + * Current value of the compensation interval counter. If the compensation + * interval counter equals zero then it is loaded with the contents of the CIR. If the + * CIC does not equal zero then it is decremented once a second. + */ +//@{ +#define BP_RTC_TCR_CIC (24U) //!< Bit position for RTC_TCR_CIC. +#define BM_RTC_TCR_CIC (0xFF000000U) //!< Bit mask for RTC_TCR_CIC. +#define BS_RTC_TCR_CIC (8U) //!< Bit field size in bits for RTC_TCR_CIC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_TCR_CIC field. +#define BR_RTC_TCR_CIC (HW_RTC_TCR.B.CIC) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_CR - RTC Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_CR - RTC Control Register (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_rtc_cr +{ + uint32_t U; + struct _hw_rtc_cr_bitfields + { + uint32_t SWR : 1; //!< [0] Software Reset + uint32_t WPE : 1; //!< [1] Wakeup Pin Enable + uint32_t SUP : 1; //!< [2] Supervisor Access + uint32_t UM : 1; //!< [3] Update Mode + uint32_t WPS : 1; //!< [4] Wakeup Pin Select + uint32_t RESERVED0 : 3; //!< [7:5] + uint32_t OSCE : 1; //!< [8] Oscillator Enable + uint32_t CLKO : 1; //!< [9] Clock Output + uint32_t SC16P : 1; //!< [10] Oscillator 16pF Load Configure + uint32_t SC8P : 1; //!< [11] Oscillator 8pF Load Configure + uint32_t SC4P : 1; //!< [12] Oscillator 4pF Load Configure + uint32_t SC2P : 1; //!< [13] Oscillator 2pF Load Configure + uint32_t RESERVED1 : 18; //!< [31:14] + } B; +} hw_rtc_cr_t; +#endif + +/*! + * @name Constants and macros for entire RTC_CR register + */ +//@{ +#define HW_RTC_CR_ADDR (REGS_RTC_BASE + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_CR (*(__IO hw_rtc_cr_t *) HW_RTC_CR_ADDR) +#define HW_RTC_CR_RD() (HW_RTC_CR.U) +#define HW_RTC_CR_WR(v) (HW_RTC_CR.U = (v)) +#define HW_RTC_CR_SET(v) (HW_RTC_CR_WR(HW_RTC_CR_RD() | (v))) +#define HW_RTC_CR_CLR(v) (HW_RTC_CR_WR(HW_RTC_CR_RD() & ~(v))) +#define HW_RTC_CR_TOG(v) (HW_RTC_CR_WR(HW_RTC_CR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_CR bitfields + */ + +/*! + * @name Register RTC_CR, field SWR[0] (RW) + * + * Values: + * - 0 - No effect. + * - 1 - Resets all RTC registers except for the SWR bit and the RTC_WAR and + * RTC_RAR registers . The SWR bit is cleared by VBAT POR and by software + * explicitly clearing it. + */ +//@{ +#define BP_RTC_CR_SWR (0U) //!< Bit position for RTC_CR_SWR. +#define BM_RTC_CR_SWR (0x00000001U) //!< Bit mask for RTC_CR_SWR. +#define BS_RTC_CR_SWR (1U) //!< Bit field size in bits for RTC_CR_SWR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_SWR field. +#define BR_RTC_CR_SWR (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SWR)) +#endif + +//! @brief Format value for bitfield RTC_CR_SWR. +#define BF_RTC_CR_SWR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_SWR), uint32_t) & BM_RTC_CR_SWR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SWR field to a new value. +#define BW_RTC_CR_SWR(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SWR) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field WPE[1] (RW) + * + * The wakeup pin is optional and not available on all devices. + * + * Values: + * - 0 - Wakeup pin is disabled. + * - 1 - Wakeup pin is enabled and wakeup pin asserts if the RTC interrupt + * asserts or the wakeup pin is turned on. + */ +//@{ +#define BP_RTC_CR_WPE (1U) //!< Bit position for RTC_CR_WPE. +#define BM_RTC_CR_WPE (0x00000002U) //!< Bit mask for RTC_CR_WPE. +#define BS_RTC_CR_WPE (1U) //!< Bit field size in bits for RTC_CR_WPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_WPE field. +#define BR_RTC_CR_WPE (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_WPE)) +#endif + +//! @brief Format value for bitfield RTC_CR_WPE. +#define BF_RTC_CR_WPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_WPE), uint32_t) & BM_RTC_CR_WPE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WPE field to a new value. +#define BW_RTC_CR_WPE(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_WPE) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field SUP[2] (RW) + * + * Values: + * - 0 - Non-supervisor mode write accesses are not supported and generate a bus + * error. + * - 1 - Non-supervisor mode write accesses are supported. + */ +//@{ +#define BP_RTC_CR_SUP (2U) //!< Bit position for RTC_CR_SUP. +#define BM_RTC_CR_SUP (0x00000004U) //!< Bit mask for RTC_CR_SUP. +#define BS_RTC_CR_SUP (1U) //!< Bit field size in bits for RTC_CR_SUP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_SUP field. +#define BR_RTC_CR_SUP (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SUP)) +#endif + +//! @brief Format value for bitfield RTC_CR_SUP. +#define BF_RTC_CR_SUP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_SUP), uint32_t) & BM_RTC_CR_SUP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SUP field to a new value. +#define BW_RTC_CR_SUP(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SUP) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field UM[3] (RW) + * + * Allows SR[TCE] to be written even when the Status Register is locked. When + * set, the SR[TCE] can always be written if the SR[TIF] or SR[TOF] are set or if + * the SR[TCE] is clear. + * + * Values: + * - 0 - Registers cannot be written when locked. + * - 1 - Registers can be written when locked under limited conditions. + */ +//@{ +#define BP_RTC_CR_UM (3U) //!< Bit position for RTC_CR_UM. +#define BM_RTC_CR_UM (0x00000008U) //!< Bit mask for RTC_CR_UM. +#define BS_RTC_CR_UM (1U) //!< Bit field size in bits for RTC_CR_UM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_UM field. +#define BR_RTC_CR_UM (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_UM)) +#endif + +//! @brief Format value for bitfield RTC_CR_UM. +#define BF_RTC_CR_UM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_UM), uint32_t) & BM_RTC_CR_UM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UM field to a new value. +#define BW_RTC_CR_UM(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_UM) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field WPS[4] (RW) + * + * The wakeup pin is optional and not available on all devices. + * + * Values: + * - 0 - Wakeup pin asserts (active low, open drain) if the RTC interrupt + * asserts or the wakeup pin is turned on. + * - 1 - Wakeup pin instead outputs the RTC 32kHz clock, provided the wakeup pin + * is turned on and the 32kHz clock is output to other peripherals. + */ +//@{ +#define BP_RTC_CR_WPS (4U) //!< Bit position for RTC_CR_WPS. +#define BM_RTC_CR_WPS (0x00000010U) //!< Bit mask for RTC_CR_WPS. +#define BS_RTC_CR_WPS (1U) //!< Bit field size in bits for RTC_CR_WPS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_WPS field. +#define BR_RTC_CR_WPS (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_WPS)) +#endif + +//! @brief Format value for bitfield RTC_CR_WPS. +#define BF_RTC_CR_WPS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_WPS), uint32_t) & BM_RTC_CR_WPS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WPS field to a new value. +#define BW_RTC_CR_WPS(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_WPS) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field OSCE[8] (RW) + * + * Values: + * - 0 - 32.768 kHz oscillator is disabled. + * - 1 - 32.768 kHz oscillator is enabled. After setting this bit, wait the + * oscillator startup time before enabling the time counter to allow the 32.768 + * kHz clock time to stabilize. + */ +//@{ +#define BP_RTC_CR_OSCE (8U) //!< Bit position for RTC_CR_OSCE. +#define BM_RTC_CR_OSCE (0x00000100U) //!< Bit mask for RTC_CR_OSCE. +#define BS_RTC_CR_OSCE (1U) //!< Bit field size in bits for RTC_CR_OSCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_OSCE field. +#define BR_RTC_CR_OSCE (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_OSCE)) +#endif + +//! @brief Format value for bitfield RTC_CR_OSCE. +#define BF_RTC_CR_OSCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_OSCE), uint32_t) & BM_RTC_CR_OSCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OSCE field to a new value. +#define BW_RTC_CR_OSCE(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_OSCE) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field CLKO[9] (RW) + * + * Values: + * - 0 - The 32 kHz clock is output to other peripherals. + * - 1 - The 32 kHz clock is not output to other peripherals. + */ +//@{ +#define BP_RTC_CR_CLKO (9U) //!< Bit position for RTC_CR_CLKO. +#define BM_RTC_CR_CLKO (0x00000200U) //!< Bit mask for RTC_CR_CLKO. +#define BS_RTC_CR_CLKO (1U) //!< Bit field size in bits for RTC_CR_CLKO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_CLKO field. +#define BR_RTC_CR_CLKO (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_CLKO)) +#endif + +//! @brief Format value for bitfield RTC_CR_CLKO. +#define BF_RTC_CR_CLKO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_CLKO), uint32_t) & BM_RTC_CR_CLKO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLKO field to a new value. +#define BW_RTC_CR_CLKO(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_CLKO) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field SC16P[10] (RW) + * + * Values: + * - 0 - Disable the load. + * - 1 - Enable the additional load. + */ +//@{ +#define BP_RTC_CR_SC16P (10U) //!< Bit position for RTC_CR_SC16P. +#define BM_RTC_CR_SC16P (0x00000400U) //!< Bit mask for RTC_CR_SC16P. +#define BS_RTC_CR_SC16P (1U) //!< Bit field size in bits for RTC_CR_SC16P. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_SC16P field. +#define BR_RTC_CR_SC16P (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SC16P)) +#endif + +//! @brief Format value for bitfield RTC_CR_SC16P. +#define BF_RTC_CR_SC16P(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_SC16P), uint32_t) & BM_RTC_CR_SC16P) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SC16P field to a new value. +#define BW_RTC_CR_SC16P(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SC16P) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field SC8P[11] (RW) + * + * Values: + * - 0 - Disable the load. + * - 1 - Enable the additional load. + */ +//@{ +#define BP_RTC_CR_SC8P (11U) //!< Bit position for RTC_CR_SC8P. +#define BM_RTC_CR_SC8P (0x00000800U) //!< Bit mask for RTC_CR_SC8P. +#define BS_RTC_CR_SC8P (1U) //!< Bit field size in bits for RTC_CR_SC8P. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_SC8P field. +#define BR_RTC_CR_SC8P (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SC8P)) +#endif + +//! @brief Format value for bitfield RTC_CR_SC8P. +#define BF_RTC_CR_SC8P(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_SC8P), uint32_t) & BM_RTC_CR_SC8P) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SC8P field to a new value. +#define BW_RTC_CR_SC8P(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SC8P) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field SC4P[12] (RW) + * + * Values: + * - 0 - Disable the load. + * - 1 - Enable the additional load. + */ +//@{ +#define BP_RTC_CR_SC4P (12U) //!< Bit position for RTC_CR_SC4P. +#define BM_RTC_CR_SC4P (0x00001000U) //!< Bit mask for RTC_CR_SC4P. +#define BS_RTC_CR_SC4P (1U) //!< Bit field size in bits for RTC_CR_SC4P. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_SC4P field. +#define BR_RTC_CR_SC4P (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SC4P)) +#endif + +//! @brief Format value for bitfield RTC_CR_SC4P. +#define BF_RTC_CR_SC4P(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_SC4P), uint32_t) & BM_RTC_CR_SC4P) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SC4P field to a new value. +#define BW_RTC_CR_SC4P(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SC4P) = (v)) +#endif +//@} + +/*! + * @name Register RTC_CR, field SC2P[13] (RW) + * + * Values: + * - 0 - Disable the load. + * - 1 - Enable the additional load. + */ +//@{ +#define BP_RTC_CR_SC2P (13U) //!< Bit position for RTC_CR_SC2P. +#define BM_RTC_CR_SC2P (0x00002000U) //!< Bit mask for RTC_CR_SC2P. +#define BS_RTC_CR_SC2P (1U) //!< Bit field size in bits for RTC_CR_SC2P. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_CR_SC2P field. +#define BR_RTC_CR_SC2P (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SC2P)) +#endif + +//! @brief Format value for bitfield RTC_CR_SC2P. +#define BF_RTC_CR_SC2P(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_CR_SC2P), uint32_t) & BM_RTC_CR_SC2P) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SC2P field to a new value. +#define BW_RTC_CR_SC2P(v) (BITBAND_ACCESS32(HW_RTC_CR_ADDR, BP_RTC_CR_SC2P) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_SR - RTC Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_SR - RTC Status Register (RW) + * + * Reset value: 0x00000001U + */ +typedef union _hw_rtc_sr +{ + uint32_t U; + struct _hw_rtc_sr_bitfields + { + uint32_t TIF : 1; //!< [0] Time Invalid Flag + uint32_t TOF : 1; //!< [1] Time Overflow Flag + uint32_t TAF : 1; //!< [2] Time Alarm Flag + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TCE : 1; //!< [4] Time Counter Enable + uint32_t RESERVED1 : 27; //!< [31:5] + } B; +} hw_rtc_sr_t; +#endif + +/*! + * @name Constants and macros for entire RTC_SR register + */ +//@{ +#define HW_RTC_SR_ADDR (REGS_RTC_BASE + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_SR (*(__IO hw_rtc_sr_t *) HW_RTC_SR_ADDR) +#define HW_RTC_SR_RD() (HW_RTC_SR.U) +#define HW_RTC_SR_WR(v) (HW_RTC_SR.U = (v)) +#define HW_RTC_SR_SET(v) (HW_RTC_SR_WR(HW_RTC_SR_RD() | (v))) +#define HW_RTC_SR_CLR(v) (HW_RTC_SR_WR(HW_RTC_SR_RD() & ~(v))) +#define HW_RTC_SR_TOG(v) (HW_RTC_SR_WR(HW_RTC_SR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_SR bitfields + */ + +/*! + * @name Register RTC_SR, field TIF[0] (RO) + * + * The time invalid flag is set on VBAT POR or software reset. The TSR and TPR + * do not increment and read as zero when this bit is set. This bit is cleared by + * writing the TSR register when the time counter is disabled. + * + * Values: + * - 0 - Time is valid. + * - 1 - Time is invalid and time counter is read as zero. + */ +//@{ +#define BP_RTC_SR_TIF (0U) //!< Bit position for RTC_SR_TIF. +#define BM_RTC_SR_TIF (0x00000001U) //!< Bit mask for RTC_SR_TIF. +#define BS_RTC_SR_TIF (1U) //!< Bit field size in bits for RTC_SR_TIF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_SR_TIF field. +#define BR_RTC_SR_TIF (BITBAND_ACCESS32(HW_RTC_SR_ADDR, BP_RTC_SR_TIF)) +#endif +//@} + +/*! + * @name Register RTC_SR, field TOF[1] (RO) + * + * Time overflow flag is set when the time counter is enabled and overflows. The + * TSR and TPR do not increment and read as zero when this bit is set. This bit + * is cleared by writing the TSR register when the time counter is disabled. + * + * Values: + * - 0 - Time overflow has not occurred. + * - 1 - Time overflow has occurred and time counter is read as zero. + */ +//@{ +#define BP_RTC_SR_TOF (1U) //!< Bit position for RTC_SR_TOF. +#define BM_RTC_SR_TOF (0x00000002U) //!< Bit mask for RTC_SR_TOF. +#define BS_RTC_SR_TOF (1U) //!< Bit field size in bits for RTC_SR_TOF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_SR_TOF field. +#define BR_RTC_SR_TOF (BITBAND_ACCESS32(HW_RTC_SR_ADDR, BP_RTC_SR_TOF)) +#endif +//@} + +/*! + * @name Register RTC_SR, field TAF[2] (RO) + * + * Time alarm flag is set when the TAR[TAR] equals the TSR[TSR] and the TSR[TSR] + * increments. This bit is cleared by writing the TAR register. + * + * Values: + * - 0 - Time alarm has not occurred. + * - 1 - Time alarm has occurred. + */ +//@{ +#define BP_RTC_SR_TAF (2U) //!< Bit position for RTC_SR_TAF. +#define BM_RTC_SR_TAF (0x00000004U) //!< Bit mask for RTC_SR_TAF. +#define BS_RTC_SR_TAF (1U) //!< Bit field size in bits for RTC_SR_TAF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_SR_TAF field. +#define BR_RTC_SR_TAF (BITBAND_ACCESS32(HW_RTC_SR_ADDR, BP_RTC_SR_TAF)) +#endif +//@} + +/*! + * @name Register RTC_SR, field TCE[4] (RW) + * + * When time counter is disabled the TSR register and TPR register are + * writeable, but do not increment. When time counter is enabled the TSR register and TPR + * register are not writeable, but increment. + * + * Values: + * - 0 - Time counter is disabled. + * - 1 - Time counter is enabled. + */ +//@{ +#define BP_RTC_SR_TCE (4U) //!< Bit position for RTC_SR_TCE. +#define BM_RTC_SR_TCE (0x00000010U) //!< Bit mask for RTC_SR_TCE. +#define BS_RTC_SR_TCE (1U) //!< Bit field size in bits for RTC_SR_TCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_SR_TCE field. +#define BR_RTC_SR_TCE (BITBAND_ACCESS32(HW_RTC_SR_ADDR, BP_RTC_SR_TCE)) +#endif + +//! @brief Format value for bitfield RTC_SR_TCE. +#define BF_RTC_SR_TCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_SR_TCE), uint32_t) & BM_RTC_SR_TCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCE field to a new value. +#define BW_RTC_SR_TCE(v) (BITBAND_ACCESS32(HW_RTC_SR_ADDR, BP_RTC_SR_TCE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_LR - RTC Lock Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_LR - RTC Lock Register (RW) + * + * Reset value: 0x000000FFU + */ +typedef union _hw_rtc_lr +{ + uint32_t U; + struct _hw_rtc_lr_bitfields + { + uint32_t RESERVED0 : 3; //!< [2:0] + uint32_t TCL : 1; //!< [3] Time Compensation Lock + uint32_t CRL : 1; //!< [4] Control Register Lock + uint32_t SRL : 1; //!< [5] Status Register Lock + uint32_t LRL : 1; //!< [6] Lock Register Lock + uint32_t RESERVED1 : 25; //!< [31:7] + } B; +} hw_rtc_lr_t; +#endif + +/*! + * @name Constants and macros for entire RTC_LR register + */ +//@{ +#define HW_RTC_LR_ADDR (REGS_RTC_BASE + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_LR (*(__IO hw_rtc_lr_t *) HW_RTC_LR_ADDR) +#define HW_RTC_LR_RD() (HW_RTC_LR.U) +#define HW_RTC_LR_WR(v) (HW_RTC_LR.U = (v)) +#define HW_RTC_LR_SET(v) (HW_RTC_LR_WR(HW_RTC_LR_RD() | (v))) +#define HW_RTC_LR_CLR(v) (HW_RTC_LR_WR(HW_RTC_LR_RD() & ~(v))) +#define HW_RTC_LR_TOG(v) (HW_RTC_LR_WR(HW_RTC_LR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_LR bitfields + */ + +/*! + * @name Register RTC_LR, field TCL[3] (RW) + * + * After being cleared, this bit can be set only by VBAT POR or software reset. + * + * Values: + * - 0 - Time Compensation Register is locked and writes are ignored. + * - 1 - Time Compensation Register is not locked and writes complete as normal. + */ +//@{ +#define BP_RTC_LR_TCL (3U) //!< Bit position for RTC_LR_TCL. +#define BM_RTC_LR_TCL (0x00000008U) //!< Bit mask for RTC_LR_TCL. +#define BS_RTC_LR_TCL (1U) //!< Bit field size in bits for RTC_LR_TCL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_LR_TCL field. +#define BR_RTC_LR_TCL (BITBAND_ACCESS32(HW_RTC_LR_ADDR, BP_RTC_LR_TCL)) +#endif + +//! @brief Format value for bitfield RTC_LR_TCL. +#define BF_RTC_LR_TCL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_LR_TCL), uint32_t) & BM_RTC_LR_TCL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCL field to a new value. +#define BW_RTC_LR_TCL(v) (BITBAND_ACCESS32(HW_RTC_LR_ADDR, BP_RTC_LR_TCL) = (v)) +#endif +//@} + +/*! + * @name Register RTC_LR, field CRL[4] (RW) + * + * After being cleared, this bit can only be set by VBAT POR. + * + * Values: + * - 0 - Control Register is locked and writes are ignored. + * - 1 - Control Register is not locked and writes complete as normal. + */ +//@{ +#define BP_RTC_LR_CRL (4U) //!< Bit position for RTC_LR_CRL. +#define BM_RTC_LR_CRL (0x00000010U) //!< Bit mask for RTC_LR_CRL. +#define BS_RTC_LR_CRL (1U) //!< Bit field size in bits for RTC_LR_CRL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_LR_CRL field. +#define BR_RTC_LR_CRL (BITBAND_ACCESS32(HW_RTC_LR_ADDR, BP_RTC_LR_CRL)) +#endif + +//! @brief Format value for bitfield RTC_LR_CRL. +#define BF_RTC_LR_CRL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_LR_CRL), uint32_t) & BM_RTC_LR_CRL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRL field to a new value. +#define BW_RTC_LR_CRL(v) (BITBAND_ACCESS32(HW_RTC_LR_ADDR, BP_RTC_LR_CRL) = (v)) +#endif +//@} + +/*! + * @name Register RTC_LR, field SRL[5] (RW) + * + * After being cleared, this bit can be set only by VBAT POR or software reset. + * + * Values: + * - 0 - Status Register is locked and writes are ignored. + * - 1 - Status Register is not locked and writes complete as normal. + */ +//@{ +#define BP_RTC_LR_SRL (5U) //!< Bit position for RTC_LR_SRL. +#define BM_RTC_LR_SRL (0x00000020U) //!< Bit mask for RTC_LR_SRL. +#define BS_RTC_LR_SRL (1U) //!< Bit field size in bits for RTC_LR_SRL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_LR_SRL field. +#define BR_RTC_LR_SRL (BITBAND_ACCESS32(HW_RTC_LR_ADDR, BP_RTC_LR_SRL)) +#endif + +//! @brief Format value for bitfield RTC_LR_SRL. +#define BF_RTC_LR_SRL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_LR_SRL), uint32_t) & BM_RTC_LR_SRL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRL field to a new value. +#define BW_RTC_LR_SRL(v) (BITBAND_ACCESS32(HW_RTC_LR_ADDR, BP_RTC_LR_SRL) = (v)) +#endif +//@} + +/*! + * @name Register RTC_LR, field LRL[6] (RW) + * + * After being cleared, this bit can be set only by VBAT POR or software reset. + * + * Values: + * - 0 - Lock Register is locked and writes are ignored. + * - 1 - Lock Register is not locked and writes complete as normal. + */ +//@{ +#define BP_RTC_LR_LRL (6U) //!< Bit position for RTC_LR_LRL. +#define BM_RTC_LR_LRL (0x00000040U) //!< Bit mask for RTC_LR_LRL. +#define BS_RTC_LR_LRL (1U) //!< Bit field size in bits for RTC_LR_LRL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_LR_LRL field. +#define BR_RTC_LR_LRL (BITBAND_ACCESS32(HW_RTC_LR_ADDR, BP_RTC_LR_LRL)) +#endif + +//! @brief Format value for bitfield RTC_LR_LRL. +#define BF_RTC_LR_LRL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_LR_LRL), uint32_t) & BM_RTC_LR_LRL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LRL field to a new value. +#define BW_RTC_LR_LRL(v) (BITBAND_ACCESS32(HW_RTC_LR_ADDR, BP_RTC_LR_LRL) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_IER - RTC Interrupt Enable Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_IER - RTC Interrupt Enable Register (RW) + * + * Reset value: 0x00000007U + */ +typedef union _hw_rtc_ier +{ + uint32_t U; + struct _hw_rtc_ier_bitfields + { + uint32_t TIIE : 1; //!< [0] Time Invalid Interrupt Enable + uint32_t TOIE : 1; //!< [1] Time Overflow Interrupt Enable + uint32_t TAIE : 1; //!< [2] Time Alarm Interrupt Enable + uint32_t RESERVED0 : 1; //!< [3] + uint32_t TSIE : 1; //!< [4] Time Seconds Interrupt Enable + uint32_t RESERVED1 : 2; //!< [6:5] + uint32_t WPON : 1; //!< [7] Wakeup Pin On + uint32_t RESERVED2 : 24; //!< [31:8] + } B; +} hw_rtc_ier_t; +#endif + +/*! + * @name Constants and macros for entire RTC_IER register + */ +//@{ +#define HW_RTC_IER_ADDR (REGS_RTC_BASE + 0x1CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_IER (*(__IO hw_rtc_ier_t *) HW_RTC_IER_ADDR) +#define HW_RTC_IER_RD() (HW_RTC_IER.U) +#define HW_RTC_IER_WR(v) (HW_RTC_IER.U = (v)) +#define HW_RTC_IER_SET(v) (HW_RTC_IER_WR(HW_RTC_IER_RD() | (v))) +#define HW_RTC_IER_CLR(v) (HW_RTC_IER_WR(HW_RTC_IER_RD() & ~(v))) +#define HW_RTC_IER_TOG(v) (HW_RTC_IER_WR(HW_RTC_IER_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_IER bitfields + */ + +/*! + * @name Register RTC_IER, field TIIE[0] (RW) + * + * Values: + * - 0 - Time invalid flag does not generate an interrupt. + * - 1 - Time invalid flag does generate an interrupt. + */ +//@{ +#define BP_RTC_IER_TIIE (0U) //!< Bit position for RTC_IER_TIIE. +#define BM_RTC_IER_TIIE (0x00000001U) //!< Bit mask for RTC_IER_TIIE. +#define BS_RTC_IER_TIIE (1U) //!< Bit field size in bits for RTC_IER_TIIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_IER_TIIE field. +#define BR_RTC_IER_TIIE (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_TIIE)) +#endif + +//! @brief Format value for bitfield RTC_IER_TIIE. +#define BF_RTC_IER_TIIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_IER_TIIE), uint32_t) & BM_RTC_IER_TIIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIIE field to a new value. +#define BW_RTC_IER_TIIE(v) (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_TIIE) = (v)) +#endif +//@} + +/*! + * @name Register RTC_IER, field TOIE[1] (RW) + * + * Values: + * - 0 - Time overflow flag does not generate an interrupt. + * - 1 - Time overflow flag does generate an interrupt. + */ +//@{ +#define BP_RTC_IER_TOIE (1U) //!< Bit position for RTC_IER_TOIE. +#define BM_RTC_IER_TOIE (0x00000002U) //!< Bit mask for RTC_IER_TOIE. +#define BS_RTC_IER_TOIE (1U) //!< Bit field size in bits for RTC_IER_TOIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_IER_TOIE field. +#define BR_RTC_IER_TOIE (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_TOIE)) +#endif + +//! @brief Format value for bitfield RTC_IER_TOIE. +#define BF_RTC_IER_TOIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_IER_TOIE), uint32_t) & BM_RTC_IER_TOIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOIE field to a new value. +#define BW_RTC_IER_TOIE(v) (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_TOIE) = (v)) +#endif +//@} + +/*! + * @name Register RTC_IER, field TAIE[2] (RW) + * + * Values: + * - 0 - Time alarm flag does not generate an interrupt. + * - 1 - Time alarm flag does generate an interrupt. + */ +//@{ +#define BP_RTC_IER_TAIE (2U) //!< Bit position for RTC_IER_TAIE. +#define BM_RTC_IER_TAIE (0x00000004U) //!< Bit mask for RTC_IER_TAIE. +#define BS_RTC_IER_TAIE (1U) //!< Bit field size in bits for RTC_IER_TAIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_IER_TAIE field. +#define BR_RTC_IER_TAIE (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_TAIE)) +#endif + +//! @brief Format value for bitfield RTC_IER_TAIE. +#define BF_RTC_IER_TAIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_IER_TAIE), uint32_t) & BM_RTC_IER_TAIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TAIE field to a new value. +#define BW_RTC_IER_TAIE(v) (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_TAIE) = (v)) +#endif +//@} + +/*! + * @name Register RTC_IER, field TSIE[4] (RW) + * + * The seconds interrupt is an edge-sensitive interrupt with a dedicated + * interrupt vector. It is generated once a second and requires no software overhead + * (there is no corresponding status flag to clear). + * + * Values: + * - 0 - Seconds interrupt is disabled. + * - 1 - Seconds interrupt is enabled. + */ +//@{ +#define BP_RTC_IER_TSIE (4U) //!< Bit position for RTC_IER_TSIE. +#define BM_RTC_IER_TSIE (0x00000010U) //!< Bit mask for RTC_IER_TSIE. +#define BS_RTC_IER_TSIE (1U) //!< Bit field size in bits for RTC_IER_TSIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_IER_TSIE field. +#define BR_RTC_IER_TSIE (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_TSIE)) +#endif + +//! @brief Format value for bitfield RTC_IER_TSIE. +#define BF_RTC_IER_TSIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_IER_TSIE), uint32_t) & BM_RTC_IER_TSIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TSIE field to a new value. +#define BW_RTC_IER_TSIE(v) (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_TSIE) = (v)) +#endif +//@} + +/*! + * @name Register RTC_IER, field WPON[7] (RW) + * + * The wakeup pin is optional and not available on all devices. Whenever the + * wakeup pin is enabled and this bit is set, the wakeup pin will assert. + * + * Values: + * - 0 - No effect. + * - 1 - If the wakeup pin is enabled, then the wakeup pin will assert. + */ +//@{ +#define BP_RTC_IER_WPON (7U) //!< Bit position for RTC_IER_WPON. +#define BM_RTC_IER_WPON (0x00000080U) //!< Bit mask for RTC_IER_WPON. +#define BS_RTC_IER_WPON (1U) //!< Bit field size in bits for RTC_IER_WPON. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_IER_WPON field. +#define BR_RTC_IER_WPON (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_WPON)) +#endif + +//! @brief Format value for bitfield RTC_IER_WPON. +#define BF_RTC_IER_WPON(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_IER_WPON), uint32_t) & BM_RTC_IER_WPON) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WPON field to a new value. +#define BW_RTC_IER_WPON(v) (BITBAND_ACCESS32(HW_RTC_IER_ADDR, BP_RTC_IER_WPON) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_WAR - RTC Write Access Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_WAR - RTC Write Access Register (RW) + * + * Reset value: 0x000000FFU + */ +typedef union _hw_rtc_war +{ + uint32_t U; + struct _hw_rtc_war_bitfields + { + uint32_t TSRW : 1; //!< [0] Time Seconds Register Write + uint32_t TPRW : 1; //!< [1] Time Prescaler Register Write + uint32_t TARW : 1; //!< [2] Time Alarm Register Write + uint32_t TCRW : 1; //!< [3] Time Compensation Register Write + uint32_t CRW : 1; //!< [4] Control Register Write + uint32_t SRW : 1; //!< [5] Status Register Write + uint32_t LRW : 1; //!< [6] Lock Register Write + uint32_t IERW : 1; //!< [7] Interrupt Enable Register Write + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_rtc_war_t; +#endif + +/*! + * @name Constants and macros for entire RTC_WAR register + */ +//@{ +#define HW_RTC_WAR_ADDR (REGS_RTC_BASE + 0x800U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_WAR (*(__IO hw_rtc_war_t *) HW_RTC_WAR_ADDR) +#define HW_RTC_WAR_RD() (HW_RTC_WAR.U) +#define HW_RTC_WAR_WR(v) (HW_RTC_WAR.U = (v)) +#define HW_RTC_WAR_SET(v) (HW_RTC_WAR_WR(HW_RTC_WAR_RD() | (v))) +#define HW_RTC_WAR_CLR(v) (HW_RTC_WAR_WR(HW_RTC_WAR_RD() & ~(v))) +#define HW_RTC_WAR_TOG(v) (HW_RTC_WAR_WR(HW_RTC_WAR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_WAR bitfields + */ + +/*! + * @name Register RTC_WAR, field TSRW[0] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Writes to the Time Seconds Register are ignored. + * - 1 - Writes to the Time Seconds Register complete as normal. + */ +//@{ +#define BP_RTC_WAR_TSRW (0U) //!< Bit position for RTC_WAR_TSRW. +#define BM_RTC_WAR_TSRW (0x00000001U) //!< Bit mask for RTC_WAR_TSRW. +#define BS_RTC_WAR_TSRW (1U) //!< Bit field size in bits for RTC_WAR_TSRW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_WAR_TSRW field. +#define BR_RTC_WAR_TSRW (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_TSRW)) +#endif + +//! @brief Format value for bitfield RTC_WAR_TSRW. +#define BF_RTC_WAR_TSRW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_WAR_TSRW), uint32_t) & BM_RTC_WAR_TSRW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TSRW field to a new value. +#define BW_RTC_WAR_TSRW(v) (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_TSRW) = (v)) +#endif +//@} + +/*! + * @name Register RTC_WAR, field TPRW[1] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Writes to the Time Prescaler Register are ignored. + * - 1 - Writes to the Time Prescaler Register complete as normal. + */ +//@{ +#define BP_RTC_WAR_TPRW (1U) //!< Bit position for RTC_WAR_TPRW. +#define BM_RTC_WAR_TPRW (0x00000002U) //!< Bit mask for RTC_WAR_TPRW. +#define BS_RTC_WAR_TPRW (1U) //!< Bit field size in bits for RTC_WAR_TPRW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_WAR_TPRW field. +#define BR_RTC_WAR_TPRW (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_TPRW)) +#endif + +//! @brief Format value for bitfield RTC_WAR_TPRW. +#define BF_RTC_WAR_TPRW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_WAR_TPRW), uint32_t) & BM_RTC_WAR_TPRW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TPRW field to a new value. +#define BW_RTC_WAR_TPRW(v) (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_TPRW) = (v)) +#endif +//@} + +/*! + * @name Register RTC_WAR, field TARW[2] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Writes to the Time Alarm Register are ignored. + * - 1 - Writes to the Time Alarm Register complete as normal. + */ +//@{ +#define BP_RTC_WAR_TARW (2U) //!< Bit position for RTC_WAR_TARW. +#define BM_RTC_WAR_TARW (0x00000004U) //!< Bit mask for RTC_WAR_TARW. +#define BS_RTC_WAR_TARW (1U) //!< Bit field size in bits for RTC_WAR_TARW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_WAR_TARW field. +#define BR_RTC_WAR_TARW (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_TARW)) +#endif + +//! @brief Format value for bitfield RTC_WAR_TARW. +#define BF_RTC_WAR_TARW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_WAR_TARW), uint32_t) & BM_RTC_WAR_TARW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TARW field to a new value. +#define BW_RTC_WAR_TARW(v) (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_TARW) = (v)) +#endif +//@} + +/*! + * @name Register RTC_WAR, field TCRW[3] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Writes to the Time Compensation Register are ignored. + * - 1 - Writes to the Time Compensation Register complete as normal. + */ +//@{ +#define BP_RTC_WAR_TCRW (3U) //!< Bit position for RTC_WAR_TCRW. +#define BM_RTC_WAR_TCRW (0x00000008U) //!< Bit mask for RTC_WAR_TCRW. +#define BS_RTC_WAR_TCRW (1U) //!< Bit field size in bits for RTC_WAR_TCRW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_WAR_TCRW field. +#define BR_RTC_WAR_TCRW (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_TCRW)) +#endif + +//! @brief Format value for bitfield RTC_WAR_TCRW. +#define BF_RTC_WAR_TCRW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_WAR_TCRW), uint32_t) & BM_RTC_WAR_TCRW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCRW field to a new value. +#define BW_RTC_WAR_TCRW(v) (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_TCRW) = (v)) +#endif +//@} + +/*! + * @name Register RTC_WAR, field CRW[4] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Writes to the Control Register are ignored. + * - 1 - Writes to the Control Register complete as normal. + */ +//@{ +#define BP_RTC_WAR_CRW (4U) //!< Bit position for RTC_WAR_CRW. +#define BM_RTC_WAR_CRW (0x00000010U) //!< Bit mask for RTC_WAR_CRW. +#define BS_RTC_WAR_CRW (1U) //!< Bit field size in bits for RTC_WAR_CRW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_WAR_CRW field. +#define BR_RTC_WAR_CRW (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_CRW)) +#endif + +//! @brief Format value for bitfield RTC_WAR_CRW. +#define BF_RTC_WAR_CRW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_WAR_CRW), uint32_t) & BM_RTC_WAR_CRW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRW field to a new value. +#define BW_RTC_WAR_CRW(v) (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_CRW) = (v)) +#endif +//@} + +/*! + * @name Register RTC_WAR, field SRW[5] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Writes to the Status Register are ignored. + * - 1 - Writes to the Status Register complete as normal. + */ +//@{ +#define BP_RTC_WAR_SRW (5U) //!< Bit position for RTC_WAR_SRW. +#define BM_RTC_WAR_SRW (0x00000020U) //!< Bit mask for RTC_WAR_SRW. +#define BS_RTC_WAR_SRW (1U) //!< Bit field size in bits for RTC_WAR_SRW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_WAR_SRW field. +#define BR_RTC_WAR_SRW (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_SRW)) +#endif + +//! @brief Format value for bitfield RTC_WAR_SRW. +#define BF_RTC_WAR_SRW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_WAR_SRW), uint32_t) & BM_RTC_WAR_SRW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRW field to a new value. +#define BW_RTC_WAR_SRW(v) (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_SRW) = (v)) +#endif +//@} + +/*! + * @name Register RTC_WAR, field LRW[6] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Writes to the Lock Register are ignored. + * - 1 - Writes to the Lock Register complete as normal. + */ +//@{ +#define BP_RTC_WAR_LRW (6U) //!< Bit position for RTC_WAR_LRW. +#define BM_RTC_WAR_LRW (0x00000040U) //!< Bit mask for RTC_WAR_LRW. +#define BS_RTC_WAR_LRW (1U) //!< Bit field size in bits for RTC_WAR_LRW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_WAR_LRW field. +#define BR_RTC_WAR_LRW (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_LRW)) +#endif + +//! @brief Format value for bitfield RTC_WAR_LRW. +#define BF_RTC_WAR_LRW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_WAR_LRW), uint32_t) & BM_RTC_WAR_LRW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LRW field to a new value. +#define BW_RTC_WAR_LRW(v) (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_LRW) = (v)) +#endif +//@} + +/*! + * @name Register RTC_WAR, field IERW[7] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Writes to the Interupt Enable Register are ignored. + * - 1 - Writes to the Interrupt Enable Register complete as normal. + */ +//@{ +#define BP_RTC_WAR_IERW (7U) //!< Bit position for RTC_WAR_IERW. +#define BM_RTC_WAR_IERW (0x00000080U) //!< Bit mask for RTC_WAR_IERW. +#define BS_RTC_WAR_IERW (1U) //!< Bit field size in bits for RTC_WAR_IERW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_WAR_IERW field. +#define BR_RTC_WAR_IERW (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_IERW)) +#endif + +//! @brief Format value for bitfield RTC_WAR_IERW. +#define BF_RTC_WAR_IERW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_WAR_IERW), uint32_t) & BM_RTC_WAR_IERW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IERW field to a new value. +#define BW_RTC_WAR_IERW(v) (BITBAND_ACCESS32(HW_RTC_WAR_ADDR, BP_RTC_WAR_IERW) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_RTC_RAR - RTC Read Access Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_RTC_RAR - RTC Read Access Register (RW) + * + * Reset value: 0x000000FFU + */ +typedef union _hw_rtc_rar +{ + uint32_t U; + struct _hw_rtc_rar_bitfields + { + uint32_t TSRR : 1; //!< [0] Time Seconds Register Read + uint32_t TPRR : 1; //!< [1] Time Prescaler Register Read + uint32_t TARR : 1; //!< [2] Time Alarm Register Read + uint32_t TCRR : 1; //!< [3] Time Compensation Register Read + uint32_t CRR : 1; //!< [4] Control Register Read + uint32_t SRR : 1; //!< [5] Status Register Read + uint32_t LRR : 1; //!< [6] Lock Register Read + uint32_t IERR : 1; //!< [7] Interrupt Enable Register Read + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_rtc_rar_t; +#endif + +/*! + * @name Constants and macros for entire RTC_RAR register + */ +//@{ +#define HW_RTC_RAR_ADDR (REGS_RTC_BASE + 0x804U) + +#ifndef __LANGUAGE_ASM__ +#define HW_RTC_RAR (*(__IO hw_rtc_rar_t *) HW_RTC_RAR_ADDR) +#define HW_RTC_RAR_RD() (HW_RTC_RAR.U) +#define HW_RTC_RAR_WR(v) (HW_RTC_RAR.U = (v)) +#define HW_RTC_RAR_SET(v) (HW_RTC_RAR_WR(HW_RTC_RAR_RD() | (v))) +#define HW_RTC_RAR_CLR(v) (HW_RTC_RAR_WR(HW_RTC_RAR_RD() & ~(v))) +#define HW_RTC_RAR_TOG(v) (HW_RTC_RAR_WR(HW_RTC_RAR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual RTC_RAR bitfields + */ + +/*! + * @name Register RTC_RAR, field TSRR[0] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Reads to the Time Seconds Register are ignored. + * - 1 - Reads to the Time Seconds Register complete as normal. + */ +//@{ +#define BP_RTC_RAR_TSRR (0U) //!< Bit position for RTC_RAR_TSRR. +#define BM_RTC_RAR_TSRR (0x00000001U) //!< Bit mask for RTC_RAR_TSRR. +#define BS_RTC_RAR_TSRR (1U) //!< Bit field size in bits for RTC_RAR_TSRR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_RAR_TSRR field. +#define BR_RTC_RAR_TSRR (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_TSRR)) +#endif + +//! @brief Format value for bitfield RTC_RAR_TSRR. +#define BF_RTC_RAR_TSRR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_RAR_TSRR), uint32_t) & BM_RTC_RAR_TSRR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TSRR field to a new value. +#define BW_RTC_RAR_TSRR(v) (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_TSRR) = (v)) +#endif +//@} + +/*! + * @name Register RTC_RAR, field TPRR[1] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Reads to the Time Pprescaler Register are ignored. + * - 1 - Reads to the Time Prescaler Register complete as normal. + */ +//@{ +#define BP_RTC_RAR_TPRR (1U) //!< Bit position for RTC_RAR_TPRR. +#define BM_RTC_RAR_TPRR (0x00000002U) //!< Bit mask for RTC_RAR_TPRR. +#define BS_RTC_RAR_TPRR (1U) //!< Bit field size in bits for RTC_RAR_TPRR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_RAR_TPRR field. +#define BR_RTC_RAR_TPRR (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_TPRR)) +#endif + +//! @brief Format value for bitfield RTC_RAR_TPRR. +#define BF_RTC_RAR_TPRR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_RAR_TPRR), uint32_t) & BM_RTC_RAR_TPRR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TPRR field to a new value. +#define BW_RTC_RAR_TPRR(v) (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_TPRR) = (v)) +#endif +//@} + +/*! + * @name Register RTC_RAR, field TARR[2] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Reads to the Time Alarm Register are ignored. + * - 1 - Reads to the Time Alarm Register complete as normal. + */ +//@{ +#define BP_RTC_RAR_TARR (2U) //!< Bit position for RTC_RAR_TARR. +#define BM_RTC_RAR_TARR (0x00000004U) //!< Bit mask for RTC_RAR_TARR. +#define BS_RTC_RAR_TARR (1U) //!< Bit field size in bits for RTC_RAR_TARR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_RAR_TARR field. +#define BR_RTC_RAR_TARR (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_TARR)) +#endif + +//! @brief Format value for bitfield RTC_RAR_TARR. +#define BF_RTC_RAR_TARR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_RAR_TARR), uint32_t) & BM_RTC_RAR_TARR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TARR field to a new value. +#define BW_RTC_RAR_TARR(v) (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_TARR) = (v)) +#endif +//@} + +/*! + * @name Register RTC_RAR, field TCRR[3] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Reads to the Time Compensation Register are ignored. + * - 1 - Reads to the Time Compensation Register complete as normal. + */ +//@{ +#define BP_RTC_RAR_TCRR (3U) //!< Bit position for RTC_RAR_TCRR. +#define BM_RTC_RAR_TCRR (0x00000008U) //!< Bit mask for RTC_RAR_TCRR. +#define BS_RTC_RAR_TCRR (1U) //!< Bit field size in bits for RTC_RAR_TCRR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_RAR_TCRR field. +#define BR_RTC_RAR_TCRR (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_TCRR)) +#endif + +//! @brief Format value for bitfield RTC_RAR_TCRR. +#define BF_RTC_RAR_TCRR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_RAR_TCRR), uint32_t) & BM_RTC_RAR_TCRR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCRR field to a new value. +#define BW_RTC_RAR_TCRR(v) (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_TCRR) = (v)) +#endif +//@} + +/*! + * @name Register RTC_RAR, field CRR[4] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Reads to the Control Register are ignored. + * - 1 - Reads to the Control Register complete as normal. + */ +//@{ +#define BP_RTC_RAR_CRR (4U) //!< Bit position for RTC_RAR_CRR. +#define BM_RTC_RAR_CRR (0x00000010U) //!< Bit mask for RTC_RAR_CRR. +#define BS_RTC_RAR_CRR (1U) //!< Bit field size in bits for RTC_RAR_CRR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_RAR_CRR field. +#define BR_RTC_RAR_CRR (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_CRR)) +#endif + +//! @brief Format value for bitfield RTC_RAR_CRR. +#define BF_RTC_RAR_CRR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_RAR_CRR), uint32_t) & BM_RTC_RAR_CRR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRR field to a new value. +#define BW_RTC_RAR_CRR(v) (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_CRR) = (v)) +#endif +//@} + +/*! + * @name Register RTC_RAR, field SRR[5] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Reads to the Status Register are ignored. + * - 1 - Reads to the Status Register complete as normal. + */ +//@{ +#define BP_RTC_RAR_SRR (5U) //!< Bit position for RTC_RAR_SRR. +#define BM_RTC_RAR_SRR (0x00000020U) //!< Bit mask for RTC_RAR_SRR. +#define BS_RTC_RAR_SRR (1U) //!< Bit field size in bits for RTC_RAR_SRR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_RAR_SRR field. +#define BR_RTC_RAR_SRR (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_SRR)) +#endif + +//! @brief Format value for bitfield RTC_RAR_SRR. +#define BF_RTC_RAR_SRR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_RAR_SRR), uint32_t) & BM_RTC_RAR_SRR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SRR field to a new value. +#define BW_RTC_RAR_SRR(v) (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_SRR) = (v)) +#endif +//@} + +/*! + * @name Register RTC_RAR, field LRR[6] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Reads to the Lock Register are ignored. + * - 1 - Reads to the Lock Register complete as normal. + */ +//@{ +#define BP_RTC_RAR_LRR (6U) //!< Bit position for RTC_RAR_LRR. +#define BM_RTC_RAR_LRR (0x00000040U) //!< Bit mask for RTC_RAR_LRR. +#define BS_RTC_RAR_LRR (1U) //!< Bit field size in bits for RTC_RAR_LRR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_RAR_LRR field. +#define BR_RTC_RAR_LRR (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_LRR)) +#endif + +//! @brief Format value for bitfield RTC_RAR_LRR. +#define BF_RTC_RAR_LRR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_RAR_LRR), uint32_t) & BM_RTC_RAR_LRR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LRR field to a new value. +#define BW_RTC_RAR_LRR(v) (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_LRR) = (v)) +#endif +//@} + +/*! + * @name Register RTC_RAR, field IERR[7] (RW) + * + * After being cleared, this bit is set only by system reset. It is not affected + * by VBAT POR or software reset. + * + * Values: + * - 0 - Reads to the Interrupt Enable Register are ignored. + * - 1 - Reads to the Interrupt Enable Register complete as normal. + */ +//@{ +#define BP_RTC_RAR_IERR (7U) //!< Bit position for RTC_RAR_IERR. +#define BM_RTC_RAR_IERR (0x00000080U) //!< Bit mask for RTC_RAR_IERR. +#define BS_RTC_RAR_IERR (1U) //!< Bit field size in bits for RTC_RAR_IERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the RTC_RAR_IERR field. +#define BR_RTC_RAR_IERR (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_IERR)) +#endif + +//! @brief Format value for bitfield RTC_RAR_IERR. +#define BF_RTC_RAR_IERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_RTC_RAR_IERR), uint32_t) & BM_RTC_RAR_IERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IERR field to a new value. +#define BW_RTC_RAR_IERR(v) (BITBAND_ACCESS32(HW_RTC_RAR_ADDR, BP_RTC_RAR_IERR) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_rtc_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All RTC module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_rtc +{ + __IO hw_rtc_tsr_t TSR; //!< [0x0] RTC Time Seconds Register + __IO hw_rtc_tpr_t TPR; //!< [0x4] RTC Time Prescaler Register + __IO hw_rtc_tar_t TAR; //!< [0x8] RTC Time Alarm Register + __IO hw_rtc_tcr_t TCR; //!< [0xC] RTC Time Compensation Register + __IO hw_rtc_cr_t CR; //!< [0x10] RTC Control Register + __IO hw_rtc_sr_t SR; //!< [0x14] RTC Status Register + __IO hw_rtc_lr_t LR; //!< [0x18] RTC Lock Register + __IO hw_rtc_ier_t IER; //!< [0x1C] RTC Interrupt Enable Register + uint8_t _reserved0[2016]; + __IO hw_rtc_war_t WAR; //!< [0x800] RTC Write Access Register + __IO hw_rtc_rar_t RAR; //!< [0x804] RTC Read Access Register +} hw_rtc_t; +#pragma pack() + +//! @brief Macro to access all RTC registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_RTC</code>. +#define HW_RTC (*(hw_rtc_t *) REGS_RTC_BASE) +#endif + +#endif // __HW_RTC_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_sdhc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,5761 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_SDHC_REGISTERS_H__ +#define __HW_SDHC_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 SDHC + * + * Secured Digital Host Controller + * + * Registers defined in this header file: + * - HW_SDHC_DSADDR - DMA System Address register + * - HW_SDHC_BLKATTR - Block Attributes register + * - HW_SDHC_CMDARG - Command Argument register + * - HW_SDHC_XFERTYP - Transfer Type register + * - HW_SDHC_CMDRSP0 - Command Response 0 + * - HW_SDHC_CMDRSP1 - Command Response 1 + * - HW_SDHC_CMDRSP2 - Command Response 2 + * - HW_SDHC_CMDRSP3 - Command Response 3 + * - HW_SDHC_DATPORT - Buffer Data Port register + * - HW_SDHC_PRSSTAT - Present State register + * - HW_SDHC_PROCTL - Protocol Control register + * - HW_SDHC_SYSCTL - System Control register + * - HW_SDHC_IRQSTAT - Interrupt Status register + * - HW_SDHC_IRQSTATEN - Interrupt Status Enable register + * - HW_SDHC_IRQSIGEN - Interrupt Signal Enable register + * - HW_SDHC_AC12ERR - Auto CMD12 Error Status Register + * - HW_SDHC_HTCAPBLT - Host Controller Capabilities + * - HW_SDHC_WML - Watermark Level Register + * - HW_SDHC_FEVT - Force Event register + * - HW_SDHC_ADMAES - ADMA Error Status register + * - HW_SDHC_ADSADDR - ADMA System Addressregister + * - HW_SDHC_VENDOR - Vendor Specific register + * - HW_SDHC_MMCBOOT - MMC Boot register + * - HW_SDHC_HOSTVER - Host Controller Version + * + * - hw_sdhc_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_SDHC_BASE +#define HW_SDHC_INSTANCE_COUNT (1U) //!< Number of instances of the SDHC module. +#define REGS_SDHC_BASE (0x400B1000U) //!< Base address for SDHC. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_DSADDR - DMA System Address register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_DSADDR - DMA System Address register (RW) + * + * Reset value: 0x00000000U + * + * This register contains the physical system memory address used for DMA + * transfers. + */ +typedef union _hw_sdhc_dsaddr +{ + uint32_t U; + struct _hw_sdhc_dsaddr_bitfields + { + uint32_t RESERVED0 : 2; //!< [1:0] + uint32_t DSADDR : 30; //!< [31:2] DMA System Address + } B; +} hw_sdhc_dsaddr_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_DSADDR register + */ +//@{ +#define HW_SDHC_DSADDR_ADDR (REGS_SDHC_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_DSADDR (*(__IO hw_sdhc_dsaddr_t *) HW_SDHC_DSADDR_ADDR) +#define HW_SDHC_DSADDR_RD() (HW_SDHC_DSADDR.U) +#define HW_SDHC_DSADDR_WR(v) (HW_SDHC_DSADDR.U = (v)) +#define HW_SDHC_DSADDR_SET(v) (HW_SDHC_DSADDR_WR(HW_SDHC_DSADDR_RD() | (v))) +#define HW_SDHC_DSADDR_CLR(v) (HW_SDHC_DSADDR_WR(HW_SDHC_DSADDR_RD() & ~(v))) +#define HW_SDHC_DSADDR_TOG(v) (HW_SDHC_DSADDR_WR(HW_SDHC_DSADDR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_DSADDR bitfields + */ + +/*! + * @name Register SDHC_DSADDR, field DSADDR[31:2] (RW) + * + * Contains the 32-bit system memory address for a DMA transfer. Because the + * address must be word (4 bytes) align, the least 2 bits are reserved, always 0. + * When the SDHC stops a DMA transfer, this register points to the system address + * of the next contiguous data position. It can be accessed only when no + * transaction is executing, that is, after a transaction has stopped. Read operation + * during transfers may return an invalid value. The host driver shall initialize + * this register before starting a DMA transaction. After DMA has stopped, the + * system address of the next contiguous data position can be read from this register. + * This register is protected during a data transfer. When data lines are + * active, write to this register is ignored. The host driver shall wait, until + * PRSSTAT[DLA] is cleared, before writing to this register. The SDHC internal DMA does + * not support a virtual memory system. It supports only continuous physical + * memory access. And due to AHB burst limitations, if the burst must cross the 1 KB + * boundary, SDHC will automatically change SEQ burst type to NSEQ. Because this + * register supports dynamic address reflecting, when IRQSTAT[TC] bit is set, it + * automatically alters the value of internal address counter, so SW cannot + * change this register when IRQSTAT[TC] is set. + */ +//@{ +#define BP_SDHC_DSADDR_DSADDR (2U) //!< Bit position for SDHC_DSADDR_DSADDR. +#define BM_SDHC_DSADDR_DSADDR (0xFFFFFFFCU) //!< Bit mask for SDHC_DSADDR_DSADDR. +#define BS_SDHC_DSADDR_DSADDR (30U) //!< Bit field size in bits for SDHC_DSADDR_DSADDR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_DSADDR_DSADDR field. +#define BR_SDHC_DSADDR_DSADDR (HW_SDHC_DSADDR.B.DSADDR) +#endif + +//! @brief Format value for bitfield SDHC_DSADDR_DSADDR. +#define BF_SDHC_DSADDR_DSADDR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_DSADDR_DSADDR), uint32_t) & BM_SDHC_DSADDR_DSADDR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DSADDR field to a new value. +#define BW_SDHC_DSADDR_DSADDR(v) (HW_SDHC_DSADDR_WR((HW_SDHC_DSADDR_RD() & ~BM_SDHC_DSADDR_DSADDR) | BF_SDHC_DSADDR_DSADDR(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_BLKATTR - Block Attributes register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_BLKATTR - Block Attributes register (RW) + * + * Reset value: 0x00000000U + * + * This register is used to configure the number of data blocks and the number + * of bytes in each block. + */ +typedef union _hw_sdhc_blkattr +{ + uint32_t U; + struct _hw_sdhc_blkattr_bitfields + { + uint32_t BLKSIZE : 13; //!< [12:0] Transfer Block Size + uint32_t RESERVED0 : 3; //!< [15:13] + uint32_t BLKCNT : 16; //!< [31:16] Blocks Count For Current Transfer + } B; +} hw_sdhc_blkattr_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_BLKATTR register + */ +//@{ +#define HW_SDHC_BLKATTR_ADDR (REGS_SDHC_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_BLKATTR (*(__IO hw_sdhc_blkattr_t *) HW_SDHC_BLKATTR_ADDR) +#define HW_SDHC_BLKATTR_RD() (HW_SDHC_BLKATTR.U) +#define HW_SDHC_BLKATTR_WR(v) (HW_SDHC_BLKATTR.U = (v)) +#define HW_SDHC_BLKATTR_SET(v) (HW_SDHC_BLKATTR_WR(HW_SDHC_BLKATTR_RD() | (v))) +#define HW_SDHC_BLKATTR_CLR(v) (HW_SDHC_BLKATTR_WR(HW_SDHC_BLKATTR_RD() & ~(v))) +#define HW_SDHC_BLKATTR_TOG(v) (HW_SDHC_BLKATTR_WR(HW_SDHC_BLKATTR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_BLKATTR bitfields + */ + +/*! + * @name Register SDHC_BLKATTR, field BLKSIZE[12:0] (RW) + * + * Specifies the block size for block data transfers. Values ranging from 1 byte + * up to the maximum buffer size can be set. It can be accessed only when no + * transaction is executing, that is, after a transaction has stopped. Read + * operations during transfers may return an invalid value, and write operations will be + * ignored. + * + * Values: + * - 0 - No data transfer. + * - 1 - 1 Byte + * - 10 - 2 Bytes + * - 11 - 3 Bytes + * - 100 - 4 Bytes + * - 111111111 - 511 Bytes + * - 1000000000 - 512 Bytes + * - 100000000000 - 2048 Bytes + * - 1000000000000 - 4096 Bytes + */ +//@{ +#define BP_SDHC_BLKATTR_BLKSIZE (0U) //!< Bit position for SDHC_BLKATTR_BLKSIZE. +#define BM_SDHC_BLKATTR_BLKSIZE (0x00001FFFU) //!< Bit mask for SDHC_BLKATTR_BLKSIZE. +#define BS_SDHC_BLKATTR_BLKSIZE (13U) //!< Bit field size in bits for SDHC_BLKATTR_BLKSIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_BLKATTR_BLKSIZE field. +#define BR_SDHC_BLKATTR_BLKSIZE (HW_SDHC_BLKATTR.B.BLKSIZE) +#endif + +//! @brief Format value for bitfield SDHC_BLKATTR_BLKSIZE. +#define BF_SDHC_BLKATTR_BLKSIZE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_BLKATTR_BLKSIZE), uint32_t) & BM_SDHC_BLKATTR_BLKSIZE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BLKSIZE field to a new value. +#define BW_SDHC_BLKATTR_BLKSIZE(v) (HW_SDHC_BLKATTR_WR((HW_SDHC_BLKATTR_RD() & ~BM_SDHC_BLKATTR_BLKSIZE) | BF_SDHC_BLKATTR_BLKSIZE(v))) +#endif +//@} + +/*! + * @name Register SDHC_BLKATTR, field BLKCNT[31:16] (RW) + * + * This register is enabled when XFERTYP[BCEN] is set to 1 and is valid only for + * multiple block transfers. For single block transfer, this register will + * always read as 1. The host driver shall set this register to a value between 1 and + * the maximum block count. The SDHC decrements the block count after each block + * transfer and stops when the count reaches zero. Setting the block count to 0 + * results in no data blocks being transferred. This register must be accessed + * only when no transaction is executing, that is, after transactions are stopped. + * During data transfer, read operations on this register may return an invalid + * value and write operations are ignored. When saving transfer content as a result + * of a suspend command, the number of blocks yet to be transferred can be + * determined by reading this register. The reading of this register must be applied + * after transfer is paused by stop at block gap operation and before sending the + * command marked as suspend. This is because when suspend command is sent out, + * SDHC will regard the current transfer as aborted and change BLKCNT back to its + * original value instead of keeping the dynamical indicator of remained block + * count. When restoring transfer content prior to issuing a resume command, the + * host driver shall restore the previously saved block count. Although the BLKCNT + * field is 0 after reset, the read of reset value is 0x1. This is because when + * XFERTYP[MSBSEL] is 0, indicating a single block transfer, the read value of + * BLKCNT is always 1. + * + * Values: + * - 0 - Stop count. + * - 1 - 1 block + * - 10 - 2 blocks + * - 1111111111111111 - 65535 blocks + */ +//@{ +#define BP_SDHC_BLKATTR_BLKCNT (16U) //!< Bit position for SDHC_BLKATTR_BLKCNT. +#define BM_SDHC_BLKATTR_BLKCNT (0xFFFF0000U) //!< Bit mask for SDHC_BLKATTR_BLKCNT. +#define BS_SDHC_BLKATTR_BLKCNT (16U) //!< Bit field size in bits for SDHC_BLKATTR_BLKCNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_BLKATTR_BLKCNT field. +#define BR_SDHC_BLKATTR_BLKCNT (HW_SDHC_BLKATTR.B.BLKCNT) +#endif + +//! @brief Format value for bitfield SDHC_BLKATTR_BLKCNT. +#define BF_SDHC_BLKATTR_BLKCNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_BLKATTR_BLKCNT), uint32_t) & BM_SDHC_BLKATTR_BLKCNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BLKCNT field to a new value. +#define BW_SDHC_BLKATTR_BLKCNT(v) (HW_SDHC_BLKATTR_WR((HW_SDHC_BLKATTR_RD() & ~BM_SDHC_BLKATTR_BLKCNT) | BF_SDHC_BLKATTR_BLKCNT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_CMDARG - Command Argument register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_CMDARG - Command Argument register (RW) + * + * Reset value: 0x00000000U + * + * This register contains the SD/MMC command argument. + */ +typedef union _hw_sdhc_cmdarg +{ + uint32_t U; + struct _hw_sdhc_cmdarg_bitfields + { + uint32_t CMDARG : 32; //!< [31:0] Command Argument + } B; +} hw_sdhc_cmdarg_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_CMDARG register + */ +//@{ +#define HW_SDHC_CMDARG_ADDR (REGS_SDHC_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_CMDARG (*(__IO hw_sdhc_cmdarg_t *) HW_SDHC_CMDARG_ADDR) +#define HW_SDHC_CMDARG_RD() (HW_SDHC_CMDARG.U) +#define HW_SDHC_CMDARG_WR(v) (HW_SDHC_CMDARG.U = (v)) +#define HW_SDHC_CMDARG_SET(v) (HW_SDHC_CMDARG_WR(HW_SDHC_CMDARG_RD() | (v))) +#define HW_SDHC_CMDARG_CLR(v) (HW_SDHC_CMDARG_WR(HW_SDHC_CMDARG_RD() & ~(v))) +#define HW_SDHC_CMDARG_TOG(v) (HW_SDHC_CMDARG_WR(HW_SDHC_CMDARG_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_CMDARG bitfields + */ + +/*! + * @name Register SDHC_CMDARG, field CMDARG[31:0] (RW) + * + * The SD/MMC command argument is specified as bits 39-8 of the command format + * in the SD or MMC specification. This register is write protected when + * PRSSTAT[CDIHB0] is set. + */ +//@{ +#define BP_SDHC_CMDARG_CMDARG (0U) //!< Bit position for SDHC_CMDARG_CMDARG. +#define BM_SDHC_CMDARG_CMDARG (0xFFFFFFFFU) //!< Bit mask for SDHC_CMDARG_CMDARG. +#define BS_SDHC_CMDARG_CMDARG (32U) //!< Bit field size in bits for SDHC_CMDARG_CMDARG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_CMDARG_CMDARG field. +#define BR_SDHC_CMDARG_CMDARG (HW_SDHC_CMDARG.U) +#endif + +//! @brief Format value for bitfield SDHC_CMDARG_CMDARG. +#define BF_SDHC_CMDARG_CMDARG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_CMDARG_CMDARG), uint32_t) & BM_SDHC_CMDARG_CMDARG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CMDARG field to a new value. +#define BW_SDHC_CMDARG_CMDARG(v) (HW_SDHC_CMDARG_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_XFERTYP - Transfer Type register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_XFERTYP - Transfer Type register (RW) + * + * Reset value: 0x00000000U + * + * This register is used to control the operation of data transfers. The host + * driver shall set this register before issuing a command followed by a data + * transfer, or before issuing a resume command. To prevent data loss, the SDHC + * prevents writing to the bits that are involved in the data transfer of this + * register, when data transfer is active. These bits are DPSEL, MBSEL, DTDSEL, AC12EN, + * BCEN, and DMAEN. The host driver shall check PRSSTAT[CDIHB] and PRSSTAT[CIHB] + * before writing to this register. When PRSSTAT[CDIHB] is set, any attempt to + * send a command with data by writing to this register is ignored; when + * PRSSTAT[CIHB] bit is set, any write to this register is ignored. On sending commands with + * data transfer involved, it is mandatory that the block size is nonzero. + * Besides, block count must also be nonzero, or indicated as single block transfer + * (bit 5 of this register is 0 when written), or block count is disabled (bit 1 of + * this register is 0 when written), otherwise SDHC will ignore the sending of + * this command and do nothing. For write command, with all above restrictions, it + * is also mandatory that the write protect switch is not active (WPSPL bit of + * Present State Register is 1), otherwise SDHC will also ignore the command. If + * the commands with data transfer does not receive the response in 64 clock + * cycles, that is, response time-out, SDHC will regard the external device does not + * accept the command and abort the data transfer. In this scenario, the driver + * must issue the command again to retry the transfer. It is also possible that, + * for some reason, the card responds to the command but SDHC does not receive the + * response, and if it is internal DMA (either simple DMA or ADMA) read + * operation, the external system memory is over-written by the internal DMA with data + * sent back from the card. The following table shows the summary of how register + * settings determine the type of data transfer. Transfer Type register setting for + * various transfer types Multi/Single block select Block count enable Block + * count Function 0 Don't care Don't care Single transfer 1 0 Don't care Infinite + * transfer 1 1 Positive number Multiple transfer 1 1 Zero No data transfer The + * following table shows the relationship between XFERTYP[CICEN] and XFERTYP[CCCEN], + * in regards to XFERTYP[RSPTYP] as well as the name of the response type. + * Relationship between parameters and the name of the response type Response type + * (RSPTYP) Index check enable (CICEN) CRC check enable (CCCEN) Name of response + * type 00 0 0 No Response 01 0 1 IR2 10 0 0 R3,R4 10 1 1 R1,R5,R6 11 1 1 R1b,R5b In + * the SDIO specification, response type notation for R5b is not defined. R5 + * includes R5b in the SDIO specification. But R5b is defined in this specification + * to specify that the SDHC will check the busy status after receiving a + * response. For example, usually CMD52 is used with R5, but the I/O abort command shall + * be used with R5b. The CRC field for R3 and R4 is expected to be all 1 bits. + * The CRC check shall be disabled for these response types. + */ +typedef union _hw_sdhc_xfertyp +{ + uint32_t U; + struct _hw_sdhc_xfertyp_bitfields + { + uint32_t DMAEN : 1; //!< [0] DMA Enable + uint32_t BCEN : 1; //!< [1] Block Count Enable + uint32_t AC12EN : 1; //!< [2] Auto CMD12 Enable + uint32_t RESERVED0 : 1; //!< [3] + uint32_t DTDSEL : 1; //!< [4] Data Transfer Direction Select + uint32_t MSBSEL : 1; //!< [5] Multi/Single Block Select + uint32_t RESERVED1 : 10; //!< [15:6] + uint32_t RSPTYP : 2; //!< [17:16] Response Type Select + uint32_t RESERVED2 : 1; //!< [18] + uint32_t CCCEN : 1; //!< [19] Command CRC Check Enable + uint32_t CICEN : 1; //!< [20] Command Index Check Enable + uint32_t DPSEL : 1; //!< [21] Data Present Select + uint32_t CMDTYP : 2; //!< [23:22] Command Type + uint32_t CMDINX : 6; //!< [29:24] Command Index + uint32_t RESERVED3 : 2; //!< [31:30] + } B; +} hw_sdhc_xfertyp_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_XFERTYP register + */ +//@{ +#define HW_SDHC_XFERTYP_ADDR (REGS_SDHC_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_XFERTYP (*(__IO hw_sdhc_xfertyp_t *) HW_SDHC_XFERTYP_ADDR) +#define HW_SDHC_XFERTYP_RD() (HW_SDHC_XFERTYP.U) +#define HW_SDHC_XFERTYP_WR(v) (HW_SDHC_XFERTYP.U = (v)) +#define HW_SDHC_XFERTYP_SET(v) (HW_SDHC_XFERTYP_WR(HW_SDHC_XFERTYP_RD() | (v))) +#define HW_SDHC_XFERTYP_CLR(v) (HW_SDHC_XFERTYP_WR(HW_SDHC_XFERTYP_RD() & ~(v))) +#define HW_SDHC_XFERTYP_TOG(v) (HW_SDHC_XFERTYP_WR(HW_SDHC_XFERTYP_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_XFERTYP bitfields + */ + +/*! + * @name Register SDHC_XFERTYP, field DMAEN[0] (RW) + * + * Enables DMA functionality. If this bit is set to 1, a DMA operation shall + * begin when the host driver sets the DPSEL bit of this register. Whether the + * simple DMA, or the advanced DMA, is active depends on PROCTL[DMAS]. + * + * Values: + * - 0 - Disable + * - 1 - Enable + */ +//@{ +#define BP_SDHC_XFERTYP_DMAEN (0U) //!< Bit position for SDHC_XFERTYP_DMAEN. +#define BM_SDHC_XFERTYP_DMAEN (0x00000001U) //!< Bit mask for SDHC_XFERTYP_DMAEN. +#define BS_SDHC_XFERTYP_DMAEN (1U) //!< Bit field size in bits for SDHC_XFERTYP_DMAEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_DMAEN field. +#define BR_SDHC_XFERTYP_DMAEN (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_DMAEN)) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_DMAEN. +#define BF_SDHC_XFERTYP_DMAEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_DMAEN), uint32_t) & BM_SDHC_XFERTYP_DMAEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAEN field to a new value. +#define BW_SDHC_XFERTYP_DMAEN(v) (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_DMAEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field BCEN[1] (RW) + * + * Used to enable the Block Count register, which is only relevant for multiple + * block transfers. When this bit is 0, the internal counter for block is + * disabled, which is useful in executing an infinite transfer. + * + * Values: + * - 0 - Disable + * - 1 - Enable + */ +//@{ +#define BP_SDHC_XFERTYP_BCEN (1U) //!< Bit position for SDHC_XFERTYP_BCEN. +#define BM_SDHC_XFERTYP_BCEN (0x00000002U) //!< Bit mask for SDHC_XFERTYP_BCEN. +#define BS_SDHC_XFERTYP_BCEN (1U) //!< Bit field size in bits for SDHC_XFERTYP_BCEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_BCEN field. +#define BR_SDHC_XFERTYP_BCEN (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_BCEN)) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_BCEN. +#define BF_SDHC_XFERTYP_BCEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_BCEN), uint32_t) & BM_SDHC_XFERTYP_BCEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BCEN field to a new value. +#define BW_SDHC_XFERTYP_BCEN(v) (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_BCEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field AC12EN[2] (RW) + * + * Multiple block transfers for memory require a CMD12 to stop the transaction. + * When this bit is set to 1, the SDHC will issue a CMD12 automatically when the + * last block transfer has completed. The host driver shall not set this bit to + * issue commands that do not require CMD12 to stop a multiple block data + * transfer. In particular, secure commands defined in File Security Specification (see + * reference list) do not require CMD12. In single block transfer, the SDHC will + * ignore this bit whether it is set or not. + * + * Values: + * - 0 - Disable + * - 1 - Enable + */ +//@{ +#define BP_SDHC_XFERTYP_AC12EN (2U) //!< Bit position for SDHC_XFERTYP_AC12EN. +#define BM_SDHC_XFERTYP_AC12EN (0x00000004U) //!< Bit mask for SDHC_XFERTYP_AC12EN. +#define BS_SDHC_XFERTYP_AC12EN (1U) //!< Bit field size in bits for SDHC_XFERTYP_AC12EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_AC12EN field. +#define BR_SDHC_XFERTYP_AC12EN (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_AC12EN)) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_AC12EN. +#define BF_SDHC_XFERTYP_AC12EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_AC12EN), uint32_t) & BM_SDHC_XFERTYP_AC12EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12EN field to a new value. +#define BW_SDHC_XFERTYP_AC12EN(v) (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_AC12EN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field DTDSEL[4] (RW) + * + * Defines the direction of DAT line data transfers. The bit is set to 1 by the + * host driver to transfer data from the SD card to the SDHC and is set to 0 for + * all other commands. + * + * Values: + * - 0 - Write host to card. + * - 1 - Read card to host. + */ +//@{ +#define BP_SDHC_XFERTYP_DTDSEL (4U) //!< Bit position for SDHC_XFERTYP_DTDSEL. +#define BM_SDHC_XFERTYP_DTDSEL (0x00000010U) //!< Bit mask for SDHC_XFERTYP_DTDSEL. +#define BS_SDHC_XFERTYP_DTDSEL (1U) //!< Bit field size in bits for SDHC_XFERTYP_DTDSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_DTDSEL field. +#define BR_SDHC_XFERTYP_DTDSEL (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_DTDSEL)) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_DTDSEL. +#define BF_SDHC_XFERTYP_DTDSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_DTDSEL), uint32_t) & BM_SDHC_XFERTYP_DTDSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTDSEL field to a new value. +#define BW_SDHC_XFERTYP_DTDSEL(v) (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_DTDSEL) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field MSBSEL[5] (RW) + * + * Enables multiple block DAT line data transfers. For any other commands, this + * bit shall be set to 0. If this bit is 0, it is not necessary to set the block + * count register. + * + * Values: + * - 0 - Single block. + * - 1 - Multiple blocks. + */ +//@{ +#define BP_SDHC_XFERTYP_MSBSEL (5U) //!< Bit position for SDHC_XFERTYP_MSBSEL. +#define BM_SDHC_XFERTYP_MSBSEL (0x00000020U) //!< Bit mask for SDHC_XFERTYP_MSBSEL. +#define BS_SDHC_XFERTYP_MSBSEL (1U) //!< Bit field size in bits for SDHC_XFERTYP_MSBSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_MSBSEL field. +#define BR_SDHC_XFERTYP_MSBSEL (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_MSBSEL)) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_MSBSEL. +#define BF_SDHC_XFERTYP_MSBSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_MSBSEL), uint32_t) & BM_SDHC_XFERTYP_MSBSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MSBSEL field to a new value. +#define BW_SDHC_XFERTYP_MSBSEL(v) (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_MSBSEL) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field RSPTYP[17:16] (RW) + * + * Values: + * - 00 - No response. + * - 01 - Response length 136. + * - 10 - Response length 48. + * - 11 - Response length 48, check busy after response. + */ +//@{ +#define BP_SDHC_XFERTYP_RSPTYP (16U) //!< Bit position for SDHC_XFERTYP_RSPTYP. +#define BM_SDHC_XFERTYP_RSPTYP (0x00030000U) //!< Bit mask for SDHC_XFERTYP_RSPTYP. +#define BS_SDHC_XFERTYP_RSPTYP (2U) //!< Bit field size in bits for SDHC_XFERTYP_RSPTYP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_RSPTYP field. +#define BR_SDHC_XFERTYP_RSPTYP (HW_SDHC_XFERTYP.B.RSPTYP) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_RSPTYP. +#define BF_SDHC_XFERTYP_RSPTYP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_RSPTYP), uint32_t) & BM_SDHC_XFERTYP_RSPTYP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSPTYP field to a new value. +#define BW_SDHC_XFERTYP_RSPTYP(v) (HW_SDHC_XFERTYP_WR((HW_SDHC_XFERTYP_RD() & ~BM_SDHC_XFERTYP_RSPTYP) | BF_SDHC_XFERTYP_RSPTYP(v))) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field CCCEN[19] (RW) + * + * If this bit is set to 1, the SDHC shall check the CRC field in the response. + * If an error is detected, it is reported as a Command CRC Error. If this bit is + * set to 0, the CRC field is not checked. The number of bits checked by the CRC + * field value changes according to the length of the response. + * + * Values: + * - 0 - Disable + * - 1 - Enable + */ +//@{ +#define BP_SDHC_XFERTYP_CCCEN (19U) //!< Bit position for SDHC_XFERTYP_CCCEN. +#define BM_SDHC_XFERTYP_CCCEN (0x00080000U) //!< Bit mask for SDHC_XFERTYP_CCCEN. +#define BS_SDHC_XFERTYP_CCCEN (1U) //!< Bit field size in bits for SDHC_XFERTYP_CCCEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_CCCEN field. +#define BR_SDHC_XFERTYP_CCCEN (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_CCCEN)) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_CCCEN. +#define BF_SDHC_XFERTYP_CCCEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_CCCEN), uint32_t) & BM_SDHC_XFERTYP_CCCEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCCEN field to a new value. +#define BW_SDHC_XFERTYP_CCCEN(v) (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_CCCEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field CICEN[20] (RW) + * + * If this bit is set to 1, the SDHC will check the index field in the response + * to see if it has the same value as the command index. If it is not, it is + * reported as a command index error. If this bit is set to 0, the index field is not + * checked. + * + * Values: + * - 0 - Disable + * - 1 - Enable + */ +//@{ +#define BP_SDHC_XFERTYP_CICEN (20U) //!< Bit position for SDHC_XFERTYP_CICEN. +#define BM_SDHC_XFERTYP_CICEN (0x00100000U) //!< Bit mask for SDHC_XFERTYP_CICEN. +#define BS_SDHC_XFERTYP_CICEN (1U) //!< Bit field size in bits for SDHC_XFERTYP_CICEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_CICEN field. +#define BR_SDHC_XFERTYP_CICEN (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_CICEN)) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_CICEN. +#define BF_SDHC_XFERTYP_CICEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_CICEN), uint32_t) & BM_SDHC_XFERTYP_CICEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CICEN field to a new value. +#define BW_SDHC_XFERTYP_CICEN(v) (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_CICEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field DPSEL[21] (RW) + * + * This bit is set to 1 to indicate that data is present and shall be + * transferred using the DAT line. It is set to 0 for the following: Commands using only + * the CMD line, for example: CMD52. Commands with no data transfer, but using the + * busy signal on DAT[0] line, R1b or R5b, for example: CMD38. In resume command, + * this bit shall be set, and other bits in this register shall be set the same + * as when the transfer was initially launched. When the Write Protect switch is + * on, that is, the WPSPL bit is active as 0, any command with a write operation + * will be ignored. That is to say, when this bit is set, while the DTDSEL bit is + * 0, writes to the register Transfer Type are ignored. + * + * Values: + * - 0 - No data present. + * - 1 - Data present. + */ +//@{ +#define BP_SDHC_XFERTYP_DPSEL (21U) //!< Bit position for SDHC_XFERTYP_DPSEL. +#define BM_SDHC_XFERTYP_DPSEL (0x00200000U) //!< Bit mask for SDHC_XFERTYP_DPSEL. +#define BS_SDHC_XFERTYP_DPSEL (1U) //!< Bit field size in bits for SDHC_XFERTYP_DPSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_DPSEL field. +#define BR_SDHC_XFERTYP_DPSEL (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_DPSEL)) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_DPSEL. +#define BF_SDHC_XFERTYP_DPSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_DPSEL), uint32_t) & BM_SDHC_XFERTYP_DPSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DPSEL field to a new value. +#define BW_SDHC_XFERTYP_DPSEL(v) (BITBAND_ACCESS32(HW_SDHC_XFERTYP_ADDR, BP_SDHC_XFERTYP_DPSEL) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field CMDTYP[23:22] (RW) + * + * There are three types of special commands: suspend, resume, and abort. These + * bits shall be set to 00b for all other commands. Suspend command: If the + * suspend command succeeds, the SDHC shall assume that the card bus has been released + * and that it is possible to issue the next command which uses the DAT line. + * Because the SDHC does not monitor the content of command response, it does not + * know if the suspend command succeeded or not. It is the host driver's + * responsibility to check the status of the suspend command and send another command + * marked as suspend to inform the SDHC that a suspend command was successfully + * issued. After the end bit of command is sent, the SDHC deasserts read wait for read + * transactions and stops checking busy for write transactions. In 4-bit mode, + * the interrupt cycle starts. If the suspend command fails, the SDHC will + * maintain its current state, and the host driver shall restart the transfer by setting + * PROCTL[CREQ]. Resume command: The host driver restarts the data transfer by + * restoring the registers saved before sending the suspend command and then sends + * the resume command. The SDHC will check for a pending busy state before + * starting write transfers. Abort command: If this command is set when executing a + * read transfer, the SDHC will stop reads to the buffer. If this command is set + * when executing a write transfer, the SDHC will stop driving the DAT line. After + * issuing the abort command, the host driver must issue a software reset (abort + * transaction). + * + * Values: + * - 00 - Normal other commands. + * - 01 - Suspend CMD52 for writing bus suspend in CCCR. + * - 10 - Resume CMD52 for writing function select in CCCR. + * - 11 - Abort CMD12, CMD52 for writing I/O abort in CCCR. + */ +//@{ +#define BP_SDHC_XFERTYP_CMDTYP (22U) //!< Bit position for SDHC_XFERTYP_CMDTYP. +#define BM_SDHC_XFERTYP_CMDTYP (0x00C00000U) //!< Bit mask for SDHC_XFERTYP_CMDTYP. +#define BS_SDHC_XFERTYP_CMDTYP (2U) //!< Bit field size in bits for SDHC_XFERTYP_CMDTYP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_CMDTYP field. +#define BR_SDHC_XFERTYP_CMDTYP (HW_SDHC_XFERTYP.B.CMDTYP) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_CMDTYP. +#define BF_SDHC_XFERTYP_CMDTYP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_CMDTYP), uint32_t) & BM_SDHC_XFERTYP_CMDTYP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CMDTYP field to a new value. +#define BW_SDHC_XFERTYP_CMDTYP(v) (HW_SDHC_XFERTYP_WR((HW_SDHC_XFERTYP_RD() & ~BM_SDHC_XFERTYP_CMDTYP) | BF_SDHC_XFERTYP_CMDTYP(v))) +#endif +//@} + +/*! + * @name Register SDHC_XFERTYP, field CMDINX[29:24] (RW) + * + * These bits shall be set to the command number that is specified in bits 45-40 + * of the command-format in the SD Memory Card Physical Layer Specification and + * SDIO Card Specification. + */ +//@{ +#define BP_SDHC_XFERTYP_CMDINX (24U) //!< Bit position for SDHC_XFERTYP_CMDINX. +#define BM_SDHC_XFERTYP_CMDINX (0x3F000000U) //!< Bit mask for SDHC_XFERTYP_CMDINX. +#define BS_SDHC_XFERTYP_CMDINX (6U) //!< Bit field size in bits for SDHC_XFERTYP_CMDINX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_XFERTYP_CMDINX field. +#define BR_SDHC_XFERTYP_CMDINX (HW_SDHC_XFERTYP.B.CMDINX) +#endif + +//! @brief Format value for bitfield SDHC_XFERTYP_CMDINX. +#define BF_SDHC_XFERTYP_CMDINX(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_XFERTYP_CMDINX), uint32_t) & BM_SDHC_XFERTYP_CMDINX) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CMDINX field to a new value. +#define BW_SDHC_XFERTYP_CMDINX(v) (HW_SDHC_XFERTYP_WR((HW_SDHC_XFERTYP_RD() & ~BM_SDHC_XFERTYP_CMDINX) | BF_SDHC_XFERTYP_CMDINX(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_CMDRSP0 - Command Response 0 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_CMDRSP0 - Command Response 0 (RO) + * + * Reset value: 0x00000000U + * + * This register is used to store part 0 of the response bits from the card. + */ +typedef union _hw_sdhc_cmdrsp0 +{ + uint32_t U; + struct _hw_sdhc_cmdrsp0_bitfields + { + uint32_t CMDRSP0 : 32; //!< [31:0] Command Response 0 + } B; +} hw_sdhc_cmdrsp0_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_CMDRSP0 register + */ +//@{ +#define HW_SDHC_CMDRSP0_ADDR (REGS_SDHC_BASE + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_CMDRSP0 (*(__I hw_sdhc_cmdrsp0_t *) HW_SDHC_CMDRSP0_ADDR) +#define HW_SDHC_CMDRSP0_RD() (HW_SDHC_CMDRSP0.U) +#endif +//@} + +/* + * Constants & macros for individual SDHC_CMDRSP0 bitfields + */ + +/*! + * @name Register SDHC_CMDRSP0, field CMDRSP0[31:0] (RO) + */ +//@{ +#define BP_SDHC_CMDRSP0_CMDRSP0 (0U) //!< Bit position for SDHC_CMDRSP0_CMDRSP0. +#define BM_SDHC_CMDRSP0_CMDRSP0 (0xFFFFFFFFU) //!< Bit mask for SDHC_CMDRSP0_CMDRSP0. +#define BS_SDHC_CMDRSP0_CMDRSP0 (32U) //!< Bit field size in bits for SDHC_CMDRSP0_CMDRSP0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_CMDRSP0_CMDRSP0 field. +#define BR_SDHC_CMDRSP0_CMDRSP0 (HW_SDHC_CMDRSP0.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_CMDRSP1 - Command Response 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_CMDRSP1 - Command Response 1 (RO) + * + * Reset value: 0x00000000U + * + * This register is used to store part 1 of the response bits from the card. + */ +typedef union _hw_sdhc_cmdrsp1 +{ + uint32_t U; + struct _hw_sdhc_cmdrsp1_bitfields + { + uint32_t CMDRSP1 : 32; //!< [31:0] Command Response 1 + } B; +} hw_sdhc_cmdrsp1_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_CMDRSP1 register + */ +//@{ +#define HW_SDHC_CMDRSP1_ADDR (REGS_SDHC_BASE + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_CMDRSP1 (*(__I hw_sdhc_cmdrsp1_t *) HW_SDHC_CMDRSP1_ADDR) +#define HW_SDHC_CMDRSP1_RD() (HW_SDHC_CMDRSP1.U) +#endif +//@} + +/* + * Constants & macros for individual SDHC_CMDRSP1 bitfields + */ + +/*! + * @name Register SDHC_CMDRSP1, field CMDRSP1[31:0] (RO) + */ +//@{ +#define BP_SDHC_CMDRSP1_CMDRSP1 (0U) //!< Bit position for SDHC_CMDRSP1_CMDRSP1. +#define BM_SDHC_CMDRSP1_CMDRSP1 (0xFFFFFFFFU) //!< Bit mask for SDHC_CMDRSP1_CMDRSP1. +#define BS_SDHC_CMDRSP1_CMDRSP1 (32U) //!< Bit field size in bits for SDHC_CMDRSP1_CMDRSP1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_CMDRSP1_CMDRSP1 field. +#define BR_SDHC_CMDRSP1_CMDRSP1 (HW_SDHC_CMDRSP1.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_CMDRSP2 - Command Response 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_CMDRSP2 - Command Response 2 (RO) + * + * Reset value: 0x00000000U + * + * This register is used to store part 2 of the response bits from the card. + */ +typedef union _hw_sdhc_cmdrsp2 +{ + uint32_t U; + struct _hw_sdhc_cmdrsp2_bitfields + { + uint32_t CMDRSP2 : 32; //!< [31:0] Command Response 2 + } B; +} hw_sdhc_cmdrsp2_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_CMDRSP2 register + */ +//@{ +#define HW_SDHC_CMDRSP2_ADDR (REGS_SDHC_BASE + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_CMDRSP2 (*(__I hw_sdhc_cmdrsp2_t *) HW_SDHC_CMDRSP2_ADDR) +#define HW_SDHC_CMDRSP2_RD() (HW_SDHC_CMDRSP2.U) +#endif +//@} + +/* + * Constants & macros for individual SDHC_CMDRSP2 bitfields + */ + +/*! + * @name Register SDHC_CMDRSP2, field CMDRSP2[31:0] (RO) + */ +//@{ +#define BP_SDHC_CMDRSP2_CMDRSP2 (0U) //!< Bit position for SDHC_CMDRSP2_CMDRSP2. +#define BM_SDHC_CMDRSP2_CMDRSP2 (0xFFFFFFFFU) //!< Bit mask for SDHC_CMDRSP2_CMDRSP2. +#define BS_SDHC_CMDRSP2_CMDRSP2 (32U) //!< Bit field size in bits for SDHC_CMDRSP2_CMDRSP2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_CMDRSP2_CMDRSP2 field. +#define BR_SDHC_CMDRSP2_CMDRSP2 (HW_SDHC_CMDRSP2.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_CMDRSP3 - Command Response 3 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_CMDRSP3 - Command Response 3 (RO) + * + * Reset value: 0x00000000U + * + * This register is used to store part 3 of the response bits from the card. The + * following table describes the mapping of command responses from the SD bus to + * command response registers for each response type. In the table, R[ ] refers + * to a bit range within the response data as transmitted on the SD bus. Response + * bit definition for each response type Response type Meaning of response + * Response field Response register R1,R1b (normal response) Card status R[39:8] + * CMDRSP0 R1b (Auto CMD12 response) Card status for auto CMD12 R[39:8] CMDRSP3 R2 + * (CID, CSD register) CID/CSD register [127:8] R[127:8] {CMDRSP3[23:0], CMDRSP2, + * CMDRSP1, CMDRSP0} R3 (OCR register) OCR register for memory R[39:8] CMDRSP0 R4 + * (OCR register) OCR register for I/O etc. R[39:8] CMDRSP0 R5, R5b SDIO response + * R[39:8] CMDRSP0 R6 (Publish RCA) New published RCA[31:16] and card + * status[15:0] R[39:9] CMDRSP0 This table shows that most responses with a length of 48 + * (R[47:0]) have 32-bit of the response data (R[39:8]) stored in the CMDRSP0 + * register. Responses of type R1b (auto CMD12 responses) have response data bits + * (R[39:8]) stored in the CMDRSP3 register. Responses with length 136 (R[135:0]) have + * 120-bit of the response data (R[127:8]) stored in the CMDRSP0, 1, 2, and 3 + * registers. To be able to read the response status efficiently, the SDHC stores + * only a part of the response data in the command response registers. This + * enables the host driver to efficiently read 32-bit of response data in one read + * cycle on a 32-bit bus system. Parts of the response, the index field and the CRC, + * are checked by the SDHC, as specified by XFERTYP[CICEN] and XFERTYP[CCCEN], + * and generate an error interrupt if any error is detected. The bit range for the + * CRC check depends on the response length. If the response length is 48, the + * SDHC will check R[47:1], and if the response length is 136 the SDHC will check + * R[119:1]. Because the SDHC may have a multiple block data transfer executing + * concurrently with a CMD_wo_DAT command, the SDHC stores the auto CMD12 response + * in the CMDRSP3 register. The CMD_wo_DAT response is stored in CMDRSP0. This + * allows the SDHC to avoid overwriting the Auto CMD12 response with the CMD_wo_DAT + * and vice versa. When the SDHC modifies part of the command response + * registers, as shown in the table above, it preserves the unmodified bits. + */ +typedef union _hw_sdhc_cmdrsp3 +{ + uint32_t U; + struct _hw_sdhc_cmdrsp3_bitfields + { + uint32_t CMDRSP3 : 32; //!< [31:0] Command Response 3 + } B; +} hw_sdhc_cmdrsp3_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_CMDRSP3 register + */ +//@{ +#define HW_SDHC_CMDRSP3_ADDR (REGS_SDHC_BASE + 0x1CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_CMDRSP3 (*(__I hw_sdhc_cmdrsp3_t *) HW_SDHC_CMDRSP3_ADDR) +#define HW_SDHC_CMDRSP3_RD() (HW_SDHC_CMDRSP3.U) +#endif +//@} + +/* + * Constants & macros for individual SDHC_CMDRSP3 bitfields + */ + +/*! + * @name Register SDHC_CMDRSP3, field CMDRSP3[31:0] (RO) + */ +//@{ +#define BP_SDHC_CMDRSP3_CMDRSP3 (0U) //!< Bit position for SDHC_CMDRSP3_CMDRSP3. +#define BM_SDHC_CMDRSP3_CMDRSP3 (0xFFFFFFFFU) //!< Bit mask for SDHC_CMDRSP3_CMDRSP3. +#define BS_SDHC_CMDRSP3_CMDRSP3 (32U) //!< Bit field size in bits for SDHC_CMDRSP3_CMDRSP3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_CMDRSP3_CMDRSP3 field. +#define BR_SDHC_CMDRSP3_CMDRSP3 (HW_SDHC_CMDRSP3.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_DATPORT - Buffer Data Port register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_DATPORT - Buffer Data Port register (RW) + * + * Reset value: 0x00000000U + * + * This is a 32-bit data port register used to access the internal buffer and it + * cannot be updated in Idle mode. + */ +typedef union _hw_sdhc_datport +{ + uint32_t U; + struct _hw_sdhc_datport_bitfields + { + uint32_t DATCONT : 32; //!< [31:0] Data Content + } B; +} hw_sdhc_datport_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_DATPORT register + */ +//@{ +#define HW_SDHC_DATPORT_ADDR (REGS_SDHC_BASE + 0x20U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_DATPORT (*(__IO hw_sdhc_datport_t *) HW_SDHC_DATPORT_ADDR) +#define HW_SDHC_DATPORT_RD() (HW_SDHC_DATPORT.U) +#define HW_SDHC_DATPORT_WR(v) (HW_SDHC_DATPORT.U = (v)) +#define HW_SDHC_DATPORT_SET(v) (HW_SDHC_DATPORT_WR(HW_SDHC_DATPORT_RD() | (v))) +#define HW_SDHC_DATPORT_CLR(v) (HW_SDHC_DATPORT_WR(HW_SDHC_DATPORT_RD() & ~(v))) +#define HW_SDHC_DATPORT_TOG(v) (HW_SDHC_DATPORT_WR(HW_SDHC_DATPORT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_DATPORT bitfields + */ + +/*! + * @name Register SDHC_DATPORT, field DATCONT[31:0] (RW) + * + * The Buffer Data Port register is for 32-bit data access by the CPU or the + * external DMA. When the internal DMA is enabled, any write to this register is + * ignored, and any read from this register will always yield 0s. + */ +//@{ +#define BP_SDHC_DATPORT_DATCONT (0U) //!< Bit position for SDHC_DATPORT_DATCONT. +#define BM_SDHC_DATPORT_DATCONT (0xFFFFFFFFU) //!< Bit mask for SDHC_DATPORT_DATCONT. +#define BS_SDHC_DATPORT_DATCONT (32U) //!< Bit field size in bits for SDHC_DATPORT_DATCONT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_DATPORT_DATCONT field. +#define BR_SDHC_DATPORT_DATCONT (HW_SDHC_DATPORT.U) +#endif + +//! @brief Format value for bitfield SDHC_DATPORT_DATCONT. +#define BF_SDHC_DATPORT_DATCONT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_DATPORT_DATCONT), uint32_t) & BM_SDHC_DATPORT_DATCONT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DATCONT field to a new value. +#define BW_SDHC_DATPORT_DATCONT(v) (HW_SDHC_DATPORT_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_PRSSTAT - Present State register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_PRSSTAT - Present State register (RO) + * + * Reset value: 0x00000000U + * + * The host driver can get status of the SDHC from this 32-bit read-only + * register. The host driver can issue CMD0, CMD12, CMD13 (for memory) and CMD52 (for + * SDIO) when the DAT lines are busy during a data transfer. These commands can be + * issued when Command Inhibit (CIHB) is set to zero. Other commands shall be + * issued when Command Inhibit (CDIHB) is set to zero. Possible changes to the SD + * Physical Specification may add other commands to this list in the future. + */ +typedef union _hw_sdhc_prsstat +{ + uint32_t U; + struct _hw_sdhc_prsstat_bitfields + { + uint32_t CIHB : 1; //!< [0] Command Inhibit (CMD) + uint32_t CDIHB : 1; //!< [1] Command Inhibit (DAT) + uint32_t DLA : 1; //!< [2] Data Line Active + uint32_t SDSTB : 1; //!< [3] SD Clock Stable + uint32_t IPGOFF : 1; //!< [4] Bus Clock Gated Off Internally + uint32_t HCKOFF : 1; //!< [5] System Clock Gated Off Internally + uint32_t PEROFF : 1; //!< [6] SDHC clock Gated Off Internally + uint32_t SDOFF : 1; //!< [7] SD Clock Gated Off Internally + uint32_t WTA : 1; //!< [8] Write Transfer Active + uint32_t RTA : 1; //!< [9] Read Transfer Active + uint32_t BWEN : 1; //!< [10] Buffer Write Enable + uint32_t BREN : 1; //!< [11] Buffer Read Enable + uint32_t RESERVED0 : 4; //!< [15:12] + uint32_t CINS : 1; //!< [16] Card Inserted + uint32_t RESERVED1 : 6; //!< [22:17] + uint32_t CLSL : 1; //!< [23] CMD Line Signal Level + uint32_t DLSL : 8; //!< [31:24] DAT Line Signal Level + } B; +} hw_sdhc_prsstat_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_PRSSTAT register + */ +//@{ +#define HW_SDHC_PRSSTAT_ADDR (REGS_SDHC_BASE + 0x24U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_PRSSTAT (*(__I hw_sdhc_prsstat_t *) HW_SDHC_PRSSTAT_ADDR) +#define HW_SDHC_PRSSTAT_RD() (HW_SDHC_PRSSTAT.U) +#endif +//@} + +/* + * Constants & macros for individual SDHC_PRSSTAT bitfields + */ + +/*! + * @name Register SDHC_PRSSTAT, field CIHB[0] (RO) + * + * If this status bit is 0, it indicates that the CMD line is not in use and the + * SDHC can issue a SD/MMC Command using the CMD line. This bit is set also + * immediately after the Transfer Type register is written. This bit is cleared when + * the command response is received. Even if the CDIHB bit is set to 1, Commands + * using only the CMD line can be issued if this bit is 0. Changing from 1 to 0 + * generates a command complete interrupt in the interrupt status register. If the + * SDHC cannot issue the command because of a command conflict error (see + * command CRC error) or because of a command not issued by auto CMD12 error, this bit + * will remain 1 and the command complete is not set. The status of issuing an + * auto CMD12 does not show on this bit. + * + * Values: + * - 0 - Can issue command using only CMD line. + * - 1 - Cannot issue command. + */ +//@{ +#define BP_SDHC_PRSSTAT_CIHB (0U) //!< Bit position for SDHC_PRSSTAT_CIHB. +#define BM_SDHC_PRSSTAT_CIHB (0x00000001U) //!< Bit mask for SDHC_PRSSTAT_CIHB. +#define BS_SDHC_PRSSTAT_CIHB (1U) //!< Bit field size in bits for SDHC_PRSSTAT_CIHB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_CIHB field. +#define BR_SDHC_PRSSTAT_CIHB (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_CIHB)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field CDIHB[1] (RO) + * + * This status bit is generated if either the DLA or the RTA is set to 1. If + * this bit is 0, it indicates that the SDHC can issue the next SD/MMC Command. + * Commands with a busy signal belong to CDIHB, for example, R1b, R5b type. Except in + * the case when the command busy is finished, changing from 1 to 0 generates a + * transfer complete interrupt in the Interrupt Status register. The SD host + * driver can save registers for a suspend transaction after this bit has changed + * from 1 to 0. + * + * Values: + * - 0 - Can issue command which uses the DAT line. + * - 1 - Cannot issue command which uses the DAT line. + */ +//@{ +#define BP_SDHC_PRSSTAT_CDIHB (1U) //!< Bit position for SDHC_PRSSTAT_CDIHB. +#define BM_SDHC_PRSSTAT_CDIHB (0x00000002U) //!< Bit mask for SDHC_PRSSTAT_CDIHB. +#define BS_SDHC_PRSSTAT_CDIHB (1U) //!< Bit field size in bits for SDHC_PRSSTAT_CDIHB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_CDIHB field. +#define BR_SDHC_PRSSTAT_CDIHB (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_CDIHB)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field DLA[2] (RO) + * + * Indicates whether one of the DAT lines on the SD bus is in use. In the case + * of read transactions: This status indicates whether a read transfer is + * executing on the SD bus. Changes in this value from 1 to 0, between data blocks, + * generates a block gap event interrupt in the Interrupt Status register. This bit + * will be set in either of the following cases: After the end bit of the read + * command. When writing a 1 to PROCTL[CREQ] to restart a read transfer. This bit + * will be cleared in either of the following cases: When the end bit of the last + * data block is sent from the SD bus to the SDHC. When the read wait state is + * stopped by a suspend command and the DAT2 line is released. The SDHC will wait at + * the next block gap by driving read wait at the start of the interrupt cycle. + * If the read wait signal is already driven (data buffer cannot receive data), + * the SDHC can wait for a current block gap by continuing to drive the read wait + * signal. It is necessary to support read wait to use the suspend / resume + * function. This bit will remain 1 during read wait. In the case of write + * transactions: This status indicates that a write transfer is executing on the SD bus. + * Changes in this value from 1 to 0 generate a transfer complete interrupt in the + * interrupt status register. This bit will be set in either of the following + * cases: After the end bit of the write command. When writing to 1 to PROCTL[CREQ] to + * continue a write transfer. This bit will be cleared in either of the + * following cases: When the SD card releases write busy of the last data block, the SDHC + * will also detect if the output is not busy. If the SD card does not drive the + * busy signal after the CRC status is received, the SDHC shall assume the card + * drive "Not busy". When the SD card releases write busy, prior to waiting for + * write transfer, and as a result of a stop at block gap request. In the case of + * command with busy pending: This status indicates that a busy state follows the + * command and the data line is in use. This bit will be cleared when the DAT0 + * line is released. + * + * Values: + * - 0 - DAT line inactive. + * - 1 - DAT line active. + */ +//@{ +#define BP_SDHC_PRSSTAT_DLA (2U) //!< Bit position for SDHC_PRSSTAT_DLA. +#define BM_SDHC_PRSSTAT_DLA (0x00000004U) //!< Bit mask for SDHC_PRSSTAT_DLA. +#define BS_SDHC_PRSSTAT_DLA (1U) //!< Bit field size in bits for SDHC_PRSSTAT_DLA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_DLA field. +#define BR_SDHC_PRSSTAT_DLA (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_DLA)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field SDSTB[3] (RO) + * + * Indicates that the internal card clock is stable. This bit is for the host + * driver to poll clock status when changing the clock frequency. It is recommended + * to clear SYSCTL[SDCLKEN] to remove glitch on the card clock when the + * frequency is changing. + * + * Values: + * - 0 - Clock is changing frequency and not stable. + * - 1 - Clock is stable. + */ +//@{ +#define BP_SDHC_PRSSTAT_SDSTB (3U) //!< Bit position for SDHC_PRSSTAT_SDSTB. +#define BM_SDHC_PRSSTAT_SDSTB (0x00000008U) //!< Bit mask for SDHC_PRSSTAT_SDSTB. +#define BS_SDHC_PRSSTAT_SDSTB (1U) //!< Bit field size in bits for SDHC_PRSSTAT_SDSTB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_SDSTB field. +#define BR_SDHC_PRSSTAT_SDSTB (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_SDSTB)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field IPGOFF[4] (RO) + * + * Indicates that the bus clock is internally gated off. This bit is for the + * host driver to debug. + * + * Values: + * - 0 - Bus clock is active. + * - 1 - Bus clock is gated off. + */ +//@{ +#define BP_SDHC_PRSSTAT_IPGOFF (4U) //!< Bit position for SDHC_PRSSTAT_IPGOFF. +#define BM_SDHC_PRSSTAT_IPGOFF (0x00000010U) //!< Bit mask for SDHC_PRSSTAT_IPGOFF. +#define BS_SDHC_PRSSTAT_IPGOFF (1U) //!< Bit field size in bits for SDHC_PRSSTAT_IPGOFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_IPGOFF field. +#define BR_SDHC_PRSSTAT_IPGOFF (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_IPGOFF)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field HCKOFF[5] (RO) + * + * Indicates that the system clock is internally gated off. This bit is for the + * host driver to debug during a data transfer. + * + * Values: + * - 0 - System clock is active. + * - 1 - System clock is gated off. + */ +//@{ +#define BP_SDHC_PRSSTAT_HCKOFF (5U) //!< Bit position for SDHC_PRSSTAT_HCKOFF. +#define BM_SDHC_PRSSTAT_HCKOFF (0x00000020U) //!< Bit mask for SDHC_PRSSTAT_HCKOFF. +#define BS_SDHC_PRSSTAT_HCKOFF (1U) //!< Bit field size in bits for SDHC_PRSSTAT_HCKOFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_HCKOFF field. +#define BR_SDHC_PRSSTAT_HCKOFF (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_HCKOFF)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field PEROFF[6] (RO) + * + * Indicates that the is internally gated off. This bit is for the host driver + * to debug transaction on the SD bus. When INITA bit is set, SDHC sending 80 + * clock cycles to the card, SDCLKEN must be 1 to enable the output card clock, + * otherwise the will never be gate off, so and will be always active. SDHC clock SDHC + * clock SDHC clock bus clock + * + * Values: + * - 0 - SDHC clock is active. + * - 1 - SDHC clock is gated off. + */ +//@{ +#define BP_SDHC_PRSSTAT_PEROFF (6U) //!< Bit position for SDHC_PRSSTAT_PEROFF. +#define BM_SDHC_PRSSTAT_PEROFF (0x00000040U) //!< Bit mask for SDHC_PRSSTAT_PEROFF. +#define BS_SDHC_PRSSTAT_PEROFF (1U) //!< Bit field size in bits for SDHC_PRSSTAT_PEROFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_PEROFF field. +#define BR_SDHC_PRSSTAT_PEROFF (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_PEROFF)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field SDOFF[7] (RO) + * + * Indicates that the SD clock is internally gated off, because of buffer + * over/under-run or read pause without read wait assertion, or the driver has cleared + * SYSCTL[SDCLKEN] to stop the SD clock. This bit is for the host driver to debug + * data transaction on the SD bus. + * + * Values: + * - 0 - SD clock is active. + * - 1 - SD clock is gated off. + */ +//@{ +#define BP_SDHC_PRSSTAT_SDOFF (7U) //!< Bit position for SDHC_PRSSTAT_SDOFF. +#define BM_SDHC_PRSSTAT_SDOFF (0x00000080U) //!< Bit mask for SDHC_PRSSTAT_SDOFF. +#define BS_SDHC_PRSSTAT_SDOFF (1U) //!< Bit field size in bits for SDHC_PRSSTAT_SDOFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_SDOFF field. +#define BR_SDHC_PRSSTAT_SDOFF (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_SDOFF)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field WTA[8] (RO) + * + * Indicates that a write transfer is active. If this bit is 0, it means no + * valid write data exists in the SDHC. This bit is set in either of the following + * cases: After the end bit of the write command. When writing 1 to PROCTL[CREQ] to + * restart a write transfer. This bit is cleared in either of the following + * cases: After getting the CRC status of the last data block as specified by the + * transfer count (single and multiple). After getting the CRC status of any block + * where data transmission is about to be stopped by a stop at block gap request. + * During a write transaction, a block gap event interrupt is generated when this + * bit is changed to 0, as result of the stop at block gap request being set. + * This status is useful for the host driver in determining when to issue commands + * during write busy state. + * + * Values: + * - 0 - No valid data. + * - 1 - Transferring data. + */ +//@{ +#define BP_SDHC_PRSSTAT_WTA (8U) //!< Bit position for SDHC_PRSSTAT_WTA. +#define BM_SDHC_PRSSTAT_WTA (0x00000100U) //!< Bit mask for SDHC_PRSSTAT_WTA. +#define BS_SDHC_PRSSTAT_WTA (1U) //!< Bit field size in bits for SDHC_PRSSTAT_WTA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_WTA field. +#define BR_SDHC_PRSSTAT_WTA (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_WTA)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field RTA[9] (RO) + * + * Used for detecting completion of a read transfer. This bit is set for either + * of the following conditions: After the end bit of the read command. When + * writing a 1 to PROCTL[CREQ] to restart a read transfer. A transfer complete + * interrupt is generated when this bit changes to 0. This bit is cleared for either of + * the following conditions: When the last data block as specified by block + * length is transferred to the system, that is, all data are read away from SDHC + * internal buffer. When all valid data blocks have been transferred from SDHC + * internal buffer to the system and no current block transfers are being sent as a + * result of the stop at block gap request being set to 1. + * + * Values: + * - 0 - No valid data. + * - 1 - Transferring data. + */ +//@{ +#define BP_SDHC_PRSSTAT_RTA (9U) //!< Bit position for SDHC_PRSSTAT_RTA. +#define BM_SDHC_PRSSTAT_RTA (0x00000200U) //!< Bit mask for SDHC_PRSSTAT_RTA. +#define BS_SDHC_PRSSTAT_RTA (1U) //!< Bit field size in bits for SDHC_PRSSTAT_RTA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_RTA field. +#define BR_SDHC_PRSSTAT_RTA (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_RTA)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field BWEN[10] (RO) + * + * Used for non-DMA write transfers. The SDHC can implement multiple buffers to + * transfer data efficiently. This read-only flag indicates whether space is + * available for write data. If this bit is 1, valid data greater than the watermark + * level can be written to the buffer. This read-only flag indicates whether + * space is available for write data. + * + * Values: + * - 0 - Write disable, the buffer can hold valid data less than the write + * watermark level. + * - 1 - Write enable, the buffer can hold valid data greater than the write + * watermark level. + */ +//@{ +#define BP_SDHC_PRSSTAT_BWEN (10U) //!< Bit position for SDHC_PRSSTAT_BWEN. +#define BM_SDHC_PRSSTAT_BWEN (0x00000400U) //!< Bit mask for SDHC_PRSSTAT_BWEN. +#define BS_SDHC_PRSSTAT_BWEN (1U) //!< Bit field size in bits for SDHC_PRSSTAT_BWEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_BWEN field. +#define BR_SDHC_PRSSTAT_BWEN (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_BWEN)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field BREN[11] (RO) + * + * Used for non-DMA read transfers. The SDHC may implement multiple buffers to + * transfer data efficiently. This read-only flag indicates that valid data exists + * in the host side buffer. If this bit is high, valid data greater than the + * watermark level exist in the buffer. This read-only flag indicates that valid + * data exists in the host side buffer. + * + * Values: + * - 0 - Read disable, valid data less than the watermark level exist in the + * buffer. + * - 1 - Read enable, valid data greater than the watermark level exist in the + * buffer. + */ +//@{ +#define BP_SDHC_PRSSTAT_BREN (11U) //!< Bit position for SDHC_PRSSTAT_BREN. +#define BM_SDHC_PRSSTAT_BREN (0x00000800U) //!< Bit mask for SDHC_PRSSTAT_BREN. +#define BS_SDHC_PRSSTAT_BREN (1U) //!< Bit field size in bits for SDHC_PRSSTAT_BREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_BREN field. +#define BR_SDHC_PRSSTAT_BREN (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_BREN)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field CINS[16] (RO) + * + * Indicates whether a card has been inserted. The SDHC debounces this signal so + * that the host driver will not need to wait for it to stabilize. Changing from + * a 0 to 1 generates a card insertion interrupt in the Interrupt Status + * register. Changing from a 1 to 0 generates a card removal interrupt in the Interrupt + * Status register. A write to the force event register does not effect this bit. + * SYSCTL[RSTA] does not effect this bit. A software reset does not effect this + * bit. + * + * Values: + * - 0 - Power on reset or no card. + * - 1 - Card inserted. + */ +//@{ +#define BP_SDHC_PRSSTAT_CINS (16U) //!< Bit position for SDHC_PRSSTAT_CINS. +#define BM_SDHC_PRSSTAT_CINS (0x00010000U) //!< Bit mask for SDHC_PRSSTAT_CINS. +#define BS_SDHC_PRSSTAT_CINS (1U) //!< Bit field size in bits for SDHC_PRSSTAT_CINS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_CINS field. +#define BR_SDHC_PRSSTAT_CINS (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_CINS)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field CLSL[23] (RO) + * + * Used to check the CMD line level to recover from errors, and for debugging. + * The reset value is effected by the external pullup/pulldown resistor, by + * default, the read value of this bit after reset is 1b, when the command line is + * pulled up. + */ +//@{ +#define BP_SDHC_PRSSTAT_CLSL (23U) //!< Bit position for SDHC_PRSSTAT_CLSL. +#define BM_SDHC_PRSSTAT_CLSL (0x00800000U) //!< Bit mask for SDHC_PRSSTAT_CLSL. +#define BS_SDHC_PRSSTAT_CLSL (1U) //!< Bit field size in bits for SDHC_PRSSTAT_CLSL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_CLSL field. +#define BR_SDHC_PRSSTAT_CLSL (BITBAND_ACCESS32(HW_SDHC_PRSSTAT_ADDR, BP_SDHC_PRSSTAT_CLSL)) +#endif +//@} + +/*! + * @name Register SDHC_PRSSTAT, field DLSL[31:24] (RO) + * + * Used to check the DAT line level to recover from errors, and for debugging. + * This is especially useful in detecting the busy signal level from DAT[0]. The + * reset value is effected by the external pullup/pulldown resistors. By default, + * the read value of this field after reset is 8'b11110111, when DAT[3] is pulled + * down and the other lines are pulled up. + */ +//@{ +#define BP_SDHC_PRSSTAT_DLSL (24U) //!< Bit position for SDHC_PRSSTAT_DLSL. +#define BM_SDHC_PRSSTAT_DLSL (0xFF000000U) //!< Bit mask for SDHC_PRSSTAT_DLSL. +#define BS_SDHC_PRSSTAT_DLSL (8U) //!< Bit field size in bits for SDHC_PRSSTAT_DLSL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PRSSTAT_DLSL field. +#define BR_SDHC_PRSSTAT_DLSL (HW_SDHC_PRSSTAT.B.DLSL) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_PROCTL - Protocol Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_PROCTL - Protocol Control register (RW) + * + * Reset value: 0x00000020U + * + * There are three cases to restart the transfer after stop at the block gap. + * Which case is appropriate depends on whether the SDHC issues a suspend command + * or the SD card accepts the suspend command: If the host driver does not issue a + * suspend command, the continue request shall be used to restart the transfer. + * If the host driver issues a suspend command and the SD card accepts it, a + * resume command shall be used to restart the transfer. If the host driver issues a + * suspend command and the SD card does not accept it, the continue request shall + * be used to restart the transfer. Any time stop at block gap request stops the + * data transfer, the host driver shall wait for a transfer complete (in the + * interrupt status register), before attempting to restart the transfer. When + * restarting the data transfer by continue request, the host driver shall clear the + * stop at block gap request before or simultaneously. + */ +typedef union _hw_sdhc_proctl +{ + uint32_t U; + struct _hw_sdhc_proctl_bitfields + { + uint32_t LCTL : 1; //!< [0] LED Control + uint32_t DTW : 2; //!< [2:1] Data Transfer Width + uint32_t D3CD : 1; //!< [3] DAT3 As Card Detection Pin + uint32_t EMODE : 2; //!< [5:4] Endian Mode + uint32_t CDTL : 1; //!< [6] Card Detect Test Level + uint32_t CDSS : 1; //!< [7] Card Detect Signal Selection + uint32_t DMAS : 2; //!< [9:8] DMA Select + uint32_t RESERVED0 : 6; //!< [15:10] + uint32_t SABGREQ : 1; //!< [16] Stop At Block Gap Request + uint32_t CREQ : 1; //!< [17] Continue Request + uint32_t RWCTL : 1; //!< [18] Read Wait Control + uint32_t IABG : 1; //!< [19] Interrupt At Block Gap + uint32_t RESERVED1 : 4; //!< [23:20] + uint32_t WECINT : 1; //!< [24] Wakeup Event Enable On Card Interrupt + uint32_t WECINS : 1; //!< [25] Wakeup Event Enable On SD Card + //! Insertion + uint32_t WECRM : 1; //!< [26] Wakeup Event Enable On SD Card Removal + uint32_t RESERVED2 : 5; //!< [31:27] + } B; +} hw_sdhc_proctl_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_PROCTL register + */ +//@{ +#define HW_SDHC_PROCTL_ADDR (REGS_SDHC_BASE + 0x28U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_PROCTL (*(__IO hw_sdhc_proctl_t *) HW_SDHC_PROCTL_ADDR) +#define HW_SDHC_PROCTL_RD() (HW_SDHC_PROCTL.U) +#define HW_SDHC_PROCTL_WR(v) (HW_SDHC_PROCTL.U = (v)) +#define HW_SDHC_PROCTL_SET(v) (HW_SDHC_PROCTL_WR(HW_SDHC_PROCTL_RD() | (v))) +#define HW_SDHC_PROCTL_CLR(v) (HW_SDHC_PROCTL_WR(HW_SDHC_PROCTL_RD() & ~(v))) +#define HW_SDHC_PROCTL_TOG(v) (HW_SDHC_PROCTL_WR(HW_SDHC_PROCTL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_PROCTL bitfields + */ + +/*! + * @name Register SDHC_PROCTL, field LCTL[0] (RW) + * + * This bit, fully controlled by the host driver, is used to caution the user + * not to remove the card while the card is being accessed. If the software is + * going to issue multiple SD commands, this bit can be set during all these + * transactions. It is not necessary to change for each transaction. When the software + * issues multiple SD commands, setting the bit once before the first command is + * sufficient: it is not necessary to reset the bit between commands. + * + * Values: + * - 0 - LED off. + * - 1 - LED on. + */ +//@{ +#define BP_SDHC_PROCTL_LCTL (0U) //!< Bit position for SDHC_PROCTL_LCTL. +#define BM_SDHC_PROCTL_LCTL (0x00000001U) //!< Bit mask for SDHC_PROCTL_LCTL. +#define BS_SDHC_PROCTL_LCTL (1U) //!< Bit field size in bits for SDHC_PROCTL_LCTL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_LCTL field. +#define BR_SDHC_PROCTL_LCTL (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_LCTL)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_LCTL. +#define BF_SDHC_PROCTL_LCTL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_LCTL), uint32_t) & BM_SDHC_PROCTL_LCTL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LCTL field to a new value. +#define BW_SDHC_PROCTL_LCTL(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_LCTL) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field DTW[2:1] (RW) + * + * Selects the data width of the SD bus for a data transfer. The host driver + * shall set it to match the data width of the card. Possible data transfer width is + * 1-bit, 4-bits or 8-bits. + * + * Values: + * - 00 - 1-bit mode + * - 01 - 4-bit mode + * - 10 - 8-bit mode + * - 11 - Reserved + */ +//@{ +#define BP_SDHC_PROCTL_DTW (1U) //!< Bit position for SDHC_PROCTL_DTW. +#define BM_SDHC_PROCTL_DTW (0x00000006U) //!< Bit mask for SDHC_PROCTL_DTW. +#define BS_SDHC_PROCTL_DTW (2U) //!< Bit field size in bits for SDHC_PROCTL_DTW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_DTW field. +#define BR_SDHC_PROCTL_DTW (HW_SDHC_PROCTL.B.DTW) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_DTW. +#define BF_SDHC_PROCTL_DTW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_DTW), uint32_t) & BM_SDHC_PROCTL_DTW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTW field to a new value. +#define BW_SDHC_PROCTL_DTW(v) (HW_SDHC_PROCTL_WR((HW_SDHC_PROCTL_RD() & ~BM_SDHC_PROCTL_DTW) | BF_SDHC_PROCTL_DTW(v))) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field D3CD[3] (RW) + * + * If this bit is set, DAT3 should be pulled down to act as a card detection + * pin. Be cautious when using this feature, because DAT3 is also a chip-select for + * the SPI mode. A pulldown on this pin and CMD0 may set the card into the SPI + * mode, which the SDHC does not support. Note: Keep this bit set if SDIO interrupt + * is used. + * + * Values: + * - 0 - DAT3 does not monitor card Insertion. + * - 1 - DAT3 as card detection pin. + */ +//@{ +#define BP_SDHC_PROCTL_D3CD (3U) //!< Bit position for SDHC_PROCTL_D3CD. +#define BM_SDHC_PROCTL_D3CD (0x00000008U) //!< Bit mask for SDHC_PROCTL_D3CD. +#define BS_SDHC_PROCTL_D3CD (1U) //!< Bit field size in bits for SDHC_PROCTL_D3CD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_D3CD field. +#define BR_SDHC_PROCTL_D3CD (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_D3CD)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_D3CD. +#define BF_SDHC_PROCTL_D3CD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_D3CD), uint32_t) & BM_SDHC_PROCTL_D3CD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the D3CD field to a new value. +#define BW_SDHC_PROCTL_D3CD(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_D3CD) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field EMODE[5:4] (RW) + * + * The SDHC supports all four endian modes in data transfer. + * + * Values: + * - 00 - Big endian mode + * - 01 - Half word big endian mode + * - 10 - Little endian mode + * - 11 - Reserved + */ +//@{ +#define BP_SDHC_PROCTL_EMODE (4U) //!< Bit position for SDHC_PROCTL_EMODE. +#define BM_SDHC_PROCTL_EMODE (0x00000030U) //!< Bit mask for SDHC_PROCTL_EMODE. +#define BS_SDHC_PROCTL_EMODE (2U) //!< Bit field size in bits for SDHC_PROCTL_EMODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_EMODE field. +#define BR_SDHC_PROCTL_EMODE (HW_SDHC_PROCTL.B.EMODE) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_EMODE. +#define BF_SDHC_PROCTL_EMODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_EMODE), uint32_t) & BM_SDHC_PROCTL_EMODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EMODE field to a new value. +#define BW_SDHC_PROCTL_EMODE(v) (HW_SDHC_PROCTL_WR((HW_SDHC_PROCTL_RD() & ~BM_SDHC_PROCTL_EMODE) | BF_SDHC_PROCTL_EMODE(v))) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field CDTL[6] (RW) + * + * Enabled while the CDSS is set to 1 and it indicates card insertion. + * + * Values: + * - 0 - Card detect test level is 0, no card inserted. + * - 1 - Card detect test level is 1, card inserted. + */ +//@{ +#define BP_SDHC_PROCTL_CDTL (6U) //!< Bit position for SDHC_PROCTL_CDTL. +#define BM_SDHC_PROCTL_CDTL (0x00000040U) //!< Bit mask for SDHC_PROCTL_CDTL. +#define BS_SDHC_PROCTL_CDTL (1U) //!< Bit field size in bits for SDHC_PROCTL_CDTL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_CDTL field. +#define BR_SDHC_PROCTL_CDTL (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_CDTL)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_CDTL. +#define BF_SDHC_PROCTL_CDTL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_CDTL), uint32_t) & BM_SDHC_PROCTL_CDTL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CDTL field to a new value. +#define BW_SDHC_PROCTL_CDTL(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_CDTL) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field CDSS[7] (RW) + * + * Selects the source for the card detection. + * + * Values: + * - 0 - Card detection level is selected for normal purpose. + * - 1 - Card detection test level is selected for test purpose. + */ +//@{ +#define BP_SDHC_PROCTL_CDSS (7U) //!< Bit position for SDHC_PROCTL_CDSS. +#define BM_SDHC_PROCTL_CDSS (0x00000080U) //!< Bit mask for SDHC_PROCTL_CDSS. +#define BS_SDHC_PROCTL_CDSS (1U) //!< Bit field size in bits for SDHC_PROCTL_CDSS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_CDSS field. +#define BR_SDHC_PROCTL_CDSS (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_CDSS)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_CDSS. +#define BF_SDHC_PROCTL_CDSS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_CDSS), uint32_t) & BM_SDHC_PROCTL_CDSS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CDSS field to a new value. +#define BW_SDHC_PROCTL_CDSS(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_CDSS) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field DMAS[9:8] (RW) + * + * This field is valid while DMA (SDMA or ADMA) is enabled and selects the DMA + * operation. + * + * Values: + * - 00 - No DMA or simple DMA is selected. + * - 01 - ADMA1 is selected. + * - 10 - ADMA2 is selected. + * - 11 - Reserved + */ +//@{ +#define BP_SDHC_PROCTL_DMAS (8U) //!< Bit position for SDHC_PROCTL_DMAS. +#define BM_SDHC_PROCTL_DMAS (0x00000300U) //!< Bit mask for SDHC_PROCTL_DMAS. +#define BS_SDHC_PROCTL_DMAS (2U) //!< Bit field size in bits for SDHC_PROCTL_DMAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_DMAS field. +#define BR_SDHC_PROCTL_DMAS (HW_SDHC_PROCTL.B.DMAS) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_DMAS. +#define BF_SDHC_PROCTL_DMAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_DMAS), uint32_t) & BM_SDHC_PROCTL_DMAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAS field to a new value. +#define BW_SDHC_PROCTL_DMAS(v) (HW_SDHC_PROCTL_WR((HW_SDHC_PROCTL_RD() & ~BM_SDHC_PROCTL_DMAS) | BF_SDHC_PROCTL_DMAS(v))) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field SABGREQ[16] (RW) + * + * Used to stop executing a transaction at the next block gap for both DMA and + * non-DMA transfers. Until the IRQSTATEN[TCSEN] is set to 1, indicating a + * transfer completion, the host driver shall leave this bit set to 1. Clearing both + * PROCTL[SABGREQ] and PROCTL[CREQ] does not cause the transaction to restart. Read + * Wait is used to stop the read transaction at the block gap. The SDHC will + * honor the PROCTL[SABGREQ] for write transfers, but for read transfers it requires + * that SDIO card support read wait. Therefore, the host driver shall not set + * this bit during read transfers unless the SDIO card supports read wait and has + * set PROCTL[RWCTL] to 1, otherwise the SDHC will stop the SD bus clock to pause + * the read operation during block gap. In the case of write transfers in which + * the host driver writes data to the data port register, the host driver shall set + * this bit after all block data is written. If this bit is set to 1, the host + * driver shall not write data to the Data Port register after a block is sent. + * Once this bit is set, the host driver shall not clear this bit before + * IRQSTATEN[TCSEN] is set, otherwise the SDHC's behavior is undefined. This bit effects + * PRSSTAT[RTA], PRSSTAT[WTA], and PRSSTAT[CDIHB]. + * + * Values: + * - 0 - Transfer + * - 1 - Stop + */ +//@{ +#define BP_SDHC_PROCTL_SABGREQ (16U) //!< Bit position for SDHC_PROCTL_SABGREQ. +#define BM_SDHC_PROCTL_SABGREQ (0x00010000U) //!< Bit mask for SDHC_PROCTL_SABGREQ. +#define BS_SDHC_PROCTL_SABGREQ (1U) //!< Bit field size in bits for SDHC_PROCTL_SABGREQ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_SABGREQ field. +#define BR_SDHC_PROCTL_SABGREQ (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_SABGREQ)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_SABGREQ. +#define BF_SDHC_PROCTL_SABGREQ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_SABGREQ), uint32_t) & BM_SDHC_PROCTL_SABGREQ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SABGREQ field to a new value. +#define BW_SDHC_PROCTL_SABGREQ(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_SABGREQ) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field CREQ[17] (RW) + * + * Used to restart a transaction which was stopped using the PROCTL[SABGREQ]. + * When a suspend operation is not accepted by the card, it is also by setting this + * bit to restart the paused transfer. To cancel stop at the block gap, set + * PROCTL[SABGREQ] to 0 and set this bit to 1 to restart the transfer. The SDHC + * automatically clears this bit, therefore it is not necessary for the host driver to + * set this bit to 0. If both PROCTL[SABGREQ] and this bit are 1, the continue + * request is ignored. + * + * Values: + * - 0 - No effect. + * - 1 - Restart + */ +//@{ +#define BP_SDHC_PROCTL_CREQ (17U) //!< Bit position for SDHC_PROCTL_CREQ. +#define BM_SDHC_PROCTL_CREQ (0x00020000U) //!< Bit mask for SDHC_PROCTL_CREQ. +#define BS_SDHC_PROCTL_CREQ (1U) //!< Bit field size in bits for SDHC_PROCTL_CREQ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_CREQ field. +#define BR_SDHC_PROCTL_CREQ (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_CREQ)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_CREQ. +#define BF_SDHC_PROCTL_CREQ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_CREQ), uint32_t) & BM_SDHC_PROCTL_CREQ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CREQ field to a new value. +#define BW_SDHC_PROCTL_CREQ(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_CREQ) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field RWCTL[18] (RW) + * + * The read wait function is optional for SDIO cards. If the card supports read + * wait, set this bit to enable use of the read wait protocol to stop read data + * using the DAT[2] line. Otherwise, the SDHC has to stop the SD Clock to hold + * read data, which restricts commands generation. When the host driver detects an + * SDIO card insertion, it shall set this bit according to the CCCR of the card. + * If the card does not support read wait, this bit shall never be set to 1, + * otherwise DAT line conflicts may occur. If this bit is set to 0, stop at block gap + * during read operation is also supported, but the SDHC will stop the SD Clock + * to pause reading operation. + * + * Values: + * - 0 - Disable read wait control, and stop SD clock at block gap when SABGREQ + * is set. + * - 1 - Enable read wait control, and assert read wait without stopping SD + * clock at block gap when SABGREQ bit is set. + */ +//@{ +#define BP_SDHC_PROCTL_RWCTL (18U) //!< Bit position for SDHC_PROCTL_RWCTL. +#define BM_SDHC_PROCTL_RWCTL (0x00040000U) //!< Bit mask for SDHC_PROCTL_RWCTL. +#define BS_SDHC_PROCTL_RWCTL (1U) //!< Bit field size in bits for SDHC_PROCTL_RWCTL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_RWCTL field. +#define BR_SDHC_PROCTL_RWCTL (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_RWCTL)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_RWCTL. +#define BF_SDHC_PROCTL_RWCTL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_RWCTL), uint32_t) & BM_SDHC_PROCTL_RWCTL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RWCTL field to a new value. +#define BW_SDHC_PROCTL_RWCTL(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_RWCTL) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field IABG[19] (RW) + * + * Valid only in 4-bit mode, of the SDIO card, and selects a sample point in the + * interrupt cycle. Setting to 1 enables interrupt detection at the block gap + * for a multiple block transfer. Setting to 0 disables interrupt detection during + * a multiple block transfer. If the SDIO card can't signal an interrupt during a + * multiple block transfer, this bit must be set to 0 to avoid an inadvertent + * interrupt. When the host driver detects an SDIO card insertion, it shall set + * this bit according to the CCCR of the card. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_PROCTL_IABG (19U) //!< Bit position for SDHC_PROCTL_IABG. +#define BM_SDHC_PROCTL_IABG (0x00080000U) //!< Bit mask for SDHC_PROCTL_IABG. +#define BS_SDHC_PROCTL_IABG (1U) //!< Bit field size in bits for SDHC_PROCTL_IABG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_IABG field. +#define BR_SDHC_PROCTL_IABG (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_IABG)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_IABG. +#define BF_SDHC_PROCTL_IABG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_IABG), uint32_t) & BM_SDHC_PROCTL_IABG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IABG field to a new value. +#define BW_SDHC_PROCTL_IABG(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_IABG) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field WECINT[24] (RW) + * + * Enables a wakeup event, via IRQSTAT[CINT]. This bit can be set to 1 if FN_WUS + * (Wake Up Support) in CIS is set to 1. When this bit is set, the card + * interrupt status and the SDHC interrupt can be asserted without SD_CLK toggling. When + * the wakeup feature is not enabled, the SD_CLK must be active to assert the + * card interrupt status and the SDHC interrupt. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_PROCTL_WECINT (24U) //!< Bit position for SDHC_PROCTL_WECINT. +#define BM_SDHC_PROCTL_WECINT (0x01000000U) //!< Bit mask for SDHC_PROCTL_WECINT. +#define BS_SDHC_PROCTL_WECINT (1U) //!< Bit field size in bits for SDHC_PROCTL_WECINT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_WECINT field. +#define BR_SDHC_PROCTL_WECINT (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_WECINT)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_WECINT. +#define BF_SDHC_PROCTL_WECINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_WECINT), uint32_t) & BM_SDHC_PROCTL_WECINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WECINT field to a new value. +#define BW_SDHC_PROCTL_WECINT(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_WECINT) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field WECINS[25] (RW) + * + * Enables a wakeup event, via IRQSTAT[CINS]. FN_WUS (Wake Up Support) in CIS + * does not effect this bit. When this bit is set, IRQSTATEN[CINSEN] and the SDHC + * interrupt can be asserted without SD_CLK toggling. When the wakeup feature is + * not enabled, the SD_CLK must be active to assert IRQSTATEN[CINSEN] and the SDHC + * interrupt. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_PROCTL_WECINS (25U) //!< Bit position for SDHC_PROCTL_WECINS. +#define BM_SDHC_PROCTL_WECINS (0x02000000U) //!< Bit mask for SDHC_PROCTL_WECINS. +#define BS_SDHC_PROCTL_WECINS (1U) //!< Bit field size in bits for SDHC_PROCTL_WECINS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_WECINS field. +#define BR_SDHC_PROCTL_WECINS (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_WECINS)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_WECINS. +#define BF_SDHC_PROCTL_WECINS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_WECINS), uint32_t) & BM_SDHC_PROCTL_WECINS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WECINS field to a new value. +#define BW_SDHC_PROCTL_WECINS(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_WECINS) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_PROCTL, field WECRM[26] (RW) + * + * Enables a wakeup event, via IRQSTAT[CRM]. FN_WUS (Wake Up Support) in CIS + * does not effect this bit. When this bit is set, IRQSTAT[CRM] and the SDHC + * interrupt can be asserted without SD_CLK toggling. When the wakeup feature is not + * enabled, the SD_CLK must be active to assert IRQSTAT[CRM] and the SDHC interrupt. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_PROCTL_WECRM (26U) //!< Bit position for SDHC_PROCTL_WECRM. +#define BM_SDHC_PROCTL_WECRM (0x04000000U) //!< Bit mask for SDHC_PROCTL_WECRM. +#define BS_SDHC_PROCTL_WECRM (1U) //!< Bit field size in bits for SDHC_PROCTL_WECRM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_PROCTL_WECRM field. +#define BR_SDHC_PROCTL_WECRM (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_WECRM)) +#endif + +//! @brief Format value for bitfield SDHC_PROCTL_WECRM. +#define BF_SDHC_PROCTL_WECRM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_PROCTL_WECRM), uint32_t) & BM_SDHC_PROCTL_WECRM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WECRM field to a new value. +#define BW_SDHC_PROCTL_WECRM(v) (BITBAND_ACCESS32(HW_SDHC_PROCTL_ADDR, BP_SDHC_PROCTL_WECRM) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_SYSCTL - System Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_SYSCTL - System Control register (RW) + * + * Reset value: 0x00008008U + */ +typedef union _hw_sdhc_sysctl +{ + uint32_t U; + struct _hw_sdhc_sysctl_bitfields + { + uint32_t IPGEN : 1; //!< [0] IPG Clock Enable + uint32_t HCKEN : 1; //!< [1] System Clock Enable + uint32_t PEREN : 1; //!< [2] Peripheral Clock Enable + uint32_t SDCLKEN : 1; //!< [3] SD Clock Enable + uint32_t DVS : 4; //!< [7:4] Divisor + uint32_t SDCLKFS : 8; //!< [15:8] SDCLK Frequency Select + uint32_t DTOCV : 4; //!< [19:16] Data Timeout Counter Value + uint32_t RESERVED0 : 4; //!< [23:20] + uint32_t RSTA : 1; //!< [24] Software Reset For ALL + uint32_t RSTC : 1; //!< [25] Software Reset For CMD Line + uint32_t RSTD : 1; //!< [26] Software Reset For DAT Line + uint32_t INITA : 1; //!< [27] Initialization Active + uint32_t RESERVED1 : 4; //!< [31:28] + } B; +} hw_sdhc_sysctl_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_SYSCTL register + */ +//@{ +#define HW_SDHC_SYSCTL_ADDR (REGS_SDHC_BASE + 0x2CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_SYSCTL (*(__IO hw_sdhc_sysctl_t *) HW_SDHC_SYSCTL_ADDR) +#define HW_SDHC_SYSCTL_RD() (HW_SDHC_SYSCTL.U) +#define HW_SDHC_SYSCTL_WR(v) (HW_SDHC_SYSCTL.U = (v)) +#define HW_SDHC_SYSCTL_SET(v) (HW_SDHC_SYSCTL_WR(HW_SDHC_SYSCTL_RD() | (v))) +#define HW_SDHC_SYSCTL_CLR(v) (HW_SDHC_SYSCTL_WR(HW_SDHC_SYSCTL_RD() & ~(v))) +#define HW_SDHC_SYSCTL_TOG(v) (HW_SDHC_SYSCTL_WR(HW_SDHC_SYSCTL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_SYSCTL bitfields + */ + +/*! + * @name Register SDHC_SYSCTL, field IPGEN[0] (RW) + * + * If this bit is set, bus clock will always be active and no automatic gating + * is applied. The bus clock will be internally gated off, if none of the + * following factors are met: The cmd part is reset, or Data part is reset, or Soft + * reset, or The cmd is about to send, or Clock divisor is just updated, or Continue + * request is just set, or This bit is set, or Card insertion is detected, or Card + * removal is detected, or Card external interrupt is detected, or The SDHC + * clock is not gated off The bus clock will not be auto gated off if the SDHC clock + * is not gated off. So clearing only this bit has no effect unless the PEREN bit + * is also cleared. + * + * Values: + * - 0 - Bus clock will be internally gated off. + * - 1 - Bus clock will not be automatically gated off. + */ +//@{ +#define BP_SDHC_SYSCTL_IPGEN (0U) //!< Bit position for SDHC_SYSCTL_IPGEN. +#define BM_SDHC_SYSCTL_IPGEN (0x00000001U) //!< Bit mask for SDHC_SYSCTL_IPGEN. +#define BS_SDHC_SYSCTL_IPGEN (1U) //!< Bit field size in bits for SDHC_SYSCTL_IPGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_SYSCTL_IPGEN field. +#define BR_SDHC_SYSCTL_IPGEN (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_IPGEN)) +#endif + +//! @brief Format value for bitfield SDHC_SYSCTL_IPGEN. +#define BF_SDHC_SYSCTL_IPGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_IPGEN), uint32_t) & BM_SDHC_SYSCTL_IPGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IPGEN field to a new value. +#define BW_SDHC_SYSCTL_IPGEN(v) (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_IPGEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field HCKEN[1] (RW) + * + * If this bit is set, system clock will always be active and no automatic + * gating is applied. When this bit is cleared, system clock will be automatically off + * when no data transfer is on the SD bus. + * + * Values: + * - 0 - System clock will be internally gated off. + * - 1 - System clock will not be automatically gated off. + */ +//@{ +#define BP_SDHC_SYSCTL_HCKEN (1U) //!< Bit position for SDHC_SYSCTL_HCKEN. +#define BM_SDHC_SYSCTL_HCKEN (0x00000002U) //!< Bit mask for SDHC_SYSCTL_HCKEN. +#define BS_SDHC_SYSCTL_HCKEN (1U) //!< Bit field size in bits for SDHC_SYSCTL_HCKEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_SYSCTL_HCKEN field. +#define BR_SDHC_SYSCTL_HCKEN (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_HCKEN)) +#endif + +//! @brief Format value for bitfield SDHC_SYSCTL_HCKEN. +#define BF_SDHC_SYSCTL_HCKEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_HCKEN), uint32_t) & BM_SDHC_SYSCTL_HCKEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HCKEN field to a new value. +#define BW_SDHC_SYSCTL_HCKEN(v) (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_HCKEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field PEREN[2] (RW) + * + * If this bit is set, SDHC clock will always be active and no automatic gating + * is applied. Thus the SDCLK is active except for when auto gating-off during + * buffer danger (buffer about to over-run or under-run). When this bit is cleared, + * the SDHC clock will be automatically off whenever there is no transaction on + * the SD bus. Because this bit is only a feature enabling bit, clearing this bit + * does not stop SDCLK immediately. The SDHC clock will be internally gated off, + * if none of the following factors are met: The cmd part is reset, or Data part + * is reset, or A soft reset, or The cmd is about to send, or Clock divisor is + * just updated, or Continue request is just set, or This bit is set, or Card + * insertion is detected, or Card removal is detected, or Card external interrupt is + * detected, or 80 clocks for initialization phase is ongoing + * + * Values: + * - 0 - SDHC clock will be internally gated off. + * - 1 - SDHC clock will not be automatically gated off. + */ +//@{ +#define BP_SDHC_SYSCTL_PEREN (2U) //!< Bit position for SDHC_SYSCTL_PEREN. +#define BM_SDHC_SYSCTL_PEREN (0x00000004U) //!< Bit mask for SDHC_SYSCTL_PEREN. +#define BS_SDHC_SYSCTL_PEREN (1U) //!< Bit field size in bits for SDHC_SYSCTL_PEREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_SYSCTL_PEREN field. +#define BR_SDHC_SYSCTL_PEREN (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_PEREN)) +#endif + +//! @brief Format value for bitfield SDHC_SYSCTL_PEREN. +#define BF_SDHC_SYSCTL_PEREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_PEREN), uint32_t) & BM_SDHC_SYSCTL_PEREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PEREN field to a new value. +#define BW_SDHC_SYSCTL_PEREN(v) (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_PEREN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field SDCLKEN[3] (RW) + * + * The host controller shall stop SDCLK when writing this bit to 0. SDCLK + * frequency can be changed when this bit is 0. Then, the host controller shall + * maintain the same clock frequency until SDCLK is stopped (stop at SDCLK = 0). If the + * IRQSTAT[CINS] is cleared, this bit must be cleared by the host driver to save + * power. + */ +//@{ +#define BP_SDHC_SYSCTL_SDCLKEN (3U) //!< Bit position for SDHC_SYSCTL_SDCLKEN. +#define BM_SDHC_SYSCTL_SDCLKEN (0x00000008U) //!< Bit mask for SDHC_SYSCTL_SDCLKEN. +#define BS_SDHC_SYSCTL_SDCLKEN (1U) //!< Bit field size in bits for SDHC_SYSCTL_SDCLKEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_SYSCTL_SDCLKEN field. +#define BR_SDHC_SYSCTL_SDCLKEN (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_SDCLKEN)) +#endif + +//! @brief Format value for bitfield SDHC_SYSCTL_SDCLKEN. +#define BF_SDHC_SYSCTL_SDCLKEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_SDCLKEN), uint32_t) & BM_SDHC_SYSCTL_SDCLKEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SDCLKEN field to a new value. +#define BW_SDHC_SYSCTL_SDCLKEN(v) (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_SDCLKEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field DVS[7:4] (RW) + * + * Used to provide a more exact divisor to generate the desired SD clock + * frequency. Note the divider can even support odd divisor without deterioration of + * duty cycle. The setting are as following: + * + * Values: + * - 0 - Divisor by 1. + * - 1 - Divisor by 2. + * - 1110 - Divisor by 15. + * - 1111 - Divisor by 16. + */ +//@{ +#define BP_SDHC_SYSCTL_DVS (4U) //!< Bit position for SDHC_SYSCTL_DVS. +#define BM_SDHC_SYSCTL_DVS (0x000000F0U) //!< Bit mask for SDHC_SYSCTL_DVS. +#define BS_SDHC_SYSCTL_DVS (4U) //!< Bit field size in bits for SDHC_SYSCTL_DVS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_SYSCTL_DVS field. +#define BR_SDHC_SYSCTL_DVS (HW_SDHC_SYSCTL.B.DVS) +#endif + +//! @brief Format value for bitfield SDHC_SYSCTL_DVS. +#define BF_SDHC_SYSCTL_DVS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_DVS), uint32_t) & BM_SDHC_SYSCTL_DVS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DVS field to a new value. +#define BW_SDHC_SYSCTL_DVS(v) (HW_SDHC_SYSCTL_WR((HW_SDHC_SYSCTL_RD() & ~BM_SDHC_SYSCTL_DVS) | BF_SDHC_SYSCTL_DVS(v))) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field SDCLKFS[15:8] (RW) + * + * Used to select the frequency of the SDCLK pin. The frequency is not + * programmed directly. Rather this register holds the prescaler (this register) and + * divisor (next register) of the base clock frequency register. Setting 00h bypasses + * the frequency prescaler of the SD Clock. Multiple bits must not be set, or the + * behavior of this prescaler is undefined. The two default divider values can + * be calculated by the frequency of SDHC clock and the following divisor bits. + * The frequency of SDCLK is set by the following formula: Clock frequency = (Base + * clock) / (prescaler x divisor) For example, if the base clock frequency is 96 + * MHz, and the target frequency is 25 MHz, then choosing the prescaler value of + * 01h and divisor value of 1h will yield 24 MHz, which is the nearest frequency + * less than or equal to the target. Similarly, to approach a clock value of 400 + * kHz, the prescaler value of 08h and divisor value of eh yields the exact clock + * value of 400 kHz. The reset value of this field is 80h, so if the input base + * clock ( SDHC clock ) is about 96 MHz, the default SD clock after reset is 375 + * kHz. According to the SD Physical Specification Version 1.1 and the SDIO Card + * Specification Version 1.2, the maximum SD clock frequency is 50 MHz and shall + * never exceed this limit. Only the following settings are allowed: + * + * Values: + * - 1 - Base clock divided by 2. + * - 10 - Base clock divided by 4. + * - 100 - Base clock divided by 8. + * - 1000 - Base clock divided by 16. + * - 10000 - Base clock divided by 32. + * - 100000 - Base clock divided by 64. + * - 1000000 - Base clock divided by 128. + * - 10000000 - Base clock divided by 256. + */ +//@{ +#define BP_SDHC_SYSCTL_SDCLKFS (8U) //!< Bit position for SDHC_SYSCTL_SDCLKFS. +#define BM_SDHC_SYSCTL_SDCLKFS (0x0000FF00U) //!< Bit mask for SDHC_SYSCTL_SDCLKFS. +#define BS_SDHC_SYSCTL_SDCLKFS (8U) //!< Bit field size in bits for SDHC_SYSCTL_SDCLKFS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_SYSCTL_SDCLKFS field. +#define BR_SDHC_SYSCTL_SDCLKFS (HW_SDHC_SYSCTL.B.SDCLKFS) +#endif + +//! @brief Format value for bitfield SDHC_SYSCTL_SDCLKFS. +#define BF_SDHC_SYSCTL_SDCLKFS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_SDCLKFS), uint32_t) & BM_SDHC_SYSCTL_SDCLKFS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SDCLKFS field to a new value. +#define BW_SDHC_SYSCTL_SDCLKFS(v) (HW_SDHC_SYSCTL_WR((HW_SDHC_SYSCTL_RD() & ~BM_SDHC_SYSCTL_SDCLKFS) | BF_SDHC_SYSCTL_SDCLKFS(v))) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field DTOCV[19:16] (RW) + * + * Determines the interval by which DAT line timeouts are detected. See + * IRQSTAT[DTOE] for information on factors that dictate time-out generation. Time-out + * clock frequency will be generated by dividing the base clock SDCLK value by this + * value. The host driver can clear IRQSTATEN[DTOESEN] to prevent inadvertent + * time-out events. + * + * Values: + * - 0000 - SDCLK x 2 13 + * - 0001 - SDCLK x 2 14 + * - 1110 - SDCLK x 2 27 + * - 1111 - Reserved + */ +//@{ +#define BP_SDHC_SYSCTL_DTOCV (16U) //!< Bit position for SDHC_SYSCTL_DTOCV. +#define BM_SDHC_SYSCTL_DTOCV (0x000F0000U) //!< Bit mask for SDHC_SYSCTL_DTOCV. +#define BS_SDHC_SYSCTL_DTOCV (4U) //!< Bit field size in bits for SDHC_SYSCTL_DTOCV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_SYSCTL_DTOCV field. +#define BR_SDHC_SYSCTL_DTOCV (HW_SDHC_SYSCTL.B.DTOCV) +#endif + +//! @brief Format value for bitfield SDHC_SYSCTL_DTOCV. +#define BF_SDHC_SYSCTL_DTOCV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_DTOCV), uint32_t) & BM_SDHC_SYSCTL_DTOCV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTOCV field to a new value. +#define BW_SDHC_SYSCTL_DTOCV(v) (HW_SDHC_SYSCTL_WR((HW_SDHC_SYSCTL_RD() & ~BM_SDHC_SYSCTL_DTOCV) | BF_SDHC_SYSCTL_DTOCV(v))) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field RSTA[24] (WORZ) + * + * Effects the entire host controller except for the card detection circuit. + * Register bits of type ROC, RW, RW1C, RWAC are cleared. During its initialization, + * the host driver shall set this bit to 1 to reset the SDHC. The SDHC shall + * reset this bit to 0 when the capabilities registers are valid and the host driver + * can read them. Additional use of software reset for all does not affect the + * value of the capabilities registers. After this bit is set, it is recommended + * that the host driver reset the external card and reinitialize it. + * + * Values: + * - 0 - No reset. + * - 1 - Reset. + */ +//@{ +#define BP_SDHC_SYSCTL_RSTA (24U) //!< Bit position for SDHC_SYSCTL_RSTA. +#define BM_SDHC_SYSCTL_RSTA (0x01000000U) //!< Bit mask for SDHC_SYSCTL_RSTA. +#define BS_SDHC_SYSCTL_RSTA (1U) //!< Bit field size in bits for SDHC_SYSCTL_RSTA. + +//! @brief Format value for bitfield SDHC_SYSCTL_RSTA. +#define BF_SDHC_SYSCTL_RSTA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_RSTA), uint32_t) & BM_SDHC_SYSCTL_RSTA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSTA field to a new value. +#define BW_SDHC_SYSCTL_RSTA(v) (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_RSTA) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field RSTC[25] (WORZ) + * + * Only part of the command circuit is reset. The following registers and bits + * are cleared by this bit: PRSSTAT[CIHB] IRQSTAT[CC] + * + * Values: + * - 0 - No reset. + * - 1 - Reset. + */ +//@{ +#define BP_SDHC_SYSCTL_RSTC (25U) //!< Bit position for SDHC_SYSCTL_RSTC. +#define BM_SDHC_SYSCTL_RSTC (0x02000000U) //!< Bit mask for SDHC_SYSCTL_RSTC. +#define BS_SDHC_SYSCTL_RSTC (1U) //!< Bit field size in bits for SDHC_SYSCTL_RSTC. + +//! @brief Format value for bitfield SDHC_SYSCTL_RSTC. +#define BF_SDHC_SYSCTL_RSTC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_RSTC), uint32_t) & BM_SDHC_SYSCTL_RSTC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSTC field to a new value. +#define BW_SDHC_SYSCTL_RSTC(v) (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_RSTC) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field RSTD[26] (WORZ) + * + * Only part of the data circuit is reset. DMA circuit is also reset. The + * following registers and bits are cleared by this bit: Data Port register Buffer Is + * Cleared And Initialized.Present State register Buffer Read Enable Buffer Write + * Enable Read Transfer Active Write Transfer Active DAT Line Active Command + * Inhibit (DAT) Protocol Control register Continue Request Stop At Block Gap Request + * Interrupt Status register Buffer Read Ready Buffer Write Ready DMA Interrupt + * Block Gap Event Transfer Complete + * + * Values: + * - 0 - No reset. + * - 1 - Reset. + */ +//@{ +#define BP_SDHC_SYSCTL_RSTD (26U) //!< Bit position for SDHC_SYSCTL_RSTD. +#define BM_SDHC_SYSCTL_RSTD (0x04000000U) //!< Bit mask for SDHC_SYSCTL_RSTD. +#define BS_SDHC_SYSCTL_RSTD (1U) //!< Bit field size in bits for SDHC_SYSCTL_RSTD. + +//! @brief Format value for bitfield SDHC_SYSCTL_RSTD. +#define BF_SDHC_SYSCTL_RSTD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_RSTD), uint32_t) & BM_SDHC_SYSCTL_RSTD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSTD field to a new value. +#define BW_SDHC_SYSCTL_RSTD(v) (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_RSTD) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_SYSCTL, field INITA[27] (RW) + * + * When this bit is set, 80 SD-clocks are sent to the card. After the 80 clocks + * are sent, this bit is self-cleared. This bit is very useful during the card + * power-up period when 74 SD-clocks are needed and the clock auto gating feature + * is enabled. Writing 1 to this bit when this bit is already 1 has no effect. + * Writing 0 to this bit at any time has no effect. When either of the PRSSTAT[CIHB] + * and PRSSTAT[CDIHB] bits are set, writing 1 to this bit is ignored, that is, + * when command line or data lines are active, write to this bit is not allowed. + * On the otherhand, when this bit is set, that is, during intialization active + * period, it is allowed to issue command, and the command bit stream will appear + * on the CMD pad after all 80 clock cycles are done. So when this command ends, + * the driver can make sure the 80 clock cycles are sent out. This is very useful + * when the driver needs send 80 cycles to the card and does not want to wait + * till this bit is self-cleared. + */ +//@{ +#define BP_SDHC_SYSCTL_INITA (27U) //!< Bit position for SDHC_SYSCTL_INITA. +#define BM_SDHC_SYSCTL_INITA (0x08000000U) //!< Bit mask for SDHC_SYSCTL_INITA. +#define BS_SDHC_SYSCTL_INITA (1U) //!< Bit field size in bits for SDHC_SYSCTL_INITA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_SYSCTL_INITA field. +#define BR_SDHC_SYSCTL_INITA (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_INITA)) +#endif + +//! @brief Format value for bitfield SDHC_SYSCTL_INITA. +#define BF_SDHC_SYSCTL_INITA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_SYSCTL_INITA), uint32_t) & BM_SDHC_SYSCTL_INITA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INITA field to a new value. +#define BW_SDHC_SYSCTL_INITA(v) (BITBAND_ACCESS32(HW_SDHC_SYSCTL_ADDR, BP_SDHC_SYSCTL_INITA) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_IRQSTAT - Interrupt Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_IRQSTAT - Interrupt Status register (RW) + * + * Reset value: 0x00000000U + * + * An interrupt is generated when the Normal Interrupt Signal Enable is enabled + * and at least one of the status bits is set to 1. For all bits, writing 1 to a + * bit clears it; writing to 0 keeps the bit unchanged. More than one status can + * be cleared with a single register write. For Card Interrupt, before writing 1 + * to clear, it is required that the card stops asserting the interrupt, meaning + * that when the Card Driver services the interrupt condition, otherwise the CINT + * bit will be asserted again. The table below shows the relationship between + * the CTOE and the CC bits. SDHC status for CTOE/CC bit combinations Command + * complete Command timeout error Meaning of the status 0 0 X X 1 Response not + * received within 64 SDCLK cycles 1 0 Response received The table below shows the + * relationship between the Transfer Complete and the Data Timeout Error. SDHC status + * for data timeout error/transfer complete bit combinations Transfer complete + * Data timeout error Meaning of the status 0 0 X 0 1 Timeout occurred during + * transfer 1 X Data transfer complete The table below shows the relationship between + * the command CRC Error (CCE) and Command Timeout Error (CTOE). SDHC status for + * CCE/CTOE Bit Combinations Command complete Command timeout error Meaning of + * the status 0 0 No error 0 1 Response timeout error 1 0 Response CRC error 1 1 + * CMD line conflict + */ +typedef union _hw_sdhc_irqstat +{ + uint32_t U; + struct _hw_sdhc_irqstat_bitfields + { + uint32_t CC : 1; //!< [0] Command Complete + uint32_t TC : 1; //!< [1] Transfer Complete + uint32_t BGE : 1; //!< [2] Block Gap Event + uint32_t DINT : 1; //!< [3] DMA Interrupt + uint32_t BWR : 1; //!< [4] Buffer Write Ready + uint32_t BRR : 1; //!< [5] Buffer Read Ready + uint32_t CINS : 1; //!< [6] Card Insertion + uint32_t CRM : 1; //!< [7] Card Removal + uint32_t CINT : 1; //!< [8] Card Interrupt + uint32_t RESERVED0 : 7; //!< [15:9] + uint32_t CTOE : 1; //!< [16] Command Timeout Error + uint32_t CCE : 1; //!< [17] Command CRC Error + uint32_t CEBE : 1; //!< [18] Command End Bit Error + uint32_t CIE : 1; //!< [19] Command Index Error + uint32_t DTOE : 1; //!< [20] Data Timeout Error + uint32_t DCE : 1; //!< [21] Data CRC Error + uint32_t DEBE : 1; //!< [22] Data End Bit Error + uint32_t RESERVED1 : 1; //!< [23] + uint32_t AC12E : 1; //!< [24] Auto CMD12 Error + uint32_t RESERVED2 : 3; //!< [27:25] + uint32_t DMAE : 1; //!< [28] DMA Error + uint32_t RESERVED3 : 3; //!< [31:29] + } B; +} hw_sdhc_irqstat_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_IRQSTAT register + */ +//@{ +#define HW_SDHC_IRQSTAT_ADDR (REGS_SDHC_BASE + 0x30U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_IRQSTAT (*(__IO hw_sdhc_irqstat_t *) HW_SDHC_IRQSTAT_ADDR) +#define HW_SDHC_IRQSTAT_RD() (HW_SDHC_IRQSTAT.U) +#define HW_SDHC_IRQSTAT_WR(v) (HW_SDHC_IRQSTAT.U = (v)) +#define HW_SDHC_IRQSTAT_SET(v) (HW_SDHC_IRQSTAT_WR(HW_SDHC_IRQSTAT_RD() | (v))) +#define HW_SDHC_IRQSTAT_CLR(v) (HW_SDHC_IRQSTAT_WR(HW_SDHC_IRQSTAT_RD() & ~(v))) +#define HW_SDHC_IRQSTAT_TOG(v) (HW_SDHC_IRQSTAT_WR(HW_SDHC_IRQSTAT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_IRQSTAT bitfields + */ + +/*! + * @name Register SDHC_IRQSTAT, field CC[0] (W1C) + * + * This bit is set when you receive the end bit of the command response, except + * Auto CMD12. See PRSSTAT[CIHB]. + * + * Values: + * - 0 - Command not complete. + * - 1 - Command complete. + */ +//@{ +#define BP_SDHC_IRQSTAT_CC (0U) //!< Bit position for SDHC_IRQSTAT_CC. +#define BM_SDHC_IRQSTAT_CC (0x00000001U) //!< Bit mask for SDHC_IRQSTAT_CC. +#define BS_SDHC_IRQSTAT_CC (1U) //!< Bit field size in bits for SDHC_IRQSTAT_CC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_CC field. +#define BR_SDHC_IRQSTAT_CC (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CC)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_CC. +#define BF_SDHC_IRQSTAT_CC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_CC), uint32_t) & BM_SDHC_IRQSTAT_CC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CC field to a new value. +#define BW_SDHC_IRQSTAT_CC(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CC) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field TC[1] (W1C) + * + * This bit is set when a read or write transfer is completed. In the case of a + * read transaction: This bit is set at the falling edge of the read transfer + * active status. There are two cases in which this interrupt is generated. The + * first is when a data transfer is completed as specified by the data length, after + * the last data has been read to the host system. The second is when data has + * stopped at the block gap and completed the data transfer by setting + * PROCTL[SABGREQ], after valid data has been read to the host system. In the case of a write + * transaction: This bit is set at the falling edge of the DAT line active + * status. There are two cases in which this interrupt is generated. The first is when + * the last data is written to the SD card as specified by the data length and + * the busy signal is released. The second is when data transfers are stopped at + * the block gap, by setting PROCTL[SABGREQ], and the data transfers are + * completed,after valid data is written to the SD card and the busy signal released. + * + * Values: + * - 0 - Transfer not complete. + * - 1 - Transfer complete. + */ +//@{ +#define BP_SDHC_IRQSTAT_TC (1U) //!< Bit position for SDHC_IRQSTAT_TC. +#define BM_SDHC_IRQSTAT_TC (0x00000002U) //!< Bit mask for SDHC_IRQSTAT_TC. +#define BS_SDHC_IRQSTAT_TC (1U) //!< Bit field size in bits for SDHC_IRQSTAT_TC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_TC field. +#define BR_SDHC_IRQSTAT_TC (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_TC)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_TC. +#define BF_SDHC_IRQSTAT_TC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_TC), uint32_t) & BM_SDHC_IRQSTAT_TC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TC field to a new value. +#define BW_SDHC_IRQSTAT_TC(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_TC) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field BGE[2] (W1C) + * + * If PROCTL[SABGREQ] is set, this bit is set when a read or write transaction + * is stopped at a block gap. If PROCTL[SABGREQ] is not set to 1, this bit is not + * set to 1. In the case of a read transaction: This bit is set at the falling + * edge of the DAT line active status, when the transaction is stopped at SD Bus + * timing. The read wait must be supported in order to use this function. In the + * case of write transaction: This bit is set at the falling edge of write transfer + * active status, after getting CRC status at SD bus timing. + * + * Values: + * - 0 - No block gap event. + * - 1 - Transaction stopped at block gap. + */ +//@{ +#define BP_SDHC_IRQSTAT_BGE (2U) //!< Bit position for SDHC_IRQSTAT_BGE. +#define BM_SDHC_IRQSTAT_BGE (0x00000004U) //!< Bit mask for SDHC_IRQSTAT_BGE. +#define BS_SDHC_IRQSTAT_BGE (1U) //!< Bit field size in bits for SDHC_IRQSTAT_BGE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_BGE field. +#define BR_SDHC_IRQSTAT_BGE (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_BGE)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_BGE. +#define BF_SDHC_IRQSTAT_BGE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_BGE), uint32_t) & BM_SDHC_IRQSTAT_BGE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BGE field to a new value. +#define BW_SDHC_IRQSTAT_BGE(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_BGE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field DINT[3] (W1C) + * + * Occurs only when the internal DMA finishes the data transfer successfully. + * Whenever errors occur during data transfer, this bit will not be set. Instead, + * the DMAE bit will be set. Either Simple DMA or ADMA finishes data transferring, + * this bit will be set. + * + * Values: + * - 0 - No DMA Interrupt. + * - 1 - DMA Interrupt is generated. + */ +//@{ +#define BP_SDHC_IRQSTAT_DINT (3U) //!< Bit position for SDHC_IRQSTAT_DINT. +#define BM_SDHC_IRQSTAT_DINT (0x00000008U) //!< Bit mask for SDHC_IRQSTAT_DINT. +#define BS_SDHC_IRQSTAT_DINT (1U) //!< Bit field size in bits for SDHC_IRQSTAT_DINT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_DINT field. +#define BR_SDHC_IRQSTAT_DINT (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DINT)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_DINT. +#define BF_SDHC_IRQSTAT_DINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_DINT), uint32_t) & BM_SDHC_IRQSTAT_DINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DINT field to a new value. +#define BW_SDHC_IRQSTAT_DINT(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DINT) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field BWR[4] (W1C) + * + * This status bit is set if the Buffer Write Enable bit, in the Present State + * register, changes from 0 to 1. See the Buffer Write Enable bit in the Present + * State register for additional information. + * + * Values: + * - 0 - Not ready to write buffer. + * - 1 - Ready to write buffer. + */ +//@{ +#define BP_SDHC_IRQSTAT_BWR (4U) //!< Bit position for SDHC_IRQSTAT_BWR. +#define BM_SDHC_IRQSTAT_BWR (0x00000010U) //!< Bit mask for SDHC_IRQSTAT_BWR. +#define BS_SDHC_IRQSTAT_BWR (1U) //!< Bit field size in bits for SDHC_IRQSTAT_BWR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_BWR field. +#define BR_SDHC_IRQSTAT_BWR (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_BWR)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_BWR. +#define BF_SDHC_IRQSTAT_BWR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_BWR), uint32_t) & BM_SDHC_IRQSTAT_BWR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BWR field to a new value. +#define BW_SDHC_IRQSTAT_BWR(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_BWR) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field BRR[5] (W1C) + * + * This status bit is set if the Buffer Read Enable bit, in the Present State + * register, changes from 0 to 1. See the Buffer Read Enable bit in the Present + * State register for additional information. + * + * Values: + * - 0 - Not ready to read buffer. + * - 1 - Ready to read buffer. + */ +//@{ +#define BP_SDHC_IRQSTAT_BRR (5U) //!< Bit position for SDHC_IRQSTAT_BRR. +#define BM_SDHC_IRQSTAT_BRR (0x00000020U) //!< Bit mask for SDHC_IRQSTAT_BRR. +#define BS_SDHC_IRQSTAT_BRR (1U) //!< Bit field size in bits for SDHC_IRQSTAT_BRR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_BRR field. +#define BR_SDHC_IRQSTAT_BRR (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_BRR)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_BRR. +#define BF_SDHC_IRQSTAT_BRR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_BRR), uint32_t) & BM_SDHC_IRQSTAT_BRR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BRR field to a new value. +#define BW_SDHC_IRQSTAT_BRR(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_BRR) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field CINS[6] (W1C) + * + * This status bit is set if the Card Inserted bit in the Present State register + * changes from 0 to 1. When the host driver writes this bit to 1 to clear this + * status, the status of the Card Inserted in the Present State register must be + * confirmed. Because the card state may possibly be changed when the host driver + * clears this bit and the interrupt event may not be generated. When this bit + * is cleared, it will be set again if a card is inserted. To leave it cleared, + * clear the Card Inserted Status Enable bit in Interrupt Status Enable register. + * + * Values: + * - 0 - Card state unstable or removed. + * - 1 - Card inserted. + */ +//@{ +#define BP_SDHC_IRQSTAT_CINS (6U) //!< Bit position for SDHC_IRQSTAT_CINS. +#define BM_SDHC_IRQSTAT_CINS (0x00000040U) //!< Bit mask for SDHC_IRQSTAT_CINS. +#define BS_SDHC_IRQSTAT_CINS (1U) //!< Bit field size in bits for SDHC_IRQSTAT_CINS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_CINS field. +#define BR_SDHC_IRQSTAT_CINS (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CINS)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_CINS. +#define BF_SDHC_IRQSTAT_CINS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_CINS), uint32_t) & BM_SDHC_IRQSTAT_CINS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CINS field to a new value. +#define BW_SDHC_IRQSTAT_CINS(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CINS) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field CRM[7] (W1C) + * + * This status bit is set if the Card Inserted bit in the Present State register + * changes from 1 to 0. When the host driver writes this bit to 1 to clear this + * status, the status of the Card Inserted in the Present State register must be + * confirmed. Because the card state may possibly be changed when the host driver + * clears this bit and the interrupt event may not be generated. When this bit + * is cleared, it will be set again if no card is inserted. To leave it cleared, + * clear the Card Removal Status Enable bit in Interrupt Status Enable register. + * + * Values: + * - 0 - Card state unstable or inserted. + * - 1 - Card removed. + */ +//@{ +#define BP_SDHC_IRQSTAT_CRM (7U) //!< Bit position for SDHC_IRQSTAT_CRM. +#define BM_SDHC_IRQSTAT_CRM (0x00000080U) //!< Bit mask for SDHC_IRQSTAT_CRM. +#define BS_SDHC_IRQSTAT_CRM (1U) //!< Bit field size in bits for SDHC_IRQSTAT_CRM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_CRM field. +#define BR_SDHC_IRQSTAT_CRM (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CRM)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_CRM. +#define BF_SDHC_IRQSTAT_CRM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_CRM), uint32_t) & BM_SDHC_IRQSTAT_CRM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRM field to a new value. +#define BW_SDHC_IRQSTAT_CRM(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CRM) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field CINT[8] (W1C) + * + * This status bit is set when an interrupt signal is detected from the external + * card. In 1-bit mode, the SDHC will detect the Card Interrupt without the SD + * Clock to support wakeup. In 4-bit mode, the card interrupt signal is sampled + * during the interrupt cycle, so the interrupt from card can only be sampled + * during interrupt cycle, introducing some delay between the interrupt signal from + * the SDIO card and the interrupt to the host system. Writing this bit to 1 can + * clear this bit, but as the interrupt factor from the SDIO card does not clear, + * this bit is set again. To clear this bit, it is required to reset the interrupt + * factor from the external card followed by a writing 1 to this bit. When this + * status has been set, and the host driver needs to service this interrupt, the + * Card Interrupt Signal Enable in the Interrupt Signal Enable register should be + * 0 to stop driving the interrupt signal to the host system. After completion + * of the card interrupt service (it must reset the interrupt factors in the SDIO + * card and the interrupt signal may not be asserted), write 1 to clear this bit, + * set the Card Interrupt Signal Enable to 1, and start sampling the interrupt + * signal again. + * + * Values: + * - 0 - No Card Interrupt. + * - 1 - Generate Card Interrupt. + */ +//@{ +#define BP_SDHC_IRQSTAT_CINT (8U) //!< Bit position for SDHC_IRQSTAT_CINT. +#define BM_SDHC_IRQSTAT_CINT (0x00000100U) //!< Bit mask for SDHC_IRQSTAT_CINT. +#define BS_SDHC_IRQSTAT_CINT (1U) //!< Bit field size in bits for SDHC_IRQSTAT_CINT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_CINT field. +#define BR_SDHC_IRQSTAT_CINT (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CINT)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_CINT. +#define BF_SDHC_IRQSTAT_CINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_CINT), uint32_t) & BM_SDHC_IRQSTAT_CINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CINT field to a new value. +#define BW_SDHC_IRQSTAT_CINT(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CINT) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field CTOE[16] (W1C) + * + * Occurs only if no response is returned within 64 SDCLK cycles from the end + * bit of the command. If the SDHC detects a CMD line conflict, in which case a + * Command CRC Error shall also be set, this bit shall be set without waiting for 64 + * SDCLK cycles. This is because the command will be aborted by the SDHC. + * + * Values: + * - 0 - No error. + * - 1 - Time out. + */ +//@{ +#define BP_SDHC_IRQSTAT_CTOE (16U) //!< Bit position for SDHC_IRQSTAT_CTOE. +#define BM_SDHC_IRQSTAT_CTOE (0x00010000U) //!< Bit mask for SDHC_IRQSTAT_CTOE. +#define BS_SDHC_IRQSTAT_CTOE (1U) //!< Bit field size in bits for SDHC_IRQSTAT_CTOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_CTOE field. +#define BR_SDHC_IRQSTAT_CTOE (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CTOE)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_CTOE. +#define BF_SDHC_IRQSTAT_CTOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_CTOE), uint32_t) & BM_SDHC_IRQSTAT_CTOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CTOE field to a new value. +#define BW_SDHC_IRQSTAT_CTOE(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CTOE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field CCE[17] (W1C) + * + * Command CRC Error is generated in two cases. If a response is returned and + * the Command Timeout Error is set to 0, indicating no time-out, this bit is set + * when detecting a CRC error in the command response. The SDHC detects a CMD line + * conflict by monitoring the CMD line when a command is issued. If the SDHC + * drives the CMD line to 1, but detects 0 on the CMD line at the next SDCLK edge, + * then the SDHC shall abort the command (Stop driving CMD line) and set this bit + * to 1. The Command Timeout Error shall also be set to 1 to distinguish CMD line + * conflict. + * + * Values: + * - 0 - No error. + * - 1 - CRC Error generated. + */ +//@{ +#define BP_SDHC_IRQSTAT_CCE (17U) //!< Bit position for SDHC_IRQSTAT_CCE. +#define BM_SDHC_IRQSTAT_CCE (0x00020000U) //!< Bit mask for SDHC_IRQSTAT_CCE. +#define BS_SDHC_IRQSTAT_CCE (1U) //!< Bit field size in bits for SDHC_IRQSTAT_CCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_CCE field. +#define BR_SDHC_IRQSTAT_CCE (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CCE)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_CCE. +#define BF_SDHC_IRQSTAT_CCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_CCE), uint32_t) & BM_SDHC_IRQSTAT_CCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCE field to a new value. +#define BW_SDHC_IRQSTAT_CCE(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CCE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field CEBE[18] (W1C) + * + * Occurs when detecting that the end bit of a command response is 0. + * + * Values: + * - 0 - No error. + * - 1 - End Bit Error generated. + */ +//@{ +#define BP_SDHC_IRQSTAT_CEBE (18U) //!< Bit position for SDHC_IRQSTAT_CEBE. +#define BM_SDHC_IRQSTAT_CEBE (0x00040000U) //!< Bit mask for SDHC_IRQSTAT_CEBE. +#define BS_SDHC_IRQSTAT_CEBE (1U) //!< Bit field size in bits for SDHC_IRQSTAT_CEBE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_CEBE field. +#define BR_SDHC_IRQSTAT_CEBE (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CEBE)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_CEBE. +#define BF_SDHC_IRQSTAT_CEBE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_CEBE), uint32_t) & BM_SDHC_IRQSTAT_CEBE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CEBE field to a new value. +#define BW_SDHC_IRQSTAT_CEBE(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CEBE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field CIE[19] (W1C) + * + * Occurs if a Command Index error occurs in the command response. + * + * Values: + * - 0 - No error. + * - 1 - Error. + */ +//@{ +#define BP_SDHC_IRQSTAT_CIE (19U) //!< Bit position for SDHC_IRQSTAT_CIE. +#define BM_SDHC_IRQSTAT_CIE (0x00080000U) //!< Bit mask for SDHC_IRQSTAT_CIE. +#define BS_SDHC_IRQSTAT_CIE (1U) //!< Bit field size in bits for SDHC_IRQSTAT_CIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_CIE field. +#define BR_SDHC_IRQSTAT_CIE (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CIE)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_CIE. +#define BF_SDHC_IRQSTAT_CIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_CIE), uint32_t) & BM_SDHC_IRQSTAT_CIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CIE field to a new value. +#define BW_SDHC_IRQSTAT_CIE(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_CIE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field DTOE[20] (W1C) + * + * Occurs when detecting one of following time-out conditions. Busy time-out for + * R1b,R5b type Busy time-out after Write CRC status Read Data time-out + * + * Values: + * - 0 - No error. + * - 1 - Time out. + */ +//@{ +#define BP_SDHC_IRQSTAT_DTOE (20U) //!< Bit position for SDHC_IRQSTAT_DTOE. +#define BM_SDHC_IRQSTAT_DTOE (0x00100000U) //!< Bit mask for SDHC_IRQSTAT_DTOE. +#define BS_SDHC_IRQSTAT_DTOE (1U) //!< Bit field size in bits for SDHC_IRQSTAT_DTOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_DTOE field. +#define BR_SDHC_IRQSTAT_DTOE (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DTOE)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_DTOE. +#define BF_SDHC_IRQSTAT_DTOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_DTOE), uint32_t) & BM_SDHC_IRQSTAT_DTOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTOE field to a new value. +#define BW_SDHC_IRQSTAT_DTOE(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DTOE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field DCE[21] (W1C) + * + * Occurs when detecting a CRC error when transferring read data, which uses the + * DAT line, or when detecting the Write CRC status having a value other than + * 010. + * + * Values: + * - 0 - No error. + * - 1 - Error. + */ +//@{ +#define BP_SDHC_IRQSTAT_DCE (21U) //!< Bit position for SDHC_IRQSTAT_DCE. +#define BM_SDHC_IRQSTAT_DCE (0x00200000U) //!< Bit mask for SDHC_IRQSTAT_DCE. +#define BS_SDHC_IRQSTAT_DCE (1U) //!< Bit field size in bits for SDHC_IRQSTAT_DCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_DCE field. +#define BR_SDHC_IRQSTAT_DCE (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DCE)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_DCE. +#define BF_SDHC_IRQSTAT_DCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_DCE), uint32_t) & BM_SDHC_IRQSTAT_DCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DCE field to a new value. +#define BW_SDHC_IRQSTAT_DCE(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DCE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field DEBE[22] (W1C) + * + * Occurs either when detecting 0 at the end bit position of read data, which + * uses the DAT line, or at the end bit position of the CRC. + * + * Values: + * - 0 - No error. + * - 1 - Error. + */ +//@{ +#define BP_SDHC_IRQSTAT_DEBE (22U) //!< Bit position for SDHC_IRQSTAT_DEBE. +#define BM_SDHC_IRQSTAT_DEBE (0x00400000U) //!< Bit mask for SDHC_IRQSTAT_DEBE. +#define BS_SDHC_IRQSTAT_DEBE (1U) //!< Bit field size in bits for SDHC_IRQSTAT_DEBE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_DEBE field. +#define BR_SDHC_IRQSTAT_DEBE (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DEBE)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_DEBE. +#define BF_SDHC_IRQSTAT_DEBE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_DEBE), uint32_t) & BM_SDHC_IRQSTAT_DEBE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DEBE field to a new value. +#define BW_SDHC_IRQSTAT_DEBE(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DEBE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field AC12E[24] (W1C) + * + * Occurs when detecting that one of the bits in the Auto CMD12 Error Status + * register has changed from 0 to 1. This bit is set to 1, not only when the errors + * in Auto CMD12 occur, but also when the Auto CMD12 is not executed due to the + * previous command error. + * + * Values: + * - 0 - No error. + * - 1 - Error. + */ +//@{ +#define BP_SDHC_IRQSTAT_AC12E (24U) //!< Bit position for SDHC_IRQSTAT_AC12E. +#define BM_SDHC_IRQSTAT_AC12E (0x01000000U) //!< Bit mask for SDHC_IRQSTAT_AC12E. +#define BS_SDHC_IRQSTAT_AC12E (1U) //!< Bit field size in bits for SDHC_IRQSTAT_AC12E. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_AC12E field. +#define BR_SDHC_IRQSTAT_AC12E (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_AC12E)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_AC12E. +#define BF_SDHC_IRQSTAT_AC12E(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_AC12E), uint32_t) & BM_SDHC_IRQSTAT_AC12E) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12E field to a new value. +#define BW_SDHC_IRQSTAT_AC12E(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_AC12E) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTAT, field DMAE[28] (W1C) + * + * Occurs when an Internal DMA transfer has failed. This bit is set to 1, when + * some error occurs in the data transfer. This error can be caused by either + * Simple DMA or ADMA, depending on which DMA is in use. The value in DMA System + * Address register is the next fetch address where the error occurs. Because any + * error corrupts the whole data block, the host driver shall restart the transfer + * from the corrupted block boundary. The address of the block boundary can be + * calculated either from the current DSADDR value or from the remaining number of + * blocks and the block size. + * + * Values: + * - 0 - No error. + * - 1 - Error. + */ +//@{ +#define BP_SDHC_IRQSTAT_DMAE (28U) //!< Bit position for SDHC_IRQSTAT_DMAE. +#define BM_SDHC_IRQSTAT_DMAE (0x10000000U) //!< Bit mask for SDHC_IRQSTAT_DMAE. +#define BS_SDHC_IRQSTAT_DMAE (1U) //!< Bit field size in bits for SDHC_IRQSTAT_DMAE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTAT_DMAE field. +#define BR_SDHC_IRQSTAT_DMAE (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DMAE)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTAT_DMAE. +#define BF_SDHC_IRQSTAT_DMAE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTAT_DMAE), uint32_t) & BM_SDHC_IRQSTAT_DMAE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAE field to a new value. +#define BW_SDHC_IRQSTAT_DMAE(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTAT_ADDR, BP_SDHC_IRQSTAT_DMAE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_IRQSTATEN - Interrupt Status Enable register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_IRQSTATEN - Interrupt Status Enable register (RW) + * + * Reset value: 0x117F013FU + * + * Setting the bits in this register to 1 enables the corresponding interrupt + * status to be set by the specified event. If any bit is cleared, the + * corresponding interrupt status bit is also cleared, that is, when the bit in this register + * is cleared, the corresponding bit in interrupt status register is always 0. + * Depending on PROCTL[IABG] bit setting, SDHC may be programmed to sample the + * card interrupt signal during the interrupt period and hold its value in the + * flip-flop. There will be some delays on the card interrupt, asserted from the card, + * to the time the host system is informed. To detect a CMD line conflict, the + * host driver must set both IRQSTATEN[CTOESEN] and IRQSTATEN[CCESEN] to 1. + */ +typedef union _hw_sdhc_irqstaten +{ + uint32_t U; + struct _hw_sdhc_irqstaten_bitfields + { + uint32_t CCSEN : 1; //!< [0] Command Complete Status Enable + uint32_t TCSEN : 1; //!< [1] Transfer Complete Status Enable + uint32_t BGESEN : 1; //!< [2] Block Gap Event Status Enable + uint32_t DINTSEN : 1; //!< [3] DMA Interrupt Status Enable + uint32_t BWRSEN : 1; //!< [4] Buffer Write Ready Status Enable + uint32_t BRRSEN : 1; //!< [5] Buffer Read Ready Status Enable + uint32_t CINSEN : 1; //!< [6] Card Insertion Status Enable + uint32_t CRMSEN : 1; //!< [7] Card Removal Status Enable + uint32_t CINTSEN : 1; //!< [8] Card Interrupt Status Enable + uint32_t RESERVED0 : 7; //!< [15:9] + uint32_t CTOESEN : 1; //!< [16] Command Timeout Error Status Enable + uint32_t CCESEN : 1; //!< [17] Command CRC Error Status Enable + uint32_t CEBESEN : 1; //!< [18] Command End Bit Error Status Enable + uint32_t CIESEN : 1; //!< [19] Command Index Error Status Enable + uint32_t DTOESEN : 1; //!< [20] Data Timeout Error Status Enable + uint32_t DCESEN : 1; //!< [21] Data CRC Error Status Enable + uint32_t DEBESEN : 1; //!< [22] Data End Bit Error Status Enable + uint32_t RESERVED1 : 1; //!< [23] + uint32_t AC12ESEN : 1; //!< [24] Auto CMD12 Error Status Enable + uint32_t RESERVED2 : 3; //!< [27:25] + uint32_t DMAESEN : 1; //!< [28] DMA Error Status Enable + uint32_t RESERVED3 : 3; //!< [31:29] + } B; +} hw_sdhc_irqstaten_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_IRQSTATEN register + */ +//@{ +#define HW_SDHC_IRQSTATEN_ADDR (REGS_SDHC_BASE + 0x34U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_IRQSTATEN (*(__IO hw_sdhc_irqstaten_t *) HW_SDHC_IRQSTATEN_ADDR) +#define HW_SDHC_IRQSTATEN_RD() (HW_SDHC_IRQSTATEN.U) +#define HW_SDHC_IRQSTATEN_WR(v) (HW_SDHC_IRQSTATEN.U = (v)) +#define HW_SDHC_IRQSTATEN_SET(v) (HW_SDHC_IRQSTATEN_WR(HW_SDHC_IRQSTATEN_RD() | (v))) +#define HW_SDHC_IRQSTATEN_CLR(v) (HW_SDHC_IRQSTATEN_WR(HW_SDHC_IRQSTATEN_RD() & ~(v))) +#define HW_SDHC_IRQSTATEN_TOG(v) (HW_SDHC_IRQSTATEN_WR(HW_SDHC_IRQSTATEN_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_IRQSTATEN bitfields + */ + +/*! + * @name Register SDHC_IRQSTATEN, field CCSEN[0] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_CCSEN (0U) //!< Bit position for SDHC_IRQSTATEN_CCSEN. +#define BM_SDHC_IRQSTATEN_CCSEN (0x00000001U) //!< Bit mask for SDHC_IRQSTATEN_CCSEN. +#define BS_SDHC_IRQSTATEN_CCSEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_CCSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_CCSEN field. +#define BR_SDHC_IRQSTATEN_CCSEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CCSEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_CCSEN. +#define BF_SDHC_IRQSTATEN_CCSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_CCSEN), uint32_t) & BM_SDHC_IRQSTATEN_CCSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCSEN field to a new value. +#define BW_SDHC_IRQSTATEN_CCSEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CCSEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field TCSEN[1] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_TCSEN (1U) //!< Bit position for SDHC_IRQSTATEN_TCSEN. +#define BM_SDHC_IRQSTATEN_TCSEN (0x00000002U) //!< Bit mask for SDHC_IRQSTATEN_TCSEN. +#define BS_SDHC_IRQSTATEN_TCSEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_TCSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_TCSEN field. +#define BR_SDHC_IRQSTATEN_TCSEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_TCSEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_TCSEN. +#define BF_SDHC_IRQSTATEN_TCSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_TCSEN), uint32_t) & BM_SDHC_IRQSTATEN_TCSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCSEN field to a new value. +#define BW_SDHC_IRQSTATEN_TCSEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_TCSEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field BGESEN[2] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_BGESEN (2U) //!< Bit position for SDHC_IRQSTATEN_BGESEN. +#define BM_SDHC_IRQSTATEN_BGESEN (0x00000004U) //!< Bit mask for SDHC_IRQSTATEN_BGESEN. +#define BS_SDHC_IRQSTATEN_BGESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_BGESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_BGESEN field. +#define BR_SDHC_IRQSTATEN_BGESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_BGESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_BGESEN. +#define BF_SDHC_IRQSTATEN_BGESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_BGESEN), uint32_t) & BM_SDHC_IRQSTATEN_BGESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BGESEN field to a new value. +#define BW_SDHC_IRQSTATEN_BGESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_BGESEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field DINTSEN[3] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_DINTSEN (3U) //!< Bit position for SDHC_IRQSTATEN_DINTSEN. +#define BM_SDHC_IRQSTATEN_DINTSEN (0x00000008U) //!< Bit mask for SDHC_IRQSTATEN_DINTSEN. +#define BS_SDHC_IRQSTATEN_DINTSEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_DINTSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_DINTSEN field. +#define BR_SDHC_IRQSTATEN_DINTSEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DINTSEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_DINTSEN. +#define BF_SDHC_IRQSTATEN_DINTSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_DINTSEN), uint32_t) & BM_SDHC_IRQSTATEN_DINTSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DINTSEN field to a new value. +#define BW_SDHC_IRQSTATEN_DINTSEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DINTSEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field BWRSEN[4] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_BWRSEN (4U) //!< Bit position for SDHC_IRQSTATEN_BWRSEN. +#define BM_SDHC_IRQSTATEN_BWRSEN (0x00000010U) //!< Bit mask for SDHC_IRQSTATEN_BWRSEN. +#define BS_SDHC_IRQSTATEN_BWRSEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_BWRSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_BWRSEN field. +#define BR_SDHC_IRQSTATEN_BWRSEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_BWRSEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_BWRSEN. +#define BF_SDHC_IRQSTATEN_BWRSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_BWRSEN), uint32_t) & BM_SDHC_IRQSTATEN_BWRSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BWRSEN field to a new value. +#define BW_SDHC_IRQSTATEN_BWRSEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_BWRSEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field BRRSEN[5] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_BRRSEN (5U) //!< Bit position for SDHC_IRQSTATEN_BRRSEN. +#define BM_SDHC_IRQSTATEN_BRRSEN (0x00000020U) //!< Bit mask for SDHC_IRQSTATEN_BRRSEN. +#define BS_SDHC_IRQSTATEN_BRRSEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_BRRSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_BRRSEN field. +#define BR_SDHC_IRQSTATEN_BRRSEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_BRRSEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_BRRSEN. +#define BF_SDHC_IRQSTATEN_BRRSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_BRRSEN), uint32_t) & BM_SDHC_IRQSTATEN_BRRSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BRRSEN field to a new value. +#define BW_SDHC_IRQSTATEN_BRRSEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_BRRSEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field CINSEN[6] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_CINSEN (6U) //!< Bit position for SDHC_IRQSTATEN_CINSEN. +#define BM_SDHC_IRQSTATEN_CINSEN (0x00000040U) //!< Bit mask for SDHC_IRQSTATEN_CINSEN. +#define BS_SDHC_IRQSTATEN_CINSEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_CINSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_CINSEN field. +#define BR_SDHC_IRQSTATEN_CINSEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CINSEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_CINSEN. +#define BF_SDHC_IRQSTATEN_CINSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_CINSEN), uint32_t) & BM_SDHC_IRQSTATEN_CINSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CINSEN field to a new value. +#define BW_SDHC_IRQSTATEN_CINSEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CINSEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field CRMSEN[7] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_CRMSEN (7U) //!< Bit position for SDHC_IRQSTATEN_CRMSEN. +#define BM_SDHC_IRQSTATEN_CRMSEN (0x00000080U) //!< Bit mask for SDHC_IRQSTATEN_CRMSEN. +#define BS_SDHC_IRQSTATEN_CRMSEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_CRMSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_CRMSEN field. +#define BR_SDHC_IRQSTATEN_CRMSEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CRMSEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_CRMSEN. +#define BF_SDHC_IRQSTATEN_CRMSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_CRMSEN), uint32_t) & BM_SDHC_IRQSTATEN_CRMSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRMSEN field to a new value. +#define BW_SDHC_IRQSTATEN_CRMSEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CRMSEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field CINTSEN[8] (RW) + * + * If this bit is set to 0, the SDHC will clear the interrupt request to the + * system. The card interrupt detection is stopped when this bit is cleared and + * restarted when this bit is set to 1. The host driver must clear the this bit + * before servicing the card interrupt and must set this bit again after all interrupt + * requests from the card are cleared to prevent inadvertent interrupts. + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_CINTSEN (8U) //!< Bit position for SDHC_IRQSTATEN_CINTSEN. +#define BM_SDHC_IRQSTATEN_CINTSEN (0x00000100U) //!< Bit mask for SDHC_IRQSTATEN_CINTSEN. +#define BS_SDHC_IRQSTATEN_CINTSEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_CINTSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_CINTSEN field. +#define BR_SDHC_IRQSTATEN_CINTSEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CINTSEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_CINTSEN. +#define BF_SDHC_IRQSTATEN_CINTSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_CINTSEN), uint32_t) & BM_SDHC_IRQSTATEN_CINTSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CINTSEN field to a new value. +#define BW_SDHC_IRQSTATEN_CINTSEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CINTSEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field CTOESEN[16] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_CTOESEN (16U) //!< Bit position for SDHC_IRQSTATEN_CTOESEN. +#define BM_SDHC_IRQSTATEN_CTOESEN (0x00010000U) //!< Bit mask for SDHC_IRQSTATEN_CTOESEN. +#define BS_SDHC_IRQSTATEN_CTOESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_CTOESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_CTOESEN field. +#define BR_SDHC_IRQSTATEN_CTOESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CTOESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_CTOESEN. +#define BF_SDHC_IRQSTATEN_CTOESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_CTOESEN), uint32_t) & BM_SDHC_IRQSTATEN_CTOESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CTOESEN field to a new value. +#define BW_SDHC_IRQSTATEN_CTOESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CTOESEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field CCESEN[17] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_CCESEN (17U) //!< Bit position for SDHC_IRQSTATEN_CCESEN. +#define BM_SDHC_IRQSTATEN_CCESEN (0x00020000U) //!< Bit mask for SDHC_IRQSTATEN_CCESEN. +#define BS_SDHC_IRQSTATEN_CCESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_CCESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_CCESEN field. +#define BR_SDHC_IRQSTATEN_CCESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CCESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_CCESEN. +#define BF_SDHC_IRQSTATEN_CCESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_CCESEN), uint32_t) & BM_SDHC_IRQSTATEN_CCESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCESEN field to a new value. +#define BW_SDHC_IRQSTATEN_CCESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CCESEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field CEBESEN[18] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_CEBESEN (18U) //!< Bit position for SDHC_IRQSTATEN_CEBESEN. +#define BM_SDHC_IRQSTATEN_CEBESEN (0x00040000U) //!< Bit mask for SDHC_IRQSTATEN_CEBESEN. +#define BS_SDHC_IRQSTATEN_CEBESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_CEBESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_CEBESEN field. +#define BR_SDHC_IRQSTATEN_CEBESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CEBESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_CEBESEN. +#define BF_SDHC_IRQSTATEN_CEBESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_CEBESEN), uint32_t) & BM_SDHC_IRQSTATEN_CEBESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CEBESEN field to a new value. +#define BW_SDHC_IRQSTATEN_CEBESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CEBESEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field CIESEN[19] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_CIESEN (19U) //!< Bit position for SDHC_IRQSTATEN_CIESEN. +#define BM_SDHC_IRQSTATEN_CIESEN (0x00080000U) //!< Bit mask for SDHC_IRQSTATEN_CIESEN. +#define BS_SDHC_IRQSTATEN_CIESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_CIESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_CIESEN field. +#define BR_SDHC_IRQSTATEN_CIESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CIESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_CIESEN. +#define BF_SDHC_IRQSTATEN_CIESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_CIESEN), uint32_t) & BM_SDHC_IRQSTATEN_CIESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CIESEN field to a new value. +#define BW_SDHC_IRQSTATEN_CIESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_CIESEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field DTOESEN[20] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_DTOESEN (20U) //!< Bit position for SDHC_IRQSTATEN_DTOESEN. +#define BM_SDHC_IRQSTATEN_DTOESEN (0x00100000U) //!< Bit mask for SDHC_IRQSTATEN_DTOESEN. +#define BS_SDHC_IRQSTATEN_DTOESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_DTOESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_DTOESEN field. +#define BR_SDHC_IRQSTATEN_DTOESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DTOESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_DTOESEN. +#define BF_SDHC_IRQSTATEN_DTOESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_DTOESEN), uint32_t) & BM_SDHC_IRQSTATEN_DTOESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTOESEN field to a new value. +#define BW_SDHC_IRQSTATEN_DTOESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DTOESEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field DCESEN[21] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_DCESEN (21U) //!< Bit position for SDHC_IRQSTATEN_DCESEN. +#define BM_SDHC_IRQSTATEN_DCESEN (0x00200000U) //!< Bit mask for SDHC_IRQSTATEN_DCESEN. +#define BS_SDHC_IRQSTATEN_DCESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_DCESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_DCESEN field. +#define BR_SDHC_IRQSTATEN_DCESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DCESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_DCESEN. +#define BF_SDHC_IRQSTATEN_DCESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_DCESEN), uint32_t) & BM_SDHC_IRQSTATEN_DCESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DCESEN field to a new value. +#define BW_SDHC_IRQSTATEN_DCESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DCESEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field DEBESEN[22] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_DEBESEN (22U) //!< Bit position for SDHC_IRQSTATEN_DEBESEN. +#define BM_SDHC_IRQSTATEN_DEBESEN (0x00400000U) //!< Bit mask for SDHC_IRQSTATEN_DEBESEN. +#define BS_SDHC_IRQSTATEN_DEBESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_DEBESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_DEBESEN field. +#define BR_SDHC_IRQSTATEN_DEBESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DEBESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_DEBESEN. +#define BF_SDHC_IRQSTATEN_DEBESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_DEBESEN), uint32_t) & BM_SDHC_IRQSTATEN_DEBESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DEBESEN field to a new value. +#define BW_SDHC_IRQSTATEN_DEBESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DEBESEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field AC12ESEN[24] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_AC12ESEN (24U) //!< Bit position for SDHC_IRQSTATEN_AC12ESEN. +#define BM_SDHC_IRQSTATEN_AC12ESEN (0x01000000U) //!< Bit mask for SDHC_IRQSTATEN_AC12ESEN. +#define BS_SDHC_IRQSTATEN_AC12ESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_AC12ESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_AC12ESEN field. +#define BR_SDHC_IRQSTATEN_AC12ESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_AC12ESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_AC12ESEN. +#define BF_SDHC_IRQSTATEN_AC12ESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_AC12ESEN), uint32_t) & BM_SDHC_IRQSTATEN_AC12ESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12ESEN field to a new value. +#define BW_SDHC_IRQSTATEN_AC12ESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_AC12ESEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSTATEN, field DMAESEN[28] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSTATEN_DMAESEN (28U) //!< Bit position for SDHC_IRQSTATEN_DMAESEN. +#define BM_SDHC_IRQSTATEN_DMAESEN (0x10000000U) //!< Bit mask for SDHC_IRQSTATEN_DMAESEN. +#define BS_SDHC_IRQSTATEN_DMAESEN (1U) //!< Bit field size in bits for SDHC_IRQSTATEN_DMAESEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSTATEN_DMAESEN field. +#define BR_SDHC_IRQSTATEN_DMAESEN (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DMAESEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSTATEN_DMAESEN. +#define BF_SDHC_IRQSTATEN_DMAESEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSTATEN_DMAESEN), uint32_t) & BM_SDHC_IRQSTATEN_DMAESEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAESEN field to a new value. +#define BW_SDHC_IRQSTATEN_DMAESEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSTATEN_ADDR, BP_SDHC_IRQSTATEN_DMAESEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_IRQSIGEN - Interrupt Signal Enable register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_IRQSIGEN - Interrupt Signal Enable register (RW) + * + * Reset value: 0x00000000U + * + * This register is used to select which interrupt status is indicated to the + * host system as the interrupt. All of these status bits share the same interrupt + * line. Setting any of these bits to 1 enables interrupt generation. The + * corresponding status register bit will generate an interrupt when the corresponding + * interrupt signal enable bit is set. + */ +typedef union _hw_sdhc_irqsigen +{ + uint32_t U; + struct _hw_sdhc_irqsigen_bitfields + { + uint32_t CCIEN : 1; //!< [0] Command Complete Interrupt Enable + uint32_t TCIEN : 1; //!< [1] Transfer Complete Interrupt Enable + uint32_t BGEIEN : 1; //!< [2] Block Gap Event Interrupt Enable + uint32_t DINTIEN : 1; //!< [3] DMA Interrupt Enable + uint32_t BWRIEN : 1; //!< [4] Buffer Write Ready Interrupt Enable + uint32_t BRRIEN : 1; //!< [5] Buffer Read Ready Interrupt Enable + uint32_t CINSIEN : 1; //!< [6] Card Insertion Interrupt Enable + uint32_t CRMIEN : 1; //!< [7] Card Removal Interrupt Enable + uint32_t CINTIEN : 1; //!< [8] Card Interrupt Enable + uint32_t RESERVED0 : 7; //!< [15:9] + uint32_t CTOEIEN : 1; //!< [16] Command Timeout Error Interrupt Enable + uint32_t CCEIEN : 1; //!< [17] Command CRC Error Interrupt Enable + uint32_t CEBEIEN : 1; //!< [18] Command End Bit Error Interrupt Enable + uint32_t CIEIEN : 1; //!< [19] Command Index Error Interrupt Enable + uint32_t DTOEIEN : 1; //!< [20] Data Timeout Error Interrupt Enable + uint32_t DCEIEN : 1; //!< [21] Data CRC Error Interrupt Enable + uint32_t DEBEIEN : 1; //!< [22] Data End Bit Error Interrupt Enable + uint32_t RESERVED1 : 1; //!< [23] + uint32_t AC12EIEN : 1; //!< [24] Auto CMD12 Error Interrupt Enable + uint32_t RESERVED2 : 3; //!< [27:25] + uint32_t DMAEIEN : 1; //!< [28] DMA Error Interrupt Enable + uint32_t RESERVED3 : 3; //!< [31:29] + } B; +} hw_sdhc_irqsigen_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_IRQSIGEN register + */ +//@{ +#define HW_SDHC_IRQSIGEN_ADDR (REGS_SDHC_BASE + 0x38U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_IRQSIGEN (*(__IO hw_sdhc_irqsigen_t *) HW_SDHC_IRQSIGEN_ADDR) +#define HW_SDHC_IRQSIGEN_RD() (HW_SDHC_IRQSIGEN.U) +#define HW_SDHC_IRQSIGEN_WR(v) (HW_SDHC_IRQSIGEN.U = (v)) +#define HW_SDHC_IRQSIGEN_SET(v) (HW_SDHC_IRQSIGEN_WR(HW_SDHC_IRQSIGEN_RD() | (v))) +#define HW_SDHC_IRQSIGEN_CLR(v) (HW_SDHC_IRQSIGEN_WR(HW_SDHC_IRQSIGEN_RD() & ~(v))) +#define HW_SDHC_IRQSIGEN_TOG(v) (HW_SDHC_IRQSIGEN_WR(HW_SDHC_IRQSIGEN_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_IRQSIGEN bitfields + */ + +/*! + * @name Register SDHC_IRQSIGEN, field CCIEN[0] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_CCIEN (0U) //!< Bit position for SDHC_IRQSIGEN_CCIEN. +#define BM_SDHC_IRQSIGEN_CCIEN (0x00000001U) //!< Bit mask for SDHC_IRQSIGEN_CCIEN. +#define BS_SDHC_IRQSIGEN_CCIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_CCIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_CCIEN field. +#define BR_SDHC_IRQSIGEN_CCIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CCIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_CCIEN. +#define BF_SDHC_IRQSIGEN_CCIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_CCIEN), uint32_t) & BM_SDHC_IRQSIGEN_CCIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCIEN field to a new value. +#define BW_SDHC_IRQSIGEN_CCIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CCIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field TCIEN[1] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_TCIEN (1U) //!< Bit position for SDHC_IRQSIGEN_TCIEN. +#define BM_SDHC_IRQSIGEN_TCIEN (0x00000002U) //!< Bit mask for SDHC_IRQSIGEN_TCIEN. +#define BS_SDHC_IRQSIGEN_TCIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_TCIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_TCIEN field. +#define BR_SDHC_IRQSIGEN_TCIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_TCIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_TCIEN. +#define BF_SDHC_IRQSIGEN_TCIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_TCIEN), uint32_t) & BM_SDHC_IRQSIGEN_TCIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCIEN field to a new value. +#define BW_SDHC_IRQSIGEN_TCIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_TCIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field BGEIEN[2] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_BGEIEN (2U) //!< Bit position for SDHC_IRQSIGEN_BGEIEN. +#define BM_SDHC_IRQSIGEN_BGEIEN (0x00000004U) //!< Bit mask for SDHC_IRQSIGEN_BGEIEN. +#define BS_SDHC_IRQSIGEN_BGEIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_BGEIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_BGEIEN field. +#define BR_SDHC_IRQSIGEN_BGEIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_BGEIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_BGEIEN. +#define BF_SDHC_IRQSIGEN_BGEIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_BGEIEN), uint32_t) & BM_SDHC_IRQSIGEN_BGEIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BGEIEN field to a new value. +#define BW_SDHC_IRQSIGEN_BGEIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_BGEIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field DINTIEN[3] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_DINTIEN (3U) //!< Bit position for SDHC_IRQSIGEN_DINTIEN. +#define BM_SDHC_IRQSIGEN_DINTIEN (0x00000008U) //!< Bit mask for SDHC_IRQSIGEN_DINTIEN. +#define BS_SDHC_IRQSIGEN_DINTIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_DINTIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_DINTIEN field. +#define BR_SDHC_IRQSIGEN_DINTIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DINTIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_DINTIEN. +#define BF_SDHC_IRQSIGEN_DINTIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_DINTIEN), uint32_t) & BM_SDHC_IRQSIGEN_DINTIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DINTIEN field to a new value. +#define BW_SDHC_IRQSIGEN_DINTIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DINTIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field BWRIEN[4] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_BWRIEN (4U) //!< Bit position for SDHC_IRQSIGEN_BWRIEN. +#define BM_SDHC_IRQSIGEN_BWRIEN (0x00000010U) //!< Bit mask for SDHC_IRQSIGEN_BWRIEN. +#define BS_SDHC_IRQSIGEN_BWRIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_BWRIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_BWRIEN field. +#define BR_SDHC_IRQSIGEN_BWRIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_BWRIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_BWRIEN. +#define BF_SDHC_IRQSIGEN_BWRIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_BWRIEN), uint32_t) & BM_SDHC_IRQSIGEN_BWRIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BWRIEN field to a new value. +#define BW_SDHC_IRQSIGEN_BWRIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_BWRIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field BRRIEN[5] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_BRRIEN (5U) //!< Bit position for SDHC_IRQSIGEN_BRRIEN. +#define BM_SDHC_IRQSIGEN_BRRIEN (0x00000020U) //!< Bit mask for SDHC_IRQSIGEN_BRRIEN. +#define BS_SDHC_IRQSIGEN_BRRIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_BRRIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_BRRIEN field. +#define BR_SDHC_IRQSIGEN_BRRIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_BRRIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_BRRIEN. +#define BF_SDHC_IRQSIGEN_BRRIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_BRRIEN), uint32_t) & BM_SDHC_IRQSIGEN_BRRIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BRRIEN field to a new value. +#define BW_SDHC_IRQSIGEN_BRRIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_BRRIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field CINSIEN[6] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_CINSIEN (6U) //!< Bit position for SDHC_IRQSIGEN_CINSIEN. +#define BM_SDHC_IRQSIGEN_CINSIEN (0x00000040U) //!< Bit mask for SDHC_IRQSIGEN_CINSIEN. +#define BS_SDHC_IRQSIGEN_CINSIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_CINSIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_CINSIEN field. +#define BR_SDHC_IRQSIGEN_CINSIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CINSIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_CINSIEN. +#define BF_SDHC_IRQSIGEN_CINSIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_CINSIEN), uint32_t) & BM_SDHC_IRQSIGEN_CINSIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CINSIEN field to a new value. +#define BW_SDHC_IRQSIGEN_CINSIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CINSIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field CRMIEN[7] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_CRMIEN (7U) //!< Bit position for SDHC_IRQSIGEN_CRMIEN. +#define BM_SDHC_IRQSIGEN_CRMIEN (0x00000080U) //!< Bit mask for SDHC_IRQSIGEN_CRMIEN. +#define BS_SDHC_IRQSIGEN_CRMIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_CRMIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_CRMIEN field. +#define BR_SDHC_IRQSIGEN_CRMIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CRMIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_CRMIEN. +#define BF_SDHC_IRQSIGEN_CRMIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_CRMIEN), uint32_t) & BM_SDHC_IRQSIGEN_CRMIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRMIEN field to a new value. +#define BW_SDHC_IRQSIGEN_CRMIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CRMIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field CINTIEN[8] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_CINTIEN (8U) //!< Bit position for SDHC_IRQSIGEN_CINTIEN. +#define BM_SDHC_IRQSIGEN_CINTIEN (0x00000100U) //!< Bit mask for SDHC_IRQSIGEN_CINTIEN. +#define BS_SDHC_IRQSIGEN_CINTIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_CINTIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_CINTIEN field. +#define BR_SDHC_IRQSIGEN_CINTIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CINTIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_CINTIEN. +#define BF_SDHC_IRQSIGEN_CINTIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_CINTIEN), uint32_t) & BM_SDHC_IRQSIGEN_CINTIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CINTIEN field to a new value. +#define BW_SDHC_IRQSIGEN_CINTIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CINTIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field CTOEIEN[16] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_CTOEIEN (16U) //!< Bit position for SDHC_IRQSIGEN_CTOEIEN. +#define BM_SDHC_IRQSIGEN_CTOEIEN (0x00010000U) //!< Bit mask for SDHC_IRQSIGEN_CTOEIEN. +#define BS_SDHC_IRQSIGEN_CTOEIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_CTOEIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_CTOEIEN field. +#define BR_SDHC_IRQSIGEN_CTOEIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CTOEIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_CTOEIEN. +#define BF_SDHC_IRQSIGEN_CTOEIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_CTOEIEN), uint32_t) & BM_SDHC_IRQSIGEN_CTOEIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CTOEIEN field to a new value. +#define BW_SDHC_IRQSIGEN_CTOEIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CTOEIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field CCEIEN[17] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_CCEIEN (17U) //!< Bit position for SDHC_IRQSIGEN_CCEIEN. +#define BM_SDHC_IRQSIGEN_CCEIEN (0x00020000U) //!< Bit mask for SDHC_IRQSIGEN_CCEIEN. +#define BS_SDHC_IRQSIGEN_CCEIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_CCEIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_CCEIEN field. +#define BR_SDHC_IRQSIGEN_CCEIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CCEIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_CCEIEN. +#define BF_SDHC_IRQSIGEN_CCEIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_CCEIEN), uint32_t) & BM_SDHC_IRQSIGEN_CCEIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCEIEN field to a new value. +#define BW_SDHC_IRQSIGEN_CCEIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CCEIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field CEBEIEN[18] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_CEBEIEN (18U) //!< Bit position for SDHC_IRQSIGEN_CEBEIEN. +#define BM_SDHC_IRQSIGEN_CEBEIEN (0x00040000U) //!< Bit mask for SDHC_IRQSIGEN_CEBEIEN. +#define BS_SDHC_IRQSIGEN_CEBEIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_CEBEIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_CEBEIEN field. +#define BR_SDHC_IRQSIGEN_CEBEIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CEBEIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_CEBEIEN. +#define BF_SDHC_IRQSIGEN_CEBEIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_CEBEIEN), uint32_t) & BM_SDHC_IRQSIGEN_CEBEIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CEBEIEN field to a new value. +#define BW_SDHC_IRQSIGEN_CEBEIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CEBEIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field CIEIEN[19] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_CIEIEN (19U) //!< Bit position for SDHC_IRQSIGEN_CIEIEN. +#define BM_SDHC_IRQSIGEN_CIEIEN (0x00080000U) //!< Bit mask for SDHC_IRQSIGEN_CIEIEN. +#define BS_SDHC_IRQSIGEN_CIEIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_CIEIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_CIEIEN field. +#define BR_SDHC_IRQSIGEN_CIEIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CIEIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_CIEIEN. +#define BF_SDHC_IRQSIGEN_CIEIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_CIEIEN), uint32_t) & BM_SDHC_IRQSIGEN_CIEIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CIEIEN field to a new value. +#define BW_SDHC_IRQSIGEN_CIEIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_CIEIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field DTOEIEN[20] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_DTOEIEN (20U) //!< Bit position for SDHC_IRQSIGEN_DTOEIEN. +#define BM_SDHC_IRQSIGEN_DTOEIEN (0x00100000U) //!< Bit mask for SDHC_IRQSIGEN_DTOEIEN. +#define BS_SDHC_IRQSIGEN_DTOEIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_DTOEIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_DTOEIEN field. +#define BR_SDHC_IRQSIGEN_DTOEIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DTOEIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_DTOEIEN. +#define BF_SDHC_IRQSIGEN_DTOEIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_DTOEIEN), uint32_t) & BM_SDHC_IRQSIGEN_DTOEIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTOEIEN field to a new value. +#define BW_SDHC_IRQSIGEN_DTOEIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DTOEIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field DCEIEN[21] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_DCEIEN (21U) //!< Bit position for SDHC_IRQSIGEN_DCEIEN. +#define BM_SDHC_IRQSIGEN_DCEIEN (0x00200000U) //!< Bit mask for SDHC_IRQSIGEN_DCEIEN. +#define BS_SDHC_IRQSIGEN_DCEIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_DCEIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_DCEIEN field. +#define BR_SDHC_IRQSIGEN_DCEIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DCEIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_DCEIEN. +#define BF_SDHC_IRQSIGEN_DCEIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_DCEIEN), uint32_t) & BM_SDHC_IRQSIGEN_DCEIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DCEIEN field to a new value. +#define BW_SDHC_IRQSIGEN_DCEIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DCEIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field DEBEIEN[22] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_DEBEIEN (22U) //!< Bit position for SDHC_IRQSIGEN_DEBEIEN. +#define BM_SDHC_IRQSIGEN_DEBEIEN (0x00400000U) //!< Bit mask for SDHC_IRQSIGEN_DEBEIEN. +#define BS_SDHC_IRQSIGEN_DEBEIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_DEBEIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_DEBEIEN field. +#define BR_SDHC_IRQSIGEN_DEBEIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DEBEIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_DEBEIEN. +#define BF_SDHC_IRQSIGEN_DEBEIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_DEBEIEN), uint32_t) & BM_SDHC_IRQSIGEN_DEBEIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DEBEIEN field to a new value. +#define BW_SDHC_IRQSIGEN_DEBEIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DEBEIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field AC12EIEN[24] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_AC12EIEN (24U) //!< Bit position for SDHC_IRQSIGEN_AC12EIEN. +#define BM_SDHC_IRQSIGEN_AC12EIEN (0x01000000U) //!< Bit mask for SDHC_IRQSIGEN_AC12EIEN. +#define BS_SDHC_IRQSIGEN_AC12EIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_AC12EIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_AC12EIEN field. +#define BR_SDHC_IRQSIGEN_AC12EIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_AC12EIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_AC12EIEN. +#define BF_SDHC_IRQSIGEN_AC12EIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_AC12EIEN), uint32_t) & BM_SDHC_IRQSIGEN_AC12EIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12EIEN field to a new value. +#define BW_SDHC_IRQSIGEN_AC12EIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_AC12EIEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_IRQSIGEN, field DMAEIEN[28] (RW) + * + * Values: + * - 0 - Masked + * - 1 - Enabled + */ +//@{ +#define BP_SDHC_IRQSIGEN_DMAEIEN (28U) //!< Bit position for SDHC_IRQSIGEN_DMAEIEN. +#define BM_SDHC_IRQSIGEN_DMAEIEN (0x10000000U) //!< Bit mask for SDHC_IRQSIGEN_DMAEIEN. +#define BS_SDHC_IRQSIGEN_DMAEIEN (1U) //!< Bit field size in bits for SDHC_IRQSIGEN_DMAEIEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_IRQSIGEN_DMAEIEN field. +#define BR_SDHC_IRQSIGEN_DMAEIEN (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DMAEIEN)) +#endif + +//! @brief Format value for bitfield SDHC_IRQSIGEN_DMAEIEN. +#define BF_SDHC_IRQSIGEN_DMAEIEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_IRQSIGEN_DMAEIEN), uint32_t) & BM_SDHC_IRQSIGEN_DMAEIEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAEIEN field to a new value. +#define BW_SDHC_IRQSIGEN_DMAEIEN(v) (BITBAND_ACCESS32(HW_SDHC_IRQSIGEN_ADDR, BP_SDHC_IRQSIGEN_DMAEIEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_AC12ERR - Auto CMD12 Error Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_AC12ERR - Auto CMD12 Error Status Register (RO) + * + * Reset value: 0x00000000U + * + * When the AC12ESEN bit in the Status register is set, the host driver shall + * check this register to identify what kind of error the Auto CMD12 indicated. + * This register is valid only when the Auto CMD12 Error status bit is set. The + * following table shows the relationship between the Auto CMGD12 CRC error and the + * Auto CMD12 command timeout error. Relationship between Command CRC Error and + * Command Timeout Error For Auto CMD12 Auto CMD12 CRC error Auto CMD12 timeout + * error Type of error 0 0 No error 0 1 Response timeout error 1 0 Response CRC + * error 1 1 CMD line conflict Changes in Auto CMD12 Error Status register can be + * classified in three scenarios: When the SDHC is going to issue an Auto CMD12: Set + * bit 0 to 1 if the Auto CMD12 can't be issued due to an error in the previous + * command. Set bit 0 to 0 if the auto CMD12 is issued. At the end bit of an auto + * CMD12 response: Check errors corresponding to bits 1-4. Set bits 1-4 + * corresponding to detected errors. Clear bits 1-4 corresponding to detected errors. + * Before reading the Auto CMD12 error status bit 7: Set bit 7 to 1 if there is a + * command that can't be issued. Clear bit 7 if there is no command to issue. The + * timing for generating the auto CMD12 error and writing to the command register + * are asynchronous. After that, bit 7 shall be sampled when the driver is not + * writing to the command register. So it is suggested to read this register only + * when IRQSTAT[AC12E] is set. An Auto CMD12 error interrupt is generated when one + * of the error bits (0-4) is set to 1. The command not issued by auto CMD12 + * error does not generate an interrupt. + */ +typedef union _hw_sdhc_ac12err +{ + uint32_t U; + struct _hw_sdhc_ac12err_bitfields + { + uint32_t AC12NE : 1; //!< [0] Auto CMD12 Not Executed + uint32_t AC12TOE : 1; //!< [1] Auto CMD12 Timeout Error + uint32_t AC12EBE : 1; //!< [2] Auto CMD12 End Bit Error + uint32_t AC12CE : 1; //!< [3] Auto CMD12 CRC Error + uint32_t AC12IE : 1; //!< [4] Auto CMD12 Index Error + uint32_t RESERVED0 : 2; //!< [6:5] + uint32_t CNIBAC12E : 1; //!< [7] Command Not Issued By Auto CMD12 + //! Error + uint32_t RESERVED1 : 24; //!< [31:8] + } B; +} hw_sdhc_ac12err_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_AC12ERR register + */ +//@{ +#define HW_SDHC_AC12ERR_ADDR (REGS_SDHC_BASE + 0x3CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_AC12ERR (*(__I hw_sdhc_ac12err_t *) HW_SDHC_AC12ERR_ADDR) +#define HW_SDHC_AC12ERR_RD() (HW_SDHC_AC12ERR.U) +#endif +//@} + +/* + * Constants & macros for individual SDHC_AC12ERR bitfields + */ + +/*! + * @name Register SDHC_AC12ERR, field AC12NE[0] (RO) + * + * If memory multiple block data transfer is not started, due to a command + * error, this bit is not set because it is not necessary to issue an auto CMD12. + * Setting this bit to 1 means the SDHC cannot issue the auto CMD12 to stop a memory + * multiple block data transfer due to some error. If this bit is set to 1, other + * error status bits (1-4) have no meaning. + * + * Values: + * - 0 - Executed. + * - 1 - Not executed. + */ +//@{ +#define BP_SDHC_AC12ERR_AC12NE (0U) //!< Bit position for SDHC_AC12ERR_AC12NE. +#define BM_SDHC_AC12ERR_AC12NE (0x00000001U) //!< Bit mask for SDHC_AC12ERR_AC12NE. +#define BS_SDHC_AC12ERR_AC12NE (1U) //!< Bit field size in bits for SDHC_AC12ERR_AC12NE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_AC12ERR_AC12NE field. +#define BR_SDHC_AC12ERR_AC12NE (BITBAND_ACCESS32(HW_SDHC_AC12ERR_ADDR, BP_SDHC_AC12ERR_AC12NE)) +#endif +//@} + +/*! + * @name Register SDHC_AC12ERR, field AC12TOE[1] (RO) + * + * Occurs if no response is returned within 64 SDCLK cycles from the end bit of + * the command. If this bit is set to 1, the other error status bits (2-4) have + * no meaning. + * + * Values: + * - 0 - No error. + * - 1 - Time out. + */ +//@{ +#define BP_SDHC_AC12ERR_AC12TOE (1U) //!< Bit position for SDHC_AC12ERR_AC12TOE. +#define BM_SDHC_AC12ERR_AC12TOE (0x00000002U) //!< Bit mask for SDHC_AC12ERR_AC12TOE. +#define BS_SDHC_AC12ERR_AC12TOE (1U) //!< Bit field size in bits for SDHC_AC12ERR_AC12TOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_AC12ERR_AC12TOE field. +#define BR_SDHC_AC12ERR_AC12TOE (BITBAND_ACCESS32(HW_SDHC_AC12ERR_ADDR, BP_SDHC_AC12ERR_AC12TOE)) +#endif +//@} + +/*! + * @name Register SDHC_AC12ERR, field AC12EBE[2] (RO) + * + * Occurs when detecting that the end bit of command response is 0 which must be + * 1. + * + * Values: + * - 0 - No error. + * - 1 - End bit error generated. + */ +//@{ +#define BP_SDHC_AC12ERR_AC12EBE (2U) //!< Bit position for SDHC_AC12ERR_AC12EBE. +#define BM_SDHC_AC12ERR_AC12EBE (0x00000004U) //!< Bit mask for SDHC_AC12ERR_AC12EBE. +#define BS_SDHC_AC12ERR_AC12EBE (1U) //!< Bit field size in bits for SDHC_AC12ERR_AC12EBE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_AC12ERR_AC12EBE field. +#define BR_SDHC_AC12ERR_AC12EBE (BITBAND_ACCESS32(HW_SDHC_AC12ERR_ADDR, BP_SDHC_AC12ERR_AC12EBE)) +#endif +//@} + +/*! + * @name Register SDHC_AC12ERR, field AC12CE[3] (RO) + * + * Occurs when detecting a CRC error in the command response. + * + * Values: + * - 0 - No CRC error. + * - 1 - CRC error met in Auto CMD12 response. + */ +//@{ +#define BP_SDHC_AC12ERR_AC12CE (3U) //!< Bit position for SDHC_AC12ERR_AC12CE. +#define BM_SDHC_AC12ERR_AC12CE (0x00000008U) //!< Bit mask for SDHC_AC12ERR_AC12CE. +#define BS_SDHC_AC12ERR_AC12CE (1U) //!< Bit field size in bits for SDHC_AC12ERR_AC12CE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_AC12ERR_AC12CE field. +#define BR_SDHC_AC12ERR_AC12CE (BITBAND_ACCESS32(HW_SDHC_AC12ERR_ADDR, BP_SDHC_AC12ERR_AC12CE)) +#endif +//@} + +/*! + * @name Register SDHC_AC12ERR, field AC12IE[4] (RO) + * + * Occurs if the command index error occurs in response to a command. + * + * Values: + * - 0 - No error. + * - 1 - Error, the CMD index in response is not CMD12. + */ +//@{ +#define BP_SDHC_AC12ERR_AC12IE (4U) //!< Bit position for SDHC_AC12ERR_AC12IE. +#define BM_SDHC_AC12ERR_AC12IE (0x00000010U) //!< Bit mask for SDHC_AC12ERR_AC12IE. +#define BS_SDHC_AC12ERR_AC12IE (1U) //!< Bit field size in bits for SDHC_AC12ERR_AC12IE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_AC12ERR_AC12IE field. +#define BR_SDHC_AC12ERR_AC12IE (BITBAND_ACCESS32(HW_SDHC_AC12ERR_ADDR, BP_SDHC_AC12ERR_AC12IE)) +#endif +//@} + +/*! + * @name Register SDHC_AC12ERR, field CNIBAC12E[7] (RO) + * + * Setting this bit to 1 means CMD_wo_DAT is not executed due to an auto CMD12 + * error (D04-D01) in this register. + * + * Values: + * - 0 - No error. + * - 1 - Not issued. + */ +//@{ +#define BP_SDHC_AC12ERR_CNIBAC12E (7U) //!< Bit position for SDHC_AC12ERR_CNIBAC12E. +#define BM_SDHC_AC12ERR_CNIBAC12E (0x00000080U) //!< Bit mask for SDHC_AC12ERR_CNIBAC12E. +#define BS_SDHC_AC12ERR_CNIBAC12E (1U) //!< Bit field size in bits for SDHC_AC12ERR_CNIBAC12E. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_AC12ERR_CNIBAC12E field. +#define BR_SDHC_AC12ERR_CNIBAC12E (BITBAND_ACCESS32(HW_SDHC_AC12ERR_ADDR, BP_SDHC_AC12ERR_CNIBAC12E)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_HTCAPBLT - Host Controller Capabilities +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_HTCAPBLT - Host Controller Capabilities (RO) + * + * Reset value: 0x07F30000U + * + * This register provides the host driver with information specific to the SDHC + * implementation. The value in this register is the power-on-reset value, and + * does not change with a software reset. Any write to this register is ignored. + */ +typedef union _hw_sdhc_htcapblt +{ + uint32_t U; + struct _hw_sdhc_htcapblt_bitfields + { + uint32_t RESERVED0 : 16; //!< [15:0] + uint32_t MBL : 3; //!< [18:16] Max Block Length + uint32_t RESERVED1 : 1; //!< [19] + uint32_t ADMAS : 1; //!< [20] ADMA Support + uint32_t HSS : 1; //!< [21] High Speed Support + uint32_t DMAS : 1; //!< [22] DMA Support + uint32_t SRS : 1; //!< [23] Suspend/Resume Support + uint32_t VS33 : 1; //!< [24] Voltage Support 3.3 V + uint32_t RESERVED2 : 7; //!< [31:25] + } B; +} hw_sdhc_htcapblt_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_HTCAPBLT register + */ +//@{ +#define HW_SDHC_HTCAPBLT_ADDR (REGS_SDHC_BASE + 0x40U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_HTCAPBLT (*(__I hw_sdhc_htcapblt_t *) HW_SDHC_HTCAPBLT_ADDR) +#define HW_SDHC_HTCAPBLT_RD() (HW_SDHC_HTCAPBLT.U) +#endif +//@} + +/* + * Constants & macros for individual SDHC_HTCAPBLT bitfields + */ + +/*! + * @name Register SDHC_HTCAPBLT, field MBL[18:16] (RO) + * + * This value indicates the maximum block size that the host driver can read and + * write to the buffer in the SDHC. The buffer shall transfer block size without + * wait cycles. + * + * Values: + * - 000 - 512 bytes + * - 001 - 1024 bytes + * - 010 - 2048 bytes + * - 011 - 4096 bytes + */ +//@{ +#define BP_SDHC_HTCAPBLT_MBL (16U) //!< Bit position for SDHC_HTCAPBLT_MBL. +#define BM_SDHC_HTCAPBLT_MBL (0x00070000U) //!< Bit mask for SDHC_HTCAPBLT_MBL. +#define BS_SDHC_HTCAPBLT_MBL (3U) //!< Bit field size in bits for SDHC_HTCAPBLT_MBL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_HTCAPBLT_MBL field. +#define BR_SDHC_HTCAPBLT_MBL (HW_SDHC_HTCAPBLT.B.MBL) +#endif +//@} + +/*! + * @name Register SDHC_HTCAPBLT, field ADMAS[20] (RO) + * + * This bit indicates whether the SDHC supports the ADMA feature. + * + * Values: + * - 0 - Advanced DMA not supported. + * - 1 - Advanced DMA supported. + */ +//@{ +#define BP_SDHC_HTCAPBLT_ADMAS (20U) //!< Bit position for SDHC_HTCAPBLT_ADMAS. +#define BM_SDHC_HTCAPBLT_ADMAS (0x00100000U) //!< Bit mask for SDHC_HTCAPBLT_ADMAS. +#define BS_SDHC_HTCAPBLT_ADMAS (1U) //!< Bit field size in bits for SDHC_HTCAPBLT_ADMAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_HTCAPBLT_ADMAS field. +#define BR_SDHC_HTCAPBLT_ADMAS (BITBAND_ACCESS32(HW_SDHC_HTCAPBLT_ADDR, BP_SDHC_HTCAPBLT_ADMAS)) +#endif +//@} + +/*! + * @name Register SDHC_HTCAPBLT, field HSS[21] (RO) + * + * This bit indicates whether the SDHC supports high speed mode and the host + * system can supply a SD Clock frequency from 25 MHz to 50 MHz. + * + * Values: + * - 0 - High speed not supported. + * - 1 - High speed supported. + */ +//@{ +#define BP_SDHC_HTCAPBLT_HSS (21U) //!< Bit position for SDHC_HTCAPBLT_HSS. +#define BM_SDHC_HTCAPBLT_HSS (0x00200000U) //!< Bit mask for SDHC_HTCAPBLT_HSS. +#define BS_SDHC_HTCAPBLT_HSS (1U) //!< Bit field size in bits for SDHC_HTCAPBLT_HSS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_HTCAPBLT_HSS field. +#define BR_SDHC_HTCAPBLT_HSS (BITBAND_ACCESS32(HW_SDHC_HTCAPBLT_ADDR, BP_SDHC_HTCAPBLT_HSS)) +#endif +//@} + +/*! + * @name Register SDHC_HTCAPBLT, field DMAS[22] (RO) + * + * This bit indicates whether the SDHC is capable of using the internal DMA to + * transfer data between system memory and the data buffer directly. + * + * Values: + * - 0 - DMA not supported. + * - 1 - DMA supported. + */ +//@{ +#define BP_SDHC_HTCAPBLT_DMAS (22U) //!< Bit position for SDHC_HTCAPBLT_DMAS. +#define BM_SDHC_HTCAPBLT_DMAS (0x00400000U) //!< Bit mask for SDHC_HTCAPBLT_DMAS. +#define BS_SDHC_HTCAPBLT_DMAS (1U) //!< Bit field size in bits for SDHC_HTCAPBLT_DMAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_HTCAPBLT_DMAS field. +#define BR_SDHC_HTCAPBLT_DMAS (BITBAND_ACCESS32(HW_SDHC_HTCAPBLT_ADDR, BP_SDHC_HTCAPBLT_DMAS)) +#endif +//@} + +/*! + * @name Register SDHC_HTCAPBLT, field SRS[23] (RO) + * + * This bit indicates whether the SDHC supports suspend / resume functionality. + * If this bit is 0, the suspend and resume mechanism, as well as the read Wwait, + * are not supported, and the host driver shall not issue either suspend or + * resume commands. + * + * Values: + * - 0 - Not supported. + * - 1 - Supported. + */ +//@{ +#define BP_SDHC_HTCAPBLT_SRS (23U) //!< Bit position for SDHC_HTCAPBLT_SRS. +#define BM_SDHC_HTCAPBLT_SRS (0x00800000U) //!< Bit mask for SDHC_HTCAPBLT_SRS. +#define BS_SDHC_HTCAPBLT_SRS (1U) //!< Bit field size in bits for SDHC_HTCAPBLT_SRS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_HTCAPBLT_SRS field. +#define BR_SDHC_HTCAPBLT_SRS (BITBAND_ACCESS32(HW_SDHC_HTCAPBLT_ADDR, BP_SDHC_HTCAPBLT_SRS)) +#endif +//@} + +/*! + * @name Register SDHC_HTCAPBLT, field VS33[24] (RO) + * + * This bit shall depend on the host system ability. + * + * Values: + * - 0 - 3.3 V not supported. + * - 1 - 3.3 V supported. + */ +//@{ +#define BP_SDHC_HTCAPBLT_VS33 (24U) //!< Bit position for SDHC_HTCAPBLT_VS33. +#define BM_SDHC_HTCAPBLT_VS33 (0x01000000U) //!< Bit mask for SDHC_HTCAPBLT_VS33. +#define BS_SDHC_HTCAPBLT_VS33 (1U) //!< Bit field size in bits for SDHC_HTCAPBLT_VS33. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_HTCAPBLT_VS33 field. +#define BR_SDHC_HTCAPBLT_VS33 (BITBAND_ACCESS32(HW_SDHC_HTCAPBLT_ADDR, BP_SDHC_HTCAPBLT_VS33)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_WML - Watermark Level Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_WML - Watermark Level Register (RW) + * + * Reset value: 0x00100010U + * + * Both write and read watermark levels (FIFO threshold) are configurable. There + * value can range from 1 to 128 words. Both write and read burst lengths are + * also configurable. There value can range from 1 to 31 words. + */ +typedef union _hw_sdhc_wml +{ + uint32_t U; + struct _hw_sdhc_wml_bitfields + { + uint32_t RDWML : 8; //!< [7:0] Read Watermark Level + uint32_t RESERVED0 : 8; //!< [15:8] + uint32_t WRWML : 8; //!< [23:16] Write Watermark Level + uint32_t RESERVED1 : 8; //!< [31:24] + } B; +} hw_sdhc_wml_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_WML register + */ +//@{ +#define HW_SDHC_WML_ADDR (REGS_SDHC_BASE + 0x44U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_WML (*(__IO hw_sdhc_wml_t *) HW_SDHC_WML_ADDR) +#define HW_SDHC_WML_RD() (HW_SDHC_WML.U) +#define HW_SDHC_WML_WR(v) (HW_SDHC_WML.U = (v)) +#define HW_SDHC_WML_SET(v) (HW_SDHC_WML_WR(HW_SDHC_WML_RD() | (v))) +#define HW_SDHC_WML_CLR(v) (HW_SDHC_WML_WR(HW_SDHC_WML_RD() & ~(v))) +#define HW_SDHC_WML_TOG(v) (HW_SDHC_WML_WR(HW_SDHC_WML_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_WML bitfields + */ + +/*! + * @name Register SDHC_WML, field RDWML[7:0] (RW) + * + * The number of words used as the watermark level (FIFO threshold) in a DMA + * read operation. Also the number of words as a sequence of read bursts in + * back-to-back mode. The maximum legal value for the read water mark level is 128. + */ +//@{ +#define BP_SDHC_WML_RDWML (0U) //!< Bit position for SDHC_WML_RDWML. +#define BM_SDHC_WML_RDWML (0x000000FFU) //!< Bit mask for SDHC_WML_RDWML. +#define BS_SDHC_WML_RDWML (8U) //!< Bit field size in bits for SDHC_WML_RDWML. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_WML_RDWML field. +#define BR_SDHC_WML_RDWML (HW_SDHC_WML.B.RDWML) +#endif + +//! @brief Format value for bitfield SDHC_WML_RDWML. +#define BF_SDHC_WML_RDWML(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_WML_RDWML), uint32_t) & BM_SDHC_WML_RDWML) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RDWML field to a new value. +#define BW_SDHC_WML_RDWML(v) (HW_SDHC_WML_WR((HW_SDHC_WML_RD() & ~BM_SDHC_WML_RDWML) | BF_SDHC_WML_RDWML(v))) +#endif +//@} + +/*! + * @name Register SDHC_WML, field WRWML[23:16] (RW) + * + * The number of words used as the watermark level (FIFO threshold) in a DMA + * write operation. Also the number of words as a sequence of write bursts in + * back-to-back mode. The maximum legal value for the write watermark level is 128. + */ +//@{ +#define BP_SDHC_WML_WRWML (16U) //!< Bit position for SDHC_WML_WRWML. +#define BM_SDHC_WML_WRWML (0x00FF0000U) //!< Bit mask for SDHC_WML_WRWML. +#define BS_SDHC_WML_WRWML (8U) //!< Bit field size in bits for SDHC_WML_WRWML. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_WML_WRWML field. +#define BR_SDHC_WML_WRWML (HW_SDHC_WML.B.WRWML) +#endif + +//! @brief Format value for bitfield SDHC_WML_WRWML. +#define BF_SDHC_WML_WRWML(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_WML_WRWML), uint32_t) & BM_SDHC_WML_WRWML) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WRWML field to a new value. +#define BW_SDHC_WML_WRWML(v) (HW_SDHC_WML_WR((HW_SDHC_WML_RD() & ~BM_SDHC_WML_WRWML) | BF_SDHC_WML_WRWML(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_FEVT - Force Event register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_FEVT - Force Event register (WO) + * + * Reset value: 0x00000000U + * + * The Force Event (FEVT) register is not a physically implemented register. + * Rather, it is an address at which the Interrupt Status register can be written if + * the corresponding bit of the Interrupt Status Enable register is set. This + * register is a write only register and writing 0 to it has no effect. Writing 1 + * to this register actually sets the corresponding bit of Interrupt Status + * register. A read from this register always results in 0's. To change the + * corresponding status bits in the interrupt status register, make sure to set + * SYSCTL[IPGEN] so that bus clock is always active. Forcing a card interrupt will generate a + * short pulse on the DAT[1] line, and the driver may treat this interrupt as a + * normal interrupt. The interrupt service routine may skip polling the card + * interrupt factor as the interrupt is selfcleared. + */ +typedef union _hw_sdhc_fevt +{ + uint32_t U; + struct _hw_sdhc_fevt_bitfields + { + uint32_t AC12NE : 1; //!< [0] Force Event Auto Command 12 Not Executed + uint32_t AC12TOE : 1; //!< [1] Force Event Auto Command 12 Time Out + //! Error + uint32_t AC12CE : 1; //!< [2] Force Event Auto Command 12 CRC Error + uint32_t AC12EBE : 1; //!< [3] Force Event Auto Command 12 End Bit + //! Error + uint32_t AC12IE : 1; //!< [4] Force Event Auto Command 12 Index Error + uint32_t RESERVED0 : 2; //!< [6:5] + uint32_t CNIBAC12E : 1; //!< [7] Force Event Command Not Executed By + //! Auto Command 12 Error + uint32_t RESERVED1 : 8; //!< [15:8] + uint32_t CTOE : 1; //!< [16] Force Event Command Time Out Error + uint32_t CCE : 1; //!< [17] Force Event Command CRC Error + uint32_t CEBE : 1; //!< [18] Force Event Command End Bit Error + uint32_t CIE : 1; //!< [19] Force Event Command Index Error + uint32_t DTOE : 1; //!< [20] Force Event Data Time Out Error + uint32_t DCE : 1; //!< [21] Force Event Data CRC Error + uint32_t DEBE : 1; //!< [22] Force Event Data End Bit Error + uint32_t RESERVED2 : 1; //!< [23] + uint32_t AC12E : 1; //!< [24] Force Event Auto Command 12 Error + uint32_t RESERVED3 : 3; //!< [27:25] + uint32_t DMAE : 1; //!< [28] Force Event DMA Error + uint32_t RESERVED4 : 2; //!< [30:29] + uint32_t CINT : 1; //!< [31] Force Event Card Interrupt + } B; +} hw_sdhc_fevt_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_FEVT register + */ +//@{ +#define HW_SDHC_FEVT_ADDR (REGS_SDHC_BASE + 0x50U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_FEVT (*(__O hw_sdhc_fevt_t *) HW_SDHC_FEVT_ADDR) +#define HW_SDHC_FEVT_RD() (HW_SDHC_FEVT.U) +#define HW_SDHC_FEVT_WR(v) (HW_SDHC_FEVT.U = (v)) +#endif +//@} + +/* + * Constants & macros for individual SDHC_FEVT bitfields + */ + +/*! + * @name Register SDHC_FEVT, field AC12NE[0] (WORZ) + * + * Forces AC12ERR[AC12NE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_AC12NE (0U) //!< Bit position for SDHC_FEVT_AC12NE. +#define BM_SDHC_FEVT_AC12NE (0x00000001U) //!< Bit mask for SDHC_FEVT_AC12NE. +#define BS_SDHC_FEVT_AC12NE (1U) //!< Bit field size in bits for SDHC_FEVT_AC12NE. + +//! @brief Format value for bitfield SDHC_FEVT_AC12NE. +#define BF_SDHC_FEVT_AC12NE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_AC12NE), uint32_t) & BM_SDHC_FEVT_AC12NE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12NE field to a new value. +#define BW_SDHC_FEVT_AC12NE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_AC12NE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field AC12TOE[1] (WORZ) + * + * Forces AC12ERR[AC12TOE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_AC12TOE (1U) //!< Bit position for SDHC_FEVT_AC12TOE. +#define BM_SDHC_FEVT_AC12TOE (0x00000002U) //!< Bit mask for SDHC_FEVT_AC12TOE. +#define BS_SDHC_FEVT_AC12TOE (1U) //!< Bit field size in bits for SDHC_FEVT_AC12TOE. + +//! @brief Format value for bitfield SDHC_FEVT_AC12TOE. +#define BF_SDHC_FEVT_AC12TOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_AC12TOE), uint32_t) & BM_SDHC_FEVT_AC12TOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12TOE field to a new value. +#define BW_SDHC_FEVT_AC12TOE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_AC12TOE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field AC12CE[2] (WORZ) + * + * Forces AC12ERR[AC12CE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_AC12CE (2U) //!< Bit position for SDHC_FEVT_AC12CE. +#define BM_SDHC_FEVT_AC12CE (0x00000004U) //!< Bit mask for SDHC_FEVT_AC12CE. +#define BS_SDHC_FEVT_AC12CE (1U) //!< Bit field size in bits for SDHC_FEVT_AC12CE. + +//! @brief Format value for bitfield SDHC_FEVT_AC12CE. +#define BF_SDHC_FEVT_AC12CE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_AC12CE), uint32_t) & BM_SDHC_FEVT_AC12CE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12CE field to a new value. +#define BW_SDHC_FEVT_AC12CE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_AC12CE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field AC12EBE[3] (WORZ) + * + * Forces AC12ERR[AC12EBE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_AC12EBE (3U) //!< Bit position for SDHC_FEVT_AC12EBE. +#define BM_SDHC_FEVT_AC12EBE (0x00000008U) //!< Bit mask for SDHC_FEVT_AC12EBE. +#define BS_SDHC_FEVT_AC12EBE (1U) //!< Bit field size in bits for SDHC_FEVT_AC12EBE. + +//! @brief Format value for bitfield SDHC_FEVT_AC12EBE. +#define BF_SDHC_FEVT_AC12EBE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_AC12EBE), uint32_t) & BM_SDHC_FEVT_AC12EBE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12EBE field to a new value. +#define BW_SDHC_FEVT_AC12EBE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_AC12EBE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field AC12IE[4] (WORZ) + * + * Forces AC12ERR[AC12IE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_AC12IE (4U) //!< Bit position for SDHC_FEVT_AC12IE. +#define BM_SDHC_FEVT_AC12IE (0x00000010U) //!< Bit mask for SDHC_FEVT_AC12IE. +#define BS_SDHC_FEVT_AC12IE (1U) //!< Bit field size in bits for SDHC_FEVT_AC12IE. + +//! @brief Format value for bitfield SDHC_FEVT_AC12IE. +#define BF_SDHC_FEVT_AC12IE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_AC12IE), uint32_t) & BM_SDHC_FEVT_AC12IE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12IE field to a new value. +#define BW_SDHC_FEVT_AC12IE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_AC12IE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field CNIBAC12E[7] (WORZ) + * + * Forces AC12ERR[CNIBAC12E] to be set. + */ +//@{ +#define BP_SDHC_FEVT_CNIBAC12E (7U) //!< Bit position for SDHC_FEVT_CNIBAC12E. +#define BM_SDHC_FEVT_CNIBAC12E (0x00000080U) //!< Bit mask for SDHC_FEVT_CNIBAC12E. +#define BS_SDHC_FEVT_CNIBAC12E (1U) //!< Bit field size in bits for SDHC_FEVT_CNIBAC12E. + +//! @brief Format value for bitfield SDHC_FEVT_CNIBAC12E. +#define BF_SDHC_FEVT_CNIBAC12E(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_CNIBAC12E), uint32_t) & BM_SDHC_FEVT_CNIBAC12E) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CNIBAC12E field to a new value. +#define BW_SDHC_FEVT_CNIBAC12E(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_CNIBAC12E) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field CTOE[16] (WORZ) + * + * Forces IRQSTAT[CTOE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_CTOE (16U) //!< Bit position for SDHC_FEVT_CTOE. +#define BM_SDHC_FEVT_CTOE (0x00010000U) //!< Bit mask for SDHC_FEVT_CTOE. +#define BS_SDHC_FEVT_CTOE (1U) //!< Bit field size in bits for SDHC_FEVT_CTOE. + +//! @brief Format value for bitfield SDHC_FEVT_CTOE. +#define BF_SDHC_FEVT_CTOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_CTOE), uint32_t) & BM_SDHC_FEVT_CTOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CTOE field to a new value. +#define BW_SDHC_FEVT_CTOE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_CTOE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field CCE[17] (WORZ) + * + * Forces IRQSTAT[CCE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_CCE (17U) //!< Bit position for SDHC_FEVT_CCE. +#define BM_SDHC_FEVT_CCE (0x00020000U) //!< Bit mask for SDHC_FEVT_CCE. +#define BS_SDHC_FEVT_CCE (1U) //!< Bit field size in bits for SDHC_FEVT_CCE. + +//! @brief Format value for bitfield SDHC_FEVT_CCE. +#define BF_SDHC_FEVT_CCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_CCE), uint32_t) & BM_SDHC_FEVT_CCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CCE field to a new value. +#define BW_SDHC_FEVT_CCE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_CCE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field CEBE[18] (WORZ) + * + * Forces IRQSTAT[CEBE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_CEBE (18U) //!< Bit position for SDHC_FEVT_CEBE. +#define BM_SDHC_FEVT_CEBE (0x00040000U) //!< Bit mask for SDHC_FEVT_CEBE. +#define BS_SDHC_FEVT_CEBE (1U) //!< Bit field size in bits for SDHC_FEVT_CEBE. + +//! @brief Format value for bitfield SDHC_FEVT_CEBE. +#define BF_SDHC_FEVT_CEBE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_CEBE), uint32_t) & BM_SDHC_FEVT_CEBE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CEBE field to a new value. +#define BW_SDHC_FEVT_CEBE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_CEBE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field CIE[19] (WORZ) + * + * Forces IRQSTAT[CCE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_CIE (19U) //!< Bit position for SDHC_FEVT_CIE. +#define BM_SDHC_FEVT_CIE (0x00080000U) //!< Bit mask for SDHC_FEVT_CIE. +#define BS_SDHC_FEVT_CIE (1U) //!< Bit field size in bits for SDHC_FEVT_CIE. + +//! @brief Format value for bitfield SDHC_FEVT_CIE. +#define BF_SDHC_FEVT_CIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_CIE), uint32_t) & BM_SDHC_FEVT_CIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CIE field to a new value. +#define BW_SDHC_FEVT_CIE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_CIE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field DTOE[20] (WORZ) + * + * Forces IRQSTAT[DTOE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_DTOE (20U) //!< Bit position for SDHC_FEVT_DTOE. +#define BM_SDHC_FEVT_DTOE (0x00100000U) //!< Bit mask for SDHC_FEVT_DTOE. +#define BS_SDHC_FEVT_DTOE (1U) //!< Bit field size in bits for SDHC_FEVT_DTOE. + +//! @brief Format value for bitfield SDHC_FEVT_DTOE. +#define BF_SDHC_FEVT_DTOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_DTOE), uint32_t) & BM_SDHC_FEVT_DTOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTOE field to a new value. +#define BW_SDHC_FEVT_DTOE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_DTOE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field DCE[21] (WORZ) + * + * Forces IRQSTAT[DCE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_DCE (21U) //!< Bit position for SDHC_FEVT_DCE. +#define BM_SDHC_FEVT_DCE (0x00200000U) //!< Bit mask for SDHC_FEVT_DCE. +#define BS_SDHC_FEVT_DCE (1U) //!< Bit field size in bits for SDHC_FEVT_DCE. + +//! @brief Format value for bitfield SDHC_FEVT_DCE. +#define BF_SDHC_FEVT_DCE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_DCE), uint32_t) & BM_SDHC_FEVT_DCE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DCE field to a new value. +#define BW_SDHC_FEVT_DCE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_DCE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field DEBE[22] (WORZ) + * + * Forces IRQSTAT[DEBE] to be set. + */ +//@{ +#define BP_SDHC_FEVT_DEBE (22U) //!< Bit position for SDHC_FEVT_DEBE. +#define BM_SDHC_FEVT_DEBE (0x00400000U) //!< Bit mask for SDHC_FEVT_DEBE. +#define BS_SDHC_FEVT_DEBE (1U) //!< Bit field size in bits for SDHC_FEVT_DEBE. + +//! @brief Format value for bitfield SDHC_FEVT_DEBE. +#define BF_SDHC_FEVT_DEBE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_DEBE), uint32_t) & BM_SDHC_FEVT_DEBE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DEBE field to a new value. +#define BW_SDHC_FEVT_DEBE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_DEBE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field AC12E[24] (WORZ) + * + * Forces IRQSTAT[AC12E] to be set. + */ +//@{ +#define BP_SDHC_FEVT_AC12E (24U) //!< Bit position for SDHC_FEVT_AC12E. +#define BM_SDHC_FEVT_AC12E (0x01000000U) //!< Bit mask for SDHC_FEVT_AC12E. +#define BS_SDHC_FEVT_AC12E (1U) //!< Bit field size in bits for SDHC_FEVT_AC12E. + +//! @brief Format value for bitfield SDHC_FEVT_AC12E. +#define BF_SDHC_FEVT_AC12E(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_AC12E), uint32_t) & BM_SDHC_FEVT_AC12E) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AC12E field to a new value. +#define BW_SDHC_FEVT_AC12E(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_AC12E) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field DMAE[28] (WORZ) + * + * Forces the DMAE bit of Interrupt Status Register to be set. + */ +//@{ +#define BP_SDHC_FEVT_DMAE (28U) //!< Bit position for SDHC_FEVT_DMAE. +#define BM_SDHC_FEVT_DMAE (0x10000000U) //!< Bit mask for SDHC_FEVT_DMAE. +#define BS_SDHC_FEVT_DMAE (1U) //!< Bit field size in bits for SDHC_FEVT_DMAE. + +//! @brief Format value for bitfield SDHC_FEVT_DMAE. +#define BF_SDHC_FEVT_DMAE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_DMAE), uint32_t) & BM_SDHC_FEVT_DMAE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAE field to a new value. +#define BW_SDHC_FEVT_DMAE(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_DMAE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_FEVT, field CINT[31] (WORZ) + * + * Writing 1 to this bit generates a short low-level pulse on the internal + * DAT[1] line, as if a self-clearing interrupt was received from the external card. + * If enabled, the CINT bit will be set and the interrupt service routine may + * treat this interrupt as a normal interrupt from the external card. + */ +//@{ +#define BP_SDHC_FEVT_CINT (31U) //!< Bit position for SDHC_FEVT_CINT. +#define BM_SDHC_FEVT_CINT (0x80000000U) //!< Bit mask for SDHC_FEVT_CINT. +#define BS_SDHC_FEVT_CINT (1U) //!< Bit field size in bits for SDHC_FEVT_CINT. + +//! @brief Format value for bitfield SDHC_FEVT_CINT. +#define BF_SDHC_FEVT_CINT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_FEVT_CINT), uint32_t) & BM_SDHC_FEVT_CINT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CINT field to a new value. +#define BW_SDHC_FEVT_CINT(v) (BITBAND_ACCESS32(HW_SDHC_FEVT_ADDR, BP_SDHC_FEVT_CINT) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_ADMAES - ADMA Error Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_ADMAES - ADMA Error Status register (RO) + * + * Reset value: 0x00000000U + * + * When an ADMA error interrupt has occurred, the ADMA Error States field in + * this register holds the ADMA state and the ADMA System Address register holds the + * address around the error descriptor. For recovering from this error, the host + * driver requires the ADMA state to identify the error descriptor address as + * follows: ST_STOP: Previous location set in the ADMA System Address register is + * the error descriptor address. ST_FDS: Current location set in the ADMA System + * Address register is the error descriptor address. ST_CADR: This state is never + * set because it only increments the descriptor pointer and doesn't generate an + * ADMA error. ST_TFR: Previous location set in the ADMA System Address register + * is the error descriptor address. In case of a write operation, the host driver + * must use the ACMD22 to get the number of the written block, rather than using + * this information, because unwritten data may exist in the host controller. + * The host controller generates the ADMA error interrupt when it detects invalid + * descriptor data (valid = 0) in the ST_FDS state. The host driver can + * distinguish this error by reading the valid bit of the error descriptor. ADMA Error + * State coding D01-D00 ADMA Error State when error has occurred Contents of ADMA + * System Address register 00 ST_STOP (Stop DMA) Holds the address of the next + * executable descriptor command 01 ST_FDS (fetch descriptor) Holds the valid + * descriptor address 10 ST_CADR (change address) No ADMA error is generated 11 ST_TFR + * (Transfer Data) Holds the address of the next executable descriptor command + */ +typedef union _hw_sdhc_admaes +{ + uint32_t U; + struct _hw_sdhc_admaes_bitfields + { + uint32_t ADMAES : 2; //!< [1:0] ADMA Error State (When ADMA Error Is + //! Occurred.) + uint32_t ADMALME : 1; //!< [2] ADMA Length Mismatch Error + uint32_t ADMADCE : 1; //!< [3] ADMA Descriptor Error + uint32_t RESERVED0 : 28; //!< [31:4] + } B; +} hw_sdhc_admaes_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_ADMAES register + */ +//@{ +#define HW_SDHC_ADMAES_ADDR (REGS_SDHC_BASE + 0x54U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_ADMAES (*(__I hw_sdhc_admaes_t *) HW_SDHC_ADMAES_ADDR) +#define HW_SDHC_ADMAES_RD() (HW_SDHC_ADMAES.U) +#endif +//@} + +/* + * Constants & macros for individual SDHC_ADMAES bitfields + */ + +/*! + * @name Register SDHC_ADMAES, field ADMAES[1:0] (RO) + * + * Indicates the state of the ADMA when an error has occurred during an ADMA + * data transfer. + */ +//@{ +#define BP_SDHC_ADMAES_ADMAES (0U) //!< Bit position for SDHC_ADMAES_ADMAES. +#define BM_SDHC_ADMAES_ADMAES (0x00000003U) //!< Bit mask for SDHC_ADMAES_ADMAES. +#define BS_SDHC_ADMAES_ADMAES (2U) //!< Bit field size in bits for SDHC_ADMAES_ADMAES. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_ADMAES_ADMAES field. +#define BR_SDHC_ADMAES_ADMAES (HW_SDHC_ADMAES.B.ADMAES) +#endif +//@} + +/*! + * @name Register SDHC_ADMAES, field ADMALME[2] (RO) + * + * This error occurs in the following 2 cases: While the block count enable is + * being set, the total data length specified by the descriptor table is different + * from that specified by the block count and block length. Total data length + * can not be divided by the block length. + * + * Values: + * - 0 - No error. + * - 1 - Error. + */ +//@{ +#define BP_SDHC_ADMAES_ADMALME (2U) //!< Bit position for SDHC_ADMAES_ADMALME. +#define BM_SDHC_ADMAES_ADMALME (0x00000004U) //!< Bit mask for SDHC_ADMAES_ADMALME. +#define BS_SDHC_ADMAES_ADMALME (1U) //!< Bit field size in bits for SDHC_ADMAES_ADMALME. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_ADMAES_ADMALME field. +#define BR_SDHC_ADMAES_ADMALME (BITBAND_ACCESS32(HW_SDHC_ADMAES_ADDR, BP_SDHC_ADMAES_ADMALME)) +#endif +//@} + +/*! + * @name Register SDHC_ADMAES, field ADMADCE[3] (RO) + * + * This error occurs when an invalid descriptor is fetched by ADMA. + * + * Values: + * - 0 - No error. + * - 1 - Error. + */ +//@{ +#define BP_SDHC_ADMAES_ADMADCE (3U) //!< Bit position for SDHC_ADMAES_ADMADCE. +#define BM_SDHC_ADMAES_ADMADCE (0x00000008U) //!< Bit mask for SDHC_ADMAES_ADMADCE. +#define BS_SDHC_ADMAES_ADMADCE (1U) //!< Bit field size in bits for SDHC_ADMAES_ADMADCE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_ADMAES_ADMADCE field. +#define BR_SDHC_ADMAES_ADMADCE (BITBAND_ACCESS32(HW_SDHC_ADMAES_ADDR, BP_SDHC_ADMAES_ADMADCE)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_ADSADDR - ADMA System Addressregister +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_ADSADDR - ADMA System Addressregister (RW) + * + * Reset value: 0x00000000U + * + * This register contains the physical system memory address used for ADMA + * transfers. + */ +typedef union _hw_sdhc_adsaddr +{ + uint32_t U; + struct _hw_sdhc_adsaddr_bitfields + { + uint32_t RESERVED0 : 2; //!< [1:0] + uint32_t ADSADDR : 30; //!< [31:2] ADMA System Address + } B; +} hw_sdhc_adsaddr_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_ADSADDR register + */ +//@{ +#define HW_SDHC_ADSADDR_ADDR (REGS_SDHC_BASE + 0x58U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_ADSADDR (*(__IO hw_sdhc_adsaddr_t *) HW_SDHC_ADSADDR_ADDR) +#define HW_SDHC_ADSADDR_RD() (HW_SDHC_ADSADDR.U) +#define HW_SDHC_ADSADDR_WR(v) (HW_SDHC_ADSADDR.U = (v)) +#define HW_SDHC_ADSADDR_SET(v) (HW_SDHC_ADSADDR_WR(HW_SDHC_ADSADDR_RD() | (v))) +#define HW_SDHC_ADSADDR_CLR(v) (HW_SDHC_ADSADDR_WR(HW_SDHC_ADSADDR_RD() & ~(v))) +#define HW_SDHC_ADSADDR_TOG(v) (HW_SDHC_ADSADDR_WR(HW_SDHC_ADSADDR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_ADSADDR bitfields + */ + +/*! + * @name Register SDHC_ADSADDR, field ADSADDR[31:2] (RW) + * + * Holds the word address of the executing command in the descriptor table. At + * the start of ADMA, the host driver shall set the start address of the + * Descriptor table. The ADMA engine increments this register address whenever fetching a + * descriptor command. When the ADMA is stopped at the block gap, this register + * indicates the address of the next executable descriptor command. When the ADMA + * error interrupt is generated, this register shall hold the valid descriptor + * address depending on the ADMA state. The lower 2 bits of this register is tied + * to '0' so the ADMA address is always word-aligned. Because this register + * supports dynamic address reflecting, when TC bit is set, it automatically alters the + * value of internal address counter, so SW cannot change this register when TC + * bit is set. + */ +//@{ +#define BP_SDHC_ADSADDR_ADSADDR (2U) //!< Bit position for SDHC_ADSADDR_ADSADDR. +#define BM_SDHC_ADSADDR_ADSADDR (0xFFFFFFFCU) //!< Bit mask for SDHC_ADSADDR_ADSADDR. +#define BS_SDHC_ADSADDR_ADSADDR (30U) //!< Bit field size in bits for SDHC_ADSADDR_ADSADDR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_ADSADDR_ADSADDR field. +#define BR_SDHC_ADSADDR_ADSADDR (HW_SDHC_ADSADDR.B.ADSADDR) +#endif + +//! @brief Format value for bitfield SDHC_ADSADDR_ADSADDR. +#define BF_SDHC_ADSADDR_ADSADDR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_ADSADDR_ADSADDR), uint32_t) & BM_SDHC_ADSADDR_ADSADDR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADSADDR field to a new value. +#define BW_SDHC_ADSADDR_ADSADDR(v) (HW_SDHC_ADSADDR_WR((HW_SDHC_ADSADDR_RD() & ~BM_SDHC_ADSADDR_ADSADDR) | BF_SDHC_ADSADDR_ADSADDR(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_VENDOR - Vendor Specific register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_VENDOR - Vendor Specific register (RW) + * + * Reset value: 0x00000001U + * + * This register contains the vendor-specific control/status register. + */ +typedef union _hw_sdhc_vendor +{ + uint32_t U; + struct _hw_sdhc_vendor_bitfields + { + uint32_t EXTDMAEN : 1; //!< [0] External DMA Request Enable + uint32_t EXBLKNU : 1; //!< [1] Exact Block Number Block Read Enable + //! For SDIO CMD53 + uint32_t RESERVED0 : 14; //!< [15:2] + uint32_t INTSTVAL : 8; //!< [23:16] Internal State Value + uint32_t RESERVED1 : 8; //!< [31:24] + } B; +} hw_sdhc_vendor_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_VENDOR register + */ +//@{ +#define HW_SDHC_VENDOR_ADDR (REGS_SDHC_BASE + 0xC0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_VENDOR (*(__IO hw_sdhc_vendor_t *) HW_SDHC_VENDOR_ADDR) +#define HW_SDHC_VENDOR_RD() (HW_SDHC_VENDOR.U) +#define HW_SDHC_VENDOR_WR(v) (HW_SDHC_VENDOR.U = (v)) +#define HW_SDHC_VENDOR_SET(v) (HW_SDHC_VENDOR_WR(HW_SDHC_VENDOR_RD() | (v))) +#define HW_SDHC_VENDOR_CLR(v) (HW_SDHC_VENDOR_WR(HW_SDHC_VENDOR_RD() & ~(v))) +#define HW_SDHC_VENDOR_TOG(v) (HW_SDHC_VENDOR_WR(HW_SDHC_VENDOR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_VENDOR bitfields + */ + +/*! + * @name Register SDHC_VENDOR, field EXTDMAEN[0] (RW) + * + * Enables the request to external DMA. When the internal DMA (either simple DMA + * or advanced DMA) is not in use, and this bit is set, SDHC will send out DMA + * request when the internal buffer is ready. This bit is particularly useful when + * transferring data by CPU polling mode, and it is not allowed to send out the + * external DMA request. By default, this bit is set. + * + * Values: + * - 0 - In any scenario, SDHC does not send out the external DMA request. + * - 1 - When internal DMA is not active, the external DMA request will be sent + * out. + */ +//@{ +#define BP_SDHC_VENDOR_EXTDMAEN (0U) //!< Bit position for SDHC_VENDOR_EXTDMAEN. +#define BM_SDHC_VENDOR_EXTDMAEN (0x00000001U) //!< Bit mask for SDHC_VENDOR_EXTDMAEN. +#define BS_SDHC_VENDOR_EXTDMAEN (1U) //!< Bit field size in bits for SDHC_VENDOR_EXTDMAEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_VENDOR_EXTDMAEN field. +#define BR_SDHC_VENDOR_EXTDMAEN (BITBAND_ACCESS32(HW_SDHC_VENDOR_ADDR, BP_SDHC_VENDOR_EXTDMAEN)) +#endif + +//! @brief Format value for bitfield SDHC_VENDOR_EXTDMAEN. +#define BF_SDHC_VENDOR_EXTDMAEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_VENDOR_EXTDMAEN), uint32_t) & BM_SDHC_VENDOR_EXTDMAEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EXTDMAEN field to a new value. +#define BW_SDHC_VENDOR_EXTDMAEN(v) (BITBAND_ACCESS32(HW_SDHC_VENDOR_ADDR, BP_SDHC_VENDOR_EXTDMAEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_VENDOR, field EXBLKNU[1] (RW) + * + * This bit must be set before S/W issues CMD53 multi-block read with exact + * block number. This bit must not be set if the CMD53 multi-block read is not exact + * block number. + * + * Values: + * - 0 - None exact block read. + * - 1 - Exact block read for SDIO CMD53. + */ +//@{ +#define BP_SDHC_VENDOR_EXBLKNU (1U) //!< Bit position for SDHC_VENDOR_EXBLKNU. +#define BM_SDHC_VENDOR_EXBLKNU (0x00000002U) //!< Bit mask for SDHC_VENDOR_EXBLKNU. +#define BS_SDHC_VENDOR_EXBLKNU (1U) //!< Bit field size in bits for SDHC_VENDOR_EXBLKNU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_VENDOR_EXBLKNU field. +#define BR_SDHC_VENDOR_EXBLKNU (BITBAND_ACCESS32(HW_SDHC_VENDOR_ADDR, BP_SDHC_VENDOR_EXBLKNU)) +#endif + +//! @brief Format value for bitfield SDHC_VENDOR_EXBLKNU. +#define BF_SDHC_VENDOR_EXBLKNU(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_VENDOR_EXBLKNU), uint32_t) & BM_SDHC_VENDOR_EXBLKNU) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EXBLKNU field to a new value. +#define BW_SDHC_VENDOR_EXBLKNU(v) (BITBAND_ACCESS32(HW_SDHC_VENDOR_ADDR, BP_SDHC_VENDOR_EXBLKNU) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_VENDOR, field INTSTVAL[23:16] (RO) + * + * Internal state value, reflecting the corresponding state value selected by + * Debug Select field. This field is read-only and write to this field does not + * have effect. + */ +//@{ +#define BP_SDHC_VENDOR_INTSTVAL (16U) //!< Bit position for SDHC_VENDOR_INTSTVAL. +#define BM_SDHC_VENDOR_INTSTVAL (0x00FF0000U) //!< Bit mask for SDHC_VENDOR_INTSTVAL. +#define BS_SDHC_VENDOR_INTSTVAL (8U) //!< Bit field size in bits for SDHC_VENDOR_INTSTVAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_VENDOR_INTSTVAL field. +#define BR_SDHC_VENDOR_INTSTVAL (HW_SDHC_VENDOR.B.INTSTVAL) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_MMCBOOT - MMC Boot register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_MMCBOOT - MMC Boot register (RW) + * + * Reset value: 0x00000000U + * + * This register contains the MMC fast boot control register. + */ +typedef union _hw_sdhc_mmcboot +{ + uint32_t U; + struct _hw_sdhc_mmcboot_bitfields + { + uint32_t DTOCVACK : 4; //!< [3:0] Boot ACK Time Out Counter Value + uint32_t BOOTACK : 1; //!< [4] Boot Ack Mode Select + uint32_t BOOTMODE : 1; //!< [5] Boot Mode Select + uint32_t BOOTEN : 1; //!< [6] Boot Mode Enable + uint32_t AUTOSABGEN : 1; //!< [7] + uint32_t RESERVED0 : 8; //!< [15:8] + uint32_t BOOTBLKCNT : 16; //!< [31:16] + } B; +} hw_sdhc_mmcboot_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_MMCBOOT register + */ +//@{ +#define HW_SDHC_MMCBOOT_ADDR (REGS_SDHC_BASE + 0xC4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_MMCBOOT (*(__IO hw_sdhc_mmcboot_t *) HW_SDHC_MMCBOOT_ADDR) +#define HW_SDHC_MMCBOOT_RD() (HW_SDHC_MMCBOOT.U) +#define HW_SDHC_MMCBOOT_WR(v) (HW_SDHC_MMCBOOT.U = (v)) +#define HW_SDHC_MMCBOOT_SET(v) (HW_SDHC_MMCBOOT_WR(HW_SDHC_MMCBOOT_RD() | (v))) +#define HW_SDHC_MMCBOOT_CLR(v) (HW_SDHC_MMCBOOT_WR(HW_SDHC_MMCBOOT_RD() & ~(v))) +#define HW_SDHC_MMCBOOT_TOG(v) (HW_SDHC_MMCBOOT_WR(HW_SDHC_MMCBOOT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SDHC_MMCBOOT bitfields + */ + +/*! + * @name Register SDHC_MMCBOOT, field DTOCVACK[3:0] (RW) + * + * Values: + * - 0000 - SDCLK x 2^8 + * - 0001 - SDCLK x 2^9 + * - 0010 - SDCLK x 2^10 + * - 0011 - SDCLK x 2^11 + * - 0100 - SDCLK x 2^12 + * - 0101 - SDCLK x 2^13 + * - 0110 - SDCLK x 2^14 + * - 0111 - SDCLK x 2^15 + * - 1110 - SDCLK x 2^22 + * - 1111 - Reserved + */ +//@{ +#define BP_SDHC_MMCBOOT_DTOCVACK (0U) //!< Bit position for SDHC_MMCBOOT_DTOCVACK. +#define BM_SDHC_MMCBOOT_DTOCVACK (0x0000000FU) //!< Bit mask for SDHC_MMCBOOT_DTOCVACK. +#define BS_SDHC_MMCBOOT_DTOCVACK (4U) //!< Bit field size in bits for SDHC_MMCBOOT_DTOCVACK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_MMCBOOT_DTOCVACK field. +#define BR_SDHC_MMCBOOT_DTOCVACK (HW_SDHC_MMCBOOT.B.DTOCVACK) +#endif + +//! @brief Format value for bitfield SDHC_MMCBOOT_DTOCVACK. +#define BF_SDHC_MMCBOOT_DTOCVACK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_MMCBOOT_DTOCVACK), uint32_t) & BM_SDHC_MMCBOOT_DTOCVACK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DTOCVACK field to a new value. +#define BW_SDHC_MMCBOOT_DTOCVACK(v) (HW_SDHC_MMCBOOT_WR((HW_SDHC_MMCBOOT_RD() & ~BM_SDHC_MMCBOOT_DTOCVACK) | BF_SDHC_MMCBOOT_DTOCVACK(v))) +#endif +//@} + +/*! + * @name Register SDHC_MMCBOOT, field BOOTACK[4] (RW) + * + * Values: + * - 0 - No ack. + * - 1 - Ack. + */ +//@{ +#define BP_SDHC_MMCBOOT_BOOTACK (4U) //!< Bit position for SDHC_MMCBOOT_BOOTACK. +#define BM_SDHC_MMCBOOT_BOOTACK (0x00000010U) //!< Bit mask for SDHC_MMCBOOT_BOOTACK. +#define BS_SDHC_MMCBOOT_BOOTACK (1U) //!< Bit field size in bits for SDHC_MMCBOOT_BOOTACK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_MMCBOOT_BOOTACK field. +#define BR_SDHC_MMCBOOT_BOOTACK (BITBAND_ACCESS32(HW_SDHC_MMCBOOT_ADDR, BP_SDHC_MMCBOOT_BOOTACK)) +#endif + +//! @brief Format value for bitfield SDHC_MMCBOOT_BOOTACK. +#define BF_SDHC_MMCBOOT_BOOTACK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_MMCBOOT_BOOTACK), uint32_t) & BM_SDHC_MMCBOOT_BOOTACK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BOOTACK field to a new value. +#define BW_SDHC_MMCBOOT_BOOTACK(v) (BITBAND_ACCESS32(HW_SDHC_MMCBOOT_ADDR, BP_SDHC_MMCBOOT_BOOTACK) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_MMCBOOT, field BOOTMODE[5] (RW) + * + * Values: + * - 0 - Normal boot. + * - 1 - Alternative boot. + */ +//@{ +#define BP_SDHC_MMCBOOT_BOOTMODE (5U) //!< Bit position for SDHC_MMCBOOT_BOOTMODE. +#define BM_SDHC_MMCBOOT_BOOTMODE (0x00000020U) //!< Bit mask for SDHC_MMCBOOT_BOOTMODE. +#define BS_SDHC_MMCBOOT_BOOTMODE (1U) //!< Bit field size in bits for SDHC_MMCBOOT_BOOTMODE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_MMCBOOT_BOOTMODE field. +#define BR_SDHC_MMCBOOT_BOOTMODE (BITBAND_ACCESS32(HW_SDHC_MMCBOOT_ADDR, BP_SDHC_MMCBOOT_BOOTMODE)) +#endif + +//! @brief Format value for bitfield SDHC_MMCBOOT_BOOTMODE. +#define BF_SDHC_MMCBOOT_BOOTMODE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_MMCBOOT_BOOTMODE), uint32_t) & BM_SDHC_MMCBOOT_BOOTMODE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BOOTMODE field to a new value. +#define BW_SDHC_MMCBOOT_BOOTMODE(v) (BITBAND_ACCESS32(HW_SDHC_MMCBOOT_ADDR, BP_SDHC_MMCBOOT_BOOTMODE) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_MMCBOOT, field BOOTEN[6] (RW) + * + * Values: + * - 0 - Fast boot disable. + * - 1 - Fast boot enable. + */ +//@{ +#define BP_SDHC_MMCBOOT_BOOTEN (6U) //!< Bit position for SDHC_MMCBOOT_BOOTEN. +#define BM_SDHC_MMCBOOT_BOOTEN (0x00000040U) //!< Bit mask for SDHC_MMCBOOT_BOOTEN. +#define BS_SDHC_MMCBOOT_BOOTEN (1U) //!< Bit field size in bits for SDHC_MMCBOOT_BOOTEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_MMCBOOT_BOOTEN field. +#define BR_SDHC_MMCBOOT_BOOTEN (BITBAND_ACCESS32(HW_SDHC_MMCBOOT_ADDR, BP_SDHC_MMCBOOT_BOOTEN)) +#endif + +//! @brief Format value for bitfield SDHC_MMCBOOT_BOOTEN. +#define BF_SDHC_MMCBOOT_BOOTEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_MMCBOOT_BOOTEN), uint32_t) & BM_SDHC_MMCBOOT_BOOTEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BOOTEN field to a new value. +#define BW_SDHC_MMCBOOT_BOOTEN(v) (BITBAND_ACCESS32(HW_SDHC_MMCBOOT_ADDR, BP_SDHC_MMCBOOT_BOOTEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_MMCBOOT, field AUTOSABGEN[7] (RW) + * + * When boot, enable auto stop at block gap function. This function will be + * triggered, and host will stop at block gap when received card block cnt is equal + * to BOOTBLKCNT. + */ +//@{ +#define BP_SDHC_MMCBOOT_AUTOSABGEN (7U) //!< Bit position for SDHC_MMCBOOT_AUTOSABGEN. +#define BM_SDHC_MMCBOOT_AUTOSABGEN (0x00000080U) //!< Bit mask for SDHC_MMCBOOT_AUTOSABGEN. +#define BS_SDHC_MMCBOOT_AUTOSABGEN (1U) //!< Bit field size in bits for SDHC_MMCBOOT_AUTOSABGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_MMCBOOT_AUTOSABGEN field. +#define BR_SDHC_MMCBOOT_AUTOSABGEN (BITBAND_ACCESS32(HW_SDHC_MMCBOOT_ADDR, BP_SDHC_MMCBOOT_AUTOSABGEN)) +#endif + +//! @brief Format value for bitfield SDHC_MMCBOOT_AUTOSABGEN. +#define BF_SDHC_MMCBOOT_AUTOSABGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_MMCBOOT_AUTOSABGEN), uint32_t) & BM_SDHC_MMCBOOT_AUTOSABGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AUTOSABGEN field to a new value. +#define BW_SDHC_MMCBOOT_AUTOSABGEN(v) (BITBAND_ACCESS32(HW_SDHC_MMCBOOT_ADDR, BP_SDHC_MMCBOOT_AUTOSABGEN) = (v)) +#endif +//@} + +/*! + * @name Register SDHC_MMCBOOT, field BOOTBLKCNT[31:16] (RW) + * + * Defines the stop at block gap value of automatic mode. When received card + * block cnt is equal to BOOTBLKCNT and AUTOSABGEN is 1, then stop at block gap. + */ +//@{ +#define BP_SDHC_MMCBOOT_BOOTBLKCNT (16U) //!< Bit position for SDHC_MMCBOOT_BOOTBLKCNT. +#define BM_SDHC_MMCBOOT_BOOTBLKCNT (0xFFFF0000U) //!< Bit mask for SDHC_MMCBOOT_BOOTBLKCNT. +#define BS_SDHC_MMCBOOT_BOOTBLKCNT (16U) //!< Bit field size in bits for SDHC_MMCBOOT_BOOTBLKCNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_MMCBOOT_BOOTBLKCNT field. +#define BR_SDHC_MMCBOOT_BOOTBLKCNT (HW_SDHC_MMCBOOT.B.BOOTBLKCNT) +#endif + +//! @brief Format value for bitfield SDHC_MMCBOOT_BOOTBLKCNT. +#define BF_SDHC_MMCBOOT_BOOTBLKCNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SDHC_MMCBOOT_BOOTBLKCNT), uint32_t) & BM_SDHC_MMCBOOT_BOOTBLKCNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BOOTBLKCNT field to a new value. +#define BW_SDHC_MMCBOOT_BOOTBLKCNT(v) (HW_SDHC_MMCBOOT_WR((HW_SDHC_MMCBOOT_RD() & ~BM_SDHC_MMCBOOT_BOOTBLKCNT) | BF_SDHC_MMCBOOT_BOOTBLKCNT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SDHC_HOSTVER - Host Controller Version +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SDHC_HOSTVER - Host Controller Version (RO) + * + * Reset value: 0x00001201U + * + * This register contains the vendor host controller version information. All + * bits are read only and will read the same as the power-reset value. + */ +typedef union _hw_sdhc_hostver +{ + uint32_t U; + struct _hw_sdhc_hostver_bitfields + { + uint32_t SVN : 8; //!< [7:0] Specification Version Number + uint32_t VVN : 8; //!< [15:8] Vendor Version Number + uint32_t RESERVED0 : 16; //!< [31:16] + } B; +} hw_sdhc_hostver_t; +#endif + +/*! + * @name Constants and macros for entire SDHC_HOSTVER register + */ +//@{ +#define HW_SDHC_HOSTVER_ADDR (REGS_SDHC_BASE + 0xFCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SDHC_HOSTVER (*(__I hw_sdhc_hostver_t *) HW_SDHC_HOSTVER_ADDR) +#define HW_SDHC_HOSTVER_RD() (HW_SDHC_HOSTVER.U) +#endif +//@} + +/* + * Constants & macros for individual SDHC_HOSTVER bitfields + */ + +/*! + * @name Register SDHC_HOSTVER, field SVN[7:0] (RO) + * + * These status bits indicate the host controller specification version. + * + * Values: + * - 1 - SD host specification version 2.0, supports test event register and + * ADMA. + */ +//@{ +#define BP_SDHC_HOSTVER_SVN (0U) //!< Bit position for SDHC_HOSTVER_SVN. +#define BM_SDHC_HOSTVER_SVN (0x000000FFU) //!< Bit mask for SDHC_HOSTVER_SVN. +#define BS_SDHC_HOSTVER_SVN (8U) //!< Bit field size in bits for SDHC_HOSTVER_SVN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_HOSTVER_SVN field. +#define BR_SDHC_HOSTVER_SVN (HW_SDHC_HOSTVER.B.SVN) +#endif +//@} + +/*! + * @name Register SDHC_HOSTVER, field VVN[15:8] (RO) + * + * These status bits are reserved for the vendor version number. The host driver + * shall not use this status. + * + * Values: + * - 0 - Freescale SDHC version 1.0 + * - 10000 - Freescale SDHC version 2.0 + * - 10001 - Freescale SDHC version 2.1 + * - 10010 - Freescale SDHC version 2.2 + */ +//@{ +#define BP_SDHC_HOSTVER_VVN (8U) //!< Bit position for SDHC_HOSTVER_VVN. +#define BM_SDHC_HOSTVER_VVN (0x0000FF00U) //!< Bit mask for SDHC_HOSTVER_VVN. +#define BS_SDHC_HOSTVER_VVN (8U) //!< Bit field size in bits for SDHC_HOSTVER_VVN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SDHC_HOSTVER_VVN field. +#define BR_SDHC_HOSTVER_VVN (HW_SDHC_HOSTVER.B.VVN) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_sdhc_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All SDHC module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_sdhc +{ + __IO hw_sdhc_dsaddr_t DSADDR; //!< [0x0] DMA System Address register + __IO hw_sdhc_blkattr_t BLKATTR; //!< [0x4] Block Attributes register + __IO hw_sdhc_cmdarg_t CMDARG; //!< [0x8] Command Argument register + __IO hw_sdhc_xfertyp_t XFERTYP; //!< [0xC] Transfer Type register + __I hw_sdhc_cmdrsp0_t CMDRSP0; //!< [0x10] Command Response 0 + __I hw_sdhc_cmdrsp1_t CMDRSP1; //!< [0x14] Command Response 1 + __I hw_sdhc_cmdrsp2_t CMDRSP2; //!< [0x18] Command Response 2 + __I hw_sdhc_cmdrsp3_t CMDRSP3; //!< [0x1C] Command Response 3 + __IO hw_sdhc_datport_t DATPORT; //!< [0x20] Buffer Data Port register + __I hw_sdhc_prsstat_t PRSSTAT; //!< [0x24] Present State register + __IO hw_sdhc_proctl_t PROCTL; //!< [0x28] Protocol Control register + __IO hw_sdhc_sysctl_t SYSCTL; //!< [0x2C] System Control register + __IO hw_sdhc_irqstat_t IRQSTAT; //!< [0x30] Interrupt Status register + __IO hw_sdhc_irqstaten_t IRQSTATEN; //!< [0x34] Interrupt Status Enable register + __IO hw_sdhc_irqsigen_t IRQSIGEN; //!< [0x38] Interrupt Signal Enable register + __I hw_sdhc_ac12err_t AC12ERR; //!< [0x3C] Auto CMD12 Error Status Register + __I hw_sdhc_htcapblt_t HTCAPBLT; //!< [0x40] Host Controller Capabilities + __IO hw_sdhc_wml_t WML; //!< [0x44] Watermark Level Register + uint8_t _reserved0[8]; + __O hw_sdhc_fevt_t FEVT; //!< [0x50] Force Event register + __I hw_sdhc_admaes_t ADMAES; //!< [0x54] ADMA Error Status register + __IO hw_sdhc_adsaddr_t ADSADDR; //!< [0x58] ADMA System Addressregister + uint8_t _reserved1[100]; + __IO hw_sdhc_vendor_t VENDOR; //!< [0xC0] Vendor Specific register + __IO hw_sdhc_mmcboot_t MMCBOOT; //!< [0xC4] MMC Boot register + uint8_t _reserved2[52]; + __I hw_sdhc_hostver_t HOSTVER; //!< [0xFC] Host Controller Version +} hw_sdhc_t; +#pragma pack() + +//! @brief Macro to access all SDHC registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_SDHC</code>. +#define HW_SDHC (*(hw_sdhc_t *) REGS_SDHC_BASE) +#endif + +#endif // __HW_SDHC_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_sim.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,4553 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_SIM_REGISTERS_H__ +#define __HW_SIM_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 SIM + * + * System Integration Module + * + * Registers defined in this header file: + * - HW_SIM_SOPT1 - System Options Register 1 + * - HW_SIM_SOPT1CFG - SOPT1 Configuration Register + * - HW_SIM_SOPT2 - System Options Register 2 + * - HW_SIM_SOPT4 - System Options Register 4 + * - HW_SIM_SOPT5 - System Options Register 5 + * - HW_SIM_SOPT7 - System Options Register 7 + * - HW_SIM_SDID - System Device Identification Register + * - HW_SIM_SCGC1 - System Clock Gating Control Register 1 + * - HW_SIM_SCGC2 - System Clock Gating Control Register 2 + * - HW_SIM_SCGC3 - System Clock Gating Control Register 3 + * - HW_SIM_SCGC4 - System Clock Gating Control Register 4 + * - HW_SIM_SCGC5 - System Clock Gating Control Register 5 + * - HW_SIM_SCGC6 - System Clock Gating Control Register 6 + * - HW_SIM_SCGC7 - System Clock Gating Control Register 7 + * - HW_SIM_CLKDIV1 - System Clock Divider Register 1 + * - HW_SIM_CLKDIV2 - System Clock Divider Register 2 + * - HW_SIM_FCFG1 - Flash Configuration Register 1 + * - HW_SIM_FCFG2 - Flash Configuration Register 2 + * - HW_SIM_UIDH - Unique Identification Register High + * - HW_SIM_UIDMH - Unique Identification Register Mid-High + * - HW_SIM_UIDML - Unique Identification Register Mid Low + * - HW_SIM_UIDL - Unique Identification Register Low + * + * - hw_sim_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_SIM_BASE +#define HW_SIM_INSTANCE_COUNT (1U) //!< Number of instances of the SIM module. +#define REGS_SIM_BASE (0x40047000U) //!< Base address for SIM. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SOPT1 - System Options Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SOPT1 - System Options Register 1 (RW) + * + * Reset value: 0x80000000U + * + * The SOPT1 register is only reset on POR or LVD. + */ +typedef union _hw_sim_sopt1 +{ + uint32_t U; + struct _hw_sim_sopt1_bitfields + { + uint32_t RESERVED0 : 12; //!< [11:0] + uint32_t RAMSIZE : 4; //!< [15:12] RAM size + uint32_t RESERVED1 : 2; //!< [17:16] + uint32_t OSC32KSEL : 2; //!< [19:18] 32K oscillator clock select + uint32_t RESERVED2 : 9; //!< [28:20] + uint32_t USBVSTBY : 1; //!< [29] USB voltage regulator in standby + //! mode during VLPR and VLPW modes + uint32_t USBSSTBY : 1; //!< [30] USB voltage regulator in standby + //! mode during Stop, VLPS, LLS and VLLS modes. + uint32_t USBREGEN : 1; //!< [31] USB voltage regulator enable + } B; +} hw_sim_sopt1_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SOPT1 register + */ +//@{ +#define HW_SIM_SOPT1_ADDR (REGS_SIM_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SOPT1 (*(__IO hw_sim_sopt1_t *) HW_SIM_SOPT1_ADDR) +#define HW_SIM_SOPT1_RD() (HW_SIM_SOPT1.U) +#define HW_SIM_SOPT1_WR(v) (HW_SIM_SOPT1.U = (v)) +#define HW_SIM_SOPT1_SET(v) (HW_SIM_SOPT1_WR(HW_SIM_SOPT1_RD() | (v))) +#define HW_SIM_SOPT1_CLR(v) (HW_SIM_SOPT1_WR(HW_SIM_SOPT1_RD() & ~(v))) +#define HW_SIM_SOPT1_TOG(v) (HW_SIM_SOPT1_WR(HW_SIM_SOPT1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SOPT1 bitfields + */ + +/*! + * @name Register SIM_SOPT1, field RAMSIZE[15:12] (RO) + * + * This field specifies the amount of system RAM available on the device. + * + * Values: + * - 0001 - 8 KB + * - 0011 - 16 KB + * - 0100 - 24 KB + * - 0101 - 32 KB + * - 0110 - 48 KB + * - 0111 - 64 KB + * - 1000 - 96 KB + * - 1001 - 128 KB + * - 1011 - 256 KB + */ +//@{ +#define BP_SIM_SOPT1_RAMSIZE (12U) //!< Bit position for SIM_SOPT1_RAMSIZE. +#define BM_SIM_SOPT1_RAMSIZE (0x0000F000U) //!< Bit mask for SIM_SOPT1_RAMSIZE. +#define BS_SIM_SOPT1_RAMSIZE (4U) //!< Bit field size in bits for SIM_SOPT1_RAMSIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT1_RAMSIZE field. +#define BR_SIM_SOPT1_RAMSIZE (HW_SIM_SOPT1.B.RAMSIZE) +#endif +//@} + +/*! + * @name Register SIM_SOPT1, field OSC32KSEL[19:18] (RW) + * + * Selects the 32 kHz clock source (ERCLK32K) for LPTMR. This field is reset + * only on POR/LVD. + * + * Values: + * - 00 - System oscillator (OSC32KCLK) + * - 01 - Reserved + * - 10 - RTC 32.768kHz oscillator + * - 11 - LPO 1 kHz + */ +//@{ +#define BP_SIM_SOPT1_OSC32KSEL (18U) //!< Bit position for SIM_SOPT1_OSC32KSEL. +#define BM_SIM_SOPT1_OSC32KSEL (0x000C0000U) //!< Bit mask for SIM_SOPT1_OSC32KSEL. +#define BS_SIM_SOPT1_OSC32KSEL (2U) //!< Bit field size in bits for SIM_SOPT1_OSC32KSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT1_OSC32KSEL field. +#define BR_SIM_SOPT1_OSC32KSEL (HW_SIM_SOPT1.B.OSC32KSEL) +#endif + +//! @brief Format value for bitfield SIM_SOPT1_OSC32KSEL. +#define BF_SIM_SOPT1_OSC32KSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT1_OSC32KSEL), uint32_t) & BM_SIM_SOPT1_OSC32KSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OSC32KSEL field to a new value. +#define BW_SIM_SOPT1_OSC32KSEL(v) (HW_SIM_SOPT1_WR((HW_SIM_SOPT1_RD() & ~BM_SIM_SOPT1_OSC32KSEL) | BF_SIM_SOPT1_OSC32KSEL(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT1, field USBVSTBY[29] (RW) + * + * Controls whether the USB voltage regulator is placed in standby mode during + * VLPR and VLPW modes. + * + * Values: + * - 0 - USB voltage regulator not in standby during VLPR and VLPW modes. + * - 1 - USB voltage regulator in standby during VLPR and VLPW modes. + */ +//@{ +#define BP_SIM_SOPT1_USBVSTBY (29U) //!< Bit position for SIM_SOPT1_USBVSTBY. +#define BM_SIM_SOPT1_USBVSTBY (0x20000000U) //!< Bit mask for SIM_SOPT1_USBVSTBY. +#define BS_SIM_SOPT1_USBVSTBY (1U) //!< Bit field size in bits for SIM_SOPT1_USBVSTBY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT1_USBVSTBY field. +#define BR_SIM_SOPT1_USBVSTBY (BITBAND_ACCESS32(HW_SIM_SOPT1_ADDR, BP_SIM_SOPT1_USBVSTBY)) +#endif + +//! @brief Format value for bitfield SIM_SOPT1_USBVSTBY. +#define BF_SIM_SOPT1_USBVSTBY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT1_USBVSTBY), uint32_t) & BM_SIM_SOPT1_USBVSTBY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBVSTBY field to a new value. +#define BW_SIM_SOPT1_USBVSTBY(v) (BITBAND_ACCESS32(HW_SIM_SOPT1_ADDR, BP_SIM_SOPT1_USBVSTBY) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT1, field USBSSTBY[30] (RW) + * + * Controls whether the USB voltage regulator is placed in standby mode during + * Stop, VLPS, LLS and VLLS modes. + * + * Values: + * - 0 - USB voltage regulator not in standby during Stop, VLPS, LLS and VLLS + * modes. + * - 1 - USB voltage regulator in standby during Stop, VLPS, LLS and VLLS modes. + */ +//@{ +#define BP_SIM_SOPT1_USBSSTBY (30U) //!< Bit position for SIM_SOPT1_USBSSTBY. +#define BM_SIM_SOPT1_USBSSTBY (0x40000000U) //!< Bit mask for SIM_SOPT1_USBSSTBY. +#define BS_SIM_SOPT1_USBSSTBY (1U) //!< Bit field size in bits for SIM_SOPT1_USBSSTBY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT1_USBSSTBY field. +#define BR_SIM_SOPT1_USBSSTBY (BITBAND_ACCESS32(HW_SIM_SOPT1_ADDR, BP_SIM_SOPT1_USBSSTBY)) +#endif + +//! @brief Format value for bitfield SIM_SOPT1_USBSSTBY. +#define BF_SIM_SOPT1_USBSSTBY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT1_USBSSTBY), uint32_t) & BM_SIM_SOPT1_USBSSTBY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBSSTBY field to a new value. +#define BW_SIM_SOPT1_USBSSTBY(v) (BITBAND_ACCESS32(HW_SIM_SOPT1_ADDR, BP_SIM_SOPT1_USBSSTBY) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT1, field USBREGEN[31] (RW) + * + * Controls whether the USB voltage regulator is enabled. + * + * Values: + * - 0 - USB voltage regulator is disabled. + * - 1 - USB voltage regulator is enabled. + */ +//@{ +#define BP_SIM_SOPT1_USBREGEN (31U) //!< Bit position for SIM_SOPT1_USBREGEN. +#define BM_SIM_SOPT1_USBREGEN (0x80000000U) //!< Bit mask for SIM_SOPT1_USBREGEN. +#define BS_SIM_SOPT1_USBREGEN (1U) //!< Bit field size in bits for SIM_SOPT1_USBREGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT1_USBREGEN field. +#define BR_SIM_SOPT1_USBREGEN (BITBAND_ACCESS32(HW_SIM_SOPT1_ADDR, BP_SIM_SOPT1_USBREGEN)) +#endif + +//! @brief Format value for bitfield SIM_SOPT1_USBREGEN. +#define BF_SIM_SOPT1_USBREGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT1_USBREGEN), uint32_t) & BM_SIM_SOPT1_USBREGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBREGEN field to a new value. +#define BW_SIM_SOPT1_USBREGEN(v) (BITBAND_ACCESS32(HW_SIM_SOPT1_ADDR, BP_SIM_SOPT1_USBREGEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SOPT1CFG - SOPT1 Configuration Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SOPT1CFG - SOPT1 Configuration Register (RW) + * + * Reset value: 0x00000000U + * + * The SOPT1CFG register is reset on System Reset not VLLS. + */ +typedef union _hw_sim_sopt1cfg +{ + uint32_t U; + struct _hw_sim_sopt1cfg_bitfields + { + uint32_t RESERVED0 : 24; //!< [23:0] + uint32_t URWE : 1; //!< [24] USB voltage regulator enable write enable + uint32_t UVSWE : 1; //!< [25] USB voltage regulator VLP standby write + //! enable + uint32_t USSWE : 1; //!< [26] USB voltage regulator stop standby + //! write enable + uint32_t RESERVED1 : 5; //!< [31:27] + } B; +} hw_sim_sopt1cfg_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SOPT1CFG register + */ +//@{ +#define HW_SIM_SOPT1CFG_ADDR (REGS_SIM_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SOPT1CFG (*(__IO hw_sim_sopt1cfg_t *) HW_SIM_SOPT1CFG_ADDR) +#define HW_SIM_SOPT1CFG_RD() (HW_SIM_SOPT1CFG.U) +#define HW_SIM_SOPT1CFG_WR(v) (HW_SIM_SOPT1CFG.U = (v)) +#define HW_SIM_SOPT1CFG_SET(v) (HW_SIM_SOPT1CFG_WR(HW_SIM_SOPT1CFG_RD() | (v))) +#define HW_SIM_SOPT1CFG_CLR(v) (HW_SIM_SOPT1CFG_WR(HW_SIM_SOPT1CFG_RD() & ~(v))) +#define HW_SIM_SOPT1CFG_TOG(v) (HW_SIM_SOPT1CFG_WR(HW_SIM_SOPT1CFG_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SOPT1CFG bitfields + */ + +/*! + * @name Register SIM_SOPT1CFG, field URWE[24] (RW) + * + * Writing one to the URWE bit allows the SOPT1 USBREGEN bit to be written. This + * register bit clears after a write to USBREGEN. + * + * Values: + * - 0 - SOPT1 USBREGEN cannot be written. + * - 1 - SOPT1 USBREGEN can be written. + */ +//@{ +#define BP_SIM_SOPT1CFG_URWE (24U) //!< Bit position for SIM_SOPT1CFG_URWE. +#define BM_SIM_SOPT1CFG_URWE (0x01000000U) //!< Bit mask for SIM_SOPT1CFG_URWE. +#define BS_SIM_SOPT1CFG_URWE (1U) //!< Bit field size in bits for SIM_SOPT1CFG_URWE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT1CFG_URWE field. +#define BR_SIM_SOPT1CFG_URWE (BITBAND_ACCESS32(HW_SIM_SOPT1CFG_ADDR, BP_SIM_SOPT1CFG_URWE)) +#endif + +//! @brief Format value for bitfield SIM_SOPT1CFG_URWE. +#define BF_SIM_SOPT1CFG_URWE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT1CFG_URWE), uint32_t) & BM_SIM_SOPT1CFG_URWE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the URWE field to a new value. +#define BW_SIM_SOPT1CFG_URWE(v) (BITBAND_ACCESS32(HW_SIM_SOPT1CFG_ADDR, BP_SIM_SOPT1CFG_URWE) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT1CFG, field UVSWE[25] (RW) + * + * Writing one to the UVSWE bit allows the SOPT1 USBVSTBY bit to be written. + * This register bit clears after a write to USBVSTBY. + * + * Values: + * - 0 - SOPT1 USBVSTBY cannot be written. + * - 1 - SOPT1 USBVSTBY can be written. + */ +//@{ +#define BP_SIM_SOPT1CFG_UVSWE (25U) //!< Bit position for SIM_SOPT1CFG_UVSWE. +#define BM_SIM_SOPT1CFG_UVSWE (0x02000000U) //!< Bit mask for SIM_SOPT1CFG_UVSWE. +#define BS_SIM_SOPT1CFG_UVSWE (1U) //!< Bit field size in bits for SIM_SOPT1CFG_UVSWE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT1CFG_UVSWE field. +#define BR_SIM_SOPT1CFG_UVSWE (BITBAND_ACCESS32(HW_SIM_SOPT1CFG_ADDR, BP_SIM_SOPT1CFG_UVSWE)) +#endif + +//! @brief Format value for bitfield SIM_SOPT1CFG_UVSWE. +#define BF_SIM_SOPT1CFG_UVSWE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT1CFG_UVSWE), uint32_t) & BM_SIM_SOPT1CFG_UVSWE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UVSWE field to a new value. +#define BW_SIM_SOPT1CFG_UVSWE(v) (BITBAND_ACCESS32(HW_SIM_SOPT1CFG_ADDR, BP_SIM_SOPT1CFG_UVSWE) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT1CFG, field USSWE[26] (RW) + * + * Writing one to the USSWE bit allows the SOPT1 USBSSTBY bit to be written. + * This register bit clears after a write to USBSSTBY. + * + * Values: + * - 0 - SOPT1 USBSSTBY cannot be written. + * - 1 - SOPT1 USBSSTBY can be written. + */ +//@{ +#define BP_SIM_SOPT1CFG_USSWE (26U) //!< Bit position for SIM_SOPT1CFG_USSWE. +#define BM_SIM_SOPT1CFG_USSWE (0x04000000U) //!< Bit mask for SIM_SOPT1CFG_USSWE. +#define BS_SIM_SOPT1CFG_USSWE (1U) //!< Bit field size in bits for SIM_SOPT1CFG_USSWE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT1CFG_USSWE field. +#define BR_SIM_SOPT1CFG_USSWE (BITBAND_ACCESS32(HW_SIM_SOPT1CFG_ADDR, BP_SIM_SOPT1CFG_USSWE)) +#endif + +//! @brief Format value for bitfield SIM_SOPT1CFG_USSWE. +#define BF_SIM_SOPT1CFG_USSWE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT1CFG_USSWE), uint32_t) & BM_SIM_SOPT1CFG_USSWE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USSWE field to a new value. +#define BW_SIM_SOPT1CFG_USSWE(v) (BITBAND_ACCESS32(HW_SIM_SOPT1CFG_ADDR, BP_SIM_SOPT1CFG_USSWE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SOPT2 - System Options Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SOPT2 - System Options Register 2 (RW) + * + * Reset value: 0x00001000U + * + * SOPT2 contains the controls for selecting many of the module clock source + * options on this device. See the Clock Distribution chapter for more information + * including clocking diagrams and definitions of device clocks. + */ +typedef union _hw_sim_sopt2 +{ + uint32_t U; + struct _hw_sim_sopt2_bitfields + { + uint32_t RESERVED0 : 4; //!< [3:0] + uint32_t RTCCLKOUTSEL : 1; //!< [4] RTC clock out select + uint32_t CLKOUTSEL : 3; //!< [7:5] CLKOUT select + uint32_t FBSL : 2; //!< [9:8] FlexBus security level + uint32_t RESERVED1 : 1; //!< [10] + uint32_t PTD7PAD : 1; //!< [11] PTD7 pad drive strength + uint32_t TRACECLKSEL : 1; //!< [12] Debug trace clock select + uint32_t RESERVED2 : 3; //!< [15:13] + uint32_t PLLFLLSEL : 2; //!< [17:16] PLL/FLL clock select + uint32_t USBSRC : 1; //!< [18] USB clock source select + uint32_t RMIISRC : 1; //!< [19] RMII clock source select + uint32_t TIMESRC : 2; //!< [21:20] IEEE 1588 timestamp clock source + //! select + uint32_t RESERVED3 : 6; //!< [27:22] + uint32_t SDHCSRC : 2; //!< [29:28] SDHC clock source select + uint32_t RESERVED4 : 2; //!< [31:30] + } B; +} hw_sim_sopt2_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SOPT2 register + */ +//@{ +#define HW_SIM_SOPT2_ADDR (REGS_SIM_BASE + 0x1004U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SOPT2 (*(__IO hw_sim_sopt2_t *) HW_SIM_SOPT2_ADDR) +#define HW_SIM_SOPT2_RD() (HW_SIM_SOPT2.U) +#define HW_SIM_SOPT2_WR(v) (HW_SIM_SOPT2.U = (v)) +#define HW_SIM_SOPT2_SET(v) (HW_SIM_SOPT2_WR(HW_SIM_SOPT2_RD() | (v))) +#define HW_SIM_SOPT2_CLR(v) (HW_SIM_SOPT2_WR(HW_SIM_SOPT2_RD() & ~(v))) +#define HW_SIM_SOPT2_TOG(v) (HW_SIM_SOPT2_WR(HW_SIM_SOPT2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SOPT2 bitfields + */ + +/*! + * @name Register SIM_SOPT2, field RTCCLKOUTSEL[4] (RW) + * + * Selects either the RTC 1 Hz clock or the 32.768kHz clock to be output on the + * RTC_CLKOUT pin. + * + * Values: + * - 0 - RTC 1 Hz clock is output on the RTC_CLKOUT pin. + * - 1 - RTC 32.768kHz clock is output on the RTC_CLKOUT pin. + */ +//@{ +#define BP_SIM_SOPT2_RTCCLKOUTSEL (4U) //!< Bit position for SIM_SOPT2_RTCCLKOUTSEL. +#define BM_SIM_SOPT2_RTCCLKOUTSEL (0x00000010U) //!< Bit mask for SIM_SOPT2_RTCCLKOUTSEL. +#define BS_SIM_SOPT2_RTCCLKOUTSEL (1U) //!< Bit field size in bits for SIM_SOPT2_RTCCLKOUTSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_RTCCLKOUTSEL field. +#define BR_SIM_SOPT2_RTCCLKOUTSEL (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_RTCCLKOUTSEL)) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_RTCCLKOUTSEL. +#define BF_SIM_SOPT2_RTCCLKOUTSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_RTCCLKOUTSEL), uint32_t) & BM_SIM_SOPT2_RTCCLKOUTSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RTCCLKOUTSEL field to a new value. +#define BW_SIM_SOPT2_RTCCLKOUTSEL(v) (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_RTCCLKOUTSEL) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT2, field CLKOUTSEL[7:5] (RW) + * + * Selects the clock to output on the CLKOUT pin. + * + * Values: + * - 000 - FlexBus CLKOUT + * - 001 - Reserved + * - 010 - Flash clock + * - 011 - LPO clock (1 kHz) + * - 100 - MCGIRCLK + * - 101 - RTC 32.768kHz clock + * - 110 - OSCERCLK0 + * - 111 - IRC 48 MHz clock + */ +//@{ +#define BP_SIM_SOPT2_CLKOUTSEL (5U) //!< Bit position for SIM_SOPT2_CLKOUTSEL. +#define BM_SIM_SOPT2_CLKOUTSEL (0x000000E0U) //!< Bit mask for SIM_SOPT2_CLKOUTSEL. +#define BS_SIM_SOPT2_CLKOUTSEL (3U) //!< Bit field size in bits for SIM_SOPT2_CLKOUTSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_CLKOUTSEL field. +#define BR_SIM_SOPT2_CLKOUTSEL (HW_SIM_SOPT2.B.CLKOUTSEL) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_CLKOUTSEL. +#define BF_SIM_SOPT2_CLKOUTSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_CLKOUTSEL), uint32_t) & BM_SIM_SOPT2_CLKOUTSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLKOUTSEL field to a new value. +#define BW_SIM_SOPT2_CLKOUTSEL(v) (HW_SIM_SOPT2_WR((HW_SIM_SOPT2_RD() & ~BM_SIM_SOPT2_CLKOUTSEL) | BF_SIM_SOPT2_CLKOUTSEL(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT2, field FBSL[9:8] (RW) + * + * If flash security is enabled, then this field affects what CPU operations can + * access off-chip via the FlexBus interface. This field has no effect if flash + * security is not enabled. + * + * Values: + * - 00 - All off-chip accesses (instruction and data) via the FlexBus are + * disallowed. + * - 01 - All off-chip accesses (instruction and data) via the FlexBus are + * disallowed. + * - 10 - Off-chip instruction accesses are disallowed. Data accesses are + * allowed. + * - 11 - Off-chip instruction accesses and data accesses are allowed. + */ +//@{ +#define BP_SIM_SOPT2_FBSL (8U) //!< Bit position for SIM_SOPT2_FBSL. +#define BM_SIM_SOPT2_FBSL (0x00000300U) //!< Bit mask for SIM_SOPT2_FBSL. +#define BS_SIM_SOPT2_FBSL (2U) //!< Bit field size in bits for SIM_SOPT2_FBSL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_FBSL field. +#define BR_SIM_SOPT2_FBSL (HW_SIM_SOPT2.B.FBSL) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_FBSL. +#define BF_SIM_SOPT2_FBSL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_FBSL), uint32_t) & BM_SIM_SOPT2_FBSL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FBSL field to a new value. +#define BW_SIM_SOPT2_FBSL(v) (HW_SIM_SOPT2_WR((HW_SIM_SOPT2_RD() & ~BM_SIM_SOPT2_FBSL) | BF_SIM_SOPT2_FBSL(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT2, field PTD7PAD[11] (RW) + * + * Controls the output drive strength of the PTD7 pin by selecting either one or + * two pads to drive it. + * + * Values: + * - 0 - Single-pad drive strength for PTD7. + * - 1 - Double pad drive strength for PTD7. + */ +//@{ +#define BP_SIM_SOPT2_PTD7PAD (11U) //!< Bit position for SIM_SOPT2_PTD7PAD. +#define BM_SIM_SOPT2_PTD7PAD (0x00000800U) //!< Bit mask for SIM_SOPT2_PTD7PAD. +#define BS_SIM_SOPT2_PTD7PAD (1U) //!< Bit field size in bits for SIM_SOPT2_PTD7PAD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_PTD7PAD field. +#define BR_SIM_SOPT2_PTD7PAD (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_PTD7PAD)) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_PTD7PAD. +#define BF_SIM_SOPT2_PTD7PAD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_PTD7PAD), uint32_t) & BM_SIM_SOPT2_PTD7PAD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PTD7PAD field to a new value. +#define BW_SIM_SOPT2_PTD7PAD(v) (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_PTD7PAD) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT2, field TRACECLKSEL[12] (RW) + * + * Selects the core/system clock or MCG output clock (MCGOUTCLK) as the trace + * clock source. + * + * Values: + * - 0 - MCGOUTCLK + * - 1 - Core/system clock + */ +//@{ +#define BP_SIM_SOPT2_TRACECLKSEL (12U) //!< Bit position for SIM_SOPT2_TRACECLKSEL. +#define BM_SIM_SOPT2_TRACECLKSEL (0x00001000U) //!< Bit mask for SIM_SOPT2_TRACECLKSEL. +#define BS_SIM_SOPT2_TRACECLKSEL (1U) //!< Bit field size in bits for SIM_SOPT2_TRACECLKSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_TRACECLKSEL field. +#define BR_SIM_SOPT2_TRACECLKSEL (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_TRACECLKSEL)) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_TRACECLKSEL. +#define BF_SIM_SOPT2_TRACECLKSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_TRACECLKSEL), uint32_t) & BM_SIM_SOPT2_TRACECLKSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TRACECLKSEL field to a new value. +#define BW_SIM_SOPT2_TRACECLKSEL(v) (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_TRACECLKSEL) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT2, field PLLFLLSEL[17:16] (RW) + * + * Selects the high frequency clock for various peripheral clocking options. + * + * Values: + * - 00 - MCGFLLCLK clock + * - 01 - MCGPLLCLK clock + * - 10 - Reserved + * - 11 - IRC48 MHz clock + */ +//@{ +#define BP_SIM_SOPT2_PLLFLLSEL (16U) //!< Bit position for SIM_SOPT2_PLLFLLSEL. +#define BM_SIM_SOPT2_PLLFLLSEL (0x00030000U) //!< Bit mask for SIM_SOPT2_PLLFLLSEL. +#define BS_SIM_SOPT2_PLLFLLSEL (2U) //!< Bit field size in bits for SIM_SOPT2_PLLFLLSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_PLLFLLSEL field. +#define BR_SIM_SOPT2_PLLFLLSEL (HW_SIM_SOPT2.B.PLLFLLSEL) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_PLLFLLSEL. +#define BF_SIM_SOPT2_PLLFLLSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_PLLFLLSEL), uint32_t) & BM_SIM_SOPT2_PLLFLLSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PLLFLLSEL field to a new value. +#define BW_SIM_SOPT2_PLLFLLSEL(v) (HW_SIM_SOPT2_WR((HW_SIM_SOPT2_RD() & ~BM_SIM_SOPT2_PLLFLLSEL) | BF_SIM_SOPT2_PLLFLLSEL(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT2, field USBSRC[18] (RW) + * + * Selects the clock source for the USB 48 MHz clock. + * + * Values: + * - 0 - External bypass clock (USB_CLKIN). + * - 1 - MCGFLLCLK , or MCGPLLCLK , or IRC48M clock as selected by + * SOPT2[PLLFLLSEL], and then divided by the USB fractional divider as configured by + * SIM_CLKDIV2[USBFRAC, USBDIV]. + */ +//@{ +#define BP_SIM_SOPT2_USBSRC (18U) //!< Bit position for SIM_SOPT2_USBSRC. +#define BM_SIM_SOPT2_USBSRC (0x00040000U) //!< Bit mask for SIM_SOPT2_USBSRC. +#define BS_SIM_SOPT2_USBSRC (1U) //!< Bit field size in bits for SIM_SOPT2_USBSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_USBSRC field. +#define BR_SIM_SOPT2_USBSRC (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_USBSRC)) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_USBSRC. +#define BF_SIM_SOPT2_USBSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_USBSRC), uint32_t) & BM_SIM_SOPT2_USBSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBSRC field to a new value. +#define BW_SIM_SOPT2_USBSRC(v) (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_USBSRC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT2, field RMIISRC[19] (RW) + * + * Selects the clock source for the Ethernet RMII interface + * + * Values: + * - 0 - EXTAL clock + * - 1 - External bypass clock (ENET_1588_CLKIN). + */ +//@{ +#define BP_SIM_SOPT2_RMIISRC (19U) //!< Bit position for SIM_SOPT2_RMIISRC. +#define BM_SIM_SOPT2_RMIISRC (0x00080000U) //!< Bit mask for SIM_SOPT2_RMIISRC. +#define BS_SIM_SOPT2_RMIISRC (1U) //!< Bit field size in bits for SIM_SOPT2_RMIISRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_RMIISRC field. +#define BR_SIM_SOPT2_RMIISRC (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_RMIISRC)) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_RMIISRC. +#define BF_SIM_SOPT2_RMIISRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_RMIISRC), uint32_t) & BM_SIM_SOPT2_RMIISRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RMIISRC field to a new value. +#define BW_SIM_SOPT2_RMIISRC(v) (BITBAND_ACCESS32(HW_SIM_SOPT2_ADDR, BP_SIM_SOPT2_RMIISRC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT2, field TIMESRC[21:20] (RW) + * + * Selects the clock source for the Ethernet timestamp clock. + * + * Values: + * - 00 - Core/system clock. + * - 01 - MCGFLLCLK , or MCGPLLCLK , or IRC48M clock as selected by + * SOPT2[PLLFLLSEL]. + * - 10 - OSCERCLK clock + * - 11 - External bypass clock (ENET_1588_CLKIN). + */ +//@{ +#define BP_SIM_SOPT2_TIMESRC (20U) //!< Bit position for SIM_SOPT2_TIMESRC. +#define BM_SIM_SOPT2_TIMESRC (0x00300000U) //!< Bit mask for SIM_SOPT2_TIMESRC. +#define BS_SIM_SOPT2_TIMESRC (2U) //!< Bit field size in bits for SIM_SOPT2_TIMESRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_TIMESRC field. +#define BR_SIM_SOPT2_TIMESRC (HW_SIM_SOPT2.B.TIMESRC) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_TIMESRC. +#define BF_SIM_SOPT2_TIMESRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_TIMESRC), uint32_t) & BM_SIM_SOPT2_TIMESRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIMESRC field to a new value. +#define BW_SIM_SOPT2_TIMESRC(v) (HW_SIM_SOPT2_WR((HW_SIM_SOPT2_RD() & ~BM_SIM_SOPT2_TIMESRC) | BF_SIM_SOPT2_TIMESRC(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT2, field SDHCSRC[29:28] (RW) + * + * Selects the clock source for the SDHC clock . + * + * Values: + * - 00 - Core/system clock. + * - 01 - MCGFLLCLK, or MCGPLLCLK , or IRC48M clock as selected by + * SOPT2[PLLFLLSEL]. + * - 10 - OSCERCLK clock + * - 11 - External bypass clock (SDHC0_CLKIN) + */ +//@{ +#define BP_SIM_SOPT2_SDHCSRC (28U) //!< Bit position for SIM_SOPT2_SDHCSRC. +#define BM_SIM_SOPT2_SDHCSRC (0x30000000U) //!< Bit mask for SIM_SOPT2_SDHCSRC. +#define BS_SIM_SOPT2_SDHCSRC (2U) //!< Bit field size in bits for SIM_SOPT2_SDHCSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT2_SDHCSRC field. +#define BR_SIM_SOPT2_SDHCSRC (HW_SIM_SOPT2.B.SDHCSRC) +#endif + +//! @brief Format value for bitfield SIM_SOPT2_SDHCSRC. +#define BF_SIM_SOPT2_SDHCSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT2_SDHCSRC), uint32_t) & BM_SIM_SOPT2_SDHCSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SDHCSRC field to a new value. +#define BW_SIM_SOPT2_SDHCSRC(v) (HW_SIM_SOPT2_WR((HW_SIM_SOPT2_RD() & ~BM_SIM_SOPT2_SDHCSRC) | BF_SIM_SOPT2_SDHCSRC(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SOPT4 - System Options Register 4 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SOPT4 - System Options Register 4 (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_sim_sopt4 +{ + uint32_t U; + struct _hw_sim_sopt4_bitfields + { + uint32_t FTM0FLT0 : 1; //!< [0] FTM0 Fault 0 Select + uint32_t FTM0FLT1 : 1; //!< [1] FTM0 Fault 1 Select + uint32_t FTM0FLT2 : 1; //!< [2] FTM0 Fault 2 Select + uint32_t RESERVED0 : 1; //!< [3] + uint32_t FTM1FLT0 : 1; //!< [4] FTM1 Fault 0 Select + uint32_t RESERVED1 : 3; //!< [7:5] + uint32_t FTM2FLT0 : 1; //!< [8] FTM2 Fault 0 Select + uint32_t RESERVED2 : 3; //!< [11:9] + uint32_t FTM3FLT0 : 1; //!< [12] FTM3 Fault 0 Select + uint32_t RESERVED3 : 5; //!< [17:13] + uint32_t FTM1CH0SRC : 2; //!< [19:18] FTM1 channel 0 input capture + //! source select + uint32_t FTM2CH0SRC : 2; //!< [21:20] FTM2 channel 0 input capture + //! source select + uint32_t RESERVED4 : 2; //!< [23:22] + uint32_t FTM0CLKSEL : 1; //!< [24] FlexTimer 0 External Clock Pin + //! Select + uint32_t FTM1CLKSEL : 1; //!< [25] FTM1 External Clock Pin Select + uint32_t FTM2CLKSEL : 1; //!< [26] FlexTimer 2 External Clock Pin + //! Select + uint32_t FTM3CLKSEL : 1; //!< [27] FlexTimer 3 External Clock Pin + //! Select + uint32_t FTM0TRG0SRC : 1; //!< [28] FlexTimer 0 Hardware Trigger 0 + //! Source Select + uint32_t FTM0TRG1SRC : 1; //!< [29] FlexTimer 0 Hardware Trigger 1 + //! Source Select + uint32_t FTM3TRG0SRC : 1; //!< [30] FlexTimer 3 Hardware Trigger 0 + //! Source Select + uint32_t FTM3TRG1SRC : 1; //!< [31] FlexTimer 3 Hardware Trigger 1 + //! Source Select + } B; +} hw_sim_sopt4_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SOPT4 register + */ +//@{ +#define HW_SIM_SOPT4_ADDR (REGS_SIM_BASE + 0x100CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SOPT4 (*(__IO hw_sim_sopt4_t *) HW_SIM_SOPT4_ADDR) +#define HW_SIM_SOPT4_RD() (HW_SIM_SOPT4.U) +#define HW_SIM_SOPT4_WR(v) (HW_SIM_SOPT4.U = (v)) +#define HW_SIM_SOPT4_SET(v) (HW_SIM_SOPT4_WR(HW_SIM_SOPT4_RD() | (v))) +#define HW_SIM_SOPT4_CLR(v) (HW_SIM_SOPT4_WR(HW_SIM_SOPT4_RD() & ~(v))) +#define HW_SIM_SOPT4_TOG(v) (HW_SIM_SOPT4_WR(HW_SIM_SOPT4_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SOPT4 bitfields + */ + +/*! + * @name Register SIM_SOPT4, field FTM0FLT0[0] (RW) + * + * Selects the source of FTM0 fault 0. The pin source for fault 0 must be + * configured for the FTM module fault function through the appropriate pin control + * register in the port control module. + * + * Values: + * - 0 - FTM0_FLT0 pin + * - 1 - CMP0 out + */ +//@{ +#define BP_SIM_SOPT4_FTM0FLT0 (0U) //!< Bit position for SIM_SOPT4_FTM0FLT0. +#define BM_SIM_SOPT4_FTM0FLT0 (0x00000001U) //!< Bit mask for SIM_SOPT4_FTM0FLT0. +#define BS_SIM_SOPT4_FTM0FLT0 (1U) //!< Bit field size in bits for SIM_SOPT4_FTM0FLT0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM0FLT0 field. +#define BR_SIM_SOPT4_FTM0FLT0 (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0FLT0)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM0FLT0. +#define BF_SIM_SOPT4_FTM0FLT0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM0FLT0), uint32_t) & BM_SIM_SOPT4_FTM0FLT0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM0FLT0 field to a new value. +#define BW_SIM_SOPT4_FTM0FLT0(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0FLT0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM0FLT1[1] (RW) + * + * Selects the source of FTM0 fault 1. The pin source for fault 1 must be + * configured for the FTM module fault function through the appropriate pin control + * register in the port control module. + * + * Values: + * - 0 - FTM0_FLT1 pin + * - 1 - CMP1 out + */ +//@{ +#define BP_SIM_SOPT4_FTM0FLT1 (1U) //!< Bit position for SIM_SOPT4_FTM0FLT1. +#define BM_SIM_SOPT4_FTM0FLT1 (0x00000002U) //!< Bit mask for SIM_SOPT4_FTM0FLT1. +#define BS_SIM_SOPT4_FTM0FLT1 (1U) //!< Bit field size in bits for SIM_SOPT4_FTM0FLT1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM0FLT1 field. +#define BR_SIM_SOPT4_FTM0FLT1 (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0FLT1)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM0FLT1. +#define BF_SIM_SOPT4_FTM0FLT1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM0FLT1), uint32_t) & BM_SIM_SOPT4_FTM0FLT1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM0FLT1 field to a new value. +#define BW_SIM_SOPT4_FTM0FLT1(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0FLT1) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM0FLT2[2] (RW) + * + * Selects the source of FTM0 fault 2. The pin source for fault 2 must be + * configured for the FTM module fault function through the appropriate pin control + * register in the port control module. + * + * Values: + * - 0 - FTM0_FLT2 pin + * - 1 - CMP2 out + */ +//@{ +#define BP_SIM_SOPT4_FTM0FLT2 (2U) //!< Bit position for SIM_SOPT4_FTM0FLT2. +#define BM_SIM_SOPT4_FTM0FLT2 (0x00000004U) //!< Bit mask for SIM_SOPT4_FTM0FLT2. +#define BS_SIM_SOPT4_FTM0FLT2 (1U) //!< Bit field size in bits for SIM_SOPT4_FTM0FLT2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM0FLT2 field. +#define BR_SIM_SOPT4_FTM0FLT2 (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0FLT2)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM0FLT2. +#define BF_SIM_SOPT4_FTM0FLT2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM0FLT2), uint32_t) & BM_SIM_SOPT4_FTM0FLT2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM0FLT2 field to a new value. +#define BW_SIM_SOPT4_FTM0FLT2(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0FLT2) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM1FLT0[4] (RW) + * + * Selects the source of FTM1 fault 0. The pin source for fault 0 must be + * configured for the FTM module fault function through the appropriate pin control + * register in the port control module. + * + * Values: + * - 0 - FTM1_FLT0 pin + * - 1 - CMP0 out + */ +//@{ +#define BP_SIM_SOPT4_FTM1FLT0 (4U) //!< Bit position for SIM_SOPT4_FTM1FLT0. +#define BM_SIM_SOPT4_FTM1FLT0 (0x00000010U) //!< Bit mask for SIM_SOPT4_FTM1FLT0. +#define BS_SIM_SOPT4_FTM1FLT0 (1U) //!< Bit field size in bits for SIM_SOPT4_FTM1FLT0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM1FLT0 field. +#define BR_SIM_SOPT4_FTM1FLT0 (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM1FLT0)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM1FLT0. +#define BF_SIM_SOPT4_FTM1FLT0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM1FLT0), uint32_t) & BM_SIM_SOPT4_FTM1FLT0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM1FLT0 field to a new value. +#define BW_SIM_SOPT4_FTM1FLT0(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM1FLT0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM2FLT0[8] (RW) + * + * Selects the source of FTM2 fault 0. The pin source for fault 0 must be + * configured for the FTM module fault function through the appropriate PORTx pin + * control register. + * + * Values: + * - 0 - FTM2_FLT0 pin + * - 1 - CMP0 out + */ +//@{ +#define BP_SIM_SOPT4_FTM2FLT0 (8U) //!< Bit position for SIM_SOPT4_FTM2FLT0. +#define BM_SIM_SOPT4_FTM2FLT0 (0x00000100U) //!< Bit mask for SIM_SOPT4_FTM2FLT0. +#define BS_SIM_SOPT4_FTM2FLT0 (1U) //!< Bit field size in bits for SIM_SOPT4_FTM2FLT0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM2FLT0 field. +#define BR_SIM_SOPT4_FTM2FLT0 (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM2FLT0)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM2FLT0. +#define BF_SIM_SOPT4_FTM2FLT0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM2FLT0), uint32_t) & BM_SIM_SOPT4_FTM2FLT0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM2FLT0 field to a new value. +#define BW_SIM_SOPT4_FTM2FLT0(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM2FLT0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM3FLT0[12] (RW) + * + * Selects the source of FTM3 fault 0. The pin source for fault 0 must be + * configured for the FTM module fault function through the appropriate PORTx pin + * control register. + * + * Values: + * - 0 - FTM3_FLT0 pin + * - 1 - CMP0 out + */ +//@{ +#define BP_SIM_SOPT4_FTM3FLT0 (12U) //!< Bit position for SIM_SOPT4_FTM3FLT0. +#define BM_SIM_SOPT4_FTM3FLT0 (0x00001000U) //!< Bit mask for SIM_SOPT4_FTM3FLT0. +#define BS_SIM_SOPT4_FTM3FLT0 (1U) //!< Bit field size in bits for SIM_SOPT4_FTM3FLT0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM3FLT0 field. +#define BR_SIM_SOPT4_FTM3FLT0 (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM3FLT0)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM3FLT0. +#define BF_SIM_SOPT4_FTM3FLT0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM3FLT0), uint32_t) & BM_SIM_SOPT4_FTM3FLT0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM3FLT0 field to a new value. +#define BW_SIM_SOPT4_FTM3FLT0(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM3FLT0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM1CH0SRC[19:18] (RW) + * + * Selects the source for FTM1 channel 0 input capture. When the FTM is not in + * input capture mode, clear this field. + * + * Values: + * - 00 - FTM1_CH0 signal + * - 01 - CMP0 output + * - 10 - CMP1 output + * - 11 - USB start of frame pulse + */ +//@{ +#define BP_SIM_SOPT4_FTM1CH0SRC (18U) //!< Bit position for SIM_SOPT4_FTM1CH0SRC. +#define BM_SIM_SOPT4_FTM1CH0SRC (0x000C0000U) //!< Bit mask for SIM_SOPT4_FTM1CH0SRC. +#define BS_SIM_SOPT4_FTM1CH0SRC (2U) //!< Bit field size in bits for SIM_SOPT4_FTM1CH0SRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM1CH0SRC field. +#define BR_SIM_SOPT4_FTM1CH0SRC (HW_SIM_SOPT4.B.FTM1CH0SRC) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM1CH0SRC. +#define BF_SIM_SOPT4_FTM1CH0SRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM1CH0SRC), uint32_t) & BM_SIM_SOPT4_FTM1CH0SRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM1CH0SRC field to a new value. +#define BW_SIM_SOPT4_FTM1CH0SRC(v) (HW_SIM_SOPT4_WR((HW_SIM_SOPT4_RD() & ~BM_SIM_SOPT4_FTM1CH0SRC) | BF_SIM_SOPT4_FTM1CH0SRC(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM2CH0SRC[21:20] (RW) + * + * Selects the source for FTM2 channel 0 input capture. When the FTM is not in + * input capture mode, clear this field. + * + * Values: + * - 00 - FTM2_CH0 signal + * - 01 - CMP0 output + * - 10 - CMP1 output + * - 11 - Reserved + */ +//@{ +#define BP_SIM_SOPT4_FTM2CH0SRC (20U) //!< Bit position for SIM_SOPT4_FTM2CH0SRC. +#define BM_SIM_SOPT4_FTM2CH0SRC (0x00300000U) //!< Bit mask for SIM_SOPT4_FTM2CH0SRC. +#define BS_SIM_SOPT4_FTM2CH0SRC (2U) //!< Bit field size in bits for SIM_SOPT4_FTM2CH0SRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM2CH0SRC field. +#define BR_SIM_SOPT4_FTM2CH0SRC (HW_SIM_SOPT4.B.FTM2CH0SRC) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM2CH0SRC. +#define BF_SIM_SOPT4_FTM2CH0SRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM2CH0SRC), uint32_t) & BM_SIM_SOPT4_FTM2CH0SRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM2CH0SRC field to a new value. +#define BW_SIM_SOPT4_FTM2CH0SRC(v) (HW_SIM_SOPT4_WR((HW_SIM_SOPT4_RD() & ~BM_SIM_SOPT4_FTM2CH0SRC) | BF_SIM_SOPT4_FTM2CH0SRC(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM0CLKSEL[24] (RW) + * + * Selects the external pin used to drive the clock to the FTM0 module. The + * selected pin must also be configured for the FTM external clock function through + * the appropriate pin control register in the port control module. + * + * Values: + * - 0 - FTM_CLK0 pin + * - 1 - FTM_CLK1 pin + */ +//@{ +#define BP_SIM_SOPT4_FTM0CLKSEL (24U) //!< Bit position for SIM_SOPT4_FTM0CLKSEL. +#define BM_SIM_SOPT4_FTM0CLKSEL (0x01000000U) //!< Bit mask for SIM_SOPT4_FTM0CLKSEL. +#define BS_SIM_SOPT4_FTM0CLKSEL (1U) //!< Bit field size in bits for SIM_SOPT4_FTM0CLKSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM0CLKSEL field. +#define BR_SIM_SOPT4_FTM0CLKSEL (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0CLKSEL)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM0CLKSEL. +#define BF_SIM_SOPT4_FTM0CLKSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM0CLKSEL), uint32_t) & BM_SIM_SOPT4_FTM0CLKSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM0CLKSEL field to a new value. +#define BW_SIM_SOPT4_FTM0CLKSEL(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0CLKSEL) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM1CLKSEL[25] (RW) + * + * Selects the external pin used to drive the clock to the FTM1 module. The + * selected pin must also be configured for the FTM external clock function through + * the appropriate pin control register in the port control module. + * + * Values: + * - 0 - FTM_CLK0 pin + * - 1 - FTM_CLK1 pin + */ +//@{ +#define BP_SIM_SOPT4_FTM1CLKSEL (25U) //!< Bit position for SIM_SOPT4_FTM1CLKSEL. +#define BM_SIM_SOPT4_FTM1CLKSEL (0x02000000U) //!< Bit mask for SIM_SOPT4_FTM1CLKSEL. +#define BS_SIM_SOPT4_FTM1CLKSEL (1U) //!< Bit field size in bits for SIM_SOPT4_FTM1CLKSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM1CLKSEL field. +#define BR_SIM_SOPT4_FTM1CLKSEL (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM1CLKSEL)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM1CLKSEL. +#define BF_SIM_SOPT4_FTM1CLKSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM1CLKSEL), uint32_t) & BM_SIM_SOPT4_FTM1CLKSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM1CLKSEL field to a new value. +#define BW_SIM_SOPT4_FTM1CLKSEL(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM1CLKSEL) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM2CLKSEL[26] (RW) + * + * Selects the external pin used to drive the clock to the FTM2 module. The + * selected pin must also be configured for the FTM2 module external clock function + * through the appropriate pin control register in the port control module. + * + * Values: + * - 0 - FTM2 external clock driven by FTM_CLK0 pin. + * - 1 - FTM2 external clock driven by FTM_CLK1 pin. + */ +//@{ +#define BP_SIM_SOPT4_FTM2CLKSEL (26U) //!< Bit position for SIM_SOPT4_FTM2CLKSEL. +#define BM_SIM_SOPT4_FTM2CLKSEL (0x04000000U) //!< Bit mask for SIM_SOPT4_FTM2CLKSEL. +#define BS_SIM_SOPT4_FTM2CLKSEL (1U) //!< Bit field size in bits for SIM_SOPT4_FTM2CLKSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM2CLKSEL field. +#define BR_SIM_SOPT4_FTM2CLKSEL (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM2CLKSEL)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM2CLKSEL. +#define BF_SIM_SOPT4_FTM2CLKSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM2CLKSEL), uint32_t) & BM_SIM_SOPT4_FTM2CLKSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM2CLKSEL field to a new value. +#define BW_SIM_SOPT4_FTM2CLKSEL(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM2CLKSEL) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM3CLKSEL[27] (RW) + * + * Selects the external pin used to drive the clock to the FTM3 module. The + * selected pin must also be configured for the FTM3 module external clock function + * through the appropriate pin control register in the port control module. + * + * Values: + * - 0 - FTM3 external clock driven by FTM_CLK0 pin. + * - 1 - FTM3 external clock driven by FTM_CLK1 pin. + */ +//@{ +#define BP_SIM_SOPT4_FTM3CLKSEL (27U) //!< Bit position for SIM_SOPT4_FTM3CLKSEL. +#define BM_SIM_SOPT4_FTM3CLKSEL (0x08000000U) //!< Bit mask for SIM_SOPT4_FTM3CLKSEL. +#define BS_SIM_SOPT4_FTM3CLKSEL (1U) //!< Bit field size in bits for SIM_SOPT4_FTM3CLKSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM3CLKSEL field. +#define BR_SIM_SOPT4_FTM3CLKSEL (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM3CLKSEL)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM3CLKSEL. +#define BF_SIM_SOPT4_FTM3CLKSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM3CLKSEL), uint32_t) & BM_SIM_SOPT4_FTM3CLKSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM3CLKSEL field to a new value. +#define BW_SIM_SOPT4_FTM3CLKSEL(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM3CLKSEL) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM0TRG0SRC[28] (RW) + * + * Selects the source of FTM0 hardware trigger 0. + * + * Values: + * - 0 - HSCMP0 output drives FTM0 hardware trigger 0 + * - 1 - FTM1 channel match drives FTM0 hardware trigger 0 + */ +//@{ +#define BP_SIM_SOPT4_FTM0TRG0SRC (28U) //!< Bit position for SIM_SOPT4_FTM0TRG0SRC. +#define BM_SIM_SOPT4_FTM0TRG0SRC (0x10000000U) //!< Bit mask for SIM_SOPT4_FTM0TRG0SRC. +#define BS_SIM_SOPT4_FTM0TRG0SRC (1U) //!< Bit field size in bits for SIM_SOPT4_FTM0TRG0SRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM0TRG0SRC field. +#define BR_SIM_SOPT4_FTM0TRG0SRC (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0TRG0SRC)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM0TRG0SRC. +#define BF_SIM_SOPT4_FTM0TRG0SRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM0TRG0SRC), uint32_t) & BM_SIM_SOPT4_FTM0TRG0SRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM0TRG0SRC field to a new value. +#define BW_SIM_SOPT4_FTM0TRG0SRC(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0TRG0SRC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM0TRG1SRC[29] (RW) + * + * Selects the source of FTM0 hardware trigger 1. + * + * Values: + * - 0 - PDB output trigger 1 drives FTM0 hardware trigger 1 + * - 1 - FTM2 channel match drives FTM0 hardware trigger 1 + */ +//@{ +#define BP_SIM_SOPT4_FTM0TRG1SRC (29U) //!< Bit position for SIM_SOPT4_FTM0TRG1SRC. +#define BM_SIM_SOPT4_FTM0TRG1SRC (0x20000000U) //!< Bit mask for SIM_SOPT4_FTM0TRG1SRC. +#define BS_SIM_SOPT4_FTM0TRG1SRC (1U) //!< Bit field size in bits for SIM_SOPT4_FTM0TRG1SRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM0TRG1SRC field. +#define BR_SIM_SOPT4_FTM0TRG1SRC (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0TRG1SRC)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM0TRG1SRC. +#define BF_SIM_SOPT4_FTM0TRG1SRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM0TRG1SRC), uint32_t) & BM_SIM_SOPT4_FTM0TRG1SRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM0TRG1SRC field to a new value. +#define BW_SIM_SOPT4_FTM0TRG1SRC(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM0TRG1SRC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM3TRG0SRC[30] (RW) + * + * Selects the source of FTM3 hardware trigger 0. + * + * Values: + * - 0 - Reserved + * - 1 - FTM1 channel match drives FTM3 hardware trigger 0 + */ +//@{ +#define BP_SIM_SOPT4_FTM3TRG0SRC (30U) //!< Bit position for SIM_SOPT4_FTM3TRG0SRC. +#define BM_SIM_SOPT4_FTM3TRG0SRC (0x40000000U) //!< Bit mask for SIM_SOPT4_FTM3TRG0SRC. +#define BS_SIM_SOPT4_FTM3TRG0SRC (1U) //!< Bit field size in bits for SIM_SOPT4_FTM3TRG0SRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM3TRG0SRC field. +#define BR_SIM_SOPT4_FTM3TRG0SRC (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM3TRG0SRC)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM3TRG0SRC. +#define BF_SIM_SOPT4_FTM3TRG0SRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM3TRG0SRC), uint32_t) & BM_SIM_SOPT4_FTM3TRG0SRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM3TRG0SRC field to a new value. +#define BW_SIM_SOPT4_FTM3TRG0SRC(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM3TRG0SRC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT4, field FTM3TRG1SRC[31] (RW) + * + * Selects the source of FTM3 hardware trigger 1. + * + * Values: + * - 0 - Reserved + * - 1 - FTM2 channel match drives FTM3 hardware trigger 1 + */ +//@{ +#define BP_SIM_SOPT4_FTM3TRG1SRC (31U) //!< Bit position for SIM_SOPT4_FTM3TRG1SRC. +#define BM_SIM_SOPT4_FTM3TRG1SRC (0x80000000U) //!< Bit mask for SIM_SOPT4_FTM3TRG1SRC. +#define BS_SIM_SOPT4_FTM3TRG1SRC (1U) //!< Bit field size in bits for SIM_SOPT4_FTM3TRG1SRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT4_FTM3TRG1SRC field. +#define BR_SIM_SOPT4_FTM3TRG1SRC (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM3TRG1SRC)) +#endif + +//! @brief Format value for bitfield SIM_SOPT4_FTM3TRG1SRC. +#define BF_SIM_SOPT4_FTM3TRG1SRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT4_FTM3TRG1SRC), uint32_t) & BM_SIM_SOPT4_FTM3TRG1SRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM3TRG1SRC field to a new value. +#define BW_SIM_SOPT4_FTM3TRG1SRC(v) (BITBAND_ACCESS32(HW_SIM_SOPT4_ADDR, BP_SIM_SOPT4_FTM3TRG1SRC) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SOPT5 - System Options Register 5 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SOPT5 - System Options Register 5 (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_sim_sopt5 +{ + uint32_t U; + struct _hw_sim_sopt5_bitfields + { + uint32_t UART0TXSRC : 2; //!< [1:0] UART 0 transmit data source select + uint32_t UART0RXSRC : 2; //!< [3:2] UART 0 receive data source select + uint32_t UART1TXSRC : 2; //!< [5:4] UART 1 transmit data source select + uint32_t UART1RXSRC : 2; //!< [7:6] UART 1 receive data source select + uint32_t RESERVED0 : 24; //!< [31:8] + } B; +} hw_sim_sopt5_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SOPT5 register + */ +//@{ +#define HW_SIM_SOPT5_ADDR (REGS_SIM_BASE + 0x1010U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SOPT5 (*(__IO hw_sim_sopt5_t *) HW_SIM_SOPT5_ADDR) +#define HW_SIM_SOPT5_RD() (HW_SIM_SOPT5.U) +#define HW_SIM_SOPT5_WR(v) (HW_SIM_SOPT5.U = (v)) +#define HW_SIM_SOPT5_SET(v) (HW_SIM_SOPT5_WR(HW_SIM_SOPT5_RD() | (v))) +#define HW_SIM_SOPT5_CLR(v) (HW_SIM_SOPT5_WR(HW_SIM_SOPT5_RD() & ~(v))) +#define HW_SIM_SOPT5_TOG(v) (HW_SIM_SOPT5_WR(HW_SIM_SOPT5_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SOPT5 bitfields + */ + +/*! + * @name Register SIM_SOPT5, field UART0TXSRC[1:0] (RW) + * + * Selects the source for the UART 0 transmit data. + * + * Values: + * - 00 - UART0_TX pin + * - 01 - UART0_TX pin modulated with FTM1 channel 0 output + * - 10 - UART0_TX pin modulated with FTM2 channel 0 output + * - 11 - Reserved + */ +//@{ +#define BP_SIM_SOPT5_UART0TXSRC (0U) //!< Bit position for SIM_SOPT5_UART0TXSRC. +#define BM_SIM_SOPT5_UART0TXSRC (0x00000003U) //!< Bit mask for SIM_SOPT5_UART0TXSRC. +#define BS_SIM_SOPT5_UART0TXSRC (2U) //!< Bit field size in bits for SIM_SOPT5_UART0TXSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT5_UART0TXSRC field. +#define BR_SIM_SOPT5_UART0TXSRC (HW_SIM_SOPT5.B.UART0TXSRC) +#endif + +//! @brief Format value for bitfield SIM_SOPT5_UART0TXSRC. +#define BF_SIM_SOPT5_UART0TXSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT5_UART0TXSRC), uint32_t) & BM_SIM_SOPT5_UART0TXSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART0TXSRC field to a new value. +#define BW_SIM_SOPT5_UART0TXSRC(v) (HW_SIM_SOPT5_WR((HW_SIM_SOPT5_RD() & ~BM_SIM_SOPT5_UART0TXSRC) | BF_SIM_SOPT5_UART0TXSRC(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT5, field UART0RXSRC[3:2] (RW) + * + * Selects the source for the UART 0 receive data. + * + * Values: + * - 00 - UART0_RX pin + * - 01 - CMP0 + * - 10 - CMP1 + * - 11 - Reserved + */ +//@{ +#define BP_SIM_SOPT5_UART0RXSRC (2U) //!< Bit position for SIM_SOPT5_UART0RXSRC. +#define BM_SIM_SOPT5_UART0RXSRC (0x0000000CU) //!< Bit mask for SIM_SOPT5_UART0RXSRC. +#define BS_SIM_SOPT5_UART0RXSRC (2U) //!< Bit field size in bits for SIM_SOPT5_UART0RXSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT5_UART0RXSRC field. +#define BR_SIM_SOPT5_UART0RXSRC (HW_SIM_SOPT5.B.UART0RXSRC) +#endif + +//! @brief Format value for bitfield SIM_SOPT5_UART0RXSRC. +#define BF_SIM_SOPT5_UART0RXSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT5_UART0RXSRC), uint32_t) & BM_SIM_SOPT5_UART0RXSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART0RXSRC field to a new value. +#define BW_SIM_SOPT5_UART0RXSRC(v) (HW_SIM_SOPT5_WR((HW_SIM_SOPT5_RD() & ~BM_SIM_SOPT5_UART0RXSRC) | BF_SIM_SOPT5_UART0RXSRC(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT5, field UART1TXSRC[5:4] (RW) + * + * Selects the source for the UART 1 transmit data. + * + * Values: + * - 00 - UART1_TX pin + * - 01 - UART1_TX pin modulated with FTM1 channel 0 output + * - 10 - UART1_TX pin modulated with FTM2 channel 0 output + * - 11 - Reserved + */ +//@{ +#define BP_SIM_SOPT5_UART1TXSRC (4U) //!< Bit position for SIM_SOPT5_UART1TXSRC. +#define BM_SIM_SOPT5_UART1TXSRC (0x00000030U) //!< Bit mask for SIM_SOPT5_UART1TXSRC. +#define BS_SIM_SOPT5_UART1TXSRC (2U) //!< Bit field size in bits for SIM_SOPT5_UART1TXSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT5_UART1TXSRC field. +#define BR_SIM_SOPT5_UART1TXSRC (HW_SIM_SOPT5.B.UART1TXSRC) +#endif + +//! @brief Format value for bitfield SIM_SOPT5_UART1TXSRC. +#define BF_SIM_SOPT5_UART1TXSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT5_UART1TXSRC), uint32_t) & BM_SIM_SOPT5_UART1TXSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART1TXSRC field to a new value. +#define BW_SIM_SOPT5_UART1TXSRC(v) (HW_SIM_SOPT5_WR((HW_SIM_SOPT5_RD() & ~BM_SIM_SOPT5_UART1TXSRC) | BF_SIM_SOPT5_UART1TXSRC(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT5, field UART1RXSRC[7:6] (RW) + * + * Selects the source for the UART 1 receive data. + * + * Values: + * - 00 - UART1_RX pin + * - 01 - CMP0 + * - 10 - CMP1 + * - 11 - Reserved + */ +//@{ +#define BP_SIM_SOPT5_UART1RXSRC (6U) //!< Bit position for SIM_SOPT5_UART1RXSRC. +#define BM_SIM_SOPT5_UART1RXSRC (0x000000C0U) //!< Bit mask for SIM_SOPT5_UART1RXSRC. +#define BS_SIM_SOPT5_UART1RXSRC (2U) //!< Bit field size in bits for SIM_SOPT5_UART1RXSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT5_UART1RXSRC field. +#define BR_SIM_SOPT5_UART1RXSRC (HW_SIM_SOPT5.B.UART1RXSRC) +#endif + +//! @brief Format value for bitfield SIM_SOPT5_UART1RXSRC. +#define BF_SIM_SOPT5_UART1RXSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT5_UART1RXSRC), uint32_t) & BM_SIM_SOPT5_UART1RXSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART1RXSRC field to a new value. +#define BW_SIM_SOPT5_UART1RXSRC(v) (HW_SIM_SOPT5_WR((HW_SIM_SOPT5_RD() & ~BM_SIM_SOPT5_UART1RXSRC) | BF_SIM_SOPT5_UART1RXSRC(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SOPT7 - System Options Register 7 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SOPT7 - System Options Register 7 (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_sim_sopt7 +{ + uint32_t U; + struct _hw_sim_sopt7_bitfields + { + uint32_t ADC0TRGSEL : 4; //!< [3:0] ADC0 trigger select + uint32_t ADC0PRETRGSEL : 1; //!< [4] ADC0 pretrigger select + uint32_t RESERVED0 : 2; //!< [6:5] + uint32_t ADC0ALTTRGEN : 1; //!< [7] ADC0 alternate trigger enable + uint32_t ADC1TRGSEL : 4; //!< [11:8] ADC1 trigger select + uint32_t ADC1PRETRGSEL : 1; //!< [12] ADC1 pre-trigger select + uint32_t RESERVED1 : 2; //!< [14:13] + uint32_t ADC1ALTTRGEN : 1; //!< [15] ADC1 alternate trigger enable + uint32_t RESERVED2 : 16; //!< [31:16] + } B; +} hw_sim_sopt7_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SOPT7 register + */ +//@{ +#define HW_SIM_SOPT7_ADDR (REGS_SIM_BASE + 0x1018U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SOPT7 (*(__IO hw_sim_sopt7_t *) HW_SIM_SOPT7_ADDR) +#define HW_SIM_SOPT7_RD() (HW_SIM_SOPT7.U) +#define HW_SIM_SOPT7_WR(v) (HW_SIM_SOPT7.U = (v)) +#define HW_SIM_SOPT7_SET(v) (HW_SIM_SOPT7_WR(HW_SIM_SOPT7_RD() | (v))) +#define HW_SIM_SOPT7_CLR(v) (HW_SIM_SOPT7_WR(HW_SIM_SOPT7_RD() & ~(v))) +#define HW_SIM_SOPT7_TOG(v) (HW_SIM_SOPT7_WR(HW_SIM_SOPT7_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SOPT7 bitfields + */ + +/*! + * @name Register SIM_SOPT7, field ADC0TRGSEL[3:0] (RW) + * + * Selects the ADC0 trigger source when alternative triggers are functional in + * stop and VLPS modes. . + * + * Values: + * - 0000 - PDB external trigger pin input (PDB0_EXTRG) + * - 0001 - High speed comparator 0 output + * - 0010 - High speed comparator 1 output + * - 0011 - High speed comparator 2 output + * - 0100 - PIT trigger 0 + * - 0101 - PIT trigger 1 + * - 0110 - PIT trigger 2 + * - 0111 - PIT trigger 3 + * - 1000 - FTM0 trigger + * - 1001 - FTM1 trigger + * - 1010 - FTM2 trigger + * - 1011 - FTM3 trigger + * - 1100 - RTC alarm + * - 1101 - RTC seconds + * - 1110 - Low-power timer (LPTMR) trigger + * - 1111 - Reserved + */ +//@{ +#define BP_SIM_SOPT7_ADC0TRGSEL (0U) //!< Bit position for SIM_SOPT7_ADC0TRGSEL. +#define BM_SIM_SOPT7_ADC0TRGSEL (0x0000000FU) //!< Bit mask for SIM_SOPT7_ADC0TRGSEL. +#define BS_SIM_SOPT7_ADC0TRGSEL (4U) //!< Bit field size in bits for SIM_SOPT7_ADC0TRGSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT7_ADC0TRGSEL field. +#define BR_SIM_SOPT7_ADC0TRGSEL (HW_SIM_SOPT7.B.ADC0TRGSEL) +#endif + +//! @brief Format value for bitfield SIM_SOPT7_ADC0TRGSEL. +#define BF_SIM_SOPT7_ADC0TRGSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT7_ADC0TRGSEL), uint32_t) & BM_SIM_SOPT7_ADC0TRGSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADC0TRGSEL field to a new value. +#define BW_SIM_SOPT7_ADC0TRGSEL(v) (HW_SIM_SOPT7_WR((HW_SIM_SOPT7_RD() & ~BM_SIM_SOPT7_ADC0TRGSEL) | BF_SIM_SOPT7_ADC0TRGSEL(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT7, field ADC0PRETRGSEL[4] (RW) + * + * Selects the ADC0 pre-trigger source when alternative triggers are enabled + * through ADC0ALTTRGEN. + * + * Values: + * - 0 - Pre-trigger A + * - 1 - Pre-trigger B + */ +//@{ +#define BP_SIM_SOPT7_ADC0PRETRGSEL (4U) //!< Bit position for SIM_SOPT7_ADC0PRETRGSEL. +#define BM_SIM_SOPT7_ADC0PRETRGSEL (0x00000010U) //!< Bit mask for SIM_SOPT7_ADC0PRETRGSEL. +#define BS_SIM_SOPT7_ADC0PRETRGSEL (1U) //!< Bit field size in bits for SIM_SOPT7_ADC0PRETRGSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT7_ADC0PRETRGSEL field. +#define BR_SIM_SOPT7_ADC0PRETRGSEL (BITBAND_ACCESS32(HW_SIM_SOPT7_ADDR, BP_SIM_SOPT7_ADC0PRETRGSEL)) +#endif + +//! @brief Format value for bitfield SIM_SOPT7_ADC0PRETRGSEL. +#define BF_SIM_SOPT7_ADC0PRETRGSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT7_ADC0PRETRGSEL), uint32_t) & BM_SIM_SOPT7_ADC0PRETRGSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADC0PRETRGSEL field to a new value. +#define BW_SIM_SOPT7_ADC0PRETRGSEL(v) (BITBAND_ACCESS32(HW_SIM_SOPT7_ADDR, BP_SIM_SOPT7_ADC0PRETRGSEL) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT7, field ADC0ALTTRGEN[7] (RW) + * + * Enable alternative conversion triggers for ADC0. + * + * Values: + * - 0 - PDB trigger selected for ADC0. + * - 1 - Alternate trigger selected for ADC0. + */ +//@{ +#define BP_SIM_SOPT7_ADC0ALTTRGEN (7U) //!< Bit position for SIM_SOPT7_ADC0ALTTRGEN. +#define BM_SIM_SOPT7_ADC0ALTTRGEN (0x00000080U) //!< Bit mask for SIM_SOPT7_ADC0ALTTRGEN. +#define BS_SIM_SOPT7_ADC0ALTTRGEN (1U) //!< Bit field size in bits for SIM_SOPT7_ADC0ALTTRGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT7_ADC0ALTTRGEN field. +#define BR_SIM_SOPT7_ADC0ALTTRGEN (BITBAND_ACCESS32(HW_SIM_SOPT7_ADDR, BP_SIM_SOPT7_ADC0ALTTRGEN)) +#endif + +//! @brief Format value for bitfield SIM_SOPT7_ADC0ALTTRGEN. +#define BF_SIM_SOPT7_ADC0ALTTRGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT7_ADC0ALTTRGEN), uint32_t) & BM_SIM_SOPT7_ADC0ALTTRGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADC0ALTTRGEN field to a new value. +#define BW_SIM_SOPT7_ADC0ALTTRGEN(v) (BITBAND_ACCESS32(HW_SIM_SOPT7_ADDR, BP_SIM_SOPT7_ADC0ALTTRGEN) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT7, field ADC1TRGSEL[11:8] (RW) + * + * Selects the ADC1 trigger source when alternative triggers are functional in + * stop and VLPS modes. + * + * Values: + * - 0000 - PDB external trigger pin input (PDB0_EXTRG) + * - 0001 - High speed comparator 0 output + * - 0010 - High speed comparator 1 output + * - 0011 - High speed comparator 2 output + * - 0100 - PIT trigger 0 + * - 0101 - PIT trigger 1 + * - 0110 - PIT trigger 2 + * - 0111 - PIT trigger 3 + * - 1000 - FTM0 trigger + * - 1001 - FTM1 trigger + * - 1010 - FTM2 trigger + * - 1011 - FTM3 trigger + * - 1100 - RTC alarm + * - 1101 - RTC seconds + * - 1110 - Low-power timer (LPTMR) trigger + * - 1111 - Reserved + */ +//@{ +#define BP_SIM_SOPT7_ADC1TRGSEL (8U) //!< Bit position for SIM_SOPT7_ADC1TRGSEL. +#define BM_SIM_SOPT7_ADC1TRGSEL (0x00000F00U) //!< Bit mask for SIM_SOPT7_ADC1TRGSEL. +#define BS_SIM_SOPT7_ADC1TRGSEL (4U) //!< Bit field size in bits for SIM_SOPT7_ADC1TRGSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT7_ADC1TRGSEL field. +#define BR_SIM_SOPT7_ADC1TRGSEL (HW_SIM_SOPT7.B.ADC1TRGSEL) +#endif + +//! @brief Format value for bitfield SIM_SOPT7_ADC1TRGSEL. +#define BF_SIM_SOPT7_ADC1TRGSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT7_ADC1TRGSEL), uint32_t) & BM_SIM_SOPT7_ADC1TRGSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADC1TRGSEL field to a new value. +#define BW_SIM_SOPT7_ADC1TRGSEL(v) (HW_SIM_SOPT7_WR((HW_SIM_SOPT7_RD() & ~BM_SIM_SOPT7_ADC1TRGSEL) | BF_SIM_SOPT7_ADC1TRGSEL(v))) +#endif +//@} + +/*! + * @name Register SIM_SOPT7, field ADC1PRETRGSEL[12] (RW) + * + * Selects the ADC1 pre-trigger source when alternative triggers are enabled + * through ADC1ALTTRGEN. + * + * Values: + * - 0 - Pre-trigger A selected for ADC1. + * - 1 - Pre-trigger B selected for ADC1. + */ +//@{ +#define BP_SIM_SOPT7_ADC1PRETRGSEL (12U) //!< Bit position for SIM_SOPT7_ADC1PRETRGSEL. +#define BM_SIM_SOPT7_ADC1PRETRGSEL (0x00001000U) //!< Bit mask for SIM_SOPT7_ADC1PRETRGSEL. +#define BS_SIM_SOPT7_ADC1PRETRGSEL (1U) //!< Bit field size in bits for SIM_SOPT7_ADC1PRETRGSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT7_ADC1PRETRGSEL field. +#define BR_SIM_SOPT7_ADC1PRETRGSEL (BITBAND_ACCESS32(HW_SIM_SOPT7_ADDR, BP_SIM_SOPT7_ADC1PRETRGSEL)) +#endif + +//! @brief Format value for bitfield SIM_SOPT7_ADC1PRETRGSEL. +#define BF_SIM_SOPT7_ADC1PRETRGSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT7_ADC1PRETRGSEL), uint32_t) & BM_SIM_SOPT7_ADC1PRETRGSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADC1PRETRGSEL field to a new value. +#define BW_SIM_SOPT7_ADC1PRETRGSEL(v) (BITBAND_ACCESS32(HW_SIM_SOPT7_ADDR, BP_SIM_SOPT7_ADC1PRETRGSEL) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SOPT7, field ADC1ALTTRGEN[15] (RW) + * + * Enable alternative conversion triggers for ADC1. + * + * Values: + * - 0 - PDB trigger selected for ADC1 + * - 1 - Alternate trigger selected for ADC1 as defined by ADC1TRGSEL. + */ +//@{ +#define BP_SIM_SOPT7_ADC1ALTTRGEN (15U) //!< Bit position for SIM_SOPT7_ADC1ALTTRGEN. +#define BM_SIM_SOPT7_ADC1ALTTRGEN (0x00008000U) //!< Bit mask for SIM_SOPT7_ADC1ALTTRGEN. +#define BS_SIM_SOPT7_ADC1ALTTRGEN (1U) //!< Bit field size in bits for SIM_SOPT7_ADC1ALTTRGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SOPT7_ADC1ALTTRGEN field. +#define BR_SIM_SOPT7_ADC1ALTTRGEN (BITBAND_ACCESS32(HW_SIM_SOPT7_ADDR, BP_SIM_SOPT7_ADC1ALTTRGEN)) +#endif + +//! @brief Format value for bitfield SIM_SOPT7_ADC1ALTTRGEN. +#define BF_SIM_SOPT7_ADC1ALTTRGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SOPT7_ADC1ALTTRGEN), uint32_t) & BM_SIM_SOPT7_ADC1ALTTRGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADC1ALTTRGEN field to a new value. +#define BW_SIM_SOPT7_ADC1ALTTRGEN(v) (BITBAND_ACCESS32(HW_SIM_SOPT7_ADDR, BP_SIM_SOPT7_ADC1ALTTRGEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SDID - System Device Identification Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SDID - System Device Identification Register (RO) + * + * Reset value: 0x00000380U + */ +typedef union _hw_sim_sdid +{ + uint32_t U; + struct _hw_sim_sdid_bitfields + { + uint32_t PINID : 4; //!< [3:0] Pincount identification + uint32_t FAMID : 3; //!< [6:4] Kinetis family identification + uint32_t DIEID : 5; //!< [11:7] Device Die ID + uint32_t REVID : 4; //!< [15:12] Device revision number + uint32_t RESERVED0 : 4; //!< [19:16] + uint32_t SERIESID : 4; //!< [23:20] Kinetis Series ID + uint32_t SUBFAMID : 4; //!< [27:24] Kinetis Sub-Family ID + uint32_t FAMILYID : 4; //!< [31:28] Kinetis Family ID + } B; +} hw_sim_sdid_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SDID register + */ +//@{ +#define HW_SIM_SDID_ADDR (REGS_SIM_BASE + 0x1024U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SDID (*(__I hw_sim_sdid_t *) HW_SIM_SDID_ADDR) +#define HW_SIM_SDID_RD() (HW_SIM_SDID.U) +#endif +//@} + +/* + * Constants & macros for individual SIM_SDID bitfields + */ + +/*! + * @name Register SIM_SDID, field PINID[3:0] (RO) + * + * Specifies the pincount of the device. + * + * Values: + * - 0000 - Reserved + * - 0001 - Reserved + * - 0010 - 32-pin + * - 0011 - Reserved + * - 0100 - 48-pin + * - 0101 - 64-pin + * - 0110 - 80-pin + * - 0111 - 81-pin or 121-pin + * - 1000 - 100-pin + * - 1001 - 121-pin + * - 1010 - 144-pin + * - 1011 - Custom pinout (WLCSP) + * - 1100 - 169-pin + * - 1101 - Reserved + * - 1110 - 256-pin + * - 1111 - Reserved + */ +//@{ +#define BP_SIM_SDID_PINID (0U) //!< Bit position for SIM_SDID_PINID. +#define BM_SIM_SDID_PINID (0x0000000FU) //!< Bit mask for SIM_SDID_PINID. +#define BS_SIM_SDID_PINID (4U) //!< Bit field size in bits for SIM_SDID_PINID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SDID_PINID field. +#define BR_SIM_SDID_PINID (HW_SIM_SDID.B.PINID) +#endif +//@} + +/*! + * @name Register SIM_SDID, field FAMID[6:4] (RO) + * + * This field is maintained for compatibility only, but has been superceded by + * the SERIESID, FAMILYID and SUBFAMID fields in this register. + * + * Values: + * - 000 - K1x Family (without tamper) + * - 001 - K2x Family (without tamper) + * - 010 - K3x Family or K1x/K6x Family (with tamper) + * - 011 - K4x Family or K2x Family (with tamper) + * - 100 - K6x Family (without tamper) + * - 101 - K7x Family + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_SIM_SDID_FAMID (4U) //!< Bit position for SIM_SDID_FAMID. +#define BM_SIM_SDID_FAMID (0x00000070U) //!< Bit mask for SIM_SDID_FAMID. +#define BS_SIM_SDID_FAMID (3U) //!< Bit field size in bits for SIM_SDID_FAMID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SDID_FAMID field. +#define BR_SIM_SDID_FAMID (HW_SIM_SDID.B.FAMID) +#endif +//@} + +/*! + * @name Register SIM_SDID, field DIEID[11:7] (RO) + * + * Specifies the silicon feature set identication number for the device. + */ +//@{ +#define BP_SIM_SDID_DIEID (7U) //!< Bit position for SIM_SDID_DIEID. +#define BM_SIM_SDID_DIEID (0x00000F80U) //!< Bit mask for SIM_SDID_DIEID. +#define BS_SIM_SDID_DIEID (5U) //!< Bit field size in bits for SIM_SDID_DIEID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SDID_DIEID field. +#define BR_SIM_SDID_DIEID (HW_SIM_SDID.B.DIEID) +#endif +//@} + +/*! + * @name Register SIM_SDID, field REVID[15:12] (RO) + * + * Specifies the silicon implementation number for the device. + */ +//@{ +#define BP_SIM_SDID_REVID (12U) //!< Bit position for SIM_SDID_REVID. +#define BM_SIM_SDID_REVID (0x0000F000U) //!< Bit mask for SIM_SDID_REVID. +#define BS_SIM_SDID_REVID (4U) //!< Bit field size in bits for SIM_SDID_REVID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SDID_REVID field. +#define BR_SIM_SDID_REVID (HW_SIM_SDID.B.REVID) +#endif +//@} + +/*! + * @name Register SIM_SDID, field SERIESID[23:20] (RO) + * + * Specifies the Kinetis series of the device. + * + * Values: + * - 0000 - Kinetis K series + * - 0001 - Kinetis L series + * - 0101 - Kinetis W series + * - 0110 - Kinetis V series + */ +//@{ +#define BP_SIM_SDID_SERIESID (20U) //!< Bit position for SIM_SDID_SERIESID. +#define BM_SIM_SDID_SERIESID (0x00F00000U) //!< Bit mask for SIM_SDID_SERIESID. +#define BS_SIM_SDID_SERIESID (4U) //!< Bit field size in bits for SIM_SDID_SERIESID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SDID_SERIESID field. +#define BR_SIM_SDID_SERIESID (HW_SIM_SDID.B.SERIESID) +#endif +//@} + +/*! + * @name Register SIM_SDID, field SUBFAMID[27:24] (RO) + * + * Specifies the Kinetis sub-family of the device. + * + * Values: + * - 0000 - Kx0 Subfamily + * - 0001 - Kx1 Subfamily (tamper detect) + * - 0010 - Kx2 Subfamily + * - 0011 - Kx3 Subfamily (tamper detect) + * - 0100 - Kx4 Subfamily + * - 0101 - Kx5 Subfamily (tamper detect) + * - 0110 - Kx6 Subfamily + */ +//@{ +#define BP_SIM_SDID_SUBFAMID (24U) //!< Bit position for SIM_SDID_SUBFAMID. +#define BM_SIM_SDID_SUBFAMID (0x0F000000U) //!< Bit mask for SIM_SDID_SUBFAMID. +#define BS_SIM_SDID_SUBFAMID (4U) //!< Bit field size in bits for SIM_SDID_SUBFAMID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SDID_SUBFAMID field. +#define BR_SIM_SDID_SUBFAMID (HW_SIM_SDID.B.SUBFAMID) +#endif +//@} + +/*! + * @name Register SIM_SDID, field FAMILYID[31:28] (RO) + * + * Specifies the Kinetis family of the device. + * + * Values: + * - 0001 - K1x Family + * - 0010 - K2x Family + * - 0011 - K3x Family + * - 0100 - K4x Family + * - 0110 - K6x Family + * - 0111 - K7x Family + */ +//@{ +#define BP_SIM_SDID_FAMILYID (28U) //!< Bit position for SIM_SDID_FAMILYID. +#define BM_SIM_SDID_FAMILYID (0xF0000000U) //!< Bit mask for SIM_SDID_FAMILYID. +#define BS_SIM_SDID_FAMILYID (4U) //!< Bit field size in bits for SIM_SDID_FAMILYID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SDID_FAMILYID field. +#define BR_SIM_SDID_FAMILYID (HW_SIM_SDID.B.FAMILYID) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SCGC1 - System Clock Gating Control Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SCGC1 - System Clock Gating Control Register 1 (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_sim_scgc1 +{ + uint32_t U; + struct _hw_sim_scgc1_bitfields + { + uint32_t RESERVED0 : 6; //!< [5:0] + uint32_t I2C2b : 1; //!< [6] I2C2 Clock Gate Control + uint32_t RESERVED1 : 3; //!< [9:7] + uint32_t UART4b : 1; //!< [10] UART4 Clock Gate Control + uint32_t UART5b : 1; //!< [11] UART5 Clock Gate Control + uint32_t RESERVED2 : 20; //!< [31:12] + } B; +} hw_sim_scgc1_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SCGC1 register + */ +//@{ +#define HW_SIM_SCGC1_ADDR (REGS_SIM_BASE + 0x1028U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SCGC1 (*(__IO hw_sim_scgc1_t *) HW_SIM_SCGC1_ADDR) +#define HW_SIM_SCGC1_RD() (HW_SIM_SCGC1.U) +#define HW_SIM_SCGC1_WR(v) (HW_SIM_SCGC1.U = (v)) +#define HW_SIM_SCGC1_SET(v) (HW_SIM_SCGC1_WR(HW_SIM_SCGC1_RD() | (v))) +#define HW_SIM_SCGC1_CLR(v) (HW_SIM_SCGC1_WR(HW_SIM_SCGC1_RD() & ~(v))) +#define HW_SIM_SCGC1_TOG(v) (HW_SIM_SCGC1_WR(HW_SIM_SCGC1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SCGC1 bitfields + */ + +/*! + * @name Register SIM_SCGC1, field I2C2[6] (RW) + * + * This bit controls the clock gate to the I2C2 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC1_I2C2 (6U) //!< Bit position for SIM_SCGC1_I2C2. +#define BM_SIM_SCGC1_I2C2 (0x00000040U) //!< Bit mask for SIM_SCGC1_I2C2. +#define BS_SIM_SCGC1_I2C2 (1U) //!< Bit field size in bits for SIM_SCGC1_I2C2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC1_I2C2 field. +#define BR_SIM_SCGC1_I2C2 (BITBAND_ACCESS32(HW_SIM_SCGC1_ADDR, BP_SIM_SCGC1_I2C2)) +#endif + +//! @brief Format value for bitfield SIM_SCGC1_I2C2. +#define BF_SIM_SCGC1_I2C2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC1_I2C2), uint32_t) & BM_SIM_SCGC1_I2C2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the I2C2 field to a new value. +#define BW_SIM_SCGC1_I2C2(v) (BITBAND_ACCESS32(HW_SIM_SCGC1_ADDR, BP_SIM_SCGC1_I2C2) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC1, field UART4[10] (RW) + * + * This bit controls the clock gate to the UART4 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC1_UART4 (10U) //!< Bit position for SIM_SCGC1_UART4. +#define BM_SIM_SCGC1_UART4 (0x00000400U) //!< Bit mask for SIM_SCGC1_UART4. +#define BS_SIM_SCGC1_UART4 (1U) //!< Bit field size in bits for SIM_SCGC1_UART4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC1_UART4 field. +#define BR_SIM_SCGC1_UART4 (BITBAND_ACCESS32(HW_SIM_SCGC1_ADDR, BP_SIM_SCGC1_UART4)) +#endif + +//! @brief Format value for bitfield SIM_SCGC1_UART4. +#define BF_SIM_SCGC1_UART4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC1_UART4), uint32_t) & BM_SIM_SCGC1_UART4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART4 field to a new value. +#define BW_SIM_SCGC1_UART4(v) (BITBAND_ACCESS32(HW_SIM_SCGC1_ADDR, BP_SIM_SCGC1_UART4) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC1, field UART5[11] (RW) + * + * This bit controls the clock gate to the UART5 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC1_UART5 (11U) //!< Bit position for SIM_SCGC1_UART5. +#define BM_SIM_SCGC1_UART5 (0x00000800U) //!< Bit mask for SIM_SCGC1_UART5. +#define BS_SIM_SCGC1_UART5 (1U) //!< Bit field size in bits for SIM_SCGC1_UART5. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC1_UART5 field. +#define BR_SIM_SCGC1_UART5 (BITBAND_ACCESS32(HW_SIM_SCGC1_ADDR, BP_SIM_SCGC1_UART5)) +#endif + +//! @brief Format value for bitfield SIM_SCGC1_UART5. +#define BF_SIM_SCGC1_UART5(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC1_UART5), uint32_t) & BM_SIM_SCGC1_UART5) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART5 field to a new value. +#define BW_SIM_SCGC1_UART5(v) (BITBAND_ACCESS32(HW_SIM_SCGC1_ADDR, BP_SIM_SCGC1_UART5) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SCGC2 - System Clock Gating Control Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SCGC2 - System Clock Gating Control Register 2 (RW) + * + * Reset value: 0x00000000U + * + * DAC0 can be accessed through both AIPS0 and AIPS1. When accessing through + * AIPS1, define the clock gate control bits in the SCGC2. When accessing through + * AIPS0, define the clock gate control bits in SCGC6. + */ +typedef union _hw_sim_scgc2 +{ + uint32_t U; + struct _hw_sim_scgc2_bitfields + { + uint32_t ENETb : 1; //!< [0] ENET Clock Gate Control + uint32_t RESERVED0 : 11; //!< [11:1] + uint32_t DAC0b : 1; //!< [12] DAC0 Clock Gate Control + uint32_t DAC1b : 1; //!< [13] DAC1 Clock Gate Control + uint32_t RESERVED1 : 18; //!< [31:14] + } B; +} hw_sim_scgc2_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SCGC2 register + */ +//@{ +#define HW_SIM_SCGC2_ADDR (REGS_SIM_BASE + 0x102CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SCGC2 (*(__IO hw_sim_scgc2_t *) HW_SIM_SCGC2_ADDR) +#define HW_SIM_SCGC2_RD() (HW_SIM_SCGC2.U) +#define HW_SIM_SCGC2_WR(v) (HW_SIM_SCGC2.U = (v)) +#define HW_SIM_SCGC2_SET(v) (HW_SIM_SCGC2_WR(HW_SIM_SCGC2_RD() | (v))) +#define HW_SIM_SCGC2_CLR(v) (HW_SIM_SCGC2_WR(HW_SIM_SCGC2_RD() & ~(v))) +#define HW_SIM_SCGC2_TOG(v) (HW_SIM_SCGC2_WR(HW_SIM_SCGC2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SCGC2 bitfields + */ + +/*! + * @name Register SIM_SCGC2, field ENET[0] (RW) + * + * This bit controls the clock gate to the ENET module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC2_ENET (0U) //!< Bit position for SIM_SCGC2_ENET. +#define BM_SIM_SCGC2_ENET (0x00000001U) //!< Bit mask for SIM_SCGC2_ENET. +#define BS_SIM_SCGC2_ENET (1U) //!< Bit field size in bits for SIM_SCGC2_ENET. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC2_ENET field. +#define BR_SIM_SCGC2_ENET (BITBAND_ACCESS32(HW_SIM_SCGC2_ADDR, BP_SIM_SCGC2_ENET)) +#endif + +//! @brief Format value for bitfield SIM_SCGC2_ENET. +#define BF_SIM_SCGC2_ENET(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC2_ENET), uint32_t) & BM_SIM_SCGC2_ENET) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ENET field to a new value. +#define BW_SIM_SCGC2_ENET(v) (BITBAND_ACCESS32(HW_SIM_SCGC2_ADDR, BP_SIM_SCGC2_ENET) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC2, field DAC0[12] (RW) + * + * This bit controls the clock gate to the DAC0 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC2_DAC0 (12U) //!< Bit position for SIM_SCGC2_DAC0. +#define BM_SIM_SCGC2_DAC0 (0x00001000U) //!< Bit mask for SIM_SCGC2_DAC0. +#define BS_SIM_SCGC2_DAC0 (1U) //!< Bit field size in bits for SIM_SCGC2_DAC0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC2_DAC0 field. +#define BR_SIM_SCGC2_DAC0 (BITBAND_ACCESS32(HW_SIM_SCGC2_ADDR, BP_SIM_SCGC2_DAC0)) +#endif + +//! @brief Format value for bitfield SIM_SCGC2_DAC0. +#define BF_SIM_SCGC2_DAC0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC2_DAC0), uint32_t) & BM_SIM_SCGC2_DAC0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DAC0 field to a new value. +#define BW_SIM_SCGC2_DAC0(v) (BITBAND_ACCESS32(HW_SIM_SCGC2_ADDR, BP_SIM_SCGC2_DAC0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC2, field DAC1[13] (RW) + * + * This bit controls the clock gate to the DAC1 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC2_DAC1 (13U) //!< Bit position for SIM_SCGC2_DAC1. +#define BM_SIM_SCGC2_DAC1 (0x00002000U) //!< Bit mask for SIM_SCGC2_DAC1. +#define BS_SIM_SCGC2_DAC1 (1U) //!< Bit field size in bits for SIM_SCGC2_DAC1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC2_DAC1 field. +#define BR_SIM_SCGC2_DAC1 (BITBAND_ACCESS32(HW_SIM_SCGC2_ADDR, BP_SIM_SCGC2_DAC1)) +#endif + +//! @brief Format value for bitfield SIM_SCGC2_DAC1. +#define BF_SIM_SCGC2_DAC1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC2_DAC1), uint32_t) & BM_SIM_SCGC2_DAC1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DAC1 field to a new value. +#define BW_SIM_SCGC2_DAC1(v) (BITBAND_ACCESS32(HW_SIM_SCGC2_ADDR, BP_SIM_SCGC2_DAC1) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SCGC3 - System Clock Gating Control Register 3 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SCGC3 - System Clock Gating Control Register 3 (RW) + * + * Reset value: 0x00000000U + * + * FTM2 and RNGA can be accessed through both AIPS0 and AIPS1. When accessing + * through AIPS1, define the clock gate control bits in the SCGC3. When accessing + * through AIPS0, define the clock gate control bits in SCGC6. + */ +typedef union _hw_sim_scgc3 +{ + uint32_t U; + struct _hw_sim_scgc3_bitfields + { + uint32_t RNGA : 1; //!< [0] RNGA Clock Gate Control + uint32_t RESERVED0 : 11; //!< [11:1] + uint32_t SPI2b : 1; //!< [12] SPI2 Clock Gate Control + uint32_t RESERVED1 : 4; //!< [16:13] + uint32_t SDHCb : 1; //!< [17] SDHC Clock Gate Control + uint32_t RESERVED2 : 6; //!< [23:18] + uint32_t FTM2b : 1; //!< [24] FTM2 Clock Gate Control + uint32_t FTM3b : 1; //!< [25] FTM3 Clock Gate Control + uint32_t RESERVED3 : 1; //!< [26] + uint32_t ADC1b : 1; //!< [27] ADC1 Clock Gate Control + uint32_t RESERVED4 : 4; //!< [31:28] + } B; +} hw_sim_scgc3_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SCGC3 register + */ +//@{ +#define HW_SIM_SCGC3_ADDR (REGS_SIM_BASE + 0x1030U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SCGC3 (*(__IO hw_sim_scgc3_t *) HW_SIM_SCGC3_ADDR) +#define HW_SIM_SCGC3_RD() (HW_SIM_SCGC3.U) +#define HW_SIM_SCGC3_WR(v) (HW_SIM_SCGC3.U = (v)) +#define HW_SIM_SCGC3_SET(v) (HW_SIM_SCGC3_WR(HW_SIM_SCGC3_RD() | (v))) +#define HW_SIM_SCGC3_CLR(v) (HW_SIM_SCGC3_WR(HW_SIM_SCGC3_RD() & ~(v))) +#define HW_SIM_SCGC3_TOG(v) (HW_SIM_SCGC3_WR(HW_SIM_SCGC3_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SCGC3 bitfields + */ + +/*! + * @name Register SIM_SCGC3, field RNGA[0] (RW) + * + * This bit controls the clock gate to the RNGA module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC3_RNGA (0U) //!< Bit position for SIM_SCGC3_RNGA. +#define BM_SIM_SCGC3_RNGA (0x00000001U) //!< Bit mask for SIM_SCGC3_RNGA. +#define BS_SIM_SCGC3_RNGA (1U) //!< Bit field size in bits for SIM_SCGC3_RNGA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC3_RNGA field. +#define BR_SIM_SCGC3_RNGA (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_RNGA)) +#endif + +//! @brief Format value for bitfield SIM_SCGC3_RNGA. +#define BF_SIM_SCGC3_RNGA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC3_RNGA), uint32_t) & BM_SIM_SCGC3_RNGA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RNGA field to a new value. +#define BW_SIM_SCGC3_RNGA(v) (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_RNGA) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC3, field SPI2[12] (RW) + * + * This bit controls the clock gate to the SPI2 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC3_SPI2 (12U) //!< Bit position for SIM_SCGC3_SPI2. +#define BM_SIM_SCGC3_SPI2 (0x00001000U) //!< Bit mask for SIM_SCGC3_SPI2. +#define BS_SIM_SCGC3_SPI2 (1U) //!< Bit field size in bits for SIM_SCGC3_SPI2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC3_SPI2 field. +#define BR_SIM_SCGC3_SPI2 (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_SPI2)) +#endif + +//! @brief Format value for bitfield SIM_SCGC3_SPI2. +#define BF_SIM_SCGC3_SPI2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC3_SPI2), uint32_t) & BM_SIM_SCGC3_SPI2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SPI2 field to a new value. +#define BW_SIM_SCGC3_SPI2(v) (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_SPI2) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC3, field SDHC[17] (RW) + * + * This bit controls the clock gate to the SDHC module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC3_SDHC (17U) //!< Bit position for SIM_SCGC3_SDHC. +#define BM_SIM_SCGC3_SDHC (0x00020000U) //!< Bit mask for SIM_SCGC3_SDHC. +#define BS_SIM_SCGC3_SDHC (1U) //!< Bit field size in bits for SIM_SCGC3_SDHC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC3_SDHC field. +#define BR_SIM_SCGC3_SDHC (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_SDHC)) +#endif + +//! @brief Format value for bitfield SIM_SCGC3_SDHC. +#define BF_SIM_SCGC3_SDHC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC3_SDHC), uint32_t) & BM_SIM_SCGC3_SDHC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SDHC field to a new value. +#define BW_SIM_SCGC3_SDHC(v) (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_SDHC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC3, field FTM2[24] (RW) + * + * This bit controls the clock gate to the FTM2 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC3_FTM2 (24U) //!< Bit position for SIM_SCGC3_FTM2. +#define BM_SIM_SCGC3_FTM2 (0x01000000U) //!< Bit mask for SIM_SCGC3_FTM2. +#define BS_SIM_SCGC3_FTM2 (1U) //!< Bit field size in bits for SIM_SCGC3_FTM2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC3_FTM2 field. +#define BR_SIM_SCGC3_FTM2 (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_FTM2)) +#endif + +//! @brief Format value for bitfield SIM_SCGC3_FTM2. +#define BF_SIM_SCGC3_FTM2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC3_FTM2), uint32_t) & BM_SIM_SCGC3_FTM2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM2 field to a new value. +#define BW_SIM_SCGC3_FTM2(v) (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_FTM2) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC3, field FTM3[25] (RW) + * + * This bit controls the clock gate to the FTM3 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC3_FTM3 (25U) //!< Bit position for SIM_SCGC3_FTM3. +#define BM_SIM_SCGC3_FTM3 (0x02000000U) //!< Bit mask for SIM_SCGC3_FTM3. +#define BS_SIM_SCGC3_FTM3 (1U) //!< Bit field size in bits for SIM_SCGC3_FTM3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC3_FTM3 field. +#define BR_SIM_SCGC3_FTM3 (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_FTM3)) +#endif + +//! @brief Format value for bitfield SIM_SCGC3_FTM3. +#define BF_SIM_SCGC3_FTM3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC3_FTM3), uint32_t) & BM_SIM_SCGC3_FTM3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM3 field to a new value. +#define BW_SIM_SCGC3_FTM3(v) (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_FTM3) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC3, field ADC1[27] (RW) + * + * This bit controls the clock gate to the ADC1 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC3_ADC1 (27U) //!< Bit position for SIM_SCGC3_ADC1. +#define BM_SIM_SCGC3_ADC1 (0x08000000U) //!< Bit mask for SIM_SCGC3_ADC1. +#define BS_SIM_SCGC3_ADC1 (1U) //!< Bit field size in bits for SIM_SCGC3_ADC1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC3_ADC1 field. +#define BR_SIM_SCGC3_ADC1 (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_ADC1)) +#endif + +//! @brief Format value for bitfield SIM_SCGC3_ADC1. +#define BF_SIM_SCGC3_ADC1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC3_ADC1), uint32_t) & BM_SIM_SCGC3_ADC1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADC1 field to a new value. +#define BW_SIM_SCGC3_ADC1(v) (BITBAND_ACCESS32(HW_SIM_SCGC3_ADDR, BP_SIM_SCGC3_ADC1) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SCGC4 - System Clock Gating Control Register 4 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SCGC4 - System Clock Gating Control Register 4 (RW) + * + * Reset value: 0xF0100030U + */ +typedef union _hw_sim_scgc4 +{ + uint32_t U; + struct _hw_sim_scgc4_bitfields + { + uint32_t RESERVED0 : 1; //!< [0] + uint32_t EWMb : 1; //!< [1] EWM Clock Gate Control + uint32_t CMTb : 1; //!< [2] CMT Clock Gate Control + uint32_t RESERVED1 : 3; //!< [5:3] + uint32_t I2C0b : 1; //!< [6] I2C0 Clock Gate Control + uint32_t I2C1b : 1; //!< [7] I2C1 Clock Gate Control + uint32_t RESERVED2 : 2; //!< [9:8] + uint32_t UART0b : 1; //!< [10] UART0 Clock Gate Control + uint32_t UART1b : 1; //!< [11] UART1 Clock Gate Control + uint32_t UART2b : 1; //!< [12] UART2 Clock Gate Control + uint32_t UART3b : 1; //!< [13] UART3 Clock Gate Control + uint32_t RESERVED3 : 4; //!< [17:14] + uint32_t USBOTG : 1; //!< [18] USB Clock Gate Control + uint32_t CMP : 1; //!< [19] Comparator Clock Gate Control + uint32_t VREFb : 1; //!< [20] VREF Clock Gate Control + uint32_t RESERVED4 : 11; //!< [31:21] + } B; +} hw_sim_scgc4_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SCGC4 register + */ +//@{ +#define HW_SIM_SCGC4_ADDR (REGS_SIM_BASE + 0x1034U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SCGC4 (*(__IO hw_sim_scgc4_t *) HW_SIM_SCGC4_ADDR) +#define HW_SIM_SCGC4_RD() (HW_SIM_SCGC4.U) +#define HW_SIM_SCGC4_WR(v) (HW_SIM_SCGC4.U = (v)) +#define HW_SIM_SCGC4_SET(v) (HW_SIM_SCGC4_WR(HW_SIM_SCGC4_RD() | (v))) +#define HW_SIM_SCGC4_CLR(v) (HW_SIM_SCGC4_WR(HW_SIM_SCGC4_RD() & ~(v))) +#define HW_SIM_SCGC4_TOG(v) (HW_SIM_SCGC4_WR(HW_SIM_SCGC4_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SCGC4 bitfields + */ + +/*! + * @name Register SIM_SCGC4, field EWM[1] (RW) + * + * This bit controls the clock gate to the EWM module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_EWM (1U) //!< Bit position for SIM_SCGC4_EWM. +#define BM_SIM_SCGC4_EWM (0x00000002U) //!< Bit mask for SIM_SCGC4_EWM. +#define BS_SIM_SCGC4_EWM (1U) //!< Bit field size in bits for SIM_SCGC4_EWM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_EWM field. +#define BR_SIM_SCGC4_EWM (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_EWM)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_EWM. +#define BF_SIM_SCGC4_EWM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_EWM), uint32_t) & BM_SIM_SCGC4_EWM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EWM field to a new value. +#define BW_SIM_SCGC4_EWM(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_EWM) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field CMT[2] (RW) + * + * This bit controls the clock gate to the CMT module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_CMT (2U) //!< Bit position for SIM_SCGC4_CMT. +#define BM_SIM_SCGC4_CMT (0x00000004U) //!< Bit mask for SIM_SCGC4_CMT. +#define BS_SIM_SCGC4_CMT (1U) //!< Bit field size in bits for SIM_SCGC4_CMT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_CMT field. +#define BR_SIM_SCGC4_CMT (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_CMT)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_CMT. +#define BF_SIM_SCGC4_CMT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_CMT), uint32_t) & BM_SIM_SCGC4_CMT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CMT field to a new value. +#define BW_SIM_SCGC4_CMT(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_CMT) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field I2C0[6] (RW) + * + * This bit controls the clock gate to the I 2 C0 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_I2C0 (6U) //!< Bit position for SIM_SCGC4_I2C0. +#define BM_SIM_SCGC4_I2C0 (0x00000040U) //!< Bit mask for SIM_SCGC4_I2C0. +#define BS_SIM_SCGC4_I2C0 (1U) //!< Bit field size in bits for SIM_SCGC4_I2C0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_I2C0 field. +#define BR_SIM_SCGC4_I2C0 (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_I2C0)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_I2C0. +#define BF_SIM_SCGC4_I2C0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_I2C0), uint32_t) & BM_SIM_SCGC4_I2C0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the I2C0 field to a new value. +#define BW_SIM_SCGC4_I2C0(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_I2C0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field I2C1[7] (RW) + * + * This bit controls the clock gate to the I 2 C1 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_I2C1 (7U) //!< Bit position for SIM_SCGC4_I2C1. +#define BM_SIM_SCGC4_I2C1 (0x00000080U) //!< Bit mask for SIM_SCGC4_I2C1. +#define BS_SIM_SCGC4_I2C1 (1U) //!< Bit field size in bits for SIM_SCGC4_I2C1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_I2C1 field. +#define BR_SIM_SCGC4_I2C1 (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_I2C1)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_I2C1. +#define BF_SIM_SCGC4_I2C1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_I2C1), uint32_t) & BM_SIM_SCGC4_I2C1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the I2C1 field to a new value. +#define BW_SIM_SCGC4_I2C1(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_I2C1) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field UART0[10] (RW) + * + * This bit controls the clock gate to the UART0 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_UART0 (10U) //!< Bit position for SIM_SCGC4_UART0. +#define BM_SIM_SCGC4_UART0 (0x00000400U) //!< Bit mask for SIM_SCGC4_UART0. +#define BS_SIM_SCGC4_UART0 (1U) //!< Bit field size in bits for SIM_SCGC4_UART0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_UART0 field. +#define BR_SIM_SCGC4_UART0 (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_UART0)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_UART0. +#define BF_SIM_SCGC4_UART0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_UART0), uint32_t) & BM_SIM_SCGC4_UART0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART0 field to a new value. +#define BW_SIM_SCGC4_UART0(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_UART0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field UART1[11] (RW) + * + * This bit controls the clock gate to the UART1 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_UART1 (11U) //!< Bit position for SIM_SCGC4_UART1. +#define BM_SIM_SCGC4_UART1 (0x00000800U) //!< Bit mask for SIM_SCGC4_UART1. +#define BS_SIM_SCGC4_UART1 (1U) //!< Bit field size in bits for SIM_SCGC4_UART1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_UART1 field. +#define BR_SIM_SCGC4_UART1 (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_UART1)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_UART1. +#define BF_SIM_SCGC4_UART1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_UART1), uint32_t) & BM_SIM_SCGC4_UART1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART1 field to a new value. +#define BW_SIM_SCGC4_UART1(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_UART1) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field UART2[12] (RW) + * + * This bit controls the clock gate to the UART2 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_UART2 (12U) //!< Bit position for SIM_SCGC4_UART2. +#define BM_SIM_SCGC4_UART2 (0x00001000U) //!< Bit mask for SIM_SCGC4_UART2. +#define BS_SIM_SCGC4_UART2 (1U) //!< Bit field size in bits for SIM_SCGC4_UART2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_UART2 field. +#define BR_SIM_SCGC4_UART2 (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_UART2)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_UART2. +#define BF_SIM_SCGC4_UART2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_UART2), uint32_t) & BM_SIM_SCGC4_UART2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART2 field to a new value. +#define BW_SIM_SCGC4_UART2(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_UART2) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field UART3[13] (RW) + * + * This bit controls the clock gate to the UART3 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_UART3 (13U) //!< Bit position for SIM_SCGC4_UART3. +#define BM_SIM_SCGC4_UART3 (0x00002000U) //!< Bit mask for SIM_SCGC4_UART3. +#define BS_SIM_SCGC4_UART3 (1U) //!< Bit field size in bits for SIM_SCGC4_UART3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_UART3 field. +#define BR_SIM_SCGC4_UART3 (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_UART3)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_UART3. +#define BF_SIM_SCGC4_UART3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_UART3), uint32_t) & BM_SIM_SCGC4_UART3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UART3 field to a new value. +#define BW_SIM_SCGC4_UART3(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_UART3) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field USBOTG[18] (RW) + * + * This bit controls the clock gate to the USB module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_USBOTG (18U) //!< Bit position for SIM_SCGC4_USBOTG. +#define BM_SIM_SCGC4_USBOTG (0x00040000U) //!< Bit mask for SIM_SCGC4_USBOTG. +#define BS_SIM_SCGC4_USBOTG (1U) //!< Bit field size in bits for SIM_SCGC4_USBOTG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_USBOTG field. +#define BR_SIM_SCGC4_USBOTG (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_USBOTG)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_USBOTG. +#define BF_SIM_SCGC4_USBOTG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_USBOTG), uint32_t) & BM_SIM_SCGC4_USBOTG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBOTG field to a new value. +#define BW_SIM_SCGC4_USBOTG(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_USBOTG) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field CMP[19] (RW) + * + * This bit controls the clock gate to the comparator module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_CMP (19U) //!< Bit position for SIM_SCGC4_CMP. +#define BM_SIM_SCGC4_CMP (0x00080000U) //!< Bit mask for SIM_SCGC4_CMP. +#define BS_SIM_SCGC4_CMP (1U) //!< Bit field size in bits for SIM_SCGC4_CMP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_CMP field. +#define BR_SIM_SCGC4_CMP (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_CMP)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_CMP. +#define BF_SIM_SCGC4_CMP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_CMP), uint32_t) & BM_SIM_SCGC4_CMP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CMP field to a new value. +#define BW_SIM_SCGC4_CMP(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_CMP) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC4, field VREF[20] (RW) + * + * This bit controls the clock gate to the VREF module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC4_VREF (20U) //!< Bit position for SIM_SCGC4_VREF. +#define BM_SIM_SCGC4_VREF (0x00100000U) //!< Bit mask for SIM_SCGC4_VREF. +#define BS_SIM_SCGC4_VREF (1U) //!< Bit field size in bits for SIM_SCGC4_VREF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC4_VREF field. +#define BR_SIM_SCGC4_VREF (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_VREF)) +#endif + +//! @brief Format value for bitfield SIM_SCGC4_VREF. +#define BF_SIM_SCGC4_VREF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC4_VREF), uint32_t) & BM_SIM_SCGC4_VREF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the VREF field to a new value. +#define BW_SIM_SCGC4_VREF(v) (BITBAND_ACCESS32(HW_SIM_SCGC4_ADDR, BP_SIM_SCGC4_VREF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SCGC5 - System Clock Gating Control Register 5 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SCGC5 - System Clock Gating Control Register 5 (RW) + * + * Reset value: 0x00040182U + */ +typedef union _hw_sim_scgc5 +{ + uint32_t U; + struct _hw_sim_scgc5_bitfields + { + uint32_t LPTMR : 1; //!< [0] Low Power Timer Access Control + uint32_t RESERVED0 : 8; //!< [8:1] + uint32_t PORTAb : 1; //!< [9] Port A Clock Gate Control + uint32_t PORTBb : 1; //!< [10] Port B Clock Gate Control + uint32_t PORTCb : 1; //!< [11] Port C Clock Gate Control + uint32_t PORTDb : 1; //!< [12] Port D Clock Gate Control + uint32_t PORTEb : 1; //!< [13] Port E Clock Gate Control + uint32_t RESERVED1 : 18; //!< [31:14] + } B; +} hw_sim_scgc5_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SCGC5 register + */ +//@{ +#define HW_SIM_SCGC5_ADDR (REGS_SIM_BASE + 0x1038U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SCGC5 (*(__IO hw_sim_scgc5_t *) HW_SIM_SCGC5_ADDR) +#define HW_SIM_SCGC5_RD() (HW_SIM_SCGC5.U) +#define HW_SIM_SCGC5_WR(v) (HW_SIM_SCGC5.U = (v)) +#define HW_SIM_SCGC5_SET(v) (HW_SIM_SCGC5_WR(HW_SIM_SCGC5_RD() | (v))) +#define HW_SIM_SCGC5_CLR(v) (HW_SIM_SCGC5_WR(HW_SIM_SCGC5_RD() & ~(v))) +#define HW_SIM_SCGC5_TOG(v) (HW_SIM_SCGC5_WR(HW_SIM_SCGC5_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SCGC5 bitfields + */ + +/*! + * @name Register SIM_SCGC5, field LPTMR[0] (RW) + * + * This bit controls software access to the Low Power Timer module. + * + * Values: + * - 0 - Access disabled + * - 1 - Access enabled + */ +//@{ +#define BP_SIM_SCGC5_LPTMR (0U) //!< Bit position for SIM_SCGC5_LPTMR. +#define BM_SIM_SCGC5_LPTMR (0x00000001U) //!< Bit mask for SIM_SCGC5_LPTMR. +#define BS_SIM_SCGC5_LPTMR (1U) //!< Bit field size in bits for SIM_SCGC5_LPTMR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC5_LPTMR field. +#define BR_SIM_SCGC5_LPTMR (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_LPTMR)) +#endif + +//! @brief Format value for bitfield SIM_SCGC5_LPTMR. +#define BF_SIM_SCGC5_LPTMR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC5_LPTMR), uint32_t) & BM_SIM_SCGC5_LPTMR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LPTMR field to a new value. +#define BW_SIM_SCGC5_LPTMR(v) (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_LPTMR) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC5, field PORTA[9] (RW) + * + * This bit controls the clock gate to the Port A module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC5_PORTA (9U) //!< Bit position for SIM_SCGC5_PORTA. +#define BM_SIM_SCGC5_PORTA (0x00000200U) //!< Bit mask for SIM_SCGC5_PORTA. +#define BS_SIM_SCGC5_PORTA (1U) //!< Bit field size in bits for SIM_SCGC5_PORTA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC5_PORTA field. +#define BR_SIM_SCGC5_PORTA (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTA)) +#endif + +//! @brief Format value for bitfield SIM_SCGC5_PORTA. +#define BF_SIM_SCGC5_PORTA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC5_PORTA), uint32_t) & BM_SIM_SCGC5_PORTA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PORTA field to a new value. +#define BW_SIM_SCGC5_PORTA(v) (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTA) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC5, field PORTB[10] (RW) + * + * This bit controls the clock gate to the Port B module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC5_PORTB (10U) //!< Bit position for SIM_SCGC5_PORTB. +#define BM_SIM_SCGC5_PORTB (0x00000400U) //!< Bit mask for SIM_SCGC5_PORTB. +#define BS_SIM_SCGC5_PORTB (1U) //!< Bit field size in bits for SIM_SCGC5_PORTB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC5_PORTB field. +#define BR_SIM_SCGC5_PORTB (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTB)) +#endif + +//! @brief Format value for bitfield SIM_SCGC5_PORTB. +#define BF_SIM_SCGC5_PORTB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC5_PORTB), uint32_t) & BM_SIM_SCGC5_PORTB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PORTB field to a new value. +#define BW_SIM_SCGC5_PORTB(v) (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTB) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC5, field PORTC[11] (RW) + * + * This bit controls the clock gate to the Port C module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC5_PORTC (11U) //!< Bit position for SIM_SCGC5_PORTC. +#define BM_SIM_SCGC5_PORTC (0x00000800U) //!< Bit mask for SIM_SCGC5_PORTC. +#define BS_SIM_SCGC5_PORTC (1U) //!< Bit field size in bits for SIM_SCGC5_PORTC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC5_PORTC field. +#define BR_SIM_SCGC5_PORTC (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTC)) +#endif + +//! @brief Format value for bitfield SIM_SCGC5_PORTC. +#define BF_SIM_SCGC5_PORTC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC5_PORTC), uint32_t) & BM_SIM_SCGC5_PORTC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PORTC field to a new value. +#define BW_SIM_SCGC5_PORTC(v) (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC5, field PORTD[12] (RW) + * + * This bit controls the clock gate to the Port D module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC5_PORTD (12U) //!< Bit position for SIM_SCGC5_PORTD. +#define BM_SIM_SCGC5_PORTD (0x00001000U) //!< Bit mask for SIM_SCGC5_PORTD. +#define BS_SIM_SCGC5_PORTD (1U) //!< Bit field size in bits for SIM_SCGC5_PORTD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC5_PORTD field. +#define BR_SIM_SCGC5_PORTD (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTD)) +#endif + +//! @brief Format value for bitfield SIM_SCGC5_PORTD. +#define BF_SIM_SCGC5_PORTD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC5_PORTD), uint32_t) & BM_SIM_SCGC5_PORTD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PORTD field to a new value. +#define BW_SIM_SCGC5_PORTD(v) (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTD) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC5, field PORTE[13] (RW) + * + * This bit controls the clock gate to the Port E module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC5_PORTE (13U) //!< Bit position for SIM_SCGC5_PORTE. +#define BM_SIM_SCGC5_PORTE (0x00002000U) //!< Bit mask for SIM_SCGC5_PORTE. +#define BS_SIM_SCGC5_PORTE (1U) //!< Bit field size in bits for SIM_SCGC5_PORTE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC5_PORTE field. +#define BR_SIM_SCGC5_PORTE (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTE)) +#endif + +//! @brief Format value for bitfield SIM_SCGC5_PORTE. +#define BF_SIM_SCGC5_PORTE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC5_PORTE), uint32_t) & BM_SIM_SCGC5_PORTE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PORTE field to a new value. +#define BW_SIM_SCGC5_PORTE(v) (BITBAND_ACCESS32(HW_SIM_SCGC5_ADDR, BP_SIM_SCGC5_PORTE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SCGC6 - System Clock Gating Control Register 6 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SCGC6 - System Clock Gating Control Register 6 (RW) + * + * Reset value: 0x40000001U + * + * DAC0, FTM2, and RNGA can be accessed through both AIPS0 and AIPS1. When + * accessing through AIPS1, define the clock gate control bits in the SCGC2 and SCGC3. + * When accessing through AIPS0, define the clock gate control bits in SCGC6. + */ +typedef union _hw_sim_scgc6 +{ + uint32_t U; + struct _hw_sim_scgc6_bitfields + { + uint32_t FTF : 1; //!< [0] Flash Memory Clock Gate Control + uint32_t DMAMUXb : 1; //!< [1] DMA Mux Clock Gate Control + uint32_t RESERVED0 : 2; //!< [3:2] + uint32_t FLEXCAN0 : 1; //!< [4] FlexCAN0 Clock Gate Control + uint32_t RESERVED1 : 4; //!< [8:5] + uint32_t RNGA : 1; //!< [9] RNGA Clock Gate Control + uint32_t RESERVED2 : 2; //!< [11:10] + uint32_t SPI0b : 1; //!< [12] SPI0 Clock Gate Control + uint32_t SPI1b : 1; //!< [13] SPI1 Clock Gate Control + uint32_t RESERVED3 : 1; //!< [14] + uint32_t I2S : 1; //!< [15] I2S Clock Gate Control + uint32_t RESERVED4 : 2; //!< [17:16] + uint32_t CRCb : 1; //!< [18] CRC Clock Gate Control + uint32_t RESERVED5 : 2; //!< [20:19] + uint32_t USBDCDb : 1; //!< [21] USB DCD Clock Gate Control + uint32_t PDB : 1; //!< [22] PDB Clock Gate Control + uint32_t PITb : 1; //!< [23] PIT Clock Gate Control + uint32_t FTM0b : 1; //!< [24] FTM0 Clock Gate Control + uint32_t FTM1b : 1; //!< [25] FTM1 Clock Gate Control + uint32_t FTM2b : 1; //!< [26] FTM2 Clock Gate Control + uint32_t ADC0b : 1; //!< [27] ADC0 Clock Gate Control + uint32_t RESERVED6 : 1; //!< [28] + uint32_t RTCb : 1; //!< [29] RTC Access Control + uint32_t RESERVED7 : 1; //!< [30] + uint32_t DAC0b : 1; //!< [31] DAC0 Clock Gate Control + } B; +} hw_sim_scgc6_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SCGC6 register + */ +//@{ +#define HW_SIM_SCGC6_ADDR (REGS_SIM_BASE + 0x103CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SCGC6 (*(__IO hw_sim_scgc6_t *) HW_SIM_SCGC6_ADDR) +#define HW_SIM_SCGC6_RD() (HW_SIM_SCGC6.U) +#define HW_SIM_SCGC6_WR(v) (HW_SIM_SCGC6.U = (v)) +#define HW_SIM_SCGC6_SET(v) (HW_SIM_SCGC6_WR(HW_SIM_SCGC6_RD() | (v))) +#define HW_SIM_SCGC6_CLR(v) (HW_SIM_SCGC6_WR(HW_SIM_SCGC6_RD() & ~(v))) +#define HW_SIM_SCGC6_TOG(v) (HW_SIM_SCGC6_WR(HW_SIM_SCGC6_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SCGC6 bitfields + */ + +/*! + * @name Register SIM_SCGC6, field FTF[0] (RW) + * + * This bit controls the clock gate to the flash memory. Flash reads are still + * supported while the flash memory is clock gated, but entry into low power modes + * is blocked. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_FTF (0U) //!< Bit position for SIM_SCGC6_FTF. +#define BM_SIM_SCGC6_FTF (0x00000001U) //!< Bit mask for SIM_SCGC6_FTF. +#define BS_SIM_SCGC6_FTF (1U) //!< Bit field size in bits for SIM_SCGC6_FTF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_FTF field. +#define BR_SIM_SCGC6_FTF (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FTF)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_FTF. +#define BF_SIM_SCGC6_FTF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_FTF), uint32_t) & BM_SIM_SCGC6_FTF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTF field to a new value. +#define BW_SIM_SCGC6_FTF(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FTF) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field DMAMUX[1] (RW) + * + * This bit controls the clock gate to the DMA Mux module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_DMAMUX (1U) //!< Bit position for SIM_SCGC6_DMAMUX. +#define BM_SIM_SCGC6_DMAMUX (0x00000002U) //!< Bit mask for SIM_SCGC6_DMAMUX. +#define BS_SIM_SCGC6_DMAMUX (1U) //!< Bit field size in bits for SIM_SCGC6_DMAMUX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_DMAMUX field. +#define BR_SIM_SCGC6_DMAMUX (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_DMAMUX)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_DMAMUX. +#define BF_SIM_SCGC6_DMAMUX(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_DMAMUX), uint32_t) & BM_SIM_SCGC6_DMAMUX) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAMUX field to a new value. +#define BW_SIM_SCGC6_DMAMUX(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_DMAMUX) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field FLEXCAN0[4] (RW) + * + * This bit controls the clock gate to the FlexCAN0 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_FLEXCAN0 (4U) //!< Bit position for SIM_SCGC6_FLEXCAN0. +#define BM_SIM_SCGC6_FLEXCAN0 (0x00000010U) //!< Bit mask for SIM_SCGC6_FLEXCAN0. +#define BS_SIM_SCGC6_FLEXCAN0 (1U) //!< Bit field size in bits for SIM_SCGC6_FLEXCAN0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_FLEXCAN0 field. +#define BR_SIM_SCGC6_FLEXCAN0 (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FLEXCAN0)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_FLEXCAN0. +#define BF_SIM_SCGC6_FLEXCAN0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_FLEXCAN0), uint32_t) & BM_SIM_SCGC6_FLEXCAN0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLEXCAN0 field to a new value. +#define BW_SIM_SCGC6_FLEXCAN0(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FLEXCAN0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field RNGA[9] (RW) + * + * This bit controls the clock gate to the RNGA module. + */ +//@{ +#define BP_SIM_SCGC6_RNGA (9U) //!< Bit position for SIM_SCGC6_RNGA. +#define BM_SIM_SCGC6_RNGA (0x00000200U) //!< Bit mask for SIM_SCGC6_RNGA. +#define BS_SIM_SCGC6_RNGA (1U) //!< Bit field size in bits for SIM_SCGC6_RNGA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_RNGA field. +#define BR_SIM_SCGC6_RNGA (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_RNGA)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_RNGA. +#define BF_SIM_SCGC6_RNGA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_RNGA), uint32_t) & BM_SIM_SCGC6_RNGA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RNGA field to a new value. +#define BW_SIM_SCGC6_RNGA(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_RNGA) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field SPI0[12] (RW) + * + * This bit controls the clock gate to the SPI0 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_SPI0 (12U) //!< Bit position for SIM_SCGC6_SPI0. +#define BM_SIM_SCGC6_SPI0 (0x00001000U) //!< Bit mask for SIM_SCGC6_SPI0. +#define BS_SIM_SCGC6_SPI0 (1U) //!< Bit field size in bits for SIM_SCGC6_SPI0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_SPI0 field. +#define BR_SIM_SCGC6_SPI0 (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_SPI0)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_SPI0. +#define BF_SIM_SCGC6_SPI0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_SPI0), uint32_t) & BM_SIM_SCGC6_SPI0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SPI0 field to a new value. +#define BW_SIM_SCGC6_SPI0(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_SPI0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field SPI1[13] (RW) + * + * This bit controls the clock gate to the SPI1 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_SPI1 (13U) //!< Bit position for SIM_SCGC6_SPI1. +#define BM_SIM_SCGC6_SPI1 (0x00002000U) //!< Bit mask for SIM_SCGC6_SPI1. +#define BS_SIM_SCGC6_SPI1 (1U) //!< Bit field size in bits for SIM_SCGC6_SPI1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_SPI1 field. +#define BR_SIM_SCGC6_SPI1 (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_SPI1)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_SPI1. +#define BF_SIM_SCGC6_SPI1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_SPI1), uint32_t) & BM_SIM_SCGC6_SPI1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SPI1 field to a new value. +#define BW_SIM_SCGC6_SPI1(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_SPI1) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field I2S[15] (RW) + * + * This bit controls the clock gate to the I 2 S module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_I2S (15U) //!< Bit position for SIM_SCGC6_I2S. +#define BM_SIM_SCGC6_I2S (0x00008000U) //!< Bit mask for SIM_SCGC6_I2S. +#define BS_SIM_SCGC6_I2S (1U) //!< Bit field size in bits for SIM_SCGC6_I2S. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_I2S field. +#define BR_SIM_SCGC6_I2S (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_I2S)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_I2S. +#define BF_SIM_SCGC6_I2S(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_I2S), uint32_t) & BM_SIM_SCGC6_I2S) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the I2S field to a new value. +#define BW_SIM_SCGC6_I2S(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_I2S) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field CRC[18] (RW) + * + * This bit controls the clock gate to the CRC module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_CRC (18U) //!< Bit position for SIM_SCGC6_CRC. +#define BM_SIM_SCGC6_CRC (0x00040000U) //!< Bit mask for SIM_SCGC6_CRC. +#define BS_SIM_SCGC6_CRC (1U) //!< Bit field size in bits for SIM_SCGC6_CRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_CRC field. +#define BR_SIM_SCGC6_CRC (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_CRC)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_CRC. +#define BF_SIM_SCGC6_CRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_CRC), uint32_t) & BM_SIM_SCGC6_CRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRC field to a new value. +#define BW_SIM_SCGC6_CRC(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_CRC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field USBDCD[21] (RW) + * + * This bit controls the clock gate to the USB DCD module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_USBDCD (21U) //!< Bit position for SIM_SCGC6_USBDCD. +#define BM_SIM_SCGC6_USBDCD (0x00200000U) //!< Bit mask for SIM_SCGC6_USBDCD. +#define BS_SIM_SCGC6_USBDCD (1U) //!< Bit field size in bits for SIM_SCGC6_USBDCD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_USBDCD field. +#define BR_SIM_SCGC6_USBDCD (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_USBDCD)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_USBDCD. +#define BF_SIM_SCGC6_USBDCD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_USBDCD), uint32_t) & BM_SIM_SCGC6_USBDCD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBDCD field to a new value. +#define BW_SIM_SCGC6_USBDCD(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_USBDCD) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field PDB[22] (RW) + * + * This bit controls the clock gate to the PDB module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_PDB (22U) //!< Bit position for SIM_SCGC6_PDB. +#define BM_SIM_SCGC6_PDB (0x00400000U) //!< Bit mask for SIM_SCGC6_PDB. +#define BS_SIM_SCGC6_PDB (1U) //!< Bit field size in bits for SIM_SCGC6_PDB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_PDB field. +#define BR_SIM_SCGC6_PDB (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_PDB)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_PDB. +#define BF_SIM_SCGC6_PDB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_PDB), uint32_t) & BM_SIM_SCGC6_PDB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PDB field to a new value. +#define BW_SIM_SCGC6_PDB(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_PDB) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field PIT[23] (RW) + * + * This bit controls the clock gate to the PIT module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_PIT (23U) //!< Bit position for SIM_SCGC6_PIT. +#define BM_SIM_SCGC6_PIT (0x00800000U) //!< Bit mask for SIM_SCGC6_PIT. +#define BS_SIM_SCGC6_PIT (1U) //!< Bit field size in bits for SIM_SCGC6_PIT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_PIT field. +#define BR_SIM_SCGC6_PIT (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_PIT)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_PIT. +#define BF_SIM_SCGC6_PIT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_PIT), uint32_t) & BM_SIM_SCGC6_PIT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PIT field to a new value. +#define BW_SIM_SCGC6_PIT(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_PIT) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field FTM0[24] (RW) + * + * This bit controls the clock gate to the FTM0 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_FTM0 (24U) //!< Bit position for SIM_SCGC6_FTM0. +#define BM_SIM_SCGC6_FTM0 (0x01000000U) //!< Bit mask for SIM_SCGC6_FTM0. +#define BS_SIM_SCGC6_FTM0 (1U) //!< Bit field size in bits for SIM_SCGC6_FTM0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_FTM0 field. +#define BR_SIM_SCGC6_FTM0 (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FTM0)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_FTM0. +#define BF_SIM_SCGC6_FTM0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_FTM0), uint32_t) & BM_SIM_SCGC6_FTM0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM0 field to a new value. +#define BW_SIM_SCGC6_FTM0(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FTM0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field FTM1[25] (RW) + * + * This bit controls the clock gate to the FTM1 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_FTM1 (25U) //!< Bit position for SIM_SCGC6_FTM1. +#define BM_SIM_SCGC6_FTM1 (0x02000000U) //!< Bit mask for SIM_SCGC6_FTM1. +#define BS_SIM_SCGC6_FTM1 (1U) //!< Bit field size in bits for SIM_SCGC6_FTM1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_FTM1 field. +#define BR_SIM_SCGC6_FTM1 (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FTM1)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_FTM1. +#define BF_SIM_SCGC6_FTM1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_FTM1), uint32_t) & BM_SIM_SCGC6_FTM1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM1 field to a new value. +#define BW_SIM_SCGC6_FTM1(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FTM1) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field FTM2[26] (RW) + * + * This bit controls the clock gate to the FTM2 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_FTM2 (26U) //!< Bit position for SIM_SCGC6_FTM2. +#define BM_SIM_SCGC6_FTM2 (0x04000000U) //!< Bit mask for SIM_SCGC6_FTM2. +#define BS_SIM_SCGC6_FTM2 (1U) //!< Bit field size in bits for SIM_SCGC6_FTM2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_FTM2 field. +#define BR_SIM_SCGC6_FTM2 (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FTM2)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_FTM2. +#define BF_SIM_SCGC6_FTM2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_FTM2), uint32_t) & BM_SIM_SCGC6_FTM2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FTM2 field to a new value. +#define BW_SIM_SCGC6_FTM2(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_FTM2) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field ADC0[27] (RW) + * + * This bit controls the clock gate to the ADC0 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_ADC0 (27U) //!< Bit position for SIM_SCGC6_ADC0. +#define BM_SIM_SCGC6_ADC0 (0x08000000U) //!< Bit mask for SIM_SCGC6_ADC0. +#define BS_SIM_SCGC6_ADC0 (1U) //!< Bit field size in bits for SIM_SCGC6_ADC0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_ADC0 field. +#define BR_SIM_SCGC6_ADC0 (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_ADC0)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_ADC0. +#define BF_SIM_SCGC6_ADC0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_ADC0), uint32_t) & BM_SIM_SCGC6_ADC0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADC0 field to a new value. +#define BW_SIM_SCGC6_ADC0(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_ADC0) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field RTC[29] (RW) + * + * This bit controls software access and interrupts to the RTC module. + * + * Values: + * - 0 - Access and interrupts disabled + * - 1 - Access and interrupts enabled + */ +//@{ +#define BP_SIM_SCGC6_RTC (29U) //!< Bit position for SIM_SCGC6_RTC. +#define BM_SIM_SCGC6_RTC (0x20000000U) //!< Bit mask for SIM_SCGC6_RTC. +#define BS_SIM_SCGC6_RTC (1U) //!< Bit field size in bits for SIM_SCGC6_RTC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_RTC field. +#define BR_SIM_SCGC6_RTC (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_RTC)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_RTC. +#define BF_SIM_SCGC6_RTC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_RTC), uint32_t) & BM_SIM_SCGC6_RTC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RTC field to a new value. +#define BW_SIM_SCGC6_RTC(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_RTC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC6, field DAC0[31] (RW) + * + * This bit controls the clock gate to the DAC0 module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC6_DAC0 (31U) //!< Bit position for SIM_SCGC6_DAC0. +#define BM_SIM_SCGC6_DAC0 (0x80000000U) //!< Bit mask for SIM_SCGC6_DAC0. +#define BS_SIM_SCGC6_DAC0 (1U) //!< Bit field size in bits for SIM_SCGC6_DAC0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC6_DAC0 field. +#define BR_SIM_SCGC6_DAC0 (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_DAC0)) +#endif + +//! @brief Format value for bitfield SIM_SCGC6_DAC0. +#define BF_SIM_SCGC6_DAC0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC6_DAC0), uint32_t) & BM_SIM_SCGC6_DAC0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DAC0 field to a new value. +#define BW_SIM_SCGC6_DAC0(v) (BITBAND_ACCESS32(HW_SIM_SCGC6_ADDR, BP_SIM_SCGC6_DAC0) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_SCGC7 - System Clock Gating Control Register 7 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_SCGC7 - System Clock Gating Control Register 7 (RW) + * + * Reset value: 0x00000006U + */ +typedef union _hw_sim_scgc7 +{ + uint32_t U; + struct _hw_sim_scgc7_bitfields + { + uint32_t FLEXBUS : 1; //!< [0] FlexBus Clock Gate Control + uint32_t DMAb : 1; //!< [1] DMA Clock Gate Control + uint32_t MPUb : 1; //!< [2] MPU Clock Gate Control + uint32_t RESERVED0 : 29; //!< [31:3] + } B; +} hw_sim_scgc7_t; +#endif + +/*! + * @name Constants and macros for entire SIM_SCGC7 register + */ +//@{ +#define HW_SIM_SCGC7_ADDR (REGS_SIM_BASE + 0x1040U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_SCGC7 (*(__IO hw_sim_scgc7_t *) HW_SIM_SCGC7_ADDR) +#define HW_SIM_SCGC7_RD() (HW_SIM_SCGC7.U) +#define HW_SIM_SCGC7_WR(v) (HW_SIM_SCGC7.U = (v)) +#define HW_SIM_SCGC7_SET(v) (HW_SIM_SCGC7_WR(HW_SIM_SCGC7_RD() | (v))) +#define HW_SIM_SCGC7_CLR(v) (HW_SIM_SCGC7_WR(HW_SIM_SCGC7_RD() & ~(v))) +#define HW_SIM_SCGC7_TOG(v) (HW_SIM_SCGC7_WR(HW_SIM_SCGC7_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_SCGC7 bitfields + */ + +/*! + * @name Register SIM_SCGC7, field FLEXBUS[0] (RW) + * + * This bit controls the clock gate to the FlexBus module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC7_FLEXBUS (0U) //!< Bit position for SIM_SCGC7_FLEXBUS. +#define BM_SIM_SCGC7_FLEXBUS (0x00000001U) //!< Bit mask for SIM_SCGC7_FLEXBUS. +#define BS_SIM_SCGC7_FLEXBUS (1U) //!< Bit field size in bits for SIM_SCGC7_FLEXBUS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC7_FLEXBUS field. +#define BR_SIM_SCGC7_FLEXBUS (BITBAND_ACCESS32(HW_SIM_SCGC7_ADDR, BP_SIM_SCGC7_FLEXBUS)) +#endif + +//! @brief Format value for bitfield SIM_SCGC7_FLEXBUS. +#define BF_SIM_SCGC7_FLEXBUS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC7_FLEXBUS), uint32_t) & BM_SIM_SCGC7_FLEXBUS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLEXBUS field to a new value. +#define BW_SIM_SCGC7_FLEXBUS(v) (BITBAND_ACCESS32(HW_SIM_SCGC7_ADDR, BP_SIM_SCGC7_FLEXBUS) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC7, field DMA[1] (RW) + * + * This bit controls the clock gate to the DMA module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC7_DMA (1U) //!< Bit position for SIM_SCGC7_DMA. +#define BM_SIM_SCGC7_DMA (0x00000002U) //!< Bit mask for SIM_SCGC7_DMA. +#define BS_SIM_SCGC7_DMA (1U) //!< Bit field size in bits for SIM_SCGC7_DMA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC7_DMA field. +#define BR_SIM_SCGC7_DMA (BITBAND_ACCESS32(HW_SIM_SCGC7_ADDR, BP_SIM_SCGC7_DMA)) +#endif + +//! @brief Format value for bitfield SIM_SCGC7_DMA. +#define BF_SIM_SCGC7_DMA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC7_DMA), uint32_t) & BM_SIM_SCGC7_DMA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMA field to a new value. +#define BW_SIM_SCGC7_DMA(v) (BITBAND_ACCESS32(HW_SIM_SCGC7_ADDR, BP_SIM_SCGC7_DMA) = (v)) +#endif +//@} + +/*! + * @name Register SIM_SCGC7, field MPU[2] (RW) + * + * This bit controls the clock gate to the MPU module. + * + * Values: + * - 0 - Clock disabled + * - 1 - Clock enabled + */ +//@{ +#define BP_SIM_SCGC7_MPU (2U) //!< Bit position for SIM_SCGC7_MPU. +#define BM_SIM_SCGC7_MPU (0x00000004U) //!< Bit mask for SIM_SCGC7_MPU. +#define BS_SIM_SCGC7_MPU (1U) //!< Bit field size in bits for SIM_SCGC7_MPU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_SCGC7_MPU field. +#define BR_SIM_SCGC7_MPU (BITBAND_ACCESS32(HW_SIM_SCGC7_ADDR, BP_SIM_SCGC7_MPU)) +#endif + +//! @brief Format value for bitfield SIM_SCGC7_MPU. +#define BF_SIM_SCGC7_MPU(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_SCGC7_MPU), uint32_t) & BM_SIM_SCGC7_MPU) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MPU field to a new value. +#define BW_SIM_SCGC7_MPU(v) (BITBAND_ACCESS32(HW_SIM_SCGC7_ADDR, BP_SIM_SCGC7_MPU) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_CLKDIV1 - System Clock Divider Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_CLKDIV1 - System Clock Divider Register 1 (RW) + * + * Reset value: 0x00010000U + * + * When updating CLKDIV1, update all fields using the one write command. + * Attempting to write an invalid clock ratio to the CLKDIV1 register will cause the + * write to be ignored. The maximum divide ratio that can be programmed between + * core/system clock and the other divided clocks is divide by 8. When OUTDIV1 equals + * 0000 (divide by 1), the other dividers cannot be set higher than 0111 (divide + * by 8). The CLKDIV1 register cannot be written to when the device is in VLPR + * mode. + */ +typedef union _hw_sim_clkdiv1 +{ + uint32_t U; + struct _hw_sim_clkdiv1_bitfields + { + uint32_t RESERVED0 : 16; //!< [15:0] + uint32_t OUTDIV4 : 4; //!< [19:16] Clock 4 output divider value + uint32_t OUTDIV3 : 4; //!< [23:20] Clock 3 output divider value + uint32_t OUTDIV2 : 4; //!< [27:24] Clock 2 output divider value + uint32_t OUTDIV1 : 4; //!< [31:28] Clock 1 output divider value + } B; +} hw_sim_clkdiv1_t; +#endif + +/*! + * @name Constants and macros for entire SIM_CLKDIV1 register + */ +//@{ +#define HW_SIM_CLKDIV1_ADDR (REGS_SIM_BASE + 0x1044U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_CLKDIV1 (*(__IO hw_sim_clkdiv1_t *) HW_SIM_CLKDIV1_ADDR) +#define HW_SIM_CLKDIV1_RD() (HW_SIM_CLKDIV1.U) +#define HW_SIM_CLKDIV1_WR(v) (HW_SIM_CLKDIV1.U = (v)) +#define HW_SIM_CLKDIV1_SET(v) (HW_SIM_CLKDIV1_WR(HW_SIM_CLKDIV1_RD() | (v))) +#define HW_SIM_CLKDIV1_CLR(v) (HW_SIM_CLKDIV1_WR(HW_SIM_CLKDIV1_RD() & ~(v))) +#define HW_SIM_CLKDIV1_TOG(v) (HW_SIM_CLKDIV1_WR(HW_SIM_CLKDIV1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_CLKDIV1 bitfields + */ + +/*! + * @name Register SIM_CLKDIV1, field OUTDIV4[19:16] (RW) + * + * This field sets the divide value for the flash clock from MCGOUTCLK. At the + * end of reset, it is loaded with either 0001 or 1111 depending on + * FTF_FOPT[LPBOOT]. The flash clock frequency must be an integer divide of the system clock + * frequency. + * + * Values: + * - 0000 - Divide-by-1. + * - 0001 - Divide-by-2. + * - 0010 - Divide-by-3. + * - 0011 - Divide-by-4. + * - 0100 - Divide-by-5. + * - 0101 - Divide-by-6. + * - 0110 - Divide-by-7. + * - 0111 - Divide-by-8. + * - 1000 - Divide-by-9. + * - 1001 - Divide-by-10. + * - 1010 - Divide-by-11. + * - 1011 - Divide-by-12. + * - 1100 - Divide-by-13. + * - 1101 - Divide-by-14. + * - 1110 - Divide-by-15. + * - 1111 - Divide-by-16. + */ +//@{ +#define BP_SIM_CLKDIV1_OUTDIV4 (16U) //!< Bit position for SIM_CLKDIV1_OUTDIV4. +#define BM_SIM_CLKDIV1_OUTDIV4 (0x000F0000U) //!< Bit mask for SIM_CLKDIV1_OUTDIV4. +#define BS_SIM_CLKDIV1_OUTDIV4 (4U) //!< Bit field size in bits for SIM_CLKDIV1_OUTDIV4. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_CLKDIV1_OUTDIV4 field. +#define BR_SIM_CLKDIV1_OUTDIV4 (HW_SIM_CLKDIV1.B.OUTDIV4) +#endif + +//! @brief Format value for bitfield SIM_CLKDIV1_OUTDIV4. +#define BF_SIM_CLKDIV1_OUTDIV4(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_CLKDIV1_OUTDIV4), uint32_t) & BM_SIM_CLKDIV1_OUTDIV4) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OUTDIV4 field to a new value. +#define BW_SIM_CLKDIV1_OUTDIV4(v) (HW_SIM_CLKDIV1_WR((HW_SIM_CLKDIV1_RD() & ~BM_SIM_CLKDIV1_OUTDIV4) | BF_SIM_CLKDIV1_OUTDIV4(v))) +#endif +//@} + +/*! + * @name Register SIM_CLKDIV1, field OUTDIV3[23:20] (RW) + * + * This field sets the divide value for the FlexBus clock (external pin FB_CLK) + * from MCGOUTCLK. At the end of reset, it is loaded with either 0001 or 1111 + * depending on FTF_FOPT[LPBOOT]. The FlexBus clock frequency must be an integer + * divide of the system clock frequency. + * + * Values: + * - 0000 - Divide-by-1. + * - 0001 - Divide-by-2. + * - 0010 - Divide-by-3. + * - 0011 - Divide-by-4. + * - 0100 - Divide-by-5. + * - 0101 - Divide-by-6. + * - 0110 - Divide-by-7. + * - 0111 - Divide-by-8. + * - 1000 - Divide-by-9. + * - 1001 - Divide-by-10. + * - 1010 - Divide-by-11. + * - 1011 - Divide-by-12. + * - 1100 - Divide-by-13. + * - 1101 - Divide-by-14. + * - 1110 - Divide-by-15. + * - 1111 - Divide-by-16. + */ +//@{ +#define BP_SIM_CLKDIV1_OUTDIV3 (20U) //!< Bit position for SIM_CLKDIV1_OUTDIV3. +#define BM_SIM_CLKDIV1_OUTDIV3 (0x00F00000U) //!< Bit mask for SIM_CLKDIV1_OUTDIV3. +#define BS_SIM_CLKDIV1_OUTDIV3 (4U) //!< Bit field size in bits for SIM_CLKDIV1_OUTDIV3. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_CLKDIV1_OUTDIV3 field. +#define BR_SIM_CLKDIV1_OUTDIV3 (HW_SIM_CLKDIV1.B.OUTDIV3) +#endif + +//! @brief Format value for bitfield SIM_CLKDIV1_OUTDIV3. +#define BF_SIM_CLKDIV1_OUTDIV3(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_CLKDIV1_OUTDIV3), uint32_t) & BM_SIM_CLKDIV1_OUTDIV3) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OUTDIV3 field to a new value. +#define BW_SIM_CLKDIV1_OUTDIV3(v) (HW_SIM_CLKDIV1_WR((HW_SIM_CLKDIV1_RD() & ~BM_SIM_CLKDIV1_OUTDIV3) | BF_SIM_CLKDIV1_OUTDIV3(v))) +#endif +//@} + +/*! + * @name Register SIM_CLKDIV1, field OUTDIV2[27:24] (RW) + * + * This field sets the divide value for the bus clock from MCGOUTCLK. At the end + * of reset, it is loaded with either 0000 or 0111 depending on + * FTF_FOPT[LPBOOT]. The bus clock frequency must be an integer divide of the core/system clock + * frequency. + * + * Values: + * - 0000 - Divide-by-1. + * - 0001 - Divide-by-2. + * - 0010 - Divide-by-3. + * - 0011 - Divide-by-4. + * - 0100 - Divide-by-5. + * - 0101 - Divide-by-6. + * - 0110 - Divide-by-7. + * - 0111 - Divide-by-8. + * - 1000 - Divide-by-9. + * - 1001 - Divide-by-10. + * - 1010 - Divide-by-11. + * - 1011 - Divide-by-12. + * - 1100 - Divide-by-13. + * - 1101 - Divide-by-14. + * - 1110 - Divide-by-15. + * - 1111 - Divide-by-16. + */ +//@{ +#define BP_SIM_CLKDIV1_OUTDIV2 (24U) //!< Bit position for SIM_CLKDIV1_OUTDIV2. +#define BM_SIM_CLKDIV1_OUTDIV2 (0x0F000000U) //!< Bit mask for SIM_CLKDIV1_OUTDIV2. +#define BS_SIM_CLKDIV1_OUTDIV2 (4U) //!< Bit field size in bits for SIM_CLKDIV1_OUTDIV2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_CLKDIV1_OUTDIV2 field. +#define BR_SIM_CLKDIV1_OUTDIV2 (HW_SIM_CLKDIV1.B.OUTDIV2) +#endif + +//! @brief Format value for bitfield SIM_CLKDIV1_OUTDIV2. +#define BF_SIM_CLKDIV1_OUTDIV2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_CLKDIV1_OUTDIV2), uint32_t) & BM_SIM_CLKDIV1_OUTDIV2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OUTDIV2 field to a new value. +#define BW_SIM_CLKDIV1_OUTDIV2(v) (HW_SIM_CLKDIV1_WR((HW_SIM_CLKDIV1_RD() & ~BM_SIM_CLKDIV1_OUTDIV2) | BF_SIM_CLKDIV1_OUTDIV2(v))) +#endif +//@} + +/*! + * @name Register SIM_CLKDIV1, field OUTDIV1[31:28] (RW) + * + * This field sets the divide value for the core/system clock from MCGOUTCLK. At + * the end of reset, it is loaded with either 0000 or 0111 depending on + * FTF_FOPT[LPBOOT]. + * + * Values: + * - 0000 - Divide-by-1. + * - 0001 - Divide-by-2. + * - 0010 - Divide-by-3. + * - 0011 - Divide-by-4. + * - 0100 - Divide-by-5. + * - 0101 - Divide-by-6. + * - 0110 - Divide-by-7. + * - 0111 - Divide-by-8. + * - 1000 - Divide-by-9. + * - 1001 - Divide-by-10. + * - 1010 - Divide-by-11. + * - 1011 - Divide-by-12. + * - 1100 - Divide-by-13. + * - 1101 - Divide-by-14. + * - 1110 - Divide-by-15. + * - 1111 - Divide-by-16. + */ +//@{ +#define BP_SIM_CLKDIV1_OUTDIV1 (28U) //!< Bit position for SIM_CLKDIV1_OUTDIV1. +#define BM_SIM_CLKDIV1_OUTDIV1 (0xF0000000U) //!< Bit mask for SIM_CLKDIV1_OUTDIV1. +#define BS_SIM_CLKDIV1_OUTDIV1 (4U) //!< Bit field size in bits for SIM_CLKDIV1_OUTDIV1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_CLKDIV1_OUTDIV1 field. +#define BR_SIM_CLKDIV1_OUTDIV1 (HW_SIM_CLKDIV1.B.OUTDIV1) +#endif + +//! @brief Format value for bitfield SIM_CLKDIV1_OUTDIV1. +#define BF_SIM_CLKDIV1_OUTDIV1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_CLKDIV1_OUTDIV1), uint32_t) & BM_SIM_CLKDIV1_OUTDIV1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OUTDIV1 field to a new value. +#define BW_SIM_CLKDIV1_OUTDIV1(v) (HW_SIM_CLKDIV1_WR((HW_SIM_CLKDIV1_RD() & ~BM_SIM_CLKDIV1_OUTDIV1) | BF_SIM_CLKDIV1_OUTDIV1(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_CLKDIV2 - System Clock Divider Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_CLKDIV2 - System Clock Divider Register 2 (RW) + * + * Reset value: 0x00000000U + */ +typedef union _hw_sim_clkdiv2 +{ + uint32_t U; + struct _hw_sim_clkdiv2_bitfields + { + uint32_t USBFRAC : 1; //!< [0] USB clock divider fraction + uint32_t USBDIV : 3; //!< [3:1] USB clock divider divisor + uint32_t RESERVED0 : 28; //!< [31:4] + } B; +} hw_sim_clkdiv2_t; +#endif + +/*! + * @name Constants and macros for entire SIM_CLKDIV2 register + */ +//@{ +#define HW_SIM_CLKDIV2_ADDR (REGS_SIM_BASE + 0x1048U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_CLKDIV2 (*(__IO hw_sim_clkdiv2_t *) HW_SIM_CLKDIV2_ADDR) +#define HW_SIM_CLKDIV2_RD() (HW_SIM_CLKDIV2.U) +#define HW_SIM_CLKDIV2_WR(v) (HW_SIM_CLKDIV2.U = (v)) +#define HW_SIM_CLKDIV2_SET(v) (HW_SIM_CLKDIV2_WR(HW_SIM_CLKDIV2_RD() | (v))) +#define HW_SIM_CLKDIV2_CLR(v) (HW_SIM_CLKDIV2_WR(HW_SIM_CLKDIV2_RD() & ~(v))) +#define HW_SIM_CLKDIV2_TOG(v) (HW_SIM_CLKDIV2_WR(HW_SIM_CLKDIV2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_CLKDIV2 bitfields + */ + +/*! + * @name Register SIM_CLKDIV2, field USBFRAC[0] (RW) + * + * This field sets the fraction multiply value for the fractional clock divider + * when the MCGFLLCLK/MCGPLLCLK clock is the USB clock source (SOPT2[USBSRC] = + * 1). Divider output clock = Divider input clock * [ (USBFRAC+1) / (USBDIV+1) ] + */ +//@{ +#define BP_SIM_CLKDIV2_USBFRAC (0U) //!< Bit position for SIM_CLKDIV2_USBFRAC. +#define BM_SIM_CLKDIV2_USBFRAC (0x00000001U) //!< Bit mask for SIM_CLKDIV2_USBFRAC. +#define BS_SIM_CLKDIV2_USBFRAC (1U) //!< Bit field size in bits for SIM_CLKDIV2_USBFRAC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_CLKDIV2_USBFRAC field. +#define BR_SIM_CLKDIV2_USBFRAC (BITBAND_ACCESS32(HW_SIM_CLKDIV2_ADDR, BP_SIM_CLKDIV2_USBFRAC)) +#endif + +//! @brief Format value for bitfield SIM_CLKDIV2_USBFRAC. +#define BF_SIM_CLKDIV2_USBFRAC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_CLKDIV2_USBFRAC), uint32_t) & BM_SIM_CLKDIV2_USBFRAC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBFRAC field to a new value. +#define BW_SIM_CLKDIV2_USBFRAC(v) (BITBAND_ACCESS32(HW_SIM_CLKDIV2_ADDR, BP_SIM_CLKDIV2_USBFRAC) = (v)) +#endif +//@} + +/*! + * @name Register SIM_CLKDIV2, field USBDIV[3:1] (RW) + * + * This field sets the divide value for the fractional clock divider when the + * MCGFLLCLK/MCGPLLCLK clock is the USB clock source (SOPT2[USBSRC] = 1). Divider + * output clock = Divider input clock * [ (USBFRAC+1) / (USBDIV+1) ] + */ +//@{ +#define BP_SIM_CLKDIV2_USBDIV (1U) //!< Bit position for SIM_CLKDIV2_USBDIV. +#define BM_SIM_CLKDIV2_USBDIV (0x0000000EU) //!< Bit mask for SIM_CLKDIV2_USBDIV. +#define BS_SIM_CLKDIV2_USBDIV (3U) //!< Bit field size in bits for SIM_CLKDIV2_USBDIV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_CLKDIV2_USBDIV field. +#define BR_SIM_CLKDIV2_USBDIV (HW_SIM_CLKDIV2.B.USBDIV) +#endif + +//! @brief Format value for bitfield SIM_CLKDIV2_USBDIV. +#define BF_SIM_CLKDIV2_USBDIV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_CLKDIV2_USBDIV), uint32_t) & BM_SIM_CLKDIV2_USBDIV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBDIV field to a new value. +#define BW_SIM_CLKDIV2_USBDIV(v) (HW_SIM_CLKDIV2_WR((HW_SIM_CLKDIV2_RD() & ~BM_SIM_CLKDIV2_USBDIV) | BF_SIM_CLKDIV2_USBDIV(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_FCFG1 - Flash Configuration Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_FCFG1 - Flash Configuration Register 1 (RW) + * + * Reset value: 0xFF0F0F00U + * + * For devices with FlexNVM: The reset value of EESIZE and DEPART are based on + * user programming in user IFR via the PGMPART flash command. For devices with + * program flash only: + */ +typedef union _hw_sim_fcfg1 +{ + uint32_t U; + struct _hw_sim_fcfg1_bitfields + { + uint32_t FLASHDIS : 1; //!< [0] Flash Disable + uint32_t FLASHDOZE : 1; //!< [1] Flash Doze + uint32_t RESERVED0 : 6; //!< [7:2] + uint32_t DEPART : 4; //!< [11:8] FlexNVM partition + uint32_t RESERVED1 : 4; //!< [15:12] + uint32_t EESIZE : 4; //!< [19:16] EEPROM size + uint32_t RESERVED2 : 4; //!< [23:20] + uint32_t PFSIZE : 4; //!< [27:24] Program flash size + uint32_t NVMSIZE : 4; //!< [31:28] FlexNVM size + } B; +} hw_sim_fcfg1_t; +#endif + +/*! + * @name Constants and macros for entire SIM_FCFG1 register + */ +//@{ +#define HW_SIM_FCFG1_ADDR (REGS_SIM_BASE + 0x104CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_FCFG1 (*(__IO hw_sim_fcfg1_t *) HW_SIM_FCFG1_ADDR) +#define HW_SIM_FCFG1_RD() (HW_SIM_FCFG1.U) +#define HW_SIM_FCFG1_WR(v) (HW_SIM_FCFG1.U = (v)) +#define HW_SIM_FCFG1_SET(v) (HW_SIM_FCFG1_WR(HW_SIM_FCFG1_RD() | (v))) +#define HW_SIM_FCFG1_CLR(v) (HW_SIM_FCFG1_WR(HW_SIM_FCFG1_RD() & ~(v))) +#define HW_SIM_FCFG1_TOG(v) (HW_SIM_FCFG1_WR(HW_SIM_FCFG1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SIM_FCFG1 bitfields + */ + +/*! + * @name Register SIM_FCFG1, field FLASHDIS[0] (RW) + * + * Flash accesses are disabled (and generate a bus error) and the Flash memory + * is placed in a low power state. This bit should not be changed during VLP + * modes. Relocate the interrupt vectors out of Flash memory before disabling the + * Flash. + * + * Values: + * - 0 - Flash is enabled + * - 1 - Flash is disabled + */ +//@{ +#define BP_SIM_FCFG1_FLASHDIS (0U) //!< Bit position for SIM_FCFG1_FLASHDIS. +#define BM_SIM_FCFG1_FLASHDIS (0x00000001U) //!< Bit mask for SIM_FCFG1_FLASHDIS. +#define BS_SIM_FCFG1_FLASHDIS (1U) //!< Bit field size in bits for SIM_FCFG1_FLASHDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_FCFG1_FLASHDIS field. +#define BR_SIM_FCFG1_FLASHDIS (BITBAND_ACCESS32(HW_SIM_FCFG1_ADDR, BP_SIM_FCFG1_FLASHDIS)) +#endif + +//! @brief Format value for bitfield SIM_FCFG1_FLASHDIS. +#define BF_SIM_FCFG1_FLASHDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_FCFG1_FLASHDIS), uint32_t) & BM_SIM_FCFG1_FLASHDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLASHDIS field to a new value. +#define BW_SIM_FCFG1_FLASHDIS(v) (BITBAND_ACCESS32(HW_SIM_FCFG1_ADDR, BP_SIM_FCFG1_FLASHDIS) = (v)) +#endif +//@} + +/*! + * @name Register SIM_FCFG1, field FLASHDOZE[1] (RW) + * + * When set, Flash memory is disabled for the duration of Wait mode. An attempt + * by the DMA or other bus master to access the Flash when the Flash is disabled + * will result in a bus error. This bit should be clear during VLP modes. The + * Flash will be automatically enabled again at the end of Wait mode so interrupt + * vectors do not need to be relocated out of Flash memory. The wakeup time from + * Wait mode is extended when this bit is set. + * + * Values: + * - 0 - Flash remains enabled during Wait mode + * - 1 - Flash is disabled for the duration of Wait mode + */ +//@{ +#define BP_SIM_FCFG1_FLASHDOZE (1U) //!< Bit position for SIM_FCFG1_FLASHDOZE. +#define BM_SIM_FCFG1_FLASHDOZE (0x00000002U) //!< Bit mask for SIM_FCFG1_FLASHDOZE. +#define BS_SIM_FCFG1_FLASHDOZE (1U) //!< Bit field size in bits for SIM_FCFG1_FLASHDOZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_FCFG1_FLASHDOZE field. +#define BR_SIM_FCFG1_FLASHDOZE (BITBAND_ACCESS32(HW_SIM_FCFG1_ADDR, BP_SIM_FCFG1_FLASHDOZE)) +#endif + +//! @brief Format value for bitfield SIM_FCFG1_FLASHDOZE. +#define BF_SIM_FCFG1_FLASHDOZE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SIM_FCFG1_FLASHDOZE), uint32_t) & BM_SIM_FCFG1_FLASHDOZE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FLASHDOZE field to a new value. +#define BW_SIM_FCFG1_FLASHDOZE(v) (BITBAND_ACCESS32(HW_SIM_FCFG1_ADDR, BP_SIM_FCFG1_FLASHDOZE) = (v)) +#endif +//@} + +/*! + * @name Register SIM_FCFG1, field DEPART[11:8] (RO) + * + * For devices with FlexNVM: Data flash / EEPROM backup split . See DEPART bit + * description in FTFE chapter. For devices without FlexNVM: Reserved + */ +//@{ +#define BP_SIM_FCFG1_DEPART (8U) //!< Bit position for SIM_FCFG1_DEPART. +#define BM_SIM_FCFG1_DEPART (0x00000F00U) //!< Bit mask for SIM_FCFG1_DEPART. +#define BS_SIM_FCFG1_DEPART (4U) //!< Bit field size in bits for SIM_FCFG1_DEPART. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_FCFG1_DEPART field. +#define BR_SIM_FCFG1_DEPART (HW_SIM_FCFG1.B.DEPART) +#endif +//@} + +/*! + * @name Register SIM_FCFG1, field EESIZE[19:16] (RO) + * + * EEPROM data size . + * + * Values: + * - 0000 - 16 KB + * - 0001 - 8 KB + * - 0010 - 4 KB + * - 0011 - 2 KB + * - 0100 - 1 KB + * - 0101 - 512 Bytes + * - 0110 - 256 Bytes + * - 0111 - 128 Bytes + * - 1000 - 64 Bytes + * - 1001 - 32 Bytes + * - 1111 - 0 Bytes + */ +//@{ +#define BP_SIM_FCFG1_EESIZE (16U) //!< Bit position for SIM_FCFG1_EESIZE. +#define BM_SIM_FCFG1_EESIZE (0x000F0000U) //!< Bit mask for SIM_FCFG1_EESIZE. +#define BS_SIM_FCFG1_EESIZE (4U) //!< Bit field size in bits for SIM_FCFG1_EESIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_FCFG1_EESIZE field. +#define BR_SIM_FCFG1_EESIZE (HW_SIM_FCFG1.B.EESIZE) +#endif +//@} + +/*! + * @name Register SIM_FCFG1, field PFSIZE[27:24] (RO) + * + * This field specifies the amount of program flash memory available on the + * device . Undefined values are reserved. + * + * Values: + * - 0011 - 32 KB of program flash memory + * - 0101 - 64 KB of program flash memory + * - 0111 - 128 KB of program flash memory + * - 1001 - 256 KB of program flash memory + * - 1011 - 512 KB of program flash memory + * - 1101 - 1024 KB of program flash memory + * - 1111 - 1024 KB of program flash memory + */ +//@{ +#define BP_SIM_FCFG1_PFSIZE (24U) //!< Bit position for SIM_FCFG1_PFSIZE. +#define BM_SIM_FCFG1_PFSIZE (0x0F000000U) //!< Bit mask for SIM_FCFG1_PFSIZE. +#define BS_SIM_FCFG1_PFSIZE (4U) //!< Bit field size in bits for SIM_FCFG1_PFSIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_FCFG1_PFSIZE field. +#define BR_SIM_FCFG1_PFSIZE (HW_SIM_FCFG1.B.PFSIZE) +#endif +//@} + +/*! + * @name Register SIM_FCFG1, field NVMSIZE[31:28] (RO) + * + * This field specifies the amount of FlexNVM memory available on the device . + * Undefined values are reserved. + * + * Values: + * - 0000 - 0 KB of FlexNVM + * - 0011 - 32 KB of FlexNVM + * - 0101 - 64 KB of FlexNVM + * - 0111 - 128 KB of FlexNVM + * - 1001 - 256 KB of FlexNVM + * - 1011 - 512 KB of FlexNVM + * - 1111 - 512 KB of FlexNVM + */ +//@{ +#define BP_SIM_FCFG1_NVMSIZE (28U) //!< Bit position for SIM_FCFG1_NVMSIZE. +#define BM_SIM_FCFG1_NVMSIZE (0xF0000000U) //!< Bit mask for SIM_FCFG1_NVMSIZE. +#define BS_SIM_FCFG1_NVMSIZE (4U) //!< Bit field size in bits for SIM_FCFG1_NVMSIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_FCFG1_NVMSIZE field. +#define BR_SIM_FCFG1_NVMSIZE (HW_SIM_FCFG1.B.NVMSIZE) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_FCFG2 - Flash Configuration Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_FCFG2 - Flash Configuration Register 2 (RO) + * + * Reset value: 0x7F7F0000U + */ +typedef union _hw_sim_fcfg2 +{ + uint32_t U; + struct _hw_sim_fcfg2_bitfields + { + uint32_t RESERVED0 : 16; //!< [15:0] + uint32_t MAXADDR1 : 7; //!< [22:16] Max address block 1 + uint32_t PFLSH : 1; //!< [23] Program flash only + uint32_t MAXADDR0 : 7; //!< [30:24] Max address block 0 + uint32_t RESERVED1 : 1; //!< [31] + } B; +} hw_sim_fcfg2_t; +#endif + +/*! + * @name Constants and macros for entire SIM_FCFG2 register + */ +//@{ +#define HW_SIM_FCFG2_ADDR (REGS_SIM_BASE + 0x1050U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_FCFG2 (*(__I hw_sim_fcfg2_t *) HW_SIM_FCFG2_ADDR) +#define HW_SIM_FCFG2_RD() (HW_SIM_FCFG2.U) +#endif +//@} + +/* + * Constants & macros for individual SIM_FCFG2 bitfields + */ + +/*! + * @name Register SIM_FCFG2, field MAXADDR1[22:16] (RO) + * + * For devices with FlexNVM: This field concatenated with 13 trailing zeros plus + * the FlexNVM base address indicates the first invalid address of the FlexNVM + * flash block. For example, if MAXADDR1 = 0x20 the first invalid address of + * FlexNVM flash block is 0x4_0000 + 0x1000_0000 . This would be the MAXADDR1 value + * for a device with 256 KB FlexNVM. For devices with program flash only: This + * field equals zero if there is only one program flash block, otherwise it equals + * the value of the MAXADDR0 field. For example, with MAXADDR0 = MAXADDR1 = 0x20 + * the first invalid address of flash block 1 is 0x4_0000 + 0x4_0000. This would be + * the MAXADDR1 value for a device with 512 KB program flash memory across two + * flash blocks and no FlexNVM. + */ +//@{ +#define BP_SIM_FCFG2_MAXADDR1 (16U) //!< Bit position for SIM_FCFG2_MAXADDR1. +#define BM_SIM_FCFG2_MAXADDR1 (0x007F0000U) //!< Bit mask for SIM_FCFG2_MAXADDR1. +#define BS_SIM_FCFG2_MAXADDR1 (7U) //!< Bit field size in bits for SIM_FCFG2_MAXADDR1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_FCFG2_MAXADDR1 field. +#define BR_SIM_FCFG2_MAXADDR1 (HW_SIM_FCFG2.B.MAXADDR1) +#endif +//@} + +/*! + * @name Register SIM_FCFG2, field PFLSH[23] (RO) + * + * For devices with FlexNVM, this bit is always clear. For devices without + * FlexNVM, this bit is always set. + * + * Values: + * - 0 - Device supports FlexNVM + * - 1 - Program Flash only, device does not support FlexNVM + */ +//@{ +#define BP_SIM_FCFG2_PFLSH (23U) //!< Bit position for SIM_FCFG2_PFLSH. +#define BM_SIM_FCFG2_PFLSH (0x00800000U) //!< Bit mask for SIM_FCFG2_PFLSH. +#define BS_SIM_FCFG2_PFLSH (1U) //!< Bit field size in bits for SIM_FCFG2_PFLSH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_FCFG2_PFLSH field. +#define BR_SIM_FCFG2_PFLSH (BITBAND_ACCESS32(HW_SIM_FCFG2_ADDR, BP_SIM_FCFG2_PFLSH)) +#endif +//@} + +/*! + * @name Register SIM_FCFG2, field MAXADDR0[30:24] (RO) + * + * This field concatenated with 13 trailing zeros indicates the first invalid + * address of each program flash block. For example, if MAXADDR0 = 0x20 the first + * invalid address of flash block 0 is 0x0004_0000. This would be the MAXADDR0 + * value for a device with 256 KB program flash in flash block 0. + */ +//@{ +#define BP_SIM_FCFG2_MAXADDR0 (24U) //!< Bit position for SIM_FCFG2_MAXADDR0. +#define BM_SIM_FCFG2_MAXADDR0 (0x7F000000U) //!< Bit mask for SIM_FCFG2_MAXADDR0. +#define BS_SIM_FCFG2_MAXADDR0 (7U) //!< Bit field size in bits for SIM_FCFG2_MAXADDR0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_FCFG2_MAXADDR0 field. +#define BR_SIM_FCFG2_MAXADDR0 (HW_SIM_FCFG2.B.MAXADDR0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_UIDH - Unique Identification Register High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_UIDH - Unique Identification Register High (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_sim_uidh +{ + uint32_t U; + struct _hw_sim_uidh_bitfields + { + uint32_t UID : 32; //!< [31:0] Unique Identification + } B; +} hw_sim_uidh_t; +#endif + +/*! + * @name Constants and macros for entire SIM_UIDH register + */ +//@{ +#define HW_SIM_UIDH_ADDR (REGS_SIM_BASE + 0x1054U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_UIDH (*(__I hw_sim_uidh_t *) HW_SIM_UIDH_ADDR) +#define HW_SIM_UIDH_RD() (HW_SIM_UIDH.U) +#endif +//@} + +/* + * Constants & macros for individual SIM_UIDH bitfields + */ + +/*! + * @name Register SIM_UIDH, field UID[31:0] (RO) + * + * Unique identification for the device. + */ +//@{ +#define BP_SIM_UIDH_UID (0U) //!< Bit position for SIM_UIDH_UID. +#define BM_SIM_UIDH_UID (0xFFFFFFFFU) //!< Bit mask for SIM_UIDH_UID. +#define BS_SIM_UIDH_UID (32U) //!< Bit field size in bits for SIM_UIDH_UID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_UIDH_UID field. +#define BR_SIM_UIDH_UID (HW_SIM_UIDH.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_UIDMH - Unique Identification Register Mid-High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_UIDMH - Unique Identification Register Mid-High (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_sim_uidmh +{ + uint32_t U; + struct _hw_sim_uidmh_bitfields + { + uint32_t UID : 32; //!< [31:0] Unique Identification + } B; +} hw_sim_uidmh_t; +#endif + +/*! + * @name Constants and macros for entire SIM_UIDMH register + */ +//@{ +#define HW_SIM_UIDMH_ADDR (REGS_SIM_BASE + 0x1058U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_UIDMH (*(__I hw_sim_uidmh_t *) HW_SIM_UIDMH_ADDR) +#define HW_SIM_UIDMH_RD() (HW_SIM_UIDMH.U) +#endif +//@} + +/* + * Constants & macros for individual SIM_UIDMH bitfields + */ + +/*! + * @name Register SIM_UIDMH, field UID[31:0] (RO) + * + * Unique identification for the device. + */ +//@{ +#define BP_SIM_UIDMH_UID (0U) //!< Bit position for SIM_UIDMH_UID. +#define BM_SIM_UIDMH_UID (0xFFFFFFFFU) //!< Bit mask for SIM_UIDMH_UID. +#define BS_SIM_UIDMH_UID (32U) //!< Bit field size in bits for SIM_UIDMH_UID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_UIDMH_UID field. +#define BR_SIM_UIDMH_UID (HW_SIM_UIDMH.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_UIDML - Unique Identification Register Mid Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_UIDML - Unique Identification Register Mid Low (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_sim_uidml +{ + uint32_t U; + struct _hw_sim_uidml_bitfields + { + uint32_t UID : 32; //!< [31:0] Unique Identification + } B; +} hw_sim_uidml_t; +#endif + +/*! + * @name Constants and macros for entire SIM_UIDML register + */ +//@{ +#define HW_SIM_UIDML_ADDR (REGS_SIM_BASE + 0x105CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_UIDML (*(__I hw_sim_uidml_t *) HW_SIM_UIDML_ADDR) +#define HW_SIM_UIDML_RD() (HW_SIM_UIDML.U) +#endif +//@} + +/* + * Constants & macros for individual SIM_UIDML bitfields + */ + +/*! + * @name Register SIM_UIDML, field UID[31:0] (RO) + * + * Unique identification for the device. + */ +//@{ +#define BP_SIM_UIDML_UID (0U) //!< Bit position for SIM_UIDML_UID. +#define BM_SIM_UIDML_UID (0xFFFFFFFFU) //!< Bit mask for SIM_UIDML_UID. +#define BS_SIM_UIDML_UID (32U) //!< Bit field size in bits for SIM_UIDML_UID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_UIDML_UID field. +#define BR_SIM_UIDML_UID (HW_SIM_UIDML.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SIM_UIDL - Unique Identification Register Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SIM_UIDL - Unique Identification Register Low (RO) + * + * Reset value: 0x00000000U + */ +typedef union _hw_sim_uidl +{ + uint32_t U; + struct _hw_sim_uidl_bitfields + { + uint32_t UID : 32; //!< [31:0] Unique Identification + } B; +} hw_sim_uidl_t; +#endif + +/*! + * @name Constants and macros for entire SIM_UIDL register + */ +//@{ +#define HW_SIM_UIDL_ADDR (REGS_SIM_BASE + 0x1060U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SIM_UIDL (*(__I hw_sim_uidl_t *) HW_SIM_UIDL_ADDR) +#define HW_SIM_UIDL_RD() (HW_SIM_UIDL.U) +#endif +//@} + +/* + * Constants & macros for individual SIM_UIDL bitfields + */ + +/*! + * @name Register SIM_UIDL, field UID[31:0] (RO) + * + * Unique identification for the device. + */ +//@{ +#define BP_SIM_UIDL_UID (0U) //!< Bit position for SIM_UIDL_UID. +#define BM_SIM_UIDL_UID (0xFFFFFFFFU) //!< Bit mask for SIM_UIDL_UID. +#define BS_SIM_UIDL_UID (32U) //!< Bit field size in bits for SIM_UIDL_UID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SIM_UIDL_UID field. +#define BR_SIM_UIDL_UID (HW_SIM_UIDL.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_sim_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All SIM module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_sim +{ + __IO hw_sim_sopt1_t SOPT1; //!< [0x0] System Options Register 1 + __IO hw_sim_sopt1cfg_t SOPT1CFG; //!< [0x4] SOPT1 Configuration Register + uint8_t _reserved0[4092]; + __IO hw_sim_sopt2_t SOPT2; //!< [0x1004] System Options Register 2 + uint8_t _reserved1[4]; + __IO hw_sim_sopt4_t SOPT4; //!< [0x100C] System Options Register 4 + __IO hw_sim_sopt5_t SOPT5; //!< [0x1010] System Options Register 5 + uint8_t _reserved2[4]; + __IO hw_sim_sopt7_t SOPT7; //!< [0x1018] System Options Register 7 + uint8_t _reserved3[8]; + __I hw_sim_sdid_t SDID; //!< [0x1024] System Device Identification Register + __IO hw_sim_scgc1_t SCGC1; //!< [0x1028] System Clock Gating Control Register 1 + __IO hw_sim_scgc2_t SCGC2; //!< [0x102C] System Clock Gating Control Register 2 + __IO hw_sim_scgc3_t SCGC3; //!< [0x1030] System Clock Gating Control Register 3 + __IO hw_sim_scgc4_t SCGC4; //!< [0x1034] System Clock Gating Control Register 4 + __IO hw_sim_scgc5_t SCGC5; //!< [0x1038] System Clock Gating Control Register 5 + __IO hw_sim_scgc6_t SCGC6; //!< [0x103C] System Clock Gating Control Register 6 + __IO hw_sim_scgc7_t SCGC7; //!< [0x1040] System Clock Gating Control Register 7 + __IO hw_sim_clkdiv1_t CLKDIV1; //!< [0x1044] System Clock Divider Register 1 + __IO hw_sim_clkdiv2_t CLKDIV2; //!< [0x1048] System Clock Divider Register 2 + __IO hw_sim_fcfg1_t FCFG1; //!< [0x104C] Flash Configuration Register 1 + __I hw_sim_fcfg2_t FCFG2; //!< [0x1050] Flash Configuration Register 2 + __I hw_sim_uidh_t UIDH; //!< [0x1054] Unique Identification Register High + __I hw_sim_uidmh_t UIDMH; //!< [0x1058] Unique Identification Register Mid-High + __I hw_sim_uidml_t UIDML; //!< [0x105C] Unique Identification Register Mid Low + __I hw_sim_uidl_t UIDL; //!< [0x1060] Unique Identification Register Low +} hw_sim_t; +#pragma pack() + +//! @brief Macro to access all SIM registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_SIM</code>. +#define HW_SIM (*(hw_sim_t *) REGS_SIM_BASE) +#endif + +#endif // __HW_SIM_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_smc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,566 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_SMC_REGISTERS_H__ +#define __HW_SMC_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 SMC + * + * System Mode Controller + * + * Registers defined in this header file: + * - HW_SMC_PMPROT - Power Mode Protection register + * - HW_SMC_PMCTRL - Power Mode Control register + * - HW_SMC_VLLSCTRL - VLLS Control register + * - HW_SMC_PMSTAT - Power Mode Status register + * + * - hw_smc_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_SMC_BASE +#define HW_SMC_INSTANCE_COUNT (1U) //!< Number of instances of the SMC module. +#define REGS_SMC_BASE (0x4007E000U) //!< Base address for SMC. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SMC_PMPROT - Power Mode Protection register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SMC_PMPROT - Power Mode Protection register (RW) + * + * Reset value: 0x00U + * + * This register provides protection for entry into any low-power run or stop + * mode. The enabling of the low-power run or stop mode occurs by configuring the + * Power Mode Control register (PMCTRL). The PMPROT register can be written only + * once after any system reset. If the MCU is configured for a disallowed or + * reserved power mode, the MCU remains in its current power mode. For example, if the + * MCU is in normal RUN mode and AVLP is 0, an attempt to enter VLPR mode using + * PMCTRL[RUNM] is blocked and PMCTRL[RUNM] remains 00b, indicating the MCU is + * still in Normal Run mode. This register is reset on Chip Reset not VLLS and by + * reset types that trigger Chip Reset not VLLS. It is unaffected by reset types + * that do not trigger Chip Reset not VLLS. See the Reset section details for more + * information. + */ +typedef union _hw_smc_pmprot +{ + uint8_t U; + struct _hw_smc_pmprot_bitfields + { + uint8_t RESERVED0 : 1; //!< [0] + uint8_t AVLLS : 1; //!< [1] Allow Very-Low-Leakage Stop Mode + uint8_t RESERVED1 : 1; //!< [2] + uint8_t ALLS : 1; //!< [3] Allow Low-Leakage Stop Mode + uint8_t RESERVED2 : 1; //!< [4] + uint8_t AVLP : 1; //!< [5] Allow Very-Low-Power Modes + uint8_t RESERVED3 : 2; //!< [7:6] + } B; +} hw_smc_pmprot_t; +#endif + +/*! + * @name Constants and macros for entire SMC_PMPROT register + */ +//@{ +#define HW_SMC_PMPROT_ADDR (REGS_SMC_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SMC_PMPROT (*(__IO hw_smc_pmprot_t *) HW_SMC_PMPROT_ADDR) +#define HW_SMC_PMPROT_RD() (HW_SMC_PMPROT.U) +#define HW_SMC_PMPROT_WR(v) (HW_SMC_PMPROT.U = (v)) +#define HW_SMC_PMPROT_SET(v) (HW_SMC_PMPROT_WR(HW_SMC_PMPROT_RD() | (v))) +#define HW_SMC_PMPROT_CLR(v) (HW_SMC_PMPROT_WR(HW_SMC_PMPROT_RD() & ~(v))) +#define HW_SMC_PMPROT_TOG(v) (HW_SMC_PMPROT_WR(HW_SMC_PMPROT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SMC_PMPROT bitfields + */ + +/*! + * @name Register SMC_PMPROT, field AVLLS[1] (RW) + * + * Provided the appropriate control bits are set up in PMCTRL, this write once + * bit allows the MCU to enter any very-low-leakage stop mode (VLLSx). + * + * Values: + * - 0 - Any VLLSx mode is not allowed + * - 1 - Any VLLSx mode is allowed + */ +//@{ +#define BP_SMC_PMPROT_AVLLS (1U) //!< Bit position for SMC_PMPROT_AVLLS. +#define BM_SMC_PMPROT_AVLLS (0x02U) //!< Bit mask for SMC_PMPROT_AVLLS. +#define BS_SMC_PMPROT_AVLLS (1U) //!< Bit field size in bits for SMC_PMPROT_AVLLS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_PMPROT_AVLLS field. +#define BR_SMC_PMPROT_AVLLS (BITBAND_ACCESS8(HW_SMC_PMPROT_ADDR, BP_SMC_PMPROT_AVLLS)) +#endif + +//! @brief Format value for bitfield SMC_PMPROT_AVLLS. +#define BF_SMC_PMPROT_AVLLS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_SMC_PMPROT_AVLLS), uint8_t) & BM_SMC_PMPROT_AVLLS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AVLLS field to a new value. +#define BW_SMC_PMPROT_AVLLS(v) (BITBAND_ACCESS8(HW_SMC_PMPROT_ADDR, BP_SMC_PMPROT_AVLLS) = (v)) +#endif +//@} + +/*! + * @name Register SMC_PMPROT, field ALLS[3] (RW) + * + * Provided the appropriate control bits are set up in PMCTRL, this write-once + * field allows the MCU to enter any low-leakage stop mode (LLS). + * + * Values: + * - 0 - LLS is not allowed + * - 1 - LLS is allowed + */ +//@{ +#define BP_SMC_PMPROT_ALLS (3U) //!< Bit position for SMC_PMPROT_ALLS. +#define BM_SMC_PMPROT_ALLS (0x08U) //!< Bit mask for SMC_PMPROT_ALLS. +#define BS_SMC_PMPROT_ALLS (1U) //!< Bit field size in bits for SMC_PMPROT_ALLS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_PMPROT_ALLS field. +#define BR_SMC_PMPROT_ALLS (BITBAND_ACCESS8(HW_SMC_PMPROT_ADDR, BP_SMC_PMPROT_ALLS)) +#endif + +//! @brief Format value for bitfield SMC_PMPROT_ALLS. +#define BF_SMC_PMPROT_ALLS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_SMC_PMPROT_ALLS), uint8_t) & BM_SMC_PMPROT_ALLS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ALLS field to a new value. +#define BW_SMC_PMPROT_ALLS(v) (BITBAND_ACCESS8(HW_SMC_PMPROT_ADDR, BP_SMC_PMPROT_ALLS) = (v)) +#endif +//@} + +/*! + * @name Register SMC_PMPROT, field AVLP[5] (RW) + * + * Provided the appropriate control bits are set up in PMCTRL, this write-once + * field allows the MCU to enter any very-low-power mode (VLPR, VLPW, and VLPS). + * + * Values: + * - 0 - VLPR, VLPW, and VLPS are not allowed. + * - 1 - VLPR, VLPW, and VLPS are allowed. + */ +//@{ +#define BP_SMC_PMPROT_AVLP (5U) //!< Bit position for SMC_PMPROT_AVLP. +#define BM_SMC_PMPROT_AVLP (0x20U) //!< Bit mask for SMC_PMPROT_AVLP. +#define BS_SMC_PMPROT_AVLP (1U) //!< Bit field size in bits for SMC_PMPROT_AVLP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_PMPROT_AVLP field. +#define BR_SMC_PMPROT_AVLP (BITBAND_ACCESS8(HW_SMC_PMPROT_ADDR, BP_SMC_PMPROT_AVLP)) +#endif + +//! @brief Format value for bitfield SMC_PMPROT_AVLP. +#define BF_SMC_PMPROT_AVLP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_SMC_PMPROT_AVLP), uint8_t) & BM_SMC_PMPROT_AVLP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AVLP field to a new value. +#define BW_SMC_PMPROT_AVLP(v) (BITBAND_ACCESS8(HW_SMC_PMPROT_ADDR, BP_SMC_PMPROT_AVLP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SMC_PMCTRL - Power Mode Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SMC_PMCTRL - Power Mode Control register (RW) + * + * Reset value: 0x00U + * + * The PMCTRL register controls entry into low-power Run and Stop modes, + * provided that the selected power mode is allowed via an appropriate setting of the + * protection (PMPROT) register. This register is reset on Chip POR not VLLS and by + * reset types that trigger Chip POR not VLLS. It is unaffected by reset types + * that do not trigger Chip POR not VLLS. See the Reset section details for more + * information. + */ +typedef union _hw_smc_pmctrl +{ + uint8_t U; + struct _hw_smc_pmctrl_bitfields + { + uint8_t STOPM : 3; //!< [2:0] Stop Mode Control + uint8_t STOPA : 1; //!< [3] Stop Aborted + uint8_t RESERVED0 : 1; //!< [4] + uint8_t RUNM : 2; //!< [6:5] Run Mode Control + uint8_t LPWUI : 1; //!< [7] Low-Power Wake Up On Interrupt + } B; +} hw_smc_pmctrl_t; +#endif + +/*! + * @name Constants and macros for entire SMC_PMCTRL register + */ +//@{ +#define HW_SMC_PMCTRL_ADDR (REGS_SMC_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SMC_PMCTRL (*(__IO hw_smc_pmctrl_t *) HW_SMC_PMCTRL_ADDR) +#define HW_SMC_PMCTRL_RD() (HW_SMC_PMCTRL.U) +#define HW_SMC_PMCTRL_WR(v) (HW_SMC_PMCTRL.U = (v)) +#define HW_SMC_PMCTRL_SET(v) (HW_SMC_PMCTRL_WR(HW_SMC_PMCTRL_RD() | (v))) +#define HW_SMC_PMCTRL_CLR(v) (HW_SMC_PMCTRL_WR(HW_SMC_PMCTRL_RD() & ~(v))) +#define HW_SMC_PMCTRL_TOG(v) (HW_SMC_PMCTRL_WR(HW_SMC_PMCTRL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SMC_PMCTRL bitfields + */ + +/*! + * @name Register SMC_PMCTRL, field STOPM[2:0] (RW) + * + * When written, controls entry into the selected stop mode when Sleep-Now or + * Sleep-On-Exit mode is entered with SLEEPDEEP=1 . Writes to this field are + * blocked if the protection level has not been enabled using the PMPROT register. + * After any system reset, this field is cleared by hardware on any successful write + * to the PMPROT register. When set to VLLSx, the VLLSM field in the VLLSCTRL + * register is used to further select the particular VLLS submode which will be + * entered. + * + * Values: + * - 000 - Normal Stop (STOP) + * - 001 - Reserved + * - 010 - Very-Low-Power Stop (VLPS) + * - 011 - Low-Leakage Stop (LLS) + * - 100 - Very-Low-Leakage Stop (VLLSx) + * - 101 - Reserved + * - 110 - Reseved + * - 111 - Reserved + */ +//@{ +#define BP_SMC_PMCTRL_STOPM (0U) //!< Bit position for SMC_PMCTRL_STOPM. +#define BM_SMC_PMCTRL_STOPM (0x07U) //!< Bit mask for SMC_PMCTRL_STOPM. +#define BS_SMC_PMCTRL_STOPM (3U) //!< Bit field size in bits for SMC_PMCTRL_STOPM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_PMCTRL_STOPM field. +#define BR_SMC_PMCTRL_STOPM (HW_SMC_PMCTRL.B.STOPM) +#endif + +//! @brief Format value for bitfield SMC_PMCTRL_STOPM. +#define BF_SMC_PMCTRL_STOPM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_SMC_PMCTRL_STOPM), uint8_t) & BM_SMC_PMCTRL_STOPM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STOPM field to a new value. +#define BW_SMC_PMCTRL_STOPM(v) (HW_SMC_PMCTRL_WR((HW_SMC_PMCTRL_RD() & ~BM_SMC_PMCTRL_STOPM) | BF_SMC_PMCTRL_STOPM(v))) +#endif +//@} + +/*! + * @name Register SMC_PMCTRL, field STOPA[3] (RO) + * + * When set, this read-only status bit indicates an interrupt or reset occured + * during the previous stop mode entry sequence, preventing the system from + * entering that mode. This field is cleared by hardware at the beginning of any stop + * mode entry sequence and is set if the sequence was aborted. + * + * Values: + * - 0 - The previous stop mode entry was successsful. + * - 1 - The previous stop mode entry was aborted. + */ +//@{ +#define BP_SMC_PMCTRL_STOPA (3U) //!< Bit position for SMC_PMCTRL_STOPA. +#define BM_SMC_PMCTRL_STOPA (0x08U) //!< Bit mask for SMC_PMCTRL_STOPA. +#define BS_SMC_PMCTRL_STOPA (1U) //!< Bit field size in bits for SMC_PMCTRL_STOPA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_PMCTRL_STOPA field. +#define BR_SMC_PMCTRL_STOPA (BITBAND_ACCESS8(HW_SMC_PMCTRL_ADDR, BP_SMC_PMCTRL_STOPA)) +#endif +//@} + +/*! + * @name Register SMC_PMCTRL, field RUNM[6:5] (RW) + * + * When written, causes entry into the selected run mode. Writes to this field + * are blocked if the protection level has not been enabled using the PMPROT + * register. RUNM may be set to VLPR only when PMSTAT=RUN. After being written to + * VLPR, RUNM should not be written back to RUN until PMSTAT=VLPR. + * + * Values: + * - 00 - Normal Run mode (RUN) + * - 01 - Reserved + * - 10 - Very-Low-Power Run mode (VLPR) + * - 11 - Reserved + */ +//@{ +#define BP_SMC_PMCTRL_RUNM (5U) //!< Bit position for SMC_PMCTRL_RUNM. +#define BM_SMC_PMCTRL_RUNM (0x60U) //!< Bit mask for SMC_PMCTRL_RUNM. +#define BS_SMC_PMCTRL_RUNM (2U) //!< Bit field size in bits for SMC_PMCTRL_RUNM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_PMCTRL_RUNM field. +#define BR_SMC_PMCTRL_RUNM (HW_SMC_PMCTRL.B.RUNM) +#endif + +//! @brief Format value for bitfield SMC_PMCTRL_RUNM. +#define BF_SMC_PMCTRL_RUNM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_SMC_PMCTRL_RUNM), uint8_t) & BM_SMC_PMCTRL_RUNM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RUNM field to a new value. +#define BW_SMC_PMCTRL_RUNM(v) (HW_SMC_PMCTRL_WR((HW_SMC_PMCTRL_RD() & ~BM_SMC_PMCTRL_RUNM) | BF_SMC_PMCTRL_RUNM(v))) +#endif +//@} + +/*! + * @name Register SMC_PMCTRL, field LPWUI[7] (RW) + * + * Causes the SMC to exit to normal RUN mode when any active MCU interrupt + * occurs while in a VLP mode (VLPR, VLPW or VLPS). If VLPS mode was entered directly + * from RUN mode, the SMC will always exit back to normal RUN mode regardless of + * the LPWUI setting. LPWUI must be modified only while the system is in RUN + * mode, that is, when PMSTAT=RUN. + * + * Values: + * - 0 - The system remains in a VLP mode on an interrupt + * - 1 - The system exits to Normal RUN mode on an interrupt + */ +//@{ +#define BP_SMC_PMCTRL_LPWUI (7U) //!< Bit position for SMC_PMCTRL_LPWUI. +#define BM_SMC_PMCTRL_LPWUI (0x80U) //!< Bit mask for SMC_PMCTRL_LPWUI. +#define BS_SMC_PMCTRL_LPWUI (1U) //!< Bit field size in bits for SMC_PMCTRL_LPWUI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_PMCTRL_LPWUI field. +#define BR_SMC_PMCTRL_LPWUI (BITBAND_ACCESS8(HW_SMC_PMCTRL_ADDR, BP_SMC_PMCTRL_LPWUI)) +#endif + +//! @brief Format value for bitfield SMC_PMCTRL_LPWUI. +#define BF_SMC_PMCTRL_LPWUI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_SMC_PMCTRL_LPWUI), uint8_t) & BM_SMC_PMCTRL_LPWUI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LPWUI field to a new value. +#define BW_SMC_PMCTRL_LPWUI(v) (BITBAND_ACCESS8(HW_SMC_PMCTRL_ADDR, BP_SMC_PMCTRL_LPWUI) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SMC_VLLSCTRL - VLLS Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SMC_VLLSCTRL - VLLS Control register (RW) + * + * Reset value: 0x03U + * + * The VLLSCTRL register controls features related to VLLS modes. This register + * is reset on Chip POR not VLLS and by reset types that trigger Chip POR not + * VLLS. It is unaffected by reset types that do not trigger Chip POR not VLLS. See + * the Reset section details for more information. + */ +typedef union _hw_smc_vllsctrl +{ + uint8_t U; + struct _hw_smc_vllsctrl_bitfields + { + uint8_t VLLSM : 3; //!< [2:0] VLLS Mode Control + uint8_t RESERVED0 : 2; //!< [4:3] + uint8_t PORPO : 1; //!< [5] POR Power Option + uint8_t RESERVED1 : 2; //!< [7:6] + } B; +} hw_smc_vllsctrl_t; +#endif + +/*! + * @name Constants and macros for entire SMC_VLLSCTRL register + */ +//@{ +#define HW_SMC_VLLSCTRL_ADDR (REGS_SMC_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SMC_VLLSCTRL (*(__IO hw_smc_vllsctrl_t *) HW_SMC_VLLSCTRL_ADDR) +#define HW_SMC_VLLSCTRL_RD() (HW_SMC_VLLSCTRL.U) +#define HW_SMC_VLLSCTRL_WR(v) (HW_SMC_VLLSCTRL.U = (v)) +#define HW_SMC_VLLSCTRL_SET(v) (HW_SMC_VLLSCTRL_WR(HW_SMC_VLLSCTRL_RD() | (v))) +#define HW_SMC_VLLSCTRL_CLR(v) (HW_SMC_VLLSCTRL_WR(HW_SMC_VLLSCTRL_RD() & ~(v))) +#define HW_SMC_VLLSCTRL_TOG(v) (HW_SMC_VLLSCTRL_WR(HW_SMC_VLLSCTRL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SMC_VLLSCTRL bitfields + */ + +/*! + * @name Register SMC_VLLSCTRL, field VLLSM[2:0] (RW) + * + * Controls which VLLS sub-mode to enter if STOPM=VLLS. + * + * Values: + * - 000 - VLLS0 + * - 001 - VLLS1 + * - 010 - VLLS2 + * - 011 - VLLS3 + * - 100 - Reserved + * - 101 - Reserved + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_SMC_VLLSCTRL_VLLSM (0U) //!< Bit position for SMC_VLLSCTRL_VLLSM. +#define BM_SMC_VLLSCTRL_VLLSM (0x07U) //!< Bit mask for SMC_VLLSCTRL_VLLSM. +#define BS_SMC_VLLSCTRL_VLLSM (3U) //!< Bit field size in bits for SMC_VLLSCTRL_VLLSM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_VLLSCTRL_VLLSM field. +#define BR_SMC_VLLSCTRL_VLLSM (HW_SMC_VLLSCTRL.B.VLLSM) +#endif + +//! @brief Format value for bitfield SMC_VLLSCTRL_VLLSM. +#define BF_SMC_VLLSCTRL_VLLSM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_SMC_VLLSCTRL_VLLSM), uint8_t) & BM_SMC_VLLSCTRL_VLLSM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the VLLSM field to a new value. +#define BW_SMC_VLLSCTRL_VLLSM(v) (HW_SMC_VLLSCTRL_WR((HW_SMC_VLLSCTRL_RD() & ~BM_SMC_VLLSCTRL_VLLSM) | BF_SMC_VLLSCTRL_VLLSM(v))) +#endif +//@} + +/*! + * @name Register SMC_VLLSCTRL, field PORPO[5] (RW) + * + * Controls whether the POR detect circuit (for brown-out detection) is enabled + * in VLLS0 mode. + * + * Values: + * - 0 - POR detect circuit is enabled in VLLS0. + * - 1 - POR detect circuit is disabled in VLLS0. + */ +//@{ +#define BP_SMC_VLLSCTRL_PORPO (5U) //!< Bit position for SMC_VLLSCTRL_PORPO. +#define BM_SMC_VLLSCTRL_PORPO (0x20U) //!< Bit mask for SMC_VLLSCTRL_PORPO. +#define BS_SMC_VLLSCTRL_PORPO (1U) //!< Bit field size in bits for SMC_VLLSCTRL_PORPO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_VLLSCTRL_PORPO field. +#define BR_SMC_VLLSCTRL_PORPO (BITBAND_ACCESS8(HW_SMC_VLLSCTRL_ADDR, BP_SMC_VLLSCTRL_PORPO)) +#endif + +//! @brief Format value for bitfield SMC_VLLSCTRL_PORPO. +#define BF_SMC_VLLSCTRL_PORPO(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_SMC_VLLSCTRL_PORPO), uint8_t) & BM_SMC_VLLSCTRL_PORPO) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PORPO field to a new value. +#define BW_SMC_VLLSCTRL_PORPO(v) (BITBAND_ACCESS8(HW_SMC_VLLSCTRL_ADDR, BP_SMC_VLLSCTRL_PORPO) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SMC_PMSTAT - Power Mode Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SMC_PMSTAT - Power Mode Status register (RO) + * + * Reset value: 0x01U + * + * PMSTAT is a read-only, one-hot register which indicates the current power + * mode of the system. This register is reset on Chip POR not VLLS and by reset + * types that trigger Chip POR not VLLS. It is unaffected by reset types that do not + * trigger Chip POR not VLLS. See the Reset section details for more information. + */ +typedef union _hw_smc_pmstat +{ + uint8_t U; + struct _hw_smc_pmstat_bitfields + { + uint8_t PMSTAT : 7; //!< [6:0] + uint8_t RESERVED0 : 1; //!< [7] + } B; +} hw_smc_pmstat_t; +#endif + +/*! + * @name Constants and macros for entire SMC_PMSTAT register + */ +//@{ +#define HW_SMC_PMSTAT_ADDR (REGS_SMC_BASE + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SMC_PMSTAT (*(__I hw_smc_pmstat_t *) HW_SMC_PMSTAT_ADDR) +#define HW_SMC_PMSTAT_RD() (HW_SMC_PMSTAT.U) +#endif +//@} + +/* + * Constants & macros for individual SMC_PMSTAT bitfields + */ + +/*! + * @name Register SMC_PMSTAT, field PMSTAT[6:0] (RO) + * + * When debug is enabled, the PMSTAT will not update to STOP or VLPS + */ +//@{ +#define BP_SMC_PMSTAT_PMSTAT (0U) //!< Bit position for SMC_PMSTAT_PMSTAT. +#define BM_SMC_PMSTAT_PMSTAT (0x7FU) //!< Bit mask for SMC_PMSTAT_PMSTAT. +#define BS_SMC_PMSTAT_PMSTAT (7U) //!< Bit field size in bits for SMC_PMSTAT_PMSTAT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SMC_PMSTAT_PMSTAT field. +#define BR_SMC_PMSTAT_PMSTAT (HW_SMC_PMSTAT.B.PMSTAT) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_smc_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All SMC module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_smc +{ + __IO hw_smc_pmprot_t PMPROT; //!< [0x0] Power Mode Protection register + __IO hw_smc_pmctrl_t PMCTRL; //!< [0x1] Power Mode Control register + __IO hw_smc_vllsctrl_t VLLSCTRL; //!< [0x2] VLLS Control register + __I hw_smc_pmstat_t PMSTAT; //!< [0x3] Power Mode Status register +} hw_smc_t; +#pragma pack() + +//! @brief Macro to access all SMC registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_SMC</code>. +#define HW_SMC (*(hw_smc_t *) REGS_SMC_BASE) +#endif + +#endif // __HW_SMC_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_spi.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,2445 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_SPI_REGISTERS_H__ +#define __HW_SPI_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 SPI + * + * Serial Peripheral Interface + * + * Registers defined in this header file: + * - HW_SPI_MCR - Module Configuration Register + * - HW_SPI_TCR - Transfer Count Register + * - HW_SPI_CTARn - Clock and Transfer Attributes Register (In Master Mode) + * - HW_SPI_CTARn_SLAVE - Clock and Transfer Attributes Register (In Slave Mode) + * - HW_SPI_SR - Status Register + * - HW_SPI_RSER - DMA/Interrupt Request Select and Enable Register + * - HW_SPI_PUSHR - PUSH TX FIFO Register In Master Mode + * - HW_SPI_PUSHR_SLAVE - PUSH TX FIFO Register In Slave Mode + * - HW_SPI_POPR - POP RX FIFO Register + * - HW_SPI_TXFRn - Transmit FIFO Registers + * - HW_SPI_RXFRn - Receive FIFO Registers + * + * - hw_spi_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_SPI_BASE +#define HW_SPI_INSTANCE_COUNT (3U) //!< Number of instances of the SPI module. +#define HW_SPI0 (0U) //!< Instance number for SPI0. +#define HW_SPI1 (1U) //!< Instance number for SPI1. +#define HW_SPI2 (2U) //!< Instance number for SPI2. +#define REGS_SPI0_BASE (0x4002C000U) //!< Base address for SPI0. +#define REGS_SPI1_BASE (0x4002D000U) //!< Base address for SPI1. +#define REGS_SPI2_BASE (0x400AC000U) //!< Base address for SPI2. + +//! @brief Table of base addresses for SPI instances. +static const uint32_t __g_regs_SPI_base_addresses[] = { + REGS_SPI0_BASE, + REGS_SPI1_BASE, + REGS_SPI2_BASE, + }; + +//! @brief Get the base address of SPI by instance number. +//! @param x SPI instance number, from 0 through 2. +#define REGS_SPI_BASE(x) (__g_regs_SPI_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of SPI. +#define REGS_SPI_INSTANCE(b) ((b) == REGS_SPI0_BASE ? HW_SPI0 : (b) == REGS_SPI1_BASE ? HW_SPI1 : (b) == REGS_SPI2_BASE ? HW_SPI2 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SPI_MCR - Module Configuration Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_MCR - Module Configuration Register (RW) + * + * Reset value: 0x00004001U + * + * Contains bits to configure various attributes associated with the module + * operations. The HALT and MDIS bits can be changed at any time, but the effect + * takes place only on the next frame boundary. Only the HALT and MDIS bits in the + * MCR can be changed, while the module is in the Running state. + */ +typedef union _hw_spi_mcr +{ + uint32_t U; + struct _hw_spi_mcr_bitfields + { + uint32_t HALT : 1; //!< [0] Halt + uint32_t RESERVED0 : 7; //!< [7:1] + uint32_t SMPL_PT : 2; //!< [9:8] Sample Point + uint32_t CLR_RXF : 1; //!< [10] + uint32_t CLR_TXF : 1; //!< [11] Clear TX FIFO + uint32_t DIS_RXF : 1; //!< [12] Disable Receive FIFO + uint32_t DIS_TXF : 1; //!< [13] Disable Transmit FIFO + uint32_t MDIS : 1; //!< [14] Module Disable + uint32_t DOZE : 1; //!< [15] Doze Enable + uint32_t PCSIS : 6; //!< [21:16] Peripheral Chip Select x Inactive + //! State + uint32_t RESERVED1 : 2; //!< [23:22] + uint32_t ROOE : 1; //!< [24] Receive FIFO Overflow Overwrite Enable + uint32_t PCSSE : 1; //!< [25] Peripheral Chip Select Strobe Enable + uint32_t MTFE : 1; //!< [26] Modified Timing Format Enable + uint32_t FRZ : 1; //!< [27] Freeze + uint32_t DCONF : 2; //!< [29:28] SPI Configuration. + uint32_t CONT_SCKE : 1; //!< [30] Continuous SCK Enable + uint32_t MSTR : 1; //!< [31] Master/Slave Mode Select + } B; +} hw_spi_mcr_t; +#endif + +/*! + * @name Constants and macros for entire SPI_MCR register + */ +//@{ +#define HW_SPI_MCR_ADDR(x) (REGS_SPI_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_MCR(x) (*(__IO hw_spi_mcr_t *) HW_SPI_MCR_ADDR(x)) +#define HW_SPI_MCR_RD(x) (HW_SPI_MCR(x).U) +#define HW_SPI_MCR_WR(x, v) (HW_SPI_MCR(x).U = (v)) +#define HW_SPI_MCR_SET(x, v) (HW_SPI_MCR_WR(x, HW_SPI_MCR_RD(x) | (v))) +#define HW_SPI_MCR_CLR(x, v) (HW_SPI_MCR_WR(x, HW_SPI_MCR_RD(x) & ~(v))) +#define HW_SPI_MCR_TOG(x, v) (HW_SPI_MCR_WR(x, HW_SPI_MCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SPI_MCR bitfields + */ + +/*! + * @name Register SPI_MCR, field HALT[0] (RW) + * + * The HALT bit starts and stops frame transfers. See Start and Stop of Module + * transfers + * + * Values: + * - 0 - Start transfers. + * - 1 - Stop transfers. + */ +//@{ +#define BP_SPI_MCR_HALT (0U) //!< Bit position for SPI_MCR_HALT. +#define BM_SPI_MCR_HALT (0x00000001U) //!< Bit mask for SPI_MCR_HALT. +#define BS_SPI_MCR_HALT (1U) //!< Bit field size in bits for SPI_MCR_HALT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_HALT field. +#define BR_SPI_MCR_HALT(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_HALT)) +#endif + +//! @brief Format value for bitfield SPI_MCR_HALT. +#define BF_SPI_MCR_HALT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_HALT), uint32_t) & BM_SPI_MCR_HALT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HALT field to a new value. +#define BW_SPI_MCR_HALT(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_HALT) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field SMPL_PT[9:8] (RW) + * + * Controls when the module master samples SIN in Modified Transfer Format. This + * field is valid only when CPHA bit in CTARn[CPHA] is 0. + * + * Values: + * - 00 - 0 protocol clock cycles between SCK edge and SIN sample + * - 01 - 1 protocol clock cycle between SCK edge and SIN sample + * - 10 - 2 protocol clock cycles between SCK edge and SIN sample + * - 11 - Reserved + */ +//@{ +#define BP_SPI_MCR_SMPL_PT (8U) //!< Bit position for SPI_MCR_SMPL_PT. +#define BM_SPI_MCR_SMPL_PT (0x00000300U) //!< Bit mask for SPI_MCR_SMPL_PT. +#define BS_SPI_MCR_SMPL_PT (2U) //!< Bit field size in bits for SPI_MCR_SMPL_PT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_SMPL_PT field. +#define BR_SPI_MCR_SMPL_PT(x) (HW_SPI_MCR(x).B.SMPL_PT) +#endif + +//! @brief Format value for bitfield SPI_MCR_SMPL_PT. +#define BF_SPI_MCR_SMPL_PT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_SMPL_PT), uint32_t) & BM_SPI_MCR_SMPL_PT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SMPL_PT field to a new value. +#define BW_SPI_MCR_SMPL_PT(x, v) (HW_SPI_MCR_WR(x, (HW_SPI_MCR_RD(x) & ~BM_SPI_MCR_SMPL_PT) | BF_SPI_MCR_SMPL_PT(v))) +#endif +//@} + +/*! + * @name Register SPI_MCR, field CLR_RXF[10] (WORZ) + * + * Flushes the RX FIFO. Writing a 1 to CLR_RXF clears the RX Counter. The + * CLR_RXF bit is always read as zero. + * + * Values: + * - 0 - Do not clear the RX FIFO counter. + * - 1 - Clear the RX FIFO counter. + */ +//@{ +#define BP_SPI_MCR_CLR_RXF (10U) //!< Bit position for SPI_MCR_CLR_RXF. +#define BM_SPI_MCR_CLR_RXF (0x00000400U) //!< Bit mask for SPI_MCR_CLR_RXF. +#define BS_SPI_MCR_CLR_RXF (1U) //!< Bit field size in bits for SPI_MCR_CLR_RXF. + +//! @brief Format value for bitfield SPI_MCR_CLR_RXF. +#define BF_SPI_MCR_CLR_RXF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_CLR_RXF), uint32_t) & BM_SPI_MCR_CLR_RXF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLR_RXF field to a new value. +#define BW_SPI_MCR_CLR_RXF(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_CLR_RXF) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field CLR_TXF[11] (WORZ) + * + * Flushes the TX FIFO. Writing a 1 to CLR_TXF clears the TX FIFO Counter. The + * CLR_TXF bit is always read as zero. + * + * Values: + * - 0 - Do not clear the TX FIFO counter. + * - 1 - Clear the TX FIFO counter. + */ +//@{ +#define BP_SPI_MCR_CLR_TXF (11U) //!< Bit position for SPI_MCR_CLR_TXF. +#define BM_SPI_MCR_CLR_TXF (0x00000800U) //!< Bit mask for SPI_MCR_CLR_TXF. +#define BS_SPI_MCR_CLR_TXF (1U) //!< Bit field size in bits for SPI_MCR_CLR_TXF. + +//! @brief Format value for bitfield SPI_MCR_CLR_TXF. +#define BF_SPI_MCR_CLR_TXF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_CLR_TXF), uint32_t) & BM_SPI_MCR_CLR_TXF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLR_TXF field to a new value. +#define BW_SPI_MCR_CLR_TXF(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_CLR_TXF) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field DIS_RXF[12] (RW) + * + * When the RX FIFO is disabled, the receive part of the module operates as a + * simplified double-buffered SPI. This bit can only be written when the MDIS bit + * is cleared. + * + * Values: + * - 0 - RX FIFO is enabled. + * - 1 - RX FIFO is disabled. + */ +//@{ +#define BP_SPI_MCR_DIS_RXF (12U) //!< Bit position for SPI_MCR_DIS_RXF. +#define BM_SPI_MCR_DIS_RXF (0x00001000U) //!< Bit mask for SPI_MCR_DIS_RXF. +#define BS_SPI_MCR_DIS_RXF (1U) //!< Bit field size in bits for SPI_MCR_DIS_RXF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_DIS_RXF field. +#define BR_SPI_MCR_DIS_RXF(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_DIS_RXF)) +#endif + +//! @brief Format value for bitfield SPI_MCR_DIS_RXF. +#define BF_SPI_MCR_DIS_RXF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_DIS_RXF), uint32_t) & BM_SPI_MCR_DIS_RXF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DIS_RXF field to a new value. +#define BW_SPI_MCR_DIS_RXF(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_DIS_RXF) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field DIS_TXF[13] (RW) + * + * When the TX FIFO is disabled, the transmit part of the module operates as a + * simplified double-buffered SPI. This bit can be written only when the MDIS bit + * is cleared. + * + * Values: + * - 0 - TX FIFO is enabled. + * - 1 - TX FIFO is disabled. + */ +//@{ +#define BP_SPI_MCR_DIS_TXF (13U) //!< Bit position for SPI_MCR_DIS_TXF. +#define BM_SPI_MCR_DIS_TXF (0x00002000U) //!< Bit mask for SPI_MCR_DIS_TXF. +#define BS_SPI_MCR_DIS_TXF (1U) //!< Bit field size in bits for SPI_MCR_DIS_TXF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_DIS_TXF field. +#define BR_SPI_MCR_DIS_TXF(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_DIS_TXF)) +#endif + +//! @brief Format value for bitfield SPI_MCR_DIS_TXF. +#define BF_SPI_MCR_DIS_TXF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_DIS_TXF), uint32_t) & BM_SPI_MCR_DIS_TXF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DIS_TXF field to a new value. +#define BW_SPI_MCR_DIS_TXF(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_DIS_TXF) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field MDIS[14] (RW) + * + * Allows the clock to be stopped to the non-memory mapped logic in the module + * effectively putting it in a software-controlled power-saving state. The reset + * value of the MDIS bit is parameterized, with a default reset value of 0. When + * the module is used in Slave Mode, we recommend leaving this bit 0, because a + * slave doesn't have control over master transactions. + * + * Values: + * - 0 - Enables the module clocks. + * - 1 - Allows external logic to disable the module clocks. + */ +//@{ +#define BP_SPI_MCR_MDIS (14U) //!< Bit position for SPI_MCR_MDIS. +#define BM_SPI_MCR_MDIS (0x00004000U) //!< Bit mask for SPI_MCR_MDIS. +#define BS_SPI_MCR_MDIS (1U) //!< Bit field size in bits for SPI_MCR_MDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_MDIS field. +#define BR_SPI_MCR_MDIS(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_MDIS)) +#endif + +//! @brief Format value for bitfield SPI_MCR_MDIS. +#define BF_SPI_MCR_MDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_MDIS), uint32_t) & BM_SPI_MCR_MDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MDIS field to a new value. +#define BW_SPI_MCR_MDIS(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_MDIS) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field DOZE[15] (RW) + * + * Provides support for an externally controlled Doze mode power-saving + * mechanism. + * + * Values: + * - 0 - Doze mode has no effect on the module. + * - 1 - Doze mode disables the module. + */ +//@{ +#define BP_SPI_MCR_DOZE (15U) //!< Bit position for SPI_MCR_DOZE. +#define BM_SPI_MCR_DOZE (0x00008000U) //!< Bit mask for SPI_MCR_DOZE. +#define BS_SPI_MCR_DOZE (1U) //!< Bit field size in bits for SPI_MCR_DOZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_DOZE field. +#define BR_SPI_MCR_DOZE(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_DOZE)) +#endif + +//! @brief Format value for bitfield SPI_MCR_DOZE. +#define BF_SPI_MCR_DOZE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_DOZE), uint32_t) & BM_SPI_MCR_DOZE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DOZE field to a new value. +#define BW_SPI_MCR_DOZE(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_DOZE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field PCSIS[21:16] (RW) + * + * Determines the inactive state of PCSx. + * + * Values: + * - 0 - The inactive state of PCSx is low. + * - 1 - The inactive state of PCSx is high. + */ +//@{ +#define BP_SPI_MCR_PCSIS (16U) //!< Bit position for SPI_MCR_PCSIS. +#define BM_SPI_MCR_PCSIS (0x003F0000U) //!< Bit mask for SPI_MCR_PCSIS. +#define BS_SPI_MCR_PCSIS (6U) //!< Bit field size in bits for SPI_MCR_PCSIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_PCSIS field. +#define BR_SPI_MCR_PCSIS(x) (HW_SPI_MCR(x).B.PCSIS) +#endif + +//! @brief Format value for bitfield SPI_MCR_PCSIS. +#define BF_SPI_MCR_PCSIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_PCSIS), uint32_t) & BM_SPI_MCR_PCSIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PCSIS field to a new value. +#define BW_SPI_MCR_PCSIS(x, v) (HW_SPI_MCR_WR(x, (HW_SPI_MCR_RD(x) & ~BM_SPI_MCR_PCSIS) | BF_SPI_MCR_PCSIS(v))) +#endif +//@} + +/*! + * @name Register SPI_MCR, field ROOE[24] (RW) + * + * In the RX FIFO overflow condition, configures the module to ignore the + * incoming serial data or overwrite existing data. If the RX FIFO is full and new data + * is received, the data from the transfer, generating the overflow, is ignored + * or shifted into the shift register. + * + * Values: + * - 0 - Incoming data is ignored. + * - 1 - Incoming data is shifted into the shift register. + */ +//@{ +#define BP_SPI_MCR_ROOE (24U) //!< Bit position for SPI_MCR_ROOE. +#define BM_SPI_MCR_ROOE (0x01000000U) //!< Bit mask for SPI_MCR_ROOE. +#define BS_SPI_MCR_ROOE (1U) //!< Bit field size in bits for SPI_MCR_ROOE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_ROOE field. +#define BR_SPI_MCR_ROOE(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_ROOE)) +#endif + +//! @brief Format value for bitfield SPI_MCR_ROOE. +#define BF_SPI_MCR_ROOE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_ROOE), uint32_t) & BM_SPI_MCR_ROOE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ROOE field to a new value. +#define BW_SPI_MCR_ROOE(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_ROOE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field PCSSE[25] (RW) + * + * Enables the PCS5/ PCSS to operate as a PCS Strobe output signal. + * + * Values: + * - 0 - PCS5/ PCSS is used as the Peripheral Chip Select[5] signal. + * - 1 - PCS5/ PCSS is used as an active-low PCS Strobe signal. + */ +//@{ +#define BP_SPI_MCR_PCSSE (25U) //!< Bit position for SPI_MCR_PCSSE. +#define BM_SPI_MCR_PCSSE (0x02000000U) //!< Bit mask for SPI_MCR_PCSSE. +#define BS_SPI_MCR_PCSSE (1U) //!< Bit field size in bits for SPI_MCR_PCSSE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_PCSSE field. +#define BR_SPI_MCR_PCSSE(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_PCSSE)) +#endif + +//! @brief Format value for bitfield SPI_MCR_PCSSE. +#define BF_SPI_MCR_PCSSE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_PCSSE), uint32_t) & BM_SPI_MCR_PCSSE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PCSSE field to a new value. +#define BW_SPI_MCR_PCSSE(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_PCSSE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field MTFE[26] (RW) + * + * Enables a modified transfer format to be used. + * + * Values: + * - 0 - Modified SPI transfer format disabled. + * - 1 - Modified SPI transfer format enabled. + */ +//@{ +#define BP_SPI_MCR_MTFE (26U) //!< Bit position for SPI_MCR_MTFE. +#define BM_SPI_MCR_MTFE (0x04000000U) //!< Bit mask for SPI_MCR_MTFE. +#define BS_SPI_MCR_MTFE (1U) //!< Bit field size in bits for SPI_MCR_MTFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_MTFE field. +#define BR_SPI_MCR_MTFE(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_MTFE)) +#endif + +//! @brief Format value for bitfield SPI_MCR_MTFE. +#define BF_SPI_MCR_MTFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_MTFE), uint32_t) & BM_SPI_MCR_MTFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MTFE field to a new value. +#define BW_SPI_MCR_MTFE(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_MTFE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field FRZ[27] (RW) + * + * Enables transfers to be stopped on the next frame boundary when the device + * enters Debug mode. + * + * Values: + * - 0 - Do not halt serial transfers in Debug mode. + * - 1 - Halt serial transfers in Debug mode. + */ +//@{ +#define BP_SPI_MCR_FRZ (27U) //!< Bit position for SPI_MCR_FRZ. +#define BM_SPI_MCR_FRZ (0x08000000U) //!< Bit mask for SPI_MCR_FRZ. +#define BS_SPI_MCR_FRZ (1U) //!< Bit field size in bits for SPI_MCR_FRZ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_FRZ field. +#define BR_SPI_MCR_FRZ(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_FRZ)) +#endif + +//! @brief Format value for bitfield SPI_MCR_FRZ. +#define BF_SPI_MCR_FRZ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_FRZ), uint32_t) & BM_SPI_MCR_FRZ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRZ field to a new value. +#define BW_SPI_MCR_FRZ(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_FRZ) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field DCONF[29:28] (RO) + * + * Selects among the different configurations of the module. + * + * Values: + * - 00 - SPI + * - 01 - Reserved + * - 10 - Reserved + * - 11 - Reserved + */ +//@{ +#define BP_SPI_MCR_DCONF (28U) //!< Bit position for SPI_MCR_DCONF. +#define BM_SPI_MCR_DCONF (0x30000000U) //!< Bit mask for SPI_MCR_DCONF. +#define BS_SPI_MCR_DCONF (2U) //!< Bit field size in bits for SPI_MCR_DCONF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_DCONF field. +#define BR_SPI_MCR_DCONF(x) (HW_SPI_MCR(x).B.DCONF) +#endif +//@} + +/*! + * @name Register SPI_MCR, field CONT_SCKE[30] (RW) + * + * Enables the Serial Communication Clock (SCK) to run continuously. + * + * Values: + * - 0 - Continuous SCK disabled. + * - 1 - Continuous SCK enabled. + */ +//@{ +#define BP_SPI_MCR_CONT_SCKE (30U) //!< Bit position for SPI_MCR_CONT_SCKE. +#define BM_SPI_MCR_CONT_SCKE (0x40000000U) //!< Bit mask for SPI_MCR_CONT_SCKE. +#define BS_SPI_MCR_CONT_SCKE (1U) //!< Bit field size in bits for SPI_MCR_CONT_SCKE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_CONT_SCKE field. +#define BR_SPI_MCR_CONT_SCKE(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_CONT_SCKE)) +#endif + +//! @brief Format value for bitfield SPI_MCR_CONT_SCKE. +#define BF_SPI_MCR_CONT_SCKE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_CONT_SCKE), uint32_t) & BM_SPI_MCR_CONT_SCKE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CONT_SCKE field to a new value. +#define BW_SPI_MCR_CONT_SCKE(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_CONT_SCKE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_MCR, field MSTR[31] (RW) + * + * Enables either Master mode (if supported) or Slave mode (if supported) + * operation. + * + * Values: + * - 0 - Enables Slave mode + * - 1 - Enables Master mode + */ +//@{ +#define BP_SPI_MCR_MSTR (31U) //!< Bit position for SPI_MCR_MSTR. +#define BM_SPI_MCR_MSTR (0x80000000U) //!< Bit mask for SPI_MCR_MSTR. +#define BS_SPI_MCR_MSTR (1U) //!< Bit field size in bits for SPI_MCR_MSTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_MCR_MSTR field. +#define BR_SPI_MCR_MSTR(x) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_MSTR)) +#endif + +//! @brief Format value for bitfield SPI_MCR_MSTR. +#define BF_SPI_MCR_MSTR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_MCR_MSTR), uint32_t) & BM_SPI_MCR_MSTR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MSTR field to a new value. +#define BW_SPI_MCR_MSTR(x, v) (BITBAND_ACCESS32(HW_SPI_MCR_ADDR(x), BP_SPI_MCR_MSTR) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SPI_TCR - Transfer Count Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_TCR - Transfer Count Register (RW) + * + * Reset value: 0x00000000U + * + * TCR contains a counter that indicates the number of SPI transfers made. The + * transfer counter is intended to assist in queue management. Do not write the + * TCR when the module is in the Running state. + */ +typedef union _hw_spi_tcr +{ + uint32_t U; + struct _hw_spi_tcr_bitfields + { + uint32_t RESERVED0 : 16; //!< [15:0] + uint32_t SPI_TCNT : 16; //!< [31:16] SPI Transfer Counter + } B; +} hw_spi_tcr_t; +#endif + +/*! + * @name Constants and macros for entire SPI_TCR register + */ +//@{ +#define HW_SPI_TCR_ADDR(x) (REGS_SPI_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_TCR(x) (*(__IO hw_spi_tcr_t *) HW_SPI_TCR_ADDR(x)) +#define HW_SPI_TCR_RD(x) (HW_SPI_TCR(x).U) +#define HW_SPI_TCR_WR(x, v) (HW_SPI_TCR(x).U = (v)) +#define HW_SPI_TCR_SET(x, v) (HW_SPI_TCR_WR(x, HW_SPI_TCR_RD(x) | (v))) +#define HW_SPI_TCR_CLR(x, v) (HW_SPI_TCR_WR(x, HW_SPI_TCR_RD(x) & ~(v))) +#define HW_SPI_TCR_TOG(x, v) (HW_SPI_TCR_WR(x, HW_SPI_TCR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SPI_TCR bitfields + */ + +/*! + * @name Register SPI_TCR, field SPI_TCNT[31:16] (RW) + * + * Counts the number of SPI transfers the module makes. The SPI_TCNT field + * increments every time the last bit of an SPI frame is transmitted. A value written + * to SPI_TCNT presets the counter to that value. SPI_TCNT is reset to zero at + * the beginning of the frame when the CTCNT field is set in the executing SPI + * command. The Transfer Counter wraps around; incrementing the counter past 65535 + * resets the counter to zero. + */ +//@{ +#define BP_SPI_TCR_SPI_TCNT (16U) //!< Bit position for SPI_TCR_SPI_TCNT. +#define BM_SPI_TCR_SPI_TCNT (0xFFFF0000U) //!< Bit mask for SPI_TCR_SPI_TCNT. +#define BS_SPI_TCR_SPI_TCNT (16U) //!< Bit field size in bits for SPI_TCR_SPI_TCNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_TCR_SPI_TCNT field. +#define BR_SPI_TCR_SPI_TCNT(x) (HW_SPI_TCR(x).B.SPI_TCNT) +#endif + +//! @brief Format value for bitfield SPI_TCR_SPI_TCNT. +#define BF_SPI_TCR_SPI_TCNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_TCR_SPI_TCNT), uint32_t) & BM_SPI_TCR_SPI_TCNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SPI_TCNT field to a new value. +#define BW_SPI_TCR_SPI_TCNT(x, v) (HW_SPI_TCR_WR(x, (HW_SPI_TCR_RD(x) & ~BM_SPI_TCR_SPI_TCNT) | BF_SPI_TCR_SPI_TCNT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SPI_CTARn - Clock and Transfer Attributes Register (In Master Mode) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_CTARn - Clock and Transfer Attributes Register (In Master Mode) (RW) + * + * Reset value: 0x78000000U + * + * CTAR registers are used to define different transfer attributes. Do not write + * to the CTAR registers while the module is in the Running state. In Master + * mode, the CTAR registers define combinations of transfer attributes such as frame + * size, clock phase and polarity, data bit ordering, baud rate, and various + * delays. In slave mode, a subset of the bitfields in CTAR0 are used to set the + * slave transfer attributes. When the module is configured as an SPI master, the + * CTAS field in the command portion of the TX FIFO entry selects which of the CTAR + * registers is used. When the module is configured as an SPI bus slave, it uses + * the CTAR0 register. + */ +typedef union _hw_spi_ctarn +{ + uint32_t U; + struct _hw_spi_ctarn_bitfields + { + uint32_t BR : 4; //!< [3:0] Baud Rate Scaler + uint32_t DT : 4; //!< [7:4] Delay After Transfer Scaler + uint32_t ASC : 4; //!< [11:8] After SCK Delay Scaler + uint32_t CSSCK : 4; //!< [15:12] PCS to SCK Delay Scaler + uint32_t PBR : 2; //!< [17:16] Baud Rate Prescaler + uint32_t PDT : 2; //!< [19:18] Delay after Transfer Prescaler + uint32_t PASC : 2; //!< [21:20] After SCK Delay Prescaler + uint32_t PCSSCK : 2; //!< [23:22] PCS to SCK Delay Prescaler + uint32_t LSBFE : 1; //!< [24] LSB First + uint32_t CPHA : 1; //!< [25] Clock Phase + uint32_t CPOL : 1; //!< [26] Clock Polarity + uint32_t FMSZ : 4; //!< [30:27] Frame Size + uint32_t DBR : 1; //!< [31] Double Baud Rate + } B; +} hw_spi_ctarn_t; +#endif + +/*! + * @name Constants and macros for entire SPI_CTARn register + */ +//@{ +#define HW_SPI_CTARn_COUNT (2U) + +#define HW_SPI_CTARn_ADDR(x, n) (REGS_SPI_BASE(x) + 0xCU + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_CTARn(x, n) (*(__IO hw_spi_ctarn_t *) HW_SPI_CTARn_ADDR(x, n)) +#define HW_SPI_CTARn_RD(x, n) (HW_SPI_CTARn(x, n).U) +#define HW_SPI_CTARn_WR(x, n, v) (HW_SPI_CTARn(x, n).U = (v)) +#define HW_SPI_CTARn_SET(x, n, v) (HW_SPI_CTARn_WR(x, n, HW_SPI_CTARn_RD(x, n) | (v))) +#define HW_SPI_CTARn_CLR(x, n, v) (HW_SPI_CTARn_WR(x, n, HW_SPI_CTARn_RD(x, n) & ~(v))) +#define HW_SPI_CTARn_TOG(x, n, v) (HW_SPI_CTARn_WR(x, n, HW_SPI_CTARn_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SPI_CTARn bitfields + */ + +/*! + * @name Register SPI_CTARn, field BR[3:0] (RW) + * + * Selects the scaler value for the baud rate. This field is used only in master + * mode. The prescaled protocol clock is divided by the Baud Rate Scaler to + * generate the frequency of the SCK. The baud rate is computed according to the + * following equation: SCK baud rate = (fP /PBR) x [(1+DBR)/BR] The following table + * lists the baud rate scaler values. Baud Rate Scaler CTARn[BR] Baud Rate Scaler + * Value 0000 2 0001 4 0010 6 0011 8 0100 16 0101 32 0110 64 0111 128 1000 256 + * 1001 512 1010 1024 1011 2048 1100 4096 1101 8192 1110 16384 1111 32768 + */ +//@{ +#define BP_SPI_CTARn_BR (0U) //!< Bit position for SPI_CTARn_BR. +#define BM_SPI_CTARn_BR (0x0000000FU) //!< Bit mask for SPI_CTARn_BR. +#define BS_SPI_CTARn_BR (4U) //!< Bit field size in bits for SPI_CTARn_BR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_BR field. +#define BR_SPI_CTARn_BR(x, n) (HW_SPI_CTARn(x, n).B.BR) +#endif + +//! @brief Format value for bitfield SPI_CTARn_BR. +#define BF_SPI_CTARn_BR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_BR), uint32_t) & BM_SPI_CTARn_BR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BR field to a new value. +#define BW_SPI_CTARn_BR(x, n, v) (HW_SPI_CTARn_WR(x, n, (HW_SPI_CTARn_RD(x, n) & ~BM_SPI_CTARn_BR) | BF_SPI_CTARn_BR(v))) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field DT[7:4] (RW) + * + * Selects the Delay after Transfer Scaler. This field is used only in master + * mode. The Delay after Transfer is the time between the negation of the PCS + * signal at the end of a frame and the assertion of PCS at the beginning of the next + * frame. In the Continuous Serial Communications Clock operation, the DT value + * is fixed to one SCK clock period, The Delay after Transfer is a multiple of the + * protocol clock period, and it is computed according to the following + * equation: tDT = (1/fP ) x PDT x DT See Delay Scaler Encoding table in CTARn[CSSCK] bit + * field description for scaler values. + */ +//@{ +#define BP_SPI_CTARn_DT (4U) //!< Bit position for SPI_CTARn_DT. +#define BM_SPI_CTARn_DT (0x000000F0U) //!< Bit mask for SPI_CTARn_DT. +#define BS_SPI_CTARn_DT (4U) //!< Bit field size in bits for SPI_CTARn_DT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_DT field. +#define BR_SPI_CTARn_DT(x, n) (HW_SPI_CTARn(x, n).B.DT) +#endif + +//! @brief Format value for bitfield SPI_CTARn_DT. +#define BF_SPI_CTARn_DT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_DT), uint32_t) & BM_SPI_CTARn_DT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DT field to a new value. +#define BW_SPI_CTARn_DT(x, n, v) (HW_SPI_CTARn_WR(x, n, (HW_SPI_CTARn_RD(x, n) & ~BM_SPI_CTARn_DT) | BF_SPI_CTARn_DT(v))) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field ASC[11:8] (RW) + * + * Selects the scaler value for the After SCK Delay. This field is used only in + * master mode. The After SCK Delay is the delay between the last edge of SCK and + * the negation of PCS. The delay is a multiple of the protocol clock period, + * and it is computed according to the following equation: t ASC = (1/fP) x PASC x + * ASC See Delay Scaler Encoding table in CTARn[CSSCK] bit field description for + * scaler values. Refer After SCK Delay (tASC ) for more details. + */ +//@{ +#define BP_SPI_CTARn_ASC (8U) //!< Bit position for SPI_CTARn_ASC. +#define BM_SPI_CTARn_ASC (0x00000F00U) //!< Bit mask for SPI_CTARn_ASC. +#define BS_SPI_CTARn_ASC (4U) //!< Bit field size in bits for SPI_CTARn_ASC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_ASC field. +#define BR_SPI_CTARn_ASC(x, n) (HW_SPI_CTARn(x, n).B.ASC) +#endif + +//! @brief Format value for bitfield SPI_CTARn_ASC. +#define BF_SPI_CTARn_ASC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_ASC), uint32_t) & BM_SPI_CTARn_ASC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ASC field to a new value. +#define BW_SPI_CTARn_ASC(x, n, v) (HW_SPI_CTARn_WR(x, n, (HW_SPI_CTARn_RD(x, n) & ~BM_SPI_CTARn_ASC) | BF_SPI_CTARn_ASC(v))) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field CSSCK[15:12] (RW) + * + * Selects the scaler value for the PCS to SCK delay. This field is used only in + * master mode. The PCS to SCK Delay is the delay between the assertion of PCS + * and the first edge of the SCK. The delay is a multiple of the protocol clock + * period, and it is computed according to the following equation: t CSC = (1/fP ) + * x PCSSCK x CSSCK. The following table lists the delay scaler values. Delay + * Scaler Encoding Field Value Delay Scaler Value 0000 2 0001 4 0010 8 0011 16 0100 + * 32 0101 64 0110 128 0111 256 1000 512 1001 1024 1010 2048 1011 4096 1100 8192 + * 1101 16384 1110 32768 1111 65536 Refer PCS to SCK Delay (tCSC ) for more + * details. + */ +//@{ +#define BP_SPI_CTARn_CSSCK (12U) //!< Bit position for SPI_CTARn_CSSCK. +#define BM_SPI_CTARn_CSSCK (0x0000F000U) //!< Bit mask for SPI_CTARn_CSSCK. +#define BS_SPI_CTARn_CSSCK (4U) //!< Bit field size in bits for SPI_CTARn_CSSCK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_CSSCK field. +#define BR_SPI_CTARn_CSSCK(x, n) (HW_SPI_CTARn(x, n).B.CSSCK) +#endif + +//! @brief Format value for bitfield SPI_CTARn_CSSCK. +#define BF_SPI_CTARn_CSSCK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_CSSCK), uint32_t) & BM_SPI_CTARn_CSSCK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CSSCK field to a new value. +#define BW_SPI_CTARn_CSSCK(x, n, v) (HW_SPI_CTARn_WR(x, n, (HW_SPI_CTARn_RD(x, n) & ~BM_SPI_CTARn_CSSCK) | BF_SPI_CTARn_CSSCK(v))) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field PBR[17:16] (RW) + * + * Selects the prescaler value for the baud rate. This field is used only in + * master mode. The baud rate is the frequency of the SCK. The protocol clock is + * divided by the prescaler value before the baud rate selection takes place. See + * the BR field description for details on how to compute the baud rate. + * + * Values: + * - 00 - Baud Rate Prescaler value is 2. + * - 01 - Baud Rate Prescaler value is 3. + * - 10 - Baud Rate Prescaler value is 5. + * - 11 - Baud Rate Prescaler value is 7. + */ +//@{ +#define BP_SPI_CTARn_PBR (16U) //!< Bit position for SPI_CTARn_PBR. +#define BM_SPI_CTARn_PBR (0x00030000U) //!< Bit mask for SPI_CTARn_PBR. +#define BS_SPI_CTARn_PBR (2U) //!< Bit field size in bits for SPI_CTARn_PBR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_PBR field. +#define BR_SPI_CTARn_PBR(x, n) (HW_SPI_CTARn(x, n).B.PBR) +#endif + +//! @brief Format value for bitfield SPI_CTARn_PBR. +#define BF_SPI_CTARn_PBR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_PBR), uint32_t) & BM_SPI_CTARn_PBR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PBR field to a new value. +#define BW_SPI_CTARn_PBR(x, n, v) (HW_SPI_CTARn_WR(x, n, (HW_SPI_CTARn_RD(x, n) & ~BM_SPI_CTARn_PBR) | BF_SPI_CTARn_PBR(v))) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field PDT[19:18] (RW) + * + * Selects the prescaler value for the delay between the negation of the PCS + * signal at the end of a frame and the assertion of PCS at the beginning of the + * next frame. The PDT field is only used in master mode. See the DT field + * description for details on how to compute the Delay after Transfer. Refer Delay after + * Transfer (tDT ) for more details. + * + * Values: + * - 00 - Delay after Transfer Prescaler value is 1. + * - 01 - Delay after Transfer Prescaler value is 3. + * - 10 - Delay after Transfer Prescaler value is 5. + * - 11 - Delay after Transfer Prescaler value is 7. + */ +//@{ +#define BP_SPI_CTARn_PDT (18U) //!< Bit position for SPI_CTARn_PDT. +#define BM_SPI_CTARn_PDT (0x000C0000U) //!< Bit mask for SPI_CTARn_PDT. +#define BS_SPI_CTARn_PDT (2U) //!< Bit field size in bits for SPI_CTARn_PDT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_PDT field. +#define BR_SPI_CTARn_PDT(x, n) (HW_SPI_CTARn(x, n).B.PDT) +#endif + +//! @brief Format value for bitfield SPI_CTARn_PDT. +#define BF_SPI_CTARn_PDT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_PDT), uint32_t) & BM_SPI_CTARn_PDT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PDT field to a new value. +#define BW_SPI_CTARn_PDT(x, n, v) (HW_SPI_CTARn_WR(x, n, (HW_SPI_CTARn_RD(x, n) & ~BM_SPI_CTARn_PDT) | BF_SPI_CTARn_PDT(v))) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field PASC[21:20] (RW) + * + * Selects the prescaler value for the delay between the last edge of SCK and + * the negation of PCS. See the ASC field description for information on how to + * compute the After SCK Delay. Refer After SCK Delay (tASC ) for more details. + * + * Values: + * - 00 - Delay after Transfer Prescaler value is 1. + * - 01 - Delay after Transfer Prescaler value is 3. + * - 10 - Delay after Transfer Prescaler value is 5. + * - 11 - Delay after Transfer Prescaler value is 7. + */ +//@{ +#define BP_SPI_CTARn_PASC (20U) //!< Bit position for SPI_CTARn_PASC. +#define BM_SPI_CTARn_PASC (0x00300000U) //!< Bit mask for SPI_CTARn_PASC. +#define BS_SPI_CTARn_PASC (2U) //!< Bit field size in bits for SPI_CTARn_PASC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_PASC field. +#define BR_SPI_CTARn_PASC(x, n) (HW_SPI_CTARn(x, n).B.PASC) +#endif + +//! @brief Format value for bitfield SPI_CTARn_PASC. +#define BF_SPI_CTARn_PASC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_PASC), uint32_t) & BM_SPI_CTARn_PASC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PASC field to a new value. +#define BW_SPI_CTARn_PASC(x, n, v) (HW_SPI_CTARn_WR(x, n, (HW_SPI_CTARn_RD(x, n) & ~BM_SPI_CTARn_PASC) | BF_SPI_CTARn_PASC(v))) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field PCSSCK[23:22] (RW) + * + * Selects the prescaler value for the delay between assertion of PCS and the + * first edge of the SCK. See the CSSCK field description for information on how to + * compute the PCS to SCK Delay. Refer PCS to SCK Delay (tCSC ) for more details. + * + * Values: + * - 00 - PCS to SCK Prescaler value is 1. + * - 01 - PCS to SCK Prescaler value is 3. + * - 10 - PCS to SCK Prescaler value is 5. + * - 11 - PCS to SCK Prescaler value is 7. + */ +//@{ +#define BP_SPI_CTARn_PCSSCK (22U) //!< Bit position for SPI_CTARn_PCSSCK. +#define BM_SPI_CTARn_PCSSCK (0x00C00000U) //!< Bit mask for SPI_CTARn_PCSSCK. +#define BS_SPI_CTARn_PCSSCK (2U) //!< Bit field size in bits for SPI_CTARn_PCSSCK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_PCSSCK field. +#define BR_SPI_CTARn_PCSSCK(x, n) (HW_SPI_CTARn(x, n).B.PCSSCK) +#endif + +//! @brief Format value for bitfield SPI_CTARn_PCSSCK. +#define BF_SPI_CTARn_PCSSCK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_PCSSCK), uint32_t) & BM_SPI_CTARn_PCSSCK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PCSSCK field to a new value. +#define BW_SPI_CTARn_PCSSCK(x, n, v) (HW_SPI_CTARn_WR(x, n, (HW_SPI_CTARn_RD(x, n) & ~BM_SPI_CTARn_PCSSCK) | BF_SPI_CTARn_PCSSCK(v))) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field LSBFE[24] (RW) + * + * Specifies whether the LSB or MSB of the frame is transferred first. + * + * Values: + * - 0 - Data is transferred MSB first. + * - 1 - Data is transferred LSB first. + */ +//@{ +#define BP_SPI_CTARn_LSBFE (24U) //!< Bit position for SPI_CTARn_LSBFE. +#define BM_SPI_CTARn_LSBFE (0x01000000U) //!< Bit mask for SPI_CTARn_LSBFE. +#define BS_SPI_CTARn_LSBFE (1U) //!< Bit field size in bits for SPI_CTARn_LSBFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_LSBFE field. +#define BR_SPI_CTARn_LSBFE(x, n) (BITBAND_ACCESS32(HW_SPI_CTARn_ADDR(x, n), BP_SPI_CTARn_LSBFE)) +#endif + +//! @brief Format value for bitfield SPI_CTARn_LSBFE. +#define BF_SPI_CTARn_LSBFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_LSBFE), uint32_t) & BM_SPI_CTARn_LSBFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LSBFE field to a new value. +#define BW_SPI_CTARn_LSBFE(x, n, v) (BITBAND_ACCESS32(HW_SPI_CTARn_ADDR(x, n), BP_SPI_CTARn_LSBFE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field CPHA[25] (RW) + * + * Selects which edge of SCK causes data to change and which edge causes data to + * be captured. This bit is used in both master and slave mode. For successful + * communication between serial devices, the devices must have identical clock + * phase settings. In Continuous SCK mode, the bit value is ignored and the + * transfers are done as if the CPHA bit is set to 1. + * + * Values: + * - 0 - Data is captured on the leading edge of SCK and changed on the + * following edge. + * - 1 - Data is changed on the leading edge of SCK and captured on the + * following edge. + */ +//@{ +#define BP_SPI_CTARn_CPHA (25U) //!< Bit position for SPI_CTARn_CPHA. +#define BM_SPI_CTARn_CPHA (0x02000000U) //!< Bit mask for SPI_CTARn_CPHA. +#define BS_SPI_CTARn_CPHA (1U) //!< Bit field size in bits for SPI_CTARn_CPHA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_CPHA field. +#define BR_SPI_CTARn_CPHA(x, n) (BITBAND_ACCESS32(HW_SPI_CTARn_ADDR(x, n), BP_SPI_CTARn_CPHA)) +#endif + +//! @brief Format value for bitfield SPI_CTARn_CPHA. +#define BF_SPI_CTARn_CPHA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_CPHA), uint32_t) & BM_SPI_CTARn_CPHA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CPHA field to a new value. +#define BW_SPI_CTARn_CPHA(x, n, v) (BITBAND_ACCESS32(HW_SPI_CTARn_ADDR(x, n), BP_SPI_CTARn_CPHA) = (v)) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field CPOL[26] (RW) + * + * Selects the inactive state of the Serial Communications Clock (SCK). This bit + * is used in both master and slave mode. For successful communication between + * serial devices, the devices must have identical clock polarities. When the + * Continuous Selection Format is selected, switching between clock polarities + * without stopping the module can cause errors in the transfer due to the peripheral + * device interpreting the switch of clock polarity as a valid clock edge. In case + * of continous sck mode, when the module goes in low power mode(disabled), + * inactive state of sck is not guaranted. + * + * Values: + * - 0 - The inactive state value of SCK is low. + * - 1 - The inactive state value of SCK is high. + */ +//@{ +#define BP_SPI_CTARn_CPOL (26U) //!< Bit position for SPI_CTARn_CPOL. +#define BM_SPI_CTARn_CPOL (0x04000000U) //!< Bit mask for SPI_CTARn_CPOL. +#define BS_SPI_CTARn_CPOL (1U) //!< Bit field size in bits for SPI_CTARn_CPOL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_CPOL field. +#define BR_SPI_CTARn_CPOL(x, n) (BITBAND_ACCESS32(HW_SPI_CTARn_ADDR(x, n), BP_SPI_CTARn_CPOL)) +#endif + +//! @brief Format value for bitfield SPI_CTARn_CPOL. +#define BF_SPI_CTARn_CPOL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_CPOL), uint32_t) & BM_SPI_CTARn_CPOL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CPOL field to a new value. +#define BW_SPI_CTARn_CPOL(x, n, v) (BITBAND_ACCESS32(HW_SPI_CTARn_ADDR(x, n), BP_SPI_CTARn_CPOL) = (v)) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field FMSZ[30:27] (RW) + * + * The number of bits transferred per frame is equal to the FMSZ value plus 1. + * Regardless of the transmission mode, the minimum valid frame size value is 4. + */ +//@{ +#define BP_SPI_CTARn_FMSZ (27U) //!< Bit position for SPI_CTARn_FMSZ. +#define BM_SPI_CTARn_FMSZ (0x78000000U) //!< Bit mask for SPI_CTARn_FMSZ. +#define BS_SPI_CTARn_FMSZ (4U) //!< Bit field size in bits for SPI_CTARn_FMSZ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_FMSZ field. +#define BR_SPI_CTARn_FMSZ(x, n) (HW_SPI_CTARn(x, n).B.FMSZ) +#endif + +//! @brief Format value for bitfield SPI_CTARn_FMSZ. +#define BF_SPI_CTARn_FMSZ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_FMSZ), uint32_t) & BM_SPI_CTARn_FMSZ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FMSZ field to a new value. +#define BW_SPI_CTARn_FMSZ(x, n, v) (HW_SPI_CTARn_WR(x, n, (HW_SPI_CTARn_RD(x, n) & ~BM_SPI_CTARn_FMSZ) | BF_SPI_CTARn_FMSZ(v))) +#endif +//@} + +/*! + * @name Register SPI_CTARn, field DBR[31] (RW) + * + * Doubles the effective baud rate of the Serial Communications Clock (SCK). + * This field is used only in master mode. It effectively halves the Baud Rate + * division ratio, supporting faster frequencies, and odd division ratios for the + * Serial Communications Clock (SCK). When the DBR bit is set, the duty cycle of the + * Serial Communications Clock (SCK) depends on the value in the Baud Rate + * Prescaler and the Clock Phase bit as listed in the following table. See the BR field + * description for details on how to compute the baud rate. SPI SCK Duty Cycle + * DBR CPHA PBR SCK Duty Cycle 0 any any 50/50 1 0 00 50/50 1 0 01 33/66 1 0 10 + * 40/60 1 0 11 43/57 1 1 00 50/50 1 1 01 66/33 1 1 10 60/40 1 1 11 57/43 + * + * Values: + * - 0 - The baud rate is computed normally with a 50/50 duty cycle. + * - 1 - The baud rate is doubled with the duty cycle depending on the Baud Rate + * Prescaler. + */ +//@{ +#define BP_SPI_CTARn_DBR (31U) //!< Bit position for SPI_CTARn_DBR. +#define BM_SPI_CTARn_DBR (0x80000000U) //!< Bit mask for SPI_CTARn_DBR. +#define BS_SPI_CTARn_DBR (1U) //!< Bit field size in bits for SPI_CTARn_DBR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_DBR field. +#define BR_SPI_CTARn_DBR(x, n) (BITBAND_ACCESS32(HW_SPI_CTARn_ADDR(x, n), BP_SPI_CTARn_DBR)) +#endif + +//! @brief Format value for bitfield SPI_CTARn_DBR. +#define BF_SPI_CTARn_DBR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_DBR), uint32_t) & BM_SPI_CTARn_DBR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DBR field to a new value. +#define BW_SPI_CTARn_DBR(x, n, v) (BITBAND_ACCESS32(HW_SPI_CTARn_ADDR(x, n), BP_SPI_CTARn_DBR) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_SPI_CTARn_SLAVE - Clock and Transfer Attributes Register (In Slave Mode) +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_CTARn_SLAVE - Clock and Transfer Attributes Register (In Slave Mode) (RW) + * + * Reset value: 0x78000000U + * + * When the module is configured as an SPI bus slave, the CTAR0 register is used. + */ +typedef union _hw_spi_ctarn_slave +{ + uint32_t U; + struct _hw_spi_ctarn_slave_bitfields + { + uint32_t RESERVED0 : 25; //!< [24:0] + uint32_t CPHA : 1; //!< [25] Clock Phase + uint32_t CPOL : 1; //!< [26] Clock Polarity + uint32_t FMSZ : 5; //!< [31:27] Frame Size + } B; +} hw_spi_ctarn_slave_t; +#endif + +/*! + * @name Constants and macros for entire SPI_CTARn_SLAVE register + */ +//@{ +#define HW_SPI_CTARn_SLAVE_COUNT (1U) + +#define HW_SPI_CTARn_SLAVE_ADDR(x, n) (REGS_SPI_BASE(x) + 0xCU + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_CTARn_SLAVE(x, n) (*(__IO hw_spi_ctarn_slave_t *) HW_SPI_CTARn_SLAVE_ADDR(x, n)) +#define HW_SPI_CTARn_SLAVE_RD(x, n) (HW_SPI_CTARn_SLAVE(x, n).U) +#define HW_SPI_CTARn_SLAVE_WR(x, n, v) (HW_SPI_CTARn_SLAVE(x, n).U = (v)) +#define HW_SPI_CTARn_SLAVE_SET(x, n, v) (HW_SPI_CTARn_SLAVE_WR(x, n, HW_SPI_CTARn_SLAVE_RD(x, n) | (v))) +#define HW_SPI_CTARn_SLAVE_CLR(x, n, v) (HW_SPI_CTARn_SLAVE_WR(x, n, HW_SPI_CTARn_SLAVE_RD(x, n) & ~(v))) +#define HW_SPI_CTARn_SLAVE_TOG(x, n, v) (HW_SPI_CTARn_SLAVE_WR(x, n, HW_SPI_CTARn_SLAVE_RD(x, n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SPI_CTARn_SLAVE bitfields + */ + +/*! + * @name Register SPI_CTARn_SLAVE, field CPHA[25] (RW) + * + * Selects which edge of SCK causes data to change and which edge causes data to + * be captured. This bit is used in both master and slave mode. For successful + * communication between serial devices, the devices must have identical clock + * phase settings. In Continuous SCK mode, the bit value is ignored and the + * transfers are done as if the CPHA bit is set to 1. + * + * Values: + * - 0 - Data is captured on the leading edge of SCK and changed on the + * following edge. + * - 1 - Data is changed on the leading edge of SCK and captured on the + * following edge. + */ +//@{ +#define BP_SPI_CTARn_SLAVE_CPHA (25U) //!< Bit position for SPI_CTARn_SLAVE_CPHA. +#define BM_SPI_CTARn_SLAVE_CPHA (0x02000000U) //!< Bit mask for SPI_CTARn_SLAVE_CPHA. +#define BS_SPI_CTARn_SLAVE_CPHA (1U) //!< Bit field size in bits for SPI_CTARn_SLAVE_CPHA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_SLAVE_CPHA field. +#define BR_SPI_CTARn_SLAVE_CPHA(x, n) (BITBAND_ACCESS32(HW_SPI_CTARn_SLAVE_ADDR(x, n), BP_SPI_CTARn_SLAVE_CPHA)) +#endif + +//! @brief Format value for bitfield SPI_CTARn_SLAVE_CPHA. +#define BF_SPI_CTARn_SLAVE_CPHA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_SLAVE_CPHA), uint32_t) & BM_SPI_CTARn_SLAVE_CPHA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CPHA field to a new value. +#define BW_SPI_CTARn_SLAVE_CPHA(x, n, v) (BITBAND_ACCESS32(HW_SPI_CTARn_SLAVE_ADDR(x, n), BP_SPI_CTARn_SLAVE_CPHA) = (v)) +#endif +//@} + +/*! + * @name Register SPI_CTARn_SLAVE, field CPOL[26] (RW) + * + * Selects the inactive state of the Serial Communications Clock (SCK). In case + * of continous sck mode, when the module goes in low power mode(disabled), + * inactive state of sck is not guaranted. + * + * Values: + * - 0 - The inactive state value of SCK is low. + * - 1 - The inactive state value of SCK is high. + */ +//@{ +#define BP_SPI_CTARn_SLAVE_CPOL (26U) //!< Bit position for SPI_CTARn_SLAVE_CPOL. +#define BM_SPI_CTARn_SLAVE_CPOL (0x04000000U) //!< Bit mask for SPI_CTARn_SLAVE_CPOL. +#define BS_SPI_CTARn_SLAVE_CPOL (1U) //!< Bit field size in bits for SPI_CTARn_SLAVE_CPOL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_SLAVE_CPOL field. +#define BR_SPI_CTARn_SLAVE_CPOL(x, n) (BITBAND_ACCESS32(HW_SPI_CTARn_SLAVE_ADDR(x, n), BP_SPI_CTARn_SLAVE_CPOL)) +#endif + +//! @brief Format value for bitfield SPI_CTARn_SLAVE_CPOL. +#define BF_SPI_CTARn_SLAVE_CPOL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_SLAVE_CPOL), uint32_t) & BM_SPI_CTARn_SLAVE_CPOL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CPOL field to a new value. +#define BW_SPI_CTARn_SLAVE_CPOL(x, n, v) (BITBAND_ACCESS32(HW_SPI_CTARn_SLAVE_ADDR(x, n), BP_SPI_CTARn_SLAVE_CPOL) = (v)) +#endif +//@} + +/*! + * @name Register SPI_CTARn_SLAVE, field FMSZ[31:27] (RW) + * + * The number of bits transfered per frame is equal to the FMSZ field value plus + * 1. Note that the minimum valid value of frame size is 4. + */ +//@{ +#define BP_SPI_CTARn_SLAVE_FMSZ (27U) //!< Bit position for SPI_CTARn_SLAVE_FMSZ. +#define BM_SPI_CTARn_SLAVE_FMSZ (0xF8000000U) //!< Bit mask for SPI_CTARn_SLAVE_FMSZ. +#define BS_SPI_CTARn_SLAVE_FMSZ (5U) //!< Bit field size in bits for SPI_CTARn_SLAVE_FMSZ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_CTARn_SLAVE_FMSZ field. +#define BR_SPI_CTARn_SLAVE_FMSZ(x, n) (HW_SPI_CTARn_SLAVE(x, n).B.FMSZ) +#endif + +//! @brief Format value for bitfield SPI_CTARn_SLAVE_FMSZ. +#define BF_SPI_CTARn_SLAVE_FMSZ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_CTARn_SLAVE_FMSZ), uint32_t) & BM_SPI_CTARn_SLAVE_FMSZ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FMSZ field to a new value. +#define BW_SPI_CTARn_SLAVE_FMSZ(x, n, v) (HW_SPI_CTARn_SLAVE_WR(x, n, (HW_SPI_CTARn_SLAVE_RD(x, n) & ~BM_SPI_CTARn_SLAVE_FMSZ) | BF_SPI_CTARn_SLAVE_FMSZ(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SPI_SR - Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_SR - Status Register (RW) + * + * Reset value: 0x02000000U + * + * SR contains status and flag bits. The bits reflect the status of the module + * and indicate the occurrence of events that can generate interrupt or DMA + * requests. Software can clear flag bits in the SR by writing a 1 to them. Writing a 0 + * to a flag bit has no effect. This register may not be writable in Module + * Disable mode due to the use of power saving mechanisms. + */ +typedef union _hw_spi_sr +{ + uint32_t U; + struct _hw_spi_sr_bitfields + { + uint32_t POPNXTPTR : 4; //!< [3:0] Pop Next Pointer + uint32_t RXCTR : 4; //!< [7:4] RX FIFO Counter + uint32_t TXNXTPTR : 4; //!< [11:8] Transmit Next Pointer + uint32_t TXCTR : 4; //!< [15:12] TX FIFO Counter + uint32_t RESERVED0 : 1; //!< [16] + uint32_t RFDF : 1; //!< [17] Receive FIFO Drain Flag + uint32_t RESERVED1 : 1; //!< [18] + uint32_t RFOF : 1; //!< [19] Receive FIFO Overflow Flag + uint32_t RESERVED2 : 5; //!< [24:20] + uint32_t TFFF : 1; //!< [25] Transmit FIFO Fill Flag + uint32_t RESERVED3 : 1; //!< [26] + uint32_t TFUF : 1; //!< [27] Transmit FIFO Underflow Flag + uint32_t EOQF : 1; //!< [28] End of Queue Flag + uint32_t RESERVED4 : 1; //!< [29] + uint32_t TXRXS : 1; //!< [30] TX and RX Status + uint32_t TCF : 1; //!< [31] Transfer Complete Flag + } B; +} hw_spi_sr_t; +#endif + +/*! + * @name Constants and macros for entire SPI_SR register + */ +//@{ +#define HW_SPI_SR_ADDR(x) (REGS_SPI_BASE(x) + 0x2CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_SR(x) (*(__IO hw_spi_sr_t *) HW_SPI_SR_ADDR(x)) +#define HW_SPI_SR_RD(x) (HW_SPI_SR(x).U) +#define HW_SPI_SR_WR(x, v) (HW_SPI_SR(x).U = (v)) +#define HW_SPI_SR_SET(x, v) (HW_SPI_SR_WR(x, HW_SPI_SR_RD(x) | (v))) +#define HW_SPI_SR_CLR(x, v) (HW_SPI_SR_WR(x, HW_SPI_SR_RD(x) & ~(v))) +#define HW_SPI_SR_TOG(x, v) (HW_SPI_SR_WR(x, HW_SPI_SR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SPI_SR bitfields + */ + +/*! + * @name Register SPI_SR, field POPNXTPTR[3:0] (RO) + * + * Contains a pointer to the RX FIFO entry to be returned when the POPR is read. + * The POPNXTPTR is updated when the POPR is read. + */ +//@{ +#define BP_SPI_SR_POPNXTPTR (0U) //!< Bit position for SPI_SR_POPNXTPTR. +#define BM_SPI_SR_POPNXTPTR (0x0000000FU) //!< Bit mask for SPI_SR_POPNXTPTR. +#define BS_SPI_SR_POPNXTPTR (4U) //!< Bit field size in bits for SPI_SR_POPNXTPTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_POPNXTPTR field. +#define BR_SPI_SR_POPNXTPTR(x) (HW_SPI_SR(x).B.POPNXTPTR) +#endif +//@} + +/*! + * @name Register SPI_SR, field RXCTR[7:4] (RO) + * + * Indicates the number of entries in the RX FIFO. The RXCTR is decremented + * every time the POPR is read. The RXCTR is incremented every time data is + * transferred from the shift register to the RX FIFO. + */ +//@{ +#define BP_SPI_SR_RXCTR (4U) //!< Bit position for SPI_SR_RXCTR. +#define BM_SPI_SR_RXCTR (0x000000F0U) //!< Bit mask for SPI_SR_RXCTR. +#define BS_SPI_SR_RXCTR (4U) //!< Bit field size in bits for SPI_SR_RXCTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_RXCTR field. +#define BR_SPI_SR_RXCTR(x) (HW_SPI_SR(x).B.RXCTR) +#endif +//@} + +/*! + * @name Register SPI_SR, field TXNXTPTR[11:8] (RO) + * + * Indicates which TX FIFO entry is transmitted during the next transfer. The + * TXNXTPTR field is updated every time SPI data is transferred from the TX FIFO to + * the shift register. + */ +//@{ +#define BP_SPI_SR_TXNXTPTR (8U) //!< Bit position for SPI_SR_TXNXTPTR. +#define BM_SPI_SR_TXNXTPTR (0x00000F00U) //!< Bit mask for SPI_SR_TXNXTPTR. +#define BS_SPI_SR_TXNXTPTR (4U) //!< Bit field size in bits for SPI_SR_TXNXTPTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_TXNXTPTR field. +#define BR_SPI_SR_TXNXTPTR(x) (HW_SPI_SR(x).B.TXNXTPTR) +#endif +//@} + +/*! + * @name Register SPI_SR, field TXCTR[15:12] (RO) + * + * Indicates the number of valid entries in the TX FIFO. The TXCTR is + * incremented every time the PUSHR is written. The TXCTR is decremented every time an SPI + * command is executed and the SPI data is transferred to the shift register. + */ +//@{ +#define BP_SPI_SR_TXCTR (12U) //!< Bit position for SPI_SR_TXCTR. +#define BM_SPI_SR_TXCTR (0x0000F000U) //!< Bit mask for SPI_SR_TXCTR. +#define BS_SPI_SR_TXCTR (4U) //!< Bit field size in bits for SPI_SR_TXCTR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_TXCTR field. +#define BR_SPI_SR_TXCTR(x) (HW_SPI_SR(x).B.TXCTR) +#endif +//@} + +/*! + * @name Register SPI_SR, field RFDF[17] (W1C) + * + * Provides a method for the module to request that entries be removed from the + * RX FIFO. The bit is set while the RX FIFO is not empty. The RFDF bit can be + * cleared by writing 1 to it or by acknowledgement from the DMA controller when + * the RX FIFO is empty. + * + * Values: + * - 0 - RX FIFO is empty. + * - 1 - RX FIFO is not empty. + */ +//@{ +#define BP_SPI_SR_RFDF (17U) //!< Bit position for SPI_SR_RFDF. +#define BM_SPI_SR_RFDF (0x00020000U) //!< Bit mask for SPI_SR_RFDF. +#define BS_SPI_SR_RFDF (1U) //!< Bit field size in bits for SPI_SR_RFDF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_RFDF field. +#define BR_SPI_SR_RFDF(x) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_RFDF)) +#endif + +//! @brief Format value for bitfield SPI_SR_RFDF. +#define BF_SPI_SR_RFDF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_SR_RFDF), uint32_t) & BM_SPI_SR_RFDF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RFDF field to a new value. +#define BW_SPI_SR_RFDF(x, v) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_RFDF) = (v)) +#endif +//@} + +/*! + * @name Register SPI_SR, field RFOF[19] (W1C) + * + * Indicates an overflow condition in the RX FIFO. The field is set when the RX + * FIFO and shift register are full and a transfer is initiated. The bit remains + * set until it is cleared by writing a 1 to it. + * + * Values: + * - 0 - No Rx FIFO overflow. + * - 1 - Rx FIFO overflow has occurred. + */ +//@{ +#define BP_SPI_SR_RFOF (19U) //!< Bit position for SPI_SR_RFOF. +#define BM_SPI_SR_RFOF (0x00080000U) //!< Bit mask for SPI_SR_RFOF. +#define BS_SPI_SR_RFOF (1U) //!< Bit field size in bits for SPI_SR_RFOF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_RFOF field. +#define BR_SPI_SR_RFOF(x) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_RFOF)) +#endif + +//! @brief Format value for bitfield SPI_SR_RFOF. +#define BF_SPI_SR_RFOF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_SR_RFOF), uint32_t) & BM_SPI_SR_RFOF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RFOF field to a new value. +#define BW_SPI_SR_RFOF(x, v) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_RFOF) = (v)) +#endif +//@} + +/*! + * @name Register SPI_SR, field TFFF[25] (W1C) + * + * Provides a method for the module to request more entries to be added to the + * TX FIFO. The TFFF bit is set while the TX FIFO is not full. The TFFF bit can be + * cleared by writing 1 to it or by acknowledgement from the DMA controller to + * the TX FIFO full request. + * + * Values: + * - 0 - TX FIFO is full. + * - 1 - TX FIFO is not full. + */ +//@{ +#define BP_SPI_SR_TFFF (25U) //!< Bit position for SPI_SR_TFFF. +#define BM_SPI_SR_TFFF (0x02000000U) //!< Bit mask for SPI_SR_TFFF. +#define BS_SPI_SR_TFFF (1U) //!< Bit field size in bits for SPI_SR_TFFF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_TFFF field. +#define BR_SPI_SR_TFFF(x) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_TFFF)) +#endif + +//! @brief Format value for bitfield SPI_SR_TFFF. +#define BF_SPI_SR_TFFF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_SR_TFFF), uint32_t) & BM_SPI_SR_TFFF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TFFF field to a new value. +#define BW_SPI_SR_TFFF(x, v) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_TFFF) = (v)) +#endif +//@} + +/*! + * @name Register SPI_SR, field TFUF[27] (W1C) + * + * Indicates an underflow condition in the TX FIFO. The transmit underflow + * condition is detected only for SPI blocks operating in Slave mode and SPI + * configuration. TFUF is set when the TX FIFO of the module operating in SPI Slave mode + * is empty and an external SPI master initiates a transfer. The TFUF bit remains + * set until cleared by writing 1 to it. + * + * Values: + * - 0 - No TX FIFO underflow. + * - 1 - TX FIFO underflow has occurred. + */ +//@{ +#define BP_SPI_SR_TFUF (27U) //!< Bit position for SPI_SR_TFUF. +#define BM_SPI_SR_TFUF (0x08000000U) //!< Bit mask for SPI_SR_TFUF. +#define BS_SPI_SR_TFUF (1U) //!< Bit field size in bits for SPI_SR_TFUF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_TFUF field. +#define BR_SPI_SR_TFUF(x) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_TFUF)) +#endif + +//! @brief Format value for bitfield SPI_SR_TFUF. +#define BF_SPI_SR_TFUF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_SR_TFUF), uint32_t) & BM_SPI_SR_TFUF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TFUF field to a new value. +#define BW_SPI_SR_TFUF(x, v) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_TFUF) = (v)) +#endif +//@} + +/*! + * @name Register SPI_SR, field EOQF[28] (W1C) + * + * Indicates that the last entry in a queue has been transmitted when the module + * is in Master mode. The EOQF bit is set when the TX FIFO entry has the EOQ bit + * set in the command halfword and the end of the transfer is reached. The EOQF + * bit remains set until cleared by writing a 1 to it. When the EOQF bit is set, + * the TXRXS bit is automatically cleared. + * + * Values: + * - 0 - EOQ is not set in the executing command. + * - 1 - EOQ is set in the executing SPI command. + */ +//@{ +#define BP_SPI_SR_EOQF (28U) //!< Bit position for SPI_SR_EOQF. +#define BM_SPI_SR_EOQF (0x10000000U) //!< Bit mask for SPI_SR_EOQF. +#define BS_SPI_SR_EOQF (1U) //!< Bit field size in bits for SPI_SR_EOQF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_EOQF field. +#define BR_SPI_SR_EOQF(x) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_EOQF)) +#endif + +//! @brief Format value for bitfield SPI_SR_EOQF. +#define BF_SPI_SR_EOQF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_SR_EOQF), uint32_t) & BM_SPI_SR_EOQF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EOQF field to a new value. +#define BW_SPI_SR_EOQF(x, v) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_EOQF) = (v)) +#endif +//@} + +/*! + * @name Register SPI_SR, field TXRXS[30] (W1C) + * + * Reflects the run status of the module. + * + * Values: + * - 0 - Transmit and receive operations are disabled (The module is in Stopped + * state). + * - 1 - Transmit and receive operations are enabled (The module is in Running + * state). + */ +//@{ +#define BP_SPI_SR_TXRXS (30U) //!< Bit position for SPI_SR_TXRXS. +#define BM_SPI_SR_TXRXS (0x40000000U) //!< Bit mask for SPI_SR_TXRXS. +#define BS_SPI_SR_TXRXS (1U) //!< Bit field size in bits for SPI_SR_TXRXS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_TXRXS field. +#define BR_SPI_SR_TXRXS(x) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_TXRXS)) +#endif + +//! @brief Format value for bitfield SPI_SR_TXRXS. +#define BF_SPI_SR_TXRXS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_SR_TXRXS), uint32_t) & BM_SPI_SR_TXRXS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXRXS field to a new value. +#define BW_SPI_SR_TXRXS(x, v) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_TXRXS) = (v)) +#endif +//@} + +/*! + * @name Register SPI_SR, field TCF[31] (W1C) + * + * Indicates that all bits in a frame have been shifted out. TCF remains set + * until it is cleared by writing a 1 to it. + * + * Values: + * - 0 - Transfer not complete. + * - 1 - Transfer complete. + */ +//@{ +#define BP_SPI_SR_TCF (31U) //!< Bit position for SPI_SR_TCF. +#define BM_SPI_SR_TCF (0x80000000U) //!< Bit mask for SPI_SR_TCF. +#define BS_SPI_SR_TCF (1U) //!< Bit field size in bits for SPI_SR_TCF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_SR_TCF field. +#define BR_SPI_SR_TCF(x) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_TCF)) +#endif + +//! @brief Format value for bitfield SPI_SR_TCF. +#define BF_SPI_SR_TCF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_SR_TCF), uint32_t) & BM_SPI_SR_TCF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCF field to a new value. +#define BW_SPI_SR_TCF(x, v) (BITBAND_ACCESS32(HW_SPI_SR_ADDR(x), BP_SPI_SR_TCF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SPI_RSER - DMA/Interrupt Request Select and Enable Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_RSER - DMA/Interrupt Request Select and Enable Register (RW) + * + * Reset value: 0x00000000U + * + * RSER controls DMA and interrupt requests. Do not write to the RSER while the + * module is in the Running state. + */ +typedef union _hw_spi_rser +{ + uint32_t U; + struct _hw_spi_rser_bitfields + { + uint32_t RESERVED0 : 16; //!< [15:0] + uint32_t RFDF_DIRS : 1; //!< [16] Receive FIFO Drain DMA or Interrupt + //! Request Select + uint32_t RFDF_RE : 1; //!< [17] Receive FIFO Drain Request Enable + uint32_t RESERVED1 : 1; //!< [18] + uint32_t RFOF_RE : 1; //!< [19] Receive FIFO Overflow Request Enable + uint32_t RESERVED2 : 4; //!< [23:20] + uint32_t TFFF_DIRS : 1; //!< [24] Transmit FIFO Fill DMA or Interrupt + //! Request Select + uint32_t TFFF_RE : 1; //!< [25] Transmit FIFO Fill Request Enable + uint32_t RESERVED3 : 1; //!< [26] + uint32_t TFUF_RE : 1; //!< [27] Transmit FIFO Underflow Request Enable + uint32_t EOQF_RE : 1; //!< [28] Finished Request Enable + uint32_t RESERVED4 : 2; //!< [30:29] + uint32_t TCF_RE : 1; //!< [31] Transmission Complete Request Enable + } B; +} hw_spi_rser_t; +#endif + +/*! + * @name Constants and macros for entire SPI_RSER register + */ +//@{ +#define HW_SPI_RSER_ADDR(x) (REGS_SPI_BASE(x) + 0x30U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_RSER(x) (*(__IO hw_spi_rser_t *) HW_SPI_RSER_ADDR(x)) +#define HW_SPI_RSER_RD(x) (HW_SPI_RSER(x).U) +#define HW_SPI_RSER_WR(x, v) (HW_SPI_RSER(x).U = (v)) +#define HW_SPI_RSER_SET(x, v) (HW_SPI_RSER_WR(x, HW_SPI_RSER_RD(x) | (v))) +#define HW_SPI_RSER_CLR(x, v) (HW_SPI_RSER_WR(x, HW_SPI_RSER_RD(x) & ~(v))) +#define HW_SPI_RSER_TOG(x, v) (HW_SPI_RSER_WR(x, HW_SPI_RSER_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SPI_RSER bitfields + */ + +/*! + * @name Register SPI_RSER, field RFDF_DIRS[16] (RW) + * + * Selects between generating a DMA request or an interrupt request. When the + * RFDF flag bit in the SR is set, and the RFDF_RE bit in the RSER is set, the + * RFDF_DIRS bit selects between generating an interrupt request or a DMA request. + * + * Values: + * - 0 - Interrupt request. + * - 1 - DMA request. + */ +//@{ +#define BP_SPI_RSER_RFDF_DIRS (16U) //!< Bit position for SPI_RSER_RFDF_DIRS. +#define BM_SPI_RSER_RFDF_DIRS (0x00010000U) //!< Bit mask for SPI_RSER_RFDF_DIRS. +#define BS_SPI_RSER_RFDF_DIRS (1U) //!< Bit field size in bits for SPI_RSER_RFDF_DIRS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_RSER_RFDF_DIRS field. +#define BR_SPI_RSER_RFDF_DIRS(x) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_RFDF_DIRS)) +#endif + +//! @brief Format value for bitfield SPI_RSER_RFDF_DIRS. +#define BF_SPI_RSER_RFDF_DIRS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_RSER_RFDF_DIRS), uint32_t) & BM_SPI_RSER_RFDF_DIRS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RFDF_DIRS field to a new value. +#define BW_SPI_RSER_RFDF_DIRS(x, v) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_RFDF_DIRS) = (v)) +#endif +//@} + +/*! + * @name Register SPI_RSER, field RFDF_RE[17] (RW) + * + * Enables the RFDF flag in the SR to generate a request. The RFDF_DIRS bit + * selects between generating an interrupt request or a DMA request. + * + * Values: + * - 0 - RFDF interrupt or DMA requests are disabled. + * - 1 - RFDF interrupt or DMA requests are enabled. + */ +//@{ +#define BP_SPI_RSER_RFDF_RE (17U) //!< Bit position for SPI_RSER_RFDF_RE. +#define BM_SPI_RSER_RFDF_RE (0x00020000U) //!< Bit mask for SPI_RSER_RFDF_RE. +#define BS_SPI_RSER_RFDF_RE (1U) //!< Bit field size in bits for SPI_RSER_RFDF_RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_RSER_RFDF_RE field. +#define BR_SPI_RSER_RFDF_RE(x) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_RFDF_RE)) +#endif + +//! @brief Format value for bitfield SPI_RSER_RFDF_RE. +#define BF_SPI_RSER_RFDF_RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_RSER_RFDF_RE), uint32_t) & BM_SPI_RSER_RFDF_RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RFDF_RE field to a new value. +#define BW_SPI_RSER_RFDF_RE(x, v) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_RFDF_RE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_RSER, field RFOF_RE[19] (RW) + * + * Enables the RFOF flag in the SR to generate an interrupt request. + * + * Values: + * - 0 - RFOF interrupt requests are disabled. + * - 1 - RFOF interrupt requests are enabled. + */ +//@{ +#define BP_SPI_RSER_RFOF_RE (19U) //!< Bit position for SPI_RSER_RFOF_RE. +#define BM_SPI_RSER_RFOF_RE (0x00080000U) //!< Bit mask for SPI_RSER_RFOF_RE. +#define BS_SPI_RSER_RFOF_RE (1U) //!< Bit field size in bits for SPI_RSER_RFOF_RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_RSER_RFOF_RE field. +#define BR_SPI_RSER_RFOF_RE(x) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_RFOF_RE)) +#endif + +//! @brief Format value for bitfield SPI_RSER_RFOF_RE. +#define BF_SPI_RSER_RFOF_RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_RSER_RFOF_RE), uint32_t) & BM_SPI_RSER_RFOF_RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RFOF_RE field to a new value. +#define BW_SPI_RSER_RFOF_RE(x, v) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_RFOF_RE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_RSER, field TFFF_DIRS[24] (RW) + * + * Selects between generating a DMA request or an interrupt request. When + * SR[TFFF] and RSER[TFFF_RE] are set, this field selects between generating an + * interrupt request or a DMA request. + * + * Values: + * - 0 - TFFF flag generates interrupt requests. + * - 1 - TFFF flag generates DMA requests. + */ +//@{ +#define BP_SPI_RSER_TFFF_DIRS (24U) //!< Bit position for SPI_RSER_TFFF_DIRS. +#define BM_SPI_RSER_TFFF_DIRS (0x01000000U) //!< Bit mask for SPI_RSER_TFFF_DIRS. +#define BS_SPI_RSER_TFFF_DIRS (1U) //!< Bit field size in bits for SPI_RSER_TFFF_DIRS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_RSER_TFFF_DIRS field. +#define BR_SPI_RSER_TFFF_DIRS(x) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_TFFF_DIRS)) +#endif + +//! @brief Format value for bitfield SPI_RSER_TFFF_DIRS. +#define BF_SPI_RSER_TFFF_DIRS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_RSER_TFFF_DIRS), uint32_t) & BM_SPI_RSER_TFFF_DIRS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TFFF_DIRS field to a new value. +#define BW_SPI_RSER_TFFF_DIRS(x, v) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_TFFF_DIRS) = (v)) +#endif +//@} + +/*! + * @name Register SPI_RSER, field TFFF_RE[25] (RW) + * + * Enables the TFFF flag in the SR to generate a request. The TFFF_DIRS bit + * selects between generating an interrupt request or a DMA request. + * + * Values: + * - 0 - TFFF interrupts or DMA requests are disabled. + * - 1 - TFFF interrupts or DMA requests are enabled. + */ +//@{ +#define BP_SPI_RSER_TFFF_RE (25U) //!< Bit position for SPI_RSER_TFFF_RE. +#define BM_SPI_RSER_TFFF_RE (0x02000000U) //!< Bit mask for SPI_RSER_TFFF_RE. +#define BS_SPI_RSER_TFFF_RE (1U) //!< Bit field size in bits for SPI_RSER_TFFF_RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_RSER_TFFF_RE field. +#define BR_SPI_RSER_TFFF_RE(x) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_TFFF_RE)) +#endif + +//! @brief Format value for bitfield SPI_RSER_TFFF_RE. +#define BF_SPI_RSER_TFFF_RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_RSER_TFFF_RE), uint32_t) & BM_SPI_RSER_TFFF_RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TFFF_RE field to a new value. +#define BW_SPI_RSER_TFFF_RE(x, v) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_TFFF_RE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_RSER, field TFUF_RE[27] (RW) + * + * Enables the TFUF flag in the SR to generate an interrupt request. + * + * Values: + * - 0 - TFUF interrupt requests are disabled. + * - 1 - TFUF interrupt requests are enabled. + */ +//@{ +#define BP_SPI_RSER_TFUF_RE (27U) //!< Bit position for SPI_RSER_TFUF_RE. +#define BM_SPI_RSER_TFUF_RE (0x08000000U) //!< Bit mask for SPI_RSER_TFUF_RE. +#define BS_SPI_RSER_TFUF_RE (1U) //!< Bit field size in bits for SPI_RSER_TFUF_RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_RSER_TFUF_RE field. +#define BR_SPI_RSER_TFUF_RE(x) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_TFUF_RE)) +#endif + +//! @brief Format value for bitfield SPI_RSER_TFUF_RE. +#define BF_SPI_RSER_TFUF_RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_RSER_TFUF_RE), uint32_t) & BM_SPI_RSER_TFUF_RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TFUF_RE field to a new value. +#define BW_SPI_RSER_TFUF_RE(x, v) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_TFUF_RE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_RSER, field EOQF_RE[28] (RW) + * + * Enables the EOQF flag in the SR to generate an interrupt request. + * + * Values: + * - 0 - EOQF interrupt requests are disabled. + * - 1 - EOQF interrupt requests are enabled. + */ +//@{ +#define BP_SPI_RSER_EOQF_RE (28U) //!< Bit position for SPI_RSER_EOQF_RE. +#define BM_SPI_RSER_EOQF_RE (0x10000000U) //!< Bit mask for SPI_RSER_EOQF_RE. +#define BS_SPI_RSER_EOQF_RE (1U) //!< Bit field size in bits for SPI_RSER_EOQF_RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_RSER_EOQF_RE field. +#define BR_SPI_RSER_EOQF_RE(x) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_EOQF_RE)) +#endif + +//! @brief Format value for bitfield SPI_RSER_EOQF_RE. +#define BF_SPI_RSER_EOQF_RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_RSER_EOQF_RE), uint32_t) & BM_SPI_RSER_EOQF_RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EOQF_RE field to a new value. +#define BW_SPI_RSER_EOQF_RE(x, v) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_EOQF_RE) = (v)) +#endif +//@} + +/*! + * @name Register SPI_RSER, field TCF_RE[31] (RW) + * + * Enables TCF flag in the SR to generate an interrupt request. + * + * Values: + * - 0 - TCF interrupt requests are disabled. + * - 1 - TCF interrupt requests are enabled. + */ +//@{ +#define BP_SPI_RSER_TCF_RE (31U) //!< Bit position for SPI_RSER_TCF_RE. +#define BM_SPI_RSER_TCF_RE (0x80000000U) //!< Bit mask for SPI_RSER_TCF_RE. +#define BS_SPI_RSER_TCF_RE (1U) //!< Bit field size in bits for SPI_RSER_TCF_RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_RSER_TCF_RE field. +#define BR_SPI_RSER_TCF_RE(x) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_TCF_RE)) +#endif + +//! @brief Format value for bitfield SPI_RSER_TCF_RE. +#define BF_SPI_RSER_TCF_RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_RSER_TCF_RE), uint32_t) & BM_SPI_RSER_TCF_RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCF_RE field to a new value. +#define BW_SPI_RSER_TCF_RE(x, v) (BITBAND_ACCESS32(HW_SPI_RSER_ADDR(x), BP_SPI_RSER_TCF_RE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SPI_PUSHR - PUSH TX FIFO Register In Master Mode +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_PUSHR - PUSH TX FIFO Register In Master Mode (RW) + * + * Reset value: 0x00000000U + * + * Specifies data to be transferred to the TX FIFO. An 8- or 16-bit write access + * transfers all 32 bits to the TX FIFO. In Master mode, the register transfers + * 16 bits of data and 16 bits of command information. In Slave mode, all 32 bits + * can be used as data, supporting up to 32-bit frame operation. A read access + * of PUSHR returns the topmost TX FIFO entry. When the module is disabled, + * writing to this register does not update the FIFO. Therefore, any reads performed + * while the module is disabled return the last PUSHR write performed while the + * module was still enabled. + */ +typedef union _hw_spi_pushr +{ + uint32_t U; + struct _hw_spi_pushr_bitfields + { + uint32_t TXDATA : 16; //!< [15:0] Transmit Data + uint32_t PCS : 6; //!< [21:16] + uint32_t RESERVED0 : 4; //!< [25:22] + uint32_t CTCNT : 1; //!< [26] Clear Transfer Counter + uint32_t EOQ : 1; //!< [27] End Of Queue + uint32_t CTAS : 3; //!< [30:28] Clock and Transfer Attributes Select + uint32_t CONT : 1; //!< [31] Continuous Peripheral Chip Select Enable + } B; +} hw_spi_pushr_t; +#endif + +/*! + * @name Constants and macros for entire SPI_PUSHR register + */ +//@{ +#define HW_SPI_PUSHR_ADDR(x) (REGS_SPI_BASE(x) + 0x34U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_PUSHR(x) (*(__IO hw_spi_pushr_t *) HW_SPI_PUSHR_ADDR(x)) +#define HW_SPI_PUSHR_RD(x) (HW_SPI_PUSHR(x).U) +#define HW_SPI_PUSHR_WR(x, v) (HW_SPI_PUSHR(x).U = (v)) +#define HW_SPI_PUSHR_SET(x, v) (HW_SPI_PUSHR_WR(x, HW_SPI_PUSHR_RD(x) | (v))) +#define HW_SPI_PUSHR_CLR(x, v) (HW_SPI_PUSHR_WR(x, HW_SPI_PUSHR_RD(x) & ~(v))) +#define HW_SPI_PUSHR_TOG(x, v) (HW_SPI_PUSHR_WR(x, HW_SPI_PUSHR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SPI_PUSHR bitfields + */ + +/*! + * @name Register SPI_PUSHR, field TXDATA[15:0] (RW) + * + * Holds SPI data to be transferred according to the associated SPI command. + */ +//@{ +#define BP_SPI_PUSHR_TXDATA (0U) //!< Bit position for SPI_PUSHR_TXDATA. +#define BM_SPI_PUSHR_TXDATA (0x0000FFFFU) //!< Bit mask for SPI_PUSHR_TXDATA. +#define BS_SPI_PUSHR_TXDATA (16U) //!< Bit field size in bits for SPI_PUSHR_TXDATA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_PUSHR_TXDATA field. +#define BR_SPI_PUSHR_TXDATA(x) (HW_SPI_PUSHR(x).B.TXDATA) +#endif + +//! @brief Format value for bitfield SPI_PUSHR_TXDATA. +#define BF_SPI_PUSHR_TXDATA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_PUSHR_TXDATA), uint32_t) & BM_SPI_PUSHR_TXDATA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXDATA field to a new value. +#define BW_SPI_PUSHR_TXDATA(x, v) (HW_SPI_PUSHR_WR(x, (HW_SPI_PUSHR_RD(x) & ~BM_SPI_PUSHR_TXDATA) | BF_SPI_PUSHR_TXDATA(v))) +#endif +//@} + +/*! + * @name Register SPI_PUSHR, field PCS[21:16] (RW) + * + * Select which PCS signals are to be asserted for the transfer. Refer to the + * chip configuration details for the number of PCS signals used in this MCU. + * + * Values: + * - 0 - Negate the PCS[x] signal. + * - 1 - Assert the PCS[x] signal. + */ +//@{ +#define BP_SPI_PUSHR_PCS (16U) //!< Bit position for SPI_PUSHR_PCS. +#define BM_SPI_PUSHR_PCS (0x003F0000U) //!< Bit mask for SPI_PUSHR_PCS. +#define BS_SPI_PUSHR_PCS (6U) //!< Bit field size in bits for SPI_PUSHR_PCS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_PUSHR_PCS field. +#define BR_SPI_PUSHR_PCS(x) (HW_SPI_PUSHR(x).B.PCS) +#endif + +//! @brief Format value for bitfield SPI_PUSHR_PCS. +#define BF_SPI_PUSHR_PCS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_PUSHR_PCS), uint32_t) & BM_SPI_PUSHR_PCS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PCS field to a new value. +#define BW_SPI_PUSHR_PCS(x, v) (HW_SPI_PUSHR_WR(x, (HW_SPI_PUSHR_RD(x) & ~BM_SPI_PUSHR_PCS) | BF_SPI_PUSHR_PCS(v))) +#endif +//@} + +/*! + * @name Register SPI_PUSHR, field CTCNT[26] (RW) + * + * Clears the TCNT field in the TCR register. The TCNT field is cleared before + * the module starts transmitting the current SPI frame. + * + * Values: + * - 0 - Do not clear the TCR[TCNT] field. + * - 1 - Clear the TCR[TCNT] field. + */ +//@{ +#define BP_SPI_PUSHR_CTCNT (26U) //!< Bit position for SPI_PUSHR_CTCNT. +#define BM_SPI_PUSHR_CTCNT (0x04000000U) //!< Bit mask for SPI_PUSHR_CTCNT. +#define BS_SPI_PUSHR_CTCNT (1U) //!< Bit field size in bits for SPI_PUSHR_CTCNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_PUSHR_CTCNT field. +#define BR_SPI_PUSHR_CTCNT(x) (BITBAND_ACCESS32(HW_SPI_PUSHR_ADDR(x), BP_SPI_PUSHR_CTCNT)) +#endif + +//! @brief Format value for bitfield SPI_PUSHR_CTCNT. +#define BF_SPI_PUSHR_CTCNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_PUSHR_CTCNT), uint32_t) & BM_SPI_PUSHR_CTCNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CTCNT field to a new value. +#define BW_SPI_PUSHR_CTCNT(x, v) (BITBAND_ACCESS32(HW_SPI_PUSHR_ADDR(x), BP_SPI_PUSHR_CTCNT) = (v)) +#endif +//@} + +/*! + * @name Register SPI_PUSHR, field EOQ[27] (RW) + * + * Host software uses this bit to signal to the module that the current SPI + * transfer is the last in a queue. At the end of the transfer, the EOQF bit in the + * SR is set. + * + * Values: + * - 0 - The SPI data is not the last data to transfer. + * - 1 - The SPI data is the last data to transfer. + */ +//@{ +#define BP_SPI_PUSHR_EOQ (27U) //!< Bit position for SPI_PUSHR_EOQ. +#define BM_SPI_PUSHR_EOQ (0x08000000U) //!< Bit mask for SPI_PUSHR_EOQ. +#define BS_SPI_PUSHR_EOQ (1U) //!< Bit field size in bits for SPI_PUSHR_EOQ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_PUSHR_EOQ field. +#define BR_SPI_PUSHR_EOQ(x) (BITBAND_ACCESS32(HW_SPI_PUSHR_ADDR(x), BP_SPI_PUSHR_EOQ)) +#endif + +//! @brief Format value for bitfield SPI_PUSHR_EOQ. +#define BF_SPI_PUSHR_EOQ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_PUSHR_EOQ), uint32_t) & BM_SPI_PUSHR_EOQ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EOQ field to a new value. +#define BW_SPI_PUSHR_EOQ(x, v) (BITBAND_ACCESS32(HW_SPI_PUSHR_ADDR(x), BP_SPI_PUSHR_EOQ) = (v)) +#endif +//@} + +/*! + * @name Register SPI_PUSHR, field CTAS[30:28] (RW) + * + * Selects which CTAR to use in master mode to specify the transfer attributes + * for the associated SPI frame. In SPI Slave mode, CTAR0 is used. See the chip + * configuration details to determine how many CTARs this device has. You should + * not program a value in this field for a register that is not present. + * + * Values: + * - 000 - CTAR0 + * - 001 - CTAR1 + * - 010 - Reserved + * - 011 - Reserved + * - 100 - Reserved + * - 101 - Reserved + * - 110 - Reserved + * - 111 - Reserved + */ +//@{ +#define BP_SPI_PUSHR_CTAS (28U) //!< Bit position for SPI_PUSHR_CTAS. +#define BM_SPI_PUSHR_CTAS (0x70000000U) //!< Bit mask for SPI_PUSHR_CTAS. +#define BS_SPI_PUSHR_CTAS (3U) //!< Bit field size in bits for SPI_PUSHR_CTAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_PUSHR_CTAS field. +#define BR_SPI_PUSHR_CTAS(x) (HW_SPI_PUSHR(x).B.CTAS) +#endif + +//! @brief Format value for bitfield SPI_PUSHR_CTAS. +#define BF_SPI_PUSHR_CTAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_PUSHR_CTAS), uint32_t) & BM_SPI_PUSHR_CTAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CTAS field to a new value. +#define BW_SPI_PUSHR_CTAS(x, v) (HW_SPI_PUSHR_WR(x, (HW_SPI_PUSHR_RD(x) & ~BM_SPI_PUSHR_CTAS) | BF_SPI_PUSHR_CTAS(v))) +#endif +//@} + +/*! + * @name Register SPI_PUSHR, field CONT[31] (RW) + * + * Selects a continuous selection format. The bit is used in SPI Master mode. + * The bit enables the selected PCS signals to remain asserted between transfers. + * + * Values: + * - 0 - Return PCSn signals to their inactive state between transfers. + * - 1 - Keep PCSn signals asserted between transfers. + */ +//@{ +#define BP_SPI_PUSHR_CONT (31U) //!< Bit position for SPI_PUSHR_CONT. +#define BM_SPI_PUSHR_CONT (0x80000000U) //!< Bit mask for SPI_PUSHR_CONT. +#define BS_SPI_PUSHR_CONT (1U) //!< Bit field size in bits for SPI_PUSHR_CONT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_PUSHR_CONT field. +#define BR_SPI_PUSHR_CONT(x) (BITBAND_ACCESS32(HW_SPI_PUSHR_ADDR(x), BP_SPI_PUSHR_CONT)) +#endif + +//! @brief Format value for bitfield SPI_PUSHR_CONT. +#define BF_SPI_PUSHR_CONT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_PUSHR_CONT), uint32_t) & BM_SPI_PUSHR_CONT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CONT field to a new value. +#define BW_SPI_PUSHR_CONT(x, v) (BITBAND_ACCESS32(HW_SPI_PUSHR_ADDR(x), BP_SPI_PUSHR_CONT) = (v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_SPI_PUSHR_SLAVE - PUSH TX FIFO Register In Slave Mode +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_PUSHR_SLAVE - PUSH TX FIFO Register In Slave Mode (RW) + * + * Reset value: 0x00000000U + * + * Specifies data to be transferred to the TX FIFO. An 8- or 16-bit write access + * to PUSHR transfers all 32 bits to the TX FIFO. In master mode, the register + * transfers 16 bits of data and 16 bits of command information to the TX FIFO. In + * slave mode, all 32 register bits can be used as data, supporting up to 32-bit + * SPI Frame operation. + */ +typedef union _hw_spi_pushr_slave +{ + uint32_t U; + struct _hw_spi_pushr_slave_bitfields + { + uint32_t TXDATA : 32; //!< [31:0] Transmit Data + } B; +} hw_spi_pushr_slave_t; +#endif + +/*! + * @name Constants and macros for entire SPI_PUSHR_SLAVE register + */ +//@{ +#define HW_SPI_PUSHR_SLAVE_ADDR(x) (REGS_SPI_BASE(x) + 0x34U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_PUSHR_SLAVE(x) (*(__IO hw_spi_pushr_slave_t *) HW_SPI_PUSHR_SLAVE_ADDR(x)) +#define HW_SPI_PUSHR_SLAVE_RD(x) (HW_SPI_PUSHR_SLAVE(x).U) +#define HW_SPI_PUSHR_SLAVE_WR(x, v) (HW_SPI_PUSHR_SLAVE(x).U = (v)) +#define HW_SPI_PUSHR_SLAVE_SET(x, v) (HW_SPI_PUSHR_SLAVE_WR(x, HW_SPI_PUSHR_SLAVE_RD(x) | (v))) +#define HW_SPI_PUSHR_SLAVE_CLR(x, v) (HW_SPI_PUSHR_SLAVE_WR(x, HW_SPI_PUSHR_SLAVE_RD(x) & ~(v))) +#define HW_SPI_PUSHR_SLAVE_TOG(x, v) (HW_SPI_PUSHR_SLAVE_WR(x, HW_SPI_PUSHR_SLAVE_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual SPI_PUSHR_SLAVE bitfields + */ + +/*! + * @name Register SPI_PUSHR_SLAVE, field TXDATA[31:0] (RW) + * + * Holds SPI data to be transferred according to the associated SPI command. + */ +//@{ +#define BP_SPI_PUSHR_SLAVE_TXDATA (0U) //!< Bit position for SPI_PUSHR_SLAVE_TXDATA. +#define BM_SPI_PUSHR_SLAVE_TXDATA (0xFFFFFFFFU) //!< Bit mask for SPI_PUSHR_SLAVE_TXDATA. +#define BS_SPI_PUSHR_SLAVE_TXDATA (32U) //!< Bit field size in bits for SPI_PUSHR_SLAVE_TXDATA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_PUSHR_SLAVE_TXDATA field. +#define BR_SPI_PUSHR_SLAVE_TXDATA(x) (HW_SPI_PUSHR_SLAVE(x).U) +#endif + +//! @brief Format value for bitfield SPI_PUSHR_SLAVE_TXDATA. +#define BF_SPI_PUSHR_SLAVE_TXDATA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_SPI_PUSHR_SLAVE_TXDATA), uint32_t) & BM_SPI_PUSHR_SLAVE_TXDATA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXDATA field to a new value. +#define BW_SPI_PUSHR_SLAVE_TXDATA(x, v) (HW_SPI_PUSHR_SLAVE_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SPI_POPR - POP RX FIFO Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_POPR - POP RX FIFO Register (RO) + * + * Reset value: 0x00000000U + * + * POPR is used to read the RX FIFO. Eight- or sixteen-bit read accesses to the + * POPR have the same effect on the RX FIFO as 32-bit read accesses. A write to + * this register will generate a Transfer Error. + */ +typedef union _hw_spi_popr +{ + uint32_t U; + struct _hw_spi_popr_bitfields + { + uint32_t RXDATA : 32; //!< [31:0] Received Data + } B; +} hw_spi_popr_t; +#endif + +/*! + * @name Constants and macros for entire SPI_POPR register + */ +//@{ +#define HW_SPI_POPR_ADDR(x) (REGS_SPI_BASE(x) + 0x38U) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_POPR(x) (*(__I hw_spi_popr_t *) HW_SPI_POPR_ADDR(x)) +#define HW_SPI_POPR_RD(x) (HW_SPI_POPR(x).U) +#endif +//@} + +/* + * Constants & macros for individual SPI_POPR bitfields + */ + +/*! + * @name Register SPI_POPR, field RXDATA[31:0] (RO) + * + * Contains the SPI data from the RX FIFO entry to which the Pop Next Data + * Pointer points. + */ +//@{ +#define BP_SPI_POPR_RXDATA (0U) //!< Bit position for SPI_POPR_RXDATA. +#define BM_SPI_POPR_RXDATA (0xFFFFFFFFU) //!< Bit mask for SPI_POPR_RXDATA. +#define BS_SPI_POPR_RXDATA (32U) //!< Bit field size in bits for SPI_POPR_RXDATA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_POPR_RXDATA field. +#define BR_SPI_POPR_RXDATA(x) (HW_SPI_POPR(x).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SPI_TXFRn - Transmit FIFO Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_TXFRn - Transmit FIFO Registers (RO) + * + * Reset value: 0x00000000U + * + * TXFRn registers provide visibility into the TX FIFO for debugging purposes. + * Each register is an entry in the TX FIFO. The registers are read-only and + * cannot be modified. Reading the TXFRx registers does not alter the state of the TX + * FIFO. + */ +typedef union _hw_spi_txfrn +{ + uint32_t U; + struct _hw_spi_txfrn_bitfields + { + uint32_t TXDATA : 16; //!< [15:0] Transmit Data + uint32_t TXCMD_TXDATA : 16; //!< [31:16] Transmit Command or Transmit + //! Data + } B; +} hw_spi_txfrn_t; +#endif + +/*! + * @name Constants and macros for entire SPI_TXFRn register + */ +//@{ +#define HW_SPI_TXFRn_COUNT (4U) + +#define HW_SPI_TXFRn_ADDR(x, n) (REGS_SPI_BASE(x) + 0x3CU + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_TXFRn(x, n) (*(__I hw_spi_txfrn_t *) HW_SPI_TXFRn_ADDR(x, n)) +#define HW_SPI_TXFRn_RD(x, n) (HW_SPI_TXFRn(x, n).U) +#endif +//@} + +/* + * Constants & macros for individual SPI_TXFRn bitfields + */ + +/*! + * @name Register SPI_TXFRn, field TXDATA[15:0] (RO) + * + * Contains the SPI data to be shifted out. + */ +//@{ +#define BP_SPI_TXFRn_TXDATA (0U) //!< Bit position for SPI_TXFRn_TXDATA. +#define BM_SPI_TXFRn_TXDATA (0x0000FFFFU) //!< Bit mask for SPI_TXFRn_TXDATA. +#define BS_SPI_TXFRn_TXDATA (16U) //!< Bit field size in bits for SPI_TXFRn_TXDATA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_TXFRn_TXDATA field. +#define BR_SPI_TXFRn_TXDATA(x, n) (HW_SPI_TXFRn(x, n).B.TXDATA) +#endif +//@} + +/*! + * @name Register SPI_TXFRn, field TXCMD_TXDATA[31:16] (RO) + * + * In Master mode the TXCMD field contains the command that sets the transfer + * attributes for the SPI data. In Slave mode, the TXDATA contains 16 MSB bits of + * the SPI data to be shifted out. + */ +//@{ +#define BP_SPI_TXFRn_TXCMD_TXDATA (16U) //!< Bit position for SPI_TXFRn_TXCMD_TXDATA. +#define BM_SPI_TXFRn_TXCMD_TXDATA (0xFFFF0000U) //!< Bit mask for SPI_TXFRn_TXCMD_TXDATA. +#define BS_SPI_TXFRn_TXCMD_TXDATA (16U) //!< Bit field size in bits for SPI_TXFRn_TXCMD_TXDATA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_TXFRn_TXCMD_TXDATA field. +#define BR_SPI_TXFRn_TXCMD_TXDATA(x, n) (HW_SPI_TXFRn(x, n).B.TXCMD_TXDATA) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_SPI_RXFRn - Receive FIFO Registers +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_SPI_RXFRn - Receive FIFO Registers (RO) + * + * Reset value: 0x00000000U + * + * RXFRn provide visibility into the RX FIFO for debugging purposes. Each + * register is an entry in the RX FIFO. The RXFR registers are read-only. Reading the + * RXFRx registers does not alter the state of the RX FIFO. + */ +typedef union _hw_spi_rxfrn +{ + uint32_t U; + struct _hw_spi_rxfrn_bitfields + { + uint32_t RXDATA : 32; //!< [31:0] Receive Data + } B; +} hw_spi_rxfrn_t; +#endif + +/*! + * @name Constants and macros for entire SPI_RXFRn register + */ +//@{ +#define HW_SPI_RXFRn_COUNT (4U) + +#define HW_SPI_RXFRn_ADDR(x, n) (REGS_SPI_BASE(x) + 0x7CU + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_SPI_RXFRn(x, n) (*(__I hw_spi_rxfrn_t *) HW_SPI_RXFRn_ADDR(x, n)) +#define HW_SPI_RXFRn_RD(x, n) (HW_SPI_RXFRn(x, n).U) +#endif +//@} + +/* + * Constants & macros for individual SPI_RXFRn bitfields + */ + +/*! + * @name Register SPI_RXFRn, field RXDATA[31:0] (RO) + * + * Contains the received SPI data. + */ +//@{ +#define BP_SPI_RXFRn_RXDATA (0U) //!< Bit position for SPI_RXFRn_RXDATA. +#define BM_SPI_RXFRn_RXDATA (0xFFFFFFFFU) //!< Bit mask for SPI_RXFRn_RXDATA. +#define BS_SPI_RXFRn_RXDATA (32U) //!< Bit field size in bits for SPI_RXFRn_RXDATA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the SPI_RXFRn_RXDATA field. +#define BR_SPI_RXFRn_RXDATA(x, n) (HW_SPI_RXFRn(x, n).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_spi_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All SPI module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_spi +{ + __IO hw_spi_mcr_t MCR; //!< [0x0] Module Configuration Register + uint8_t _reserved0[4]; + __IO hw_spi_tcr_t TCR; //!< [0x8] Transfer Count Register + union { + __IO hw_spi_ctarn_t CTARn[2]; //!< [0xC] Clock and Transfer Attributes Register (In Master Mode) + __IO hw_spi_ctarn_slave_t CTARn_SLAVE[1]; //!< [0xC] Clock and Transfer Attributes Register (In Slave Mode) + }; + uint8_t _reserved1[24]; + __IO hw_spi_sr_t SR; //!< [0x2C] Status Register + __IO hw_spi_rser_t RSER; //!< [0x30] DMA/Interrupt Request Select and Enable Register + union { + __IO hw_spi_pushr_t PUSHR; //!< [0x34] PUSH TX FIFO Register In Master Mode + __IO hw_spi_pushr_slave_t PUSHR_SLAVE; //!< [0x34] PUSH TX FIFO Register In Slave Mode + }; + __I hw_spi_popr_t POPR; //!< [0x38] POP RX FIFO Register + __I hw_spi_txfrn_t TXFRn[4]; //!< [0x3C] Transmit FIFO Registers + uint8_t _reserved2[48]; + __I hw_spi_rxfrn_t RXFRn[4]; //!< [0x7C] Receive FIFO Registers +} hw_spi_t; +#pragma pack() + +//! @brief Macro to access all SPI registers. +//! @param x SPI instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_SPI(0)</code>. +#define HW_SPI(x) (*(hw_spi_t *) REGS_SPI_BASE(x)) +#endif + +#endif // __HW_SPI_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_uart.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,4933 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_UART_REGISTERS_H__ +#define __HW_UART_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 UART + * + * Serial Communication Interface + * + * Registers defined in this header file: + * - HW_UART_BDH - UART Baud Rate Registers: High + * - HW_UART_BDL - UART Baud Rate Registers: Low + * - HW_UART_C1 - UART Control Register 1 + * - HW_UART_C2 - UART Control Register 2 + * - HW_UART_S1 - UART Status Register 1 + * - HW_UART_S2 - UART Status Register 2 + * - HW_UART_C3 - UART Control Register 3 + * - HW_UART_D - UART Data Register + * - HW_UART_MA1 - UART Match Address Registers 1 + * - HW_UART_MA2 - UART Match Address Registers 2 + * - HW_UART_C4 - UART Control Register 4 + * - HW_UART_C5 - UART Control Register 5 + * - HW_UART_ED - UART Extended Data Register + * - HW_UART_MODEM - UART Modem Register + * - HW_UART_IR - UART Infrared Register + * - HW_UART_PFIFO - UART FIFO Parameters + * - HW_UART_CFIFO - UART FIFO Control Register + * - HW_UART_SFIFO - UART FIFO Status Register + * - HW_UART_TWFIFO - UART FIFO Transmit Watermark + * - HW_UART_TCFIFO - UART FIFO Transmit Count + * - HW_UART_RWFIFO - UART FIFO Receive Watermark + * - HW_UART_RCFIFO - UART FIFO Receive Count + * - HW_UART_C7816 - UART 7816 Control Register + * - HW_UART_IE7816 - UART 7816 Interrupt Enable Register + * - HW_UART_IS7816 - UART 7816 Interrupt Status Register + * - HW_UART_WP7816_T_TYPE0 - UART 7816 Wait Parameter Register + * - HW_UART_WP7816_T_TYPE1 - UART 7816 Wait Parameter Register + * - HW_UART_WN7816 - UART 7816 Wait N Register + * - HW_UART_WF7816 - UART 7816 Wait FD Register + * - HW_UART_ET7816 - UART 7816 Error Threshold Register + * - HW_UART_TL7816 - UART 7816 Transmit Length Register + * + * - hw_uart_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_UART_BASE +#define HW_UART_INSTANCE_COUNT (6U) //!< Number of instances of the UART module. +#define HW_UART0 (0U) //!< Instance number for UART0. +#define HW_UART1 (1U) //!< Instance number for UART1. +#define HW_UART2 (2U) //!< Instance number for UART2. +#define HW_UART3 (3U) //!< Instance number for UART3. +#define HW_UART4 (4U) //!< Instance number for UART4. +#define HW_UART5 (5U) //!< Instance number for UART5. +#define REGS_UART0_BASE (0x4006A000U) //!< Base address for UART0. +#define REGS_UART1_BASE (0x4006B000U) //!< Base address for UART1. +#define REGS_UART2_BASE (0x4006C000U) //!< Base address for UART2. +#define REGS_UART3_BASE (0x4006D000U) //!< Base address for UART3. +#define REGS_UART4_BASE (0x400EA000U) //!< Base address for UART4. +#define REGS_UART5_BASE (0x400EB000U) //!< Base address for UART5. + +//! @brief Table of base addresses for UART instances. +static const uint32_t __g_regs_UART_base_addresses[] = { + REGS_UART0_BASE, + REGS_UART1_BASE, + REGS_UART2_BASE, + REGS_UART3_BASE, + REGS_UART4_BASE, + REGS_UART5_BASE, + }; + +//! @brief Get the base address of UART by instance number. +//! @param x UART instance number, from 0 through 5. +#define REGS_UART_BASE(x) (__g_regs_UART_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of UART. +#define REGS_UART_INSTANCE(b) ((b) == REGS_UART0_BASE ? HW_UART0 : (b) == REGS_UART1_BASE ? HW_UART1 : (b) == REGS_UART2_BASE ? HW_UART2 : (b) == REGS_UART3_BASE ? HW_UART3 : (b) == REGS_UART4_BASE ? HW_UART4 : (b) == REGS_UART5_BASE ? HW_UART5 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_BDH - UART Baud Rate Registers: High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_BDH - UART Baud Rate Registers: High (RW) + * + * Reset value: 0x00U + * + * This register, along with the BDL register, controls the prescale divisor for + * UART baud rate generation. To update the 13-bit baud rate setting + * (SBR[12:0]), first write to BDH to buffer the high half of the new value and then write + * to BDL. The working value in BDH does not change until BDL is written. BDL is + * reset to a nonzero value, but after reset, the baud rate generator remains + * disabled until the first time the receiver or transmitter is enabled, that is, + * when C2[RE] or C2[TE] is set. + */ +typedef union _hw_uart_bdh +{ + uint8_t U; + struct _hw_uart_bdh_bitfields + { + uint8_t SBR : 5; //!< [4:0] UART Baud Rate Bits + uint8_t SBNS : 1; //!< [5] Stop Bit Number Select + uint8_t RXEDGIE : 1; //!< [6] RxD Input Active Edge Interrupt Enable + uint8_t LBKDIE : 1; //!< [7] LIN Break Detect Interrupt or DMA + //! Request Enable + } B; +} hw_uart_bdh_t; +#endif + +/*! + * @name Constants and macros for entire UART_BDH register + */ +//@{ +#define HW_UART_BDH_ADDR(x) (REGS_UART_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_BDH(x) (*(__IO hw_uart_bdh_t *) HW_UART_BDH_ADDR(x)) +#define HW_UART_BDH_RD(x) (HW_UART_BDH(x).U) +#define HW_UART_BDH_WR(x, v) (HW_UART_BDH(x).U = (v)) +#define HW_UART_BDH_SET(x, v) (HW_UART_BDH_WR(x, HW_UART_BDH_RD(x) | (v))) +#define HW_UART_BDH_CLR(x, v) (HW_UART_BDH_WR(x, HW_UART_BDH_RD(x) & ~(v))) +#define HW_UART_BDH_TOG(x, v) (HW_UART_BDH_WR(x, HW_UART_BDH_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_BDH bitfields + */ + +/*! + * @name Register UART_BDH, field SBR[4:0] (RW) + * + * The baud rate for the UART is determined by the 13 SBR fields. See Baud rate + * generation for details. The baud rate generator is disabled until C2[TE] or + * C2[RE] is set for the first time after reset.The baud rate generator is disabled + * when SBR = 0. Writing to BDH has no effect without writing to BDL, because + * writing to BDH puts the data in a temporary location until BDL is written. + */ +//@{ +#define BP_UART_BDH_SBR (0U) //!< Bit position for UART_BDH_SBR. +#define BM_UART_BDH_SBR (0x1FU) //!< Bit mask for UART_BDH_SBR. +#define BS_UART_BDH_SBR (5U) //!< Bit field size in bits for UART_BDH_SBR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_BDH_SBR field. +#define BR_UART_BDH_SBR(x) (HW_UART_BDH(x).B.SBR) +#endif + +//! @brief Format value for bitfield UART_BDH_SBR. +#define BF_UART_BDH_SBR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_BDH_SBR), uint8_t) & BM_UART_BDH_SBR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SBR field to a new value. +#define BW_UART_BDH_SBR(x, v) (HW_UART_BDH_WR(x, (HW_UART_BDH_RD(x) & ~BM_UART_BDH_SBR) | BF_UART_BDH_SBR(v))) +#endif +//@} + +/*! + * @name Register UART_BDH, field SBNS[5] (RW) + * + * SBNS selects the number of stop bits present in a data frame. This field + * valid for all 8, 9 and 10 bit data formats available. This field is not valid when + * C7816[ISO7816E] is enabled. + * + * Values: + * - 0 - Data frame consists of a single stop bit. + * - 1 - Data frame consists of two stop bits. + */ +//@{ +#define BP_UART_BDH_SBNS (5U) //!< Bit position for UART_BDH_SBNS. +#define BM_UART_BDH_SBNS (0x20U) //!< Bit mask for UART_BDH_SBNS. +#define BS_UART_BDH_SBNS (1U) //!< Bit field size in bits for UART_BDH_SBNS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_BDH_SBNS field. +#define BR_UART_BDH_SBNS(x) (BITBAND_ACCESS8(HW_UART_BDH_ADDR(x), BP_UART_BDH_SBNS)) +#endif + +//! @brief Format value for bitfield UART_BDH_SBNS. +#define BF_UART_BDH_SBNS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_BDH_SBNS), uint8_t) & BM_UART_BDH_SBNS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SBNS field to a new value. +#define BW_UART_BDH_SBNS(x, v) (BITBAND_ACCESS8(HW_UART_BDH_ADDR(x), BP_UART_BDH_SBNS) = (v)) +#endif +//@} + +/*! + * @name Register UART_BDH, field RXEDGIE[6] (RW) + * + * Enables the receive input active edge, RXEDGIF, to generate interrupt + * requests. + * + * Values: + * - 0 - Hardware interrupts from RXEDGIF disabled using polling. + * - 1 - RXEDGIF interrupt request enabled. + */ +//@{ +#define BP_UART_BDH_RXEDGIE (6U) //!< Bit position for UART_BDH_RXEDGIE. +#define BM_UART_BDH_RXEDGIE (0x40U) //!< Bit mask for UART_BDH_RXEDGIE. +#define BS_UART_BDH_RXEDGIE (1U) //!< Bit field size in bits for UART_BDH_RXEDGIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_BDH_RXEDGIE field. +#define BR_UART_BDH_RXEDGIE(x) (BITBAND_ACCESS8(HW_UART_BDH_ADDR(x), BP_UART_BDH_RXEDGIE)) +#endif + +//! @brief Format value for bitfield UART_BDH_RXEDGIE. +#define BF_UART_BDH_RXEDGIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_BDH_RXEDGIE), uint8_t) & BM_UART_BDH_RXEDGIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXEDGIE field to a new value. +#define BW_UART_BDH_RXEDGIE(x, v) (BITBAND_ACCESS8(HW_UART_BDH_ADDR(x), BP_UART_BDH_RXEDGIE) = (v)) +#endif +//@} + +/*! + * @name Register UART_BDH, field LBKDIE[7] (RW) + * + * Enables the LIN break detect flag, LBKDIF, to generate interrupt requests + * based on the state of LBKDDMAS. or DMA transfer requests, + * + * Values: + * - 0 - LBKDIF interrupt and DMA transfer requests disabled. + * - 1 - LBKDIF interrupt or DMA transfer requests enabled. + */ +//@{ +#define BP_UART_BDH_LBKDIE (7U) //!< Bit position for UART_BDH_LBKDIE. +#define BM_UART_BDH_LBKDIE (0x80U) //!< Bit mask for UART_BDH_LBKDIE. +#define BS_UART_BDH_LBKDIE (1U) //!< Bit field size in bits for UART_BDH_LBKDIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_BDH_LBKDIE field. +#define BR_UART_BDH_LBKDIE(x) (BITBAND_ACCESS8(HW_UART_BDH_ADDR(x), BP_UART_BDH_LBKDIE)) +#endif + +//! @brief Format value for bitfield UART_BDH_LBKDIE. +#define BF_UART_BDH_LBKDIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_BDH_LBKDIE), uint8_t) & BM_UART_BDH_LBKDIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LBKDIE field to a new value. +#define BW_UART_BDH_LBKDIE(x, v) (BITBAND_ACCESS8(HW_UART_BDH_ADDR(x), BP_UART_BDH_LBKDIE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_BDL - UART Baud Rate Registers: Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_BDL - UART Baud Rate Registers: Low (RW) + * + * Reset value: 0x04U + * + * This register, along with the BDH register, controls the prescale divisor for + * UART baud rate generation. To update the 13-bit baud rate setting, SBR[12:0], + * first write to BDH to buffer the high half of the new value and then write to + * BDL. The working value in BDH does not change until BDL is written. BDL is + * reset to a nonzero value, but after reset, the baud rate generator remains + * disabled until the first time the receiver or transmitter is enabled, that is, when + * C2[RE] or C2[TE] is set. + */ +typedef union _hw_uart_bdl +{ + uint8_t U; + struct _hw_uart_bdl_bitfields + { + uint8_t SBR : 8; //!< [7:0] UART Baud Rate Bits + } B; +} hw_uart_bdl_t; +#endif + +/*! + * @name Constants and macros for entire UART_BDL register + */ +//@{ +#define HW_UART_BDL_ADDR(x) (REGS_UART_BASE(x) + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_BDL(x) (*(__IO hw_uart_bdl_t *) HW_UART_BDL_ADDR(x)) +#define HW_UART_BDL_RD(x) (HW_UART_BDL(x).U) +#define HW_UART_BDL_WR(x, v) (HW_UART_BDL(x).U = (v)) +#define HW_UART_BDL_SET(x, v) (HW_UART_BDL_WR(x, HW_UART_BDL_RD(x) | (v))) +#define HW_UART_BDL_CLR(x, v) (HW_UART_BDL_WR(x, HW_UART_BDL_RD(x) & ~(v))) +#define HW_UART_BDL_TOG(x, v) (HW_UART_BDL_WR(x, HW_UART_BDL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_BDL bitfields + */ + +/*! + * @name Register UART_BDL, field SBR[7:0] (RW) + * + * The baud rate for the UART is determined by the 13 SBR fields. See Baud rate + * generation for details. The baud rate generator is disabled until C2[TE] or + * C2[RE] is set for the first time after reset.The baud rate generator is disabled + * when SBR = 0. Writing to BDH has no effect without writing to BDL, because + * writing to BDH puts the data in a temporary location until BDL is written. When + * the 1/32 narrow pulse width is selected for infrared (IrDA), the baud rate + * fields must be even, the least significant bit is 0. See MODEM register for more + * details. + */ +//@{ +#define BP_UART_BDL_SBR (0U) //!< Bit position for UART_BDL_SBR. +#define BM_UART_BDL_SBR (0xFFU) //!< Bit mask for UART_BDL_SBR. +#define BS_UART_BDL_SBR (8U) //!< Bit field size in bits for UART_BDL_SBR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_BDL_SBR field. +#define BR_UART_BDL_SBR(x) (HW_UART_BDL(x).U) +#endif + +//! @brief Format value for bitfield UART_BDL_SBR. +#define BF_UART_BDL_SBR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_BDL_SBR), uint8_t) & BM_UART_BDL_SBR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SBR field to a new value. +#define BW_UART_BDL_SBR(x, v) (HW_UART_BDL_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_C1 - UART Control Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_C1 - UART Control Register 1 (RW) + * + * Reset value: 0x00U + * + * This read/write register controls various optional features of the UART + * system. + */ +typedef union _hw_uart_c1 +{ + uint8_t U; + struct _hw_uart_c1_bitfields + { + uint8_t PT : 1; //!< [0] Parity Type + uint8_t PE : 1; //!< [1] Parity Enable + uint8_t ILT : 1; //!< [2] Idle Line Type Select + uint8_t WAKE : 1; //!< [3] Receiver Wakeup Method Select + uint8_t M : 1; //!< [4] 9-bit or 8-bit Mode Select + uint8_t RSRC : 1; //!< [5] Receiver Source Select + uint8_t UARTSWAI : 1; //!< [6] UART Stops in Wait Mode + uint8_t LOOPS : 1; //!< [7] Loop Mode Select + } B; +} hw_uart_c1_t; +#endif + +/*! + * @name Constants and macros for entire UART_C1 register + */ +//@{ +#define HW_UART_C1_ADDR(x) (REGS_UART_BASE(x) + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_C1(x) (*(__IO hw_uart_c1_t *) HW_UART_C1_ADDR(x)) +#define HW_UART_C1_RD(x) (HW_UART_C1(x).U) +#define HW_UART_C1_WR(x, v) (HW_UART_C1(x).U = (v)) +#define HW_UART_C1_SET(x, v) (HW_UART_C1_WR(x, HW_UART_C1_RD(x) | (v))) +#define HW_UART_C1_CLR(x, v) (HW_UART_C1_WR(x, HW_UART_C1_RD(x) & ~(v))) +#define HW_UART_C1_TOG(x, v) (HW_UART_C1_WR(x, HW_UART_C1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_C1 bitfields + */ + +/*! + * @name Register UART_C1, field PT[0] (RW) + * + * Determines whether the UART generates and checks for even parity or odd + * parity. With even parity, an even number of 1s clears the parity bit and an odd + * number of 1s sets the parity bit. With odd parity, an odd number of 1s clears the + * parity bit and an even number of 1s sets the parity bit. This field must be + * cleared when C7816[ISO_7816E] is set/enabled. + * + * Values: + * - 0 - Even parity. + * - 1 - Odd parity. + */ +//@{ +#define BP_UART_C1_PT (0U) //!< Bit position for UART_C1_PT. +#define BM_UART_C1_PT (0x01U) //!< Bit mask for UART_C1_PT. +#define BS_UART_C1_PT (1U) //!< Bit field size in bits for UART_C1_PT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C1_PT field. +#define BR_UART_C1_PT(x) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_PT)) +#endif + +//! @brief Format value for bitfield UART_C1_PT. +#define BF_UART_C1_PT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C1_PT), uint8_t) & BM_UART_C1_PT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PT field to a new value. +#define BW_UART_C1_PT(x, v) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_PT) = (v)) +#endif +//@} + +/*! + * @name Register UART_C1, field PE[1] (RW) + * + * Enables the parity function. When parity is enabled, parity function inserts + * a parity bit in the bit position immediately preceding the stop bit. This + * field must be set when C7816[ISO_7816E] is set/enabled. + * + * Values: + * - 0 - Parity function disabled. + * - 1 - Parity function enabled. + */ +//@{ +#define BP_UART_C1_PE (1U) //!< Bit position for UART_C1_PE. +#define BM_UART_C1_PE (0x02U) //!< Bit mask for UART_C1_PE. +#define BS_UART_C1_PE (1U) //!< Bit field size in bits for UART_C1_PE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C1_PE field. +#define BR_UART_C1_PE(x) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_PE)) +#endif + +//! @brief Format value for bitfield UART_C1_PE. +#define BF_UART_C1_PE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C1_PE), uint8_t) & BM_UART_C1_PE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PE field to a new value. +#define BW_UART_C1_PE(x, v) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_PE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C1, field ILT[2] (RW) + * + * Determines when the receiver starts counting logic 1s as idle character bits. + * The count begins either after a valid start bit or after the stop bit. If the + * count begins after the start bit, then a string of logic 1s preceding the + * stop bit can cause false recognition of an idle character. Beginning the count + * after the stop bit avoids false idle character recognition, but requires + * properly synchronized transmissions. In case the UART is programmed with ILT = 1, a + * logic of 1'b0 is automatically shifted after a received stop bit, therefore + * resetting the idle count. In case the UART is programmed for IDLE line wakeup + * (RWU = 1 and WAKE = 0), ILT has no effect on when the receiver starts counting + * logic 1s as idle character bits. In idle line wakeup, an idle character is + * recognized at anytime the receiver sees 10, 11, or 12 1s depending on the M, PE, + * and C4[M10] fields. + * + * Values: + * - 0 - Idle character bit count starts after start bit. + * - 1 - Idle character bit count starts after stop bit. + */ +//@{ +#define BP_UART_C1_ILT (2U) //!< Bit position for UART_C1_ILT. +#define BM_UART_C1_ILT (0x04U) //!< Bit mask for UART_C1_ILT. +#define BS_UART_C1_ILT (1U) //!< Bit field size in bits for UART_C1_ILT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C1_ILT field. +#define BR_UART_C1_ILT(x) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_ILT)) +#endif + +//! @brief Format value for bitfield UART_C1_ILT. +#define BF_UART_C1_ILT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C1_ILT), uint8_t) & BM_UART_C1_ILT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ILT field to a new value. +#define BW_UART_C1_ILT(x, v) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_ILT) = (v)) +#endif +//@} + +/*! + * @name Register UART_C1, field WAKE[3] (RW) + * + * Determines which condition wakes the UART: Address mark in the most + * significant bit position of a received data character, or An idle condition on the + * receive pin input signal. + * + * Values: + * - 0 - Idle line wakeup. + * - 1 - Address mark wakeup. + */ +//@{ +#define BP_UART_C1_WAKE (3U) //!< Bit position for UART_C1_WAKE. +#define BM_UART_C1_WAKE (0x08U) //!< Bit mask for UART_C1_WAKE. +#define BS_UART_C1_WAKE (1U) //!< Bit field size in bits for UART_C1_WAKE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C1_WAKE field. +#define BR_UART_C1_WAKE(x) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_WAKE)) +#endif + +//! @brief Format value for bitfield UART_C1_WAKE. +#define BF_UART_C1_WAKE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C1_WAKE), uint8_t) & BM_UART_C1_WAKE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WAKE field to a new value. +#define BW_UART_C1_WAKE(x, v) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_WAKE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C1, field M[4] (RW) + * + * This field must be set when C7816[ISO_7816E] is set/enabled. + * + * Values: + * - 0 - Normal-start + 8 data bits (MSB/LSB first as determined by MSBF) + stop. + * - 1 - Use-start + 9 data bits (MSB/LSB first as determined by MSBF) + stop. + */ +//@{ +#define BP_UART_C1_M (4U) //!< Bit position for UART_C1_M. +#define BM_UART_C1_M (0x10U) //!< Bit mask for UART_C1_M. +#define BS_UART_C1_M (1U) //!< Bit field size in bits for UART_C1_M. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C1_M field. +#define BR_UART_C1_M(x) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_M)) +#endif + +//! @brief Format value for bitfield UART_C1_M. +#define BF_UART_C1_M(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C1_M), uint8_t) & BM_UART_C1_M) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M field to a new value. +#define BW_UART_C1_M(x, v) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_M) = (v)) +#endif +//@} + +/*! + * @name Register UART_C1, field RSRC[5] (RW) + * + * This field has no meaning or effect unless the LOOPS field is set. When LOOPS + * is set, the RSRC field determines the source for the receiver shift register + * input. + * + * Values: + * - 0 - Selects internal loop back mode. The receiver input is internally + * connected to transmitter output. + * - 1 - Single wire UART mode where the receiver input is connected to the + * transmit pin input signal. + */ +//@{ +#define BP_UART_C1_RSRC (5U) //!< Bit position for UART_C1_RSRC. +#define BM_UART_C1_RSRC (0x20U) //!< Bit mask for UART_C1_RSRC. +#define BS_UART_C1_RSRC (1U) //!< Bit field size in bits for UART_C1_RSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C1_RSRC field. +#define BR_UART_C1_RSRC(x) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_RSRC)) +#endif + +//! @brief Format value for bitfield UART_C1_RSRC. +#define BF_UART_C1_RSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C1_RSRC), uint8_t) & BM_UART_C1_RSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSRC field to a new value. +#define BW_UART_C1_RSRC(x, v) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_RSRC) = (v)) +#endif +//@} + +/*! + * @name Register UART_C1, field UARTSWAI[6] (RW) + * + * Values: + * - 0 - UART clock continues to run in Wait mode. + * - 1 - UART clock freezes while CPU is in Wait mode. + */ +//@{ +#define BP_UART_C1_UARTSWAI (6U) //!< Bit position for UART_C1_UARTSWAI. +#define BM_UART_C1_UARTSWAI (0x40U) //!< Bit mask for UART_C1_UARTSWAI. +#define BS_UART_C1_UARTSWAI (1U) //!< Bit field size in bits for UART_C1_UARTSWAI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C1_UARTSWAI field. +#define BR_UART_C1_UARTSWAI(x) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_UARTSWAI)) +#endif + +//! @brief Format value for bitfield UART_C1_UARTSWAI. +#define BF_UART_C1_UARTSWAI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C1_UARTSWAI), uint8_t) & BM_UART_C1_UARTSWAI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the UARTSWAI field to a new value. +#define BW_UART_C1_UARTSWAI(x, v) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_UARTSWAI) = (v)) +#endif +//@} + +/*! + * @name Register UART_C1, field LOOPS[7] (RW) + * + * When LOOPS is set, the RxD pin is disconnected from the UART and the + * transmitter output is internally connected to the receiver input. The transmitter and + * the receiver must be enabled to use the loop function. + * + * Values: + * - 0 - Normal operation. + * - 1 - Loop mode where transmitter output is internally connected to receiver + * input. The receiver input is determined by RSRC. + */ +//@{ +#define BP_UART_C1_LOOPS (7U) //!< Bit position for UART_C1_LOOPS. +#define BM_UART_C1_LOOPS (0x80U) //!< Bit mask for UART_C1_LOOPS. +#define BS_UART_C1_LOOPS (1U) //!< Bit field size in bits for UART_C1_LOOPS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C1_LOOPS field. +#define BR_UART_C1_LOOPS(x) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_LOOPS)) +#endif + +//! @brief Format value for bitfield UART_C1_LOOPS. +#define BF_UART_C1_LOOPS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C1_LOOPS), uint8_t) & BM_UART_C1_LOOPS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LOOPS field to a new value. +#define BW_UART_C1_LOOPS(x, v) (BITBAND_ACCESS8(HW_UART_C1_ADDR(x), BP_UART_C1_LOOPS) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_C2 - UART Control Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_C2 - UART Control Register 2 (RW) + * + * Reset value: 0x00U + * + * This register can be read or written at any time. + */ +typedef union _hw_uart_c2 +{ + uint8_t U; + struct _hw_uart_c2_bitfields + { + uint8_t SBK : 1; //!< [0] Send Break + uint8_t RWU : 1; //!< [1] Receiver Wakeup Control + uint8_t RE : 1; //!< [2] Receiver Enable + uint8_t TE : 1; //!< [3] Transmitter Enable + uint8_t ILIE : 1; //!< [4] Idle Line Interrupt DMA Transfer Enable + uint8_t RIE : 1; //!< [5] Receiver Full Interrupt or DMA Transfer + //! Enable + uint8_t TCIE : 1; //!< [6] Transmission Complete Interrupt or DMA + //! Transfer Enable + uint8_t TIE : 1; //!< [7] Transmitter Interrupt or DMA Transfer + //! Enable. + } B; +} hw_uart_c2_t; +#endif + +/*! + * @name Constants and macros for entire UART_C2 register + */ +//@{ +#define HW_UART_C2_ADDR(x) (REGS_UART_BASE(x) + 0x3U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_C2(x) (*(__IO hw_uart_c2_t *) HW_UART_C2_ADDR(x)) +#define HW_UART_C2_RD(x) (HW_UART_C2(x).U) +#define HW_UART_C2_WR(x, v) (HW_UART_C2(x).U = (v)) +#define HW_UART_C2_SET(x, v) (HW_UART_C2_WR(x, HW_UART_C2_RD(x) | (v))) +#define HW_UART_C2_CLR(x, v) (HW_UART_C2_WR(x, HW_UART_C2_RD(x) & ~(v))) +#define HW_UART_C2_TOG(x, v) (HW_UART_C2_WR(x, HW_UART_C2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_C2 bitfields + */ + +/*! + * @name Register UART_C2, field SBK[0] (RW) + * + * Toggling SBK sends one break character from the following: See Transmitting + * break characters for the number of logic 0s for the different configurations. + * Toggling implies clearing the SBK field before the break character has finished + * transmitting. As long as SBK is set, the transmitter continues to send + * complete break characters (10, 11, or 12 bits, or 13 or 14 bits, or 15 or 16 bits). + * Ensure that C2[TE] is asserted atleast 1 clock before assertion of this bit. + * 10, 11, or 12 logic 0s if S2[BRK13] is cleared 13 or 14 logic 0s if S2[BRK13] + * is set. 15 or 16 logic 0s if BDH[SBNS] is set. This field must be cleared when + * C7816[ISO_7816E] is set. + * + * Values: + * - 0 - Normal transmitter operation. + * - 1 - Queue break characters to be sent. + */ +//@{ +#define BP_UART_C2_SBK (0U) //!< Bit position for UART_C2_SBK. +#define BM_UART_C2_SBK (0x01U) //!< Bit mask for UART_C2_SBK. +#define BS_UART_C2_SBK (1U) //!< Bit field size in bits for UART_C2_SBK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C2_SBK field. +#define BR_UART_C2_SBK(x) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_SBK)) +#endif + +//! @brief Format value for bitfield UART_C2_SBK. +#define BF_UART_C2_SBK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C2_SBK), uint8_t) & BM_UART_C2_SBK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SBK field to a new value. +#define BW_UART_C2_SBK(x, v) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_SBK) = (v)) +#endif +//@} + +/*! + * @name Register UART_C2, field RWU[1] (RW) + * + * This field can be set to place the UART receiver in a standby state. RWU + * automatically clears when an RWU event occurs, that is, an IDLE event when + * C1[WAKE] is clear or an address match when C1[WAKE] is set. This field must be + * cleared when C7816[ISO_7816E] is set. RWU must be set only with C1[WAKE] = 0 (wakeup + * on idle) if the channel is currently not idle. This can be determined by + * S2[RAF]. If the flag is set to wake up an IDLE event and the channel is already + * idle, it is possible that the UART will discard data. This is because the data + * must be received or a LIN break detected after an IDLE is detected before IDLE + * is allowed to reasserted. + * + * Values: + * - 0 - Normal operation. + * - 1 - RWU enables the wakeup function and inhibits further receiver interrupt + * requests. Normally, hardware wakes the receiver by automatically clearing + * RWU. + */ +//@{ +#define BP_UART_C2_RWU (1U) //!< Bit position for UART_C2_RWU. +#define BM_UART_C2_RWU (0x02U) //!< Bit mask for UART_C2_RWU. +#define BS_UART_C2_RWU (1U) //!< Bit field size in bits for UART_C2_RWU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C2_RWU field. +#define BR_UART_C2_RWU(x) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_RWU)) +#endif + +//! @brief Format value for bitfield UART_C2_RWU. +#define BF_UART_C2_RWU(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C2_RWU), uint8_t) & BM_UART_C2_RWU) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RWU field to a new value. +#define BW_UART_C2_RWU(x, v) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_RWU) = (v)) +#endif +//@} + +/*! + * @name Register UART_C2, field RE[2] (RW) + * + * Enables the UART receiver. + * + * Values: + * - 0 - Receiver off. + * - 1 - Receiver on. + */ +//@{ +#define BP_UART_C2_RE (2U) //!< Bit position for UART_C2_RE. +#define BM_UART_C2_RE (0x04U) //!< Bit mask for UART_C2_RE. +#define BS_UART_C2_RE (1U) //!< Bit field size in bits for UART_C2_RE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C2_RE field. +#define BR_UART_C2_RE(x) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_RE)) +#endif + +//! @brief Format value for bitfield UART_C2_RE. +#define BF_UART_C2_RE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C2_RE), uint8_t) & BM_UART_C2_RE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RE field to a new value. +#define BW_UART_C2_RE(x, v) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_RE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C2, field TE[3] (RW) + * + * Enables the UART transmitter. TE can be used to queue an idle preamble by + * clearing and then setting TE. When C7816[ISO_7816E] is set/enabled and + * C7816[TTYPE] = 1, this field is automatically cleared after the requested block has been + * transmitted. This condition is detected when TL7816[TLEN] = 0 and four + * additional characters are transmitted. + * + * Values: + * - 0 - Transmitter off. + * - 1 - Transmitter on. + */ +//@{ +#define BP_UART_C2_TE (3U) //!< Bit position for UART_C2_TE. +#define BM_UART_C2_TE (0x08U) //!< Bit mask for UART_C2_TE. +#define BS_UART_C2_TE (1U) //!< Bit field size in bits for UART_C2_TE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C2_TE field. +#define BR_UART_C2_TE(x) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_TE)) +#endif + +//! @brief Format value for bitfield UART_C2_TE. +#define BF_UART_C2_TE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C2_TE), uint8_t) & BM_UART_C2_TE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TE field to a new value. +#define BW_UART_C2_TE(x, v) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_TE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C2, field ILIE[4] (RW) + * + * Enables the idle line flag, S1[IDLE], to generate interrupt requestsor DMA + * transfer requests based on the state of C5[ILDMAS]. + * + * Values: + * - 0 - IDLE interrupt requests disabled. and DMA transfer + * - 1 - IDLE interrupt requests enabled. or DMA transfer + */ +//@{ +#define BP_UART_C2_ILIE (4U) //!< Bit position for UART_C2_ILIE. +#define BM_UART_C2_ILIE (0x10U) //!< Bit mask for UART_C2_ILIE. +#define BS_UART_C2_ILIE (1U) //!< Bit field size in bits for UART_C2_ILIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C2_ILIE field. +#define BR_UART_C2_ILIE(x) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_ILIE)) +#endif + +//! @brief Format value for bitfield UART_C2_ILIE. +#define BF_UART_C2_ILIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C2_ILIE), uint8_t) & BM_UART_C2_ILIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ILIE field to a new value. +#define BW_UART_C2_ILIE(x, v) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_ILIE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C2, field RIE[5] (RW) + * + * Enables S1[RDRF] to generate interrupt requests or DMA transfer requests, + * based on the state of C5[RDMAS]. + * + * Values: + * - 0 - RDRF interrupt and DMA transfer requests disabled. + * - 1 - RDRF interrupt or DMA transfer requests enabled. + */ +//@{ +#define BP_UART_C2_RIE (5U) //!< Bit position for UART_C2_RIE. +#define BM_UART_C2_RIE (0x20U) //!< Bit mask for UART_C2_RIE. +#define BS_UART_C2_RIE (1U) //!< Bit field size in bits for UART_C2_RIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C2_RIE field. +#define BR_UART_C2_RIE(x) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_RIE)) +#endif + +//! @brief Format value for bitfield UART_C2_RIE. +#define BF_UART_C2_RIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C2_RIE), uint8_t) & BM_UART_C2_RIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RIE field to a new value. +#define BW_UART_C2_RIE(x, v) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_RIE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C2, field TCIE[6] (RW) + * + * Enables the transmission complete flag, S1[TC], to generate interrupt + * requests . or DMA transfer requests based on the state of C5[TCDMAS] If C2[TCIE] and + * C5[TCDMAS] are both set, then TIE must be cleared, and D[D] must not be + * written unless servicing a DMA request. + * + * Values: + * - 0 - TC interrupt and DMA transfer requests disabled. + * - 1 - TC interrupt or DMA transfer requests enabled. + */ +//@{ +#define BP_UART_C2_TCIE (6U) //!< Bit position for UART_C2_TCIE. +#define BM_UART_C2_TCIE (0x40U) //!< Bit mask for UART_C2_TCIE. +#define BS_UART_C2_TCIE (1U) //!< Bit field size in bits for UART_C2_TCIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C2_TCIE field. +#define BR_UART_C2_TCIE(x) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_TCIE)) +#endif + +//! @brief Format value for bitfield UART_C2_TCIE. +#define BF_UART_C2_TCIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C2_TCIE), uint8_t) & BM_UART_C2_TCIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCIE field to a new value. +#define BW_UART_C2_TCIE(x, v) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_TCIE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C2, field TIE[7] (RW) + * + * Enables S1[TDRE] to generate interrupt requests or DMA transfer requests, + * based on the state of C5[TDMAS]. If C2[TIE] and C5[TDMAS] are both set, then TCIE + * must be cleared, and D[D] must not be written unless servicing a DMA request. + * + * Values: + * - 0 - TDRE interrupt and DMA transfer requests disabled. + * - 1 - TDRE interrupt or DMA transfer requests enabled. + */ +//@{ +#define BP_UART_C2_TIE (7U) //!< Bit position for UART_C2_TIE. +#define BM_UART_C2_TIE (0x80U) //!< Bit mask for UART_C2_TIE. +#define BS_UART_C2_TIE (1U) //!< Bit field size in bits for UART_C2_TIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C2_TIE field. +#define BR_UART_C2_TIE(x) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_TIE)) +#endif + +//! @brief Format value for bitfield UART_C2_TIE. +#define BF_UART_C2_TIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C2_TIE), uint8_t) & BM_UART_C2_TIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIE field to a new value. +#define BW_UART_C2_TIE(x, v) (BITBAND_ACCESS8(HW_UART_C2_ADDR(x), BP_UART_C2_TIE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_S1 - UART Status Register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_S1 - UART Status Register 1 (RO) + * + * Reset value: 0xC0U + * + * The S1 register provides inputs to the MCU for generation of UART interrupts + * or DMA requests. This register can also be polled by the MCU to check the + * status of its fields. To clear a flag, the status register should be read followed + * by a read or write to D register, depending on the interrupt flag type. Other + * instructions can be executed between the two steps as long the handling of + * I/O is not compromised, but the order of operations is important for flag + * clearing. When a flag is configured to trigger a DMA request, assertion of the + * associated DMA done signal from the DMA controller clears the flag. If the + * condition that results in the assertion of the flag, interrupt, or DMA request is not + * resolved prior to clearing the flag, the flag, and interrupt/DMA request, + * reasserts. For example, if the DMA or interrupt service routine fails to write + * sufficient data to the transmit buffer to raise it above the watermark level, the + * flag reasserts and generates another interrupt or DMA request. Reading an + * empty data register to clear one of the flags of the S1 register causes the FIFO + * pointers to become misaligned. A receive FIFO flush reinitializes the + * pointers. A better way to prevent this situation is to always leave one byte in FIFO + * and this byte will be read eventually in clearing the flag bit. + */ +typedef union _hw_uart_s1 +{ + uint8_t U; + struct _hw_uart_s1_bitfields + { + uint8_t PF : 1; //!< [0] Parity Error Flag + uint8_t FE : 1; //!< [1] Framing Error Flag + uint8_t NF : 1; //!< [2] Noise Flag + uint8_t OR : 1; //!< [3] Receiver Overrun Flag + uint8_t IDLE : 1; //!< [4] Idle Line Flag + uint8_t RDRF : 1; //!< [5] Receive Data Register Full Flag + uint8_t TC : 1; //!< [6] Transmit Complete Flag + uint8_t TDRE : 1; //!< [7] Transmit Data Register Empty Flag + } B; +} hw_uart_s1_t; +#endif + +/*! + * @name Constants and macros for entire UART_S1 register + */ +//@{ +#define HW_UART_S1_ADDR(x) (REGS_UART_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_S1(x) (*(__I hw_uart_s1_t *) HW_UART_S1_ADDR(x)) +#define HW_UART_S1_RD(x) (HW_UART_S1(x).U) +#endif +//@} + +/* + * Constants & macros for individual UART_S1 bitfields + */ + +/*! + * @name Register UART_S1, field PF[0] (RO) + * + * PF is set when PE is set and the parity of the received data does not match + * its parity bit. The PF is not set in the case of an overrun condition. When PF + * is set, it indicates only that a dataword was received with parity error since + * the last time it was cleared. There is no guarantee that the first dataword + * read from the receive buffer has a parity error or that there is only one + * dataword in the buffer that was received with a parity error, unless the receive + * buffer has a depth of one. To clear PF, read S1 and then read D., S2[LBKDE] is + * disabled, Within the receive buffer structure the received dataword is tagged + * if it is received with a parity error. This information is available by reading + * the ED register prior to reading the D register. + * + * Values: + * - 0 - No parity error detected since the last time this flag was cleared. If + * the receive buffer has a depth greater than 1, then there may be data in + * the receive buffer what was received with a parity error. + * - 1 - At least one dataword was received with a parity error since the last + * time this flag was cleared. + */ +//@{ +#define BP_UART_S1_PF (0U) //!< Bit position for UART_S1_PF. +#define BM_UART_S1_PF (0x01U) //!< Bit mask for UART_S1_PF. +#define BS_UART_S1_PF (1U) //!< Bit field size in bits for UART_S1_PF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S1_PF field. +#define BR_UART_S1_PF(x) (BITBAND_ACCESS8(HW_UART_S1_ADDR(x), BP_UART_S1_PF)) +#endif +//@} + +/*! + * @name Register UART_S1, field FE[1] (RO) + * + * FE is set when a logic 0 is accepted as the stop bit. When BDH[SBNS] is set, + * then FE will set when a logic 0 is accepted for either of the two stop bits. + * FE does not set in the case of an overrun or while the LIN break detect feature + * is enabled (S2[LBKDE] = 1). FE inhibits further data reception until it is + * cleared. To clear FE, read S1 with FE set and then read D. The last data in the + * receive buffer represents the data that was received with the frame error + * enabled. Framing errors are not supported when 7816E is set/enabled. However, if + * this flag is set, data is still not received in 7816 mode. + * + * Values: + * - 0 - No framing error detected. + * - 1 - Framing error. + */ +//@{ +#define BP_UART_S1_FE (1U) //!< Bit position for UART_S1_FE. +#define BM_UART_S1_FE (0x02U) //!< Bit mask for UART_S1_FE. +#define BS_UART_S1_FE (1U) //!< Bit field size in bits for UART_S1_FE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S1_FE field. +#define BR_UART_S1_FE(x) (BITBAND_ACCESS8(HW_UART_S1_ADDR(x), BP_UART_S1_FE)) +#endif +//@} + +/*! + * @name Register UART_S1, field NF[2] (RO) + * + * NF is set when the UART detects noise on the receiver input. NF does not + * become set in the case of an overrun or while the LIN break detect feature is + * enabled (S2[LBKDE] = 1). When NF is set, it indicates only that a dataword has + * been received with noise since the last time it was cleared. There is no + * guarantee that the first dataword read from the receive buffer has noise or that there + * is only one dataword in the buffer that was received with noise unless the + * receive buffer has a depth of one. To clear NF, read S1 and then read D. + * + * Values: + * - 0 - No noise detected since the last time this flag was cleared. If the + * receive buffer has a depth greater than 1 then there may be data in the + * receiver buffer that was received with noise. + * - 1 - At least one dataword was received with noise detected since the last + * time the flag was cleared. + */ +//@{ +#define BP_UART_S1_NF (2U) //!< Bit position for UART_S1_NF. +#define BM_UART_S1_NF (0x04U) //!< Bit mask for UART_S1_NF. +#define BS_UART_S1_NF (1U) //!< Bit field size in bits for UART_S1_NF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S1_NF field. +#define BR_UART_S1_NF(x) (BITBAND_ACCESS8(HW_UART_S1_ADDR(x), BP_UART_S1_NF)) +#endif +//@} + +/*! + * @name Register UART_S1, field OR[3] (RO) + * + * OR is set when software fails to prevent the receive data register from + * overflowing with data. The OR bit is set immediately after the stop bit has been + * completely received for the dataword that overflows the buffer and all the other + * error flags (FE, NF, and PF) are prevented from setting. The data in the + * shift register is lost, but the data already in the UART data registers is not + * affected. If the OR flag is set, no data is stored in the data buffer even if + * sufficient room exists. Additionally, while the OR flag is set, the RDRF and IDLE + * flags are blocked from asserting, that is, transition from an inactive to an + * active state. To clear OR, read S1 when OR is set and then read D. See + * functional description for more details regarding the operation of the OR bit.If + * LBKDE is enabled and a LIN Break is detected, the OR field asserts if S2[LBKDIF] + * is not cleared before the next data character is received. In 7816 mode, it is + * possible to configure a NACK to be returned by programing C7816[ONACK]. + * + * Values: + * - 0 - No overrun has occurred since the last time the flag was cleared. + * - 1 - Overrun has occurred or the overrun flag has not been cleared since the + * last overrun occured. + */ +//@{ +#define BP_UART_S1_OR (3U) //!< Bit position for UART_S1_OR. +#define BM_UART_S1_OR (0x08U) //!< Bit mask for UART_S1_OR. +#define BS_UART_S1_OR (1U) //!< Bit field size in bits for UART_S1_OR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S1_OR field. +#define BR_UART_S1_OR(x) (BITBAND_ACCESS8(HW_UART_S1_ADDR(x), BP_UART_S1_OR)) +#endif +//@} + +/*! + * @name Register UART_S1, field IDLE[4] (RO) + * + * After the IDLE flag is cleared, a frame must be received (although not + * necessarily stored in the data buffer, for example if C2[RWU] is set), or a LIN + * break character must set the S2[LBKDIF] flag before an idle condition can set the + * IDLE flag. To clear IDLE, read UART status S1 with IDLE set and then read D. + * IDLE is set when either of the following appear on the receiver input: 10 + * consecutive logic 1s if C1[M] = 0 11 consecutive logic 1s if C1[M] = 1 and C4[M10] + * = 0 12 consecutive logic 1s if C1[M] = 1, C4[M10] = 1, and C1[PE] = 1 Idle + * detection is not supported when 7816E is set/enabled and hence this flag is + * ignored. When RWU is set and WAKE is cleared, an idle line condition sets the IDLE + * flag if RWUID is set, else the IDLE flag does not become set. + * + * Values: + * - 0 - Receiver input is either active now or has never become active since + * the IDLE flag was last cleared. + * - 1 - Receiver input has become idle or the flag has not been cleared since + * it last asserted. + */ +//@{ +#define BP_UART_S1_IDLE (4U) //!< Bit position for UART_S1_IDLE. +#define BM_UART_S1_IDLE (0x10U) //!< Bit mask for UART_S1_IDLE. +#define BS_UART_S1_IDLE (1U) //!< Bit field size in bits for UART_S1_IDLE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S1_IDLE field. +#define BR_UART_S1_IDLE(x) (BITBAND_ACCESS8(HW_UART_S1_ADDR(x), BP_UART_S1_IDLE)) +#endif +//@} + +/*! + * @name Register UART_S1, field RDRF[5] (RO) + * + * RDRF is set when the number of datawords in the receive buffer is equal to or + * more than the number indicated by RWFIFO[RXWATER]. A dataword that is in the + * process of being received is not included in the count. To clear RDRF, read S1 + * when RDRF is set and then read D. For more efficient interrupt and DMA + * operation, read all data except the final value from the buffer, using D/C3[T8]/ED. + * Then read S1 and the final data value, resulting in the clearing of the RDRF + * flag. Even if RDRF is set, data will continue to be received until an overrun + * condition occurs.RDRF is prevented from setting while S2[LBKDE] is set. + * Additionally, when S2[LBKDE] is set, the received datawords are stored in the receive + * buffer but over-write each other. + * + * Values: + * - 0 - The number of datawords in the receive buffer is less than the number + * indicated by RXWATER. + * - 1 - The number of datawords in the receive buffer is equal to or greater + * than the number indicated by RXWATER at some point in time since this flag + * was last cleared. + */ +//@{ +#define BP_UART_S1_RDRF (5U) //!< Bit position for UART_S1_RDRF. +#define BM_UART_S1_RDRF (0x20U) //!< Bit mask for UART_S1_RDRF. +#define BS_UART_S1_RDRF (1U) //!< Bit field size in bits for UART_S1_RDRF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S1_RDRF field. +#define BR_UART_S1_RDRF(x) (BITBAND_ACCESS8(HW_UART_S1_ADDR(x), BP_UART_S1_RDRF)) +#endif +//@} + +/*! + * @name Register UART_S1, field TC[6] (RO) + * + * TC is set when the transmit buffer is empty and no data, preamble, or break + * character is being transmitted. When TC is set, the transmit data output signal + * becomes idle (logic 1). TC is cleared by reading S1 with TC set and then + * doing one of the following: When C7816[ISO_7816E] is set/enabled, this field is + * set after any NACK signal has been received, but prior to any corresponding + * guard times expiring. Writing to D to transmit new data. Queuing a preamble by + * clearing and then setting C2[TE]. Queuing a break character by writing 1 to SBK + * in C2. + * + * Values: + * - 0 - Transmitter active (sending data, a preamble, or a break). + * - 1 - Transmitter idle (transmission activity complete). + */ +//@{ +#define BP_UART_S1_TC (6U) //!< Bit position for UART_S1_TC. +#define BM_UART_S1_TC (0x40U) //!< Bit mask for UART_S1_TC. +#define BS_UART_S1_TC (1U) //!< Bit field size in bits for UART_S1_TC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S1_TC field. +#define BR_UART_S1_TC(x) (BITBAND_ACCESS8(HW_UART_S1_ADDR(x), BP_UART_S1_TC)) +#endif +//@} + +/*! + * @name Register UART_S1, field TDRE[7] (RO) + * + * TDRE will set when the number of datawords in the transmit buffer (D and + * C3[T8])is equal to or less than the number indicated by TWFIFO[TXWATER]. A + * character that is in the process of being transmitted is not included in the count. + * To clear TDRE, read S1 when TDRE is set and then write to the UART data + * register (D). For more efficient interrupt servicing, all data except the final value + * to be written to the buffer must be written to D/C3[T8]. Then S1 can be read + * before writing the final data value, resulting in the clearing of the TRDE + * flag. This is more efficient because the TDRE reasserts until the watermark has + * been exceeded. So, attempting to clear the TDRE with every write will be + * ineffective until sufficient data has been written. + * + * Values: + * - 0 - The amount of data in the transmit buffer is greater than the value + * indicated by TWFIFO[TXWATER]. + * - 1 - The amount of data in the transmit buffer is less than or equal to the + * value indicated by TWFIFO[TXWATER] at some point in time since the flag + * has been cleared. + */ +//@{ +#define BP_UART_S1_TDRE (7U) //!< Bit position for UART_S1_TDRE. +#define BM_UART_S1_TDRE (0x80U) //!< Bit mask for UART_S1_TDRE. +#define BS_UART_S1_TDRE (1U) //!< Bit field size in bits for UART_S1_TDRE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S1_TDRE field. +#define BR_UART_S1_TDRE(x) (BITBAND_ACCESS8(HW_UART_S1_ADDR(x), BP_UART_S1_TDRE)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_S2 - UART Status Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_S2 - UART Status Register 2 (RW) + * + * Reset value: 0x00U + * + * The S2 register provides inputs to the MCU for generation of UART interrupts + * or DMA requests. Also, this register can be polled by the MCU to check the + * status of these bits. This register can be read or written at any time, with the + * exception of the MSBF and RXINV bits, which should be changed by the user only + * between transmit and receive packets. + */ +typedef union _hw_uart_s2 +{ + uint8_t U; + struct _hw_uart_s2_bitfields + { + uint8_t RAF : 1; //!< [0] Receiver Active Flag + uint8_t LBKDE : 1; //!< [1] LIN Break Detection Enable + uint8_t BRK13 : 1; //!< [2] Break Transmit Character Length + uint8_t RWUID : 1; //!< [3] Receive Wakeup Idle Detect + uint8_t RXINV : 1; //!< [4] Receive Data Inversion + uint8_t MSBF : 1; //!< [5] Most Significant Bit First + uint8_t RXEDGIF : 1; //!< [6] RxD Pin Active Edge Interrupt Flag + uint8_t LBKDIF : 1; //!< [7] LIN Break Detect Interrupt Flag + } B; +} hw_uart_s2_t; +#endif + +/*! + * @name Constants and macros for entire UART_S2 register + */ +//@{ +#define HW_UART_S2_ADDR(x) (REGS_UART_BASE(x) + 0x5U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_S2(x) (*(__IO hw_uart_s2_t *) HW_UART_S2_ADDR(x)) +#define HW_UART_S2_RD(x) (HW_UART_S2(x).U) +#define HW_UART_S2_WR(x, v) (HW_UART_S2(x).U = (v)) +#define HW_UART_S2_SET(x, v) (HW_UART_S2_WR(x, HW_UART_S2_RD(x) | (v))) +#define HW_UART_S2_CLR(x, v) (HW_UART_S2_WR(x, HW_UART_S2_RD(x) & ~(v))) +#define HW_UART_S2_TOG(x, v) (HW_UART_S2_WR(x, HW_UART_S2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_S2 bitfields + */ + +/*! + * @name Register UART_S2, field RAF[0] (RO) + * + * RAF is set when the UART receiver detects a logic 0 during the RT1 time + * period of the start bit search. RAF is cleared when the receiver detects an idle + * character when C7816[ISO7816E] is cleared/disabled. When C7816[ISO7816E] is + * enabled, the RAF is cleared if the C7816[TTYPE] = 0 expires or the C7816[TTYPE] = + * 1 expires.In case C7816[ISO7816E] is set and C7816[TTYPE] = 0, it is possible + * to configure the guard time to 12. However, if a NACK is required to be + * transmitted, the data transfer actually takes 13 ETU with the 13th ETU slot being a + * inactive buffer. Therefore, in this situation, the RAF may deassert one ETU + * prior to actually being inactive. + * + * Values: + * - 0 - UART receiver idle/inactive waiting for a start bit. + * - 1 - UART receiver active, RxD input not idle. + */ +//@{ +#define BP_UART_S2_RAF (0U) //!< Bit position for UART_S2_RAF. +#define BM_UART_S2_RAF (0x01U) //!< Bit mask for UART_S2_RAF. +#define BS_UART_S2_RAF (1U) //!< Bit field size in bits for UART_S2_RAF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S2_RAF field. +#define BR_UART_S2_RAF(x) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_RAF)) +#endif +//@} + +/*! + * @name Register UART_S2, field LBKDE[1] (RW) + * + * Enables the LIN Break detection feature. While LBKDE is set, S1[RDRF], + * S1[NF], S1[FE], and S1[PF] are prevented from setting. When LBKDE is set, see . + * Overrun operation LBKDE must be cleared when C7816[ISO7816E] is set. + * + * Values: + * - 0 - Break character detection is disabled. + * - 1 - Break character is detected at length of 11 bit times if C1[M] = 0 or + * 12 bits time if C1[M] = 1. + */ +//@{ +#define BP_UART_S2_LBKDE (1U) //!< Bit position for UART_S2_LBKDE. +#define BM_UART_S2_LBKDE (0x02U) //!< Bit mask for UART_S2_LBKDE. +#define BS_UART_S2_LBKDE (1U) //!< Bit field size in bits for UART_S2_LBKDE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S2_LBKDE field. +#define BR_UART_S2_LBKDE(x) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_LBKDE)) +#endif + +//! @brief Format value for bitfield UART_S2_LBKDE. +#define BF_UART_S2_LBKDE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_S2_LBKDE), uint8_t) & BM_UART_S2_LBKDE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LBKDE field to a new value. +#define BW_UART_S2_LBKDE(x, v) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_LBKDE) = (v)) +#endif +//@} + +/*! + * @name Register UART_S2, field BRK13[2] (RW) + * + * Determines whether the transmit break character is 10, 11, or 12 bits long, + * or 13 or 14 bits long. See for the length of the break character for the + * different configurations. The detection of a framing error is not affected by this + * field. Transmitting break characters + * + * Values: + * - 0 - Break character is 10, 11, or 12 bits long. + * - 1 - Break character is 13 or 14 bits long. + */ +//@{ +#define BP_UART_S2_BRK13 (2U) //!< Bit position for UART_S2_BRK13. +#define BM_UART_S2_BRK13 (0x04U) //!< Bit mask for UART_S2_BRK13. +#define BS_UART_S2_BRK13 (1U) //!< Bit field size in bits for UART_S2_BRK13. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S2_BRK13 field. +#define BR_UART_S2_BRK13(x) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_BRK13)) +#endif + +//! @brief Format value for bitfield UART_S2_BRK13. +#define BF_UART_S2_BRK13(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_S2_BRK13), uint8_t) & BM_UART_S2_BRK13) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BRK13 field to a new value. +#define BW_UART_S2_BRK13(x, v) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_BRK13) = (v)) +#endif +//@} + +/*! + * @name Register UART_S2, field RWUID[3] (RW) + * + * When RWU is set and WAKE is cleared, this field controls whether the idle + * character that wakes the receiver sets S1[IDLE]. This field must be cleared when + * C7816[ISO7816E] is set/enabled. + * + * Values: + * - 0 - S1[IDLE] is not set upon detection of an idle character. + * - 1 - S1[IDLE] is set upon detection of an idle character. + */ +//@{ +#define BP_UART_S2_RWUID (3U) //!< Bit position for UART_S2_RWUID. +#define BM_UART_S2_RWUID (0x08U) //!< Bit mask for UART_S2_RWUID. +#define BS_UART_S2_RWUID (1U) //!< Bit field size in bits for UART_S2_RWUID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S2_RWUID field. +#define BR_UART_S2_RWUID(x) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_RWUID)) +#endif + +//! @brief Format value for bitfield UART_S2_RWUID. +#define BF_UART_S2_RWUID(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_S2_RWUID), uint8_t) & BM_UART_S2_RWUID) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RWUID field to a new value. +#define BW_UART_S2_RWUID(x, v) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_RWUID) = (v)) +#endif +//@} + +/*! + * @name Register UART_S2, field RXINV[4] (RW) + * + * Setting this field reverses the polarity of the received data input. In NRZ + * format, a one is represented by a mark and a zero is represented by a space for + * normal polarity, and the opposite for inverted polarity. In IrDA format, a + * zero is represented by short high pulse in the middle of a bit time remaining + * idle low for a one for normal polarity. A zero is represented by a short low + * pulse in the middle of a bit time remaining idle high for a one for inverted + * polarity. This field is automatically set when C7816[INIT] and C7816[ISO7816E] are + * enabled and an initial character is detected in T = 0 protocol mode. Setting + * RXINV inverts the RxD input for data bits, start and stop bits, break, and + * idle. When C7816[ISO7816E] is set/enabled, only the data bits and the parity bit + * are inverted. + * + * Values: + * - 0 - Receive data is not inverted. + * - 1 - Receive data is inverted. + */ +//@{ +#define BP_UART_S2_RXINV (4U) //!< Bit position for UART_S2_RXINV. +#define BM_UART_S2_RXINV (0x10U) //!< Bit mask for UART_S2_RXINV. +#define BS_UART_S2_RXINV (1U) //!< Bit field size in bits for UART_S2_RXINV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S2_RXINV field. +#define BR_UART_S2_RXINV(x) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_RXINV)) +#endif + +//! @brief Format value for bitfield UART_S2_RXINV. +#define BF_UART_S2_RXINV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_S2_RXINV), uint8_t) & BM_UART_S2_RXINV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXINV field to a new value. +#define BW_UART_S2_RXINV(x, v) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_RXINV) = (v)) +#endif +//@} + +/*! + * @name Register UART_S2, field MSBF[5] (RW) + * + * Setting this field reverses the order of the bits that are transmitted and + * received on the wire. This field does not affect the polarity of the bits, the + * location of the parity bit, or the location of the start or stop bits. This + * field is automatically set when C7816[INIT] and C7816[ISO7816E] are enabled and + * an initial character is detected in T = 0 protocol mode. + * + * Values: + * - 0 - LSB (bit0) is the first bit that is transmitted following the start + * bit. Further, the first bit received after the start bit is identified as + * bit0. + * - 1 - MSB (bit8, bit7 or bit6) is the first bit that is transmitted following + * the start bit, depending on the setting of C1[M] and C1[PE]. Further, the + * first bit received after the start bit is identified as bit8, bit7, or + * bit6, depending on the setting of C1[M] and C1[PE]. + */ +//@{ +#define BP_UART_S2_MSBF (5U) //!< Bit position for UART_S2_MSBF. +#define BM_UART_S2_MSBF (0x20U) //!< Bit mask for UART_S2_MSBF. +#define BS_UART_S2_MSBF (1U) //!< Bit field size in bits for UART_S2_MSBF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S2_MSBF field. +#define BR_UART_S2_MSBF(x) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_MSBF)) +#endif + +//! @brief Format value for bitfield UART_S2_MSBF. +#define BF_UART_S2_MSBF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_S2_MSBF), uint8_t) & BM_UART_S2_MSBF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MSBF field to a new value. +#define BW_UART_S2_MSBF(x, v) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_MSBF) = (v)) +#endif +//@} + +/*! + * @name Register UART_S2, field RXEDGIF[6] (W1C) + * + * RXEDGIF is set when an active edge occurs on the RxD pin. The active edge is + * falling if RXINV = 0, and rising if RXINV=1. RXEDGIF is cleared by writing a 1 + * to it. See for additional details. RXEDGIF description The active edge is + * detected only in two wire mode and on receiving data coming from the RxD pin. + * + * Values: + * - 0 - No active edge on the receive pin has occurred. + * - 1 - An active edge on the receive pin has occurred. + */ +//@{ +#define BP_UART_S2_RXEDGIF (6U) //!< Bit position for UART_S2_RXEDGIF. +#define BM_UART_S2_RXEDGIF (0x40U) //!< Bit mask for UART_S2_RXEDGIF. +#define BS_UART_S2_RXEDGIF (1U) //!< Bit field size in bits for UART_S2_RXEDGIF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S2_RXEDGIF field. +#define BR_UART_S2_RXEDGIF(x) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_RXEDGIF)) +#endif + +//! @brief Format value for bitfield UART_S2_RXEDGIF. +#define BF_UART_S2_RXEDGIF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_S2_RXEDGIF), uint8_t) & BM_UART_S2_RXEDGIF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXEDGIF field to a new value. +#define BW_UART_S2_RXEDGIF(x, v) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_RXEDGIF) = (v)) +#endif +//@} + +/*! + * @name Register UART_S2, field LBKDIF[7] (W1C) + * + * LBKDIF is set when LBKDE is set and a LIN break character is detected on the + * receiver input. The LIN break characters are 11 consecutive logic 0s if C1[M] + * = 0 or 12 consecutive logic 0s if C1[M] = 1. LBKDIF is set after receiving the + * last LIN break character. LBKDIF is cleared by writing a 1 to it. + * + * Values: + * - 0 - No LIN break character detected. + * - 1 - LIN break character detected. + */ +//@{ +#define BP_UART_S2_LBKDIF (7U) //!< Bit position for UART_S2_LBKDIF. +#define BM_UART_S2_LBKDIF (0x80U) //!< Bit mask for UART_S2_LBKDIF. +#define BS_UART_S2_LBKDIF (1U) //!< Bit field size in bits for UART_S2_LBKDIF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_S2_LBKDIF field. +#define BR_UART_S2_LBKDIF(x) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_LBKDIF)) +#endif + +//! @brief Format value for bitfield UART_S2_LBKDIF. +#define BF_UART_S2_LBKDIF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_S2_LBKDIF), uint8_t) & BM_UART_S2_LBKDIF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LBKDIF field to a new value. +#define BW_UART_S2_LBKDIF(x, v) (BITBAND_ACCESS8(HW_UART_S2_ADDR(x), BP_UART_S2_LBKDIF) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_C3 - UART Control Register 3 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_C3 - UART Control Register 3 (RW) + * + * Reset value: 0x00U + * + * Writing R8 does not have any effect. TXDIR and TXINV can be changed only + * between transmit and receive packets. + */ +typedef union _hw_uart_c3 +{ + uint8_t U; + struct _hw_uart_c3_bitfields + { + uint8_t PEIE : 1; //!< [0] Parity Error Interrupt Enable + uint8_t FEIE : 1; //!< [1] Framing Error Interrupt Enable + uint8_t NEIE : 1; //!< [2] Noise Error Interrupt Enable + uint8_t ORIE : 1; //!< [3] Overrun Error Interrupt Enable + uint8_t TXINV : 1; //!< [4] Transmit Data Inversion. + uint8_t TXDIR : 1; //!< [5] Transmitter Pin Data Direction in + //! Single-Wire mode + uint8_t T8 : 1; //!< [6] Transmit Bit 8 + uint8_t R8 : 1; //!< [7] Received Bit 8 + } B; +} hw_uart_c3_t; +#endif + +/*! + * @name Constants and macros for entire UART_C3 register + */ +//@{ +#define HW_UART_C3_ADDR(x) (REGS_UART_BASE(x) + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_C3(x) (*(__IO hw_uart_c3_t *) HW_UART_C3_ADDR(x)) +#define HW_UART_C3_RD(x) (HW_UART_C3(x).U) +#define HW_UART_C3_WR(x, v) (HW_UART_C3(x).U = (v)) +#define HW_UART_C3_SET(x, v) (HW_UART_C3_WR(x, HW_UART_C3_RD(x) | (v))) +#define HW_UART_C3_CLR(x, v) (HW_UART_C3_WR(x, HW_UART_C3_RD(x) & ~(v))) +#define HW_UART_C3_TOG(x, v) (HW_UART_C3_WR(x, HW_UART_C3_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_C3 bitfields + */ + +/*! + * @name Register UART_C3, field PEIE[0] (RW) + * + * Enables the parity error flag, S1[PF], to generate interrupt requests. + * + * Values: + * - 0 - PF interrupt requests are disabled. + * - 1 - PF interrupt requests are enabled. + */ +//@{ +#define BP_UART_C3_PEIE (0U) //!< Bit position for UART_C3_PEIE. +#define BM_UART_C3_PEIE (0x01U) //!< Bit mask for UART_C3_PEIE. +#define BS_UART_C3_PEIE (1U) //!< Bit field size in bits for UART_C3_PEIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C3_PEIE field. +#define BR_UART_C3_PEIE(x) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_PEIE)) +#endif + +//! @brief Format value for bitfield UART_C3_PEIE. +#define BF_UART_C3_PEIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C3_PEIE), uint8_t) & BM_UART_C3_PEIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PEIE field to a new value. +#define BW_UART_C3_PEIE(x, v) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_PEIE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C3, field FEIE[1] (RW) + * + * Enables the framing error flag, S1[FE], to generate interrupt requests. + * + * Values: + * - 0 - FE interrupt requests are disabled. + * - 1 - FE interrupt requests are enabled. + */ +//@{ +#define BP_UART_C3_FEIE (1U) //!< Bit position for UART_C3_FEIE. +#define BM_UART_C3_FEIE (0x02U) //!< Bit mask for UART_C3_FEIE. +#define BS_UART_C3_FEIE (1U) //!< Bit field size in bits for UART_C3_FEIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C3_FEIE field. +#define BR_UART_C3_FEIE(x) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_FEIE)) +#endif + +//! @brief Format value for bitfield UART_C3_FEIE. +#define BF_UART_C3_FEIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C3_FEIE), uint8_t) & BM_UART_C3_FEIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FEIE field to a new value. +#define BW_UART_C3_FEIE(x, v) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_FEIE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C3, field NEIE[2] (RW) + * + * Enables the noise flag, S1[NF], to generate interrupt requests. + * + * Values: + * - 0 - NF interrupt requests are disabled. + * - 1 - NF interrupt requests are enabled. + */ +//@{ +#define BP_UART_C3_NEIE (2U) //!< Bit position for UART_C3_NEIE. +#define BM_UART_C3_NEIE (0x04U) //!< Bit mask for UART_C3_NEIE. +#define BS_UART_C3_NEIE (1U) //!< Bit field size in bits for UART_C3_NEIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C3_NEIE field. +#define BR_UART_C3_NEIE(x) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_NEIE)) +#endif + +//! @brief Format value for bitfield UART_C3_NEIE. +#define BF_UART_C3_NEIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C3_NEIE), uint8_t) & BM_UART_C3_NEIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the NEIE field to a new value. +#define BW_UART_C3_NEIE(x, v) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_NEIE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C3, field ORIE[3] (RW) + * + * Enables the overrun error flag, S1[OR], to generate interrupt requests. + * + * Values: + * - 0 - OR interrupts are disabled. + * - 1 - OR interrupt requests are enabled. + */ +//@{ +#define BP_UART_C3_ORIE (3U) //!< Bit position for UART_C3_ORIE. +#define BM_UART_C3_ORIE (0x08U) //!< Bit mask for UART_C3_ORIE. +#define BS_UART_C3_ORIE (1U) //!< Bit field size in bits for UART_C3_ORIE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C3_ORIE field. +#define BR_UART_C3_ORIE(x) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_ORIE)) +#endif + +//! @brief Format value for bitfield UART_C3_ORIE. +#define BF_UART_C3_ORIE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C3_ORIE), uint8_t) & BM_UART_C3_ORIE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ORIE field to a new value. +#define BW_UART_C3_ORIE(x, v) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_ORIE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C3, field TXINV[4] (RW) + * + * Setting this field reverses the polarity of the transmitted data output. In + * NRZ format, a one is represented by a mark and a zero is represented by a space + * for normal polarity, and the opposite for inverted polarity. In IrDA format, + * a zero is represented by short high pulse in the middle of a bit time + * remaining idle low for a one for normal polarity, and a zero is represented by short + * low pulse in the middle of a bit time remaining idle high for a one for + * inverted polarity. This field is automatically set when C7816[INIT] and + * C7816[ISO7816E] are enabled and an initial character is detected in T = 0 protocol mode. + * Setting TXINV inverts all transmitted values, including idle, break, start, and + * stop bits. In loop mode, if TXINV is set, the receiver gets the transmit + * inversion bit when RXINV is disabled. When C7816[ISO7816E] is set/enabled then only + * the transmitted data bits and parity bit are inverted. + * + * Values: + * - 0 - Transmit data is not inverted. + * - 1 - Transmit data is inverted. + */ +//@{ +#define BP_UART_C3_TXINV (4U) //!< Bit position for UART_C3_TXINV. +#define BM_UART_C3_TXINV (0x10U) //!< Bit mask for UART_C3_TXINV. +#define BS_UART_C3_TXINV (1U) //!< Bit field size in bits for UART_C3_TXINV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C3_TXINV field. +#define BR_UART_C3_TXINV(x) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_TXINV)) +#endif + +//! @brief Format value for bitfield UART_C3_TXINV. +#define BF_UART_C3_TXINV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C3_TXINV), uint8_t) & BM_UART_C3_TXINV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXINV field to a new value. +#define BW_UART_C3_TXINV(x, v) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_TXINV) = (v)) +#endif +//@} + +/*! + * @name Register UART_C3, field TXDIR[5] (RW) + * + * Determines whether the TXD pin is used as an input or output in the + * single-wire mode of operation. This field is relevant only to the single wire mode. + * When C7816[ISO7816E] is set/enabled and C7816[TTYPE] = 1, this field is + * automatically cleared after the requested block is transmitted. This condition is + * detected when TL7816[TLEN] = 0 and 4 additional characters are transmitted. + * Additionally, if C7816[ISO7816E] is set/enabled and C7816[TTYPE] = 0 and a NACK is + * being transmitted, the hardware automatically overrides this field as needed. In + * this situation, TXDIR does not reflect the temporary state associated with + * the NACK. + * + * Values: + * - 0 - TXD pin is an input in single wire mode. + * - 1 - TXD pin is an output in single wire mode. + */ +//@{ +#define BP_UART_C3_TXDIR (5U) //!< Bit position for UART_C3_TXDIR. +#define BM_UART_C3_TXDIR (0x20U) //!< Bit mask for UART_C3_TXDIR. +#define BS_UART_C3_TXDIR (1U) //!< Bit field size in bits for UART_C3_TXDIR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C3_TXDIR field. +#define BR_UART_C3_TXDIR(x) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_TXDIR)) +#endif + +//! @brief Format value for bitfield UART_C3_TXDIR. +#define BF_UART_C3_TXDIR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C3_TXDIR), uint8_t) & BM_UART_C3_TXDIR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXDIR field to a new value. +#define BW_UART_C3_TXDIR(x, v) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_TXDIR) = (v)) +#endif +//@} + +/*! + * @name Register UART_C3, field T8[6] (RW) + * + * T8 is the ninth data bit transmitted when the UART is configured for 9-bit + * data format, that is, if C1[M] = 1 or C4[M10] = 1. If the value of T8 is the + * same as in the previous transmission, T8 does not have to be rewritten. The same + * value is transmitted until T8 is rewritten. To correctly transmit the 9th bit, + * write UARTx_C3[T8] to the desired value, then write the UARTx_D register with + * the remaining data. + */ +//@{ +#define BP_UART_C3_T8 (6U) //!< Bit position for UART_C3_T8. +#define BM_UART_C3_T8 (0x40U) //!< Bit mask for UART_C3_T8. +#define BS_UART_C3_T8 (1U) //!< Bit field size in bits for UART_C3_T8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C3_T8 field. +#define BR_UART_C3_T8(x) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_T8)) +#endif + +//! @brief Format value for bitfield UART_C3_T8. +#define BF_UART_C3_T8(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C3_T8), uint8_t) & BM_UART_C3_T8) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the T8 field to a new value. +#define BW_UART_C3_T8(x, v) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_T8) = (v)) +#endif +//@} + +/*! + * @name Register UART_C3, field R8[7] (RO) + * + * R8 is the ninth data bit received when the UART is configured for 9-bit data + * format, that is, if C1[M] = 1 or C4[M10] = 1. The R8 value corresponds to the + * current data value in the UARTx_D register. To read the 9th bit, read the + * value of UARTx_C3[R8], then read the UARTx_D register. + */ +//@{ +#define BP_UART_C3_R8 (7U) //!< Bit position for UART_C3_R8. +#define BM_UART_C3_R8 (0x80U) //!< Bit mask for UART_C3_R8. +#define BS_UART_C3_R8 (1U) //!< Bit field size in bits for UART_C3_R8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C3_R8 field. +#define BR_UART_C3_R8(x) (BITBAND_ACCESS8(HW_UART_C3_ADDR(x), BP_UART_C3_R8)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_D - UART Data Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_D - UART Data Register (RW) + * + * Reset value: 0x00U + * + * This register is actually two separate registers. Reads return the contents + * of the read-only receive data register and writes go to the write-only transmit + * data register. In 8-bit or 9-bit data format, only UART data register (D) + * needs to be accessed to clear the S1[RDRF] bit (assuming receiver buffer level is + * less than RWFIFO[RXWATER]). The C3 register needs to be read, prior to the D + * register, only if the ninth bit of data needs to be captured. Similarly, the + * ED register needs to be read, prior to the D register, only if the additional + * flag data for the dataword needs to be captured. In the normal 8-bit mode (M + * bit cleared) if the parity is enabled, you get seven data bits and one parity + * bit. That one parity bit is loaded into the D register. So, for the data bits, + * mask off the parity bit from the value you read out of this register. When + * transmitting in 9-bit data format and using 8-bit write instructions, write first + * to transmit bit 8 in UART control register 3 (C3[T8]), then D. A write to + * C3[T8] stores the data in a temporary register. If D register is written first, + * and then the new data on data bus is stored in D, the temporary value written by + * the last write to C3[T8] gets stored in the C3[T8] register. + */ +typedef union _hw_uart_d +{ + uint8_t U; + struct _hw_uart_d_bitfields + { + uint8_t RT : 8; //!< [7:0] + } B; +} hw_uart_d_t; +#endif + +/*! + * @name Constants and macros for entire UART_D register + */ +//@{ +#define HW_UART_D_ADDR(x) (REGS_UART_BASE(x) + 0x7U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_D(x) (*(__IO hw_uart_d_t *) HW_UART_D_ADDR(x)) +#define HW_UART_D_RD(x) (HW_UART_D(x).U) +#define HW_UART_D_WR(x, v) (HW_UART_D(x).U = (v)) +#define HW_UART_D_SET(x, v) (HW_UART_D_WR(x, HW_UART_D_RD(x) | (v))) +#define HW_UART_D_CLR(x, v) (HW_UART_D_WR(x, HW_UART_D_RD(x) & ~(v))) +#define HW_UART_D_TOG(x, v) (HW_UART_D_WR(x, HW_UART_D_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_D bitfields + */ + +/*! + * @name Register UART_D, field RT[7:0] (RW) + * + * Reads return the contents of the read-only receive data register and writes + * go to the write-only transmit data register. + */ +//@{ +#define BP_UART_D_RT (0U) //!< Bit position for UART_D_RT. +#define BM_UART_D_RT (0xFFU) //!< Bit mask for UART_D_RT. +#define BS_UART_D_RT (8U) //!< Bit field size in bits for UART_D_RT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_D_RT field. +#define BR_UART_D_RT(x) (HW_UART_D(x).U) +#endif + +//! @brief Format value for bitfield UART_D_RT. +#define BF_UART_D_RT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_D_RT), uint8_t) & BM_UART_D_RT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RT field to a new value. +#define BW_UART_D_RT(x, v) (HW_UART_D_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_MA1 - UART Match Address Registers 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_MA1 - UART Match Address Registers 1 (RW) + * + * Reset value: 0x00U + * + * The MA1 and MA2 registers are compared to input data addresses when the most + * significant bit is set and the associated C4[MAEN] field is set. If a match + * occurs, the following data is transferred to the data register. If a match + * fails, the following data is discarded. These registers can be read and written at + * anytime. + */ +typedef union _hw_uart_ma1 +{ + uint8_t U; + struct _hw_uart_ma1_bitfields + { + uint8_t MA : 8; //!< [7:0] Match Address + } B; +} hw_uart_ma1_t; +#endif + +/*! + * @name Constants and macros for entire UART_MA1 register + */ +//@{ +#define HW_UART_MA1_ADDR(x) (REGS_UART_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_MA1(x) (*(__IO hw_uart_ma1_t *) HW_UART_MA1_ADDR(x)) +#define HW_UART_MA1_RD(x) (HW_UART_MA1(x).U) +#define HW_UART_MA1_WR(x, v) (HW_UART_MA1(x).U = (v)) +#define HW_UART_MA1_SET(x, v) (HW_UART_MA1_WR(x, HW_UART_MA1_RD(x) | (v))) +#define HW_UART_MA1_CLR(x, v) (HW_UART_MA1_WR(x, HW_UART_MA1_RD(x) & ~(v))) +#define HW_UART_MA1_TOG(x, v) (HW_UART_MA1_WR(x, HW_UART_MA1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_MA1 bitfields + */ + +/*! + * @name Register UART_MA1, field MA[7:0] (RW) + */ +//@{ +#define BP_UART_MA1_MA (0U) //!< Bit position for UART_MA1_MA. +#define BM_UART_MA1_MA (0xFFU) //!< Bit mask for UART_MA1_MA. +#define BS_UART_MA1_MA (8U) //!< Bit field size in bits for UART_MA1_MA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_MA1_MA field. +#define BR_UART_MA1_MA(x) (HW_UART_MA1(x).U) +#endif + +//! @brief Format value for bitfield UART_MA1_MA. +#define BF_UART_MA1_MA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_MA1_MA), uint8_t) & BM_UART_MA1_MA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MA field to a new value. +#define BW_UART_MA1_MA(x, v) (HW_UART_MA1_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_MA2 - UART Match Address Registers 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_MA2 - UART Match Address Registers 2 (RW) + * + * Reset value: 0x00U + * + * These registers can be read and written at anytime. The MA1 and MA2 registers + * are compared to input data addresses when the most significant bit is set and + * the associated C4[MAEN] field is set. If a match occurs, the following data + * is transferred to the data register. If a match fails, the following data is + * discarded. + */ +typedef union _hw_uart_ma2 +{ + uint8_t U; + struct _hw_uart_ma2_bitfields + { + uint8_t MA : 8; //!< [7:0] Match Address + } B; +} hw_uart_ma2_t; +#endif + +/*! + * @name Constants and macros for entire UART_MA2 register + */ +//@{ +#define HW_UART_MA2_ADDR(x) (REGS_UART_BASE(x) + 0x9U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_MA2(x) (*(__IO hw_uart_ma2_t *) HW_UART_MA2_ADDR(x)) +#define HW_UART_MA2_RD(x) (HW_UART_MA2(x).U) +#define HW_UART_MA2_WR(x, v) (HW_UART_MA2(x).U = (v)) +#define HW_UART_MA2_SET(x, v) (HW_UART_MA2_WR(x, HW_UART_MA2_RD(x) | (v))) +#define HW_UART_MA2_CLR(x, v) (HW_UART_MA2_WR(x, HW_UART_MA2_RD(x) & ~(v))) +#define HW_UART_MA2_TOG(x, v) (HW_UART_MA2_WR(x, HW_UART_MA2_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_MA2 bitfields + */ + +/*! + * @name Register UART_MA2, field MA[7:0] (RW) + */ +//@{ +#define BP_UART_MA2_MA (0U) //!< Bit position for UART_MA2_MA. +#define BM_UART_MA2_MA (0xFFU) //!< Bit mask for UART_MA2_MA. +#define BS_UART_MA2_MA (8U) //!< Bit field size in bits for UART_MA2_MA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_MA2_MA field. +#define BR_UART_MA2_MA(x) (HW_UART_MA2(x).U) +#endif + +//! @brief Format value for bitfield UART_MA2_MA. +#define BF_UART_MA2_MA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_MA2_MA), uint8_t) & BM_UART_MA2_MA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MA field to a new value. +#define BW_UART_MA2_MA(x, v) (HW_UART_MA2_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_C4 - UART Control Register 4 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_C4 - UART Control Register 4 (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_uart_c4 +{ + uint8_t U; + struct _hw_uart_c4_bitfields + { + uint8_t BRFA : 5; //!< [4:0] Baud Rate Fine Adjust + uint8_t M10 : 1; //!< [5] 10-bit Mode select + uint8_t MAEN2 : 1; //!< [6] Match Address Mode Enable 2 + uint8_t MAEN1 : 1; //!< [7] Match Address Mode Enable 1 + } B; +} hw_uart_c4_t; +#endif + +/*! + * @name Constants and macros for entire UART_C4 register + */ +//@{ +#define HW_UART_C4_ADDR(x) (REGS_UART_BASE(x) + 0xAU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_C4(x) (*(__IO hw_uart_c4_t *) HW_UART_C4_ADDR(x)) +#define HW_UART_C4_RD(x) (HW_UART_C4(x).U) +#define HW_UART_C4_WR(x, v) (HW_UART_C4(x).U = (v)) +#define HW_UART_C4_SET(x, v) (HW_UART_C4_WR(x, HW_UART_C4_RD(x) | (v))) +#define HW_UART_C4_CLR(x, v) (HW_UART_C4_WR(x, HW_UART_C4_RD(x) & ~(v))) +#define HW_UART_C4_TOG(x, v) (HW_UART_C4_WR(x, HW_UART_C4_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_C4 bitfields + */ + +/*! + * @name Register UART_C4, field BRFA[4:0] (RW) + * + * This bit field is used to add more timing resolution to the average baud + * frequency, in increments of 1/32. See Baud rate generation for more information. + */ +//@{ +#define BP_UART_C4_BRFA (0U) //!< Bit position for UART_C4_BRFA. +#define BM_UART_C4_BRFA (0x1FU) //!< Bit mask for UART_C4_BRFA. +#define BS_UART_C4_BRFA (5U) //!< Bit field size in bits for UART_C4_BRFA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C4_BRFA field. +#define BR_UART_C4_BRFA(x) (HW_UART_C4(x).B.BRFA) +#endif + +//! @brief Format value for bitfield UART_C4_BRFA. +#define BF_UART_C4_BRFA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C4_BRFA), uint8_t) & BM_UART_C4_BRFA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BRFA field to a new value. +#define BW_UART_C4_BRFA(x, v) (HW_UART_C4_WR(x, (HW_UART_C4_RD(x) & ~BM_UART_C4_BRFA) | BF_UART_C4_BRFA(v))) +#endif +//@} + +/*! + * @name Register UART_C4, field M10[5] (RW) + * + * Causes a tenth, non-memory mapped bit to be part of the serial transmission. + * This tenth bit is generated and interpreted as a parity bit. The M10 field + * does not affect the LIN send or detect break behavior. If M10 is set, then both + * C1[M] and C1[PE] must also be set. This field must be cleared when + * C7816[ISO7816E] is set/enabled. See Data format (non ISO-7816) for more information. + * + * Values: + * - 0 - The parity bit is the ninth bit in the serial transmission. + * - 1 - The parity bit is the tenth bit in the serial transmission. + */ +//@{ +#define BP_UART_C4_M10 (5U) //!< Bit position for UART_C4_M10. +#define BM_UART_C4_M10 (0x20U) //!< Bit mask for UART_C4_M10. +#define BS_UART_C4_M10 (1U) //!< Bit field size in bits for UART_C4_M10. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C4_M10 field. +#define BR_UART_C4_M10(x) (BITBAND_ACCESS8(HW_UART_C4_ADDR(x), BP_UART_C4_M10)) +#endif + +//! @brief Format value for bitfield UART_C4_M10. +#define BF_UART_C4_M10(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C4_M10), uint8_t) & BM_UART_C4_M10) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the M10 field to a new value. +#define BW_UART_C4_M10(x, v) (BITBAND_ACCESS8(HW_UART_C4_ADDR(x), BP_UART_C4_M10) = (v)) +#endif +//@} + +/*! + * @name Register UART_C4, field MAEN2[6] (RW) + * + * See Match address operation for more information. + * + * Values: + * - 0 - All data received is transferred to the data buffer if MAEN1 is cleared. + * - 1 - All data received with the most significant bit cleared, is discarded. + * All data received with the most significant bit set, is compared with + * contents of MA2 register. If no match occurs, the data is discarded. If a + * match occurs, data is transferred to the data buffer. This field must be + * cleared when C7816[ISO7816E] is set/enabled. + */ +//@{ +#define BP_UART_C4_MAEN2 (6U) //!< Bit position for UART_C4_MAEN2. +#define BM_UART_C4_MAEN2 (0x40U) //!< Bit mask for UART_C4_MAEN2. +#define BS_UART_C4_MAEN2 (1U) //!< Bit field size in bits for UART_C4_MAEN2. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C4_MAEN2 field. +#define BR_UART_C4_MAEN2(x) (BITBAND_ACCESS8(HW_UART_C4_ADDR(x), BP_UART_C4_MAEN2)) +#endif + +//! @brief Format value for bitfield UART_C4_MAEN2. +#define BF_UART_C4_MAEN2(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C4_MAEN2), uint8_t) & BM_UART_C4_MAEN2) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MAEN2 field to a new value. +#define BW_UART_C4_MAEN2(x, v) (BITBAND_ACCESS8(HW_UART_C4_ADDR(x), BP_UART_C4_MAEN2) = (v)) +#endif +//@} + +/*! + * @name Register UART_C4, field MAEN1[7] (RW) + * + * See Match address operation for more information. + * + * Values: + * - 0 - All data received is transferred to the data buffer if MAEN2 is cleared. + * - 1 - All data received with the most significant bit cleared, is discarded. + * All data received with the most significant bit set, is compared with + * contents of MA1 register. If no match occurs, the data is discarded. If match + * occurs, data is transferred to the data buffer. This field must be cleared + * when C7816[ISO7816E] is set/enabled. + */ +//@{ +#define BP_UART_C4_MAEN1 (7U) //!< Bit position for UART_C4_MAEN1. +#define BM_UART_C4_MAEN1 (0x80U) //!< Bit mask for UART_C4_MAEN1. +#define BS_UART_C4_MAEN1 (1U) //!< Bit field size in bits for UART_C4_MAEN1. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C4_MAEN1 field. +#define BR_UART_C4_MAEN1(x) (BITBAND_ACCESS8(HW_UART_C4_ADDR(x), BP_UART_C4_MAEN1)) +#endif + +//! @brief Format value for bitfield UART_C4_MAEN1. +#define BF_UART_C4_MAEN1(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C4_MAEN1), uint8_t) & BM_UART_C4_MAEN1) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MAEN1 field to a new value. +#define BW_UART_C4_MAEN1(x, v) (BITBAND_ACCESS8(HW_UART_C4_ADDR(x), BP_UART_C4_MAEN1) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_C5 - UART Control Register 5 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_C5 - UART Control Register 5 (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_uart_c5 +{ + uint8_t U; + struct _hw_uart_c5_bitfields + { + uint8_t RESERVED0 : 3; //!< [2:0] + uint8_t LBKDDMAS : 1; //!< [3] LIN Break Detect DMA Select Bit + uint8_t ILDMAS : 1; //!< [4] Idle Line DMA Select + uint8_t RDMAS : 1; //!< [5] Receiver Full DMA Select + uint8_t TCDMAS : 1; //!< [6] Transmission Complete DMA Select + uint8_t TDMAS : 1; //!< [7] Transmitter DMA Select + } B; +} hw_uart_c5_t; +#endif + +/*! + * @name Constants and macros for entire UART_C5 register + */ +//@{ +#define HW_UART_C5_ADDR(x) (REGS_UART_BASE(x) + 0xBU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_C5(x) (*(__IO hw_uart_c5_t *) HW_UART_C5_ADDR(x)) +#define HW_UART_C5_RD(x) (HW_UART_C5(x).U) +#define HW_UART_C5_WR(x, v) (HW_UART_C5(x).U = (v)) +#define HW_UART_C5_SET(x, v) (HW_UART_C5_WR(x, HW_UART_C5_RD(x) | (v))) +#define HW_UART_C5_CLR(x, v) (HW_UART_C5_WR(x, HW_UART_C5_RD(x) & ~(v))) +#define HW_UART_C5_TOG(x, v) (HW_UART_C5_WR(x, HW_UART_C5_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_C5 bitfields + */ + +/*! + * @name Register UART_C5, field LBKDDMAS[3] (RW) + * + * Configures the LIN break detect flag, S2[LBKDIF], to generate interrupt or + * DMA requests if BDH[LBKDIE] is set. If BDH[LBKDIE] is cleared, and S2[LBKDIF] is + * set, the LBKDIF DMA and LBKDIF interrupt signals are not asserted, regardless + * of the state of LBKDDMAS. + * + * Values: + * - 0 - If BDH[LBKDIE] and S2[LBKDIF] are set, the LBKDIF interrupt signal is + * asserted to request an interrupt service. + * - 1 - If BDH[LBKDIE] and S2[LBKDIF] are set, the LBKDIF DMA request signal is + * asserted to request a DMA transfer. + */ +//@{ +#define BP_UART_C5_LBKDDMAS (3U) //!< Bit position for UART_C5_LBKDDMAS. +#define BM_UART_C5_LBKDDMAS (0x08U) //!< Bit mask for UART_C5_LBKDDMAS. +#define BS_UART_C5_LBKDDMAS (1U) //!< Bit field size in bits for UART_C5_LBKDDMAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C5_LBKDDMAS field. +#define BR_UART_C5_LBKDDMAS(x) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_LBKDDMAS)) +#endif + +//! @brief Format value for bitfield UART_C5_LBKDDMAS. +#define BF_UART_C5_LBKDDMAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C5_LBKDDMAS), uint8_t) & BM_UART_C5_LBKDDMAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LBKDDMAS field to a new value. +#define BW_UART_C5_LBKDDMAS(x, v) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_LBKDDMAS) = (v)) +#endif +//@} + +/*! + * @name Register UART_C5, field ILDMAS[4] (RW) + * + * Configures the idle line flag, S1[IDLE], to generate interrupt or DMA + * requests if C2[ILIE] is set. If C2[ILIE] is cleared, and S1[IDLE] is set, the IDLE + * DMA and IDLE interrupt request signals are not asserted, regardless of the state + * of ILDMAS. + * + * Values: + * - 0 - If C2[ILIE] and S1[IDLE] are set, the IDLE interrupt request signal is + * asserted to request an interrupt service. + * - 1 - If C2[ILIE] and S1[IDLE] are set, the IDLE DMA request signal is + * asserted to request a DMA transfer. + */ +//@{ +#define BP_UART_C5_ILDMAS (4U) //!< Bit position for UART_C5_ILDMAS. +#define BM_UART_C5_ILDMAS (0x10U) //!< Bit mask for UART_C5_ILDMAS. +#define BS_UART_C5_ILDMAS (1U) //!< Bit field size in bits for UART_C5_ILDMAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C5_ILDMAS field. +#define BR_UART_C5_ILDMAS(x) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_ILDMAS)) +#endif + +//! @brief Format value for bitfield UART_C5_ILDMAS. +#define BF_UART_C5_ILDMAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C5_ILDMAS), uint8_t) & BM_UART_C5_ILDMAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ILDMAS field to a new value. +#define BW_UART_C5_ILDMAS(x, v) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_ILDMAS) = (v)) +#endif +//@} + +/*! + * @name Register UART_C5, field RDMAS[5] (RW) + * + * Configures the receiver data register full flag, S1[RDRF], to generate + * interrupt or DMA requests if C2[RIE] is set. If C2[RIE] is cleared, and S1[RDRF] is + * set, the RDRF DMA and RDFR interrupt request signals are not asserted, + * regardless of the state of RDMAS. + * + * Values: + * - 0 - If C2[RIE] and S1[RDRF] are set, the RDFR interrupt request signal is + * asserted to request an interrupt service. + * - 1 - If C2[RIE] and S1[RDRF] are set, the RDRF DMA request signal is + * asserted to request a DMA transfer. + */ +//@{ +#define BP_UART_C5_RDMAS (5U) //!< Bit position for UART_C5_RDMAS. +#define BM_UART_C5_RDMAS (0x20U) //!< Bit mask for UART_C5_RDMAS. +#define BS_UART_C5_RDMAS (1U) //!< Bit field size in bits for UART_C5_RDMAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C5_RDMAS field. +#define BR_UART_C5_RDMAS(x) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_RDMAS)) +#endif + +//! @brief Format value for bitfield UART_C5_RDMAS. +#define BF_UART_C5_RDMAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C5_RDMAS), uint8_t) & BM_UART_C5_RDMAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RDMAS field to a new value. +#define BW_UART_C5_RDMAS(x, v) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_RDMAS) = (v)) +#endif +//@} + +/*! + * @name Register UART_C5, field TCDMAS[6] (RW) + * + * Configures the transmission complete flag, S1[TC], to generate interrupt or + * DMA requests if C2[TCIE] is set. If C2[TCIE] is cleared, the TC DMA and TC + * interrupt request signals are not asserted when the S1[TC] flag is set, regardless + * of the state of TCDMAS. If C2[TCIE] and TCDMAS are both set, then C2[TIE] + * must be cleared, and D must not be written unless a DMA request is being serviced. + * + * Values: + * - 0 - If C2[TCIE] is set and the S1[TC] flag is set, the TC interrupt request + * signal is asserted to request an interrupt service. + * - 1 - If C2[TCIE] is set and the S1[TC] flag is set, the TC DMA request + * signal is asserted to request a DMA transfer. + */ +//@{ +#define BP_UART_C5_TCDMAS (6U) //!< Bit position for UART_C5_TCDMAS. +#define BM_UART_C5_TCDMAS (0x40U) //!< Bit mask for UART_C5_TCDMAS. +#define BS_UART_C5_TCDMAS (1U) //!< Bit field size in bits for UART_C5_TCDMAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C5_TCDMAS field. +#define BR_UART_C5_TCDMAS(x) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_TCDMAS)) +#endif + +//! @brief Format value for bitfield UART_C5_TCDMAS. +#define BF_UART_C5_TCDMAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C5_TCDMAS), uint8_t) & BM_UART_C5_TCDMAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TCDMAS field to a new value. +#define BW_UART_C5_TCDMAS(x, v) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_TCDMAS) = (v)) +#endif +//@} + +/*! + * @name Register UART_C5, field TDMAS[7] (RW) + * + * Configures the transmit data register empty flag, S1[TDRE], to generate + * interrupt or DMA requests if C2[TIE] is set. If C2[TIE] is cleared, TDRE DMA and + * TDRE interrupt request signals are not asserted when the TDRE flag is set, + * regardless of the state of TDMAS. If C2[TIE] and TDMAS are both set, then C2[TCIE] + * must be cleared, and D must not be written unless a DMA request is being + * serviced. + * + * Values: + * - 0 - If C2[TIE] is set and the S1[TDRE] flag is set, the TDRE interrupt + * request signal is asserted to request interrupt service. + * - 1 - If C2[TIE] is set and the S1[TDRE] flag is set, the TDRE DMA request + * signal is asserted to request a DMA transfer. + */ +//@{ +#define BP_UART_C5_TDMAS (7U) //!< Bit position for UART_C5_TDMAS. +#define BM_UART_C5_TDMAS (0x80U) //!< Bit mask for UART_C5_TDMAS. +#define BS_UART_C5_TDMAS (1U) //!< Bit field size in bits for UART_C5_TDMAS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C5_TDMAS field. +#define BR_UART_C5_TDMAS(x) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_TDMAS)) +#endif + +//! @brief Format value for bitfield UART_C5_TDMAS. +#define BF_UART_C5_TDMAS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C5_TDMAS), uint8_t) & BM_UART_C5_TDMAS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TDMAS field to a new value. +#define BW_UART_C5_TDMAS(x, v) (BITBAND_ACCESS8(HW_UART_C5_ADDR(x), BP_UART_C5_TDMAS) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_ED - UART Extended Data Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_ED - UART Extended Data Register (RO) + * + * Reset value: 0x00U + * + * This register contains additional information flags that are stored with a + * received dataword. This register may be read at any time but contains valid data + * only if there is a dataword in the receive FIFO. The data contained in this + * register represents additional information regarding the conditions on which a + * dataword was received. The importance of this data varies with the + * application, and in some cases maybe completely optional. These fields automatically + * update to reflect the conditions of the next dataword whenever D is read. If + * S1[NF] and S1[PF] have not been set since the last time the receive buffer was + * empty, the NOISY and PARITYE fields will be zero. + */ +typedef union _hw_uart_ed +{ + uint8_t U; + struct _hw_uart_ed_bitfields + { + uint8_t RESERVED0 : 6; //!< [5:0] + uint8_t PARITYE : 1; //!< [6] + uint8_t NOISY : 1; //!< [7] + } B; +} hw_uart_ed_t; +#endif + +/*! + * @name Constants and macros for entire UART_ED register + */ +//@{ +#define HW_UART_ED_ADDR(x) (REGS_UART_BASE(x) + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_ED(x) (*(__I hw_uart_ed_t *) HW_UART_ED_ADDR(x)) +#define HW_UART_ED_RD(x) (HW_UART_ED(x).U) +#endif +//@} + +/* + * Constants & macros for individual UART_ED bitfields + */ + +/*! + * @name Register UART_ED, field PARITYE[6] (RO) + * + * The current received dataword contained in D and C3[R8] was received with a + * parity error. + * + * Values: + * - 0 - The dataword was received without a parity error. + * - 1 - The dataword was received with a parity error. + */ +//@{ +#define BP_UART_ED_PARITYE (6U) //!< Bit position for UART_ED_PARITYE. +#define BM_UART_ED_PARITYE (0x40U) //!< Bit mask for UART_ED_PARITYE. +#define BS_UART_ED_PARITYE (1U) //!< Bit field size in bits for UART_ED_PARITYE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_ED_PARITYE field. +#define BR_UART_ED_PARITYE(x) (BITBAND_ACCESS8(HW_UART_ED_ADDR(x), BP_UART_ED_PARITYE)) +#endif +//@} + +/*! + * @name Register UART_ED, field NOISY[7] (RO) + * + * The current received dataword contained in D and C3[R8] was received with + * noise. + * + * Values: + * - 0 - The dataword was received without noise. + * - 1 - The data was received with noise. + */ +//@{ +#define BP_UART_ED_NOISY (7U) //!< Bit position for UART_ED_NOISY. +#define BM_UART_ED_NOISY (0x80U) //!< Bit mask for UART_ED_NOISY. +#define BS_UART_ED_NOISY (1U) //!< Bit field size in bits for UART_ED_NOISY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_ED_NOISY field. +#define BR_UART_ED_NOISY(x) (BITBAND_ACCESS8(HW_UART_ED_ADDR(x), BP_UART_ED_NOISY)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_MODEM - UART Modem Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_MODEM - UART Modem Register (RW) + * + * Reset value: 0x00U + * + * The MODEM register controls options for setting the modem configuration. + * RXRTSE, TXRTSPOL, TXRTSE, and TXCTSE must all be cleared when C7816[ISO7816EN] is + * enabled. This will cause the RTS to deassert during ISO-7816 wait times. The + * ISO-7816 protocol does not use the RTS and CTS signals. + */ +typedef union _hw_uart_modem +{ + uint8_t U; + struct _hw_uart_modem_bitfields + { + uint8_t TXCTSE : 1; //!< [0] Transmitter clear-to-send enable + uint8_t TXRTSE : 1; //!< [1] Transmitter request-to-send enable + uint8_t TXRTSPOL : 1; //!< [2] Transmitter request-to-send polarity + uint8_t RXRTSE : 1; //!< [3] Receiver request-to-send enable + uint8_t RESERVED0 : 4; //!< [7:4] + } B; +} hw_uart_modem_t; +#endif + +/*! + * @name Constants and macros for entire UART_MODEM register + */ +//@{ +#define HW_UART_MODEM_ADDR(x) (REGS_UART_BASE(x) + 0xDU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_MODEM(x) (*(__IO hw_uart_modem_t *) HW_UART_MODEM_ADDR(x)) +#define HW_UART_MODEM_RD(x) (HW_UART_MODEM(x).U) +#define HW_UART_MODEM_WR(x, v) (HW_UART_MODEM(x).U = (v)) +#define HW_UART_MODEM_SET(x, v) (HW_UART_MODEM_WR(x, HW_UART_MODEM_RD(x) | (v))) +#define HW_UART_MODEM_CLR(x, v) (HW_UART_MODEM_WR(x, HW_UART_MODEM_RD(x) & ~(v))) +#define HW_UART_MODEM_TOG(x, v) (HW_UART_MODEM_WR(x, HW_UART_MODEM_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_MODEM bitfields + */ + +/*! + * @name Register UART_MODEM, field TXCTSE[0] (RW) + * + * TXCTSE controls the operation of the transmitter. TXCTSE can be set + * independently from the state of TXRTSE and RXRTSE. + * + * Values: + * - 0 - CTS has no effect on the transmitter. + * - 1 - Enables clear-to-send operation. The transmitter checks the state of + * CTS each time it is ready to send a character. If CTS is asserted, the + * character is sent. If CTS is deasserted, the signal TXD remains in the mark + * state and transmission is delayed until CTS is asserted. Changes in CTS as a + * character is being sent do not affect its transmission. + */ +//@{ +#define BP_UART_MODEM_TXCTSE (0U) //!< Bit position for UART_MODEM_TXCTSE. +#define BM_UART_MODEM_TXCTSE (0x01U) //!< Bit mask for UART_MODEM_TXCTSE. +#define BS_UART_MODEM_TXCTSE (1U) //!< Bit field size in bits for UART_MODEM_TXCTSE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_MODEM_TXCTSE field. +#define BR_UART_MODEM_TXCTSE(x) (BITBAND_ACCESS8(HW_UART_MODEM_ADDR(x), BP_UART_MODEM_TXCTSE)) +#endif + +//! @brief Format value for bitfield UART_MODEM_TXCTSE. +#define BF_UART_MODEM_TXCTSE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_MODEM_TXCTSE), uint8_t) & BM_UART_MODEM_TXCTSE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXCTSE field to a new value. +#define BW_UART_MODEM_TXCTSE(x, v) (BITBAND_ACCESS8(HW_UART_MODEM_ADDR(x), BP_UART_MODEM_TXCTSE) = (v)) +#endif +//@} + +/*! + * @name Register UART_MODEM, field TXRTSE[1] (RW) + * + * Controls RTS before and after a transmission. + * + * Values: + * - 0 - The transmitter has no effect on RTS. + * - 1 - When a character is placed into an empty transmitter data buffer , RTS + * asserts one bit time before the start bit is transmitted. RTS deasserts + * one bit time after all characters in the transmitter data buffer and shift + * register are completely sent, including the last stop bit. (FIFO) (FIFO) + */ +//@{ +#define BP_UART_MODEM_TXRTSE (1U) //!< Bit position for UART_MODEM_TXRTSE. +#define BM_UART_MODEM_TXRTSE (0x02U) //!< Bit mask for UART_MODEM_TXRTSE. +#define BS_UART_MODEM_TXRTSE (1U) //!< Bit field size in bits for UART_MODEM_TXRTSE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_MODEM_TXRTSE field. +#define BR_UART_MODEM_TXRTSE(x) (BITBAND_ACCESS8(HW_UART_MODEM_ADDR(x), BP_UART_MODEM_TXRTSE)) +#endif + +//! @brief Format value for bitfield UART_MODEM_TXRTSE. +#define BF_UART_MODEM_TXRTSE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_MODEM_TXRTSE), uint8_t) & BM_UART_MODEM_TXRTSE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXRTSE field to a new value. +#define BW_UART_MODEM_TXRTSE(x, v) (BITBAND_ACCESS8(HW_UART_MODEM_ADDR(x), BP_UART_MODEM_TXRTSE) = (v)) +#endif +//@} + +/*! + * @name Register UART_MODEM, field TXRTSPOL[2] (RW) + * + * Controls the polarity of the transmitter RTS. TXRTSPOL does not affect the + * polarity of the receiver RTS. RTS will remain negated in the active low state + * unless TXRTSE is set. + * + * Values: + * - 0 - Transmitter RTS is active low. + * - 1 - Transmitter RTS is active high. + */ +//@{ +#define BP_UART_MODEM_TXRTSPOL (2U) //!< Bit position for UART_MODEM_TXRTSPOL. +#define BM_UART_MODEM_TXRTSPOL (0x04U) //!< Bit mask for UART_MODEM_TXRTSPOL. +#define BS_UART_MODEM_TXRTSPOL (1U) //!< Bit field size in bits for UART_MODEM_TXRTSPOL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_MODEM_TXRTSPOL field. +#define BR_UART_MODEM_TXRTSPOL(x) (BITBAND_ACCESS8(HW_UART_MODEM_ADDR(x), BP_UART_MODEM_TXRTSPOL)) +#endif + +//! @brief Format value for bitfield UART_MODEM_TXRTSPOL. +#define BF_UART_MODEM_TXRTSPOL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_MODEM_TXRTSPOL), uint8_t) & BM_UART_MODEM_TXRTSPOL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXRTSPOL field to a new value. +#define BW_UART_MODEM_TXRTSPOL(x, v) (BITBAND_ACCESS8(HW_UART_MODEM_ADDR(x), BP_UART_MODEM_TXRTSPOL) = (v)) +#endif +//@} + +/*! + * @name Register UART_MODEM, field RXRTSE[3] (RW) + * + * Allows the RTS output to control the CTS input of the transmitting device to + * prevent receiver overrun. Do not set both RXRTSE and TXRTSE. + * + * Values: + * - 0 - The receiver has no effect on RTS. + * - 1 - RTS is deasserted if the number of characters in the receiver data + * register (FIFO) is equal to or greater than RWFIFO[RXWATER]. RTS is asserted + * when the number of characters in the receiver data register (FIFO) is less + * than RWFIFO[RXWATER]. + */ +//@{ +#define BP_UART_MODEM_RXRTSE (3U) //!< Bit position for UART_MODEM_RXRTSE. +#define BM_UART_MODEM_RXRTSE (0x08U) //!< Bit mask for UART_MODEM_RXRTSE. +#define BS_UART_MODEM_RXRTSE (1U) //!< Bit field size in bits for UART_MODEM_RXRTSE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_MODEM_RXRTSE field. +#define BR_UART_MODEM_RXRTSE(x) (BITBAND_ACCESS8(HW_UART_MODEM_ADDR(x), BP_UART_MODEM_RXRTSE)) +#endif + +//! @brief Format value for bitfield UART_MODEM_RXRTSE. +#define BF_UART_MODEM_RXRTSE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_MODEM_RXRTSE), uint8_t) & BM_UART_MODEM_RXRTSE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXRTSE field to a new value. +#define BW_UART_MODEM_RXRTSE(x, v) (BITBAND_ACCESS8(HW_UART_MODEM_ADDR(x), BP_UART_MODEM_RXRTSE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_IR - UART Infrared Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_IR - UART Infrared Register (RW) + * + * Reset value: 0x00U + * + * The IR register controls options for setting the infrared configuration. + */ +typedef union _hw_uart_ir +{ + uint8_t U; + struct _hw_uart_ir_bitfields + { + uint8_t TNP : 2; //!< [1:0] Transmitter narrow pulse + uint8_t IREN : 1; //!< [2] Infrared enable + uint8_t RESERVED0 : 5; //!< [7:3] + } B; +} hw_uart_ir_t; +#endif + +/*! + * @name Constants and macros for entire UART_IR register + */ +//@{ +#define HW_UART_IR_ADDR(x) (REGS_UART_BASE(x) + 0xEU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_IR(x) (*(__IO hw_uart_ir_t *) HW_UART_IR_ADDR(x)) +#define HW_UART_IR_RD(x) (HW_UART_IR(x).U) +#define HW_UART_IR_WR(x, v) (HW_UART_IR(x).U = (v)) +#define HW_UART_IR_SET(x, v) (HW_UART_IR_WR(x, HW_UART_IR_RD(x) | (v))) +#define HW_UART_IR_CLR(x, v) (HW_UART_IR_WR(x, HW_UART_IR_RD(x) & ~(v))) +#define HW_UART_IR_TOG(x, v) (HW_UART_IR_WR(x, HW_UART_IR_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_IR bitfields + */ + +/*! + * @name Register UART_IR, field TNP[1:0] (RW) + * + * Enables whether the UART transmits a 1/16, 3/16, 1/32, or 1/4 narrow pulse. + * + * Values: + * - 00 - 3/16. + * - 01 - 1/16. + * - 10 - 1/32. + * - 11 - 1/4. + */ +//@{ +#define BP_UART_IR_TNP (0U) //!< Bit position for UART_IR_TNP. +#define BM_UART_IR_TNP (0x03U) //!< Bit mask for UART_IR_TNP. +#define BS_UART_IR_TNP (2U) //!< Bit field size in bits for UART_IR_TNP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IR_TNP field. +#define BR_UART_IR_TNP(x) (HW_UART_IR(x).B.TNP) +#endif + +//! @brief Format value for bitfield UART_IR_TNP. +#define BF_UART_IR_TNP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IR_TNP), uint8_t) & BM_UART_IR_TNP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TNP field to a new value. +#define BW_UART_IR_TNP(x, v) (HW_UART_IR_WR(x, (HW_UART_IR_RD(x) & ~BM_UART_IR_TNP) | BF_UART_IR_TNP(v))) +#endif +//@} + +/*! + * @name Register UART_IR, field IREN[2] (RW) + * + * Enables/disables the infrared modulation/demodulation. + * + * Values: + * - 0 - IR disabled. + * - 1 - IR enabled. + */ +//@{ +#define BP_UART_IR_IREN (2U) //!< Bit position for UART_IR_IREN. +#define BM_UART_IR_IREN (0x04U) //!< Bit mask for UART_IR_IREN. +#define BS_UART_IR_IREN (1U) //!< Bit field size in bits for UART_IR_IREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IR_IREN field. +#define BR_UART_IR_IREN(x) (BITBAND_ACCESS8(HW_UART_IR_ADDR(x), BP_UART_IR_IREN)) +#endif + +//! @brief Format value for bitfield UART_IR_IREN. +#define BF_UART_IR_IREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IR_IREN), uint8_t) & BM_UART_IR_IREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IREN field to a new value. +#define BW_UART_IR_IREN(x, v) (BITBAND_ACCESS8(HW_UART_IR_ADDR(x), BP_UART_IR_IREN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_PFIFO - UART FIFO Parameters +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_PFIFO - UART FIFO Parameters (RW) + * + * Reset value: 0x00U + * + * This register provides the ability for the programmer to turn on and off FIFO + * functionality. It also provides the size of the FIFO that has been + * implemented. This register may be read at any time. This register must be written only + * when C2[RE] and C2[TE] are cleared/not set and when the data buffer/FIFO is + * empty. + */ +typedef union _hw_uart_pfifo +{ + uint8_t U; + struct _hw_uart_pfifo_bitfields + { + uint8_t RXFIFOSIZE : 3; //!< [2:0] Receive FIFO. Buffer Depth + uint8_t RXFE : 1; //!< [3] Receive FIFO Enable + uint8_t TXFIFOSIZE : 3; //!< [6:4] Transmit FIFO. Buffer Depth + uint8_t TXFE : 1; //!< [7] Transmit FIFO Enable + } B; +} hw_uart_pfifo_t; +#endif + +/*! + * @name Constants and macros for entire UART_PFIFO register + */ +//@{ +#define HW_UART_PFIFO_ADDR(x) (REGS_UART_BASE(x) + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_PFIFO(x) (*(__IO hw_uart_pfifo_t *) HW_UART_PFIFO_ADDR(x)) +#define HW_UART_PFIFO_RD(x) (HW_UART_PFIFO(x).U) +#define HW_UART_PFIFO_WR(x, v) (HW_UART_PFIFO(x).U = (v)) +#define HW_UART_PFIFO_SET(x, v) (HW_UART_PFIFO_WR(x, HW_UART_PFIFO_RD(x) | (v))) +#define HW_UART_PFIFO_CLR(x, v) (HW_UART_PFIFO_WR(x, HW_UART_PFIFO_RD(x) & ~(v))) +#define HW_UART_PFIFO_TOG(x, v) (HW_UART_PFIFO_WR(x, HW_UART_PFIFO_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_PFIFO bitfields + */ + +/*! + * @name Register UART_PFIFO, field RXFIFOSIZE[2:0] (RO) + * + * The maximum number of receive datawords that can be stored in the receive + * buffer before an overrun occurs. This field is read only. + * + * Values: + * - 000 - Receive FIFO/Buffer depth = 1 dataword. + * - 001 - Receive FIFO/Buffer depth = 4 datawords. + * - 010 - Receive FIFO/Buffer depth = 8 datawords. + * - 011 - Receive FIFO/Buffer depth = 16 datawords. + * - 100 - Receive FIFO/Buffer depth = 32 datawords. + * - 101 - Receive FIFO/Buffer depth = 64 datawords. + * - 110 - Receive FIFO/Buffer depth = 128 datawords. + * - 111 - Reserved. + */ +//@{ +#define BP_UART_PFIFO_RXFIFOSIZE (0U) //!< Bit position for UART_PFIFO_RXFIFOSIZE. +#define BM_UART_PFIFO_RXFIFOSIZE (0x07U) //!< Bit mask for UART_PFIFO_RXFIFOSIZE. +#define BS_UART_PFIFO_RXFIFOSIZE (3U) //!< Bit field size in bits for UART_PFIFO_RXFIFOSIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_PFIFO_RXFIFOSIZE field. +#define BR_UART_PFIFO_RXFIFOSIZE(x) (HW_UART_PFIFO(x).B.RXFIFOSIZE) +#endif +//@} + +/*! + * @name Register UART_PFIFO, field RXFE[3] (RW) + * + * When this field is set, the built in FIFO structure for the receive buffer is + * enabled. The size of the FIFO structure is indicated by the RXFIFOSIZE field. + * If this field is not set, the receive buffer operates as a FIFO of depth one + * dataword regardless of the value in RXFIFOSIZE. Both C2[TE] and C2[RE] must be + * cleared prior to changing this field. Additionally, TXFLUSH and RXFLUSH + * commands must be issued immediately after changing this field. + * + * Values: + * - 0 - Receive FIFO is not enabled. Buffer is depth 1. (Legacy support) + * - 1 - Receive FIFO is enabled. Buffer is depth indicted by RXFIFOSIZE. + */ +//@{ +#define BP_UART_PFIFO_RXFE (3U) //!< Bit position for UART_PFIFO_RXFE. +#define BM_UART_PFIFO_RXFE (0x08U) //!< Bit mask for UART_PFIFO_RXFE. +#define BS_UART_PFIFO_RXFE (1U) //!< Bit field size in bits for UART_PFIFO_RXFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_PFIFO_RXFE field. +#define BR_UART_PFIFO_RXFE(x) (BITBAND_ACCESS8(HW_UART_PFIFO_ADDR(x), BP_UART_PFIFO_RXFE)) +#endif + +//! @brief Format value for bitfield UART_PFIFO_RXFE. +#define BF_UART_PFIFO_RXFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_PFIFO_RXFE), uint8_t) & BM_UART_PFIFO_RXFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXFE field to a new value. +#define BW_UART_PFIFO_RXFE(x, v) (BITBAND_ACCESS8(HW_UART_PFIFO_ADDR(x), BP_UART_PFIFO_RXFE) = (v)) +#endif +//@} + +/*! + * @name Register UART_PFIFO, field TXFIFOSIZE[6:4] (RO) + * + * The maximum number of transmit datawords that can be stored in the transmit + * buffer. This field is read only. + * + * Values: + * - 000 - Transmit FIFO/Buffer depth = 1 dataword. + * - 001 - Transmit FIFO/Buffer depth = 4 datawords. + * - 010 - Transmit FIFO/Buffer depth = 8 datawords. + * - 011 - Transmit FIFO/Buffer depth = 16 datawords. + * - 100 - Transmit FIFO/Buffer depth = 32 datawords. + * - 101 - Transmit FIFO/Buffer depth = 64 datawords. + * - 110 - Transmit FIFO/Buffer depth = 128 datawords. + * - 111 - Reserved. + */ +//@{ +#define BP_UART_PFIFO_TXFIFOSIZE (4U) //!< Bit position for UART_PFIFO_TXFIFOSIZE. +#define BM_UART_PFIFO_TXFIFOSIZE (0x70U) //!< Bit mask for UART_PFIFO_TXFIFOSIZE. +#define BS_UART_PFIFO_TXFIFOSIZE (3U) //!< Bit field size in bits for UART_PFIFO_TXFIFOSIZE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_PFIFO_TXFIFOSIZE field. +#define BR_UART_PFIFO_TXFIFOSIZE(x) (HW_UART_PFIFO(x).B.TXFIFOSIZE) +#endif +//@} + +/*! + * @name Register UART_PFIFO, field TXFE[7] (RW) + * + * When this field is set, the built in FIFO structure for the transmit buffer + * is enabled. The size of the FIFO structure is indicated by TXFIFOSIZE. If this + * field is not set, the transmit buffer operates as a FIFO of depth one dataword + * regardless of the value in TXFIFOSIZE. Both C2[TE] and C2[RE] must be cleared + * prior to changing this field. Additionally, TXFLUSH and RXFLUSH commands must + * be issued immediately after changing this field. + * + * Values: + * - 0 - Transmit FIFO is not enabled. Buffer is depth 1. (Legacy support). + * - 1 - Transmit FIFO is enabled. Buffer is depth indicated by TXFIFOSIZE. + */ +//@{ +#define BP_UART_PFIFO_TXFE (7U) //!< Bit position for UART_PFIFO_TXFE. +#define BM_UART_PFIFO_TXFE (0x80U) //!< Bit mask for UART_PFIFO_TXFE. +#define BS_UART_PFIFO_TXFE (1U) //!< Bit field size in bits for UART_PFIFO_TXFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_PFIFO_TXFE field. +#define BR_UART_PFIFO_TXFE(x) (BITBAND_ACCESS8(HW_UART_PFIFO_ADDR(x), BP_UART_PFIFO_TXFE)) +#endif + +//! @brief Format value for bitfield UART_PFIFO_TXFE. +#define BF_UART_PFIFO_TXFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_PFIFO_TXFE), uint8_t) & BM_UART_PFIFO_TXFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXFE field to a new value. +#define BW_UART_PFIFO_TXFE(x, v) (BITBAND_ACCESS8(HW_UART_PFIFO_ADDR(x), BP_UART_PFIFO_TXFE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_CFIFO - UART FIFO Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_CFIFO - UART FIFO Control Register (RW) + * + * Reset value: 0x00U + * + * This register provides the ability to program various control fields for FIFO + * operation. This register may be read or written at any time. Note that + * writing to TXFLUSH and RXFLUSH may result in data loss and requires careful action + * to prevent unintended/unpredictable behavior. Therefore, it is recommended that + * TE and RE be cleared prior to flushing the corresponding FIFO. + */ +typedef union _hw_uart_cfifo +{ + uint8_t U; + struct _hw_uart_cfifo_bitfields + { + uint8_t RXUFE : 1; //!< [0] Receive FIFO Underflow Interrupt Enable + uint8_t TXOFE : 1; //!< [1] Transmit FIFO Overflow Interrupt Enable + uint8_t RXOFE : 1; //!< [2] Receive FIFO Overflow Interrupt Enable + uint8_t RESERVED0 : 3; //!< [5:3] + uint8_t RXFLUSH : 1; //!< [6] Receive FIFO/Buffer Flush + uint8_t TXFLUSH : 1; //!< [7] Transmit FIFO/Buffer Flush + } B; +} hw_uart_cfifo_t; +#endif + +/*! + * @name Constants and macros for entire UART_CFIFO register + */ +//@{ +#define HW_UART_CFIFO_ADDR(x) (REGS_UART_BASE(x) + 0x11U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_CFIFO(x) (*(__IO hw_uart_cfifo_t *) HW_UART_CFIFO_ADDR(x)) +#define HW_UART_CFIFO_RD(x) (HW_UART_CFIFO(x).U) +#define HW_UART_CFIFO_WR(x, v) (HW_UART_CFIFO(x).U = (v)) +#define HW_UART_CFIFO_SET(x, v) (HW_UART_CFIFO_WR(x, HW_UART_CFIFO_RD(x) | (v))) +#define HW_UART_CFIFO_CLR(x, v) (HW_UART_CFIFO_WR(x, HW_UART_CFIFO_RD(x) & ~(v))) +#define HW_UART_CFIFO_TOG(x, v) (HW_UART_CFIFO_WR(x, HW_UART_CFIFO_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_CFIFO bitfields + */ + +/*! + * @name Register UART_CFIFO, field RXUFE[0] (RW) + * + * When this field is set, the RXUF flag generates an interrupt to the host. + * + * Values: + * - 0 - RXUF flag does not generate an interrupt to the host. + * - 1 - RXUF flag generates an interrupt to the host. + */ +//@{ +#define BP_UART_CFIFO_RXUFE (0U) //!< Bit position for UART_CFIFO_RXUFE. +#define BM_UART_CFIFO_RXUFE (0x01U) //!< Bit mask for UART_CFIFO_RXUFE. +#define BS_UART_CFIFO_RXUFE (1U) //!< Bit field size in bits for UART_CFIFO_RXUFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_CFIFO_RXUFE field. +#define BR_UART_CFIFO_RXUFE(x) (BITBAND_ACCESS8(HW_UART_CFIFO_ADDR(x), BP_UART_CFIFO_RXUFE)) +#endif + +//! @brief Format value for bitfield UART_CFIFO_RXUFE. +#define BF_UART_CFIFO_RXUFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_CFIFO_RXUFE), uint8_t) & BM_UART_CFIFO_RXUFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXUFE field to a new value. +#define BW_UART_CFIFO_RXUFE(x, v) (BITBAND_ACCESS8(HW_UART_CFIFO_ADDR(x), BP_UART_CFIFO_RXUFE) = (v)) +#endif +//@} + +/*! + * @name Register UART_CFIFO, field TXOFE[1] (RW) + * + * When this field is set, the TXOF flag generates an interrupt to the host. + * + * Values: + * - 0 - TXOF flag does not generate an interrupt to the host. + * - 1 - TXOF flag generates an interrupt to the host. + */ +//@{ +#define BP_UART_CFIFO_TXOFE (1U) //!< Bit position for UART_CFIFO_TXOFE. +#define BM_UART_CFIFO_TXOFE (0x02U) //!< Bit mask for UART_CFIFO_TXOFE. +#define BS_UART_CFIFO_TXOFE (1U) //!< Bit field size in bits for UART_CFIFO_TXOFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_CFIFO_TXOFE field. +#define BR_UART_CFIFO_TXOFE(x) (BITBAND_ACCESS8(HW_UART_CFIFO_ADDR(x), BP_UART_CFIFO_TXOFE)) +#endif + +//! @brief Format value for bitfield UART_CFIFO_TXOFE. +#define BF_UART_CFIFO_TXOFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_CFIFO_TXOFE), uint8_t) & BM_UART_CFIFO_TXOFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXOFE field to a new value. +#define BW_UART_CFIFO_TXOFE(x, v) (BITBAND_ACCESS8(HW_UART_CFIFO_ADDR(x), BP_UART_CFIFO_TXOFE) = (v)) +#endif +//@} + +/*! + * @name Register UART_CFIFO, field RXOFE[2] (RW) + * + * When this field is set, the RXOF flag generates an interrupt to the host. + * + * Values: + * - 0 - RXOF flag does not generate an interrupt to the host. + * - 1 - RXOF flag generates an interrupt to the host. + */ +//@{ +#define BP_UART_CFIFO_RXOFE (2U) //!< Bit position for UART_CFIFO_RXOFE. +#define BM_UART_CFIFO_RXOFE (0x04U) //!< Bit mask for UART_CFIFO_RXOFE. +#define BS_UART_CFIFO_RXOFE (1U) //!< Bit field size in bits for UART_CFIFO_RXOFE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_CFIFO_RXOFE field. +#define BR_UART_CFIFO_RXOFE(x) (BITBAND_ACCESS8(HW_UART_CFIFO_ADDR(x), BP_UART_CFIFO_RXOFE)) +#endif + +//! @brief Format value for bitfield UART_CFIFO_RXOFE. +#define BF_UART_CFIFO_RXOFE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_CFIFO_RXOFE), uint8_t) & BM_UART_CFIFO_RXOFE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXOFE field to a new value. +#define BW_UART_CFIFO_RXOFE(x, v) (BITBAND_ACCESS8(HW_UART_CFIFO_ADDR(x), BP_UART_CFIFO_RXOFE) = (v)) +#endif +//@} + +/*! + * @name Register UART_CFIFO, field RXFLUSH[6] (WORZ) + * + * Writing to this field causes all data that is stored in the receive + * FIFO/buffer to be flushed. This does not affect data that is in the receive shift + * register. + * + * Values: + * - 0 - No flush operation occurs. + * - 1 - All data in the receive FIFO/buffer is cleared out. + */ +//@{ +#define BP_UART_CFIFO_RXFLUSH (6U) //!< Bit position for UART_CFIFO_RXFLUSH. +#define BM_UART_CFIFO_RXFLUSH (0x40U) //!< Bit mask for UART_CFIFO_RXFLUSH. +#define BS_UART_CFIFO_RXFLUSH (1U) //!< Bit field size in bits for UART_CFIFO_RXFLUSH. + +//! @brief Format value for bitfield UART_CFIFO_RXFLUSH. +#define BF_UART_CFIFO_RXFLUSH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_CFIFO_RXFLUSH), uint8_t) & BM_UART_CFIFO_RXFLUSH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXFLUSH field to a new value. +#define BW_UART_CFIFO_RXFLUSH(x, v) (BITBAND_ACCESS8(HW_UART_CFIFO_ADDR(x), BP_UART_CFIFO_RXFLUSH) = (v)) +#endif +//@} + +/*! + * @name Register UART_CFIFO, field TXFLUSH[7] (WORZ) + * + * Writing to this field causes all data that is stored in the transmit + * FIFO/buffer to be flushed. This does not affect data that is in the transmit shift + * register. + * + * Values: + * - 0 - No flush operation occurs. + * - 1 - All data in the transmit FIFO/Buffer is cleared out. + */ +//@{ +#define BP_UART_CFIFO_TXFLUSH (7U) //!< Bit position for UART_CFIFO_TXFLUSH. +#define BM_UART_CFIFO_TXFLUSH (0x80U) //!< Bit mask for UART_CFIFO_TXFLUSH. +#define BS_UART_CFIFO_TXFLUSH (1U) //!< Bit field size in bits for UART_CFIFO_TXFLUSH. + +//! @brief Format value for bitfield UART_CFIFO_TXFLUSH. +#define BF_UART_CFIFO_TXFLUSH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_CFIFO_TXFLUSH), uint8_t) & BM_UART_CFIFO_TXFLUSH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXFLUSH field to a new value. +#define BW_UART_CFIFO_TXFLUSH(x, v) (BITBAND_ACCESS8(HW_UART_CFIFO_ADDR(x), BP_UART_CFIFO_TXFLUSH) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_SFIFO - UART FIFO Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_SFIFO - UART FIFO Status Register (RW) + * + * Reset value: 0xC0U + * + * This register provides status information regarding the transmit and receiver + * buffers/FIFOs, including interrupt information. This register may be written + * to or read at any time. + */ +typedef union _hw_uart_sfifo +{ + uint8_t U; + struct _hw_uart_sfifo_bitfields + { + uint8_t RXUF : 1; //!< [0] Receiver Buffer Underflow Flag + uint8_t TXOF : 1; //!< [1] Transmitter Buffer Overflow Flag + uint8_t RXOF : 1; //!< [2] Receiver Buffer Overflow Flag + uint8_t RESERVED0 : 3; //!< [5:3] + uint8_t RXEMPT : 1; //!< [6] Receive Buffer/FIFO Empty + uint8_t TXEMPT : 1; //!< [7] Transmit Buffer/FIFO Empty + } B; +} hw_uart_sfifo_t; +#endif + +/*! + * @name Constants and macros for entire UART_SFIFO register + */ +//@{ +#define HW_UART_SFIFO_ADDR(x) (REGS_UART_BASE(x) + 0x12U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_SFIFO(x) (*(__IO hw_uart_sfifo_t *) HW_UART_SFIFO_ADDR(x)) +#define HW_UART_SFIFO_RD(x) (HW_UART_SFIFO(x).U) +#define HW_UART_SFIFO_WR(x, v) (HW_UART_SFIFO(x).U = (v)) +#define HW_UART_SFIFO_SET(x, v) (HW_UART_SFIFO_WR(x, HW_UART_SFIFO_RD(x) | (v))) +#define HW_UART_SFIFO_CLR(x, v) (HW_UART_SFIFO_WR(x, HW_UART_SFIFO_RD(x) & ~(v))) +#define HW_UART_SFIFO_TOG(x, v) (HW_UART_SFIFO_WR(x, HW_UART_SFIFO_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_SFIFO bitfields + */ + +/*! + * @name Register UART_SFIFO, field RXUF[0] (W1C) + * + * Indicates that more data has been read from the receive buffer than was + * present. This field will assert regardless of the value of CFIFO[RXUFE]. However, + * an interrupt will be issued to the host only if CFIFO[RXUFE] is set. This flag + * is cleared by writing a 1. + * + * Values: + * - 0 - No receive buffer underflow has occurred since the last time the flag + * was cleared. + * - 1 - At least one receive buffer underflow has occurred since the last time + * the flag was cleared. + */ +//@{ +#define BP_UART_SFIFO_RXUF (0U) //!< Bit position for UART_SFIFO_RXUF. +#define BM_UART_SFIFO_RXUF (0x01U) //!< Bit mask for UART_SFIFO_RXUF. +#define BS_UART_SFIFO_RXUF (1U) //!< Bit field size in bits for UART_SFIFO_RXUF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_SFIFO_RXUF field. +#define BR_UART_SFIFO_RXUF(x) (BITBAND_ACCESS8(HW_UART_SFIFO_ADDR(x), BP_UART_SFIFO_RXUF)) +#endif + +//! @brief Format value for bitfield UART_SFIFO_RXUF. +#define BF_UART_SFIFO_RXUF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_SFIFO_RXUF), uint8_t) & BM_UART_SFIFO_RXUF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXUF field to a new value. +#define BW_UART_SFIFO_RXUF(x, v) (BITBAND_ACCESS8(HW_UART_SFIFO_ADDR(x), BP_UART_SFIFO_RXUF) = (v)) +#endif +//@} + +/*! + * @name Register UART_SFIFO, field TXOF[1] (W1C) + * + * Indicates that more data has been written to the transmit buffer than it can + * hold. This field will assert regardless of the value of CFIFO[TXOFE]. However, + * an interrupt will be issued to the host only if CFIFO[TXOFE] is set. This + * flag is cleared by writing a 1. + * + * Values: + * - 0 - No transmit buffer overflow has occurred since the last time the flag + * was cleared. + * - 1 - At least one transmit buffer overflow has occurred since the last time + * the flag was cleared. + */ +//@{ +#define BP_UART_SFIFO_TXOF (1U) //!< Bit position for UART_SFIFO_TXOF. +#define BM_UART_SFIFO_TXOF (0x02U) //!< Bit mask for UART_SFIFO_TXOF. +#define BS_UART_SFIFO_TXOF (1U) //!< Bit field size in bits for UART_SFIFO_TXOF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_SFIFO_TXOF field. +#define BR_UART_SFIFO_TXOF(x) (BITBAND_ACCESS8(HW_UART_SFIFO_ADDR(x), BP_UART_SFIFO_TXOF)) +#endif + +//! @brief Format value for bitfield UART_SFIFO_TXOF. +#define BF_UART_SFIFO_TXOF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_SFIFO_TXOF), uint8_t) & BM_UART_SFIFO_TXOF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXOF field to a new value. +#define BW_UART_SFIFO_TXOF(x, v) (BITBAND_ACCESS8(HW_UART_SFIFO_ADDR(x), BP_UART_SFIFO_TXOF) = (v)) +#endif +//@} + +/*! + * @name Register UART_SFIFO, field RXOF[2] (W1C) + * + * Indicates that more data has been written to the receive buffer than it can + * hold. This field will assert regardless of the value of CFIFO[RXOFE]. However, + * an interrupt will be issued to the host only if CFIFO[RXOFE] is set. This flag + * is cleared by writing a 1. + * + * Values: + * - 0 - No receive buffer overflow has occurred since the last time the flag + * was cleared. + * - 1 - At least one receive buffer overflow has occurred since the last time + * the flag was cleared. + */ +//@{ +#define BP_UART_SFIFO_RXOF (2U) //!< Bit position for UART_SFIFO_RXOF. +#define BM_UART_SFIFO_RXOF (0x04U) //!< Bit mask for UART_SFIFO_RXOF. +#define BS_UART_SFIFO_RXOF (1U) //!< Bit field size in bits for UART_SFIFO_RXOF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_SFIFO_RXOF field. +#define BR_UART_SFIFO_RXOF(x) (BITBAND_ACCESS8(HW_UART_SFIFO_ADDR(x), BP_UART_SFIFO_RXOF)) +#endif + +//! @brief Format value for bitfield UART_SFIFO_RXOF. +#define BF_UART_SFIFO_RXOF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_SFIFO_RXOF), uint8_t) & BM_UART_SFIFO_RXOF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXOF field to a new value. +#define BW_UART_SFIFO_RXOF(x, v) (BITBAND_ACCESS8(HW_UART_SFIFO_ADDR(x), BP_UART_SFIFO_RXOF) = (v)) +#endif +//@} + +/*! + * @name Register UART_SFIFO, field RXEMPT[6] (RO) + * + * Asserts when there is no data in the receive FIFO/Buffer. This field does not + * take into account data that is in the receive shift register. + * + * Values: + * - 0 - Receive buffer is not empty. + * - 1 - Receive buffer is empty. + */ +//@{ +#define BP_UART_SFIFO_RXEMPT (6U) //!< Bit position for UART_SFIFO_RXEMPT. +#define BM_UART_SFIFO_RXEMPT (0x40U) //!< Bit mask for UART_SFIFO_RXEMPT. +#define BS_UART_SFIFO_RXEMPT (1U) //!< Bit field size in bits for UART_SFIFO_RXEMPT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_SFIFO_RXEMPT field. +#define BR_UART_SFIFO_RXEMPT(x) (BITBAND_ACCESS8(HW_UART_SFIFO_ADDR(x), BP_UART_SFIFO_RXEMPT)) +#endif +//@} + +/*! + * @name Register UART_SFIFO, field TXEMPT[7] (RO) + * + * Asserts when there is no data in the Transmit FIFO/buffer. This field does + * not take into account data that is in the transmit shift register. + * + * Values: + * - 0 - Transmit buffer is not empty. + * - 1 - Transmit buffer is empty. + */ +//@{ +#define BP_UART_SFIFO_TXEMPT (7U) //!< Bit position for UART_SFIFO_TXEMPT. +#define BM_UART_SFIFO_TXEMPT (0x80U) //!< Bit mask for UART_SFIFO_TXEMPT. +#define BS_UART_SFIFO_TXEMPT (1U) //!< Bit field size in bits for UART_SFIFO_TXEMPT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_SFIFO_TXEMPT field. +#define BR_UART_SFIFO_TXEMPT(x) (BITBAND_ACCESS8(HW_UART_SFIFO_ADDR(x), BP_UART_SFIFO_TXEMPT)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_TWFIFO - UART FIFO Transmit Watermark +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_TWFIFO - UART FIFO Transmit Watermark (RW) + * + * Reset value: 0x00U + * + * This register provides the ability to set a programmable threshold for + * notification of needing additional transmit data. This register may be read at any + * time but must be written only when C2[TE] is not set. Changing the value of the + * watermark will not clear the S1[TDRE] flag. + */ +typedef union _hw_uart_twfifo +{ + uint8_t U; + struct _hw_uart_twfifo_bitfields + { + uint8_t TXWATER : 8; //!< [7:0] Transmit Watermark + } B; +} hw_uart_twfifo_t; +#endif + +/*! + * @name Constants and macros for entire UART_TWFIFO register + */ +//@{ +#define HW_UART_TWFIFO_ADDR(x) (REGS_UART_BASE(x) + 0x13U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_TWFIFO(x) (*(__IO hw_uart_twfifo_t *) HW_UART_TWFIFO_ADDR(x)) +#define HW_UART_TWFIFO_RD(x) (HW_UART_TWFIFO(x).U) +#define HW_UART_TWFIFO_WR(x, v) (HW_UART_TWFIFO(x).U = (v)) +#define HW_UART_TWFIFO_SET(x, v) (HW_UART_TWFIFO_WR(x, HW_UART_TWFIFO_RD(x) | (v))) +#define HW_UART_TWFIFO_CLR(x, v) (HW_UART_TWFIFO_WR(x, HW_UART_TWFIFO_RD(x) & ~(v))) +#define HW_UART_TWFIFO_TOG(x, v) (HW_UART_TWFIFO_WR(x, HW_UART_TWFIFO_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_TWFIFO bitfields + */ + +/*! + * @name Register UART_TWFIFO, field TXWATER[7:0] (RW) + * + * When the number of datawords in the transmit FIFO/buffer is equal to or less + * than the value in this register field, an interrupt via S1[TDRE] or a DMA + * request via C5[TDMAS] is generated as determined by C5[TDMAS] and C2[TIE]. For + * proper operation, the value in TXWATER must be set to be less than the size of + * the transmit buffer/FIFO size as indicated by PFIFO[TXFIFOSIZE] and PFIFO[TXFE]. + */ +//@{ +#define BP_UART_TWFIFO_TXWATER (0U) //!< Bit position for UART_TWFIFO_TXWATER. +#define BM_UART_TWFIFO_TXWATER (0xFFU) //!< Bit mask for UART_TWFIFO_TXWATER. +#define BS_UART_TWFIFO_TXWATER (8U) //!< Bit field size in bits for UART_TWFIFO_TXWATER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_TWFIFO_TXWATER field. +#define BR_UART_TWFIFO_TXWATER(x) (HW_UART_TWFIFO(x).U) +#endif + +//! @brief Format value for bitfield UART_TWFIFO_TXWATER. +#define BF_UART_TWFIFO_TXWATER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_TWFIFO_TXWATER), uint8_t) & BM_UART_TWFIFO_TXWATER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXWATER field to a new value. +#define BW_UART_TWFIFO_TXWATER(x, v) (HW_UART_TWFIFO_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_TCFIFO - UART FIFO Transmit Count +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_TCFIFO - UART FIFO Transmit Count (RO) + * + * Reset value: 0x00U + * + * This is a read only register that indicates how many datawords are currently + * in the transmit buffer/FIFO. It may be read at any time. + */ +typedef union _hw_uart_tcfifo +{ + uint8_t U; + struct _hw_uart_tcfifo_bitfields + { + uint8_t TXCOUNT : 8; //!< [7:0] Transmit Counter + } B; +} hw_uart_tcfifo_t; +#endif + +/*! + * @name Constants and macros for entire UART_TCFIFO register + */ +//@{ +#define HW_UART_TCFIFO_ADDR(x) (REGS_UART_BASE(x) + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_TCFIFO(x) (*(__I hw_uart_tcfifo_t *) HW_UART_TCFIFO_ADDR(x)) +#define HW_UART_TCFIFO_RD(x) (HW_UART_TCFIFO(x).U) +#endif +//@} + +/* + * Constants & macros for individual UART_TCFIFO bitfields + */ + +/*! + * @name Register UART_TCFIFO, field TXCOUNT[7:0] (RO) + * + * The value in this register indicates the number of datawords that are in the + * transmit FIFO/buffer. If a dataword is being transmitted, that is, in the + * transmit shift register, it is not included in the count. This value may be used + * in conjunction with PFIFO[TXFIFOSIZE] to calculate how much room is left in the + * transmit FIFO/buffer. + */ +//@{ +#define BP_UART_TCFIFO_TXCOUNT (0U) //!< Bit position for UART_TCFIFO_TXCOUNT. +#define BM_UART_TCFIFO_TXCOUNT (0xFFU) //!< Bit mask for UART_TCFIFO_TXCOUNT. +#define BS_UART_TCFIFO_TXCOUNT (8U) //!< Bit field size in bits for UART_TCFIFO_TXCOUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_TCFIFO_TXCOUNT field. +#define BR_UART_TCFIFO_TXCOUNT(x) (HW_UART_TCFIFO(x).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_RWFIFO - UART FIFO Receive Watermark +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_RWFIFO - UART FIFO Receive Watermark (RW) + * + * Reset value: 0x01U + * + * This register provides the ability to set a programmable threshold for + * notification of the need to remove data from the receiver FIFO/buffer. This register + * may be read at any time but must be written only when C2[RE] is not asserted. + * Changing the value in this register will not clear S1[RDRF]. + */ +typedef union _hw_uart_rwfifo +{ + uint8_t U; + struct _hw_uart_rwfifo_bitfields + { + uint8_t RXWATER : 8; //!< [7:0] Receive Watermark + } B; +} hw_uart_rwfifo_t; +#endif + +/*! + * @name Constants and macros for entire UART_RWFIFO register + */ +//@{ +#define HW_UART_RWFIFO_ADDR(x) (REGS_UART_BASE(x) + 0x15U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_RWFIFO(x) (*(__IO hw_uart_rwfifo_t *) HW_UART_RWFIFO_ADDR(x)) +#define HW_UART_RWFIFO_RD(x) (HW_UART_RWFIFO(x).U) +#define HW_UART_RWFIFO_WR(x, v) (HW_UART_RWFIFO(x).U = (v)) +#define HW_UART_RWFIFO_SET(x, v) (HW_UART_RWFIFO_WR(x, HW_UART_RWFIFO_RD(x) | (v))) +#define HW_UART_RWFIFO_CLR(x, v) (HW_UART_RWFIFO_WR(x, HW_UART_RWFIFO_RD(x) & ~(v))) +#define HW_UART_RWFIFO_TOG(x, v) (HW_UART_RWFIFO_WR(x, HW_UART_RWFIFO_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_RWFIFO bitfields + */ + +/*! + * @name Register UART_RWFIFO, field RXWATER[7:0] (RW) + * + * When the number of datawords in the receive FIFO/buffer is equal to or + * greater than the value in this register field, an interrupt via S1[RDRF] or a DMA + * request via C5[RDMAS] is generated as determined by C5[RDMAS] and C2[RIE]. For + * proper operation, the value in RXWATER must be set to be less than the receive + * FIFO/buffer size as indicated by PFIFO[RXFIFOSIZE] and PFIFO[RXFE] and must be + * greater than 0. + */ +//@{ +#define BP_UART_RWFIFO_RXWATER (0U) //!< Bit position for UART_RWFIFO_RXWATER. +#define BM_UART_RWFIFO_RXWATER (0xFFU) //!< Bit mask for UART_RWFIFO_RXWATER. +#define BS_UART_RWFIFO_RXWATER (8U) //!< Bit field size in bits for UART_RWFIFO_RXWATER. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_RWFIFO_RXWATER field. +#define BR_UART_RWFIFO_RXWATER(x) (HW_UART_RWFIFO(x).U) +#endif + +//! @brief Format value for bitfield UART_RWFIFO_RXWATER. +#define BF_UART_RWFIFO_RXWATER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_RWFIFO_RXWATER), uint8_t) & BM_UART_RWFIFO_RXWATER) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXWATER field to a new value. +#define BW_UART_RWFIFO_RXWATER(x, v) (HW_UART_RWFIFO_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_RCFIFO - UART FIFO Receive Count +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_RCFIFO - UART FIFO Receive Count (RO) + * + * Reset value: 0x00U + * + * This is a read only register that indicates how many datawords are currently + * in the receive FIFO/buffer. It may be read at any time. + */ +typedef union _hw_uart_rcfifo +{ + uint8_t U; + struct _hw_uart_rcfifo_bitfields + { + uint8_t RXCOUNT : 8; //!< [7:0] Receive Counter + } B; +} hw_uart_rcfifo_t; +#endif + +/*! + * @name Constants and macros for entire UART_RCFIFO register + */ +//@{ +#define HW_UART_RCFIFO_ADDR(x) (REGS_UART_BASE(x) + 0x16U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_RCFIFO(x) (*(__I hw_uart_rcfifo_t *) HW_UART_RCFIFO_ADDR(x)) +#define HW_UART_RCFIFO_RD(x) (HW_UART_RCFIFO(x).U) +#endif +//@} + +/* + * Constants & macros for individual UART_RCFIFO bitfields + */ + +/*! + * @name Register UART_RCFIFO, field RXCOUNT[7:0] (RO) + * + * The value in this register indicates the number of datawords that are in the + * receive FIFO/buffer. If a dataword is being received, that is, in the receive + * shift register, it is not included in the count. This value may be used in + * conjunction with PFIFO[RXFIFOSIZE] to calculate how much room is left in the + * receive FIFO/buffer. + */ +//@{ +#define BP_UART_RCFIFO_RXCOUNT (0U) //!< Bit position for UART_RCFIFO_RXCOUNT. +#define BM_UART_RCFIFO_RXCOUNT (0xFFU) //!< Bit mask for UART_RCFIFO_RXCOUNT. +#define BS_UART_RCFIFO_RXCOUNT (8U) //!< Bit field size in bits for UART_RCFIFO_RXCOUNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_RCFIFO_RXCOUNT field. +#define BR_UART_RCFIFO_RXCOUNT(x) (HW_UART_RCFIFO(x).U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_C7816 - UART 7816 Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_C7816 - UART 7816 Control Register (RW) + * + * Reset value: 0x00U + * + * The C7816 register is the primary control register for ISO-7816 specific + * functionality. This register is specific to 7816 functionality and the values in + * this register have no effect on UART operation and should be ignored if + * ISO_7816E is not set/enabled. This register may be read at any time but values must + * be changed only when ISO_7816E is not set. + */ +typedef union _hw_uart_c7816 +{ + uint8_t U; + struct _hw_uart_c7816_bitfields + { + uint8_t ISO_7816E : 1; //!< [0] ISO-7816 Functionality Enabled + uint8_t TTYPE : 1; //!< [1] Transfer Type + uint8_t INIT : 1; //!< [2] Detect Initial Character + uint8_t ANACK : 1; //!< [3] Generate NACK on Error + uint8_t ONACK : 1; //!< [4] Generate NACK on Overflow + uint8_t RESERVED0 : 3; //!< [7:5] + } B; +} hw_uart_c7816_t; +#endif + +/*! + * @name Constants and macros for entire UART_C7816 register + */ +//@{ +#define HW_UART_C7816_ADDR(x) (REGS_UART_BASE(x) + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_C7816(x) (*(__IO hw_uart_c7816_t *) HW_UART_C7816_ADDR(x)) +#define HW_UART_C7816_RD(x) (HW_UART_C7816(x).U) +#define HW_UART_C7816_WR(x, v) (HW_UART_C7816(x).U = (v)) +#define HW_UART_C7816_SET(x, v) (HW_UART_C7816_WR(x, HW_UART_C7816_RD(x) | (v))) +#define HW_UART_C7816_CLR(x, v) (HW_UART_C7816_WR(x, HW_UART_C7816_RD(x) & ~(v))) +#define HW_UART_C7816_TOG(x, v) (HW_UART_C7816_WR(x, HW_UART_C7816_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_C7816 bitfields + */ + +/*! + * @name Register UART_C7816, field ISO_7816E[0] (RW) + * + * Indicates that the UART is operating according to the ISO-7816 protocol. This + * field must be modified only when no transmit or receive is occurring. If this + * field is changed during a data transfer, the data being transmitted or + * received may be transferred incorrectly. + * + * Values: + * - 0 - ISO-7816 functionality is turned off/not enabled. + * - 1 - ISO-7816 functionality is turned on/enabled. + */ +//@{ +#define BP_UART_C7816_ISO_7816E (0U) //!< Bit position for UART_C7816_ISO_7816E. +#define BM_UART_C7816_ISO_7816E (0x01U) //!< Bit mask for UART_C7816_ISO_7816E. +#define BS_UART_C7816_ISO_7816E (1U) //!< Bit field size in bits for UART_C7816_ISO_7816E. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C7816_ISO_7816E field. +#define BR_UART_C7816_ISO_7816E(x) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_ISO_7816E)) +#endif + +//! @brief Format value for bitfield UART_C7816_ISO_7816E. +#define BF_UART_C7816_ISO_7816E(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C7816_ISO_7816E), uint8_t) & BM_UART_C7816_ISO_7816E) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ISO_7816E field to a new value. +#define BW_UART_C7816_ISO_7816E(x, v) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_ISO_7816E) = (v)) +#endif +//@} + +/*! + * @name Register UART_C7816, field TTYPE[1] (RW) + * + * Indicates the transfer protocol being used. See ISO-7816 / smartcard support + * for more details. + * + * Values: + * - 0 - T = 0 per the ISO-7816 specification. + * - 1 - T = 1 per the ISO-7816 specification. + */ +//@{ +#define BP_UART_C7816_TTYPE (1U) //!< Bit position for UART_C7816_TTYPE. +#define BM_UART_C7816_TTYPE (0x02U) //!< Bit mask for UART_C7816_TTYPE. +#define BS_UART_C7816_TTYPE (1U) //!< Bit field size in bits for UART_C7816_TTYPE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C7816_TTYPE field. +#define BR_UART_C7816_TTYPE(x) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_TTYPE)) +#endif + +//! @brief Format value for bitfield UART_C7816_TTYPE. +#define BF_UART_C7816_TTYPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C7816_TTYPE), uint8_t) & BM_UART_C7816_TTYPE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TTYPE field to a new value. +#define BW_UART_C7816_TTYPE(x, v) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_TTYPE) = (v)) +#endif +//@} + +/*! + * @name Register UART_C7816, field INIT[2] (RW) + * + * When this field is set, all received characters are searched for a valid + * initial character. If an invalid initial character is identified, and ANACK is + * set, a NACK is sent. All received data is discarded and error flags blocked + * (S1[NF], S1[OR], S1[FE], S1[PF], IS7816[WT], IS7816[CWT], IS7816[BWT], IS7816[GTV]) + * until a valid initial character is detected. Upon detecting a valid initial + * character, the configuration values S2[MSBF], C3[TXINV], and S2[RXINV] are + * automatically updated to reflect the initial character that was received. The + * actual INIT data value is not stored in the receive buffer. Additionally, upon + * detection of a valid initial character, IS7816[INITD] is set and an interrupt + * issued as programmed by IE7816[INITDE]. When a valid initial character is + * detected, INIT is automatically cleared. This Initial Character Detect feature is + * supported only in T = 0 protocol mode. + * + * Values: + * - 0 - Normal operating mode. Receiver does not seek to identify initial + * character. + * - 1 - Receiver searches for initial character. + */ +//@{ +#define BP_UART_C7816_INIT (2U) //!< Bit position for UART_C7816_INIT. +#define BM_UART_C7816_INIT (0x04U) //!< Bit mask for UART_C7816_INIT. +#define BS_UART_C7816_INIT (1U) //!< Bit field size in bits for UART_C7816_INIT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C7816_INIT field. +#define BR_UART_C7816_INIT(x) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_INIT)) +#endif + +//! @brief Format value for bitfield UART_C7816_INIT. +#define BF_UART_C7816_INIT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C7816_INIT), uint8_t) & BM_UART_C7816_INIT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INIT field to a new value. +#define BW_UART_C7816_INIT(x, v) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_INIT) = (v)) +#endif +//@} + +/*! + * @name Register UART_C7816, field ANACK[3] (RW) + * + * When this field is set, the receiver automatically generates a NACK response + * if a parity error occurs or if INIT is set and an invalid initial character is + * detected. A NACK is generated only if TTYPE = 0. If ANACK is set, the UART + * attempts to retransmit the data indefinitely. To stop retransmission attempts, + * clear C2[TE] or ISO_7816E and do not set until S1[TC] sets C2[TE] again. + * + * Values: + * - 0 - No NACK is automatically generated. + * - 1 - A NACK is automatically generated if a parity error is detected or if + * an invalid initial character is detected. + */ +//@{ +#define BP_UART_C7816_ANACK (3U) //!< Bit position for UART_C7816_ANACK. +#define BM_UART_C7816_ANACK (0x08U) //!< Bit mask for UART_C7816_ANACK. +#define BS_UART_C7816_ANACK (1U) //!< Bit field size in bits for UART_C7816_ANACK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C7816_ANACK field. +#define BR_UART_C7816_ANACK(x) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_ANACK)) +#endif + +//! @brief Format value for bitfield UART_C7816_ANACK. +#define BF_UART_C7816_ANACK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C7816_ANACK), uint8_t) & BM_UART_C7816_ANACK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ANACK field to a new value. +#define BW_UART_C7816_ANACK(x, v) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_ANACK) = (v)) +#endif +//@} + +/*! + * @name Register UART_C7816, field ONACK[4] (RW) + * + * When this field is set, the receiver automatically generates a NACK response + * if a receive buffer overrun occurs, as indicated by S1[OR]. In many systems, + * this results in the transmitter resending the packet that overflowed until the + * retransmit threshold for that transmitter is reached. A NACK is generated only + * if TTYPE=0. This field operates independently of ANACK. See . Overrun NACK + * considerations + * + * Values: + * - 0 - The received data does not generate a NACK when the receipt of the data + * results in an overflow event. + * - 1 - If the receiver buffer overflows, a NACK is automatically sent on a + * received character. + */ +//@{ +#define BP_UART_C7816_ONACK (4U) //!< Bit position for UART_C7816_ONACK. +#define BM_UART_C7816_ONACK (0x10U) //!< Bit mask for UART_C7816_ONACK. +#define BS_UART_C7816_ONACK (1U) //!< Bit field size in bits for UART_C7816_ONACK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_C7816_ONACK field. +#define BR_UART_C7816_ONACK(x) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_ONACK)) +#endif + +//! @brief Format value for bitfield UART_C7816_ONACK. +#define BF_UART_C7816_ONACK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_C7816_ONACK), uint8_t) & BM_UART_C7816_ONACK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ONACK field to a new value. +#define BW_UART_C7816_ONACK(x, v) (BITBAND_ACCESS8(HW_UART_C7816_ADDR(x), BP_UART_C7816_ONACK) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_IE7816 - UART 7816 Interrupt Enable Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_IE7816 - UART 7816 Interrupt Enable Register (RW) + * + * Reset value: 0x00U + * + * The IE7816 register controls which flags result in an interrupt being issued. + * This register is specific to 7816 functionality, the corresponding flags that + * drive the interrupts are not asserted when 7816E is not set/enabled. However, + * these flags may remain set if they are asserted while 7816E was set and not + * subsequently cleared. This register may be read or written to at any time. + */ +typedef union _hw_uart_ie7816 +{ + uint8_t U; + struct _hw_uart_ie7816_bitfields + { + uint8_t RXTE : 1; //!< [0] Receive Threshold Exceeded Interrupt Enable + uint8_t TXTE : 1; //!< [1] Transmit Threshold Exceeded Interrupt + //! Enable + uint8_t GTVE : 1; //!< [2] Guard Timer Violated Interrupt Enable + uint8_t RESERVED0 : 1; //!< [3] + uint8_t INITDE : 1; //!< [4] Initial Character Detected Interrupt + //! Enable + uint8_t BWTE : 1; //!< [5] Block Wait Timer Interrupt Enable + uint8_t CWTE : 1; //!< [6] Character Wait Timer Interrupt Enable + uint8_t WTE : 1; //!< [7] Wait Timer Interrupt Enable + } B; +} hw_uart_ie7816_t; +#endif + +/*! + * @name Constants and macros for entire UART_IE7816 register + */ +//@{ +#define HW_UART_IE7816_ADDR(x) (REGS_UART_BASE(x) + 0x19U) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_IE7816(x) (*(__IO hw_uart_ie7816_t *) HW_UART_IE7816_ADDR(x)) +#define HW_UART_IE7816_RD(x) (HW_UART_IE7816(x).U) +#define HW_UART_IE7816_WR(x, v) (HW_UART_IE7816(x).U = (v)) +#define HW_UART_IE7816_SET(x, v) (HW_UART_IE7816_WR(x, HW_UART_IE7816_RD(x) | (v))) +#define HW_UART_IE7816_CLR(x, v) (HW_UART_IE7816_WR(x, HW_UART_IE7816_RD(x) & ~(v))) +#define HW_UART_IE7816_TOG(x, v) (HW_UART_IE7816_WR(x, HW_UART_IE7816_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_IE7816 bitfields + */ + +/*! + * @name Register UART_IE7816, field RXTE[0] (RW) + * + * Values: + * - 0 - The assertion of IS7816[RXT] does not result in the generation of an + * interrupt. + * - 1 - The assertion of IS7816[RXT] results in the generation of an interrupt. + */ +//@{ +#define BP_UART_IE7816_RXTE (0U) //!< Bit position for UART_IE7816_RXTE. +#define BM_UART_IE7816_RXTE (0x01U) //!< Bit mask for UART_IE7816_RXTE. +#define BS_UART_IE7816_RXTE (1U) //!< Bit field size in bits for UART_IE7816_RXTE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IE7816_RXTE field. +#define BR_UART_IE7816_RXTE(x) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_RXTE)) +#endif + +//! @brief Format value for bitfield UART_IE7816_RXTE. +#define BF_UART_IE7816_RXTE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IE7816_RXTE), uint8_t) & BM_UART_IE7816_RXTE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXTE field to a new value. +#define BW_UART_IE7816_RXTE(x, v) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_RXTE) = (v)) +#endif +//@} + +/*! + * @name Register UART_IE7816, field TXTE[1] (RW) + * + * Values: + * - 0 - The assertion of IS7816[TXT] does not result in the generation of an + * interrupt. + * - 1 - The assertion of IS7816[TXT] results in the generation of an interrupt. + */ +//@{ +#define BP_UART_IE7816_TXTE (1U) //!< Bit position for UART_IE7816_TXTE. +#define BM_UART_IE7816_TXTE (0x02U) //!< Bit mask for UART_IE7816_TXTE. +#define BS_UART_IE7816_TXTE (1U) //!< Bit field size in bits for UART_IE7816_TXTE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IE7816_TXTE field. +#define BR_UART_IE7816_TXTE(x) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_TXTE)) +#endif + +//! @brief Format value for bitfield UART_IE7816_TXTE. +#define BF_UART_IE7816_TXTE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IE7816_TXTE), uint8_t) & BM_UART_IE7816_TXTE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXTE field to a new value. +#define BW_UART_IE7816_TXTE(x, v) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_TXTE) = (v)) +#endif +//@} + +/*! + * @name Register UART_IE7816, field GTVE[2] (RW) + * + * Values: + * - 0 - The assertion of IS7816[GTV] does not result in the generation of an + * interrupt. + * - 1 - The assertion of IS7816[GTV] results in the generation of an interrupt. + */ +//@{ +#define BP_UART_IE7816_GTVE (2U) //!< Bit position for UART_IE7816_GTVE. +#define BM_UART_IE7816_GTVE (0x04U) //!< Bit mask for UART_IE7816_GTVE. +#define BS_UART_IE7816_GTVE (1U) //!< Bit field size in bits for UART_IE7816_GTVE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IE7816_GTVE field. +#define BR_UART_IE7816_GTVE(x) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_GTVE)) +#endif + +//! @brief Format value for bitfield UART_IE7816_GTVE. +#define BF_UART_IE7816_GTVE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IE7816_GTVE), uint8_t) & BM_UART_IE7816_GTVE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GTVE field to a new value. +#define BW_UART_IE7816_GTVE(x, v) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_GTVE) = (v)) +#endif +//@} + +/*! + * @name Register UART_IE7816, field INITDE[4] (RW) + * + * Values: + * - 0 - The assertion of IS7816[INITD] does not result in the generation of an + * interrupt. + * - 1 - The assertion of IS7816[INITD] results in the generation of an + * interrupt. + */ +//@{ +#define BP_UART_IE7816_INITDE (4U) //!< Bit position for UART_IE7816_INITDE. +#define BM_UART_IE7816_INITDE (0x10U) //!< Bit mask for UART_IE7816_INITDE. +#define BS_UART_IE7816_INITDE (1U) //!< Bit field size in bits for UART_IE7816_INITDE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IE7816_INITDE field. +#define BR_UART_IE7816_INITDE(x) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_INITDE)) +#endif + +//! @brief Format value for bitfield UART_IE7816_INITDE. +#define BF_UART_IE7816_INITDE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IE7816_INITDE), uint8_t) & BM_UART_IE7816_INITDE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INITDE field to a new value. +#define BW_UART_IE7816_INITDE(x, v) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_INITDE) = (v)) +#endif +//@} + +/*! + * @name Register UART_IE7816, field BWTE[5] (RW) + * + * Values: + * - 0 - The assertion of IS7816[BWT] does not result in the generation of an + * interrupt. + * - 1 - The assertion of IS7816[BWT] results in the generation of an interrupt. + */ +//@{ +#define BP_UART_IE7816_BWTE (5U) //!< Bit position for UART_IE7816_BWTE. +#define BM_UART_IE7816_BWTE (0x20U) //!< Bit mask for UART_IE7816_BWTE. +#define BS_UART_IE7816_BWTE (1U) //!< Bit field size in bits for UART_IE7816_BWTE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IE7816_BWTE field. +#define BR_UART_IE7816_BWTE(x) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_BWTE)) +#endif + +//! @brief Format value for bitfield UART_IE7816_BWTE. +#define BF_UART_IE7816_BWTE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IE7816_BWTE), uint8_t) & BM_UART_IE7816_BWTE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BWTE field to a new value. +#define BW_UART_IE7816_BWTE(x, v) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_BWTE) = (v)) +#endif +//@} + +/*! + * @name Register UART_IE7816, field CWTE[6] (RW) + * + * Values: + * - 0 - The assertion of IS7816[CWT] does not result in the generation of an + * interrupt. + * - 1 - The assertion of IS7816[CWT] results in the generation of an interrupt. + */ +//@{ +#define BP_UART_IE7816_CWTE (6U) //!< Bit position for UART_IE7816_CWTE. +#define BM_UART_IE7816_CWTE (0x40U) //!< Bit mask for UART_IE7816_CWTE. +#define BS_UART_IE7816_CWTE (1U) //!< Bit field size in bits for UART_IE7816_CWTE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IE7816_CWTE field. +#define BR_UART_IE7816_CWTE(x) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_CWTE)) +#endif + +//! @brief Format value for bitfield UART_IE7816_CWTE. +#define BF_UART_IE7816_CWTE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IE7816_CWTE), uint8_t) & BM_UART_IE7816_CWTE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CWTE field to a new value. +#define BW_UART_IE7816_CWTE(x, v) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_CWTE) = (v)) +#endif +//@} + +/*! + * @name Register UART_IE7816, field WTE[7] (RW) + * + * Values: + * - 0 - The assertion of IS7816[WT] does not result in the generation of an + * interrupt. + * - 1 - The assertion of IS7816[WT] results in the generation of an interrupt. + */ +//@{ +#define BP_UART_IE7816_WTE (7U) //!< Bit position for UART_IE7816_WTE. +#define BM_UART_IE7816_WTE (0x80U) //!< Bit mask for UART_IE7816_WTE. +#define BS_UART_IE7816_WTE (1U) //!< Bit field size in bits for UART_IE7816_WTE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IE7816_WTE field. +#define BR_UART_IE7816_WTE(x) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_WTE)) +#endif + +//! @brief Format value for bitfield UART_IE7816_WTE. +#define BF_UART_IE7816_WTE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IE7816_WTE), uint8_t) & BM_UART_IE7816_WTE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WTE field to a new value. +#define BW_UART_IE7816_WTE(x, v) (BITBAND_ACCESS8(HW_UART_IE7816_ADDR(x), BP_UART_IE7816_WTE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_IS7816 - UART 7816 Interrupt Status Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_IS7816 - UART 7816 Interrupt Status Register (RW) + * + * Reset value: 0x00U + * + * The IS7816 register provides a mechanism to read and clear the interrupt + * flags. All flags/interrupts are cleared by writing a 1 to the field location. + * Writing a 0 has no effect. All bits are "sticky", meaning they indicate that only + * the flag condition that occurred since the last time the bit was cleared, not + * that the condition currently exists. The status flags are set regardless of + * whether the corresponding field in the IE7816 is set or cleared. The IE7816 + * controls only if an interrupt is issued to the host processor. This register is + * specific to 7816 functionality and the values in this register have no affect on + * UART operation and should be ignored if 7816E is not set/enabled. This + * register may be read or written at anytime. + */ +typedef union _hw_uart_is7816 +{ + uint8_t U; + struct _hw_uart_is7816_bitfields + { + uint8_t RXT : 1; //!< [0] Receive Threshold Exceeded Interrupt + uint8_t TXT : 1; //!< [1] Transmit Threshold Exceeded Interrupt + uint8_t GTV : 1; //!< [2] Guard Timer Violated Interrupt + uint8_t RESERVED0 : 1; //!< [3] + uint8_t INITD : 1; //!< [4] Initial Character Detected Interrupt + uint8_t BWT : 1; //!< [5] Block Wait Timer Interrupt + uint8_t CWT : 1; //!< [6] Character Wait Timer Interrupt + uint8_t WT : 1; //!< [7] Wait Timer Interrupt + } B; +} hw_uart_is7816_t; +#endif + +/*! + * @name Constants and macros for entire UART_IS7816 register + */ +//@{ +#define HW_UART_IS7816_ADDR(x) (REGS_UART_BASE(x) + 0x1AU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_IS7816(x) (*(__IO hw_uart_is7816_t *) HW_UART_IS7816_ADDR(x)) +#define HW_UART_IS7816_RD(x) (HW_UART_IS7816(x).U) +#define HW_UART_IS7816_WR(x, v) (HW_UART_IS7816(x).U = (v)) +#define HW_UART_IS7816_SET(x, v) (HW_UART_IS7816_WR(x, HW_UART_IS7816_RD(x) | (v))) +#define HW_UART_IS7816_CLR(x, v) (HW_UART_IS7816_WR(x, HW_UART_IS7816_RD(x) & ~(v))) +#define HW_UART_IS7816_TOG(x, v) (HW_UART_IS7816_WR(x, HW_UART_IS7816_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_IS7816 bitfields + */ + +/*! + * @name Register UART_IS7816, field RXT[0] (W1C) + * + * Indicates that there are more than ET7816[RXTHRESHOLD] consecutive NACKS + * generated in response to parity errors on received data. This flag requires ANACK + * to be set. Additionally, this flag asserts only when C7816[TTYPE] = 0. + * Clearing this field also resets the counter keeping track of consecutive NACKS. The + * UART will continue to attempt to receive data regardless of whether this flag + * is set. If 7816E is cleared/disabled, RE is cleared/disabled, C7816[TTYPE] = 1, + * or packet is received without needing to issue a NACK, the internal NACK + * detection counter is cleared and the count restarts from zero on the next + * transmitted NACK. This interrupt is cleared by writing 1. + * + * Values: + * - 0 - The number of consecutive NACKS generated as a result of parity errors + * and buffer overruns is less than or equal to the value in + * ET7816[RXTHRESHOLD]. + * - 1 - The number of consecutive NACKS generated as a result of parity errors + * and buffer overruns is greater than the value in ET7816[RXTHRESHOLD]. + */ +//@{ +#define BP_UART_IS7816_RXT (0U) //!< Bit position for UART_IS7816_RXT. +#define BM_UART_IS7816_RXT (0x01U) //!< Bit mask for UART_IS7816_RXT. +#define BS_UART_IS7816_RXT (1U) //!< Bit field size in bits for UART_IS7816_RXT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IS7816_RXT field. +#define BR_UART_IS7816_RXT(x) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_RXT)) +#endif + +//! @brief Format value for bitfield UART_IS7816_RXT. +#define BF_UART_IS7816_RXT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IS7816_RXT), uint8_t) & BM_UART_IS7816_RXT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXT field to a new value. +#define BW_UART_IS7816_RXT(x, v) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_RXT) = (v)) +#endif +//@} + +/*! + * @name Register UART_IS7816, field TXT[1] (W1C) + * + * Indicates that the transmit NACK threshold has been exceeded as indicated by + * ET7816[TXTHRESHOLD]. Regardless of whether this flag is set, the UART + * continues to retransmit indefinitely. This flag asserts only when C7816[TTYPE] = 0. If + * 7816E is cleared/disabled, ANACK is cleared/disabled, C2[TE] is + * cleared/disabled, C7816[TTYPE] = 1, or packet is transferred without receiving a NACK, the + * internal NACK detection counter is cleared and the count restarts from zero on + * the next received NACK. This interrupt is cleared by writing 1. + * + * Values: + * - 0 - The number of retries and corresponding NACKS does not exceed the value + * in ET7816[TXTHRESHOLD]. + * - 1 - The number of retries and corresponding NACKS exceeds the value in + * ET7816[TXTHRESHOLD]. + */ +//@{ +#define BP_UART_IS7816_TXT (1U) //!< Bit position for UART_IS7816_TXT. +#define BM_UART_IS7816_TXT (0x02U) //!< Bit mask for UART_IS7816_TXT. +#define BS_UART_IS7816_TXT (1U) //!< Bit field size in bits for UART_IS7816_TXT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IS7816_TXT field. +#define BR_UART_IS7816_TXT(x) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_TXT)) +#endif + +//! @brief Format value for bitfield UART_IS7816_TXT. +#define BF_UART_IS7816_TXT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IS7816_TXT), uint8_t) & BM_UART_IS7816_TXT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXT field to a new value. +#define BW_UART_IS7816_TXT(x, v) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_TXT) = (v)) +#endif +//@} + +/*! + * @name Register UART_IS7816, field GTV[2] (W1C) + * + * Indicates that one or more of the character guard time, block guard time, or + * guard time are violated. This interrupt is cleared by writing 1. + * + * Values: + * - 0 - A guard time (GT, CGT, or BGT) has not been violated. + * - 1 - A guard time (GT, CGT, or BGT) has been violated. + */ +//@{ +#define BP_UART_IS7816_GTV (2U) //!< Bit position for UART_IS7816_GTV. +#define BM_UART_IS7816_GTV (0x04U) //!< Bit mask for UART_IS7816_GTV. +#define BS_UART_IS7816_GTV (1U) //!< Bit field size in bits for UART_IS7816_GTV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IS7816_GTV field. +#define BR_UART_IS7816_GTV(x) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_GTV)) +#endif + +//! @brief Format value for bitfield UART_IS7816_GTV. +#define BF_UART_IS7816_GTV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IS7816_GTV), uint8_t) & BM_UART_IS7816_GTV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GTV field to a new value. +#define BW_UART_IS7816_GTV(x, v) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_GTV) = (v)) +#endif +//@} + +/*! + * @name Register UART_IS7816, field INITD[4] (W1C) + * + * Indicates that a valid initial character is received. This interrupt is + * cleared by writing 1. + * + * Values: + * - 0 - A valid initial character has not been received. + * - 1 - A valid initial character has been received. + */ +//@{ +#define BP_UART_IS7816_INITD (4U) //!< Bit position for UART_IS7816_INITD. +#define BM_UART_IS7816_INITD (0x10U) //!< Bit mask for UART_IS7816_INITD. +#define BS_UART_IS7816_INITD (1U) //!< Bit field size in bits for UART_IS7816_INITD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IS7816_INITD field. +#define BR_UART_IS7816_INITD(x) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_INITD)) +#endif + +//! @brief Format value for bitfield UART_IS7816_INITD. +#define BF_UART_IS7816_INITD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IS7816_INITD), uint8_t) & BM_UART_IS7816_INITD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INITD field to a new value. +#define BW_UART_IS7816_INITD(x, v) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_INITD) = (v)) +#endif +//@} + +/*! + * @name Register UART_IS7816, field BWT[5] (W1C) + * + * Indicates that the block wait time, the time between the leading edge of + * first received character of a block and the leading edge of the last character the + * previously transmitted block, has exceeded the programmed value. This flag + * asserts only when C7816[TTYPE] = 1.This interrupt is cleared by writing 1. + * + * Values: + * - 0 - Block wait time (BWT) has not been violated. + * - 1 - Block wait time (BWT) has been violated. + */ +//@{ +#define BP_UART_IS7816_BWT (5U) //!< Bit position for UART_IS7816_BWT. +#define BM_UART_IS7816_BWT (0x20U) //!< Bit mask for UART_IS7816_BWT. +#define BS_UART_IS7816_BWT (1U) //!< Bit field size in bits for UART_IS7816_BWT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IS7816_BWT field. +#define BR_UART_IS7816_BWT(x) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_BWT)) +#endif + +//! @brief Format value for bitfield UART_IS7816_BWT. +#define BF_UART_IS7816_BWT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IS7816_BWT), uint8_t) & BM_UART_IS7816_BWT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BWT field to a new value. +#define BW_UART_IS7816_BWT(x, v) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_BWT) = (v)) +#endif +//@} + +/*! + * @name Register UART_IS7816, field CWT[6] (W1C) + * + * Indicates that the character wait time, the time between the leading edges of + * two consecutive characters in a block, has exceeded the programmed value. + * This flag asserts only when C7816[TTYPE] = 1. This interrupt is cleared by + * writing 1. + * + * Values: + * - 0 - Character wait time (CWT) has not been violated. + * - 1 - Character wait time (CWT) has been violated. + */ +//@{ +#define BP_UART_IS7816_CWT (6U) //!< Bit position for UART_IS7816_CWT. +#define BM_UART_IS7816_CWT (0x40U) //!< Bit mask for UART_IS7816_CWT. +#define BS_UART_IS7816_CWT (1U) //!< Bit field size in bits for UART_IS7816_CWT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IS7816_CWT field. +#define BR_UART_IS7816_CWT(x) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_CWT)) +#endif + +//! @brief Format value for bitfield UART_IS7816_CWT. +#define BF_UART_IS7816_CWT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IS7816_CWT), uint8_t) & BM_UART_IS7816_CWT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CWT field to a new value. +#define BW_UART_IS7816_CWT(x, v) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_CWT) = (v)) +#endif +//@} + +/*! + * @name Register UART_IS7816, field WT[7] (W1C) + * + * Indicates that the wait time, the time between the leading edge of a + * character being transmitted and the leading edge of the next response character, has + * exceeded the programmed value. This flag asserts only when C7816[TTYPE] = 0. + * This interrupt is cleared by writing 1. + * + * Values: + * - 0 - Wait time (WT) has not been violated. + * - 1 - Wait time (WT) has been violated. + */ +//@{ +#define BP_UART_IS7816_WT (7U) //!< Bit position for UART_IS7816_WT. +#define BM_UART_IS7816_WT (0x80U) //!< Bit mask for UART_IS7816_WT. +#define BS_UART_IS7816_WT (1U) //!< Bit field size in bits for UART_IS7816_WT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_IS7816_WT field. +#define BR_UART_IS7816_WT(x) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_WT)) +#endif + +//! @brief Format value for bitfield UART_IS7816_WT. +#define BF_UART_IS7816_WT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_IS7816_WT), uint8_t) & BM_UART_IS7816_WT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WT field to a new value. +#define BW_UART_IS7816_WT(x, v) (BITBAND_ACCESS8(HW_UART_IS7816_ADDR(x), BP_UART_IS7816_WT) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_WP7816_T_TYPE0 - UART 7816 Wait Parameter Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_WP7816_T_TYPE0 - UART 7816 Wait Parameter Register (RW) + * + * Reset value: 0x0AU + * + * The WP7816 register contains constants used in the generation of various wait + * timer counters. To save register space, this register is used differently + * when C7816[TTYPE] = 0 and C7816[TTYPE] = 1. This register may be read at any + * time. This register must be written to only when C7816[ISO_7816E] is not set. + */ +typedef union _hw_uart_wp7816_t_type0 +{ + uint8_t U; + struct _hw_uart_wp7816_t_type0_bitfields + { + uint8_t WI : 8; //!< [7:0] Wait Time Integer (C7816[TTYPE] = 0) + } B; +} hw_uart_wp7816_t_type0_t; +#endif + +/*! + * @name Constants and macros for entire UART_WP7816_T_TYPE0 register + */ +//@{ +#define HW_UART_WP7816_T_TYPE0_ADDR(x) (REGS_UART_BASE(x) + 0x1BU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_WP7816_T_TYPE0(x) (*(__IO hw_uart_wp7816_t_type0_t *) HW_UART_WP7816_T_TYPE0_ADDR(x)) +#define HW_UART_WP7816_T_TYPE0_RD(x) (HW_UART_WP7816_T_TYPE0(x).U) +#define HW_UART_WP7816_T_TYPE0_WR(x, v) (HW_UART_WP7816_T_TYPE0(x).U = (v)) +#define HW_UART_WP7816_T_TYPE0_SET(x, v) (HW_UART_WP7816_T_TYPE0_WR(x, HW_UART_WP7816_T_TYPE0_RD(x) | (v))) +#define HW_UART_WP7816_T_TYPE0_CLR(x, v) (HW_UART_WP7816_T_TYPE0_WR(x, HW_UART_WP7816_T_TYPE0_RD(x) & ~(v))) +#define HW_UART_WP7816_T_TYPE0_TOG(x, v) (HW_UART_WP7816_T_TYPE0_WR(x, HW_UART_WP7816_T_TYPE0_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_WP7816_T_TYPE0 bitfields + */ + +/*! + * @name Register UART_WP7816_T_TYPE0, field WI[7:0] (RW) + * + * Used to calculate the value used for the WT counter. It represents a value + * between 1 and 255. The value of zero is not valid. This value is used only when + * C7816[TTYPE] = 0. See Wait time and guard time parameters. + */ +//@{ +#define BP_UART_WP7816_T_TYPE0_WI (0U) //!< Bit position for UART_WP7816_T_TYPE0_WI. +#define BM_UART_WP7816_T_TYPE0_WI (0xFFU) //!< Bit mask for UART_WP7816_T_TYPE0_WI. +#define BS_UART_WP7816_T_TYPE0_WI (8U) //!< Bit field size in bits for UART_WP7816_T_TYPE0_WI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_WP7816_T_TYPE0_WI field. +#define BR_UART_WP7816_T_TYPE0_WI(x) (HW_UART_WP7816_T_TYPE0(x).U) +#endif + +//! @brief Format value for bitfield UART_WP7816_T_TYPE0_WI. +#define BF_UART_WP7816_T_TYPE0_WI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_WP7816_T_TYPE0_WI), uint8_t) & BM_UART_WP7816_T_TYPE0_WI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WI field to a new value. +#define BW_UART_WP7816_T_TYPE0_WI(x, v) (HW_UART_WP7816_T_TYPE0_WR(x, v)) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_UART_WP7816_T_TYPE1 - UART 7816 Wait Parameter Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_WP7816_T_TYPE1 - UART 7816 Wait Parameter Register (RW) + * + * Reset value: 0x0AU + * + * The WP7816 register contains constants used in the generation of various wait + * timer counters. To save register space, this register is used differently + * when C7816[TTYPE] = 0 and C7816[TTYPE] = 1. This register may be read at any + * time. This register must be written to only when C7816[ISO_7816E] is not set. + */ +typedef union _hw_uart_wp7816_t_type1 +{ + uint8_t U; + struct _hw_uart_wp7816_t_type1_bitfields + { + uint8_t BWI : 4; //!< [3:0] Block Wait Time Integer(C7816[TTYPE] = 1) + uint8_t CWI : 4; //!< [7:4] Character Wait Time Integer (C7816[TTYPE] + //! = 1) + } B; +} hw_uart_wp7816_t_type1_t; +#endif + +/*! + * @name Constants and macros for entire UART_WP7816_T_TYPE1 register + */ +//@{ +#define HW_UART_WP7816_T_TYPE1_ADDR(x) (REGS_UART_BASE(x) + 0x1BU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_WP7816_T_TYPE1(x) (*(__IO hw_uart_wp7816_t_type1_t *) HW_UART_WP7816_T_TYPE1_ADDR(x)) +#define HW_UART_WP7816_T_TYPE1_RD(x) (HW_UART_WP7816_T_TYPE1(x).U) +#define HW_UART_WP7816_T_TYPE1_WR(x, v) (HW_UART_WP7816_T_TYPE1(x).U = (v)) +#define HW_UART_WP7816_T_TYPE1_SET(x, v) (HW_UART_WP7816_T_TYPE1_WR(x, HW_UART_WP7816_T_TYPE1_RD(x) | (v))) +#define HW_UART_WP7816_T_TYPE1_CLR(x, v) (HW_UART_WP7816_T_TYPE1_WR(x, HW_UART_WP7816_T_TYPE1_RD(x) & ~(v))) +#define HW_UART_WP7816_T_TYPE1_TOG(x, v) (HW_UART_WP7816_T_TYPE1_WR(x, HW_UART_WP7816_T_TYPE1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_WP7816_T_TYPE1 bitfields + */ + +/*! + * @name Register UART_WP7816_T_TYPE1, field BWI[3:0] (RW) + * + * Used to calculate the value used for the BWT counter. It represent a value + * between 0 and 15. This value is used only when C7816[TTYPE] = 1. See Wait time + * and guard time parameters . + */ +//@{ +#define BP_UART_WP7816_T_TYPE1_BWI (0U) //!< Bit position for UART_WP7816_T_TYPE1_BWI. +#define BM_UART_WP7816_T_TYPE1_BWI (0x0FU) //!< Bit mask for UART_WP7816_T_TYPE1_BWI. +#define BS_UART_WP7816_T_TYPE1_BWI (4U) //!< Bit field size in bits for UART_WP7816_T_TYPE1_BWI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_WP7816_T_TYPE1_BWI field. +#define BR_UART_WP7816_T_TYPE1_BWI(x) (HW_UART_WP7816_T_TYPE1(x).B.BWI) +#endif + +//! @brief Format value for bitfield UART_WP7816_T_TYPE1_BWI. +#define BF_UART_WP7816_T_TYPE1_BWI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_WP7816_T_TYPE1_BWI), uint8_t) & BM_UART_WP7816_T_TYPE1_BWI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BWI field to a new value. +#define BW_UART_WP7816_T_TYPE1_BWI(x, v) (HW_UART_WP7816_T_TYPE1_WR(x, (HW_UART_WP7816_T_TYPE1_RD(x) & ~BM_UART_WP7816_T_TYPE1_BWI) | BF_UART_WP7816_T_TYPE1_BWI(v))) +#endif +//@} + +/*! + * @name Register UART_WP7816_T_TYPE1, field CWI[7:4] (RW) + * + * Used to calculate the value used for the CWT counter. It represents a value + * between 0 and 15. This value is used only when C7816[TTYPE] = 1. See Wait time + * and guard time parameters . + */ +//@{ +#define BP_UART_WP7816_T_TYPE1_CWI (4U) //!< Bit position for UART_WP7816_T_TYPE1_CWI. +#define BM_UART_WP7816_T_TYPE1_CWI (0xF0U) //!< Bit mask for UART_WP7816_T_TYPE1_CWI. +#define BS_UART_WP7816_T_TYPE1_CWI (4U) //!< Bit field size in bits for UART_WP7816_T_TYPE1_CWI. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_WP7816_T_TYPE1_CWI field. +#define BR_UART_WP7816_T_TYPE1_CWI(x) (HW_UART_WP7816_T_TYPE1(x).B.CWI) +#endif + +//! @brief Format value for bitfield UART_WP7816_T_TYPE1_CWI. +#define BF_UART_WP7816_T_TYPE1_CWI(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_WP7816_T_TYPE1_CWI), uint8_t) & BM_UART_WP7816_T_TYPE1_CWI) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CWI field to a new value. +#define BW_UART_WP7816_T_TYPE1_CWI(x, v) (HW_UART_WP7816_T_TYPE1_WR(x, (HW_UART_WP7816_T_TYPE1_RD(x) & ~BM_UART_WP7816_T_TYPE1_CWI) | BF_UART_WP7816_T_TYPE1_CWI(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_WN7816 - UART 7816 Wait N Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_WN7816 - UART 7816 Wait N Register (RW) + * + * Reset value: 0x00U + * + * The WN7816 register contains a parameter that is used in the calculation of + * the guard time counter. This register may be read at any time. This register + * must be written to only when C7816[ISO_7816E] is not set. + */ +typedef union _hw_uart_wn7816 +{ + uint8_t U; + struct _hw_uart_wn7816_bitfields + { + uint8_t GTN : 8; //!< [7:0] Guard Band N + } B; +} hw_uart_wn7816_t; +#endif + +/*! + * @name Constants and macros for entire UART_WN7816 register + */ +//@{ +#define HW_UART_WN7816_ADDR(x) (REGS_UART_BASE(x) + 0x1CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_WN7816(x) (*(__IO hw_uart_wn7816_t *) HW_UART_WN7816_ADDR(x)) +#define HW_UART_WN7816_RD(x) (HW_UART_WN7816(x).U) +#define HW_UART_WN7816_WR(x, v) (HW_UART_WN7816(x).U = (v)) +#define HW_UART_WN7816_SET(x, v) (HW_UART_WN7816_WR(x, HW_UART_WN7816_RD(x) | (v))) +#define HW_UART_WN7816_CLR(x, v) (HW_UART_WN7816_WR(x, HW_UART_WN7816_RD(x) & ~(v))) +#define HW_UART_WN7816_TOG(x, v) (HW_UART_WN7816_WR(x, HW_UART_WN7816_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_WN7816 bitfields + */ + +/*! + * @name Register UART_WN7816, field GTN[7:0] (RW) + * + * Defines a parameter used in the calculation of GT, CGT, and BGT counters. The + * value represents an integer number between 0 and 255. See Wait time and guard + * time parameters . + */ +//@{ +#define BP_UART_WN7816_GTN (0U) //!< Bit position for UART_WN7816_GTN. +#define BM_UART_WN7816_GTN (0xFFU) //!< Bit mask for UART_WN7816_GTN. +#define BS_UART_WN7816_GTN (8U) //!< Bit field size in bits for UART_WN7816_GTN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_WN7816_GTN field. +#define BR_UART_WN7816_GTN(x) (HW_UART_WN7816(x).U) +#endif + +//! @brief Format value for bitfield UART_WN7816_GTN. +#define BF_UART_WN7816_GTN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_WN7816_GTN), uint8_t) & BM_UART_WN7816_GTN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GTN field to a new value. +#define BW_UART_WN7816_GTN(x, v) (HW_UART_WN7816_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_WF7816 - UART 7816 Wait FD Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_WF7816 - UART 7816 Wait FD Register (RW) + * + * Reset value: 0x01U + * + * The WF7816 contains parameters that are used in the generation of various + * counters including GT, CGT, BGT, WT, and BWT. This register may be read at any + * time. This register must be written to only when C7816[ISO_7816E] is not set. + */ +typedef union _hw_uart_wf7816 +{ + uint8_t U; + struct _hw_uart_wf7816_bitfields + { + uint8_t GTFD : 8; //!< [7:0] FD Multiplier + } B; +} hw_uart_wf7816_t; +#endif + +/*! + * @name Constants and macros for entire UART_WF7816 register + */ +//@{ +#define HW_UART_WF7816_ADDR(x) (REGS_UART_BASE(x) + 0x1DU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_WF7816(x) (*(__IO hw_uart_wf7816_t *) HW_UART_WF7816_ADDR(x)) +#define HW_UART_WF7816_RD(x) (HW_UART_WF7816(x).U) +#define HW_UART_WF7816_WR(x, v) (HW_UART_WF7816(x).U = (v)) +#define HW_UART_WF7816_SET(x, v) (HW_UART_WF7816_WR(x, HW_UART_WF7816_RD(x) | (v))) +#define HW_UART_WF7816_CLR(x, v) (HW_UART_WF7816_WR(x, HW_UART_WF7816_RD(x) & ~(v))) +#define HW_UART_WF7816_TOG(x, v) (HW_UART_WF7816_WR(x, HW_UART_WF7816_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_WF7816 bitfields + */ + +/*! + * @name Register UART_WF7816, field GTFD[7:0] (RW) + * + * Used as another multiplier in the calculation of WT and BWT. This value + * represents a number between 1 and 255. The value of 0 is invalid. This value is not + * used in baud rate generation. See Wait time and guard time parameters and + * Baud rate generation . + */ +//@{ +#define BP_UART_WF7816_GTFD (0U) //!< Bit position for UART_WF7816_GTFD. +#define BM_UART_WF7816_GTFD (0xFFU) //!< Bit mask for UART_WF7816_GTFD. +#define BS_UART_WF7816_GTFD (8U) //!< Bit field size in bits for UART_WF7816_GTFD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_WF7816_GTFD field. +#define BR_UART_WF7816_GTFD(x) (HW_UART_WF7816(x).U) +#endif + +//! @brief Format value for bitfield UART_WF7816_GTFD. +#define BF_UART_WF7816_GTFD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_WF7816_GTFD), uint8_t) & BM_UART_WF7816_GTFD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the GTFD field to a new value. +#define BW_UART_WF7816_GTFD(x, v) (HW_UART_WF7816_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_ET7816 - UART 7816 Error Threshold Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_ET7816 - UART 7816 Error Threshold Register (RW) + * + * Reset value: 0x00U + * + * The ET7816 register contains fields that determine the number of NACKs that + * must be received or transmitted before the host processor is notified. This + * register may be read at anytime. This register must be written to only when + * C7816[ISO_7816E] is not set. + */ +typedef union _hw_uart_et7816 +{ + uint8_t U; + struct _hw_uart_et7816_bitfields + { + uint8_t RXTHRESHOLD : 4; //!< [3:0] Receive NACK Threshold + uint8_t TXTHRESHOLD : 4; //!< [7:4] Transmit NACK Threshold + } B; +} hw_uart_et7816_t; +#endif + +/*! + * @name Constants and macros for entire UART_ET7816 register + */ +//@{ +#define HW_UART_ET7816_ADDR(x) (REGS_UART_BASE(x) + 0x1EU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_ET7816(x) (*(__IO hw_uart_et7816_t *) HW_UART_ET7816_ADDR(x)) +#define HW_UART_ET7816_RD(x) (HW_UART_ET7816(x).U) +#define HW_UART_ET7816_WR(x, v) (HW_UART_ET7816(x).U = (v)) +#define HW_UART_ET7816_SET(x, v) (HW_UART_ET7816_WR(x, HW_UART_ET7816_RD(x) | (v))) +#define HW_UART_ET7816_CLR(x, v) (HW_UART_ET7816_WR(x, HW_UART_ET7816_RD(x) & ~(v))) +#define HW_UART_ET7816_TOG(x, v) (HW_UART_ET7816_WR(x, HW_UART_ET7816_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_ET7816 bitfields + */ + +/*! + * @name Register UART_ET7816, field RXTHRESHOLD[3:0] (RW) + * + * The value written to this field indicates the maximum number of consecutive + * NACKs generated as a result of a parity error or receiver buffer overruns + * before the host processor is notified. After the counter exceeds that value in the + * field, the IS7816[RXT] is asserted. This field is meaningful only when + * C7816[TTYPE] = 0. The value read from this field represents the number of consecutive + * NACKs that have been transmitted since the last successful reception. This + * counter saturates at 4'hF and does not wrap around. Regardless of the number of + * NACKs sent, the UART continues to receive valid packets indefinitely. For + * additional information, see IS7816[RXT] field description. + */ +//@{ +#define BP_UART_ET7816_RXTHRESHOLD (0U) //!< Bit position for UART_ET7816_RXTHRESHOLD. +#define BM_UART_ET7816_RXTHRESHOLD (0x0FU) //!< Bit mask for UART_ET7816_RXTHRESHOLD. +#define BS_UART_ET7816_RXTHRESHOLD (4U) //!< Bit field size in bits for UART_ET7816_RXTHRESHOLD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_ET7816_RXTHRESHOLD field. +#define BR_UART_ET7816_RXTHRESHOLD(x) (HW_UART_ET7816(x).B.RXTHRESHOLD) +#endif + +//! @brief Format value for bitfield UART_ET7816_RXTHRESHOLD. +#define BF_UART_ET7816_RXTHRESHOLD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_ET7816_RXTHRESHOLD), uint8_t) & BM_UART_ET7816_RXTHRESHOLD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RXTHRESHOLD field to a new value. +#define BW_UART_ET7816_RXTHRESHOLD(x, v) (HW_UART_ET7816_WR(x, (HW_UART_ET7816_RD(x) & ~BM_UART_ET7816_RXTHRESHOLD) | BF_UART_ET7816_RXTHRESHOLD(v))) +#endif +//@} + +/*! + * @name Register UART_ET7816, field TXTHRESHOLD[7:4] (RW) + * + * The value written to this field indicates the maximum number of failed + * attempts (NACKs) a transmitted character can have before the host processor is + * notified. This field is meaningful only when C7816[TTYPE] = 0 and C7816[ANACK] = 1. + * The value read from this field represents the number of consecutive NACKs + * that have been received since the last successful transmission. This counter + * saturates at 4'hF and does not wrap around. Regardless of how many NACKs that are + * received, the UART continues to retransmit indefinitely. This flag only + * asserts when C7816[TTYPE] = 0. For additional information see the IS7816[TXT] field + * description. + * + * Values: + * - 0 - TXT asserts on the first NACK that is received. + * - 1 - TXT asserts on the second NACK that is received. + */ +//@{ +#define BP_UART_ET7816_TXTHRESHOLD (4U) //!< Bit position for UART_ET7816_TXTHRESHOLD. +#define BM_UART_ET7816_TXTHRESHOLD (0xF0U) //!< Bit mask for UART_ET7816_TXTHRESHOLD. +#define BS_UART_ET7816_TXTHRESHOLD (4U) //!< Bit field size in bits for UART_ET7816_TXTHRESHOLD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_ET7816_TXTHRESHOLD field. +#define BR_UART_ET7816_TXTHRESHOLD(x) (HW_UART_ET7816(x).B.TXTHRESHOLD) +#endif + +//! @brief Format value for bitfield UART_ET7816_TXTHRESHOLD. +#define BF_UART_ET7816_TXTHRESHOLD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_ET7816_TXTHRESHOLD), uint8_t) & BM_UART_ET7816_TXTHRESHOLD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXTHRESHOLD field to a new value. +#define BW_UART_ET7816_TXTHRESHOLD(x, v) (HW_UART_ET7816_WR(x, (HW_UART_ET7816_RD(x) & ~BM_UART_ET7816_TXTHRESHOLD) | BF_UART_ET7816_TXTHRESHOLD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_UART_TL7816 - UART 7816 Transmit Length Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_UART_TL7816 - UART 7816 Transmit Length Register (RW) + * + * Reset value: 0x00U + * + * The TL7816 register is used to indicate the number of characters contained in + * the block being transmitted. This register is used only when C7816[TTYPE] = + * 1. This register may be read at anytime. This register must be written only + * when C2[TE] is not enabled. + */ +typedef union _hw_uart_tl7816 +{ + uint8_t U; + struct _hw_uart_tl7816_bitfields + { + uint8_t TLEN : 8; //!< [7:0] Transmit Length + } B; +} hw_uart_tl7816_t; +#endif + +/*! + * @name Constants and macros for entire UART_TL7816 register + */ +//@{ +#define HW_UART_TL7816_ADDR(x) (REGS_UART_BASE(x) + 0x1FU) + +#ifndef __LANGUAGE_ASM__ +#define HW_UART_TL7816(x) (*(__IO hw_uart_tl7816_t *) HW_UART_TL7816_ADDR(x)) +#define HW_UART_TL7816_RD(x) (HW_UART_TL7816(x).U) +#define HW_UART_TL7816_WR(x, v) (HW_UART_TL7816(x).U = (v)) +#define HW_UART_TL7816_SET(x, v) (HW_UART_TL7816_WR(x, HW_UART_TL7816_RD(x) | (v))) +#define HW_UART_TL7816_CLR(x, v) (HW_UART_TL7816_WR(x, HW_UART_TL7816_RD(x) & ~(v))) +#define HW_UART_TL7816_TOG(x, v) (HW_UART_TL7816_WR(x, HW_UART_TL7816_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual UART_TL7816 bitfields + */ + +/*! + * @name Register UART_TL7816, field TLEN[7:0] (RW) + * + * This value plus four indicates the number of characters contained in the + * block being transmitted. This register is automatically decremented by 1 for each + * character in the information field portion of the block. Additionally, this + * register is automatically decremented by 1 for the first character of a CRC in + * the epilogue field. Therefore, this register must be programmed with the number + * of bytes in the data packet if an LRC is being transmitted, and the number of + * bytes + 1 if a CRC is being transmitted. This register is not decremented for + * characters that are assumed to be part of the Prologue field, that is, the + * first three characters transmitted in a block, or the LRC or last CRC character + * in the Epilogue field, that is, the last character transmitted. This field + * must be programed or adjusted only when C2[TE] is cleared. + */ +//@{ +#define BP_UART_TL7816_TLEN (0U) //!< Bit position for UART_TL7816_TLEN. +#define BM_UART_TL7816_TLEN (0xFFU) //!< Bit mask for UART_TL7816_TLEN. +#define BS_UART_TL7816_TLEN (8U) //!< Bit field size in bits for UART_TL7816_TLEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the UART_TL7816_TLEN field. +#define BR_UART_TL7816_TLEN(x) (HW_UART_TL7816(x).U) +#endif + +//! @brief Format value for bitfield UART_TL7816_TLEN. +#define BF_UART_TL7816_TLEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_UART_TL7816_TLEN), uint8_t) & BM_UART_TL7816_TLEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TLEN field to a new value. +#define BW_UART_TL7816_TLEN(x, v) (HW_UART_TL7816_WR(x, v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_uart_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All UART module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_uart +{ + __IO hw_uart_bdh_t BDH; //!< [0x0] UART Baud Rate Registers: High + __IO hw_uart_bdl_t BDL; //!< [0x1] UART Baud Rate Registers: Low + __IO hw_uart_c1_t C1; //!< [0x2] UART Control Register 1 + __IO hw_uart_c2_t C2; //!< [0x3] UART Control Register 2 + __I hw_uart_s1_t S1; //!< [0x4] UART Status Register 1 + __IO hw_uart_s2_t S2; //!< [0x5] UART Status Register 2 + __IO hw_uart_c3_t C3; //!< [0x6] UART Control Register 3 + __IO hw_uart_d_t D; //!< [0x7] UART Data Register + __IO hw_uart_ma1_t MA1; //!< [0x8] UART Match Address Registers 1 + __IO hw_uart_ma2_t MA2; //!< [0x9] UART Match Address Registers 2 + __IO hw_uart_c4_t C4; //!< [0xA] UART Control Register 4 + __IO hw_uart_c5_t C5; //!< [0xB] UART Control Register 5 + __I hw_uart_ed_t ED; //!< [0xC] UART Extended Data Register + __IO hw_uart_modem_t MODEM; //!< [0xD] UART Modem Register + __IO hw_uart_ir_t IR; //!< [0xE] UART Infrared Register + uint8_t _reserved0[1]; + __IO hw_uart_pfifo_t PFIFO; //!< [0x10] UART FIFO Parameters + __IO hw_uart_cfifo_t CFIFO; //!< [0x11] UART FIFO Control Register + __IO hw_uart_sfifo_t SFIFO; //!< [0x12] UART FIFO Status Register + __IO hw_uart_twfifo_t TWFIFO; //!< [0x13] UART FIFO Transmit Watermark + __I hw_uart_tcfifo_t TCFIFO; //!< [0x14] UART FIFO Transmit Count + __IO hw_uart_rwfifo_t RWFIFO; //!< [0x15] UART FIFO Receive Watermark + __I hw_uart_rcfifo_t RCFIFO; //!< [0x16] UART FIFO Receive Count + uint8_t _reserved1[1]; + __IO hw_uart_c7816_t C7816; //!< [0x18] UART 7816 Control Register + __IO hw_uart_ie7816_t IE7816; //!< [0x19] UART 7816 Interrupt Enable Register + __IO hw_uart_is7816_t IS7816; //!< [0x1A] UART 7816 Interrupt Status Register + union { + __IO hw_uart_wp7816_t_type0_t WP7816_T_TYPE0; //!< [0x1B] UART 7816 Wait Parameter Register + __IO hw_uart_wp7816_t_type1_t WP7816_T_TYPE1; //!< [0x1B] UART 7816 Wait Parameter Register + }; + __IO hw_uart_wn7816_t WN7816; //!< [0x1C] UART 7816 Wait N Register + __IO hw_uart_wf7816_t WF7816; //!< [0x1D] UART 7816 Wait FD Register + __IO hw_uart_et7816_t ET7816; //!< [0x1E] UART 7816 Error Threshold Register + __IO hw_uart_tl7816_t TL7816; //!< [0x1F] UART 7816 Transmit Length Register +} hw_uart_t; +#pragma pack() + +//! @brief Macro to access all UART registers. +//! @param x UART instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_UART(0)</code>. +#define HW_UART(x) (*(hw_uart_t *) REGS_UART_BASE(x)) +#endif + +#endif // __HW_UART_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_usb.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,4276 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_USB_REGISTERS_H__ +#define __HW_USB_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 USB + * + * Universal Serial Bus, OTG Capable Controller + * + * Registers defined in this header file: + * - HW_USB_PERID - Peripheral ID register + * - HW_USB_IDCOMP - Peripheral ID Complement register + * - HW_USB_REV - Peripheral Revision register + * - HW_USB_ADDINFO - Peripheral Additional Info register + * - HW_USB_OTGISTAT - OTG Interrupt Status register + * - HW_USB_OTGICR - OTG Interrupt Control register + * - HW_USB_OTGSTAT - OTG Status register + * - HW_USB_OTGCTL - OTG Control register + * - HW_USB_ISTAT - Interrupt Status register + * - HW_USB_INTEN - Interrupt Enable register + * - HW_USB_ERRSTAT - Error Interrupt Status register + * - HW_USB_ERREN - Error Interrupt Enable register + * - HW_USB_STAT - Status register + * - HW_USB_CTL - Control register + * - HW_USB_ADDR - Address register + * - HW_USB_BDTPAGE1 - BDT Page register 1 + * - HW_USB_FRMNUML - Frame Number register Low + * - HW_USB_FRMNUMH - Frame Number register High + * - HW_USB_TOKEN - Token register + * - HW_USB_SOFTHLD - SOF Threshold register + * - HW_USB_BDTPAGE2 - BDT Page Register 2 + * - HW_USB_BDTPAGE3 - BDT Page Register 3 + * - HW_USB_ENDPTn - Endpoint Control register + * - HW_USB_USBCTRL - USB Control register + * - HW_USB_OBSERVE - USB OTG Observe register + * - HW_USB_CONTROL - USB OTG Control register + * - HW_USB_USBTRC0 - USB Transceiver Control register 0 + * - HW_USB_USBFRMADJUST - Frame Adjust Register + * - HW_USB_CLK_RECOVER_CTRL - USB Clock recovery control + * - HW_USB_CLK_RECOVER_IRC_EN - IRC48M oscillator enable register + * - HW_USB_CLK_RECOVER_INT_STATUS - Clock recovery separated interrupt status + * + * - hw_usb_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_USB_BASE +#define HW_USB_INSTANCE_COUNT (1U) //!< Number of instances of the USB module. +#define REGS_USB_BASE (0x40072000U) //!< Base address for USB0. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_PERID - Peripheral ID register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_PERID - Peripheral ID register (RO) + * + * Reset value: 0x04U + * + * Reads back the value of 0x04. This value is defined for the USB peripheral. + */ +typedef union _hw_usb_perid +{ + uint8_t U; + struct _hw_usb_perid_bitfields + { + uint8_t ID : 6; //!< [5:0] Peripheral Identification + uint8_t RESERVED0 : 2; //!< [7:6] + } B; +} hw_usb_perid_t; +#endif + +/*! + * @name Constants and macros for entire USB_PERID register + */ +//@{ +#define HW_USB_PERID_ADDR (REGS_USB_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_PERID (*(__I hw_usb_perid_t *) HW_USB_PERID_ADDR) +#define HW_USB_PERID_RD() (HW_USB_PERID.U) +#endif +//@} + +/* + * Constants & macros for individual USB_PERID bitfields + */ + +/*! + * @name Register USB_PERID, field ID[5:0] (RO) + * + * This field always reads 0x4h. + */ +//@{ +#define BP_USB_PERID_ID (0U) //!< Bit position for USB_PERID_ID. +#define BM_USB_PERID_ID (0x3FU) //!< Bit mask for USB_PERID_ID. +#define BS_USB_PERID_ID (6U) //!< Bit field size in bits for USB_PERID_ID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_PERID_ID field. +#define BR_USB_PERID_ID (HW_USB_PERID.B.ID) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_IDCOMP - Peripheral ID Complement register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_IDCOMP - Peripheral ID Complement register (RO) + * + * Reset value: 0xFBU + * + * Reads back the complement of the Peripheral ID register. For the USB + * peripheral, the value is 0xFB. + */ +typedef union _hw_usb_idcomp +{ + uint8_t U; + struct _hw_usb_idcomp_bitfields + { + uint8_t NID : 6; //!< [5:0] + uint8_t RESERVED0 : 2; //!< [7:6] + } B; +} hw_usb_idcomp_t; +#endif + +/*! + * @name Constants and macros for entire USB_IDCOMP register + */ +//@{ +#define HW_USB_IDCOMP_ADDR (REGS_USB_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_IDCOMP (*(__I hw_usb_idcomp_t *) HW_USB_IDCOMP_ADDR) +#define HW_USB_IDCOMP_RD() (HW_USB_IDCOMP.U) +#endif +//@} + +/* + * Constants & macros for individual USB_IDCOMP bitfields + */ + +/*! + * @name Register USB_IDCOMP, field NID[5:0] (RO) + * + * Ones' complement of PERID[ID]. bits. + */ +//@{ +#define BP_USB_IDCOMP_NID (0U) //!< Bit position for USB_IDCOMP_NID. +#define BM_USB_IDCOMP_NID (0x3FU) //!< Bit mask for USB_IDCOMP_NID. +#define BS_USB_IDCOMP_NID (6U) //!< Bit field size in bits for USB_IDCOMP_NID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_IDCOMP_NID field. +#define BR_USB_IDCOMP_NID (HW_USB_IDCOMP.B.NID) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_REV - Peripheral Revision register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_REV - Peripheral Revision register (RO) + * + * Reset value: 0x33U + * + * Contains the revision number of the USB module. + */ +typedef union _hw_usb_rev +{ + uint8_t U; + struct _hw_usb_rev_bitfields + { + uint8_t REV : 8; //!< [7:0] Revision + } B; +} hw_usb_rev_t; +#endif + +/*! + * @name Constants and macros for entire USB_REV register + */ +//@{ +#define HW_USB_REV_ADDR (REGS_USB_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_REV (*(__I hw_usb_rev_t *) HW_USB_REV_ADDR) +#define HW_USB_REV_RD() (HW_USB_REV.U) +#endif +//@} + +/* + * Constants & macros for individual USB_REV bitfields + */ + +/*! + * @name Register USB_REV, field REV[7:0] (RO) + * + * Indicates the revision number of the USB Core. + */ +//@{ +#define BP_USB_REV_REV (0U) //!< Bit position for USB_REV_REV. +#define BM_USB_REV_REV (0xFFU) //!< Bit mask for USB_REV_REV. +#define BS_USB_REV_REV (8U) //!< Bit field size in bits for USB_REV_REV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_REV_REV field. +#define BR_USB_REV_REV (HW_USB_REV.U) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_ADDINFO - Peripheral Additional Info register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_ADDINFO - Peripheral Additional Info register (RO) + * + * Reset value: 0x01U + * + * Reads back the value of the fixed Interrupt Request Level (IRQNUM) along with + * the Host Enable bit. + */ +typedef union _hw_usb_addinfo +{ + uint8_t U; + struct _hw_usb_addinfo_bitfields + { + uint8_t IEHOST : 1; //!< [0] + uint8_t RESERVED0 : 2; //!< [2:1] + uint8_t IRQNUM : 5; //!< [7:3] Assigned Interrupt Request Number + } B; +} hw_usb_addinfo_t; +#endif + +/*! + * @name Constants and macros for entire USB_ADDINFO register + */ +//@{ +#define HW_USB_ADDINFO_ADDR (REGS_USB_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_ADDINFO (*(__I hw_usb_addinfo_t *) HW_USB_ADDINFO_ADDR) +#define HW_USB_ADDINFO_RD() (HW_USB_ADDINFO.U) +#endif +//@} + +/* + * Constants & macros for individual USB_ADDINFO bitfields + */ + +/*! + * @name Register USB_ADDINFO, field IEHOST[0] (RO) + * + * This bit is set if host mode is enabled. + */ +//@{ +#define BP_USB_ADDINFO_IEHOST (0U) //!< Bit position for USB_ADDINFO_IEHOST. +#define BM_USB_ADDINFO_IEHOST (0x01U) //!< Bit mask for USB_ADDINFO_IEHOST. +#define BS_USB_ADDINFO_IEHOST (1U) //!< Bit field size in bits for USB_ADDINFO_IEHOST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ADDINFO_IEHOST field. +#define BR_USB_ADDINFO_IEHOST (BITBAND_ACCESS8(HW_USB_ADDINFO_ADDR, BP_USB_ADDINFO_IEHOST)) +#endif +//@} + +/*! + * @name Register USB_ADDINFO, field IRQNUM[7:3] (RO) + */ +//@{ +#define BP_USB_ADDINFO_IRQNUM (3U) //!< Bit position for USB_ADDINFO_IRQNUM. +#define BM_USB_ADDINFO_IRQNUM (0xF8U) //!< Bit mask for USB_ADDINFO_IRQNUM. +#define BS_USB_ADDINFO_IRQNUM (5U) //!< Bit field size in bits for USB_ADDINFO_IRQNUM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ADDINFO_IRQNUM field. +#define BR_USB_ADDINFO_IRQNUM (HW_USB_ADDINFO.B.IRQNUM) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_OTGISTAT - OTG Interrupt Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_OTGISTAT - OTG Interrupt Status register (RW) + * + * Reset value: 0x00U + * + * Records changes of the ID sense and VBUS signals. Software can read this + * register to determine the event that triggers an interrupt. Only bits that have + * changed since the last software read are set. Writing a one to a bit clears the + * associated interrupt. + */ +typedef union _hw_usb_otgistat +{ + uint8_t U; + struct _hw_usb_otgistat_bitfields + { + uint8_t AVBUSCHG : 1; //!< [0] + uint8_t RESERVED0 : 1; //!< [1] + uint8_t B_SESS_CHG : 1; //!< [2] + uint8_t SESSVLDCHG : 1; //!< [3] + uint8_t RESERVED1 : 1; //!< [4] + uint8_t LINE_STATE_CHG : 1; //!< [5] + uint8_t ONEMSEC : 1; //!< [6] + uint8_t IDCHG : 1; //!< [7] + } B; +} hw_usb_otgistat_t; +#endif + +/*! + * @name Constants and macros for entire USB_OTGISTAT register + */ +//@{ +#define HW_USB_OTGISTAT_ADDR (REGS_USB_BASE + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_OTGISTAT (*(__IO hw_usb_otgistat_t *) HW_USB_OTGISTAT_ADDR) +#define HW_USB_OTGISTAT_RD() (HW_USB_OTGISTAT.U) +#define HW_USB_OTGISTAT_WR(v) (HW_USB_OTGISTAT.U = (v)) +#define HW_USB_OTGISTAT_SET(v) (HW_USB_OTGISTAT_WR(HW_USB_OTGISTAT_RD() | (v))) +#define HW_USB_OTGISTAT_CLR(v) (HW_USB_OTGISTAT_WR(HW_USB_OTGISTAT_RD() & ~(v))) +#define HW_USB_OTGISTAT_TOG(v) (HW_USB_OTGISTAT_WR(HW_USB_OTGISTAT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_OTGISTAT bitfields + */ + +/*! + * @name Register USB_OTGISTAT, field AVBUSCHG[0] (RW) + * + * This bit is set when a change in VBUS is detected on an A device. + */ +//@{ +#define BP_USB_OTGISTAT_AVBUSCHG (0U) //!< Bit position for USB_OTGISTAT_AVBUSCHG. +#define BM_USB_OTGISTAT_AVBUSCHG (0x01U) //!< Bit mask for USB_OTGISTAT_AVBUSCHG. +#define BS_USB_OTGISTAT_AVBUSCHG (1U) //!< Bit field size in bits for USB_OTGISTAT_AVBUSCHG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGISTAT_AVBUSCHG field. +#define BR_USB_OTGISTAT_AVBUSCHG (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_AVBUSCHG)) +#endif + +//! @brief Format value for bitfield USB_OTGISTAT_AVBUSCHG. +#define BF_USB_OTGISTAT_AVBUSCHG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGISTAT_AVBUSCHG), uint8_t) & BM_USB_OTGISTAT_AVBUSCHG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AVBUSCHG field to a new value. +#define BW_USB_OTGISTAT_AVBUSCHG(v) (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_AVBUSCHG) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGISTAT, field B_SESS_CHG[2] (RW) + * + * This bit is set when a change in VBUS is detected on a B device. + */ +//@{ +#define BP_USB_OTGISTAT_B_SESS_CHG (2U) //!< Bit position for USB_OTGISTAT_B_SESS_CHG. +#define BM_USB_OTGISTAT_B_SESS_CHG (0x04U) //!< Bit mask for USB_OTGISTAT_B_SESS_CHG. +#define BS_USB_OTGISTAT_B_SESS_CHG (1U) //!< Bit field size in bits for USB_OTGISTAT_B_SESS_CHG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGISTAT_B_SESS_CHG field. +#define BR_USB_OTGISTAT_B_SESS_CHG (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_B_SESS_CHG)) +#endif + +//! @brief Format value for bitfield USB_OTGISTAT_B_SESS_CHG. +#define BF_USB_OTGISTAT_B_SESS_CHG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGISTAT_B_SESS_CHG), uint8_t) & BM_USB_OTGISTAT_B_SESS_CHG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the B_SESS_CHG field to a new value. +#define BW_USB_OTGISTAT_B_SESS_CHG(v) (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_B_SESS_CHG) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGISTAT, field SESSVLDCHG[3] (RW) + * + * This bit is set when a change in VBUS is detected indicating a session valid + * or a session no longer valid. + */ +//@{ +#define BP_USB_OTGISTAT_SESSVLDCHG (3U) //!< Bit position for USB_OTGISTAT_SESSVLDCHG. +#define BM_USB_OTGISTAT_SESSVLDCHG (0x08U) //!< Bit mask for USB_OTGISTAT_SESSVLDCHG. +#define BS_USB_OTGISTAT_SESSVLDCHG (1U) //!< Bit field size in bits for USB_OTGISTAT_SESSVLDCHG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGISTAT_SESSVLDCHG field. +#define BR_USB_OTGISTAT_SESSVLDCHG (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_SESSVLDCHG)) +#endif + +//! @brief Format value for bitfield USB_OTGISTAT_SESSVLDCHG. +#define BF_USB_OTGISTAT_SESSVLDCHG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGISTAT_SESSVLDCHG), uint8_t) & BM_USB_OTGISTAT_SESSVLDCHG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SESSVLDCHG field to a new value. +#define BW_USB_OTGISTAT_SESSVLDCHG(v) (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_SESSVLDCHG) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGISTAT, field LINE_STATE_CHG[5] (RW) + * + * This interrupt is set when the USB line state (CTL[SE0] and CTL[JSTATE] bits) + * are stable without change for 1 millisecond, and the value of the line state + * is different from the last time when the line state was stable. It is set on + * transitions between SE0 and J-state, SE0 and K-state, and J-state and K-state. + * Changes in J-state while SE0 is true do not cause an interrupt. This interrupt + * can be used in detecting Reset, Resume, Connect, and Data Line Pulse + * signaling. + */ +//@{ +#define BP_USB_OTGISTAT_LINE_STATE_CHG (5U) //!< Bit position for USB_OTGISTAT_LINE_STATE_CHG. +#define BM_USB_OTGISTAT_LINE_STATE_CHG (0x20U) //!< Bit mask for USB_OTGISTAT_LINE_STATE_CHG. +#define BS_USB_OTGISTAT_LINE_STATE_CHG (1U) //!< Bit field size in bits for USB_OTGISTAT_LINE_STATE_CHG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGISTAT_LINE_STATE_CHG field. +#define BR_USB_OTGISTAT_LINE_STATE_CHG (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_LINE_STATE_CHG)) +#endif + +//! @brief Format value for bitfield USB_OTGISTAT_LINE_STATE_CHG. +#define BF_USB_OTGISTAT_LINE_STATE_CHG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGISTAT_LINE_STATE_CHG), uint8_t) & BM_USB_OTGISTAT_LINE_STATE_CHG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LINE_STATE_CHG field to a new value. +#define BW_USB_OTGISTAT_LINE_STATE_CHG(v) (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_LINE_STATE_CHG) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGISTAT, field ONEMSEC[6] (RW) + * + * This bit is set when the 1 millisecond timer expires. This bit stays asserted + * until cleared by software. The interrupt must be serviced every millisecond + * to avoid losing 1msec counts. + */ +//@{ +#define BP_USB_OTGISTAT_ONEMSEC (6U) //!< Bit position for USB_OTGISTAT_ONEMSEC. +#define BM_USB_OTGISTAT_ONEMSEC (0x40U) //!< Bit mask for USB_OTGISTAT_ONEMSEC. +#define BS_USB_OTGISTAT_ONEMSEC (1U) //!< Bit field size in bits for USB_OTGISTAT_ONEMSEC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGISTAT_ONEMSEC field. +#define BR_USB_OTGISTAT_ONEMSEC (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_ONEMSEC)) +#endif + +//! @brief Format value for bitfield USB_OTGISTAT_ONEMSEC. +#define BF_USB_OTGISTAT_ONEMSEC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGISTAT_ONEMSEC), uint8_t) & BM_USB_OTGISTAT_ONEMSEC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ONEMSEC field to a new value. +#define BW_USB_OTGISTAT_ONEMSEC(v) (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_ONEMSEC) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGISTAT, field IDCHG[7] (RW) + * + * This bit is set when a change in the ID Signal from the USB connector is + * sensed. + */ +//@{ +#define BP_USB_OTGISTAT_IDCHG (7U) //!< Bit position for USB_OTGISTAT_IDCHG. +#define BM_USB_OTGISTAT_IDCHG (0x80U) //!< Bit mask for USB_OTGISTAT_IDCHG. +#define BS_USB_OTGISTAT_IDCHG (1U) //!< Bit field size in bits for USB_OTGISTAT_IDCHG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGISTAT_IDCHG field. +#define BR_USB_OTGISTAT_IDCHG (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_IDCHG)) +#endif + +//! @brief Format value for bitfield USB_OTGISTAT_IDCHG. +#define BF_USB_OTGISTAT_IDCHG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGISTAT_IDCHG), uint8_t) & BM_USB_OTGISTAT_IDCHG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IDCHG field to a new value. +#define BW_USB_OTGISTAT_IDCHG(v) (BITBAND_ACCESS8(HW_USB_OTGISTAT_ADDR, BP_USB_OTGISTAT_IDCHG) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_OTGICR - OTG Interrupt Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_OTGICR - OTG Interrupt Control register (RW) + * + * Reset value: 0x00U + * + * Enables the corresponding interrupt status bits defined in the OTG Interrupt + * Status Register. + */ +typedef union _hw_usb_otgicr +{ + uint8_t U; + struct _hw_usb_otgicr_bitfields + { + uint8_t AVBUSEN : 1; //!< [0] A VBUS Valid Interrupt Enable + uint8_t RESERVED0 : 1; //!< [1] + uint8_t BSESSEN : 1; //!< [2] B Session END Interrupt Enable + uint8_t SESSVLDEN : 1; //!< [3] Session Valid Interrupt Enable + uint8_t RESERVED1 : 1; //!< [4] + uint8_t LINESTATEEN : 1; //!< [5] Line State Change Interrupt Enable + uint8_t ONEMSECEN : 1; //!< [6] One Millisecond Interrupt Enable + uint8_t IDEN : 1; //!< [7] ID Interrupt Enable + } B; +} hw_usb_otgicr_t; +#endif + +/*! + * @name Constants and macros for entire USB_OTGICR register + */ +//@{ +#define HW_USB_OTGICR_ADDR (REGS_USB_BASE + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_OTGICR (*(__IO hw_usb_otgicr_t *) HW_USB_OTGICR_ADDR) +#define HW_USB_OTGICR_RD() (HW_USB_OTGICR.U) +#define HW_USB_OTGICR_WR(v) (HW_USB_OTGICR.U = (v)) +#define HW_USB_OTGICR_SET(v) (HW_USB_OTGICR_WR(HW_USB_OTGICR_RD() | (v))) +#define HW_USB_OTGICR_CLR(v) (HW_USB_OTGICR_WR(HW_USB_OTGICR_RD() & ~(v))) +#define HW_USB_OTGICR_TOG(v) (HW_USB_OTGICR_WR(HW_USB_OTGICR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_OTGICR bitfields + */ + +/*! + * @name Register USB_OTGICR, field AVBUSEN[0] (RW) + * + * Values: + * - 0 - Disables the AVBUSCHG interrupt. + * - 1 - Enables the AVBUSCHG interrupt. + */ +//@{ +#define BP_USB_OTGICR_AVBUSEN (0U) //!< Bit position for USB_OTGICR_AVBUSEN. +#define BM_USB_OTGICR_AVBUSEN (0x01U) //!< Bit mask for USB_OTGICR_AVBUSEN. +#define BS_USB_OTGICR_AVBUSEN (1U) //!< Bit field size in bits for USB_OTGICR_AVBUSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGICR_AVBUSEN field. +#define BR_USB_OTGICR_AVBUSEN (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_AVBUSEN)) +#endif + +//! @brief Format value for bitfield USB_OTGICR_AVBUSEN. +#define BF_USB_OTGICR_AVBUSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGICR_AVBUSEN), uint8_t) & BM_USB_OTGICR_AVBUSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AVBUSEN field to a new value. +#define BW_USB_OTGICR_AVBUSEN(v) (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_AVBUSEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGICR, field BSESSEN[2] (RW) + * + * Values: + * - 0 - Disables the B_SESS_CHG interrupt. + * - 1 - Enables the B_SESS_CHG interrupt. + */ +//@{ +#define BP_USB_OTGICR_BSESSEN (2U) //!< Bit position for USB_OTGICR_BSESSEN. +#define BM_USB_OTGICR_BSESSEN (0x04U) //!< Bit mask for USB_OTGICR_BSESSEN. +#define BS_USB_OTGICR_BSESSEN (1U) //!< Bit field size in bits for USB_OTGICR_BSESSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGICR_BSESSEN field. +#define BR_USB_OTGICR_BSESSEN (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_BSESSEN)) +#endif + +//! @brief Format value for bitfield USB_OTGICR_BSESSEN. +#define BF_USB_OTGICR_BSESSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGICR_BSESSEN), uint8_t) & BM_USB_OTGICR_BSESSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BSESSEN field to a new value. +#define BW_USB_OTGICR_BSESSEN(v) (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_BSESSEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGICR, field SESSVLDEN[3] (RW) + * + * Values: + * - 0 - Disables the SESSVLDCHG interrupt. + * - 1 - Enables the SESSVLDCHG interrupt. + */ +//@{ +#define BP_USB_OTGICR_SESSVLDEN (3U) //!< Bit position for USB_OTGICR_SESSVLDEN. +#define BM_USB_OTGICR_SESSVLDEN (0x08U) //!< Bit mask for USB_OTGICR_SESSVLDEN. +#define BS_USB_OTGICR_SESSVLDEN (1U) //!< Bit field size in bits for USB_OTGICR_SESSVLDEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGICR_SESSVLDEN field. +#define BR_USB_OTGICR_SESSVLDEN (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_SESSVLDEN)) +#endif + +//! @brief Format value for bitfield USB_OTGICR_SESSVLDEN. +#define BF_USB_OTGICR_SESSVLDEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGICR_SESSVLDEN), uint8_t) & BM_USB_OTGICR_SESSVLDEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SESSVLDEN field to a new value. +#define BW_USB_OTGICR_SESSVLDEN(v) (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_SESSVLDEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGICR, field LINESTATEEN[5] (RW) + * + * Values: + * - 0 - Disables the LINE_STAT_CHG interrupt. + * - 1 - Enables the LINE_STAT_CHG interrupt. + */ +//@{ +#define BP_USB_OTGICR_LINESTATEEN (5U) //!< Bit position for USB_OTGICR_LINESTATEEN. +#define BM_USB_OTGICR_LINESTATEEN (0x20U) //!< Bit mask for USB_OTGICR_LINESTATEEN. +#define BS_USB_OTGICR_LINESTATEEN (1U) //!< Bit field size in bits for USB_OTGICR_LINESTATEEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGICR_LINESTATEEN field. +#define BR_USB_OTGICR_LINESTATEEN (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_LINESTATEEN)) +#endif + +//! @brief Format value for bitfield USB_OTGICR_LINESTATEEN. +#define BF_USB_OTGICR_LINESTATEEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGICR_LINESTATEEN), uint8_t) & BM_USB_OTGICR_LINESTATEEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LINESTATEEN field to a new value. +#define BW_USB_OTGICR_LINESTATEEN(v) (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_LINESTATEEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGICR, field ONEMSECEN[6] (RW) + * + * Values: + * - 0 - Diables the 1ms timer interrupt. + * - 1 - Enables the 1ms timer interrupt. + */ +//@{ +#define BP_USB_OTGICR_ONEMSECEN (6U) //!< Bit position for USB_OTGICR_ONEMSECEN. +#define BM_USB_OTGICR_ONEMSECEN (0x40U) //!< Bit mask for USB_OTGICR_ONEMSECEN. +#define BS_USB_OTGICR_ONEMSECEN (1U) //!< Bit field size in bits for USB_OTGICR_ONEMSECEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGICR_ONEMSECEN field. +#define BR_USB_OTGICR_ONEMSECEN (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_ONEMSECEN)) +#endif + +//! @brief Format value for bitfield USB_OTGICR_ONEMSECEN. +#define BF_USB_OTGICR_ONEMSECEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGICR_ONEMSECEN), uint8_t) & BM_USB_OTGICR_ONEMSECEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ONEMSECEN field to a new value. +#define BW_USB_OTGICR_ONEMSECEN(v) (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_ONEMSECEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGICR, field IDEN[7] (RW) + * + * Values: + * - 0 - The ID interrupt is disabled + * - 1 - The ID interrupt is enabled + */ +//@{ +#define BP_USB_OTGICR_IDEN (7U) //!< Bit position for USB_OTGICR_IDEN. +#define BM_USB_OTGICR_IDEN (0x80U) //!< Bit mask for USB_OTGICR_IDEN. +#define BS_USB_OTGICR_IDEN (1U) //!< Bit field size in bits for USB_OTGICR_IDEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGICR_IDEN field. +#define BR_USB_OTGICR_IDEN (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_IDEN)) +#endif + +//! @brief Format value for bitfield USB_OTGICR_IDEN. +#define BF_USB_OTGICR_IDEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGICR_IDEN), uint8_t) & BM_USB_OTGICR_IDEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IDEN field to a new value. +#define BW_USB_OTGICR_IDEN(v) (BITBAND_ACCESS8(HW_USB_OTGICR_ADDR, BP_USB_OTGICR_IDEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_OTGSTAT - OTG Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_OTGSTAT - OTG Status register (RW) + * + * Reset value: 0x00U + * + * Displays the actual value from the external comparator outputs of the ID pin + * and VBUS. + */ +typedef union _hw_usb_otgstat +{ + uint8_t U; + struct _hw_usb_otgstat_bitfields + { + uint8_t AVBUSVLD : 1; //!< [0] A VBUS Valid + uint8_t RESERVED0 : 1; //!< [1] + uint8_t BSESSEND : 1; //!< [2] B Session End + uint8_t SESS_VLD : 1; //!< [3] Session Valid + uint8_t RESERVED1 : 1; //!< [4] + uint8_t LINESTATESTABLE : 1; //!< [5] + uint8_t ONEMSECEN : 1; //!< [6] + uint8_t ID : 1; //!< [7] + } B; +} hw_usb_otgstat_t; +#endif + +/*! + * @name Constants and macros for entire USB_OTGSTAT register + */ +//@{ +#define HW_USB_OTGSTAT_ADDR (REGS_USB_BASE + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_OTGSTAT (*(__IO hw_usb_otgstat_t *) HW_USB_OTGSTAT_ADDR) +#define HW_USB_OTGSTAT_RD() (HW_USB_OTGSTAT.U) +#define HW_USB_OTGSTAT_WR(v) (HW_USB_OTGSTAT.U = (v)) +#define HW_USB_OTGSTAT_SET(v) (HW_USB_OTGSTAT_WR(HW_USB_OTGSTAT_RD() | (v))) +#define HW_USB_OTGSTAT_CLR(v) (HW_USB_OTGSTAT_WR(HW_USB_OTGSTAT_RD() & ~(v))) +#define HW_USB_OTGSTAT_TOG(v) (HW_USB_OTGSTAT_WR(HW_USB_OTGSTAT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_OTGSTAT bitfields + */ + +/*! + * @name Register USB_OTGSTAT, field AVBUSVLD[0] (RW) + * + * Values: + * - 0 - The VBUS voltage is below the A VBUS Valid threshold. + * - 1 - The VBUS voltage is above the A VBUS Valid threshold. + */ +//@{ +#define BP_USB_OTGSTAT_AVBUSVLD (0U) //!< Bit position for USB_OTGSTAT_AVBUSVLD. +#define BM_USB_OTGSTAT_AVBUSVLD (0x01U) //!< Bit mask for USB_OTGSTAT_AVBUSVLD. +#define BS_USB_OTGSTAT_AVBUSVLD (1U) //!< Bit field size in bits for USB_OTGSTAT_AVBUSVLD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGSTAT_AVBUSVLD field. +#define BR_USB_OTGSTAT_AVBUSVLD (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_AVBUSVLD)) +#endif + +//! @brief Format value for bitfield USB_OTGSTAT_AVBUSVLD. +#define BF_USB_OTGSTAT_AVBUSVLD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGSTAT_AVBUSVLD), uint8_t) & BM_USB_OTGSTAT_AVBUSVLD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the AVBUSVLD field to a new value. +#define BW_USB_OTGSTAT_AVBUSVLD(v) (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_AVBUSVLD) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGSTAT, field BSESSEND[2] (RW) + * + * Values: + * - 0 - The VBUS voltage is above the B session end threshold. + * - 1 - The VBUS voltage is below the B session end threshold. + */ +//@{ +#define BP_USB_OTGSTAT_BSESSEND (2U) //!< Bit position for USB_OTGSTAT_BSESSEND. +#define BM_USB_OTGSTAT_BSESSEND (0x04U) //!< Bit mask for USB_OTGSTAT_BSESSEND. +#define BS_USB_OTGSTAT_BSESSEND (1U) //!< Bit field size in bits for USB_OTGSTAT_BSESSEND. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGSTAT_BSESSEND field. +#define BR_USB_OTGSTAT_BSESSEND (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_BSESSEND)) +#endif + +//! @brief Format value for bitfield USB_OTGSTAT_BSESSEND. +#define BF_USB_OTGSTAT_BSESSEND(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGSTAT_BSESSEND), uint8_t) & BM_USB_OTGSTAT_BSESSEND) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BSESSEND field to a new value. +#define BW_USB_OTGSTAT_BSESSEND(v) (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_BSESSEND) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGSTAT, field SESS_VLD[3] (RW) + * + * Values: + * - 0 - The VBUS voltage is below the B session valid threshold + * - 1 - The VBUS voltage is above the B session valid threshold. + */ +//@{ +#define BP_USB_OTGSTAT_SESS_VLD (3U) //!< Bit position for USB_OTGSTAT_SESS_VLD. +#define BM_USB_OTGSTAT_SESS_VLD (0x08U) //!< Bit mask for USB_OTGSTAT_SESS_VLD. +#define BS_USB_OTGSTAT_SESS_VLD (1U) //!< Bit field size in bits for USB_OTGSTAT_SESS_VLD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGSTAT_SESS_VLD field. +#define BR_USB_OTGSTAT_SESS_VLD (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_SESS_VLD)) +#endif + +//! @brief Format value for bitfield USB_OTGSTAT_SESS_VLD. +#define BF_USB_OTGSTAT_SESS_VLD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGSTAT_SESS_VLD), uint8_t) & BM_USB_OTGSTAT_SESS_VLD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SESS_VLD field to a new value. +#define BW_USB_OTGSTAT_SESS_VLD(v) (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_SESS_VLD) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGSTAT, field LINESTATESTABLE[5] (RW) + * + * Indicates that the internal signals that control the LINE_STATE_CHG field of + * OTGISTAT are stable for at least 1 millisecond. First read LINE_STATE_CHG + * field and then read this field. If this field reads as 1, then the value of + * LINE_STATE_CHG can be considered stable. + * + * Values: + * - 0 - The LINE_STAT_CHG bit is not yet stable. + * - 1 - The LINE_STAT_CHG bit has been debounced and is stable. + */ +//@{ +#define BP_USB_OTGSTAT_LINESTATESTABLE (5U) //!< Bit position for USB_OTGSTAT_LINESTATESTABLE. +#define BM_USB_OTGSTAT_LINESTATESTABLE (0x20U) //!< Bit mask for USB_OTGSTAT_LINESTATESTABLE. +#define BS_USB_OTGSTAT_LINESTATESTABLE (1U) //!< Bit field size in bits for USB_OTGSTAT_LINESTATESTABLE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGSTAT_LINESTATESTABLE field. +#define BR_USB_OTGSTAT_LINESTATESTABLE (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_LINESTATESTABLE)) +#endif + +//! @brief Format value for bitfield USB_OTGSTAT_LINESTATESTABLE. +#define BF_USB_OTGSTAT_LINESTATESTABLE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGSTAT_LINESTATESTABLE), uint8_t) & BM_USB_OTGSTAT_LINESTATESTABLE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LINESTATESTABLE field to a new value. +#define BW_USB_OTGSTAT_LINESTATESTABLE(v) (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_LINESTATESTABLE) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGSTAT, field ONEMSECEN[6] (RW) + * + * This bit is reserved for the 1ms count, but it is not useful to software. + */ +//@{ +#define BP_USB_OTGSTAT_ONEMSECEN (6U) //!< Bit position for USB_OTGSTAT_ONEMSECEN. +#define BM_USB_OTGSTAT_ONEMSECEN (0x40U) //!< Bit mask for USB_OTGSTAT_ONEMSECEN. +#define BS_USB_OTGSTAT_ONEMSECEN (1U) //!< Bit field size in bits for USB_OTGSTAT_ONEMSECEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGSTAT_ONEMSECEN field. +#define BR_USB_OTGSTAT_ONEMSECEN (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_ONEMSECEN)) +#endif + +//! @brief Format value for bitfield USB_OTGSTAT_ONEMSECEN. +#define BF_USB_OTGSTAT_ONEMSECEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGSTAT_ONEMSECEN), uint8_t) & BM_USB_OTGSTAT_ONEMSECEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ONEMSECEN field to a new value. +#define BW_USB_OTGSTAT_ONEMSECEN(v) (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_ONEMSECEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGSTAT, field ID[7] (RW) + * + * Indicates the current state of the ID pin on the USB connector + * + * Values: + * - 0 - Indicates a Type A cable is plugged into the USB connector. + * - 1 - Indicates no cable is attached or a Type B cable is plugged into the + * USB connector. + */ +//@{ +#define BP_USB_OTGSTAT_ID (7U) //!< Bit position for USB_OTGSTAT_ID. +#define BM_USB_OTGSTAT_ID (0x80U) //!< Bit mask for USB_OTGSTAT_ID. +#define BS_USB_OTGSTAT_ID (1U) //!< Bit field size in bits for USB_OTGSTAT_ID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGSTAT_ID field. +#define BR_USB_OTGSTAT_ID (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_ID)) +#endif + +//! @brief Format value for bitfield USB_OTGSTAT_ID. +#define BF_USB_OTGSTAT_ID(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGSTAT_ID), uint8_t) & BM_USB_OTGSTAT_ID) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ID field to a new value. +#define BW_USB_OTGSTAT_ID(v) (BITBAND_ACCESS8(HW_USB_OTGSTAT_ADDR, BP_USB_OTGSTAT_ID) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_OTGCTL - OTG Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_OTGCTL - OTG Control register (RW) + * + * Reset value: 0x00U + * + * Controls the operation of VBUS and Data Line termination resistors. + */ +typedef union _hw_usb_otgctl +{ + uint8_t U; + struct _hw_usb_otgctl_bitfields + { + uint8_t RESERVED0 : 2; //!< [1:0] + uint8_t OTGEN : 1; //!< [2] On-The-Go pullup/pulldown resistor enable + uint8_t RESERVED1 : 1; //!< [3] + uint8_t DMLOW : 1; //!< [4] D- Data Line pull-down resistor enable + uint8_t DPLOW : 1; //!< [5] D+ Data Line pull-down resistor enable + uint8_t RESERVED2 : 1; //!< [6] + uint8_t DPHIGH : 1; //!< [7] D+ Data Line pullup resistor enable + } B; +} hw_usb_otgctl_t; +#endif + +/*! + * @name Constants and macros for entire USB_OTGCTL register + */ +//@{ +#define HW_USB_OTGCTL_ADDR (REGS_USB_BASE + 0x1CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_OTGCTL (*(__IO hw_usb_otgctl_t *) HW_USB_OTGCTL_ADDR) +#define HW_USB_OTGCTL_RD() (HW_USB_OTGCTL.U) +#define HW_USB_OTGCTL_WR(v) (HW_USB_OTGCTL.U = (v)) +#define HW_USB_OTGCTL_SET(v) (HW_USB_OTGCTL_WR(HW_USB_OTGCTL_RD() | (v))) +#define HW_USB_OTGCTL_CLR(v) (HW_USB_OTGCTL_WR(HW_USB_OTGCTL_RD() & ~(v))) +#define HW_USB_OTGCTL_TOG(v) (HW_USB_OTGCTL_WR(HW_USB_OTGCTL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_OTGCTL bitfields + */ + +/*! + * @name Register USB_OTGCTL, field OTGEN[2] (RW) + * + * Values: + * - 0 - If USB_EN is 1 and HOST_MODE is 0 in the Control Register (CTL), then + * the D+ Data Line pull-up resistors are enabled. If HOST_MODE is 1 the D+ + * and D- Data Line pull-down resistors are engaged. + * - 1 - The pull-up and pull-down controls in this register are used. + */ +//@{ +#define BP_USB_OTGCTL_OTGEN (2U) //!< Bit position for USB_OTGCTL_OTGEN. +#define BM_USB_OTGCTL_OTGEN (0x04U) //!< Bit mask for USB_OTGCTL_OTGEN. +#define BS_USB_OTGCTL_OTGEN (1U) //!< Bit field size in bits for USB_OTGCTL_OTGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGCTL_OTGEN field. +#define BR_USB_OTGCTL_OTGEN (BITBAND_ACCESS8(HW_USB_OTGCTL_ADDR, BP_USB_OTGCTL_OTGEN)) +#endif + +//! @brief Format value for bitfield USB_OTGCTL_OTGEN. +#define BF_USB_OTGCTL_OTGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGCTL_OTGEN), uint8_t) & BM_USB_OTGCTL_OTGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OTGEN field to a new value. +#define BW_USB_OTGCTL_OTGEN(v) (BITBAND_ACCESS8(HW_USB_OTGCTL_ADDR, BP_USB_OTGCTL_OTGEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGCTL, field DMLOW[4] (RW) + * + * Values: + * - 0 - D- pulldown resistor is not enabled. + * - 1 - D- pulldown resistor is enabled. + */ +//@{ +#define BP_USB_OTGCTL_DMLOW (4U) //!< Bit position for USB_OTGCTL_DMLOW. +#define BM_USB_OTGCTL_DMLOW (0x10U) //!< Bit mask for USB_OTGCTL_DMLOW. +#define BS_USB_OTGCTL_DMLOW (1U) //!< Bit field size in bits for USB_OTGCTL_DMLOW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGCTL_DMLOW field. +#define BR_USB_OTGCTL_DMLOW (BITBAND_ACCESS8(HW_USB_OTGCTL_ADDR, BP_USB_OTGCTL_DMLOW)) +#endif + +//! @brief Format value for bitfield USB_OTGCTL_DMLOW. +#define BF_USB_OTGCTL_DMLOW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGCTL_DMLOW), uint8_t) & BM_USB_OTGCTL_DMLOW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMLOW field to a new value. +#define BW_USB_OTGCTL_DMLOW(v) (BITBAND_ACCESS8(HW_USB_OTGCTL_ADDR, BP_USB_OTGCTL_DMLOW) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGCTL, field DPLOW[5] (RW) + * + * This bit should always be enabled together with bit 4 (DMLOW) + * + * Values: + * - 0 - D+ pulldown resistor is not enabled. + * - 1 - D+ pulldown resistor is enabled. + */ +//@{ +#define BP_USB_OTGCTL_DPLOW (5U) //!< Bit position for USB_OTGCTL_DPLOW. +#define BM_USB_OTGCTL_DPLOW (0x20U) //!< Bit mask for USB_OTGCTL_DPLOW. +#define BS_USB_OTGCTL_DPLOW (1U) //!< Bit field size in bits for USB_OTGCTL_DPLOW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGCTL_DPLOW field. +#define BR_USB_OTGCTL_DPLOW (BITBAND_ACCESS8(HW_USB_OTGCTL_ADDR, BP_USB_OTGCTL_DPLOW)) +#endif + +//! @brief Format value for bitfield USB_OTGCTL_DPLOW. +#define BF_USB_OTGCTL_DPLOW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGCTL_DPLOW), uint8_t) & BM_USB_OTGCTL_DPLOW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DPLOW field to a new value. +#define BW_USB_OTGCTL_DPLOW(v) (BITBAND_ACCESS8(HW_USB_OTGCTL_ADDR, BP_USB_OTGCTL_DPLOW) = (v)) +#endif +//@} + +/*! + * @name Register USB_OTGCTL, field DPHIGH[7] (RW) + * + * Values: + * - 0 - D+ pullup resistor is not enabled + * - 1 - D+ pullup resistor is enabled + */ +//@{ +#define BP_USB_OTGCTL_DPHIGH (7U) //!< Bit position for USB_OTGCTL_DPHIGH. +#define BM_USB_OTGCTL_DPHIGH (0x80U) //!< Bit mask for USB_OTGCTL_DPHIGH. +#define BS_USB_OTGCTL_DPHIGH (1U) //!< Bit field size in bits for USB_OTGCTL_DPHIGH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OTGCTL_DPHIGH field. +#define BR_USB_OTGCTL_DPHIGH (BITBAND_ACCESS8(HW_USB_OTGCTL_ADDR, BP_USB_OTGCTL_DPHIGH)) +#endif + +//! @brief Format value for bitfield USB_OTGCTL_DPHIGH. +#define BF_USB_OTGCTL_DPHIGH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_OTGCTL_DPHIGH), uint8_t) & BM_USB_OTGCTL_DPHIGH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DPHIGH field to a new value. +#define BW_USB_OTGCTL_DPHIGH(v) (BITBAND_ACCESS8(HW_USB_OTGCTL_ADDR, BP_USB_OTGCTL_DPHIGH) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_ISTAT - Interrupt Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_ISTAT - Interrupt Status register (W1C) + * + * Reset value: 0x00U + * + * Contains fields for each of the interrupt sources within the USB Module. Each + * of these fields are qualified with their respective interrupt enable bits. + * All fields of this register are logically OR'd together along with the OTG + * Interrupt Status Register (OTGSTAT) to form a single interrupt source for the + * processor's interrupt controller. After an interrupt bit has been set it may only + * be cleared by writing a one to the respective interrupt bit. This register + * contains the value of 0x00 after a reset. + */ +typedef union _hw_usb_istat +{ + uint8_t U; + struct _hw_usb_istat_bitfields + { + uint8_t USBRST : 1; //!< [0] + uint8_t ERROR : 1; //!< [1] + uint8_t SOFTOK : 1; //!< [2] + uint8_t TOKDNE : 1; //!< [3] + uint8_t SLEEP : 1; //!< [4] + uint8_t RESUME : 1; //!< [5] + uint8_t ATTACH : 1; //!< [6] Attach Interrupt + uint8_t STALL : 1; //!< [7] Stall Interrupt + } B; +} hw_usb_istat_t; +#endif + +/*! + * @name Constants and macros for entire USB_ISTAT register + */ +//@{ +#define HW_USB_ISTAT_ADDR (REGS_USB_BASE + 0x80U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_ISTAT (*(__IO hw_usb_istat_t *) HW_USB_ISTAT_ADDR) +#define HW_USB_ISTAT_RD() (HW_USB_ISTAT.U) +#define HW_USB_ISTAT_WR(v) (HW_USB_ISTAT.U = (v)) +#define HW_USB_ISTAT_SET(v) (HW_USB_ISTAT_WR(HW_USB_ISTAT_RD() | (v))) +#define HW_USB_ISTAT_CLR(v) (HW_USB_ISTAT_WR(HW_USB_ISTAT_RD() & ~(v))) +#define HW_USB_ISTAT_TOG(v) (HW_USB_ISTAT_WR(HW_USB_ISTAT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_ISTAT bitfields + */ + +/*! + * @name Register USB_ISTAT, field USBRST[0] (W1C) + * + * This bit is set when the USB Module has decoded a valid USB reset. This + * informs the processor that it should write 0x00 into the address register and + * enable endpoint 0. USBRST is set after a USB reset has been detected for 2.5 + * microseconds. It is not asserted again until the USB reset condition has been + * removed and then reasserted. + */ +//@{ +#define BP_USB_ISTAT_USBRST (0U) //!< Bit position for USB_ISTAT_USBRST. +#define BM_USB_ISTAT_USBRST (0x01U) //!< Bit mask for USB_ISTAT_USBRST. +#define BS_USB_ISTAT_USBRST (1U) //!< Bit field size in bits for USB_ISTAT_USBRST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ISTAT_USBRST field. +#define BR_USB_ISTAT_USBRST (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_USBRST)) +#endif + +//! @brief Format value for bitfield USB_ISTAT_USBRST. +#define BF_USB_ISTAT_USBRST(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ISTAT_USBRST), uint8_t) & BM_USB_ISTAT_USBRST) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBRST field to a new value. +#define BW_USB_ISTAT_USBRST(v) (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_USBRST) = (v)) +#endif +//@} + +/*! + * @name Register USB_ISTAT, field ERROR[1] (W1C) + * + * This bit is set when any of the error conditions within Error Interrupt + * Status (ERRSTAT) register occur. The processor must then read the ERRSTAT register + * to determine the source of the error. + */ +//@{ +#define BP_USB_ISTAT_ERROR (1U) //!< Bit position for USB_ISTAT_ERROR. +#define BM_USB_ISTAT_ERROR (0x02U) //!< Bit mask for USB_ISTAT_ERROR. +#define BS_USB_ISTAT_ERROR (1U) //!< Bit field size in bits for USB_ISTAT_ERROR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ISTAT_ERROR field. +#define BR_USB_ISTAT_ERROR (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_ERROR)) +#endif + +//! @brief Format value for bitfield USB_ISTAT_ERROR. +#define BF_USB_ISTAT_ERROR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ISTAT_ERROR), uint8_t) & BM_USB_ISTAT_ERROR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERROR field to a new value. +#define BW_USB_ISTAT_ERROR(v) (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_ERROR) = (v)) +#endif +//@} + +/*! + * @name Register USB_ISTAT, field SOFTOK[2] (W1C) + * + * This bit is set when the USB Module receives a Start Of Frame (SOF) token. In + * Host mode this field is set when the SOF threshold is reached, so that + * software can prepare for the next SOF. + */ +//@{ +#define BP_USB_ISTAT_SOFTOK (2U) //!< Bit position for USB_ISTAT_SOFTOK. +#define BM_USB_ISTAT_SOFTOK (0x04U) //!< Bit mask for USB_ISTAT_SOFTOK. +#define BS_USB_ISTAT_SOFTOK (1U) //!< Bit field size in bits for USB_ISTAT_SOFTOK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ISTAT_SOFTOK field. +#define BR_USB_ISTAT_SOFTOK (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_SOFTOK)) +#endif + +//! @brief Format value for bitfield USB_ISTAT_SOFTOK. +#define BF_USB_ISTAT_SOFTOK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ISTAT_SOFTOK), uint8_t) & BM_USB_ISTAT_SOFTOK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SOFTOK field to a new value. +#define BW_USB_ISTAT_SOFTOK(v) (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_SOFTOK) = (v)) +#endif +//@} + +/*! + * @name Register USB_ISTAT, field TOKDNE[3] (W1C) + * + * This bit is set when the current token being processed has completed. The + * processor must immediately read the STATUS (STAT) register to determine the + * EndPoint and BD used for this token. Clearing this bit (by writing a one) causes + * STAT to be cleared or the STAT holding register to be loaded into the STAT + * register. + */ +//@{ +#define BP_USB_ISTAT_TOKDNE (3U) //!< Bit position for USB_ISTAT_TOKDNE. +#define BM_USB_ISTAT_TOKDNE (0x08U) //!< Bit mask for USB_ISTAT_TOKDNE. +#define BS_USB_ISTAT_TOKDNE (1U) //!< Bit field size in bits for USB_ISTAT_TOKDNE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ISTAT_TOKDNE field. +#define BR_USB_ISTAT_TOKDNE (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_TOKDNE)) +#endif + +//! @brief Format value for bitfield USB_ISTAT_TOKDNE. +#define BF_USB_ISTAT_TOKDNE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ISTAT_TOKDNE), uint8_t) & BM_USB_ISTAT_TOKDNE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOKDNE field to a new value. +#define BW_USB_ISTAT_TOKDNE(v) (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_TOKDNE) = (v)) +#endif +//@} + +/*! + * @name Register USB_ISTAT, field SLEEP[4] (W1C) + * + * This bit is set when the USB Module detects a constant idle on the USB bus + * for 3 ms. The sleep timer is reset by activity on the USB bus. + */ +//@{ +#define BP_USB_ISTAT_SLEEP (4U) //!< Bit position for USB_ISTAT_SLEEP. +#define BM_USB_ISTAT_SLEEP (0x10U) //!< Bit mask for USB_ISTAT_SLEEP. +#define BS_USB_ISTAT_SLEEP (1U) //!< Bit field size in bits for USB_ISTAT_SLEEP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ISTAT_SLEEP field. +#define BR_USB_ISTAT_SLEEP (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_SLEEP)) +#endif + +//! @brief Format value for bitfield USB_ISTAT_SLEEP. +#define BF_USB_ISTAT_SLEEP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ISTAT_SLEEP), uint8_t) & BM_USB_ISTAT_SLEEP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SLEEP field to a new value. +#define BW_USB_ISTAT_SLEEP(v) (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_SLEEP) = (v)) +#endif +//@} + +/*! + * @name Register USB_ISTAT, field RESUME[5] (W1C) + * + * This bit is set when a K-state is observed on the DP/DM signals for 2.5 us. + * When not in suspend mode this interrupt must be disabled. + */ +//@{ +#define BP_USB_ISTAT_RESUME (5U) //!< Bit position for USB_ISTAT_RESUME. +#define BM_USB_ISTAT_RESUME (0x20U) //!< Bit mask for USB_ISTAT_RESUME. +#define BS_USB_ISTAT_RESUME (1U) //!< Bit field size in bits for USB_ISTAT_RESUME. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ISTAT_RESUME field. +#define BR_USB_ISTAT_RESUME (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_RESUME)) +#endif + +//! @brief Format value for bitfield USB_ISTAT_RESUME. +#define BF_USB_ISTAT_RESUME(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ISTAT_RESUME), uint8_t) & BM_USB_ISTAT_RESUME) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RESUME field to a new value. +#define BW_USB_ISTAT_RESUME(v) (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_RESUME) = (v)) +#endif +//@} + +/*! + * @name Register USB_ISTAT, field ATTACH[6] (W1C) + * + * This bit is set when the USB Module detects an attach of a USB device. This + * signal is only valid if HOSTMODEEN is true. This interrupt signifies that a + * peripheral is now present and must be configured; it is asserted if there have + * been no transitions on the USB for 2.5 us and the current bus state is not SE0." + */ +//@{ +#define BP_USB_ISTAT_ATTACH (6U) //!< Bit position for USB_ISTAT_ATTACH. +#define BM_USB_ISTAT_ATTACH (0x40U) //!< Bit mask for USB_ISTAT_ATTACH. +#define BS_USB_ISTAT_ATTACH (1U) //!< Bit field size in bits for USB_ISTAT_ATTACH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ISTAT_ATTACH field. +#define BR_USB_ISTAT_ATTACH (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_ATTACH)) +#endif + +//! @brief Format value for bitfield USB_ISTAT_ATTACH. +#define BF_USB_ISTAT_ATTACH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ISTAT_ATTACH), uint8_t) & BM_USB_ISTAT_ATTACH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ATTACH field to a new value. +#define BW_USB_ISTAT_ATTACH(v) (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_ATTACH) = (v)) +#endif +//@} + +/*! + * @name Register USB_ISTAT, field STALL[7] (W1C) + * + * In Target mode this bit is asserted when a STALL handshake is sent by the + * SIE. In Host mode this bit is set when the USB Module detects a STALL acknowledge + * during the handshake phase of a USB transaction.This interrupt can be used to + * determine whether the last USB transaction was completed successfully or + * stalled. + */ +//@{ +#define BP_USB_ISTAT_STALL (7U) //!< Bit position for USB_ISTAT_STALL. +#define BM_USB_ISTAT_STALL (0x80U) //!< Bit mask for USB_ISTAT_STALL. +#define BS_USB_ISTAT_STALL (1U) //!< Bit field size in bits for USB_ISTAT_STALL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ISTAT_STALL field. +#define BR_USB_ISTAT_STALL (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_STALL)) +#endif + +//! @brief Format value for bitfield USB_ISTAT_STALL. +#define BF_USB_ISTAT_STALL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ISTAT_STALL), uint8_t) & BM_USB_ISTAT_STALL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STALL field to a new value. +#define BW_USB_ISTAT_STALL(v) (BITBAND_ACCESS8(HW_USB_ISTAT_ADDR, BP_USB_ISTAT_STALL) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_INTEN - Interrupt Enable register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_INTEN - Interrupt Enable register (RW) + * + * Reset value: 0x00U + * + * Contains enable fields for each of the interrupt sources within the USB + * Module. Setting any of these bits enables the respective interrupt source in the + * ISTAT register. This register contains the value of 0x00 after a reset. + */ +typedef union _hw_usb_inten +{ + uint8_t U; + struct _hw_usb_inten_bitfields + { + uint8_t USBRSTEN : 1; //!< [0] USBRST Interrupt Enable + uint8_t ERROREN : 1; //!< [1] ERROR Interrupt Enable + uint8_t SOFTOKEN : 1; //!< [2] SOFTOK Interrupt Enable + uint8_t TOKDNEEN : 1; //!< [3] TOKDNE Interrupt Enable + uint8_t SLEEPEN : 1; //!< [4] SLEEP Interrupt Enable + uint8_t RESUMEEN : 1; //!< [5] RESUME Interrupt Enable + uint8_t ATTACHEN : 1; //!< [6] ATTACH Interrupt Enable + uint8_t STALLEN : 1; //!< [7] STALL Interrupt Enable + } B; +} hw_usb_inten_t; +#endif + +/*! + * @name Constants and macros for entire USB_INTEN register + */ +//@{ +#define HW_USB_INTEN_ADDR (REGS_USB_BASE + 0x84U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_INTEN (*(__IO hw_usb_inten_t *) HW_USB_INTEN_ADDR) +#define HW_USB_INTEN_RD() (HW_USB_INTEN.U) +#define HW_USB_INTEN_WR(v) (HW_USB_INTEN.U = (v)) +#define HW_USB_INTEN_SET(v) (HW_USB_INTEN_WR(HW_USB_INTEN_RD() | (v))) +#define HW_USB_INTEN_CLR(v) (HW_USB_INTEN_WR(HW_USB_INTEN_RD() & ~(v))) +#define HW_USB_INTEN_TOG(v) (HW_USB_INTEN_WR(HW_USB_INTEN_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_INTEN bitfields + */ + +/*! + * @name Register USB_INTEN, field USBRSTEN[0] (RW) + * + * Values: + * - 0 - Disables the USBRST interrupt. + * - 1 - Enables the USBRST interrupt. + */ +//@{ +#define BP_USB_INTEN_USBRSTEN (0U) //!< Bit position for USB_INTEN_USBRSTEN. +#define BM_USB_INTEN_USBRSTEN (0x01U) //!< Bit mask for USB_INTEN_USBRSTEN. +#define BS_USB_INTEN_USBRSTEN (1U) //!< Bit field size in bits for USB_INTEN_USBRSTEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_INTEN_USBRSTEN field. +#define BR_USB_INTEN_USBRSTEN (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_USBRSTEN)) +#endif + +//! @brief Format value for bitfield USB_INTEN_USBRSTEN. +#define BF_USB_INTEN_USBRSTEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_INTEN_USBRSTEN), uint8_t) & BM_USB_INTEN_USBRSTEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBRSTEN field to a new value. +#define BW_USB_INTEN_USBRSTEN(v) (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_USBRSTEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_INTEN, field ERROREN[1] (RW) + * + * Values: + * - 0 - Disables the ERROR interrupt. + * - 1 - Enables the ERROR interrupt. + */ +//@{ +#define BP_USB_INTEN_ERROREN (1U) //!< Bit position for USB_INTEN_ERROREN. +#define BM_USB_INTEN_ERROREN (0x02U) //!< Bit mask for USB_INTEN_ERROREN. +#define BS_USB_INTEN_ERROREN (1U) //!< Bit field size in bits for USB_INTEN_ERROREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_INTEN_ERROREN field. +#define BR_USB_INTEN_ERROREN (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_ERROREN)) +#endif + +//! @brief Format value for bitfield USB_INTEN_ERROREN. +#define BF_USB_INTEN_ERROREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_INTEN_ERROREN), uint8_t) & BM_USB_INTEN_ERROREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ERROREN field to a new value. +#define BW_USB_INTEN_ERROREN(v) (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_ERROREN) = (v)) +#endif +//@} + +/*! + * @name Register USB_INTEN, field SOFTOKEN[2] (RW) + * + * Values: + * - 0 - Disbles the SOFTOK interrupt. + * - 1 - Enables the SOFTOK interrupt. + */ +//@{ +#define BP_USB_INTEN_SOFTOKEN (2U) //!< Bit position for USB_INTEN_SOFTOKEN. +#define BM_USB_INTEN_SOFTOKEN (0x04U) //!< Bit mask for USB_INTEN_SOFTOKEN. +#define BS_USB_INTEN_SOFTOKEN (1U) //!< Bit field size in bits for USB_INTEN_SOFTOKEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_INTEN_SOFTOKEN field. +#define BR_USB_INTEN_SOFTOKEN (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_SOFTOKEN)) +#endif + +//! @brief Format value for bitfield USB_INTEN_SOFTOKEN. +#define BF_USB_INTEN_SOFTOKEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_INTEN_SOFTOKEN), uint8_t) & BM_USB_INTEN_SOFTOKEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SOFTOKEN field to a new value. +#define BW_USB_INTEN_SOFTOKEN(v) (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_SOFTOKEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_INTEN, field TOKDNEEN[3] (RW) + * + * Values: + * - 0 - Disables the TOKDNE interrupt. + * - 1 - Enables the TOKDNE interrupt. + */ +//@{ +#define BP_USB_INTEN_TOKDNEEN (3U) //!< Bit position for USB_INTEN_TOKDNEEN. +#define BM_USB_INTEN_TOKDNEEN (0x08U) //!< Bit mask for USB_INTEN_TOKDNEEN. +#define BS_USB_INTEN_TOKDNEEN (1U) //!< Bit field size in bits for USB_INTEN_TOKDNEEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_INTEN_TOKDNEEN field. +#define BR_USB_INTEN_TOKDNEEN (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_TOKDNEEN)) +#endif + +//! @brief Format value for bitfield USB_INTEN_TOKDNEEN. +#define BF_USB_INTEN_TOKDNEEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_INTEN_TOKDNEEN), uint8_t) & BM_USB_INTEN_TOKDNEEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOKDNEEN field to a new value. +#define BW_USB_INTEN_TOKDNEEN(v) (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_TOKDNEEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_INTEN, field SLEEPEN[4] (RW) + * + * Values: + * - 0 - Disables the SLEEP interrupt. + * - 1 - Enables the SLEEP interrupt. + */ +//@{ +#define BP_USB_INTEN_SLEEPEN (4U) //!< Bit position for USB_INTEN_SLEEPEN. +#define BM_USB_INTEN_SLEEPEN (0x10U) //!< Bit mask for USB_INTEN_SLEEPEN. +#define BS_USB_INTEN_SLEEPEN (1U) //!< Bit field size in bits for USB_INTEN_SLEEPEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_INTEN_SLEEPEN field. +#define BR_USB_INTEN_SLEEPEN (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_SLEEPEN)) +#endif + +//! @brief Format value for bitfield USB_INTEN_SLEEPEN. +#define BF_USB_INTEN_SLEEPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_INTEN_SLEEPEN), uint8_t) & BM_USB_INTEN_SLEEPEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SLEEPEN field to a new value. +#define BW_USB_INTEN_SLEEPEN(v) (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_SLEEPEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_INTEN, field RESUMEEN[5] (RW) + * + * Values: + * - 0 - Disables the RESUME interrupt. + * - 1 - Enables the RESUME interrupt. + */ +//@{ +#define BP_USB_INTEN_RESUMEEN (5U) //!< Bit position for USB_INTEN_RESUMEEN. +#define BM_USB_INTEN_RESUMEEN (0x20U) //!< Bit mask for USB_INTEN_RESUMEEN. +#define BS_USB_INTEN_RESUMEEN (1U) //!< Bit field size in bits for USB_INTEN_RESUMEEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_INTEN_RESUMEEN field. +#define BR_USB_INTEN_RESUMEEN (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_RESUMEEN)) +#endif + +//! @brief Format value for bitfield USB_INTEN_RESUMEEN. +#define BF_USB_INTEN_RESUMEEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_INTEN_RESUMEEN), uint8_t) & BM_USB_INTEN_RESUMEEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RESUMEEN field to a new value. +#define BW_USB_INTEN_RESUMEEN(v) (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_RESUMEEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_INTEN, field ATTACHEN[6] (RW) + * + * Values: + * - 0 - Disables the ATTACH interrupt. + * - 1 - Enables the ATTACH interrupt. + */ +//@{ +#define BP_USB_INTEN_ATTACHEN (6U) //!< Bit position for USB_INTEN_ATTACHEN. +#define BM_USB_INTEN_ATTACHEN (0x40U) //!< Bit mask for USB_INTEN_ATTACHEN. +#define BS_USB_INTEN_ATTACHEN (1U) //!< Bit field size in bits for USB_INTEN_ATTACHEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_INTEN_ATTACHEN field. +#define BR_USB_INTEN_ATTACHEN (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_ATTACHEN)) +#endif + +//! @brief Format value for bitfield USB_INTEN_ATTACHEN. +#define BF_USB_INTEN_ATTACHEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_INTEN_ATTACHEN), uint8_t) & BM_USB_INTEN_ATTACHEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ATTACHEN field to a new value. +#define BW_USB_INTEN_ATTACHEN(v) (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_ATTACHEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_INTEN, field STALLEN[7] (RW) + * + * Values: + * - 0 - Diasbles the STALL interrupt. + * - 1 - Enables the STALL interrupt. + */ +//@{ +#define BP_USB_INTEN_STALLEN (7U) //!< Bit position for USB_INTEN_STALLEN. +#define BM_USB_INTEN_STALLEN (0x80U) //!< Bit mask for USB_INTEN_STALLEN. +#define BS_USB_INTEN_STALLEN (1U) //!< Bit field size in bits for USB_INTEN_STALLEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_INTEN_STALLEN field. +#define BR_USB_INTEN_STALLEN (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_STALLEN)) +#endif + +//! @brief Format value for bitfield USB_INTEN_STALLEN. +#define BF_USB_INTEN_STALLEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_INTEN_STALLEN), uint8_t) & BM_USB_INTEN_STALLEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STALLEN field to a new value. +#define BW_USB_INTEN_STALLEN(v) (BITBAND_ACCESS8(HW_USB_INTEN_ADDR, BP_USB_INTEN_STALLEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_ERRSTAT - Error Interrupt Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_ERRSTAT - Error Interrupt Status register (RW) + * + * Reset value: 0x00U + * + * Contains enable bits for each of the error sources within the USB Module. + * Each of these bits are qualified with their respective error enable bits. All + * bits of this register are logically OR'd together and the result placed in the + * ERROR bit of the ISTAT register. After an interrupt bit has been set it may only + * be cleared by writing a one to the respective interrupt bit. Each bit is set + * as soon as the error condition is detected. Therefore, the interrupt does not + * typically correspond with the end of a token being processed. This register + * contains the value of 0x00 after a reset. + */ +typedef union _hw_usb_errstat +{ + uint8_t U; + struct _hw_usb_errstat_bitfields + { + uint8_t PIDERR : 1; //!< [0] + uint8_t CRC5EOF : 1; //!< [1] + uint8_t CRC16 : 1; //!< [2] + uint8_t DFN8 : 1; //!< [3] + uint8_t BTOERR : 1; //!< [4] + uint8_t DMAERR : 1; //!< [5] + uint8_t RESERVED0 : 1; //!< [6] + uint8_t BTSERR : 1; //!< [7] + } B; +} hw_usb_errstat_t; +#endif + +/*! + * @name Constants and macros for entire USB_ERRSTAT register + */ +//@{ +#define HW_USB_ERRSTAT_ADDR (REGS_USB_BASE + 0x88U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_ERRSTAT (*(__IO hw_usb_errstat_t *) HW_USB_ERRSTAT_ADDR) +#define HW_USB_ERRSTAT_RD() (HW_USB_ERRSTAT.U) +#define HW_USB_ERRSTAT_WR(v) (HW_USB_ERRSTAT.U = (v)) +#define HW_USB_ERRSTAT_SET(v) (HW_USB_ERRSTAT_WR(HW_USB_ERRSTAT_RD() | (v))) +#define HW_USB_ERRSTAT_CLR(v) (HW_USB_ERRSTAT_WR(HW_USB_ERRSTAT_RD() & ~(v))) +#define HW_USB_ERRSTAT_TOG(v) (HW_USB_ERRSTAT_WR(HW_USB_ERRSTAT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_ERRSTAT bitfields + */ + +/*! + * @name Register USB_ERRSTAT, field PIDERR[0] (W1C) + * + * This bit is set when the PID check field fails. + */ +//@{ +#define BP_USB_ERRSTAT_PIDERR (0U) //!< Bit position for USB_ERRSTAT_PIDERR. +#define BM_USB_ERRSTAT_PIDERR (0x01U) //!< Bit mask for USB_ERRSTAT_PIDERR. +#define BS_USB_ERRSTAT_PIDERR (1U) //!< Bit field size in bits for USB_ERRSTAT_PIDERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERRSTAT_PIDERR field. +#define BR_USB_ERRSTAT_PIDERR (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_PIDERR)) +#endif + +//! @brief Format value for bitfield USB_ERRSTAT_PIDERR. +#define BF_USB_ERRSTAT_PIDERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERRSTAT_PIDERR), uint8_t) & BM_USB_ERRSTAT_PIDERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PIDERR field to a new value. +#define BW_USB_ERRSTAT_PIDERR(v) (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_PIDERR) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERRSTAT, field CRC5EOF[1] (W1C) + * + * This error interrupt has two functions. When the USB Module is operating in + * peripheral mode (HOSTMODEEN=0), this interrupt detects CRC5 errors in the token + * packets generated by the host. If set the token packet was rejected due to a + * CRC5 error. When the USB Module is operating in host mode (HOSTMODEEN=1), this + * interrupt detects End Of Frame (EOF) error conditions. This occurs when the + * USB Module is transmitting or receiving data and the SOF counter reaches zero. + * This interrupt is useful when developing USB packet scheduling software to + * ensure that no USB transactions cross the start of the next frame. + */ +//@{ +#define BP_USB_ERRSTAT_CRC5EOF (1U) //!< Bit position for USB_ERRSTAT_CRC5EOF. +#define BM_USB_ERRSTAT_CRC5EOF (0x02U) //!< Bit mask for USB_ERRSTAT_CRC5EOF. +#define BS_USB_ERRSTAT_CRC5EOF (1U) //!< Bit field size in bits for USB_ERRSTAT_CRC5EOF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERRSTAT_CRC5EOF field. +#define BR_USB_ERRSTAT_CRC5EOF (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_CRC5EOF)) +#endif + +//! @brief Format value for bitfield USB_ERRSTAT_CRC5EOF. +#define BF_USB_ERRSTAT_CRC5EOF(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERRSTAT_CRC5EOF), uint8_t) & BM_USB_ERRSTAT_CRC5EOF) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRC5EOF field to a new value. +#define BW_USB_ERRSTAT_CRC5EOF(v) (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_CRC5EOF) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERRSTAT, field CRC16[2] (W1C) + * + * This bit is set when a data packet is rejected due to a CRC16 error. + */ +//@{ +#define BP_USB_ERRSTAT_CRC16 (2U) //!< Bit position for USB_ERRSTAT_CRC16. +#define BM_USB_ERRSTAT_CRC16 (0x04U) //!< Bit mask for USB_ERRSTAT_CRC16. +#define BS_USB_ERRSTAT_CRC16 (1U) //!< Bit field size in bits for USB_ERRSTAT_CRC16. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERRSTAT_CRC16 field. +#define BR_USB_ERRSTAT_CRC16 (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_CRC16)) +#endif + +//! @brief Format value for bitfield USB_ERRSTAT_CRC16. +#define BF_USB_ERRSTAT_CRC16(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERRSTAT_CRC16), uint8_t) & BM_USB_ERRSTAT_CRC16) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRC16 field to a new value. +#define BW_USB_ERRSTAT_CRC16(v) (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_CRC16) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERRSTAT, field DFN8[3] (W1C) + * + * This bit is set if the data field received was not 8 bits in length. USB + * Specification 1.0 requires that data fields be an integral number of bytes. If the + * data field was not an integral number of bytes, this bit is set. + */ +//@{ +#define BP_USB_ERRSTAT_DFN8 (3U) //!< Bit position for USB_ERRSTAT_DFN8. +#define BM_USB_ERRSTAT_DFN8 (0x08U) //!< Bit mask for USB_ERRSTAT_DFN8. +#define BS_USB_ERRSTAT_DFN8 (1U) //!< Bit field size in bits for USB_ERRSTAT_DFN8. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERRSTAT_DFN8 field. +#define BR_USB_ERRSTAT_DFN8 (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_DFN8)) +#endif + +//! @brief Format value for bitfield USB_ERRSTAT_DFN8. +#define BF_USB_ERRSTAT_DFN8(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERRSTAT_DFN8), uint8_t) & BM_USB_ERRSTAT_DFN8) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DFN8 field to a new value. +#define BW_USB_ERRSTAT_DFN8(v) (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_DFN8) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERRSTAT, field BTOERR[4] (W1C) + * + * This bit is set when a bus turnaround timeout error occurs. The USB module + * contains a bus turnaround timer that keeps track of the amount of time elapsed + * between the token and data phases of a SETUP or OUT TOKEN or the data and + * handshake phases of a IN TOKEN. If more than 16 bit times are counted from the + * previous EOP before a transition from IDLE, a bus turnaround timeout error occurs. + */ +//@{ +#define BP_USB_ERRSTAT_BTOERR (4U) //!< Bit position for USB_ERRSTAT_BTOERR. +#define BM_USB_ERRSTAT_BTOERR (0x10U) //!< Bit mask for USB_ERRSTAT_BTOERR. +#define BS_USB_ERRSTAT_BTOERR (1U) //!< Bit field size in bits for USB_ERRSTAT_BTOERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERRSTAT_BTOERR field. +#define BR_USB_ERRSTAT_BTOERR (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_BTOERR)) +#endif + +//! @brief Format value for bitfield USB_ERRSTAT_BTOERR. +#define BF_USB_ERRSTAT_BTOERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERRSTAT_BTOERR), uint8_t) & BM_USB_ERRSTAT_BTOERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BTOERR field to a new value. +#define BW_USB_ERRSTAT_BTOERR(v) (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_BTOERR) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERRSTAT, field DMAERR[5] (W1C) + * + * This bit is set if the USB Module has requested a DMA access to read a new + * BDT but has not been given the bus before it needs to receive or transmit data. + * If processing a TX transfer this would cause a transmit data underflow + * condition. If processing a RX transfer this would cause a receive data overflow + * condition. This interrupt is useful when developing device arbitration hardware for + * the microprocessor and the USB module to minimize bus request and bus grant + * latency. This bit is also set if a data packet to or from the host is larger + * than the buffer size allocated in the BDT. In this case the data packet is + * truncated as it is put in buffer memory. + */ +//@{ +#define BP_USB_ERRSTAT_DMAERR (5U) //!< Bit position for USB_ERRSTAT_DMAERR. +#define BM_USB_ERRSTAT_DMAERR (0x20U) //!< Bit mask for USB_ERRSTAT_DMAERR. +#define BS_USB_ERRSTAT_DMAERR (1U) //!< Bit field size in bits for USB_ERRSTAT_DMAERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERRSTAT_DMAERR field. +#define BR_USB_ERRSTAT_DMAERR (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_DMAERR)) +#endif + +//! @brief Format value for bitfield USB_ERRSTAT_DMAERR. +#define BF_USB_ERRSTAT_DMAERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERRSTAT_DMAERR), uint8_t) & BM_USB_ERRSTAT_DMAERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAERR field to a new value. +#define BW_USB_ERRSTAT_DMAERR(v) (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_DMAERR) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERRSTAT, field BTSERR[7] (W1C) + * + * This bit is set when a bit stuff error is detected. If set, the corresponding + * packet is rejected due to the error. + */ +//@{ +#define BP_USB_ERRSTAT_BTSERR (7U) //!< Bit position for USB_ERRSTAT_BTSERR. +#define BM_USB_ERRSTAT_BTSERR (0x80U) //!< Bit mask for USB_ERRSTAT_BTSERR. +#define BS_USB_ERRSTAT_BTSERR (1U) //!< Bit field size in bits for USB_ERRSTAT_BTSERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERRSTAT_BTSERR field. +#define BR_USB_ERRSTAT_BTSERR (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_BTSERR)) +#endif + +//! @brief Format value for bitfield USB_ERRSTAT_BTSERR. +#define BF_USB_ERRSTAT_BTSERR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERRSTAT_BTSERR), uint8_t) & BM_USB_ERRSTAT_BTSERR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BTSERR field to a new value. +#define BW_USB_ERRSTAT_BTSERR(v) (BITBAND_ACCESS8(HW_USB_ERRSTAT_ADDR, BP_USB_ERRSTAT_BTSERR) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_ERREN - Error Interrupt Enable register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_ERREN - Error Interrupt Enable register (RW) + * + * Reset value: 0x00U + * + * Contains enable bits for each of the error interrupt sources within the USB + * module. Setting any of these bits enables the respective interrupt source in + * ERRSTAT. Each bit is set as soon as the error condition is detected. Therefore, + * the interrupt does not typically correspond with the end of a token being + * processed. This register contains the value of 0x00 after a reset. + */ +typedef union _hw_usb_erren +{ + uint8_t U; + struct _hw_usb_erren_bitfields + { + uint8_t PIDERREN : 1; //!< [0] PIDERR Interrupt Enable + uint8_t CRC5EOFEN : 1; //!< [1] CRC5/EOF Interrupt Enable + uint8_t CRC16EN : 1; //!< [2] CRC16 Interrupt Enable + uint8_t DFN8EN : 1; //!< [3] DFN8 Interrupt Enable + uint8_t BTOERREN : 1; //!< [4] BTOERR Interrupt Enable + uint8_t DMAERREN : 1; //!< [5] DMAERR Interrupt Enable + uint8_t RESERVED0 : 1; //!< [6] + uint8_t BTSERREN : 1; //!< [7] BTSERR Interrupt Enable + } B; +} hw_usb_erren_t; +#endif + +/*! + * @name Constants and macros for entire USB_ERREN register + */ +//@{ +#define HW_USB_ERREN_ADDR (REGS_USB_BASE + 0x8CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_ERREN (*(__IO hw_usb_erren_t *) HW_USB_ERREN_ADDR) +#define HW_USB_ERREN_RD() (HW_USB_ERREN.U) +#define HW_USB_ERREN_WR(v) (HW_USB_ERREN.U = (v)) +#define HW_USB_ERREN_SET(v) (HW_USB_ERREN_WR(HW_USB_ERREN_RD() | (v))) +#define HW_USB_ERREN_CLR(v) (HW_USB_ERREN_WR(HW_USB_ERREN_RD() & ~(v))) +#define HW_USB_ERREN_TOG(v) (HW_USB_ERREN_WR(HW_USB_ERREN_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_ERREN bitfields + */ + +/*! + * @name Register USB_ERREN, field PIDERREN[0] (RW) + * + * Values: + * - 0 - Disables the PIDERR interrupt. + * - 1 - Enters the PIDERR interrupt. + */ +//@{ +#define BP_USB_ERREN_PIDERREN (0U) //!< Bit position for USB_ERREN_PIDERREN. +#define BM_USB_ERREN_PIDERREN (0x01U) //!< Bit mask for USB_ERREN_PIDERREN. +#define BS_USB_ERREN_PIDERREN (1U) //!< Bit field size in bits for USB_ERREN_PIDERREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERREN_PIDERREN field. +#define BR_USB_ERREN_PIDERREN (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_PIDERREN)) +#endif + +//! @brief Format value for bitfield USB_ERREN_PIDERREN. +#define BF_USB_ERREN_PIDERREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERREN_PIDERREN), uint8_t) & BM_USB_ERREN_PIDERREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PIDERREN field to a new value. +#define BW_USB_ERREN_PIDERREN(v) (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_PIDERREN) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERREN, field CRC5EOFEN[1] (RW) + * + * Values: + * - 0 - Disables the CRC5/EOF interrupt. + * - 1 - Enables the CRC5/EOF interrupt. + */ +//@{ +#define BP_USB_ERREN_CRC5EOFEN (1U) //!< Bit position for USB_ERREN_CRC5EOFEN. +#define BM_USB_ERREN_CRC5EOFEN (0x02U) //!< Bit mask for USB_ERREN_CRC5EOFEN. +#define BS_USB_ERREN_CRC5EOFEN (1U) //!< Bit field size in bits for USB_ERREN_CRC5EOFEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERREN_CRC5EOFEN field. +#define BR_USB_ERREN_CRC5EOFEN (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_CRC5EOFEN)) +#endif + +//! @brief Format value for bitfield USB_ERREN_CRC5EOFEN. +#define BF_USB_ERREN_CRC5EOFEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERREN_CRC5EOFEN), uint8_t) & BM_USB_ERREN_CRC5EOFEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRC5EOFEN field to a new value. +#define BW_USB_ERREN_CRC5EOFEN(v) (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_CRC5EOFEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERREN, field CRC16EN[2] (RW) + * + * Values: + * - 0 - Disables the CRC16 interrupt. + * - 1 - Enables the CRC16 interrupt. + */ +//@{ +#define BP_USB_ERREN_CRC16EN (2U) //!< Bit position for USB_ERREN_CRC16EN. +#define BM_USB_ERREN_CRC16EN (0x04U) //!< Bit mask for USB_ERREN_CRC16EN. +#define BS_USB_ERREN_CRC16EN (1U) //!< Bit field size in bits for USB_ERREN_CRC16EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERREN_CRC16EN field. +#define BR_USB_ERREN_CRC16EN (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_CRC16EN)) +#endif + +//! @brief Format value for bitfield USB_ERREN_CRC16EN. +#define BF_USB_ERREN_CRC16EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERREN_CRC16EN), uint8_t) & BM_USB_ERREN_CRC16EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CRC16EN field to a new value. +#define BW_USB_ERREN_CRC16EN(v) (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_CRC16EN) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERREN, field DFN8EN[3] (RW) + * + * Values: + * - 0 - Disables the DFN8 interrupt. + * - 1 - Enables the DFN8 interrupt. + */ +//@{ +#define BP_USB_ERREN_DFN8EN (3U) //!< Bit position for USB_ERREN_DFN8EN. +#define BM_USB_ERREN_DFN8EN (0x08U) //!< Bit mask for USB_ERREN_DFN8EN. +#define BS_USB_ERREN_DFN8EN (1U) //!< Bit field size in bits for USB_ERREN_DFN8EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERREN_DFN8EN field. +#define BR_USB_ERREN_DFN8EN (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_DFN8EN)) +#endif + +//! @brief Format value for bitfield USB_ERREN_DFN8EN. +#define BF_USB_ERREN_DFN8EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERREN_DFN8EN), uint8_t) & BM_USB_ERREN_DFN8EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DFN8EN field to a new value. +#define BW_USB_ERREN_DFN8EN(v) (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_DFN8EN) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERREN, field BTOERREN[4] (RW) + * + * Values: + * - 0 - Disables the BTOERR interrupt. + * - 1 - Enables the BTOERR interrupt. + */ +//@{ +#define BP_USB_ERREN_BTOERREN (4U) //!< Bit position for USB_ERREN_BTOERREN. +#define BM_USB_ERREN_BTOERREN (0x10U) //!< Bit mask for USB_ERREN_BTOERREN. +#define BS_USB_ERREN_BTOERREN (1U) //!< Bit field size in bits for USB_ERREN_BTOERREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERREN_BTOERREN field. +#define BR_USB_ERREN_BTOERREN (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_BTOERREN)) +#endif + +//! @brief Format value for bitfield USB_ERREN_BTOERREN. +#define BF_USB_ERREN_BTOERREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERREN_BTOERREN), uint8_t) & BM_USB_ERREN_BTOERREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BTOERREN field to a new value. +#define BW_USB_ERREN_BTOERREN(v) (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_BTOERREN) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERREN, field DMAERREN[5] (RW) + * + * Values: + * - 0 - Disables the DMAERR interrupt. + * - 1 - Enables the DMAERR interrupt. + */ +//@{ +#define BP_USB_ERREN_DMAERREN (5U) //!< Bit position for USB_ERREN_DMAERREN. +#define BM_USB_ERREN_DMAERREN (0x20U) //!< Bit mask for USB_ERREN_DMAERREN. +#define BS_USB_ERREN_DMAERREN (1U) //!< Bit field size in bits for USB_ERREN_DMAERREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERREN_DMAERREN field. +#define BR_USB_ERREN_DMAERREN (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_DMAERREN)) +#endif + +//! @brief Format value for bitfield USB_ERREN_DMAERREN. +#define BF_USB_ERREN_DMAERREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERREN_DMAERREN), uint8_t) & BM_USB_ERREN_DMAERREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DMAERREN field to a new value. +#define BW_USB_ERREN_DMAERREN(v) (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_DMAERREN) = (v)) +#endif +//@} + +/*! + * @name Register USB_ERREN, field BTSERREN[7] (RW) + * + * Values: + * - 0 - Disables the BTSERR interrupt. + * - 1 - Enables the BTSERR interrupt. + */ +//@{ +#define BP_USB_ERREN_BTSERREN (7U) //!< Bit position for USB_ERREN_BTSERREN. +#define BM_USB_ERREN_BTSERREN (0x80U) //!< Bit mask for USB_ERREN_BTSERREN. +#define BS_USB_ERREN_BTSERREN (1U) //!< Bit field size in bits for USB_ERREN_BTSERREN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ERREN_BTSERREN field. +#define BR_USB_ERREN_BTSERREN (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_BTSERREN)) +#endif + +//! @brief Format value for bitfield USB_ERREN_BTSERREN. +#define BF_USB_ERREN_BTSERREN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ERREN_BTSERREN), uint8_t) & BM_USB_ERREN_BTSERREN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BTSERREN field to a new value. +#define BW_USB_ERREN_BTSERREN(v) (BITBAND_ACCESS8(HW_USB_ERREN_ADDR, BP_USB_ERREN_BTSERREN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_STAT - Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_STAT - Status register (RO) + * + * Reset value: 0x00U + * + * Reports the transaction status within the USB module. When the processor's + * interrupt controller has received a TOKDNE, interrupt the Status Register must + * be read to determine the status of the previous endpoint communication. The + * data in the status register is valid when TOKDNE interrupt is asserted. The + * Status register is actually a read window into a status FIFO maintained by the USB + * module. When the USB module uses a BD, it updates the Status register. If + * another USB transaction is performed before the TOKDNE interrupt is serviced, the + * USB module stores the status of the next transaction in the STAT FIFO. Thus + * STAT is actually a four byte FIFO that allows the processor core to process one + * transaction while the SIE is processing the next transaction. Clearing the + * TOKDNE bit in the ISTAT register causes the SIE to update STAT with the contents + * of the next STAT value. If the data in the STAT holding register is valid, the + * SIE immediately reasserts to TOKDNE interrupt. + */ +typedef union _hw_usb_stat +{ + uint8_t U; + struct _hw_usb_stat_bitfields + { + uint8_t RESERVED0 : 2; //!< [1:0] + uint8_t ODD : 1; //!< [2] + uint8_t TX : 1; //!< [3] Transmit Indicator + uint8_t ENDP : 4; //!< [7:4] + } B; +} hw_usb_stat_t; +#endif + +/*! + * @name Constants and macros for entire USB_STAT register + */ +//@{ +#define HW_USB_STAT_ADDR (REGS_USB_BASE + 0x90U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_STAT (*(__I hw_usb_stat_t *) HW_USB_STAT_ADDR) +#define HW_USB_STAT_RD() (HW_USB_STAT.U) +#endif +//@} + +/* + * Constants & macros for individual USB_STAT bitfields + */ + +/*! + * @name Register USB_STAT, field ODD[2] (RO) + * + * This bit is set if the last buffer descriptor updated was in the odd bank of + * the BDT. + */ +//@{ +#define BP_USB_STAT_ODD (2U) //!< Bit position for USB_STAT_ODD. +#define BM_USB_STAT_ODD (0x04U) //!< Bit mask for USB_STAT_ODD. +#define BS_USB_STAT_ODD (1U) //!< Bit field size in bits for USB_STAT_ODD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_STAT_ODD field. +#define BR_USB_STAT_ODD (BITBAND_ACCESS8(HW_USB_STAT_ADDR, BP_USB_STAT_ODD)) +#endif +//@} + +/*! + * @name Register USB_STAT, field TX[3] (RO) + * + * Values: + * - 0 - The most recent transaction was a receive operation. + * - 1 - The most recent transaction was a transmit operation. + */ +//@{ +#define BP_USB_STAT_TX (3U) //!< Bit position for USB_STAT_TX. +#define BM_USB_STAT_TX (0x08U) //!< Bit mask for USB_STAT_TX. +#define BS_USB_STAT_TX (1U) //!< Bit field size in bits for USB_STAT_TX. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_STAT_TX field. +#define BR_USB_STAT_TX (BITBAND_ACCESS8(HW_USB_STAT_ADDR, BP_USB_STAT_TX)) +#endif +//@} + +/*! + * @name Register USB_STAT, field ENDP[7:4] (RO) + * + * This four-bit field encodes the endpoint address that received or transmitted + * the previous token. This allows the processor core to determine the BDT entry + * that was updated by the last USB transaction. + */ +//@{ +#define BP_USB_STAT_ENDP (4U) //!< Bit position for USB_STAT_ENDP. +#define BM_USB_STAT_ENDP (0xF0U) //!< Bit mask for USB_STAT_ENDP. +#define BS_USB_STAT_ENDP (4U) //!< Bit field size in bits for USB_STAT_ENDP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_STAT_ENDP field. +#define BR_USB_STAT_ENDP (HW_USB_STAT.B.ENDP) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_CTL - Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_CTL - Control register (RW) + * + * Reset value: 0x00U + * + * Provides various control and configuration information for the USB module. + */ +typedef union _hw_usb_ctl +{ + uint8_t U; + struct _hw_usb_ctl_bitfields + { + uint8_t USBENSOFEN : 1; //!< [0] USB Enable + uint8_t ODDRST : 1; //!< [1] + uint8_t RESUME : 1; //!< [2] + uint8_t HOSTMODEEN : 1; //!< [3] + uint8_t RESET : 1; //!< [4] + uint8_t TXSUSPENDTOKENBUSY : 1; //!< [5] + uint8_t SE0 : 1; //!< [6] Live USB Single Ended Zero signal + uint8_t JSTATE : 1; //!< [7] Live USB differential receiver JSTATE + //! signal + } B; +} hw_usb_ctl_t; +#endif + +/*! + * @name Constants and macros for entire USB_CTL register + */ +//@{ +#define HW_USB_CTL_ADDR (REGS_USB_BASE + 0x94U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_CTL (*(__IO hw_usb_ctl_t *) HW_USB_CTL_ADDR) +#define HW_USB_CTL_RD() (HW_USB_CTL.U) +#define HW_USB_CTL_WR(v) (HW_USB_CTL.U = (v)) +#define HW_USB_CTL_SET(v) (HW_USB_CTL_WR(HW_USB_CTL_RD() | (v))) +#define HW_USB_CTL_CLR(v) (HW_USB_CTL_WR(HW_USB_CTL_RD() & ~(v))) +#define HW_USB_CTL_TOG(v) (HW_USB_CTL_WR(HW_USB_CTL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_CTL bitfields + */ + +/*! + * @name Register USB_CTL, field USBENSOFEN[0] (RW) + * + * Setting this bit enables the USB-FS to operate; clearing it disables the + * USB-FS. Setting the bit causes the SIE to reset all of its ODD bits to the BDTs. + * Therefore, setting this bit resets much of the logic in the SIE. When host mode + * is enabled, clearing this bit causes the SIE to stop sending SOF tokens. + * + * Values: + * - 0 - Disables the USB Module. + * - 1 - Enables the USB Module. + */ +//@{ +#define BP_USB_CTL_USBENSOFEN (0U) //!< Bit position for USB_CTL_USBENSOFEN. +#define BM_USB_CTL_USBENSOFEN (0x01U) //!< Bit mask for USB_CTL_USBENSOFEN. +#define BS_USB_CTL_USBENSOFEN (1U) //!< Bit field size in bits for USB_CTL_USBENSOFEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CTL_USBENSOFEN field. +#define BR_USB_CTL_USBENSOFEN (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_USBENSOFEN)) +#endif + +//! @brief Format value for bitfield USB_CTL_USBENSOFEN. +#define BF_USB_CTL_USBENSOFEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CTL_USBENSOFEN), uint8_t) & BM_USB_CTL_USBENSOFEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBENSOFEN field to a new value. +#define BW_USB_CTL_USBENSOFEN(v) (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_USBENSOFEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_CTL, field ODDRST[1] (RW) + * + * Setting this bit to 1 resets all the BDT ODD ping/pong fields to 0, which + * then specifies the EVEN BDT bank. + */ +//@{ +#define BP_USB_CTL_ODDRST (1U) //!< Bit position for USB_CTL_ODDRST. +#define BM_USB_CTL_ODDRST (0x02U) //!< Bit mask for USB_CTL_ODDRST. +#define BS_USB_CTL_ODDRST (1U) //!< Bit field size in bits for USB_CTL_ODDRST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CTL_ODDRST field. +#define BR_USB_CTL_ODDRST (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_ODDRST)) +#endif + +//! @brief Format value for bitfield USB_CTL_ODDRST. +#define BF_USB_CTL_ODDRST(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CTL_ODDRST), uint8_t) & BM_USB_CTL_ODDRST) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ODDRST field to a new value. +#define BW_USB_CTL_ODDRST(v) (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_ODDRST) = (v)) +#endif +//@} + +/*! + * @name Register USB_CTL, field RESUME[2] (RW) + * + * When set to 1 this bit enables the USB Module to execute resume signaling. + * This allows the USB Module to perform remote wake-up. Software must set RESUME + * to 1 for the required amount of time and then clear it to 0. If the HOSTMODEEN + * bit is set, the USB module appends a Low Speed End of Packet to the Resume + * signaling when the RESUME bit is cleared. For more information on RESUME + * signaling see Section 7.1.4.5 of the USB specification version 1.0. + */ +//@{ +#define BP_USB_CTL_RESUME (2U) //!< Bit position for USB_CTL_RESUME. +#define BM_USB_CTL_RESUME (0x04U) //!< Bit mask for USB_CTL_RESUME. +#define BS_USB_CTL_RESUME (1U) //!< Bit field size in bits for USB_CTL_RESUME. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CTL_RESUME field. +#define BR_USB_CTL_RESUME (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_RESUME)) +#endif + +//! @brief Format value for bitfield USB_CTL_RESUME. +#define BF_USB_CTL_RESUME(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CTL_RESUME), uint8_t) & BM_USB_CTL_RESUME) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RESUME field to a new value. +#define BW_USB_CTL_RESUME(v) (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_RESUME) = (v)) +#endif +//@} + +/*! + * @name Register USB_CTL, field HOSTMODEEN[3] (RW) + * + * When set to 1, this bit enables the USB Module to operate in Host mode. In + * host mode, the USB module performs USB transactions under the programmed control + * of the host processor. + */ +//@{ +#define BP_USB_CTL_HOSTMODEEN (3U) //!< Bit position for USB_CTL_HOSTMODEEN. +#define BM_USB_CTL_HOSTMODEEN (0x08U) //!< Bit mask for USB_CTL_HOSTMODEEN. +#define BS_USB_CTL_HOSTMODEEN (1U) //!< Bit field size in bits for USB_CTL_HOSTMODEEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CTL_HOSTMODEEN field. +#define BR_USB_CTL_HOSTMODEEN (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_HOSTMODEEN)) +#endif + +//! @brief Format value for bitfield USB_CTL_HOSTMODEEN. +#define BF_USB_CTL_HOSTMODEEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CTL_HOSTMODEEN), uint8_t) & BM_USB_CTL_HOSTMODEEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HOSTMODEEN field to a new value. +#define BW_USB_CTL_HOSTMODEEN(v) (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_HOSTMODEEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_CTL, field RESET[4] (RW) + * + * Setting this bit enables the USB Module to generate USB reset signaling. This + * allows the USB Module to reset USB peripherals. This control signal is only + * valid in Host mode (HOSTMODEEN=1). Software must set RESET to 1 for the + * required amount of time and then clear it to 0 to end reset signaling. For more + * information on reset signaling see Section 7.1.4.3 of the USB specification version + * 1.0. + */ +//@{ +#define BP_USB_CTL_RESET (4U) //!< Bit position for USB_CTL_RESET. +#define BM_USB_CTL_RESET (0x10U) //!< Bit mask for USB_CTL_RESET. +#define BS_USB_CTL_RESET (1U) //!< Bit field size in bits for USB_CTL_RESET. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CTL_RESET field. +#define BR_USB_CTL_RESET (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_RESET)) +#endif + +//! @brief Format value for bitfield USB_CTL_RESET. +#define BF_USB_CTL_RESET(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CTL_RESET), uint8_t) & BM_USB_CTL_RESET) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RESET field to a new value. +#define BW_USB_CTL_RESET(v) (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_RESET) = (v)) +#endif +//@} + +/*! + * @name Register USB_CTL, field TXSUSPENDTOKENBUSY[5] (RW) + * + * In Host mode, TOKEN_BUSY is set when the USB module is busy executing a USB + * token. Software must not write more token commands to the Token Register when + * TOKEN_BUSY is set. Software should check this field before writing any tokens + * to the Token Register to ensure that token commands are not lost. In Target + * mode, TXD_SUSPEND is set when the SIE has disabled packet transmission and + * reception. Clearing this bit allows the SIE to continue token processing. This bit + * is set by the SIE when a SETUP Token is received allowing software to dequeue + * any pending packet transactions in the BDT before resuming token processing. + */ +//@{ +#define BP_USB_CTL_TXSUSPENDTOKENBUSY (5U) //!< Bit position for USB_CTL_TXSUSPENDTOKENBUSY. +#define BM_USB_CTL_TXSUSPENDTOKENBUSY (0x20U) //!< Bit mask for USB_CTL_TXSUSPENDTOKENBUSY. +#define BS_USB_CTL_TXSUSPENDTOKENBUSY (1U) //!< Bit field size in bits for USB_CTL_TXSUSPENDTOKENBUSY. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CTL_TXSUSPENDTOKENBUSY field. +#define BR_USB_CTL_TXSUSPENDTOKENBUSY (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_TXSUSPENDTOKENBUSY)) +#endif + +//! @brief Format value for bitfield USB_CTL_TXSUSPENDTOKENBUSY. +#define BF_USB_CTL_TXSUSPENDTOKENBUSY(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CTL_TXSUSPENDTOKENBUSY), uint8_t) & BM_USB_CTL_TXSUSPENDTOKENBUSY) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TXSUSPENDTOKENBUSY field to a new value. +#define BW_USB_CTL_TXSUSPENDTOKENBUSY(v) (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_TXSUSPENDTOKENBUSY) = (v)) +#endif +//@} + +/*! + * @name Register USB_CTL, field SE0[6] (RW) + */ +//@{ +#define BP_USB_CTL_SE0 (6U) //!< Bit position for USB_CTL_SE0. +#define BM_USB_CTL_SE0 (0x40U) //!< Bit mask for USB_CTL_SE0. +#define BS_USB_CTL_SE0 (1U) //!< Bit field size in bits for USB_CTL_SE0. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CTL_SE0 field. +#define BR_USB_CTL_SE0 (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_SE0)) +#endif + +//! @brief Format value for bitfield USB_CTL_SE0. +#define BF_USB_CTL_SE0(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CTL_SE0), uint8_t) & BM_USB_CTL_SE0) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SE0 field to a new value. +#define BW_USB_CTL_SE0(v) (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_SE0) = (v)) +#endif +//@} + +/*! + * @name Register USB_CTL, field JSTATE[7] (RW) + * + * The polarity of this signal is affected by the current state of LSEN . + */ +//@{ +#define BP_USB_CTL_JSTATE (7U) //!< Bit position for USB_CTL_JSTATE. +#define BM_USB_CTL_JSTATE (0x80U) //!< Bit mask for USB_CTL_JSTATE. +#define BS_USB_CTL_JSTATE (1U) //!< Bit field size in bits for USB_CTL_JSTATE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CTL_JSTATE field. +#define BR_USB_CTL_JSTATE (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_JSTATE)) +#endif + +//! @brief Format value for bitfield USB_CTL_JSTATE. +#define BF_USB_CTL_JSTATE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CTL_JSTATE), uint8_t) & BM_USB_CTL_JSTATE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the JSTATE field to a new value. +#define BW_USB_CTL_JSTATE(v) (BITBAND_ACCESS8(HW_USB_CTL_ADDR, BP_USB_CTL_JSTATE) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_ADDR - Address register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_ADDR - Address register (RW) + * + * Reset value: 0x00U + * + * Holds the unique USB address that the USB module decodes when in Peripheral + * mode (HOSTMODEEN=0). When operating in Host mode (HOSTMODEEN=1) the USB module + * transmits this address with a TOKEN packet. This enables the USB module to + * uniquely address any USB peripheral. In either mode, CTL[USBENSOFEN] must be 1. + * The Address register is reset to 0x00 after the reset input becomes active or + * the USB module decodes a USB reset signal. This action initializes the Address + * register to decode address 0x00 as required by the USB specification. + */ +typedef union _hw_usb_addr +{ + uint8_t U; + struct _hw_usb_addr_bitfields + { + uint8_t ADDR : 7; //!< [6:0] USB Address + uint8_t LSEN : 1; //!< [7] Low Speed Enable bit + } B; +} hw_usb_addr_t; +#endif + +/*! + * @name Constants and macros for entire USB_ADDR register + */ +//@{ +#define HW_USB_ADDR_ADDR (REGS_USB_BASE + 0x98U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_ADDR (*(__IO hw_usb_addr_t *) HW_USB_ADDR_ADDR) +#define HW_USB_ADDR_RD() (HW_USB_ADDR.U) +#define HW_USB_ADDR_WR(v) (HW_USB_ADDR.U = (v)) +#define HW_USB_ADDR_SET(v) (HW_USB_ADDR_WR(HW_USB_ADDR_RD() | (v))) +#define HW_USB_ADDR_CLR(v) (HW_USB_ADDR_WR(HW_USB_ADDR_RD() & ~(v))) +#define HW_USB_ADDR_TOG(v) (HW_USB_ADDR_WR(HW_USB_ADDR_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_ADDR bitfields + */ + +/*! + * @name Register USB_ADDR, field ADDR[6:0] (RW) + * + * Defines the USB address that the USB module decodes in peripheral mode, or + * transmits when in host mode. + */ +//@{ +#define BP_USB_ADDR_ADDR (0U) //!< Bit position for USB_ADDR_ADDR. +#define BM_USB_ADDR_ADDR (0x7FU) //!< Bit mask for USB_ADDR_ADDR. +#define BS_USB_ADDR_ADDR (7U) //!< Bit field size in bits for USB_ADDR_ADDR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ADDR_ADDR field. +#define BR_USB_ADDR_ADDR (HW_USB_ADDR.B.ADDR) +#endif + +//! @brief Format value for bitfield USB_ADDR_ADDR. +#define BF_USB_ADDR_ADDR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ADDR_ADDR), uint8_t) & BM_USB_ADDR_ADDR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADDR field to a new value. +#define BW_USB_ADDR_ADDR(v) (HW_USB_ADDR_WR((HW_USB_ADDR_RD() & ~BM_USB_ADDR_ADDR) | BF_USB_ADDR_ADDR(v))) +#endif +//@} + +/*! + * @name Register USB_ADDR, field LSEN[7] (RW) + * + * Informs the USB module that the next token command written to the token + * register must be performed at low speed. This enables the USB module to perform the + * necessary preamble required for low-speed data transmissions. + */ +//@{ +#define BP_USB_ADDR_LSEN (7U) //!< Bit position for USB_ADDR_LSEN. +#define BM_USB_ADDR_LSEN (0x80U) //!< Bit mask for USB_ADDR_LSEN. +#define BS_USB_ADDR_LSEN (1U) //!< Bit field size in bits for USB_ADDR_LSEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ADDR_LSEN field. +#define BR_USB_ADDR_LSEN (BITBAND_ACCESS8(HW_USB_ADDR_ADDR, BP_USB_ADDR_LSEN)) +#endif + +//! @brief Format value for bitfield USB_ADDR_LSEN. +#define BF_USB_ADDR_LSEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ADDR_LSEN), uint8_t) & BM_USB_ADDR_LSEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the LSEN field to a new value. +#define BW_USB_ADDR_LSEN(v) (BITBAND_ACCESS8(HW_USB_ADDR_ADDR, BP_USB_ADDR_LSEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_BDTPAGE1 - BDT Page register 1 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_BDTPAGE1 - BDT Page register 1 (RW) + * + * Reset value: 0x00U + * + * Provides address bits 15 through 9 of the base address where the current + * Buffer Descriptor Table (BDT) resides in system memory. See Buffer Descriptor + * Table. The 32-bit BDT Base Address is always aligned on 512-byte boundaries, so + * bits 8 through 0 of the base address are always zero. + */ +typedef union _hw_usb_bdtpage1 +{ + uint8_t U; + struct _hw_usb_bdtpage1_bitfields + { + uint8_t RESERVED0 : 1; //!< [0] + uint8_t BDTBA : 7; //!< [7:1] + } B; +} hw_usb_bdtpage1_t; +#endif + +/*! + * @name Constants and macros for entire USB_BDTPAGE1 register + */ +//@{ +#define HW_USB_BDTPAGE1_ADDR (REGS_USB_BASE + 0x9CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_BDTPAGE1 (*(__IO hw_usb_bdtpage1_t *) HW_USB_BDTPAGE1_ADDR) +#define HW_USB_BDTPAGE1_RD() (HW_USB_BDTPAGE1.U) +#define HW_USB_BDTPAGE1_WR(v) (HW_USB_BDTPAGE1.U = (v)) +#define HW_USB_BDTPAGE1_SET(v) (HW_USB_BDTPAGE1_WR(HW_USB_BDTPAGE1_RD() | (v))) +#define HW_USB_BDTPAGE1_CLR(v) (HW_USB_BDTPAGE1_WR(HW_USB_BDTPAGE1_RD() & ~(v))) +#define HW_USB_BDTPAGE1_TOG(v) (HW_USB_BDTPAGE1_WR(HW_USB_BDTPAGE1_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_BDTPAGE1 bitfields + */ + +/*! + * @name Register USB_BDTPAGE1, field BDTBA[7:1] (RW) + * + * Provides address bits 15 through 9 of the BDT base address. + */ +//@{ +#define BP_USB_BDTPAGE1_BDTBA (1U) //!< Bit position for USB_BDTPAGE1_BDTBA. +#define BM_USB_BDTPAGE1_BDTBA (0xFEU) //!< Bit mask for USB_BDTPAGE1_BDTBA. +#define BS_USB_BDTPAGE1_BDTBA (7U) //!< Bit field size in bits for USB_BDTPAGE1_BDTBA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_BDTPAGE1_BDTBA field. +#define BR_USB_BDTPAGE1_BDTBA (HW_USB_BDTPAGE1.B.BDTBA) +#endif + +//! @brief Format value for bitfield USB_BDTPAGE1_BDTBA. +#define BF_USB_BDTPAGE1_BDTBA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_BDTPAGE1_BDTBA), uint8_t) & BM_USB_BDTPAGE1_BDTBA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BDTBA field to a new value. +#define BW_USB_BDTPAGE1_BDTBA(v) (HW_USB_BDTPAGE1_WR((HW_USB_BDTPAGE1_RD() & ~BM_USB_BDTPAGE1_BDTBA) | BF_USB_BDTPAGE1_BDTBA(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_FRMNUML - Frame Number register Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_FRMNUML - Frame Number register Low (RW) + * + * Reset value: 0x00U + * + * The Frame Number registers (low and high) contain the 11-bit frame number. + * These registers are updated with the current frame number whenever a SOF TOKEN + * is received. + */ +typedef union _hw_usb_frmnuml +{ + uint8_t U; + struct _hw_usb_frmnuml_bitfields + { + uint8_t FRM : 8; //!< [7:0] + } B; +} hw_usb_frmnuml_t; +#endif + +/*! + * @name Constants and macros for entire USB_FRMNUML register + */ +//@{ +#define HW_USB_FRMNUML_ADDR (REGS_USB_BASE + 0xA0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_FRMNUML (*(__IO hw_usb_frmnuml_t *) HW_USB_FRMNUML_ADDR) +#define HW_USB_FRMNUML_RD() (HW_USB_FRMNUML.U) +#define HW_USB_FRMNUML_WR(v) (HW_USB_FRMNUML.U = (v)) +#define HW_USB_FRMNUML_SET(v) (HW_USB_FRMNUML_WR(HW_USB_FRMNUML_RD() | (v))) +#define HW_USB_FRMNUML_CLR(v) (HW_USB_FRMNUML_WR(HW_USB_FRMNUML_RD() & ~(v))) +#define HW_USB_FRMNUML_TOG(v) (HW_USB_FRMNUML_WR(HW_USB_FRMNUML_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_FRMNUML bitfields + */ + +/*! + * @name Register USB_FRMNUML, field FRM[7:0] (RW) + * + * This 8-bit field and the 3-bit field in the Frame Number Register High are + * used to compute the address where the current Buffer Descriptor Table (BDT) + * resides in system memory. + */ +//@{ +#define BP_USB_FRMNUML_FRM (0U) //!< Bit position for USB_FRMNUML_FRM. +#define BM_USB_FRMNUML_FRM (0xFFU) //!< Bit mask for USB_FRMNUML_FRM. +#define BS_USB_FRMNUML_FRM (8U) //!< Bit field size in bits for USB_FRMNUML_FRM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_FRMNUML_FRM field. +#define BR_USB_FRMNUML_FRM (HW_USB_FRMNUML.U) +#endif + +//! @brief Format value for bitfield USB_FRMNUML_FRM. +#define BF_USB_FRMNUML_FRM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_FRMNUML_FRM), uint8_t) & BM_USB_FRMNUML_FRM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRM field to a new value. +#define BW_USB_FRMNUML_FRM(v) (HW_USB_FRMNUML_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_FRMNUMH - Frame Number register High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_FRMNUMH - Frame Number register High (RW) + * + * Reset value: 0x00U + * + * The Frame Number registers (low and high) contain the 11-bit frame number. + * These registers are updated with the current frame number whenever a SOF TOKEN + * is received. + */ +typedef union _hw_usb_frmnumh +{ + uint8_t U; + struct _hw_usb_frmnumh_bitfields + { + uint8_t FRM : 3; //!< [2:0] + uint8_t RESERVED0 : 5; //!< [7:3] + } B; +} hw_usb_frmnumh_t; +#endif + +/*! + * @name Constants and macros for entire USB_FRMNUMH register + */ +//@{ +#define HW_USB_FRMNUMH_ADDR (REGS_USB_BASE + 0xA4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_FRMNUMH (*(__IO hw_usb_frmnumh_t *) HW_USB_FRMNUMH_ADDR) +#define HW_USB_FRMNUMH_RD() (HW_USB_FRMNUMH.U) +#define HW_USB_FRMNUMH_WR(v) (HW_USB_FRMNUMH.U = (v)) +#define HW_USB_FRMNUMH_SET(v) (HW_USB_FRMNUMH_WR(HW_USB_FRMNUMH_RD() | (v))) +#define HW_USB_FRMNUMH_CLR(v) (HW_USB_FRMNUMH_WR(HW_USB_FRMNUMH_RD() & ~(v))) +#define HW_USB_FRMNUMH_TOG(v) (HW_USB_FRMNUMH_WR(HW_USB_FRMNUMH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_FRMNUMH bitfields + */ + +/*! + * @name Register USB_FRMNUMH, field FRM[2:0] (RW) + * + * This 3-bit field and the 8-bit field in the Frame Number Register Low are + * used to compute the address where the current Buffer Descriptor Table (BDT) + * resides in system memory. + */ +//@{ +#define BP_USB_FRMNUMH_FRM (0U) //!< Bit position for USB_FRMNUMH_FRM. +#define BM_USB_FRMNUMH_FRM (0x07U) //!< Bit mask for USB_FRMNUMH_FRM. +#define BS_USB_FRMNUMH_FRM (3U) //!< Bit field size in bits for USB_FRMNUMH_FRM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_FRMNUMH_FRM field. +#define BR_USB_FRMNUMH_FRM (HW_USB_FRMNUMH.B.FRM) +#endif + +//! @brief Format value for bitfield USB_FRMNUMH_FRM. +#define BF_USB_FRMNUMH_FRM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_FRMNUMH_FRM), uint8_t) & BM_USB_FRMNUMH_FRM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the FRM field to a new value. +#define BW_USB_FRMNUMH_FRM(v) (HW_USB_FRMNUMH_WR((HW_USB_FRMNUMH_RD() & ~BM_USB_FRMNUMH_FRM) | BF_USB_FRMNUMH_FRM(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_TOKEN - Token register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_TOKEN - Token register (RW) + * + * Reset value: 0x00U + * + * Used to initiate USB transactions when in host mode (HOSTMODEEN=1). When the + * software needs to execute a USB transaction to a peripheral, it writes the + * TOKEN type and endpoint to this register. After this register has been written, + * the USB module begins the specified USB transaction to the address contained in + * the address register. The processor core must always check that the + * TOKEN_BUSY bit in the control register is not 1 before writing to the Token Register. + * This ensures that the token commands are not overwritten before they can be + * executed. The address register and endpoint control register 0 are also used when + * performing a token command and therefore must also be written before the + * Token Register. The address register is used to select the USB peripheral address + * transmitted by the token command. The endpoint control register determines the + * handshake and retry policies used during the transfer. + */ +typedef union _hw_usb_token +{ + uint8_t U; + struct _hw_usb_token_bitfields + { + uint8_t TOKENENDPT : 4; //!< [3:0] + uint8_t TOKENPID : 4; //!< [7:4] + } B; +} hw_usb_token_t; +#endif + +/*! + * @name Constants and macros for entire USB_TOKEN register + */ +//@{ +#define HW_USB_TOKEN_ADDR (REGS_USB_BASE + 0xA8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_TOKEN (*(__IO hw_usb_token_t *) HW_USB_TOKEN_ADDR) +#define HW_USB_TOKEN_RD() (HW_USB_TOKEN.U) +#define HW_USB_TOKEN_WR(v) (HW_USB_TOKEN.U = (v)) +#define HW_USB_TOKEN_SET(v) (HW_USB_TOKEN_WR(HW_USB_TOKEN_RD() | (v))) +#define HW_USB_TOKEN_CLR(v) (HW_USB_TOKEN_WR(HW_USB_TOKEN_RD() & ~(v))) +#define HW_USB_TOKEN_TOG(v) (HW_USB_TOKEN_WR(HW_USB_TOKEN_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_TOKEN bitfields + */ + +/*! + * @name Register USB_TOKEN, field TOKENENDPT[3:0] (RW) + * + * Holds the Endpoint address for the token command. The four bit value written + * must be a valid endpoint. + */ +//@{ +#define BP_USB_TOKEN_TOKENENDPT (0U) //!< Bit position for USB_TOKEN_TOKENENDPT. +#define BM_USB_TOKEN_TOKENENDPT (0x0FU) //!< Bit mask for USB_TOKEN_TOKENENDPT. +#define BS_USB_TOKEN_TOKENENDPT (4U) //!< Bit field size in bits for USB_TOKEN_TOKENENDPT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_TOKEN_TOKENENDPT field. +#define BR_USB_TOKEN_TOKENENDPT (HW_USB_TOKEN.B.TOKENENDPT) +#endif + +//! @brief Format value for bitfield USB_TOKEN_TOKENENDPT. +#define BF_USB_TOKEN_TOKENENDPT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_TOKEN_TOKENENDPT), uint8_t) & BM_USB_TOKEN_TOKENENDPT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOKENENDPT field to a new value. +#define BW_USB_TOKEN_TOKENENDPT(v) (HW_USB_TOKEN_WR((HW_USB_TOKEN_RD() & ~BM_USB_TOKEN_TOKENENDPT) | BF_USB_TOKEN_TOKENENDPT(v))) +#endif +//@} + +/*! + * @name Register USB_TOKEN, field TOKENPID[7:4] (RW) + * + * Contains the token type executed by the USB module. + * + * Values: + * - 0001 - OUT Token. USB Module performs an OUT (TX) transaction. + * - 1001 - IN Token. USB Module performs an In (RX) transaction. + * - 1101 - SETUP Token. USB Module performs a SETUP (TX) transaction + */ +//@{ +#define BP_USB_TOKEN_TOKENPID (4U) //!< Bit position for USB_TOKEN_TOKENPID. +#define BM_USB_TOKEN_TOKENPID (0xF0U) //!< Bit mask for USB_TOKEN_TOKENPID. +#define BS_USB_TOKEN_TOKENPID (4U) //!< Bit field size in bits for USB_TOKEN_TOKENPID. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_TOKEN_TOKENPID field. +#define BR_USB_TOKEN_TOKENPID (HW_USB_TOKEN.B.TOKENPID) +#endif + +//! @brief Format value for bitfield USB_TOKEN_TOKENPID. +#define BF_USB_TOKEN_TOKENPID(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_TOKEN_TOKENPID), uint8_t) & BM_USB_TOKEN_TOKENPID) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOKENPID field to a new value. +#define BW_USB_TOKEN_TOKENPID(v) (HW_USB_TOKEN_WR((HW_USB_TOKEN_RD() & ~BM_USB_TOKEN_TOKENPID) | BF_USB_TOKEN_TOKENPID(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_SOFTHLD - SOF Threshold register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_SOFTHLD - SOF Threshold register (RW) + * + * Reset value: 0x00U + * + * The SOF Threshold Register is used only in Host mode (HOSTMODEEN=1). When in + * Host mode, the 14-bit SOF counter counts the interval between SOF frames. The + * SOF must be transmitted every 1ms so therefore the SOF counter is loaded with + * a value of 12000. When the SOF counter reaches zero, a Start Of Frame (SOF) + * token is transmitted. The SOF threshold register is used to program the number + * of USB byte times before the SOF to stop initiating token packet transactions. + * This register must be set to a value that ensures that other packets are not + * actively being transmitted when the SOF time counts to zero. When the SOF + * counter reaches the threshold value, no more tokens are transmitted until after the + * SOF has been transmitted. The value programmed into the threshold register + * must reserve enough time to ensure the worst case transaction completes. In + * general the worst case transaction is an IN token followed by a data packet from + * the target followed by the response from the host. The actual time required is + * a function of the maximum packet size on the bus. Typical values for the SOF + * threshold are: 64-byte packets=74; 32-byte packets=42; 16-byte packets=26; + * 8-byte packets=18. + */ +typedef union _hw_usb_softhld +{ + uint8_t U; + struct _hw_usb_softhld_bitfields + { + uint8_t CNT : 8; //!< [7:0] + } B; +} hw_usb_softhld_t; +#endif + +/*! + * @name Constants and macros for entire USB_SOFTHLD register + */ +//@{ +#define HW_USB_SOFTHLD_ADDR (REGS_USB_BASE + 0xACU) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_SOFTHLD (*(__IO hw_usb_softhld_t *) HW_USB_SOFTHLD_ADDR) +#define HW_USB_SOFTHLD_RD() (HW_USB_SOFTHLD.U) +#define HW_USB_SOFTHLD_WR(v) (HW_USB_SOFTHLD.U = (v)) +#define HW_USB_SOFTHLD_SET(v) (HW_USB_SOFTHLD_WR(HW_USB_SOFTHLD_RD() | (v))) +#define HW_USB_SOFTHLD_CLR(v) (HW_USB_SOFTHLD_WR(HW_USB_SOFTHLD_RD() & ~(v))) +#define HW_USB_SOFTHLD_TOG(v) (HW_USB_SOFTHLD_WR(HW_USB_SOFTHLD_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_SOFTHLD bitfields + */ + +/*! + * @name Register USB_SOFTHLD, field CNT[7:0] (RW) + * + * Represents the SOF count threshold in byte times. + */ +//@{ +#define BP_USB_SOFTHLD_CNT (0U) //!< Bit position for USB_SOFTHLD_CNT. +#define BM_USB_SOFTHLD_CNT (0xFFU) //!< Bit mask for USB_SOFTHLD_CNT. +#define BS_USB_SOFTHLD_CNT (8U) //!< Bit field size in bits for USB_SOFTHLD_CNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_SOFTHLD_CNT field. +#define BR_USB_SOFTHLD_CNT (HW_USB_SOFTHLD.U) +#endif + +//! @brief Format value for bitfield USB_SOFTHLD_CNT. +#define BF_USB_SOFTHLD_CNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_SOFTHLD_CNT), uint8_t) & BM_USB_SOFTHLD_CNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CNT field to a new value. +#define BW_USB_SOFTHLD_CNT(v) (HW_USB_SOFTHLD_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_BDTPAGE2 - BDT Page Register 2 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_BDTPAGE2 - BDT Page Register 2 (RW) + * + * Reset value: 0x00U + * + * Contains an 8-bit value used to compute the address where the current Buffer + * Descriptor Table (BDT) resides in system memory. See Buffer Descriptor Table. + */ +typedef union _hw_usb_bdtpage2 +{ + uint8_t U; + struct _hw_usb_bdtpage2_bitfields + { + uint8_t BDTBA : 8; //!< [7:0] + } B; +} hw_usb_bdtpage2_t; +#endif + +/*! + * @name Constants and macros for entire USB_BDTPAGE2 register + */ +//@{ +#define HW_USB_BDTPAGE2_ADDR (REGS_USB_BASE + 0xB0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_BDTPAGE2 (*(__IO hw_usb_bdtpage2_t *) HW_USB_BDTPAGE2_ADDR) +#define HW_USB_BDTPAGE2_RD() (HW_USB_BDTPAGE2.U) +#define HW_USB_BDTPAGE2_WR(v) (HW_USB_BDTPAGE2.U = (v)) +#define HW_USB_BDTPAGE2_SET(v) (HW_USB_BDTPAGE2_WR(HW_USB_BDTPAGE2_RD() | (v))) +#define HW_USB_BDTPAGE2_CLR(v) (HW_USB_BDTPAGE2_WR(HW_USB_BDTPAGE2_RD() & ~(v))) +#define HW_USB_BDTPAGE2_TOG(v) (HW_USB_BDTPAGE2_WR(HW_USB_BDTPAGE2_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_BDTPAGE2 bitfields + */ + +/*! + * @name Register USB_BDTPAGE2, field BDTBA[7:0] (RW) + * + * Provides address bits 23 through 16 of the BDT base address that defines the + * location of Buffer Descriptor Table resides in system memory. + */ +//@{ +#define BP_USB_BDTPAGE2_BDTBA (0U) //!< Bit position for USB_BDTPAGE2_BDTBA. +#define BM_USB_BDTPAGE2_BDTBA (0xFFU) //!< Bit mask for USB_BDTPAGE2_BDTBA. +#define BS_USB_BDTPAGE2_BDTBA (8U) //!< Bit field size in bits for USB_BDTPAGE2_BDTBA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_BDTPAGE2_BDTBA field. +#define BR_USB_BDTPAGE2_BDTBA (HW_USB_BDTPAGE2.U) +#endif + +//! @brief Format value for bitfield USB_BDTPAGE2_BDTBA. +#define BF_USB_BDTPAGE2_BDTBA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_BDTPAGE2_BDTBA), uint8_t) & BM_USB_BDTPAGE2_BDTBA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BDTBA field to a new value. +#define BW_USB_BDTPAGE2_BDTBA(v) (HW_USB_BDTPAGE2_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_BDTPAGE3 - BDT Page Register 3 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_BDTPAGE3 - BDT Page Register 3 (RW) + * + * Reset value: 0x00U + * + * Contains an 8-bit value used to compute the address where the current Buffer + * Descriptor Table (BDT) resides in system memory. See Buffer Descriptor Table. + */ +typedef union _hw_usb_bdtpage3 +{ + uint8_t U; + struct _hw_usb_bdtpage3_bitfields + { + uint8_t BDTBA : 8; //!< [7:0] + } B; +} hw_usb_bdtpage3_t; +#endif + +/*! + * @name Constants and macros for entire USB_BDTPAGE3 register + */ +//@{ +#define HW_USB_BDTPAGE3_ADDR (REGS_USB_BASE + 0xB4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_BDTPAGE3 (*(__IO hw_usb_bdtpage3_t *) HW_USB_BDTPAGE3_ADDR) +#define HW_USB_BDTPAGE3_RD() (HW_USB_BDTPAGE3.U) +#define HW_USB_BDTPAGE3_WR(v) (HW_USB_BDTPAGE3.U = (v)) +#define HW_USB_BDTPAGE3_SET(v) (HW_USB_BDTPAGE3_WR(HW_USB_BDTPAGE3_RD() | (v))) +#define HW_USB_BDTPAGE3_CLR(v) (HW_USB_BDTPAGE3_WR(HW_USB_BDTPAGE3_RD() & ~(v))) +#define HW_USB_BDTPAGE3_TOG(v) (HW_USB_BDTPAGE3_WR(HW_USB_BDTPAGE3_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_BDTPAGE3 bitfields + */ + +/*! + * @name Register USB_BDTPAGE3, field BDTBA[7:0] (RW) + * + * Provides address bits 31 through 24 of the BDT base address that defines the + * location of Buffer Descriptor Table resides in system memory. + */ +//@{ +#define BP_USB_BDTPAGE3_BDTBA (0U) //!< Bit position for USB_BDTPAGE3_BDTBA. +#define BM_USB_BDTPAGE3_BDTBA (0xFFU) //!< Bit mask for USB_BDTPAGE3_BDTBA. +#define BS_USB_BDTPAGE3_BDTBA (8U) //!< Bit field size in bits for USB_BDTPAGE3_BDTBA. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_BDTPAGE3_BDTBA field. +#define BR_USB_BDTPAGE3_BDTBA (HW_USB_BDTPAGE3.U) +#endif + +//! @brief Format value for bitfield USB_BDTPAGE3_BDTBA. +#define BF_USB_BDTPAGE3_BDTBA(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_BDTPAGE3_BDTBA), uint8_t) & BM_USB_BDTPAGE3_BDTBA) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BDTBA field to a new value. +#define BW_USB_BDTPAGE3_BDTBA(v) (HW_USB_BDTPAGE3_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_ENDPTn - Endpoint Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_ENDPTn - Endpoint Control register (RW) + * + * Reset value: 0x00U + * + * Contains the endpoint control bits for each of the 16 endpoints available + * within the USB module for a decoded address. The format for these registers is + * shown in the following figure. Endpoint 0 (ENDPT0) is associated with control + * pipe 0, which is required for all USB functions. Therefore, after a USBRST + * interrupt occurs the processor core should set ENDPT0 to contain 0x0D. In Host mode + * ENDPT0 is used to determine the handshake, retry and low speed + * characteristics of the host transfer. For Control, Bulk and Interrupt transfers, the EPHSHK + * bit should be 1. For Isochronous transfers it should be 0. Common values to + * use for ENDPT0 in host mode are 0x4D for Control, Bulk, and Interrupt transfers, + * and 0x4C for Isochronous transfers. The three bits EPCTLDIS, EPRXEN, and + * EPTXEN define if an endpoint is enabled and define the direction of the endpoint. + * The endpoint enable/direction control is defined in the following table. + * Endpoint enable and direction control EPCTLDIS EPRXEN EPTXEN Endpoint + * enable/direction control X 0 0 Disable endpoint X 0 1 Enable endpoint for Tx transfers only + * X 1 0 Enable endpoint for Rx transfers only 1 1 1 Enable endpoint for Rx and + * Tx transfers 0 1 1 Enable Endpoint for RX and TX as well as control (SETUP) + * transfers. + */ +typedef union _hw_usb_endptn +{ + uint8_t U; + struct _hw_usb_endptn_bitfields + { + uint8_t EPHSHK : 1; //!< [0] + uint8_t EPSTALL : 1; //!< [1] + uint8_t EPTXEN : 1; //!< [2] + uint8_t EPRXEN : 1; //!< [3] + uint8_t EPCTLDIS : 1; //!< [4] + uint8_t RESERVED0 : 1; //!< [5] + uint8_t RETRYDIS : 1; //!< [6] + uint8_t HOSTWOHUB : 1; //!< [7] + } B; +} hw_usb_endptn_t; +#endif + +/*! + * @name Constants and macros for entire USB_ENDPTn register + */ +//@{ +#define HW_USB_ENDPTn_COUNT (16U) + +#define HW_USB_ENDPTn_ADDR(n) (REGS_USB_BASE + 0xC0U + (0x4U * n)) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_ENDPTn(n) (*(__IO hw_usb_endptn_t *) HW_USB_ENDPTn_ADDR(n)) +#define HW_USB_ENDPTn_RD(n) (HW_USB_ENDPTn(n).U) +#define HW_USB_ENDPTn_WR(n, v) (HW_USB_ENDPTn(n).U = (v)) +#define HW_USB_ENDPTn_SET(n, v) (HW_USB_ENDPTn_WR(n, HW_USB_ENDPTn_RD(n) | (v))) +#define HW_USB_ENDPTn_CLR(n, v) (HW_USB_ENDPTn_WR(n, HW_USB_ENDPTn_RD(n) & ~(v))) +#define HW_USB_ENDPTn_TOG(n, v) (HW_USB_ENDPTn_WR(n, HW_USB_ENDPTn_RD(n) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_ENDPTn bitfields + */ + +/*! + * @name Register USB_ENDPTn, field EPHSHK[0] (RW) + * + * When set this bit enables an endpoint to perform handshaking during a + * transaction to this endpoint. This bit is generally 1 unless the endpoint is + * Isochronous. + */ +//@{ +#define BP_USB_ENDPTn_EPHSHK (0U) //!< Bit position for USB_ENDPTn_EPHSHK. +#define BM_USB_ENDPTn_EPHSHK (0x01U) //!< Bit mask for USB_ENDPTn_EPHSHK. +#define BS_USB_ENDPTn_EPHSHK (1U) //!< Bit field size in bits for USB_ENDPTn_EPHSHK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ENDPTn_EPHSHK field. +#define BR_USB_ENDPTn_EPHSHK(n) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPHSHK)) +#endif + +//! @brief Format value for bitfield USB_ENDPTn_EPHSHK. +#define BF_USB_ENDPTn_EPHSHK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ENDPTn_EPHSHK), uint8_t) & BM_USB_ENDPTn_EPHSHK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EPHSHK field to a new value. +#define BW_USB_ENDPTn_EPHSHK(n, v) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPHSHK) = (v)) +#endif +//@} + +/*! + * @name Register USB_ENDPTn, field EPSTALL[1] (RW) + * + * When set this bit indicates that the endpoint is called. This bit has + * priority over all other control bits in the EndPoint Enable Register, but it is only + * valid if EPTXEN=1 or EPRXEN=1. Any access to this endpoint causes the USB + * Module to return a STALL handshake. After an endpoint is stalled it requires + * intervention from the Host Controller. + */ +//@{ +#define BP_USB_ENDPTn_EPSTALL (1U) //!< Bit position for USB_ENDPTn_EPSTALL. +#define BM_USB_ENDPTn_EPSTALL (0x02U) //!< Bit mask for USB_ENDPTn_EPSTALL. +#define BS_USB_ENDPTn_EPSTALL (1U) //!< Bit field size in bits for USB_ENDPTn_EPSTALL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ENDPTn_EPSTALL field. +#define BR_USB_ENDPTn_EPSTALL(n) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPSTALL)) +#endif + +//! @brief Format value for bitfield USB_ENDPTn_EPSTALL. +#define BF_USB_ENDPTn_EPSTALL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ENDPTn_EPSTALL), uint8_t) & BM_USB_ENDPTn_EPSTALL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EPSTALL field to a new value. +#define BW_USB_ENDPTn_EPSTALL(n, v) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPSTALL) = (v)) +#endif +//@} + +/*! + * @name Register USB_ENDPTn, field EPTXEN[2] (RW) + * + * This bit, when set, enables the endpoint for TX transfers. + */ +//@{ +#define BP_USB_ENDPTn_EPTXEN (2U) //!< Bit position for USB_ENDPTn_EPTXEN. +#define BM_USB_ENDPTn_EPTXEN (0x04U) //!< Bit mask for USB_ENDPTn_EPTXEN. +#define BS_USB_ENDPTn_EPTXEN (1U) //!< Bit field size in bits for USB_ENDPTn_EPTXEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ENDPTn_EPTXEN field. +#define BR_USB_ENDPTn_EPTXEN(n) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPTXEN)) +#endif + +//! @brief Format value for bitfield USB_ENDPTn_EPTXEN. +#define BF_USB_ENDPTn_EPTXEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ENDPTn_EPTXEN), uint8_t) & BM_USB_ENDPTn_EPTXEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EPTXEN field to a new value. +#define BW_USB_ENDPTn_EPTXEN(n, v) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPTXEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_ENDPTn, field EPRXEN[3] (RW) + * + * This bit, when set, enables the endpoint for RX transfers. + */ +//@{ +#define BP_USB_ENDPTn_EPRXEN (3U) //!< Bit position for USB_ENDPTn_EPRXEN. +#define BM_USB_ENDPTn_EPRXEN (0x08U) //!< Bit mask for USB_ENDPTn_EPRXEN. +#define BS_USB_ENDPTn_EPRXEN (1U) //!< Bit field size in bits for USB_ENDPTn_EPRXEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ENDPTn_EPRXEN field. +#define BR_USB_ENDPTn_EPRXEN(n) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPRXEN)) +#endif + +//! @brief Format value for bitfield USB_ENDPTn_EPRXEN. +#define BF_USB_ENDPTn_EPRXEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ENDPTn_EPRXEN), uint8_t) & BM_USB_ENDPTn_EPRXEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EPRXEN field to a new value. +#define BW_USB_ENDPTn_EPRXEN(n, v) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPRXEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_ENDPTn, field EPCTLDIS[4] (RW) + * + * This bit, when set, disables control (SETUP) transfers. When cleared, control + * transfers are enabled. This applies if and only if the EPRXEN and EPTXEN bits + * are also set. + */ +//@{ +#define BP_USB_ENDPTn_EPCTLDIS (4U) //!< Bit position for USB_ENDPTn_EPCTLDIS. +#define BM_USB_ENDPTn_EPCTLDIS (0x10U) //!< Bit mask for USB_ENDPTn_EPCTLDIS. +#define BS_USB_ENDPTn_EPCTLDIS (1U) //!< Bit field size in bits for USB_ENDPTn_EPCTLDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ENDPTn_EPCTLDIS field. +#define BR_USB_ENDPTn_EPCTLDIS(n) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPCTLDIS)) +#endif + +//! @brief Format value for bitfield USB_ENDPTn_EPCTLDIS. +#define BF_USB_ENDPTn_EPCTLDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ENDPTn_EPCTLDIS), uint8_t) & BM_USB_ENDPTn_EPCTLDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the EPCTLDIS field to a new value. +#define BW_USB_ENDPTn_EPCTLDIS(n, v) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_EPCTLDIS) = (v)) +#endif +//@} + +/*! + * @name Register USB_ENDPTn, field RETRYDIS[6] (RW) + * + * This is a Host mode only bit and is present in the control register for + * endpoint 0 (ENDPT0) only. When set this bit causes the host to not retry NAK'ed + * (Negative Acknowledgement) transactions. When a transaction is NAKed, the BDT PID + * field is updated with the NAK PID, and the TOKEN_DNE interrupt is set. When + * this bit is cleared, NAKed transactions are retried in hardware. This bit must + * be set when the host is attempting to poll an interrupt endpoint. + */ +//@{ +#define BP_USB_ENDPTn_RETRYDIS (6U) //!< Bit position for USB_ENDPTn_RETRYDIS. +#define BM_USB_ENDPTn_RETRYDIS (0x40U) //!< Bit mask for USB_ENDPTn_RETRYDIS. +#define BS_USB_ENDPTn_RETRYDIS (1U) //!< Bit field size in bits for USB_ENDPTn_RETRYDIS. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ENDPTn_RETRYDIS field. +#define BR_USB_ENDPTn_RETRYDIS(n) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_RETRYDIS)) +#endif + +//! @brief Format value for bitfield USB_ENDPTn_RETRYDIS. +#define BF_USB_ENDPTn_RETRYDIS(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ENDPTn_RETRYDIS), uint8_t) & BM_USB_ENDPTn_RETRYDIS) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RETRYDIS field to a new value. +#define BW_USB_ENDPTn_RETRYDIS(n, v) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_RETRYDIS) = (v)) +#endif +//@} + +/*! + * @name Register USB_ENDPTn, field HOSTWOHUB[7] (RW) + * + * This is a Host mode only field and is present in the control register for + * endpoint 0 (ENDPT0) only. When set this bit allows the host to communicate to a + * directly connected low speed device. When cleared, the host produces the + * PRE_PID. It then switches to low-speed signaling when sending a token to a low speed + * device as required to communicate with a low speed device through a hub. + */ +//@{ +#define BP_USB_ENDPTn_HOSTWOHUB (7U) //!< Bit position for USB_ENDPTn_HOSTWOHUB. +#define BM_USB_ENDPTn_HOSTWOHUB (0x80U) //!< Bit mask for USB_ENDPTn_HOSTWOHUB. +#define BS_USB_ENDPTn_HOSTWOHUB (1U) //!< Bit field size in bits for USB_ENDPTn_HOSTWOHUB. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_ENDPTn_HOSTWOHUB field. +#define BR_USB_ENDPTn_HOSTWOHUB(n) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_HOSTWOHUB)) +#endif + +//! @brief Format value for bitfield USB_ENDPTn_HOSTWOHUB. +#define BF_USB_ENDPTn_HOSTWOHUB(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_ENDPTn_HOSTWOHUB), uint8_t) & BM_USB_ENDPTn_HOSTWOHUB) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the HOSTWOHUB field to a new value. +#define BW_USB_ENDPTn_HOSTWOHUB(n, v) (BITBAND_ACCESS8(HW_USB_ENDPTn_ADDR(n), BP_USB_ENDPTn_HOSTWOHUB) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_USBCTRL - USB Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_USBCTRL - USB Control register (RW) + * + * Reset value: 0xC0U + */ +typedef union _hw_usb_usbctrl +{ + uint8_t U; + struct _hw_usb_usbctrl_bitfields + { + uint8_t RESERVED0 : 6; //!< [5:0] + uint8_t PDE : 1; //!< [6] + uint8_t SUSP : 1; //!< [7] + } B; +} hw_usb_usbctrl_t; +#endif + +/*! + * @name Constants and macros for entire USB_USBCTRL register + */ +//@{ +#define HW_USB_USBCTRL_ADDR (REGS_USB_BASE + 0x100U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_USBCTRL (*(__IO hw_usb_usbctrl_t *) HW_USB_USBCTRL_ADDR) +#define HW_USB_USBCTRL_RD() (HW_USB_USBCTRL.U) +#define HW_USB_USBCTRL_WR(v) (HW_USB_USBCTRL.U = (v)) +#define HW_USB_USBCTRL_SET(v) (HW_USB_USBCTRL_WR(HW_USB_USBCTRL_RD() | (v))) +#define HW_USB_USBCTRL_CLR(v) (HW_USB_USBCTRL_WR(HW_USB_USBCTRL_RD() & ~(v))) +#define HW_USB_USBCTRL_TOG(v) (HW_USB_USBCTRL_WR(HW_USB_USBCTRL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_USBCTRL bitfields + */ + +/*! + * @name Register USB_USBCTRL, field PDE[6] (RW) + * + * Enables the weak pulldowns on the USB transceiver. + * + * Values: + * - 0 - Weak pulldowns are disabled on D+ and D-. + * - 1 - Weak pulldowns are enabled on D+ and D-. + */ +//@{ +#define BP_USB_USBCTRL_PDE (6U) //!< Bit position for USB_USBCTRL_PDE. +#define BM_USB_USBCTRL_PDE (0x40U) //!< Bit mask for USB_USBCTRL_PDE. +#define BS_USB_USBCTRL_PDE (1U) //!< Bit field size in bits for USB_USBCTRL_PDE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_USBCTRL_PDE field. +#define BR_USB_USBCTRL_PDE (BITBAND_ACCESS8(HW_USB_USBCTRL_ADDR, BP_USB_USBCTRL_PDE)) +#endif + +//! @brief Format value for bitfield USB_USBCTRL_PDE. +#define BF_USB_USBCTRL_PDE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_USBCTRL_PDE), uint8_t) & BM_USB_USBCTRL_PDE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PDE field to a new value. +#define BW_USB_USBCTRL_PDE(v) (BITBAND_ACCESS8(HW_USB_USBCTRL_ADDR, BP_USB_USBCTRL_PDE) = (v)) +#endif +//@} + +/*! + * @name Register USB_USBCTRL, field SUSP[7] (RW) + * + * Places the USB transceiver into the suspend state. + * + * Values: + * - 0 - USB transceiver is not in suspend state. + * - 1 - USB transceiver is in suspend state. + */ +//@{ +#define BP_USB_USBCTRL_SUSP (7U) //!< Bit position for USB_USBCTRL_SUSP. +#define BM_USB_USBCTRL_SUSP (0x80U) //!< Bit mask for USB_USBCTRL_SUSP. +#define BS_USB_USBCTRL_SUSP (1U) //!< Bit field size in bits for USB_USBCTRL_SUSP. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_USBCTRL_SUSP field. +#define BR_USB_USBCTRL_SUSP (BITBAND_ACCESS8(HW_USB_USBCTRL_ADDR, BP_USB_USBCTRL_SUSP)) +#endif + +//! @brief Format value for bitfield USB_USBCTRL_SUSP. +#define BF_USB_USBCTRL_SUSP(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_USBCTRL_SUSP), uint8_t) & BM_USB_USBCTRL_SUSP) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SUSP field to a new value. +#define BW_USB_USBCTRL_SUSP(v) (BITBAND_ACCESS8(HW_USB_USBCTRL_ADDR, BP_USB_USBCTRL_SUSP) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_OBSERVE - USB OTG Observe register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_OBSERVE - USB OTG Observe register (RO) + * + * Reset value: 0x50U + * + * Provides visibility on the state of the pull-ups and pull-downs at the + * transceiver. Useful when interfacing to an external OTG control module via a serial + * interface. + */ +typedef union _hw_usb_observe +{ + uint8_t U; + struct _hw_usb_observe_bitfields + { + uint8_t RESERVED0 : 4; //!< [3:0] + uint8_t DMPD : 1; //!< [4] + uint8_t RESERVED1 : 1; //!< [5] + uint8_t DPPD : 1; //!< [6] + uint8_t DPPU : 1; //!< [7] + } B; +} hw_usb_observe_t; +#endif + +/*! + * @name Constants and macros for entire USB_OBSERVE register + */ +//@{ +#define HW_USB_OBSERVE_ADDR (REGS_USB_BASE + 0x104U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_OBSERVE (*(__I hw_usb_observe_t *) HW_USB_OBSERVE_ADDR) +#define HW_USB_OBSERVE_RD() (HW_USB_OBSERVE.U) +#endif +//@} + +/* + * Constants & macros for individual USB_OBSERVE bitfields + */ + +/*! + * @name Register USB_OBSERVE, field DMPD[4] (RO) + * + * Provides observability of the D- Pulldown enable at the USB transceiver. + * + * Values: + * - 0 - D- pulldown disabled. + * - 1 - D- pulldown enabled. + */ +//@{ +#define BP_USB_OBSERVE_DMPD (4U) //!< Bit position for USB_OBSERVE_DMPD. +#define BM_USB_OBSERVE_DMPD (0x10U) //!< Bit mask for USB_OBSERVE_DMPD. +#define BS_USB_OBSERVE_DMPD (1U) //!< Bit field size in bits for USB_OBSERVE_DMPD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OBSERVE_DMPD field. +#define BR_USB_OBSERVE_DMPD (BITBAND_ACCESS8(HW_USB_OBSERVE_ADDR, BP_USB_OBSERVE_DMPD)) +#endif +//@} + +/*! + * @name Register USB_OBSERVE, field DPPD[6] (RO) + * + * Provides observability of the D+ Pulldown enable at the USB transceiver. + * + * Values: + * - 0 - D+ pulldown disabled. + * - 1 - D+ pulldown enabled. + */ +//@{ +#define BP_USB_OBSERVE_DPPD (6U) //!< Bit position for USB_OBSERVE_DPPD. +#define BM_USB_OBSERVE_DPPD (0x40U) //!< Bit mask for USB_OBSERVE_DPPD. +#define BS_USB_OBSERVE_DPPD (1U) //!< Bit field size in bits for USB_OBSERVE_DPPD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OBSERVE_DPPD field. +#define BR_USB_OBSERVE_DPPD (BITBAND_ACCESS8(HW_USB_OBSERVE_ADDR, BP_USB_OBSERVE_DPPD)) +#endif +//@} + +/*! + * @name Register USB_OBSERVE, field DPPU[7] (RO) + * + * Provides observability of the D+ Pullup enable at the USB transceiver. + * + * Values: + * - 0 - D+ pullup disabled. + * - 1 - D+ pullup enabled. + */ +//@{ +#define BP_USB_OBSERVE_DPPU (7U) //!< Bit position for USB_OBSERVE_DPPU. +#define BM_USB_OBSERVE_DPPU (0x80U) //!< Bit mask for USB_OBSERVE_DPPU. +#define BS_USB_OBSERVE_DPPU (1U) //!< Bit field size in bits for USB_OBSERVE_DPPU. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_OBSERVE_DPPU field. +#define BR_USB_OBSERVE_DPPU (BITBAND_ACCESS8(HW_USB_OBSERVE_ADDR, BP_USB_OBSERVE_DPPU)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_CONTROL - USB OTG Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_CONTROL - USB OTG Control register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_usb_control +{ + uint8_t U; + struct _hw_usb_control_bitfields + { + uint8_t RESERVED0 : 4; //!< [3:0] + uint8_t DPPULLUPNONOTG : 1; //!< [4] + uint8_t RESERVED1 : 3; //!< [7:5] + } B; +} hw_usb_control_t; +#endif + +/*! + * @name Constants and macros for entire USB_CONTROL register + */ +//@{ +#define HW_USB_CONTROL_ADDR (REGS_USB_BASE + 0x108U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_CONTROL (*(__IO hw_usb_control_t *) HW_USB_CONTROL_ADDR) +#define HW_USB_CONTROL_RD() (HW_USB_CONTROL.U) +#define HW_USB_CONTROL_WR(v) (HW_USB_CONTROL.U = (v)) +#define HW_USB_CONTROL_SET(v) (HW_USB_CONTROL_WR(HW_USB_CONTROL_RD() | (v))) +#define HW_USB_CONTROL_CLR(v) (HW_USB_CONTROL_WR(HW_USB_CONTROL_RD() & ~(v))) +#define HW_USB_CONTROL_TOG(v) (HW_USB_CONTROL_WR(HW_USB_CONTROL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_CONTROL bitfields + */ + +/*! + * @name Register USB_CONTROL, field DPPULLUPNONOTG[4] (RW) + * + * Provides control of the DP Pullup in USBOTG, if USB is configured in non-OTG + * device mode. + * + * Values: + * - 0 - DP Pullup in non-OTG device mode is not enabled. + * - 1 - DP Pullup in non-OTG device mode is enabled. + */ +//@{ +#define BP_USB_CONTROL_DPPULLUPNONOTG (4U) //!< Bit position for USB_CONTROL_DPPULLUPNONOTG. +#define BM_USB_CONTROL_DPPULLUPNONOTG (0x10U) //!< Bit mask for USB_CONTROL_DPPULLUPNONOTG. +#define BS_USB_CONTROL_DPPULLUPNONOTG (1U) //!< Bit field size in bits for USB_CONTROL_DPPULLUPNONOTG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CONTROL_DPPULLUPNONOTG field. +#define BR_USB_CONTROL_DPPULLUPNONOTG (BITBAND_ACCESS8(HW_USB_CONTROL_ADDR, BP_USB_CONTROL_DPPULLUPNONOTG)) +#endif + +//! @brief Format value for bitfield USB_CONTROL_DPPULLUPNONOTG. +#define BF_USB_CONTROL_DPPULLUPNONOTG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CONTROL_DPPULLUPNONOTG), uint8_t) & BM_USB_CONTROL_DPPULLUPNONOTG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DPPULLUPNONOTG field to a new value. +#define BW_USB_CONTROL_DPPULLUPNONOTG(v) (BITBAND_ACCESS8(HW_USB_CONTROL_ADDR, BP_USB_CONTROL_DPPULLUPNONOTG) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_USBTRC0 - USB Transceiver Control register 0 +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_USBTRC0 - USB Transceiver Control register 0 (RW) + * + * Reset value: 0x00U + * + * Includes signals for basic operation of the on-chip USB Full Speed + * transceiver and configuration of the USB data connection that are not otherwise included + * in the USB Full Speed controller registers. + */ +typedef union _hw_usb_usbtrc0 +{ + uint8_t U; + struct _hw_usb_usbtrc0_bitfields + { + uint8_t USB_RESUME_INT : 1; //!< [0] USB Asynchronous Interrupt + uint8_t SYNC_DET : 1; //!< [1] Synchronous USB Interrupt Detect + uint8_t USB_CLK_RECOVERY_INT : 1; //!< [2] Combined USB Clock + //! Recovery interrupt status + uint8_t RESERVED0 : 2; //!< [4:3] + uint8_t USBRESMEN : 1; //!< [5] Asynchronous Resume Interrupt Enable + uint8_t RESERVED1 : 1; //!< [6] + uint8_t USBRESET : 1; //!< [7] USB Reset + } B; +} hw_usb_usbtrc0_t; +#endif + +/*! + * @name Constants and macros for entire USB_USBTRC0 register + */ +//@{ +#define HW_USB_USBTRC0_ADDR (REGS_USB_BASE + 0x10CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_USBTRC0 (*(__IO hw_usb_usbtrc0_t *) HW_USB_USBTRC0_ADDR) +#define HW_USB_USBTRC0_RD() (HW_USB_USBTRC0.U) +#define HW_USB_USBTRC0_WR(v) (HW_USB_USBTRC0.U = (v)) +#define HW_USB_USBTRC0_SET(v) (HW_USB_USBTRC0_WR(HW_USB_USBTRC0_RD() | (v))) +#define HW_USB_USBTRC0_CLR(v) (HW_USB_USBTRC0_WR(HW_USB_USBTRC0_RD() & ~(v))) +#define HW_USB_USBTRC0_TOG(v) (HW_USB_USBTRC0_WR(HW_USB_USBTRC0_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_USBTRC0 bitfields + */ + +/*! + * @name Register USB_USBTRC0, field USB_RESUME_INT[0] (RO) + * + * Values: + * - 0 - No interrupt was generated. + * - 1 - Interrupt was generated because of the USB asynchronous interrupt. + */ +//@{ +#define BP_USB_USBTRC0_USB_RESUME_INT (0U) //!< Bit position for USB_USBTRC0_USB_RESUME_INT. +#define BM_USB_USBTRC0_USB_RESUME_INT (0x01U) //!< Bit mask for USB_USBTRC0_USB_RESUME_INT. +#define BS_USB_USBTRC0_USB_RESUME_INT (1U) //!< Bit field size in bits for USB_USBTRC0_USB_RESUME_INT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_USBTRC0_USB_RESUME_INT field. +#define BR_USB_USBTRC0_USB_RESUME_INT (BITBAND_ACCESS8(HW_USB_USBTRC0_ADDR, BP_USB_USBTRC0_USB_RESUME_INT)) +#endif +//@} + +/*! + * @name Register USB_USBTRC0, field SYNC_DET[1] (RO) + * + * Values: + * - 0 - Synchronous interrupt has not been detected. + * - 1 - Synchronous interrupt has been detected. + */ +//@{ +#define BP_USB_USBTRC0_SYNC_DET (1U) //!< Bit position for USB_USBTRC0_SYNC_DET. +#define BM_USB_USBTRC0_SYNC_DET (0x02U) //!< Bit mask for USB_USBTRC0_SYNC_DET. +#define BS_USB_USBTRC0_SYNC_DET (1U) //!< Bit field size in bits for USB_USBTRC0_SYNC_DET. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_USBTRC0_SYNC_DET field. +#define BR_USB_USBTRC0_SYNC_DET (BITBAND_ACCESS8(HW_USB_USBTRC0_ADDR, BP_USB_USBTRC0_SYNC_DET)) +#endif +//@} + +/*! + * @name Register USB_USBTRC0, field USB_CLK_RECOVERY_INT[2] (RO) + * + * This read-only field will be set to value high at 1'b1 when any of USB clock + * recovery interrupt conditions are detected and those interrupts are unmasked. + * For customer use the only unmasked USB clock recovery interrupt condition + * results from an overflow of the frequency trim setting values indicating that the + * frequency trim calculated is out of the adjustment range of the IRC48M output + * clock. To clear this bit after it has been set, Write 0xFF to register + * USB_CLK_RECOVER_INT_STATUS. + */ +//@{ +#define BP_USB_USBTRC0_USB_CLK_RECOVERY_INT (2U) //!< Bit position for USB_USBTRC0_USB_CLK_RECOVERY_INT. +#define BM_USB_USBTRC0_USB_CLK_RECOVERY_INT (0x04U) //!< Bit mask for USB_USBTRC0_USB_CLK_RECOVERY_INT. +#define BS_USB_USBTRC0_USB_CLK_RECOVERY_INT (1U) //!< Bit field size in bits for USB_USBTRC0_USB_CLK_RECOVERY_INT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_USBTRC0_USB_CLK_RECOVERY_INT field. +#define BR_USB_USBTRC0_USB_CLK_RECOVERY_INT (BITBAND_ACCESS8(HW_USB_USBTRC0_ADDR, BP_USB_USBTRC0_USB_CLK_RECOVERY_INT)) +#endif +//@} + +/*! + * @name Register USB_USBTRC0, field USBRESMEN[5] (RW) + * + * This bit, when set, allows the USB module to send an asynchronous wakeup + * event to the MCU upon detection of resume signaling on the USB bus. The MCU then + * re-enables clocks to the USB module. It is used for low-power suspend mode when + * USB module clocks are stopped or the USB transceiver is in Suspend mode. + * Async wakeup only works in device mode. + * + * Values: + * - 0 - USB asynchronous wakeup from suspend mode disabled. + * - 1 - USB asynchronous wakeup from suspend mode enabled. The asynchronous + * resume interrupt differs from the synchronous resume interrupt in that it + * asynchronously detects K-state using the unfiltered state of the D+ and D- + * pins. This interrupt should only be enabled when the Transceiver is + * suspended. + */ +//@{ +#define BP_USB_USBTRC0_USBRESMEN (5U) //!< Bit position for USB_USBTRC0_USBRESMEN. +#define BM_USB_USBTRC0_USBRESMEN (0x20U) //!< Bit mask for USB_USBTRC0_USBRESMEN. +#define BS_USB_USBTRC0_USBRESMEN (1U) //!< Bit field size in bits for USB_USBTRC0_USBRESMEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_USBTRC0_USBRESMEN field. +#define BR_USB_USBTRC0_USBRESMEN (BITBAND_ACCESS8(HW_USB_USBTRC0_ADDR, BP_USB_USBTRC0_USBRESMEN)) +#endif + +//! @brief Format value for bitfield USB_USBTRC0_USBRESMEN. +#define BF_USB_USBTRC0_USBRESMEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_USBTRC0_USBRESMEN), uint8_t) & BM_USB_USBTRC0_USBRESMEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the USBRESMEN field to a new value. +#define BW_USB_USBTRC0_USBRESMEN(v) (BITBAND_ACCESS8(HW_USB_USBTRC0_ADDR, BP_USB_USBTRC0_USBRESMEN) = (v)) +#endif +//@} + +/*! + * @name Register USB_USBTRC0, field USBRESET[7] (WO) + * + * Generates a hard reset to USBOTG. After this bit is set and the reset occurs, + * this bit is automatically cleared. This bit is always read as zero. Wait two + * USB clock cycles after setting this bit. + * + * Values: + * - 0 - Normal USB module operation. + * - 1 - Returns the USB module to its reset state. + */ +//@{ +#define BP_USB_USBTRC0_USBRESET (7U) //!< Bit position for USB_USBTRC0_USBRESET. +#define BM_USB_USBTRC0_USBRESET (0x80U) //!< Bit mask for USB_USBTRC0_USBRESET. +#define BS_USB_USBTRC0_USBRESET (1U) //!< Bit field size in bits for USB_USBTRC0_USBRESET. + +//! @brief Format value for bitfield USB_USBTRC0_USBRESET. +#define BF_USB_USBTRC0_USBRESET(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_USBTRC0_USBRESET), uint8_t) & BM_USB_USBTRC0_USBRESET) +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_USBFRMADJUST - Frame Adjust Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_USBFRMADJUST - Frame Adjust Register (RW) + * + * Reset value: 0x00U + */ +typedef union _hw_usb_usbfrmadjust +{ + uint8_t U; + struct _hw_usb_usbfrmadjust_bitfields + { + uint8_t ADJ : 8; //!< [7:0] Frame Adjustment + } B; +} hw_usb_usbfrmadjust_t; +#endif + +/*! + * @name Constants and macros for entire USB_USBFRMADJUST register + */ +//@{ +#define HW_USB_USBFRMADJUST_ADDR (REGS_USB_BASE + 0x114U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_USBFRMADJUST (*(__IO hw_usb_usbfrmadjust_t *) HW_USB_USBFRMADJUST_ADDR) +#define HW_USB_USBFRMADJUST_RD() (HW_USB_USBFRMADJUST.U) +#define HW_USB_USBFRMADJUST_WR(v) (HW_USB_USBFRMADJUST.U = (v)) +#define HW_USB_USBFRMADJUST_SET(v) (HW_USB_USBFRMADJUST_WR(HW_USB_USBFRMADJUST_RD() | (v))) +#define HW_USB_USBFRMADJUST_CLR(v) (HW_USB_USBFRMADJUST_WR(HW_USB_USBFRMADJUST_RD() & ~(v))) +#define HW_USB_USBFRMADJUST_TOG(v) (HW_USB_USBFRMADJUST_WR(HW_USB_USBFRMADJUST_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_USBFRMADJUST bitfields + */ + +/*! + * @name Register USB_USBFRMADJUST, field ADJ[7:0] (RW) + * + * In Host mode, the frame adjustment is a twos complement number that adjusts + * the period of each USB frame in 12-MHz clock periods. A SOF is normally + * generated every 12,000 12-MHz clock cycles. The Frame Adjust Register can adjust this + * by -128 to +127 to compensate for inaccuracies in the USB 48-MHz clock. + * Changes to the ADJ bit take effect at the next start of the next frame. + */ +//@{ +#define BP_USB_USBFRMADJUST_ADJ (0U) //!< Bit position for USB_USBFRMADJUST_ADJ. +#define BM_USB_USBFRMADJUST_ADJ (0xFFU) //!< Bit mask for USB_USBFRMADJUST_ADJ. +#define BS_USB_USBFRMADJUST_ADJ (8U) //!< Bit field size in bits for USB_USBFRMADJUST_ADJ. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_USBFRMADJUST_ADJ field. +#define BR_USB_USBFRMADJUST_ADJ (HW_USB_USBFRMADJUST.U) +#endif + +//! @brief Format value for bitfield USB_USBFRMADJUST_ADJ. +#define BF_USB_USBFRMADJUST_ADJ(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_USBFRMADJUST_ADJ), uint8_t) & BM_USB_USBFRMADJUST_ADJ) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ADJ field to a new value. +#define BW_USB_USBFRMADJUST_ADJ(v) (HW_USB_USBFRMADJUST_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_CLK_RECOVER_CTRL - USB Clock recovery control +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_CLK_RECOVER_CTRL - USB Clock recovery control (RW) + * + * Reset value: 0x00U + * + * Signals in this register control the crystal-less USB clock mode in which the + * internal IRC48M oscillator is tuned to match the clock extracted from the + * incoming USB data stream. The IRC48M internal oscillator module must be enabled + * in register USB_CLK_RECOVER_IRC_EN for this mode. + */ +typedef union _hw_usb_clk_recover_ctrl +{ + uint8_t U; + struct _hw_usb_clk_recover_ctrl_bitfields + { + uint8_t RESERVED0 : 5; //!< [4:0] + uint8_t RESTART_IFRTRIM_EN : 1; //!< [5] Restart from IFR trim value + uint8_t RESET_RESUME_ROUGH_EN : 1; //!< [6] Reset/resume to rough + //! phase enable + uint8_t CLOCK_RECOVER_EN : 1; //!< [7] Crystal-less USB enable + } B; +} hw_usb_clk_recover_ctrl_t; +#endif + +/*! + * @name Constants and macros for entire USB_CLK_RECOVER_CTRL register + */ +//@{ +#define HW_USB_CLK_RECOVER_CTRL_ADDR (REGS_USB_BASE + 0x140U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_CLK_RECOVER_CTRL (*(__IO hw_usb_clk_recover_ctrl_t *) HW_USB_CLK_RECOVER_CTRL_ADDR) +#define HW_USB_CLK_RECOVER_CTRL_RD() (HW_USB_CLK_RECOVER_CTRL.U) +#define HW_USB_CLK_RECOVER_CTRL_WR(v) (HW_USB_CLK_RECOVER_CTRL.U = (v)) +#define HW_USB_CLK_RECOVER_CTRL_SET(v) (HW_USB_CLK_RECOVER_CTRL_WR(HW_USB_CLK_RECOVER_CTRL_RD() | (v))) +#define HW_USB_CLK_RECOVER_CTRL_CLR(v) (HW_USB_CLK_RECOVER_CTRL_WR(HW_USB_CLK_RECOVER_CTRL_RD() & ~(v))) +#define HW_USB_CLK_RECOVER_CTRL_TOG(v) (HW_USB_CLK_RECOVER_CTRL_WR(HW_USB_CLK_RECOVER_CTRL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_CLK_RECOVER_CTRL bitfields + */ + +/*! + * @name Register USB_CLK_RECOVER_CTRL, field RESTART_IFRTRIM_EN[5] (RW) + * + * IRC48 has a default trim fine value whose default value is factory trimmed + * (the IFR trim value). Clock recover block tracks the accuracy of the clock 48Mhz + * and keeps updating the trim fine value accordingly + * + * Values: + * - 0 - Trim fine adjustment always works based on the previous updated trim + * fine value (default) + * - 1 - Trim fine restarts from the IFR trim value whenever + * bus_reset/bus_resume is detected or module enable is desasserted + */ +//@{ +#define BP_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN (5U) //!< Bit position for USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN. +#define BM_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN (0x20U) //!< Bit mask for USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN. +#define BS_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN (1U) //!< Bit field size in bits for USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN field. +#define BR_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_CTRL_ADDR, BP_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN)) +#endif + +//! @brief Format value for bitfield USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN. +#define BF_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN), uint8_t) & BM_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RESTART_IFRTRIM_EN field to a new value. +#define BW_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN(v) (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_CTRL_ADDR, BP_USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN) = (v)) +#endif +//@} + +/*! + * @name Register USB_CLK_RECOVER_CTRL, field RESET_RESUME_ROUGH_EN[6] (RW) + * + * The clock recovery block tracks the IRC48Mhz to get an accurate 48Mhz clock. + * It has two phases after user enables clock_recover_en bit, rough phase and + * tracking phase. The step to fine tune the IRC 48Mhz by adjusting the trim fine + * value is different during these two phases. The step in rough phase is larger + * than that in tracking phase. Switch back to rough stage whenever USB bus reset + * or bus resume occurs. + * + * Values: + * - 0 - Always works in tracking phase after the 1st time rough to track + * transition (default) + * - 1 - Go back to rough stage whenever bus reset or bus resume occurs + */ +//@{ +#define BP_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN (6U) //!< Bit position for USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN. +#define BM_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN (0x40U) //!< Bit mask for USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN. +#define BS_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN (1U) //!< Bit field size in bits for USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN field. +#define BR_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_CTRL_ADDR, BP_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN)) +#endif + +//! @brief Format value for bitfield USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN. +#define BF_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN), uint8_t) & BM_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RESET_RESUME_ROUGH_EN field to a new value. +#define BW_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN(v) (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_CTRL_ADDR, BP_USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN) = (v)) +#endif +//@} + +/*! + * @name Register USB_CLK_RECOVER_CTRL, field CLOCK_RECOVER_EN[7] (RW) + * + * This bit must be enabled if user wants to use the crystal-less USB mode for + * the Full Speed USB controller and transceiver. This bit should not be set for + * USB host mode or OTG. + * + * Values: + * - 0 - Disable clock recovery block (default) + * - 1 - Enable clock recovery block + */ +//@{ +#define BP_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN (7U) //!< Bit position for USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN. +#define BM_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN (0x80U) //!< Bit mask for USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN. +#define BS_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN (1U) //!< Bit field size in bits for USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN field. +#define BR_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_CTRL_ADDR, BP_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN)) +#endif + +//! @brief Format value for bitfield USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN. +#define BF_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN), uint8_t) & BM_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLOCK_RECOVER_EN field to a new value. +#define BW_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN(v) (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_CTRL_ADDR, BP_USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_CLK_RECOVER_IRC_EN - IRC48M oscillator enable register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_CLK_RECOVER_IRC_EN - IRC48M oscillator enable register (RW) + * + * Reset value: 0x01U + * + * Controls basic operation of the on-chip IRC48M module used to produce nominal + * 48MHz clocks for USB crystal-less operation and other functions. See + * additional information about the IRC48M operation in the Clock Distribution chapter. + */ +typedef union _hw_usb_clk_recover_irc_en +{ + uint8_t U; + struct _hw_usb_clk_recover_irc_en_bitfields + { + uint8_t REG_EN : 1; //!< [0] IRC48M regulator enable + uint8_t IRC_EN : 1; //!< [1] IRC48M enable + uint8_t RESERVED0 : 6; //!< [7:2] + } B; +} hw_usb_clk_recover_irc_en_t; +#endif + +/*! + * @name Constants and macros for entire USB_CLK_RECOVER_IRC_EN register + */ +//@{ +#define HW_USB_CLK_RECOVER_IRC_EN_ADDR (REGS_USB_BASE + 0x144U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_CLK_RECOVER_IRC_EN (*(__IO hw_usb_clk_recover_irc_en_t *) HW_USB_CLK_RECOVER_IRC_EN_ADDR) +#define HW_USB_CLK_RECOVER_IRC_EN_RD() (HW_USB_CLK_RECOVER_IRC_EN.U) +#define HW_USB_CLK_RECOVER_IRC_EN_WR(v) (HW_USB_CLK_RECOVER_IRC_EN.U = (v)) +#define HW_USB_CLK_RECOVER_IRC_EN_SET(v) (HW_USB_CLK_RECOVER_IRC_EN_WR(HW_USB_CLK_RECOVER_IRC_EN_RD() | (v))) +#define HW_USB_CLK_RECOVER_IRC_EN_CLR(v) (HW_USB_CLK_RECOVER_IRC_EN_WR(HW_USB_CLK_RECOVER_IRC_EN_RD() & ~(v))) +#define HW_USB_CLK_RECOVER_IRC_EN_TOG(v) (HW_USB_CLK_RECOVER_IRC_EN_WR(HW_USB_CLK_RECOVER_IRC_EN_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_CLK_RECOVER_IRC_EN bitfields + */ + +/*! + * @name Register USB_CLK_RECOVER_IRC_EN, field REG_EN[0] (RW) + * + * This bit is used to enable the local analog regulator for IRC48Mhz module. + * This bit must be set if user wants to use the crystal-less USB clock + * configuration. + * + * Values: + * - 0 - IRC48M local regulator is disabled + * - 1 - IRC48M local regulator is enabled (default) + */ +//@{ +#define BP_USB_CLK_RECOVER_IRC_EN_REG_EN (0U) //!< Bit position for USB_CLK_RECOVER_IRC_EN_REG_EN. +#define BM_USB_CLK_RECOVER_IRC_EN_REG_EN (0x01U) //!< Bit mask for USB_CLK_RECOVER_IRC_EN_REG_EN. +#define BS_USB_CLK_RECOVER_IRC_EN_REG_EN (1U) //!< Bit field size in bits for USB_CLK_RECOVER_IRC_EN_REG_EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CLK_RECOVER_IRC_EN_REG_EN field. +#define BR_USB_CLK_RECOVER_IRC_EN_REG_EN (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_IRC_EN_ADDR, BP_USB_CLK_RECOVER_IRC_EN_REG_EN)) +#endif + +//! @brief Format value for bitfield USB_CLK_RECOVER_IRC_EN_REG_EN. +#define BF_USB_CLK_RECOVER_IRC_EN_REG_EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CLK_RECOVER_IRC_EN_REG_EN), uint8_t) & BM_USB_CLK_RECOVER_IRC_EN_REG_EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the REG_EN field to a new value. +#define BW_USB_CLK_RECOVER_IRC_EN_REG_EN(v) (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_IRC_EN_ADDR, BP_USB_CLK_RECOVER_IRC_EN_REG_EN) = (v)) +#endif +//@} + +/*! + * @name Register USB_CLK_RECOVER_IRC_EN, field IRC_EN[1] (RW) + * + * This bit is used to enable the on-chip IRC48Mhz module to generate clocks for + * crystal-less USB. It can only be used for FS USB device mode operation. This + * bit must be set before using the crystal-less USB clock configuration. + * + * Values: + * - 0 - Disable the IRC48M module (default) + * - 1 - Enable the IRC48M module + */ +//@{ +#define BP_USB_CLK_RECOVER_IRC_EN_IRC_EN (1U) //!< Bit position for USB_CLK_RECOVER_IRC_EN_IRC_EN. +#define BM_USB_CLK_RECOVER_IRC_EN_IRC_EN (0x02U) //!< Bit mask for USB_CLK_RECOVER_IRC_EN_IRC_EN. +#define BS_USB_CLK_RECOVER_IRC_EN_IRC_EN (1U) //!< Bit field size in bits for USB_CLK_RECOVER_IRC_EN_IRC_EN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CLK_RECOVER_IRC_EN_IRC_EN field. +#define BR_USB_CLK_RECOVER_IRC_EN_IRC_EN (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_IRC_EN_ADDR, BP_USB_CLK_RECOVER_IRC_EN_IRC_EN)) +#endif + +//! @brief Format value for bitfield USB_CLK_RECOVER_IRC_EN_IRC_EN. +#define BF_USB_CLK_RECOVER_IRC_EN_IRC_EN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CLK_RECOVER_IRC_EN_IRC_EN), uint8_t) & BM_USB_CLK_RECOVER_IRC_EN_IRC_EN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IRC_EN field to a new value. +#define BW_USB_CLK_RECOVER_IRC_EN_IRC_EN(v) (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_IRC_EN_ADDR, BP_USB_CLK_RECOVER_IRC_EN_IRC_EN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USB_CLK_RECOVER_INT_STATUS - Clock recovery separated interrupt status +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USB_CLK_RECOVER_INT_STATUS - Clock recovery separated interrupt status (W1C) + * + * Reset value: 0x00U + * + * A Write operation with value high at 1'b1 on any combination of individual + * bits will clear those bits. + */ +typedef union _hw_usb_clk_recover_int_status +{ + uint8_t U; + struct _hw_usb_clk_recover_int_status_bitfields + { + uint8_t RESERVED0 : 4; //!< [3:0] + uint8_t OVF_ERROR : 1; //!< [4] + uint8_t RESERVED1 : 3; //!< [7:5] + } B; +} hw_usb_clk_recover_int_status_t; +#endif + +/*! + * @name Constants and macros for entire USB_CLK_RECOVER_INT_STATUS register + */ +//@{ +#define HW_USB_CLK_RECOVER_INT_STATUS_ADDR (REGS_USB_BASE + 0x15CU) + +#ifndef __LANGUAGE_ASM__ +#define HW_USB_CLK_RECOVER_INT_STATUS (*(__IO hw_usb_clk_recover_int_status_t *) HW_USB_CLK_RECOVER_INT_STATUS_ADDR) +#define HW_USB_CLK_RECOVER_INT_STATUS_RD() (HW_USB_CLK_RECOVER_INT_STATUS.U) +#define HW_USB_CLK_RECOVER_INT_STATUS_WR(v) (HW_USB_CLK_RECOVER_INT_STATUS.U = (v)) +#define HW_USB_CLK_RECOVER_INT_STATUS_SET(v) (HW_USB_CLK_RECOVER_INT_STATUS_WR(HW_USB_CLK_RECOVER_INT_STATUS_RD() | (v))) +#define HW_USB_CLK_RECOVER_INT_STATUS_CLR(v) (HW_USB_CLK_RECOVER_INT_STATUS_WR(HW_USB_CLK_RECOVER_INT_STATUS_RD() & ~(v))) +#define HW_USB_CLK_RECOVER_INT_STATUS_TOG(v) (HW_USB_CLK_RECOVER_INT_STATUS_WR(HW_USB_CLK_RECOVER_INT_STATUS_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USB_CLK_RECOVER_INT_STATUS bitfields + */ + +/*! + * @name Register USB_CLK_RECOVER_INT_STATUS, field OVF_ERROR[4] (W1C) + * + * Indicates that the USB clock recovery algorithm has detected that the + * frequency trim adjustment needed for the IRC48M output clock is outside the available + * TRIM_FINE adjustment range for the IRC48M module. + * + * Values: + * - 0 - No interrupt is reported + * - 1 - Unmasked interrupt has been generated + */ +//@{ +#define BP_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR (4U) //!< Bit position for USB_CLK_RECOVER_INT_STATUS_OVF_ERROR. +#define BM_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR (0x10U) //!< Bit mask for USB_CLK_RECOVER_INT_STATUS_OVF_ERROR. +#define BS_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR (1U) //!< Bit field size in bits for USB_CLK_RECOVER_INT_STATUS_OVF_ERROR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USB_CLK_RECOVER_INT_STATUS_OVF_ERROR field. +#define BR_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_INT_STATUS_ADDR, BP_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR)) +#endif + +//! @brief Format value for bitfield USB_CLK_RECOVER_INT_STATUS_OVF_ERROR. +#define BF_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR), uint8_t) & BM_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the OVF_ERROR field to a new value. +#define BW_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR(v) (BITBAND_ACCESS8(HW_USB_CLK_RECOVER_INT_STATUS_ADDR, BP_USB_CLK_RECOVER_INT_STATUS_OVF_ERROR) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_usb_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All USB module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_usb +{ + __I hw_usb_perid_t PERID; //!< [0x0] Peripheral ID register + uint8_t _reserved0[3]; + __I hw_usb_idcomp_t IDCOMP; //!< [0x4] Peripheral ID Complement register + uint8_t _reserved1[3]; + __I hw_usb_rev_t REV; //!< [0x8] Peripheral Revision register + uint8_t _reserved2[3]; + __I hw_usb_addinfo_t ADDINFO; //!< [0xC] Peripheral Additional Info register + uint8_t _reserved3[3]; + __IO hw_usb_otgistat_t OTGISTAT; //!< [0x10] OTG Interrupt Status register + uint8_t _reserved4[3]; + __IO hw_usb_otgicr_t OTGICR; //!< [0x14] OTG Interrupt Control register + uint8_t _reserved5[3]; + __IO hw_usb_otgstat_t OTGSTAT; //!< [0x18] OTG Status register + uint8_t _reserved6[3]; + __IO hw_usb_otgctl_t OTGCTL; //!< [0x1C] OTG Control register + uint8_t _reserved7[99]; + __IO hw_usb_istat_t ISTAT; //!< [0x80] Interrupt Status register + uint8_t _reserved8[3]; + __IO hw_usb_inten_t INTEN; //!< [0x84] Interrupt Enable register + uint8_t _reserved9[3]; + __IO hw_usb_errstat_t ERRSTAT; //!< [0x88] Error Interrupt Status register + uint8_t _reserved10[3]; + __IO hw_usb_erren_t ERREN; //!< [0x8C] Error Interrupt Enable register + uint8_t _reserved11[3]; + __I hw_usb_stat_t STAT; //!< [0x90] Status register + uint8_t _reserved12[3]; + __IO hw_usb_ctl_t CTL; //!< [0x94] Control register + uint8_t _reserved13[3]; + __IO hw_usb_addr_t ADDR; //!< [0x98] Address register + uint8_t _reserved14[3]; + __IO hw_usb_bdtpage1_t BDTPAGE1; //!< [0x9C] BDT Page register 1 + uint8_t _reserved15[3]; + __IO hw_usb_frmnuml_t FRMNUML; //!< [0xA0] Frame Number register Low + uint8_t _reserved16[3]; + __IO hw_usb_frmnumh_t FRMNUMH; //!< [0xA4] Frame Number register High + uint8_t _reserved17[3]; + __IO hw_usb_token_t TOKEN; //!< [0xA8] Token register + uint8_t _reserved18[3]; + __IO hw_usb_softhld_t SOFTHLD; //!< [0xAC] SOF Threshold register + uint8_t _reserved19[3]; + __IO hw_usb_bdtpage2_t BDTPAGE2; //!< [0xB0] BDT Page Register 2 + uint8_t _reserved20[3]; + __IO hw_usb_bdtpage3_t BDTPAGE3; //!< [0xB4] BDT Page Register 3 + uint8_t _reserved21[11]; + struct { + __IO hw_usb_endptn_t ENDPTn; //!< [0xC0] Endpoint Control register + uint8_t _reserved0[3]; + } ENDPOINT[16]; + __IO hw_usb_usbctrl_t USBCTRL; //!< [0x100] USB Control register + uint8_t _reserved22[3]; + __I hw_usb_observe_t OBSERVE; //!< [0x104] USB OTG Observe register + uint8_t _reserved23[3]; + __IO hw_usb_control_t CONTROL; //!< [0x108] USB OTG Control register + uint8_t _reserved24[3]; + __IO hw_usb_usbtrc0_t USBTRC0; //!< [0x10C] USB Transceiver Control register 0 + uint8_t _reserved25[7]; + __IO hw_usb_usbfrmadjust_t USBFRMADJUST; //!< [0x114] Frame Adjust Register + uint8_t _reserved26[43]; + __IO hw_usb_clk_recover_ctrl_t CLK_RECOVER_CTRL; //!< [0x140] USB Clock recovery control + uint8_t _reserved27[3]; + __IO hw_usb_clk_recover_irc_en_t CLK_RECOVER_IRC_EN; //!< [0x144] IRC48M oscillator enable register + uint8_t _reserved28[23]; + __IO hw_usb_clk_recover_int_status_t CLK_RECOVER_INT_STATUS; //!< [0x15C] Clock recovery separated interrupt status +} hw_usb_t; +#pragma pack() + +//! @brief Macro to access all USB registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_USB</code>. +#define HW_USB (*(hw_usb_t *) REGS_USB_BASE) +#endif + +#endif // __HW_USB_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_usbdcd.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,957 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_USBDCD_REGISTERS_H__ +#define __HW_USBDCD_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 USBDCD + * + * USB Device Charger Detection module + * + * Registers defined in this header file: + * - HW_USBDCD_CONTROL - Control register + * - HW_USBDCD_CLOCK - Clock register + * - HW_USBDCD_STATUS - Status register + * - HW_USBDCD_TIMER0 - TIMER0 register + * - HW_USBDCD_TIMER1 - TIMER1 register + * - HW_USBDCD_TIMER2_BC11 - TIMER2_BC11 register + * - HW_USBDCD_TIMER2_BC12 - TIMER2_BC12 register + * + * - hw_usbdcd_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_USBDCD_BASE +#define HW_USBDCD_INSTANCE_COUNT (1U) //!< Number of instances of the USBDCD module. +#define HW_USBDCD0 (0U) //!< Instance number for USBDCD. +#define REGS_USBDCD0_BASE (0x40035000U) //!< Base address for USBDCD. + +//! @brief Table of base addresses for USBDCD instances. +static const uint32_t __g_regs_USBDCD_base_addresses[] = { + REGS_USBDCD0_BASE, + }; + +//! @brief Get the base address of USBDCD by instance number. +//! @param x USBDCD instance number, from 0 through 0. +#define REGS_USBDCD_BASE(x) (__g_regs_USBDCD_base_addresses[(x)]) + +//! @brief Get the instance number given a base address. +//! @param b Base address for an instance of USBDCD. +#define REGS_USBDCD_INSTANCE(b) ((b) == REGS_USBDCD0_BASE ? HW_USBDCD0 : 0) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USBDCD_CONTROL - Control register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USBDCD_CONTROL - Control register (RW) + * + * Reset value: 0x00010000U + * + * Contains the control and interrupt bit fields. + */ +typedef union _hw_usbdcd_control +{ + uint32_t U; + struct _hw_usbdcd_control_bitfields + { + uint32_t IACK : 1; //!< [0] Interrupt Acknowledge + uint32_t RESERVED0 : 7; //!< [7:1] + uint32_t IF : 1; //!< [8] Interrupt Flag + uint32_t RESERVED1 : 7; //!< [15:9] + uint32_t IE : 1; //!< [16] Interrupt Enable + uint32_t BC12 : 1; //!< [17] + uint32_t RESERVED2 : 6; //!< [23:18] + uint32_t START : 1; //!< [24] Start Change Detection Sequence + uint32_t SR : 1; //!< [25] Software Reset + uint32_t RESERVED3 : 6; //!< [31:26] + } B; +} hw_usbdcd_control_t; +#endif + +/*! + * @name Constants and macros for entire USBDCD_CONTROL register + */ +//@{ +#define HW_USBDCD_CONTROL_ADDR(x) (REGS_USBDCD_BASE(x) + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USBDCD_CONTROL(x) (*(__IO hw_usbdcd_control_t *) HW_USBDCD_CONTROL_ADDR(x)) +#define HW_USBDCD_CONTROL_RD(x) (HW_USBDCD_CONTROL(x).U) +#define HW_USBDCD_CONTROL_WR(x, v) (HW_USBDCD_CONTROL(x).U = (v)) +#define HW_USBDCD_CONTROL_SET(x, v) (HW_USBDCD_CONTROL_WR(x, HW_USBDCD_CONTROL_RD(x) | (v))) +#define HW_USBDCD_CONTROL_CLR(x, v) (HW_USBDCD_CONTROL_WR(x, HW_USBDCD_CONTROL_RD(x) & ~(v))) +#define HW_USBDCD_CONTROL_TOG(x, v) (HW_USBDCD_CONTROL_WR(x, HW_USBDCD_CONTROL_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USBDCD_CONTROL bitfields + */ + +/*! + * @name Register USBDCD_CONTROL, field IACK[0] (WORZ) + * + * Determines whether the interrupt is cleared. + * + * Values: + * - 0 - Do not clear the interrupt. + * - 1 - Clear the IF bit (interrupt flag). + */ +//@{ +#define BP_USBDCD_CONTROL_IACK (0U) //!< Bit position for USBDCD_CONTROL_IACK. +#define BM_USBDCD_CONTROL_IACK (0x00000001U) //!< Bit mask for USBDCD_CONTROL_IACK. +#define BS_USBDCD_CONTROL_IACK (1U) //!< Bit field size in bits for USBDCD_CONTROL_IACK. + +//! @brief Format value for bitfield USBDCD_CONTROL_IACK. +#define BF_USBDCD_CONTROL_IACK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_CONTROL_IACK), uint32_t) & BM_USBDCD_CONTROL_IACK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IACK field to a new value. +#define BW_USBDCD_CONTROL_IACK(x, v) (BITBAND_ACCESS32(HW_USBDCD_CONTROL_ADDR(x), BP_USBDCD_CONTROL_IACK) = (v)) +#endif +//@} + +/*! + * @name Register USBDCD_CONTROL, field IF[8] (RO) + * + * Determines whether an interrupt is pending. + * + * Values: + * - 0 - No interrupt is pending. + * - 1 - An interrupt is pending. + */ +//@{ +#define BP_USBDCD_CONTROL_IF (8U) //!< Bit position for USBDCD_CONTROL_IF. +#define BM_USBDCD_CONTROL_IF (0x00000100U) //!< Bit mask for USBDCD_CONTROL_IF. +#define BS_USBDCD_CONTROL_IF (1U) //!< Bit field size in bits for USBDCD_CONTROL_IF. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_CONTROL_IF field. +#define BR_USBDCD_CONTROL_IF(x) (BITBAND_ACCESS32(HW_USBDCD_CONTROL_ADDR(x), BP_USBDCD_CONTROL_IF)) +#endif +//@} + +/*! + * @name Register USBDCD_CONTROL, field IE[16] (RW) + * + * Enables/disables interrupts to the system. + * + * Values: + * - 0 - Disable interrupts to the system. + * - 1 - Enable interrupts to the system. + */ +//@{ +#define BP_USBDCD_CONTROL_IE (16U) //!< Bit position for USBDCD_CONTROL_IE. +#define BM_USBDCD_CONTROL_IE (0x00010000U) //!< Bit mask for USBDCD_CONTROL_IE. +#define BS_USBDCD_CONTROL_IE (1U) //!< Bit field size in bits for USBDCD_CONTROL_IE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_CONTROL_IE field. +#define BR_USBDCD_CONTROL_IE(x) (BITBAND_ACCESS32(HW_USBDCD_CONTROL_ADDR(x), BP_USBDCD_CONTROL_IE)) +#endif + +//! @brief Format value for bitfield USBDCD_CONTROL_IE. +#define BF_USBDCD_CONTROL_IE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_CONTROL_IE), uint32_t) & BM_USBDCD_CONTROL_IE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IE field to a new value. +#define BW_USBDCD_CONTROL_IE(x, v) (BITBAND_ACCESS32(HW_USBDCD_CONTROL_ADDR(x), BP_USBDCD_CONTROL_IE) = (v)) +#endif +//@} + +/*! + * @name Register USBDCD_CONTROL, field BC12[17] (RW) + * + * BC1.2 compatibility. This bit cannot be changed after start detection. + * + * Values: + * - 0 - Compatible with BC1.1 (default) + * - 1 - Compatible with BC1.2 + */ +//@{ +#define BP_USBDCD_CONTROL_BC12 (17U) //!< Bit position for USBDCD_CONTROL_BC12. +#define BM_USBDCD_CONTROL_BC12 (0x00020000U) //!< Bit mask for USBDCD_CONTROL_BC12. +#define BS_USBDCD_CONTROL_BC12 (1U) //!< Bit field size in bits for USBDCD_CONTROL_BC12. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_CONTROL_BC12 field. +#define BR_USBDCD_CONTROL_BC12(x) (BITBAND_ACCESS32(HW_USBDCD_CONTROL_ADDR(x), BP_USBDCD_CONTROL_BC12)) +#endif + +//! @brief Format value for bitfield USBDCD_CONTROL_BC12. +#define BF_USBDCD_CONTROL_BC12(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_CONTROL_BC12), uint32_t) & BM_USBDCD_CONTROL_BC12) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BC12 field to a new value. +#define BW_USBDCD_CONTROL_BC12(x, v) (BITBAND_ACCESS32(HW_USBDCD_CONTROL_ADDR(x), BP_USBDCD_CONTROL_BC12) = (v)) +#endif +//@} + +/*! + * @name Register USBDCD_CONTROL, field START[24] (WORZ) + * + * Determines whether the charger detection sequence is initiated. + * + * Values: + * - 0 - Do not start the sequence. Writes of this value have no effect. + * - 1 - Initiate the charger detection sequence. If the sequence is already + * running, writes of this value have no effect. + */ +//@{ +#define BP_USBDCD_CONTROL_START (24U) //!< Bit position for USBDCD_CONTROL_START. +#define BM_USBDCD_CONTROL_START (0x01000000U) //!< Bit mask for USBDCD_CONTROL_START. +#define BS_USBDCD_CONTROL_START (1U) //!< Bit field size in bits for USBDCD_CONTROL_START. + +//! @brief Format value for bitfield USBDCD_CONTROL_START. +#define BF_USBDCD_CONTROL_START(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_CONTROL_START), uint32_t) & BM_USBDCD_CONTROL_START) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the START field to a new value. +#define BW_USBDCD_CONTROL_START(x, v) (BITBAND_ACCESS32(HW_USBDCD_CONTROL_ADDR(x), BP_USBDCD_CONTROL_START) = (v)) +#endif +//@} + +/*! + * @name Register USBDCD_CONTROL, field SR[25] (WORZ) + * + * Determines whether a software reset is performed. + * + * Values: + * - 0 - Do not perform a software reset. + * - 1 - Perform a software reset. + */ +//@{ +#define BP_USBDCD_CONTROL_SR (25U) //!< Bit position for USBDCD_CONTROL_SR. +#define BM_USBDCD_CONTROL_SR (0x02000000U) //!< Bit mask for USBDCD_CONTROL_SR. +#define BS_USBDCD_CONTROL_SR (1U) //!< Bit field size in bits for USBDCD_CONTROL_SR. + +//! @brief Format value for bitfield USBDCD_CONTROL_SR. +#define BF_USBDCD_CONTROL_SR(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_CONTROL_SR), uint32_t) & BM_USBDCD_CONTROL_SR) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the SR field to a new value. +#define BW_USBDCD_CONTROL_SR(x, v) (BITBAND_ACCESS32(HW_USBDCD_CONTROL_ADDR(x), BP_USBDCD_CONTROL_SR) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USBDCD_CLOCK - Clock register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USBDCD_CLOCK - Clock register (RW) + * + * Reset value: 0x000000C1U + */ +typedef union _hw_usbdcd_clock +{ + uint32_t U; + struct _hw_usbdcd_clock_bitfields + { + uint32_t CLOCK_UNIT : 1; //!< [0] Unit of Measurement Encoding for + //! Clock Speed + uint32_t RESERVED0 : 1; //!< [1] + uint32_t CLOCK_SPEED : 10; //!< [11:2] Numerical Value of Clock Speed + //! in Binary + uint32_t RESERVED1 : 20; //!< [31:12] + } B; +} hw_usbdcd_clock_t; +#endif + +/*! + * @name Constants and macros for entire USBDCD_CLOCK register + */ +//@{ +#define HW_USBDCD_CLOCK_ADDR(x) (REGS_USBDCD_BASE(x) + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USBDCD_CLOCK(x) (*(__IO hw_usbdcd_clock_t *) HW_USBDCD_CLOCK_ADDR(x)) +#define HW_USBDCD_CLOCK_RD(x) (HW_USBDCD_CLOCK(x).U) +#define HW_USBDCD_CLOCK_WR(x, v) (HW_USBDCD_CLOCK(x).U = (v)) +#define HW_USBDCD_CLOCK_SET(x, v) (HW_USBDCD_CLOCK_WR(x, HW_USBDCD_CLOCK_RD(x) | (v))) +#define HW_USBDCD_CLOCK_CLR(x, v) (HW_USBDCD_CLOCK_WR(x, HW_USBDCD_CLOCK_RD(x) & ~(v))) +#define HW_USBDCD_CLOCK_TOG(x, v) (HW_USBDCD_CLOCK_WR(x, HW_USBDCD_CLOCK_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USBDCD_CLOCK bitfields + */ + +/*! + * @name Register USBDCD_CLOCK, field CLOCK_UNIT[0] (RW) + * + * Specifies the unit of measure for the clock speed. + * + * Values: + * - 0 - kHz Speed (between 1 kHz and 1023 kHz) + * - 1 - MHz Speed (between 1 MHz and 1023 MHz) + */ +//@{ +#define BP_USBDCD_CLOCK_CLOCK_UNIT (0U) //!< Bit position for USBDCD_CLOCK_CLOCK_UNIT. +#define BM_USBDCD_CLOCK_CLOCK_UNIT (0x00000001U) //!< Bit mask for USBDCD_CLOCK_CLOCK_UNIT. +#define BS_USBDCD_CLOCK_CLOCK_UNIT (1U) //!< Bit field size in bits for USBDCD_CLOCK_CLOCK_UNIT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_CLOCK_CLOCK_UNIT field. +#define BR_USBDCD_CLOCK_CLOCK_UNIT(x) (BITBAND_ACCESS32(HW_USBDCD_CLOCK_ADDR(x), BP_USBDCD_CLOCK_CLOCK_UNIT)) +#endif + +//! @brief Format value for bitfield USBDCD_CLOCK_CLOCK_UNIT. +#define BF_USBDCD_CLOCK_CLOCK_UNIT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_CLOCK_CLOCK_UNIT), uint32_t) & BM_USBDCD_CLOCK_CLOCK_UNIT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLOCK_UNIT field to a new value. +#define BW_USBDCD_CLOCK_CLOCK_UNIT(x, v) (BITBAND_ACCESS32(HW_USBDCD_CLOCK_ADDR(x), BP_USBDCD_CLOCK_CLOCK_UNIT) = (v)) +#endif +//@} + +/*! + * @name Register USBDCD_CLOCK, field CLOCK_SPEED[11:2] (RW) + * + * The unit of measure is programmed in CLOCK_UNIT. The valid range is from 1 to + * 1023 when clock unit is MHz and 4 to 1023 when clock unit is kHz. Examples + * with CLOCK_UNIT = 1: For 48 MHz: 0b00_0011_0000 (48) (Default) For 24 MHz: + * 0b00_0001_1000 (24) Examples with CLOCK_UNIT = 0: For 100 kHz: 0b00_0110_0100 (100) + * For 500 kHz: 0b01_1111_0100 (500) + */ +//@{ +#define BP_USBDCD_CLOCK_CLOCK_SPEED (2U) //!< Bit position for USBDCD_CLOCK_CLOCK_SPEED. +#define BM_USBDCD_CLOCK_CLOCK_SPEED (0x00000FFCU) //!< Bit mask for USBDCD_CLOCK_CLOCK_SPEED. +#define BS_USBDCD_CLOCK_CLOCK_SPEED (10U) //!< Bit field size in bits for USBDCD_CLOCK_CLOCK_SPEED. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_CLOCK_CLOCK_SPEED field. +#define BR_USBDCD_CLOCK_CLOCK_SPEED(x) (HW_USBDCD_CLOCK(x).B.CLOCK_SPEED) +#endif + +//! @brief Format value for bitfield USBDCD_CLOCK_CLOCK_SPEED. +#define BF_USBDCD_CLOCK_CLOCK_SPEED(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_CLOCK_CLOCK_SPEED), uint32_t) & BM_USBDCD_CLOCK_CLOCK_SPEED) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLOCK_SPEED field to a new value. +#define BW_USBDCD_CLOCK_CLOCK_SPEED(x, v) (HW_USBDCD_CLOCK_WR(x, (HW_USBDCD_CLOCK_RD(x) & ~BM_USBDCD_CLOCK_CLOCK_SPEED) | BF_USBDCD_CLOCK_CLOCK_SPEED(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USBDCD_STATUS - Status register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USBDCD_STATUS - Status register (RO) + * + * Reset value: 0x00000000U + * + * Provides the current state of the module for system software monitoring. + */ +typedef union _hw_usbdcd_status +{ + uint32_t U; + struct _hw_usbdcd_status_bitfields + { + uint32_t RESERVED0 : 16; //!< [15:0] + uint32_t SEQ_RES : 2; //!< [17:16] Charger Detection Sequence Results + uint32_t SEQ_STAT : 2; //!< [19:18] Charger Detection Sequence Status + uint32_t ERR : 1; //!< [20] Error Flag + uint32_t TO : 1; //!< [21] Timeout Flag + uint32_t ACTIVE : 1; //!< [22] Active Status Indicator + uint32_t RESERVED1 : 9; //!< [31:23] + } B; +} hw_usbdcd_status_t; +#endif + +/*! + * @name Constants and macros for entire USBDCD_STATUS register + */ +//@{ +#define HW_USBDCD_STATUS_ADDR(x) (REGS_USBDCD_BASE(x) + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USBDCD_STATUS(x) (*(__I hw_usbdcd_status_t *) HW_USBDCD_STATUS_ADDR(x)) +#define HW_USBDCD_STATUS_RD(x) (HW_USBDCD_STATUS(x).U) +#endif +//@} + +/* + * Constants & macros for individual USBDCD_STATUS bitfields + */ + +/*! + * @name Register USBDCD_STATUS, field SEQ_RES[17:16] (RO) + * + * Reports how the charger detection is attached. + * + * Values: + * - 00 - No results to report. + * - 01 - Attached to a standard host. Must comply with USB 2.0 by drawing only + * 2.5 mA (max) until connected. + * - 10 - Attached to a charging port. The exact meaning depends on bit 18: 0: + * Attached to either a charging host or a dedicated charger. The charger type + * detection has not completed. 1: Attached to a charging host. The charger + * type detection has completed. + * - 11 - Attached to a dedicated charger. + */ +//@{ +#define BP_USBDCD_STATUS_SEQ_RES (16U) //!< Bit position for USBDCD_STATUS_SEQ_RES. +#define BM_USBDCD_STATUS_SEQ_RES (0x00030000U) //!< Bit mask for USBDCD_STATUS_SEQ_RES. +#define BS_USBDCD_STATUS_SEQ_RES (2U) //!< Bit field size in bits for USBDCD_STATUS_SEQ_RES. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_STATUS_SEQ_RES field. +#define BR_USBDCD_STATUS_SEQ_RES(x) (HW_USBDCD_STATUS(x).B.SEQ_RES) +#endif +//@} + +/*! + * @name Register USBDCD_STATUS, field SEQ_STAT[19:18] (RO) + * + * Indicates the status of the charger detection sequence. + * + * Values: + * - 00 - The module is either not enabled, or the module is enabled but the + * data pins have not yet been detected. + * - 01 - Data pin contact detection is complete. + * - 10 - Charging port detection is complete. + * - 11 - Charger type detection is complete. + */ +//@{ +#define BP_USBDCD_STATUS_SEQ_STAT (18U) //!< Bit position for USBDCD_STATUS_SEQ_STAT. +#define BM_USBDCD_STATUS_SEQ_STAT (0x000C0000U) //!< Bit mask for USBDCD_STATUS_SEQ_STAT. +#define BS_USBDCD_STATUS_SEQ_STAT (2U) //!< Bit field size in bits for USBDCD_STATUS_SEQ_STAT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_STATUS_SEQ_STAT field. +#define BR_USBDCD_STATUS_SEQ_STAT(x) (HW_USBDCD_STATUS(x).B.SEQ_STAT) +#endif +//@} + +/*! + * @name Register USBDCD_STATUS, field ERR[20] (RO) + * + * Indicates whether there is an error in the detection sequence. + * + * Values: + * - 0 - No sequence errors. + * - 1 - Error in the detection sequence. See the SEQ_STAT field to determine + * the phase in which the error occurred. + */ +//@{ +#define BP_USBDCD_STATUS_ERR (20U) //!< Bit position for USBDCD_STATUS_ERR. +#define BM_USBDCD_STATUS_ERR (0x00100000U) //!< Bit mask for USBDCD_STATUS_ERR. +#define BS_USBDCD_STATUS_ERR (1U) //!< Bit field size in bits for USBDCD_STATUS_ERR. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_STATUS_ERR field. +#define BR_USBDCD_STATUS_ERR(x) (BITBAND_ACCESS32(HW_USBDCD_STATUS_ADDR(x), BP_USBDCD_STATUS_ERR)) +#endif +//@} + +/*! + * @name Register USBDCD_STATUS, field TO[21] (RO) + * + * Indicates whether the detection sequence has passed the timeout threshhold. + * + * Values: + * - 0 - The detection sequence has not been running for over 1 s. + * - 1 - It has been over 1 s since the data pin contact was detected and + * debounced. + */ +//@{ +#define BP_USBDCD_STATUS_TO (21U) //!< Bit position for USBDCD_STATUS_TO. +#define BM_USBDCD_STATUS_TO (0x00200000U) //!< Bit mask for USBDCD_STATUS_TO. +#define BS_USBDCD_STATUS_TO (1U) //!< Bit field size in bits for USBDCD_STATUS_TO. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_STATUS_TO field. +#define BR_USBDCD_STATUS_TO(x) (BITBAND_ACCESS32(HW_USBDCD_STATUS_ADDR(x), BP_USBDCD_STATUS_TO)) +#endif +//@} + +/*! + * @name Register USBDCD_STATUS, field ACTIVE[22] (RO) + * + * Indicates whether the sequence is running. + * + * Values: + * - 0 - The sequence is not running. + * - 1 - The sequence is running. + */ +//@{ +#define BP_USBDCD_STATUS_ACTIVE (22U) //!< Bit position for USBDCD_STATUS_ACTIVE. +#define BM_USBDCD_STATUS_ACTIVE (0x00400000U) //!< Bit mask for USBDCD_STATUS_ACTIVE. +#define BS_USBDCD_STATUS_ACTIVE (1U) //!< Bit field size in bits for USBDCD_STATUS_ACTIVE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_STATUS_ACTIVE field. +#define BR_USBDCD_STATUS_ACTIVE(x) (BITBAND_ACCESS32(HW_USBDCD_STATUS_ADDR(x), BP_USBDCD_STATUS_ACTIVE)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USBDCD_TIMER0 - TIMER0 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USBDCD_TIMER0 - TIMER0 register (RW) + * + * Reset value: 0x00100000U + * + * TIMER0 has an TSEQ_INIT field that represents the system latency in ms. + * Latency is measured from the time when VBUS goes active until the time system + * software initiates charger detection sequence in USBDCD module. When software sets + * the CONTROL[START] bit, the Unit Connection Timer (TUNITCON) is initialized + * with the value of TSEQ_INIT. Valid values are 0-1023, however the USB Battery + * Charging Specification requires the entire sequence, including TSEQ_INIT, to be + * completed in 1s or less. + */ +typedef union _hw_usbdcd_timer0 +{ + uint32_t U; + struct _hw_usbdcd_timer0_bitfields + { + uint32_t TUNITCON : 12; //!< [11:0] Unit Connection Timer Elapse (in + //! ms) + uint32_t RESERVED0 : 4; //!< [15:12] + uint32_t TSEQ_INIT : 10; //!< [25:16] Sequence Initiation Time + uint32_t RESERVED1 : 6; //!< [31:26] + } B; +} hw_usbdcd_timer0_t; +#endif + +/*! + * @name Constants and macros for entire USBDCD_TIMER0 register + */ +//@{ +#define HW_USBDCD_TIMER0_ADDR(x) (REGS_USBDCD_BASE(x) + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USBDCD_TIMER0(x) (*(__IO hw_usbdcd_timer0_t *) HW_USBDCD_TIMER0_ADDR(x)) +#define HW_USBDCD_TIMER0_RD(x) (HW_USBDCD_TIMER0(x).U) +#define HW_USBDCD_TIMER0_WR(x, v) (HW_USBDCD_TIMER0(x).U = (v)) +#define HW_USBDCD_TIMER0_SET(x, v) (HW_USBDCD_TIMER0_WR(x, HW_USBDCD_TIMER0_RD(x) | (v))) +#define HW_USBDCD_TIMER0_CLR(x, v) (HW_USBDCD_TIMER0_WR(x, HW_USBDCD_TIMER0_RD(x) & ~(v))) +#define HW_USBDCD_TIMER0_TOG(x, v) (HW_USBDCD_TIMER0_WR(x, HW_USBDCD_TIMER0_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USBDCD_TIMER0 bitfields + */ + +/*! + * @name Register USBDCD_TIMER0, field TUNITCON[11:0] (RO) + * + * Displays the amount of elapsed time since the event of setting the START bit + * plus the value of TSEQ_INIT. The timer is automatically initialized with the + * value of TSEQ_INIT before starting to count. This timer enables compliance with + * the maximum time allowed to connect T UNIT_CON under the USB Battery Charging + * Specification. If the timer reaches the one second limit, the module triggers + * an interrupt and sets the error flag STATUS[ERR]. The timer continues + * counting throughout the charger detection sequence, even when control has been passed + * to software. As long as the module is active, the timer continues to count + * until it reaches the maximum value of 0xFFF (4095 ms). The timer does not + * rollover to zero. A software reset clears the timer. + */ +//@{ +#define BP_USBDCD_TIMER0_TUNITCON (0U) //!< Bit position for USBDCD_TIMER0_TUNITCON. +#define BM_USBDCD_TIMER0_TUNITCON (0x00000FFFU) //!< Bit mask for USBDCD_TIMER0_TUNITCON. +#define BS_USBDCD_TIMER0_TUNITCON (12U) //!< Bit field size in bits for USBDCD_TIMER0_TUNITCON. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_TIMER0_TUNITCON field. +#define BR_USBDCD_TIMER0_TUNITCON(x) (HW_USBDCD_TIMER0(x).B.TUNITCON) +#endif +//@} + +/*! + * @name Register USBDCD_TIMER0, field TSEQ_INIT[25:16] (RW) + * + * TSEQ_INIT represents the system latency (in ms) measured from the time VBUS + * goes active to the time system software initiates the charger detection + * sequence in the USBDCD module. When software sets the CONTROL[START] bit, the Unit + * Connection Timer (TUNITCON) is initialized with the value of TSEQ_INIT. Valid + * values are 0-1023, but the USB Battery Charging Specification requires the + * entire sequence, including TSEQ_INIT, to be completed in 1s or less. + */ +//@{ +#define BP_USBDCD_TIMER0_TSEQ_INIT (16U) //!< Bit position for USBDCD_TIMER0_TSEQ_INIT. +#define BM_USBDCD_TIMER0_TSEQ_INIT (0x03FF0000U) //!< Bit mask for USBDCD_TIMER0_TSEQ_INIT. +#define BS_USBDCD_TIMER0_TSEQ_INIT (10U) //!< Bit field size in bits for USBDCD_TIMER0_TSEQ_INIT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_TIMER0_TSEQ_INIT field. +#define BR_USBDCD_TIMER0_TSEQ_INIT(x) (HW_USBDCD_TIMER0(x).B.TSEQ_INIT) +#endif + +//! @brief Format value for bitfield USBDCD_TIMER0_TSEQ_INIT. +#define BF_USBDCD_TIMER0_TSEQ_INIT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_TIMER0_TSEQ_INIT), uint32_t) & BM_USBDCD_TIMER0_TSEQ_INIT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TSEQ_INIT field to a new value. +#define BW_USBDCD_TIMER0_TSEQ_INIT(x, v) (HW_USBDCD_TIMER0_WR(x, (HW_USBDCD_TIMER0_RD(x) & ~BM_USBDCD_TIMER0_TSEQ_INIT) | BF_USBDCD_TIMER0_TSEQ_INIT(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USBDCD_TIMER1 - TIMER1 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USBDCD_TIMER1 - TIMER1 register (RW) + * + * Reset value: 0x000A0028U + * + * TIMER1 contains timing parameters. Note that register values can be written + * that are not compliant with the USB Battery Charging Specification, so care + * should be taken when overwriting the default values. + */ +typedef union _hw_usbdcd_timer1 +{ + uint32_t U; + struct _hw_usbdcd_timer1_bitfields + { + uint32_t TVDPSRC_ON : 10; //!< [9:0] Time Period Comparator Enabled + uint32_t RESERVED0 : 6; //!< [15:10] + uint32_t TDCD_DBNC : 10; //!< [25:16] Time Period to Debounce D+ + //! Signal + uint32_t RESERVED1 : 6; //!< [31:26] + } B; +} hw_usbdcd_timer1_t; +#endif + +/*! + * @name Constants and macros for entire USBDCD_TIMER1 register + */ +//@{ +#define HW_USBDCD_TIMER1_ADDR(x) (REGS_USBDCD_BASE(x) + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USBDCD_TIMER1(x) (*(__IO hw_usbdcd_timer1_t *) HW_USBDCD_TIMER1_ADDR(x)) +#define HW_USBDCD_TIMER1_RD(x) (HW_USBDCD_TIMER1(x).U) +#define HW_USBDCD_TIMER1_WR(x, v) (HW_USBDCD_TIMER1(x).U = (v)) +#define HW_USBDCD_TIMER1_SET(x, v) (HW_USBDCD_TIMER1_WR(x, HW_USBDCD_TIMER1_RD(x) | (v))) +#define HW_USBDCD_TIMER1_CLR(x, v) (HW_USBDCD_TIMER1_WR(x, HW_USBDCD_TIMER1_RD(x) & ~(v))) +#define HW_USBDCD_TIMER1_TOG(x, v) (HW_USBDCD_TIMER1_WR(x, HW_USBDCD_TIMER1_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USBDCD_TIMER1 bitfields + */ + +/*! + * @name Register USBDCD_TIMER1, field TVDPSRC_ON[9:0] (RW) + * + * This timing parameter is used after detection of the data pin. See "Charging + * Port Detection". Valid values are 1-1023, but the USB Battery Charging + * Specification requires a minimum value of 40 ms. + */ +//@{ +#define BP_USBDCD_TIMER1_TVDPSRC_ON (0U) //!< Bit position for USBDCD_TIMER1_TVDPSRC_ON. +#define BM_USBDCD_TIMER1_TVDPSRC_ON (0x000003FFU) //!< Bit mask for USBDCD_TIMER1_TVDPSRC_ON. +#define BS_USBDCD_TIMER1_TVDPSRC_ON (10U) //!< Bit field size in bits for USBDCD_TIMER1_TVDPSRC_ON. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_TIMER1_TVDPSRC_ON field. +#define BR_USBDCD_TIMER1_TVDPSRC_ON(x) (HW_USBDCD_TIMER1(x).B.TVDPSRC_ON) +#endif + +//! @brief Format value for bitfield USBDCD_TIMER1_TVDPSRC_ON. +#define BF_USBDCD_TIMER1_TVDPSRC_ON(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_TIMER1_TVDPSRC_ON), uint32_t) & BM_USBDCD_TIMER1_TVDPSRC_ON) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TVDPSRC_ON field to a new value. +#define BW_USBDCD_TIMER1_TVDPSRC_ON(x, v) (HW_USBDCD_TIMER1_WR(x, (HW_USBDCD_TIMER1_RD(x) & ~BM_USBDCD_TIMER1_TVDPSRC_ON) | BF_USBDCD_TIMER1_TVDPSRC_ON(v))) +#endif +//@} + +/*! + * @name Register USBDCD_TIMER1, field TDCD_DBNC[25:16] (RW) + * + * Sets the time period (ms) to debounce the D+ signal during the data pin + * contact detection phase. See "Debouncing the data pin contact" Valid values are + * 1-1023, but the USB Battery Charging Specification requires a minimum value of 10 + * ms. + */ +//@{ +#define BP_USBDCD_TIMER1_TDCD_DBNC (16U) //!< Bit position for USBDCD_TIMER1_TDCD_DBNC. +#define BM_USBDCD_TIMER1_TDCD_DBNC (0x03FF0000U) //!< Bit mask for USBDCD_TIMER1_TDCD_DBNC. +#define BS_USBDCD_TIMER1_TDCD_DBNC (10U) //!< Bit field size in bits for USBDCD_TIMER1_TDCD_DBNC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_TIMER1_TDCD_DBNC field. +#define BR_USBDCD_TIMER1_TDCD_DBNC(x) (HW_USBDCD_TIMER1(x).B.TDCD_DBNC) +#endif + +//! @brief Format value for bitfield USBDCD_TIMER1_TDCD_DBNC. +#define BF_USBDCD_TIMER1_TDCD_DBNC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_TIMER1_TDCD_DBNC), uint32_t) & BM_USBDCD_TIMER1_TDCD_DBNC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TDCD_DBNC field to a new value. +#define BW_USBDCD_TIMER1_TDCD_DBNC(x, v) (HW_USBDCD_TIMER1_WR(x, (HW_USBDCD_TIMER1_RD(x) & ~BM_USBDCD_TIMER1_TDCD_DBNC) | BF_USBDCD_TIMER1_TDCD_DBNC(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_USBDCD_TIMER2_BC11 - TIMER2_BC11 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USBDCD_TIMER2_BC11 - TIMER2_BC11 register (RW) + * + * Reset value: 0x00280001U + * + * TIMER2_BC11 contains timing parameters for USB Battery Charging + * Specification, v1.1. Register values can be written that are not compliant with the USB + * Battery Charging Specification, so care should be taken when overwriting the + * default values. + */ +typedef union _hw_usbdcd_timer2_bc11 +{ + uint32_t U; + struct _hw_usbdcd_timer2_bc11_bitfields + { + uint32_t CHECK_DM : 4; //!< [3:0] Time Before Check of D- Line + uint32_t RESERVED0 : 12; //!< [15:4] + uint32_t TVDPSRC_CON : 10; //!< [25:16] Time Period Before Enabling + //! D+ Pullup + uint32_t RESERVED1 : 6; //!< [31:26] + } B; +} hw_usbdcd_timer2_bc11_t; +#endif + +/*! + * @name Constants and macros for entire USBDCD_TIMER2_BC11 register + */ +//@{ +#define HW_USBDCD_TIMER2_BC11_ADDR(x) (REGS_USBDCD_BASE(x) + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USBDCD_TIMER2_BC11(x) (*(__IO hw_usbdcd_timer2_bc11_t *) HW_USBDCD_TIMER2_BC11_ADDR(x)) +#define HW_USBDCD_TIMER2_BC11_RD(x) (HW_USBDCD_TIMER2_BC11(x).U) +#define HW_USBDCD_TIMER2_BC11_WR(x, v) (HW_USBDCD_TIMER2_BC11(x).U = (v)) +#define HW_USBDCD_TIMER2_BC11_SET(x, v) (HW_USBDCD_TIMER2_BC11_WR(x, HW_USBDCD_TIMER2_BC11_RD(x) | (v))) +#define HW_USBDCD_TIMER2_BC11_CLR(x, v) (HW_USBDCD_TIMER2_BC11_WR(x, HW_USBDCD_TIMER2_BC11_RD(x) & ~(v))) +#define HW_USBDCD_TIMER2_BC11_TOG(x, v) (HW_USBDCD_TIMER2_BC11_WR(x, HW_USBDCD_TIMER2_BC11_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USBDCD_TIMER2_BC11 bitfields + */ + +/*! + * @name Register USBDCD_TIMER2_BC11, field CHECK_DM[3:0] (RW) + * + * Sets the amount of time (in ms) that the module waits after the device + * connects to the USB bus until checking the state of the D- line to determine the + * type of charging port. See "Charger Type Detection." Valid values are 1-15ms. + */ +//@{ +#define BP_USBDCD_TIMER2_BC11_CHECK_DM (0U) //!< Bit position for USBDCD_TIMER2_BC11_CHECK_DM. +#define BM_USBDCD_TIMER2_BC11_CHECK_DM (0x0000000FU) //!< Bit mask for USBDCD_TIMER2_BC11_CHECK_DM. +#define BS_USBDCD_TIMER2_BC11_CHECK_DM (4U) //!< Bit field size in bits for USBDCD_TIMER2_BC11_CHECK_DM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_TIMER2_BC11_CHECK_DM field. +#define BR_USBDCD_TIMER2_BC11_CHECK_DM(x) (HW_USBDCD_TIMER2_BC11(x).B.CHECK_DM) +#endif + +//! @brief Format value for bitfield USBDCD_TIMER2_BC11_CHECK_DM. +#define BF_USBDCD_TIMER2_BC11_CHECK_DM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_TIMER2_BC11_CHECK_DM), uint32_t) & BM_USBDCD_TIMER2_BC11_CHECK_DM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CHECK_DM field to a new value. +#define BW_USBDCD_TIMER2_BC11_CHECK_DM(x, v) (HW_USBDCD_TIMER2_BC11_WR(x, (HW_USBDCD_TIMER2_BC11_RD(x) & ~BM_USBDCD_TIMER2_BC11_CHECK_DM) | BF_USBDCD_TIMER2_BC11_CHECK_DM(v))) +#endif +//@} + +/*! + * @name Register USBDCD_TIMER2_BC11, field TVDPSRC_CON[25:16] (RW) + * + * Sets the time period (ms) that the module waits after charging port detection + * before system software must enable the D+ pullup to connect to the USB host. + * Valid values are 1-1023, but the USB Battery Charging Specification requires a + * minimum value of 40 ms. + */ +//@{ +#define BP_USBDCD_TIMER2_BC11_TVDPSRC_CON (16U) //!< Bit position for USBDCD_TIMER2_BC11_TVDPSRC_CON. +#define BM_USBDCD_TIMER2_BC11_TVDPSRC_CON (0x03FF0000U) //!< Bit mask for USBDCD_TIMER2_BC11_TVDPSRC_CON. +#define BS_USBDCD_TIMER2_BC11_TVDPSRC_CON (10U) //!< Bit field size in bits for USBDCD_TIMER2_BC11_TVDPSRC_CON. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_TIMER2_BC11_TVDPSRC_CON field. +#define BR_USBDCD_TIMER2_BC11_TVDPSRC_CON(x) (HW_USBDCD_TIMER2_BC11(x).B.TVDPSRC_CON) +#endif + +//! @brief Format value for bitfield USBDCD_TIMER2_BC11_TVDPSRC_CON. +#define BF_USBDCD_TIMER2_BC11_TVDPSRC_CON(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_TIMER2_BC11_TVDPSRC_CON), uint32_t) & BM_USBDCD_TIMER2_BC11_TVDPSRC_CON) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TVDPSRC_CON field to a new value. +#define BW_USBDCD_TIMER2_BC11_TVDPSRC_CON(x, v) (HW_USBDCD_TIMER2_BC11_WR(x, (HW_USBDCD_TIMER2_BC11_RD(x) & ~BM_USBDCD_TIMER2_BC11_TVDPSRC_CON) | BF_USBDCD_TIMER2_BC11_TVDPSRC_CON(v))) +#endif +//@} +//------------------------------------------------------------------------------------------- +// HW_USBDCD_TIMER2_BC12 - TIMER2_BC12 register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_USBDCD_TIMER2_BC12 - TIMER2_BC12 register (RW) + * + * Reset value: 0x00010028U + * + * TIMER2_BC12 contains timing parameters for USB Battery Charging + * Specification, v1.2. Register values can be written that are not compliant with the USB + * Battery Charging Specification, so care should be taken when overwriting the + * default values. + */ +typedef union _hw_usbdcd_timer2_bc12 +{ + uint32_t U; + struct _hw_usbdcd_timer2_bc12_bitfields + { + uint32_t TVDMSRC_ON : 10; //!< [9:0] + uint32_t RESERVED0 : 6; //!< [15:10] + uint32_t TWAIT_AFTER_PRD : 10; //!< [25:16] + uint32_t RESERVED1 : 6; //!< [31:26] + } B; +} hw_usbdcd_timer2_bc12_t; +#endif + +/*! + * @name Constants and macros for entire USBDCD_TIMER2_BC12 register + */ +//@{ +#define HW_USBDCD_TIMER2_BC12_ADDR(x) (REGS_USBDCD_BASE(x) + 0x18U) + +#ifndef __LANGUAGE_ASM__ +#define HW_USBDCD_TIMER2_BC12(x) (*(__IO hw_usbdcd_timer2_bc12_t *) HW_USBDCD_TIMER2_BC12_ADDR(x)) +#define HW_USBDCD_TIMER2_BC12_RD(x) (HW_USBDCD_TIMER2_BC12(x).U) +#define HW_USBDCD_TIMER2_BC12_WR(x, v) (HW_USBDCD_TIMER2_BC12(x).U = (v)) +#define HW_USBDCD_TIMER2_BC12_SET(x, v) (HW_USBDCD_TIMER2_BC12_WR(x, HW_USBDCD_TIMER2_BC12_RD(x) | (v))) +#define HW_USBDCD_TIMER2_BC12_CLR(x, v) (HW_USBDCD_TIMER2_BC12_WR(x, HW_USBDCD_TIMER2_BC12_RD(x) & ~(v))) +#define HW_USBDCD_TIMER2_BC12_TOG(x, v) (HW_USBDCD_TIMER2_BC12_WR(x, HW_USBDCD_TIMER2_BC12_RD(x) ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual USBDCD_TIMER2_BC12 bitfields + */ + +/*! + * @name Register USBDCD_TIMER2_BC12, field TVDMSRC_ON[9:0] (RW) + * + * Sets the amount of time (in ms) that the module enables the VDM_SRC. Valid + * values are 0-40ms. + */ +//@{ +#define BP_USBDCD_TIMER2_BC12_TVDMSRC_ON (0U) //!< Bit position for USBDCD_TIMER2_BC12_TVDMSRC_ON. +#define BM_USBDCD_TIMER2_BC12_TVDMSRC_ON (0x000003FFU) //!< Bit mask for USBDCD_TIMER2_BC12_TVDMSRC_ON. +#define BS_USBDCD_TIMER2_BC12_TVDMSRC_ON (10U) //!< Bit field size in bits for USBDCD_TIMER2_BC12_TVDMSRC_ON. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_TIMER2_BC12_TVDMSRC_ON field. +#define BR_USBDCD_TIMER2_BC12_TVDMSRC_ON(x) (HW_USBDCD_TIMER2_BC12(x).B.TVDMSRC_ON) +#endif + +//! @brief Format value for bitfield USBDCD_TIMER2_BC12_TVDMSRC_ON. +#define BF_USBDCD_TIMER2_BC12_TVDMSRC_ON(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_TIMER2_BC12_TVDMSRC_ON), uint32_t) & BM_USBDCD_TIMER2_BC12_TVDMSRC_ON) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TVDMSRC_ON field to a new value. +#define BW_USBDCD_TIMER2_BC12_TVDMSRC_ON(x, v) (HW_USBDCD_TIMER2_BC12_WR(x, (HW_USBDCD_TIMER2_BC12_RD(x) & ~BM_USBDCD_TIMER2_BC12_TVDMSRC_ON) | BF_USBDCD_TIMER2_BC12_TVDMSRC_ON(v))) +#endif +//@} + +/*! + * @name Register USBDCD_TIMER2_BC12, field TWAIT_AFTER_PRD[25:16] (RW) + * + * Sets the amount of time (in ms) that the module waits after primary detection + * before start to secondary detection. Valid values are 1-1023ms. Default is + * 1ms. + */ +//@{ +#define BP_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD (16U) //!< Bit position for USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD. +#define BM_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD (0x03FF0000U) //!< Bit mask for USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD. +#define BS_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD (10U) //!< Bit field size in bits for USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD field. +#define BR_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD(x) (HW_USBDCD_TIMER2_BC12(x).B.TWAIT_AFTER_PRD) +#endif + +//! @brief Format value for bitfield USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD. +#define BF_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD), uint32_t) & BM_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TWAIT_AFTER_PRD field to a new value. +#define BW_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD(x, v) (HW_USBDCD_TIMER2_BC12_WR(x, (HW_USBDCD_TIMER2_BC12_RD(x) & ~BM_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD) | BF_USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_usbdcd_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All USBDCD module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_usbdcd +{ + __IO hw_usbdcd_control_t CONTROL; //!< [0x0] Control register + __IO hw_usbdcd_clock_t CLOCK; //!< [0x4] Clock register + __I hw_usbdcd_status_t STATUS; //!< [0x8] Status register + uint8_t _reserved0[4]; + __IO hw_usbdcd_timer0_t TIMER0; //!< [0x10] TIMER0 register + __IO hw_usbdcd_timer1_t TIMER1; //!< [0x14] TIMER1 register + union { + __IO hw_usbdcd_timer2_bc11_t TIMER2_BC11; //!< [0x18] TIMER2_BC11 register + __IO hw_usbdcd_timer2_bc12_t TIMER2_BC12; //!< [0x18] TIMER2_BC12 register + }; +} hw_usbdcd_t; +#pragma pack() + +//! @brief Macro to access all USBDCD registers. +//! @param x USBDCD instance number. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_USBDCD(0)</code>. +#define HW_USBDCD(x) (*(hw_usbdcd_t *) REGS_USBDCD_BASE(x)) +#endif + +#endif // __HW_USBDCD_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_vref.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_VREF_REGISTERS_H__ +#define __HW_VREF_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 VREF + * + * Voltage Reference + * + * Registers defined in this header file: + * - HW_VREF_TRM - VREF Trim Register + * - HW_VREF_SC - VREF Status and Control Register + * + * - hw_vref_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_VREF_BASE +#define HW_VREF_INSTANCE_COUNT (1U) //!< Number of instances of the VREF module. +#define REGS_VREF_BASE (0x40074000U) //!< Base address for VREF. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_VREF_TRM - VREF Trim Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_VREF_TRM - VREF Trim Register (RW) + * + * Reset value: 0x00U + * + * This register contains bits that contain the trim data for the Voltage + * Reference. + */ +typedef union _hw_vref_trm +{ + uint8_t U; + struct _hw_vref_trm_bitfields + { + uint8_t TRIM : 6; //!< [5:0] Trim bits + uint8_t CHOPEN : 1; //!< [6] Chop oscillator enable. When set, + //! internal chopping operation is enabled and the internal analog offset will + //! be minimized. + uint8_t RESERVED0 : 1; //!< [7] + } B; +} hw_vref_trm_t; +#endif + +/*! + * @name Constants and macros for entire VREF_TRM register + */ +//@{ +#define HW_VREF_TRM_ADDR (REGS_VREF_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_VREF_TRM (*(__IO hw_vref_trm_t *) HW_VREF_TRM_ADDR) +#define HW_VREF_TRM_RD() (HW_VREF_TRM.U) +#define HW_VREF_TRM_WR(v) (HW_VREF_TRM.U = (v)) +#define HW_VREF_TRM_SET(v) (HW_VREF_TRM_WR(HW_VREF_TRM_RD() | (v))) +#define HW_VREF_TRM_CLR(v) (HW_VREF_TRM_WR(HW_VREF_TRM_RD() & ~(v))) +#define HW_VREF_TRM_TOG(v) (HW_VREF_TRM_WR(HW_VREF_TRM_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual VREF_TRM bitfields + */ + +/*! + * @name Register VREF_TRM, field TRIM[5:0] (RW) + * + * These bits change the resulting VREF by approximately +/- 0.5 mV for each + * step. Min = minimum and max = maximum voltage reference output. For minimum and + * maximum voltage reference output values, refer to the Data Sheet for this chip. + * + * Values: + * - 000000 - Min + * - 111111 - Max + */ +//@{ +#define BP_VREF_TRM_TRIM (0U) //!< Bit position for VREF_TRM_TRIM. +#define BM_VREF_TRM_TRIM (0x3FU) //!< Bit mask for VREF_TRM_TRIM. +#define BS_VREF_TRM_TRIM (6U) //!< Bit field size in bits for VREF_TRM_TRIM. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the VREF_TRM_TRIM field. +#define BR_VREF_TRM_TRIM (HW_VREF_TRM.B.TRIM) +#endif + +//! @brief Format value for bitfield VREF_TRM_TRIM. +#define BF_VREF_TRM_TRIM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_TRM_TRIM), uint8_t) & BM_VREF_TRM_TRIM) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TRIM field to a new value. +#define BW_VREF_TRM_TRIM(v) (HW_VREF_TRM_WR((HW_VREF_TRM_RD() & ~BM_VREF_TRM_TRIM) | BF_VREF_TRM_TRIM(v))) +#endif +//@} + +/*! + * @name Register VREF_TRM, field CHOPEN[6] (RW) + * + * This bit is set during factory trimming of the VREF voltage. This bit should + * be written to 1 to achieve the performance stated in the data sheet. + * + * Values: + * - 0 - Chop oscillator is disabled. + * - 1 - Chop oscillator is enabled. + */ +//@{ +#define BP_VREF_TRM_CHOPEN (6U) //!< Bit position for VREF_TRM_CHOPEN. +#define BM_VREF_TRM_CHOPEN (0x40U) //!< Bit mask for VREF_TRM_CHOPEN. +#define BS_VREF_TRM_CHOPEN (1U) //!< Bit field size in bits for VREF_TRM_CHOPEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the VREF_TRM_CHOPEN field. +#define BR_VREF_TRM_CHOPEN (BITBAND_ACCESS8(HW_VREF_TRM_ADDR, BP_VREF_TRM_CHOPEN)) +#endif + +//! @brief Format value for bitfield VREF_TRM_CHOPEN. +#define BF_VREF_TRM_CHOPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_TRM_CHOPEN), uint8_t) & BM_VREF_TRM_CHOPEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CHOPEN field to a new value. +#define BW_VREF_TRM_CHOPEN(v) (BITBAND_ACCESS8(HW_VREF_TRM_ADDR, BP_VREF_TRM_CHOPEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_VREF_SC - VREF Status and Control Register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_VREF_SC - VREF Status and Control Register (RW) + * + * Reset value: 0x00U + * + * This register contains the control bits used to enable the internal voltage + * reference and to select the buffer mode to be used. + */ +typedef union _hw_vref_sc +{ + uint8_t U; + struct _hw_vref_sc_bitfields + { + uint8_t MODE_LV : 2; //!< [1:0] Buffer Mode selection + uint8_t VREFST : 1; //!< [2] Internal Voltage Reference stable + uint8_t RESERVED0 : 2; //!< [4:3] + uint8_t ICOMPEN : 1; //!< [5] Second order curvature compensation + //! enable + uint8_t REGEN : 1; //!< [6] Regulator enable + uint8_t VREFEN : 1; //!< [7] Internal Voltage Reference enable + } B; +} hw_vref_sc_t; +#endif + +/*! + * @name Constants and macros for entire VREF_SC register + */ +//@{ +#define HW_VREF_SC_ADDR (REGS_VREF_BASE + 0x1U) + +#ifndef __LANGUAGE_ASM__ +#define HW_VREF_SC (*(__IO hw_vref_sc_t *) HW_VREF_SC_ADDR) +#define HW_VREF_SC_RD() (HW_VREF_SC.U) +#define HW_VREF_SC_WR(v) (HW_VREF_SC.U = (v)) +#define HW_VREF_SC_SET(v) (HW_VREF_SC_WR(HW_VREF_SC_RD() | (v))) +#define HW_VREF_SC_CLR(v) (HW_VREF_SC_WR(HW_VREF_SC_RD() & ~(v))) +#define HW_VREF_SC_TOG(v) (HW_VREF_SC_WR(HW_VREF_SC_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual VREF_SC bitfields + */ + +/*! + * @name Register VREF_SC, field MODE_LV[1:0] (RW) + * + * These bits select the buffer modes for the Voltage Reference module. + * + * Values: + * - 00 - Bandgap on only, for stabilization and startup + * - 01 - High power buffer mode enabled + * - 10 - Low-power buffer mode enabled + * - 11 - Reserved + */ +//@{ +#define BP_VREF_SC_MODE_LV (0U) //!< Bit position for VREF_SC_MODE_LV. +#define BM_VREF_SC_MODE_LV (0x03U) //!< Bit mask for VREF_SC_MODE_LV. +#define BS_VREF_SC_MODE_LV (2U) //!< Bit field size in bits for VREF_SC_MODE_LV. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the VREF_SC_MODE_LV field. +#define BR_VREF_SC_MODE_LV (HW_VREF_SC.B.MODE_LV) +#endif + +//! @brief Format value for bitfield VREF_SC_MODE_LV. +#define BF_VREF_SC_MODE_LV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_SC_MODE_LV), uint8_t) & BM_VREF_SC_MODE_LV) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the MODE_LV field to a new value. +#define BW_VREF_SC_MODE_LV(v) (HW_VREF_SC_WR((HW_VREF_SC_RD() & ~BM_VREF_SC_MODE_LV) | BF_VREF_SC_MODE_LV(v))) +#endif +//@} + +/*! + * @name Register VREF_SC, field VREFST[2] (RO) + * + * This bit indicates that the bandgap reference within the Voltage Reference + * module has completed its startup and stabilization. + * + * Values: + * - 0 - The module is disabled or not stable. + * - 1 - The module is stable. + */ +//@{ +#define BP_VREF_SC_VREFST (2U) //!< Bit position for VREF_SC_VREFST. +#define BM_VREF_SC_VREFST (0x04U) //!< Bit mask for VREF_SC_VREFST. +#define BS_VREF_SC_VREFST (1U) //!< Bit field size in bits for VREF_SC_VREFST. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the VREF_SC_VREFST field. +#define BR_VREF_SC_VREFST (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_VREFST)) +#endif +//@} + +/*! + * @name Register VREF_SC, field ICOMPEN[5] (RW) + * + * This bit is set during factory trimming of the VREF voltage. This bit should + * be written to 1 to achieve the performance stated in the data sheet. + * + * Values: + * - 0 - Disabled + * - 1 - Enabled + */ +//@{ +#define BP_VREF_SC_ICOMPEN (5U) //!< Bit position for VREF_SC_ICOMPEN. +#define BM_VREF_SC_ICOMPEN (0x20U) //!< Bit mask for VREF_SC_ICOMPEN. +#define BS_VREF_SC_ICOMPEN (1U) //!< Bit field size in bits for VREF_SC_ICOMPEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the VREF_SC_ICOMPEN field. +#define BR_VREF_SC_ICOMPEN (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_ICOMPEN)) +#endif + +//! @brief Format value for bitfield VREF_SC_ICOMPEN. +#define BF_VREF_SC_ICOMPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_SC_ICOMPEN), uint8_t) & BM_VREF_SC_ICOMPEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ICOMPEN field to a new value. +#define BW_VREF_SC_ICOMPEN(v) (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_ICOMPEN) = (v)) +#endif +//@} + +/*! + * @name Register VREF_SC, field REGEN[6] (RW) + * + * This bit is used to enable the internal 1.75 V regulator to produce a + * constant internal voltage supply in order to reduce the sensitivity to external + * supply noise and variation. If it is desired to keep the regulator enabled in very + * low power modes, refer to the Chip Configuration details for a description on + * how this can be achieved. This bit is set during factory trimming of the VREF + * voltage. This bit should be written to 1 to achieve the performance stated in + * the data sheet. + * + * Values: + * - 0 - Internal 1.75 V regulator is disabled. + * - 1 - Internal 1.75 V regulator is enabled. + */ +//@{ +#define BP_VREF_SC_REGEN (6U) //!< Bit position for VREF_SC_REGEN. +#define BM_VREF_SC_REGEN (0x40U) //!< Bit mask for VREF_SC_REGEN. +#define BS_VREF_SC_REGEN (1U) //!< Bit field size in bits for VREF_SC_REGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the VREF_SC_REGEN field. +#define BR_VREF_SC_REGEN (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_REGEN)) +#endif + +//! @brief Format value for bitfield VREF_SC_REGEN. +#define BF_VREF_SC_REGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_SC_REGEN), uint8_t) & BM_VREF_SC_REGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the REGEN field to a new value. +#define BW_VREF_SC_REGEN(v) (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_REGEN) = (v)) +#endif +//@} + +/*! + * @name Register VREF_SC, field VREFEN[7] (RW) + * + * This bit is used to enable the bandgap reference within the Voltage Reference + * module. After the VREF is enabled, turning off the clock to the VREF module + * via the corresponding clock gate register will not disable the VREF. VREF must + * be disabled via this VREFEN bit. + * + * Values: + * - 0 - The module is disabled. + * - 1 - The module is enabled. + */ +//@{ +#define BP_VREF_SC_VREFEN (7U) //!< Bit position for VREF_SC_VREFEN. +#define BM_VREF_SC_VREFEN (0x80U) //!< Bit mask for VREF_SC_VREFEN. +#define BS_VREF_SC_VREFEN (1U) //!< Bit field size in bits for VREF_SC_VREFEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the VREF_SC_VREFEN field. +#define BR_VREF_SC_VREFEN (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_VREFEN)) +#endif + +//! @brief Format value for bitfield VREF_SC_VREFEN. +#define BF_VREF_SC_VREFEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_SC_VREFEN), uint8_t) & BM_VREF_SC_VREFEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the VREFEN field to a new value. +#define BW_VREF_SC_VREFEN(v) (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_VREFEN) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_vref_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All VREF module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_vref +{ + __IO hw_vref_trm_t TRM; //!< [0x0] VREF Trim Register + __IO hw_vref_sc_t SC; //!< [0x1] VREF Status and Control Register +} hw_vref_t; +#pragma pack() + +//! @brief Macro to access all VREF registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_VREF</code>. +#define HW_VREF (*(hw_vref_t *) REGS_VREF_BASE) +#endif + +#endif // __HW_VREF_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/MK64F12_wdog.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1244 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +/* + * WARNING! DO NOT EDIT THIS FILE DIRECTLY! + * + * This file was generated automatically and any changes may be lost. + */ +#ifndef __HW_WDOG_REGISTERS_H__ +#define __HW_WDOG_REGISTERS_H__ + +#include "regs.h" + +/* + * MK64F12 WDOG + * + * Generation 2008 Watchdog Timer + * + * Registers defined in this header file: + * - HW_WDOG_STCTRLH - Watchdog Status and Control Register High + * - HW_WDOG_STCTRLL - Watchdog Status and Control Register Low + * - HW_WDOG_TOVALH - Watchdog Time-out Value Register High + * - HW_WDOG_TOVALL - Watchdog Time-out Value Register Low + * - HW_WDOG_WINH - Watchdog Window Register High + * - HW_WDOG_WINL - Watchdog Window Register Low + * - HW_WDOG_REFRESH - Watchdog Refresh register + * - HW_WDOG_UNLOCK - Watchdog Unlock register + * - HW_WDOG_TMROUTH - Watchdog Timer Output Register High + * - HW_WDOG_TMROUTL - Watchdog Timer Output Register Low + * - HW_WDOG_RSTCNT - Watchdog Reset Count register + * - HW_WDOG_PRESC - Watchdog Prescaler register + * + * - hw_wdog_t - Struct containing all module registers. + */ + +//! @name Module base addresses +//@{ +#ifndef REGS_WDOG_BASE +#define HW_WDOG_INSTANCE_COUNT (1U) //!< Number of instances of the WDOG module. +#define REGS_WDOG_BASE (0x40052000U) //!< Base address for WDOG. +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_STCTRLH - Watchdog Status and Control Register High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_STCTRLH - Watchdog Status and Control Register High (RW) + * + * Reset value: 0x01D3U + */ +typedef union _hw_wdog_stctrlh +{ + uint16_t U; + struct _hw_wdog_stctrlh_bitfields + { + uint16_t WDOGEN : 1; //!< [0] + uint16_t CLKSRC : 1; //!< [1] + uint16_t IRQRSTEN : 1; //!< [2] + uint16_t WINEN : 1; //!< [3] + uint16_t ALLOWUPDATE : 1; //!< [4] + uint16_t DBGEN : 1; //!< [5] + uint16_t STOPEN : 1; //!< [6] + uint16_t WAITEN : 1; //!< [7] + uint16_t RESERVED0 : 2; //!< [9:8] + uint16_t TESTWDOG : 1; //!< [10] + uint16_t TESTSEL : 1; //!< [11] + uint16_t BYTESEL : 2; //!< [13:12] + uint16_t DISTESTWDOG : 1; //!< [14] + uint16_t RESERVED1 : 1; //!< [15] + } B; +} hw_wdog_stctrlh_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_STCTRLH register + */ +//@{ +#define HW_WDOG_STCTRLH_ADDR (REGS_WDOG_BASE + 0x0U) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_STCTRLH (*(__IO hw_wdog_stctrlh_t *) HW_WDOG_STCTRLH_ADDR) +#define HW_WDOG_STCTRLH_RD() (HW_WDOG_STCTRLH.U) +#define HW_WDOG_STCTRLH_WR(v) (HW_WDOG_STCTRLH.U = (v)) +#define HW_WDOG_STCTRLH_SET(v) (HW_WDOG_STCTRLH_WR(HW_WDOG_STCTRLH_RD() | (v))) +#define HW_WDOG_STCTRLH_CLR(v) (HW_WDOG_STCTRLH_WR(HW_WDOG_STCTRLH_RD() & ~(v))) +#define HW_WDOG_STCTRLH_TOG(v) (HW_WDOG_STCTRLH_WR(HW_WDOG_STCTRLH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_STCTRLH bitfields + */ + +/*! + * @name Register WDOG_STCTRLH, field WDOGEN[0] (RW) + * + * Enables or disables the WDOG's operation. In the disabled state, the watchdog + * timer is kept in the reset state, but the other exception conditions can + * still trigger a reset/interrupt. A change in the value of this bit must be held + * for more than one WDOG_CLK cycle for the WDOG to be enabled or disabled. + * + * Values: + * - 0 - WDOG is disabled. + * - 1 - WDOG is enabled. + */ +//@{ +#define BP_WDOG_STCTRLH_WDOGEN (0U) //!< Bit position for WDOG_STCTRLH_WDOGEN. +#define BM_WDOG_STCTRLH_WDOGEN (0x0001U) //!< Bit mask for WDOG_STCTRLH_WDOGEN. +#define BS_WDOG_STCTRLH_WDOGEN (1U) //!< Bit field size in bits for WDOG_STCTRLH_WDOGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_WDOGEN field. +#define BR_WDOG_STCTRLH_WDOGEN (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_WDOGEN)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_WDOGEN. +#define BF_WDOG_STCTRLH_WDOGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_WDOGEN), uint16_t) & BM_WDOG_STCTRLH_WDOGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WDOGEN field to a new value. +#define BW_WDOG_STCTRLH_WDOGEN(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_WDOGEN) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field CLKSRC[1] (RW) + * + * Selects clock source for the WDOG timer and other internal timing operations. + * + * Values: + * - 0 - WDOG clock sourced from LPO . + * - 1 - WDOG clock sourced from alternate clock source. + */ +//@{ +#define BP_WDOG_STCTRLH_CLKSRC (1U) //!< Bit position for WDOG_STCTRLH_CLKSRC. +#define BM_WDOG_STCTRLH_CLKSRC (0x0002U) //!< Bit mask for WDOG_STCTRLH_CLKSRC. +#define BS_WDOG_STCTRLH_CLKSRC (1U) //!< Bit field size in bits for WDOG_STCTRLH_CLKSRC. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_CLKSRC field. +#define BR_WDOG_STCTRLH_CLKSRC (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_CLKSRC)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_CLKSRC. +#define BF_WDOG_STCTRLH_CLKSRC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_CLKSRC), uint16_t) & BM_WDOG_STCTRLH_CLKSRC) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the CLKSRC field to a new value. +#define BW_WDOG_STCTRLH_CLKSRC(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_CLKSRC) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field IRQRSTEN[2] (RW) + * + * Used to enable the debug breadcrumbs feature. A change in this bit is updated + * immediately, as opposed to updating after WCT. + * + * Values: + * - 0 - WDOG time-out generates reset only. + * - 1 - WDOG time-out initially generates an interrupt. After WCT, it generates + * a reset. + */ +//@{ +#define BP_WDOG_STCTRLH_IRQRSTEN (2U) //!< Bit position for WDOG_STCTRLH_IRQRSTEN. +#define BM_WDOG_STCTRLH_IRQRSTEN (0x0004U) //!< Bit mask for WDOG_STCTRLH_IRQRSTEN. +#define BS_WDOG_STCTRLH_IRQRSTEN (1U) //!< Bit field size in bits for WDOG_STCTRLH_IRQRSTEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_IRQRSTEN field. +#define BR_WDOG_STCTRLH_IRQRSTEN (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_IRQRSTEN)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_IRQRSTEN. +#define BF_WDOG_STCTRLH_IRQRSTEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_IRQRSTEN), uint16_t) & BM_WDOG_STCTRLH_IRQRSTEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the IRQRSTEN field to a new value. +#define BW_WDOG_STCTRLH_IRQRSTEN(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_IRQRSTEN) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field WINEN[3] (RW) + * + * Enables Windowing mode. + * + * Values: + * - 0 - Windowing mode is disabled. + * - 1 - Windowing mode is enabled. + */ +//@{ +#define BP_WDOG_STCTRLH_WINEN (3U) //!< Bit position for WDOG_STCTRLH_WINEN. +#define BM_WDOG_STCTRLH_WINEN (0x0008U) //!< Bit mask for WDOG_STCTRLH_WINEN. +#define BS_WDOG_STCTRLH_WINEN (1U) //!< Bit field size in bits for WDOG_STCTRLH_WINEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_WINEN field. +#define BR_WDOG_STCTRLH_WINEN (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_WINEN)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_WINEN. +#define BF_WDOG_STCTRLH_WINEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_WINEN), uint16_t) & BM_WDOG_STCTRLH_WINEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WINEN field to a new value. +#define BW_WDOG_STCTRLH_WINEN(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_WINEN) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field ALLOWUPDATE[4] (RW) + * + * Enables updates to watchdog write-once registers, after the reset-triggered + * initial configuration window (WCT) closes, through unlock sequence. + * + * Values: + * - 0 - No further updates allowed to WDOG write-once registers. + * - 1 - WDOG write-once registers can be unlocked for updating. + */ +//@{ +#define BP_WDOG_STCTRLH_ALLOWUPDATE (4U) //!< Bit position for WDOG_STCTRLH_ALLOWUPDATE. +#define BM_WDOG_STCTRLH_ALLOWUPDATE (0x0010U) //!< Bit mask for WDOG_STCTRLH_ALLOWUPDATE. +#define BS_WDOG_STCTRLH_ALLOWUPDATE (1U) //!< Bit field size in bits for WDOG_STCTRLH_ALLOWUPDATE. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_ALLOWUPDATE field. +#define BR_WDOG_STCTRLH_ALLOWUPDATE (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_ALLOWUPDATE)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_ALLOWUPDATE. +#define BF_WDOG_STCTRLH_ALLOWUPDATE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_ALLOWUPDATE), uint16_t) & BM_WDOG_STCTRLH_ALLOWUPDATE) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the ALLOWUPDATE field to a new value. +#define BW_WDOG_STCTRLH_ALLOWUPDATE(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_ALLOWUPDATE) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field DBGEN[5] (RW) + * + * Enables or disables WDOG in Debug mode. + * + * Values: + * - 0 - WDOG is disabled in CPU Debug mode. + * - 1 - WDOG is enabled in CPU Debug mode. + */ +//@{ +#define BP_WDOG_STCTRLH_DBGEN (5U) //!< Bit position for WDOG_STCTRLH_DBGEN. +#define BM_WDOG_STCTRLH_DBGEN (0x0020U) //!< Bit mask for WDOG_STCTRLH_DBGEN. +#define BS_WDOG_STCTRLH_DBGEN (1U) //!< Bit field size in bits for WDOG_STCTRLH_DBGEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_DBGEN field. +#define BR_WDOG_STCTRLH_DBGEN (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_DBGEN)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_DBGEN. +#define BF_WDOG_STCTRLH_DBGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_DBGEN), uint16_t) & BM_WDOG_STCTRLH_DBGEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DBGEN field to a new value. +#define BW_WDOG_STCTRLH_DBGEN(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_DBGEN) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field STOPEN[6] (RW) + * + * Enables or disables WDOG in Stop mode. + * + * Values: + * - 0 - WDOG is disabled in CPU Stop mode. + * - 1 - WDOG is enabled in CPU Stop mode. + */ +//@{ +#define BP_WDOG_STCTRLH_STOPEN (6U) //!< Bit position for WDOG_STCTRLH_STOPEN. +#define BM_WDOG_STCTRLH_STOPEN (0x0040U) //!< Bit mask for WDOG_STCTRLH_STOPEN. +#define BS_WDOG_STCTRLH_STOPEN (1U) //!< Bit field size in bits for WDOG_STCTRLH_STOPEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_STOPEN field. +#define BR_WDOG_STCTRLH_STOPEN (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_STOPEN)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_STOPEN. +#define BF_WDOG_STCTRLH_STOPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_STOPEN), uint16_t) & BM_WDOG_STCTRLH_STOPEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the STOPEN field to a new value. +#define BW_WDOG_STCTRLH_STOPEN(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_STOPEN) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field WAITEN[7] (RW) + * + * Enables or disables WDOG in Wait mode. + * + * Values: + * - 0 - WDOG is disabled in CPU Wait mode. + * - 1 - WDOG is enabled in CPU Wait mode. + */ +//@{ +#define BP_WDOG_STCTRLH_WAITEN (7U) //!< Bit position for WDOG_STCTRLH_WAITEN. +#define BM_WDOG_STCTRLH_WAITEN (0x0080U) //!< Bit mask for WDOG_STCTRLH_WAITEN. +#define BS_WDOG_STCTRLH_WAITEN (1U) //!< Bit field size in bits for WDOG_STCTRLH_WAITEN. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_WAITEN field. +#define BR_WDOG_STCTRLH_WAITEN (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_WAITEN)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_WAITEN. +#define BF_WDOG_STCTRLH_WAITEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_WAITEN), uint16_t) & BM_WDOG_STCTRLH_WAITEN) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WAITEN field to a new value. +#define BW_WDOG_STCTRLH_WAITEN(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_WAITEN) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field TESTWDOG[10] (RW) + * + * Puts the watchdog in the functional test mode. In this mode, the watchdog + * timer and the associated compare and reset generation logic is tested for correct + * operation. The clock for the timer is switched from the main watchdog clock + * to the fast clock input for watchdog functional test. The TESTSEL bit selects + * the test to be run. + */ +//@{ +#define BP_WDOG_STCTRLH_TESTWDOG (10U) //!< Bit position for WDOG_STCTRLH_TESTWDOG. +#define BM_WDOG_STCTRLH_TESTWDOG (0x0400U) //!< Bit mask for WDOG_STCTRLH_TESTWDOG. +#define BS_WDOG_STCTRLH_TESTWDOG (1U) //!< Bit field size in bits for WDOG_STCTRLH_TESTWDOG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_TESTWDOG field. +#define BR_WDOG_STCTRLH_TESTWDOG (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_TESTWDOG)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_TESTWDOG. +#define BF_WDOG_STCTRLH_TESTWDOG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_TESTWDOG), uint16_t) & BM_WDOG_STCTRLH_TESTWDOG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TESTWDOG field to a new value. +#define BW_WDOG_STCTRLH_TESTWDOG(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_TESTWDOG) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field TESTSEL[11] (RW) + * + * Effective only if TESTWDOG is set. Selects the test to be run on the watchdog + * timer. + * + * Values: + * - 0 - Quick test. The timer runs in normal operation. You can load a small + * time-out value to do a quick test. + * - 1 - Byte test. Puts the timer in the byte test mode where individual bytes + * of the timer are enabled for operation and are compared for time-out + * against the corresponding byte of the programmed time-out value. Select the + * byte through BYTESEL[1:0] for testing. + */ +//@{ +#define BP_WDOG_STCTRLH_TESTSEL (11U) //!< Bit position for WDOG_STCTRLH_TESTSEL. +#define BM_WDOG_STCTRLH_TESTSEL (0x0800U) //!< Bit mask for WDOG_STCTRLH_TESTSEL. +#define BS_WDOG_STCTRLH_TESTSEL (1U) //!< Bit field size in bits for WDOG_STCTRLH_TESTSEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_TESTSEL field. +#define BR_WDOG_STCTRLH_TESTSEL (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_TESTSEL)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_TESTSEL. +#define BF_WDOG_STCTRLH_TESTSEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_TESTSEL), uint16_t) & BM_WDOG_STCTRLH_TESTSEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TESTSEL field to a new value. +#define BW_WDOG_STCTRLH_TESTSEL(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_TESTSEL) = (v)) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field BYTESEL[13:12] (RW) + * + * This 2-bit field selects the byte to be tested when the watchdog is in the + * byte test mode. + * + * Values: + * - 00 - Byte 0 selected + * - 01 - Byte 1 selected + * - 10 - Byte 2 selected + * - 11 - Byte 3 selected + */ +//@{ +#define BP_WDOG_STCTRLH_BYTESEL (12U) //!< Bit position for WDOG_STCTRLH_BYTESEL. +#define BM_WDOG_STCTRLH_BYTESEL (0x3000U) //!< Bit mask for WDOG_STCTRLH_BYTESEL. +#define BS_WDOG_STCTRLH_BYTESEL (2U) //!< Bit field size in bits for WDOG_STCTRLH_BYTESEL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_BYTESEL field. +#define BR_WDOG_STCTRLH_BYTESEL (HW_WDOG_STCTRLH.B.BYTESEL) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_BYTESEL. +#define BF_WDOG_STCTRLH_BYTESEL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_BYTESEL), uint16_t) & BM_WDOG_STCTRLH_BYTESEL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the BYTESEL field to a new value. +#define BW_WDOG_STCTRLH_BYTESEL(v) (HW_WDOG_STCTRLH_WR((HW_WDOG_STCTRLH_RD() & ~BM_WDOG_STCTRLH_BYTESEL) | BF_WDOG_STCTRLH_BYTESEL(v))) +#endif +//@} + +/*! + * @name Register WDOG_STCTRLH, field DISTESTWDOG[14] (RW) + * + * Allows the WDOG's functional test mode to be disabled permanently. After it + * is set, it can only be cleared by a reset. It cannot be unlocked for editing + * after it is set. + * + * Values: + * - 0 - WDOG functional test mode is not disabled. + * - 1 - WDOG functional test mode is disabled permanently until reset. + */ +//@{ +#define BP_WDOG_STCTRLH_DISTESTWDOG (14U) //!< Bit position for WDOG_STCTRLH_DISTESTWDOG. +#define BM_WDOG_STCTRLH_DISTESTWDOG (0x4000U) //!< Bit mask for WDOG_STCTRLH_DISTESTWDOG. +#define BS_WDOG_STCTRLH_DISTESTWDOG (1U) //!< Bit field size in bits for WDOG_STCTRLH_DISTESTWDOG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLH_DISTESTWDOG field. +#define BR_WDOG_STCTRLH_DISTESTWDOG (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_DISTESTWDOG)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLH_DISTESTWDOG. +#define BF_WDOG_STCTRLH_DISTESTWDOG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLH_DISTESTWDOG), uint16_t) & BM_WDOG_STCTRLH_DISTESTWDOG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the DISTESTWDOG field to a new value. +#define BW_WDOG_STCTRLH_DISTESTWDOG(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLH_ADDR, BP_WDOG_STCTRLH_DISTESTWDOG) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_STCTRLL - Watchdog Status and Control Register Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_STCTRLL - Watchdog Status and Control Register Low (RW) + * + * Reset value: 0x0001U + */ +typedef union _hw_wdog_stctrll +{ + uint16_t U; + struct _hw_wdog_stctrll_bitfields + { + uint16_t RESERVED0 : 15; //!< [14:0] + uint16_t INTFLG : 1; //!< [15] + } B; +} hw_wdog_stctrll_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_STCTRLL register + */ +//@{ +#define HW_WDOG_STCTRLL_ADDR (REGS_WDOG_BASE + 0x2U) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_STCTRLL (*(__IO hw_wdog_stctrll_t *) HW_WDOG_STCTRLL_ADDR) +#define HW_WDOG_STCTRLL_RD() (HW_WDOG_STCTRLL.U) +#define HW_WDOG_STCTRLL_WR(v) (HW_WDOG_STCTRLL.U = (v)) +#define HW_WDOG_STCTRLL_SET(v) (HW_WDOG_STCTRLL_WR(HW_WDOG_STCTRLL_RD() | (v))) +#define HW_WDOG_STCTRLL_CLR(v) (HW_WDOG_STCTRLL_WR(HW_WDOG_STCTRLL_RD() & ~(v))) +#define HW_WDOG_STCTRLL_TOG(v) (HW_WDOG_STCTRLL_WR(HW_WDOG_STCTRLL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_STCTRLL bitfields + */ + +/*! + * @name Register WDOG_STCTRLL, field INTFLG[15] (RW) + * + * Interrupt flag. It is set when an exception occurs. IRQRSTEN = 1 is a + * precondition to set this flag. INTFLG = 1 results in an interrupt being issued + * followed by a reset, WCT later. The interrupt can be cleared by writing 1 to this + * bit. It also gets cleared on a system reset. + */ +//@{ +#define BP_WDOG_STCTRLL_INTFLG (15U) //!< Bit position for WDOG_STCTRLL_INTFLG. +#define BM_WDOG_STCTRLL_INTFLG (0x8000U) //!< Bit mask for WDOG_STCTRLL_INTFLG. +#define BS_WDOG_STCTRLL_INTFLG (1U) //!< Bit field size in bits for WDOG_STCTRLL_INTFLG. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_STCTRLL_INTFLG field. +#define BR_WDOG_STCTRLL_INTFLG (BITBAND_ACCESS16(HW_WDOG_STCTRLL_ADDR, BP_WDOG_STCTRLL_INTFLG)) +#endif + +//! @brief Format value for bitfield WDOG_STCTRLL_INTFLG. +#define BF_WDOG_STCTRLL_INTFLG(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_STCTRLL_INTFLG), uint16_t) & BM_WDOG_STCTRLL_INTFLG) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the INTFLG field to a new value. +#define BW_WDOG_STCTRLL_INTFLG(v) (BITBAND_ACCESS16(HW_WDOG_STCTRLL_ADDR, BP_WDOG_STCTRLL_INTFLG) = (v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_TOVALH - Watchdog Time-out Value Register High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_TOVALH - Watchdog Time-out Value Register High (RW) + * + * Reset value: 0x004CU + */ +typedef union _hw_wdog_tovalh +{ + uint16_t U; + struct _hw_wdog_tovalh_bitfields + { + uint16_t TOVALHIGH : 16; //!< [15:0] + } B; +} hw_wdog_tovalh_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_TOVALH register + */ +//@{ +#define HW_WDOG_TOVALH_ADDR (REGS_WDOG_BASE + 0x4U) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_TOVALH (*(__IO hw_wdog_tovalh_t *) HW_WDOG_TOVALH_ADDR) +#define HW_WDOG_TOVALH_RD() (HW_WDOG_TOVALH.U) +#define HW_WDOG_TOVALH_WR(v) (HW_WDOG_TOVALH.U = (v)) +#define HW_WDOG_TOVALH_SET(v) (HW_WDOG_TOVALH_WR(HW_WDOG_TOVALH_RD() | (v))) +#define HW_WDOG_TOVALH_CLR(v) (HW_WDOG_TOVALH_WR(HW_WDOG_TOVALH_RD() & ~(v))) +#define HW_WDOG_TOVALH_TOG(v) (HW_WDOG_TOVALH_WR(HW_WDOG_TOVALH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_TOVALH bitfields + */ + +/*! + * @name Register WDOG_TOVALH, field TOVALHIGH[15:0] (RW) + * + * Defines the upper 16 bits of the 32-bit time-out value for the watchdog + * timer. It is defined in terms of cycles of the watchdog clock. + */ +//@{ +#define BP_WDOG_TOVALH_TOVALHIGH (0U) //!< Bit position for WDOG_TOVALH_TOVALHIGH. +#define BM_WDOG_TOVALH_TOVALHIGH (0xFFFFU) //!< Bit mask for WDOG_TOVALH_TOVALHIGH. +#define BS_WDOG_TOVALH_TOVALHIGH (16U) //!< Bit field size in bits for WDOG_TOVALH_TOVALHIGH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_TOVALH_TOVALHIGH field. +#define BR_WDOG_TOVALH_TOVALHIGH (HW_WDOG_TOVALH.U) +#endif + +//! @brief Format value for bitfield WDOG_TOVALH_TOVALHIGH. +#define BF_WDOG_TOVALH_TOVALHIGH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_TOVALH_TOVALHIGH), uint16_t) & BM_WDOG_TOVALH_TOVALHIGH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOVALHIGH field to a new value. +#define BW_WDOG_TOVALH_TOVALHIGH(v) (HW_WDOG_TOVALH_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_TOVALL - Watchdog Time-out Value Register Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_TOVALL - Watchdog Time-out Value Register Low (RW) + * + * Reset value: 0x4B4CU + * + * The time-out value of the watchdog must be set to a minimum of four watchdog + * clock cycles. This is to take into account the delay in new settings taking + * effect in the watchdog clock domain. + */ +typedef union _hw_wdog_tovall +{ + uint16_t U; + struct _hw_wdog_tovall_bitfields + { + uint16_t TOVALLOW : 16; //!< [15:0] + } B; +} hw_wdog_tovall_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_TOVALL register + */ +//@{ +#define HW_WDOG_TOVALL_ADDR (REGS_WDOG_BASE + 0x6U) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_TOVALL (*(__IO hw_wdog_tovall_t *) HW_WDOG_TOVALL_ADDR) +#define HW_WDOG_TOVALL_RD() (HW_WDOG_TOVALL.U) +#define HW_WDOG_TOVALL_WR(v) (HW_WDOG_TOVALL.U = (v)) +#define HW_WDOG_TOVALL_SET(v) (HW_WDOG_TOVALL_WR(HW_WDOG_TOVALL_RD() | (v))) +#define HW_WDOG_TOVALL_CLR(v) (HW_WDOG_TOVALL_WR(HW_WDOG_TOVALL_RD() & ~(v))) +#define HW_WDOG_TOVALL_TOG(v) (HW_WDOG_TOVALL_WR(HW_WDOG_TOVALL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_TOVALL bitfields + */ + +/*! + * @name Register WDOG_TOVALL, field TOVALLOW[15:0] (RW) + * + * Defines the lower 16 bits of the 32-bit time-out value for the watchdog + * timer. It is defined in terms of cycles of the watchdog clock. + */ +//@{ +#define BP_WDOG_TOVALL_TOVALLOW (0U) //!< Bit position for WDOG_TOVALL_TOVALLOW. +#define BM_WDOG_TOVALL_TOVALLOW (0xFFFFU) //!< Bit mask for WDOG_TOVALL_TOVALLOW. +#define BS_WDOG_TOVALL_TOVALLOW (16U) //!< Bit field size in bits for WDOG_TOVALL_TOVALLOW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_TOVALL_TOVALLOW field. +#define BR_WDOG_TOVALL_TOVALLOW (HW_WDOG_TOVALL.U) +#endif + +//! @brief Format value for bitfield WDOG_TOVALL_TOVALLOW. +#define BF_WDOG_TOVALL_TOVALLOW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_TOVALL_TOVALLOW), uint16_t) & BM_WDOG_TOVALL_TOVALLOW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TOVALLOW field to a new value. +#define BW_WDOG_TOVALL_TOVALLOW(v) (HW_WDOG_TOVALL_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_WINH - Watchdog Window Register High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_WINH - Watchdog Window Register High (RW) + * + * Reset value: 0x0000U + * + * You must set the Window Register value lower than the Time-out Value Register. + */ +typedef union _hw_wdog_winh +{ + uint16_t U; + struct _hw_wdog_winh_bitfields + { + uint16_t WINHIGH : 16; //!< [15:0] + } B; +} hw_wdog_winh_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_WINH register + */ +//@{ +#define HW_WDOG_WINH_ADDR (REGS_WDOG_BASE + 0x8U) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_WINH (*(__IO hw_wdog_winh_t *) HW_WDOG_WINH_ADDR) +#define HW_WDOG_WINH_RD() (HW_WDOG_WINH.U) +#define HW_WDOG_WINH_WR(v) (HW_WDOG_WINH.U = (v)) +#define HW_WDOG_WINH_SET(v) (HW_WDOG_WINH_WR(HW_WDOG_WINH_RD() | (v))) +#define HW_WDOG_WINH_CLR(v) (HW_WDOG_WINH_WR(HW_WDOG_WINH_RD() & ~(v))) +#define HW_WDOG_WINH_TOG(v) (HW_WDOG_WINH_WR(HW_WDOG_WINH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_WINH bitfields + */ + +/*! + * @name Register WDOG_WINH, field WINHIGH[15:0] (RW) + * + * Defines the upper 16 bits of the 32-bit window for the windowed mode of + * operation of the watchdog. It is defined in terms of cycles of the watchdog clock. + * In this mode, the watchdog can be refreshed only when the timer has reached a + * value greater than or equal to this window length. A refresh outside this + * window resets the system or if IRQRSTEN is set, it interrupts and then resets the + * system. + */ +//@{ +#define BP_WDOG_WINH_WINHIGH (0U) //!< Bit position for WDOG_WINH_WINHIGH. +#define BM_WDOG_WINH_WINHIGH (0xFFFFU) //!< Bit mask for WDOG_WINH_WINHIGH. +#define BS_WDOG_WINH_WINHIGH (16U) //!< Bit field size in bits for WDOG_WINH_WINHIGH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_WINH_WINHIGH field. +#define BR_WDOG_WINH_WINHIGH (HW_WDOG_WINH.U) +#endif + +//! @brief Format value for bitfield WDOG_WINH_WINHIGH. +#define BF_WDOG_WINH_WINHIGH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_WINH_WINHIGH), uint16_t) & BM_WDOG_WINH_WINHIGH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WINHIGH field to a new value. +#define BW_WDOG_WINH_WINHIGH(v) (HW_WDOG_WINH_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_WINL - Watchdog Window Register Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_WINL - Watchdog Window Register Low (RW) + * + * Reset value: 0x0010U + * + * You must set the Window Register value lower than the Time-out Value Register. + */ +typedef union _hw_wdog_winl +{ + uint16_t U; + struct _hw_wdog_winl_bitfields + { + uint16_t WINLOW : 16; //!< [15:0] + } B; +} hw_wdog_winl_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_WINL register + */ +//@{ +#define HW_WDOG_WINL_ADDR (REGS_WDOG_BASE + 0xAU) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_WINL (*(__IO hw_wdog_winl_t *) HW_WDOG_WINL_ADDR) +#define HW_WDOG_WINL_RD() (HW_WDOG_WINL.U) +#define HW_WDOG_WINL_WR(v) (HW_WDOG_WINL.U = (v)) +#define HW_WDOG_WINL_SET(v) (HW_WDOG_WINL_WR(HW_WDOG_WINL_RD() | (v))) +#define HW_WDOG_WINL_CLR(v) (HW_WDOG_WINL_WR(HW_WDOG_WINL_RD() & ~(v))) +#define HW_WDOG_WINL_TOG(v) (HW_WDOG_WINL_WR(HW_WDOG_WINL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_WINL bitfields + */ + +/*! + * @name Register WDOG_WINL, field WINLOW[15:0] (RW) + * + * Defines the lower 16 bits of the 32-bit window for the windowed mode of + * operation of the watchdog. It is defined in terms of cycles of the pre-scaled + * watchdog clock. In this mode, the watchdog can be refreshed only when the timer + * reaches a value greater than or equal to this window length value. A refresh + * outside of this window resets the system or if IRQRSTEN is set, it interrupts and + * then resets the system. + */ +//@{ +#define BP_WDOG_WINL_WINLOW (0U) //!< Bit position for WDOG_WINL_WINLOW. +#define BM_WDOG_WINL_WINLOW (0xFFFFU) //!< Bit mask for WDOG_WINL_WINLOW. +#define BS_WDOG_WINL_WINLOW (16U) //!< Bit field size in bits for WDOG_WINL_WINLOW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_WINL_WINLOW field. +#define BR_WDOG_WINL_WINLOW (HW_WDOG_WINL.U) +#endif + +//! @brief Format value for bitfield WDOG_WINL_WINLOW. +#define BF_WDOG_WINL_WINLOW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_WINL_WINLOW), uint16_t) & BM_WDOG_WINL_WINLOW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WINLOW field to a new value. +#define BW_WDOG_WINL_WINLOW(v) (HW_WDOG_WINL_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_REFRESH - Watchdog Refresh register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_REFRESH - Watchdog Refresh register (RW) + * + * Reset value: 0xB480U + */ +typedef union _hw_wdog_refresh +{ + uint16_t U; + struct _hw_wdog_refresh_bitfields + { + uint16_t WDOGREFRESH : 16; //!< [15:0] + } B; +} hw_wdog_refresh_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_REFRESH register + */ +//@{ +#define HW_WDOG_REFRESH_ADDR (REGS_WDOG_BASE + 0xCU) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_REFRESH (*(__IO hw_wdog_refresh_t *) HW_WDOG_REFRESH_ADDR) +#define HW_WDOG_REFRESH_RD() (HW_WDOG_REFRESH.U) +#define HW_WDOG_REFRESH_WR(v) (HW_WDOG_REFRESH.U = (v)) +#define HW_WDOG_REFRESH_SET(v) (HW_WDOG_REFRESH_WR(HW_WDOG_REFRESH_RD() | (v))) +#define HW_WDOG_REFRESH_CLR(v) (HW_WDOG_REFRESH_WR(HW_WDOG_REFRESH_RD() & ~(v))) +#define HW_WDOG_REFRESH_TOG(v) (HW_WDOG_REFRESH_WR(HW_WDOG_REFRESH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_REFRESH bitfields + */ + +/*! + * @name Register WDOG_REFRESH, field WDOGREFRESH[15:0] (RW) + * + * Watchdog refresh register. A sequence of 0xA602 followed by 0xB480 within 20 + * bus clock cycles written to this register refreshes the WDOG and prevents it + * from resetting the system. Writing a value other than the above mentioned + * sequence or if the sequence is longer than 20 bus cycles, resets the system, or if + * IRQRSTEN is set, it interrupts and then resets the system. + */ +//@{ +#define BP_WDOG_REFRESH_WDOGREFRESH (0U) //!< Bit position for WDOG_REFRESH_WDOGREFRESH. +#define BM_WDOG_REFRESH_WDOGREFRESH (0xFFFFU) //!< Bit mask for WDOG_REFRESH_WDOGREFRESH. +#define BS_WDOG_REFRESH_WDOGREFRESH (16U) //!< Bit field size in bits for WDOG_REFRESH_WDOGREFRESH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_REFRESH_WDOGREFRESH field. +#define BR_WDOG_REFRESH_WDOGREFRESH (HW_WDOG_REFRESH.U) +#endif + +//! @brief Format value for bitfield WDOG_REFRESH_WDOGREFRESH. +#define BF_WDOG_REFRESH_WDOGREFRESH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_REFRESH_WDOGREFRESH), uint16_t) & BM_WDOG_REFRESH_WDOGREFRESH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WDOGREFRESH field to a new value. +#define BW_WDOG_REFRESH_WDOGREFRESH(v) (HW_WDOG_REFRESH_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_UNLOCK - Watchdog Unlock register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_UNLOCK - Watchdog Unlock register (RW) + * + * Reset value: 0xD928U + */ +typedef union _hw_wdog_unlock +{ + uint16_t U; + struct _hw_wdog_unlock_bitfields + { + uint16_t WDOGUNLOCK : 16; //!< [15:0] + } B; +} hw_wdog_unlock_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_UNLOCK register + */ +//@{ +#define HW_WDOG_UNLOCK_ADDR (REGS_WDOG_BASE + 0xEU) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_UNLOCK (*(__IO hw_wdog_unlock_t *) HW_WDOG_UNLOCK_ADDR) +#define HW_WDOG_UNLOCK_RD() (HW_WDOG_UNLOCK.U) +#define HW_WDOG_UNLOCK_WR(v) (HW_WDOG_UNLOCK.U = (v)) +#define HW_WDOG_UNLOCK_SET(v) (HW_WDOG_UNLOCK_WR(HW_WDOG_UNLOCK_RD() | (v))) +#define HW_WDOG_UNLOCK_CLR(v) (HW_WDOG_UNLOCK_WR(HW_WDOG_UNLOCK_RD() & ~(v))) +#define HW_WDOG_UNLOCK_TOG(v) (HW_WDOG_UNLOCK_WR(HW_WDOG_UNLOCK_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_UNLOCK bitfields + */ + +/*! + * @name Register WDOG_UNLOCK, field WDOGUNLOCK[15:0] (RW) + * + * Writing the unlock sequence values to this register to makes the watchdog + * write-once registers writable again. The required unlock sequence is 0xC520 + * followed by 0xD928 within 20 bus clock cycles. A valid unlock sequence opens a + * window equal in length to the WCT within which you can update the registers. + * Writing a value other than the above mentioned sequence or if the sequence is + * longer than 20 bus cycles, resets the system or if IRQRSTEN is set, it interrupts + * and then resets the system. The unlock sequence is effective only if + * ALLOWUPDATE is set. + */ +//@{ +#define BP_WDOG_UNLOCK_WDOGUNLOCK (0U) //!< Bit position for WDOG_UNLOCK_WDOGUNLOCK. +#define BM_WDOG_UNLOCK_WDOGUNLOCK (0xFFFFU) //!< Bit mask for WDOG_UNLOCK_WDOGUNLOCK. +#define BS_WDOG_UNLOCK_WDOGUNLOCK (16U) //!< Bit field size in bits for WDOG_UNLOCK_WDOGUNLOCK. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_UNLOCK_WDOGUNLOCK field. +#define BR_WDOG_UNLOCK_WDOGUNLOCK (HW_WDOG_UNLOCK.U) +#endif + +//! @brief Format value for bitfield WDOG_UNLOCK_WDOGUNLOCK. +#define BF_WDOG_UNLOCK_WDOGUNLOCK(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_UNLOCK_WDOGUNLOCK), uint16_t) & BM_WDOG_UNLOCK_WDOGUNLOCK) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the WDOGUNLOCK field to a new value. +#define BW_WDOG_UNLOCK_WDOGUNLOCK(v) (HW_WDOG_UNLOCK_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_TMROUTH - Watchdog Timer Output Register High +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_TMROUTH - Watchdog Timer Output Register High (RW) + * + * Reset value: 0x0000U + */ +typedef union _hw_wdog_tmrouth +{ + uint16_t U; + struct _hw_wdog_tmrouth_bitfields + { + uint16_t TIMEROUTHIGH : 16; //!< [15:0] + } B; +} hw_wdog_tmrouth_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_TMROUTH register + */ +//@{ +#define HW_WDOG_TMROUTH_ADDR (REGS_WDOG_BASE + 0x10U) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_TMROUTH (*(__IO hw_wdog_tmrouth_t *) HW_WDOG_TMROUTH_ADDR) +#define HW_WDOG_TMROUTH_RD() (HW_WDOG_TMROUTH.U) +#define HW_WDOG_TMROUTH_WR(v) (HW_WDOG_TMROUTH.U = (v)) +#define HW_WDOG_TMROUTH_SET(v) (HW_WDOG_TMROUTH_WR(HW_WDOG_TMROUTH_RD() | (v))) +#define HW_WDOG_TMROUTH_CLR(v) (HW_WDOG_TMROUTH_WR(HW_WDOG_TMROUTH_RD() & ~(v))) +#define HW_WDOG_TMROUTH_TOG(v) (HW_WDOG_TMROUTH_WR(HW_WDOG_TMROUTH_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_TMROUTH bitfields + */ + +/*! + * @name Register WDOG_TMROUTH, field TIMEROUTHIGH[15:0] (RW) + * + * Shows the value of the upper 16 bits of the watchdog timer. + */ +//@{ +#define BP_WDOG_TMROUTH_TIMEROUTHIGH (0U) //!< Bit position for WDOG_TMROUTH_TIMEROUTHIGH. +#define BM_WDOG_TMROUTH_TIMEROUTHIGH (0xFFFFU) //!< Bit mask for WDOG_TMROUTH_TIMEROUTHIGH. +#define BS_WDOG_TMROUTH_TIMEROUTHIGH (16U) //!< Bit field size in bits for WDOG_TMROUTH_TIMEROUTHIGH. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_TMROUTH_TIMEROUTHIGH field. +#define BR_WDOG_TMROUTH_TIMEROUTHIGH (HW_WDOG_TMROUTH.U) +#endif + +//! @brief Format value for bitfield WDOG_TMROUTH_TIMEROUTHIGH. +#define BF_WDOG_TMROUTH_TIMEROUTHIGH(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_TMROUTH_TIMEROUTHIGH), uint16_t) & BM_WDOG_TMROUTH_TIMEROUTHIGH) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIMEROUTHIGH field to a new value. +#define BW_WDOG_TMROUTH_TIMEROUTHIGH(v) (HW_WDOG_TMROUTH_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_TMROUTL - Watchdog Timer Output Register Low +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_TMROUTL - Watchdog Timer Output Register Low (RW) + * + * Reset value: 0x0000U + * + * During Stop mode, the WDOG_TIMER_OUT will be caught at the pre-stop value of + * the watchdog timer. After exiting Stop mode, a maximum delay of 1 WDOG_CLK + * cycle + 3 bus clock cycles will occur before the WDOG_TIMER_OUT starts following + * the watchdog timer. + */ +typedef union _hw_wdog_tmroutl +{ + uint16_t U; + struct _hw_wdog_tmroutl_bitfields + { + uint16_t TIMEROUTLOW : 16; //!< [15:0] + } B; +} hw_wdog_tmroutl_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_TMROUTL register + */ +//@{ +#define HW_WDOG_TMROUTL_ADDR (REGS_WDOG_BASE + 0x12U) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_TMROUTL (*(__IO hw_wdog_tmroutl_t *) HW_WDOG_TMROUTL_ADDR) +#define HW_WDOG_TMROUTL_RD() (HW_WDOG_TMROUTL.U) +#define HW_WDOG_TMROUTL_WR(v) (HW_WDOG_TMROUTL.U = (v)) +#define HW_WDOG_TMROUTL_SET(v) (HW_WDOG_TMROUTL_WR(HW_WDOG_TMROUTL_RD() | (v))) +#define HW_WDOG_TMROUTL_CLR(v) (HW_WDOG_TMROUTL_WR(HW_WDOG_TMROUTL_RD() & ~(v))) +#define HW_WDOG_TMROUTL_TOG(v) (HW_WDOG_TMROUTL_WR(HW_WDOG_TMROUTL_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_TMROUTL bitfields + */ + +/*! + * @name Register WDOG_TMROUTL, field TIMEROUTLOW[15:0] (RW) + * + * Shows the value of the lower 16 bits of the watchdog timer. + */ +//@{ +#define BP_WDOG_TMROUTL_TIMEROUTLOW (0U) //!< Bit position for WDOG_TMROUTL_TIMEROUTLOW. +#define BM_WDOG_TMROUTL_TIMEROUTLOW (0xFFFFU) //!< Bit mask for WDOG_TMROUTL_TIMEROUTLOW. +#define BS_WDOG_TMROUTL_TIMEROUTLOW (16U) //!< Bit field size in bits for WDOG_TMROUTL_TIMEROUTLOW. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_TMROUTL_TIMEROUTLOW field. +#define BR_WDOG_TMROUTL_TIMEROUTLOW (HW_WDOG_TMROUTL.U) +#endif + +//! @brief Format value for bitfield WDOG_TMROUTL_TIMEROUTLOW. +#define BF_WDOG_TMROUTL_TIMEROUTLOW(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_TMROUTL_TIMEROUTLOW), uint16_t) & BM_WDOG_TMROUTL_TIMEROUTLOW) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the TIMEROUTLOW field to a new value. +#define BW_WDOG_TMROUTL_TIMEROUTLOW(v) (HW_WDOG_TMROUTL_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_RSTCNT - Watchdog Reset Count register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_RSTCNT - Watchdog Reset Count register (RW) + * + * Reset value: 0x0000U + */ +typedef union _hw_wdog_rstcnt +{ + uint16_t U; + struct _hw_wdog_rstcnt_bitfields + { + uint16_t RSTCNT : 16; //!< [15:0] + } B; +} hw_wdog_rstcnt_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_RSTCNT register + */ +//@{ +#define HW_WDOG_RSTCNT_ADDR (REGS_WDOG_BASE + 0x14U) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_RSTCNT (*(__IO hw_wdog_rstcnt_t *) HW_WDOG_RSTCNT_ADDR) +#define HW_WDOG_RSTCNT_RD() (HW_WDOG_RSTCNT.U) +#define HW_WDOG_RSTCNT_WR(v) (HW_WDOG_RSTCNT.U = (v)) +#define HW_WDOG_RSTCNT_SET(v) (HW_WDOG_RSTCNT_WR(HW_WDOG_RSTCNT_RD() | (v))) +#define HW_WDOG_RSTCNT_CLR(v) (HW_WDOG_RSTCNT_WR(HW_WDOG_RSTCNT_RD() & ~(v))) +#define HW_WDOG_RSTCNT_TOG(v) (HW_WDOG_RSTCNT_WR(HW_WDOG_RSTCNT_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_RSTCNT bitfields + */ + +/*! + * @name Register WDOG_RSTCNT, field RSTCNT[15:0] (RW) + * + * Counts the number of times the watchdog resets the system. This register is + * reset only on a POR. Writing 1 to the bit to be cleared enables you to clear + * the contents of this register. + */ +//@{ +#define BP_WDOG_RSTCNT_RSTCNT (0U) //!< Bit position for WDOG_RSTCNT_RSTCNT. +#define BM_WDOG_RSTCNT_RSTCNT (0xFFFFU) //!< Bit mask for WDOG_RSTCNT_RSTCNT. +#define BS_WDOG_RSTCNT_RSTCNT (16U) //!< Bit field size in bits for WDOG_RSTCNT_RSTCNT. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_RSTCNT_RSTCNT field. +#define BR_WDOG_RSTCNT_RSTCNT (HW_WDOG_RSTCNT.U) +#endif + +//! @brief Format value for bitfield WDOG_RSTCNT_RSTCNT. +#define BF_WDOG_RSTCNT_RSTCNT(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_RSTCNT_RSTCNT), uint16_t) & BM_WDOG_RSTCNT_RSTCNT) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the RSTCNT field to a new value. +#define BW_WDOG_RSTCNT_RSTCNT(v) (HW_WDOG_RSTCNT_WR(v)) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// HW_WDOG_PRESC - Watchdog Prescaler register +//------------------------------------------------------------------------------------------- + +#ifndef __LANGUAGE_ASM__ +/*! + * @brief HW_WDOG_PRESC - Watchdog Prescaler register (RW) + * + * Reset value: 0x0400U + */ +typedef union _hw_wdog_presc +{ + uint16_t U; + struct _hw_wdog_presc_bitfields + { + uint16_t RESERVED0 : 8; //!< [7:0] + uint16_t PRESCVAL : 3; //!< [10:8] + uint16_t RESERVED1 : 5; //!< [15:11] + } B; +} hw_wdog_presc_t; +#endif + +/*! + * @name Constants and macros for entire WDOG_PRESC register + */ +//@{ +#define HW_WDOG_PRESC_ADDR (REGS_WDOG_BASE + 0x16U) + +#ifndef __LANGUAGE_ASM__ +#define HW_WDOG_PRESC (*(__IO hw_wdog_presc_t *) HW_WDOG_PRESC_ADDR) +#define HW_WDOG_PRESC_RD() (HW_WDOG_PRESC.U) +#define HW_WDOG_PRESC_WR(v) (HW_WDOG_PRESC.U = (v)) +#define HW_WDOG_PRESC_SET(v) (HW_WDOG_PRESC_WR(HW_WDOG_PRESC_RD() | (v))) +#define HW_WDOG_PRESC_CLR(v) (HW_WDOG_PRESC_WR(HW_WDOG_PRESC_RD() & ~(v))) +#define HW_WDOG_PRESC_TOG(v) (HW_WDOG_PRESC_WR(HW_WDOG_PRESC_RD() ^ (v))) +#endif +//@} + +/* + * Constants & macros for individual WDOG_PRESC bitfields + */ + +/*! + * @name Register WDOG_PRESC, field PRESCVAL[10:8] (RW) + * + * 3-bit prescaler for the watchdog clock source. A value of zero indicates no + * division of the input WDOG clock. The watchdog clock is divided by (PRESCVAL + + * 1) to provide the prescaled WDOG_CLK. + */ +//@{ +#define BP_WDOG_PRESC_PRESCVAL (8U) //!< Bit position for WDOG_PRESC_PRESCVAL. +#define BM_WDOG_PRESC_PRESCVAL (0x0700U) //!< Bit mask for WDOG_PRESC_PRESCVAL. +#define BS_WDOG_PRESC_PRESCVAL (3U) //!< Bit field size in bits for WDOG_PRESC_PRESCVAL. + +#ifndef __LANGUAGE_ASM__ +//! @brief Read current value of the WDOG_PRESC_PRESCVAL field. +#define BR_WDOG_PRESC_PRESCVAL (HW_WDOG_PRESC.B.PRESCVAL) +#endif + +//! @brief Format value for bitfield WDOG_PRESC_PRESCVAL. +#define BF_WDOG_PRESC_PRESCVAL(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint16_t) << BP_WDOG_PRESC_PRESCVAL), uint16_t) & BM_WDOG_PRESC_PRESCVAL) + +#ifndef __LANGUAGE_ASM__ +//! @brief Set the PRESCVAL field to a new value. +#define BW_WDOG_PRESC_PRESCVAL(v) (HW_WDOG_PRESC_WR((HW_WDOG_PRESC_RD() & ~BM_WDOG_PRESC_PRESCVAL) | BF_WDOG_PRESC_PRESCVAL(v))) +#endif +//@} + +//------------------------------------------------------------------------------------------- +// hw_wdog_t - module struct +//------------------------------------------------------------------------------------------- +/*! + * @brief All WDOG module registers. + */ +#ifndef __LANGUAGE_ASM__ +#pragma pack(1) +typedef struct _hw_wdog +{ + __IO hw_wdog_stctrlh_t STCTRLH; //!< [0x0] Watchdog Status and Control Register High + __IO hw_wdog_stctrll_t STCTRLL; //!< [0x2] Watchdog Status and Control Register Low + __IO hw_wdog_tovalh_t TOVALH; //!< [0x4] Watchdog Time-out Value Register High + __IO hw_wdog_tovall_t TOVALL; //!< [0x6] Watchdog Time-out Value Register Low + __IO hw_wdog_winh_t WINH; //!< [0x8] Watchdog Window Register High + __IO hw_wdog_winl_t WINL; //!< [0xA] Watchdog Window Register Low + __IO hw_wdog_refresh_t REFRESH; //!< [0xC] Watchdog Refresh register + __IO hw_wdog_unlock_t UNLOCK; //!< [0xE] Watchdog Unlock register + __IO hw_wdog_tmrouth_t TMROUTH; //!< [0x10] Watchdog Timer Output Register High + __IO hw_wdog_tmroutl_t TMROUTL; //!< [0x12] Watchdog Timer Output Register Low + __IO hw_wdog_rstcnt_t RSTCNT; //!< [0x14] Watchdog Reset Count register + __IO hw_wdog_presc_t PRESC; //!< [0x16] Watchdog Prescaler register +} hw_wdog_t; +#pragma pack() + +//! @brief Macro to access all WDOG registers. +//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, +//! use the '&' operator, like <code>&HW_WDOG</code>. +#define HW_WDOG (*(hw_wdog_t *) REGS_WDOG_BASE) +#endif + +#endif // __HW_WDOG_REGISTERS_H__ +// v22/130726/0.9 +// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/regs.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,525 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ + +#ifndef _REGS_H +#define _REGS_H 1 + +#include <stdint.h> +#include <stdlib.h> + +// +// define base address of the register block only if it is not already +// defined, which allows the compiler to override at build time for +// users who've mapped their registers to locations other than the +// physical location +// + +#include <stdint.h> + +#ifndef REGS_BASE +#define REGS_BASE 0x00000000 +#endif + +// +// common register types +// + +#ifndef __LANGUAGE_ASM__ +typedef unsigned char reg8_t; +typedef unsigned short reg16_t; +typedef unsigned int reg32_t; +#endif + +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +#define BME_AND_MASK (1<<26) +#define BME_OR_MASK (1<<27) +#define BME_XOR_MASK (3<<26) +#define BME_BFI_MASK(BIT,WIDTH) (1<<28) | (BIT<<23) | ((WIDTH-1)<<19) +#define BME_UBFX_MASK(BIT,WIDTH) (1<<28) | (BIT<<23) | ((WIDTH-1)<<19) + +/** + * @brief Macro to access a single bit of a 32-bit peripheral register (bit band region + * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Value of the targeted bit in the bit band region. + */ +#define BITBAND_ACCESS32(Reg,Bit) (*((uint32_t volatile*)(0x42000000u + (32u*((uint32_t)(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit)))))) + +/** + * @brief Macro to access a single bit of a 16-bit peripheral register (bit band region + * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Value of the targeted bit in the bit band region. + */ +#define BITBAND_ACCESS16(Reg,Bit) (*((uint16_t volatile*)(0x42000000u + (32u*((uint32_t)(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit)))))) + +/** + * @brief Macro to access a single bit of an 8-bit peripheral register (bit band region + * 0x40000000 to 0x400FFFFF) using the bit-band alias region access. + * @param Reg Register to access. + * @param Bit Bit number to access. + * @return Value of the targeted bit in the bit band region. + */ +#define BITBAND_ACCESS8(Reg,Bit) (*((uint8_t volatile*)(0x42000000u + (32u*((uint32_t)(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit)))))) + +// +// Typecast macro for C or asm. In C, the cast is applied, while in asm it is excluded. This is +// used to simplify macro definitions in the module register headers. +// +#ifndef __REG_VALUE_TYPE + #ifndef __LANGUAGE_ASM__ + #define __REG_VALUE_TYPE(v, t) ((t)(v)) + #else + #define __REG_VALUE_TYPE(v, t) (v) + #endif +#endif + +// +// macros for single instance registers +// + +#define BF_SET(reg, field) HW_##reg##_SET(BM_##reg##_##field) +#define BF_CLR(reg, field) HW_##reg##_CLR(BM_##reg##_##field) +#define BF_TOG(reg, field) HW_##reg##_TOG(BM_##reg##_##field) + +#define BF_SETV(reg, field, v) HW_##reg##_SET(BF_##reg##_##field(v)) +#define BF_CLRV(reg, field, v) HW_##reg##_CLR(BF_##reg##_##field(v)) +#define BF_TOGV(reg, field, v) HW_##reg##_TOG(BF_##reg##_##field(v)) + +#define BV_FLD(reg, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym) +#define BV_VAL(reg, field, sym) BV_##reg##_##field##__##sym + +#define BF_RD(reg, field) HW_##reg.B.field +#define BF_WR(reg, field, v) BW_##reg##_##field(v) + +#define BF_CS1(reg, f1, v1) \ + (HW_##reg##_CLR(BM_##reg##_##f1), \ + HW_##reg##_SET(BF_##reg##_##f1(v1))) + +#define BF_CS2(reg, f1, v1, f2, v2) \ + (HW_##reg##_CLR(BM_##reg##_##f1 | \ + BM_##reg##_##f2), \ + HW_##reg##_SET(BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2))) + +#define BF_CS3(reg, f1, v1, f2, v2, f3, v3) \ + (HW_##reg##_CLR(BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3), \ + HW_##reg##_SET(BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3))) + +#define BF_CS4(reg, f1, v1, f2, v2, f3, v3, f4, v4) \ + (HW_##reg##_CLR(BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4), \ + HW_##reg##_SET(BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4))) + +#define BF_CS5(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \ + (HW_##reg##_CLR(BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5), \ + HW_##reg##_SET(BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5))) + +#define BF_CS6(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \ + (HW_##reg##_CLR(BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6), \ + HW_##reg##_SET(BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6))) + +#define BF_CS7(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \ + (HW_##reg##_CLR(BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6 | \ + BM_##reg##_##f7), \ + HW_##reg##_SET(BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6) | \ + BF_##reg##_##f7(v7))) + +#define BF_CS8(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \ + (HW_##reg##_CLR(BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6 | \ + BM_##reg##_##f7 | \ + BM_##reg##_##f8), \ + HW_##reg##_SET(BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6) | \ + BF_##reg##_##f7(v7) | \ + BF_##reg##_##f8(v8))) + +// +// macros for multiple instance registers +// + +#define BF_SETn(reg, n, field) HW_##reg##_SET(n, BM_##reg##_##field) +#define BF_CLRn(reg, n, field) HW_##reg##_CLR(n, BM_##reg##_##field) +#define BF_TOGn(reg, n, field) HW_##reg##_TOG(n, BM_##reg##_##field) + +#define BF_SETVn(reg, n, field, v) HW_##reg##_SET(n, BF_##reg##_##field(v)) +#define BF_CLRVn(reg, n, field, v) HW_##reg##_CLR(n, BF_##reg##_##field(v)) +#define BF_TOGVn(reg, n, field, v) HW_##reg##_TOG(n, BF_##reg##_##field(v)) + +#define BV_FLDn(reg, n, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym) +#define BV_VALn(reg, n, field, sym) BV_##reg##_##field##__##sym + +#define BF_RDn(reg, n, field) HW_##reg(n).B.field +#define BF_WRn(reg, n, field, v) BW_##reg##_##field(n, v) + +#define BF_CS1n(reg, n, f1, v1) \ + (HW_##reg##_CLR(n, (BM_##reg##_##f1)), \ + HW_##reg##_SET(n, (BF_##reg##_##f1(v1)))) + +#define BF_CS2n(reg, n, f1, v1, f2, v2) \ + (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2)), \ + HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2)))) + +#define BF_CS3n(reg, n, f1, v1, f2, v2, f3, v3) \ + (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3)), \ + HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3)))) + +#define BF_CS4n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4) \ + (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4)), \ + HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4)))) + +#define BF_CS5n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \ + (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5)), \ + HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5)))) + +#define BF_CS6n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \ + (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6)), \ + HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6)))) + +#define BF_CS7n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \ + (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6 | \ + BM_##reg##_##f7)), \ + HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6) | \ + BF_##reg##_##f7(v7)))) + +#define BF_CS8n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \ + (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6 | \ + BM_##reg##_##f7 | \ + BM_##reg##_##f8)), \ + HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6) | \ + BF_##reg##_##f7(v7) | \ + BF_##reg##_##f8(v8)))) + +// +// macros for single instance MULTI-BLOCK registers +// + +#define BFn_SET(reg, blk, field) HW_##reg##_SET(blk, BM_##reg##_##field) +#define BFn_CLR(reg, blk, field) HW_##reg##_CLR(blk, BM_##reg##_##field) +#define BFn_TOG(reg, blk, field) HW_##reg##_TOG(blk, BM_##reg##_##field) + +#define BFn_SETV(reg, blk, field, v) HW_##reg##_SET(blk, BF_##reg##_##field(v)) +#define BFn_CLRV(reg, blk, field, v) HW_##reg##_CLR(blk, BF_##reg##_##field(v)) +#define BFn_TOGV(reg, blk, field, v) HW_##reg##_TOG(blk, BF_##reg##_##field(v)) + +#define BVn_FLD(reg, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym) +#define BVn_VAL(reg, field, sym) BV_##reg##_##field##__##sym + +#define BFn_RD(reg, blk, field) HW_##reg(blk).B.field +#define BFn_WR(reg, blk, field, v) BW_##reg##_##field(blk, v) + +#define BFn_CS1(reg, blk, f1, v1) \ + (HW_##reg##_CLR(blk, BM_##reg##_##f1), \ + HW_##reg##_SET(blk, BF_##reg##_##f1(v1))) + +#define BFn_CS2(reg, blk, f1, v1, f2, v2) \ + (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \ + BM_##reg##_##f2), \ + HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2))) + +#define BFn_CS3(reg, blk, f1, v1, f2, v2, f3, v3) \ + (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3), \ + HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3))) + +#define BFn_CS4(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4) \ + (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4), \ + HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4))) + +#define BFn_CS5(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \ + (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5), \ + HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5))) + +#define BFn_CS6(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \ + (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6), \ + HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6))) + +#define BFn_CS7(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \ + (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6 | \ + BM_##reg##_##f7), \ + HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6) | \ + BF_##reg##_##f7(v7))) + +#define BFn_CS8(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \ + (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6 | \ + BM_##reg##_##f7 | \ + BM_##reg##_##f8), \ + HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6) | \ + BF_##reg##_##f7(v7) | \ + BF_##reg##_##f8(v8))) + +// +// macros for MULTI-BLOCK multiple instance registers +// + +#define BFn_SETn(reg, blk, n, field) HW_##reg##_SET(blk, n, BM_##reg##_##field) +#define BFn_CLRn(reg, blk, n, field) HW_##reg##_CLR(blk, n, BM_##reg##_##field) +#define BFn_TOGn(reg, blk, n, field) HW_##reg##_TOG(blk, n, BM_##reg##_##field) + +#define BFn_SETVn(reg, blk, n, field, v) HW_##reg##_SET(blk, n, BF_##reg##_##field(v)) +#define BFn_CLRVn(reg, blk, n, field, v) HW_##reg##_CLR(blk, n, BF_##reg##_##field(v)) +#define BFn_TOGVn(reg, blk, n, field, v) HW_##reg##_TOG(blk, n, BF_##reg##_##field(v)) + +#define BVn_FLDn(reg, blk, n, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym) +#define BVn_VALn(reg, blk, n, field, sym) BV_##reg##_##field##__##sym + +#define BFn_RDn(reg, blk, n, field) HW_##reg(n).B.field +#define BFn_WRn(reg, blk, n, field, v) BW_##reg##_##field(n, v) + +#define BFn_CS1n(reg, blk, n, f1, v1) \ + (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1)), \ + HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1)))) + +#define BFn_CS2n(reg, blk, n, f1, v1, f2, v2) \ + (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2)), \ + HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2)))) + +#define BFn_CS3n(reg, blk, n, f1, v1, f2, v2, f3, v3) \ + (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3)), \ + HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3)))) + +#define BFn_CS4n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4) \ + (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4)), \ + HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4)))) + +#define BFn_CS5n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \ + (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5)), \ + HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5)))) + +#define BFn_CS6n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \ + (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6)), \ + HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6)))) + +#define BFn_CS7n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \ + (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6 | \ + BM_##reg##_##f7)), \ + HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6) | \ + BF_##reg##_##f7(v7)))) + +#define BFn_CS8n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \ + (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \ + BM_##reg##_##f2 | \ + BM_##reg##_##f3 | \ + BM_##reg##_##f4 | \ + BM_##reg##_##f5 | \ + BM_##reg##_##f6 | \ + BM_##reg##_##f7 | \ + BM_##reg##_##f8)), \ + HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \ + BF_##reg##_##f2(v2) | \ + BF_##reg##_##f3(v3) | \ + BF_##reg##_##f4(v4) | \ + BF_##reg##_##f5(v5) | \ + BF_##reg##_##f6(v6) | \ + BF_##reg##_##f7(v7) | \ + BF_##reg##_##f8(v8)))) + +#endif // _REGS_H + +////////////////////////////////////////////////////////////////////////////////
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/system_MK64F12.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,169 @@ +/* +** ################################################################### +** Processor: MK64FN1M0VMD12 +** Compilers: ARM Compiler +** Freescale C/C++ for Embedded ARM +** GNU C Compiler +** GNU C Compiler - CodeSourcery Sourcery G++ +** IAR ANSI C/C++ Compiler for ARM +** +** Reference manual: K64P144M120SF5RM, Rev.2, January 2014 +** Version: rev. 2.3, 2014-01-24 +** +** Abstract: +** Provides a system configuration function and a global variable that +** contains the system frequency. It configures the device and initializes +** the oscillator (PLL) that is part of the microcontroller device. +** +** Copyright: 2014 Freescale, Inc. All Rights Reserved. +** +** http: www.freescale.com +** mail: support@freescale.com +** +** Revisions: +** - rev. 1.0 (2013-08-12) +** Initial version. +** - rev. 2.0 (2013-10-29) +** Register accessor macros added to the memory map. +** Symbols for Processor Expert memory map compatibility added to the memory map. +** Startup file for gcc has been updated according to CMSIS 3.2. +** System initialization updated. +** MCG - registers updated. +** PORTA, PORTB, PORTC, PORTE - registers for digital filter removed. +** - rev. 2.1 (2013-10-29) +** Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled. +** - rev. 2.2 (2013-12-09) +** DMA - EARS register removed. +** AIPS0, AIPS1 - MPRA register updated. +** - rev. 2.3 (2014-01-24) +** Update according to reference manual rev. 2 +** ENET, MCG, MCM, SIM, USB - registers updated +** +** ################################################################### +*/ + +/*! + * @file MK64F12 + * @version 2.3 + * @date 2014-01-24 + * @brief Device specific configuration file for MK64F12 (header file) + * + * Provides a system configuration function and a global variable that contains + * the system frequency. It configures the device and initializes the oscillator + * (PLL) that is part of the microcontroller device. + */ + +#ifndef SYSTEM_MK64F12_H_ +#define SYSTEM_MK64F12_H_ /**< Symbol preventing repeated inclusion */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +#define DISABLE_WDOG 1 + +#ifndef CLOCK_SETUP +#define CLOCK_SETUP 4 +#endif +/* Predefined clock setups + 0 ... Multipurpose Clock Generator (MCG) in FLL Engaged Internal (FEI) mode + Default part configuration. + Reference clock source for MCG module is the slow internal clock source 32.768kHz + Core clock = 20.97MHz, BusClock = 20.97MHz + 1 ... Multipurpose Clock Generator (MCG) in PLL Engaged External (PEE) mode + Maximum achievable clock frequency configuration. + Reference clock source for MCG module is an external clock source 50MHz + Core clock = 120MHz, BusClock = 60MHz + 2 ... Multipurpose Clock Generator (MCG) in Bypassed Low Power Internal (BLPI) mode + Core clock/Bus clock derived directly from an fast internal clock 4MHz with no multiplication + The clock settings is ready for Very Low Power Run mode. + Core clock = 4MHz, BusClock = 4MHz + 3 ... Multipurpose Clock Generator (MCG) in Bypassed Low Power External (BLPE) mode + Core clock/Bus clock derived directly from the RTC oscillator clock source 32.768kHz + The clock settings is ready for Very Low Power Run mode. + Core clock = 32.768kHz, BusClock = 32.768kHz + 4 ... Multipurpose Clock Generator (MCG) in PLL Engaged External (PEE) mode + USB clock setup + USB clock divider is set for USB to receive 48MHz input clock. + Reference clock source for MCG module is an external clock source 50MHz + USB clock divider is set for USB to receive 48MHz input clock. + Core clock = 120MHz, BusClock = 60MHz +*/ + +/*---------------------------------------------------------------------------- + Define clock source values + *----------------------------------------------------------------------------*/ +#if (CLOCK_SETUP == 0) + #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 20485760u /* Default System clock value */ +#elif (CLOCK_SETUP == 1) + #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 120000000u /* Default System clock value */ +#elif (CLOCK_SETUP == 2) + #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 4000000u /* Default System clock value */ +#elif (CLOCK_SETUP == 3) + #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 32768u /* Default System clock value */ +#elif (CLOCK_SETUP == 4) + #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 120000000u /* Default System clock value */ +#endif /* (CLOCK_SETUP == 4) */ + + +/** + * @brief System clock frequency (core clock) + * + * The system clock frequency supplied to the SysTick timer and the processor + * core clock. This variable can be used by the user application to setup the + * SysTick timer or configure other parameters. It may also be used by debugger to + * query the frequency of the debug timer or configure the trace clock speed + * SystemCoreClock is initialized with a correct predefined value. + */ +extern uint32_t SystemCoreClock; + +/** + * @brief Setup the microcontroller system. + * + * Typically this function configures the oscillator (PLL) that is part of the + * microcontroller device. For systems with variable clock speed it also updates + * the variable SystemCoreClock. SystemInit is called from startup_device file. + */ +void SystemInit (void); + +/** + * @brief Updates the SystemCoreClock variable. + * + * It must be called whenever the core clock is changed during program + * execution. SystemCoreClockUpdate() evaluates the clock register settings and calculates + * the current core clock. + */ +void SystemCoreClockUpdate (void); + +#ifdef __cplusplus +} +#endif + +#endif /* #if !defined(SYSTEM_MK64F12_H_) */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/fsl_device_registers.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,572 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_DEVICE_REGISTERS_H__ +#define __FSL_DEVICE_REGISTERS_H__ + +/* + * Include the cpu specific register header files. + * + * The CPU macro should be declared in the project or makefile. + */ +#if (defined(CPU_MK22FN512VDC12)) + #define K22F51212_SERIES + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MK22F51212/MK22F51212_adc.h" + #include "device/MK22F51212/MK22F51212_aips.h" + #include "device/MK22F51212/MK22F51212_cmp.h" + #include "device/MK22F51212/MK22F51212_crc.h" + #include "device/MK22F51212/MK22F51212_dac.h" + #include "device/MK22F51212/MK22F51212_dma.h" + #include "device/MK22F51212/MK22F51212_dmamux.h" + #include "device/MK22F51212/MK22F51212_ewm.h" + #include "device/MK22F51212/MK22F51212_fb.h" + #include "device/MK22F51212/MK22F51212_fmc.h" + #include "device/MK22F51212/MK22F51212_ftfa.h" + #include "device/MK22F51212/MK22F51212_ftm.h" + #include "device/MK22F51212/MK22F51212_gpio.h" + #include "device/MK22F51212/MK22F51212_i2c.h" + #include "device/MK22F51212/MK22F51212_i2s.h" + #include "device/MK22F51212/MK22F51212_llwu.h" + #include "device/MK22F51212/MK22F51212_lptmr.h" + #include "device/MK22F51212/MK22F51212_mcg.h" + #include "device/MK22F51212/MK22F51212_mcm.h" + #include "device/MK22F51212/MK22F51212_nv.h" + #include "device/MK22F51212/MK22F51212_osc.h" + #include "device/MK22F51212/MK22F51212_pdb.h" + #include "device/MK22F51212/MK22F51212_pit.h" + #include "device/MK22F51212/MK22F51212_pmc.h" + #include "device/MK22F51212/MK22F51212_port.h" + #include "device/MK22F51212/MK22F51212_rcm.h" + #include "device/MK22F51212/MK22F51212_rfsys.h" + #include "device/MK22F51212/MK22F51212_rfvbat.h" + #include "device/MK22F51212/MK22F51212_rng.h" + #include "device/MK22F51212/MK22F51212_rtc.h" + #include "device/MK22F51212/MK22F51212_sim.h" + #include "device/MK22F51212/MK22F51212_smc.h" + #include "device/MK22F51212/MK22F51212_spi.h" + #include "device/MK22F51212/MK22F51212_uart.h" + #include "device/MK22F51212/MK22F51212_usb.h" + #include "device/MK22F51212/MK22F51212_vref.h" + #include "device/MK22F51212/MK22F51212_wdog.h" + + /* CMSIS-style register definitions*/ + #include "device/MK22F51212/MK22F51212.h" + +#elif (defined(CPU_MK24FN1M0VLQ12)) + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MK24F12/MK24F12_adc.h" + #include "device/MK24F12/MK24F12_aips.h" + #include "device/MK24F12/MK24F12_axbs.h" + #include "device/MK24F12/MK24F12_can.h" + #include "device/MK24F12/MK24F12_cau.h" + #include "device/MK24F12/MK24F12_cmp.h" + #include "device/MK24F12/MK24F12_cmt.h" + #include "device/MK24F12/MK24F12_crc.h" + #include "device/MK24F12/MK24F12_dac.h" + #include "device/MK24F12/MK24F12_dma.h" + #include "device/MK24F12/MK24F12_dmamux.h" + #include "device/MK24F12/MK24F12_ewm.h" + #include "device/MK24F12/MK24F12_fb.h" + #include "device/MK24F12/MK24F12_fmc.h" + #include "device/MK24F12/MK24F12_ftfe.h" + #include "device/MK24F12/MK24F12_ftm.h" + #include "device/MK24F12/MK24F12_gpio.h" + #include "device/MK24F12/MK24F12_i2c.h" + #include "device/MK24F12/MK24F12_i2s.h" + #include "device/MK24F12/MK24F12_llwu.h" + #include "device/MK24F12/MK24F12_lptmr.h" + #include "device/MK24F12/MK24F12_mcg.h" + #include "device/MK24F12/MK24F12_mcm.h" + #include "device/MK24F12/MK24F12_mpu.h" + #include "device/MK24F12/MK24F12_nv.h" + #include "device/MK24F12/MK24F12_osc.h" + #include "device/MK24F12/MK24F12_pdb.h" + #include "device/MK24F12/MK24F12_pit.h" + #include "device/MK24F12/MK24F12_pmc.h" + #include "device/MK24F12/MK24F12_port.h" + #include "device/MK24F12/MK24F12_rcm.h" + #include "device/MK24F12/MK24F12_rfsys.h" + #include "device/MK24F12/MK24F12_rfvbat.h" + #include "device/MK24F12/MK24F12_rng.h" + #include "device/MK24F12/MK24F12_rtc.h" + #include "device/MK24F12/MK24F12_sdhc.h" + #include "device/MK24F12/MK24F12_sim.h" + #include "device/MK24F12/MK24F12_smc.h" + #include "device/MK24F12/MK24F12_spi.h" + #include "device/MK24F12/MK24F12_uart.h" + #include "device/MK24F12/MK24F12_usb.h" + #include "device/MK24F12/MK24F12_usbdcd.h" + #include "device/MK24F12/MK24F12_vref.h" + #include "device/MK24F12/MK24F12_wdog.h" + + /* CMSIS-style register definitions*/ + #include "device/MK24F12/MK24F12.h" + +#elif (defined(CPU_MK63FN1M0VMD12)) + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MK63F12/MK63F12_adc.h" + #include "device/MK63F12/MK63F12_aips.h" + #include "device/MK63F12/MK63F12_axbs.h" + #include "device/MK63F12/MK63F12_can.h" + #include "device/MK63F12/MK63F12_cau.h" + #include "device/MK63F12/MK63F12_cmp.h" + #include "device/MK63F12/MK63F12_cmt.h" + #include "device/MK63F12/MK63F12_crc.h" + #include "device/MK63F12/MK63F12_dac.h" + #include "device/MK63F12/MK63F12_dma.h" + #include "device/MK63F12/MK63F12_dmamux.h" + #include "device/MK63F12/MK63F12_enet.h" + #include "device/MK63F12/MK63F12_ewm.h" + #include "device/MK63F12/MK63F12_fb.h" + #include "device/MK63F12/MK63F12_fmc.h" + #include "device/MK63F12/MK63F12_ftfe.h" + #include "device/MK63F12/MK63F12_ftm.h" + #include "device/MK63F12/MK63F12_gpio.h" + #include "device/MK63F12/MK63F12_i2c.h" + #include "device/MK63F12/MK63F12_i2s.h" + #include "device/MK63F12/MK63F12_llwu.h" + #include "device/MK63F12/MK63F12_lptmr.h" + #include "device/MK63F12/MK63F12_mcg.h" + #include "device/MK63F12/MK63F12_mcm.h" + #include "device/MK63F12/MK63F12_mpu.h" + #include "device/MK63F12/MK63F12_nv.h" + #include "device/MK63F12/MK63F12_osc.h" + #include "device/MK63F12/MK63F12_pdb.h" + #include "device/MK63F12/MK63F12_pit.h" + #include "device/MK63F12/MK63F12_pmc.h" + #include "device/MK63F12/MK63F12_port.h" + #include "device/MK63F12/MK63F12_rcm.h" + #include "device/MK63F12/MK63F12_rfsys.h" + #include "device/MK63F12/MK63F12_rfvbat.h" + #include "device/MK63F12/MK63F12_rng.h" + #include "device/MK63F12/MK63F12_rtc.h" + #include "device/MK63F12/MK63F12_sdhc.h" + #include "device/MK63F12/MK63F12_sim.h" + #include "device/MK63F12/MK63F12_smc.h" + #include "device/MK63F12/MK63F12_spi.h" + #include "device/MK63F12/MK63F12_uart.h" + #include "device/MK63F12/MK63F12_usb.h" + #include "device/MK63F12/MK63F12_usbdcd.h" + #include "device/MK63F12/MK63F12_vref.h" + #include "device/MK63F12/MK63F12_wdog.h" + + /* CMSIS-style register definitions*/ + #include "device/MK63F12/MK63F12.h" + +#elif (defined(CPU_MK63FN1M0VMD12WS)) + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MK63F12WS/MK63F12WS_adc.h" + #include "device/MK63F12WS/MK63F12WS_aips.h" + #include "device/MK63F12WS/MK63F12WS_axbs.h" + #include "device/MK63F12WS/MK63F12WS_can.h" + #include "device/MK63F12WS/MK63F12WS_cau.h" + #include "device/MK63F12WS/MK63F12WS_cmp.h" + #include "device/MK63F12WS/MK63F12WS_cmt.h" + #include "device/MK63F12WS/MK63F12WS_crc.h" + #include "device/MK63F12WS/MK63F12WS_dac.h" + #include "device/MK63F12WS/MK63F12WS_dma.h" + #include "device/MK63F12WS/MK63F12WS_dmamux.h" + #include "device/MK63F12WS/MK63F12WS_dry.h" + #include "device/MK63F12WS/MK63F12WS_enet.h" + #include "device/MK63F12WS/MK63F12WS_ewm.h" + #include "device/MK63F12WS/MK63F12WS_fb.h" + #include "device/MK63F12WS/MK63F12WS_fmc.h" + #include "device/MK63F12WS/MK63F12WS_ftfe.h" + #include "device/MK63F12WS/MK63F12WS_ftm.h" + #include "device/MK63F12WS/MK63F12WS_gpio.h" + #include "device/MK63F12WS/MK63F12WS_i2c.h" + #include "device/MK63F12WS/MK63F12WS_i2s.h" + #include "device/MK63F12WS/MK63F12WS_llwu.h" + #include "device/MK63F12WS/MK63F12WS_lptmr.h" + #include "device/MK63F12WS/MK63F12WS_mcg.h" + #include "device/MK63F12WS/MK63F12WS_mcm.h" + #include "device/MK63F12WS/MK63F12WS_mpu.h" + #include "device/MK63F12WS/MK63F12WS_nv.h" + #include "device/MK63F12WS/MK63F12WS_osc.h" + #include "device/MK63F12WS/MK63F12WS_pdb.h" + #include "device/MK63F12WS/MK63F12WS_pit.h" + #include "device/MK63F12WS/MK63F12WS_pmc.h" + #include "device/MK63F12WS/MK63F12WS_port.h" + #include "device/MK63F12WS/MK63F12WS_rcm.h" + #include "device/MK63F12WS/MK63F12WS_rfsys.h" + #include "device/MK63F12WS/MK63F12WS_rfvbat.h" + #include "device/MK63F12WS/MK63F12WS_rng.h" + #include "device/MK63F12WS/MK63F12WS_rtc.h" + #include "device/MK63F12WS/MK63F12WS_sdhc.h" + #include "device/MK63F12WS/MK63F12WS_sim.h" + #include "device/MK63F12WS/MK63F12WS_smc.h" + #include "device/MK63F12WS/MK63F12WS_spi.h" + #include "device/MK63F12WS/MK63F12WS_uart.h" + #include "device/MK63F12WS/MK63F12WS_usb.h" + #include "device/MK63F12WS/MK63F12WS_usbdcd.h" + #include "device/MK63F12WS/MK63F12WS_vref.h" + #include "device/MK63F12WS/MK63F12WS_wdog.h" + + /* CMSIS-style register definitions*/ + #include "device/MK63F12WS/MK63F12WS.h" + +#elif (defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12)) + #define K64F12_SERIES + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MK64F12/MK64F12_adc.h" + #include "device/MK64F12/MK64F12_aips.h" + #include "device/MK64F12/MK64F12_axbs.h" + #include "device/MK64F12/MK64F12_can.h" + #include "device/MK64F12/MK64F12_cau.h" + #include "device/MK64F12/MK64F12_cmp.h" + #include "device/MK64F12/MK64F12_cmt.h" + #include "device/MK64F12/MK64F12_crc.h" + #include "device/MK64F12/MK64F12_dac.h" + #include "device/MK64F12/MK64F12_dma.h" + #include "device/MK64F12/MK64F12_dmamux.h" + #include "device/MK64F12/MK64F12_enet.h" + #include "device/MK64F12/MK64F12_ewm.h" + #include "device/MK64F12/MK64F12_fb.h" + #include "device/MK64F12/MK64F12_fmc.h" + #include "device/MK64F12/MK64F12_ftfe.h" + #include "device/MK64F12/MK64F12_ftm.h" + #include "device/MK64F12/MK64F12_gpio.h" + #include "device/MK64F12/MK64F12_i2c.h" + #include "device/MK64F12/MK64F12_i2s.h" + #include "device/MK64F12/MK64F12_llwu.h" + #include "device/MK64F12/MK64F12_lptmr.h" + #include "device/MK64F12/MK64F12_mcg.h" + #include "device/MK64F12/MK64F12_mcm.h" + #include "device/MK64F12/MK64F12_mpu.h" + #include "device/MK64F12/MK64F12_nv.h" + #include "device/MK64F12/MK64F12_osc.h" + #include "device/MK64F12/MK64F12_pdb.h" + #include "device/MK64F12/MK64F12_pit.h" + #include "device/MK64F12/MK64F12_pmc.h" + #include "device/MK64F12/MK64F12_port.h" + #include "device/MK64F12/MK64F12_rcm.h" + #include "device/MK64F12/MK64F12_rfsys.h" + #include "device/MK64F12/MK64F12_rfvbat.h" + #include "device/MK64F12/MK64F12_rng.h" + #include "device/MK64F12/MK64F12_rtc.h" + #include "device/MK64F12/MK64F12_sdhc.h" + #include "device/MK64F12/MK64F12_sim.h" + #include "device/MK64F12/MK64F12_smc.h" + #include "device/MK64F12/MK64F12_spi.h" + #include "device/MK64F12/MK64F12_uart.h" + #include "device/MK64F12/MK64F12_usb.h" + #include "device/MK64F12/MK64F12_usbdcd.h" + #include "device/MK64F12/MK64F12_vref.h" + #include "device/MK64F12/MK64F12_wdog.h" + + /* CMSIS-style register definitions*/ + #include "device/MK64F12/MK64F12.h" + +#elif (defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || \ + defined(CPU_MK70FX512VMF15) || defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15)) + #define K70F12_SERIES + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MK70F12/MK70F12_adc.h" + #include "device/MK70F12/MK70F12_aips.h" + #include "device/MK70F12/MK70F12_axbs.h" + #include "device/MK70F12/MK70F12_can.h" + #include "device/MK70F12/MK70F12_cau.h" + #include "device/MK70F12/MK70F12_cmp.h" + #include "device/MK70F12/MK70F12_cmt.h" + #include "device/MK70F12/MK70F12_crc.h" + #include "device/MK70F12/MK70F12_dac.h" + #include "device/MK70F12/MK70F12_ddr.h" + #include "device/MK70F12/MK70F12_dma.h" + #include "device/MK70F12/MK70F12_dmamux.h" + #include "device/MK70F12/MK70F12_enet.h" + #include "device/MK70F12/MK70F12_ewm.h" + #include "device/MK70F12/MK70F12_fb.h" + #include "device/MK70F12/MK70F12_fmc.h" + #include "device/MK70F12/MK70F12_ftfe.h" + #include "device/MK70F12/MK70F12_ftm.h" + #include "device/MK70F12/MK70F12_gpio.h" + #include "device/MK70F12/MK70F12_i2c.h" + #include "device/MK70F12/MK70F12_i2s.h" + #include "device/MK70F12/MK70F12_lcdc.h" + #include "device/MK70F12/MK70F12_llwu.h" + #include "device/MK70F12/MK70F12_lmem.h" + #include "device/MK70F12/MK70F12_lptmr.h" + #include "device/MK70F12/MK70F12_mcg.h" + #include "device/MK70F12/MK70F12_mcm.h" + #include "device/MK70F12/MK70F12_mpu.h" + #include "device/MK70F12/MK70F12_nfc.h" + #include "device/MK70F12/MK70F12_nv.h" + #include "device/MK70F12/MK70F12_osc.h" + #include "device/MK70F12/MK70F12_pdb.h" + #include "device/MK70F12/MK70F12_pit.h" + #include "device/MK70F12/MK70F12_pmc.h" + #include "device/MK70F12/MK70F12_port.h" + #include "device/MK70F12/MK70F12_rcm.h" + #include "device/MK70F12/MK70F12_rfsys.h" + #include "device/MK70F12/MK70F12_rfvbat.h" + #include "device/MK70F12/MK70F12_rng.h" + #include "device/MK70F12/MK70F12_rtc.h" + #include "device/MK70F12/MK70F12_sdhc.h" + #include "device/MK70F12/MK70F12_sim.h" + #include "device/MK70F12/MK70F12_smc.h" + #include "device/MK70F12/MK70F12_spi.h" + #include "device/MK70F12/MK70F12_tsi.h" + #include "device/MK70F12/MK70F12_uart.h" + #include "device/MK70F12/MK70F12_usb.h" + #include "device/MK70F12/MK70F12_usbdcd.h" + #include "device/MK70F12/MK70F12_usbhs.h" + #include "device/MK70F12/MK70F12_vref.h" + #include "device/MK70F12/MK70F12_wdog.h" + + /* CMSIS-style register definitions*/ + #include "device/MK70F12/MK70F12.h" + +#elif (defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || \ + defined(CPU_MK70FX512VMF15) || defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15)) + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MK70F15/MK70F15_adc.h" + #include "device/MK70F15/MK70F15_aips.h" + #include "device/MK70F15/MK70F15_axbs.h" + #include "device/MK70F15/MK70F15_can.h" + #include "device/MK70F15/MK70F15_cau.h" + #include "device/MK70F15/MK70F15_cmp.h" + #include "device/MK70F15/MK70F15_cmt.h" + #include "device/MK70F15/MK70F15_crc.h" + #include "device/MK70F15/MK70F15_dac.h" + #include "device/MK70F15/MK70F15_ddr.h" + #include "device/MK70F15/MK70F15_dma.h" + #include "device/MK70F15/MK70F15_dmamux.h" + #include "device/MK70F15/MK70F15_enet.h" + #include "device/MK70F15/MK70F15_ewm.h" + #include "device/MK70F15/MK70F15_fb.h" + #include "device/MK70F15/MK70F15_fmc.h" + #include "device/MK70F15/MK70F15_ftfe.h" + #include "device/MK70F15/MK70F15_ftm.h" + #include "device/MK70F15/MK70F15_gpio.h" + #include "device/MK70F15/MK70F15_i2c.h" + #include "device/MK70F15/MK70F15_i2s.h" + #include "device/MK70F15/MK70F15_lcdc.h" + #include "device/MK70F15/MK70F15_llwu.h" + #include "device/MK70F15/MK70F15_lmem.h" + #include "device/MK70F15/MK70F15_lptmr.h" + #include "device/MK70F15/MK70F15_mcg.h" + #include "device/MK70F15/MK70F15_mcm.h" + #include "device/MK70F15/MK70F15_mpu.h" + #include "device/MK70F15/MK70F15_nfc.h" + #include "device/MK70F15/MK70F15_nv.h" + #include "device/MK70F15/MK70F15_osc.h" + #include "device/MK70F15/MK70F15_pdb.h" + #include "device/MK70F15/MK70F15_pit.h" + #include "device/MK70F15/MK70F15_pmc.h" + #include "device/MK70F15/MK70F15_port.h" + #include "device/MK70F15/MK70F15_rcm.h" + #include "device/MK70F15/MK70F15_rfsys.h" + #include "device/MK70F15/MK70F15_rfvbat.h" + #include "device/MK70F15/MK70F15_rng.h" + #include "device/MK70F15/MK70F15_rtc.h" + #include "device/MK70F15/MK70F15_sdhc.h" + #include "device/MK70F15/MK70F15_sim.h" + #include "device/MK70F15/MK70F15_smc.h" + #include "device/MK70F15/MK70F15_spi.h" + #include "device/MK70F15/MK70F15_tsi.h" + #include "device/MK70F15/MK70F15_uart.h" + #include "device/MK70F15/MK70F15_usb.h" + #include "device/MK70F15/MK70F15_usbdcd.h" + #include "device/MK70F15/MK70F15_usbhs.h" + #include "device/MK70F15/MK70F15_vref.h" + #include "device/MK70F15/MK70F15_wdog.h" + + /* CMSIS-style register definitions*/ + #include "device/MK70F15/MK70F15.h" + +#elif (defined(CPU_MK70FN1M0VMJ12WS) || defined(CPU_MK70FX512VMJ12WS) || defined(CPU_MK70FN1M0VMJ15WS) || \ + defined(CPU_MK70FX512VMJ15WS)) + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MK70F12WS/MK70F12WS_adc.h" + #include "device/MK70F12WS/MK70F12WS_aips.h" + #include "device/MK70F12WS/MK70F12WS_axbs.h" + #include "device/MK70F12WS/MK70F12WS_can.h" + #include "device/MK70F12WS/MK70F12WS_cau.h" + #include "device/MK70F12WS/MK70F12WS_cmp.h" + #include "device/MK70F12WS/MK70F12WS_cmt.h" + #include "device/MK70F12WS/MK70F12WS_crc.h" + #include "device/MK70F12WS/MK70F12WS_dac.h" + #include "device/MK70F12WS/MK70F12WS_ddr.h" + #include "device/MK70F12WS/MK70F12WS_dma.h" + #include "device/MK70F12WS/MK70F12WS_dmamux.h" + #include "device/MK70F12WS/MK70F12WS_dry.h" + #include "device/MK70F12WS/MK70F12WS_enet.h" + #include "device/MK70F12WS/MK70F12WS_ewm.h" + #include "device/MK70F12WS/MK70F12WS_fb.h" + #include "device/MK70F12WS/MK70F12WS_fmc.h" + #include "device/MK70F12WS/MK70F12WS_ftfe.h" + #include "device/MK70F12WS/MK70F12WS_ftm.h" + #include "device/MK70F12WS/MK70F12WS_gpio.h" + #include "device/MK70F12WS/MK70F12WS_i2c.h" + #include "device/MK70F12WS/MK70F12WS_i2s.h" + #include "device/MK70F12WS/MK70F12WS_lcdc.h" + #include "device/MK70F12WS/MK70F12WS_llwu.h" + #include "device/MK70F12WS/MK70F12WS_lmem.h" + #include "device/MK70F12WS/MK70F12WS_lptmr.h" + #include "device/MK70F12WS/MK70F12WS_mcg.h" + #include "device/MK70F12WS/MK70F12WS_mcm.h" + #include "device/MK70F12WS/MK70F12WS_mpu.h" + #include "device/MK70F12WS/MK70F12WS_nfc.h" + #include "device/MK70F12WS/MK70F12WS_nv.h" + #include "device/MK70F12WS/MK70F12WS_osc.h" + #include "device/MK70F12WS/MK70F12WS_pdb.h" + #include "device/MK70F12WS/MK70F12WS_pit.h" + #include "device/MK70F12WS/MK70F12WS_pmc.h" + #include "device/MK70F12WS/MK70F12WS_port.h" + #include "device/MK70F12WS/MK70F12WS_rcm.h" + #include "device/MK70F12WS/MK70F12WS_rfsys.h" + #include "device/MK70F12WS/MK70F12WS_rfvbat.h" + #include "device/MK70F12WS/MK70F12WS_rng.h" + #include "device/MK70F12WS/MK70F12WS_rtc.h" + #include "device/MK70F12WS/MK70F12WS_sdhc.h" + #include "device/MK70F12WS/MK70F12WS_sim.h" + #include "device/MK70F12WS/MK70F12WS_smc.h" + #include "device/MK70F12WS/MK70F12WS_spi.h" + #include "device/MK70F12WS/MK70F12WS_tsi.h" + #include "device/MK70F12WS/MK70F12WS_uart.h" + #include "device/MK70F12WS/MK70F12WS_usb.h" + #include "device/MK70F12WS/MK70F12WS_usbdcd.h" + #include "device/MK70F12WS/MK70F12WS_usbhs.h" + #include "device/MK70F12WS/MK70F12WS_vref.h" + #include "device/MK70F12WS/MK70F12WS_wdog.h" + + /* CMSIS-style register definitions*/ + #include "device/MK70F12WS/MK70F12WS.h" + +#elif (defined(CPU_MK70FN1M0VMJ12WS) || defined(CPU_MK70FX512VMJ12WS) || defined(CPU_MK70FN1M0VMJ15WS) || \ + defined(CPU_MK70FX512VMJ15WS)) + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MK70F15WS/MK70F15WS_adc.h" + #include "device/MK70F15WS/MK70F15WS_aips.h" + #include "device/MK70F15WS/MK70F15WS_axbs.h" + #include "device/MK70F15WS/MK70F15WS_can.h" + #include "device/MK70F15WS/MK70F15WS_cau.h" + #include "device/MK70F15WS/MK70F15WS_cmp.h" + #include "device/MK70F15WS/MK70F15WS_cmt.h" + #include "device/MK70F15WS/MK70F15WS_crc.h" + #include "device/MK70F15WS/MK70F15WS_dac.h" + #include "device/MK70F15WS/MK70F15WS_ddr.h" + #include "device/MK70F15WS/MK70F15WS_dma.h" + #include "device/MK70F15WS/MK70F15WS_dmamux.h" + #include "device/MK70F15WS/MK70F15WS_dry.h" + #include "device/MK70F15WS/MK70F15WS_enet.h" + #include "device/MK70F15WS/MK70F15WS_ewm.h" + #include "device/MK70F15WS/MK70F15WS_fb.h" + #include "device/MK70F15WS/MK70F15WS_fmc.h" + #include "device/MK70F15WS/MK70F15WS_ftfe.h" + #include "device/MK70F15WS/MK70F15WS_ftm.h" + #include "device/MK70F15WS/MK70F15WS_gpio.h" + #include "device/MK70F15WS/MK70F15WS_i2c.h" + #include "device/MK70F15WS/MK70F15WS_i2s.h" + #include "device/MK70F15WS/MK70F15WS_lcdc.h" + #include "device/MK70F15WS/MK70F15WS_llwu.h" + #include "device/MK70F15WS/MK70F15WS_lmem.h" + #include "device/MK70F15WS/MK70F15WS_lptmr.h" + #include "device/MK70F15WS/MK70F15WS_mcg.h" + #include "device/MK70F15WS/MK70F15WS_mcm.h" + #include "device/MK70F15WS/MK70F15WS_mpu.h" + #include "device/MK70F15WS/MK70F15WS_nfc.h" + #include "device/MK70F15WS/MK70F15WS_nv.h" + #include "device/MK70F15WS/MK70F15WS_osc.h" + #include "device/MK70F15WS/MK70F15WS_pdb.h" + #include "device/MK70F15WS/MK70F15WS_pit.h" + #include "device/MK70F15WS/MK70F15WS_pmc.h" + #include "device/MK70F15WS/MK70F15WS_port.h" + #include "device/MK70F15WS/MK70F15WS_rcm.h" + #include "device/MK70F15WS/MK70F15WS_rfsys.h" + #include "device/MK70F15WS/MK70F15WS_rfvbat.h" + #include "device/MK70F15WS/MK70F15WS_rng.h" + #include "device/MK70F15WS/MK70F15WS_rtc.h" + #include "device/MK70F15WS/MK70F15WS_sdhc.h" + #include "device/MK70F15WS/MK70F15WS_sim.h" + #include "device/MK70F15WS/MK70F15WS_smc.h" + #include "device/MK70F15WS/MK70F15WS_spi.h" + #include "device/MK70F15WS/MK70F15WS_tsi.h" + #include "device/MK70F15WS/MK70F15WS_uart.h" + #include "device/MK70F15WS/MK70F15WS_usb.h" + #include "device/MK70F15WS/MK70F15WS_usbdcd.h" + #include "device/MK70F15WS/MK70F15WS_usbhs.h" + #include "device/MK70F15WS/MK70F15WS_vref.h" + #include "device/MK70F15WS/MK70F15WS_wdog.h" + + /* CMSIS-style register definitions*/ + #include "device/MK70F15WS/MK70F15WS.h" + +#elif (defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || \ + defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || \ + defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4)) + #define KL25Z4_SERIES + /* Extension register headers. (These will eventually be merged into the CMSIS-style header.)*/ + #include "device/MKL25Z4/MKL25Z4_adc.h" + #include "device/MKL25Z4/MKL25Z4_cmp.h" + #include "device/MKL25Z4/MKL25Z4_dac.h" + #include "device/MKL25Z4/MKL25Z4_dma.h" + #include "device/MKL25Z4/MKL25Z4_dmamux.h" + #include "device/MKL25Z4/MKL25Z4_fgpio.h" + #include "device/MKL25Z4/MKL25Z4_ftfa.h" + #include "device/MKL25Z4/MKL25Z4_gpio.h" + #include "device/MKL25Z4/MKL25Z4_i2c.h" + #include "device/MKL25Z4/MKL25Z4_llwu.h" + #include "device/MKL25Z4/MKL25Z4_lptmr.h" + #include "device/MKL25Z4/MKL25Z4_mcg.h" + #include "device/MKL25Z4/MKL25Z4_mcm.h" + #include "device/MKL25Z4/MKL25Z4_mtb.h" + #include "device/MKL25Z4/MKL25Z4_mtbdwt.h" + #include "device/MKL25Z4/MKL25Z4_nv.h" + #include "device/MKL25Z4/MKL25Z4_osc.h" + #include "device/MKL25Z4/MKL25Z4_pit.h" + #include "device/MKL25Z4/MKL25Z4_pmc.h" + #include "device/MKL25Z4/MKL25Z4_port.h" + #include "device/MKL25Z4/MKL25Z4_rcm.h" + #include "device/MKL25Z4/MKL25Z4_rom.h" + #include "device/MKL25Z4/MKL25Z4_rtc.h" + #include "device/MKL25Z4/MKL25Z4_sim.h" + #include "device/MKL25Z4/MKL25Z4_smc.h" + #include "device/MKL25Z4/MKL25Z4_spi.h" + #include "device/MKL25Z4/MKL25Z4_tpm.h" + #include "device/MKL25Z4/MKL25Z4_tsi.h" + #include "device/MKL25Z4/MKL25Z4_uart.h" + #include "device/MKL25Z4/MKL25Z4_uart0.h" + #include "device/MKL25Z4/MKL25Z4_usb.h" + + /* CMSIS-style register definitions*/ + #include "device/MKL25Z4/MKL25Z4.h" + +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_DEVICE_REGISTERS_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,47 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#include "fsl_gpio_hal.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pinName; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + uint32_t port = obj->pinName >> GPIO_PORT_SHIFT; + uint32_t pin = obj->pinName & 0xFF; + + gpio_hal_write_pin_output(port, pin, value); +} + +static inline int gpio_read(gpio_t *obj) { + uint32_t port = obj->pinName >> GPIO_PORT_SHIFT; + uint32_t pin = obj->pinName & 0xFF; + + return (int)gpio_hal_read_pin_input(port, pin); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,69 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t port; + uint32_t pin; + uint32_t ch; +}; + +struct port_s { + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + PWMName pwm_name; +}; + +struct serial_s { + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct i2c_s { + uint32_t instance; +}; + +struct spi_s { + uint32_t instance; +}; + +struct dac_s { + DACName dac; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/drivers/clock/fsl_clock_configs.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_CLOCK_CONFIGS_H__) +#define __FSL_CLOCK_CONFIGS_H__ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @addtogroup clock_manager*/ +/*! @{*/ + +#if defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FN1M0VMJ15) + +#define CLOCK_SETUP 1 + +/*! @brief Predefined clock setups for K70*/ + +/* + 0 ... Multipurpose Clock Generator (MCG) in FLL Engaged Internal (FEI) mode + Reference clock source for MCG module is the slow internal clock source 32.768kHz + Core clock = 41.94MHz, BusClock = 41.94MHz + 1 ... Multipurpose Clock Generator (MCG) in PLL Engaged External (PEE) mode + Reference clock source for MCG module is an external reference clock source 50MHz + Core clock = 120MHz, BusClock = 60MHz + 2 ... Multipurpose Clock Generator (MCG) in Bypassed Low Power External (BLPE) mode + Core clock/Bus clock derived directly from an external reference clock source 50MHz with no multiplication + Core clock = 50MHz, BusClock = 50MHz +*/ + + +/*! @brief Define clock source values for K70*/ + +#if (CLOCK_SETUP == 0) + #define CPU_XTAL0_CLK_HZ 50000000u /* external crystal or osc clock frequency in Hz connected to System Oscillator 0*/ + #define CPU_XTAL1_CLK_HZ 8000000u /* external crystal or osc clock frequency in Hz connected to System Oscillator 1*/ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz*/ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz*/ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz*/ + #define DEFAULT_SYSTEM_CLOCK 41943040u /* Default System clock value*/ +#elif (CLOCK_SETUP == 1) + #define CPU_XTAL0_CLK_HZ 50000000u /* external crystal or osc clock frequency in Hz connected to System Oscillator 0*/ + #define CPU_XTAL1_CLK_HZ 8000000u /* external crystal or osc clock frequency in Hz connected to System Oscillator 1*/ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz*/ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz*/ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz*/ + #define DEFAULT_SYSTEM_CLOCK 120000000u /* Default System clock value*/ +#elif (CLOCK_SETUP == 2) + #define CPU_XTAL0_CLK_HZ 50000000u /* external crystal or osc clock frequency in Hz connected to System Oscillator 0*/ + #define CPU_XTAL1_CLK_HZ 8000000u /* external crystal or osc clock frequency in Hz connected to System Oscillator 1*/ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz*/ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz*/ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz*/ + #define DEFAULT_SYSTEM_CLOCK 50000000u /* Default System clock value*/ +#endif /* (CLOCK_SETUP == 2)*/ + +#elif defined(CPU_MKL25Z128VLK4) + +#define CLOCK_SETUP 1 + +/*! @brief Predefined clock setups for KL25*/ + +/* + 0 ... Multipurpose Clock Generator (MCG) in FLL Engaged Internal (FEI) mode + Reference clock source for MCG module is the slow internal clock source 32.768kHz + Core clock = 41.94MHz, BusClock = 13.98MHz + 1 ... Multipurpose Clock Generator (MCG) in PLL Engaged External (PEE) mode + Reference clock source for MCG module is an external crystal 8MHz + Core clock = 48MHz, BusClock = 24MHz + 2 ... Multipurpose Clock Generator (MCG) in Bypassed Low Power External (BLPE) mode + Core clock/Bus clock derived directly from an external crystal 8MHz with no multiplication + Core clock = 8MHz, BusClock = 8MHz +*/ + + +/*! @brief Define clock source values for KL25*/ + +#if (CLOCK_SETUP == 0) + #define CPU_XTAL_CLK_HZ 8000000u /* external crystal or oscillator clock frequency in Hz*/ + #define CPU_INT_SLOW_CLK_HZ 32768u /* slow internal oscillator clock frequency in Hz*/ + #define CPU_INT_FAST_CLK_HZ 4000000u /* fast internal oscillator clock frequency in Hz*/ + #define DEFAULT_SYSTEM_CLOCK 41943040u /* Default System clock value*/ +#elif (CLOCK_SETUP == 1) + #define CPU_XTAL_CLK_HZ 8000000u /* external crystal or oscillator clock frequency in Hz*/ + #define CPU_INT_SLOW_CLK_HZ 32768u /* slow internal oscillator clock frequency in Hz*/ + #define CPU_INT_FAST_CLK_HZ 4000000u /* fast internal oscillator clock frequency in Hz*/ + #define DEFAULT_SYSTEM_CLOCK 48000000u /* Default System clock value*/ +#elif (CLOCK_SETUP == 2) + #define CPU_XTAL_CLK_HZ 8000000u /* external crystal or oscillator clock frequency in Hz*/ + #define CPU_INT_SLOW_CLK_HZ 32768u /* slow internal oscillator clock frequency in Hz*/ + #define CPU_INT_FAST_CLK_HZ 4000000u /* fast internal oscillator clock frequency in Hz*/ + #define DEFAULT_SYSTEM_CLOCK 8000000u /* Default System clock value*/ +#endif /*(CLOCK_SETUP == 2)*/ + +#elif defined(CPU_MK64FN1M0VMD12) + +#define DISABLE_WDOG 1 + +#define CLOCK_SETUP 1 +/* Predefined clock setups + 0 ... Multipurpose Clock Generator (MCG) in FLL Engaged Internal (FEI) mode + Reference clock source for MCG module is the slow internal clock source 32.768kHz + Core clock = 20.97MHz, BusClock = 20.97MHz + 1 ... Multipurpose Clock Generator (MCG) in PLL Engaged External (PEE) mode + Reference clock source for MCG module is an external clock source 50MHz + USB clock divider is set for USB to receive 48MHz input clock. + Core clock = 120MHz, BusClock = 60MHz + 3 ... Multipurpose Clock Generator (MCG) in Bypassed Low Power Internal (BLPI) mode + Core clock/Bus clock derived directly from an fast internal clock 4MHz with no multiplication + The clock settings is ready for Very Low Power Run mode. + Core clock = 4MHz, BusClock = 4MHz +*/ + +/*---------------------------------------------------------------------------- + Define clock source values + *----------------------------------------------------------------------------*/ +#if (CLOCK_SETUP == 0) + #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 20485760u /* Default System clock value */ +#elif (CLOCK_SETUP == 1) + #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 120000000u /* Default System clock value */ +#elif (CLOCK_SETUP == 3) + #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 4000000u /* Default System clock value */ +#endif /* (CLOCK_SETUP == 3) */ + +#elif defined(CPU_MK22FN512VDC12) + +#define DISABLE_WDOG 1 + +#define CLOCK_SETUP 1 +/* Predefined clock setups + 0 ... Multipurpose Clock Generator (MCG) in FLL Engaged Internal (FEI) mode + Reference clock source for MCG module is the slow internal clock source 32.768kHz + Core clock = 41.94MHz, BusClock = 41.94MHz + 1 ... Multipurpose Clock Generator (MCG) in PLL Engaged External (PEE) mode + Reference clock source for MCG module is an external crystal 8MHz + Core clock = 100MHz, BusClock = 50MHz + 2 ... Multipurpose Clock Generator (MCG) in Bypassed Low Power External (BLPE) mode + Core clock/Bus clock derived directly from an external crystal 8MHz with no multiplication + Core clock = 8MHz, BusClock = 8MHz + 3 ... Multipurpose Clock Generator (MCG) in PLL Engaged External (PEE) mode + Reference clock source for MCG module is an external crystal 8MHz + Core clock = 120MHz, BusClock = 60MHz +*/ + +/*---------------------------------------------------------------------------- + Define clock source values + *----------------------------------------------------------------------------*/ +#if (CLOCK_SETUP == 0) + #define CPU_XTAL_CLK_HZ 8000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 41943040u /* Default System clock value */ +#elif (CLOCK_SETUP == 1) + #define CPU_XTAL_CLK_HZ 8000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 100000000u /* Default System clock value */ +#elif (CLOCK_SETUP == 2) + #define CPU_XTAL_CLK_HZ 8000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 8000000u /* Default System clock value */ +#elif (CLOCK_SETUP == 3) + #define CPU_XTAL_CLK_HZ 8000000u /* Value of the external crystal or oscillator clock frequency in Hz */ + #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */ + #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */ + #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */ + #define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */ + #define DEFAULT_SYSTEM_CLOCK 120000000u /* Default System clock value */ +#endif /* (CLOCK_SETUP == 3) */ + +#endif /* CPU types*/ + +/*! @}*/ + +#endif /* __FSL_CLOCK_CONFIGS_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/drivers/clock/fsl_clock_manager.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,295 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !defined(__FSL_CLOCK_MANAGER_H__) +#define __FSL_CLOCK_MANAGER_H__ + +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> + +/*! @addtogroup clock_manager*/ +/*! @{*/ + +/*! @file*/ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief Clock names */ +typedef enum _clock_names { + + /* default system clocks*/ + kCoreClock, /**/ + kSystemClock, /**/ + kPlatformClock, /**/ + kBusClock, /**/ + kFlexBusClock, /**/ + kFlashClock, /**/ + + /* other internal clocks used by peripherals*/ + + /* osc clock*/ + kOsc32kClock, + kOsc0ErClock, + kOsc1ErClock, + + /* irc 48Mhz clock */ + kIrc48mClock, + + /* rtc clock*/ + kRtc32kClock, + kRtc1hzClock, + + /* lpo clcok*/ + kLpoClock, + + /* mcg clocks*/ + kMcgFllClock, + kMcgPll0Clock, + kMcgPll1Clock, + kMcgOutClock, + kMcgIrClock, + + /* constant clocks (provided in other header files?)*/ + kSDHC0_CLKIN, + kENET_1588_CLKIN, + kEXTAL_Clock, + kEXTAL1_Clock, + kUSB_CLKIN, + + /* reserved value*/ + kReserved, + + /* clock name max */ + kClockNameCount + +} clock_names_t; + +/*! @brief Clock gate module names */ +typedef enum _clock_gate_module_names { + + /* System modules*/ + kClockModuleDMA, /**/ + kClockModuleDMAMUX, /* instance 0, 1*/ + kClockModulePORT, /* instance 0 - 5 (A - F)*/ + kClockModuleMPU, /**/ + kClockModuleLLWU, /**/ + kClockModuleEWM, /**/ + + /* Clocks*/ + kClockModuleOSC1, /**/ + + /* Memory and memory interfaces*/ + kClockModuleFTF, /* Flash memory control clock*/ + kClockModuleNFC, /* NAND flash control clock*/ + kClockModuleFLEXBUS, /**/ + kClockModuleDDR, /**/ + + /* Security*/ + kClockModuleCRC, /**/ + kClockModuleRNGA, /**/ + kClockModuleREGFILE, /**/ + kClockModuleDRYICESECREG, /**/ + kClockModuleDRYICE, /**/ + + /* Analog*/ + kClockModuleADC, /* instance 0 - 3*/ + kClockModuleCMP, /* */ + kClockModuleDAC, /* instance 0, 1*/ + kClockModuleVREF, /* */ + kClockModuleSAI, /* instance 0, 1*/ + + /* Timers*/ + kClockModuleTPM, /* TPM timers 0 - 2*/ + kClockModulePDB, /* */ + kClockModuleFTM, /* instance 0 - 3*/ + kClockModulePIT, /**/ + kClockModuleLPTIMER, /**/ + kClockModuleCMT, /**/ + kClockModuleRTC, /**/ + + /* Communication Interfaces*/ + kClockModuleENET, /**/ + kClockModuleUSBHS, /**/ + kClockModuleUSBFS, /**/ + kClockModuleUSBDCD, /**/ + kClockModuleFLEXCAN, /* instance 0, 1*/ + kClockModuleSPI, /* instance 0 - 2*/ + kClockModuleI2C, /* instance 0, 1*/ + kClockModuleUART, /* instance 0 - 5*/ + kClockModuleESDHC, /**/ + kClockModuleLPUART, /**/ + + /* Human-machine Interfaces*/ + kClockModuleTSI, /**/ + kClockModuleLCDC, /**/ + kClockModuleMax +} clock_gate_module_names_t; + +/*! @brief Clock source and SEL names */ +typedef enum _clock_source_names { + kClockNfcSrc, /* NFCSRC*/ + kClockEsdhcSrc, /* ESDHCSRC K70*/ + kClockSdhcSrc, /* SDHCSRC K64*/ + kClockLcdcSrc, /* LCDCSRC*/ + kClockTimeSrc, /* TIMESRC*/ + kClockRmiiSrc, /* RMIISRC*/ + kClockUsbfSrc, /* USBFSRC K70*/ + kClockUsbSrc, /* USBSRC K64, KL25, KV31, and K22*/ + kClockUsbhSrc, /* USBHSRC*/ + kClockUart0Src, /* UART0SRC*/ + kClockTpmSrc, /* TPMSRC*/ + kClockOsc32kSel, /* OSC32KSEL*/ + kClockUsbfSel, /* USBF_CLKSEL*/ + kClockPllfllSel, /* PLLFLLSEL*/ + kClockNfcSel, /* NFC_CLKSEL*/ + kClockLcdcSel, /* LCDC_CLKSEL*/ + kClockTraceSel, /* TRACE_CLKSEL*/ + kClockClkoutSel, /* CLKOUTSEL*/ + kClockRtcClkoutSel, /* RTCCLKOUTSEL */ + kClockSourceMax +} clock_source_names_t; + +/*! + * @brief Error code definition for the clock manager APIs + */ +typedef enum _clock_manager_error_code { + kClockManagerSuccess, /*!< success */ + kClockManagerNoSuchClockName, /*!< cannot find the clock name */ + kClockManagerNoSuchClockModule, /*!< cannot find the clock module name */ + kClockManagerNoSuchClockSource, /*!< cannot find the clock source name */ + kClockManagerNoSuchDivider, /*!< cannot find the divider name */ + kClockManagerUnknown /*!< unknown error*/ +} clock_manager_error_code_t; + + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif /* __cplusplus*/ + +/*! @name Clock Gating*/ +/*@{*/ + +/*! + * @brief Enables or disables the clock for a specific clock module. + * + * This function enables/disables the clock for a specified clock module and + * instance. See the clock_gate_module_names_t for supported clock module names + * for a specific function and see the Reference Manual for supported clock module + * name for a specific chip family. Most module drivers call this function + * to gate(disable)/ungate(enable) the clock for a module. However, the application + * can also call this function as needed. Disabling the clock causes the module + * to stop working. See the Reference Manual to properly enable + * and disable the clock for a device module. + * + * @param moduleName Gate control module name defined in clock_gate_module_names_t + * @param instance Instance of the module + * @param enable Enable or disable the clock for the module + * - true: Enable + * - false: Disable + * @return status Error code defined in clock_manager_error_code_t + */ +clock_manager_error_code_t clock_manager_set_gate(clock_gate_module_names_t moduleName, + uint8_t instance, bool enable); + +/*! + * @brief Gets the current clock gate status for a specific clock module. + * + * This function returns the current clock gate status for a specific clock + * module. See clock_gate_module_names_t for supported clock module name. + * + * @param moduleName Gate control module name defined in clock_gate_module_names_t + * @param instance Instance of the module + * @param isEnabled Status of the module clock + * - true: Enabled + * - false: Disabled + * @return status Error code defined in clock_manager_error_code_t + */ +clock_manager_error_code_t clock_manager_get_gate(clock_gate_module_names_t moduleName, + uint8_t instance, bool *isEnabled); + +/*@}*/ + +/*! @name Clock Frequencies*/ +/*@{*/ + +/*! + * @brief Gets the clock frequency for a specific clock name. + * + * This function checks the current clock configurations and then calculates + * the clock frequency for a specific clock name defined in clock_names_t. + * The MCG must be properly configured before using this function. See + * the Reference Manual for supported clock names for different chip families. + * The returned value is in Hertz. If it cannot find the clock name + * or the name is not supported for a specific chip family, it returns an + * error. + * + * @param clockName Clock names defined in clock_names_t + * @param frequency Returned clock frequency value in Hertz + * @return status Error code defined in clock_manager_error_code_t + */ +clock_manager_error_code_t clock_manager_get_frequency(clock_names_t clockName, + uint32_t *frequency); + +/*! + * @brief Gets the clock frequency for a specified clock source. + * + * This function gets the specified clock source setting and converts it + * into a clock name. It calls the internal function to get the value + * for that clock name. The returned value is in Hertz. + * If it cannot find the clock source or the source is not supported for the + * specific chip family, it returns an error. + * + * @param clockSource Clock source names defined in clock_source_names_t + * @param frequency Returned clock frequency value in Hertz + * @return status Error code defined in clock_manager_error_code_t + */ +clock_manager_error_code_t clock_manager_get_frequency_by_source( + clock_source_names_t clockSource, uint32_t *frequency); + +/*@}*/ + +#if defined(__cplusplus) +} +#endif /* __cplusplus*/ + +/*! @}*/ + +#endif /* __FSL_CLOCK_MANAGER_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/drivers/clock/src/fsl_clock_manager_private.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,234 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_CLOCK_MANAGER_PRIVATE_H__) +#define __FSL_CLOCK_MANAGER_PRIVATE_H__ + +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> + +/*! @addtogroup clock_manager*/ +/*! @{*/ + +/*! @file*/ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief Clock manager clock names mapping into the SIM clock name*/ +sim_clock_names_t kClockNameSimMap[kClockNameCount] = { + /* default clocks*/ + kSimCoreClock, /**/ + kSimSystemClock, /**/ + kSimPlatformClock, /**/ + kSimBusClock, /**/ + kSimFlexBusClock, /**/ + kSimFlashClock, /**/ + + /* other internal clocks used by peripherals*/ + /* osc clock*/ + kSimOsc32kClock, + kSimOsc0ErClock, + kSimOsc1ErClock, + + /* irc 48Mhz clock */ + kSimIrc48mClock, + + /* rtc clock*/ + kSimRtc32kClock, + kSimRtc1hzClock, + + /* lpo clcok*/ + kSimLpoClock, + + /* mcg clocks*/ + kSimMcgFllClock, + kSimMcgPll0Clock, + kSimMcgPll1Clock, + kSimMcgOutClock, + kSimMcgIrClock, + + /* constant clocks (provided in other header files?)*/ + kSimSDHC0_CLKIN, + kSimENET_1588_CLKIN, + kSimEXTAL_Clock, + kSimEXTAL1_Clock, + kSimUSB_CLKIN, + + /* reserved value*/ + kSimReserved +}; + +/*! @brief Clock manager clock source names mapping into the SIM clock source name*/ +sim_clock_source_names_t kClockSourceNameSimMap[kClockSourceMax] = { + kSimClockNfcSrc, /* NFCSRC*/ + kSimClockEsdhcSrc, /* ESDHCSRC K70*/ + kSimClockSdhcSrc, /* SDHCSRC K64*/ + kSimClockLcdcSrc, /* LCDCSRC*/ + kSimClockTimeSrc, /* TIMESRC*/ + kSimClockRmiiSrc, /* RMIISRC*/ + kSimClockUsbfSrc, /* USBFSRC K70*/ + kSimClockUsbSrc, /* USBSRC K64, KL25, KV31, and K22*/ + kSimClockUsbhSrc, /* USBHSRC*/ + kSimClockUart0Src, /* UART0SRC*/ + kSimClockTpmSrc, /* TPMSRC*/ + kSimClockOsc32kSel, /* OSC32KSEL*/ + kSimClockUsbfSel, /* USBF_CLKSEL*/ + kSimClockPllfllSel, /* PLLFLLSEL*/ + kSimClockNfcSel, /* NFC_CLKSEL*/ + kSimClockLcdcSel, /* LCDC_CLKSEL*/ + kSimClockTraceSel, /* TRACE_CLKSEL*/ + kSimClockClkoutSel, /* CLKOUTSEL*/ + kSimClockRtcClkoutSel /* RTCCLKOUTSEL */ +}; + +/*! @brief Clock manager clock module names mapping into the SIM clock module name*/ +sim_clock_gate_module_names_t kClockModuleNameSimMap[kClockModuleMax] = { + /* System modules*/ + kSimClockModuleDMA, /**/ + kSimClockModuleDMAMUX, /* instance 0, 1*/ + kSimClockModulePORT, /* instance 0 - 5 (A - F)*/ + kSimClockModuleMPU, /**/ + kSimClockModuleLLWU, /**/ + kSimClockModuleEWM, /**/ + + /* Clocks*/ + kSimClockModuleOSC1, /**/ + + /* Memory and memory interfaces*/ + kSimClockModuleFTF, /* Flash memory control clock*/ + kSimClockModuleNFC, /* NAND flash control clock*/ + kSimClockModuleFLEXBUS, /**/ + kSimClockModuleDDR, /**/ + + /* Security*/ + kSimClockModuleCRC, /**/ + kSimClockModuleRNGA, /**/ + kSimClockModuleREGFILE, /**/ + kSimClockModuleDRYICESECREG, /**/ + kSimClockModuleDRYICE, /**/ + + /* Analog*/ + kSimClockModuleADC, /* instance 0 - 3*/ + kSimClockModuleCMP, /* */ + kSimClockModuleDAC, /* instance 0, 1*/ + kSimClockModuleVREF, /* */ + kSimClockModuleSAI, /* instance 0, 1*/ + + /* Timers*/ + kSimClockModuleTPM, /* TPM timers 0 - 2*/ + kSimClockModulePDB, /* */ + kSimClockModuleFTM, /* instance 0 - 3*/ + kSimClockModulePIT, /**/ + kSimClockModuleLPTIMER, /**/ + kSimClockModuleCMT, /**/ + kSimClockModuleRTC, /**/ + + /* Communication Interfaces*/ + kSimClockModuleENET, /**/ + kSimClockModuleUSBHS, /**/ + kSimClockModuleUSBFS, /**/ + kSimClockModuleUSBDCD, /**/ + kSimClockModuleFLEXCAN, /* instance 0, 1*/ + kSimClockModuleSPI, /* instance 0 - 2*/ + kSimClockModuleI2C, /* instance 0, 1*/ + kSimClockModuleUART, /* instance 0 - 5*/ + kSimClockModuleESDHC, /**/ + kSimClockModuleLPUART, /**/ + + /* Human-machine Interfaces*/ + kSimClockModuleTSI, /**/ + kSimClockModuleLCDC /**/ +}; + +extern const sim_clock_source_value_t *kSimClockSourceValueTable[]; + +/******************************************************************************* + * API + ******************************************************************************/ + +/*! @name System out clock access API*/ +/*@{*/ + +/*! + * @brief Gets the current out clock. + * + * @param none + * + * @return frequency Out clock frequency for the clock system + */ +extern uint32_t clock_hal_get_outclk(void); + +/*! + * @brief Gets the current FLL clock. + * + * @param none + * + * @return frequency FLL clock frequency for the clock system + */ +extern uint32_t clock_hal_get_fllclk(void); + +/*! + * @brief Gets the current PLL0 clock. + * + * @param none + * + * @return frequency PLL0 clock frequency for the clock system + */ +extern uint32_t clock_hal_get_pll0clk(void); + +/*! + * @brief Gets the current PLL1 clock. + * + * @param none + * + * @return frequency PLL1 clock frequency for the clock system + */ +extern uint32_t clock_hal_get_pll1clk(void); + +/*! + * @brief Get the current IR (internal reference) clock. + * + * @param none + * + * @return frequency IR clock frequency for the clock system + */ +extern uint32_t clock_hal_get_irclk(void); + +/*@}*/ + +/*! @}*/ + +#endif /* __FSL_CLOCK_MANAGER_PRIVATE_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/adc/fsl_adc_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_ADC_FEATURES_H__) +#define __FSL_ADC_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || \ + defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || \ + defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) || \ + defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || \ + defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || defined(CPU_MK22FN512VLL12) || defined(CPU_MK24FN1M0VDC12) || \ + defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK64FN1M0VDC12) || \ + defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VMD12) || \ + defined(CPU_MK64FX512VMD12) || defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || \ + defined(CPU_MK65FX1M0VMI18) || defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || \ + defined(CPU_MK66FX1M0VMD18) || defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || \ + defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || defined(CPU_MKL25Z32VLH4) || \ + defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || \ + defined(CPU_MKL25Z128VLK4) || defined(CPU_MKL46Z128VLH4) || defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || \ + defined(CPU_MKL46Z256VLL4) || defined(CPU_MKL46Z128VMC4) || defined(CPU_MKL46Z256VMC4) || defined(CPU_MKV31F256VLH12) || \ + defined(CPU_MKV31F256VLL12) || defined(CPU_MKV31FN512VLH12) || defined(CPU_MKV31F512VLL12) + /* @brief Has Programmable Gain Amplifier (PGA) in ADC (register PGA).*/ + #define FSL_FEATURE_ADC_HAS_PGA (0) + /* @brief Has DMA support (bit SC2[DMAEN] or SC4[DMAEN]).*/ + #define FSL_FEATURE_ADC_HAS_DMA (1) + /* @brief Has differential mode (bitfield SC1x[DIFF]).*/ + #define FSL_FEATURE_ADC_HAS_DIFF_MODE (1) + /* @brief Has FIFO (bit SC4[AFDEP]).*/ + #define FSL_FEATURE_ADC_HAS_FIFO (0) + /* @brief FIFO size if available (bitfield SC4[AFDEP]).*/ + #define FSL_FEATURE_ADC_FIFO_SIZE (0) + /* @brief Has channel set a/b multiplexor (bitfield CFG2[MUXSEL]).*/ + #define FSL_FEATURE_ADC_HAS_MUX_SELECT (1) + /* @brief Has HW trigger masking (bitfield SC5[HTRGMASKE].*/ + #define FSL_FEATURE_ADC_HAS_HW_TRIGGER_MASK (0) + /* @brief Has calibration feature (bit SC3[CAL] and registers CLPx, CLMx).*/ + #define FSL_FEATURE_ADC_HAS_CALIBRATION (1) + /* @brief Has HW averaging (bit SC3[AVGE]).*/ + #define FSL_FEATURE_ADC_HAS_HW_AVERAGE (1) + /* @brief Has offset correction (register OFS).*/ + #define FSL_FEATURE_ADC_HAS_OFFSET_CORRECTION (1) + /* @brief Maximum ADC resolution.*/ + #define FSL_FEATURE_ADC_MAX_RESOLUTION (16) + /* @brief Number of SC1x and Rx register pairs (conversion control and result registers).*/ + #define FSL_FEATURE_ADC_CONVERSION_CONTROL_COUNT (2) +#elif defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MKL05Z8VFK4) || defined(CPU_MKL05Z16VFK4) || \ + defined(CPU_MKL05Z32VFK4) || defined(CPU_MKL05Z8VLC4) || defined(CPU_MKL05Z16VLC4) || defined(CPU_MKL05Z32VLC4) || \ + defined(CPU_MKL05Z8VFM4) || defined(CPU_MKL05Z16VFM4) || defined(CPU_MKL05Z32VFM4) || defined(CPU_MKL05Z16VLF4) || \ + defined(CPU_MKL05Z32VLF4) + /* @brief Has Programmable Gain Amplifier (PGA) in ADC (register PGA).*/ + #define FSL_FEATURE_ADC_HAS_PGA (0) + /* @brief Has DMA support (bit SC2[DMAEN] or SC4[DMAEN]).*/ + #define FSL_FEATURE_ADC_HAS_DMA (1) + /* @brief Has differential mode (bitfield SC1x[DIFF]).*/ + #define FSL_FEATURE_ADC_HAS_DIFF_MODE (0) + /* @brief Has FIFO (bit SC4[AFDEP]).*/ + #define FSL_FEATURE_ADC_HAS_FIFO (0) + /* @brief FIFO size if available (bitfield SC4[AFDEP]).*/ + #define FSL_FEATURE_ADC_FIFO_SIZE (0) + /* @brief Has channel set a/b multiplexor (bitfield CFG2[MUXSEL]).*/ + #define FSL_FEATURE_ADC_HAS_MUX_SELECT (1) + /* @brief Has HW trigger masking (bitfield SC5[HTRGMASKE].*/ + #define FSL_FEATURE_ADC_HAS_HW_TRIGGER_MASK (0) + /* @brief Has calibration feature (bit SC3[CAL] and registers CLPx, CLMx).*/ + #define FSL_FEATURE_ADC_HAS_CALIBRATION (1) + /* @brief Has HW averaging (bit SC3[AVGE]).*/ + #define FSL_FEATURE_ADC_HAS_HW_AVERAGE (1) + /* @brief Has offset correction (register OFS).*/ + #define FSL_FEATURE_ADC_HAS_OFFSET_CORRECTION (1) + /* @brief Maximum ADC resolution.*/ + #define FSL_FEATURE_ADC_MAX_RESOLUTION (16) + /* @brief Number of SC1x and Rx register pairs (conversion control and result registers).*/ + #define FSL_FEATURE_ADC_CONVERSION_CONTROL_COUNT (2) +#elif defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || \ + defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) + /* @brief Has Programmable Gain Amplifier (PGA) in ADC (register PGA).*/ + #define FSL_FEATURE_ADC_HAS_PGA (1) + /* @brief Has DMA support (bit SC2[DMAEN] or SC4[DMAEN]).*/ + #define FSL_FEATURE_ADC_HAS_DMA (1) + /* @brief Has differential mode (bitfield SC1x[DIFF]).*/ + #define FSL_FEATURE_ADC_HAS_DIFF_MODE (1) + /* @brief Has FIFO (bit SC4[AFDEP]).*/ + #define FSL_FEATURE_ADC_HAS_FIFO (0) + /* @brief FIFO size if available (bitfield SC4[AFDEP]).*/ + #define FSL_FEATURE_ADC_FIFO_SIZE (0) + /* @brief Has channel set a/b multiplexor (bitfield CFG2[MUXSEL]).*/ + #define FSL_FEATURE_ADC_HAS_MUX_SELECT (1) + /* @brief Has HW trigger masking (bitfield SC5[HTRGMASKE].*/ + #define FSL_FEATURE_ADC_HAS_HW_TRIGGER_MASK (0) + /* @brief Has calibration feature (bit SC3[CAL] and registers CLPx, CLMx).*/ + #define FSL_FEATURE_ADC_HAS_CALIBRATION (1) + /* @brief Has HW averaging (bit SC3[AVGE]).*/ + #define FSL_FEATURE_ADC_HAS_HW_AVERAGE (1) + /* @brief Has offset correction (register OFS).*/ + #define FSL_FEATURE_ADC_HAS_OFFSET_CORRECTION (1) + /* @brief Maximum ADC resolution.*/ + #define FSL_FEATURE_ADC_MAX_RESOLUTION (16) + /* @brief Number of SC1x and Rx register pairs (conversion control and result registers).*/ + #define FSL_FEATURE_ADC_CONVERSION_CONTROL_COUNT (2) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_ADC_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/adc/fsl_adc_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,857 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __FSL_ADC_HAL_H__ +#define __FSL_ADC_HAL_H__ + +#include <assert.h> +#include <stdint.h> +#include <stdbool.h> +#include "fsl_adc_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup adc_hal + * @{ + */ + +/*! @file*/ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief Defines the selection of the clock source that ADC module uses.*/ +typedef enum _adc_clock_source_mode +{ + kAdcClockSourceBusClk = 0U, /*!< Use bus clock.*/ + kAdcClockSourceBusClk2 = 1U, /*!< Use bus clock / 2.*/ + kAdcClockSourceAlternate = 2U, /*!< Use the optional external clock.*/ + kAdcClockSourceAsynchrounous = 3U, /*!< Use ADC's internal asynchronous clock. */ +} adc_clock_source_mode_t; + +/*! @brief Defines the selection of the clock divider.*/ +typedef enum _adc_clock_divider_mode +{ + kAdcClockDivider1 = 0U, /*!< Divide 1.*/ + kAdcClockDivider2 = 1U, /*!< Divide 2.*/ + kAdcClockDivider4 = 2U, /*!< Divide 4.*/ + kAdcClockDivider8 = 3U, /*!< Divide 8.*/ +} adc_clock_divider_mode_t; + +/*! @brief Defines the selection of the voltage source that ADC module uses.*/ +typedef enum _adc_reference_voltage_mode +{ + kAdcVoltageVref = 0U, /*!< Use V_REFH & V_REFL as ref source pin.*/ + kAdcVoltageValt = 1U, /*!< Use V_ALTH & V_REFL as ref source pin.*/ +} adc_reference_voltage_mode_t; + +/*! @brief Defines the selection of the long sample extra cycle configuration.*/ +typedef enum _adc_long_sample_mode +{ + kAdcLongSampleExtra20 = 0U, /*!< Extra 20 cycles, total 24 cycles, default.*/ + kAdcLongSampleExtra12 = 1U, /*!< Extra 12 cycles.*/ + kAdcLongSampleExtra6 = 2U, /*!< Extra 6 cycles.*/ + kAdcLongSampleExtra2 = 3U, /*!< Extra 2 cycles.*/ +} adc_long_sample_mode_t; + +/*! @brief Defines the selection of the sample resolution.*/ +typedef enum _adc_resolution_mode +{ + kAdcSingleDiff8or9 = 0U, /*!< 8-bits in single-end or 9-bits in differential.*/ + kAdcSingleDiff12or13 = 1U, /*!< 12-bits in single-end or 13-bits in differential.*/ + kAdcSingleDiff10or11 = 2U, /*!< 10-bits in single-end or 11-bits in differential.*/ + kAdcSingleDiff16 = 3U, /*!< 16-bits both in single-end and differential.*/ +} adc_resolution_mode_t; + +/*! @brief Defines the selection of the A/B group mux.*/ +typedef enum _adc_group_mux_mode +{ + kAdcChannelMuxA = 0U, /*!< Mux A group is active.*/ + kAdcChannelMuxB = 1U, /*!< Mux B group is active.*/ +} adc_group_mux_mode_t; + +/*! @brief Defines the selection of the time in a hard average mode.*/ +typedef enum _adc_hw_average_mode +{ + kAdcHwAverageCount4 = 0U, /*!< Average the result after accumulating 4 conversion.*/ + kAdcHwAverageCount8 = 1U, /*!< Average the result after accumulating 8 conversion.*/ + kAdcHwAverageCount16 = 2U, /*!< Average the result after accumulating 16 conversion.*/ + kAdcHwAverageCount32 = 3U, /*!< Average the result after accumulating 32 conversion.*/ +} adc_hw_average_mode_t; + +/*! @brief Defines the selection of the channel inside the ADC module.*/ +typedef enum _adc_channel_mode +{ + kAdcChannel0 = 0U, /*!< ADC channel 0.*/ + kAdcChannell = 1U, /*!< ADC channel 1.*/ + kAdcChannel2 = 2U, /*!< ADC channel 2.*/ + kAdcChannel3 = 3U, /*!< ADC channel 3.*/ + kAdcChannel4 = 4U, /*!< ADC channel 4.*/ + kAdcChannel5 = 5U, /*!< ADC channel 5.*/ + kAdcChannel6 = 6U, /*!< ADC channel 6.*/ + kAdcChannel7 = 7U, /*!< ADC channel 7.*/ + kAdcChannel8 = 8U, /*!< ADC channel 8.*/ + kAdcChannel9 = 9U, /*!< ADC channel 9.*/ + kAdcChannel10 = 10U, /*!< ADC channel 10.*/ + kAdcChannel11 = 11U, /*!< ADC channel 11.*/ + kAdcChannel12 = 12U, /*!< ADC channel 12.*/ + kAdcChannel13 = 13U, /*!< ADC channel 13.*/ + kAdcChannel14 = 14U, /*!< ADC channel 14.*/ + kAdcChannel15 = 15U, /*!< ADC channel 15.*/ + kAdcChannel16 = 16U, /*!< ADC channel 16.*/ + kAdcChannel17 = 17U, /*!< ADC channel 17.*/ + kAdcChannel18 = 18U, /*!< ADC channel 18.*/ + kAdcChannel19 = 19U, /*!< ADC channel 19.*/ + kAdcChannel20 = 20U, /*!< ADC channel 20.*/ + kAdcChannel21 = 21U, /*!< ADC channel 21.*/ + kAdcChannel22 = 22U, /*!< ADC channel 22.*/ + kAdcChannel23 = 23U, /*!< ADC channel 23.*/ + kAdcChannelTemperature = 26U, /*!< Internal temperature sensor.*/ + kAdcChannelBandgap = 27U, /*!< Internal band gap.*/ + kAdcChannelReferenceVoltageHigh = 29U, /*!< Internal ref voltage High.*/ + kAdcChannelReferenceVoltageLow = 30U, /*!< Internal ref voltage L.*/ + kAdcChannelDisable = 31U /*!< Disable the sample process.*/ +} adc_channel_mode_t; + +/*! @brief Defines the status returned from the ADC API.*/ +typedef enum _adc_status +{ + kStatus_ADC_Success = 0U, + kStatus_ADC_InvalidArgument = 1U,/*!< Parameter is not available for the current configuration.*/ + kStatus_ADC_Failed = 2U /*!< Function operation failed. */ +} adc_status_t; + +#if FSL_FEATURE_ADC_HAS_PGA +/*! @brief Defines the selection of the Programmable Gain Amplifier mode.*/ +typedef enum _adc_pga_mode +{ + kAdcPga1 = 0U, /*!< Gain is 1*/ + kAdcPga2 = 1U, /*!< Gain is 2*/ + kAdcPga4 = 2U, /*!< Gain is 4*/ + kAdcPga8 = 3U, /*!< Gain is 8*/ + kAdcPga16 = 4U, /*!< Gain is 16*/ + kAdcPga32 = 5U, /*!< Gain is 32*/ + kAdcPga64 = 6U /*!< Gain is 64*/ +} adc_pga_mode_t; +#endif /* FSL_FEATURE_ADC_HAS_PGA */ + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @brief Starts the calibration process. + * + * This function clears the calibration flag bit and sets the enable bit + * to start the calibration. + * + * @param instance ADC instance ID. + */ +adc_status_t adc_hal_start_calibration(uint32_t instance); + +/*! + * @brief Ends the calibration process. + * + * This function clears the calibration enable bit to end the calibration. + * + * @param instance ADC instance ID. + */ +static inline void adc_hal_end_calibration(uint32_t instance) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC3_CAL(instance, 0U); +} + +/*! + * @brief Gets and calculates the plus-side calibration parameter. + * + * This function gets the CLP0 - CLP4 and CLPS, accumulates them, and + * returns the value that can be set to the PG directly. + * + * @param instance ADC instance ID. + * @return the value that can be set to PG directly. + */ +uint32_t adc_hal_get_calibration_PG(uint32_t instance); + +/*! + * @brief Sets the plus-side calibration parameter to the ADC instance. + * + * This function sets the PG register directly. + * + * @param instance ADC instance ID. + * @param val the value that can be set to PG directly. + */ +static inline void adc_hal_set_calibration_PG(uint32_t instance, uint32_t val) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + HW_ADC_PG_WR(instance, val); +} + +/*! + * @brief Gets and calculates the minus-side calibration parameter. + * + * This function gets the CLM0 - CLM4 and CLMS, accumulates them, and + * returns the value that can be set to the MG directly. + * + * @param instance ADC instance ID. + * @return the value that can be set to MG directly. + */ +uint32_t adc_hal_get_calibration_MG(uint32_t instance); + +/*! + * @brief Sets the minus-side calibration parameter to the ADC instance. + * + * This function sets the MG register directly. + * + * @param instance ADC instance ID. + * @param val the value that can be set to MG directly. + */ +static inline void adc_hal_set_calibration_MG(uint32_t instance, uint32_t val) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + HW_ADC_MG_WR(instance, val); +} + +/*! + * @brief Gets the offset value after the auto-calibration. + * + * If the user wants to adjust the offset value according to the application, + * the origin offset value will be a reference. + * + * @param instance ADC instance ID. + * @return The offset value created by auto-calibration. + */ +static inline uint32_t adc_hal_get_calibration_offset(uint32_t instance) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + return BR_ADC_OFS_OFS(instance); +} + +/*! + * @brief Sets the offset value for manual calibration. + * + * This function is to set the user selected or calibration generated offset + * error correction value. The value set here is subtracted from the conversion + * and the result is transferred into the result registers (Rn). If the result + * is above the maximum or below the minimum result value, it is forced to the + * appropriate limit for the current mode of operation. + * + * @param instance ADC instance ID. + * @param value The manual offset value. + */ +static inline void adc_hal_set_calibration_offset(uint32_t instance, + uint32_t value) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_OFS_OFS(instance, value); +} + +/*! + * @brief Sets the selection of the clock source. + * + * The selection of ADC clock source can see to the type definition of + * adc_clock_source_mode_t. + * This function selects the input clock source to generate the internal + * clock, ADCK. Note that when the ADACK clock source is selected, it does not + * have to be activated prior to the start of the conversion. When it is + * selected and it is not activated prior to start a conversion , the + * asynchronous clock will be activated at the start of a conversion and shuts + * off when conversions are terminated. In this case, there is an associated + * clock startup delay each time the clock source is re-activated. + * + * @param instance ADC instance ID. + * @param mode The indicated clock source mode. + */ +static inline void adc_hal_set_clock_source_mode(uint32_t instance, + adc_clock_source_mode_t mode) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CFG1_ADICLK(instance, (uint32_t)(mode)); +} + +/*! + * @brief Switches the asynchronous clock on/off. + * + * When enables the ADC's asynchronous clock source and the clock source output + * regardless of the conversion and input clock select status of the ADC. Based + * on MCU configuration, the asynchronous clock may be used by other modules. + * Setting this mode allows the clock to be used even while the ADC is idle or + * operating from a different clock source. Also, latency of initiating a single + * or first-continuous conversion with the asynchronous clock selected is + * reduced since the ADACK clock is already operational. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_asynchronous_clock(uint32_t instance, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CFG2_ADACKEN(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Sets the selection of the clock divider. + * + * The selection of ADC's clock divider can see to the type definition of the + * adc_clock_divider_mode_t. + * This function selects the divide ratio used by the ADC to generate the + * internal clock ADCK. + * + * @param instance ADC instance ID. + * @param mode The selection of the divider. + */ +static inline void adc_hal_set_clock_divider_mode(uint32_t instance, + adc_clock_divider_mode_t mode) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CFG1_ADIV(instance, (uint32_t)(mode)); +} + +/*! + * @brief Sets the selection of the reference voltage source. + * + * The selection of ADC's reference voltage can see to the type definition of + * adc_reference_voltage_mode_t. + * This function selects the voltage reference source used for conversions. + * + * @param instance ADC instance ID. + * @param mode The selection of the reference voltage source. + */ +static inline void adc_hal_set_reference_voltage_mode(uint32_t instance, + adc_reference_voltage_mode_t mode) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC2_REFSEL(instance, (uint32_t)(mode)); +} + +/*! + * @brief Switches the high speed mode on/off . + * + * This function configures the ADC for high speed operations. The + * conversion sequence is altered (2 ADCK cycles added to the conversion time) + * to allow higher speed conversion clocks. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_high_speed(uint32_t instance, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CFG2_ADHSC(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Switch the long sample mode on/off. + * + * This function selects between the different sample times based on the + * conversion mode selected. It adjusts the sample period to allow + * higher impedance inputs to be accurately sampled or to maximize conversion + * speed for lower impedance inputs. Longer sample times can also be used to + * lower overall power consumption if the continuous conversions are enabled and the + * high conversion rates are not required. In fact this will be able to charge + * the SAR in a timely manner way without affecting the SAR configuration. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_long_sample(uint32_t instance, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CFG1_ADLSMP(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Sets the selection of the long sample mode. + * + * The selection of ADC long sample mode can see to the type definition of the + * adc_long_sample_mode_t. + * This function selects the long sample mode that indicating the different + * count of extra ADCK cycles are needed. + * + * @param instance ADC instance ID. + * @param mode The selection of long sample mode. + */ +static inline void adc_hal_set_long_sample_mode(uint32_t instance, + adc_long_sample_mode_t mode) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CFG2_ADLSTS(instance, (uint32_t)(mode)); +} + +/*! + * @brief Switches the low power mode on/off. + * + * This function controls the power configuration of the successive approximation + * converter. This optimizes power consumption when higher sample rates are not + * required. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_low_power(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CFG1_ADLPC(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Sets the selection of the resolution mode. + * + * The selection of ADC resolution mode can see to the type definition of the + * adc_resolution_mode_t. + * This function selects the ADC resolution mode. Note that the + * differential conversion is different to single-end conversion. + * + * @param instance ADC instance ID. + * @param mode The selection of resolution mode. + */ +static inline void adc_hal_set_resolution_mode(uint32_t instance, + adc_resolution_mode_t mode) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CFG1_MODE(instance, (uint32_t)(mode)); +} + +/*! + * @brief Switches the continuous conversion mode on/off. + * + * This function configures the continuous conversions or sets of conversions if + * the hardware average function is enabled after initiating a conversion. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_continuous_conversion(uint32_t instance, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC3_ADCO(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Switches the hardware trigger mode on/off . + * + * This function selects the type of trigger used for initiating a conversion. + * Two types of triggers can be selected: software trigger and hardware trigger. + * When software trigger is selected, a conversion is initiated following a + * write to SC1A. When hardware trigger is selected, a conversion is initiated + * following the assertion of the external events. The event will come through + * the signal on the line of ADHWT input after a pulse of ADHWTSn input inside SOC. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_hw_trigger(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC2_ADTRG(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Switches the hardware average mode on/off. + * + * This function enables the hardware average function of the ADC. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_hw_average(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC3_AVGE(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Sets the selection of the hardware average mode. + * + * The selection of ADC hardware average mode can see to the type definition + * of the adc_hw_average_mode_t. + * This function determines how many ADC conversions are averaged to create + * the ADC average result. + * + * @param instance ADC instance ID. + * @param mode The selection of hardware average mode. + */ +static inline void adc_hal_set_hw_average_mode(uint32_t instance, + adc_hw_average_mode_t mode) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC3_AVGS(instance, (uint32_t)(mode)); +} + +/*! + * @brief Switches the hardware compare mode on/off. + * + * This function enables the compare function. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_hw_compare(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC2_ACFE(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Switches the hardware compare greater configuration on/off . + * + * This function configures the compare function to check the conversion + * result relative to the compare value register(s) (CV1 and CV2). To enable + * will configure greater than or equal to threshold, outside range inclusive + * and inside range inclusive functionality based on the values placed in the + * CV1 and CV2 registers. Otherwise, it will configure less than threshold, + * outside range not inclusive and inside range not inclusive functionality + * based on the values placed in the CV1 and CV2 registers. + * + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_hw_compare_greater(uint32_t instance, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC2_ACFGT(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Switches the hardware compare range configuration on/off . + * + * This function configures the compare function to check if the conversion + * result of the input being monitored is either inside or outside the range + * formed by the compare value registers (CV1 and CV2). However, the actual + * compare range should be determined alone with the function of + * adc_hal_configure_hw_compare_greater() as well. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_hw_compare_in_range(uint32_t instance, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC2_ACREN(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Sets the value1 in the hardware compare. + * + * This function sets the value of the CV1 register. + * + * @param instance ADC instance ID. + * @param value The setting value. + */ +static inline void adc_hal_set_hw_compare_value1(uint32_t instance, uint32_t value) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CV1_CV(instance, value); +} + +/*! + * @brief Sets the value2 in the hardware compare. + * + * This function sets the value of the CV2 register. + * + * @param instance ADC instance ID. + * @param value The setting value. + */ +static inline void adc_hal_set_hw_compare_value2(uint32_t instance, uint32_t value) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_CV2_CV(instance, value); +} + +/*! + * @brief Switches the ADC DMA trigger on/off. + * + * When DMA is enabled, it asserts the ADC DMA request during the ADC + * conversion complete event noted by the assertion of any of the ADC COCO flags. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_dma(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_SC2_DMAEN(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Switches off the ADC channel conversion. + * + * Here the "NUll" channel is set to the conversion channel. + * + * @param instance ADC instance ID. + * @param group The group mux index. + */ +static inline void adc_hal_disable(uint32_t instance, uint32_t group) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + assert(group < HW_ADC_SC1n_COUNT); + BW_ADC_SC1n_ADCH(instance, group, (uint32_t)(kAdcChannelDisable)); +} + +/*! + * @brief Sets the channel number and switches on the conversion. + * + * When the available channel is set, the conversion begins to execute. + * + * @param instance ADC instance ID. + * @param group The group mux index. + * @param mode The selection of channel number. + * @param isDifferential the selection of differential input. + */ +static inline void adc_hal_enable(uint32_t instance, uint32_t group, + adc_channel_mode_t mode, bool isDifferential) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + assert(group < HW_ADC_SC1n_COUNT); + BW_ADC_SC1n_DIFF(instance, group, (isDifferential ? 1U : 0U)); + /* Set new channel will restart the conversion. */ + BW_ADC_SC1n_ADCH(instance, group, (uint32_t)(mode)); +} + +/*! + * @brief Switches the ADC interrupt trigger on/off . + * + * This function enables conversion complete interrupts. When COCO is + * set while the respective AIEN is high, an interrupt is asserted. + * + * @param instance ADC instance ID. + * @param group The group mux index. + * @param inEnable The switcher. + */ +static inline void adc_hal_configure_interrupt(uint32_t instance, uint32_t group, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + assert(group < HW_ADC_SC1n_COUNT); + BW_ADC_SC1n_AIEN(instance, group, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Checks whether the ADC is in process. + * + * This function indicates that a conversion or hardware averaging is in + * progress. ADACT is set when a conversion is initiated and cleared when a + * conversion is completed or aborted. Note that if the continuous conversion + * is been use, this function will always return true. + * + * @param instance ADC instance ID. + * @return true if it is. + */ +static inline bool adc_hal_is_in_process(uint32_t instance) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + return BR_ADC_SC2_ADACT(instance); +} + +/*! + * @brief Checks whether the channel conversion is complete. + * + * This function indicates whether each conversion is completed. + * + * @param instance ADC instance ID. + * @param group The grout mux index. + * @return true if it is. + */ +static inline bool adc_hal_is_conversion_completed(uint32_t instance, uint32_t group) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + assert(group < HW_ADC_SC1n_COUNT); + return BR_ADC_SC1n_COCO(instance, group); +} + +/*! + * @brief Checks whether the calibration failed. + * + * This function displays the result of the calibration sequence. + * + * @param instance ADC instance ID. + * @return true if it is. + */ +static inline bool adc_hal_is_calibration_fail(uint32_t instance) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + return BR_ADC_SC3_CALF(instance); +} + +/*! + * @brief Gets the conversion value. + * + * This function returns the conversion value kept in the Rn Register. Unused bits + * in the Rn register are cleared in unsigned right justified modes and carry + * the sign bit (MSB) in sign extended 2's complement modes. + * + * @param instance ADC instance ID. + * @param group The group mux index. + */ +static inline uint32_t adc_hal_get_conversion_value(uint32_t instance, + uint32_t group) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + assert(group < HW_ADC_SC1n_COUNT); + return BR_ADC_Rn_D(instance, group); +} + +/*! + * @brief Sets the current group mux that executes the conversion. + * + * ADC Mux select bit changes the ADC group setting to select between + * alternate sets of ADC channels. It will activate group A or group B. + * + * @param instance ADC instance ID. + * @param group The group mux index. + */ +static inline void adc_hal_set_group_mux(uint32_t instance, adc_group_mux_mode_t group) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + assert(group < HW_ADC_SC1n_COUNT); + BW_ADC_CFG2_MUXSEL(instance, (uint32_t)group); +} + +#if FSL_FEATURE_ADC_HAS_PGA +/*! + * @brief Switches on/off to enable the ADC Programmable Gain Amplifier. + * + * The Programmable Gain Amplifier (PGA) is designed to increase the dynamic + * range by amplifying low-amplitude signals before they are fed to the 16-bit + * SAR ADC. The gain of this amplifier ranges between 1 to 64 in (2^N) steps. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_pga(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_PGA_PGAEN(instance, (isEnabled ? 1U : 0U)); +} + +/*! + * @brief Switches on/off to enable the PGA chopping mode. + * + * The PGA employs chopping to remove/reduce offset and 1/f noise and offers an + * offset measurement configuration that aids the offset calibration. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_pga_chopping(uint32_t instance, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_PGA_PGACHPb(instance, (isEnabled ? 0U : 1U)); +} + +/*! + * @brief Switches on/off to enable the PGA in a low power mode. + * + * This function configures the PGA running in low power mode. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_pga_in_low_power(uint32_t instance, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_PGA_PGALPb(instance, (isEnabled ? 0U : 1U)); +} + +/*! + * @brief Switches on/off to enable the offset measurement mode. + * + * When this function is asserted, the PGA disconnects from the external + * inputs and auto-configures into offset measurement mode. With this function is + * asserted, run the ADC in recommended settings and enable maximum + * hardware averaging to get the PGA offset number. The output is + * (PGA offset * (64+1)) for a given PGA setting. + * + * @param instance ADC instance ID. + * @param isEnabled The switcher. + */ +static inline void adc_hal_configure_pga_offset_measurement(uint32_t instance, + bool isEnabled) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_PGA_PGAOFSM(instance, (isEnabled ? 0U : 1U)); +} + +/*! + * @brief Sets the selection of the PGA gain mode. + * + * The selection of the PGA gain mode can see to the type definition of the adc_pga_mode_t. + * + * @param instance ADC instance ID. + * @param mode The selection of gain. + */ +static inline void adc_hal_set_pga_gain_mode(uint32_t instance, + adc_pga_mode_t mode) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + BW_ADC_PGA_PGAG(instance, (uint32_t)(mode)); +} + +/*! + * @brief Gets the selection of the current PGA gain mode. + * + * This function returns the selection of the current PGA gain mode status. + * + * @param instance ADC instance ID. + * @return Current selection of gain mode. + */ +static inline adc_pga_mode_t adc_hal_get_pga_gain_mode(uint32_t instance) +{ + assert(instance < HW_ADC_INSTANCE_COUNT); + + return (adc_pga_mode_t)(BR_ADC_PGA_PGAG(instance)); +} + +#endif /* FSL_FEATURE_ADC_HAS_PGA */ + +#if defined(__cplusplus) +} +#endif + +/*! @}*/ + +#endif /* __FSL_ADC_HAL_H__ */ +/******************************************************************************* +* EOF +*******************************************************************************/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/can/fsl_flexcan_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_CAN_FEATURES_H__) +#define __FSL_CAN_FEATURES_H__ + +#if defined(CPU_MK24FN1M0VDC12) || defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || defined(CPU_MK63FN1M0VMD12) || \ + defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VLQ12) || \ + defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12) || defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || \ + defined(CPU_MK65FN2M0VMI18) || defined(CPU_MK65FX1M0VMI18) || defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || \ + defined(CPU_MK66FN2M0VMD18) || defined(CPU_MK66FX1M0VMD18) + /* @brief Message buffer size*/ + #define FSL_FEATURE_CAN_HAS_MESSAGE_BUFFER_MAX_NUMBER (16) + /* @brief Has doze mode support (register bit field MCR[DOZE]).*/ + #define FSL_FEATURE_CAN_HAS_DOZE_MODE_SUPPORT (0) + /* @brief Has a glitch filter on the receive pin (register bit field MCR[WAKSRC]).*/ + #define FSL_FEATURE_CAN_HAS_GLITCH_FILTER (1) + /* @brief Has extended interrupt mask and flag register (register IMASK2, IFLAG2).*/ + #define FSL_FEATURE_CAN_HAS_EXTENDED_FLAG_REGISTER (0) + /* @brief Has separate message buffer 0 interrupt flag (register bit field IFLAG1[BUF0I]).*/ + #define FSL_FEATURE_CAN_HAS_SEPARATE_BUFFER_0_FLAG (1) +#elif defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || \ + defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) + /* @brief Message buffer size*/ + #define FSL_FEATURE_CAN_HAS_MESSAGE_BUFFER_MAX_NUMBER (16) + /* @brief Has doze mode support (register bit field MCR[DOZE]).*/ + #define FSL_FEATURE_CAN_HAS_DOZE_MODE_SUPPORT (0) + /* @brief Has a glitch filter on the receive pin (register bit field MCR[WAKSRC]).*/ + #define FSL_FEATURE_CAN_HAS_GLITCH_FILTER (0) + /* @brief Has extended interrupt mask and flag register (register IMASK2, IFLAG2).*/ + #define FSL_FEATURE_CAN_HAS_EXTENDED_FLAG_REGISTER (1) + /* @brief Has separate message buffer 0 interrupt flag (register bit field IFLAG1[BUF0I]).*/ + #define FSL_FEATURE_CAN_HAS_SEPARATE_BUFFER_0_FLAG (0) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_CAN_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/can/fsl_flexcan_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,880 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_FLEXCAN_HAL_H__ +#define __FSL_FLEXCAN_HAL_H__ + +#include <assert.h> +#include <stdint.h> +#include <stdbool.h> +#include "fsl_flexcan_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup flexcan_hal + * @{ + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief FlexCAN constants*/ +enum _flexcan_constants +{ + kFlexCanMessageSize = 8, /*!< FlexCAN message buffer data size in bytes*/ +}; + +/*! @brief The Status enum is used to report current status of the FlexCAN interface.*/ +enum _flexcan_err_status +{ + kFlexCan_RxWrn = 0x0080, /*!< Reached warning level for RX errors*/ + kFlexCan_TxWrn = 0x0100, /*!< Reached warning level for TX errors*/ + kFlexCan_StfErr = 0x0200, /*!< Stuffing Error*/ + kFlexCan_FrmErr = 0x0400, /*!< Form Error*/ + kFlexCan_CrcErr = 0x0800, /*!< Cyclic Redundancy Check Error*/ + kFlexCan_AckErr = 0x1000, /*!< Received no ACK on transmission*/ + kFlexCan_Bit0Err = 0x2000, /*!< Unable to send dominant bit*/ + kFlexCan_Bit1Err = 0x4000, /*!< Unable to send recessive bit*/ +}; + +/*! @brief FlexCAN status return codes*/ +typedef enum _flexcan_status +{ + kStatus_FLEXCAN_Success = 0, + kStatus_FLEXCAN_OutOfRange, + kStatus_FLEXCAN_UnknownProperty, + kStatus_FLEXCAN_InvalidArgument, + kStatus_FLEXCAN_Fail, + kStatus_FLEXCAN_TimeOut, +} flexcan_status_t; + + +/*! @brief FlexCAN operation modes*/ +typedef enum _flexcan_operation_modes { + kFlexCanNormalMode, /*!< Normal mode or user mode*/ + kFlexCanListenOnlyMode, /*!< Listen-only mode*/ + kFlexCanLoopBackMode, /*!< Loop-back mode*/ + kFlexCanFreezeMode, /*!< Freeze mode*/ + kFlexCanDisableMode, /*!< Module disable mode*/ +} flexcan_operation_modes_t; + +/*! @brief FlexCAN message buffer CODE for Rx buffers*/ +typedef enum _flexcan_mb_code_rx { + kFlexCanRX_Inactive = 0x0, /*!< MB is not active.*/ + kFlexCanRX_Full = 0x2, /*!< MB is full.*/ + kFlexCanRX_Empty = 0x4, /*!< MB is active and empty.*/ + kFlexCanRX_Overrun = 0x6, /*!< MB is overwritten into a full buffer.*/ + kFlexCanRX_Busy = 0x8, /*!< FlexCAN is updating the contents of the MB.*/ + /*! The CPU must not access the MB.*/ + kFlexCanRX_Ranswer = 0xA, /*!< A frame was configured to recognize a Remote Request Frame*/ + /*! and transmit a Response Frame in return.*/ + kFlexCanRX_NotUsed = 0xF, /*!< Not used*/ +} flexcan_mb_code_rx_t; + +/*! @brief FlexCAN message buffer CODE FOR Tx buffers*/ +typedef enum _flexcan_mb_code_tx { + kFlexCanTX_Inactive = 0x08, /*!< MB is not active.*/ + kFlexCanTX_Abort = 0x09, /*!< MB is aborted.*/ + kFlexCanTX_Data = 0x0C, /*!< MB is a TX Data Frame(MB RTR must be 0).*/ + kFlexCanTX_Remote = 0x1C, /*!< MB is a TX Remote Request Frame (MB RTR must be 1).*/ + kFlexCanTX_Tanswer = 0x0E, /*!< MB is a TX Response Request Frame from.*/ + /*! an incoming Remote Request Frame.*/ + kFlexCanTX_NotUsed = 0xF, /*!< Not used*/ +} flexcan_mb_code_tx_t; + +/*! @brief FlexCAN message buffer transmission types*/ +typedef enum _flexcan_mb_transmission_type { + kFlexCanMBStatusType_TX, /*!< Transmit MB*/ + kFlexCanMBStatusType_TXRemote, /*!< Transmit remote request MB*/ + kFlexCanMBStatusType_RX, /*!< Receive MB*/ + kFlexCanMBStatusType_RXRemote, /*!< Receive remote request MB*/ + kFlexCanMBStatusType_RXTXRemote, /*!< FlexCAN remote frame receives remote request and*/ + /*! transmits MB.*/ +} flexcan_mb_transmission_type_t; + +typedef enum _flexcan_rx_fifo_id_element_format { + kFlexCanRxFifoIdElementFormat_A, /*!< One full ID (standard and extended) per ID Filter Table*/ + /*! element.*/ + kFlexCanRxFifoIdElementFormat_B, /*!< Two full standard IDs or two partial 14-bit (standard and*/ + /*! extended) IDs per ID Filter Table element.*/ + kFlexCanRxFifoIdElementFormat_C, /*!< Four partial 8-bit Standard IDs per ID Filter Table*/ + /*! element.*/ + kFlexCanRxFifoIdElementFormat_D, /*!< All frames rejected.*/ +} flexcan_rx_fifo_id_element_format_t; + +/*! @brief FlexCAN Rx FIFO filters number*/ +typedef enum _flexcan_rx_fifo_id_filter_number { + kFlexCanRxFifoIDFilters_8 = 0x0, /*!< 8 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_16 = 0x1, /*!< 16 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_24 = 0x2, /*!< 24 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_32 = 0x3, /*!< 32 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_40 = 0x4, /*!< 40 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_48 = 0x5, /*!< 48 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_56 = 0x6, /*!< 56 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_64 = 0x7, /*!< 64 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_72 = 0x8, /*!< 72 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_80 = 0x9, /*!< 80 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_88 = 0xA, /*!< 88 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_96 = 0xB, /*!< 96 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_104 = 0xC, /*!< 104 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_112 = 0xD, /*!< 112 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_120 = 0xE, /*!< 120 Rx FIFO Filters*/ + kFlexCanRxFifoIDFilters_128 = 0xF /*!< 128 Rx FIFO Filters*/ +} flexcan_rx_fifo_id_filter_num_t; + +/*! @brief FlexCAN RX FIFO ID filter table structure*/ +typedef struct FLEXCANIdTable { + bool is_remote_mb; /*!< Remote frame*/ + bool is_extended_mb; /*!< Extended frame*/ + uint32_t *id_filter; /*!< Rx FIFO ID filter elements*/ +} flexcan_id_table_t; + +/*! @brief FlexCAN RX mask type.*/ +typedef enum _flexcan_rx_mask_type { + kFlexCanRxMask_Global, /*!< Rx global mask*/ + kFlexCanRxMask_Individual, /*!< Rx individual mask*/ +} flexcan_rx_mask_type_t; + +/*! @brief FlexCAN MB ID type*/ +typedef enum _flexcan_mb_id_type { + kFlexCanMbId_Std, /*!< Standard ID*/ + kFlexCanMbId_Ext, /*!< Extended ID*/ +} flexcan_mb_id_type_t; + +/*! @brief FlexCAN clock source*/ +typedef enum _flexcan_clk_source { + kFlexCanClkSource_Osc, /*!< Oscillator clock*/ + kFlexCanClkSource_Ipbus, /*!< Peripheral clock*/ +} flexcan_clk_source_t; + +/*! @brief FlexCAN error interrupt types*/ +typedef enum _flexcan_int_type { + kFlexCanInt_Buf, /*!< OR'd message buffers interrupt*/ + kFlexCanInt_Err, /*!< Error interrupt*/ + kFlexCanInt_Boff, /*!< Bus off interrupt*/ + kFlexCanInt_Wakeup, /*!< Wakeup interrupt*/ + kFlexCanInt_Txwarning, /*!< TX warning interrupt*/ + kFlexCanInt_Rxwarning, /*!< RX warning interrupt*/ +} flexcan_int_type_t; + +/*! @brief FlexCAN bus error counters*/ +typedef struct FLEXCANBerrCounter { + uint16_t txerr; /*!< Transmit error counter*/ + uint16_t rxerr; /*!< Receive error counter*/ +} flexcan_berr_counter_t; + +/*! @brief FlexCAN MB code and status for transmitting*/ +typedef struct FLEXCANMbCodeStatusTx { + flexcan_mb_code_tx_t code; /*!< MB code for Tx buffers*/ + flexcan_mb_id_type_t msg_id_type; /*!< Type of message ID (standard or extended)*/ + uint32_t data_length; /*!< Length of Data in Bytes*/ + uint32_t substitute_remote; /*!< Substitute remote request (used only in*/ + /*! extended format)*/ + uint32_t remote_transmission; /*!< Remote transmission request*/ + bool local_priority_enable; /*!< 1 if enable it; 0 if disable it*/ + uint32_t local_priority_val; /*!< Local priority value [0..2]*/ +} flexcan_mb_code_status_tx_t; + +/*! @brief FlexCAN MB code and status for receiving*/ +typedef struct FLEXCANMbCodeStatusRx { + flexcan_mb_code_rx_t code; /*!< MB code for Rx buffers*/ + flexcan_mb_id_type_t msg_id_type; /*!< Type of message ID (standard or extended)*/ + uint32_t data_length; /*!< Length of Data in Bytes*/ + uint32_t substitute_remote; /*!< Substitute remote request (used only in*/ + /*! extended format)*/ + uint32_t remote_transmission; /*!< Remote transmission request*/ + bool local_priority_enable; /*!< 1 if enable it; 0 if disable it*/ + uint32_t local_priority_val; /*!< Local priority value [0..2]*/ +} flexcan_mb_code_status_rx_t; + +/*! @brief FlexCAN Rx FIFO configuration*/ +typedef struct FLEXCANRxFifoConfig { + flexcan_mb_id_type_t msg_id_type; /*!< Type of message ID*/ + /*! (standard or extended)*/ + uint32_t data_length; /*!< Length of Data in Bytes*/ + uint32_t substitute_remote; /*!< Substitute remote request (used*/ + /*! only in extended format)*/ + uint32_t remote_transmission; /*!< Remote transmission request*/ + flexcan_rx_fifo_id_element_format_t id_filter_number; /*!< The number of Rx FIFO ID filters*/ +} flexcan_rx_fifo_config_t; + +/*! @brief FlexCAN message buffer structure*/ +typedef struct FLEXCANMb { + uint32_t cs; /*!< Code and Status*/ + uint32_t msg_id; /*!< Message Buffer ID*/ + uint8_t data[kFlexCanMessageSize]; /*!< Bytes of the FlexCAN message*/ +} flexcan_mb_t; + +/*! @brief FlexCAN configuration*/ +typedef struct FLEXCANUserConfig { + uint32_t num_mb; /*!< The number of Message Buffers needed*/ + uint32_t max_num_mb; /*!< The maximum number of Message Buffers*/ + flexcan_rx_fifo_id_filter_num_t num_id_filters; /*!< The number of Rx FIFO ID filters needed*/ + bool is_rx_fifo_needed; /*!< 1 if needed; 0 if not*/ + bool is_rx_mb_needed; /*!< 1 if needed; 0 if not*/ +} flexcan_user_config_t; + +/*! @brief FlexCAN timing related structures*/ +typedef struct FLEXCANTimeSegment { + uint32_t propseg; /*!< Propagation segment*/ + uint32_t pseg1; /*!< Phase segment 1*/ + uint32_t pseg2; /*!< Phase segment 2*/ + uint32_t pre_divider; /*!< Clock pre divider*/ + uint32_t rjw; /*!< Resync jump width*/ +} flexcan_time_segment_t; + + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @name Configuration + * @{ + */ + +/*! + * @brief Enables FlexCAN controller. + * + * @param instance The FlexCAN instance number + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_enable(uint8_t instance); + +/*! + * @brief Disables FlexCAN controller. + * + * @param instance The FlexCAN instance number + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_disable(uint8_t instance); + +/*! + * @brief Checks whether the FlexCAN is enabled or disabled. + * + * @param instance The FlexCAN instance number + * @return State of FlexCAN enable(0)/disable(1) + */ +static inline bool flexcan_hal_is_enabled(uint8_t instance) +{ + assert(instance < HW_CAN_INSTANCE_COUNT); + + return BR_CAN_MCR_MDIS(instance); +} + +/*! + * @brief Resets the FlexCAN controller. + * + * @param instance The FlexCAN instance number + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_sw_reset(uint8_t instance); + +/*! + * @brief Selects the clock source for FlexCAN. + * + * @param instance The FlexCAN instance number + * @param clk The FlexCAN clock source + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_select_clk(uint8_t instance, flexcan_clk_source_t clk); + +/*! + * @brief Initializes the FlexCAN controller. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data. + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_init(uint8_t instance, const flexcan_user_config_t *data); + +/*! + * @brief Sets the FlexCAN time segments for setting up bit rate. + * + * @param instance The FlexCAN instance number + * @param time_seg FlexCAN time segments, which need to be set for the bit rate. + * @return 0 if successful; non-zero failed + */ +void flexcan_hal_set_time_segments(uint8_t instance, flexcan_time_segment_t *time_seg); + +/*! + * @brief Gets the FlexCAN time segments to calculate the bit rate. + * + * @param instance The FlexCAN instance number + * @param time_seg FlexCAN time segments read for bit rate + * @return 0 if successful; non-zero failed + */ +void flexcan_hal_get_time_segments(uint8_t instance, flexcan_time_segment_t *time_seg); + +/*! + * @brief Un freezes the FlexCAN module. + * + * @param instance The FlexCAN instance number + * @return 0 if successful; non-zero failed. + */ +void flexcan_hal_exit_freeze_mode(uint8_t instance); + +/*! + * @brief Freezes the FlexCAN module. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_enter_freeze_mode(uint8_t instance); + +/*! + * @brief Enables operation mode. + * + * @param instance The FlexCAN instance number + * @param mode An operation mode to be enabled + * @return 0 if successful; non-zero failed. + */ +flexcan_status_t flexcan_hal_enable_operation_mode( + uint8_t instance, + flexcan_operation_modes_t mode); + +/*! + * @brief Disables operation mode. + * + * @param instance The FlexCAN instance number + * @param mode An operation mode to be disabled + * @return 0 if successful; non-zero failed. + */ +flexcan_status_t flexcan_hal_disable_operation_mode( + uint8_t instance, + flexcan_operation_modes_t mode); + +/*@}*/ + +/*! + * @name Data transfer + * @{ + */ + +/*! + * @brief Sets the FlexCAN message buffer fields for transmitting. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param mb_idx Index of the message buffer + * @param cs CODE/status values (TX) + * @param msg_id ID of the message to transmit + * @param mb_data Bytes of the FlexCAN message + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_set_mb_tx( + uint8_t instance, + const flexcan_user_config_t *data, + uint32_t mb_idx, + flexcan_mb_code_status_tx_t *cs, + uint32_t msg_id, + uint8_t *mb_data); + +/*! + * @brief Set the FlexCAN message buffer fields for receiving. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param mb_idx Index of the message buffer + * @param cs CODE/status values (RX) + * @param msg_id ID of the message to receive + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_set_mb_rx( + uint8_t instance, + const flexcan_user_config_t *data, + uint32_t mb_idx, + flexcan_mb_code_status_rx_t *cs, + uint32_t msg_id); + +/*! + * @brief Gets the FlexCAN message buffer fields. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param mb_idx Index of the message buffer + * @param mb The fields of the message buffer + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_get_mb( + uint8_t instance, + const flexcan_user_config_t *data, + uint32_t mb_idx, + flexcan_mb_t *mb); + +/*! + * @brief Locks the FlexCAN Rx message buffer. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param mb_idx Index of the message buffer + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_lock_rx_mb( + uint8_t instance, + const flexcan_user_config_t *data, + uint32_t mb_idx); + +/*! + * @brief Unlocks the FlexCAN Rx message buffer. + * + * @param instance The FlexCAN instance number + * @return 0 if successful; non-zero failed + */ +static inline void flexcan_hal_unlock_rx_mb(uint8_t instance) +{ + assert(instance < HW_CAN_INSTANCE_COUNT); + + /* Unlock the mailbox */ + HW_CAN_TIMER_RD(instance); +} + +/*! + * @brief Enables the Rx FIFO. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_enable_rx_fifo(uint8_t instance); + +/*! + * @brief Disables the Rx FIFO. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_disable_rx_fifo(uint8_t instance); + +/*! + * @brief Sets the number of the Rx FIFO filters. + * + * @param instance The FlexCAN instance number + * @param number The number of Rx FIFO filters + */ +void flexcan_hal_set_rx_fifo_filters_number(uint8_t instance, uint32_t number); + +/*! + * @brief Sets the maximum number of Message Buffers. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + */ +void flexcan_hal_set_max_mb_number( + uint8_t instance, + const flexcan_user_config_t *data); + +/*! + * @brief Sets the Rx FIFO ID filter table elements. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param id_format The format of the Rx FIFO ID Filter Table Elements + * @param id_filter_table The ID filter table elements which contain if RTR bit, + * IDE bit and RX message ID need to be set. + * @return 0 if successful; non-zero failed. + */ +flexcan_status_t flexcan_hal_set_id_filter_table_elements( + uint8_t instance, + const flexcan_user_config_t *data, + flexcan_rx_fifo_id_element_format_t id_format, + flexcan_id_table_t *id_filter_table); + +/*! + * @brief Sets the FlexCAN Rx FIFO fields. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param id_format The format of the Rx FIFO ID Filter Table Elements + * @param id_filter_table The ID filter table elements which contain RTR bit, IDE bit, + * and RX message ID. + * @return 0 if successful; non-zero failed. + */ +flexcan_status_t flexcan_hal_set_rx_fifo( + uint8_t instance, + const flexcan_user_config_t *data, + flexcan_rx_fifo_id_element_format_t id_format, + flexcan_id_table_t *id_filter_table); + +/*! + * @brief Gets the FlexCAN Rx FIFO data. + * + * @param instance The FlexCAN instance number + * @param rx_fifo The FlexCAN receive FIFO data + * @return 0 if successful; non-zero failed. + */ +flexcan_status_t flexcan_hal_read_fifo( + uint8_t instance, + flexcan_mb_t *rx_fifo); + +/*@}*/ + +/*! + * @name Interrupts + * @{ + */ + +/*! + * @brief Enables the FlexCAN Message Buffer interrupt. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param mb_idx Index of the message buffer + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_enable_mb_interrupt( + uint8_t instance, + const flexcan_user_config_t *data, + uint32_t mb_idx); + +/*! + * @brief Disables the FlexCAN Message Buffer interrupt. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param mb_idx Index of the message buffer + * @return 0 if successful; non-zero failed + */ +flexcan_status_t flexcan_hal_disable_mb_interrupt( + uint8_t instance, + const flexcan_user_config_t *data, + uint32_t mb_idx); + +/*! + * @brief Enables error interrupt of the FlexCAN module. + * @param instance The FlexCAN instance number + */ +void flexcan_hal_enable_error_interrupt(uint8_t instance); + +/*! + * @brief Disables error interrupt of the FlexCAN module. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_disable_error_interrupt(uint8_t instance); + +/*! + * @brief Enables Bus off interrupt of the FlexCAN module. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_enable_bus_off_interrupt(uint8_t instance); + +/*! + * @brief Disables Bus off interrupt of the FlexCAN module. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_disable_bus_off_interrupt(uint8_t instance); + +/*! + * @brief Enables Wakeup interrupt of the FlexCAN module. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_enable_wakeup_interrupt(uint8_t instance); + +/*! + * @brief Disables Wakeup interrupt of the FlexCAN module. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_disable_wakeup_interrupt(uint8_t instance); + +/*! + * @brief Enables TX warning interrupt of the FlexCAN module + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_enable_tx_warning_interrupt(uint8_t instance); + +/*! + * @brief Disables TX warning interrupt of the FlexCAN module. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_disable_tx_warning_interrupt(uint8_t instance); + +/*! + * @brief Enables RX warning interrupt of the FlexCAN module. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_enable_rx_warning_interrupt(uint8_t instance); + +/*! + * @brief Disables RX warning interrupt of the FlexCAN module. + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_disable_rx_warning_interrupt(uint8_t instance); + +/*@}*/ + +/*! + * @name Status + * @{ + */ + +/*! + * @brief Gets the value of FlexCAN freeze ACK. + * + * @param instance The FlexCAN instance number + * @return freeze ACK state (1-freeze mode, 0-not in freeze mode). + */ +static inline uint32_t flexcan_hal_get_freeze_ack(uint8_t instance) +{ + assert(instance < HW_CAN_INSTANCE_COUNT); + return HW_CAN_MCR(instance).B.FRZACK; +} + +/*! + * @brief Gets the individual FlexCAN MB interrupt flag. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param mb_idx Index of the message buffer + * @return the individual MB interrupt flag (0 and 1 are the flag value) + */ +uint8_t flexcan_hal_get_mb_int_flag( + uint8_t instance, + const flexcan_user_config_t *data, + uint32_t mb_idx); + +/*! + * @brief Gets all FlexCAN MB interrupt flags. + * + * @param instance The FlexCAN instance number + * @return all MB interrupt flags + */ +static inline uint32_t flexcan_hal_get_all_mb_int_flags(uint8_t instance) +{ + assert(instance < HW_CAN_INSTANCE_COUNT); + return HW_CAN_IFLAG1_RD(instance); +} + +/*! + * @brief Clears the interrupt flag of the message buffers. + * + * @param instance The FlexCAN instance number + * @param reg_val The value to be written to the interrupt flag1 register. + */ +/* See fsl_flexcan_hal.h for documentation of this function.*/ +static inline void flexcan_hal_clear_mb_int_flag( + uint8_t instance, + uint32_t reg_val) +{ + assert(instance < HW_CAN_INSTANCE_COUNT); + + /* Clear the corresponding message buffer interrupt flag*/ + HW_CAN_IFLAG1_SET(instance, reg_val); +} + +/*! + * @brief Gets the transmit error counter and receives the error counter. + * + * @param instance The FlexCAN instance number + * @param err_cnt Transmit error counter and receive error counter + */ +void flexcan_hal_get_err_counter( + uint8_t instance, + flexcan_berr_counter_t *err_cnt); + +/*! + * @brief Gets error and status. + * + * @param instance The FlexCAN instance number + * @return The current error and status + */ +static inline uint32_t flexcan_hal_get_err_status(uint8_t instance) +{ + assert(instance < HW_CAN_INSTANCE_COUNT); + return HW_CAN_ESR1_RD(instance); +} + +/*! + * @brief Clears all other interrupts in ERRSTAT register (Error, Busoff, Wakeup). + * + * @param instance The FlexCAN instance number + */ +void flexcan_hal_clear_err_interrupt_status(uint8_t instance); + +/*@}*/ + +/*! + * @name Mask + * @{ + */ + +/*! + * @brief Sets the Rx masking type. + * + * @param instance The FlexCAN instance number + * @param type The FlexCAN Rx mask type + */ +void flexcan_hal_set_mask_type(uint8_t instance, flexcan_rx_mask_type_t type); + +/*! + * @brief Sets the FlexCAN RX FIFO global standard mask. + * + * @param instance The FlexCAN instance number + * @param std_mask Standard mask + */ +void flexcan_hal_set_rx_fifo_global_std_mask( + uint8_t instance, + uint32_t std_mask); + +/*! + * @brief Sets the FlexCAN Rx FIFO global extended mask. + * + * @param instance The FlexCAN instance number + * @param ext_mask Extended mask + */ +void flexcan_hal_set_rx_fifo_global_ext_mask( + uint8_t instance, + uint32_t ext_mask); + +/*! + * @brief Sets the FlexCAN Rx individual standard mask for ID filtering in the Rx MBs and the Rx FIFO. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param mb_idx Index of the message buffer + * @param std_mask Individual standard mask + * @return 0 if successful; non-zero failed +*/ +flexcan_status_t flexcan_hal_set_rx_individual_std_mask( + uint8_t instance, + const flexcan_user_config_t * data, + uint32_t mb_idx, + uint32_t std_mask); + +/*! + * @brief Sets the FlexCAN Rx individual extended mask for ID filtering in the Rx MBs and the Rx FIFO. + * + * @param instance The FlexCAN instance number + * @param data The FlexCAN platform data + * @param mb_idx Index of the message buffer + * @param ext_mask Individual extended mask + * @return 0 if successful; non-zero failed +*/ +flexcan_status_t flexcan_hal_set_rx_individual_ext_mask( + uint8_t instance, + const flexcan_user_config_t * data, + uint32_t mb_idx, + uint32_t ext_mask); + +/*! + * @brief Sets the FlexCAN Rx MB global standard mask. + * + * @param instance The FlexCAN instance number + * @param std_mask Standard mask + */ +void flexcan_hal_set_rx_mb_global_std_mask( + uint8_t instance, + uint32_t std_mask); + +/*! + * @brief Sets the FlexCAN RX MB BUF14 standard mask. + * + * @param instance The FlexCAN instance number + * @param std_mask Standard mask + */ +void flexcan_hal_set_rx_mb_buf14_std_mask( + uint8_t instance, + uint32_t std_mask); + +/*! + * @brief Sets the FlexCAN Rx MB BUF15 standard mask. + * + * @param instance The FlexCAN instance number + * @param std_mask Standard mask + * @return 0 if successful; non-zero failed + */ +void flexcan_hal_set_rx_mb_buf15_std_mask( + uint8_t instance, + uint32_t std_mask); + +/*! + * @brief Sets the FlexCAN RX MB global extended mask. + * + * @param instance The FlexCAN instance number + * @param ext_mask Extended mask + */ +void flexcan_hal_set_rx_mb_global_ext_mask( + uint8_t instance, + uint32_t ext_mask); + +/*! + * @brief Sets the FlexCAN RX MB BUF14 extended mask. + * + * @param instance The FlexCAN instance number + * @param ext_mask Extended mask + */ +void flexcan_hal_set_rx_mb_buf14_ext_mask( + uint8_t instance, + uint32_t ext_mask); + +/*! + * @brief Sets the FlexCAN RX MB BUF15 extended mask. + * + * @param instance The FlexCAN instance number + * @param ext_mask Extended mask + */ +void flexcan_hal_set_rx_mb_buf15_ext_mask( + uint8_t instance, + uint32_t ext_mask); + +/*! + * @brief Gets the FlexCAN ID acceptance filter hit indicator on Rx FIFO. + * + * @param instance The FlexCAN instance number + * @return RX FIFO information + */ +static inline uint32_t flexcan_hal_get_rx_fifo_id_acceptance_filter(uint8_t instance) +{ + assert(instance < HW_CAN_INSTANCE_COUNT); + return BR_CAN_RXFIR_IDHIT(instance); +} + +/*@}*/ + +#if defined(__cplusplus) +} +#endif + +/*! @}*/ + +#endif /* __FSL_FLEXCAN_HAL_H__*/ + +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/dmamux/fsl_dmamux_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_DMAMUX_FEATURES_H__) +#define __FSL_DMAMUX_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || \ + defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || \ + defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || \ + defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) || defined(CPU_MKL05Z8VFK4) || defined(CPU_MKL05Z16VFK4) || \ + defined(CPU_MKL05Z32VFK4) || defined(CPU_MKL05Z8VLC4) || defined(CPU_MKL05Z16VLC4) || defined(CPU_MKL05Z32VLC4) || \ + defined(CPU_MKL05Z8VFM4) || defined(CPU_MKL05Z16VFM4) || defined(CPU_MKL05Z32VFM4) || defined(CPU_MKL05Z16VLF4) || \ + defined(CPU_MKL05Z32VLF4) || defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || \ + defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || defined(CPU_MKL25Z32VLH4) || \ + defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || \ + defined(CPU_MKL25Z128VLK4) || defined(CPU_MKL46Z128VLH4) || defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || \ + defined(CPU_MKL46Z256VLL4) || defined(CPU_MKL46Z128VMC4) || defined(CPU_MKL46Z256VMC4) + /* @brief Number of DMA channels (related to number of register CHCFGn).*/ + #define FSL_FEATURE_DMAMUX_MODULE_CHANNEL (4) + /* @brief Total number of DMA channels on all modules.*/ + #define FSL_FEATURE_DMAMUX_DMAMUX_CHANNELS (HW_DMAMUX_INSTANCE_COUNT * 4) +#elif defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || \ + defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || defined(CPU_MK22FN512VLL12) || defined(CPU_MK24FN1M0VDC12) || \ + defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK64FN1M0VDC12) || \ + defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VMD12) || \ + defined(CPU_MK64FX512VMD12) || defined(CPU_MKV31F256VLH12) || defined(CPU_MKV31F256VLL12) || defined(CPU_MKV31FN512VLH12) || \ + defined(CPU_MKV31F512VLL12) || defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || \ + defined(CPU_MK70FX512VMF15) || defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || \ + defined(CPU_MK70FX512VMJ15) || defined(CPU_MK70FN1M0VMJ12WS) || defined(CPU_MK70FX512VMJ12WS) || defined(CPU_MK70FN1M0VMJ15WS) + /* @brief Number of DMA channels (related to number of register CHCFGn).*/ + #define FSL_FEATURE_DMAMUX_MODULE_CHANNEL (16) + /* @brief Total number of DMA channels on all modules.*/ + #define FSL_FEATURE_DMAMUX_DMAMUX_CHANNELS (HW_DMAMUX_INSTANCE_COUNT * 16) +#elif defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || defined(CPU_MK65FX1M0VMI18) || \ + defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || defined(CPU_MK66FX1M0VMD18) + /* @brief Number of DMA channels (related to number of register CHCFGn).*/ + #define FSL_FEATURE_DMAMUX_MODULE_CHANNEL (32) + /* @brief Total number of DMA channels on all modules.*/ + #define FSL_FEATURE_DMAMUX_DMAMUX_CHANNELS (HW_DMAMUX_INSTANCE_COUNT * 32) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_DMAMUX_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/dmamux/fsl_dmamux_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_DMAMUX_HAL_H__ +#define __FSL_DMAMUX_HAL_H__ + +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> +#include "fsl_dmamux_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup dmamux_hal + * @{ + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ +/*! + * @brief A constant for the length of the DMA hardware source. This structure is used inside + * the DMA driver. + */ +typedef enum _dmamux_source { + kDmamuxDmaRequestSource = 64U /*!< Maximum number of the DMA requests allowed for the DMA mux. */ +} dmamux_dma_request_source; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @name DMAMUX HAL function + * @{ + */ + +/*! + * @brief Initializes the DMAMUX module to the reset state. + * + * Initializes the DMAMUX module to the reset state. + * + * @param module DMAMUX module index + */ +void dmamux_hal_init(uint8_t module); + +/*! + * @brief Enables the DMAMUX channel. + * + * Enables the hardware request. If enabled, the hardware request is sent to + * the corresponding DMA channel. + * + * @param module DMAMUX module. + * @param channel DMAMUX channel. + */ +static inline void dmamux_hal_enable_channel(uint8_t module, uint8_t channel) +{ + assert(module < HW_DMAMUX_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL); + BW_DMAMUX_CHCFGn_ENBL(module, channel, 1U); +} + +/*! + * @brief Disables the DMAMUX channel. + * + * Disable hardware request. If disabled, the hardware request is not sent to + * the corresponding DMA channel. + * + * @param module DMAMUX module. + * @param channel DMAMUX channel. + */ +static inline void dmamux_hal_disable_channel(uint8_t module, uint8_t channel) +{ + assert(module < HW_DMAMUX_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL); + BW_DMAMUX_CHCFGn_ENBL(module, channel, 0U); +} + +/*! + * @brief Enables the period trigger. + * + * @param module DMAMUX module. + * @param channel DMAMUX channel. + */ +static inline void dmamux_hal_enable_period_trigger(uint8_t module, uint8_t channel) +{ + assert(module < HW_DMAMUX_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL); + BW_DMAMUX_CHCFGn_TRIG(module, channel, 1U); +} + +/*! + * @brief Disables the period trigger. + * + * @param module DMAMUX module. + * @param channel DMAMUX channel. + */ +static inline void dmamux_hal_disable_period_trigger(uint8_t module, uint8_t channel) +{ + assert(module < HW_DMAMUX_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL); + BW_DMAMUX_CHCFGn_TRIG(module, channel, 0U); +} + +/*! + * @brief Configures the DMA request for the DMAMUX channel. + * + * Sets the trigger source for the DMA channel. The trigger source is in the file + * fsl_dma_request.h. + * + * @param module DMAMUX module. + * @param channel DMAMUX channel. + * @param source DMA request source. + */ +static inline void dmamux_hal_set_trigger_source(uint8_t module, uint8_t channel, uint8_t source) +{ + assert(module < HW_DMAMUX_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL); + BW_DMAMUX_CHCFGn_SOURCE(module, channel, source); +} + +/* @} */ + +#if defined(__cplusplus) +} +#endif + +/*! @} */ + +#endif /* __FSL_DMAMUX_HAL_H__ */ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/dspi/fsl_dspi_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,365 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_DSPI_FEATURES_H__) +#define __FSL_DSPI_FEATURES_H__ + +#if defined(CPU_MK10DN512VLK10) || defined(CPU_MK10DN512VMB10) || defined(CPU_MK10DX128VMP5) || defined(CPU_MK10DN128VMP5) || \ + defined(CPU_MK10DX64VMP5) || defined(CPU_MK10DN64VMP5) || defined(CPU_MK10DX32VMP5) || defined(CPU_MK10DN32VMP5) || \ + defined(CPU_MK10DX128VLH5) || defined(CPU_MK10DN128VLH5) || defined(CPU_MK10DX64VLH5) || defined(CPU_MK10DN64VLH5) || \ + defined(CPU_MK10DX32VLH5) || defined(CPU_MK10DN32VLH5) || defined(CPU_MK10DX128VFT5) || defined(CPU_MK10DN128VFT5) || \ + defined(CPU_MK10DX64VFT5) || defined(CPU_MK10DN64VFT5) || defined(CPU_MK10DX32VFT5) || defined(CPU_MK10DN32VFT5) || \ + defined(CPU_MK10DX128VLF5) || defined(CPU_MK10DN128VLF5) || defined(CPU_MK10DX64VLF5) || defined(CPU_MK10DN64VLF5) || \ + defined(CPU_MK10DX32VLF5) || defined(CPU_MK10DN32VLF5) || defined(CPU_MK10DX64VLH7) || defined(CPU_MK10DX128VLH7) || \ + defined(CPU_MK10DX256VLH7) || defined(CPU_MK10DX64VLK7) || defined(CPU_MK10DX128VLK7) || defined(CPU_MK10DX256VLK7) || \ + defined(CPU_MK10DX64VMB7) || defined(CPU_MK10DX128VMB7) || defined(CPU_MK10DX256VMB7) || defined(CPU_MK10DN512ZVLK10) || \ + defined(CPU_MK10DN512ZVMB10) || defined(CPU_MK20DN512VLK10) || defined(CPU_MK20DN512VMB10) || defined(CPU_MK20DX128VMP5) || \ + defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || defined(CPU_MK20DX32VMP5) || \ + defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || defined(CPU_MK20DX64VLH5) || \ + defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || defined(CPU_MK20DX128VFT5) || \ + defined(CPU_MK20DN128VFT5) || defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || \ + defined(CPU_MK20DN32VFT5) || defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || \ + defined(CPU_MK20DN64VLF5) || defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) || defined(CPU_MK20DX64VLH7) || \ + defined(CPU_MK20DX128VLH7) || defined(CPU_MK20DX256VLH7) || defined(CPU_MK20DX64VLK7) || defined(CPU_MK20DX128VLK7) || \ + defined(CPU_MK20DX256VLK7) || defined(CPU_MK20DX64VMB7) || defined(CPU_MK20DX128VMB7) || defined(CPU_MK20DX256VMB7) || \ + defined(CPU_MK20DN512ZVLK10) || defined(CPU_MK20DX256ZVLK10) || defined(CPU_MK20DN512ZVMB10) || defined(CPU_MK20DX256ZVMB10) || \ + defined(CPU_MK22FX512VLH12) || defined(CPU_MK22FN1M0VLH12) || defined(CPU_MK22FX512VLK12) || defined(CPU_MK22FN1M0VLK12) || \ + defined(CPU_MK30DN512VLK10) || defined(CPU_MK30DN512VMB10) || defined(CPU_MK30DX64VLH7) || defined(CPU_MK30DX128VLH7) || \ + defined(CPU_MK30DX256VLH7) || defined(CPU_MK30DX64VLK7) || defined(CPU_MK30DX128VLK7) || defined(CPU_MK30DX256VLK7) || \ + defined(CPU_MK30DX64VMB7) || defined(CPU_MK30DX128VMB7) || defined(CPU_MK30DX256VMB7) || defined(CPU_MK30DN512ZVLK10) || \ + defined(CPU_MK30DN512ZVMB10) || defined(CPU_MK40DN512VLK10) || defined(CPU_MK40DN512VMB10) || defined(CPU_MK40DX64VLH7) || \ + defined(CPU_MK40DX128VLH7) || defined(CPU_MK40DX256VLH7) || defined(CPU_MK40DX64VLK7) || defined(CPU_MK40DX128VLK7) || \ + defined(CPU_MK40DX256VLK7) || defined(CPU_MK40DX64VMB7) || defined(CPU_MK40DX128VMB7) || defined(CPU_MK40DX256VMB7) || \ + defined(CPU_MK40DN512ZVLK10) || defined(CPU_MK40DN512ZVMB10) || defined(CPU_MK50DX128CLH7) || defined(CPU_MK50DX256CLK10) || \ + defined(CPU_MK50DX128CLK7) || defined(CPU_MK50DX256CLK7) || defined(CPU_MK50DX256CMB10) || defined(CPU_MK50DX128CMB7) || \ + defined(CPU_MK50DX256CMB7) || defined(CPU_MK50DX256ZCLK10) || defined(CPU_MK50DX256ZCMB10) || defined(CPU_MK51DX128CLH7) || \ + defined(CPU_MK51DX256CLK10) || defined(CPU_MK51DX128CLK7) || defined(CPU_MK51DX256CLK7) || defined(CPU_MK51DX256CMB10) || \ + defined(CPU_MK51DX128CMB7) || defined(CPU_MK51DX256CMB7) || defined(CPU_MK51DX256ZCLK10) || defined(CPU_MK51DX256ZCMB10) + /* @brief Deserial serial peripheral interface (registers MCR, TCR, CTARn, CTARn_SLAVE, SR, RSER, PUSHR, PUSHR_SLAVE, POPR, TXFRn, RXFRn if non-zero, otherwise C1, S, C2, BR, D, M).*/ + #define FSL_FEATURE_SPI_IS_DSPI (1) + /* @brief Has DMA support (register bit fields C2[RXDMAE] and C2[TXDMAE]). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_DMA_SUPPORT (1) + /* @brief Receive/transmit FIFO size in number of items.*/ + #define FSL_FEATURE_SPI_FIFO_SIZE (4) + /* @brief Maximum transfer data width in bits.*/ + #define FSL_FEATURE_SPI_MAX_DATA_WIDTH (16) + /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS] on DSPI modules.)*/ + #define FSL_FEATURE_SPI_MAX_CHIP_SELECT_COUNT (6) + /* @brief Number of chip select pins. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_CHIP_SELECT_COUNTn(x) \ + ((x) == 0 ? (5) : \ + ((x) == 1 ? (3) : (-1))) + /* @brief Has chip select strobe capability on the PCS5 pin. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_CHIP_SELECT_STROBE (1) + /* @brief The data register name has postfix (L as low and H as high). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_DATA_REGISTER_HAS_POSTFIX (0) + /* @brief Has 16-bit data transfer support.*/ + #define FSL_FEATURE_SPI_FEATURE_16BIT_TRANSFERS (1) +#elif defined(CPU_MK10DN512VLL10) || defined(CPU_MK10DX128VLQ10) || defined(CPU_MK10DX256VLQ10) || defined(CPU_MK10DN512VLQ10) || \ + defined(CPU_MK10DN512VMC10) || defined(CPU_MK10DX128VMD10) || defined(CPU_MK10DX256VMD10) || defined(CPU_MK10DN512VMD10) || \ + defined(CPU_MK10DX128VLL7) || defined(CPU_MK10DX256VLL7) || defined(CPU_MK10DX128VML7) || defined(CPU_MK10DX256VML7) || \ + defined(CPU_MK10FN1M0VLQ12) || defined(CPU_MK10FX512VLQ12) || defined(CPU_MK10FN1M0VMD12) || defined(CPU_MK10FX512VMD12) || \ + defined(CPU_MK10DN512ZVLL10) || defined(CPU_MK10DN512ZVLQ10) || defined(CPU_MK10DX256ZVLQ10) || defined(CPU_MK10DX128ZVLQ10) || \ + defined(CPU_MK10DN512ZVMC10) || defined(CPU_MK10DN512ZVMD10) || defined(CPU_MK10DX256ZVMD10) || defined(CPU_MK10DX128ZVMD10) || \ + defined(CPU_MK20DN512VLL10) || defined(CPU_MK20DX128VLQ10) || defined(CPU_MK20DX256VLQ10) || defined(CPU_MK20DN512VLQ10) || \ + defined(CPU_MK20DX256VMC10) || defined(CPU_MK20DN512VMC10) || defined(CPU_MK20DX128VMD10) || defined(CPU_MK20DX256VMD10) || \ + defined(CPU_MK20DN512VMD10) || defined(CPU_MK20DX128VLL7) || defined(CPU_MK20DX256VLL7) || defined(CPU_MK20DX128VML7) || \ + defined(CPU_MK20DX256VML7) || defined(CPU_MK20FN1M0VLQ12) || defined(CPU_MK20FX512VLQ12) || defined(CPU_MK20FN1M0VMD12) || \ + defined(CPU_MK20FX512VMD12) || defined(CPU_MK20DN512ZVLL10) || defined(CPU_MK20DX256ZVLL10) || defined(CPU_MK20DN512ZVLQ10) || \ + defined(CPU_MK20DX256ZVLQ10) || defined(CPU_MK20DX128ZVLQ10) || defined(CPU_MK20DN512ZVMC10) || defined(CPU_MK20DX256ZVMC10) || \ + defined(CPU_MK20DN512ZVMD10) || defined(CPU_MK20DX256ZVMD10) || defined(CPU_MK20DX128ZVMD10) || defined(CPU_MK21FX512VLQ12) || \ + defined(CPU_MK21FN1M0VLQ12) || defined(CPU_MK21FX512VLQ12WS) || defined(CPU_MK21FN1M0VLQ12WS) || defined(CPU_MK21FX512VMC12) || \ + defined(CPU_MK21FN1M0VMC12) || defined(CPU_MK21FX512VMC12WS) || defined(CPU_MK21FN1M0VMC12WS) || defined(CPU_MK21FX512VMD12) || \ + defined(CPU_MK21FN1M0VMD12) || defined(CPU_MK21FX512VMD12WS) || defined(CPU_MK21FN1M0VMD12WS) || defined(CPU_MK22FX512VLL12) || \ + defined(CPU_MK22FN1M0VLL12) || defined(CPU_MK22FX512VLQ12) || defined(CPU_MK22FN1M0VLQ12) || defined(CPU_MK22FX512VMC12) || \ + defined(CPU_MK22FN1M0VMC12) || defined(CPU_MK22FX512VMD12) || defined(CPU_MK22FN1M0VMD12) || defined(CPU_MK30DN512VLL10) || \ + defined(CPU_MK30DX128VLQ10) || defined(CPU_MK30DX256VLQ10) || defined(CPU_MK30DN512VLQ10) || defined(CPU_MK30DN512VMC10) || \ + defined(CPU_MK30DX128VMD10) || defined(CPU_MK30DX256VMD10) || defined(CPU_MK30DN512VMD10) || defined(CPU_MK30DX128VLL7) || \ + defined(CPU_MK30DX256VLL7) || defined(CPU_MK30DX128VML7) || defined(CPU_MK30DX256VML7) || defined(CPU_MK30DN512ZVLL10) || \ + defined(CPU_MK30DN512ZVLQ10) || defined(CPU_MK30DX256ZVLQ10) || defined(CPU_MK30DX128ZVLQ10) || defined(CPU_MK30DN512ZVMC10) || \ + defined(CPU_MK30DN512ZVMD10) || defined(CPU_MK30DX256ZVMD10) || defined(CPU_MK30DX128ZVMD10) || defined(CPU_MK40DN512VLL10) || \ + defined(CPU_MK40DX128VLQ10) || defined(CPU_MK40DX256VLQ10) || defined(CPU_MK40DN512VLQ10) || defined(CPU_MK40DN512VMC10) || \ + defined(CPU_MK40DX128VMD10) || defined(CPU_MK40DX256VMD10) || defined(CPU_MK40DN512VMD10) || defined(CPU_MK40DX128VLL7) || \ + defined(CPU_MK40DX256VLL7) || defined(CPU_MK40DX128VML7) || defined(CPU_MK40DX256VML7) || defined(CPU_MK40DN512ZVLL10) || \ + defined(CPU_MK40DN512ZVLQ10) || defined(CPU_MK40DX256ZVLQ10) || defined(CPU_MK40DX128ZVLQ10) || defined(CPU_MK40DN512ZVMC10) || \ + defined(CPU_MK40DN512ZVMD10) || defined(CPU_MK40DX256ZVMD10) || defined(CPU_MK40DX128ZVMD10) || defined(CPU_MK50DX256CLL10) || \ + defined(CPU_MK50DN512CLL10) || defined(CPU_MK50DN512CLQ10) || defined(CPU_MK50DX256CMC10) || defined(CPU_MK50DN512CMC10) || \ + defined(CPU_MK50DN512CMD10) || defined(CPU_MK50DX256CMD10) || defined(CPU_MK50DX256CLL7) || defined(CPU_MK50DX256CML7) || \ + defined(CPU_MK50DN512ZCLL10) || defined(CPU_MK50DX256ZCLL10) || defined(CPU_MK50DN512ZCLQ10) || defined(CPU_MK50DN512ZCMC10) || \ + defined(CPU_MK50DX256ZCMC10) || defined(CPU_MK50DN512ZCMD10) || defined(CPU_MK51DX256CLL10) || defined(CPU_MK51DN512CLL10) || \ + defined(CPU_MK51DN256CLQ10) || defined(CPU_MK51DN512CLQ10) || defined(CPU_MK51DX256CMC10) || defined(CPU_MK51DN512CMC10) || \ + defined(CPU_MK51DN256CMD10) || defined(CPU_MK51DN512CMD10) || defined(CPU_MK51DX256CLL7) || defined(CPU_MK51DX256CML7) || \ + defined(CPU_MK51DN512ZCLL10) || defined(CPU_MK51DX256ZCLL10) || defined(CPU_MK51DN512ZCLQ10) || defined(CPU_MK51DN256ZCLQ10) || \ + defined(CPU_MK51DN512ZCMC10) || defined(CPU_MK51DX256ZCMC10) || defined(CPU_MK51DN512ZCMD10) || defined(CPU_MK51DN256ZCMD10) || \ + defined(CPU_MK52DN512CLQ10) || defined(CPU_MK52DN512CMD10) || defined(CPU_MK52DN512ZCLQ10) || defined(CPU_MK52DN512ZCMD10) || \ + defined(CPU_MK53DN512CLQ10) || defined(CPU_MK53DX256CLQ10) || defined(CPU_MK53DN512CMD10) || defined(CPU_MK53DX256CMD10) || \ + defined(CPU_MK53DN512ZCLQ10) || defined(CPU_MK53DX256ZCLQ10) || defined(CPU_MK53DN512ZCMD10) || defined(CPU_MK53DX256ZCMD10) || \ + defined(CPU_MK60DN256VLL10) || defined(CPU_MK60DX256VLL10) || defined(CPU_MK60DN512VLL10) || defined(CPU_MK60DN256VLQ10) || \ + defined(CPU_MK60DX256VLQ10) || defined(CPU_MK60DN512VLQ10) || defined(CPU_MK60DN256VMC10) || defined(CPU_MK60DX256VMC10) || \ + defined(CPU_MK60DN512VMC10) || defined(CPU_MK60DN256VMD10) || defined(CPU_MK60DX256VMD10) || defined(CPU_MK60DN512VMD10) || \ + defined(CPU_MK60FN1M0VLQ12) || defined(CPU_MK60FX512VLQ12) || defined(CPU_MK60FN1M0VLQ15) || defined(CPU_MK60FX512VLQ15) || \ + defined(CPU_MK60FN1M0VMD12) || defined(CPU_MK60FX512VMD12) || defined(CPU_MK60FN1M0VMD15) || defined(CPU_MK60FX512VMD15) || \ + defined(CPU_MK60DN512ZVLL10) || defined(CPU_MK60DX256ZVLL10) || defined(CPU_MK60DN256ZVLL10) || defined(CPU_MK60DN512ZVLQ10) || \ + defined(CPU_MK60DX256ZVLQ10) || defined(CPU_MK60DN256ZVLQ10) || defined(CPU_MK60DN512ZVMC10) || defined(CPU_MK60DX256ZVMC10) || \ + defined(CPU_MK60DN256ZVMC10) || defined(CPU_MK60DN512ZVMD10) || defined(CPU_MK60DX256ZVMD10) || defined(CPU_MK60DN256ZVMD10) || \ + defined(CPU_MK61FN1M0VMD12) || defined(CPU_MK61FX512VMD12) || defined(CPU_MK61FN1M0VMD15) || defined(CPU_MK61FX512VMD15) || \ + defined(CPU_MK61FN1M0VMD12WS) || defined(CPU_MK61FX512VMD12WS) || defined(CPU_MK61FN1M0VMD15WS) || defined(CPU_MK61FX512VMD15WS) || \ + defined(CPU_MK61FN1M0VMF12) || defined(CPU_MK61FX512VMF12) || defined(CPU_MK61FN1M0VMF15) || defined(CPU_MK61FX512VMF15) || \ + defined(CPU_MK61FN1M0VMJ12) || defined(CPU_MK61FX512VMJ12) || defined(CPU_MK61FN1M0VMJ15) || defined(CPU_MK61FX512VMJ15) || \ + defined(CPU_MK61FN1M0VMJ12WS) || defined(CPU_MK61FX512VMJ12WS) || defined(CPU_MK61FN1M0VMJ15WS) || defined(CPU_MK61FX512VMJ15WS) || \ + defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK63FN1M0VMD12WS) || defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12) || \ + defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || \ + defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) || \ + defined(CPU_MK70FN1M0VMJ12WS) || defined(CPU_MK70FX512VMJ12WS) || defined(CPU_MK70FN1M0VMJ15WS) || defined(CPU_MK70FX512VMJ15WS) + /* @brief Deserial serial peripheral interface (registers MCR, TCR, CTARn, CTARn_SLAVE, SR, RSER, PUSHR, PUSHR_SLAVE, POPR, TXFRn, RXFRn if non-zero, otherwise C1, S, C2, BR, D, M).*/ + #define FSL_FEATURE_SPI_IS_DSPI (1) + /* @brief Has DMA support (register bit fields C2[RXDMAE] and C2[TXDMAE]). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_DMA_SUPPORT (1) + /* @brief Receive/transmit FIFO size in number of items.*/ +#if defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12) + #define FSL_FEATURE_SPI_FIFO_SIZEn(x) \ + ((x) == 0 ? (4) : \ + ((x) == 1 ? (1) : \ + ((x) == 2 ? (1) : (-1)))) +#else + #define FSL_FEATURE_SPI_FIFO_SIZEn(x) \ + ((x) == 0 ? (4) : \ + ((x) == 1 ? (4) : \ + ((x) == 2 ? (4) : (-1)))) +#endif + /* @brief Maximum transfer data width in bits.*/ + #define FSL_FEATURE_SPI_MAX_DATA_WIDTH (16) + /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS] on DSPI modules.)*/ + #define FSL_FEATURE_SPI_MAX_CHIP_SELECT_COUNT (6) + /* @brief Number of chip select pins. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_CHIP_SELECT_COUNTn(x) \ + ((x) == 0 ? (6) : \ + ((x) == 1 ? (4) : \ + ((x) == 2 ? (1) : (-1)))) + /* @brief Has chip select strobe capability on the PCS5 pin. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_CHIP_SELECT_STROBE (1) + /* @brief The data register name has postfix (L as low and H as high). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_DATA_REGISTER_HAS_POSTFIX (0) + /* @brief Has 16-bit data transfer support.*/ + #define FSL_FEATURE_SPI_FEATURE_16BIT_TRANSFERS (1) +#elif defined(CPU_MK10DX128VFM5) || defined(CPU_MK10DN128VFM5) || defined(CPU_MK10DX64VFM5) || defined(CPU_MK10DN64VFM5) || \ + defined(CPU_MK10DX32VFM5) || defined(CPU_MK10DN32VFM5) || defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || \ + defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) + /* @brief Deserial serial peripheral interface (registers MCR, TCR, CTARn, CTARn_SLAVE, SR, RSER, PUSHR, PUSHR_SLAVE, POPR, TXFRn, RXFRn if non-zero, otherwise C1, S, C2, BR, D, M).*/ + #define FSL_FEATURE_SPI_IS_DSPI (1) + /* @brief Has DMA support (register bit fields C2[RXDMAE] and C2[TXDMAE]). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_DMA_SUPPORT (1) + /* @brief Receive/transmit FIFO size in number of items.*/ + #define FSL_FEATURE_SPI_FIFO_SIZE (4) + /* @brief Maximum transfer data width in bits.*/ + #define FSL_FEATURE_SPI_MAX_DATA_WIDTH (16) + /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS] on DSPI modules.)*/ + #define FSL_FEATURE_SPI_MAX_CHIP_SELECT_COUNT (6) + /* @brief Number of chip select pins. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_CHIP_SELECT_COUNT (4) + /* @brief Has chip select strobe capability on the PCS5 pin. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_CHIP_SELECT_STROBE (1) + /* @brief The data register name has postfix (L as low and H as high). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_DATA_REGISTER_HAS_POSTFIX (0) + /* @brief Has 16-bit data transfer support.*/ + #define FSL_FEATURE_SPI_FEATURE_16BIT_TRANSFERS (1) +#elif defined(CPU_MK11DX128VLK5) || defined(CPU_MK11DX256VLK5) || defined(CPU_MK11DN512VLK5) || defined(CPU_MK11DX128VLK5WS) || \ + defined(CPU_MK11DX256VLK5WS) || defined(CPU_MK11DN512VLK5WS) || defined(CPU_MK11DX128VMC5) || defined(CPU_MK11DX256VMC5) || \ + defined(CPU_MK11DN512VMC5) || defined(CPU_MK11DX128VMC5WS) || defined(CPU_MK11DX256VMC5WS) || defined(CPU_MK11DN512VMC5WS) || \ + defined(CPU_MK12DX128VLH5) || defined(CPU_MK12DX256VLH5) || defined(CPU_MK12DN512VLH5) || defined(CPU_MK12DX128VLK5) || \ + defined(CPU_MK12DX256VLK5) || defined(CPU_MK12DN512VLK5) || defined(CPU_MK12DX128VMC5) || defined(CPU_MK12DX256VMC5) || \ + defined(CPU_MK12DN512VMC5) || defined(CPU_MK12DX128VLF5) || defined(CPU_MK12DX256VLF5) || defined(CPU_MK21DX128VLK5) || \ + defined(CPU_MK21DX256VLK5) || defined(CPU_MK21DN512VLK5) || defined(CPU_MK21DX128VLK5WS) || defined(CPU_MK21DX256VLK5WS) || \ + defined(CPU_MK21DN512VLK5WS) || defined(CPU_MK21DX128VMC5) || defined(CPU_MK21DX256VMC5) || defined(CPU_MK21DN512VMC5) || \ + defined(CPU_MK21DX128VMC5WS) || defined(CPU_MK21DX256VMC5WS) || defined(CPU_MK21DN512VMC5WS) || defined(CPU_MK22DX128VLH5) || \ + defined(CPU_MK22DX256VLH5) || defined(CPU_MK22DN512VLH5) || defined(CPU_MK22DX128VLK5) || defined(CPU_MK22DX256VLK5) || \ + defined(CPU_MK22DN512VLK5) || defined(CPU_MK22DX128VMC5) || defined(CPU_MK22DX256VMC5) || defined(CPU_MK22DN512VMC5) || \ + defined(CPU_MK22DX128VLF5) || defined(CPU_MK22DX256VLF5) + /* @brief Deserial serial peripheral interface (registers MCR, TCR, CTARn, CTARn_SLAVE, SR, RSER, PUSHR, PUSHR_SLAVE, POPR, TXFRn, RXFRn if non-zero, otherwise C1, S, C2, BR, D, M).*/ + #define FSL_FEATURE_SPI_IS_DSPI (1) + /* @brief Has DMA support (register bit fields C2[RXDMAE] and C2[TXDMAE]). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_DMA_SUPPORT (1) + /* @brief Receive/transmit FIFO size in number of items.*/ + #define FSL_FEATURE_SPI_FIFO_SIZE (4) + /* @brief Maximum transfer data width in bits.*/ + #define FSL_FEATURE_SPI_MAX_DATA_WIDTH (16) + /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS] on DSPI modules.)*/ + #define FSL_FEATURE_SPI_MAX_CHIP_SELECT_COUNT (5) + /* @brief Number of chip select pins. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_CHIP_SELECT_COUNTn(x) \ + ((x) == 0 ? (5) : \ + ((x) == 1 ? (3) : (-1))) + /* @brief Has chip select strobe capability on the PCS5 pin. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_CHIP_SELECT_STROBE (0) + /* @brief The data register name has postfix (L as low and H as high). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_DATA_REGISTER_HAS_POSTFIX (0) + /* @brief Has 16-bit data transfer support.*/ + #define FSL_FEATURE_SPI_FEATURE_16BIT_TRANSFERS (1) +#elif defined(CPU_MK22FN512VDC12) + /* @brief Deserial serial peripheral interface (registers MCR, TCR, CTARn, CTARn_SLAVE, SR, RSER, PUSHR, PUSHR_SLAVE, POPR, TXFRn, RXFRn if non-zero, otherwise C1, S, C2, BR, D, M).*/ + #define FSL_FEATURE_SPI_IS_DSPI (1) + /* @brief Has DMA support (register bit fields C2[RXDMAE] and C2[TXDMAE]). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_DMA_SUPPORT (1) + /* @brief Receive/transmit FIFO size in number of items.*/ + #define FSL_FEATURE_SPI_FIFO_SIZEn(x) \ + ((x) == 0 ? (4) : \ + ((x) == 1 ? (1) : (-1))) + /* @brief Maximum transfer data width in bits.*/ + #define FSL_FEATURE_SPI_MAX_DATA_WIDTH (16) + /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS] on DSPI modules.)*/ + #define FSL_FEATURE_SPI_MAX_CHIP_SELECT_COUNT (6) + /* @brief Number of chip select pins. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_CHIP_SELECT_COUNT (0) + /* @brief Has chip select strobe capability on the PCS5 pin. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_CHIP_SELECT_STROBE (1) + /* @brief The data register name has postfix (L as low and H as high). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_DATA_REGISTER_HAS_POSTFIX (0) + /* @brief Has 16-bit data transfer support.*/ + #define FSL_FEATURE_SPI_FEATURE_16BIT_TRANSFERS (1) +#elif defined(CPU_MK22FN512VDC12) + /* @brief Deserial serial peripheral interface (registers MCR, TCR, CTARn, CTARn_SLAVE, SR, RSER, PUSHR, PUSHR_SLAVE, POPR, TXFRn, RXFRn if non-zero, otherwise C1, S, C2, BR, D, M).*/ + #define FSL_FEATURE_SPI_IS_DSPI (1) + /* @brief Has DMA support (register bit fields C2[RXDMAE] and C2[TXDMAE]). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_DMA_SUPPORT (1) + /* @brief Receive/transmit FIFO size in number of items.*/ + #define FSL_FEATURE_SPI_FIFO_SIZEn(x) \ + ((x) == 0 ? (4) : \ + ((x) == 1 ? (1) : (-1))) + /* @brief Maximum transfer data width in bits.*/ + #define FSL_FEATURE_SPI_MAX_DATA_WIDTH (16) + /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS] on DSPI modules.)*/ + #define FSL_FEATURE_SPI_MAX_CHIP_SELECT_COUNT (6) + /* @brief Number of chip select pins. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_CHIP_SELECT_COUNTn(x) \ + ((x) == 0 ? (5) : \ + ((x) == 1 ? (3) : (-1))) + /* @brief Has chip select strobe capability on the PCS5 pin. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_CHIP_SELECT_STROBE (1) + /* @brief The data register name has postfix (L as low and H as high). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_DATA_REGISTER_HAS_POSTFIX (0) + /* @brief Has 16-bit data transfer support.*/ + #define FSL_FEATURE_SPI_FEATURE_16BIT_TRANSFERS (1) +#elif defined(CPU_MKE02Z64VLC2) || defined(CPU_MKE02Z32VLC2) || defined(CPU_MKE02Z16VLC2) || defined(CPU_MKE02Z64VLD2) || \ + defined(CPU_MKE02Z32VLD2) || defined(CPU_MKE02Z16VLD2) || defined(CPU_MKE02Z64VLH2) || defined(CPU_MKE02Z64VQH2) || \ + defined(CPU_MKE02Z32VLH2) || defined(CPU_MKE02Z32VQH2) || defined(CPU_MKE04Z8VFK4) || defined(CPU_MKE04Z8VTG4) || \ + defined(CPU_MKE04Z8VWJ4) || defined(CPU_MKL02Z32CAF4) || defined(CPU_MKL02Z8VFG4) || defined(CPU_MKL02Z16VFG4) || \ + defined(CPU_MKL02Z32VFG4) || defined(CPU_MKL02Z16VFK4) || defined(CPU_MKL02Z32VFK4) || defined(CPU_MKL02Z16VFM4) || \ + defined(CPU_MKL02Z32VFM4) + /* @brief Deserial serial peripheral interface (registers MCR, TCR, CTARn, CTARn_SLAVE, SR, RSER, PUSHR, PUSHR_SLAVE, POPR, TXFRn, RXFRn if non-zero, otherwise C1, S, C2, BR, D, M).*/ + #define FSL_FEATURE_SPI_IS_DSPI (0) + /* @brief Has DMA support (register bit fields C2[RXDMAE] and C2[TXDMAE]). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_DMA_SUPPORT (0) + /* @brief Receive/transmit FIFO size in number of items.*/ + #define FSL_FEATURE_SPI_FIFO_SIZE (1) + /* @brief Maximum transfer data width in bits.*/ + #define FSL_FEATURE_SPI_MAX_DATA_WIDTH (8) + /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS] on DSPI modules.)*/ + #define FSL_FEATURE_SPI_MAX_CHIP_SELECT_COUNT (1) + /* @brief Number of chip select pins. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_CHIP_SELECT_COUNT (0) + /* @brief Has chip select strobe capability on the PCS5 pin. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_CHIP_SELECT_STROBE (0) + /* @brief The data register name has postfix (L as low and H as high). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_DATA_REGISTER_HAS_POSTFIX (1) + /* @brief Has 16-bit data transfer support.*/ + #define FSL_FEATURE_SPI_16BIT_TRANSFERS (0) +#elif defined(CPU_MKL04Z8VFK4) || defined(CPU_MKL04Z16VFK4) || defined(CPU_MKL04Z32VFK4) || defined(CPU_MKL04Z8VLC4) || \ + defined(CPU_MKL04Z16VLC4) || defined(CPU_MKL04Z32VLC4) || defined(CPU_MKL04Z8VFM4) || defined(CPU_MKL04Z16VFM4) || \ + defined(CPU_MKL04Z32VFM4) || defined(CPU_MKL04Z16VLF4) || defined(CPU_MKL04Z32VLF4) || defined(CPU_MKL05Z8VFK4) || \ + defined(CPU_MKL05Z16VFK4) || defined(CPU_MKL05Z32VFK4) || defined(CPU_MKL05Z8VLC4) || defined(CPU_MKL05Z16VLC4) || \ + defined(CPU_MKL05Z32VLC4) || defined(CPU_MKL05Z8VFM4) || defined(CPU_MKL05Z16VFM4) || defined(CPU_MKL05Z32VFM4) || \ + defined(CPU_MKL05Z16VLF4) || defined(CPU_MKL05Z32VLF4) || defined(CPU_MKL14Z32VFM4) || defined(CPU_MKL14Z64VFM4) || \ + defined(CPU_MKL14Z32VFT4) || defined(CPU_MKL14Z64VFT4) || defined(CPU_MKL14Z32VLH4) || defined(CPU_MKL14Z64VLH4) || \ + defined(CPU_MKL14Z32VLK4) || defined(CPU_MKL14Z64VLK4) || defined(CPU_MKL15Z32VFM4) || defined(CPU_MKL15Z64VFM4) || \ + defined(CPU_MKL15Z128VFM4) || defined(CPU_MKL15Z32VFT4) || defined(CPU_MKL15Z64VFT4) || defined(CPU_MKL15Z128VFT4) || \ + defined(CPU_MKL15Z32VLH4) || defined(CPU_MKL15Z64VLH4) || defined(CPU_MKL15Z128VLH4) || defined(CPU_MKL15Z32VLK4) || \ + defined(CPU_MKL15Z64VLK4) || defined(CPU_MKL15Z128VLK4) || defined(CPU_MKL24Z32VFM4) || defined(CPU_MKL24Z64VFM4) || \ + defined(CPU_MKL24Z32VFT4) || defined(CPU_MKL24Z64VFT4) || defined(CPU_MKL24Z32VLH4) || defined(CPU_MKL24Z64VLH4) || \ + defined(CPU_MKL24Z32VLK4) || defined(CPU_MKL24Z64VLK4) || defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || \ + defined(CPU_MKL25Z128VFM4) || defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || \ + defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || defined(CPU_MKL25Z32VLK4) || \ + defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4) + /* @brief Deserial serial peripheral interface (registers MCR, TCR, CTARn, CTARn_SLAVE, SR, RSER, PUSHR, PUSHR_SLAVE, POPR, TXFRn, RXFRn if non-zero, otherwise C1, S, C2, BR, D, M).*/ + #define FSL_FEATURE_SPI_IS_DSPI (0) + /* @brief Has DMA support (register bit fields C2[RXDMAE] and C2[TXDMAE]). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_DMA_SUPPORT (1) + /* @brief Receive/transmit FIFO size in number of items.*/ + #define FSL_FEATURE_SPI_FIFO_SIZE (1) + /* @brief Maximum transfer data width in bits.*/ + #define FSL_FEATURE_SPI_MAX_DATA_WIDTH (8) + /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS] on DSPI modules.)*/ + #define FSL_FEATURE_SPI_MAX_CHIP_SELECT_COUNT (1) + /* @brief Number of chip select pins. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_CHIP_SELECT_COUNT (0) + /* @brief Has chip select strobe capability on the PCS5 pin. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_CHIP_SELECT_STROBE (0) + /* @brief The data register name has postfix (L as low and H as high). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_DATA_REGISTER_HAS_POSTFIX (1) + /* @brief Has 16-bit data transfer support.*/ + #define FSL_FEATURE_SPI_16BIT_TRANSFERS (0) +#elif defined(CPU_MKL16Z32VFM4) || defined(CPU_MKL16Z64VFM4) || defined(CPU_MKL16Z128VFM4) || defined(CPU_MKL16Z32VFT4) || \ + defined(CPU_MKL16Z64VFT4) || defined(CPU_MKL16Z128VFT4) || defined(CPU_MKL16Z32VLH4) || defined(CPU_MKL16Z64VLH4) || \ + defined(CPU_MKL16Z128VLH4) || defined(CPU_MKL16Z256VLH4) || defined(CPU_MKL16Z256VLK4) || defined(CPU_MKL26Z32VFM4) || \ + defined(CPU_MKL26Z64VFM4) || defined(CPU_MKL26Z128VFM4) || defined(CPU_MKL26Z32VFT4) || defined(CPU_MKL26Z64VFT4) || \ + defined(CPU_MKL26Z128VFT4) || defined(CPU_MKL26Z32VLH4) || defined(CPU_MKL26Z64VLH4) || defined(CPU_MKL26Z128VLH4) || \ + defined(CPU_MKL26Z256VLH4) || defined(CPU_MKL26Z256VLK4) || defined(CPU_MKL26Z128VLL4) || defined(CPU_MKL26Z256VLL4) || \ + defined(CPU_MKL26Z128VMC4) || defined(CPU_MKL26Z256VMC4) || defined(CPU_MKL34Z64VLH4) || defined(CPU_MKL34Z64VLL4) || \ + defined(CPU_MKL36Z64VLH4) || defined(CPU_MKL36Z128VLH4) || defined(CPU_MKL36Z256VLH4) || defined(CPU_MKL36Z64VLL4) || \ + defined(CPU_MKL36Z128VLL4) || defined(CPU_MKL36Z256VLL4) || defined(CPU_MKL36Z128VMC4) || defined(CPU_MKL36Z256VMC4) || \ + defined(CPU_MKL46Z128VLH4) || defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || defined(CPU_MKL46Z256VLL4) || \ + defined(CPU_MKL46Z128VMC4) || defined(CPU_MKL46Z256VMC4) + /* @brief Deserial serial peripheral interface (registers MCR, TCR, CTARn, CTARn_SLAVE, SR, RSER, PUSHR, PUSHR_SLAVE, POPR, TXFRn, RXFRn if non-zero, otherwise C1, S, C2, BR, D, M).*/ + #define FSL_FEATURE_SPI_IS_DSPI (0) + /* @brief Has DMA support (register bit fields C2[RXDMAE] and C2[TXDMAE]). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_DMA_SUPPORT (1) + /* @brief Receive/transmit FIFO size in number of items.*/ + #define FSL_FEATURE_SPI_FIFO_SIZEn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (8) : (-1))) + /* @brief Maximum transfer data width in bits.*/ + #define FSL_FEATURE_SPI_MAX_DATA_WIDTH (16) + /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS] on DSPI modules.)*/ + #define FSL_FEATURE_SPI_MAX_CHIP_SELECT_COUNT (1) + /* @brief Number of chip select pins. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_CHIP_SELECT_COUNT (0) + /* @brief Has chip select strobe capability on the PCS5 pin. (Only valid for DSPI modules.)*/ + #define FSL_FEATURE_SPI_HAS_CHIP_SELECT_STROBE (0) + /* @brief The data register name has postfix (L as low and H as high). (Only valid for non-DSPI modules.)*/ + #define FSL_FEATURE_SPI_DATA_REGISTER_HAS_POSTFIX (1) + /* @brief Has 16-bit data transfer support.*/ + #define FSL_FEATURE_SPI_16BIT_TRANSFERS (1) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_DSPI_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/dspi/fsl_dspi_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,938 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_DSPI_HAL_H__) +#define __FSL_DSPI_HAL_H__ + +#include <assert.h> +#include <stdint.h> +#include <stdbool.h> +#include "fsl_dspi_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup dspi_hal + * @{ + */ + +/*! @file*/ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/* Defines constant value arrays for the baud rate pre-scalar and scalar divider values.*/ +static const uint32_t s_baudratePrescaler[] = { 2, 3, 5, 7 }; +static const uint32_t s_baudrateScaler[] = { 2, 4, 6, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, + 4096, 8192, 16384, 32768 }; + +/*! @brief Error codes for the DSPI driver.*/ +typedef enum _dspi_status +{ + kStatus_DSPI_Success = 0, + kStatus_DSPI_SlaveTxUnderrun, /*!< DSPI Slave Tx Under run error*/ + kStatus_DSPI_SlaveRxOverrun, /*!< DSPI Slave Rx Overrun error*/ + kStatus_DSPI_Timeout, /*!< DSPI transfer timed out*/ + kStatus_DSPI_Busy, /*!< DSPI instance is already busy performing a + transfer.*/ + kStatus_DSPI_NoTransferInProgress, /*!< Attempt to abort a transfer when no transfer + was in progress*/ + kStatus_DSPI_InvalidBitCount, /*!< bits-per-frame value not valid*/ + kStatus_DSPI_InvalidInstanceNumber, /*!< DSPI instance number does not match current count*/ + kStatus_DSPI_OutOfRange /*< DSPI out-of-range error used in slave callback */ +} dspi_status_t; + +/*! @brief DSPI master or slave configuration*/ +typedef enum _dspi_master_slave_mode { + kDspiMaster = 1, /*!< DSPI peripheral operates in master mode*/ + kDspiSlave = 0 /*!< DSPI peripheral operates in slave mode*/ +} dspi_master_slave_mode_t; + +/*! @brief DSPI clock polarity configuration for a given CTAR*/ +typedef enum _dspi_clock_polarity { + kDspiClockPolarity_ActiveHigh = 0, /*!< Active-high DSPI clock (idles low)*/ + kDspiClockPolarity_ActiveLow = 1 /*!< Active-low DSPI clock (idles high)*/ +} dspi_clock_polarity_t; + +/*! @brief DSPI clock phase configuration for a given CTAR*/ +typedef enum _dspi_clock_phase { + kDspiClockPhase_FirstEdge = 0, /*!< Data is captured on the leading edge of the SCK and + changed on the following edge.*/ + kDspiClockPhase_SecondEdge = 1 /*!< Data is changed on the leading edge of the SCK and + captured on the following edge.*/ +} dspi_clock_phase_t; + +/*! @brief DSPI data shifter direction options for a given CTAR*/ +typedef enum _dspi_shift_direction { + kDspiMsbFirst = 0, /*!< Data transfers start with most significant bit.*/ + kDspiLsbFirst = 1 /*!< Data transfers start with least significant bit.*/ +} dspi_shift_direction_t; + +/*! @brief DSPI Clock and Transfer Attributes Register (CTAR) selection*/ +typedef enum _dspi_ctar_selection { + kDspiCtar0 = 0, /*!< CTAR0 selection option for master or slave mode*/ + kDspiCtar1 = 1 /*!< CTAR1 selection option for master mode only*/ +} dspi_ctar_selection_t; + +/*! @brief DSPI Peripheral Chip Select (PCS) Polarity configuration.*/ +typedef enum _dspi_pcs_polarity_config { + kDspiPcs_ActiveHigh = 0, /*!< PCS Active High (idles low)*/ + kDspiPcs_ActiveLow = 1 /*!< PCS Active Low (idles high)*/ +} dspi_pcs_polarity_config_t; + +/*! @brief DSPI Peripheral Chip Select (PCS) configuration (which PCS to configure)*/ +typedef enum _dspi_which_pcs_config { + kDspiPcs0 = 1 << 0, /*!< PCS[0] */ + kDspiPcs1 = 1 << 1, /*!< PCS[1] */ + kDspiPcs2 = 1 << 2, /*!< PCS[2] */ + kDspiPcs3 = 1 << 3, /*!< PCS[3] */ + kDspiPcs4 = 1 << 4, /*!< PCS[4] */ + kDspiPcs5 = 1 << 5 /*!< PCS[5] */ +} dspi_which_pcs_config_t; + +/*! + * @brief DSPI Sample Point: Controls when the DSPI master samples SIN in Modified Transfer + * Format. This field is valid only when CPHA bit in CTAR register is 0. + */ +typedef enum _dspi_master_sample_point { + kDspiSckToSin_0Clock = 0, /*!< 0 system clocks between SCK edge and SIN sample*/ + kDspiSckToSin_1Clock = 1, /*!< 1 system clock between SCK edge and SIN sample*/ + kDspiSckToSin_2Clock = 2 /*!< 2 system clocks between SCK edge and SIN sample*/ +} dspi_master_sample_point_t; + +/*! @brief DSPI FIFO selects*/ +typedef enum _dspi_fifo { + kDspiTxFifo = 0, /*!< DSPI Tx FIFO*/ + kDspiRxFifo = 1 /*!< DSPI Rx FIFO.*/ +} dspi_fifo_t; + +/*! @brief DSPI status flags and interrupt request enable*/ +typedef enum _dspi_status_and_interrupt_request { + kDspiTxComplete = BP_SPI_RSER_TCF_RE, /*!< TCF status/interrupt enable */ + kDspiTxAndRxStatus = BP_SPI_SR_TXRXS, /*!< TXRXS status only, no interrupt*/ + kDspiEndOfQueue = BP_SPI_RSER_EOQF_RE, /*!< EOQF status/interrupt enable*/ + kDspiTxFifoUnderflow = BP_SPI_RSER_TFUF_RE, /*!< TFUF status/interrupt enable*/ + kDspiTxFifoFillRequest = BP_SPI_RSER_TFFF_RE, /*!< TFFF status/interrupt enable*/ + kDspiRxFifoOverflow = BP_SPI_RSER_RFOF_RE, /*!< RFOF status/interrupt enable*/ + kDspiRxFifoDrainRequest = BP_SPI_RSER_RFDF_RE /*!< RFDF status/interrupt enable*/ + +} dspi_status_and_interrupt_request_t; + +/*! @brief DSPI FIFO counter or pointer defines based on bit positions*/ +typedef enum _dspi_fifo_counter_pointer { + kDspiRxFifoPointer = BP_SPI_SR_POPNXTPTR, /*!< Rx FIFO pointer*/ + kDspiRxFifoCounter = BP_SPI_SR_RXCTR, /*!< Rx FIFO counter*/ + kDspiTxFifoPointer = BP_SPI_SR_TXNXTPTR, /*!< Tx FIFO pointer*/ + kDspiTxFifoCounter = BP_SPI_SR_TXCTR /*!< Tx FIFO counter*/ +} dspi_fifo_counter_pointer_t; + +/*! + * @brief DSPI data format settings configuration structure + * + * This structure contains the data format settings. These settings apply to a specific + * CTARn register, which the user must provide in this structure. + */ +typedef struct DspiDataFormatConfig { + uint32_t bitsPerFrame; /*!< Bits per frame, minimum 4, maximum 16 (master), 32 (slave) */ + dspi_clock_polarity_t clkPolarity; /*!< Active high or low clock polarity*/ + dspi_clock_phase_t clkPhase; /*!< Clock phase setting to change and capture data*/ + dspi_shift_direction_t direction; /*!< MSB or LSB data shift direction + This setting relevant only in master mode and + can be ignored in slave mode */ +} dspi_data_format_config_t; + +/*! + * @brief DSPI hardware configuration settings for master mode + * + * Use an instance of this structure with the dspi_hal_master_init() to configure the + * most common settings of the DSPI peripheral in master mode with a single function call. + * + * The @c bitsPerSec member is handled in a special way. If this value is set to 0, then the baud is + * not set by the dspi_hal_master_init(), and must be set with a separate call to either the + * dspi_hal_set_baud() or the dspi_hal_set_baud_divisors(). This can be useful when you know the + * divisors in advance and don't want to spend the time to compute them for the provided rate + * in bits/sec. + * + * This structure also contains another structure template as a member: + * @c dspi_data_format_config_t @c dataConfig. + * An example usage for this is assuming declaration @c dspi_master_config_t + * @c dspiConfig: + @code + dspiConfig.dataConfig.bitsPerFrame = 16; + dspiConfig.dataConfig.clkPolarity = kDspiClockPolarity_ActiveHigh; + dspiConfig.dataConfig.clkPhase = kDspiClockPhase_FirstEdge; + dspiConfig.dataConfig.direction = kDspiMsbFirst; + @endcode + */ +typedef struct DspiMasterConfig { + bool isEnabled; /*!< Set to true to enable the DSPI peripheral.*/ + dspi_ctar_selection_t whichCtar; /*!< Desired Clock and Transfer Attributes Register (CTAR)*/ + uint32_t bitsPerSec; /*!< Baud rate in bits per second*/ + uint32_t sourceClockInHz; /*!< Module source clock */ + dspi_data_format_config_t dataConfig; /*!< Data format configuration structure*/ + bool isSckContinuous; /*!< Disable(0) or Enable(1) continuous SCK operation*/ + dspi_which_pcs_config_t whichPcs; /*!< Desired Peripheral Chip Select (PCS) */ + dspi_pcs_polarity_config_t pcsPolarity; /*!< Peripheral Chip Select (PCS) polarity setting.*/ + dspi_master_sample_point_t masterInSample; /*!< Master data-in (SIN) sample point setting.*/ + bool isModifiedTimingFormatEnabled; /*!< Disable(0) or Enable(1) modified timing format.*/ + bool isTxFifoDisabled; /*!< Disable(1) or Enable(0) Tx FIFO */ + bool isRxFifoDisabled; /*!< Disable(1) or Enable(0) Rx FIFO */ +} dspi_master_config_t; + +/*! + * @brief DSPI hardware configuration settings for slave mode. + * + * Use an instance of this structure with the dspi_hal_slave_init() to configure the + * most common settings of the DSPI peripheral in slave mode with a single function call. + */ +typedef struct DspiSlaveConfig { + bool isEnabled; /*!< Set to true to enable the DSPI peripheral. */ + dspi_data_format_config_t dataConfig; /*!< Data format configuration structure */ + bool isTxFifoDisabled; /*!< Disable(1) or Enable(0) Tx FIFO */ + bool isRxFifoDisabled; /*!< Disable(1) or Enable(0) Rx FIFO */ +} dspi_slave_config_t; + +/*! + * @brief DSPI baud rate divisors settings configuration structure. + * + * Note: These settings are relevant only in master mode. + * This structure contains the baud rate divisor settings, which provides the user with the option to + * explicitly set these baud rate divisors. In addition, the user must also set the + * CTARn register with the divisor settings. + */ +typedef struct DspiBaudRateDivisors { + bool doubleBaudRate; /*!< Double Baud rate parameter setting */ + uint32_t prescaleDivisor; /*!< Baud Rate Pre-scalar parameter setting*/ + uint32_t baudRateDivisor; /*!< Baud Rate scaler parameter setting */ +} dspi_baud_rate_divisors_t; + +/*! + * @brief DSPI delay settings configuration structure + * + * Note: These settings are relevant only in master mode. + * This structure contains the various delay settings. These settings apply to a specific + * CTARn register, which the user must provide in this structure. + */ +typedef struct DspiDelaySettingsConfig { + uint32_t pcsToSckPre; /*!< PCS to SCK delay pre-scalar (PCSSCK) */ + uint32_t pcsToSck; /*!< PCS to SCK Delay scalar (CSSCK) */ + uint32_t afterSckPre; /*!< After SCK delay pre-scalar (PASC)*/ + uint32_t afterSck; /*!< After SCK delay scalar (ASC)*/ + uint32_t afterTransferPre; /*!< Delay after transfer pre-scalar (PDT)*/ + uint32_t afterTransfer; /*!< Delay after transfer scalar (DT) */ +} dspi_delay_settings_config_t; + +/*! + * @brief DSPI command and data configuration structure + * + * Note: This structure is used with the PUSHR register, which + * provides the means to write to the Tx FIFO. Data written to this register is + * transferred to the Tx FIFO. Eight or sixteen-bit write accesses to the PUSHR transfer all + * 32 register bits to the Tx FIFO. The register structure is different in master and slave + * modes. In master mode, the register provides 16-bit command and 16-bit data to the Tx + * FIFO. In slave mode all 32 register bits can be used as data, supporting up to 32-bit SPI + * frame operation. + */ +typedef struct DspiCommandDataConfig { + bool isChipSelectContinuous; /*!< Option to enable the continuous assertion of chip select + between transfers*/ + dspi_ctar_selection_t whichCtar; /*!< The desired Clock and Transfer Attributes + Register (CTAR) to use for CTAS*/ + dspi_which_pcs_config_t whichPcs; /*!< The desired PCS signal to use for the data transfer*/ + bool isEndOfQueue; /*!< Signals that the current transfer is the last in the queue*/ + bool clearTransferCount; /*!< Clears SPI_TCNT field; cleared before transmission starts*/ +} dspi_command_config_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @name Configuration + * @{ + */ + +/*! + * @brief Configure the DSPI peripheral in master mode + * + * This function initializes the module to the user defined settings and default settings in master + * mode. This is an example demonstrating how to define the dspi_master_config_t structure and call + * the dspi_hal_master_init function: + @code + dspi_master_config_t dspiConfig; + dspiConfig.isEnabled = false; + dspiConfig.whichCtar = kDspiCtar0; + dspiConfig.bitsPerSec = 0; + dspiConfig.sourceClockInHz = dspiSourceClock; + dspiConfig.isSckContinuous = false; + dspiConfig.whichPcs = kDspiPcs0; + dspiConfig.pcsPolarity = kDspiPcs_ActiveLow; + dspiConfig.masterInSample = kDspiSckToSin_0Clock; + dspiConfig.isModifiedTimingFormatEnabled = false; + dspiConfig.isTxFifoDisabled = false; + dspiConfig.isRxFifoDisabled = false; + dspiConfig.dataConfig.bitsPerFrame = 16; + dspiConfig.dataConfig.clkPolarity = kDspiClockPolarity_ActiveHigh; + dspiConfig.dataConfig.clkPhase = kDspiClockPhase_FirstEdge; + dspiConfig.dataConfig.direction = kDspiMsbFirst; + dspi_hal_master_init(instance, &dspiConfig, calculatedBaudRate); + @endcode + * + * @param instance Module instance number + * @param config Pointer to the master mode configuration data structure + * @param calculatedBaudRate The calculated baud rate passed back to the user for them to determine + * if the calculated baud rate is close enough to meet their needs. + * @return An error code or kStatus_DSPI_Success. + */ +dspi_status_t dspi_hal_master_init(uint32_t instance, const dspi_master_config_t * config, + uint32_t * calculatedBaudRate); + +/*! + * @brief Configures the DSPI peripheral in slave mode. + * + * This function initializes the DSPI module for slave mode. This is an example demonstrating how + * to define the dspi_slave_config_t structure and call the dspi_hal_slave_init function: + @code + dspi_slave_config_t dspiConfig; + dspiConfig.isEnabled = false; + dspiConfig.isTxFifoDisabled = false; + dspiConfig.isRxFifoDisabled = false; + dspiConfig.dataConfig.bitsPerFrame = 16; + dspiConfig.dataConfig.clkPolarity = kDspiClockPolarity_ActiveHigh; + dspiConfig.dataConfig.clkPhase = kDspiClockPhase_FirstEdge; + dspi_hal_slave_init(instance, &dspiConfig); + @endcode + * + * @param instance Module instance number + * @param config Pointer to the slave mode configuration data structure + * @return An error code or kStatus_DSPI_Success. + */ +dspi_status_t dspi_hal_slave_init(uint32_t instance, const dspi_slave_config_t * config); + +/*! + * @brief Restores the DSPI to reset the configuration. + * + * This function basically resets all of the DSPI registers to their default setting including + * disabling the module. + * + * @param instance Module instance number + */ +void dspi_hal_reset(uint32_t instance); + +/*! + * @brief Enable the DSPI peripheral, set MCR MDIS to 0. + * + * @param instance Module instance number + */ +static inline void dspi_hal_enable(uint32_t instance) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + HW_SPI_MCR_CLR(instance, BM_SPI_MCR_MDIS); +} + +/*! + * @brief Disables the DSPI peripheral, sets MCR MDIS to 1. + * + * @param instance Module instance number + */ +static inline void dspi_hal_disable(uint32_t instance) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + HW_SPI_MCR_SET(instance, BM_SPI_MCR_MDIS); +} + +/*! + * @brief Sets the DSPI baud rate in bits per second. + * + * This function takes in the desired bitsPerSec (baud rate) and calculates the nearest + * possible baud rate without exceeding the desired baud rate, and returns the calculated + * baud rate in bits-per-second. It requires that the caller also provide the frequency of the + * module source clock (in Hertz). + * + * @param instance Module instance number + * @param whichCtar The desired Clock and Transfer Attributes Register (CTAR) of the type + * dspi_ctar_selection_t + * @param bitsPerSec The desired baud rate in bits per second + * @param sourceClockInHz Module source input clock in Hertz + * @return The actual calculated baud rate + */ +uint32_t dspi_hal_set_baud(uint32_t instance, dspi_ctar_selection_t whichCtar, uint32_t bitsPerSec, + uint32_t sourceClockInHz); + +/*! + * @brief Configures the baud rate divisors manually. + * + * This function allows the caller to manually set the baud rate divisors in the event that + * these dividers are known and the caller does not wish to call the dspi_hal_set_baud function. + * + * @param instance Module instance number + * @param whichCtar The desired Clock and Transfer Attributes Register (CTAR) of type + * dspi_ctar_selection_t + * @param divisors Pointer to a structure containing the user defined baud rate divisor settings + */ +void dspi_hal_set_baud_divisors(uint32_t instance, + dspi_ctar_selection_t whichCtar, + const dspi_baud_rate_divisors_t * divisors); + +/*! + * @brief Configures the DSPI for master or slave. + * + * @param instance Module instance number + * @param mode Mode setting (master or slave) of type dspi_master_slave_mode_t + */ +static inline void dspi_hal_set_master_slave(uint32_t instance, dspi_master_slave_mode_t mode) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + BW_SPI_MCR_MSTR(instance, (uint32_t)mode); +} + +/*! + * @brief Configures the DSPI for the continuous SCK operation. + * + * @param instance Module instance number + * @param enable Enables (true) or disables(false) continuous SCK operation. + */ +static inline void dspi_hal_configure_continuous_sck(uint32_t instance, bool enable) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + BW_SPI_MCR_CONT_SCKE(instance, (enable == true)); +} + +/*! + * @brief Configures the DSPI to enable modified timing format. + * + * @param instance Module instance number + * @param enable Enables (true) or disables(false) modified timing format. + */ +static inline void dspi_hal_configure_modified_timing_format(uint32_t instance, bool enable) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + BW_SPI_MCR_MTFE(instance, (enable == true)); +} + +/*! + * @brief Configures the DSPI peripheral chip select strobe enable. Configures the PCS[5] to be the + * active-low PCS Strobe output. + * + * PCS[5] is a special case that can be configured as an active low PCS strobe or as a Peripheral + * Chip Select in master mode. When configured as a strobe, it provides a signal to an external + * demultiplexer to decode PCS[0] to PCS[4] signals into as many as 128 glitch-free PCS signals. + * + * @param instance Module instance number + * @param enable Enable (true) PCS[5] to operate as the peripheral chip select (PCS) strobe + * If disable (false), PCS[5] operates as a peripheral chip select + */ +static inline void dspi_hal_configure_pcs_strobe(uint32_t instance, bool enable) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + BW_SPI_MCR_PCSSE(instance, (enable == true)); +} + +/*! + * @brief Configures the DSPI received FIFO overflow overwrite enable. + * + * When enabled, this function allows incoming receive data to overwrite the existing data in the + * receive shift register when the Rx FIFO is full. Otherwise when disabled, the incoming data + * is ignored when the RX FIFO is full. + * + * @param instance Module instance number. + * @param enable If enabled (true), allows incoming data to overwrite Rx FIFO contents when full, + * else incoming data is ignored. + */ +static inline void dspi_hal_configure_rx_fifo_overwrite(uint32_t instance, bool enable) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + BW_SPI_MCR_ROOE(instance, (enable == true)); +} + +/*! + * @brief Configures the DSPI peripheral chip select polarity. + * + * This function takes in the desired peripheral chip select (PCS) and it's + * corresponding desired polarity and configures the PCS signal to operate with the + * desired characteristic. + * + * @param instance Module instance number + * @param pcs The particular peripheral chip select (parameter value is of type + * dspi_which_pcs_config_t) for which we wish to apply the active high or active + * low characteristic. + * @param activeLowOrHigh The setting for either "active high, inactive low (0)" or + * "active low, inactive high(1)" of type dspi_pcs_polarity_config_t. + */ +void dspi_hal_configure_pcs_polarity(uint32_t instance, dspi_which_pcs_config_t pcs, + dspi_pcs_polarity_config_t activeLowOrHigh); + +/*! + * @brief Configures the DSPI FIFOs. + * + * This function allows the caller to disable/enable the Tx and Rx FIFOs (independently). + * Note that to disable, the caller must pass in a logic 1 (true) for the particular FIFO + * configuration. To enable, the caller must pass in a logic 0 (false). For example, to enable + * both the Tx and Rx FIFOs, the caller makes this function call (where instance is the + * desired module instance number): + @code + dspi_hal_configure_fifos(instance, false, false); + @endcode + * + * @param instance Module instance number + * @param disableTxFifo Disables (false) the TX FIFO, else enables (true) the TX FIFO + * @param disableRxFifo Disables (false) the RX FIFO, else enables (true) the RX FIFO + */ +void dspi_hal_configure_fifos(uint32_t instance, bool disableTxFifo, bool disableRxFifo); + +/*! + * @brief Flushes the DSPI FIFOs. + * + * @param instance Module instance number + * @param enableFlushTxFifo Flushes (true) the Tx FIFO, else do not flush (false) the Tx FIFO + * @param enableFlushRxFifo Flushes (true) the Rx FIFO, else do not flush (false) the Rx FIFO + */ +void dspi_hal_flush_fifos(uint32_t instance, bool enableFlushTxFifo, bool enableFlushRxFifo); + + +/*! + * @brief Configures when the DSPI master samples SIN in the Modified Transfer Format + * + * This function controls when the DSPI master samples SIN (data in) in the Modified Transfer + * Format. Note that this is valid only when the CPHA bit in the CTAR register is 0. + * + * @param instance Module instance number + * @param samplePnt selects when the data in (SIN) is sampled, of type dspi_master_sample_point_t. + * This value selects either 0, 1, or 2 system clocks between the SCK edge + * and the SIN (data in) sample. + */ +static inline void dspi_hal_set_datain_samplepoint(uint32_t instance, + dspi_master_sample_point_t samplePnt) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + BW_SPI_MCR_SMPL_PT(instance, samplePnt); +} + + +/*! + * @brief Starts the DSPI transfers, clears HALT bit in MCR. + * + * This function call called whenever the module is ready to begin data transfers in either master + * or slave mode. + * + * @param instance Module instance number + */ +static inline void dspi_hal_start_transfer(uint32_t instance) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + HW_SPI_MCR_CLR(instance, BM_SPI_MCR_HALT); +} + +/*! + * @brief Stops (halts) DSPI transfers, sets HALT bit in MCR. + * + * This function call stops data transfers in either master or slave mode. + * + * @param instance Module instance number + */ +static inline void dspi_hal_stop_transfer(uint32_t instance) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + HW_SPI_MCR_SET(instance, BM_SPI_MCR_HALT); +} + +/*! + * @brief Configures the data format for a particular CTAR. + * + * This function configures the bits-per-frame, polarity, phase, and shift direction for a + * particular CTAR. An example use case is as follows: + @code + dspi_data_format_config_t dataFormat; + dataFormat.bitsPerFrame = 16; + dataFormat.clkPolarity = kDspiClockPolarity_ActiveLow; + dataFormat.clkPhase = kDspiClockPhase_FirstEdge; + dataFormat.direction = kDspiMsbFirst; + dspi_hal_configure_data_format(instance, kDspiCtar0, &dataFormat); + @endcode + * + * @param instance Module instance number + * @param whichCtar The desired Clock and Transfer Attributes Register (CTAR) of type + * dspi_ctar_selection_t. + * @param config Pointer to a structure containing the user defined data format configuration settings. + * @return An error code or kStatus_DSPI_Success + */ +dspi_status_t dspi_hal_configure_data_format(uint32_t instance, + dspi_ctar_selection_t whichCtar, + const dspi_data_format_config_t * config); + +/*! + * @brief Configures the delays for a particular CTAR, master mode only. + * + * This function configures the PCS to SCK delay pre-scalar (PCSSCK), + * the PCS to SCK Delay scalar (CSSCK), + * the After SCK delay pre-scalar (PASC), + * the After SCK delay scalar (ASC), + * the Delay after transfer pre-scalar (PDT), + * and the Delay after transfer scalar (DT). + * The following is an example use case of this function: + * @code + dspi_delay_settings_config_t delayConfig; + delayConfig.pcsToSckPre = 0x3; + delayConfig.pcsToSck = 0xF; + delayConfig.afterSckPre = 0x2; + delayConfig.afterSck = 0xA; + delayConfig.afterTransferPre = 0x1; + delayConfig.afterTransfer = 0x5; + dspi_hal_configure_delays(instance, kDspiCtar0, &delayConfig); + * @endcode + * + * @param instance Module instance number + * @param whichCtar The desired Clock and Transfer Attributes Register (CTAR) of type + * dspi_ctar_selection_t. + * @param config Pointer to a structure containing the user defined delay configuration settings. + */ +void dspi_hal_configure_delays(uint32_t instance, + dspi_ctar_selection_t whichCtar, + const dspi_delay_settings_config_t * config); + +/*@}*/ + +/*! + * @name DMA + * @{ + */ + +/*! + * @brief Configures transmit and receive DMA requests. + * + * This function configures the FIFOs to generate a DMA or an interrupt request. Note that the + * corresponding request enable must also be set. For the Transmit FIFO Fill, in order + * to generate a DMA request, the Transmit FIFO Fill Request Enable (TFFF_RE) must also be set. + * Similarly for the Receive FIFO Drain Request, to generate a DMA request, the Receive FIFO Drain + * Request Enable (RFDF_RE) must also be set. These requests can be configured with + * the function dspi_hal_configure_interrupt(). To enable DMA operation, first enable + * the desired request enable by using the dspi_hal_configure_interrupt() function and then use + * the dspi_hal_configure_dma() to configure the request and generate a DMA request. + * + * @param enableTransmit Configures Tx FIFO fill request to generate a DMA or interrupt request + * @param enableReceive Configures Rx FIFO fill request to generate a DMA or interrupt request + */ +void dspi_hal_configure_dma(uint32_t instance, bool enableTransmit, bool enableReceive); + +/*@}*/ + +/*! + * @name Low power + * @{ + */ + +/*! + * @brief Configures the DSPI operation during doze mode. + * + * This function provides support for an externally controlled doze mode, power-saving, mechanism. + * When disabled, the doze mode has no effect on the DSPI, and when enabled, the Doze mode + * disables the DSPI. + * + * @param instance Module instance number + * @param enable If disabled (false), the doze mode has no effect on the DSPI, if enabled (true), the doze mode + * disables the DSPI. + */ +static inline void dspi_hal_configure_doze_mode(uint32_t instance, bool enable) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + BW_SPI_MCR_DOZE(instance, (enable == true)); +} + +/*@}*/ + +/*! + * @name Interrupts + * @{ + */ + +/*! + * @brief Configures the DSPI interrupts. + * + * This function configures the various interrupt sources of the DSPI. The parameters are instance, interrupt source, and enable/disable setting. + * The interrupt source is a typedef enum whose value is the bit position of the + * interrupt source setting within the RSER register. In the DSPI, all interrupt + * configuration settings are in one register. The typedef enum equates each + * interrupt source to the bit position defined in the device header file. + * The function uses these bit positions in its algorithm to enable/disable the + * interrupt source, where interrupt source is the dspi_status_and_interrupt_request_t type. + * @code + temp = (HW_SPI_RSER_RD(instance) & ~interruptSrc) | (enable << interruptSrc); + HW_SPI_RSER_WR(instance, temp); + + dspi_hal_configure_interrupt(instance, kDspiTxComplete, true); <- example use-case + * @endcode + * + * @param instance Module instance number + * @param interruptSrc The interrupt source, of type dspi_status_and_interrupt_request_t + * @param enable Enable (true) or disable (false) the interrupt source to generate requests + */ +void dspi_hal_configure_interrupt(uint32_t instance, + dspi_status_and_interrupt_request_t interruptSrc, + bool enable); + + +/*! + * @brief Gets the DSPI interrupt configuration, returns if interrupt request is enabled or disabled. + * + * This function returns the requested interrupt source setting (enabled or disabled, of + * type bool). The parameters to pass in are instance and interrupt source. It utilizes the + * same enum definitions for the interrupt sources as described in the "interrupt configuration" + * function. The function uses these bit positions in its algorithm to obtain the desired + * interrupt source setting. + * @code + return ((HW_SPI_RSER_RD(instance) & interruptSrc) >> interruptSrc); + + getInterruptSetting = dspi_hal_get_interrupt_config(instance, kDspiTxComplete); + * @endcode + * + * @param instance Module instance number + * @param interruptSrc The interrupt source, of type dspi_status_and_interrupt_request_t + * @return Configuration of interrupt request: enable (true) or disable (false). + */ +static inline bool dspi_hal_get_interrupt_config(uint32_t instance, + dspi_status_and_interrupt_request_t interruptSrc) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + return ((HW_SPI_RSER_RD(instance) >> interruptSrc) & 0x1); +} + +/*@}*/ + +/*! + * @name Status + * @{ + */ + +/*! + * @brief Gets the DSPI status flag state. + * + * The status flag is defined in the same enum as the interrupt source enable because the bit + * position of the interrupt source and corresponding status flag are the same in the RSER and + * SR registers. The function uses these bit positions in its algorithm to obtain the desired + * flag state, similar to the dspi_get_interrupt_config function. + * @code + return ((HW_SPI_SR_RD(instance) & statusFlag) >> statusFlag); + + getStatus = dspi_hal_get_status_flag(instance, kDspiTxComplete); + * @endcode + * + * @param instance Module instance number + * @param statusFlag The status flag, of type dspi_status_and_interrupt_request_t + * @return State of the status flag: asserted (true) or not-asserted (false) + */ +static inline bool dspi_hal_get_status_flag(uint32_t instance, + dspi_status_and_interrupt_request_t statusFlag) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + return ((HW_SPI_SR_RD(instance) >> statusFlag) & 0x1); +} + +/*! + * @brief Clears the DSPI status flag. + * + * This function clears the desired status bit by using a write-1-to-clear. The user passes in + * the instance and the desired status bit to clear. The list of status bits is defined in the + * dspi_status_and_interrupt_request_t. The function uses these bit positions in its algorithm + * to clear the desired flag state. It uses this macro: + * @code + HW_SPI_SR_WR(instance, statusFlag); + + dspi_hal_clear_status_flag(instance, kDspiTxComplete); + * @endcode + * + * @param instance Module instance number + * @param statusFlag The status flag, of type dspi_status_and_interrupt_request_t + */ +static inline void dspi_hal_clear_status_flag(uint32_t instance, + dspi_status_and_interrupt_request_t statusFlag) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + HW_SPI_SR_SET(instance, (0x1U << statusFlag)); +} + + +/*! + * @brief Gets the DSPI FIFO counter or pointer. + * + * This function returns the number of entries or the next pointer in the Tx or Rx FIFO. + * The parameters to pass in are the instance and either the Tx or Rx FIFO counter or a + * pointer. The latter is an enum type defined as the bitmask of + * those particular bit fields found in the device header file. For example: + * @code + return ((HW_SPI_SR_RD(instance) >> desiredParamter) & 0xF); + + dspi_hal_get_fifo_counter_or_pointer(instance, kDspiRxFifoCounter); + * @endcode + * + * @param instance Module instance number + * @param desiredParameter Desired parameter to obtain, of type dspi_fifo_counter_pointer_t + */ +static inline uint32_t dspi_hal_get_fifo_counter_or_pointer(uint32_t instance, + dspi_fifo_counter_pointer_t desiredParameter) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + return ((HW_SPI_SR_RD(instance) >> desiredParameter) & 0xFU); +} + + +/*@}*/ + +/*! + * @name Data transfer + * @{ + */ + +/*! + * @brief Reads data from the data buffer. + * + * @param instance Module instance number + */ +static inline uint32_t dspi_hal_read_data(uint32_t instance) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + return HW_SPI_POPR_RD(instance); +} + +/*! + * @brief Writes data into the data buffer, slave mode. + * + * In slave mode, up to 32-bit words may be written. + * + * @param instance Module instance number + * @param data The data to send + */ +static inline void dspi_hal_write_data_slave_mode(uint32_t instance, uint32_t data) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + HW_SPI_PUSHR_SLAVE_WR(instance, data); +} + +/*! + * @brief Writes data into the data buffer, master mode. + * + * In master mode, the 16-bit data is appended to the 16-bit command info. The command portion + * provides characteristics of the data such as: optional continuous chip select + * operation between transfers, the desired Clock and Transfer Attributes register to use for the + * associated SPI frame, the desired PCS signal to use for the data transfer, whether the current + * transfer is the last in the queue, and whether to clear the transfer count (normally needed when + * sending the first frame of a data packet). This is an example: + * @code + dspi_command_config_t commandConfig; + commandConfig.isChipSelectContinuous = true; + commandConfig.whichCtar = kDspiCtar0; + commandConfig.whichPcs = kDspiPcs1; + commandConfig.clearTransferCount = false; + commandConfig.isEndOfQueue = false; + dspi_hal_write_data_master_mode(instance, &commandConfig, dataWord); + * endcode + * + * @param instance Module instance number + * @param command Pointer to command structure + * @param data The data word to be sent + */ +void dspi_hal_write_data_master_mode(uint32_t instance, + dspi_command_config_t * command, + uint16_t data); + +/*! + * @brief Gets the transfer count. + * + * This function returns the current value of the DSPI Transfer Count Register. + * + * @param instance Module instance number + * @return The current transfer count + */ +static inline uint32_t dspi_hal_get_transfer_count(uint32_t instance) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + return BR_SPI_TCR_SPI_TCNT(instance); +} + +/*! + * @brief Pre-sets the transfer count. + * + * This function allows the caller to pre-set the DSI Transfer Count Register to a desired value up + * to 65535; Incrementing past this resets the counter back to 0. + * + * @param instance Module instance number + * @param presetValue The desired pre-set value for the transfer counter + */ +static inline void dspi_hal_preset_transfer_count(uint32_t instance, uint16_t presetValue) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + BW_SPI_TCR_SPI_TCNT(instance, presetValue); +} + +/*@}*/ + +/*! + * @name Debug + * @{ + */ + +/*! + * @brief Read FIFO registers for debug purposes. + * + * @param instance Module instance number + * @param whichFifo Selects Tx or Rx FIFO, of type dspi_fifo_t. + * @param whichFifoEntry Selects which FIFO entry to read: 0, 1, 2, or 3. + * @retrun The desired FIFO register contents + */ +uint32_t dspi_hal_get_fifo_data(uint32_t instance, dspi_fifo_t whichFifo, uint32_t whichFifoEntry); + +/*! + * @brief Configures the DSPI to halt during debug mode. + * + * @param instance Module instance number + * @param enable Enables (true) debug mode to halt transfers, else disable to not halt transfer + * in debug mode. + */ +static inline void dspi_hal_configure_halt_in_debug_mode(uint32_t instance, bool enable) +{ + assert(instance < HW_SPI_INSTANCE_COUNT); + BW_SPI_MCR_FRZ(instance, (enable == true)); +} + +/* @}*/ + +#if defined(__cplusplus) +} +#endif + +/*! @}*/ + +#endif /* __FSL_DSPI_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/edma/fsl_edma_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_DMA_FEATURES_H__) +#define __FSL_DMA_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || \ + defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || \ + defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || \ + defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) + /* @brief Number of DMA channels (related to number of registers TCD, DCHPRI, bit fields ERQ[ERQn], EEI[EEIn], INT[INTn], ERR[ERRn], HRS[HRSn] and bit field widths ES[ERRCHN], CEEI[CEEI], SEEI[SEEI], CERQ[CERQ], SERQ[SERQ], CDNE[CDNE], SSRT[SSRT], CERR[CERR], CINT[CINT], TCDn_CITER_ELINKYES[LINKCH], TCDn_CSR[MAJORLINKCH], TCDn_BITER_ELINKYES[LINKCH]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_MODULE_CHANNEL (4) + /* @brief Total number of DMA channels on all modules.*/ + #define FSL_FEATURE_DMA_DMAMUX_CHANNELS (HW_DMA_INSTANCE_COUNT * 4) + /* @brief Enhanced Direct Memory Access Controller (registers CR, ES, ERQ, EEI, CEEI, SEEI, CERQ, SERQ, CDNE, SSRT, CERR, CINT, INT, ERR, HRS, DCHPRIn, TCDn if non-zero, otherwise SARn, DARn, DSR_BCRn, DCRn).*/ + #define FSL_FEATURE_DMA_IS_EDMA (1) + /* @brief Number of DMA channel groups (register bit fields CR[ERGA], CR[GRPnPRI], ES[GPE], DCHPRIn[GRPPRI]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_CHANNEL_GROUP_COUNT (1) + /* @brief Number of DMA channels with asynchronous request capability (register EARS). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_ASYNCHRO_REQUEST_CHANNEL_COUNT (0) +#elif defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || \ + defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || defined(CPU_MK22FN512VLL12) || defined(CPU_MKV31F256VLH12) || \ + defined(CPU_MKV31F256VLL12) || defined(CPU_MKV31FN512VLH12) || defined(CPU_MKV31F512VLL12) + /* @brief Number of DMA channels (related to number of registers TCD, DCHPRI, bit fields ERQ[ERQn], EEI[EEIn], INT[INTn], ERR[ERRn], HRS[HRSn] and bit field widths ES[ERRCHN], CEEI[CEEI], SEEI[SEEI], CERQ[CERQ], SERQ[SERQ], CDNE[CDNE], SSRT[SSRT], CERR[CERR], CINT[CINT], TCDn_CITER_ELINKYES[LINKCH], TCDn_CSR[MAJORLINKCH], TCDn_BITER_ELINKYES[LINKCH]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_MODULE_CHANNEL (16) + /* @brief Total number of DMA channels on all modules.*/ + #define FSL_FEATURE_DMA_DMAMUX_CHANNELS (HW_DMA_INSTANCE_COUNT * 16) + /* @brief Enhanced Direct Memory Access Controller (registers CR, ES, ERQ, EEI, CEEI, SEEI, CERQ, SERQ, CDNE, SSRT, CERR, CINT, INT, ERR, HRS, DCHPRIn, TCDn if non-zero, otherwise SARn, DARn, DSR_BCRn, DCRn).*/ + #define FSL_FEATURE_DMA_IS_EDMA (1) + /* @brief Number of DMA channel groups (register bit fields CR[ERGA], CR[GRPnPRI], ES[GPE], DCHPRIn[GRPPRI]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_CHANNEL_GROUP_COUNT (1) + /* @brief Number of DMA channels with asynchronous request capability (register EARS). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_ASYNCHRO_REQUEST_CHANNEL_COUNT (4) +#elif defined(CPU_MK24FN1M0VDC12) || defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || defined(CPU_MK63FN1M0VMD12) || \ + defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VLQ12) || \ + defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12) + /* @brief Number of DMA channels (related to number of registers TCD, DCHPRI, bit fields ERQ[ERQn], EEI[EEIn], INT[INTn], ERR[ERRn], HRS[HRSn] and bit field widths ES[ERRCHN], CEEI[CEEI], SEEI[SEEI], CERQ[CERQ], SERQ[SERQ], CDNE[CDNE], SSRT[SSRT], CERR[CERR], CINT[CINT], TCDn_CITER_ELINKYES[LINKCH], TCDn_CSR[MAJORLINKCH], TCDn_BITER_ELINKYES[LINKCH]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_MODULE_CHANNEL (16) + /* @brief Total number of DMA channels on all modules.*/ + #define FSL_FEATURE_DMA_DMAMUX_CHANNELS (HW_DMA_INSTANCE_COUNT * 16) + /* @brief Enhanced Direct Memory Access Controller (registers CR, ES, ERQ, EEI, CEEI, SEEI, CERQ, SERQ, CDNE, SSRT, CERR, CINT, INT, ERR, HRS, DCHPRIn, TCDn if non-zero, otherwise SARn, DARn, DSR_BCRn, DCRn).*/ + #define FSL_FEATURE_DMA_IS_EDMA (1) + /* @brief Number of DMA channel groups (register bit fields CR[ERGA], CR[GRPnPRI], ES[GPE], DCHPRIn[GRPPRI]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_CHANNEL_GROUP_COUNT (1) + /* @brief Number of DMA channels with asynchronous request capability (register EARS). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_ASYNCHRO_REQUEST_CHANNEL_COUNT (0) +#elif defined(CPU_MK65FN2M0VMF18) || defined(CPU_MK65FX1M0VMF18) || defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) + /* @brief Number of DMA channels (related to number of registers TCD, DCHPRI, bit fields ERQ[ERQn], EEI[EEIn], INT[INTn], ERR[ERRn], HRS[HRSn] and bit field widths ES[ERRCHN], CEEI[CEEI], SEEI[SEEI], CERQ[CERQ], SERQ[SERQ], CDNE[CDNE], SSRT[SSRT], CERR[CERR], CINT[CINT], TCDn_CITER_ELINKYES[LINKCH], TCDn_CSR[MAJORLINKCH], TCDn_BITER_ELINKYES[LINKCH]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_MODULE_CHANNEL (32) + /* @brief Total number of DMA channels on all modules.*/ + #define FSL_FEATURE_DMA_DMAMUX_CHANNELS (HW_DMA_INSTANCE_COUNT * 32) + /* @brief Enhanced Direct Memory Access Controller (registers CR, ES, ERQ, EEI, CEEI, SEEI, CERQ, SERQ, CDNE, SSRT, CERR, CINT, INT, ERR, HRS, DCHPRIn, TCDn if non-zero, otherwise SARn, DARn, DSR_BCRn, DCRn).*/ + #define FSL_FEATURE_DMA_IS_EDMA (1) + /* @brief Number of DMA channel groups (register bit fields CR[ERGA], CR[GRPnPRI], ES[GPE], DCHPRIn[GRPPRI]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_CHANNEL_GROUP_COUNT (2) + /* @brief Number of DMA channels with asynchronous request capability (register EARS). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_ASYNCHRO_REQUEST_CHANNEL_COUNT (32) +#elif defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || \ + defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) + /* @brief Number of DMA channels (related to number of registers TCD, DCHPRI, bit fields ERQ[ERQn], EEI[EEIn], INT[INTn], ERR[ERRn], HRS[HRSn] and bit field widths ES[ERRCHN], CEEI[CEEI], SEEI[SEEI], CERQ[CERQ], SERQ[SERQ], CDNE[CDNE], SSRT[SSRT], CERR[CERR], CINT[CINT], TCDn_CITER_ELINKYES[LINKCH], TCDn_CSR[MAJORLINKCH], TCDn_BITER_ELINKYES[LINKCH]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_MODULE_CHANNEL (32) + /* @brief Total number of DMA channels on all modules.*/ + #define FSL_FEATURE_DMA_DMAMUX_CHANNELS (HW_DMA_INSTANCE_COUNT * 32) + /* @brief Enhanced Direct Memory Access Controller (registers CR, ES, ERQ, EEI, CEEI, SEEI, CERQ, SERQ, CDNE, SSRT, CERR, CINT, INT, ERR, HRS, DCHPRIn, TCDn if non-zero, otherwise SARn, DARn, DSR_BCRn, DCRn).*/ + #define FSL_FEATURE_DMA_IS_EDMA (1) + /* @brief Number of DMA channel groups (register bit fields CR[ERGA], CR[GRPnPRI], ES[GPE], DCHPRIn[GRPPRI]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_CHANNEL_GROUP_COUNT (2) + /* @brief Number of DMA channels with asynchronous request capability (register EARS). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_ASYNCHRO_REQUEST_CHANNEL_COUNT (0) +#elif defined(CPU_MKL05Z8VFK4) || defined(CPU_MKL05Z16VFK4) || defined(CPU_MKL05Z32VFK4) || defined(CPU_MKL05Z8VLC4) || \ + defined(CPU_MKL05Z16VLC4) || defined(CPU_MKL05Z32VLC4) || defined(CPU_MKL05Z8VFM4) || defined(CPU_MKL05Z16VFM4) || \ + defined(CPU_MKL05Z32VFM4) || defined(CPU_MKL05Z16VLF4) || defined(CPU_MKL05Z32VLF4) || defined(CPU_MKL25Z32VFM4) || \ + defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || \ + defined(CPU_MKL25Z128VFT4) || defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4) || defined(CPU_MKL46Z128VLH4) || \ + defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || defined(CPU_MKL46Z256VLL4) || defined(CPU_MKL46Z128VMC4) || \ + defined(CPU_MKL46Z256VMC4) + /* @brief Number of DMA channels (related to number of registers TCD, DCHPRI, bit fields ERQ[ERQn], EEI[EEIn], INT[INTn], ERR[ERRn], HRS[HRSn] and bit field widths ES[ERRCHN], CEEI[CEEI], SEEI[SEEI], CERQ[CERQ], SERQ[SERQ], CDNE[CDNE], SSRT[SSRT], CERR[CERR], CINT[CINT], TCDn_CITER_ELINKYES[LINKCH], TCDn_CSR[MAJORLINKCH], TCDn_BITER_ELINKYES[LINKCH]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_MODULE_CHANNEL (4) + /* @brief Total number of DMA channels on all modules.*/ + #define FSL_FEATURE_DMA_DMAMUX_CHANNELS (HW_DMA_INSTANCE_COUNT * 4) + /* @brief Enhanced Direct Memory Access Controller (registers CR, ES, ERQ, EEI, CEEI, SEEI, CERQ, SERQ, CDNE, SSRT, CERR, CINT, INT, ERR, HRS, DCHPRIn, TCDn if non-zero, otherwise SARn, DARn, DSR_BCRn, DCRn).*/ + #define FSL_FEATURE_DMA_IS_EDMA (0) + /* @brief Number of DMA channel groups (register bit fields CR[ERGA], CR[GRPnPRI], ES[GPE], DCHPRIn[GRPPRI]). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_CHANNEL_GROUP_COUNT (0) + /* @brief Number of DMA channels with asynchronous request capability (register EARS). (Valid only for eDMA modules.)*/ + #define FSL_FEATURE_DMA_ASYNCHRO_REQUEST_CHANNEL_COUNT (4) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_DMA_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/edma/fsl_edma_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1902 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __EDMA_HAL_H__ +#define __EDMA_HAL_H__ + +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> +#include "fsl_edma_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup edma_hal + * @{ + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ +/*! @brief eDMA status */ +typedef enum _edma_status +{ + kStatus_EDMA_Success = 0U, + kStatus_EDMA_InvalidArgument = 1U, /*!< Parameter is not available for the current configuration.*/ + kStatus_EDMA_Fail = 2U /*!< Function operation failed.*/ +} edma_status_t; + +/*! @brief eDMA TCD control configuration */ +typedef union EdmaTCDControl { + struct { + uint16_t reserve1 : 1; + uint16_t majorInterrupt : 1; /*!< Interrupt after the major loop is complete. */ + uint16_t halfInterrupt : 1; /*!< Interrupt after half of the major loop is complete. */ + uint16_t disabledDmaRequest : 1; /*!< Disabled DMA request after the major loop is complete. */ + uint16_t enabledScatterGather : 1; /*!< Enable scatter/gather processing. */ + uint16_t enableMajorLink : 1; /*!< Enabled major link after the major loop is complete. */ + uint16_t reserve2 : 1; + uint16_t reserve3 : 1; + uint16_t majorLinkChannel : 4; /*!< Major link channel number*/ + uint16_t reserve4 : 2; + uint16_t bandwidthControl : 2; /*!< Bandwidth control configuration */ + } U; + uint16_t B; +} edma_tcd_control_t; + +/*! @brief eDMA TCD Minor loop mapping configuration */ +typedef struct EdmaMinorLoopOffset { + bool isEnableSourceMinorloop; + bool isEnableDestMinorloop; + uint32_t offset; +} edma_minorloop_offset_config_t; + +/*! @brief Priority limitation of the eDMA channel */ +typedef enum _edma_channel_priority { + kEdmaChannelPriority = 16 +} edma_channel_priority_t; + +/*! @brief eDMA modulo configuration */ +typedef enum _edma_modulo { + kEdmaModuloDisable = 0x0U, + kEdmaModulo2bytes = 0x1U, + kEdmaModulo4bytes = 0x2U, + kEdmaModulo8bytes = 0x3U, + kEdmaModulo16bytes = 0x4U, + kEdmaModulo32bytes = 0x5U, + kEdmaModulo64bytes = 0x6U, + kEdmaModulo128bytes = 0x7U, + kEdmaModulo256bytes = 0x8U, + kEdmaModulo512bytes = 0x9U, + kEdmaModulo1Kbytes = 0xaU, + kEdmaModulo2Kbytes = 0xbU, + kEdmaModulo4Kbytes = 0xcU, + kEdmaModulo8Kbytes = 0xdU, + kEdmaModulo16Kbytes = 0xeU, + kEdmaModulo32Kbytes = 0xfU, + kEdmaModulo64Kbytes = 0x10U, + kEdmaModulo128Kbytes = 0x11U, + kEdmaModulo256Kbytes = 0x12U, + kEdmaModulo512Kbytes = 0x13U, + kEdmaModulo1Mbytes = 0x14U, + kEdmaModulo2Mbytes = 0x15U, + kEdmaModulo4Mbytes = 0x16U, + kEdmaModulo8Mbytes = 0x17U, + kEdmaModulo16Mbytes = 0x18U, + kEdmaModulo32Mbytes = 0x19U, + kEdmaModulo64Mbytes = 0x1aU, + kEdmaModulo128Mbytes = 0x1bU, + kEdmaModulo256Mbytes = 0x1cU, + kEdmaModulo512Mbytes = 0x1dU, + kEdmaModulo1Gbytes = 0x1eU, + kEdmaModulo2Gbytes = 0x1fU +} edma_modulo_t; + +/*! @brief eDMA transfer size configuration */ +typedef enum _edma_transfer_size { + kEdmaTransferSize1bytes = 0x0U, + kEdmaTransferSize2bytes = 0x1U, + kEdmaTransferSize4bytes = 0x2U, + kEdmaTransferSize16bytes = 0x4U, + kEdmaTransferSize32bytes = 0x5U +} edma_transfer_size_t; + +/*! @brief Error status of the eDMA module */ +typedef union EdmaErrorStatusAll { + struct { + uint32_t destinationBusError : 1; /*!< Bus error on destination address */ + uint32_t sourceBusError : 1; /*!< Bus error on the SRC address */ + uint32_t scatterOrGatherConfigurationError : 1; /*!< Error on the Scatter/Gather address */ + uint32_t nbyteOrCiterConfigurationError : 1; /*!< NBYTES/CITER configuration error */ + uint32_t destinationOffsetError : 1; /*!< Destination offset error */ + uint32_t destinationAddressError : 1; /*!< Destination address error */ + uint32_t sourceOffsetError : 1; /*!< Source offset error */ + uint32_t sourceAddressError : 1; /*!< Source address error */ + uint32_t errorChannel : 5; /*!< Error channel number of the cancelled + channel number */ + uint32_t _reserved1 : 1; + uint32_t channelPriorityError : 1; /*!< Channel priority error */ + uint32_t groupPriorityError : 1; /*!< Group priority error */ + uint32_t transferCancelledError : 1; /*!< Transfer cancelled */ + uint32_t _reserved0 : 14; + uint32_t orOfAllError : 1; /*!< Logical OR all ERR status bits */ + } U; + uint32_t B; +} edma_error_status_all_t; + +/*! @brief Bandwidth control configuration */ +typedef enum _edma_bandwidth_configuration { + kEdmaBandwidthStallNone = 0, /*!< No eDMA engine stalls. */ + kEdmaBandwidthStall4Cycle = 2, /*!< eDMA engine stalls for 4 cycles after each read/write. */ + kEdmaBandwidthStall8Cycle = 3 /*!< eDMA engine stalls for 4 cycles after each read/write. */ +} edma_bandwidth_configuration_t; + +/*! @brief eDMA TCD */ +typedef struct EdmaSoftwareTcd { + uint32_t SADDR; + uint16_t SOFF; + uint16_t ATTR; + union { + uint32_t NBYTES_MLNO; + uint32_t NBYTES_MLOFFNO; + uint32_t NBYTES_MLOFFYES; + }; + uint32_t SLAST; + uint32_t DADDR; + uint16_t DOFF; + union { + uint16_t CITER_ELINKNO; + uint16_t CITER_ELINKYES; + }; + uint32_t DLAST_SGA; + uint16_t CSR; + union { + uint16_t BITER_ELINKNO; + uint16_t BITER_ELINKYES; + }; +} edma_software_tcd_t; + +/*! @brief eDMA group priority */ +typedef enum _edma_group_priority { + kEdmaGroup0Priority0Group1Priority1, + kEdmaGroup0Priority1Group1Priority0 +} edma_group_priority_t; + +/*! @brief DMA configuration structure */ +typedef struct EdmaConfiguration { + bool isEnableMinorLoopping; /*!< Enabled the minor loop mapping. */ + bool isEnableContinuousMode; /*!< Enabled the continuous mode. */ + bool isHaltOnError; /*!< Halt if error happens. */ + bool isEnableRoundrobinArbitration; /*!< Enabled round robin or fixed priority arbitration. */ + bool isEnableDebug; /*!< Enabled Debug mode. */ +#if (FSL_FEATURE_DMA_CHANNEL_GROUP_COUNT > 0x1U) + edma_group_priority_t groupPriority; + bool isEnableGroupRoundrobinArbitration; +#endif +} edma_config_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @name EDMA HAL common configuration + * @{ + */ + +/*! + * @brief Initializes the eDMA module. + * + * The function configures the eDMA module with the corresponding global configuration. The + * configuration is for all channels in this module. + * + * @param module eDMA module + * @param init Init data structure + */ +void edma_hal_init(uint32_t instance, const edma_config_t *init); + +/*! + * @brief Cancels the remaining data transfer. Stops the executing channel and forces the minor loop + * to finish. The cancellation takes effect after the last write of the current read/write sequence. + * The CX clears itself after the cancel has been honored. This cancel retires the channel + * normally as if the minor loop had completed. + * + * @param instance eDMA module + */ +static inline void edma_hal_cancel_transfer(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_CX(instance, 1U); + while (BR_DMA_CR_CX(instance)) + {} +} + +/*! + * @brief Cancels the remaining data transfer. Stops the executing channel and forces the minor loop to + * finish. The cancellation takes effect after the last write of the current read/write sequence. The + * ECX bit clears itself after the cancel is honored. In addition to cancelling the transfer, ECX + * treats the cancel as an error condition. + * + * @param instance eDMA module + */ +static inline void edma_hal_error_cancel_transfer(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_ECX(instance, 1U); + while(BR_DMA_CR_ECX(instance)) + {} +} + +/*! + * @brief Enables/Disables the minor loop mapping. + * + * If enabled, the NBYTES is redefined to include individual enable fields. And the NBYTES field. The + * individual enable fields allow the minor loop offset to be applied to the source address, the + * destination address, or both. The NBYTES field is reduced when either offset is enabled. + * + * @param instance eDMA module + * @param isEnabled Enable or disable. + */ +static inline void edma_hal_set_minor_loop_mapping(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_EMLM(instance, isEnabled); +} + + +#if (FSL_FEATURE_DMA_CHANNEL_GROUP_COUNT > 0x1U) +/*! + * @brief Configures the group priority. + * + * @param module eDMA module + * @param isContinuous Whether the minor loop finish triggers itself. + */ +static inline void edma_hal_set_group_priority(uint32_t instance, edma_group_priority_t groupPriority) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + + if (groupPriority == kEdmaGroup0Priority0Group1Priority1) + { + BW_DMA_CR_GRP0PRI(instance, 0U); + BW_DMA_CR_GRP1PRI(instance, 1U); + } + else + { + BW_DMA_CR_GRP0PRI(instance, 1U); + BW_DMA_CR_GRP1PRI(instance, 0U); + + } +} + +/*! + * @brief The fixed priority arbitration is used for the group selection. + * + * @param instance eDMA module + */ +static inline void edma_hal_set_fixed_priority_group_arbitration(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_ERGA(instance, 0U); +} + +/*! + * @brief The round robin arbitration is used for the group selection. + * + * @param instance eDMA module + */ +static inline void edma_hal_set_roundrobin_group_arbitration(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_ERGA(instance, 1U); +} + +#endif + +/*! + * @brief Configures the continuous mode. If set, a minor loop channel link does not + * go through the channel arbitration before being activated again. Upon minor loop completion, the + * channel activates again if that channel has a minor loop channel link enabled and the link + * channel is itself. + * + * @param module eDMA module + * @param isContinuous Whether the minor loop finish triggers itself. + */ +static inline void edma_hal_set_continuous_mode(uint32_t instance, bool isContinuous) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_CLM(instance, isContinuous); +} + +/*! + * @brief Halts the DMA Operations. + * + * Stalls the start of any new channels. Executing channels are allowed to complete. + * + * @param instance eDMA module. + */ +static inline void edma_hal_halt(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_HALT(instance, 1U); +} + +/*! + * @brief Clears the halt bit. + * + * If a previous eDMA channel is halted, clear operation would resume it back to executing. + * + * @param instance eDMA module. + */ +static inline void edma_hal_clear_halt(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_HALT(instance, 0U); +} + +/*! + * @brief Halts the eDMA module when an error occurs. + * + * An error causes the HALT bit to be set. Subsequently, all service requests are ignored until the + * HALT bit is cleared. + * + * @param instance eDMA module. + * @param isHaltOnError halts or does not halt when an error occurs. + */ +static inline void edma_hal_set_halt_on_error(uint32_t instance, bool isHaltOnError) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_HOE(instance, isHaltOnError); +} + +/*! + * @brief The fixed priority arbitration is used for the channel selection. + * + * @param instance eDMA module. + */ +static inline void edma_hal_set_fixed_priority_channel_arbitration(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_ERCA(instance, 0U); +} + +/*! + * @brief The round robin arbitration is used for the channel selection. + * + * @param instance eDMA module. + */ +static inline void edma_hal_set_roundrobin_channel_arbitration(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_ERCA(instance, 1U); +} + +/*! + * @brief Enables/Disables the eDMA DEBUG mode. + * + * When in debug mode, the DMA stalls the start of a new + * channel. Executing channels are allowed to complete. Channel execution resumes + * either when the system exits debug mode or when the EDBG bit is cleared. + * + * @param instance eDMA module. + */ +static inline void edma_hal_set_debug_mode(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CR_EDBG(instance, isEnabled); +} + +/*! + * @brief Gets the error status of the eDMA module. The detailed reason is listed along with the error + * channel. + * + * @param instance eDMA module + * @return Detailed information of the error type in the eDMA module. + */ +static inline uint32_t edma_hal_get_error_status(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + return HW_DMA_ES_RD(instance); +} + +/*! + * @brief Disables the interrupt when an error happens on any of channel in the eDMA module. + * + * @param instance eDMA module + */ +static inline void edma_hal_disable_all_enabled_error_interrupt(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + BW_DMA_CEEI_CAEE(instance, 1U); +} + +/*! + * @brief Enables an interrupt when an error happens on any channel in the eDMA module. + * + * @param instance eDMA module + */ +static inline void edma_hal_enable_all_channel_error_interrupt(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + + BW_DMA_SEEI_SAEE(instance, 1U); +} + +/*! + * @brief Disables the DMA request for all eDMA channels. + * + * @param instance eDMA module + */ +static inline void edma_hal_disable_all_channel_dma_request(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + HW_DMA_CERQ_WR(instance, DMA_CERQ_CAER_MASK); +} + +/*! + * @brief Enables the DMA request for all eDMA channels. + * + * @param instance eDMA module + */ +static inline void edma_hal_enable_all_channel_dma_request(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + HW_DMA_SERQ_WR(instance, DMA_SERQ_SAER_MASK); +} + +/*! + * @brief Clears the done status for all eDMA channels. + * + * @param instance eDMA module + */ +static inline void edma_hal_clear_all_channel_done_status(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + HW_DMA_CDNE_WR(instance, DMA_CDNE_CADN_MASK); +} + +/*! + * @brief Triggers all channel start bits. + * + * @param instance eDMA module + */ +static inline void edma_hal_trigger_all_channel_start_bit(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + HW_DMA_SSRT_WR(instance, DMA_SSRT_SAST_MASK); +} + +/*! + * @brief Clears the error status for all eDMA channels. + * + * @param instance eDMA module + */ +static inline void edma_hal_clear_all_channel_error_status(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + HW_DMA_CERR_WR(instance, DMA_CERR_CAEI_MASK); +} + +/*! + * @brief Clears an interrupt request for all eDMA channels. + * + * @param instance eDMA module + */ +static inline void edma_hal_clear_all_channel_interrupt_request(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + HW_DMA_CINT_WR(instance, DMA_CINT_CAIR_MASK); +} + +/*! + * @brief Gets the interrupt status for all eDMA channels. + * + * @param instance eDMA module + * @return 32 bit data. Every bit stands for an eDMA channel. For example, bit 0 stands for channel 0 and so on. + */ +static inline uint32_t edma_hal_get_all_channel_interrupt_request_status(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + return HW_DMA_INT_RD(instance); +} + +/*! + * @brief Gets the channel error status for all eDMA channels. + * + * @param instance eDMA module + * @return 32 bit data. Every bit stands for an eDMA channel. For example, bit 0 stands for channel 0 and so on. + */ +static inline uint32_t edma_hal_get_all_channel_error_status(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + return HW_DMA_ERR_RD(instance); +} + +/*! + * @brief Gets the status of the DMA request for all DMA channels. + * + * @param instance eDMA module + * @return 32 bit data. Every bit stands for an eDMA channel. For example, bit 0 stands for channel 0 and so on. + */ +static inline uint32_t edma_hal_get_all_channel_dma_request_status(uint32_t instance) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + return HW_DMA_HRS_RD(instance); +} + +/* @} */ + +/*! + * @name EDMA HAL channel configuration. + * @{ + */ + +/*! + * @brief Check whether the channel DMA request is enabled. + * + * Check whether the DMA request of a specified channel is enabled. + * + * @param instance eDMA module + * @param channel eDMA channel + * + * @return True stands for enabled. False stands for disabled. + */ +static inline bool edma_hal_check_dma_request_enable_status(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + + return ((HW_DMA_ERQ_RD(instance)>>channel) & 1U); +} + +/*! + * @brief Disables an interrupt when an error happens in the eDMA channel. + * + * Disables an error interrupt for the eDMA module. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_disable_error_interrupt(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + HW_DMA_CEEI_WR(instance, DMA_CEEI_CEEI(channel)); +} + +/*! + * @brief Enables an interrupt when an error happens in the eDMA channel. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_enable_error_interrupt(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + HW_DMA_SEEI_WR(instance, DMA_SEEI_SEEI(channel)); +} + +/*! + * @brief Disables the DMA request for an eDMA channel. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_disable_dma_request(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + HW_DMA_CERQ_WR(instance, DMA_CERQ_CERQ(channel)); +} + +/*! + * @brief Enables the DMA request for a specified eDMA channel. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_enable_dma_request(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + HW_DMA_SERQ_WR(instance, DMA_SERQ_SERQ(channel)); +} + +/*! + * @brief Clears the done status for an eDMA channel. + * + * The DONE status of the DMA channel is cleared. If the scatter/gather state is + * enabled, the DONE status in CSR can be cleared but the global DONE statue is + * still set. This function is to clear the global done state. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_clear_done_status(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + HW_DMA_CDNE_WR(instance, DMA_CDNE_CDNE(channel)); +} + +/*! + * @brief Starts an eDMA channel manually. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_trigger_start_bit(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + HW_DMA_SSRT_WR(instance, DMA_SSRT_SSRT(channel)); +} + +/*! * @brief Clears an error status for the eDMA channel. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_clear_error_status(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + HW_DMA_CERR_WR(instance, DMA_CERR_CERR(channel)); +} + +/*! + * @brief Clears an interrupt request for the eDMA channel. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_clear_interrupt_request(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + HW_DMA_CINT_WR(instance, DMA_CINT_CINT(channel)); +} + +#if (FSL_FEATURE_DMA_ASYNCHRO_REQUEST_CHANNEL_COUNT > 0x0U) +/*! + * @brief Enables/Disables an asynchronous request in stop mode. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_set_asynchronous_request_in_stop_mode( + uint32_t instance, uint32_t channel, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + if(isEnabled) + { + HW_DMA_EARS_SET(instance, 1U << channel); + } + else + { + HW_DMA_EARS_CLR(instance, 1U << channel); + } +} +#endif + +/*! + * @brief Configures the preempt feature for an eDMA channel. + * + * If it is disabled, the DMA channel can't suspend a lower priority channel. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param preempt configuration mode for preempt + */ +static inline void edma_hal_set_channel_preemp_ability( + uint32_t instance, uint32_t channel, bool isDisabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_DCHPRIn_DPA(instance, HW_DMA_DCHPRIn_CHANNEL(channel), isDisabled); +} + +/*! + * @brief Configures the preempt feature for the eDMA channel. + * + * If enabled, channel can be temporarily suspended by a higher priority channel. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param preempt configuration mode for preempt + */ +static inline void edma_hal_set_channel_preemption_ability(uint32_t instance, uint32_t channel, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_DCHPRIn_ECP(instance, HW_DMA_DCHPRIn_CHANNEL(channel), isEnabled); +} + +/*! + * @brief Configures the eDMA channel priority. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param priority Priority of the DMA channel. Different channels should have different priority inside a + * group. + */ +static inline void edma_hal_set_channel_priority( + uint32_t instance, uint32_t channel, uint32_t priority) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + + BW_DMA_DCHPRIn_CHPRI(instance, HW_DMA_DCHPRIn_CHANNEL(channel), priority); +} + +/* @} */ + +/*! + * @name eDMA HAL hardware TCD configuration + * @{ + */ + +/*! + * @brief Configures the source address for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param address memory address pointing to the source data + */ +static inline void edma_hal_htcd_configure_source_address( + uint32_t instance, uint32_t channel, uint32_t address) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_SADDR_SADDR(instance, channel, address); +} + +/*! + * @brief Configures the source address signed offset for the hardware TCD. + * + * Sign-extended offset applied to the current source address to form the next-state value as each + * source read is complete. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param offset signed-offset + */ +static inline void edma_hal_htcd_configure_source_offset( + uint32_t instance, uint32_t channel, int16_t offset) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_SOFF_SOFF(instance, channel, offset); +} + +/*! + * @brief Configures the source modulo for the hardware TCD. + * + * The value defines a specific address range specified as the value after the SADDR + SOFF + * calculation is performed on the original register value. Setting this field provides the ability + * to implement a circular data. For data queues requiring power-of-2 size bytes, the + * queue should start at a 0-modulo-size address and the SMOD field should be set to the appropriate + * value for the queue, freezing the desired number of upper address bits. The value programmed into + * this field specifies the number of the lower address bits allowed to change. For a circular queue + * application, the SOFF is typically set to the transfer size to implement post-increment addressing + * with SMOD function restricting the addresses to a 0-modulo-size range. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param modulo enum type for an allowed modulo + */ +static inline void edma_hal_htcd_configure_source_modulo( + uint32_t instance, uint32_t channel, edma_modulo_t modulo) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_ATTR_SMOD(instance, channel, modulo); +} + +/*! + * @brief Configures the source data transfersize for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param size enum type for transfer size + */ +static inline void edma_hal_htcd_configure_source_transfersize( + uint32_t instance, uint32_t channel, edma_transfer_size_t size) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_ATTR_SSIZE(instance, channel, size); +} + +/*! + * @brief Configures the destination modulo for the hardware TCD. + * + * The value defines a specific address range as the value after the DADDR + DOFF + * calculation is performed on the original register value. Setting this field provides the ability + * to implement a circular data. For data queues requiring power-of-2 size bytes, the + * queue should start at a 0-modulo-size address and the SMOD field should be set to the appropriate + * value for the queue, freezing the desired number of upper address bits. The value programmed into + * this field specifies the number of lower address bits allowed to change. For a circular queue + * application, the SOFF is typically set to the transfer size to implement post-increment addressing + * with DMOD function restricting the addresses to a 0-modulo-size range. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param modulo enum type for an allowed modulo + */ +static inline void edma_hal_htcd_configure_dest_modulo( + uint32_t instance, uint32_t channel, edma_modulo_t modulo) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_ATTR_DMOD(instance, channel, modulo); +} + +/*! + * @brief Configures the destination data transfersize for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param size enum type for the transfer size + */ +static inline void edma_hal_htcd_configure_dest_transfersize( + uint32_t instance, uint32_t channel, edma_transfer_size_t size) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_ATTR_DSIZE(instance, channel, size); +} + +/*! + * @brief Configures the nbytes if minor loop mapping is disabled for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param nbytes Number of bytes to be transferred in each service request of the channel + */ +static inline void edma_hal_htcd_configure_nbytes_minorloop_disabled( + uint32_t instance, uint32_t channel, uint32_t nbytes) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_NBYTES_MLNO_NBYTES(instance, channel, nbytes); +} + +/*! + * @brief Configures the nbytes if the minor loop mapping is enabled and offset is disabled for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param nbytes Number of bytes to be transferred in each service request of the channel + */ +static inline void edma_hal_htcd_configure_nbytes_minorloop_enabled_offset_disabled( + uint32_t instance, uint32_t channel, uint32_t nbytes) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_NBYTES_MLOFFNO_NBYTES(instance, channel, nbytes); +} + +/*! + * @brief Configures the nbytes if the minor loop mapping is enabled and offset is enabled for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param nbytes Number of bytes to be transferred in each service request of the channel + */ +static inline void edma_hal_htcd_configure_nbytes_minorloop_enabled_offset_enabled( + uint32_t instance, uint32_t channel, uint32_t nbytes) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_NBYTES_MLOFFYES_NBYTES(instance, channel, nbytes); +} + +/*! + * @brief Gets the nbytes configuration data. + * + * This function decides whether the minor loop mapping is enabled or whether the source/dest + * minor loop mapping is enabled. Then, the nbytes are returned accordingly. + * + * @param instance eDMA module + * @param channel eDMA channel + * @return nbytes configuration + */ +uint32_t edma_hal_htcd_get_nbytes_configuration(uint32_t instance, uint32_t channel); + + +/*! + * @brief Configures the minorloop offset for the hardware TCD. + * + * Configures both the enable bits and the offset value. If neither source nor dest offset is enabled, + * offset is not configured. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param config Configuration data structure for the minorloop offset + */ +static inline void edma_hal_htcd_configure_minorloop_offset( + uint32_t instance, uint32_t channel, edma_minorloop_offset_config_t config) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_NBYTES_MLOFFYES_SMLOE(instance, channel, config.isEnableSourceMinorloop); + BW_DMA_TCDn_NBYTES_MLOFFYES_DMLOE(instance, channel, config.isEnableDestMinorloop); + if ((config.isEnableSourceMinorloop == true) || (config.isEnableDestMinorloop == true)) + { + BW_DMA_TCDn_NBYTES_MLOFFYES_MLOFF(instance, channel, config.offset); + } +} + +/*! + * @brief Configures the last source address adjustment for the hardware TCD. + * + * Adjustment value added to the source address at the completion of the major iteration count. This + * value can be applied to restore the source address to the initial value, or adjust the address to + * reference the next data structure. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param size adjustment value + */ +static inline void edma_hal_htcd_configure_source_last_adjustment( + uint32_t instance, uint32_t channel, int32_t size) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_SLAST_SLAST(instance, channel, size); +} + +/*! + * @brief Configures the destination address for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param address memory address pointing to destination data + */ +static inline void edma_hal_htcd_configure_dest_address( + uint32_t instance, uint32_t channel, uint32_t address) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_DADDR_DADDR(instance, channel, address); +} + +/*! + * @brief Configures the destination address signed offset for the hardware TCD. + * + * Sign-extended offset applied to the current source address to form the next-state value as each + * destination write is complete. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param offset signed-offset + */ +static inline void edma_hal_htcd_configure_dest_offset( + uint32_t instance, uint32_t channel, int16_t offset) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_DOFF_DOFF(instance, channel, offset); +} + +/*! + * @brief Configures the last source address adjustment or the memory address for the next transfer + * control for the hardware TCD. + * + * If a scatter/gather feature is enabled (edma_hal_htcd_set_scatter_gather_process()): + * + * This address points to the beginning of a 0-modulo-32 byte region containing the next transfer + * control descriptor to be loaded into this channel. The channel reload is performed as the major + * iteration count completes. The scatter/gather address must be 0-modulo-32-byte. Otherwise, a + * configuration error is reported. + * + * else: + * + * An adjustment value added to the source address at the completion of the major iteration count. This + * value can be applied to restore the source address to the initial value, or adjust the address to + * reference the next data structure. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param size adjustment value + */ +static inline void edma_hal_htcd_configure_dest_last_adjustment_or_scatter_address( + uint32_t instance, uint32_t channel, uint32_t address) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_DLASTSGA_DLASTSGA(instance, channel, address); +} + +/*! + * @brief Configures the bandwidth for the hardware TCD. + * + * Throttles the amount of bus bandwidth consumed by the eDMA. In general, as the eDMA processes the + * minor loop, it continuously generates read/write sequences until the minor count is exhausted. + * This field forces the eDMA to stall after the completion of each read/write access to control the + * bus request bandwidth seen by the crossbar switch. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param bandwidth enum type for bandwidth control + */ +static inline void edma_hal_htcd_configure_bandwidth( + uint32_t instance, uint32_t channel, edma_bandwidth_configuration_t bandwidth) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CSR_BWC(instance, channel, bandwidth); +} + +/*! + * @brief Configures the major link channel number for the hardware TCD. + * + * If the majorlink is enabled, after the major loop counter is exhausted, the eDMA engine initiates a + * channel service request at the channel defined by these six bits by setting that channel start + * bits. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param majorchannel channel number for major link + */ +static inline void edma_hal_htcd_configure_majorlink_channel( + uint32_t instance, uint32_t channel, uint32_t majorchannel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CSR_MAJORLINKCH(instance, channel, majorchannel); +} + +/*! + * @brief Gets the major link channel for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @return major link channel number + */ +static inline uint32_t edma_hal_htcd_get_majorlink_channel( + uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + return BR_DMA_TCDn_CSR_MAJORLINKCH(instance, channel); +} + +/*! + * @brief Enables/Disables the major link channel feature for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_htcd_set_majorlink(uint32_t instance, uint32_t channel, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CSR_MAJORELINK(instance, channel, isEnabled); +} + +/*! + * @brief Enables/Disables the scatter/gather feature for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_htcd_set_scatter_gather_process( + uint32_t instance, uint32_t channel, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CSR_ESG(instance, channel, isEnabled); +} + +/*! + * @brief Checks whether the scatter/gather feature is enabled for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @return True stand for enabled. False stands for disabled. + */ +static inline bool edma_hal_htcd_is_gather_scatter_enabled( + uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + return BR_DMA_TCDn_CSR_ESG(instance, channel); + +} + +/*! + * @brief Disables/Enables the DMA request after the major loop completes for the hardware TCD. + * + * If disabled, the eDMA hardware automatically clears the corresponding DMA request when the + * current major iteration count reaches zero. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param isDisabled Disable/Enable. + */ +static inline void edma_hal_htcd_set_disable_dma_request_after_tcd_done( + uint32_t instance, uint32_t channel, bool isDisabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CSR_DREQ(instance, channel, isDisabled); +} + +/*! + * @brief Enables/Disables the half complete interrupt for the hardware TCD. + * + * If set, the channel generates an interrupt request by setting the appropriate bit in the + * interrupt register when the current major iteration count reaches the halfway point. Specifically, + * the comparison performed by the eDMA engine is (CITER == (BITER >> 1)). This half-way point + * interrupt request is provided to support the double-buffered schemes or other types of data movement + * where the processor needs an early indication of the transfer's process. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_htcd_set_half_complete_interrupt( + uint32_t instance, uint32_t channel, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CSR_INTHALF(instance, channel, isEnabled); +} + +/*! + * @brief Enables/Disables the interrupt after the major loop completes for the hardware TCD. + * + * If enabled, the channel generates an interrupt request by setting the appropriate bit in the + * interrupt register when the current major iteration count reaches zero. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_htcd_set_complete_interrupt( + uint32_t instance, uint32_t channel, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CSR_INTMAJOR(instance, channel, isEnabled); +} + +/*! + * @brief Triggers the start bits for the hardware TCD. + * + * The eDMA hardware automatically clears this flag after the channel begins execution. + * + * @param instance eDMA module + * @param channel eDMA channel + */ +static inline void edma_hal_htcd_trigger_channel_start( + uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CSR_START(instance, channel, 1); +} + +/*! + * @brief Checks whether the channel is running for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @return True stands for running. False stands for not. + */ +static inline bool edma_hal_htcd_is_channel_active( + uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + return BR_DMA_TCDn_CSR_ACTIVE(instance, channel); +} + +/*! + * @brief Checks whether the major loop is exhausted for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @return True stands for running. False stands for not. + */ +static inline bool edma_hal_htcd_is_channel_done( + uint32_t instance, uint32_t channel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + return BR_DMA_TCDn_CSR_DONE(instance, channel); +} + +/*! + * @brief Enables/Disables the channel link after the minor loop for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_htcd_set_minor_link( + uint32_t instance, uint32_t channel, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_BITER_ELINKYES_ELINK(instance, channel, isEnabled); +} + +/*! + * @brief Enables/Disables the channel link after the minor loop in the current register for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_htcd_set_current_minor_link( + uint32_t instance, uint32_t channel, bool isEnabled) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CITER_ELINKYES_ELINK(instance, channel, isEnabled); +} + +/*! + * @brief Configures the minor loop link channel for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param minorchannel minor loop link channel + */ +static inline void edma_hal_htcd_configure_minor_link_channel( + uint32_t instance, uint32_t channel, uint32_t minorchannel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_BITER_ELINKYES_LINKCH(instance, channel, minorchannel); +} + +/*! + * @brief Configures the minor loop link channel in the current register for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param minorchannel minor loop link channel + */ +static inline void edma_hal_htcd_configure_current_minor_link_channel( + uint32_t instance, uint32_t channel, uint32_t minorchannel) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CITER_ELINKYES_LINKCH(instance, channel, minorchannel); +} + +/*! + * @brief Configures the major count if the minor loop channel link is disabled for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param count major loop count + */ +static inline void edma_hal_htcd_configure_majorcount_minorlink_disabled( + uint32_t instance, uint32_t channel, uint32_t count) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_BITER_ELINKNO_BITER(instance, channel, count); +} + +/*! + * @brief Configures the current major count if the minor loop channel link is disabled for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param count major loop count + */ +static inline void edma_hal_htcd_configure_current_majorcount_minorlink_disabled( + uint32_t instance, uint32_t channel, uint32_t count) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CITER_ELINKNO_CITER(instance, channel, count); +} + +/*! + * @brief Configures the major count if the minor loop channel link is enabled for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param count major loop count + */ +static inline void edma_hal_htcd_configure_majorcount_minorlink_enabled( + uint32_t instance, uint32_t channel, uint32_t count) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_BITER_ELINKYES_BITER(instance, channel, count); +} + +/*! + * @brief Configures the current major count if the minor loop channel link is enabled for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @param count major loop count + */ +static inline void edma_hal_htcd_configure_current_majorcount_minorlink_enabled( + uint32_t instance, uint32_t channel, uint32_t count) +{ + assert(instance < HW_DMA_INSTANCE_COUNT); + assert(channel < FSL_FEATURE_DMA_MODULE_CHANNEL); + BW_DMA_TCDn_CITER_ELINKYES_CITER(instance, channel, count); +} + +/*! + * @brief Gets the current major loop count. + * + * @param instance eDMA module + * @param channel eDMA channel + * @return current major loop count + */ +uint32_t edma_hal_htcd_get_current_major_count(uint32_t instance, uint32_t channel); + +/*! + * @brief Gets the beginning major loop count. + * + * @param instance eDMA module + * @param channel eDMA channel + * @return begin major loop count + */ +uint32_t edma_hal_htcd_get_begin_major_count(uint32_t instance, uint32_t channel); + +/*! + * @brief Gets the bytes number not to be transferred for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @return data bytes to be transferred + */ +uint32_t edma_hal_htcd_get_unfinished_bytes(uint32_t instance, uint32_t channel); + +/*! + * @brief Gets the number of already transferred bytes for the hardware TCD. + * + * @param instance eDMA module + * @param channel eDMA channel + * @return data bytes to be transferred + */ +uint32_t edma_hal_htcd_get_finished_bytes(uint32_t instance, uint32_t channel); +/* @} */ + +/*! + * @name eDMA HAL software TCD configuration + * @{ + */ + +/*! + * @brief Configures the source address for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param address memory address pointing to the source data + */ +static inline void edma_hal_stcd_configure_source_address( + edma_software_tcd_t *stcd, uint32_t address) +{ + assert(stcd); + stcd->SADDR = DMA_SADDR_SADDR(address); +} + +/*! + * @brief Configures the source address for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param address memory address pointing to the source data + */ +static inline void edma_hal_stcd_configure_source_offset( + edma_software_tcd_t *stcd, uint32_t offset) +{ + assert(stcd); + stcd->SOFF = DMA_SOFF_SOFF(offset); +} + +/*! + * @brief Configures the source modulo for the software TCD. + * + * The value defines a specific address range as the value after the SADDR + SOFF + * calculation is performed on the original register value. Setting this field provides the ability + * to implement a circular data queue. For data queues requiring power-of-2 size bytes, the + * queue should start at a 0-modulo-size address and the SMOD field should be set to the appropriate + * value for the queue, freezing the desired number of upper address bits. The value programmed into + * this field specifies the number of lower address bits allowed to change. For a circular queue + * application, the SOFF is typically set to the transfer size to implement post-increment addressing + * with SMOD function restricting the addresses to a 0-modulo-size range. + * + * @param STCD memory pointing to the eDMA software TCD + * @param modulo enum type for the allowed modulo + */ +static inline void edma_hal_stcd_configure_source_modulo( + edma_software_tcd_t *stcd, edma_modulo_t modulo) +{ + assert(stcd); + stcd->ATTR = (stcd->ATTR & ~DMA_ATTR_SMOD_MASK) | DMA_ATTR_SMOD(modulo); +} + +/*! + * @brief Configures the source data transfersize for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param size enum type for transfer size + */ +static inline void edma_hal_stcd_configure_source_transfersize( + edma_software_tcd_t *stcd, edma_transfer_size_t size) +{ + assert(stcd); + stcd->ATTR = (stcd->ATTR & ~DMA_ATTR_SSIZE_MASK) | DMA_ATTR_SSIZE(size); +} + +/*! + * @brief Configures the destination modulo for the software TCD. + * + * The value defines a specific address range as the value after the DADDR + DOFF + * calculation is performed on the original register value. Setting this field provides the ability + * to implement a circular data queue easily. For data queues requiring power-of-2 size bytes, the + * queue should start at a 0-modulo-size address and the SMOD field should be set to the appropriate + * value for the queue, freezing the desired number of upper address bits. The value programmed into + * this field specifies the number of lower address bits allowed to change. For a circular queue + * application, the SOFF is typically set to the transfer size to implement post-increment addressing + * with DMOD function restricting the addresses to a 0-modulo-size range. + * + * @param STCD memory pointing to the eDMA software TCD + * @param modulo enum type for allowed modulo + */ +static inline void edma_hal_stcd_configure_dest_modulo( + edma_software_tcd_t *stcd, edma_modulo_t modulo) +{ + assert(stcd); + stcd->ATTR = (stcd->ATTR & ~DMA_ATTR_DMOD_MASK) | DMA_ATTR_DMOD(modulo); +} + +/*! + * @brief Configures the destination data transfersize for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param size enum type for transfer size + */ +static inline void edma_hal_stcd_configure_dest_transfersize( + edma_software_tcd_t *stcd, edma_transfer_size_t size) +{ + assert(stcd); + stcd->ATTR = (stcd->ATTR & ~DMA_ATTR_DSIZE_MASK) | DMA_ATTR_DSIZE(size); +} + +/*! + * @brief Configures the nbytes if minor loop mapping is disabled the for software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param nbytes Number of bytes to be transferred in each service request of the channel + */ +static inline void edma_hal_stcd_configure_nbytes_minorloop_disabled( + edma_software_tcd_t *stcd, uint32_t nbytes) +{ + assert(stcd); + stcd->NBYTES_MLNO = + (stcd->NBYTES_MLNO & ~DMA_NBYTES_MLNO_NBYTES_MASK) | DMA_NBYTES_MLNO_NBYTES(nbytes); +} + +/*! + * @brief Configures the nbytes if the minor loop mapping is enabled and offset is disabled for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param nbytes Number of bytes to be transferred in each service request of the channel + */ +static inline void edma_hal_stcd_configure_nbytes_minorloop_enabled_offset_disabled( + edma_software_tcd_t *stcd, uint32_t nbytes) +{ + assert(stcd); + stcd->NBYTES_MLOFFNO = + (stcd->NBYTES_MLOFFNO & ~DMA_NBYTES_MLOFFNO_NBYTES_MASK) | DMA_NBYTES_MLOFFNO_NBYTES(nbytes); +} + +/*! + * @brief Configures the nbytes if minor loop mapping is enabled and offset is enabled for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD. + * @param nbytes Number of bytes to be transferred in each service request of the channel. + */ +static inline void edma_hal_stcd_configure_nbytes_minorloop_enabled_offset_enabled( + edma_software_tcd_t *stcd, uint32_t nbytes) +{ + assert(stcd); + stcd->NBYTES_MLOFFYES = + (stcd->NBYTES_MLOFFYES & ~DMA_NBYTES_MLOFFYES_NBYTES_MASK) | DMA_NBYTES_MLOFFYES_NBYTES(nbytes); +} + +/*! + * @brief Configures the minorloop offset for the software TCD. + * + * Configures both the enable bits and the offset value. If neither source nor destination offset is enabled, + * offset can't be configured. + * + * @param STCD memory pointing to the eDMA software TCD + * @param config Configuration data structure for the minorloop offset + */ +static inline void edma_hal_stcd_configure_minorloop_offset( + edma_software_tcd_t *stcd, edma_minorloop_offset_config_t *config) +{ + assert(stcd); + stcd->NBYTES_MLOFFYES = + (stcd->NBYTES_MLOFFYES & ~(DMA_NBYTES_MLOFFYES_SMLOE_MASK | DMA_NBYTES_MLOFFYES_DMLOE_MASK)) | + (((uint32_t)config->isEnableSourceMinorloop << DMA_NBYTES_MLOFFYES_SMLOE_SHIFT) | + ((uint32_t)config->isEnableDestMinorloop << DMA_NBYTES_MLOFFYES_DMLOE_SHIFT)); + + if ((config->isEnableSourceMinorloop == true) || (config->isEnableDestMinorloop == true)) + { + stcd->NBYTES_MLOFFYES = + (stcd->NBYTES_MLOFFYES & ~DMA_NBYTES_MLOFFYES_MLOFF_MASK) | + DMA_NBYTES_MLOFFYES_MLOFF(config->offset); + } +} + +/*! + * @brief Configures the last source address adjustment for the software TCD. + * + * Adjustment value added to the source address at the completion of the major iteration count. This + * value can be applied to restore the source address to the initial value, or adjust the address to + * reference the next data structure. + * + * @param STCD memory pointing to the eDMA software TCD + * @param size adjustment value + */ +static inline void edma_hal_stcd_configure_source_last_adjustment( + edma_software_tcd_t *stcd, int32_t size) +{ + assert(stcd); + stcd->SLAST = (stcd->SLAST & ~DMA_SLAST_SLAST_MASK) | DMA_SLAST_SLAST(size); +} + +/*! + * @brief Configures the destination address for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param address memory address pointing to destination data + */ +static inline void edma_hal_stcd_configure_dest_address( + edma_software_tcd_t *stcd, uint32_t address) +{ + assert(stcd); + stcd->DADDR = DMA_DADDR_DADDR(address); +} + +/*! + * @brief Configures the destination address signed offset for the software TCD. + * + * Sign-extended offset applied to the current source address to form the next-state value as each + * destination write is complete. + * + * @param STCD memory pointing to the eDMA software TCD + * @param offset signed-offset + */ +static inline void edma_hal_stcd_configure_dest_offset( + edma_software_tcd_t *stcd, uint32_t offset) +{ + assert(stcd); + stcd->DOFF = DMA_DOFF_DOFF(offset); +} + +/*! + * @brief Configures the last source address adjustment or the memory address for the next transfer + * control for the software TCD. + * + * If the scatter/gather feature is enabled(edma_hal_htcd_set_scatter_gather_process()): + * + * This address points to the beginning of a 0-modulo-32 byte region containing the next transfer + * control descriptor to be loaded into this channel. The channel reload is performed as the major + * iteration count completes. The scatter/gather address must be 0-modulo-32-byte. Otherwise, a + * configuration error is reported. + * + * else: + * + * Adjustment value added to the source address at the completion of the major iteration count. This + * value can be applied to restore the source address to the initial value, or adjust the address to + * reference the next data structure. + * + * @param STCD memory pointing to the eDMA software TCD + * @param size adjustment value + */ +static inline void edma_hal_stcd_configure_dest_last_adjustment_or_scatter_address( + edma_software_tcd_t *stcd, uint32_t address) +{ + assert(stcd); + stcd->DLAST_SGA = DMA_DLAST_SGA_DLASTSGA(address); +} + +/*! + * @brief Configures the bandwidth for the software TCD. + * + * Throttles the amount of bus bandwidth consumed by the eDMA. As the eDMA processes the + * minor loop, it continuously generates read/write sequences until the minor count is exhausted. + * This field forces the eDMA to stall after the completion of each read/write access to control the + * bus request bandwidth seen by the crossbar switch. + * + * @param STCD memory pointing to the eDMA software TCD + * @param bandwidth enum type for bandwidth control + */ +static inline void edma_hal_stcd_configure_bandwidth( + edma_software_tcd_t *stcd, edma_bandwidth_configuration_t bandwidth) +{ + assert(stcd); + stcd->CSR = (stcd->CSR & ~DMA_CSR_BWC_MASK) | DMA_CSR_BWC(bandwidth); +} + +/*! + * @brief Configures the major link channel number for the software TCD. + * + * If majorlink is enabled, after the major loop counter is exhausted, the eDMA engine initiates a + * channel service request at the channel defined by these six bits by setting that channel start + * bits. + * + * @param STCD memory pointing to the eDMA software TCD + * @param majorchannel channel number for major link + */ +static inline void edma_hal_stcd_configure_majorlink_channel( + edma_software_tcd_t *stcd, uint32_t majorchannel) +{ + assert(stcd); + stcd->CSR = (stcd->CSR & ~DMA_CSR_MAJORLINKCH_MASK) | DMA_CSR_MAJORLINKCH(majorchannel); +} + +/*! + * @brief Enables/Disables the major link channel feature for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_stcd_set_majorlink(edma_software_tcd_t *stcd, bool isEnabled) +{ + assert(stcd); + stcd->CSR = (stcd->CSR & ~DMA_CSR_MAJORELINK_MASK) | + ((uint32_t)isEnabled << DMA_CSR_MAJORELINK_SHIFT); +} + +/*! + * @brief Enables/Disables the scatter/gather feature for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_stcd_set_scatter_gather_process( + edma_software_tcd_t *stcd, bool isEnabled) +{ + assert(stcd); + stcd->CSR = (stcd->CSR & ~DMA_CSR_ESG_MASK) | ((uint32_t)isEnabled << DMA_CSR_ESG_SHIFT); +} + +/*! + * @brief Disables/Enables the DMA request after the major loop completes for the software TCD. + * + * If disabled, the eDMA hardware automatically clears the corresponding DMA request when the + * current major iteration count reaches zero. + * + * @param STCD memory pointing to the eDMA software TCD. + * @param isDisabled Disable/Enable + */ +static inline void edma_hal_stcd_set_disable_dma_request_after_tcd_done( + edma_software_tcd_t *stcd, bool isDisabled) +{ + assert(stcd); + stcd->CSR = (stcd->CSR & ~DMA_CSR_DREQ_MASK) | ((uint32_t)isDisabled << DMA_CSR_DREQ_SHIFT); +} + +/*! + * @brief Enables/Disables the half complete interrupt for the software TCD. + * + * If set, the channel generates an interrupt request by setting the appropriate bit in the + * interrupt register when the current major iteration count reaches the halfway point. Specifically, + * the comparison performed by the eDMA engine is (CITER == (BITER >> 1)). This half way point + * interrupt request is provided to support the double-buffered schemes or other types of data movement + * where the processor needs an early indication of the transfer process. + * + * @param STCD memory pointing to the eDMA software TCD + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_stcd_set_half_complete_interrupt( + edma_software_tcd_t *stcd, bool isEnabled) +{ + assert(stcd); + stcd->CSR = (stcd->CSR & ~DMA_CSR_INTHALF_MASK) | ((uint32_t)isEnabled << DMA_CSR_INTHALF_SHIFT); +} + +/*! + * @brief Enables/Disables the interrupt after major loop complete for the software TCD. + * + * If enabled, the channel generates an interrupt request by setting the appropriate bit in the + * interrupt register when the current major iteration count reaches zero. + * + * @param STCD memory pointing to the eDMA software TCD + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_stcd_set_complete_interrupt( + edma_software_tcd_t *stcd, bool isEnabled) +{ + assert(stcd); + stcd->CSR = (stcd->CSR & ~DMA_CSR_INTMAJOR_MASK) | ((uint32_t)isEnabled << DMA_CSR_INTMAJOR_SHIFT); +} + +/*! + * @brief Sets the trigger start bits for the software TCD. + * + */ +static inline void edma_hal_stcd_trigger_channel_start( + edma_software_tcd_t *stcd) +{ + assert(stcd); + stcd->CSR |= DMA_CSR_START_MASK; +} + +/*! + * @brief Enables/Disables the channel link after the minor loop for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_stcd_set_minor_link( + edma_software_tcd_t *stcd, bool isEnabled) +{ + assert(stcd); + stcd->BITER_ELINKYES = (stcd->BITER_ELINKYES & ~DMA_BITER_ELINKYES_ELINK_MASK) | + ((uint32_t)isEnabled << DMA_BITER_ELINKYES_ELINK_SHIFT); +} + +/*! + * @brief Enables/Disables the current channel link after the minor loop for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param isEnabled Enable/Disable + */ +static inline void edma_hal_stcd_set_current_minor_link( + edma_software_tcd_t *stcd, bool isEnabled) +{ + assert(stcd); + stcd->CITER_ELINKYES = (stcd->CITER_ELINKYES & ~DMA_CITER_ELINKYES_ELINK_MASK) | + ((uint32_t)isEnabled << DMA_CITER_ELINKYES_ELINK_SHIFT); +} + +/*! + * @brief Configures the minor loop link channel for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param minorchannel minor loop link channel + */ +static inline void edma_hal_stcd_configure_minor_link_channel( + edma_software_tcd_t *stcd, uint32_t minorchannel) +{ + assert(stcd); + stcd->BITER_ELINKYES = (stcd->BITER_ELINKYES & ~DMA_BITER_ELINKYES_LINKCH_MASK) | + DMA_BITER_ELINKYES_LINKCH(minorchannel); +} + +/*! + * @brief Configures the minor loop link channel for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param minorchannel minor loop link channel. + */ +static inline void edma_hal_stcd_configure_current_minor_link_channel( + edma_software_tcd_t *stcd, uint32_t minorchannel) +{ + assert(stcd); + stcd->CITER_ELINKYES = (stcd->CITER_ELINKYES & ~DMA_CITER_ELINKYES_LINKCH_MASK) | + DMA_CITER_ELINKYES_LINKCH(minorchannel); +} + +/*! + * @brief Configures the major count if the minor loop channel link is disabled for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param count major loop count + */ +static inline void edma_hal_stcd_configure_majorcount_minorlink_disabled( + edma_software_tcd_t *stcd, uint32_t count) +{ + assert(stcd); + stcd->BITER_ELINKNO = (stcd->BITER_ELINKNO & ~DMA_BITER_ELINKNO_BITER_MASK) | + DMA_BITER_ELINKNO_BITER(count); +} + +/*! + * @brief Configure current major count if minor loop channel link is disabled for software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param count major loop count + */ +static inline void edma_hal_stcd_configure_current_majorcount_minorlink_disabled( + edma_software_tcd_t *stcd, uint32_t count) +{ + assert(stcd); + stcd->CITER_ELINKNO = (stcd->CITER_ELINKNO & ~DMA_CITER_ELINKNO_CITER_MASK) | + DMA_CITER_ELINKNO_CITER(count); +} + +/*! + * @brief Configures the major count if the minor loop channel link is enabled for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param count major loop count + */ +static inline void edma_hal_stcd_configure_majorcount_minorlink_enabled( + edma_software_tcd_t *stcd, uint32_t count) +{ + assert(stcd); + stcd->BITER_ELINKYES = (stcd->BITER_ELINKYES & ~DMA_BITER_ELINKYES_BITER_MASK) | + DMA_BITER_ELINKYES_BITER(count); +} + +/*! + * @brief Configures the current major count if the minor loop channel link is enabled for the software TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param count major loop count + */ +static inline void edma_hal_stcd_configure_current_majorcount_minorlink_enabled( + edma_software_tcd_t *stcd, uint32_t count) +{ + assert(stcd); + stcd->CITER_ELINKYES = (stcd->CITER_ELINKYES & ~DMA_CITER_ELINKYES_CITER_MASK) | + DMA_CITER_ELINKYES_CITER(count); +} + +/*! + * @brief Copy the software TCD configuration to the hardware TCD. + * + * @param STCD memory pointing to the eDMA software TCD + * @param instance eDMA module + * @param channel eDMA channel + * @param STCD memory pointing to the software TCD + */ +void edma_hal_stcd_push_to_htcd(uint32_t instance, uint32_t channel, edma_software_tcd_t *stcd); + +/* @} */ + +#if defined(__cplusplus) +} +#endif + +/*! @} */ + +#endif /* __EDMA_HAL_H__ */ + +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/enet/fsl_enet_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_ENET_FEATURES_H__) +#define __FSL_ENET_FEATURES_H__ + + +#if defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK63FN1M0VMD12WS) || defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12) + #define FSL_FEATURE_ENET_DMA_BIG_ENDIAN_ONLY (1) + #define FSL_FEATURE_ENET_SUPPORT_PTP (0) + #define FSL_FEATURE_ENET_INTERRUPT_COUNT (4) + #define FSL_FEATURE_ENET_PTP_TIMER_CHANNEL_INTERRUPT (0) +#elif defined(CPU_MK70FN1M0VMJ12) + #define FSL_FEATURE_ENET_DMA_BIG_ENDIAN_ONLY (1) + #define FSL_FEATURE_ENET_SUPPORT_PTP (0) + #define FSL_FEATURE_ENET_INTERRUPT_COUNT (4) +#else + #error "No valid CPU defined" +#endif + + +#endif /* __FSL_ENET_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/enet/fsl_enet_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1415 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __FSL_ENET_HAL_H__ +#define __FSL_ENET_HAL_H__ + +#include <stdint.h> +#include <stdbool.h> +#include "fsl_device_registers.h" +#include "fsl_enet_features.h" +#include <assert.h> + +/*! + * @addtogroup enet_hal + * @{ + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ +/*! @brief Defines the system endian type.*/ +#define SYSTEM_LITTLE_ENDIAN (1) + +/*! @brief Define macro to do the endianness swap*/ +#define BSWAP_16(x) (uint16_t)((uint16_t)(((uint16_t)(x) & (uint16_t)0xFF00) >> 0x8) | (uint16_t)(((uint16_t)(x) & (uint16_t)0xFF) << 0x8)) +#define BSWAP_32(x) (uint32_t)((((uint32_t)(x) & 0x00FFU) << 24) | (((uint32_t)(x) & 0x00FF00U) << 8) | (((uint32_t)(x) & 0xFF0000U) >> 8) | (((uint32_t)(x) & 0xFF000000U) >> 24)) +#if SYSTEM_LITTLE_ENDIAN && FSL_FEATURE_ENET_DMA_BIG_ENDIAN_ONLY +#define HTONS(n) BSWAP_16(n) +#define HTONL(n) BSWAP_32(n) +#define NTOHS(n) BSWAP_16(n) +#define NTOHL(n) BSWAP_32(n) +#else +#define HTONS(n) (n) +#define HTONL(n) (n) +#define NTOHS(n) (n) +#define NTOHL(n) (n) +#endif + +/*! @brief Defines the Status return codes.*/ +typedef enum _enet_status +{ + kStatus_ENET_Success = 0, + kStatus_ENET_InvalidInput, /*!< Invalid ENET input parameter */ + kStatus_ENET_MemoryAllocateFail, /*!< Memory allocate failure*/ + kStatus_ENET_GetClockFreqFail, /*!< Get clock frequency failure*/ + kStatus_ENET_Initialized, /*!< ENET device already initialized*/ + kStatus_ENET_Layer2QueueNull, /*!< NULL L2 PTP buffer queue pointer*/ + kStatus_ENET_Layer2OverLarge, /*!< Layer2 packet length over large*/ + kStatus_ENET_Layer2BufferFull, /*!< Layer2 packet buffer full*/ + kStatus_ENET_PtpringBufferFull, /*!< PTP ring buffer full*/ + kStatus_ENET_PtpringBufferEmpty, /*!< PTP ring buffer empty*/ + kStatus_ENET_Miiuninitialized, /*!< MII uninitialized*/ + kStatus_ENET_RxbdInvalid, /*!< Receive buffer descriptor invalid*/ + kStatus_ENET_RxbdEmpty, /*!< Receive buffer descriptor empty*/ + kStatus_ENET_RxbdTrunc, /*!< Receive buffer descriptor truncate*/ + kStatus_ENET_RxbdError, /*!< Receive buffer descriptor error*/ + kStatus_ENET_RxBdFull, /*!< Receive buffer descriptor full*/ + kStatus_ENET_SmallBdSize, /*!< Small receive buffer size*/ + kStatus_ENET_LargeBufferFull, /*!< Receive large buffer full*/ + kStatus_ENET_TxbdFull, /*!< Transmit buffer descriptor full*/ + kStatus_ENET_TxbdNull, /*!< Transmit buffer descriptor Null*/ + kStatus_ENET_TxBufferNull, /*!< Transmit data buffer Null*/ + kStatus_ENET_NoRxBufferLeft, /*!< No more receive buffer left*/ + kStatus_ENET_UnknownCommand, /*!< Invalid ENET PTP IOCTL command*/ + kStatus_ENET_TimeOut, /*!< ENET Timeout*/ + kStatus_ENET_MulticastPointerNull, /*!< Null multicast group pointer*/ + kStatus_ENET_AlreadyAddedMulticast /*!< Have Already added to multicast group*/ +} enet_status_t; + + +#if FSL_FEATURE_ENET_DMA_BIG_ENDIAN_ONLY && SYSTEM_LITTLE_ENDIAN +/*! @brief Defines the control and status regions of the receive buffer descriptor.*/ +typedef enum _enet_rx_bd_control_status +{ + kEnetRxBdBroadCast = 0x8000, /*!< Broadcast */ + kEnetRxBdMultiCast = 0x4000, /*!< Multicast*/ + kEnetRxBdLengthViolation = 0x2000, /*!< Receive length violation*/ + kEnetRxBdNoOctet = 0x1000, /*!< Receive non-octet aligned frame*/ + kEnetRxBdCrc = 0x0400, /*!< Receive CRC error*/ + kEnetRxBdOverRun = 0x0200, /*!< Receive FIFO overrun*/ + kEnetRxBdTrunc = 0x0100, /*!< Frame is truncated */ + kEnetRxBdEmpty = 0x0080, /*!< Empty bit*/ + kEnetRxBdRxSoftOwner1 = 0x0040, /*!< Receive software owner*/ + kEnetRxBdWrap = 0x0020, /*!< Update buffer descriptor*/ + kEnetRxBdRxSoftOwner2 = 0x0010, /*!< Receive software owner*/ + kEnetRxBdLast = 0x0008, /*!< Last BD in the frame*/ + kEnetRxBdMiss = 0x0001 /*!< Receive for promiscuous mode*/ +} enet_rx_bd_control_status_t; + +/*! @brief Defines the control extended regions of the receive buffer descriptor.*/ +typedef enum _enet_rx_bd_control_extend +{ + kEnetRxBdUnicast = 0x0001, /*!< Unicast frame*/ + kEnetRxBdCollision = 0x0002, /*!< BD collision*/ + kEnetRxBdPhyErr = 0x0004, /*!< PHY error*/ + kEnetRxBdMacErr = 0x0080, /*!< Mac error*/ + kEnetRxBdIpv4 = 0x0100, /*!< Ipv4 frame*/ + kEnetRxBdIpv6 = 0x0200, /*!< Ipv6 frame*/ + kEnetRxBdVlan = 0x0400, /*!< VLAN*/ + kEnetRxBdProtocolChecksumErr = 0x1000, /*!< Protocol checksum error*/ + kEnetRxBdIpHeaderChecksumErr = 0x2000, /*!< IP header checksum error*/ + kEnetRxBdIntrrupt = 0x8000 /*!< BD interrupt*/ +} enet_rx_bd_control_extend_t; + +/*! @brief Defines the control status region of the transmit buffer descriptor.*/ +typedef enum _enet_tx_bd_control_status +{ + kEnetTxBdReady = 0x0080, /*!< Ready bit*/ + kEnetTxBdTxSoftOwner1 = 0x0040, /*!< Transmit software owner*/ + kEnetTxBdWrap = 0x0020, /*!< Wrap buffer descriptor*/ + kEnetTxBdTxSoftOwner2 = 0x0010, /*!< Transmit software owner*/ + kEnetTxBdLast = 0x0008, /*!< Last BD in the frame*/ + kEnetTxBdTransmitCrc = 0x0004 /*!< Receive for transmit CRC*/ +} enet_tx_bd_control_status_t; + +/*! @brief Defines the control extended region of the transmit buffer descriptor.*/ +typedef enum _enet_tx_bd_control_extend +{ + kEnetTxBdTxErr = 0x0080, /*!< Transmit error*/ + kEnetTxBdTxUnderFlowErr = 0x0020, /*!< Underflow error*/ + kEnetTxBdExcessCollisionErr = 0x0010, /*!< Excess collision error*/ + kEnetTxBdTxFrameErr = 0x0008, /*!< Frame error*/ + kEnetTxBdLatecollisionErr = 0x0004, /*!< Late collision error*/ + kEnetTxBdOverFlowErr = 0x0002, /*!< Overflow error*/ + kEnetTxTimestampErr = 0x0001 /*!< Timestamp error*/ +} enet_tx_bd_control_extend_t; + +/*! @brief Defines the control extended2 region of the transmit buffer descriptor.*/ +typedef enum _enet_tx_bd_control_extend2 +{ + kEnetTxBdTxInterrupt = 0x0040, /*!< Transmit interrupt*/ + kEnetTxBdTimeStamp = 0x0020 /*!< Transmit timestamp flag */ +} enet_tx_bd_control_extend2_t; +#else +/*! @brief Defines the control and status region of the receive buffer descriptor.*/ +typedef enum _enet_rx_bd_control_status +{ + kEnetRxBdEmpty = 0x8000, /*!< Empty bit*/ + kEnetRxBdRxSoftOwner1 = 0x4000, /*!< Receive software owner*/ + kEnetRxBdWrap = 0x2000, /*!< Update buffer descriptor*/ + kEnetRxBdRxSoftOwner2 = 0x1000, /*!< Receive software owner*/ + kEnetRxBdLast = 0x0800, /*!< Last BD in the frame*/ + kEnetRxBdMiss = 0x0100, /*!< Receive for promiscuous mode*/ + kEnetRxBdBroadCast = 0x0080, /*!< Broadcast */ + kEnetRxBdMultiCast = 0x0040, /*!< Multicast*/ + kEnetRxBdLengthViolation = 0x0020, /*!< Receive length violation*/ + kEnetRxBdNoOctet = 0x0010, /*!< Receive non-octet aligned frame*/ + kEnetRxBdCrc = 0x0004, /*!< Receive CRC error*/ + kEnetRxBdOverRun = 0x0002, /*!< Receive FIFO overrun*/ + kEnetRxBdTrunc = 0x0001 /*!< Frame is truncated */ +} enet_rx_bd_control_status_t; + +/*! @brief Defines the control extended region of the receive buffer descriptor.*/ +typedef enum _enet_rx_bd_control_extend +{ + kEnetRxBdIpv4 = 0x0001, /*!< Ipv4 frame*/ + kEnetRxBdIpv6 = 0x0002, /*!< Ipv6 frame*/ + kEnetRxBdVlan = 0x0004, /*!< VLAN*/ + kEnetRxBdProtocolChecksumErr = 0x0010, /*!< Protocol checksum error*/ + kEnetRxBdIpHeaderChecksumErr = 0x0020, /*!< IP header checksum error*/ + kEnetRxBdIntrrupt = 0x0080, /*!< BD interrupt*/ + kEnetRxBdUnicast = 0x0100, /*!< Unicast frame*/ + kEnetRxBdCollision = 0x0200, /*!< BD collision*/ + kEnetRxBdPhyErr = 0x0400, /*!< PHY error*/ + kEnetRxBdMacErr = 0x8000 /*!< Mac error */ +} enet_rx_bd_control_extend_t; + +/*! @brief Defines the control status of the transmit buffer descriptor.*/ +typedef enum _enet_tx_bd_control_status +{ + kEnetTxBdReady = 0x8000, /*!< Ready bit*/ + kEnetTxBdTxSoftOwner1 = 0x4000, /*!< Transmit software owner*/ + kEnetTxBdWrap = 0x2000, /*!< Wrap buffer descriptor*/ + kEnetTxBdTxSoftOwner2 = 0x1000, /*!< Transmit software owner*/ + kEnetTxBdLast = 0x0800, /*!< Last BD in the frame*/ + kEnetTxBdTransmitCrc = 0x0400 /*!< Receive for transmit CRC */ +} enet_tx_bd_control_status_t; + +/*! @brief Defines the control extended of the transmit buffer descriptor.*/ +typedef enum _enet_tx_bd_control_extend +{ + kEnetTxBdTxErr = 0x8000, /*!< Transmit error*/ + kEnetTxBdTxUnderFlowErr = 0x2000, /*!< Underflow error*/ + kEnetTxBdExcessCollisionErr = 0x1000, /*!< Excess collision error*/ + kEnetTxBdTxFrameErr = 0x0800, /*!< Frame error*/ + kEnetTxBdLatecollisionErr = 0x0400, /*!< Late collision error*/ + kEnetTxBdOverFlowErr = 0x0200, /*!< Overflow error*/ + kEnetTxTimestampErr = 0x0100 /*!< Timestamp error*/ +} enet_tx_bd_control_extend_t; + +/*! @brief Defines the control extended2 of the transmit buffer descriptor.*/ +typedef enum _enet_tx_bd_control_extend2 +{ + kEnetTxBdTxInterrupt = 0x4000, /*!< Transmit interrupt*/ + kEnetTxBdTimeStamp = 0x2000 /*!< Transmit timestamp flag */ +} enet_tx_bd_control_extend2_t; +#endif + +/*! @brief Defines the macro to the different ENET constant value.*/ +typedef enum _enet_constant_parameter +{ + kEnetMacAddrLen = 6, /*!< ENET mac address length*/ + kEnetHashValMask = 0x1f, /*!< ENET hash value mask*/ + kEnetRxBdCtlJudge1 = 0x0080,/*!< ENET receive buffer descriptor control judge value1*/ + kEnetRxBdCtlJudge2 = 0x8000 /*!< ENET receive buffer descriptor control judge value2*/ +} enet_constant_parameter_t; + +/*! @brief Defines the RMII or MII mode for data interface between the MAC and the PHY.*/ +typedef enum _enet_config_rmii +{ + kEnetCfgMii = 0, /*!< MII mode for data interface*/ + kEnetCfgRmii = 1 /*!< RMII mode for data interface*/ +} enet_config_rmii_t; + +/*! @brief Defines the 10 Mbps or 100 Mbps speed mode for the data transfer.*/ +typedef enum _enet_config_speed +{ + kEnetCfgSpeed100M = 0, /*!< Speed 100 M mode*/ + kEnetCfgSpeed10M = 1 /*!< Speed 10 M mode*/ +} enet_config_speed_t; + +/*! @brief Defines the half or full duplex mode for the data transfer.*/ +typedef enum _enet_config_duplex +{ + kEnetCfgHalfDuplex = 0, /*!< Half duplex mode*/ + kEnetCfgFullDuplex = 1 /*!< Full duplex mode*/ +} enet_config_duplex_t; + +/*! @brief Defines the write/read operation for the MII.*/ +typedef enum _enet_mii_operation +{ + kEnetWriteNoCompliant = 0, /*!< Write frame operation, but not MII compliant.*/ + kEnetWriteValidFrame = 1, /*!< Write frame operation for a valid MII management frame*/ + kEnetReadValidFrame = 2, /*!< Read frame operation for a valid MII management frame.*/ + kEnetReadNoCompliant = 3 /*!< Read frame operation, but not MII compliant*/ +}enet_mii_operation_t; + +/*! @brief Define holdon time on MDIO output*/ +typedef enum _enet_mdio_holdon_clkcycle +{ + kEnetMdioHoldOneClkCycle = 0, /*!< MDIO output hold on one clock cycle*/ + kEnetMdioHoldTwoClkCycle = 1, /*!< MDIO output hold on two clock cycles*/ + kEnetMdioHoldThreeClkCycle = 2, /*!< MDIO output hold on three clock cycles*/ + kEnetMdioHoldFourClkCycle = 3, /*!< MDIO output hold on four clock cycles*/ + kEnetMdioHoldFiveClkCycle = 4, /*!< MDIO output hold on five clock cycles*/ + kEnetMdioHoldSixClkCycle = 5, /*!< MDIO output hold on six clock cycles*/ + kEnetMdioHoldSevenClkCycle = 6, /*!< MDIO output hold seven two clock cycles*/ + kEnetMdioHoldEightClkCycle = 7, /*!< MDIO output hold on eight clock cycles*/ +}enet_mdio_holdon_clkcycle_t; + +/*! @brief Defines the initialization, enables or disables the operation for a special address filter */ +typedef enum _enet_special_address_filter +{ + kEnetSpecialAddressInit= 0, /*!< Initializes the special address filter.*/ + kEnetSpecialAddressEnable = 1, /*!< Enables the special address filter.*/ + kEnetSpecialAddressDisable = 2 /*!< Disables the special address filter.*/ +} enet_special_address_filter_t; + +/*! @brief Defines the capture or compare mode for 1588 timer channels.*/ +typedef enum _enet_timer_channel_mode +{ + kEnetChannelDisable = 0, /*!< Disable timer channel*/ + kEnetChannelRisingCapture = 1, /*!< Input capture on rising edge*/ + kEnetChannelFallingCapture = 2, /*!< Input capture on falling edge*/ + kEnetChannelBothCapture = 3, /*!< Input capture on both edges*/ + kEnetChannelSoftCompare = 4, /*!< Output compare software only*/ + kEnetChannelToggleCompare = 5, /*!< Toggle output on compare*/ + kEnetChannelClearCompare = 6, /*!< Clear output on compare*/ + kEnetChannelSetCompare = 7, /*!< Set output on compare*/ + kEnetChannelClearCompareSetOverflow = 10, /*!< Clear output on compare, set output on overflow*/ + kEnetChannelSetCompareClearOverflow = 11, /*!< Set output on compare, clear output on overflow*/ + kEnetChannelPulseLowonCompare = 14, /*!< Pulse output low on compare for one 1588 clock cycle*/ + kEnetChannelPulseHighonCompare = 15 /*!< Pulse output high on compare for one 1588 clock cycle*/ +} enet_timer_channel_mode_t; + +/*! @brief Defines the RXFRAME/RXBYTE/TXFRAME/TXBYTE/MII/TSTIMER/TSAVAIL interrupt source for ENET.*/ +typedef enum _enet_interrupt_request +{ + kEnetBabrInterrupt = 0x40000000, /*!< BABR interrupt source*/ + kEnetBabtInterrupt = 0x20000000, /*!< BABT interrupt source*/ + kEnetGraInterrupt = 0x10000000, /*!< GRA interrupt source*/ + kEnetTxFrameInterrupt = 0x8000000, /*!< TXFRAME interrupt source */ + kEnetTxByteInterrupt = 0x4000000, /*!< TXBYTE interrupt source*/ + kEnetRxFrameInterrupt = 0x2000000, /*!< RXFRAME interrupt source */ + kEnetRxByteInterrupt = 0x1000000, /*!< RXBYTE interrupt source */ + kEnetMiiInterrupt = 0x0800000, /*!< MII interrupt source*/ + kEnetEBERInterrupt = 0x0400000, /*!< EBERR interrupt source*/ + kEnetLcInterrupt = 0x0200000, /*!< LC interrupt source*/ + kEnetRlInterrupt = 0x0100000, /*!< RL interrupt source*/ + kEnetUnInterrupt = 0x0080000, /*!< UN interrupt source*/ + kEnetPlrInterrupt = 0x0040000, /*!< PLR interrupt source*/ + kEnetWakeupInterrupt = 0x0020000, /*!< WAKEUP interrupt source*/ + kEnetTsAvailInterrupt = 0x0010000, /*!< TS AVAIL interrupt source*/ + kEnetTsTimerInterrupt = 0x0008000, /*!< TS WRAP interrupt source*/ + kEnetAllInterrupt = 0x7FFFFFFF /*!< All interrupt*/ +} enet_interrupt_request_t; + +/*! @brief Defines the six-byte Mac address type.*/ +typedef uint8_t enetMacAddr[kEnetMacAddrLen]; + +#if (!FSL_FEATURE_ENET_DMA_BIG_ENDIAN_ONLY) && SYSTEM_LITTLE_ENDIAN +/*! @brief Defines the buffer descriptor structure for the little-Endian system and endianness configurable IP.*/ +typedef struct ENETBdStruct +{ + uint16_t length; /*!< Buffer descriptor data length*/ + uint16_t control; /*!< Buffer descriptor control*/ + uint8_t *buffer; /*!< Data buffer pointer*/ + uint16_t controlExtend0; /*!< Extend buffer descriptor control0*/ + uint16_t controlExtend1; /*!< Extend buffer descriptor control1*/ + uint16_t payloadCheckSum; /*!< Internal payload checksum*/ + uint8_t headerLength; /*!< Header length*/ + uint8_t protocalTyte; /*!< Protocol type*/ + uint16_t reserved0; + uint16_t controlExtend2; /*!< Extend buffer descriptor control2*/ + uint32_t timestamp; /*!< Timestamp */ + uint16_t reserved1; + uint16_t reserved2; + uint16_t reserved3; + uint16_t reserved4; +} enet_bd_struct_t; + +#else +/*! @brief Defines the buffer descriptors structure for the Big-Endian system.*/ +typedef struct ENETBdStruct +{ + uint16_t control; /*!< Buffer descriptor control */ + uint16_t length; /*!< Buffer descriptor data length*/ + uint8_t *buffer; /*!< Data buffer pointer*/ + uint16_t controlExtend1; /*!< Extend buffer descriptor control1*/ + uint16_t controlExtend0; /*!< Extend buffer descriptor control0*/ + uint8_t headerLength; /*!< Header length*/ + uint8_t protocalTyte; /*!< Protocol type*/ + uint16_t payloadCheckSum; /*!< Internal payload checksum*/ + uint16_t controlExtend2; /*!< Extend buffer descriptor control2*/ + uint16_t reserved0; + uint32_t timestamp; /*!< Timestamp pointer*/ + uint16_t reserved1; + uint16_t reserved2; + uint16_t reserved3; + uint16_t reserved4; +} enet_bd_struct_t; +#endif + +/*! @brief Defines the configuration structure for the 1588 PTP timer.*/ +typedef struct ENETConfigPtpTimer +{ + bool isSlaveEnabled; /*!< Master or slave PTP timer*/ + uint32_t clockIncease; /*!< Timer increase value each clock period*/ + uint32_t period; /*!< Timer period for generate interrupt event */ +} enet_config_ptp_timer_t; + +/*! @brief Defines the transmit accelerator configuration.*/ +typedef struct ENETConfigTxAccelerator +{ + bool isIpCheckEnabled; /*!< Insert IP header checksum */ + bool isProtocolCheckEnabled; /*!< Insert protocol checksum*/ + bool isShift16Enabled; /*!< Tx FIFO shift-16*/ +} enet_config_tx_accelerator_t; + +/*! @brief Defines the receive accelerator configuration.*/ +typedef struct ENETConfigRxAccelerator +{ + bool isIpcheckEnabled; /*!< Discard with wrong IP header checksum */ + bool isProtocolCheckEnabled; /*!< Discard with wrong protocol checksum*/ + bool isMacCheckEnabled; /*!< Discard with Mac layer errors*/ + bool isPadRemoveEnabled; /*!< Padding removal for short IP frames*/ + bool isShift16Enabled; /*!< Rx FIFO shift-16*/ +} enet_config_rx_accelerator_t; + +/*! @brief Defines the transmit FIFO configuration.*/ +typedef struct ENETConfigTxFifo +{ + bool isStoreForwardEnabled; /*!< Transmit FIFO store and forward */ + uint8_t txFifoWrite; /*!< Transmit FIFO write */ + uint8_t txEmpty; /*!< Transmit FIFO section empty threshold*/ + uint8_t txAlmostEmpty; /*!< Transmit FIFO section almost empty threshold*/ + uint8_t txAlmostFull; /*!< Transmit FIFO section almost full threshold*/ +} enet_config_tx_fifo_t; + +/*! @brief Defines the receive FIFO configuration.*/ +typedef struct ENETConfigRxFifo +{ + uint8_t rxFull; /*!< Receive FIFO section full threshold*/ + uint8_t rxAlmostFull; /*!< Receive FIFO section almost full threshold*/ + uint8_t rxEmpty; /*!< Receive FIFO section empty threshold*/ + uint8_t rxAlmostEmpty; /*!< Receive FIFO section almost empty threshold*/ +} enet_config_rx_fifo_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @brief Resets the ENET module. + * + * @param instance The ENET instance number + */ +static inline void enet_hal_reset_ethernet(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + HW_ENET_ECR_SET(instance, BM_ENET_ECR_RESET); +} + +/*! + * @brief Gets the ENET status to check whether the reset has completed. + * + * @param instance The ENET instance number + * @return Current status of the reset operation + * - true if ENET reset completed. + * - false if ENET reset has not completed. + */ +static inline bool enet_hal_is_reset_completed(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + return (BR_ENET_ECR_RESET(instance) == 0); +} + +/*! + * @brief Enable or disable stop mode. + * + * Enable stop mode will control device behavior in doze mode. + * In doze mode, if this filed is set then all clock of the enet assemably are + * disabled, except the RMII/MII clock. + * + * @param instance The ENET instance number. + * @param isEnabled The switch to enable/disable stop mode. + * - true to enabale the stop mode. + * - false to disable the stop mode. + */ +static inline void enet_hal_enable_stop(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_ECR_STOPEN(instance, isEnabled); +} +/*! + * @brief Enable or disable sleep mode. + * + * Enable sleep mode will disable normal operating mode. When enable the sleep + * mode, the magic packet detection is also enabled so that a remote agent can + * wakeup the node. + * + * @param instance The ENET instance number. + * @param isEnabled The switch to enable/disable the sleep mode. + * - true to enabale the sleep mode. + * - false to disable the sleep mode. + */ + static inline void enet_hal_enable_sleep(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_ECR_SLEEP(instance, isEnabled); + BW_ENET_ECR_MAGICEN(instance, isEnabled); +} + +/*! + * @brief Sets the Mac address. + * + * This interface sets the six-byte Mac address of the ENET interface. + * + * @param instance The ENET instance number + * @param hwAddr The mac address pointer store for six bytes Mac address + */ +void enet_hal_set_mac_address(uint32_t instance, enetMacAddr hwAddr); + +/*! + * @brief Sets the hardware addressing filtering to a multicast group address. + * + * This interface is used to add the ENET device to a multicast group address. + * After joining the group, Mac receives all frames with the group Mac address. + * + * @param instance The ENET instance number + * @param crcValue The CRC value of the special address + * @param mode The operation for init/enable/disable the specified hardware address + */ +void enet_hal_set_group_hashtable(uint32_t instance, uint32_t crcValue, enet_special_address_filter_t mode); + +/*! + * @brief Sets the hardware addressing filtering to an individual address. + * + * This interface is used to add an individual address to the hardware address + * filter. Mac receives all frames with the individual address as a destination address. + * + * @param instance The ENET instance number + * @param crcValue The CRC value of the special address + * @param mode The operation for init/enable/disable the specified hardware address + */ +void enet_hal_set_individual_hashtable(uint32_t instance, uint32_t crcValue, enet_special_address_filter_t mode); + +/*! + * @brief Enable/disable payload length check. + * + * If the length/type is less than 0x600,When enable payload length check + * the core checks the fame's payload length. If the length/type is greater + * than or equal to 0x600. The MAC interprets the field as a type and no + * payload length check is performanced. + * + * @param instance The ENET instance number + * @param isEnabled The switch to enable/disable payload length check + * - True to enabale payload length check. + * - False to disable payload legnth check. + */ +static inline void enet_hal_enable_payloadcheck(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_RCR_NLC(instance, isEnabled); +} + +/*! + * @brief Enable/disable append CRC to transmitted frames. + * + * If transmit CRC forward is enabled, the transmit buffer descriptor controls + * whether the frame has a CRC from the application. If transmit CRC forward is disabled, + * transmitter does not append any CRC to transmitted frames. + * + * @param instance The ENET instance number + * @param isEnabled The switch to enable/disable transmit the receive CRC + * - True the transmitter control CRC through transmit buffer descriptor. + * - False the transmitter does not append any CRC to transmitted frames. + */ +static inline void enet_hal_enable_txcrcforward(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_TCR_CRCFWD(instance, !isEnabled); +} + +/*! + * @brief Enable/disable forward the CRC filed of the received frame. + * + * This is used to deceide whether the CRC field of received frame is transmitted + * or stripped. Enable this feature to strip CRC field from the frame. + * If padding remove is enabled, this feature will be ignored and + * the CRC field is checked and always terminated and removed. + * + * @param instance The ENET instance number + * @param isEnabled The switch to enable/disable transmit the receive CRC + * - True to transmit the received CRC. + * - False to strip the received CRC. + */ +static inline void enet_hal_enable_rxcrcforward(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_RCR_CRCFWD(instance, !isEnabled); +} +/*! + * @brief Enable/disable forward PAUSE frames. + * + * This is used to deceide whether PAUSE frames is forwarded or discarded. + * + * @param instance The ENET instance number + * @param isEnabled The switch to enable/disable forward PAUSE frames + * - True to forward PAUSE frames. + * - False to terminate and discard PAUSE frames. + */ +static inline void enet_hal_enable_pauseforward(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_RCR_PAUFWD(instance, isEnabled); +} + +/*! + * @brief Enable/disable frame padding remove on receive. + * + * Enable frame padding remove will remove the padding from the received frames. + * + * @param instance The ENET instance number + * @param isEnabled The switch to enable/disable remove padding + * - True to remove padding from frames. + * - False to disable padding remove. + */ +static inline void enet_hal_enable_padremove(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_RCR_PADEN(instance, isEnabled); +} + +/*! + * @brief Enable/disable flow control. + * + * If flow control is enabled, the receive detects PAUSE frames. + * Upon PAUSE frame detection, the transmitter stops transmitting + * data frames for a given duration. + * + * @param instance The ENET instance number + * @param isEnabled The switch to enable/disable flow control + * - True to enable the flow control. + * - False to disable the flow control. + */ +static inline void enet_hal_enable_flowcontrol(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_RCR_CFEN(instance, isEnabled); + BW_ENET_RCR_FCE(instance, isEnabled); +} + +/*! + * @brief Enable/disable broadcast frame reject. + * + * If broadcast frame reject is enabled, frames with destination address + * equal to 0xffff_ffff_ffff are rejected unless the promiscuous mode is open. + * + * @param instance The ENET instance number + * @param isEnabled The switch to enable/disable reject broadcast frames + * - True to reject broadcast frames. + * - False to accept broadcast frames. + */ +static inline void enet_hal_enable_broadcastreject(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_RCR_BC_REJ(instance, isEnabled); +} + +/*! + * @brief Sets PAUSE duration for a PAUSE frame. + * + * This function is used to set the pause duraion used in transmission + * of a PAUSE frame. When another node detects a PAUSE frame, that node + * pauses transmission for the pause duration. + * + * @param instance The ENET instance number + * @param pauseDuration The PAUSE duration for the transmitted PAUSE frame + * the maximum pause duration is 0xFFFF. + */ +static inline void enet_hal_set_pauseduration(uint32_t instance, uint32_t pauseDuration) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + assert(pauseDuration <= BM_ENET_OPD_PAUSE_DUR); + BW_ENET_OPD_PAUSE_DUR(instance, pauseDuration); +} + +/*! + * @brief Gets receive PAUSE frame status. + * + * This function is used to get the received PAUSE frame status. + * + * @param instance The ENET instance number + * @return The status of the received flow control frames + * true if the flow control pause frame is received. + * false if there is no flow control frame received or the pause duration is complete. + */ +static inline bool enet_hal_get_rxpause_status(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + return BR_ENET_TCR_RFC_PAUSE(instance); +} +/*! + * @brief Enables transmit frame control PAUSE. + * + * This function enables pauses frame transmission. + * When this is set, with transmission of data frames stopped, the MAC + * transmits a MAC control PAUSE frame. NEXT, the MAC clear the + * and resumes transmitting data frames. + * + * @param instance The ENET instance number + * @param isEnabled The switch to enable/disable PAUSE control frame transmission + * - True enable PAUSE control frame transmission. + * - Flase disable PAUSE control frame transmission. + */ +static inline void enet_hal_enable_txpause(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + BW_ENET_TCR_TFC_PAUSE(instance, isEnabled); +} + +/*! + * @brief Sets transmit PAUSE frame. + * + * This function Sets ENET transmit controller with pause duration. + * And set the transmit control to do PAUSE frame transmission + * This should be called when a PAUSE frame is dynamically wanted. + * + * @param instance The ENET instance number + */ +void enet_hal_set_txpause(uint32_t instance, uint32_t pauseDuration); + +/*! + * @brief Sets the transmit inter-packet gap. + * + * This function indicates the IPG, in bytes, between transmitted frames. + * Valid values range from 8 to 27. If value is less than 8, the IPG is 8. + * If value is greater than 27, the IPG is 27. + * + * @param instance The ENET instance number + * @param ipgValue The IPG for transmitted frames + * The default value is 12, the maximum value set to ipg is 0x1F. + * + */ +static inline void enet_hal_set_txipg(uint32_t instance, uint32_t ipgValue) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + assert(ipgValue <= BM_ENET_TIPG_IPG); + BW_ENET_TIPG_IPG(instance, ipgValue); +} + +/*! + * @brief Sets the receive frame truncation length. + * + * This function indicates the value a receive frame is truncated, + * if it is greater than this value. The frame truncation length must be greater + * than or equal to the receive maximum frame length. + * + * @param instance The ENET instance number + * @param length The truncation length. The maximum value is 0x3FFF + * The default truncation length is 2047(0x7FF). + * + */ +static inline void enet_hal_set_truncationlen(uint32_t instance, uint32_t length) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + assert(length <= BM_ENET_FTRL_TRUNC_FL); + BW_ENET_FTRL_TRUNC_FL(instance, length); +} + +/*! + * @brief Sets the maximum receive buffer size and the maximum frame size. + * + * @param instance The ENET instance number + * @param maxBufferSize The maximum receive buffer size, which should not be smaller than 256 + * It should be evenly divisible by 16 and the maximum receive size should not be larger than 0x3ff0. + * @param maxFrameSize The maximum receive frame size, the reset value is 1518 or 1522 if the VLAN tags are + * supported. The length is measured starting at DA and including the CRC. + */ +static inline void enet_hal_set_rx_max_size(uint32_t instance, uint32_t maxBufferSize, uint32_t maxFrameSize) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + /* max buffer size must larger than 256 to minimize bus usage*/ + assert(maxBufferSize >= 256); + assert(maxFrameSize <= (BM_ENET_RCR_MAX_FL >> BP_ENET_RCR_MAX_FL)); + + BW_ENET_RCR_MAX_FL(instance, maxFrameSize); + HW_ENET_MRBR_WR(instance, (maxBufferSize & BM_ENET_MRBR_R_BUF_SIZE)); +} + +/*! + * @brief Configures the ENET transmit FIFO. + * + * @param instance The ENET instance number + * @param thresholdCfg The FIFO threshold configuration + */ +void enet_hal_config_tx_fifo(uint32_t instance, enet_config_tx_fifo_t *thresholdCfg); + +/*! + * @brief Configures the ENET receive FIFO. + * + * @param instance The ENET instance number + * @param thresholdCfg The FIFO threshold configuration + */ +void enet_hal_config_rx_fifo(uint32_t instance, enet_config_rx_fifo_t *thresholdCfg); + +/*! + * @brief Sets the start address for ENET receive buffer descriptors. + * + * This interface provides the beginning of the receive + * and receive buffer descriptor queue in the external memory. The + * txbdAddr is recommended to be 128-bit aligned, must be evenly divisible by 16. + * + * @param instance The ENET instance number + * @param rxBdAddr The start address of receive buffer descriptors + */ +static inline void enet_hal_set_rxbd_address(uint32_t instance, uint32_t rxBdAddr) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + HW_ENET_RDSR_WR(instance,rxBdAddr); /* Initialize receive buffer descriptor start address*/ +} +/*! + * @brief Sets the start address for ENET transmit buffer descriptors. + * + * This interface provides the beginning of the receive + * and transmit buffer descriptor queue in the external memory. The + * txbdAddr is recommended to be 128-bit aligned, must be evenly divisible by 16. + * + * @param instance The ENET instance number + * @param txBdAddr The start address of transmit buffer descriptors + */ +static inline void enet_hal_set_txbd_address(uint32_t instance, uint32_t txBdAddr) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + HW_ENET_TDSR_WR(instance,txBdAddr); /* Initialize transmit buffer descriptor start address*/ +} + +/*! + * @brief Initializes the receive buffer descriptors. + * + * To make sure the uDMA will do the right data transfer after you activate + * with wrap flag and all the buffer descriptors should be initialized with an empty bit. + * + * @param rxBds The current receive buffer descriptor + * @param buffer The data buffer on buffer descriptor + * @param isLastBd The flag to indicate the last receive buffer descriptor + */ +void enet_hal_init_rxbds(void *rxBds, uint8_t *buffer, bool isLastBd); + +/*! + * @brief Initializes the transmit buffer descriptors. + * + * To make sure the uDMA will do the right data transfer after you active + * with wrap flag. + * + * @param txBds The current transmit buffer descriptor. + * @param isLastBd The last transmit buffer descriptor flag. + */ +void enet_hal_init_txbds(void *txBds, bool isLastBd); + +/*! + * @brief Updates the receive buffer descriptors. + * + * This interface mainly clears the status region and updates the received + * buffer descriptor to ensure that the BD is correctly used. + * + * @param rxBds The current receive buffer descriptor + * @param data The data buffer address + * @param isbufferUpdate The data buffer update flag. When you want to update + * the data buffer of the buffer descriptor ensure that this flag + * is set. + */ +void enet_hal_update_rxbds(void *rxBds, uint8_t *data, bool isbufferUpdate); + +/*! + * @brief Initializes the transmit buffer descriptors. + * + * Ensures that the uDMA transfer data correctly after the user activates + * with the wrap flag. + * + * @param txBds The current transmit buffer descriptor + * @param isLastBd The last transmit buffer descriptor flag + */ +void enet_hal_init_txbds(void *txBds, bool isLastBd); + +/*! + * @brief Updates the transmit buffer descriptors. + * + * This interface mainly clears the status region and updates the transmit + * buffer descriptor to ensure tat this BD is correctly used again. + * You should set the isTxtsCfged when the transmit timestamp feature is required. + * + * @param txBds The current transmit buffer descriptor + * @param buffer The data buffer on buffer descriptor + * @param length The data length on buffer descriptor + * @param isTxtsCfged The timestamp configure flag. The timestamp is + * added to the transmit buffer descriptor when this flag is set. + */ +void enet_hal_update_txbds(void *txBds,uint8_t *buffer, uint16_t length, bool isTxtsCfged); + +/*! + * @brief Clears the context in the transmit buffer descriptors. + * + * Clears the data, length, control, and status region of the transmit buffer descriptor. + * + * @param curBd The current buffer descriptor + */ +static inline void enet_hal_clear_txbds(void *curBd) +{ + assert(curBd); + + volatile enet_bd_struct_t *bdPtr = (enet_bd_struct_t *)curBd; + bdPtr->length = 0; /* Set data length*/ + bdPtr->buffer = (uint8_t *)(NULL);/* Set data buffer*/ + bdPtr->control &= (kEnetTxBdWrap);/* Set control */ +} + +/*! + * @brief Gets the control and the status region of the receive buffer descriptors. + * + * This interface can get the whole control and status region of the + * receive buffer descriptor. The enet_rx_bd_control_status_t enum type + * definition should be used if you want to get each status bit of + * the control and status region. + * + * @param curBd The current receive buffer descriptor + * @return The control and status data on buffer descriptors + */ +uint16_t enet_hal_get_rxbd_control(void *curBd); + +/*! + * @brief Gets the control and the status region of the transmit buffer descriptors. + * + * This interface can get the whole control and status region of the + * transmit buffer descriptor. The enet_tx_bd_control_status_t enum type + * definition should be used if you want to get each status bit of + * the control and status region. + * + * @param curBd The current transmit buffer descriptor + * @return The extended control region of transmit buffer descriptor + */ +uint16_t enet_hal_get_txbd_control(void *curBd); + +/*! + * @brief Gets the extended control region of the receive buffer descriptors. + * + * This interface can get the whole control and status region of the + * receive buffer descriptor. The enet_rx_bd_control_extend_t enum type + * definition should be used if you want to get each status bit of + * the control and status region. + * + * @param curBd The current receive buffer descriptor + * @param controlRegion The different control region + * @return The extended control region data of receive buffer descriptor + * - true when the control region is set + * - false when the control region is not set + */ +bool enet_hal_get_rxbd_control_extend(void *curBd,enet_rx_bd_control_extend_t controlRegion); +/*! + * @brief Gets the extended control region of the transmit buffer descriptors. + * + * This interface can get the whole control and status region of the + * transmit buffer descriptor. The enet_tx_bd_control_extend_t enum type + * definition should be used if you want to get each status bit of + * the control and status region. + * + * @param curBd The current transmit buffer descriptor + * @return The extended control data + */ +uint16_t enet_hal_get_txbd_control_extend(void *curBd); + +/*! + * @brief Gets the data length of the buffer descriptors. + * + * @param curBd The current buffer descriptor + * @return The data length of the buffer descriptor + */ +uint16_t enet_hal_get_bd_length(void *curBd); + +/*! + * @brief Gets the buffer address of the buffer descriptors. + * + * @param curBd The current buffer descriptor + * @return The buffer address of the buffer descriptor + */ +uint8_t* enet_hal_get_bd_buffer(void *curBd); + +/*! + * @brief Gets the timestamp of the buffer descriptors. + * + * @param curBd The current buffer descriptor + * @return The time stamp of the frame in the buffer descriptor. + * Notice that the frame timestamp is only set in the last + * buffer descriptor of the frame. + */ +uint32_t enet_hal_get_bd_timestamp(void *curBd); + +/*! + * @brief Activates the receive buffer descriptor. + * + * The buffer descriptor activation + * should be done after the ENET module is enabled. Otherwise, the activation fails. + * + * @param instance The ENET instance number + */ + static inline void enet_hal_active_rxbd(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + HW_ENET_RDAR_SET(instance, BM_ENET_RDAR_RDAR); +} + +/*! + * @brief Activates the transmit buffer descriptor. + * + * The buffer descriptor activation should be done after the ENET module is + * enabled. Otherwise, the activation fails. + * + * @param instance The ENET instance number + */ +static inline void enet_hal_active_txbd(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + HW_ENET_TDAR_SET(instance, BM_ENET_TDAR_TDAR); +} + +/*! + * @brief Configures the (R)MII of ENET. + * + * @param instance The ENET instance number + * @param mode The RMII or MII mode + * @param speed The speed of RMII + * @param duplex The full or half duplex mode + * @param isRxOnTxDisabled The Receive on transmit disable flag + * @param isLoopEnabled The loop enable flag + */ +void enet_hal_config_rmii(uint32_t instance, enet_config_rmii_t mode, enet_config_speed_t speed, enet_config_duplex_t duplex, bool isRxOnTxDisabled, bool isLoopEnabled); + +/*! + * @brief Configures the MII of ENET. + * + * Sets the MII interface between Mac and PHY. The miiSpeed is + * a value that controls the frequency of the MDC, relative to the internal module clock(InterClockSrc). + * A value of zero in this parameter turns the MDC off and leaves it in the low voltage state. + * Any non-zero value results in the MDC frequency MDC = InterClockSrc/((miiSpeed + 1)*2). + * So miiSpeed = InterClockSrc/(2*MDC) - 1. + * The Maximum MDC clock is 2.5MHZ(maximum). We should round up and plus one to simlplify: + * miiSpeed = InterClockSrc/(2*2.5MHZ). + * + * @param instance The ENET instance number + * @param miiSpeed The MII speed and it is ranged from 0~0x3F + * @param time The holdon clock cycles for MDIO output + * @param isPreambleDisabled The preamble disabled flag + */ +static inline void enet_hal_config_mii(uint32_t instance, uint32_t miiSpeed, + enet_mdio_holdon_clkcycle_t clkCycle, bool isPreambleDisabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + BW_ENET_MSCR_MII_SPEED(instance, miiSpeed); /* MII speed set*/ + BW_ENET_MSCR_DIS_PRE(instance, isPreambleDisabled); /* Preamble is disabled*/ + BW_ENET_MSCR_HOLDTIME(instance, clkCycle); /* hold on clock cycles for MDIO output*/ + +} + +/*! + * @brief Gets the MII configuration status. + * + * This interface is usually called to check the MII interface before + * the Mac writes or reads the PHY registers. + * + * @param instance The ENET instance number + * @return The MII configuration status + * - true if the MII has been configured. + * - false if the MII has not been configured. + */ +static inline bool enet_hal_is_mii_enabled(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + return (HW_ENET_MSCR_RD(instance) & 0x7E)!= 0; +} + +/*! + * @brief Reads data from PHY. + * + * @param instance The ENET instance number + * @return The data read from PHY + */ +static inline uint32_t enet_hal_get_mii_data(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + return (uint32_t)BR_ENET_MMFR_DATA(instance); +} + +/*! + * @brief Sets the MII command. + * + * @param instance The ENET instance number + * @param phyAddr The PHY address + * @param phyReg The PHY register + * @param operation The read or write operation + * @param data The data written to PHY + */ +void enet_hal_set_mii_command(uint32_t instance, uint32_t phyAddr, uint32_t phyReg, enet_mii_operation_t operation, uint32_t data); + +/*! + * @brief Enables/Disables the ENET module. + * + * @param instance The ENET instance number + * @param isEnhanced The enhanced 1588 feature switch + * @param isEnabled The ENET module enable switch + */ +void enet_hal_config_ethernet(uint32_t instance, bool isEnhanced, bool isEnabled); + +/*! + * @brief Enables/Disables the ENET interrupt. + * + * @param instance The ENET instance number + * @param source The interrupt sources. enet_interrupt_request_t enum types + * is recommended as the interrupt source. + * @param isEnabled The interrupt enable switch + */ +void enet_hal_config_interrupt(uint32_t instance, uint32_t source, bool isEnabled); + +/*! + * @brief Clears ENET interrupt events. + * + * @param instance The ENET instance number + * @param source The interrupt source to be cleared. enet_interrupt_request_t + * enum types is recommended as the interrupt source. + */ +static inline void enet_hal_clear_interrupt(uint32_t instance, uint32_t source) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + HW_ENET_EIR_WR(instance,source); +} + +/*! + * @brief Gets the ENET interrupt status. + * + * @param instance The ENET instance number + * @param source The interrupt sources. enet_interrupt_request_t + * enum types is recommended as the interrupt source. + * @return The event status of the interrupt source + * - true if the interrupt event happened. + * - false if the interrupt event has not happened. + */ +static inline bool enet_hal_get_interrupt_status(uint32_t instance, uint32_t source) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + return ((HW_ENET_EIR_RD(instance) & source) != 0); +} + +/* + * @brief Enables/disables the ENET promiscuous mode. + * + * @param instance The ENET instance number + * @param isEnabled The enable switch + */ +static inline void enet_hal_config_promiscuous(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + BW_ENET_RCR_PROM(instance,isEnabled); +} + +/*! + * @brief Enables/disables the clear MIB counter. + * + * @param instance The ENET instance number + * @param isEnabled The enable switch + */ +static inline void enet_hal_clear_mib(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + BW_ENET_MIBC_MIB_CLEAR(instance, isEnabled); + +} + +/*! + * @brief Sets the enable/disable of the MIB block. + * + * @param instance The ENET instance number + * @param isEnabled The enable flag + * - True to enabale MIB block. + * - False to disable MIB block. + */ +static inline void enet_hal_enable_mib(uint32_t instance, bool isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + BW_ENET_MIBC_MIB_DIS(instance,!isEnabled); + +} + +/*! + * @brief Gets the MIB idle status. + * + * @param instance The ENET instance number + * @return true if in MIB idle and MIB is not updating else false. + */ +static inline bool enet_hal_get_mib_status(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + return BR_ENET_MIBC_MIB_IDLE(instance); +} + +/*! + * @brief Sets the transmit accelerator. + * + * @param instance The ENET instance number + * @param txCfgPtr The transmit accelerator configuration + */ +void enet_hal_config_tx_accelerator(uint32_t instance, enet_config_tx_accelerator_t *txCfgPtr); + +/*! + * @brief Sets the receive accelerator. + * + * @param instance The ENET instance number + * @param rxCfgPtr The receive accelerator configuration + */ +void enet_hal_config_rx_accelerator(uint32_t instance, enet_config_rx_accelerator_t *rxCfgPtr); + +/*! + * @brief Initializes the 1588 timer. + * + * This interface initializes the 1588 context structure. + * Initialize 1588 parameters according to the user configuration structure. + * + * @param instance The ENET instance number + * @param ptpCfg The 1588 timer configuration + */ +void enet_hal_init_ptp_timer(uint32_t instance, enet_config_ptp_timer_t *ptpCfgPtr); + +/*! + * @brief Enables or disables the 1588 timer. + * + * Enable the PTP timer will starts the timer. Disable the timer will stop timer + * at the current value. + * + * @param instance The ENET instance number. + * @param isEnabled The 1588 timer Enable switch + * - True enbaled the 1588 PTP timer. + * - False disable or stop the 1588 PTP timer. + */ +static inline void enet_hal_enable_ptp_timer(uint32_t instance, uint32_t isEnabled) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + BW_ENET_ATCR_EN(instance,isEnabled); +} + +/*! + * @brief Restarts the 1588 timer. + * + * Restarting the PTP timer clears all PTP-timer counters to zero. + * + * @param instance The ENET instance number + */ +static inline void enet_hal_restart_ptp_timer(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + BW_ENET_ATCR_RESTART(instance,1); +} + +/*! + * @brief Adjusts the 1588 timer. + * + * Adjust the 1588 timer according to the increase and correction period of the configured correction. + * + * @param instance The ENET instance number + * @param inceaseCorrection The increase correction for 1588 timer + * @param periodCorrection The period correction for 1588 timer + */ +static inline void enet_hal_adjust_ptp_timer(uint32_t instance, uint32_t increaseCorrection, uint32_t periodCorrection) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + HW_ENET_ATINC_SET(instance,((increaseCorrection << ENET_ATINC_INC_CORR_SHIFT) & ENET_ATINC_INC_CORR_MASK)); /* set correction for ptp timer increase*/ + /* set correction for ptp timer period*/ + HW_ENET_ATCOR_SET(instance, (BM_ENET_ATCOR_COR & periodCorrection)); +} + +/*! + * @brief Initializes the 1588 timer channel. + * + * @param instance The ENET instance number + * @Param channel The 1588 timer channel number + * @param mode Compare or capture mode for the 1588 timer channel + */ +static inline void enet_hal_init_timer_channel(uint32_t instance, uint32_t channel, enet_timer_channel_mode_t mode) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + assert(channel < HW_ENET_TCSRn_COUNT); + HW_ENET_TCSRn_SET(instance, channel, + (BM_ENET_TCSRn_TMODE &(mode << BP_ENET_TCSRn_TMODE))); + HW_ENET_TCSRn_SET(instance, channel, BM_ENET_TCSRn_TIE); +} + +/*! + * @brief Sets the compare value for the 1588 timer channel. + * + * @param instance The ENET instance number + * @Param channel The 1588 timer channel number + * @param compareValue Compare value for 1588 timer channel + */ +static inline void enet_hal_set_timer_channel_compare(uint32_t instance, uint32_t channel, uint32_t compareValue) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + assert(channel < HW_ENET_TCSRn_COUNT); + HW_ENET_TCCRn_WR(instance,channel, compareValue); +} + +/*! + * @brief Gets the 1588 timer channel status. + * + * @param instance The ENET instance number + * @param channel The 1588 timer channel number + * @return Compare or capture operation status + * - True if the compare or capture has occurred. + * - False if the compare or capture has not occurred. + */ +static inline bool enet_hal_get_timer_channel_status(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + assert(channel < HW_ENET_TCSRn_COUNT); + + return BR_ENET_TCSRn_TF(instance,channel); +} + +/*! + * @brief Clears the 1588 timer channel flag. + * + * @param instance The ENET instance number + * @param channel The 1588 timer channel number + */ +static inline void enet_hal_clear_timer_channel_flag(uint32_t instance, uint32_t channel) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + assert(channel < HW_ENET_TCSRn_COUNT); + HW_ENET_TCSRn_SET(instance, channel, BM_ENET_TCSRn_TF);/* clear interrupt flag*/ + HW_ENET_TGSR_WR(instance,(1U << channel)); /* clear channel flag*/ +} + +/*! + * @brief Sets the capture command to the 1588 timer. + * + * This is used before reading the current time register. + * After set timer capture, please wait for about 1us before read + * the captured timer. + * + * @param instance The ENET instance number + */ +static inline void enet_hal_set_timer_capture(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + HW_ENET_ATCR_SET(instance, BM_ENET_ATCR_CAPTURE); +} + +/*! + * @brief Sets the 1588 timer. + * + * @param instance The ENET instance number + * @param nanSecond The nanosecond set to 1588 timer + */ +static inline void enet_hal_set_current_time(uint32_t instance, uint32_t nanSecond) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + HW_ENET_ATVR_WR(instance,nanSecond); +} + +/*! + * @brief Gets the time from the 1588 timer. + * + * @param instance The ENET instance number + * @return the current time from 1588 timer + */ +static inline uint32_t enet_hal_get_current_time(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + return HW_ENET_ATVR_RD(instance); +} + +/*! + * @brief Gets the transmit timestamp. + * + * @param instance The ENET instance number + * @return The timestamp of the last transmitted frame + */ +static inline uint32_t enet_hal_get_tx_timestamp(uint32_t instance) +{ + assert(instance < HW_ENET_INSTANCE_COUNT); + + return HW_ENET_ATSTMP_RD(instance); +} + +/*! + * @brief Gets the transmit buffer descriptor timestamp flag. + * + * @param curBd The ENET transmit buffer descriptor + * @return true if timestamp region is set else false. + */ +bool enet_hal_get_txbd_timestamp_flag(void *curBd); + +/*! + * @brief Gets the buffer descriptor timestamp. + * + * @param null + * @return The the size of the buffer descriptor + */ +static inline uint32_t enet_hal_get_bd_size(void) +{ + return sizeof(enet_bd_struct_t); +} + +/* @} */ + +#if defined(__cplusplus) +} +#endif + +/*! @}*/ +#endif /*!< __FSL_ENET_HAL_H__*/ + +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/flextimer/fsl_ftm_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_FTM_FEATURES_H__) +#define __FSL_FTM_FEATURES_H__ +#if (defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15)) + #define FSL_FEATURE_FTM_BUS_CLOCK (1) +#elif (defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK63FN1M0VMD12WS) || \ + defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12)) + #define FSL_FEATURE_FTM_BUS_CLOCK (1) +#elif (defined(CPU_MK22FN512VMC12)) || defined(CPU_MK22FN512VDC12) + #define FSL_FEATURE_FTM_BUS_CLOCK (1) +#else + #error "No valid CPU defined" +#endif +#endif /* __FSL_I2C_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/flextimer/fsl_ftm_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1216 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_FTM_HAL_H__) +#define __FSL_FTM_HAL_H__ + +#include "fsl_device_registers.h" +#include "fsl_ftm_features.h" +#include <stdbool.h> +#include <assert.h> + +/*! + * @addtogroup ftm_hal + * @{ + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ +#define HW_FTM_CHANNEL_COUNT (8U) /*!< Number of channels for one FTM instance.*/ +#define HW_FTM_CHANNEL_PAIR_COUNT (4U) /*!< Number of combined channel of one FTM instance.*/ +#define HW_CHAN0 (0U) /*!< Channel number for CHAN0.*/ +#define HW_CHAN1 (1U) /*!< Channel number for CHAN1.*/ +#define HW_CHAN2 (2U) /*!< Channel number for CHAN2.*/ +#define HW_CHAN3 (3U) /*!< Channel number for CHAN3.*/ +#define HW_CHAN4 (4U) /*!< Channel number for CHAN4.*/ +#define HW_CHAN5 (5U) /*!< Channel number for CHAN5.*/ +#define HW_CHAN6 (6U) /*!< Channel number for CHAN6.*/ +#define HW_CHAN7 (7U) /*!< Channel number for CHAN7.*/ + +#define FTM_COMBINE_CHAN_CTRL_WIDTH (8U) +/*! @brief FlexTimer clock source selection*/ +typedef enum _ftm_clock_source +{ + kClock_source_FTM_None = 0, + kClock_source_FTM_SystemClk, + kClock_source_FTM_FixedClk, + kClock_source_FTM_ExternalClk +}ftm_clock_source_t; + +/*! @brief FlexTimer counting mode, up-down*/ +typedef enum _ftm_counting_mode +{ + kCounting_FTM_UP = 0, + kCounting_FTM_Down +}ftm_counting_mode_t; + +/*! @brief FlexTimer pre-scaler factor selection for the clock source*/ +typedef enum _ftm_clock_ps +{ + kFtmDividedBy1 = 0, + kFtmDividedBy2 , + kFtmDividedBy4 , + kFtmDividedBy8, + kFtmDividedBy16, + kFtmDividedBy32, + kFtmDividedBy64, + kFtmDividedBy128 +}ftm_clock_ps_t; + +/*! @brief FlexTimer phase for the quadrature*/ +typedef enum _ftm_phase_t +{ + kFtmPhaseA = 0, + kFtmPhaseB +}ftm_phase_t; + + +/*! @brief FlexTimer pre-scaler factor for the deadtime insertion*/ +typedef enum _ftm_deadtime_ps +{ + kFtmDivided0 = 0, + kFtmDivided1 = 1, + kFtmDivided4 = 2, + kFtmDivided16 = 3, +}ftm_deadtime_ps_t; + +/*! @brief FlexTimer operation mode, capture, output, dual, or quad*/ + typedef enum _ftm_config_mode_t + { + kFtmInputCapture, + kFtmOutputCompare, + kFtmEdgeAlignedPWM, + kFtmCenterAlignedPWM, + kFtmCombinedPWM, + kFtmDualEdgeCapture, + kFtmQuadCapture + }ftm_config_mode_t; + +/*! @brief FlexTimer input capture edge mode, rising edge, or falling edge */ + typedef enum _ftm_input_capture_edge_mode_t + { + kFtmRisingEdge = 0, + kFtmFallingEdge, + kFtmRisingAndFalling + }ftm_input_capture_edge_mode_t; + +/*! @brief FlexTimer output compare edge mode. Toggle, clear or set.*/ + typedef enum _ftm_output_compare_edge_mode_t + { + kFtmToggleOnMatch = 0, + kFtmClearOnMatch, + kFtmSetOnMatch + }ftm_output_compare_edge_mode_t; + +/*! @brief FlexTimer PWM output pulse mode, high-true or low-true on match up */ + typedef enum _ftm_pwm_edge_mode_t + { + kFtmHighTrue = 0, + kFtmLowTrue + }ftm_pwm_edge_mode_t; + + /*! @brief FlexTimer dual capture edge mode, one shot or continuous */ + typedef enum _ftm_dual_capture_edge_mode_t + { + kFtmOneShout = 0, + kFtmContinuous + }ftm_dual_capture_edge_mode_t; + +/*! @brief FlexTimer edge mode*/ + typedef union _ftm_edge_mode_t + { + ftm_input_capture_edge_mode_t input_capture_edge_mode; + ftm_output_compare_edge_mode_t output_compare_edge_mode; + ftm_pwm_edge_mode_t ftm_pwm_edge_mode; + ftm_dual_capture_edge_mode_t ftm_dual_capture_edge_mode; + }ftm_edge_mode_t; +/*! @brief FlexTimer module configuration*/ +typedef struct FTMConfig { + ftm_config_mode_t mode; + uint8_t channel; /*channel or channel pair in combine mode*/ + ftm_edge_mode_t edge_mode; + +}ftm_config_t; +/*FTM timer control*/ +/*! + * @brief Sets the FTM clock source. + * @param instance The FTM peripheral instance number + * @param clock The FTM peripheral clock selection + * bits:00: No clock 01: system clock 10 :fixed clock 11:External clock + */ +static inline void ftm_hal_set_clock_source(uint8_t instance, ftm_clock_source_t clock) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_SC_CLKS(instance, clock); +} + +/*! + * @brief Sets the FTM clock divider. + * @param instance The FTM peripheral instance number + * @param ps The FTM peripheral clock pre-scale divider + */ +static inline void ftm_hal_set_clock_ps(uint8_t instance, ftm_clock_ps_t ps) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_SC_PS(instance, ps); +} + +/*! + * @brief Enables the FTM peripheral timer overflow interrupt. + * @param instance The FTM peripheral instance number + */ +static inline void ftm_hal_enable_timer_overflow_interrupt(uint8_t instance) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + HW_FTM_SC_SET(instance, BM_FTM_SC_TOIE); +} + +/*! + * @brief Disables the FTM peripheral timer overflow interrupt. + * @param instance The FTM peripheral instance number + */ +static inline void ftm_hal_disable_timer_overflow_interrupt(uint8_t instance) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + HW_FTM_SC_CLR(instance, BM_FTM_SC_TOIE); +} + +/*! + * @brief Returns the FTM peripheral timer overflow interrupt flag. + * @param instance The FTM peripheral instance number + * @retval true if overflow, false if not + */ +static inline bool ftm_is_timer_overflow(uint8_t instance) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + return BR_FTM_SC_TOF(instance); +} + +/*! + * @brief Sets the FTM center-aligned PWM select. + * @param instance The FTM peripheral instance number + * @param mode 1:upcounting mode 0:up_down counting mode + */ +static inline void ftm_hal_set_cpwms(uint8_t instance, uint8_t mode) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && mode<2); + BW_FTM_SC_CPWMS(instance, mode); +} + +/*! + * @brief Sets the FTM peripheral current counter value. + * @param instance The FTM peripheral instance number + * @param val FTM timer counter value to be set + */ +static inline void ftm_hal_set_counter(uint8_t instance,uint16_t val) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_CNT_COUNT(instance, val); +} + +/*! + * @brief Returns the FTM peripheral current counter value. + * @param instance The FTM peripheral instance number + * @retval current FTM timer counter value + */ +static inline uint16_t ftm_hal_get_counter(uint8_t instance) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + return BR_FTM_CNT_COUNT(instance); +} + +/*! + * @brief Sets the FTM peripheral timer modulo value. + * @param instance The FTM peripheral instance number + * @param val The value to be set to the timer modulo + */ +static inline void ftm_hal_set_mod(uint8_t instance, uint16_t val) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_MOD_MOD(instance, val); +} + +/*! + * @brief Returns the FTM peripheral counter modulo value. + * @param instance The FTM peripheral instance number + * @retval FTM timer modulo value + */ +static inline uint16_t ftm_hal_get_mod(uint8_t instance) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + return BR_FTM_MOD_MOD(instance); +} + +/*! + * @brief Sets the FTM peripheral timer counter initial value. + * @param instance The FTM peripheral instance number + * @param val initial value to be set + */ +static inline void ftm_hal_set_counter_init_val(uint8_t instance, uint16_t val) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_CNTIN_INIT(instance, val&BM_FTM_CNTIN_INIT); +} + +/*! + * @brief Returns the FTM peripheral counter initial value. + * @param instance The FTM peripheral instance number + * @retval FTM timer counter initial value + */ +static inline uint16_t ftm_hal_get_counter_init_val(uint8_t instance) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + return BR_FTM_CNTIN_INIT(instance); +} + +/*FTM channel operating mode (Mode, edge and level selection) for capture, output, PWM, combine, dual or quad*/ +/*! + * @brief Sets the FTM peripheral timer channel mode. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number +* @param selection The mode to be set valid value MSnB:MSnA :00,01, 10, 11 + */ +static inline void ftm_hal_set_channel_MSnBA_mode(uint8_t instance, uint8_t channel, uint8_t selection) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + BW_FTM_CnSC_MSA(instance, channel, selection&1); + BW_FTM_CnSC_MSB(instance, channel, selection&2? 1:0); + +} + +/*! + * @brief Sets the FTM peripheral timer channel edge level. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number +* @param level The rising or falling edge to be set, valid value ELSnB:ELSnA :00,01, 10, 11 + */ +static inline void ftm_hal_set_channel_edge_level(uint8_t instance, uint8_t channel, uint8_t level) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + BW_FTM_CnSC_ELSA(instance, channel, level&1? 1:0); + BW_FTM_CnSC_ELSB(instance, channel, level&2?1:0); +} + +/*! + * @brief Gets the FTM peripheral timer channel mode. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number +* @retval The MSnB:MSnA mode value, will be 00,01, 10, 11 + */ +static inline uint8_t ftm_hal_get_channel_mode(uint8_t instance, uint8_t channel) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + return (BR_FTM_CnSC_MSA(instance, channel)|| (BR_FTM_CnSC_MSB(instance, channel)<<1)); +} + +/*! + * @brief Gets the FTM peripheral timer channel edge level. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number +* @retval The ELSnB:ELSnA mode value, will be 00,01, 10, 11 + */ +static inline uint8_t ftm_hal_get_channel_edge_level(uint8_t instance, uint8_t channel) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + return (BR_FTM_CnSC_ELSA(instance, channel)|| (BR_FTM_CnSC_ELSB(instance, channel)<<1)); +} + +/*! + * @brief Enables or disables the FTM peripheral timer channel DMA. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number +* @param val enable or disable + */ +static inline void ftm_hal_enable_channle_dma(uint8_t instance, uint8_t channel, bool val) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + BW_FTM_CnSC_DMA(instance, channel,(val? 1:0)); +} + +/*! + * @brief Returns whether the FTM peripheral timer channel DMA is enabled. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number +* @retval true if enabled, false if disabled + */ +static inline bool ftm_hal_is_channel_dma(uint8_t instance, uint8_t channel, bool val) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + return (BR_FTM_CnSC_DMA(instance, channel) ? true : false); +} + +/*! + * @brief Enables the FTM peripheral timer channel(n) interrupt. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + */ +static inline void ftm_hal_enable_channel_interrupt(uint8_t instance, uint8_t channel) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + BW_FTM_CnSC_CHIE(instance, channel, 1); +} +/*! + * @brief Disables the FTM peripheral timer channel(n) interrupt. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + */ +static inline void ftm_hal_disable_channel_interrupt(uint8_t instance, uint8_t channel) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + BW_FTM_CnSC_CHIE(instance, channel, 0); +} + +/*! + * @brief Returns whether any event for the FTM peripheral timer channel has occurred. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @retval true if event occurred, false otherwise. + */ +static inline bool ftm_is_channel_event_occurred(uint8_t instance, uint8_t channel) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + return (BR_FTM_CnSC_CHF(instance, channel))? true : false; +} + +/*FTM channel control*/ +/*! + * @brief Sets the FTM peripheral timer channel counter value. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param val counter value to be set + */ +static inline void ftm_hal_set_channel_count_value(uint8_t instance, uint8_t channel, uint16_t val) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + HW_FTM_CnV_WR(instance, channel, val); +} + +/*! + * @brief Gets the FTM peripheral timer channel counter value. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @retval val return current channel counter value + */ +static inline uint16_t ftm_hal_get_channel_count_value(uint8_t instance, uint8_t channel, uint16_t val) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + return BR_FTM_CnV_VAL(instance, channel); +} + +/*! + * @brief Gets the FTM peripheral timer channel event status. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @retval val return current channel event status value + */ +static inline uint32_t ftm_hal_get_channel_event_status(uint8_t instance, uint8_t channel) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + return (HW_FTM_STATUS_RD(instance)&(1U<<channel))? true: false; + /*return BR_FTM_STATUS(instance, channel);*/ +} + +/*! + * @brief Clears the FTM peripheral timer all channel event status. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @retval val return current channel counter value + */ +static inline void ftm_hal_clear_channel_event_status(uint8_t instance, uint8_t channel) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + HW_FTM_STATUS_CLR(instance, 1U<<channel); +} + +/*! + * @brief Sets the FTM peripheral timer channel output mask. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param mask mask to be set 0 or 1, unmasked or masked + */ +static inline void ftm_hal_set_channel_output_mask(uint8_t instance, uint8_t channel, bool mask) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + mask? HW_FTM_OUTMASK_SET(instance, 1U<<channel):HW_FTM_OUTMASK_CLR(instance, 1U<<channel); + /* BW_FTM_OUTMASK_CHnOM(instance, channel,mask); */ +} + +/*! + * @brief Sets the FTM peripheral timer channel output initial state 0 or 1. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param state counter value to be set 0 or 1 + */ +static inline void ftm_hal_set_channel_output_init_state(uint8_t instance, uint8_t channel, uint8_t state) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + HW_FTM_OUTINIT_CLR(instance, 1U<<channel); + HW_FTM_OUTINIT_SET(instance, (uint8_t)(state<<channel)); +} + +/*! + * @brief Sets the FTM peripheral timer channel output polarity. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param pol polarity to be set 0 or 1 + */ +static inline void ftm_hal_set_channel_output_polarity(uint8_t instance, uint8_t channel, uint8_t pol) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + HW_FTM_POL_CLR(instance, 1U<<channel); + HW_FTM_POL_SET(instance, (uint8_t)(pol<<channel)); +} +/*! + * @brief Sets the FTM peripheral timer channel input polarity. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param pol polarity to be set, 0: active high, 1:active low + */ +static inline void ftm_hal_set_channel_fault_input_polarity(uint8_t instance, uint8_t channel, uint8_t pol) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + HW_FTM_FLTPOL_CLR(instance, 1U<<channel); + HW_FTM_FLTPOL_SET(instance, (uint8_t)(pol<<channel)); +} + + +/*Feature mode selection HAL*/ + /*FTM fault control*/ +/*! + * @brief Enables the FTM peripheral timer fault interrupt. + * @param instance The FTM peripheral instance number + */ +static inline void ftm_hal_enable_fault_interrupt(uint8_t instance) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_MODE_FAULTIE(instance, 1); +} + +/*! + * @brief Disables the FTM peripheral timer fault interrupt. + * @param instance The FTM peripheral instance number + */ +static inline void ftm_hal_disable_fault_interrupt(uint8_t instance) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_MODE_FAULTIE(instance, 0); +} + +/*! + * @brief Sets the FTM peripheral timer fault control mode. + * @param instance The FTM peripheral instance number + * @param mode, valid number bits:00, 01, 10,11 (1, 2, 3, 4) + */ +static inline void ftm_hal_set_fault_control_mode(uint8_t instance, uint8_t mode) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_MODE_FAULTM(instance, mode); +} + +/*! + * @brief Enables the FTM peripheral timer capture test. + * @param instance The FTM peripheral instance number + * @param enable true to enable, false to disable + */ +static inline void ftm_hal_enable_capture_test(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_MODE_CAPTEST(instance, enable? 1: 0); +} + +/*! + * @brief Enables the FTM peripheral timer write protection. + * @param instance The FTM peripheral instance number + * @param enable true to enable, false to disable + */ +static inline void ftm_hal_enable_write_protection(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_MODE_WPDIS(instance, enable? 0: 1); +} + +/*! + * @brief Enables the FTM peripheral timer group. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_ftm_enable(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + assert(BR_FTM_MODE_WPDIS(instance)); + BW_FTM_MODE_FTMEN(instance, enable? 0: 1); +} + +/*! + * @brief Enables the FTM peripheral timer channel output initialization. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_channel_init_output(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_MODE_INIT(instance, enable? 1:0); +} + +/*! + * @brief Sets the FTM peripheral timer sync mode. + * @param instance The FTM peripheral instance number + * @param enable True no restriction both software and hardware sync, false only software sync. + */ +static inline void ftm_hal_set_pwm_sync_mdoe(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_MODE_PWMSYNC(instance, enable? 1:0); +} + +/*FTM synchronization control*/ +/*! + * @brief Enables the FTM peripheral timer software trigger. + * @param instance The FTM peripheral instance number. + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_software_trigger(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNC_SWSYNC(instance, enable? 1:0); +} + +/*! + * @brief Sets the FTM peripheral timer hardware trigger. + * @param instance The FTM peripheral instance number + * @param trigger_num 0, 1,2 for trigger0, trigger1 and trigger3 + * @param enable True to enable, 1 to enable + */ +void ftm_hal_set_hardware_trigger(uint8_t instance, uint8_t trigger_num, bool enable); + +/*! + * @brief Enables the FTM peripheral timer output mask update by PWM sync. + * @param instance The FTM peripheral instance number + * @param enable True to enable PWM sync, false to enable outmask in the rising edges of the system clock + */ +static inline void ftm_hal_enable_output_mask_sync_by_pwm(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNC_SYNCHOM(instance, enable?1:0); +} + +/*! + * @brief Enables the FTM peripheral timer counter re-initialized by sync. + * @param instance The FTM peripheral instance number + * @param enable True to update FTM counter when triggered , false to count normally + */ +static inline void ftm_hal_enable_count_reinit_sync(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNC_REINIT(instance, enable?1:0); +} +/*! + * @brief Enables the FTM peripheral timer maximum loading points. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_max_loading(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNC_CNTMAX(instance, enable?1:0); +} +/*! + * @brief Enables the FTM peripheral timer minimum loading points. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_min_loading(uint8_t instance, bool enable) +{ + assert(instance <HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNC_CNTMIN(instance, enable?1:0); +} + +/*! + * @brief Combines the channel control. + * + * Returns an index for each channel pair. + * + * @param channel The FTM peripheral channel number. + * @return 0 for channel pair 0 & 1\n + * 1 for channel pair 2 & 3\n + * 2 for channel pair 4 & 5\n + * 3 for channel pair 6 & 7 + */ +static uint32_t get_channel_pair_index(uint8_t channel) +{ + if((channel == HW_CHAN0) || (channel == HW_CHAN1)) + { + return 0; + } + else if((channel == HW_CHAN2) || (channel == HW_CHAN3)) + { + return 1; + } + else if((channel == HW_CHAN4) || (channel == HW_CHAN5)) + { + return 2; + } + else + { + return 3; + } +} + +/*set DECAPEN bit*/ +/*! + * @brief Enables the FTM peripheral timer dual edge capture mode. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_dual_capture(uint8_t instance, uint8_t channel, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + + enable? HW_FTM_COMBINE_SET(instance, BM_FTM_COMBINE_DECAPEN0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)): + HW_FTM_COMBINE_CLR(instance, BM_FTM_COMBINE_DECAPEN0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)); +} + +/*! + * @brief Enables the FTM peripheral timer channel pair fault control. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_dual_channel_fault(uint8_t instance, uint8_t channel, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + + enable? HW_FTM_COMBINE_SET(instance, BM_FTM_COMBINE_FAULTEN0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)): + HW_FTM_COMBINE_CLR(instance, BM_FTM_COMBINE_FAULTEN0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)); +} + +/*! + * @brief Enables the FTM peripheral timer channel pair counter PWM sync. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_dual_channel_pwm_sync(uint8_t instance, uint8_t channel, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + + enable? HW_FTM_COMBINE_SET(instance, BM_FTM_COMBINE_SYNCEN0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)): + HW_FTM_COMBINE_CLR(instance, BM_FTM_COMBINE_SYNCEN0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)); +} + +/*! + * @brief Enables the FTM peripheral timer channel pair deadtime. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_dual_channel_deadtime(uint8_t instance, uint8_t channel, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + + enable? HW_FTM_COMBINE_SET(instance, BM_FTM_COMBINE_DTEN0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)): + HW_FTM_COMBINE_CLR(instance, BM_FTM_COMBINE_DTEN0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)); +} + +/*! + * @brief Enables the FTM peripheral timer channel dual edge capture decap, not decapen. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_dual_channel_decap(uint8_t instance, uint8_t channel, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + + enable? HW_FTM_COMBINE_SET(instance, BM_FTM_COMBINE_DECAP0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)): + HW_FTM_COMBINE_CLR(instance, BM_FTM_COMBINE_DECAP0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)); +} + +/*! + * @brief Enables the FTM peripheral timer channel pair output complement mode. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_dual_channel_comp(uint8_t instance, uint8_t channel, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + + enable? HW_FTM_COMBINE_SET(instance, BM_FTM_COMBINE_COMP0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)): + HW_FTM_COMBINE_CLR(instance, BM_FTM_COMBINE_COMP0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)); + +} + +/*! + * @brief Enables the FTM peripheral timer channel pair output combine mode. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param enable True to enable channel pair to combine, false to disable + */ +static inline void ftm_hal_enable_dual_channel_combine(uint8_t instance, uint8_t channel, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + + enable? HW_FTM_COMBINE_SET(instance, BM_FTM_COMBINE_COMBINE0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)): + HW_FTM_COMBINE_CLR(instance, BM_FTM_COMBINE_COMBINE0 << (get_channel_pair_index(channel) * FTM_COMBINE_CHAN_CTRL_WIDTH)); +} + +/*FTM dead time insertion control*/ +/*! + * @brief Set the FTM deadtime divider. + * @param instance The FTM peripheral instance number + * @param divider The FTM peripheral prescale divider + 0x :divided by 1, 10: divided by 4 11:divided by 16 + */ +static inline void ftm_hal_set_deadtime_prescale(uint8_t instance, ftm_deadtime_ps_t divider) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_DEADTIME_DTVAL(instance, divider); +} + +/*! + * @brief Sets the FTM deadtime value. + * @param instance The FTM peripheral instance number + * @param divider The FTM peripheral prescale divider + count: 0, no counts inserted 1: 1 count is inserted 2: 2 count is inserted.... + */ +static inline void ftm_hal_set_deadtime_count(uint8_t instance, uint8_t count) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_DEADTIME_DTPS(instance, count); +} +/*FTM external trigger */ +/*! + * @brief Enables the generation of the FTM peripheral timer channel trigger when the FTM counter is equal to its initial value. + Channels 6 and 7 cannot be used as triggers. + * @param instance The FTM peripheral instance number + * @param channel Channel to be enabled, valid value 0, 1, 2, 3, 4, 5 + * @param enable True to enable, false to disable + */ +void ftm_hal_enable_channel_trigger(uint8_t instance, uint8_t channel, bool val); +/*! + * @brief Checks whether any channel trigger event has occurred. + * @param instance The FTM peripheral instance number + * @retval True if there is a trigger event, false if not. + */ +static inline bool ftm_hal_is_channel_trigger_generated(uint8_t instance, uint8_t channel) +{ + assert(instance <HW_FTM_INSTANCE_COUNT && channel < HW_CHAN6); + return BR_FTM_EXTTRIG_TRIGF(instance); +} + + +/*Fault mode status*/ +/*! + * @brief Gets the FTM detected fault input. + * @param instance The FTM peripheral instance number + * @retval Return faulty byte + */ +static inline uint8_t ftm_hal_get_detected_fault_input(uint8_t instance) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + return (HW_FTM_FMS(instance).U &0x0f); +} +/*! + * @brief Checks whether the write protection is enabled. + * @param instance The FTM peripheral instance number + * @retval True if enabled, false if not + */ +static inline bool ftm_hal_is_write_protection_enable(uint8_t instance) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + return BR_FTM_FMS_WPEN(instance)? true:false; +} + +/*Quadrature decoder control*/ +/*! + * @brief Enables the channel quadrature decoder. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_quad_capture(uint8_t instance, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); +} + +/*Hardware definition for quadrature decoder control is missing, implement this later */ +/*static inline void ftm_hal_enable_quad_input_filter(uint8_t instance, ftm_phase_t phase) +static inline void ftm_hal_set_quad_phase_normal_polarity(uint8_t instance, ftm_phase_t phase) +static inline void ftm_hal_set_quad_phase_invert_polarity(uint8_t instance, ftm_phase_t phase) +static inline void ftm_hal_set_quad_mode() +static inline void ftm_hal_set_quad_direction() +static inline void ftm_hal_set_quad_timer_overflow_direction()*/ + +/*! + * @brief Sets the FTM peripheral timer channel input capture filter value. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number, only 0,1,2,3, channel 4, 5,6, 7 don't have. + * @param val Filter value to be set + */ +void ftm_hal_set_channel_input_capture_filter(uint8_t instance, uint8_t channel, uint8_t val); + + + +/*! + * @brief Enables the channel input filter. + * @param instance The FTM peripheral instance number + * @param channel Channel to be enabled, valid value 0, 1, 2, 3 + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_channel_fault_input_filter(uint8_t instance, uint8_t channel, bool val) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_CHAN4); + val? HW_FTM_FLTCTRL_SET(instance, (1U<<channel)) : HW_FTM_FLTCTRL_CLR(instance, (1U<<channel)); +} + +/*! + * @brief Enables the channel fault input. + * @param instance The FTM peripheral instance number + * @param channel Channel to be enabled, valid value 0, 1, 2, 3 + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_channel_fault_input(uint8_t instance, uint8_t channel, bool val) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_CHAN4); + val ? HW_FTM_FLTCTRL_SET(instance, ((1U << channel) + 4)) + : HW_FTM_FLTCTRL_CLR(instance, ((1U << channel) + 4)); +} + +/*! + * @brief Enables the channel invert. + * @param instance The FTM peripheral instance number + * @param channel The FTM peripheral channel number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_dual_channel_invert(uint8_t instance, uint8_t channel, bool val) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + + val ? HW_FTM_INVCTRL_SET(instance, (1U << get_channel_pair_index(channel))) + : HW_FTM_INVCTRL_CLR(instance, (1U << get_channel_pair_index(channel))); +} + +/*FTM software output control*/ +/*! + * @brief Enables the channel software control. + * @param instance The FTM peripheral instance number + * @param channel Channel to be enabled, valid value 0, 1, 2, 3, 4,5,6,7 + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_channel_software_ctrl(uint8_t instance, uint8_t channel, bool val) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + val? HW_FTM_SWOCTRL_SET(instance, (1U<<channel)) : HW_FTM_SWOCTRL_CLR(instance, (1U<<channel)); +} +/*! + * @brief Sets the channel software control value. + * @param instance The FTM peripheral instance number. + * @param channel Channel to be enabled, valid value 0, 1, 2, 3,5,6,7, + * @param bool True to set 1, false to set 0 + */ +static inline void ftm_hal_set_channel_software_ctrl_val(uint8_t instance, uint8_t channel, bool val) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + val? HW_FTM_SWOCTRL_SET(instance, (1U<<(channel+8))) : HW_FTM_SWOCTRL_CLR(instance, (1U<<(channel+8))); +} + +/*FTM PWM load control*/ +/*! + * @brief Enables the FTM timer PWM loading of MOD, CNTIN and CV. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_pwm_load(uint8_t instance, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + HW_FTM_PWMLOAD(instance).B.LDOK = enable? 1:0; +} + +/*! + * @brief Enables the channel matching process. + * @param instance The FTM peripheral instance number + * @param channel Channel to be enabled, valid value 0, 1, 2, 3, 4,5,6,7 + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_pwm_load_matching_channel(uint8_t instance, uint8_t channel, bool val) +{ + assert(instance < HW_FTM_INSTANCE_COUNT && channel < HW_FTM_CHANNEL_COUNT); + val? HW_FTM_PWMLOAD_SET(instance, 1U<<channel) : HW_FTM_PWMLOAD_CLR(instance, 1U<<channel); +} +/*FTM configuration*/ +/*! + * @brief Enables the FTM timer global time base output. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_global_time_base_output(uint8_t instance, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_CONF_GTBEOUT(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer global time base. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_global_time_base(uint8_t instance, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_CONF_GTBEEN(instance, enable? 1:0); +} + +/*! + * @brief Sets the FTM timer TOF Frequency. + * @param instance The FTM peripheral instance number + * @param val Value of the TOF bit set frequency + */ +static inline void ftm_hal_set_bdm_mode(uint8_t instance, uint8_t val) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_CONF_NUMTOF(instance, val); +} + +/*! + * @brief Sets the BDM mode. + * @param instance The FTM peripheral instance number + * @param val Value of the TOF bit set frequency + */ +static inline void ftm_hal_set_tof_frequency(uint8_t instance, uint8_t val) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_CONF_BDMMODE(instance, val); +} + +/*FTM sync configuration*/ + /*hardware sync*/ +/*! + * @brief Enables the FTM timer hardware sync activation. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_hardware_sync_software_output_ctrl(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_HWSOC(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer hardware inverting control sync. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_hardware_sync_invert_ctrl(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_HWINVC(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer hardware outmask sync. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_hardware_sync_output_mask(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_HWOM(instance, enable? 1:0); +} + +/*! + * @brief MOD, CNTIN, and CV registers synchronization is activated. + * + * A hardware trigger activates the synchronization. + * + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_hardware_sycn_mod_cntin_cv(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_HWWRBUF(instance, enable? 1:0); +} + +/*! + * @brief The FTM counter synchronization is activated by a hardware trigger. + * + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_hardware_sync_counter(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_HWRSTCNT(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer software sync activation. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_pwm_sync_swoctrl(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_SWOC(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer enhanced PWM sync mode. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_enhanced_pwm_sync_mdoe(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_SYNCMODE(instance, enable? 1:0); +} + + +/*! + * @brief Enables the FTM timer software output control sync. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_software_sync_swoctrl(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_SWSOC(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer software inverting control sync. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_software_sync_invert_ctrl(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_SWINVC(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer software outmask sync. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_software_sync_output_mask(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_SWOM(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer software outmask sync. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable. + */ +static inline void ftm_hal_enable_software_sycn_mod_cntin_cv(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_SWWRBUF(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer counter software sync. + * @param instance The FTM peripheral instance number + * @param enable True to enable, false to disable + */ +static inline void ftm_hal_enable_software_sync_counter(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_SWRSTCNT(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer INVCTRL update by PWM. + * @param instance The FTM peripheral instance number + * @param enable True to update with PWM, false to update with rising edge of system clock. + */ +static inline void ftm_hal_enable_invert_sync_with_rising_edge(uint8_t instance, bool enable) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_INVC(instance, enable? 1:0); +} + +/*! + * @brief Enables the FTM timer cntin update by PWM. + * @param instance The FTM peripheral instance number + * @param enable True to update with PWM, false to update with rising edge of system clock. + */ +static inline void ftm_hal_enable_cntin_sync_with_rising_edge(uint8_t instance, bool enable ) +{ + assert(instance < HW_FTM_INSTANCE_COUNT); + BW_FTM_SYNCONF_CNTINC(instance, enable? 1:0); +} + + +/*HAL functionality*/ +/*! + * @brief Resets the FTM registers + * @param instance The FTM peripheral instance number + */ +void ftm_hal_reset(uint8_t instance); + +/*! + * @brief Initializes the FTM. + * @param instance The FTM peripheral instance number. +*/ +void ftm_hal_init(uint8_t instance, ftm_config_t *config); +/*Initializes the 5 FTM operating mode, input capture, output compare, PWM output(edge aligned, center-aligned, conbine), dual and quadrature).*/ + +/*void ftm_hal_input_capture_mode(uint8_t instance);*/ +/*void ftm_hal_output_compare_mode(uint8_t instance);*/ + +/*! + * @brief Enables the FTM timer when it is PWM output mode. + * @param instance The FTM peripheral instance number + * @param config pwm config parameter + */ +void ftm_hal_enable_pwm_mode(uint8_t instance, ftm_config_t *config); + +/*! + * @brief Initializes the FTM timer when it is PWM output mode. + * @param instance The FTM peripheral instance number + */ +void ftm_hal_disable_pwm_mode(uint8_t instance, ftm_config_t *config); +/*void ftm_hal_dual_mode(uint8_t instance);*/ +/*void ftm_hal_quad_mode(uint8_t instance);*/ + + +/*void ftm_hal_set_counting_mode(); //up, up down or free running counting mode*/ +/*void ftm_hal_set_deadtime(uint8_t instance, uint_32 us);*/ + +/*! @}*/ + +#endif /* __FSL_FTM_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/gpio/fsl_gpio_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_GPIO_FEATURES_H__) +#define __FSL_GPIO_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || \ + defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || \ + defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || \ + defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) || defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || \ + defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || \ + defined(CPU_MK22FN512VLL12) || defined(CPU_MK24FN1M0VDC12) || defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || \ + defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || \ + defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12) || defined(CPU_MK65FN2M0CAC18) || \ + defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || defined(CPU_MK65FX1M0VMI18) || defined(CPU_MK66FN2M0VLQ18) || \ + defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || defined(CPU_MK66FX1M0VMD18) || defined(CPU_MK70FN1M0VMF12) || \ + defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || defined(CPU_MK70FN1M0VMJ12) || \ + defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) || defined(CPU_MKV31F256VLH12) || \ + defined(CPU_MKV31F256VLL12) || defined(CPU_MKV31FN512VLH12) || defined(CPU_MKV31F512VLL12) + /* @brief Has fast (single cycle) access capability via a dedicated memory region.*/ + #define FSL_FEATURE_GPIO_HAS_FAST_GPIO (0) + /* @brief Has port input disable register (PIDR).*/ + #define FSL_FEATURE_GPIO_HAS_INPUT_DISABLE (0) + /* @brief Has dedicated interrupt vector.*/ + #define FSL_FEATURE_GPIO_HAS_INTERRUPT_VECTOR (1) + #define FSL_FEATURE_GPIO_HAS_INTERRUPT_VECTORn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (1) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (1) : \ + ((x) == 5 ? (1) : (-1))))))) +#elif defined(CPU_MKL05Z8VFK4) || defined(CPU_MKL05Z16VFK4) || defined(CPU_MKL05Z32VFK4) || defined(CPU_MKL05Z8VLC4) || \ + defined(CPU_MKL05Z16VLC4) || defined(CPU_MKL05Z32VLC4) || defined(CPU_MKL05Z8VFM4) || defined(CPU_MKL05Z16VFM4) || \ + defined(CPU_MKL05Z32VFM4) || defined(CPU_MKL05Z16VLF4) || defined(CPU_MKL05Z32VLF4) + /* @brief Has fast (single cycle) access capability via a dedicated memory region.*/ + #define FSL_FEATURE_GPIO_HAS_FAST_GPIO (1) + /* @brief Has port input disable register (PIDR).*/ + #define FSL_FEATURE_GPIO_HAS_INPUT_DISABLE (0) + /* @brief Has dedicated interrupt vector.*/ + #define FSL_FEATURE_GPIO_HAS_INTERRUPT_VECTOR (1) + #define FSL_FEATURE_GPIO_HAS_INTERRUPT_VECTORn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (1) : (-1))) +#elif defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || defined(CPU_MKL25Z32VFT4) || \ + defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || \ + defined(CPU_MKL25Z128VLH4) || defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4) + /* @brief Has fast (single cycle) access capability via a dedicated memory region.*/ + #define FSL_FEATURE_GPIO_HAS_FAST_GPIO (1) + /* @brief Has port input disable register (PIDR).*/ + #define FSL_FEATURE_GPIO_HAS_INPUT_DISABLE (0) + /* @brief Has dedicated interrupt vector.*/ + #define FSL_FEATURE_GPIO_HAS_INTERRUPT_VECTOR (1) + #define FSL_FEATURE_GPIO_HAS_INTERRUPT_VECTORn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (0) : (-1)))))) +#elif defined(CPU_MKL46Z128VLH4) || defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || defined(CPU_MKL46Z256VLL4) || \ + defined(CPU_MKL46Z128VMC4) || defined(CPU_MKL46Z256VMC4) + /* @brief Has fast (single cycle) access capability via a dedicated memory region.*/ + #define FSL_FEATURE_GPIO_HAS_FAST_GPIO (1) + /* @brief Has port input disable register (PIDR).*/ + #define FSL_FEATURE_GPIO_HAS_INPUT_DISABLE (0) + /* @brief Has dedicated interrupt vector.*/ + #define FSL_FEATURE_GPIO_HAS_INTERRUPT_VECTOR (1) + #define FSL_FEATURE_GPIO_HAS_INTERRUPT_VECTORn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (0) : (-1)))))) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_GPIO_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/gpio/fsl_gpio_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,422 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_GPIO_HAL_H__ +#define __FSL_GPIO_HAL_H__ + +#include <assert.h> +#include <stdint.h> +#include <stdbool.h> +#include "fsl_gpio_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup gpio_hal + * @{ + */ + +/*! + * @file fsl_gpio_hal.h + * + * @brief GPIO hardware driver configuration. Use these functions to set the GPIO input/output, + * set output logic or get input logic. Check the GPIO header file for instance numbers. Each + * GPIO instance has 32 pins with numbers from 0 to 31. + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief GPIO direction definition*/ +typedef enum _gpio_pin_direction { + kGpioDigitalInput = 0, /*!< Set current pin as digital input*/ + kGpioDigitalOutput = 1 /*!< Set current pin as digital output*/ +} gpio_pin_direction_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @name Configuration + * @{ + */ + +/*! + * @brief Sets the individual GPIO pin to general input or output. + * + * @param instance GPIO instance number(HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param pin GPIO port pin number + * @param direction GPIO directions + * - kGpioDigitalInput: set to input + * - kGpioDigitalOutput: set to output + */ +void gpio_hal_set_pin_direction(uint32_t instance, uint32_t pin, + gpio_pin_direction_t direction); + +/*! + * @brief Sets the GPIO port pins to general input or output. + * + * This function operates all 32 port pins. + * + * @param instance GPIO instance number (HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param direction GPIO directions + * - 0: set to input + * - 1: set to output + * - LSB: pin 0 + * - MSB: pin 31 + */ +static inline void gpio_hal_set_port_direction(uint32_t instance, uint32_t direction) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + HW_GPIO_PDDR_SET(instance, direction); +} + +/* @} */ + +/*! + * @name Status + * @{ + */ + +/*! + * @brief Gets the current direction of the individual GPIO pin. + * + * @param instance GPIO instance number(HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param pin GPIO port pin number + * @return GPIO directions + * - 0: corresponding pin is set to input. + * - 1: corresponding pin is set to output. + */ +static inline uint32_t gpio_hal_get_pin_direction(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + return (HW_GPIO_PDDR_RD(instance) >> pin) & 1U; +} + +/*! + * @brief Gets the GPIO port pins direction. + * + * This function gets all 32-pin directions as a 32-bit integer. + * + * @param instance GPIO instance number (HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @return GPIO directions. Each bit represents one pin. For each bit: + * - 0: corresponding pin is set to input + * - 1: corresponding pin is set to output + * - LSB: pin 0 + * - MSB: pin 31 + */ +static inline uint32_t gpio_hal_get_port_direction(uint32_t instance) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + return HW_GPIO_PDDR_RD(instance); +} + +/* @} */ + +/*! + * @name Output Operation + * @{ + */ + +/*! + * @brief Sets the output level of the individual GPIO pin to logic 1 or 0. + * + * @param instance GPIO instance number(HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param pin GPIO port pin number + * @param output pin output logic level + */ +void gpio_hal_write_pin_output(uint32_t instance, uint32_t pin, uint32_t output); + +/*! + * @brief Reads the current pin output. + * + * @param instance GPIO instance number (HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param pin GPIO port pin number + * @return current pin output status. 0 - Low logic, 1 - High logic + */ +static inline uint32_t gpio_hal_read_pin_output(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + return ((HW_GPIO_PDOR_RD(instance) >> pin) && 0x1U); +} + +/*! + * @brief Sets the output level of the individual GPIO pin to logic 1. + * + * @param instance GPIO instance number(HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param pin GPIO port pin number + */ +static inline void gpio_hal_set_pin_output(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + HW_GPIO_PSOR_WR(instance, 1U << pin); +} + +/*! + * @brief Clears the output level of the individual GPIO pin to logic 0. + * + * @param instance GPIO instance number(HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param pin GPIO port pin number + */ +static inline void gpio_hal_clear_pin_output(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + HW_GPIO_PCOR_WR(instance, 1U << pin); +} + +/*! + * @brief Reverses the current output logic of the individual GPIO pin. + * + * @param instance GPIO instance number(HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param pin GPIO port pin number + */ +static inline void gpio_hal_toggle_pin_output(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + HW_GPIO_PTOR_WR(instance, 1U << pin); +} + +/*! + * @brief Sets the output of the GPIO port to a specific logic value. + * + * This function operates all 32 port pins. + * + * @param instance GPIO instance number (HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param portOutput data to configure the GPIO output. Each bit represents one pin. For each bit: + * - 0: set logic level 0 to pin + * - 1: set logic level 1 to pin + * - LSB: pin 0 + * - MSB: pin 31 + */ +static inline void gpio_hal_write_port_output(uint32_t instance, uint32_t portOutput) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + HW_GPIO_PDOR_WR(instance, portOutput); +} + +/*! + * @brief Reads out all pin output status of the current port. + * + * This function operates all 32 port pins. + * + * @param instance GPIO instance number (HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @return current port output status. Each bit represents one pin. For each bit: + * - 0: corresponding pin is outputting logic level 0 + * - 1: corresponding pin is outputting logic level 1 + * - LSB: pin 0 + * - MSB: pin 31 + */ +static inline uint32_t gpio_hal_read_port_output(uint32_t instance) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + return HW_GPIO_PDOR_RD(instance); +} + +/* @} */ + +/*! + * @name Input Operation + * @{ + */ + +/*! + * @brief Reads the current input value of the individual GPIO pin. + * + * @param instance GPIO instance number(HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @param pin GPIO port pin number + * @return GPIO port input value + * - 0: Pin logic level is 0, or is not configured for use by digital function. + * - 1: Pin logic level is 1 + */ +static inline uint32_t gpio_hal_read_pin_input(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + return (HW_GPIO_PDIR_RD(instance) >> pin) & 1U; +} + +/*! + * @brief Reads the current input value of a specific GPIO port. + * + * This function gets all 32-pin input as a 32-bit integer. + * + * @param instance GPIO instance number(HW_GPIOA, HW_GPIOB, HW_GPIOC, etc.) + * @return GPIO port input data. Each bit represents one pin. For each bit: + * - 0: Pin logic level is 0, or is not configured for use by digital function. + * - 1: Pin logic level is 1. + * - LSB: pin 0 + * - MSB: pin 31 + */ +static inline uint32_t gpio_hal_read_port_input(uint32_t instance) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + return HW_GPIO_PDIR_RD(instance); +} + +/* @} */ + +/*! + * @name FGPIO Operation + * + * @note FGPIO (Fast GPIO) is only available in a few MCUs. FGPIO and GPIO share the same + * peripheral but use different registers. FGPIO is closer to the core than the regular GPIO + * and it's faster to read and write. + * @{ + */ + +#if FSL_FEATURE_GPIO_HAS_FAST_GPIO + +/*! + * @name Output Operation + * @{ + */ + +/*! + * @brief Sets the output level of an individual FGPIO pin to logic 1. + * + * @param instance GPIO instance number(HW_FPTA, HW_FPTB, HW_FPTC, etc.) + * @param pin FGPIO port pin number + */ +static inline void fgpio_hal_set_pin_output(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + HW_FGPIO_PSOR_WR(instance, 1U << pin); +} + +/*! + * @brief Clears the output level of an individual FGPIO pin to logic 0. + * + * @param instance GPIO instance number(HW_FPTA, HW_FPTB, HW_FPTC, etc.) + * @param pin FGPIO port pin number + */ +static inline void fgpio_hal_clear_pin_output(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + HW_FGPIO_PCOR_WR(instance, 1U << pin); +} + +/*! + * @brief Reverses the current output logic of an individual FGPIO pin. + * + * @param instance GPIO instance number(HW_FPTA, HW_FPTB, HW_FPTC, etc.) + * @param pin FGPIO port pin number + */ +static inline void fgpio_hal_toggle_pin_output(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + HW_FGPIO_PTOR_WR(instance, 1U << pin); +} + +/*! + * @brief Sets the output of the FGPIO port to a specific logic value. + * + * This function affects all 32 port pins. + * + * @param instance GPIO instance number(HW_FPTA, HW_FPTB, HW_FPTC, etc.) + * @param portOutput data to configure the GPIO output. Each bit represents one pin. For each bit: + * - 0: set logic level 0 to pin. + * - 1: set logic level 1 to pin. + * - LSB: pin 0 + * - MSB: pin 31 + */ +static inline void fgpio_hal_write_port_output(uint32_t instance, uint32_t portOutput) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + HW_FGPIO_PDOR_WR(instance, portOutput); +} + +/* @} */ + +/*! + * @name Input Operation + * @{ + */ + +/*! + * @brief Gets the current input value of an individual FGPIO pin. + * + * @param instance GPIO instance number(HW_FPTA, HW_FPTB, HW_FPTC, etc.) + * @param pin FGPIO port pin number + * @return FGPIO port input data + * - 0: Pin logic level is 0, or is not configured for use by digital function. + * - 1: Pin logic level is 1. + */ +static inline uint32_t fgpio_hal_read_pin_input(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + assert(pin < 32); + return (HW_FGPIO_PDIR_RD(instance) >> pin) & 1U; +} + +/*! + * @brief Gets the current input value of a specific FGPIO port. + * + * This function gets all 32-pin input as a 32-bit integer. + * + * @param instance GPIO instance number(HW_FPTA, HW_FPTB, HW_FPTC, etc.). + * @return FGPIO port input data. Each bit represents one pin. For each bit: + * - 0: Pin logic level is 0, or is not configured for use by digital function. + * - 1: Pin logic level is 1. + * - LSB: pin 0 + * - MSB: pin 31 + */ +static inline uint32_t fgpio_hal_read_port_input(uint32_t instance) +{ + assert(instance < HW_GPIO_INSTANCE_COUNT); + return HW_FGPIO_PDIR_RD(instance); +} + +/* @} */ + +#endif /* FSL_FEATURE_GPIO_HAS_FAST_GPIO*/ + +#if defined(__cplusplus) +} +#endif + +/*! @} */ + +#endif /* __FSL_GPIO_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/i2c/fsl_i2c_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_I2C_FEATURES_H__) +#define __FSL_I2C_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || \ + defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || \ + defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || \ + defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) || defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || \ + defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) + /* @brief Has I2C bus stop detection (register bit FLT[STOPF]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_DETECT (0) + /* @brief Has System Management Bus support (registers SMB, A2, SLTL and SLTH).*/ + #define FSL_FEATURE_I2C_HAS_SMBUS (1) + /* @brief Maximum supported baud rate in kilobit per second.*/ + #define FSL_FEATURE_I2C_MAX_BAUD_KBPS (400) + /* @brief Is affected by errata with ID 6070 (repeat start cannot be generated if the F[MULT] bit field is set to a non-zero value).*/ + #define FSL_FEATURE_I2C_HAS_ERRATA_6070 (0) + /* @brief Has DMA support (register bit C1[DMAEN]).*/ + #define FSL_FEATURE_I2C_HAS_DMA_SUPPORT (1) + /* @brief Has I2C bus start detection (register bits FLT[STARTF] and FLT[SSIE]).*/ + #define FSL_FEATURE_I2C_HAS_START_DETECT (0) + /* @brief Has I2C bus stop detection interrupt (register bit FLT[STOPIE]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_DETECT_INTERRUPT (0) + /* @brief Has I2C bus stop hold off (register bit FLT[SHEN]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF (0) + /* @brief Maximum width of the glitch filter in number of bus clocks.*/ + #define FSL_FEATURE_I2C_MAX_GLITCH_FILTER_WIDTH (31) + /* @brief Has control of the drive capability of the I2C pins.*/ + #define FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION (1) +#elif defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || \ + defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || defined(CPU_MK22FN512VLL12) || defined(CPU_MK24FN1M0VDC12) || \ + defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK64FN1M0VDC12) || \ + defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VMD12) || \ + defined(CPU_MK64FX512VMD12) || defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || \ + defined(CPU_MK65FX1M0VMI18) || defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || \ + defined(CPU_MK66FX1M0VMD18) || defined(CPU_MKV31F256VLH12) || defined(CPU_MKV31F256VLL12) || defined(CPU_MKV31FN512VLH12) || \ + defined(CPU_MKV31F512VLL12) + /* @brief Has I2C bus stop detection (register bit FLT[STOPF]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_DETECT (1) + /* @brief Has System Management Bus support (registers SMB, A2, SLTL and SLTH).*/ + #define FSL_FEATURE_I2C_HAS_SMBUS (1) + /* @brief Maximum supported baud rate in kilobit per second.*/ + #define FSL_FEATURE_I2C_MAX_BAUD_KBPS (400) + /* @brief Is affected by errata with ID 6070 (repeat start cannot be generated if the F[MULT] bit field is set to a non-zero value).*/ + #define FSL_FEATURE_I2C_HAS_ERRATA_6070 (0) + /* @brief Has DMA support (register bit C1[DMAEN]).*/ + #define FSL_FEATURE_I2C_HAS_DMA_SUPPORT (1) + /* @brief Has I2C bus start detection (register bits FLT[STARTF] and FLT[SSIE]).*/ + #define FSL_FEATURE_I2C_HAS_START_DETECT (1) + /* @brief Has I2C bus stop detection interrupt (register bit FLT[STOPIE]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_DETECT_INTERRUPT (0) + /* @brief Has I2C bus stop hold off (register bit FLT[SHEN]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF (1) + /* @brief Maximum width of the glitch filter in number of bus clocks.*/ + #define FSL_FEATURE_I2C_MAX_GLITCH_FILTER_WIDTH (15) + /* @brief Has control of the drive capability of the I2C pins.*/ + #define FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION (1) +#elif defined(CPU_MKL05Z8VFK4) || defined(CPU_MKL05Z16VFK4) || defined(CPU_MKL05Z32VFK4) || defined(CPU_MKL05Z8VLC4) || \ + defined(CPU_MKL05Z16VLC4) || defined(CPU_MKL05Z32VLC4) || defined(CPU_MKL05Z8VFM4) || defined(CPU_MKL05Z16VFM4) || \ + defined(CPU_MKL05Z32VFM4) || defined(CPU_MKL05Z16VLF4) || defined(CPU_MKL05Z32VLF4) || defined(CPU_MKL25Z32VFM4) || \ + defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || \ + defined(CPU_MKL25Z128VFT4) || defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4) + /* @brief Has I2C bus stop detection (register bit FLT[STOPF]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_DETECT (1) + /* @brief Has System Management Bus support (registers SMB, A2, SLTL and SLTH).*/ + #define FSL_FEATURE_I2C_HAS_SMBUS (1) + /* @brief Maximum supported baud rate in kilobit per second.*/ + #define FSL_FEATURE_I2C_MAX_BAUD_KBPS (400) + /* @brief Is affected by errata with ID 6070 (repeat start cannot be generated if the F[MULT] bit field is set to a non-zero value).*/ + #define FSL_FEATURE_I2C_HAS_ERRATA_6070 (1) + /* @brief Has DMA support (register bit C1[DMAEN]).*/ + #define FSL_FEATURE_I2C_HAS_DMA_SUPPORT (1) + /* @brief Has I2C bus start detection (register bits FLT[STARTF] and FLT[SSIE]).*/ + #define FSL_FEATURE_I2C_HAS_START_DETECT (0) + /* @brief Has I2C bus stop detection interrupt (register bit FLT[STOPIE]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_DETECT_INTERRUPT (1) + /* @brief Has I2C bus stop hold off (register bit FLT[SHEN]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF (1) + /* @brief Maximum width of the glitch filter in number of bus clocks.*/ + #define FSL_FEATURE_I2C_MAX_GLITCH_FILTER_WIDTH (31) + /* @brief Has control of the drive capability of the I2C pins.*/ + #define FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION (1) +#elif defined(CPU_MKL46Z128VLH4) || defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || defined(CPU_MKL46Z256VLL4) || \ + defined(CPU_MKL46Z128VMC4) || defined(CPU_MKL46Z256VMC4) + /* @brief Has I2C bus stop detection (register bit FLT[STOPF]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_DETECT (1) + /* @brief Has System Management Bus support (registers SMB, A2, SLTL and SLTH).*/ + #define FSL_FEATURE_I2C_HAS_SMBUS (1) + /* @brief Maximum supported baud rate in kilobit per second.*/ + #define FSL_FEATURE_I2C_MAX_BAUD_KBPS (100) + /* @brief Is affected by errata with ID 6070 (repeat start cannot be generated if the F[MULT] bit field is set to a non-zero value).*/ + #define FSL_FEATURE_I2C_HAS_ERRATA_6070 (1) + /* @brief Has DMA support (register bit C1[DMAEN]).*/ + #define FSL_FEATURE_I2C_HAS_DMA_SUPPORT (1) + /* @brief Has I2C bus start detection (register bits FLT[STARTF] and FLT[SSIE]).*/ + #define FSL_FEATURE_I2C_HAS_START_DETECT (0) + /* @brief Has I2C bus stop detection interrupt (register bit FLT[STOPIE]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_DETECT_INTERRUPT (1) + /* @brief Has I2C bus stop hold off (register bit FLT[SHEN]).*/ + #define FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF (1) + /* @brief Maximum width of the glitch filter in number of bus clocks.*/ + #define FSL_FEATURE_I2C_MAX_GLITCH_FILTER_WIDTH (31) + /* @brief Has control of the drive capability of the I2C pins.*/ + #define FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION (1) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_I2C_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/i2c/fsl_i2c_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,814 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_I2C_HAL_H__) +#define __FSL_I2C_HAL_H__ + +#include <assert.h> +#include <stdbool.h> +#include "fsl_i2c_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup i2c_hal + * @{ + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief I2C status return codes*/ +typedef enum _i2c_status +{ + kStatus_I2C_Success = 0, + kStatus_I2C_OutOfRange, + kStatus_I2C_InvalidArgument, + kStatus_I2C_Fail, + kStatus_I2C_Busy, /*!< The master is already performing a transfer.*/ + kStatus_I2C_Timeout, /*!< The transfer timed out.*/ + kStatus_I2C_ReceivedNak, /*!< The slave device sent a NAK in response to a byte.*/ + kStatus_I2C_SlaveTxUnderrun, /*!< I2C Slave TX Underrun error.*/ + kStatus_I2C_SlaveRxOverrun, /*!< I2C Slave RX Overrun error.*/ + kStatus_I2C_AribtrationLost, /*!< I2C Arbitration Lost error.*/ +} i2c_status_t; + +/*! @brief Direction of master and slave transfers*/ +typedef enum _i2c_transmit_receive_mode { + kI2CReceive = 0, /*!< Master and slave receive.*/ + kI2CTransmit = 1 /*!< Master and slave transmit.*/ +} i2c_transmit_receive_mode_t; + +/*! + * @brief I2C module configuration + * + * Pass an instance of this structure to the i2c_hal_init() to configure the entire I2C peripheral + * in a single function call. + */ +typedef struct I2CConfig { + bool enableModule; /*!< Whether the I2C peripheral operation is enabled.*/ + uint32_t baudRate_kbps; /*!< Requested baud rate in kilobits per second, for example, 100 or 400. Pass zero to not set the baud rate.*/ + bool useIndependentSlaveBaud; /*!< Enables independent slave mode baud rate at maximum frequency.*/ + bool enableInterrupt; /*!< Enable for the I2C interrupt.*/ + bool enableDma; /*!< Enable DMA transfer signalling.*/ + bool enableHighDrive; /*!< Enable high drive pin mode.*/ + bool enableWakeup; /*!< Enable low power wakeup.*/ + uint8_t glitchFilterWidth; /*!< Specify the glitch filter width in terms of bus clock cycles. Set this value to zero to disable the glitch filter.*/ + uint16_t slaveAddress; /*!< 7-bit or 10-bit slave address.*/ + uint8_t upperSlaveAddress; /*!< 7-bit upper slave address, or zero to disable. If 10-bit addresses are enabled, the top 3 bits are provided by the @a slaveAddress field.*/ + bool use10bitSlaveAddress; /*!< Controls whether 10-bit slave addresses are enabled.*/ + bool enableGeneralCallAddress; /*!< Enable general call address matching.*/ + bool enableRangeAddressMatch; /*!< Determines if addresses between @a slaveAddress and @a upperSlaveAddress are matched. Both of those fields must be non-zero.*/ + +#if FSL_FEATURE_I2C_HAS_STOP_DETECT + bool enableStopModeHoldoff; /*!< Option to hold off CPU low power stop mode until the current byte transfer is complete.*/ + bool enableBusStopInterrupt; /*!< Enable for the bus stop detection interrupt.*/ +#endif /* FSL_FEATURE_I2C_HAS_STOP_DETECT*/ +} i2c_config_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! @name Module controls*/ +/*@{*/ + +/*! + * @brief Initializes and configures the I2C peripheral. + * + * @param instance The I2C peripheral instance number + * @param config Pointer to the configuration settings + * @param sourceClockInHz I2C source input clock in Hertz. + */ +void i2c_hal_init(uint32_t instance, const i2c_config_t * config, uint32_t sourceClockInHz); + +/*! + * @brief Restores the I2C peripheral to reset state. + * + * @param instance The I2C peripheral instance number + */ +void i2c_hal_reset(uint32_t instance); + +/*! + * @brief Enables the I2C module operation. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_enable(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_C1_SET(instance, BM_I2C_C1_IICEN); +} + +/*! + * @brief Disables the I2C module operation. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_disable(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_C1_CLR(instance, BM_I2C_C1_IICEN); +} + +/*@}*/ + +/*! @name DMA*/ +/*@{*/ + +/*! + * @brief Enables or disables the DMA support. + * + * @param instance The I2C peripheral instance number + * @param enable Pass true to enable DMA transfer signalling + */ +static inline void i2c_hal_set_dma_enable(uint32_t instance, bool enable) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + BW_I2C_C1_DMAEN(instance, (uint8_t)enable); +} + +/*@}*/ + +/*! @name Pin functions*/ +/*@{*/ + +/*! + * @brief Controls the drive capability of the I2C pads. + * + * @param instance The I2C peripheral instance number + * @param enable Passing true will enable high drive mode of the I2C pads. False sets normal + * drive mode. + */ +static inline void i2c_hal_set_high_drive(uint32_t instance, bool enable) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + BW_I2C_C2_HDRS(instance, (uint8_t)enable); +} + +/*! + * @brief Controls the width of the programmable glitch filter. + * + * Controls the width of the glitch, in terms of bus clock cycles, that the filter must absorb. + * The filter does not allow any glitch whose size is less than or equal to this width setting, + * to pass. + * + * @param instance The I2C peripheral instance number + * @param glitchWidth Maximum width in bus clock cycles of the glitches that is filtered. + * Pass zero to disable the glitch filter. + */ +static inline void i2c_hal_set_glitch_filter(uint32_t instance, uint8_t glitchWidth) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + BW_I2C_FLT_FLT(instance, glitchWidth); +} + +/*@}*/ + +/*! @name Low power*/ +/*@{*/ + +/*! + * @brief Controls the I2C wakeup enable. + * + * The I2C module can wake the MCU from low power mode with no peripheral bus running when + * slave address matching occurs. + * + * @param instance The I2C peripheral instance number. + * @param enable true - Enables the wakeup function in low power mode.<br> + * false - Normal operation. No interrupt is generated when address matching in + * low power mode. + */ +static inline void i2c_hal_set_wakeup_enable(uint32_t instance, bool enable) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + BW_I2C_C1_WUEN(instance, (uint8_t)enable); +} + +#if FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF +/*! + * @brief Controls the stop mode hold off. + * + * This function lets you enable the hold off entry to low power stop mode when any data transmission + * or reception is occurring. + * + * @param instance The I2C peripheral instance number + * @param enable false - Stop hold off is disabled. The MCU's entry to stop mode is not gated.<br> + * true - Stop hold off is enabled. + */ + +static inline void i2c_hal_set_stop_holdoff(uint32_t instance, bool enable) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + BW_I2C_FLT_SHEN(instance, (uint8_t)enable); +} +#endif /* FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF*/ + +/*@}*/ + +/*! @name Baud rate*/ +/*@{*/ + +/*! + * brief Returns the maximum supported baud rate in kilohertz. + * + * @param instance The I2C peripheral instance number + * @param sourceClockInHz I2C source input clock in Hertz + * @return The maximum baud rate in kilohertz + */ +uint32_t i2c_hal_get_max_baud(uint32_t instance, uint32_t sourceClockInHz); + +/*! + * @brief Sets the I2C bus frequency for master transactions. + * + * @param instance The I2C peripheral instance number + * @param sourceClockInHz I2C source input clock in Hertz + * @param kbps Requested bus frequency in kilohertz. Common values are either 100 or 400. + * @param absoluteError_Hz If this parameter is not NULL, it is filled in with the + * difference in Hertz between the requested bus frequency and the closest frequency + * possible given available divider values. + * + * @retval kStatus_Success The baud rate was changed successfully. However, there is no + * guarantee on the minimum error. If you want to ensure that the baud was set to within + * a certain error, then use the @a absoluteError_Hz parameter. + * @retval kStatus_OutOfRange The requested baud rate was not within the range of rates + * supported by the peripheral. + */ +i2c_status_t i2c_hal_set_baud(uint32_t instance, uint32_t sourceClockInHz, uint32_t kbps, + uint32_t * absoluteError_Hz); + +/*! + * @brief Sets the I2C baud rate multiplier and table entry. + * + * Use this function to set the I2C bus frequency register values directly, if they are + * known in advance. + * + * @param instance The I2C peripheral instance number + * @param mult Value of the MULT bitfield, ranging from 0-2. + * @param icr The ICR bitfield value, which is the index into an internal table in the I2C + * hardware that selects the baud rate divisor and SCL hold time. + */ +static inline void i2c_hal_set_baud_icr(uint32_t instance, uint8_t mult, uint8_t icr) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_F_WR(instance, BF_I2C_F_MULT(mult) | BF_I2C_F_ICR(icr)); +} + +/*! + * @brief Slave baud rate control + * + * Enables an independent slave mode baud rate at the maximum frequency. This forces clock stretching + * on the SCL in very fast I2C modes. + * + * @param instance The I2C peripheral instance number + * @param enable true - Slave baud rate is independent of the master baud rate;<br> + * false - The slave baud rate follows the master baud rate and clock stretching may occur. + */ +static inline void i2c_hal_set_independent_slave_baud(uint32_t instance, bool enable) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + BW_I2C_C2_SBRC(instance, (uint8_t)enable); +} + +/*@}*/ + +/*! @name Bus operations*/ +/*@{*/ + +/*! + * @brief Sends a START or a Repeated START signal on the I2C bus. + * + * This function is used to initiate a new master mode transfer by sending the START signal. It + * is also used to send a Repeated START signal when a transfer is already in progress. + * + * @param instance The I2C peripheral instance number + */ +void i2c_hal_send_start(uint32_t instance); + +/*! + * @brief Sends a STOP signal on the I2C bus. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_send_stop(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + assert(HW_I2C_C1(instance).B.MST == 1); + HW_I2C_C1_CLR(instance, BM_I2C_C1_MST | BM_I2C_C1_TX); +} + +/*! + * @brief Selects either transmit or receive modes. + * + * @param instance The I2C peripheral instance number + * @param mode Specifies either transmit mode or receive mode. The valid values are: + * - #kI2CTransmit + * - #kI2CReceive + */ +static inline void i2c_hal_set_direction(uint32_t instance, i2c_transmit_receive_mode_t mode) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + BW_I2C_C1_TX(instance, (uint8_t)mode); +} + +/*! + * @brief Returns the currently selected transmit or receive mode. + * + * @param instance The I2C peripheral instance number + * @retval #kI2CTransmit I2C is configured for master or slave transmit mode. + * @retval #kI2CReceive I2C is configured for master or slave receive mode. + */ +static inline i2c_transmit_receive_mode_t i2c_hal_get_direction(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return HW_I2C_C1(instance).B.TX ? kI2CTransmit : kI2CReceive; +} + +/*! + * @brief Causes an ACK to be sent on the bus. + * + * This function specifies that an ACK signal is sent in response to the next received byte. + * + * Note that the behavior of this function is changed when the I2C peripheral is placed in + * Fast ACK mode. In this case, this function causes an ACK signal to be sent in + * response to the current byte, rather than the next received byte. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_send_ack(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_C1_CLR(instance, BM_I2C_C1_TXAK); +} + +/*! + * @brief Causes a NAK to be sent on the bus. + * + * This function specifies that a NAK signal is sent in response to the next received byte. + * + * Note that the behavior of this function is changed when the I2C peripheral is placed in the + * Fast ACK mode. In this case, this function causes an NAK signal to be sent in + * response to the current byte, rather than the next received byte. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_send_nak(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_C1_SET(instance, BM_I2C_C1_TXAK); +} + +/*@}*/ + +/*! @name Data transfer*/ +/*@{*/ + +/*! + * @brief Returns the last byte of data read from the bus and initiate another read. + * + * In a master receive mode, calling this function initiates receiving the next byte of data. + * + * @param instance The I2C peripheral instance number + * @return This function returns the last byte received while the I2C module is configured in master + * receive or slave receive mode. + */ +static inline uint8_t i2c_hal_read(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return HW_I2C_D_RD(instance); +} + +/*! + * @brief Writes one byte of data to the I2C bus. + * + * When this function is called in the master transmit mode, a data transfer is initiated. In slave + * mode, the same function is available after an address match occurs. + * + * In a master transmit mode, the first byte of data written following the start bit or repeated + * start bit is used for the address transfer and must consist of the slave address (in bits 7-1) + * concatenated with the required R/\#W bit (in position bit 0). + * + * @param instance The I2C peripheral instance number + * @param data The byte of data to transmit + */ +static inline void i2c_hal_write(uint32_t instance, uint8_t data) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_D_WR(instance, data); +} + +/*@}*/ + +/*! @name Slave address*/ +/*@{*/ + +/*! + * @brief Sets the primary 7-bit slave address. + * + * @param instance The I2C peripheral instance number + * @param address The slave address in the upper 7 bits. Bit 0 of this value must be 0. + */ +void i2c_hal_set_slave_address_7bit(uint32_t instance, uint8_t address); + +/*! + * @brief Sets the primary slave address and enables 10-bit address mode. + * + * @param instance The I2C peripheral instance number + * @param address The 10-bit slave address, in bits [10:1] of the value. Bit 0 must be 0. + */ +void i2c_hal_set_slave_address_10bit(uint32_t instance, uint16_t address); + +/*! + * @brief Controls whether the general call address is recognized. + * + * @param instance The I2C peripheral instance number + * @param enable Whether to enable the general call address. + */ +static inline void i2c_hal_set_general_call_enable(uint32_t instance, bool enable) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + BW_I2C_C2_GCAEN(instance, (uint8_t)enable); +} + +/*! + * @brief Enables or disables the slave address range matching. + * + * @param instance The I2C peripheral instance number + * @param enable Pass true to enable the range address matching. You must also call the + * i2c_hal_set_upper_slave_address_7bit() to set the upper address. + */ +static inline void i2c_hal_set_slave_range_address_enable(uint32_t instance, bool enable) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + BW_I2C_C2_RMEN(instance, (uint8_t)enable); +} + +/*! + * @brief Sets the upper slave address. + * + * This slave address is used as a secondary slave address. If range address + * matching is enabled, this slave address acts as the upper bound on the slave address + * range. + * + * This function sets only a 7-bit slave address. If 10-bit addressing was enabled by calling the + * i2c_hal_set_slave_address_10bit(), then the top 3 bits set with that function are also used + * with the address set with this function to form a 10-bit address. + * + * Passing 0 for the @a address parameter disables matching the upper slave address. + * + * @param instance The I2C peripheral instance number + * @param address The upper slave address in the upper 7 bits. Bit 0 of this value must be 0. + * This address must be greater than the primary slave address that is set by + * calling the i2c_hal_set_slave_address_7bit(). + */ +static inline void i2c_hal_set_upper_slave_address_7bit(uint32_t instance, uint8_t address) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + assert((address & 1) == 0); + assert((address == 0) || (address > HW_I2C_A1_RD(instance))); + HW_I2C_RA_WR(instance, address); +} + +/*@}*/ + +/*! @name Status*/ +/*@{*/ + +/*! + * @brief Returns whether the I2C module is in master mode. + * + * @param instance The I2C peripheral instance number + * @retval true The module is in master mode, which implies it is also performing a transfer. + * @retval false The module is in slave mode. + */ +static inline bool i2c_hal_is_master(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_C1(instance).B.MST; +} + +/*! + * @brief Gets the transfer complete flag. + * + * @param instance The I2C peripheral instance number + * @retval true Transfer is complete. + * @retval false Transfer is in progress. + */ +static inline bool i2c_hal_is_transfer_complete(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_S(instance).B.TCF; +} + +/*! + * @brief Returns whether the I2C slave was addressed. + * + * @param instance The I2C peripheral instance number + * @retval true Addressed as slave. + * @retval false Not addressed. + */ +static inline bool i2c_hal_is_addressed_as_slave(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_S(instance).B.IAAS; +} + +/*! + * @brief Determines whether the I2C bus is busy. + * + * @param instance The I2C peripheral instance number + * @retval true Bus is busy. + * @retval false Bus is idle. + */ +static inline bool i2c_hal_is_bus_busy(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_S(instance).B.BUSY; +} + +/*! + * @brief Returns whether the arbitration procedure was lost. + * + * @param instance The I2C peripheral instance number + * @retval true Loss of arbitration + * @retval false Standard bus operation + */ +static inline bool i2c_hal_was_arbitration_lost(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_S(instance).B.ARBL; +} + +/*! + * @brief Clears the arbitration lost flag. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_clear_arbitration_lost(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_S_WR(instance, BM_I2C_S_ARBL); +} + +/*! + * @brief Get the range address match flag. + * + * @param instance The I2C peripheral instance number + * @retval true Addressed as slave. + * @retval false Not addressed. + */ +static inline bool i2c_hal_is_range_address_match(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_S(instance).B.RAM; +} + +/*! + * @brief Returns whether the I2C slave was addressed in read or write mode. + * + * @param instance The I2C peripheral instance number + * @retval #kI2CReceive Slave receive, master writing to slave + * @retval #kI2CTransmit Slave transmit, master reading from slave + */ +static inline i2c_transmit_receive_mode_t i2c_hal_get_slave_direction(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return HW_I2C_S(instance).B.SRW ? kI2CTransmit : kI2CReceive; +} + +/*! + * @brief Returns whether an ACK was received after the last byte was transmitted. + * + * @param instance The I2C peripheral instance number + * @retval true Acknowledges that the signal was received after the completion of one byte of data + * transmission on the bus. + * @retval false No acknowledgement of the signal is detected. + */ +static inline bool i2c_hal_get_receive_ack(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)!(HW_I2C_S(instance).B.RXAK); +} + +/*@}*/ + +/*! @name Interrupt*/ +/*@{*/ + +/*! + * @brief Enables the I2C interrupt requests. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_enable_interrupt(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_C1_SET(instance, BM_I2C_C1_IICIE); +} + +/*! + * @brief Disables the I2C interrupt requests. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_disable_interrupt(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_C1_CLR(instance, BM_I2C_C1_IICIE); +} + +/*! + * @brief Returns whether the I2C interrupts are enabled. + * + * @param instance The I2C peripheral instance number + * @retval true I2C interrupts are enabled. + * @retval false I2C interrupts are disabled. + */ +static inline bool i2c_hal_is_interrupt_enabled(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_C1(instance).B.IICIE; +} + +/*! + * @brief Returns the current I2C interrupt flag. + * + * @param instance The I2C peripheral instance number + * @retval true An interrupt is pending. + * @retval false No interrupt is pending. + */ +static inline bool i2c_hal_get_interrupt_status(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_S(instance).B.IICIF; +} + +/*! + * @brief Clears the I2C interrupt if set. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_clear_interrupt(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_S_SET(instance, BM_I2C_S_IICIF); +} + +/*@}*/ + +#if FSL_FEATURE_I2C_HAS_STOP_DETECT + +/*! @name Bus stop detection status*/ +/*@{*/ + +/*! + * @brief Gets the flag indicating a STOP signal was detected on the I2C bus. + * + * @param instance The I2C peripheral instance number + * @retval true STOP signal detected on bus. + * @retval false No STOP signal was detected on the bus. + */ +static inline bool i2c_hal_get_stop_detect(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_FLT(instance).B.STOPF; +} + +/*! + * @brief Clears the bus STOP signal detected flag. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_clear_stop_detect(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_FLT_SET(instance, BM_I2C_FLT_STOPF); +} + +/*@}*/ +#if FSL_FEATURE_I2C_HAS_START_DETECT + +/*! @name Bus stop detection interrupt*/ +/*@{*/ + +/*! + * @brief Enables the I2C bus stop detection interrupt. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_enable_bus_stop_interrupt(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_FLT_SET(instance, BM_I2C_FLT_SSIE); +} + +/*! + * @brief Disables the I2C bus stop detection interrupt. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_disable_bus_stop_interrupt(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_FLT_CLR(instance, BM_I2C_FLT_SSIE); +} + +/*! + * @brief Returns whether the I2C bus stop detection interrupts are enabled. + * + * @param instance The I2C peripheral instance number + * @retval true Stop detect interrupts are enabled. + * @retval false Stop detect interrupts are disabled. + */ +static inline bool i2c_hal_is_bus_stop_interrupt_enabled(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_FLT(instance).B.SSIE; +} + +#else + +/*! @name Bus stop detection interrupt*/ +/*@{*/ + +/*! + * @brief Enables the I2C bus stop detection interrupt. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_enable_bus_stop_interrupt(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_FLT_SET(instance, BM_I2C_FLT_STOPIE); +} + +/*! + * @brief Disables the I2C bus stop detection interrupt. + * + * @param instance The I2C peripheral instance number + */ +static inline void i2c_hal_disable_bus_stop_interrupt(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + HW_I2C_FLT_CLR(instance, BM_I2C_FLT_STOPIE); +} + +/*! + * @brief Returns whether the I2C bus stop detection interrupts are enabled. + * + * @param instance The I2C peripheral instance number + * @retval true Stop detect interrupts are enabled. + * @retval false Stop detect interrupts are disabled. + */ +static inline bool i2c_hal_is_bus_stop_interrupt_enabled(uint32_t instance) +{ + assert(instance < HW_I2C_INSTANCE_COUNT); + return (bool)HW_I2C_FLT(instance).B.STOPIE; +} + +#endif /* FSL_FEATURE_I2C_HAS_START_DETECT*/ + +/*@}*/ +#endif /* FSL_FEATURE_I2C_HAS_STOP_DETECT*/ + +#if defined(__cplusplus) +} +#endif + +/*! @}*/ + +#endif /* __FSL_I2C_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/mcg/fsl_mcg_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_MCG_FEATURES_H__ +#define __FSL_MCG_FEATURES_H__ + +#if (defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || \ + defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || \ + defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4)) + #define FSL_FEATURE_MCG_PLL_VDIV_BASE (24) + #define FSL_FEATURE_MCG_HAS_PLL_EXTRA_DIV (0) + #define FSL_FEATURE_MCG_HAS_RTC_32K (0) + #define FSL_FEATURE_MCG_HAS_PLL1 (0) + #define FSL_FEATURE_MCG_HAS_IRC_48M (0) + #define FSL_FEATURE_MCG_HAS_OSC1 (0) + #define FSL_FEATURE_MCG_HAS_FCFTRIM (0) + #define FSL_FEATURE_MCG_HAS_LOLRE (1) + #define FSL_FEATURE_MCG_USE_OSCSEL (0) + #define FSL_FEATURE_MCG_USE_PLLREFSEL (0) + #define FSL_FEATURE_MCG_USE_SYSTEM_CLOCK (1) +#elif (defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15)) + #define FSL_FEATURE_MCG_PLL_VDIV_BASE (16) + #define FSL_FEATURE_MCG_HAS_PLL_EXTRA_DIV (1) + #define FSL_FEATURE_MCG_HAS_RTC_32K (1) + #define FSL_FEATURE_MCG_HAS_PLL1 (1) + #define FSL_FEATURE_MCG_HAS_IRC_48M (0) + #define FSL_FEATURE_MCG_HAS_OSC1 (1) + #define FSL_FEATURE_MCG_HAS_FCFTRIM (0) + #define FSL_FEATURE_MCG_HAS_LOLRE (0) + #define FSL_FEATURE_MCG_USE_OSCSEL (1) + #define FSL_FEATURE_MCG_USE_PLLREFSEL (1) + #define FSL_FEATURE_MCG_USE_SYSTEM_CLOCK (0) +#elif (defined(CPU_MK64FN1M0VMD12) || (defined(CPU_MK22FN512VDC12))) + #define FSL_FEATURE_MCG_PLL_VDIV_BASE (24) + #define FSL_FEATURE_MCG_HAS_PLL_EXTRA_DIV (0) + #define FSL_FEATURE_MCG_HAS_RTC_32K (1) + #define FSL_FEATURE_MCG_HAS_PLL1 (0) + #define FSL_FEATURE_MCG_HAS_IRC_48M (1) + #define FSL_FEATURE_MCG_HAS_OSC1 (0) + #define FSL_FEATURE_MCG_HAS_FCFTRIM (1) + #define FSL_FEATURE_MCG_HAS_LOLRE (1) + #define FSL_FEATURE_MCG_USE_OSCSEL (1) + #define FSL_FEATURE_MCG_USE_PLLREFSEL (0) + #define FSL_FEATURE_MCG_USE_SYSTEM_CLOCK (0) +#else + #error "No valid CPU defined" +#endif + +#endif /* __FSL_MCG_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/mcg/fsl_mcg_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1999 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !defined(__FSL_MCG_HAL_H__) +#define __FSL_MCG_HAL_H__ + +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> +#include "fsl_device_registers.h" +#include "fsl_mcg_features.h" + +/*! @addtogroup mcg_hal*/ +/*! @{*/ + +/*! @file fsl_mcg_hal.h */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ +/*! @brief MCG constant definitions*/ +enum _mcg_constant +{ + kMcgConstant1 = (1u), + kMcgConstant5 = (5u), + + kMcgConstant640 = (640u), + kMcgConstant1280 = (1280u), + kMcgConstant1920 = (1920u), + kMcgConstant2560 = (2560u), + kMcgConstant732 = (732u), + kMcgConstant1464 = (1464u), + kMcgConstant2197 = (2197u), + kMcgConstant2929 = (2929u), + + kMcgConstantHex20 = (0x20u), + kMcgConstantHex40 = (0x40u), + kMcgConstantHex60 = (0x60u), + kMcgConstantHex80 = (0x80u), + kMcgConstantHexA0 = (0xA0u), + kMcgConstantHexC0 = (0xC0u), + kMcgConstantHexE0 = (0xE0u) +}; + +/*! @brief MCG clock source select */ +typedef enum _mcg_clock_select +{ + kMcgClockSelectOut, /* Output of FLL or PLLCS is selected(depends on PLLS bit) */ + kMcgClockSelectIn, /* Internal reference clock is selected */ + kMcgClockSelectExt, /* External reference clock is selected */ + kMcgClockSelectReserved +} mcg_clock_select_t; + +/*! @brief MCG internal reference clock source select */ +typedef enum _mcg_iref_clock_source +{ + kMcgIrefClockSourceExt, /* External reference clock is selected */ + kMcgIrefClockSourceSlow /* The slow internal reference clock is selected */ +} mcg_iref_clock_source_t; + +/*! @brief MCG frequency range select */ +typedef enum _mcg_freq_range_select +{ + kMcgFreqRangeSelectLow, /* Low frequency range selected for the crystal OSC */ + kMcgFreqRangeSelectHigh, /* High frequency range selected for the crystal OSC */ + kMcgFreqRangeSelectVeryHigh, /* Very High frequency range selected for the crystal OSC */ + kMcgFreqRangeSelectVeryHigh1 /* Very High frequency range selected for the crystal OSC */ +} mcg_freq_range_select_t; + +/*! @brief MCG high gain oscillator select */ +typedef enum _mcg_hgo_select +{ + kMcgHgoSelectLow, /* Configure crystal oscillator for low-power operation */ + kMcgHgoSelectHigh /* Configure crystal oscillator for high-gain operation */ +} mcg_hgo_select_t; + +/*! @brief MCG high gain oscillator select */ +typedef enum _mcg_eref_clock_select +{ + kMcgErefClockSelectExt, /* External reference clock requested */ + kMcgErefClockSelectOsc /* Oscillator requested */ +} mcg_eref_clock_select_t; + +/*! @brief MCG low power select */ +typedef enum _mcg_lp_select +{ + kMcgLpSelectNormal, /* FLL (or PLL) is not disabled in bypass modes */ + kMcgLpSelectLowPower /* FLL (or PLL) is disabled in bypass modes (lower power) */ +} mcg_lp_select_t; + +/*! @brief MCG internal reference clock select */ +typedef enum _mcg_iref_clock_select +{ + kMcgIrefClockSelectSlow, /* Slow internal reference clock selected */ + kMcgIrefClockSelectFast /* Fast internal reference clock selected */ +} mcg_iref_clock_select_t; + +/*! @brief MCG DCO Maximum Frequency with 32.768 kHz Reference */ +typedef enum _mcg_dmx32_select +{ + kMcgDmx32Default, /* DCO has a default range of 25% */ + kMcgDmx32Fine /* DCO is fine-tuned for maximum frequency with 32.768 kHz reference */ +} mcg_dmx32_select_t; + +/*! @brief MCG DCO range select */ +typedef enum _mcg_dco_range_select +{ + kMcgDcoRangeSelectLow, /* Low frequency range */ + kMcgDcoRangeSelectMid, /* Mid frequency range*/ + kMcgDcoRangeSelectMidHigh, /* Mid-High frequency range */ + kMcgDcoRangeSelectHigh /* High frequency range */ +} mcg_dco_range_select_t; + +/*! @brief MCG PLL external reference clock select */ +typedef enum _mcg_pll_eref_clock_select +{ + kMcgPllErefClockSelectOsc0, /* Selects OSC0 clock source as its external reference clock */ + kMcgPllErefClockSelectOsc1 /* Selects OSC1 clock source as its external reference clock */ +} mcg_pll_eref_clock_select_t; + +/*! @brief MCG PLL select */ +typedef enum _mcg_pll_select +{ + kMcgPllSelectFll, /* FLL is selected */ + kMcgPllSelectPllcs /* PLLCS output clock is selected */ +} mcg_pll_select_t; + +/*! @brief MCG loss of lock status */ +typedef enum _mcg_lols_status +{ + kMcgLolsNotLostLock, /* PLL has not lost lock since LOLS 0 was last cleared */ + kMcgLolsLostLock /* PLL has lost lock since LOLS 0 was last cleared */ +} mcg_lols_status_t; + +/*! @brief MCG lock status */ +typedef enum _mcg_lock_status +{ + kMcgLockUnlocked, /* PLL is currently unlocked */ + kMcgLockLocked /* PLL is currently locked */ +} mcg_lock_status_t; + +/*! @brief MCG clock status */ +typedef enum _mcg_pllst_status +{ + kMcgPllstFll, /* Source of PLLS clock is FLL clock */ + kMcgPllstPllcs /* Source of PLLS clock is PLLCS output clock */ +} mcg_pllst_status_t; + +/*! @brief MCG iref status */ +typedef enum _mcg_irefst_status +{ + kMcgIrefstExt, /* FLL reference clock is the external reference clock */ + kMcgIrefstInt /* FLL reference clock is the internal reference clock */ +} mcg_irefst_status_t; + +/*! @brief MCG clock mode status */ +typedef enum _mcg_clkst_status +{ + kMcgClkstFll, /* Output of the FLL is selected (reset default) */ + kMcgClkstIref, /* Internal reference clock is selected */ + kMcgClkstEref, /* External reference clock is selected */ + kMcgClkstPll /* Output of the PLL is selected */ +} mcg_clkst_status_t; + +/*! @brief MCG ircst status */ +typedef enum _mcg_ircst_status +{ + kMcgIrcstSlow, /* internal reference clock is the slow clock (32 kHz IRC) */ + kMcgIrcstFast /* internal reference clock is the fast clock (2 MHz IRC) */ +} mcg_ircst_status_t; + +/*! @brief MCG auto trim fail status */ +typedef enum _mcg_atmf_status +{ + kMcgAtmfNormal, /* Automatic Trim Machine completed normally */ + kMcgAtmfFail /* Automatic Trim Machine failed */ +} mcg_atmf_status_t; + +/*! @brief MCG loss of clock status */ +typedef enum _mcg_locs0_status +{ + kMcgLocs0NotOccured, /* Loss of OSC0 has not occurred */ + kMcgLocs0Occured /* Loss of OSC0 has occurred */ +} mcg_locs0_status_t; + +/*! @brief MCG Automatic Trim Machine Select */ +typedef enum _mcg_atms_select +{ + kMcgAtmsSelect32k, /* 32 kHz Internal Reference Clock selected */ + kMcgAtmsSelect4m /* 4 MHz Internal Reference Clock selected */ +} mcg_atms_select_t; + +/*! @brief MCG OSC Clock Select */ +typedef enum _mcg_oscsel_select +{ + kMcgOscselOsc, /* Selects System Oscillator (OSCCLK) */ + kMcgOscselRtc, /* Selects 32 kHz RTC Oscillator */ + kMcgOscselIrc /* Selects 48 MkHz IRC Oscillator */ +} mcg_oscsel_select_t; + +/*! @brief MCG loss of clock status */ +typedef enum _mcg_locs1_status +{ + kMcgLocs1NotOccured, /* Loss of RTC has not occurred */ + kMcgLocs1Occured /* Loss of RTC has occurred */ +} mcg_locs1_status_t; + +/*! @brief MCG PLLCS select */ +typedef enum _mcg_pllcs_select +{ + kMcgPllcsSelectPll0, /* PLL0 output clock is selected */ + kMcgPllcsSelectPll1, /* PLL1 output clock is selected */ +} mcg_pllcs_select_t; + +/*! @brief MCG loss of clock status */ +typedef enum _mcg_locs2_status +{ + kMcgLocs2NotOccured, /* Loss of OSC1 has not occurred */ + kMcgLocs2Occured /* Loss of OSC1 has occurred */ +} mcg_locs2_status_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif /* __cplusplus*/ + +/*! @name MCG out clock access API*/ +/*@{*/ + +/*! + * @brief Gets the current MCG FLL clock. + * + * This function returns the mcgfllclk value in frequency(Hertz) based on the + * current MCG configurations and settings. FLL should be properly configured + * in order to get the valid value. + * + * @param none + * @return value Frequency value in Hertz of the mcgpllclk. + */ +uint32_t clock_hal_get_fllclk(void); + +/*! + * @brief Gets the current MCG PLL/PLL0 clock. + * + * This function returns the mcgpllclk/mcgpll0 value in frequency(Hertz) based + * on the current MCG configurations and settings. PLL/PLL0 should be properly + * configured in order to get the valid value. + * + * @param none + * @return value Frequency value in Hertz of the mcgpllclk or the mcgpll0clk. + */ +uint32_t clock_hal_get_pll0clk(void); + +#if FSL_FEATURE_MCG_HAS_PLL1 +/*! + * @brief Gets the current MCG PLL1 clock. + * + * This function returns the mcgpll1clk value in frequency (Hertz) based + * on the current MCG configurations and settings. PLL1 should be properly configured + * in order to get the valid value. + * + * @param none + * @return value Frequency value in Hertz of mcgpll1clk. + */ +uint32_t clock_hal_get_pll1clk(void); +#endif + +/*! + * @brief Gets the current MCG IR clock. + * + * This function returns the mcgirclk value in frequency (Hertz) based + * on the current MCG configurations and settings. It does not check if the + * mcgirclk is enabled or not, just calculate and return the value. + * + * @param none + * @return value Frequency value in Hertz of the mcgirclk. + */ +uint32_t clock_hal_get_irclk(void); + +/*! + * @brief Gets the current MCG out clock. + * + * This function returns the mcgoutclk value in frequency (Hertz) based on the + * current MCG configurations and settings. The configuration should be + * properly done in order to get the valid value. + * + * @param none + * @return value Frequency value in Hertz of mcgoutclk. + */ +uint32_t clock_hal_get_outclk(void); + +/*@}*/ + +/*! @name MCG control register access API*/ +/*@{*/ + +/*! + * @brief Sets the Clock Source Select + * + * This function selects the clock source for the MCGOUTCLK. + * + * @param select Clock source selection + * - 00: Output of FLL or PLLCS is selected(depends on PLLS control bit) + * - 01: Internal reference clock is selected. + * - 10: External reference clock is selected. + * - 11: Reserved. + */ +static inline void clock_set_clks(mcg_clock_select_t select) +{ + BW_MCG_C1_CLKS(select); +} + +/*! + * @brief Gets the Clock Source Select. + * + * This function gets the select of the clock source for the MCGOUTCLK. + * + * @return select Clock source selection + */ +static inline mcg_clock_select_t clock_get_clks(void) +{ + return (mcg_clock_select_t)BR_MCG_C1_CLKS; +} + +/*! + * @brief Sets the FLL External Reference Divider. + * + * This function sets the FLL External Reference Divider. + * + * @param setting Divider setting + */ +static inline void clock_set_frdiv(uint8_t setting) +{ + BW_MCG_C1_FRDIV(setting); +} + +/*! + * @brief Gets the FLL External Reference Divider. + * + * This function gets the FLL External Reference Divider. + * + * @return setting Divider setting + */ +static inline uint8_t clock_get_frdiv(void) +{ + return BR_MCG_C1_FRDIV; +} + +/*! + * @brief Sets the Internal Reference Select. + * + * This function selects the reference clock source for the FLL. + * + * @param select Clock source select + * - 0: External reference clock is selected + * - 1: The slow internal reference clock is selected + */ +static inline void clock_set_irefs(mcg_iref_clock_source_t select) +{ + BW_MCG_C1_IREFS(select); +} + +/*! + * @brief Gets the Internal Reference Select + * + * This function gets the reference clock source for the FLL. + * + * @return select Clock source select + */ +static inline mcg_iref_clock_source_t clock_get_irefs(void) +{ + return (mcg_iref_clock_source_t)BR_MCG_C1_IREFS; +} + +/*! + * @brief Sets the CLKS, FRDIV and IREFS at the same time. + * + * This function sets the CLKS, FRDIV, and IREFS settings at the same time + * in order keep the integrity of the clock switching. + * + * @param clks Clock source select + * @param frdiv FLL external reference divider select + * @param irefs Internal reference select + */ +static inline void clock_set_clks_frdiv_irefs(mcg_clock_select_t clks, + uint8_t frdiv, + mcg_iref_clock_source_t irefs) +{ + /* Set the required CLKS , FRDIV and IREFS values */ + HW_MCG_C1_WR((HW_MCG_C1_RD() & ~(BM_MCG_C1_CLKS | BM_MCG_C1_FRDIV | BM_MCG_C1_IREFS)) + | (BF_MCG_C1_CLKS(clks) | BF_MCG_C1_FRDIV(frdiv) | BF_MCG_C1_IREFS(irefs))); +} + +/*! + * @brief Sets the Enable Internal Reference Clock setting. + * + * This function enables/disables the internal reference clock to use as the MCGIRCLK. + * + * @params enable Enable or disable internal reference clock. + * - true: MCGIRCLK active + * - false: MCGIRCLK inactive + */ +static inline void clock_set_irclken(bool enable) +{ + BW_MCG_C1_IRCLKEN(enable ? 1 : 0); +} + +/*! + * @brief Gets the enable Internal Reference Clock setting. + * + * This function gets the reference clock enable setting. + * + * @return enabled True if the internal reference clock is enabled. + */ +static inline bool clock_get_irclken(void) +{ + return BR_MCG_C1_IRCLKEN; +} + +/*! + * @brief Sets the Internal Reference Clock Stop Enable setting. + * + * This function controls whether or not the internal reference clock remains + * enabled when the MCG enters Stop mode. + * + * @params enable Enable or disable the internal reference clock stop setting. + * - true: Internal reference clock is enabled in Stop mode if IRCLKEN is set + or if MCG is in FEI, FBI, or BLPI modes before entering Stop mode. + * - false: Internal reference clock is disabled in Stop mode + */ +static inline void clock_set_irefsten(bool enable) +{ + BW_MCG_C1_IREFSTEN(enable ? 1 : 0); +} + +/*! + * @brief Gets the Enable Internal Reference Clock setting. + * + * This function gets the Internal Reference Clock Stop Enable setting. + * + * @return enabled True if internal reference clock stop is enabled. + */ +static inline bool clock_get_irefsten(void) +{ + return BR_MCG_C1_IREFSTEN; +} + +/*! + * @brief Sets the Loss of Clock Reset Enable setting. + * + * This function determines whether an interrupt or a reset request is made following a loss + * of the OSC0 external reference clock. The LOCRE0 only has an affect when CME0 is set. + * + * @params enable Loss of Clock Reset Enable setting + * - true: Generate a reset request on a loss of OSC0 external reference clock + * - false: Interrupt request is generated on a loss of OSC0 external reference clock + */ +static inline void clock_set_locre0(bool enable) +{ + BW_MCG_C2_LOCRE0(enable ? 1 : 0); +} + +/*! + * @brief Gets the Loss of Clock Reset Enable setting. + * + * This function gets the Loss of Clock Reset Enable setting. + * + * @return enabled True if Loss of Clock Reset is enabled. + */ +static inline bool clock_get_locre0(void) +{ + return BR_MCG_C2_LOCRE0; +} + +#if FSL_FEATURE_MCG_HAS_FCFTRIM +/*! + * @brief Sets the Fast Internal Reference Clock Fine Trim setting. + * + * This function sets the Fast Internal Reference Clock Fine Trim setting. FCFTRIM + * controls the smallest adjustment of the fast internal reference clock frequency. + * Setting the FCFTRIM increases the period and clearing FCFTRIM decreases the period + * by the smallest amount possible. If an FCFTRIM value is stored and non-volatile + * memory is to be used, it is the user's responsibility to copy that value from the + * non-volatile memory location to this bit. + * + * @params setting Fast Internal Reference Clock Fine Trim setting + */ +static inline void clock_set_fcftrim(uint8_t setting) +{ + BW_MCG_C2_FCFTRIM(setting); +} + +/*! + * @brief Gets the Fast Internal Reference Clock Fine Trim setting. + * + * This function gets the Fast Internal Reference Clock Fine Trim setting. + * + * @return setting Fast Internal Reference Clock Fine Trim setting + */ +static inline uint8_t clock_get_fcftrim(void) +{ + return BR_MCG_C2_FCFTRIM; +} +#endif /* FSL_FEATURE_MCG_HAS_FCFTRIM */ + +/*! + * @brief Sets the Frequency Range Select. + * + * This function selects the frequency range for the crystal oscillator or an external + * clock source. See the Oscillator (OSC) chapter for more details and the device + * data sheet for the frequency ranges used. + * + * @params select Frequency Range Select + * - 00: Low frequency range selected for the crystal oscillator + * - 01: High frequency range selected for the crystal oscillator + * - 1X: Very high frequency range selected for the crystal oscillator + */ +static inline void clock_set_range0(mcg_freq_range_select_t select) +{ + BW_MCG_C2_RANGE(select); +} + +/*! + * @brief Gets the Frequency Range Select. + * + * This function gets the Frequency Range Select. + * + * @return select Frequency Range Select + */ +static inline mcg_freq_range_select_t clock_get_range0(void) +{ + return (mcg_freq_range_select_t)BR_MCG_C2_RANGE; +} + +/*! + * @brief Sets the High Gain Oscillator Select. + * + * This function controls the crystal oscillator mode of operation. See the + * Oscillator (OSC) chapter for more details. + * + * @params select High Gain Oscillator Select. + * - 0: Configure crystal oscillator for low-power operation + * - 1: Configure crystal oscillator for high-gain operation + */ +static inline void clock_set_hgo0(mcg_hgo_select_t select) +{ + BW_MCG_C2_HGO(select); +} + +/*! + * @brief Gets the High Gain Oscillator Select. + * + * This function gets the High Gain Oscillator Select. + * + * @return select High Gain Oscillator Select + */ +static inline mcg_hgo_select_t clock_get_hgo0(void) +{ + return (mcg_hgo_select_t)BR_MCG_C2_HGO; +} + +/*! + * @brief Sets the External Reference Select. + * + * This function selects the source for the external reference clock. + * See the Oscillator (OSC) chapter for more details. + * + * @params select External Reference Select + * - 0: External reference clock requested + * - 1: Oscillator requested + */ +static inline void clock_set_erefs0(mcg_eref_clock_select_t select) +{ + BW_MCG_C2_EREFS(select); +} + +/*! + * @brief Gets the External Reference Select. + * + * This function gets the External Reference Select. + * + * @return select External Reference Select + */ +static inline mcg_eref_clock_select_t clock_get_erefs0(void) +{ + return (mcg_eref_clock_select_t)BR_MCG_C2_EREFS; +} + +/*! + * @brief Sets the Low Power Select. + * + * This function controls whether the FLL (or PLL) is disabled in the BLPI and the + * BLPE modes. In the FBE or the PBE modes, setting this bit to 1 transitions the MCG + * into the BLPE mode; in the FBI mode, setting this bit to 1 transitions the MCG into + * the BLPI mode. In any other MCG mode, the LP bit has no affect.. + * + * @params select Low Power Select + * - 0: FLL (or PLL) is not disabled in bypass modes + * - 1: FLL (or PLL) is disabled in bypass modes (lower power) + */ +static inline void clock_set_lp(mcg_lp_select_t select) +{ + BW_MCG_C2_LP(select); +} + +/*! + * @brief Gets the Low Power Select. + * + * This function gets the Low Power Select. + * + * @return select Low Power Select + */ +static inline mcg_lp_select_t clock_get_lp(void) +{ + return (mcg_lp_select_t)BR_MCG_C2_LP; +} + +/*! + * @brief Sets the Internal Reference Clock Select. + * + * This function selects between the fast or slow internal reference clock source. + * + * @params select Low Power Select + * - 0: Slow internal reference clock selected. + * - 1: Fast internal reference clock selected. + */ +static inline void clock_set_ircs(mcg_iref_clock_select_t select) +{ + BW_MCG_C2_IRCS(select); +} + +/*! + * @brief Gets the Internal Reference Clock Select. + * + * This function gets the Internal Reference Clock Select. + * + * @return select Internal Reference Clock Select + */ +static inline mcg_iref_clock_select_t clock_get_ircs(void) +{ + return (mcg_iref_clock_select_t)BR_MCG_C2_IRCS; +} + +/*! + * @brief Sets the Slow Internal Reference Clock Trim Setting. + * + * This function controls the slow internal reference clock frequency by + * controlling the slow internal reference clock period. The SCTRIM bits are + * binary weighted (that is, bit 1 adjusts twice as much as bit 0). + * Increasing the binary value increases the period, and decreasing the value + * decreases the period. + * An additional fine trim bit is available in the C4 register as the SCFTRIM bit. + * Upon reset, this value is loaded with a factory trim value. + * If an SCTRIM value stored in non-volatile memory is to be used, it is the user's + * responsibility to copy that value from the non-volatile memory location to + * this register. + * + * @params setting Slow Internal Reference Clock Trim Setting + */ +static inline void clock_set_sctrim(uint8_t setting) +{ + BW_MCG_C3_SCTRIM(setting); +} + +/*! + * @brief Gets the Slow Internal Reference Clock Trim Setting. + * + * This function gets the Slow Internal Reference Clock Trim Setting. + * + * @return setting Slow Internal Reference Clock Trim Setting + */ +static inline uint8_t clock_get_sctrim(void) +{ + return BR_MCG_C3_SCTRIM; +} + +/*! + * @brief Sets the DCO Maximum Frequency with 32.768 kHz Reference. + * + * This function controls whether or not the DCO frequency range + * is narrowed to its maximum frequency with a 32.768 kHz reference. + * + * @params setting DCO Maximum Frequency with 32.768 kHz Reference Setting + * - 0: DCO has a default range of 25%. + * - 1: DCO is fine-tuned for maximum frequency with 32.768 kHz reference. + */ +static inline void clock_set_dmx32(mcg_dmx32_select_t setting) +{ + BW_MCG_C4_DMX32(setting); +} + +/*! + * @brief Gets the DCO Maximum Frequency with the 32.768 kHz Reference Setting. + * + * This function gets the DCO Maximum Frequency with 32.768 kHz Reference Setting. + * + * @return setting DCO Maximum Frequency with 32.768 kHz Reference Setting + */ +static inline mcg_dmx32_select_t clock_get_dmx32(void) +{ + return (mcg_dmx32_select_t)BR_MCG_C4_DMX32; +} + +/*! + * @brief Sets the DCO Range Select. + * + * This function selects the frequency range for the FLL output, DCOOUT. + * When the LP bit is set, the writes to the DRS bits are ignored. The DRST read + * field indicates the current frequency range for the DCOOUT. The DRST field does + * not update immediately after a write to the DRS field due to internal + * synchronization between the clock domains. See the DCO Frequency Range table + * for more details. + * + * @params setting DCO Range Select Setting + * - 00: Low range (reset default). + * - 01: Mid range. + * - 10: Mid-high range. + * - 11: High range. + */ +static inline void clock_set_drst_drs(mcg_dco_range_select_t setting) +{ + BW_MCG_C4_DRST_DRS(setting); +} + +/*! + * @brief Gets the DCO Range Select Setting. + * + * This function gets the DCO Range Select Setting. + * + * @return setting DCO Range Select Setting + */ +static inline mcg_dco_range_select_t clock_get_drst_drs(void) +{ + return (mcg_dco_range_select_t)BR_MCG_C4_DRST_DRS; +} + +/*! + * @brief Sets the Fast Internal Reference Clock Trim Setting. + * + * This function controls the fast internal reference clock frequency + * by controlling the fast internal reference clock period. The FCTRIM + * bits are binary weighted (that is, bit 1 adjusts twice as much as bit 0). + * Increasing the binary value increases the period, and decreasing the + * value decreases the period. + * If an FCTRIM[3:0] value stored in non-volatile memory is to be used, it is + * the user's responsibility to copy that value from the non-volatile memory location + * to this register. + * + * @params setting Fast Internal Reference Clock Trim Setting. + */ +static inline void clock_set_fctrim(uint8_t setting) +{ + BW_MCG_C4_FCTRIM(setting); +} + +/*! + * @brief Gets the Fast Internal Reference Clock Trim Setting. + * + * This function gets the Fast Internal Reference Clock Trim Setting. + * + * @return setting Fast Internal Reference Clock Trim Setting + */ +static inline uint8_t clock_get_fctrim(void) +{ + return BR_MCG_C4_FCTRIM; +} + +/*! + * @brief Sets the Slow Internal Reference Clock Fine Trim Setting. + * + * This function controls the smallest adjustment of the slow internal + * reference clock frequency. Setting the SCFTRIM increases the period and + * clearing the SCFTRIM decreases the period by the smallest amount possible. + * If an SCFTRIM value, stored in non-volatile memory, is to be used, it is + * the user's responsibility to copy that value from the non-volatile memory + * location to this bit. + * + * @params setting Slow Internal Reference Clock Fine Trim Setting + */ +static inline void clock_set_scftrim(uint8_t setting) +{ + BW_MCG_C4_SCFTRIM(setting); +} + +/*! + * @brief Gets the Slow Internal Reference Clock Fine Trim Setting. + * + * This function gets the Slow Internal Reference Clock Fine Trim Setting. + * + * @return setting Slow Internal Reference Clock Fine Trim Setting + */ +static inline uint8_t clock_get_scftrim(void) +{ + return BR_MCG_C4_SCFTRIM; +} + +#if FSL_FEATURE_MCG_USE_PLLREFSEL +/*! + * @brief Sets the PLL0 External Reference Select Setting. + * + * This function selects the PLL0 external reference clock source. + * + * @params setting PLL0 External Reference Select Setting + * - 0: Selects OSC0 clock source as its external reference clock + * - 1: Selects OSC1 clock source as its external reference clock + */ +static inline void clock_set_pllrefsel0(mcg_pll_eref_clock_select_t setting) +{ + BW_MCG_C5_PLLREFSEL0(setting); +} + +/*! + * @brief Gets the PLL0 External Reference Select Setting. + * + * This function gets the PLL0 External Reference Select Setting. + * + * @return setting PLL0 External Reference Select Setting + */ +static inline mcg_pll_eref_clock_select_t clock_get_pllrefsel0(void) +{ + return (mcg_pll_eref_clock_select_t)BR_MCG_C5_PLLREFSEL0; +} +#endif /* FSL_FEATURE_MCG_USE_PLLREFSEL */ + +/*! + * @brief Sets the PLL Clock Enable Setting. + * + * This function enables/disables the PLL0 independent of the PLLS and enables the PLL0 + * clock to use as the MCGPLL0CLK and the MCGPLL0CLK2X. (PRDIV0 needs to be programmed to + * the correct divider to generate a PLL1 reference clock in a valid reference range + * prior to setting the PLLCLKEN0 bit). Setting PLLCLKEN0 enables the external + * oscillator selected by REFSEL if not already enabled. Whenever the PLL0 is being + * enabled with the PLLCLKEN0 bit, and the external oscillator is being used + * as the reference clock, the OSCINIT 0 bit should be checked to make sure it is set. + * + * @params enable PLL Clock Enable Setting + * - true: MCGPLL0CLK and MCGPLL0CLK2X are active + * - false: MCGPLL0CLK and MCGPLL0CLK2X are inactive + */ +static inline void clock_set_pllclken0(bool enable) +{ + BW_MCG_C5_PLLCLKEN0(enable ? 1 : 0); +} + +/*! + * @brief Gets the PLL Clock Enable Setting. + * + * This function gets the PLL Clock Enable Setting. + * + * @return enabled True if PLL0 PLL Clock is enabled. + */ +static inline bool clock_get_pllclken0(void) +{ + return BR_MCG_C5_PLLCLKEN0; +} + +/*! + * @brief Sets the PLL0 Stop Enable Setting. + * + * This function enables/disables the PLL0 Clock during a Normal Stop (In Low + * Power Stop mode, the PLL0 clock gets disabled even if PLLSTEN0=1). In all other + * power modes, the PLLSTEN0 bit has no affect and does not enable the PLL0 Clock + * to run if it is written to 1. + * + * @params enable PLL0 Stop Enable Setting + * - true: MCGPLL0CLK and MCGPLL0CLK2X are enabled if system is in + * Normal Stop mode. + * - false: MCGPLL0CLK and MCGPLL0CLK2X are disabled in any of the + * Stop modes. + */ +static inline void clock_set_pllsten0(bool enable) +{ + BW_MCG_C5_PLLSTEN0(enable ? 1 : 0); +} + +/*! + * @brief Gets the PLL0 Stop Enable Setting. + * + * This function gets the PLL0 Stop Enable Setting. + * + * @return enabled True if the PLL0 Stop is enabled. + */ +static inline bool clock_get_pllsten0(void) +{ + return BR_MCG_C5_PLLSTEN0; +} + +/*! + * @brief Sets the PLL0 External Reference Divider Setting. + * + * This function selects the amount to divide down the external reference + * clock for the PLL0. The resulting frequency must be in a valid reference + * range. After the PLL0 is enabled, (by setting either PLLCLKEN0 or PLLS), the + * PRDIV0 value must not be changed when LOCK0 is zero. + * + * @params setting PLL0 External Reference Divider Setting + */ +static inline void clock_set_prdiv0(uint8_t setting) +{ + BW_MCG_C5_PRDIV0(setting); +} + +/*! + * @brief Gets the PLL0 External Reference Divider Setting. + * + * This function gets the PLL0 External Reference Divider Setting. + * + * @return setting PLL0 External Reference Divider Setting + */ +static inline uint8_t clock_get_prdiv0(void) +{ + return BR_MCG_C5_PRDIV0; +} + +/*! + * @brief Sets the Loss of Lock Interrupt Enable Setting. + * + * This function determine whether an interrupt request is made following a loss + * of lock indication. This bit only has an effect when LOLS 0 is set. + * + * @params enable Loss of Lock Interrupt Enable Setting + * - true: Generate an interrupt request on loss of lock. + * - false: No interrupt request is generated on loss of lock. + */ +static inline void clock_set_lolie0(bool enable) +{ + BW_MCG_C6_LOLIE0(enable ? 1 : 0); +} + +/*! + * @brief Gets the Loss of the Lock Interrupt Enable Setting. + * + * This function gets the Loss of the Lock Interrupt Enable Setting. + * + * @return enabled True if the Loss of Lock Interrupt is enabled. + */ +static inline bool clock_get_lolie0(void) +{ + return BR_MCG_C6_LOLIE0; +} + +/*! + * @brief Sets the PLL Select Setting. + * + * This function controls whether the PLLCS or FLL output is selected as the + * MCG source when CLKS[1:0]=00. If the PLLS bit is cleared and PLLCLKEN0 and + * PLLCLKEN1 is not set, the PLLCS output clock is disabled in all modes. If the + * PLLS is set, the FLL is disabled in all modes. + * + * @params setting PLL Select Setting + * - 0: FLL is selected. + * - 1: PLLCS output clock is selected (PRDIV0 bits of PLL in + * control need to be programmed to the correct divider to + * generate a PLL reference clock in the range of 1 - 32 MHz + * prior to setting the PLLS bit). + */ +static inline void clock_set_plls(mcg_pll_select_t setting) +{ + BW_MCG_C6_PLLS(setting); +} + +/*! + * @brief Gets the PLL Select Setting. + * + * This function gets the PLL Select Setting. + * + * @return setting PLL Select Setting + */ +static inline mcg_pll_select_t clock_get_plls(void) +{ + return (mcg_pll_select_t)BR_MCG_C6_PLLS; +} + +/*! + * @brief Sets the Clock Monitor Enable Setting. + * + * This function enables/disables the loss of clock monitoring circuit for + * the OSC0 external reference mux select. The LOCRE0 bit determines whether an + * interrupt or a reset request is generated following a loss of the OSC0 indication. + * The CME0 bit should only be set to a logic 1 when the MCG is in an operational + * mode that uses the external clock (FEE, FBE, PEE, PBE, or BLPE). Whenever the + * CME0 bit is set to a logic 1, the value of the RANGE0 bits in the C2 register + * should not be changed. CME0 bit should be set to a logic 0 before the MCG + * enters any Stop mode. Otherwise, a reset request may occur while in Stop mode. + * CME0 should also be set to a logic 0 before entering VLPR or VLPW power modes + * if the MCG is in BLPE mode. + * + * @params enable Clock Monitor Enable Setting + * - true: External clock monitor is enabled for OSC0. + * - false: External clock monitor is disabled for OSC0. + */ +static inline void clock_set_cme0(bool enable) +{ + BW_MCG_C6_CME0(enable ? 1 : 0); +} + +/*! + * @brief Gets the Clock Monitor Enable Setting. + * + * This function gets the Clock Monitor Enable Setting. + * + * @return enabled True if Clock Monitor is enabled + */ +static inline bool clock_get_cme0(void) +{ + return BR_MCG_C6_CME0; +} + +/*! + * @brief Sets the VCO0 Divider Setting. + * + * This function selects the amount to divide the VCO output of the PLL0. + * The VDIV0 bits establish the multiplication factor (M) applied to the + * reference clock frequency. After the PLL0 is enabled (by setting either + * PLLCLKEN0 or PLLS), the VDIV0 value must not be changed when LOCK0 is zero. + * + * @params setting VCO0 Divider Setting + */ +static inline void clock_set_vdiv0(uint8_t setting) +{ + BW_MCG_C6_VDIV0(setting); +} + +/*! + * @brief Gets the VCO0 Divider Setting. + * + * This function gets the VCO0 Divider Setting. + * + * @return setting VCO0 Divider Setting + */ +static inline uint8_t clock_get_vdiv0(void) +{ + return BR_MCG_C6_VDIV0; +} + +/*! + * @brief Gets the Loss of the Lock Status. + * + * This function gets the Loss of Lock Status. This bit is a sticky bit indicating + * the lock status for the PLL. LOLS 0 is set if after acquiring lock, the PLL + * output frequency has fallen outside the lock exit frequency tolerance, D unl . + * LOLIE 0 determines whether an interrupt request is made when LOLS 0 is set. + * This bit is cleared by reset or by writing a logic 1 to it when set. Writing a + * logic 0 to this bit has no effect. + * + * @return status Loss of Lock Status + * - 0: PLL has not lost lock since LOLS 0 was last cleared + * - 1: PLL has lost lock since LOLS 0 was last cleared + */ +static inline mcg_lols_status_t clock_get_lols0(void) +{ + return (mcg_lols_status_t)BR_MCG_S_LOLS0; +} + +/*! + * @brief Gets the Lock Status. + * + * This function gets the Lock Status. This bit indicates whether the PLL0 has + * acquired the lock. Lock detection is disabled when not operating in either the PBE or the + * PEE mode unless PLLCLKEN0=1 and the MCG is not configured in the BLPI or the BLPE mode. + * While the PLL0 clock is locking to the desired frequency, MCGPLL0CLK and + * MCGPLL0CLK2X are gated off until the LOCK0 bit gets asserted. If the lock + * status bit is set, changing the value of the PRDIV0[2:0] bits in the C5 register + * or the VDIV0[4:0] bits in the C6 register causes the lock status bit to clear + * and stay cleared until the PLL0 has reacquired the lock. The loss of the PLL0 reference + * clock also causes the LOCK0 bit to clear until the PLL0 has an entry into the LLS, + * VLPS, or a regular Stop with PLLSTEN0=0 also causes the lock status bit to clear + * and stay cleared until the stop mode is exited and the PLL0 has reacquired the lock. + * Any time the PLL0 is enabled and the LOCK0 bit is cleared, the MCGPLL0CLK and + * MCGPLL0CLK2X are gated off until the LOCK0 bit is reasserted. + * + * @return status Lock Status + * - 0: PLL is currently unlocked + * - 1: PLL is currently locked + */ +static inline mcg_lock_status_t clock_get_lock0(void) +{ + return (mcg_lock_status_t)BR_MCG_S_LOCK0; +} + +/*! + * @brief Gets the PLL Select Status. + * + * This function gets the PLL Select Status. This bit indicates the clock source + * selected by PLLS . The PLLST bit does not update immediately after a write to + * the PLLS bit due to the internal synchronization between the clock domains. + * + * @return status PLL Select Status + * - 0: Source of PLLS clock is FLL clock. + * - 1: Source of PLLS clock is PLLCS output clock. + */ +static inline mcg_pllst_status_t clock_get_pllst(void) +{ + return (mcg_pllst_status_t)BR_MCG_S_PLLST; +} + +/*! + * @brief Gets the Internal Reference Status. + * + * This function gets the Internal Reference Status. This bit indicates the current + * source for the FLL reference clock. The IREFST bit does not update immediately + * after a write to the IREFS bit due to internal synchronization between the clock + * domains. + * + * @return status Internal Reference Status + * - 0: Source of FLL reference clock is the external reference clock. + * - 1: Source of FLL reference clock is the internal reference clock. + */ +static inline mcg_irefst_status_t clock_get_irefst(void) +{ + return (mcg_irefst_status_t)BR_MCG_S_IREFST; +} + +/*! + * @brief Gets the Clock Mode Status. + * + * This function gets the Clock Mode Status. These bits indicate the current clock mode. + * The CLKST bits do not update immediately after a write to the CLKS bits due to + * internal synchronization between clock domains. + * + * @return status Clock Mode Status + * - 00: Output of the FLL is selected (reset default). + * - 01: Internal reference clock is selected. + * - 10: External reference clock is selected. + * - 11: Output of the PLL is selected. + */ +static inline mcg_clkst_status_t clock_get_clkst(void) +{ + return (mcg_clkst_status_t)BR_MCG_S_CLKST; +} + +/*! + * @brief Gets the OSC Initialization Status. + * + * This function gets the OSC Initialization Status. This bit, which resets to 0, is set + * to 1 after the initialization cycles of the crystal oscillator clock have completed. + * After being set, the bit is cleared to 0 if the OSC is subsequently disabled. See the + * OSC module's detailed description for more information. + * + * @return status OSC Initialization Status + */ +static inline uint8_t clock_get_oscinit0(void) +{ + return BR_MCG_S_OSCINIT0; +} + +/*! + * @brief Gets the Internal Reference Clock Status. + * + * This function gets the Internal Reference Clock Status. The IRCST bit indicates the + * current source for the internal reference clock select clock (IRCSCLK). The IRCST bit + * does not update immediately after a write to the IRCS bit due to the internal + * synchronization between clock domains. The IRCST bit is only updated if the + * internal reference clock is enabled, either by the MCG being in a mode that uses the + * IRC or by setting the C1[IRCLKEN] bit. + * + * @return status Internal Reference Clock Status + * - 0: Source of internal reference clock is the slow clock (32 kHz IRC). + * - 1: Source of internal reference clock is the fast clock (2 MHz IRC). + */ +static inline mcg_ircst_status_t clock_get_ircst(void) +{ + return (mcg_ircst_status_t)BR_MCG_S_IRCST; +} + +/*! + * @brief Gets the Automatic Trim machine Fail Flag. + * + * This function gets the Automatic Trim machine Fail Flag. This Fail flag for the + * Automatic Trim Machine (ATM). This bit asserts when the Automatic Trim Machine is + * enabled (ATME=1) and a write to the C1, C3, C4, and SC registers is detected or the MCG + * enters into any Stop mode. A write to ATMF clears the flag. + * + * @return flag Automatic Trim machine Fail Flag + * - 0: Automatic Trim Machine completed normally. + * - 1: Automatic Trim Machine failed. + */ +static inline mcg_atmf_status_t clock_get_atmf(void) +{ + return (mcg_atmf_status_t)BR_MCG_SC_ATMF; +} + +/*! + * @brief Sets the Automatic Trim machine Fail Flag. + * + * This function clears the ATMF flag. + */ +static inline void clock_set_atmf(void) +{ + BW_MCG_SC_ATMF(1); +} + +/*! + * @brief Gets the OSC0 Loss of Clock Status. + * + * This function gets the OSC0 Loss of Clock Status. The LOCS0 indicates when a loss of + * OSC0 reference clock has occurred. The LOCS0 bit only has an effect when CME0 is set. + * This bit is cleared by writing a logic 1 to it when set. + * + * @return status OSC0 Loss of Clock Status + * - 0: Loss of OSC0 has not occurred. + * - 1: Loss of OSC0 has occurred. + */ +static inline mcg_locs0_status_t clock_get_locs0(void) +{ + return (mcg_locs0_status_t)BR_MCG_SC_LOCS0; +} + +/*! + * @brief Sets the Automatic Trim Machine Enable Setting. + * + * This function enables/disables the Auto Trim Machine to start automatically + * trimming the selected Internal Reference Clock. + * ATME de-asserts after the Auto Trim Machine has completed trimming all trim bits + * of the IRCS clock selected by the ATMS bit. + * Writing to C1, C3, C4, and SC registers or entering Stop mode aborts the auto + * trim operation and clears this bit. + * + * @params enable Automatic Trim Machine Enable Setting + * - true: Auto Trim Machine enabled + * - false: Auto Trim Machine disabled + */ +static inline void clock_set_atme(bool enable) +{ + BW_MCG_SC_ATME(enable ? 1 : 0); +} + +/*! + * @brief Gets the Automatic Trim Machine Enable Setting. + * + * This function gets the Automatic Trim Machine Enable Setting. + * + * @return enabled True if Automatic Trim Machine is enabled + */ +static inline bool clock_get_atme(void) +{ + return BR_MCG_SC_ATME; +} + +/*! + * @brief Sets the Automatic Trim Machine Select Setting. + * + * This function selects the IRCS clock for Auto Trim Test. + * + * @params setting Automatic Trim Machine Select Setting + * - 0: 32 kHz Internal Reference Clock selected + * - 1: 4 MHz Internal Reference Clock selected + */ +static inline void clock_set_atms(mcg_atms_select_t setting) +{ + BW_MCG_SC_ATMS(setting); +} + +/*! + * @brief Gets the Automatic Trim Machine Select Setting. + * + * This function gets the Automatic Trim Machine Select Setting. + * + * @return setting Automatic Trim Machine Select Setting + */ +static inline mcg_atms_select_t clock_get_atms(void) +{ + return (mcg_atms_select_t)BR_MCG_SC_ATMS; +} + +/*! + * @brief Sets the FLL Filter Preserve Enable Setting. + * + * This function sets the FLL Filter Preserve Enable. This bit prevents the + * FLL filter values from resetting allowing the FLL output frequency to remain the + * same during the clock mode changes where the FLL/DCO output is still valid. + * (Note: This requires that the FLL reference frequency remain the same as + * the value prior to the new clock mode switch. Otherwise, the FLL filter and the frequency + * values change.) + * + * @params enable FLL Filter Preserve Enable Setting + * - true: FLL filter and FLL frequency retain their previous values + * during new clock mode change + * - false: FLL filter and FLL frequency will reset on changes to correct + * clock mode + */ +static inline void clock_set_fltprsrv(bool enable) +{ + BW_MCG_SC_FLTPRSRV(enable ? 1 : 0); +} + +/*! + * @brief Gets the FLL Filter Preserve Enable Setting. + * + * This function gets the FLL Filter Preserve Enable Setting. + * + * @return enabled True if FLL Filter Preserve is enabled. + */ +static inline bool clock_get_fltprsrv(void) +{ + return BR_MCG_SC_FLTPRSRV; +} + +/*! + * @brief Sets the Fast Clock Internal Reference Divider Setting. + * + * This function selects the amount to divide down the fast internal reference + * clock. The resulting frequency is in the range 31.25 kHz to 4 MHz. + * (Note: Changing the divider when the Fast IRC is enabled is not supported). + * + * @params setting Fast Clock Internal Reference Divider Setting + */ +static inline void clock_set_fcrdiv(uint8_t setting) +{ + BW_MCG_SC_FCRDIV(setting); +} + +/*! + * @brief Gets the Fast Clock Internal Reference Divider Setting. + * + * This function gets the Fast Clock Internal Reference Divider Setting. + * + * @return setting Fast Clock Internal Reference Divider Setting + */ +static inline uint8_t clock_get_fcrdiv(void) +{ + return BR_MCG_SC_FCRDIV; +} + +/*! + * @brief Sets the ATM Compare Value High Setting. + * + * This function sets the ATM compare value high setting. The values are used by the + * Auto Trim Machine to compare and adjust the Internal Reference trim values during the ATM + * SAR conversion. + * + * @params setting ATM Compare Value High Setting + */ +static inline void clock_set_atcvh(uint8_t setting) +{ + BW_MCG_ATCVH_ATCVH(setting); +} + +/*! + * @brief Gets the ATM Compare Value High Setting. + * + * This function gets the ATM Compare Value High Setting. + * + * @return setting ATM Compare Value High Setting + */ +static inline uint8_t clock_get_atcvh(void) +{ + return BR_MCG_ATCVH_ATCVH; +} + +/*! + * @brief Sets the ATM Compare Value Low Setting. + * + * This function sets the ATM compare value low setting. The values are used by the + * Auto Trim Machine to compare and adjust Internal Reference trim values during the ATM + * SAR conversion. + * + * @params setting ATM Compare Value Low Setting + */ +static inline void clock_set_atcvl(uint8_t setting) +{ + BW_MCG_ATCVL_ATCVL(setting); +} + +/*! + * @brief Gets the ATM Compare Value Low Setting. + * + * This function gets the ATM Compare Value Low Setting. + * + * @return setting ATM Compare Value Low Setting + */ +static inline uint8_t clock_get_atcvl(void) +{ + return BR_MCG_ATCVL_ATCVL; +} + +#if FSL_FEATURE_MCG_USE_OSCSEL +/*! + * @brief Sets the MCG OSC Clock Select Setting. + * + * This function selects the MCG FLL external reference clock. + * + * @params setting MCG OSC Clock Select Setting + * - 0: Selects System Oscillator (OSCCLK). + * - 1: Selects 32 kHz RTC Oscillator. + */ +static inline void clock_set_oscsel(mcg_oscsel_select_t setting) +{ + BW_MCG_C7_OSCSEL(setting); +} + +/*! + * @brief Gets the MCG OSC Clock Select Setting. + * + * This function gets the MCG OSC Clock Select Setting. + * + * @return setting MCG OSC Clock Select Setting + */ +static inline mcg_oscsel_select_t clock_get_oscsel(void) +{ + return (mcg_oscsel_select_t)BR_MCG_C7_OSCSEL; +} +#endif /* FSL_FEATURE_MCG_USE_OSCSEL */ + +#if FSL_FEATURE_MCG_HAS_LOLRE +/*! + * @brief Sets the PLL Loss of Lock Reset Enable Setting. + * + * This function determines whether an interrupt or a reset request is made + * following a PLL loss of lock. + * + * @params enable PLL Loss of Lock Reset Enable Setting + * - true: Generate a reset request on a PLL loss of lock indication. + * - false: Interrupt request is generated on a PLL loss of lock + * indication. The PLL loss of lock interrupt enable bit + * must also be set to generate the interrupt request. + */ +static inline void clock_set_lolre(bool enable) +{ + BW_MCG_C8_LOLRE(enable ? 1 : 0); +} + +/*! + * @brief Gets the PLL Loss of Lock Reset Enable Setting. + * + * This function gets the PLL Loss of Lock Reset Enable Setting. + * + * @return enabled True if the PLL Loss of Lock Reset is enabled. + */ +static inline bool clock_get_lolre(void) +{ + return BR_MCG_C8_LOLRE; +} +#endif /* FSL_FEATURE_MCG_HAS_LOLRE */ + + +#if FSL_FEATURE_MCG_HAS_RTC_32K +/*! + * @brief Sets the Loss of Clock Reset Enable Setting. + * + * This function determines whether an interrupt or a reset request is made following + * a loss of the RTC external reference clock. The LOCRE1 only has an affect when CME1 + * is set. + * + * @params enable Loss of Clock Reset Enable Setting + * - true: Generate a reset request on a loss of RTC external reference clock. + * - false: Interrupt request is generated on a loss of RTC external + * reference clock. + */ +static inline void clock_set_locre1(bool enable) +{ + BW_MCG_C8_LOCRE1(enable ? 1 : 0); +} + +/*! + * @brief Gets the Loss of Clock Reset Enable Setting. + * + * This function gets the Loss of Clock Reset Enable Setting. + * + * @return enabled True if Loss of Clock Reset is enabled. + */ +static inline bool clock_get_locre1(void) +{ + return BR_MCG_C8_LOCRE1; +} + +/*! + * @brief Sets the Clock Monitor Enable1 Setting. + * + * This function enables/disables the loss of the clock monitoring circuit for the + * output of the RTC external reference clock. The LOCRE1 bit determines whether an + * interrupt or a reset request is generated following a loss of the RTC clock indication. + * The CME1 bit should only be set to a logic 1 when the MCG is in an operational mode + * that uses the external clock (FEE, FBE, PEE, PBE, or BLPE). CME1 bit must be set to + * a logic 0 before the MCG enters any Stop mode. Otherwise, a reset request may occur + * while in Stop mode. CME1 should also be set to a logic 0 before entering VLPR or + * VLPW power modes if the MCG is in BLPE mode. + * + * @params enable Clock Monitor Enable1 Setting + * - true: External clock monitor is enabled for RTC clock. + * - false: External clock monitor is disabled for RTC clock. + */ +static inline void clock_set_cme1(bool enable) +{ + BW_MCG_C8_CME1(enable ? 1 : 0); +} + +/*! + * @brief Gets the Clock Monitor Enable1 Setting. + * + * This function gets the Clock Monitor Enable1 Setting. + * + * @return enabled True if Clock Monitor Enable1 is enabled + */ +static inline bool clock_get_cme1(void) +{ + return BR_MCG_C8_CME1; +} + +/*! + * @brief Gets the RTC Loss of Clock Status. + * + * This function gets the RTC Loss of Clock Status. This bit indicates when a loss + * of clock has occurred. This bit is cleared by writing a logic 1 to it when set. + * + * @return status RTC Loss of Clock Status + * - 0: Loss of RTC has not occurred + * - 1: Loss of RTC has occurred + */ +static inline mcg_locs1_status_t clock_get_locs1(void) +{ + return (mcg_locs1_status_t)BR_MCG_C8_LOCS1; +} +#endif /* FSL_FEATURE_MCG_HAS_RTC_32K */ + +#if FSL_FEATURE_MCG_USE_PLLREFSEL +/*! + * @brief Sets the OSC1 Loss of Clock Reset Enable Setting. + * + * This function determines whether an interrupt or reset request is made following + * a loss of OSC1 external reference clock. The LOCRE2 only has an affect when + * LOCS2 is set. + * + * @params enable OSC1 Loss of Clock Reset Enable Setting + * - true: Reset request is generated on a loss of OSC1 external + * reference clock.. + * - false: Interrupt request is generated on a loss of OSC1 external + * reference clock. + */ +static inline void clock_set_locre2(bool enable) +{ + BW_MCG_C10_LOCRE2(enable ? 1 : 0); +} + +/*! + * @brief Gets the OSC1 Loss of the Clock Reset Enable Setting. + * + * This function gets the OSC1 Loss of Clock Reset Enable Setting. + * + * @return enabled True if OSC1 Loss of Clock Reset is enabled. + */ +static inline bool clock_get_locre2(void) +{ + return BR_MCG_C10_LOCRE2; +} + +/*! + * @brief Sets the Frequency Range1 Select Setting. + * + * This function selects the frequency range for the OSC1 crystal oscillator + * or an external clock source. See the Oscillator chapter for more details and + * the device data sheet for the frequency ranges used. + * + * @params setting Frequency Range1 Select Setting + * - 00: Low frequency range selected for the crystal oscillator. + * - 01: High frequency range selected for the crystal oscillator. + * - 1X: Very high frequency range selected for the crystal oscillator. + */ +static inline void clock_set_range1(mcg_freq_range_select_t setting) +{ + BW_MCG_C10_RANGE1(setting); +} + +/*! + * @brief Gets the Frequency Range1 Select Setting. + * + * This function gets the Frequency Range1 Select Setting. + * + * @return setting Frequency Range1 Select Setting + */ +static inline mcg_freq_range_select_t clock_get_range1(void) +{ + return (mcg_freq_range_select_t)BR_MCG_C10_RANGE1; +} + +/*! + * @brief Sets the High Gain Oscillator1 Select Setting. + * + * This function controls the OSC1 crystal oscillator mode of operation. + * See the Oscillator chapter for more details. + * + * @params setting High Gain Oscillator1 Select Setting + * - 0: Configure crystal oscillator for low-power operation. + * - 1: Configure crystal oscillator for high-gain operation. + */ +static inline void clock_set_hgo1(mcg_hgo_select_t setting) +{ + BW_MCG_C10_HGO1(setting); +} + +/*! + * @brief Gets the High Gain Oscillator1 Select Setting. + * + * This function gets the High Gain Oscillator1 Select Setting. + * + * @return setting High Gain Oscillator1 Select Setting + */ +static inline mcg_hgo_select_t clock_get_hgo1(void) +{ + return (mcg_hgo_select_t)BR_MCG_C10_HGO1; +} + +/*! + * @brief Sets the External Reference Select Setting. + * + * This function selects the source for the OSC1 external reference clock. + * See the Oscillator chapter for more details. + * + * @params setting External Reference Select Setting + * - 0: External reference clock requested. + * - 1: Oscillator requested. + */ +static inline void clock_set_erefs1(mcg_eref_clock_select_t setting) +{ + BW_MCG_C10_EREFS1(setting); +} + +/*! + * @brief Gets the External Reference Select Setting. + * + * This function gets the External Reference Select Setting. + * + * @return setting External Reference Select Setting + */ +static inline mcg_eref_clock_select_t clock_get_erefs1(void) +{ + return (mcg_eref_clock_select_t)BR_MCG_C10_EREFS1; +} + +/*! + * @brief Sets the PLL1 External Reference Select Setting. + * + * This function selects the PLL1 external reference clock source. + * + * @params setting PLL1 External Reference Select Setting + * - 0: Selects OSC0 clock source as its external reference clock. + * - 1: Selects OSC1 clock source as its external reference clock. + */ +static inline void clock_set_pllrefsel1(mcg_pll_eref_clock_select_t setting) +{ + BW_MCG_C11_PLLREFSEL1(setting); +} + +/*! + * @brief Gets the PLL1 External Reference Select Setting. + * + * This function gets the PLL1 External Reference Select Setting. + * + * @return setting PLL1 External Reference Select Setting + */ +static inline mcg_pll_eref_clock_select_t clock_get_pllrefsel1(void) +{ + return (mcg_pll_eref_clock_select_t)BR_MCG_C11_PLLREFSEL1; +} + +/*! + * @brief Sets the PLL1 Clock Enable Setting. + * + * This function enables/disables the PLL1 independent of PLLS and enables the + * PLL clocks for use as MCGPLL1CLK, MCGPLL1CLK2X, and MCGDDRCLK2X. (PRDIV1 needs + * to be programmed to the correct divider to generate a PLL1 reference clock in a + * valid reference range prior to setting the PLLCLKEN1 bit.) Setting PLLCLKEN1 + * enables the PLL1 selected external oscillator if not already enabled. + * Whenever the PLL1 is enabled with the PLLCLKEN1 bit, and the + * external oscillator is used as the reference clock, the OSCINIT1 bit should + * be checked to make sure it is set. + * + * @params enable PLL1 Clock Enable Setting + * - true: MCGPLL1CLK, MCGPLL1CLK2X, and MCGDDRCLK2X are active unless + * MCG is in a bypass mode with LP=1 (BLPI or BLPE). + * - false: MCGPLL1CLK, MCGPLL1CLK2X, and MCGDDRCLK2X are inactive. + */ +static inline void clock_set_pllclken1(bool enable) +{ + BW_MCG_C11_PLLCLKEN1(enable ? 1 : 0); +} + +/*! + * @brief Gets the PLL1 Clock Enable Setting. + * + * This function gets the PLL1 Clock Enable Setting. + * + * @return enabled True if the PLL1 Clock is enabled. + */ +static inline bool clock_get_pllclken1(void) +{ + return BR_MCG_C11_PLLCLKEN1; +} + +/*! + * @brief Sets the PLL1 Stop Enable Setting. + * + * This function enables/disables the PLL1 Clock during the Normal Stop (In Low + * Power Stop modes, the PLL1 clock gets disabled even if PLLSTEN1=1. In all other + * power modes, PLLSTEN1 bit has no affect and does not enable the PLL1 Clock to + * run if it is written to 1. + * + * @params enable PLL1 Stop Enable Setting + * - true: PLL1 and its clocks (MCGPLL1CLK, MCGPLL1CLK2X, and + * MCGDDRCLK2X) are enabled if system is in Normal Stop mode. + * - false: PLL1 clocks (MCGPLL1CLK, MCGPLL1CLK2X, and MCGDDRCLK2X) + * are disabled in any of the Stop modes. + */ +static inline void clock_set_pllsten1(bool enable) +{ + BW_MCG_C11_PLLSTEN1(enable ? 1 : 0); +} + +/*! + * @brief Gets the PLL1 Stop Enable Setting. + * + * This function gets the PLL1 Stop Enable Setting. + * + * @return enabled True if PLL1 Stop is enabled. + */ +static inline bool clock_get_pllsten1(void) +{ + return BR_MCG_C11_PLLSTEN1; +} + +/*! + * @brief Sets the PLL Clock Select Setting. + * + * This function controls whether the PLL0 or PLL1 output is selected as the + * MCG source when CLKS are programmed in PLL Engaged External (PEE) mode + * (CLKS[1:0]=00 and IREFS=0 and PLLS=1). + * + * @params setting PLL Clock Select Setting + * - 0: PLL0 output clock is selected. + * - 1: PLL1 output clock is selected. + */ +static inline void clock_set_pllcs(mcg_pllcs_select_t setting) +{ + BW_MCG_C11_PLLCS(setting); +} + +/*! + * @brief Gets the PLL Clock Select Setting. + * + * This function gets the PLL Clock Select Setting. + * + * @return setting PLL Clock Select Setting + */ +static inline mcg_pllcs_select_t clock_get_pllcs(void) +{ + return (mcg_pllcs_select_t)BR_MCG_C11_PLLCS; +} + +/*! + * @brief Sets the PLL1 External Reference Divider Setting. + * + * This function selects the amount to divide down the external reference + * clock selected by REFSEL2 for PLL1. The resulting frequency must be in a valid + * reference range. After the PLL1 is enabled (by setting either PLLCLKEN1 or PLLS), + * the PRDIV1 value must not be changed when LOCK1 is zero. + * + * @params setting PLL1 External Reference Divider Setting + */ +static inline void clock_set_prdiv1(uint8_t setting) +{ + BW_MCG_C11_PRDIV1(setting); +} + +/*! + * @brief Gets the PLL1 External Reference Divider Setting. + * + * This function gets the PLL1 External Reference Divider Setting. + * + * @return setting PLL1 External Reference Divider Setting + */ +static inline uint8_t clock_get_prdiv1(void) +{ + return BR_MCG_C11_PRDIV1; +} + +/*! + * @brief Sets the PLL1 Loss of Lock Interrupt Enable Setting. + * + * This function determines whether an interrupt request is made following a + * loss of lock indication for PLL1. This bit only has an affect when LOLS1 is set. + * + * @params enable PLL1 Loss of Lock Interrupt Enable Setting + * - true: Generate an interrupt request on loss of lock on PLL1. + * - false: No interrupt request is generated on loss of lock on PLL1. + */ +static inline void clock_set_lolie1(bool enable) +{ + BW_MCG_C12_LOLIE1(enable ? 1 : 0); +} + +/*! + * @brief Gets the PLL1 Loss of Lock Interrupt Enable Setting. + * + * This function gets the PLL1 Loss of Lock Interrupt Enable Setting. + * + * @return enabled true if PLL1 Loss of Lock Interrupt is enabled. + */ +static inline bool clock_get_lolie1(void) +{ + return BR_MCG_C12_LOLIE1; +} + +/*! + * @brief Sets the Clock Monitor Enable2 Setting + * + * This function enables/disables the loss of the clock monitor for the OSC1 external + * reference clock. LOCRE2 determines whether a reset or interrupt request is generated + * following a loss of OSC1 external reference clock. The CME2 bit should only be set + * to a logic 1 when the MCG is in an operational mode that uses the external clock + * (PEE or PBE) . Whenever the CME2 bit is set to a logic 1, the value of the RANGE1 + * bits in the C10 register should not be changed. CME2 bit should be set to a logic 0 + * before the MCG enters any Stop mode. Otherwise, a reset request may occur while in + * Stop mode. + * + * @params enable Clock Monitor Enable2 Setting + * - true: Generate a reset request on loss of external clock on OSC1. + * - false: External clock monitor for OSC1 is disabled. + */ +static inline void clock_set_cme2(bool enable) +{ + BW_MCG_C12_CME2(enable ? 1 : 0); +} + +/*! + * @brief Gets the Clock Monitor Enable2 Setting. + * + * This function gets the Clock Monitor Enable2 Setting. + * + * @return enabled True if Clock Monitor Enable2 is enabled. + */ +static inline bool clock_get_cme2(void) +{ + return BR_MCG_C12_CME2; +} + +/*! + * @brief Sets the VCO1 Divider Setting. + * + * This function selects the amount to divide the VCO output of the PLL1. + * The VDIV1 bits establishes the multiplication factor (M) applied to the reference + * clock frequency. After the PLL1 is enabled (by setting either PLLCLKEN1 or + * PLLS), the VDIV1 value must not be changed when LOCK1 is zero. + * + * @params setting VCO1 Divider Setting + */ +static inline void clock_set_vdiv1(uint8_t setting) +{ + BW_MCG_C12_VDIV1(setting); +} + +/*! + * @brief Gets the VCO1 Divider Setting. + * + * This function gets the VCO1 Divider Setting. + * + * @return setting VCO1 Divider Setting + */ +static inline uint8_t clock_get_vdiv1(void) +{ + return BR_MCG_C12_VDIV1; +} + +/*! + * @brief Gets the Loss of the Lock2 Status. + * + * This function gets the Loss of the Lock2 Status. This bit is a sticky bit indicating + * the lock status for the PLL1. LOLS1 is set if after acquiring lock, the PLL1 + * output frequency has fallen outside the lock exit frequency tolerance, D unl. + * LOLIE1 determines whether an interrupt request is made when LOLS1 is set. This + * bit is cleared by reset or by writing a logic 1 to it when set. Writing a logic 0 + * to this bit has no effect. + * + * @return status Loss of Lock2 Status + * - 0: PLL1 has not lost lock since LOLS1 was last cleared. + * - 1: PLL1 has lost lock since LOLS1 was last cleared. + */ +static inline mcg_lols_status_t clock_get_lols1(void) +{ + return (mcg_lols_status_t)BR_MCG_S2_LOLS1; +} + +/*! + * @brief Gets the Lock1 Status. + * + * This function gets the Lock1 Status. This bit indicates whether PLL1 has + * acquired the lock. PLL1 Lock detection is disabled when not operating in either + * PBE or PEE mode unless the PLLCLKEN1=1 and the the MCG is not configured in the BLPI or the + * BLPE mode. While the PLL1 clock is locking to the desired frequency, MCGPLL1CLK, + * MCGPLL1CLK2X, and MCGDDRCLK2X are gated off until the LOCK1 bit gets + * asserted. If the lock status bit is set, changing the value of the PRDIV1[2:0] + * bits in the C8 register or the VDIV2[4:0] bits in the C9 register causes the + * lock status bit to clear and stay cleared until the PLL1 has reacquired lock. + * Loss of PLL1 reference clock will also causes the LOCK1 bit to clear until the PLL1 + * has reacquired lock. Entry into the LLS, VLPS, or a regular Stop with the PLLSTEN1=0 also + * causes the lock status bit to clear and stay cleared until the Stop mode is exited + * and the PLL1 has reacquired the lock. Any time the PLL1 is enabled and the LOCK1 bit + * is cleared, the MCGPLL1CLK, MCGPLL1CLK2X, and MCGDDRCLK2X are gated off + * until the LOCK1 bit is asserted again. + * + * @return status Lock1 Status + * - 0: PLL1 is currently unlocked. + * - 1: PLL1 is currently locked. + */ +static inline mcg_lock_status_t clock_get_lock1(void) +{ + return (mcg_lock_status_t)BR_MCG_S2_LOCK1; +} + +/*! + * @brief Gets the PLL Clock Select Status. + * + * This function gets the PLL Clock Select Status. The PLLCST indicates the PLL + * clock selected by PLLCS. The PLLCST bit is not updated immediately after a + * write to the PLLCS bit due internal synchronization between clock domains. + * + * @return status PLL Clock Select Status + * - 0: Source of PLLCS is PLL0 clock. + * - 1: Source of PLLCS is PLL1 clock. + */ +static inline mcg_pllcs_select_t clock_get_pllcst(void) +{ + return (mcg_pllcs_select_t)BR_MCG_S2_PLLCST; +} + +/*! + * @brief Gets the OSC1 Initialization Status. + * + * This function gets the OSC1 Initialization Status. This bit is set after the + * initialization cycles of the 2nd crystal oscillator clock have completed. See + * the Oscillator block guide for more details. + * + * @return status OSC1 Initialization Status + */ +static inline uint8_t clock_get_oscinit1(void) +{ + return BR_MCG_S2_OSCINIT1; +} + +/*! + * @brief Gets the OSC1 Loss of Clock Status. + * + * This function gets the OSC1 Loss of Clock Status. This bit indicates when a loss + * of the OSC1 external reference clock has occurred. LOCRE2 determines if a reset or + * interrupt is generated when LOCS2 is set. This bit is cleared by writing a + * logic 1 to it when set. + * + * @return status OSC1 Loss of Clock Status + * - 0: No loss of OSC1 external reference clock has occurred. + * - 1: Loss of OSC1 external reference clock has occurred. + */ +static inline mcg_locs2_status_t clock_get_locs2(void) +{ + return (mcg_locs2_status_t)BR_MCG_S2_LOCS2; +} +#endif /* FSL_FEATURE_MCG_USE_PLLREFSEL */ + +/*@}*/ + +#if defined(__cplusplus) +} +#endif /* __cplusplus*/ + +/*! @}*/ + +#endif /* __FSL_MCG_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/osc/fsl_osc_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_OSC_FEATURES_H__ +#define __FSL_OSC_FEATURES_H__ + +#if (defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || \ + defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || \ + defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4)) + #define FSL_FEATURE_OSC_HAS_OSC1 (0) + #define FSL_FEATURE_OSC_HAS_OSC0 (1) + #define FSL_FEATURE_OSC_HAS_OSC (0) + #define FSL_FEATURE_OSC_COUNT (1) +#elif (defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15)) + #define FSL_FEATURE_OSC_HAS_OSC1 (1) + #define FSL_FEATURE_OSC_HAS_OSC0 (1) + #define FSL_FEATURE_OSC_HAS_OSC (0) + #define FSL_FEATURE_OSC_COUNT (2) +#elif (defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK63FN1M0VMD12WS) || \ + defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12)) + #define FSL_FEATURE_OSC_HAS_OSC1 (0) + #define FSL_FEATURE_OSC_HAS_OSC0 (0) + #define FSL_FEATURE_OSC_HAS_OSC (1) + #define FSL_FEATURE_OSC_COUNT (1) +#elif (defined(CPU_MK22FN512VMC12) || defined(CPU_MK22FN512VDC12)) + #define FSL_FEATURE_OSC_HAS_OSC1 (0) + #define FSL_FEATURE_OSC_HAS_OSC0 (0) + #define FSL_FEATURE_OSC_HAS_OSC (1) + #define FSL_FEATURE_OSC_COUNT (1) +#else + #error "No valid CPU defined" +#endif + +#endif /* __FSL_OSC_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/osc/fsl_osc_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_OSC_HAL_H__) +#define __FSL_OSC_HAL_H__ + +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> +#include "fsl_device_registers.h" +#include "fsl_osc_features.h" + +/*! @addtogroup osc_hal*/ +/*! @{*/ + +/*! @file fsl_osc_hal.h */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief Oscillator instance.*/ +typedef enum _osc_instance { + kOsc0 = 0, /*!< Oscillator 0*/ +#if FSL_FEATURE_OSC_HAS_OSC1 + kOsc1 = 1 /*!< Oscillator 1*/ +#endif +} osc_instance_t; + +/*! @brief Oscillator capacitor load configurations.*/ +typedef enum _osc_capacitor_config { + kOscCapacitor2p = OSC_CR_SC2P_MASK, /*!< 2 pF capacitor load */ + kOscCapacitor4p = OSC_CR_SC4P_MASK, /*!< 4 pF capacitor load */ + kOscCapacitor8p = OSC_CR_SC8P_MASK, /*!< 8 pF capacitor load */ + kOscCapacitor16p = OSC_CR_SC16P_MASK /*!< 16 pF capacitor load */ +} osc_capacitor_config_t; + +/*! @brief Oscillator capacitor load configurations mask*/ +#define kOscCapacitorMask (OSC_CR_SC2P_MASK | OSC_CR_SC4P_MASK | OSC_CR_SC8P_MASK | OSC_CR_SC16P_MASK) + + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif /* __cplusplus*/ + +/*! @name oscillator control APIs*/ +/*@{*/ + + +/*! + * @brief Enables the external reference clock for oscillator + * + * This function enables the external reference clock output + * for the oscillator - that is the OSCERCLK. This clock is used + * by many peripherals. It should be enabled at an early system initialization + * stage to ensure the peripherals could select it and use it. + * + * @param instance Oscillator instance + */ +void osc_hal_enable_external_reference_clock(osc_instance_t instance); + +/*! + * @brief Disables the external reference clock for oscillator. + * + * This function disables the external reference clock output + * for oscillator - that is the OSCERCLK. This clock is used + * by many peripherals. It should be enabled at an early system initialization + * stage to ensure the peripherals could select and use it. + * + * @param instance Oscillator instance + */ +void osc_hal_disable_external_reference_clock(osc_instance_t instance); + +/*! + * @brief Enables the external reference clock in stop mode. + * + * This function enables the external reference clock (OSCERCLK) when + * MCU enters Stop mode. + * + * @param instance Oscillator instance + */ +void osc_hal_enable_external_reference_clock_in_stop_mode(osc_instance_t instance); + +/*! + * @brief Disables the external reference clock in stop mode. + * + * This function disables the external reference clock (OSCERCLK) when + * MCU enters Stop mode. + * + * @param instance Oscillator instance + */ +void osc_hal_disable_external_reference_clock_in_stop_mode(osc_instance_t instance); + +/*! + * @brief Enables the capacitor configuration for oscillator. + * + * This function enables the specified capacitors configuration for the + * oscillator. This should be done in the early system level initialization function call + * based on system configuration. + * + * @param instance Oscillator instance + * @param capacitorConfig Capacitor configurations. Combination of OSC_CR_SCxP_MASK + */ +void osc_hal_enable_capacitor_config(osc_instance_t instance, uint32_t capacitorConfigs); + +/*! + * @brief Disables the capacitor configuration for specific oscillator. + * + * This function enables the specified capacitors configuration for the + * oscillator. + * + * @param instance Oscillator instance + * @param capacitorConfig Capacitor configurations. Combination of OSC_CR_SCxP_MASK + */ +void osc_hal_disable_capacitor_config(osc_instance_t instance, uint32_t capacitorConfigs); + +/*@}*/ + +#if defined(__cplusplus) +} +#endif /* __cplusplus*/ + +/*! @}*/ + +#endif /* __FSL_OSC_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/pit/fsl_pit_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_PIT_FEATURES_H__) +#define __FSL_PIT_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || \ + defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || \ + defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || \ + defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) || defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || \ + defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) + /* @brief Number of channels (related to number of registers LDVALn, CVALn, TCTRLn, TFLGn).*/ + #define FSL_FEATURE_PIT_TIMER_COUNT (4) + /* @brief Has lifetime timer (related to existence of registers LTMR64L and LTMR64H).*/ + #define FSL_FEATURE_PIT_HAS_LIFETIME_TIMER (0) + /* @brief Has chain mode (related to existence of register bit field TCTRLn[CHN]).*/ + #define FSL_FEATURE_PIT_HAS_CHAIN_MODE (0) +#elif defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || \ + defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || defined(CPU_MK22FN512VLL12) || defined(CPU_MK24FN1M0VDC12) || \ + defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK64FN1M0VDC12) || \ + defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VMD12) || \ + defined(CPU_MK64FX512VMD12) || defined(CPU_MKV31F256VLH12) || defined(CPU_MKV31F256VLL12) || defined(CPU_MKV31FN512VLH12) || \ + defined(CPU_MKV31F512VLL12) + /* @brief Number of channels (related to number of registers LDVALn, CVALn, TCTRLn, TFLGn).*/ + #define FSL_FEATURE_PIT_TIMER_COUNT (4) + /* @brief Has lifetime timer (related to existence of registers LTMR64L and LTMR64H).*/ + #define FSL_FEATURE_PIT_HAS_LIFETIME_TIMER (0) + /* @brief Has chain mode (related to existence of register bit field TCTRLn[CHN]).*/ + #define FSL_FEATURE_PIT_HAS_CHAIN_MODE (1) +#elif defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || defined(CPU_MK65FX1M0VMI18) || \ + defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || defined(CPU_MK66FX1M0VMD18) + /* @brief Number of channels (related to number of registers LDVALn, CVALn, TCTRLn, TFLGn).*/ + #define FSL_FEATURE_PIT_TIMER_COUNT (4) + /* @brief Has lifetime timer (related to existence of registers LTMR64L and LTMR64H).*/ + #define FSL_FEATURE_PIT_HAS_LIFETIME_TIMER (1) + /* @brief Has chain mode (related to existence of register bit field TCTRLn[CHN]).*/ + #define FSL_FEATURE_PIT_HAS_CHAIN_MODE (1) +#elif defined(CPU_MKL05Z8VFK4) || defined(CPU_MKL05Z16VFK4) || defined(CPU_MKL05Z32VFK4) || defined(CPU_MKL05Z8VLC4) || \ + defined(CPU_MKL05Z16VLC4) || defined(CPU_MKL05Z32VLC4) || defined(CPU_MKL05Z8VFM4) || defined(CPU_MKL05Z16VFM4) || \ + defined(CPU_MKL05Z32VFM4) || defined(CPU_MKL05Z16VLF4) || defined(CPU_MKL05Z32VLF4) || defined(CPU_MKL25Z32VFM4) || \ + defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || \ + defined(CPU_MKL25Z128VFT4) || defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4) || defined(CPU_MKL46Z128VLH4) || \ + defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || defined(CPU_MKL46Z256VLL4) || defined(CPU_MKL46Z128VMC4) || \ + defined(CPU_MKL46Z256VMC4) + /* @brief Number of channels (related to number of registers LDVALn, CVALn, TCTRLn, TFLGn).*/ + #define FSL_FEATURE_PIT_TIMER_COUNT (2) + /* @brief Has lifetime timer (related to existence of registers LTMR64L and LTMR64H).*/ + #define FSL_FEATURE_PIT_HAS_LIFETIME_TIMER (1) + /* @brief Has chain mode (related to existence of register bit field TCTRLn[CHN]).*/ + #define FSL_FEATURE_PIT_HAS_CHAIN_MODE (1) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_PIT_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/pit/fsl_pit_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_PIT_HAL_H__ +#define __FSL_PIT_HAL_H__ + +#include <assert.h> +#include <stdint.h> +#include <stdbool.h> +#include "fsl_pit_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup pit_hal + * @{ + */ + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @name Initialization + * @{ + */ + +/*! + * @brief Enables the PIT module. + * + * This function enables the PIT timer clock (Note: this function does not un-gate + * the system clock gating control). It should be called before any other timer + * related setup. + */ +static inline void pit_hal_enable(void) +{ + BW_PIT_MCR_MDIS(0U); +} + +/*! + * @brief Disables the PIT module. + * + * This function disables all PIT timer clocks(Note: it does not affect the + * SIM clock gating control). + */ +static inline void pit_hal_disable(void) +{ + BW_PIT_MCR_MDIS(1U); +} + +/*! + * @brief Configures the timers to continue running or stop in debug mode. + * + * In debug mode, the timers may or may not be frozen, based on the configuration of + * this function. This is intended to aid software development, allowing the developer + * to halt the processor, investigate the current state of the system (for example, + * the timer values), and continue the operation. + * + * @param timerRun Timers run or stop in debug mode. + * - true: Timers continue to run in debug mode. + * - false: Timers stop in debug mode. + */ +static inline void pit_hal_configure_timer_run_in_debug(bool timerRun) +{ + BW_PIT_MCR_FRZ(!timerRun); +} + +#if FSL_FEATURE_PIT_HAS_CHAIN_MODE +/*! + * @brief Enables or disables the timer chain with the previous timer. + * + * When a timer has a chain mode enabled, it only counts after the previous + * timer has expired. If the timer n-1 has counted down to 0, counter n + * decrements the value by one. This allows the developers to chain timers together + * and form a longer timer. The first timer (timer 0) cannot be chained to any + * other timer. + * + * @param timer Timer channel number which is chained with the previous timer. + * @param enable Enable or disable chain. + * - true: Current timer is chained with the previous timer. + * - false: Timer doesn't chain with other timers. + */ +static inline void pit_hal_configure_timer_chain(uint32_t timer, bool enable) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + BW_PIT_TCTRLn_CHN(timer, enable); +} + +#endif /* FSL_FEATURE_PIT_HAS_CHAIN_MODE*/ + +/* @} */ + +/*! + * @name Timer Start and Stop + * @{ + */ + +/*! + * @brief Starts the timer counting. + * + * After calling this function, timers load the start value as specified by the function + * pit_hal_set_timer_period_count(uint32_t timer, uint32_t count), count down to + * 0, and load the respective start value again. Each time a timer reaches 0, + * it generates a trigger pulse and sets the time-out interrupt flag. + * + * @param timer Timer channel number + */ +static inline void pit_hal_timer_start(uint32_t timer) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + BW_PIT_TCTRLn_TEN(timer, 1U); +} + +/*! + * @brief Stops the timer from counting. + * + * This function stops every timer from counting. Timers reload their periods + * respectively after they call the pit_hal_timer_start the next time. + * + * @param timer Timer channel number + */ +static inline void pit_hal_timer_stop(uint32_t timer) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + BW_PIT_TCTRLn_TEN(timer, 0U); +} + +/*! + * @brief Checks to see whether the current timer is started or not. + * + * @param timer Timer channel number + * @return Current timer running status + * -true: Current timer is running. + * -false: Current timer has stopped. + */ +static inline bool pit_hal_is_timer_started(uint32_t timer) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + return BR_PIT_TCTRLn_TEN(timer); +} + +/* @} */ + +/*! + * @name Timer Period + * @{ + */ + +/*! + * @brief Sets the timer period in units of count. + * + * Timers begin counting from the value set by this function. + * The counter period of a running timer can be modified by first stopping + * the timer, setting a new load value, and starting the timer again. If + * timers are not restarted, the new value is loaded after the next trigger + * event. + * + * @param timer Timer channel number + * @param count Timer period in units of count + */ +static inline void pit_hal_set_timer_period_count(uint32_t timer, uint32_t count) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + HW_PIT_LDVALn_WR(timer, count); +} + +/*! + * @brief Returns the current timer period in units of count. + * + * @param timer Timer channel number + * @return Timer period in units of count + */ +static inline uint32_t pit_hal_read_timer_period_count(uint32_t timer) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + return HW_PIT_LDVALn_RD(timer); +} + +/*! + * @brief Reads the current timer counting value. + * + * This function returns the real-time timer counting value, in a range from 0 to a + * timer period. + * + * @param timer Timer channel number + * @return Current timer counting value + */ +static inline uint32_t pit_hal_read_timer_count(uint32_t timer) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + return HW_PIT_CVALn_RD(timer); +} + +#if FSL_FEATURE_PIT_HAS_LIFETIME_TIMER +/*! + * @brief Reads the current lifetime counter value. + * + * The lifetime timer is a 64-bit timer which chains timer 0 and timer 1 together. + * Timer 0 and 1 are chained by calling the pit_hal_configure_timer_chain + * before using this timer. The period of lifetime timer is equal to the "period of + * timer 0 * period of timer 1". For the 64-bit value, the higher 32-bit has + * the value of timer 1, and the lower 32-bit has the value of timer 0. + * + * @return Current lifetime timer value + */ +uint64_t pit_hal_read_lifetime_timer_count(void); +#endif /*FSL_FEATURE_PIT_HAS_LIFETIME_TIMER*/ + +/* @} */ + +/*! + * @name Interrupt + * @{ + */ + +/*! + * @brief Enables or disables the timer interrupt. + * + * If enabled, an interrupt happens when a timeout event occurs + * (Note: NVIC should be called to enable pit interrupt in system level). + * + * @param timer Timer channel number + * @param enable Enable or disable interrupt. + * - true: Generate interrupt when timer counts to 0. + * - false: No interrupt is generated. + */ +static inline void pit_hal_configure_interrupt(uint32_t timer, bool enable) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + BW_PIT_TCTRLn_TIE(timer, enable); +} + +/*! + * @brief Checks whether the timer interrupt is enabled or not. + * + * @param timer Timer channel number + * @return Status of enabled or disabled interrupt + * - true: Interrupt is enabled. + * - false: Interrupt is disabled. + */ +static inline bool pit_hal_is_interrupt_enabled(uint32_t timer) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + return BR_PIT_TCTRLn_TIE(timer); +} + +/*! + * @brief Clears the timer interrupt flag. + * + * This function clears the timer interrupt flag after a timeout event + * occurs. + * + * @param timer Timer channel number + */ +static inline void pit_hal_clear_interrupt_flag(uint32_t timer) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + /* Write 1 will clear the flag. */ + HW_PIT_TFLGn_WR(timer, 1U); +} + +/*! + * @brief Reads the current timer timeout flag. + * + * Every time the timer counts to 0, this flag is set. + * + * @param timer Timer channel number + * @return Current status of the timeout flag + * - true: Timeout has occurred. + * - false: Timeout has not yet occurred. + */ +static inline bool pit_hal_is_timeout_occurred(uint32_t timer) +{ + assert(timer < FSL_FEATURE_PIT_TIMER_COUNT); + return HW_PIT_TFLGn_RD(timer); +} + +/* @} */ + +#if defined(__cplusplus) +} +#endif + +/*! @}*/ + +#endif /* __FSL_PIT_HAL_H__*/ +/******************************************************************************* +* EOF +*******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/pmc/fsl_pmc_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_PMC_FEATURES_H__ +#define __FSL_PMC_FEATURES_H__ + +#if (defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || \ + defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || \ + defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4)) + #define FSL_FEATURE_SMC_HAS_BGEN (1) +#elif (defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15)) + #define FSL_FEATURE_SMC_HAS_BGEN (0) +#elif (defined(CPU_MK64FN1M0VMD12)) + #define FSL_FEATURE_SMC_HAS_BGEN (1) +#elif (defined(CPU_MK22FN512VMC12) || defined(CPU_MK22FN512VDC12)) + #define FSL_FEATURE_SMC_HAS_BGEN (1) +#else + #error "No valid CPU defined" +#endif + +#endif /* __FSL_PMC_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/pmc/fsl_pmc_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,376 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_PMC_HAL_H__) +#define __FSL_PMC_HAL_H__ + +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> +#include "fsl_pmc_features.h" + +/*! @addtogroup pmc_hal*/ +/*! @{*/ + +/*! @file fsl_pmc_hal.h */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief Low-Voltage Warning Voltage Select*/ +typedef enum _pmc_lvwv_select { + kPmcLvwvLowTrip, /*!< Low trip point selected (VLVW = VLVW1)*/ + kPmcLvwvMid1Trip, /*!< Mid 1 trip point selected (VLVW = VLVW2)*/ + kPmcLvwvMid2Trip, /*!< Mid 2 trip point selected (VLVW = VLVW3)*/ + kPmcLvwvHighTrip /*!< High trip point selected (VLVW = VLVW4)*/ +} pmc_lvwv_select_t; + +/*! @brief Low-Voltage Detect Voltage Select*/ +typedef enum _pmc_lvdv_select { + kPmcLvdvLowTrip, /*!< Low trip point selected (V LVD = V LVDL )*/ + kPmcLvdvHighTrip, /*!< High trip point selected (V LVD = V LVDH )*/ +} pmc_lvdv_select_t; + + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif /* __cplusplus*/ + +/*! @name Power Management Controller Control APIs*/ +/*@{*/ + + +/*! + * @brief Low-Voltage Detect Interrupt Enable + * + * This function enables the interrupt for the low voltage detection. When + * enabled, if the LVDF (Low Voltage Detect Flag) is set, a hardware interrupt + * occurs. + * + */ +static inline void pmc_hal_enable_low_voltage_detect_interrupt(void) +{ + BW_PMC_LVDSC1_LVDIE(1); +} + +/*! + * @brief Low-Voltage Detect Interrupt Disable (use polling) + * + * This function disables the the interrupt for low voltage detection. When + * disabled, an application can only check the low voltage through polling the LVDF + * (Low Voltage Detect Flag). + * + */ +static inline void pmc_hal_disable_low_voltage_detect_interrupt(void) +{ + BW_PMC_LVDSC1_LVDIE(0); +} + +/*! + * @brief Low-Voltage Detect Hardware Reset Enable (write once) + * + * This function enables the hardware reset for the low voltage detection. + * When enabled, if the LVDF (Low Voltage Detect Flag) is set, a hardware reset + * occurs. This setting is a write-once-only; Additional writes are + * ignored. + * + */ +static inline void pmc_hal_enable_low_voltage_detect_reset(void) +{ + BW_PMC_LVDSC1_LVDRE(1); +} + +/*! + * @brief Low-Voltage Detect Hardware Reset Disable + * + * This function disables the the hardware reset for low voltage detection. + * When disabled, if the LVDF (Low Voltage Detect Flag) is set, a hardware reset + * does not occur. This setting is a write-once-only; Additional writes are + * ignored. + * + */ +static inline void pmc_hal_disable_low_voltage_detect_reset(void) +{ + BW_PMC_LVDSC1_LVDRE(0); +} + +/*! + * @brief Low-Voltage Detect Acknowledge + * + * This function acknowledges the low voltage detection errors (write 1 to + * clear LVDF). + * + */ +static inline void pmc_hal_low_voltage_detect_ack(void) +{ + BW_PMC_LVDSC1_LVDACK(1); +} + +/*! + * @brief Low-Voltage Detect Flag Read + * + * This function reads the current LVDF status. If it returns 1, low + * voltage event is detected. + * + * @return status Current low voltage detect flag + * - true: Low-Voltage detected + * - false: Low-Voltage not detected + */ +static inline bool pmc_hal_get_low_voltage_detect_flag(void) +{ + return BR_PMC_LVDSC1_LVDF; +} + +/*! + * @brief Sets the Low-Voltage Detect Voltage Select + * + * This function sets the low voltage detect voltage select. It sets + * the low voltage detect trip point voltage (Vlvd). An application can select + * either a low-trip or a high-trip point. See a chip reference manual for details. + * + * @param select Voltage select setting defined in pmc_lvdv_select_t + */ +static inline void pmc_hal_set_low_voltage_detect_voltage_select(pmc_lvdv_select_t select) +{ + BW_PMC_LVDSC1_LVDV(select); +} + +/*! + * @brief Gets the Low-Voltage Detect Voltage Select + * + * This function gets the low voltage detect voltage select. It gets + * the low voltage detect trip point voltage (Vlvd). An application can select + * either a low-trip or a high-trip point. See a chip reference manual for details. + * + * @return select Current voltage select setting + */ +static inline pmc_lvdv_select_t pmc_hal_get_low_voltage_detect_voltage_select(void) +{ + return (pmc_lvdv_select_t)BR_PMC_LVDSC1_LVDV; +} + + +/*! + * @brief Low-Voltage Warning Interrupt Enable + * + * This function enables the interrupt for the low voltage warning + * detection. When enabled, if the LVWF (Low Voltage Warning Flag) is set, + * a hardware interrupt occurs. + * + */ +static inline void pmc_hal_enable_low_voltage_warning_interrupt(void) +{ + BW_PMC_LVDSC2_LVWIE(1); +} + +/*! + * @brief Low-Voltage Warning Interrupt Disable (use polling) + * + * This function disables the interrupt for the low voltage warning + * detection. When disabled, if the LVWF (Low Voltage Warning Flag) is set, + * a hardware interrupt does not occur. + * + */ +static inline void pmc_hal_disable_low_voltage_warning_interrupt(void) +{ + BW_PMC_LVDSC2_LVWIE(0); +} + +/*! + * @brief Low-Voltage Warning Acknowledge + * + * This function acknowledges the low voltage warning errors (write 1 to + * clear LVWF). + * + */ +static inline void pmc_hal_low_voltage_warning_ack(void) +{ + BW_PMC_LVDSC2_LVWACK(1); +} + +/*! + * @brief Low-Voltage Warning Flag Read + * + * This function polls the current LVWF status. When 1 is returned, it + * indicates a low-voltage warning event. LVWF is set when V Supply transitions + * below the trip point or after reset and V Supply is already below the V LVW. + * + * @return status Current LVWF status + - true: Low-Voltage Warning Flag is set. + - false: the Low-Voltage Warning does not happen. + */ +static inline bool pmc_hal_get_low_voltage_warning_flag(void) +{ + return BR_PMC_LVDSC2_LVWF; +} + +/*! + * @brief Sets the Low-Voltage Warning Voltage Select. + * + * This function sets the low voltage warning voltage select. It sets + * the low voltage warning trip point voltage (Vlvw). An application can select + * either a low, mid1, mid2 and a high-trip point. See a chip reference manual for + * details and the pmc_lvwv_select_t for supported settings. + * + * @param select Low voltage warning select setting + */ +static inline void pmc_hal_set_low_voltage_warning_voltage_select(pmc_lvwv_select_t select) +{ + BW_PMC_LVDSC2_LVWV(select); +} + +/*! + * @brief Gets the Low-Voltage Warning Voltage Select. + * + * This function gets the low voltage warning voltage select. It gets + * the low voltage warning trip point voltage (Vlvw). See the pmc_lvwv_select_t + * for supported settings. + * + * @return select Current low voltage warning select setting + */ +static inline pmc_lvwv_select_t pmc_hal_get_low_voltage_warning_voltage_select(void) +{ + return (pmc_lvwv_select_t)BR_PMC_LVDSC2_LVWV; +} + +#if FSL_FEATURE_SMC_HAS_BGEN +/*! + * @brief Enables the Bandgap in VLPx Operation. + * + * This function enables the bandgap in lower power modes of operation (VLPx, + * LLS, and VLLSx). When on-chip peripherals require the bandgap voltage + * reference in low power modes of operation, set BGEN to continue to enable + * the bandgap operation. + * + */ +static inline void pmc_hal_enable_bandgap_in_low_power_mode(void) +{ + BW_PMC_REGSC_BGEN(1); +} + +/*! + * @brief Disables the Bandgap in the VLPx Operation. + * + * This function disables the bandgap in lower power modes of operation (VLPx, + * LLS, and VLLSx). When the bandgap voltage reference is not needed in low + * power modes, disable BGEN to avoid excess power consumption. + * + */ +static inline void pmc_hal_disable_bandgap_in_low_power_mode(void) +{ + BW_PMC_REGSC_BGEN(0); +} +#endif + +/*! + * @brief Enables the Bandgap Buffer. + * + * This function enables the Bandgap buffer. + * + */ +static inline void pmc_hal_enable_bandgap_buffer(void) +{ + BW_PMC_REGSC_BGBE(1); +} + +/*! + * @brief Disables the Bandgap Buffer. + * + * This function disables the Bandgap buffer. + * + */ +static inline void pmc_hal_disable_bandgap_buffer(void) +{ + BW_PMC_REGSC_BGBE(0); +} + +/*! + * @brief Gets the Acknowledge Isolation. + * + * This function reads the Acknowledge Isolation setting that indicates + * whether certain peripherals and the I/O pads are in a latched state as + * a result of having been in the VLLS mode. + * + * @return value ACK isolation + * 0 - Peripherals and I/O pads are in a normal run state. + * 1 - Certain peripherals and I/O pads are in an isolated and + * latched state. + */ +static inline uint8_t pmc_hal_get_ack_isolation(void) +{ + return BR_PMC_REGSC_ACKISO; +} + +/*! + * @brief Clears an Acknowledge Isolation. + * + * This function clears the ACK Isolation flag. Writing one to this setting + * when it is set releases the I/O pads and certain peripherals to their normal + * run mode state. + * + */ +static inline void pmc_hal_clear_ack_isolation(void) +{ + BW_PMC_REGSC_ACKISO(1); +} + +/*! + * @brief Gets the Regulator regulation status. + * + * This function returns the regulator to a run regulation status. It provides + * the current status of the internal voltage regulator. + * + * @return value Regulation status + * 0 - Regulator is in a stop regulation or in transition to/from it. + * 1 - Regulator is in a run regulation. + * + */ +static inline uint8_t pmc_hal_get_regulator_status(void) +{ + return BR_PMC_REGSC_REGONS; +} + +/*@}*/ + +#if defined(__cplusplus) +} +#endif /* __cplusplus*/ + +/*! @}*/ + +#endif /* __FSL_PMC_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/port/fsl_port_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,267 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_PORT_FEATURES_H__) +#define __FSL_PORT_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || \ + defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || \ + defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || \ + defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) || defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || \ + defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || \ + defined(CPU_MK22FN512VLL12) || defined(CPU_MK24FN1M0VDC12) || defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || \ + defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VLQ12) || \ + defined(CPU_MK64FX512VMD12) || defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || \ + defined(CPU_MK65FX1M0VMI18) || defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || \ + defined(CPU_MK66FX1M0VMD18) || defined(CPU_MKV31F256VLH12) || defined(CPU_MKV31F256VLL12) || defined(CPU_MKV31FN512VLH12) || \ + defined(CPU_MKV31F512VLL12) + /* @brief Has control lock (register bit PCR[LK]).*/ + #define FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK (1) + /* @brief Has open drain control (register bit PCR[ODE]).*/ + #define FSL_FEATURE_PORT_HAS_OPEN_DRAIN (1) + /* @brief Has digital filter (registers DFER, DFCR and DFWR).*/ + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTER (1) + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTERn(x) \ + ((x) == 0 ? (0) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (0) : (-1)))))) + /* @brief Has DMA request (register bit field PCR[IRQC] values).*/ + #define FSL_FEATURE_PORT_HAS_DMA_REQUEST (1) + /* @brief Has pull resistor selection (register bit PCR[PS]).*/ + #define FSL_FEATURE_PORT_HAS_PULL_SELECTION (1) + /* @brief Has separate pull resistor enable registers (PUEL and PUEH).*/ + #define FSL_FEATURE_PORT_HAS_PULL_ENABLE_REGISTER (0) + /* @brief Has slew rate control (register bit PCR[SRE]).*/ + #define FSL_FEATURE_PORT_HAS_SLEW_RATE (1) + /* @brief Has passive filter (register bit field PCR[PFE]).*/ + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTER (1) + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTERn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (1) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (1) : (-1)))))) + /* @brief Has drive strength control (register bit PCR[DSE]).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH (1) + /* @brief Has separate drive strength register (HDRVE).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH_REGISTER (0) + /* @brief Has glitch filter (register IOFLT).*/ + #define FSL_FEATURE_PORT_HAS_GLITCH_FILTER (0) +#elif defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VMD12) + /* @brief Has control lock (register bit PCR[LK]).*/ + #define FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK (1) + /* @brief Has open drain control (register bit PCR[ODE]).*/ + #define FSL_FEATURE_PORT_HAS_OPEN_DRAIN (1) + /* @brief Has digital filter (registers DFER, DFCR and DFWR).*/ + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTER (1) + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTERn(x) \ + ((x) == 0 ? (0) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (0) : (-1)))))) + /* @brief Has DMA request (register bit field PCR[IRQC] values).*/ + #define FSL_FEATURE_PORT_HAS_DMA_REQUEST (1) + /* @brief Has pull resistor selection (register bit PCR[PS]).*/ + #define FSL_FEATURE_PORT_HAS_PULL_SELECTION (1) + /* @brief Has separate pull resistor enable registers (PUEL and PUEH).*/ + #define FSL_FEATURE_PORT_HAS_PULL_ENABLE_REGISTER (0) + /* @brief Has slew rate control (register bit PCR[SRE]).*/ + #define FSL_FEATURE_PORT_HAS_SLEW_RATE (1) + /* @brief Has passive filter (register bit field PCR[PFE]).*/ + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTER (1) + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTERn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (1) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (1) : (-1)))))) + /* @brief Has drive strength control (register bit PCR[DSE]).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH (1) + /* @brief Has separate drive strength register (HDRVE).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH_REGISTER (0) + /* @brief Has glitch filter (register IOFLT).*/ + #define FSL_FEATURE_PORT_HAS_GLITCH_FILTER (0) +#elif defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || \ + defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) + /* @brief Has control lock (register bit PCR[LK]).*/ + #define FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK (1) + /* @brief Has open drain control (register bit PCR[ODE]).*/ + #define FSL_FEATURE_PORT_HAS_OPEN_DRAIN (1) + /* @brief Has digital filter (registers DFER, DFCR and DFWR).*/ + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTER (1) + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTERn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (1) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (1) : \ + ((x) == 5 ? (1) : (-1))))))) + /* @brief Has DMA request (register bit field PCR[IRQC] values).*/ + #define FSL_FEATURE_PORT_HAS_DMA_REQUEST (1) + /* @brief Has pull resistor selection (register bit PCR[PS]).*/ + #define FSL_FEATURE_PORT_HAS_PULL_SELECTION (1) + /* @brief Has separate pull resistor enable registers (PUEL and PUEH).*/ + #define FSL_FEATURE_PORT_HAS_PULL_ENABLE_REGISTER (0) + /* @brief Has slew rate control (register bit PCR[SRE]).*/ + #define FSL_FEATURE_PORT_HAS_SLEW_RATE (1) + /* @brief Has passive filter (register bit field PCR[PFE]).*/ + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTER (1) + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTERn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (1) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (1) : \ + ((x) == 5 ? (1) : (-1))))))) + /* @brief Has drive strength control (register bit PCR[DSE]).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH (1) + /* @brief Has separate drive strength register (HDRVE).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH_REGISTER (0) + /* @brief Has glitch filter (register IOFLT).*/ + #define FSL_FEATURE_PORT_HAS_GLITCH_FILTER (0) +#elif defined(CPU_MKL05Z8VFK4) || defined(CPU_MKL05Z16VFK4) || defined(CPU_MKL05Z32VFK4) || defined(CPU_MKL05Z8VLC4) || \ + defined(CPU_MKL05Z16VLC4) || defined(CPU_MKL05Z32VLC4) || defined(CPU_MKL05Z8VFM4) || defined(CPU_MKL05Z16VFM4) || \ + defined(CPU_MKL05Z32VFM4) || defined(CPU_MKL05Z16VLF4) || defined(CPU_MKL05Z32VLF4) + /* @brief Has control lock (register bit PCR[LK]).*/ + #define FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK (0) + /* @brief Has open drain control (register bit PCR[ODE]).*/ + #define FSL_FEATURE_PORT_HAS_OPEN_DRAIN (0) + /* @brief Has digital filter (registers DFER, DFCR and DFWR).*/ + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTER (0) + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTERn(x) \ + ((x) == 0 ? (0) : \ + ((x) == 1 ? (0) : (-1))) + /* @brief Has DMA request (register bit field PCR[IRQC] values).*/ + #define FSL_FEATURE_PORT_HAS_DMA_REQUEST (1) + /* @brief Has pull resistor selection (register bit PCR[PS]).*/ + #define FSL_FEATURE_PORT_HAS_PULL_SELECTION (1) + /* @brief Has separate pull resistor enable registers (PUEL and PUEH).*/ + #define FSL_FEATURE_PORT_HAS_PULL_ENABLE_REGISTER (0) + /* @brief Has slew rate control (register bit PCR[SRE]).*/ + #define FSL_FEATURE_PORT_HAS_SLEW_RATE (1) + /* @brief Has passive filter (register bit field PCR[PFE]).*/ + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTER (1) + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTERn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (1) : (-1))) + /* @brief Has drive strength control (register bit PCR[DSE]).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH (1) + /* @brief Has separate drive strength register (HDRVE).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH_REGISTER (0) + /* @brief Has glitch filter (register IOFLT).*/ + #define FSL_FEATURE_PORT_HAS_GLITCH_FILTER (0) +#elif defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || defined(CPU_MKL25Z32VFT4) || \ + defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || \ + defined(CPU_MKL25Z128VLH4) || defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4) + /* @brief Has control lock (register bit PCR[LK]).*/ + #define FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK (0) + /* @brief Has open drain control (register bit PCR[ODE]).*/ + #define FSL_FEATURE_PORT_HAS_OPEN_DRAIN (0) + /* @brief Has digital filter (registers DFER, DFCR and DFWR).*/ + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTER (0) + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTERn(x) \ + ((x) == 0 ? (0) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : (-1)))))) + /* @brief Has DMA request (register bit field PCR[IRQC] values).*/ + #define FSL_FEATURE_PORT_HAS_DMA_REQUEST (1) + /* @brief Has pull resistor selection (register bit PCR[PS]).*/ + #define FSL_FEATURE_PORT_HAS_PULL_SELECTION (0) + /* @brief Has separate pull resistor enable registers (PUEL and PUEH).*/ + #define FSL_FEATURE_PORT_HAS_PULL_ENABLE_REGISTER (0) + /* @brief Has slew rate control (register bit PCR[SRE]).*/ + #define FSL_FEATURE_PORT_HAS_SLEW_RATE (1) + /* @brief Has passive filter (register bit field PCR[PFE]).*/ + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTER (1) + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTERn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : (-1)))))) + /* @brief Has drive strength control (register bit PCR[DSE]).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH (1) + /* @brief Has separate drive strength register (HDRVE).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH_REGISTER (0) + /* @brief Has glitch filter (register IOFLT).*/ + #define FSL_FEATURE_PORT_HAS_GLITCH_FILTER (0) +#elif defined(CPU_MKL46Z128VLH4) || defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || defined(CPU_MKL46Z256VLL4) || \ + defined(CPU_MKL46Z128VMC4) || defined(CPU_MKL46Z256VMC4) + /* @brief Has control lock (register bit PCR[LK]).*/ + #define FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK (0) + /* @brief Has open drain control (register bit PCR[ODE]).*/ + #define FSL_FEATURE_PORT_HAS_OPEN_DRAIN (0) + /* @brief Has digital filter (registers DFER, DFCR and DFWR).*/ + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTER (0) + #define FSL_FEATURE_PORT_HAS_DIGITAL_FILTERn(x) \ + ((x) == 0 ? (0) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : (-1)))))) + /* @brief Has DMA request (register bit field PCR[IRQC] values).*/ + #define FSL_FEATURE_PORT_HAS_DMA_REQUEST (1) + /* @brief Has pull resistor selection (register bit PCR[PS]).*/ + #define FSL_FEATURE_PORT_HAS_PULL_SELECTION (1) + /* @brief Has separate pull resistor enable registers (PUEL and PUEH).*/ + #define FSL_FEATURE_PORT_HAS_PULL_ENABLE_REGISTER (0) + /* @brief Has slew rate control (register bit PCR[SRE]).*/ + #define FSL_FEATURE_PORT_HAS_SLEW_RATE (1) + /* @brief Has passive filter (register bit field PCR[PFE]).*/ + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTER (1) + #define FSL_FEATURE_PORT_HAS_PASSIVE_FILTERn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : (-1)))))) + /* @brief Has drive strength control (register bit PCR[DSE]).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH (1) + /* @brief Has separate drive strength register (HDRVE).*/ + #define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH_REGISTER (0) + /* @brief Has glitch filter (register IOFLT).*/ + #define FSL_FEATURE_PORT_HAS_GLITCH_FILTER (0) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_PORT_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/port/fsl_port_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,469 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_PORT_HAL_H__ +#define __FSL_PORT_HAL_H__ + +#include <assert.h> +#include <stdint.h> +#include <stdbool.h> +#include "fsl_port_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup port_hal + * @{ + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief Internal resistor pull feature selection*/ +typedef enum _port_pull { + kPortPullDown = 0U, /*!< internal pull-down resistor is enabled.*/ + kPortPullUp = 1U /*!< internal pull-up resistor is enabled.*/ +} port_pull_t; + +/*! @brief Slew rate selection*/ +typedef enum _port_slew_rate { + kPortFastSlewRate = 0U, /*!< fast slew rate is configured.*/ + kPortSlowSlewRate = 1U /*!< slow slew rate is configured.*/ +} port_slew_rate_t; + +/*! @brief Configures the drive strength.*/ +typedef enum _port_drive_strength { + kPortLowDriveStrength = 0U, /*!< low drive strength is configured.*/ + kPortHighDriveStrength = 1U /*!< high drive strength is configured.*/ +} port_drive_strength_t; + +/*! @brief Pin mux selection*/ +typedef enum _port_mux { + kPortPinDisabled = 0U, /*!< corresponding pin is disabled as analog.*/ + kPortMuxAsGpio = 1U, /*!< corresponding pin is configured as GPIO.*/ + kPortMuxAlt2 = 2U, /*!< chip-specific*/ + kPortMuxAlt3 = 3U, /*!< chip-specific*/ + kPortMuxAlt4 = 4U, /*!< chip-specific*/ + kPortMuxAlt5 = 5U, /*!< chip-specific*/ + kPortMuxAlt6 = 6U, /*!< chip-specific*/ + kPortMuxAlt7 = 7U /*!< chip-specific*/ +} port_mux_t; + +/*! @brief Digital filter clock source selection*/ +#if FSL_FEATURE_PORT_HAS_DIGITAL_FILTER +typedef enum _port_digital_filter_clock_source { + kPortBusClock = 0U, /*!< Digital filters are clocked by the bus clock.*/ + kPortLPOClock = 1U /*!< Digital filters are clocked by the 1 kHz LPO clock.*/ +} port_digital_filter_clock_source_t; +#endif + +/*! @brief Configures the interrupt generation condition.*/ +typedef enum _port_interrupt_config { + kPortIntDisabled = 0x0U, /*!< Interrupt/DMA request is disabled.*/ + kPortDmaRisingEdge = 0x1U, /*!< DMA request on rising edge.*/ + kPortDmaFallingEdge = 0x2U, /*!< DMA request on falling edge.*/ + kPortDmaEitherEdge = 0x3U, /*!< DMA request on either edge.*/ + kPortIntLogicZero = 0x8U, /*!< Interrupt when logic zero. */ + kPortIntRisingEdge = 0x9U, /*!< Interrupt on rising edge. */ + kPortIntFallingEdge = 0xAU, /*!< Interrupt on falling edge. */ + kPortIntEitherEdge = 0xBU, /*!< Interrupt on either edge. */ + kPortIntLogicOne = 0xCU /*!< Interrupt when logic one. */ +} port_interrupt_config_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @name Configuration + * @{ + */ + +/*! + * @brief Selects the internal resistor as pull-down or pull-up. + * + * Pull configuration is valid in all digital pin muxing modes. + * + * @param instance port instance number. + * @param pin port pin number + * @param pullSelect internal resistor pull feature selection + * - kPortPullDown: internal pull-down resistor is enabled. + * - kPortPullUp : internal pull-up resistor is enabled. + */ +static inline void port_hal_pull_select(uint32_t instance, + uint32_t pin, + port_pull_t pullSelect) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_PS(instance, pin, pullSelect); +} + +/*! + * @brief Enables or disables the internal pull resistor. + * + * @param instance port instance number + * @param pin port pin number + * @param isPullEnabled internal pull resistor enable or disable + * - true : internal pull resistor is enabled. + * - false: internal pull resistor is disabled. + */ +static inline void port_hal_configure_pull(uint32_t instance, uint32_t pin, bool isPullEnabled) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_PE(instance, pin, isPullEnabled); +} + +/*! + * @brief Configures the fast/slow slew rate if the pin is used as a digital output. + * + * @param instance port instance number + * @param pin port pin number + * @param rateSelect slew rate selection + * - kPortFastSlewRate: fast slew rate is configured. + * - kPortSlowSlewRate: slow slew rate is configured. + */ +static inline void port_hal_configure_slew_rate(uint32_t instance, + uint32_t pin, + port_slew_rate_t rateSelect) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_SRE(instance, pin, rateSelect); +} + +/*! + * @brief Configures the passive filter if the pin is used as a digital input. + * + * If enabled, a low pass filter (10 MHz to 30 MHz bandwidth) is enabled + * on the digital input path. Disable the Passive Input Filter when supporting + * high speed interfaces (> 2 MHz) on the pin. + * + * @param instance port instance number + * @param pin port pin number + * @param isPassiveFilterEnabled passive filter configuration + * - false: passive filter is disabled. + * - true : passive filter is enabled. + */ +static inline void port_hal_configure_passive_filter(uint32_t instance, + uint32_t pin, + bool isPassiveFilterEnabled) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_PFE(instance, pin, isPassiveFilterEnabled); +} + +#if FSL_FEATURE_PORT_HAS_OPEN_DRAIN +/*! + * @brief Enables or disables the open drain. + * + * @param instance port instance number + * @param pin port pin number + * @param isOpenDrainEnabled enable open drain or not + * - false: Open Drain output is disabled on the corresponding pin. + * - true : Open Drain output is disabled on the corresponding pin. + */ +static inline void port_hal_configure_open_drain(uint32_t instance, + uint32_t pin, + bool isOpenDrainEnabled) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_ODE(instance, pin, isOpenDrainEnabled); +} +#endif /*FSL_FEATURE_PORT_HAS_OPEN_DRAIN*/ + +/*! + * @brief Configures the drive strength if the pin is used as a digital output. + * + * @param instance port instance number + * @param pin port pin number + * @param driveSelect drive strength selection + * - kLowDriveStrength : low drive strength is configured. + * - kHighDriveStrength: high drive strength is configured. + */ +static inline void port_hal_configure_drive_strength(uint32_t instance, + uint32_t pin, + port_drive_strength_t driveSelect) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_DSE(instance, pin, driveSelect); +} + +/*! + * @brief Configures the pin muxing. + * + * @param instance port instance number + * @param pin port pin number + * @param mux pin muxing slot selection + * - kPinDisabled: Pin disabled. + * - kMuxAsGpio : Set as GPIO. + * - others : chip-specific. + */ +static inline void port_hal_mux_control(uint32_t instance, uint32_t pin, port_mux_t mux) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_MUX(instance, pin, mux); +} + +#if FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK +/*! + * @brief Locks or unlocks the pin control register bits[15:0]. + * + * @param instance port instance number + * @param pin port pin number + * @param isPinLockEnabled lock pin control register or not + * - false: pin control register bit[15:0] are not locked. + * - true : pin control register bit[15:0] are locked, cannot be updated till system reset. + */ +static inline void port_hal_configure_pin_control_lock(uint32_t instance, + uint32_t pin, + bool isPinLockEnabled) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_LK(instance, pin, isPinLockEnabled); +} +#endif /* FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK*/ + +#if FSL_FEATURE_PORT_HAS_DIGITAL_FILTER +/*! + * @brief Enables or disables the digital filter in one single port. + * Each bit of the 32-bit register represents one pin. + * + * @param instance port instance number + * @param pin port pin number + * @param isDigitalFilterEnabled digital filter enable/disable + * - false: digital filter is disabled on the corresponding pin. + * - true : digital filter is enabled on the corresponding pin. + */ +static inline void port_hal_configure_digital_filter(uint32_t instance, + uint32_t pin, + bool isDigitalFilterEnabled) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + HW_PORT_DFER_SET(instance, (uint32_t)isDigitalFilterEnabled << pin); +} + +/*! + * @brief Configures the clock source for the digital input filters. Changing the filter clock source should + * only be done after disabling all enabled filters. Every pin in one port uses the same + * clock source. + * + * @param instance port instance number + * @param clockSource chose which clock source to use for current port + * - kBusClock: digital filters are clocked by the bus clock. + * - kLPOClock: digital filters are clocked by the 1 kHz LPO clock. + */ +static inline void port_hal_configure_digital_filter_clock(uint32_t instance, + port_digital_filter_clock_source_t clockSource) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + HW_PORT_DFCR_WR(instance, clockSource); +} + +/*! + * @brief Configures the maximum size of the glitches(in clock cycles) the digital filter absorbs + * for enabled digital filters. Glitches that are longer than this register setting + * (in clock cycles) pass through the digital filter, while glitches that are equal + * to or less than this register setting (in clock cycles) are filtered. Changing the + * filter length should only be done after disabling all enabled filters. + * + * @param instance port instance number + * @param width configure digital filter width (should be less than 5 bits). + */ +static inline void port_hal_configure_digital_filter_width(uint32_t instance, uint8_t width) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + HW_PORT_DFWR_WR(instance, width); +} +#endif /* FSL_FEATURE_PORT_HAS_DIGITAL_FILTER*/ + +/*! + * @brief Configures the low half of pin control register for the same settings. + * This function operates pin 0 -15 of one specific port. + * + * @param instance port instance number + * @param pinSelect update corresponding pin control register or not. For a specific bit: + * - 0: corresponding low half of pin control register won't be updated according to configuration. + * - 1: corresponding low half of pin control register will be updated according to configuration. + * @param config value is written to a low half port control register bits[15:0]. + */ +void port_hal_global_pin_control_low(uint32_t instance, uint16_t lowPinSelect, uint16_t config); + +/*! + * @brief Configures the high half of pin control register for the same settings. + * This function operates pin 16 -31 of one specific port. + * + * @param instance port instance number + * @param pinSelect update corresponding pin control register or not. For a specific bit: + * - 0: corresponding high half of pin control register won't be updated according to configuration. + * - 1: corresponding high half of pin control register will be updated according to configuration. + * @param config value is written to a high half port control register bits[15:0]. + */ +void port_hal_global_pin_control_high(uint32_t instance, uint16_t highPinSelect, uint16_t config); + +/*@}*/ + +/*! + * @name Interrupt + * @{ + */ + +/*! + * @brief Configures the port pin interrupt/DMA request. + * + * @param instance port instance number. + * @param pin port pin number + * @param intConfig interrupt configuration + * - kIntDisabled : Interrupt/DMA request disabled. + * - kDmaRisingEdge : DMA request on rising edge. + * - kDmaFallingEdge: DMA request on falling edge. + * - kDmaEitherEdge : DMA request on either edge. + * - KIntLogicZero : Interrupt when logic zero. + * - KIntRisingEdge : Interrupt on rising edge. + * - KIntFallingEdge: Interrupt on falling edge. + * - KIntEitherEdge : Interrupt on either edge. + * - KIntLogicOne : Interrupt when logic one. + */ +static inline void port_hal_configure_pin_interrupt(uint32_t instance, + uint32_t pin, + port_interrupt_config_t intConfig) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_IRQC(instance, pin, intConfig); +} + +/*! + * @brief Gets the current port pin interrupt/DMA request configuration. + * + * @param instance port instance number + * @param pin port pin number + * @return interrupt configuration + * - kIntDisabled : Interrupt/DMA request disabled. + * - kDmaRisingEdge : DMA request on rising edge. + * - kDmaFallingEdge: DMA request on falling edge. + * - kDmaEitherEdge : DMA request on either edge. + * - KIntLogicZero : Interrupt when logic zero. + * - KIntRisingEdge : Interrupt on rising edge. + * - KIntFallingEdge: Interrupt on falling edge. + * - KIntEitherEdge : Interrupt on either edge. + * - KIntLogicOne : Interrupt when logic one. + */ +static inline port_interrupt_config_t port_hal_get_pin_interrupt_config(uint32_t instance, + uint32_t pin) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + return (port_interrupt_config_t)BR_PORT_PCRn_IRQC(instance, pin); +} + +/*! + * @brief Reads the individual pin-interrupt status flag. + * + * If a pin is configured to generate the DMA request, the corresponding flag + * is cleared automatically at the completion of the requested DMA transfer. + * Otherwise, the flag remains set until a logic one is written to that flag. + * If configured for a level sensitive interrupt that remains asserted, the flag + * is set again immediately. + * + * @param instance port instance number + * @param pin port pin number + * @return current pin interrupt status flag + * - 0: interrupt is not detected. + * - 1: interrupt is detected. + */ +static inline bool port_hal_read_pin_interrupt_flag(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + return BR_PORT_PCRn_ISF(instance, pin); +} + +/*! + * @brief Clears the individual pin-interrupt status flag. + * + * @param instance port instance number + * @param pin port pin number + */ +static inline void port_hal_clear_pin_interrupt_flag(uint32_t instance, uint32_t pin) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + assert(pin < 32U); + BW_PORT_PCRn_ISF(instance, pin, 1U); +} + +/*! + * @brief Reads the entire port interrupt status flag. + * + * @param instance port instance number + * @return all 32 pin interrupt status flags. For specific bit: + * - 0: interrupt is not detected. + * - 1: interrupt is detected. + */ +static inline uint32_t port_hal_read_port_interrupt_flag(uint32_t instance) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + return HW_PORT_ISFR_RD(instance); +} + +/*! + * @brief Clears the entire port interrupt status flag. + * + * @param instance port instance number + */ +static inline void port_hal_clear_port_interrupt_flag(uint32_t instance) +{ + assert(instance < HW_PORT_INSTANCE_COUNT); + HW_PORT_ISFR_WR(instance, ~0U); +} + +/*@}*/ + +#if defined(__cplusplus) +} +#endif + +/*! @}*/ + +#endif /* __FSL_PORT_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/rtc/fsl_rtc_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_RTC_FEATURES_H__) +#define __FSL_RTC_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || \ + defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || \ + defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || \ + defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) + /* @brief Has wakeup pin (bit field CR[WPS]).*/ + #define FSL_FEATURE_RTC_HAS_WAKEUP_PIN (0) + /* @brief Has low power features (can be enabled via register bit MER[MCE]).*/ + #define FSL_FEATURE_RTC_HAS_MONOTONIC (0) + /* @brief Has read/write access control*/ + #define FSL_FEATURE_RTC_HAS_ACCESS_CONTROL (1) +#elif defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || \ + defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || defined(CPU_MK22FN512VLL12) || defined(CPU_MK24FN1M0VDC12) || \ + defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK64FN1M0VDC12) || \ + defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VMD12) || \ + defined(CPU_MK64FX512VMD12) + /* @brief Has wakeup pin (bit field CR[WPS]).*/ + #define FSL_FEATURE_RTC_HAS_WAKEUP_PIN (1) + /* @brief Has low power features (can be enabled via register bit MER[MCE]).*/ + #define FSL_FEATURE_RTC_HAS_MONOTONIC (0) + /* @brief Has read/write access control*/ + #define FSL_FEATURE_RTC_HAS_ACCESS_CONTROL (1) +#elif defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || defined(CPU_MK65FX1M0VMI18) || \ + defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || defined(CPU_MK66FX1M0VMD18) + /* @brief Has wakeup pin (bit field CR[WPS]).*/ + #define FSL_FEATURE_RTC_HAS_WAKEUP_PIN (1) + /* @brief Has low power features (can be enabled via register bit MER[MCE]).*/ + #define FSL_FEATURE_RTC_HAS_MONOTONIC (1) + /* @brief Has read/write access control*/ + #define FSL_FEATURE_RTC_HAS_ACCESS_CONTROL (1) +#elif defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || \ + defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) + /* @brief Has wakeup pin (bit field CR[WPS]).*/ + #define FSL_FEATURE_RTC_HAS_WAKEUP_PIN (0) + /* @brief Has low power features (can be enabled via register bit MER[MCE]).*/ + #define FSL_FEATURE_RTC_HAS_MONOTONIC (1) + /* @brief Has read/write access control*/ + #define FSL_FEATURE_RTC_HAS_ACCESS_CONTROL (1) +#elif defined(CPU_MKL05Z8VFK4) || defined(CPU_MKL05Z16VFK4) || defined(CPU_MKL05Z32VFK4) || defined(CPU_MKL05Z8VLC4) || \ + defined(CPU_MKL05Z16VLC4) || defined(CPU_MKL05Z32VLC4) || defined(CPU_MKL05Z8VFM4) || defined(CPU_MKL05Z16VFM4) || \ + defined(CPU_MKL05Z32VFM4) || defined(CPU_MKL05Z16VLF4) || defined(CPU_MKL05Z32VLF4) || defined(CPU_MKL25Z32VFM4) || \ + defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || \ + defined(CPU_MKL25Z128VFT4) || defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4) || defined(CPU_MKL46Z128VLH4) || \ + defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || defined(CPU_MKL46Z256VLL4) || defined(CPU_MKL46Z128VMC4) || \ + defined(CPU_MKL46Z256VMC4) + /* @brief Has wakeup pin (bit field CR[WPS]).*/ + #define FSL_FEATURE_RTC_HAS_WAKEUP_PIN (1) + /* @brief Has low power features (can be enabled via register bit MER[MCE]).*/ + #define FSL_FEATURE_RTC_HAS_MONOTONIC (0) + /* @brief Has read/write access control*/ + #define FSL_FEATURE_RTC_HAS_ACCESS_CONTROL (0) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_RTC_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/rtc/fsl_rtc_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,883 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_RTC_HAL_H__) +#define __FSL_RTC_HAL_H__ + + +#include "fsl_rtc_features.h" +#include "fsl_device_registers.h" + +#if FSL_FEATURE_RTC_HAS_MONOTONIC + #include "fsl_rtc_hal_monotonic.h" +#endif +#if FSL_FEATURE_RTC_HAS_ACCESS_CONTROL + #include "fsl_rtc_hal_access_control.h" +#endif + +#include <stdint.h> +#include <stdbool.h> + +/*! + * @addtogroup rtc_hal + * @{ + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +typedef struct rtc_hal_init_config +{ + + /*! Configures the oscillator load in pF. \n + * Example:\n + * value 0 => to be configured: 0pF \n + * value 2 => to be configured: 2pF \n + * value 4 => to be configured: 4pF \n + * value 8 => to be configured: 8pF \n + * value 16 => to be configured: 16pF \n + * Any other value is ignored. + */ + uint8_t enableOscillatorLoadConfg; + + bool disableClockOutToPeripheral; /*!< at register field CR[CLKO]*/ + + /*! After enabling this, waits the oscillator startup time before enabling + * the time counter TSR[TSR] to allow the 32.768 kHz clock time to stabilize. + */ + bool enable32kOscillator; /*!< at register field CR[OSCE]*/ + +#if FSL_FEATURE_RTC_HAS_WAKEUP_PIN + /*! For devices that have the wakeup pin, this variable indicates whether it is + * to be enabled (set to 'true') or not (set to 'false') at the initialization + * function.\n + * See the device's user manual for details depending on each device + * specific wakeup pin feature implementation. + */ + bool enableWakeupPin; +#endif + + /*! Sets the register field TSR[TSR]. Set to zero to skip this configuration.*/ + uint32_t startSecondsCounterAt; + + /*! Sets the register field TPR[TPR]. Set to zero to skip this configuration.*/ + uint16_t prescalerAt; + + /*! Sets the register field TAR[TAR]. Set to zero to skip this configuration.*/ + uint32_t alarmCounterAt; + + /*! Configures the compensation interval in seconds from 1 to 256 to control + * how frequently the TCR should adjusts the number of 32.768 kHz cycles in + * each second. The value written should be one less than the number of + * seconds (for example, write zero to configure for a compensation interval + * of one second). This register is double-buffered and writes do not take + * affect until the end of the current compensation interval.\n + * Set to zero to skip this configuration. + */ + uint8_t compensationInterval; + + /*! Configures the number of 32.768 kHz clock cycles in each second. This + * register is double-buffered and writes do not take affect until the end + * of the current compensation interval.\n + * \n + * 80h Time prescaler register overflows every 32896 clock cycles.\n + * ... ...\n + * FFh Time prescaler register overflows every 32769 clock cycles.\n + * 00h Time prescaler register overflows every 32768 clock cycles.\n + * 01h Time prescaler register overflows every 32767 clock cycles.\n + * ... ...\n + * 7Fh Time prescaler register overflows every 32641 clock cycles.\n + */ + uint8_t timeCompensation; + + /*! Sets/clears any of the following bitfields to enable/disable the + * respective interrupts.\n + * TSIE: Time Seconds Interrupt Enable \n + * TAIE: Time Alarm Interrupt Enable \n + * TOIE: Time Overflow Interrupt Enable \n + * TIIE: Time Invalid Interrupt Enable \n + * \n + * For MCUs that have the Wakeup Pin only: \n + * WPON: Wakeup Pin On (see the corresponding MCU's reference manual)\n + * \n + * For MCUs that have the Monotonic Counter only: \n + * MOIE: Monotonic Overflow Interrupt Enable \n + */ + hw_rtc_ier_t enableInterrupts; + +#if FSL_FEATURE_RTC_HAS_MONOTONIC + /*! Sets the Monotonic Counter to the pointed variable's value. + * To skip setting a value or if does not apply set pointer to NULL. + */ + uint64_t * monotonicCounterAt; +#endif + +} rtc_hal_init_config_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! @brief Initializes the RTC module. + * + * @param configs Pointer to a structure where the configuration details are + * stored at. The structure values that do NOT apply to the + * MCU in use are ignored. + */ +void rtc_hal_init(rtc_hal_init_config_t * configs); + + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Register Reset Functions*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Resets the RTC Time Seconds Register (RTC_TSR).*/ +static inline void rtc_hal_reset_reg_TSR(void) +{ + HW_RTC_TSR_WR((uint32_t)0x00000000U); +} + +/*! @brief Resets the RTC Time Prescaler Register (RTC_TPR).*/ +static inline void rtc_hal_reset_reg_TPR(void) +{ + HW_RTC_TPR_WR((uint32_t)0x00000000U); +} + +/*! @brief Resets the RTC Time Alarm Register (RTC_TAR).*/ +static inline void rtc_hal_reset_reg_TAR(void) +{ + HW_RTC_TAR_WR((uint32_t)0x00000000U); +} + +/*! @brief Resets the RTC Time Compensation Register (RTC_TCR).*/ +static inline void rtc_hal_reset_reg_TCR(void) +{ + HW_RTC_TCR_WR((uint32_t)0x00000000U); +} + +/*! @brief Resets the RTC Control Register (RTC_CR).*/ +static inline void rtc_hal_reset_reg_CR(void) +{ + HW_RTC_CR_WR((uint32_t)0x00000000U); +} + +/*! @brief Resets the RTC Status Register (RTC_SR).*/ +static inline void rtc_hal_reset_reg_SR(void) +{ + HW_RTC_SR_WR((uint32_t)0x00000001U); +} + +/*! @brief Resets the RTC Lock Register (RTC_LR).*/ +static inline void rtc_hal_reset_reg_LR(void) +{ +#if (defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || \ + defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || \ + defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4) || \ + defined(CPU_MK22FN512VDC12)) + + HW_RTC_LR_WR((uint32_t)0x000000FFU); + +#elif (defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ12) || \ + defined(CPU_MK70FX512VMJ15) || defined(CPU_MK70FN1M0VMJ15) || \ + defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK63FN1M0VMD12WS) || \ + defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12)) + + HW_RTC_LR_WR((uint32_t)0x0000FFFFU); + +#else + #error "No valid CPU defined" +#endif +} + +/*! @brief Resets the RTC Interrupt Enable Register (RTC_IER).*/ +static inline void rtc_hal_reset_reg_IER(void) +{ + HW_RTC_IER_WR((uint32_t)0x00000007U); +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Time Seconds*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Reads the value of the time seconds counter. + * @param Seconds [out] pointer to variable where the seconds are stored. + */ +static inline void rtc_hal_get_seconds(uint32_t * seconds) +{ + /* When the time counter is enabled, the TSR is read only and increments + * once a second provided SR[TOF] and SR[TIF] are not set. The time counter + * reads as zero when SR[TOF] or SR[TIF] are set. When the time counter + * is disabled, the TSR can be read or written. */ + *seconds = BR_RTC_TSR_TSR; + +} + +/*! @brief Writes to the time seconds counter. + * @param seconds [in] pointer to a variable from where to write the seconds. + * @return true: write success since time counter is disabled. + * false: write error since time counter is enabled. + */ +static inline bool rtc_hal_set_seconds(const uint32_t * seconds) +{ + /* When the time counter is enabled, the TSR is read only and increments + * once a second provided SR[TOF] or SR[TIF] are not set. The time counter + * reads as zero when SR[TOF] or SR[TIF] are set. When the time counter + * is disabled, the TSR can be read or written. Writing to the TSR when the + * time counter is disabled clears the SR[TOF] and/or the SR[TIF]. Writing + * to the TSR register with zero is supported, but not recommended since TSR + * reads as zero when SR[TIF] or SR[TOF] are set (indicating the time is + * invalid). */ + + bool result = false; + + if(!(BR_RTC_SR_TCE)) + { + BW_RTC_TSR_TSR(*seconds); /* jgsp: add write to prescaler with 0x00 before writing to TSR.*/ + result = true; + } + + return result; +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Time Prescaler*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Reads the value of the time prescaler. + * @param prescale [out] pointer to variable where the prescaler's value + * is stored. + */ +static inline void rtc_hal_get_prescaler(uint16_t * prescale) +{ + /* When the time counter is enabled, the TPR is read only and increments + * every 32.768 kHz clock cycle. The time counter reads as zero when + * SR[TOF] or SR[TIF] are set. When the time counter is disabled, the TPR + * can be read or written. The TSR[TSR] increments when bit 14 of the TPR + * transitions from a logic one to a logic zero. */ + *prescale = BR_RTC_TPR_TPR; + +} + +/*! @brief Sets the time prescaler. + * @param prescale [in] pointer to variable from where to write the + * seconds. + * @return true: set successfull; false: error, unable to set prescaler + * since the the time counter is enabled. + */ +static inline bool rtc_hal_set_prescaler(const uint16_t * prescale) +{ + /* When the time counter is enabled, the TPR is read only and increments + * every 32.768 kHz clock cycle. The time counter reads as zero when the + * SR[TOF] or SR[TIF] are set. When the time counter is disabled, the TPR + * can be read or written. The TSR[TSR] increments when bit 14 of the TPR + * transitions from a logic one to a logic zero. */ + bool result = false; + + if(!(BR_RTC_SR_TCE)) + { + BW_RTC_TPR_TPR(*prescale); + result = true; + } + + return result; + +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Time Alarm*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Reads the value of the time alarm. + * @param seconds [out] pointer to a variable where the alarm value in seconds + * will be stored. + */ +static inline void rtc_hal_get_alarm(uint32_t * seconds) +{ + *seconds = BR_RTC_TAR_TAR; +} + +/*! @brief Sets the time alarm, this clears the time alarm flag. + * @param seconds [in] pointer to variable from where to write alarm value + * in seconds. + */ +static inline void rtc_hal_set_alarm(const uint32_t * seconds) +{ + /* When the time counter is enabled, the SR[TAF] is set whenever the TAR[TAR] + * equals the TSR[TSR] and the TSR[TSR] increments. Writing to the TAR + * clears the SR[TAF]. */ + BW_RTC_TAR_TAR(*seconds); +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Time Compensation*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Reads the compensation interval counter value.*/ +/*! @param counter [out] pointer to variable where the value is stored.*/ +static inline void rtc_hal_get_comp_intrvl_counter(uint8_t * counter) +{ + *counter = BR_RTC_TCR_CIC; +} + +/*! @brief Reads the current time compensation interval counter value. + * @param tcValue [out] pointer to variable where the value is stored. + */ +static inline void rtc_hal_get_current_time_compensation(uint8_t * tcValue) +{ + *tcValue = BR_RTC_TCR_TCV; +} + +/*! @brief Reads the compensation interval. The value is the configured + * compensation interval in seconds from 1 to 256 to control + * how frequently the time compensation register should adjust the + * number of 32.768 kHz cycles in each second. The value is one + * less than the number of seconds (for example. Zero means a + * configuration for a compensation interval of one second). + * @param value [out] pointer to variable where the value is stored. + */ +static inline void rtc_hal_get_compensation_interval(uint8_t * value) +{ + *value = BR_RTC_TCR_CIR; +} + +/*! @brief Writes the compensation interval. This configures the + * compensation interval in seconds from 1 to 256 to control + * how frequently the TCR should adjust the number of 32.768 kHz + * cycles in each second. The value written should be one less than + * the number of seconds (for example, write zero to configure for + * a compensation interval of one second). This register is double + * buffered and writes do not take affect until the end of the + * current compensation interval. + * @param value [in] pointer to a variable from where to write the value. + */ +static inline void rtc_hal_set_compensation_interval(const uint8_t * value) +{ + BW_RTC_TCR_CIR(*value); +} + +/*! @brief Reads the time compensation value which is the configured number + * of the 32.768 kHz clock cycles in each second. + * @param value [out] pointer to variable where the value is stored. + */ +static inline void rtc_hal_get_time_compensation(uint8_t * value) +{ + *value = BR_RTC_TCR_TCR; +} + +/*! @brief Writes to the RTC Time Compensation Register (RTC_TCR), field + * Time Compensation Register (TCR). Configuring the number of + * 32.768 kHz clock cycles in each second. This register is double + * buffered and writes do not take affect until the end of the + * current compensation interval.\n + * 80h Time prescaler register overflows every 32896 clock cycles.\n + * ... ...\n + * FFh Time prescaler register overflows every 32769 clock cycles.\n + * 00h Time prescaler register overflows every 32768 clock cycles.\n + * 01h Time prescaler register overflows every 32767 clock cycles.\n + * ... ...\n + * 7Fh Time prescaler register overflows every 32641 clock cycles.\n + * @param enable [in] pointer to variable from where to write the value. + */ +static inline void rtc_hal_set_time_compensation(const uint8_t * enable) +{ + BW_RTC_TCR_TCR(*enable); +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Control*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Enables/disables oscillator configuration for 2pF load.*/ +/*! @param enable true: enables load; false: disables load.*/ +static inline void rtc_hal_config_osc_2pf_load(bool enable) +{ + BW_RTC_CR_SC2P(enable); +} + +/*! @brief Enables/disables oscillator configuration for 4pF load.*/ +/*! @param enable true: enables load; false: disables load.*/ +static inline void rtc_hal_config_osc_4pf_load(bool enable) +{ + BW_RTC_CR_SC4P(enable); +} + +/*! @brief Enables/disables oscillator configuration for 8pF load.*/ +/*! @param enable true: enables load; false: disables load.*/ +static inline void rtc_hal_config_osc_8pf_load(bool enable) +{ + BW_RTC_CR_SC8P(enable); +} + +/*! @brief Enables/disables oscillator configuration for 16pF load.*/ +/*! @param enable true: enables load; false: disables load.*/ +static inline void rtc_hal_config_osc_16pf_load(bool enable) +{ + BW_RTC_CR_SC16P(enable); +} + +/*! @brief Enables/disables the 32kHz clock output to other peripherals.*/ +/*! @param enable true: enables clock out; false: disables clock out.*/ +static inline void rtc_hal_config_clock_out(bool enable) +{ + BW_RTC_CR_CLKO(!enable); +} + +/*! @brief Enables/disables the oscillator. After enablement, wait the + * oscillator startup time before enabling the time counter to + * allow the 32.768 kHz clock time to stabilize. + * @param enable true: enables oscillator; false: disables oscillator. + */ +static inline void rtc_hal_config_oscillator(bool enable) +{ + BW_RTC_CR_OSCE(enable); +} + +/*! @brief Enables/disables the update mode. This mode allows the time counter + * enabled to be written even when the status register is locked. + * When set, the time counter enable, can always be written if the + * TIF (Time Invalid Flag) or TOF (Time Overflow Flag) are set or + * if the time counter enable is clear. For devices with the + * monotonic counter, it allows the monotonic enable to be written + * when it is locked. When set, the monotonic enable can always be + * written if the TIF (Time Invalid Flag) or TOF (Time Overflow Flag) + * are set or if the monotonic counter enable is clear. + * For devices with tamper detect, it allows the it to be written + * when it is locked. When set, the tamper detect can always be + * written if the TIF (Time Invalid Flag) is clear. + * Note: Tamper and Monotonic features are not available in all MCUs. + * @param lock true: enables register lock, registers cannot be written + * when locked; False: disables register lock, registers + * can be written when locked under limited conditions. + */ +static inline void rtc_hal_configure_update_mode(bool lock) +{ + BW_RTC_CR_UM(lock); +} + +/*! @brief Enables/disables the supervisor access, which configures + * non-supervisor mode write access to all RTC registers and + * non-supervisor mode read access to RTC tamper/monotonic registers. + * Note: Tamper and Monotonic features are NOT available in all MCUs. + * @param enable_reg_write true: enables register lock, Non-supervisor + * mode write accesses are supported; false: disables register + * lock, non-supervisor mode write accesses are not supported and + * generate a bus error. + */ +static inline void rtc_hal_configure_supervisor_access(bool enable_reg_write) +{ + BW_RTC_CR_SUP(enable_reg_write); +} + +#if FSL_FEATURE_RTC_HAS_WAKEUP_PIN +/*! @brief Enables/disables the wakeup pin. + * Note: The wakeup pin is optional and not available on all devices. + * @param enable_wp true: enables wakeup-pin, wakeup pin asserts if the + * RTC interrupt asserts and the chip is powered down; + * false: disables wakeup-pin. + */ +static inline void rtc_hal_config_wakeup_pin(bool enable_wp) +{ + BW_RTC_CR_WPE(enable_wp); +} +#endif + +/*! @brief Performs a software reset on the RTC module. This resets all + * RTC registers except for the SWR bit and the RTC_WAR and RTC_RAR + * registers. The SWR bit is cleared after VBAT POR and by software + * explicitly clearing it. + * Note: access control features (RTC_WAR and RTC_RAR registers) + * are not available in all MCUs. + */ +static inline void rtc_hal_software_reset(void) +{ + BW_RTC_CR_SWR(1u); +} + +/*! @brief Clears the software reset flag.*/ +static inline void rtc_hal_software_reset_flag_clear(void) +{ + BW_RTC_CR_SWR(0u); +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Status*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Reads the time counter enabled/disabled status. + * @return true: time counter is enabled, time seconds register and time + * prescaler register are not writeable, but increment; false: time + * counter is disabled, time seconds register and time prescaler + * register are writeable, but do not increment. */ +static inline bool rtc_hal_is_counter_enabled(void) +{ + return (bool)BR_RTC_SR_TCE; +} + +/*! @brief Changes the time counter enabled/disabled status. + * @param enable true: enables the time counter; + * false: disables the time counter. + */ +static inline void rtc_hal_counter_enable(bool enable) +{ + BW_RTC_SR_TCE(enable); +} + +/*! @brief Checks if the configured time alarm occurred. + * @return true: time alarm has occurred. + * false: NO time alarm occurred. + */ +static inline bool rtc_hal_is_alarm_occured(void) +{ + /* Reads time alarm flag (TAF). This flag is set when the time + * alarm register (TAR) equals the time seconds register (TSR) and + * the TSR increments. This flag is cleared by writing the TAR register. */ + return (bool)BR_RTC_SR_TAF; +} + +/*! @brief Checks whether a counter overflow happened. + * @return true: time overflow occurred and time counter is zero. + * false: NO time overflow occurred. + */ +static inline bool rtc_hal_is_counter_overflow(void) +{ + /* Reads the value of RTC Status Register (RTC_SR), field Time + * Overflow Flag (TOF). This flag is set when the time counter is + * enabled and overflows. The TSR and TPR do not increment and read + * as zero when this bit is set. This flag is cleared by writing the + * TSR register when the time counter is disabled. */ + return (bool)BR_RTC_SR_TOF; +} + +/*! @brief Checks whether the time is marked as invalid. + * @return true: time is INVALID and time counter is zero. + * false: time is valid. + */ +static inline bool rtc_hal_is_time_invalid(void) +{ + /*! Reads the value of the RTC Status Register (RTC_SR), field Time + * Invalid Flag (TIF). This flag is set on the VBAT POR or the software + * reset. The TSR and TPR do not increment and read as zero when + * this bit is set. This flag is cleared by writing the TSR + * register when the time counter is disabled. */ + return (bool)BR_RTC_SR_TIF; +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Lock*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Configures the register lock to other module fields. + * @param bitfields [in] configuration flags:\n + * Valid bitfields:\n + * LRL: Lock Register Lock \n + * SRL: Status Register Lock \n + * CRL: Control Register Lock \n + * TCL: Time Compensation Lock \n + * + * For MCUs that have the Tamper Detect only: \n + * TIL: Tamper Interrupt Lock \n + * TTL: Tamper Trim Lock \n + * TDL: Tamper Detect Lock \n + * TEL: Tamper Enable Lock \n + * TTSL: Tamper Time Seconds Lock \n + * + * For MCUs that have the Monotonic Counter only: \n + * MCHL: Monotonic Counter High Lock \n + * MCLL: Monotonic Counter Low Lock \n + * MEL: Monotonic Enable Lock \n + */ +static inline void rtc_hal_config_lock_registers(hw_rtc_lr_t bitfields) +{ + uint32_t valid_flags = 0; + + valid_flags |= (BM_RTC_LR_LRL | BM_RTC_LR_SRL | BM_RTC_LR_CRL | + BM_RTC_LR_TCL); + +#if FSL_FEATURE_RTC_HAS_MONOTONIC + valid_flags |= (BM_RTC_LR_MCHL | BM_RTC_LR_MCLL | BM_RTC_LR_MEL); +#endif + HW_RTC_LR_WR((bitfields.U) & valid_flags); + +} + +/*! @brief Obtains the lock status of the lock register. + * @return true: lock register is not locked and writes complete normally. + * false: lock register is locked and writes are ignored. + */ +static inline bool rtc_hal_get_lock_reg_lock(void) +{ + /* Reads the value of the RTC Lock Register (RTC_LR), + * field Lock Register Lock (LRL). Once cleared, this flag can + * only be set by VBAT POR or software reset. */ + return (bool)BR_RTC_LR_LRL; +} + +/*! @brief Changes the lock status of the lock register. Once cleared, + * this can only be set by the VBAT POR or the software reset. + * @param set_to true: Lock register is not locked and writes complete normally. + * false: Lock register is locked and writes are ignored. + */ +static inline void rtc_hal_set_lock_reg_lock(bool set_to) +{ + /* Writes to the RTC Lock Register (RTC_LR), field Lock Register Lock (LRL). + * Once cleared, this flag can only be set by VBAT POR or software reset. */ + BW_RTC_LR_LRL((uint32_t) set_to); +} + +/*! @brief Obtains the state of the status register lock. + * @return true: Status register is not locked and writes complete + * normally. + * false: Status register is locked and writes are ignored. + */ +static inline bool rtc_hal_get_status_reg_lock(void) +{ + /* Reads the value of the RTC Lock Register (RTC_LR), field Status Register + * Lock (SRL). Once cleared, this flag can only be set by VBAT POR or software + * reset. */ + return (bool)BR_RTC_LR_SRL; +} + +/*! @brief Changes the state of the status register lock. Once cleared, + * this can only be set by the VBAT POR or the software reset. + * @param set_to true: Status register is not locked and writes complete + * normally. + * false: Status register is locked and writes are ignored. + */ +static inline void rtc_hal_set_status_reg_lock(bool set_to) +{ + BW_RTC_LR_SRL((uint32_t) set_to); +} + +/*! @brief Obtains the state of the control register lock + * @return true: Control register is not locked and writes complete + * normally. + * false: Control register is locked and writes are ignored. + */ +static inline bool rtc_hal_get_control_reg_lock(void) +{ + /* Reads the value of the RTC Lock Register (RTC_LR), field Control Register + * Lock (CRL). Once cleared, this flag can only be set by the VBAT POR or the software + * reset. */ + return (bool)BR_RTC_LR_CRL; +} + +/*! @brief Changes the state of the control register lock. Once cleared, + * this can only be set by the VBAT POR or the software reset. + * @param set_to true: Control register is not locked and writes complete + * normally. + * false: Control register is locked and writes are ignored. + */ +static inline void rtc_hal_set_control_reg_lock(bool set_to) +{ + /* Writes to the RTC Lock Register (RTC_LR), field Control Register Lock (CRL). + * Once cleared, this flag can only be set by VBAT POR or software reset. */ + BW_RTC_LR_CRL((uint32_t) set_to); +} + +/*! @brief Obtains the state of the time compensation lock. + * @return true: Time compensation register is not locked and writes + * complete normally. + * false: Time compensation register is locked and writes are + * ignored. + */ +static inline bool rtc_hal_get_time_comp_lock(void) +{ + /* Reads the value of the RTC Lock Register (RTC_LR), field Time Compensation + * Lock (TCL). Once cleared, this flag can only be set by VBAT POR or software + * reset. */ + return (bool)BR_RTC_LR_TCL; +} + +/*! @brief Changes the state of the time compensation lock. Once cleared, + * this can only be set by the VBAT POR or the software reset. + * @param set_to true: Time compensation register is not locked and writes + * complete normally. + * false: Time compensation register is locked and writes are + * ignored. + */ +static inline void rtc_hal_set_time_comp_lock(bool set_to) +{ + /* Writes to the RTC Lock Register (RTC_LR), field Time Compensation Lock (TCL). + * Once cleared, this flag can only be set by VBAT POR or software reset. */ + BW_RTC_LR_TCL((uint32_t) set_to); +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Interrupt Enable*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Enables/disables RTC interrupts. + * @param bitfields [in] set/clear respective bitfields to enabled/disabled + * interrupts. \n + * [out] resulting interrupt enable state. \n + * Valid bitfields: \n + * TSIE: Time Seconds Interrupt Enable \n + * TAIE: Time Alarm Interrupt Enable \n + * TOIE: Time Overflow Interrupt Enable \n + * TIIE: Time Invalid Interrupt Enable \n + * \n + * For MCUs that have the Wakeup Pin only: \n + * WPON: Wakeup Pin On (see the corresponding MCU's reference manual)\n + * \n + * For MCUs that have the Monotonic Counter only: \n + * MOIE: Monotonic Overflow Interrupt Enable \n + */ +static inline void rtc_hal_config_interrupts(hw_rtc_ier_t * bitfields) +{ + HW_RTC_IER_WR((bitfields->U) & ( BM_RTC_IER_TSIE | BM_RTC_IER_TAIE | BM_RTC_IER_TOIE | + BM_RTC_IER_TIIE)); + +#if FSL_FEATURE_RTC_HAS_WAKEUP_PIN + BW_RTC_IER_WPON(bitfields->B.WPON); +#endif +#if FSL_FEATURE_RTC_HAS_MONOTONIC + BW_RTC_IER_MOIE(bitfields->B.MOIE); +#endif + + bitfields->U = HW_RTC_IER_RD(); +} + +/*! @brief Checks whether the Time Seconds Interrupt is enabled/disabled. + * @return true: Seconds interrupt is enabled. + * false: Seconds interrupt is disabled. + */ +static inline bool rtc_hal_read_seconds_int_enable(void) +{ + /* Reads the value of the RTC Interrupt Enable Register (RTC_IER), field Time + * Seconds Interrupt Enable (TSIE). The seconds interrupt is an edge-sensitive + * interrupt with a dedicated interrupt vector. It is generated once a second + * and requires no software overhead (there is no corresponding status flag to + * clear). */ + return (bool)BR_RTC_IER_TSIE; +} + +/*! @brief Enables/disables the Time Seconds Interrupt. + * Note: The seconds interrupt is an edge-sensitive interrupt with a + * dedicated interrupt vector. It is generated once a second and + * requires no software overhead (there is no corresponding status + * flag to clear). + * @param enable true: Seconds interrupt is enabled. + * false: Seconds interrupt is disabled. + */ +static inline void rtc_hal_config_seconds_int(bool enable) +{ + /* Writes to the RTC Interrupt Enable Register (RTC_IER), field Time Seconds + * Interrupt Enable (TSIE). The seconds interrupt is an edge-sensitive + * interrupt with a dedicated interrupt vector. It is generated once a second + * and requires no software overhead (there is no corresponding status flag to + * clear). */ + BW_RTC_IER_TSIE((uint32_t) enable); +} + +/*! @brief Checks whether the Time Alarm Interrupt is enabled/disabled. + * @return true: Time alarm flag does generate an interrupt. + * false: Time alarm flag does not generate an interrupt. + */ +static inline bool rtc_hal_read_alarm_int_enable(void) +{ + /* Reads the value of the RTC Interrupt Enable Register (RTC_IER), + * field Time Alarm Interrupt Enable (TAIE). */ + return (bool)BR_RTC_IER_TAIE; +} + +/*! @brief Enables/disables the Time Alarm Interrupt. + * @param enable true: Time alarm flag does generate an interrupt. + * false: Time alarm flag does not generate an interrupt. + */ +static inline void rtc_hal_config_alarm_int_enable(bool enable) +{ + /* Writes to the RTC Interrupt Enable Register (RTC_IER), field Time Alarm + * Interrupt Enable (TAIE). */ + BW_RTC_IER_TAIE((uint32_t) enable); +} + +/*! @brief Checks whether the Time Overflow Interrupt is enabled/disabled . + * @return true: Time overflow flag does generate an interrupt. + * false: Time overflow flag does not generate an interrupt. + */ +static inline bool rtc_hal_read_time_overflow_int_enable(void) +{ + /* Reads the value of the RTC Interrupt Enable Register (RTC_IER), field + * Time Overflow Interrupt Enable (TOIE). */ + return (bool)BR_RTC_IER_TOIE; +} + +/*! @brief Enables/disables the Time Overflow Interrupt. + * @param enable true: Time overflow flag does generate an interrupt. + * false: Time overflow flag does not generate an interrupt. + */ +static inline void rtc_hal_config_time_overflow_int_enable(bool enable) +{ + /* Writes to the RTC Interrupt Enable Register (RTC_IER), + * field Time Overflow Interrupt Enable (TOIE). */ + BW_RTC_IER_TOIE((uint32_t) enable); +} + +/*! @brief Checks whether the Time Invalid Interrupt is enabled/disabled. + * @return true: Time invalid flag does generate an interrupt. + * false: Time invalid flag does not generate an interrupt. + */ +static inline bool rtc_hal_read_time_interval_int_enable(void) +{ + /* Reads the value of the RTC Interrupt Enable Register (RTC_IER), field Time + * Invalid Interrupt Enable (TIIE). */ + return (bool)BR_RTC_IER_TIIE; +} + +/*! @brief Enables/disables the Time Invalid Interrupt. + * @param enable true: Time invalid flag does generate an interrupt. + * false: Time invalid flag does not generate an interrupt. + */ +static inline void rtc_hal_config_time_interval_int(bool enable) +{ + /* writes to the RTC Interrupt Enable Register (RTC_IER), field Time Invalid + * Interrupt Enable (TIIE). */ + BW_RTC_IER_TIIE((uint32_t) enable); +} + + +#if defined(__cplusplus) +} +#endif + + +/*! @}*/ + +#endif /* __FSL_RTC_HAL_H__*/ + +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/rtc/fsl_rtc_hal_access_control.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,760 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_RTC_HAL_ACCESS_CONTROL_H__) +#define __FSL_RTC_HAL_ACCESS_CONTROL_H__ + + +#include "fsl_rtc_features.h" +#include "fsl_device_registers.h" +#include <stdint.h> +#include <stdbool.h> + + + +/*! @addtogroup rtc_hal*/ +/*! @{*/ + + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +typedef struct rtc_hal_access_control_config +{ + /*! Set/clear any of the following bitfields to enable/disable the + * respective interrupts.\n\n + * IERW: Interrupt Enable Register Write \n + * LRW: Lock Register Write \n + * SRW: Status Register Write \n + * CRW: Control Register Write \n + * TCRW: Time Compensation Register Write \n + * TARW: Time Alarm Register Write \n + * TPRW: Time Prescaler Register Write \n + * TSRW: Time Seconds Register Write \n + * \n + * For MCUs that have Tamper feature: \n + * TIRW: Tamper Interrupt Register Write \n + * TTRW: Tamper Trim Register Write \n + * TDRW: Tamper Detect Register Write \n + * TERW: Tamper Enable Register Write \n + * TTSW: Tamper Time Seconds Write \n + * \n + * For MCUs that have Monotonic Counter: \n + * MCHW: Monotonic Counter High Write \n + * MCLW: Monotonic Counter Low Write \n + * MERW: Monotonic Enable Register Write \n + */ + hw_rtc_war_t writeFlags; + + /*! Set/clear any of the following bitfields to enable/disable the + * respective interrupts.\n\n + * IERR: Interrupt Enable Register Read \n + * LRR: Lock Register Read \n + * SRR: Status Register Read \n + * CRR: Control Register Read \n + * TCRR: Time Compensation Register Read \n + * TARR: Time Alarm Register Read \n + * TPRR: Time Prescaler Register Read \n + * TSRR: Time Seconds Register Read \n + * \n + * For MCUs that have Tamper feature: \n + * TIRR: Tamper Interrupt Register Read \n + * TTRR: Tamper Trim Register Read \n + * TDRR: Tamper Detect Register Read \n + * TERR: Tamper Enable Register Read \n + * TTSR: Tamper Time Seconds Read \n + * \n + * For MCUs that have Monotonic Counter: \n + * MCHR: Monotonic Counter High Read \n + * MCLR: Monotonic Counter Low Read \n + * MERR: Monotonic Enable Register Read \n + */ + hw_rtc_rar_t readFlags; + +} rtc_hal_access_control_config_t; + + +/******************************************************************************* + * API + ******************************************************************************/ + +#if FSL_FEATURE_RTC_HAS_ACCESS_CONTROL + +#if defined(__cplusplus) +extern "C" { +#endif + + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Access Control Register Reset Functions*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Resets the RTC Write Access Register (RTC_WAR).*/ +static inline void rtc_hal_reset_reg_WAR(void) +{ + HW_RTC_WAR_WR((uint32_t)0x0000FFFFU); +} + +/*! @brief Resets the RTC Read Access Register (RTC_RAR).*/ +static inline void rtc_hal_reset_reg_RAR(void) +{ + HW_RTC_RAR_WR((uint32_t)0x0000FFFFU); +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Access Control Configuration*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Configures the read and write access controls to other module fields + * @param flags [in] pointer to structure where configuration flags are + * found. See the related structure for details. + */ +static inline void rtc_hal_access_control_configuration(const rtc_hal_access_control_config_t * flags) +{ + /* check for null pointer*/ + if(NULL == flags) + { + return; + } + + uint32_t valid_flags; + + /* Set/clear any of the following bitfields to enable/disable the + * respective interrupts.\n\n + * IERW: Interrupt Enable Register Write \n + * LRW: Lock Register Write \n + * SRW: Status Register Write \n + * CRW: Control Register Write \n + * TCRW: Time Compensation Register Write \n + * TARW: Time Alarm Register Write \n + * TPRW: Time Prescaler Register Write \n + * TSRW: Time Seconds Register Write \n + * \n + * For MCUs that have Tamper feature: \n + * TIRW: Tamper Interrupt Register Write \n + * TTRW: Tamper Trim Register Write \n + * TDRW: Tamper Detect Register Write \n + * TERW: Tamper Enable Register Write \n + * TTSW: Tamper Time Seconds Write \n + * \n + * For MCUs that have Monotonic Counter: \n + * MCHW: Monotonic Counter High Write \n + * MCLW: Monotonic Counter Low Write \n + * MERW: Monotonic Enable Register Write \n + */ + valid_flags = 0; + +#if FSL_FEATURE_RTC_HAS_MONOTONIC + valid_flags |= (BM_RTC_WAR_MCHW | BM_RTC_WAR_MCLW | BM_RTC_WAR_MERW); +#endif + valid_flags |= (BM_RTC_WAR_IERW | BM_RTC_WAR_LRW | BM_RTC_WAR_SRW | + BM_RTC_WAR_CRW | BM_RTC_WAR_TCRW | BM_RTC_WAR_TARW | BM_RTC_WAR_TPRW | + BM_RTC_WAR_TSRW); + + HW_RTC_WAR_WR((flags->writeFlags.U) & valid_flags); + + /* Set/clear any of the following bitfields to enable/disable the + * respective interrupts.\n\n + * IERR: Interrupt Enable Register Read \n + * LRR: Lock Register Read \n + * SRR: Status Register Read \n + * CRR: Control Register Read \n + * TCRR: Time Compensation Register Read \n + * TARR: Time Alarm Register Read \n + * TPRR: Time Prescaler Register Read \n + * TSRR: Time Seconds Register Read \n + * \n + * For MCUs that have Tamper feature: \n + * TIRR: Tamper Interrupt Register Read \n + * TTRR: Tamper Trim Register Read \n + * TDRR: Tamper Detect Register Read \n + * TERR: Tamper Enable Register Read \n + * TTSR: Tamper Time Seconds Read \n + * \n + * For MCUs that have Monotonic Counter: \n + * MCHR: Monotonic Counter High Read \n + * MCLR: Monotonic Counter Low Read \n + * MERR: Monotonic Enable Register Read \n + */ + valid_flags = 0; + +#if FSL_FEATURE_RTC_HAS_MONOTONIC + valid_flags |= (BM_RTC_RAR_MCHR | BM_RTC_RAR_MCLR | BM_RTC_RAR_MERR); +#endif + valid_flags |= (BM_RTC_RAR_IERR | BM_RTC_RAR_LRR | BM_RTC_RAR_SRR | + BM_RTC_RAR_CRR | BM_RTC_RAR_TCRR | BM_RTC_RAR_TARR | BM_RTC_RAR_TPRR | + BM_RTC_RAR_TSRR); + + HW_RTC_RAR_WR((flags->readFlags.U) & valid_flags); + +} + + +#if FSL_FEATURE_RTC_HAS_MONOTONIC +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Monotonic Counter High Write (MCHW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or by the software reset. + * @return true: Writes to the monotonic counter high register complete normally. + * false: Writes to the monotonic counter high register are ignored. + */ +static inline bool rtc_hal_get_monotonic_hcount_wreg(void) +{ + return (bool)BR_RTC_WAR_MCHW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Monotonic Counter High Write (MCHW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or software reset. + * @param enable true: Writes to the monotonic counter high register complete normally. + * false: Writes to the monotonic counter high register are ignored. + */ +static inline void rtc_hal_set_monotonic_hcount_wreg(bool enable) +{ + BW_RTC_WAR_MCHW((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Monotonic Counter Low Write (MCLW). Once cleared, + * this bit is only set by system reset. It is not affected by the + * VBAT POR or software reset. + * @return true: Writes to the monotonic counter low register complete normally. + * false: Writes to the monotonic counter low register are ignored. + */ +static inline bool rtc_hal_get_monotonic_lcount_wreg(void) +{ + return (bool)BR_RTC_WAR_MCLW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Monotonic Counter Low Write (MCLW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the monotonic counter low register complete normally. + * false: Writes to the monotonic counter low register are ignored. + */ +static inline void rtc_hal_set_monotonic_lcount_wreg(bool enable) +{ + BW_RTC_WAR_MCLW((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Monotonic Enable Register Write (MERW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Writes to the monotonic enable register complete normally. + * false: Writes to the monotonic enable register are ignored. + */ +static inline bool rtc_hal_get_monotonic_enable_wreg(void) +{ + return (bool)BR_RTC_WAR_MERW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Monotonic Enable Register Write (MERW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the monotonic enable register complete normally. + * false: Writes to the monotonic enable register are ignored. + */ +static inline void rtc_hal_set_monotonic_enable_wreg(bool enable) +{ + BW_RTC_WAR_MERW((uint32_t) enable); +} +#endif + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Interrupt Enable Register Write (IERW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Writes to the interrupt enable register complete normally. + * false: Writes to the interrupt enable register are ignored. + */ +static inline bool rtc_hal_get_interrupt_enable_wreg(void) +{ + return (bool)BR_RTC_WAR_IERW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Interrupt Enable Register Write (IERW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the interrupt enable register complete normally. + * false: Writes to the interrupt enable register are ignored. + */ +static inline void rtc_hal_set_interrupt_enable_wreg(bool enable) +{ + BW_RTC_WAR_IERW((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Lock Register Write (LRW). + * @return true: Writes to the lock register complete normally. + * false: Writes to the lock register are ignored. + */ +static inline bool rtc_hal_get_lock_wreg(void) +{ + return (bool)BR_RTC_WAR_LRW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Lock Register Write (LRW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the lock register complete normally. + * false: Writes to the lock register are ignored. + */ +static inline void rtc_hal_set_lock_wreg(bool enable) +{ + BW_RTC_WAR_LRW((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Status Register Write (SRW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Writes to the status register complete normally. + * false: Writes to the status register are ignored. + */ +static inline bool rtc_hal_get_status_wreg(void) +{ + return (bool)BR_RTC_WAR_SRW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Status Register Write (SRW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the status register complete normally. + * false: Writes to the status register are ignored. + */ +static inline void rtc_hal_set_status_wreg(bool enable) +{ + BW_RTC_WAR_SRW((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Control Register Write (CRW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Writes to the control register complete normally. + * false: Writes to the control register are ignored. + */ +static inline bool rtc_hal_get_control_wreg(void) +{ + return (bool)BR_RTC_WAR_CRW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Control Register Write (CRW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the control register complete normally. + * false: Writes to the control register are ignored. + */ +static inline void rtc_hal_set_control_wreg(bool enable) +{ + BW_RTC_WAR_CRW((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Time Compensation Register Write (TCRW). + * @return true: Writes to the time compensation register complete normally. + * false: Writes to the time compensation register are ignored. + */ +static inline bool rtc_hal_get_compensation_wreg(void) +{ + return (bool)BR_RTC_WAR_TCRW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Time Compensation Register Write (TCRW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the time compensation register complete normally. + * false: Writes to the time compensation register are ignored. + */ +static inline void rtc_hal_set_compensation_wreg(bool enable) +{ + BW_RTC_WAR_TCRW((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Time Alarm Register Write (TARW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Writes to the time alarm register complete normally. + * false: Writes to the time alarm register are ignored. + */ +static inline bool rtc_hal_get_alarm_wreg(void) +{ + return (bool)BR_RTC_WAR_TARW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Time Alarm Register Write (TARW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the time alarm register complete normally. + * false: Writes to the time alarm register are ignored. + */ +static inline void rtc_hal_set_alarm_wreg(bool enable) +{ + BW_RTC_WAR_TARW((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Time Prescaler Register Write (TPRW). + * @return true: Writes to the time prescaler register complete normally. + * false: Writes to the time prescaler register are ignored. + */ +static inline bool rtc_hal_get_prescaler_wreg(void) +{ + return (bool)BR_RTC_WAR_TPRW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Time Prescaler Register Write (TPRW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the time prescaler register complete normally. + * false: Writes to the time prescaler register are ignored. + */ +static inline void rtc_hal_set_prescaler_wreg(bool enable) +{ + BW_RTC_WAR_TPRW((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Write Access Register (RTC_WAR), + * field Time Seconds Register Write (TSRW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Writes to the time seconds register complete normally. + * false: Writes to the time seconds register are ignored. + */ +static inline bool rtc_hal_get_seconds_wreg(void) +{ + return (bool)BR_RTC_WAR_TSRW; +} + +/*! @brief Writes to the RTC Write Access Register (RTC_WAR), + * field Time Seconds Register Write (TSRW). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Writes to the time seconds register complete normally. + * false: Writes to the time seconds register are ignored. + */ +static inline void rtc_hal_set_seconds_wreg(bool enable) +{ + BW_RTC_WAR_TSRW((uint32_t) enable); +} + +#if (FSL_FEATURE_RTC_HAS_MONOTONIC == 1) +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Monotonic Counter High Read (MCHR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Reads to the monotonic counter high register complete normally. + * false: Reads to the monotonic counter high register are ignored. + */ +static inline bool rtc_hal_get_monotonic_hcount_rreg(void) +{ + return (bool)BR_RTC_RAR_MCHR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Monotonic Counter High Read (MCHR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Reads to the monotonic counter high register complete normally. + * false: Reads to the monotonic counter high register are ignored. + */ +static inline void rtc_hal_set_monotonic_hcount_rreg(bool enable) +{ + BW_RTC_RAR_MCHR((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Monotonic Counter Low Read (MCLR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Reads to the monotonic counter low register complete normally. + * false: Reads to the monotonic counter low register are ignored. + */ +static inline bool rtc_hal_get_monotonic_lcount_rreg(void) +{ + return (bool)BR_RTC_RAR_MCLR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Monotonic Counter Low Read (MCLR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Reads to the monotonic counter low register complete normally. + * false: Reads to the monotonic counter low register are ignored. + */ +static inline void rtc_hal_set_monotonic_lcount_rreg(bool enable) +{ + BW_RTC_RAR_MCLR((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Monotonic Enable Register Read (MERR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Reads to the monotonic enable register complete normally. + * false: Reads to the monotonic enable register are ignored. + */ +static inline bool rtc_hal_get_monotonic_enable_rreg(void) +{ + return (bool)BR_RTC_RAR_MERR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Monotonic Enable Register Read (MERR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Reads to the monotonic enable register complete normally. + * false: Reads to the monotonic enable register are ignored. + */ +static inline void rtc_hal_set_monotonic_enable_rreg(bool enable) +{ + BW_RTC_RAR_MERR((uint32_t) enable); +} +#endif + +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Interrupt Enable Register Read (IERR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Reads to the interrupt enable register complete normally. + * false: Reads to the interrupt enable register are ignored. + */ +static inline bool rtc_hal_get_interrupt_enable_rreg(void) +{ + return (bool)BR_RTC_RAR_IERR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Interrupt Enable Register Read (IERR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Reads to the interrupt enable register complete normally. + * false: Reads to the interrupt enable register are ignored. + */ +static inline void rtc_hal_set_interrupt_enable_rreg(bool enable) +{ + BW_RTC_RAR_IERR((uint32_t) enable); +} + +/*! @brief reads the value of the RTC Read Access Register (RTC_RAR), + * field Lock Register Read (LRR). Once cleared, + * this bit is only set by system reset. It is not affected by + * VBAT POR or software reset. + * @return true: Reads to the lock register complete as normal. + * false: Reads to the lock register are ignored. + */ +static inline bool rtc_hal_get_lock_rreg(void) +{ + return (bool)BR_RTC_RAR_LRR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Lock Register Read (LRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Reads to the lock register complete normally. + * false: Reads to the lock register are ignored. + */ +static inline void rtc_hal_set_lock_rreg(bool enable) +{ + BW_RTC_RAR_LRR((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Status Register Read (SRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Reads to the status register complete normally. + * false: Reads to the status register are ignored. + */ +static inline bool rtc_hal_get_status_rreg(void) +{ + return (bool)BR_RTC_RAR_SRR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Status Register Read (SRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or software reset. + * @param enable true: Reads to the status register complete normally. + * false: Reads to the status register are ignored. + */ +static inline void rtc_hal_set_status_rreg(bool enable) +{ + BW_RTC_RAR_SRR((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Control Register Read (CRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or software reset. + * @return true: Reads to the control register complete normally. + * false: Reads to the control register are ignored. + */ +static inline bool rtc_hal_get_control_rreg(void) +{ + return (bool)BR_RTC_RAR_CRR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Control Register Read (CRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or software reset. + * @param enable true: Reads to the control register complete normally. + * false: Reads to the control register are ignored. + */ +static inline void rtc_hal_set_control_rreg(bool enable) +{ + BW_RTC_RAR_CRR((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Time Compensation Register Read (TCRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or software reset. + * @return true: Reads to the time compensation register complete normally. + * false: Reads to the time compensation register are ignored. + */ +static inline bool rtc_hal_get_compensation_rreg(void) +{ + return (bool)BR_RTC_RAR_TCRR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Time Compensation Register Read (TCRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or software reset. + * @param enable true: Reads to the time compensation register complete normally. + * false: Reads to the time compensation register are ignored. + */ +static inline void rtc_hal_set_compensation_rreg(bool enable) +{ + BW_RTC_RAR_TCRR((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Time Alarm Register Read (TARR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or software reset. + * @return true: Reads to the time alarm register complete normally. + * false: Reads to the time alarm register are ignored. + */ +static inline bool rtc_hal_get_alarm_rreg(void) +{ + return (bool)BR_RTC_RAR_TARR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Time Alarm Register Read (TARR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Reads to the time alarm register complete normally. + * false: Reads to the time alarm register are ignored. + */ +static inline void rtc_hal_set_alarm_rreg(bool enable) +{ + BW_RTC_RAR_TARR((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Time Prescaler Register Read (TPRR). Once cleared, + * this bit is only set by the system reset. It is not affected by + * VBAT POR or software reset. + * @return true: Reads to the time prescaler register complete normally. + * false: Reads to the time prescaler register are ignored. + */ +static inline bool rtc_hal_get_prescaler_rreg(void) +{ + return (bool)BR_RTC_RAR_TPRR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Time Prescaler Register Read (TPRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Reads to the time prescaler register complete normally. + * false: Reads to the time prescaler register are ignored. + */ +static inline void rtc_hal_set_prescaler_rreg(bool enable) +{ + + BW_RTC_RAR_TPRR((uint32_t) enable); +} + +/*! @brief Reads the value of the RTC Read Access Register (RTC_RAR), + * field Time Seconds Register Read (TSRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @return true: Reads to the time seconds register complete normally. + * false: Reads to the time seconds register are ignored. + */ +static inline bool rtc_hal_get_seconds_rreg(void) +{ + return (bool)BR_RTC_RAR_TSRR; +} + +/*! @brief Writes to the RTC Read Access Register (RTC_RAR), + * field Time Seconds Register Read (TSRR). Once cleared, + * this bit is only set by the system reset. It is not affected by the + * VBAT POR or the software reset. + * @param enable true: Reads to the time seconds register complete normally. + * false: Reads to the time seconds register are ignored. + */ +static inline void rtc_hal_set_seconds_rreg(bool enable) +{ + BW_RTC_RAR_TSRR((uint32_t) enable); +} + + +#if defined(__cplusplus) +} +#endif + +#endif + +/*! @}*/ + +#endif /* __FSL_RTC_HAL_MONOTONIC_H__*/ + +/******************************************************************************* + * EOF + ******************************************************************************/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/rtc/fsl_rtc_hal_monotonic.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,313 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_RTC_HAL_MONOTONIC_H__) +#define __FSL_RTC_HAL_MONOTONIC_H__ + + +#include "fsl_rtc_features.h" +#include "device/fsl_device_registers.h" +#include <stdint.h> +#include <stdbool.h> + + + +/*! @addtogroup rtc_hal*/ +/*! @{*/ + + +/******************************************************************************* + * Definitions + ******************************************************************************/ + + + +/******************************************************************************* + * API + ******************************************************************************/ + +#if FSL_FEATURE_RTC_HAS_MONOTONIC + +#if defined(__cplusplus) +extern "C" { +#endif + + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Monotonic Counter Register Reset Functions*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Resets the RTC Monotonic Enable Register (RTC_MER).*/ +static inline void rtc_hal_reset_reg_MER(void) +{ + HW_RTC_MER_WR((uint32_t)0x00000000U); +} + +/*! @brief Resets the RTC Monotonic Counter Low Register (RTC_MCLR).*/ +static inline void rtc_hal_reset_reg_MCLR(void) +{ + HW_RTC_MCLR_WR((uint32_t)0x00000000U); +} + +/*! @brief Resets the RTC Monotonic Counter High Register (RTC_MCHR).*/ +static inline void rtc_hal_reset_reg_MCHR(void) +{ + HW_RTC_MCHR_WR((uint32_t)0x00000000U); +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Monotonic Enable*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief For the monotonic counter reads the mode writing. + * @return true: Enables writing to the monotonic counter increment the counter. + * false: Enables writing to the monotonic counter load the counter with the + * value written. + */ +static inline bool rtc_hal_read_monotonic_enable(void) +{ + /* reads the value of the RTC Monotonic Enable Register (RTC_MER), field + * Monotonic Counter Enable (MCE). */ + return (bool)BR_RTC_MER_MCE; +} + +/*! @brief Changes the state of the Monotonic Counter Enable. + * @param enable true: Writes to the monotonic counter increment the counter. + * false: Writes to the monotonic counter load the counter with the + * value written. + */ +static inline void rtc_hal_config_monotonic_enable(bool enable) +{ + /* writes to the RTC Monotonic Enable Register (RTC_MER), field Monotonic + * Counter Enable (MCE).*/ + BW_RTC_MER_MCE((uint32_t) enable); +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Monotonic Counter*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Reads the values of the Monotonic Counter High and the Monotonic Counter + * Low and returns them into a single value. + * @param counter [out] pointer to variable where the value is stored. + */ +static inline void rtc_hal_get_monotonic_counter(uint64_t * counter) +{ + /* check for null pointer*/ + if(NULL == counter) + { + return; + } + + uint64_t tmpCountHigh = 0; + + /* store in temporal variable to avoid compile warning*/ + tmpCountHigh = BR_RTC_MCHR_MCH; + + *counter = (((uint64_t)(tmpCountHigh) << 32) | ((uint64_t)(BR_RTC_MCLR_MCL))); +} + +/*! @brief Writes values Monotonic Counter High and Monotonic Counter Low + * by decomposing the given single value. + * @param counter [in] pointer to the variable where the value is stored. + */ +static inline void rtc_hal_set_monotonic_counter(const uint64_t * counter) +{ + /* check for null pointer*/ + if(NULL == counter) + { + return; + } + + /* enable writing to the counter*/ + BW_RTC_MER_MCE(0U); + + BW_RTC_MCLR_MCL((uint32_t)(*counter)); + + /* enable writing to the counter*/ + BW_RTC_MER_MCE(0U); + + BW_RTC_MCHR_MCH((uint32_t)((*counter) >> 32)); +} + +/*! @brief Increments one to the Monotonic Counter.*/ +/*! @return true: success; false: error, time invalid flag found.*/ +static inline bool rtc_hal_monotonic_counter_increment(void) +{ + bool result = false; + + /* Increments the Monotonic Counter (registers RTC_MCLR and RTC_MCHR + * accordingly); by setting the monotonic counter enable (MER[MCE]) and then + * writing to RTC_MCLR register. A write to monotonic counter low that causes + * it to overflow also increments the monotonic counter high. */ + + if((!(BR_RTC_SR_TIF)) && (!(BR_RTC_SR_MOF))) + { + /* prepare for incrementing after write*/ + BW_RTC_MER_MCE(1U); + + /* write anything so the counter increments*/ + BW_RTC_MCLR_MCL(1U); + + result = true; + } + + return result; +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Status*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Reads the value of the Monotonic Overflow Flag (MOF). This flag is + * set when the monotonic counter is enabled and the monotonic + * counter high overflows. The monotonic counter does not increment + * and reads as zero when this bit is set. This bit is cleared + * by writing the monotonic counter high register when the monotonic + * counter is disabled. + * @return true: monotonic counter overflow has occurred and monotonic + counter is read as zero. + * false: NO monotonic counter overflow has occurred. + */ +static inline bool rtc_hal_is_monotonic_counter_overflow(void) +{ + return (bool)BR_RTC_SR_MOF; +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Lock*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Reads the value of the Monotonic Counter High Lock. + * @return true: Monotonic counter high register is not locked and writes + * complete normally. + * false: Monotonic counter high register is locked and writes are + * ignored. + */ +static inline bool rtc_hal_read_monotonic_hcounter_lock(void) +{ + /* Reads the RTC Lock Register (RTC_LR), field Monotonic Counter High Lock + * (MCHL). */ + return (bool)BR_RTC_LR_MCHL; +} + +/*! @brief Clears the Monotonic Counter High Lock. Once done, this + * flag can only be set by VBAT POR orthe software reset. + */ +static inline void rtc_hal_clear_monotonic_hcounter_lock(void) +{ + /* Writes 0 to the RTC Lock Register (RTC_LR), field Monotonic Counter High Lock + * (MCHL). Once cleared, this flag can only be set by VBAT POR or software + * reset. */ + BW_RTC_LR_MCHL(0U); +} + +/*! @brief Reads the value of the Monotonic Counter Low Lock. + * @return true: Monotonic counter low register is not locked and writes + * complete normally. + * false: Monotonic counter low register is locked and writes are + * ignored. + */ +static inline bool rtc_hal_read_lcounter_lock(void) +{ + /* Reads the value of the RTC Lock Register (RTC_LR), field Monotonic Counter + * Low Lock (MCLL). */ + return (bool)BR_RTC_LR_MCLL; +} + +/*! @brief Clears the Monotonic Counter Low Lock. Once done, this flag + * can only be set by the VBAT POR or the software reset. + */ +static inline void rtc_hal_clear_lcounter_lock(bool set_to) +{ + BW_RTC_LR_MCLL(0U); +} + +/*! @brief Reads the value of the Monotonic Enable Lock. + * @return true: Monotonic enable register is not locked and writes + * complete normally. + * false: Monotonic enable register is locked and writes are + * ignored. + */ +static inline bool rtc_hal_read_monotonic_enable_lock(void) +{ + /* Reads the value of the RTC Lock Register (RTC_LR), field Monotonic Enable + * Lock (MEL). Once cleared, this flag can only be set by the VBAT POR or the software + * reset. */ + return (bool)BR_RTC_LR_MEL; +} + +/*! @brief Clears the Monotonic Enable Lock. Once done, this flag can + * only be set by the VBAT POR or the software reset. + */ +static inline void rtc_hal_clear_monotonic_enable_lock(void) +{ + /* Writes to the RTC Lock Register (RTC_LR), field Monotonic Enable Lock (MEL). + * Once cleared, this flag can only be set by the VBAT POR or the software reset. */ + BW_RTC_LR_MEL(0U); +} + +/*-------------------------------------------------------------------------------------------*/ +/* RTC Interrupt Enable*/ +/*-------------------------------------------------------------------------------------------*/ + +/*! @brief Checks whether the Monotonic Overflow Interrupt is enabled/disabled. + * @return true: Monotonic overflow flag generates an interrupt. + * false: Monotonic overflow flag does not generate an interrupt. + */ +static inline bool rtc_hal_read_monot_overflow_int_enable(void) +{ + /* Reads the value of the RTC Interrupt Enable Register (RTC_IER), field + * Monotonic Overflow Interrupt Enable (MOIE). */ + return (bool)BR_RTC_IER_MOIE; +} + +/*! @brief Enables/disables the Monotonic Overflow Interrupt Enable. + * @param enable true: Monotonic overflow flag generates an interrupt. + * false: Monotonic overflow flag does not generate an interrupt. + */ +static inline void rtc_hal_config_monot_overflow_int_enable(bool enable) +{ + BW_RTC_IER_MOIE((uint32_t) enable); +} + + +#if defined(__cplusplus) +} +#endif + +#endif + +/*! @}*/ + +#endif /* __FSL_RTC_HAL_MONOTONIC_H__*/ + +/******************************************************************************* + * EOF + ******************************************************************************/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/sai/fsl_sai_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_I2S_FEATURES_H__) +#define __FSL_I2S_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || \ + defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || \ + defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || \ + defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) || defined(CPU_MK24FN1M0VDC12) || defined(CPU_MK24FN1M0VLQ12) || \ + defined(CPU_MK63FN1M0VLQ12) || defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLL12) || \ + defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12) || \ + defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || defined(CPU_MK65FX1M0VMI18) || \ + defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || defined(CPU_MK66FX1M0VMD18) || \ + defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || \ + defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) + /* @brief Receive/transmit FIFO size in item count (register bit fields TCSR[FRDE], TCSR[FRIE], TCSR[FRF], TCR1[TFW], RCSR[FRDE], RCSR[FRIE], RCSR[FRF], RCR1[RFW], registers TFRn, RFRn).*/ + #define FSL_FEATURE_I2S_FIFO_COUNT (8) + /* @brief Receive/transmit channel number (register bit fields TCR3[TCE], RCR3[RCE], registers TDRn and RDRn).*/ + #define FSL_FEATURE_I2S_CHANNEL_COUNT (2) + /* @brief Maximum words per frame (register bit fields TCR3[WDFL], TCR4[FRSZ], TMR[TWM], RCR3[WDFL], RCR4[FRSZ], RMR[RWM]).*/ + #define FSL_FEATURE_I2S_MAX_WORDS_PER_FRAME (32) +#elif defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || \ + defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || defined(CPU_MK22FN512VLL12) + /* @brief Receive/transmit FIFO size in item count (register bit fields TCSR[FRDE], TCSR[FRIE], TCSR[FRF], TCR1[TFW], RCSR[FRDE], RCSR[FRIE], RCSR[FRF], RCR1[RFW], registers TFRn, RFRn).*/ + #define FSL_FEATURE_I2S_FIFO_COUNT (8) + /* @brief Receive/transmit channel number (register bit fields TCR3[TCE], RCR3[RCE], registers TDRn and RDRn).*/ + #define FSL_FEATURE_I2S_CHANNEL_COUNT (1) + /* @brief Maximum words per frame (register bit fields TCR3[WDFL], TCR4[FRSZ], TMR[TWM], RCR3[WDFL], RCR4[FRSZ], RMR[RWM]).*/ + #define FSL_FEATURE_I2S_MAX_WORDS_PER_FRAME (16) +#elif defined(CPU_MKL46Z128VLH4) || defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || defined(CPU_MKL46Z256VLL4) || \ + defined(CPU_MKL46Z128VMC4) || defined(CPU_MKL46Z256VMC4) + /* @brief Receive/transmit FIFO size in item count (register bit fields TCSR[FRDE], TCSR[FRIE], TCSR[FRF], TCR1[TFW], RCSR[FRDE], RCSR[FRIE], RCSR[FRF], RCR1[RFW], registers TFRn, RFRn).*/ + #define FSL_FEATURE_I2S_FIFO_COUNT (1) + /* @brief Receive/transmit channel number (register bit fields TCR3[TCE], RCR3[RCE], registers TDRn and RDRn).*/ + #define FSL_FEATURE_I2S_CHANNEL_COUNT (1) + /* @brief Maximum words per frame (register bit fields TCR3[WDFL], TCR4[FRSZ], TMR[TWM], RCR3[WDFL], RCR4[FRSZ], RMR[RWM]).*/ + #define FSL_FEATURE_I2S_MAX_WORDS_PER_FRAME (2) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_I2S_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/sai/fsl_sai_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,926 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __FSL_SAI_HAL_H__ +#define __FSL_SAI_HAL_H__ + + +#include <string.h> +#include <stdbool.h> +#include <assert.h> +#include "fsl_device_registers.h" +#include "fsl_sai_features.h" + + +/*! + * @addtogroup sai_hal + * @{ + */ + +/*! @file */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/* Defines the bit limits of in a word*/ +#define SAI_BIT_MIN 8 +#define SAI_BIT_MAX 32 + +/* Defines the limits of word number per frame */ +#define SAI_WORD_MAX FSL_FEATURE_I2S_MAX_WORDS_PER_FRAME + +/* Defines the maximum div and fract value for master clock divider. */ +#define SAI_FRACT_MAX 256 +#define SAI_DIV_MAX 4096 + +/* Defines the maximum value for watermark setting. */ +#define SAI_WATERMARK_MAX FSL_FEATURE_I2S_FIFO_COUNT +#define SAI_FIFO_LEN FSL_FEATURE_I2S_FIFO_COUNT + +/*! @brief Defines the SAI bus type. */ +typedef enum _sai_bus +{ + kSaiBusI2SLeft = 0x0,/*!< Use I2S left aligned format */ + kSaiBusI2SRight = 0x1,/*!< Use I2S right aligned format */ + kSaiBusI2SType = 0x2,/*!< Use I2S format */ + } sai_bus_t; + +/*! @brief Transmits or receives data; Reads and writes at the same time.*/ +typedef enum _sai_io_mode +{ + kSaiIOModeTransmit = 0x0,/*!< Write data to FIFO */ + kSaiIOModeReceive = 0x1,/*!< Read data from FIFO */ + kSaiIOModeDuplex = 0x2/*!< Read data and write data at the same time */ +} sai_io_mode_t; + +/*! @brief Master or slave mode */ +typedef enum _sai_master_slave +{ + kSaiMaster = 0x0,/*!< Master mode */ + kSaiSlave = 0x1/*!< Slave mode */ +} sai_master_slave_t; + +/*! @brief Synchronous or asynchronous mode */ +typedef enum _sai_sync_mode +{ + kSaiModeAsync = 0x0,/*!< Asynchronous mode */ + kSaiModeSync = 0x1,/*!< Synchronous mode (with receiver or transmit) */ + kSaiModeSyncWithOtherTx = 0x2,/*!< Synchronous with another SAI transmit */ + kSaiModeSyncWithOtherRx = 0x3/*!< Synchronous with another SAI receiver */ +} sai_sync_mode_t; + +/*! @brief Mater clock source */ +typedef enum _sai_mclk_source +{ + kSaiMclkSourceSysclk = 0x0,/*!< Master clock from the system clock */ + kSaiMclkSourceExtal = 0x1,/*!< Master clock from the extal */ + kSaiMclkSourceAltclk = 0x2,/*!< Master clock from the ALT */ + kSaiMclkSourcePllout = 0x3/*!< Master clock from the PLL */ +} sai_mclk_source_t; + +/*! @brief Bit clock source */ +typedef enum _sai_bclk_source +{ + kSaiBclkSourceBusclk = 0x0,/*!< Bit clock using bus clock */ + kSaiBclkSourceMclkDiv = 0x1,/*!< Bit clock using master clock divider */ + kSaiBclkSourceOtherSai0 = 0x2,/*!< Bit clock from other SAI device */ + kSaiBclkSourceOtherSai1 = 0x3/*!< Bit clock from other SAI device */ +} sai_bclk_source_t; + +/*! @brief The SAI state flag.*/ +typedef enum _sai_interrupt_request +{ + kSaiIntrequestWordStart = 0x0,/*!< Word start flag, means the first word in a frame detected */ + kSaiIntrequestSyncError = 0x1,/*!< Sync error flag, means the sync error is detected */ + kSaiIntrequestFIFOWarning = 0x2,/*!< FIFO warning flag, means the FIFO is empty */ + kSaiIntrequestFIFOError = 0x3,/*!< FIFO error flag */ + kSaiIntrequestFIFORequest = 0x4/*!< FIFO request, means reached watermark */ +} sai_interrupt_request_t; + + +/*! @brief The DMA request sources */ +typedef enum _sai_dma_type +{ + kSaiDmaReqFIFOWarning = 0x0,/*!< FIFO warning caused by the DMA request */ + kSaiDmaReqFIFORequest = 0x1/*!< FIFO request caused by the DMA request */ +} sai_dma_request_t; + +/*! @brief The SAI state flag*/ +typedef enum _sai_state_flag +{ + kSaiStateFlagWordStart = 0x0,/*!< Word start flag, means the first word in a frame detected. */ + kSaiStateFlagSyncError = 0x1,/*!< Sync error flag, means the sync error is detected */ + kSaiStateFlagFIFOError = 0x2,/*!< FIFO error flag */ + kSaiStateFlagSoftReset = 0x3 /*!< Software reset flag */ +} sai_state_flag_t; + +/*! @brief The reset type */ +typedef enum _sai_reset +{ + kSaiResetTypeSoftware = 0x0,/*!< Software reset, reset the logic state */ + kSaiResetTypeFIFO = 0x1/*!< FIFO reset, reset the FIFO read and write pointer */ +} sai_reset_type_t; + +/* + * @brief The SAI running mode + * The mode includes normal mode, debug mode, and stop mode. + */ +typedef enum _sai_running_mode +{ + kSaiRunModeDebug = 0x0,/*!< In debug mode */ + kSaiRunModeStop = 0x1/*!< In stop mode */ +} sai_mode_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @brief Initializes the SAI device. + * + * The initialization resets the SAI module by setting the SR bit of TCSR and the RCSR register. + * Note that the function would write 0 to every control registers. + * @param instance The SAI peripheral instance number. + */ +void sai_hal_init(uint8_t instance); + +/*! + * @brief Sets the bus protocol relevant settings for Tx. + * + * The bus mode means which protocol SAI uses. It can be I2S left, right, and so on. Each protocol + * would have different configuration on bit clock and frame sync. + * @param instance The SAI peripheral instance number. + * @param bus_mode The protocol selection, it can be I2S left aligned, I2S right aligned, etc. + */ +void sai_hal_set_tx_bus(uint8_t instance, sai_bus_t bus_mode); + +/*! + * @brief Sets the bus protocol relevant settings for Rx. + * + * The bus mode means which protocol SAI uses. It can be I2S left, right and so on. Each protocol + * has a different configuration on bit clock and frame sync. + * @param instance The SAI peripheral instance number. + * @param bus_mode The protocol selection, it can be I2S left aligned, I2S right aligned, etc. + */ +void sai_hal_set_rx_bus(uint8_t instance, sai_bus_t bus_mode); + +/*! + * @brief Sets the master clock source. + * + * The source of the clock can be: PLL_OUT, ALT_CLK, EXTAL, SYS_CLK. + * This function sets the clock source for SAI master clock source. + * Master clock is used to produce the bit clock for the data transfer. + * @param instance The SAI peripheral instance number. + * @param source Mater clock source + */ +static inline void sai_hal_set_mclk_source(uint8_t instance, sai_mclk_source_t source) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + BW_I2S_MCR_MICS(instance,source); +} + +/*! + * @brief Sets the divider of the master clock. + * + * Using the divider to get the master clock frequency wanted from the source. + * mclk = clk_source * fract/divide. The input is the master clock frequency needed and the source clock frequency. + * The master clock is decided by the sample rate and the multi-clock number. + * @param instance The SAI peripheral instance number. + * @param mclk Master clock frequency needed. + * @param src_clk The source clock frequency. + */ +void sai_hal_set_mclk_divider(uint8_t instance, uint32_t mclk, uint32_t src_clk); + +/*! + * @brief Sets the bit clock source of Tx. It is generated by the master clock, bus clock, and other devices. + * + * The function sets the source of the bit clock. The bit clock can be produced by the master + * clock, and from the bus clock or other SAI Tx/Rx. Tx and Rx in the SAI module can use the same bit + * clock either from Tx or Rx. + * @param instance The SAI peripheral instance number. + * @param source Bit clock source. + */ +static inline void sai_hal_set_tx_bclk_source(uint8_t instance, sai_bclk_source_t source) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + BW_I2S_TCR2_MSEL(instance,source); +} + +/*! + * @brief Sets the bit clock source of Rx. It is generated by the master clock, bus clock, and other devices. + * + * The function sets the source of the Rx bit clock. The bit clock can be produced by the master + * clock and from the bus clock or other SAI Tx/Rx. Tx and Rx in the SAI module use the same bit + * clock either from Tx or Rx. + * @param instance The SAI peripheral instance number. + * @param source Bit clock source. + */ +static inline void sai_hal_set_rx_bclk_source(uint8_t instance, sai_bclk_source_t source) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + BW_I2S_RCR2_MSEL(instance,source); +} + +/*! + * @brief Sets the bit clock divider value of Tx. + * + * bclk = mclk / divider. At the same time, bclk = sample_rate * channel * bits. This means + * how much time is needed to transfer one bit. + * Notice: The function is called while the bit clock source is the master clock. + * @param instance The SAI peripheral instance number. + * @param div The divide number of bit clock. + */ +static inline void sai_hal_set_tx_blck_divider(uint8_t instance, uint32_t divider) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(divider); + BW_I2S_TCR2_DIV(instance,divider/2 -1); +} + +/*! + * @brief Sets the bit clock divider value of Tx. + * + * bclk = mclk / divider. At the same time, bclk = sample_rate * channel * bits. This means + * how much time is needed to transfer one bit. + * Notice: The function is called while the bit clock source is the master clock. + * @param instance The SAI peripheral instance number. + * @param div The divide number of bit clock. + */ +static inline void sai_hal_set_rx_blck_divider(uint8_t instance, uint32_t divider) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(divider); + BW_I2S_RCR2_DIV(instance,divider/2 -1); +} + +/*! + * @brief Sets the frame size for Tx. + * + * The frame size means how many words are in a frame. For example 2-channel + * audio data, the frame size is 2. This means there are 2 words in a frame. + * @param instance The SAI peripheral instance number. + * @param size Words number in a frame. + */ +static inline void sai_hal_set_tx_frame_size(uint8_t instance, uint8_t size) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(size <= SAI_WORD_MAX); + BW_I2S_TCR4_FRSZ(instance,size-1); +} + +/*! + * @brief Set the frame size for rx. + * + * The frame size means how many words in a frame. In the usual case, for example 2-channel + * audio data, the frame size is 2, means 2 words in a frame. + * @param instance The sai peripheral instance number. + * @param size Words number in a frame. + */ +static inline void sai_hal_set_rx_frame_size(uint8_t instance, uint8_t size) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(size <= SAI_WORD_MAX); + BW_I2S_RCR4_FRSZ(instance,size-1); +} + +/*! + * @brief Set the word size for tx. + * + * The word size means the quantization level of audio file. + * Generally, there are 8bit, 16bit, 24bit, 32bit format which sai would all support. + * @param instance The sai peripheral instance number. + * @param bits How many bits in a word. +*/ +static inline void sai_hal_set_tx_word_size(uint8_t instance, uint8_t bits) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert((bits >= SAI_BIT_MIN) && (bits <= SAI_BIT_MAX)); + BW_I2S_TCR5_WNW(instance,bits-1); +} + +/*! + * @brief Sets the word size for Rx. + * + * The word size means the quantization level of the audio file. + * Generally, SAI supports 8 bit, 16 bit, 24 bit, and 32 bit formats. + * @param instance The SAI peripheral instance number. + * @param bits How many bits in a word. + */ +static inline void sai_hal_set_rx_word_size(uint8_t instance, uint8_t bits) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert((bits >= SAI_BIT_MIN) && (bits <= SAI_BIT_MAX)); + BW_I2S_RCR5_WNW(instance,bits-1); +} + +/*! + * @brief Sets the size of the first word of the frame for Tx. + * + * In I2S protocol, the size of the first word is the same as the size of other words. In some protocols, + * for example, AC'97, the size of the first word is not the same as other sizes. This function + * sets the length of the first word which is, in most situations, the same as others. + * @param instance The SAI peripheral instance number. + * @param size The length of frame head word. + */ +static inline void sai_hal_set_tx_word_zero_size(uint8_t instance, uint8_t size) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert((size >= SAI_BIT_MIN) && (size <= SAI_BIT_MAX)); + BW_I2S_TCR5_W0W(instance,size-1); +} + +/*! + * @brief Sets the size of the first word of the frame for Rx. + * + * In I2S protocol, the size of the first word is the same as the size of other words. In some protocols, + * for example, AC'97, the first word is not the same size as others. This function + * sets the length of the first word, which is, in most situations, the same as others. + * @param instance The SAI peripheral instance number. + * @param size The length of frame head word. + */ +static inline void sai_hal_set_rx_word_zero_size(uint8_t instance, uint8_t size) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert((size >= SAI_BIT_MIN) && (size <= SAI_BIT_MAX)); + BW_I2S_RCR5_W0W(instance,size-1); +} + +/*! + * @brief Sets the sync width for Tx. + * + * A sync is the number of bit clocks of a frame. The sync width cannot be longer than the + * length of the first word of the frame. + * @param instance The SAI peripheral instance number. + * @param width How many bit clock in a sync. + */ +static inline void sai_hal_set_tx_sync_width(uint8_t instance, uint8_t width) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(width <= SAI_BIT_MAX); + BW_I2S_TCR4_SYWD(instance,width-1); +} + +/*! + * @brief Sets the sync width for Rx. + * + * A sync is the number of bit clocks of a frame. The sync width cannot be longer than the + * length of the first word of the frame. + * @param instance The SAI peripheral instance number. + * @param width How many bit clock in a sync. + */ +static inline void sai_hal_set_rx_sync_width(uint8_t instance, uint8_t width) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(width <= SAI_BIT_MAX); + BW_I2S_RCR4_SYWD(instance,width-1); +} + +/*! + * @brief Sets the watermark value for Tx FIFO. + * + * While the value in the Tx FIFO is less or equal to the watermark , it generates an interrupt + * request or a DMA request. The watermark value cannot be greater than the depth of FIFO. + * @param instance The SAI peripheral instance number. + * @param watermark Watermark value of a FIFO. + */ +static inline void sai_hal_set_tx_watermark(uint8_t instance, uint8_t watermark) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(watermark < SAI_WATERMARK_MAX); + BW_I2S_TCR1_TFW(instance,watermark); +} + +/*! + * @brief Sets the watermark value for Rx FIFO. + * + * While the value in Rx FIFO is larger or equal to the watermark , it generates an interrupt + * request or a DMA request. The watermark value cannot be greater than the depth of FIFO. + * @param instance The SAI peripheral instance number. + * @param watermark Watermark value of a FIFO. + */ +static inline void sai_hal_set_rx_watermark(uint8_t instance, uint8_t watermark) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(watermark < SAI_WATERMARK_MAX); + BW_I2S_RCR1_RFW(instance,watermark); +} + +/*! + * @brief Sets the master or slave mode of Tx. + * + * The function sets the Tx mode to either master or slave. The master mode provides its + * own clock and slave mode uses the external clock. + * @param instance The SAI peripheral instance number. + * @param master_slave_mode Mater or slave mode. + */ +void sai_hal_set_tx_master_slave(uint8_t instance, sai_master_slave_t master_slave_mode); + +/*! + * @brief Sets the Rx master or slave mode. + * + * The function sets the Rx mode to either master or slave. Master mode provides its + * own clock and slave mode uses the external clock. + * @param instance The SAI peripheral instance number. + * @param master_slave_mode Mater or slave mode. + */ +void sai_hal_set_rx_master_slave(uint8_t instance, sai_master_slave_t master_slave_mode); + +/*! + * @brief Transmits the mode setting. + * + * The mode can be asynchronous mode, synchronous, or synchronous with another SAI device. + * When configured for a synchronous mode of operation, the receiver must be configured for the asynchronous operation. + * @param instance The SAI peripheral instance number. + * @param sync_mode Synchronous mode or Asynchronous mode. + */ +void sai_hal_set_tx_sync_mode(uint8_t instance, sai_sync_mode_t sync_mode); + +/*! + * @brief Receives the mode setting. + * + * The mode can be asynchronous mode, synchronous, synchronous with another SAI device. + * When configured for a synchronous mode of operation, the receiver must be configured for the asynchronous operation. + * @param instance The SAI peripheral instance number. + * @param sync_mode Synchronous mode or Asynchronous mode. + */ +void sai_hal_set_rx_sync_mode(uint8_t instance, sai_sync_mode_t sync_mode); + +/*! + * @brief Gets the FIFO read pointer. + * + * It is used to judge whether the FIFO is full or empty and know how much space there is for FIFO. + * If read_ptr == write_ptr, the FIFO is empty. While the bit of the read_ptr and the write_ptr are + * equal except for the MSB, the FIFO is full. + * @param instance The SAI peripheral instance number. + * @param io_mode Transmit or receive data. + * @param fifo_channel FIFO channel selected. + * @return FIFO read pointer value. + */ +uint8_t sai_hal_get_fifo_read_pointer(uint8_t instance, sai_io_mode_t io_mode, uint8_t fifo_channel); + +/*! + * @brief Gets the FIFO read pointer. + * + * It is used to judge whether the FIFO is full or empty and know how much space there is for FIFO. + * If the read_ptr == write_ptr, the FIFO is empty. While the bit of the read_ptr and write_ptr are + * equal except for the MSB, the FIFO is full. + * @param instance The SAI peripheral instance number. + * @param io_mode Transmit or receive data. + * @param fifo_channel FIFO channel selected. + * @return FIFO write pointer value + */ +uint8_t sai_hal_get_fifo_write_pointer(uint8_t instance, sai_io_mode_t io_mode,uint8_t fifo_channel); + +/*! + * @brief Gets the TDR/RDR register address. + * + * This function is for DMA transfer because it needs to know the dest/src address of the DMA transfer. + * @param instance The SAI peripheral instance number. + * @param io_mode Transmit or receive data. + * @param fifo_channel FIFO channel selected. + * @return TDR register or RDR register address + */ +uint32_t* sai_hal_get_fifo_address(uint8_t instance, sai_io_mode_t io_mode, uint8_t fifo_channel); + +/*! + * @brief Enables the Tx transmit. + * + * Enables the transmitter. This function enables both the bit clock and the transfer channel. + * @param instance The SAI peripheral instance number. + */ +static inline void sai_hal_enable_tx(uint8_t instance) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + BW_I2S_TCSR_BCE(instance,1); + BW_I2S_TCSR_TE(instance,1); +} + +/*! + * @brief Enables the Rx receive. + * + * Enables the receiver. This function enables both the bit clock and the receive channel. + * @param instance The SAI peripheral instance number. + */ +static inline void sai_hal_enable_rx(uint8_t instance) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + BW_I2S_RCSR_BCE(instance,1); + BW_I2S_RCSR_RE(instance,1); +} + +/*! + * @brief Disables the Tx transmit. + * + * Disables the transmitter. This function disables both the bit clock and the transfer channel. + * When software clears this field, the transmitter remains enabled, and this bit remains set, until + * the end of the current frame. + * @param instance The SAI peripheral instance number. + */ +static inline void sai_hal_disable_tx(uint8_t instance) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + BW_I2S_TCSR_TE(instance,0); + BW_I2S_TCSR_BCE(instance,0); +} + +/*! + * @brief Disables the Rx receive. + * + * Disables the receiver. This function disables both the bit clock and the transfer channel. + * When software clears this field, the receiver remains enabled, and this bit remains set, until + * the end of the current frame. + * @param instance The SAI peripheral instance number. + */ +static inline void sai_hal_disable_rx(uint8_t instance) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + BW_I2S_RCSR_RE(instance,0); + BW_I2S_RCSR_BCE(instance,0); +} + +/*! + * @brief Enables the Tx interrupt from different interrupt sources. + * + * The interrupt source can be : Word start flag, Sync error flag, FIFO error flag, FIFO warning flag, FIFO request flag. + * This function sets which flag causes an interrupt request. + * @param instance The SAI peripheral instance number. + * @param source SAI interrupt request source. + */ +void sai_hal_enable_tx_interrupt(uint8_t instance, sai_interrupt_request_t source); + +/*! + * @brief Enables the Rx interrupt from different sources. + * + * The interrupt source can be : Word start flag, Sync error flag, FIFO error flag, FIFO warning flag, FIFO request flag. + * This function sets which flag causes an interrupt request. + * @param instance The SAI peripheral instance number. + * @param source SAI interrupt request source. + */ +void sai_hal_enable_rx_interrupt(uint8_t instance, sai_interrupt_request_t source); + +/*! + * @brief Disables the Tx interrupts from different interrupt sources. + * + * This function disables the interrupt requests from the interrupt request source of SAI. + * @param instance The SAI peripheral instance number. + * @param source SAI interrupt request source. + */ +void sai_hal_disable_tx_interrupt(uint8_t instance, sai_interrupt_request_t source); + +/*! + * @brief Disables Rx interrupts from different interrupt sources. + * + * This function disables the interrupt requests from interrupt request source of SAI. + * @param instance The SAI peripheral instance number. + * @param source SAI interrupt request source. + */ +void sai_hal_disable_rx_interrupt(uint8_t instance, sai_interrupt_request_t source); + +/*! + * @brief Enables the Tx DMA request from different sources. + * + * The DMA sources can be FIFO warning and FIFO request. + * This function enables the DMA request from different DMA request sources. + * @param instance The SAI peripheral instance number. + * @param source SAI DMA request source. + */ +void sai_hal_enable_tx_dma(uint8_t instance, sai_dma_request_t request); + +/*! + * @brief Enables the Rx DMA request from different sources. + * + * The DMA sources can be: FIFO warning and FIFO request. + * This function enables the DMA request from different DMA request sources. + * @param instance The SAI peripheral instance number. + * @param source SAI DMA request source. + */ +void sai_hal_enable_rx_dma(uint8_t instance, sai_dma_request_t request); + +/*! + * @brief Disables the Tx DMA request from different sources. + * + * The function disables the DMA request of Tx in SAI. DMA request can from FIFO warning or FIFO + * request which means FIFO is empty or reach the watermark. + * @param instance The SAI peripheral instance number. + * @param source SAI DMA request source. + */ +void sai_hal_disable_tx_dma(uint8_t instance, sai_dma_request_t request); + +/*! + * @brief Disables the Rx DMA request from different sources. + * + * The function disables the DMA request of Tx in SAI. DMA request can from FIFO warning or FIFO + * request which means FIFO is empty or reach the watermark. + * @param instance The SAI peripheral instance number. + * @param source SAI DMA request source. + */ +void sai_hal_disable_rx_dma(uint8_t instance, sai_dma_request_t request); + +/*! + * @brief Clears the Tx state flags. + * + * The function is used to clear the flags manually. It can clear word start, FIFO warning, FIFO error, and + * FIFO request flag. + * @param instance The SAI peripheral instance number. + * @param flag SAI state flag type. The flag can be word start, sync error, FIFO error/warning. + */ +void sai_hal_clear_tx_state_flag(uint8_t instance, sai_state_flag_t flag); + +/*! + * @brief Clears the state flags for Rx. + * + * The function clears the flags manually. It can clear word start, FIFO warning, FIFO error, and + * FIFO request flag. + * @param instance The SAI peripheral instance number. + * @param flag SAI state flag type. The flag can be word start, sync error, FIFO error/warning. + */ +void sai_hal_clear_rx_state_flag(uint8_t instance, sai_state_flag_t flag); + +/*! + * @brief Resets the Tx. + * + * There are two kinds of reset: Software reset and FIFO reset. + * Software reset: resets all transmitter internal logic, including the bit clock generation, status flags and FIFO pointers. It does not reset the + * configuration registers. + * FIFO reset: synchronizes the FIFO write pointer to the same value as the FIFO read pointer. This empties the FIFO contents and is to be used + * after the Transmit FIFO Error Flag is set, and before the FIFO is re-initialized and the Error Flag is cleared. + * @param instance The SAI peripheral instance number. + * @param mode SAI reset type. + */ +void sai_hal_reset_tx(uint8_t instance, sai_reset_type_t mode); + +/*! + * @brief Resets the Rx. + * @param instance The SAI peripheral instance number. + * @param mode SAI reset type. + */ +void sai_hal_reset_rx(uint8_t instance, sai_reset_type_t mode); + +/*! + * @brief Sets the mask word of the frame in Tx. + * + * Each bit number represent the mask word index. For example, 0 represents mask the 0th word, 3 represents mask 0th and 1st word. + * The TMR register can be different from frame to frame. If the user wants a mono audio, set the mask to 0/1. + * @param instance The SAI peripheral instance number. + * @param mask Which bits need to be masked in a frame. + */ +static inline void sai_hal_set_tx_word_mask(uint8_t instance, uint32_t mask) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + HW_I2S_TMR_WR(instance,mask); +} + +/*! + * @brief Sets the mask word of the frame in Rx. + * @param instance The SAI peripheral instance number. + * @param mask Which bits need to be masked in a frame. + */ +static inline void sai_hal_set_rx_word_mask(uint8_t instance, uint32_t mask) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + HW_I2S_RMR_WR(instance,mask); +} + +/*! + * @brief Sets the FIFO Tx channel. + * + * A SAI instance includes a Tx and a Rx. Each has several channels according to + * different platforms. A channel means a path for the audio data input/output. + * @param instance The SAI peripheral instance number. + * @param fifo_channel FIFO channel number. + */ +static inline void sai_hal_set_tx_fifo_channel(uint8_t instance, uint8_t fifo_channel) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + BW_I2S_TCR3_TCE(instance,fifo_channel + 1); +} + +/*! + * @brief Sets the Rx FIFO channel. + * @param instance The SAI peripheral instance number. + * @param fifo_channel FIFO channel number. + */ +static inline void sai_hal_set_rx_fifo_channel(uint8_t instance, uint8_t fifo_channel) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + BW_I2S_RCR3_RCE(instance,fifo_channel + 1); +} + +/*! + * @brief Sets the running mode. There is a debug mode, stop mode and a normal mode. + * + * This function can set the working mode of the SAI instance. Stop mode is always + * used in low power cases, and the debug mode disables the SAI after the current + * transmit/receive is completed. + * @param instance The SAI peripheral instance number. + * @param mode SAI running mode. + */ +void sai_hal_set_tx_mode(uint8_t instance, sai_mode_t mode); + +/*! + * @brief Sets the Rx running mode. + * @param instance The SAI peripheral instance number. + * @param mode SAI running mode. + */ +void sai_hal_set_rx_mode(uint8_t instance, sai_mode_t mode); + +/*! + * @brief Set Tx bit clock swap. + * + * While set in asynchronous mode, the transmitter is clocked by the receiver bit clock. When set in + * synchronous mode, the transmitter is clocked by the transmitter bit clock, but uses the receiver frame + * sync. This bit has no effect when synchronous with another SAI peripheral. + * @param instance The SAI peripheral instance number. + * @param ifswap If swap bit clock. + */ +void sai_hal_set_tx_bclk_swap(uint8_t instance, bool ifswap); + +/*! + * @brief Sets the Rx bit clock swap. + * + * When set in asynchronous mode, the receiver is clocked by the transmitter bit clock. When set in + * synchronous mode, the receiver is clocked by the receiver bit clock, but uses the transmitter frame sync. + * This bit has no effect when synchronous with another SAI peripheral. + * @param instance The SAI peripheral instance number. + * @param ifswap If swap bit clock. + */ +void sai_hal_set_rx_bclk_swap(uint8_t instance, bool ifswap); + +/*! + * @brief Configures on which word the start of the word flag is set. + * @param instance The SAI peripheral instance number. + * @param index Which word triggers the word start flag. + */ +static inline void sai_hal_set_tx_word_start_index(uint8_t instance, uint8_t index) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(index <= SAI_WORD_MAX); + BW_I2S_TCR3_WDFL(instance,index); +} + +/*! + * @brief Configures on which word the start of the word flag is set. + * @param instance The SAI peripheral instance number. + * @param index Which word would trigger word start flag. + */ +static inline void sai_hal_set_rx_word_start_index(uint8_t instance, uint8_t index) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(index <= SAI_WORD_MAX); + BW_I2S_RCR3_WDFL(instance,index); +} + +/*! + * @brief Sets the index in FIFO for the first bit data . + * + * The FIFO is 32-bit in SAI, but not all audio data is 32-bit. Mostly they are 16-bit. + * In this situation, the Codec needs to know which bit of the FIFO marks the valid audio data. + * @param instance The SAI peripheral instance number. + * @param index First bit shifted in FIFO. + */ +static inline void sai_hal_set_tx_fbt(uint8_t instance, uint8_t index) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(index <= SAI_BIT_MAX); + BW_I2S_TCR5_FBT(instance,index); +} + +/*! + * @brief Sets the index in FIFO for the first bit data. + * @param instance The SAI peripheral instance number. + * @param index First bit shifted in FIFO. + */ +static inline void sai_hal_set_rx_fbt(uint8_t instance, uint8_t index) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(index <= SAI_BIT_MAX); + BW_I2S_RCR5_FBT(instance,index); +} + +/*! + * @brief Flags whether the master clock divider is re-divided. + * @param instance The SAI peripheral instance number. + * @return True if the divider updated otherwise false. + */ +bool sai_hal_mclk_divider_is_update(uint8_t instance); + +/*! + * @brief Word start is detected. + * @param instance The SAI peripheral instance number. + * @param io_mode Transmit or receive data. + * @return True if detect word start otherwise false. + */ +bool sai_hal_word_start_is_detected(uint8_t instance, sai_io_mode_t io_mode); + +/*! + * @brief Sync error is detected. + * @param instance The SAI peripheral instance number. + * @param io_mode Transmit or receive data. + * @return True if detect sync error otherwise false. + */ +bool sai_hal_sync_error_is_detected(uint8_t instance, sai_io_mode_t io_mode); + +/*! + * @brief FIFO warning is detected. + * + * FIFO warning means that the FIFO is empty in Tx. While in Tx, FIFO warning means that + * the FIFO is empty and it needs data. + * @param instance The SAI peripheral instance number. + * @param io_mode Transmit or receive data. + * @return True if detect FIFO warning otherwise false. + */ +bool sai_hal_fifo_warning_is_detected(uint8_t instance, sai_io_mode_t io_mode); + +/*! + * @brief FIFO error is detected. + * + * FIFO error means that the FIFO has no data and the Codec is still transferring data. + * While in Rx, FIFO error means that the data is still in but the FIFO is full. + * @param instance The SAI peripheral instance number. + * @param io_mode Transmit or receive data. + * @return True if detects FIFO error otherwise false. + */ +bool sai_hal_fifo_error_is_detected(uint8_t instance, sai_io_mode_t io_mode); + +/*! + * @brief FIFO request is detected. + * + * FIFO request means that the data in FIFO is less than the watermark in Tx and more than the watermark in Rx. + * @param instance The SAI peripheral instance number. + * @param io_mode Transmit or receive data. + * @return True if detects FIFO request otherwise false. + */ +bool sai_hal_fifo_request_is_detected(uint8_t instance, sai_io_mode_t io_mode); + +/*! + * @brief Receives the data from FIFO. + * @param instance The SAI peripheral instance number. + * @param rx_channel Rx FIFO channel. + * @param data Pointer to the address to be written in. + */ +static inline void sai_hal_receive_data(uint8_t instance, uint8_t rx_channel, uint32_t *data) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(rx_channel < FSL_FEATURE_I2S_CHANNEL_COUNT); + assert(data); + + *data = HW_I2S_RDRn_RD(instance, rx_channel); +} + +/*! + * @brief Transmits data to the FIFO. + * @param instance The SAI peripheral instance number. + * @param tx_channel Tx FIFO channel. + * @param data Data value which needs to be written into FIFO. + */ +static inline void sai_hal_transmit_data(uint8_t instance, uint8_t tx_channel, uint32_t data) +{ + assert(instance < HW_I2S_INSTANCE_COUNT); + assert(tx_channel < FSL_FEATURE_I2S_CHANNEL_COUNT); + + HW_I2S_TDRn_WR(instance,tx_channel,data); +} + +#if defined(__cplusplus) +} +#endif + +/*! @} */ + +#endif /* __FSL_SAI_HAL_H__ */ +/******************************************************************************* +* EOF +*******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/sdhc/fsl_sdhc_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_SDHC_FEATURES_H__) +#define __FSL_SDHC_FEATURES_H__ + +#if defined(CPU_MK24FN1M0VDC12) || defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || defined(CPU_MK63FN1M0VMD12) || \ + defined(CPU_MK64FX512VDC12) || defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FX512VLL12) || defined(CPU_MK64FN1M0VLL12) || \ + defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VMD12) || defined(CPU_MK64FN1M0VMD12) || \ + defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || \ + defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) + /* @brief Has external DMA support (register bit VENDOR[EXTDMAEN]). */ + #define FSL_FEATURE_SDHC_HAS_EXTERNAL_DMA_SUPPORT (1) +#if defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FN1M0VMJ15) + #define FSL_FEATURE_SDHC_HAS_V300_SUPPORT (1) + #define FSL_FEATURE_SDHC_HAS_V180_SUPPORT (1) +#elif (defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK63FN1M0VMD12WS) || \ + defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12)) + #define FSL_FEATURE_SDHC_HAS_V300_SUPPORT (0) + #define FSL_FEATURE_SDHC_HAS_V180_SUPPORT (0) +#endif +#elif defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || defined(CPU_MK65FX1M0VMI18) || \ + defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || defined(CPU_MK66FX1M0VMD18) + /* @brief Has external DMA support (register bit VENDOR[EXTDMAEN]). */ + #define FSL_FEATURE_SDHC_HAS_EXTERNAL_DMA_SUPPORT (0) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_SDHC_FEATURES_H__ */ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/sdhc/fsl_sdhc_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1232 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_SDHC_HAL_H__ +#define __FSL_SDHC_HAL_H__ + +#include <assert.h> +#include <stdbool.h> +#include "fsl_device_registers.h" + +/*! @addtogroup sdhc_hal */ +/*! @{ */ + +/* PRSSTA */ +#define SDHC_HAL_DAT0_LEVEL (BM_SDHC_PRSSTAT_DLSL & (1 << 24)) + +/* XFERTYP */ +#define SDHC_HAL_MAX_BLOCK_COUNT (BS_SDHC_BLKATTR_BLKCNT - 1) +#define SDHC_HAL_ENABLE_DMA BM_SDHC_XFERTYP_DMAEN +#define SDHC_HAL_DISABLE_DMA (0U) + +#define SDHC_HAL_CMD_TYPE_SUSPEND (BF_SDHC_XFERTYP_CMDTYP(1)) +#define SDHC_HAL_CMD_TYPE_RESUME (BF_SDHC_XFERTYP_CMDTYP(2)) +#define SDHC_HAL_CMD_TYPE_ABORT (BF_SDHC_XFERTYP_CMDTYP(3)) + +#define SDHC_HAL_ENABLE_BLOCK_COUNT BM_SDHC_XFERTYP_BCEN +#define SDHC_HAL_DISABLE_BLOCK_COUNT (0U) + +#define SDHC_HAL_ENABLE_AUTO_CMD12 BM_SDHC_XFERTYP_AC12EN +#define SDHC_HAL_DISABLE_AUTO_CMD12 (0U) + +#define SDHC_HAL_ENABLE_DATA_READ BM_SDHC_XFERTYP_DTDSEL +#define SDHC_HAL_DISABLE_AUTO_CMD12 (0U) + +#define SDHC_HAL_MULTIPLE_BLOCK BM_SDHC_XFERTYP_MSBSEL +#define SDHC_HAL_SINGLE_BLOCK (0U) + +#define SDHC_HAL_NO_RESPONE (0U) +#define SDHC_HAL_RESP_LEN_136 ((0x1 << BP_SDHC_XFERTYP_RSPTYP) & BM_SDHC_XFERTYP_RSPTYP) +#define SDHC_HAL_RESP_LEN_48 ((0x2 << BP_SDHC_XFERTYP_RSPTYP) & BM_SDHC_XFERTYP_RSPTYP) +#define SDHC_HAL_RESP_LEN_48_BC ((0x3 << BP_SDHC_XFERTYP_RSPTYP) & BM_SDHC_XFERTYP_RSPTYP) + +#define SDHC_HAL_ENABLE_CRC_CHECK BM_SDHC_XFERTYP_CCCEN +#define SDHC_HAL_DISABLE_CRC_CHECK (0U) + +#define SDHC_HAL_ENABLE_INDEX_CHECK BM_SDHC_XFERTYP_CICEN +#define SDHC_HAL_DISABLE_INDEX_CHECK (0U) + +#define SDHC_HAL_DATA_PRESENT BM_SDHC_XFERTYP_DPSEL +#define SDHC_HAL_NO_DATA_PRESENT (0U) + +/* SYSCTL */ +#define SDHC_HAL_MAX_DVS (16U) +#define SDHC_HAL_INITIAL_DVS (1U) /* initial value of divisor to calculate clock rate */ +#define SDHC_HAL_INITIAL_CLKFS (2U) /* initial value of clock selector to calculate clock rate */ +#define SDHC_HAL_NEXT_DVS(x) do { ((x) += 1); } while(0) +#define SDHC_HAL_PREV_DVS(x) do { ((x) -= 1); } while(0) +#define SDHC_HAL_MAX_CLKFS (256U) +#define SDHC_HAL_NEXT_CLKFS(x) do { ((x) <<= 1); } while(0) +#define SDHC_HAL_PREV_CLKFS(x) do { ((x) >>= 1); } while(0) + +/* IRQSTAT */ +#define SDHC_HAL_CMD_COMPLETE_INT BM_SDHC_IRQSTAT_CC +#define SDHC_HAL_TRANS_COMPLETE_INT BM_SDHC_IRQSTAT_TC +#define SDHC_HAL_BLOCK_GAP_EVENT_INT BM_SDHC_IRQSTAT_BGE +#define SDHC_HAL_DMA_INT BM_SDHC_IRQSTAT_DMAE +#define SDHC_HAL_BUF_WRITE_READY_INT BM_SDHC_IRQSTAT_BWR +#define SDHC_HAL_BUF_READ_READY_INT BM_SDHC_IRQSTAT_BRR +#define SDHC_HAL_CARD_INSERTION_INT BM_SDHC_IRQSTAT_CINS +#define SDHC_HAL_CARD_REMOVAL_INT BM_SDHC_IRQSTAT_CRM +#define SDHC_HAL_CARD_INT BM_SDHC_IRQSTAT_CINT +#define SDHC_HAL_CMD_TIMEOUT_ERR_INT BM_SDHC_IRQSTAT_CTOE +#define SDHC_HAL_CMD_CRC_ERR_INT BM_SDHC_IRQSTAT_CCE +#define SDHC_HAL_CMD_END_BIT_ERR_INT BM_SDHC_IRQSTAT_CEBE +#define SDHC_HAL_CMD_INDEX_ERR_INT BM_SDHC_IRQSTAT_CIE +#define SDHC_HAL_DATA_TIMEOUT_ERR_INT BM_SDHC_IRQSTAT_DTOE +#define SDHC_HAL_DATA_CRC_ERR_INT BM_SDHC_IRQSTAT_CCE +#define SDHC_HAL_DATA_END_BIT_ERR_INT BM_SDHC_IRQSTAT_DEBE +#define SDHC_HAL_AUTO_CMD12_ERR_INT BM_SDHC_IRQSTAT_AC12E +#define SDHC_HAL_DMA_ERR_INT BM_SDHC_IRQSTAT_DMAE + +/* AC12ERR */ +#define SDHC_HAL_ACMD12_NOT_EXEC_ERR BM_SDHC_AC12ERR_AC12NE +#define SDHC_HAL_ACMD12_TIMEOUT_ERR BM_SDHC_AC12ERR_AC12TOE +#define SDHC_HAL_ACMD12_END_BIT_ERR BM_SDHC_AC12ERR_AC12EBE +#define SDHC_HAL_ACMD12_CRC_ERR BM_SDHC_AC12ERR_AC12CE +#define SDHC_HAL_ACMD12_INDEX_ERR BM_SDHC_AC12ERR_AC12IE +#define SDHC_HAL_ACMD12_NOT_ISSUE_ERR BM_SDHC_AC12ERR_CNIBAC12E + +/* HTCAPBLT */ +#define SDHC_HAL_SUPPORT_ADMA BM_SDHC_HTCAPBLT_ADMAS +#define SDHC_HAL_SUPPORT_HIGHSPEED BM_SDHC_HTCAPBLT_HSS +#define SDHC_HAL_SUPPORT_DMA BM_SDHC_HTCAPBLT_DMAS +#define SDHC_HAL_SUPPORT_SUSPEND_RESUME BM_SDHC_HTCAPBLT_SRS +#define SDHC_HAL_SUPPORT_3_3_V BM_SDHC_HTCAPBLT_VS33 +#define SDHC_HAL_SUPPORT_3_0_V BM_SDHC_HTCAPBLT_VS30 +#define SDHC_HAL_SUPPORT_1_8_V BM_SDHC_HTCAPBLT_VS18 + +/* FEVT */ +#define SDHC_HAL_ACMD12_NOT_EXEC_ERR_EVENT BM_SDHC_FEVT_AC12NE +#define SDHC_HAL_ACMD12_TIMEOUT_ERR_EVENT BM_SDHC_FEVT_AC12TOE +#define SDHC_HAL_ACMD12_CRC_ERR_EVENT BM_SDHC_FEVT_AC12CE +#define SDHC_HAL_ACMD12_END_BIT_ERR_EVENT BM_SDHC_FEVT_AC12EBE +#define SDHC_HAL_ACMD12_INDEX_ERR_EVENT BM_SDHC_FEVT_AC12IE +#define SDHC_HAL_ACMD12_NOT_ISSUE_ERR_EVENT BM_SDHC_FEVT_CNIBAC12E +#define SDHC_HAL_CMD_TIMEOUT_ERR_EVENT BM_SDHC_FEVT_CTOE +#define SDHC_HAL_CMD_CRC_ERR_EVENT BM_SDHC_FEVT_CCE +#define SDHC_HAL_CMD_END_BIT_ERR_EVENT BM_SDHC_FEVT_CEBE +#define SDHC_HAL_CMD_INDEX_ERR_EVENT BM_SDHC_FEVT_CIE +#define SDHC_HAL_DATA_TIMEOUT_ERR_EVENT BM_SDHC_FEVT_DTOE +#define SDHC_HAL_DATA_CRC_ERR_EVENT BM_SDHC_FEVT_DCE +#define SDHC_HAL_DATA_END_BIT_ERR_EVENT BM_SDHC_FEVT_DEBE +#define SDHC_HAL_ACMD12_ERR_EVENT BM_SDHC_FEVT_AC12E +#define SDHC_HAL_CARD_INT_EVENT BM_SDHC_FEVT_CINT +#define SDHC_HAL_DMA_ERROR_EVENT BM_SDHC_FEVT_DMAE + +/* MMCBOOT */ +typedef enum _sdhc_hal_mmcboot +{ + kSDHC_HAL_MMCBOOT_Normal = 0, + kSDHC_HAL_MMCBOOT_Alter = 1, +} sdhc_hal_mmcboot_t; + +/* PROCTL */ +typedef enum _sdhc_hal_led +{ + kSDHC_HAL_LED_Off = 0, + kSDHC_HAL_LED_On = 1, +} sdhc_hal_led_t; + +typedef enum _sdhc_hal_dtw +{ + kSDHC_HAL_DTW_1Bit = 0, + kSDHC_HAL_DTW_4Bit = 1, + kSDHC_HAL_DTW_8Bit = 2, +} sdhc_hal_dtw_t; + +typedef enum _sdhc_hal_endian +{ + kSDHC_HAL_ENDIAN_Big = 0, + kSDHC_HAL_ENDIAN_HalfWordBig = 1, + kSDHC_HAL_ENDIAN_Little = 2, +} sdhc_hal_endian_t; + +typedef enum _sdhc_hal_dma_mode +{ + kSDHC_HAL_DMA_NoOrSimple = 0, + kSDHC_HAL_DMA_Adma1 = 1, + kSDHC_HAL_DMA_Adma2 = 2, +} sdhc_hal_dma_mode_t; + +#define SDHC_HAL_RST_TYPE_ALL BM_SDHC_SYSCTL_RSTA +#define SDHC_HAL_RST_TYPE_CMD BM_SDHC_SYSCTL_RSTC +#define SDHC_HAL_RST_TYPE_DATA BM_SDHC_SYSCTL_RSTD + +#define SDHC_HAL_MAX_BLKLEN_512B (0U) +#define SDHC_HAL_MAX_BLKLEN_1024B (1U) +#define SDHC_HAL_MAX_BLKLEN_2048B (2U) +#define SDHC_HAL_MAX_BLKLEN_4096B (3U) + +/************************************************************************************************* + * API + ************************************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! @name SDHC HAL FUNCTION */ +/*@{ */ + +/*! + * @brief Checks whether the given instance is valid. + * + * @param instance SDHC instance ID + * @return true if valid + */ +static inline bool sdhc_hal_is_valid_instance(uint8_t instance) +{ + return (instance < HW_SDHC_INSTANCE_COUNT); +} + +/*! + * @brief Configures the DMA address. + * + * @param instance SDHC instance ID + * @param address the DMA address + */ +static inline void sdhc_hal_set_dma_addr(uint8_t instance, uint32_t address) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + HW_SDHC_DSADDR_WR(BF_SDHC_DSADDR_DSADDR(address)); +} + +/*! + * @brief Gets the DMA address. + * + * @param instance SDHC instance ID + * @return the DMA address + */ +static inline uint32_t sdhc_hal_get_dma_addr(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return HW_SDHC_DSADDR_RD(); +} + +/*! + * @brief Gets the block size configured. + * + * @param instance SDHC instance ID + * @return the block size already configured + */ +static inline uint32_t sdhc_hal_get_blksz(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_BLKATTR_BLKSIZE; +} + +/*! + * @brief Sets the block size. + * + * @param instance SDHC instance ID + * @param blockSize the block size + */ +static inline void sdhc_hal_set_blksz(uint8_t instance, uint32_t blockSize) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_BLKATTR_BLKSIZE(blockSize); +} + +/*! + * @brief Sets the block count. + * + * @param instance SDHC instance ID + * @param blockCount the block count + */ +static inline void sdhc_hal_set_blkcnt(uint8_t instance, uint32_t blockCount) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_BLKATTR_BLKCNT(blockCount); +} + +/*! + * @brief Gets the block count configured. + * + * @param instance SDHC instance id + * @return the block count already configured + */ +static inline uint32_t sdhc_hal_get_blkcnt(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_BLKATTR_BLKCNT; +} + +/*! + * @brief Configures the command argument. + * + * @param instance SDHC instance ID + * @param arg the command argument + */ +static inline void sdhc_hal_set_cmd_arg(uint8_t instance, uint32_t arg) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_CMDARG_CMDARG(arg); +} + +/*! + * @brief Sends a command. + * + * @param instance SDHC instance ID + * @param index command index + * @param flags transfer type flags + */ +static inline void sdhc_hal_send_cmd(uint8_t instance, uint32_t index, uint32_t flags) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + HW_SDHC_XFERTYP_WR(((index << BP_SDHC_XFERTYP_CMDINX) & BM_SDHC_XFERTYP_CMDINX) + | (flags & ( BM_SDHC_XFERTYP_DMAEN | BM_SDHC_XFERTYP_MSBSEL | BM_SDHC_XFERTYP_DPSEL + | BM_SDHC_XFERTYP_CMDTYP | BM_SDHC_XFERTYP_BCEN | BM_SDHC_XFERTYP_CICEN + | BM_SDHC_XFERTYP_CCCEN | BM_SDHC_XFERTYP_RSPTYP | BM_SDHC_XFERTYP_DTDSEL + | BM_SDHC_XFERTYP_AC12EN))); +} + +/*! + * @brief Fills the the data port. + * + * @param instance SDHC instance ID + * @param data the data about to be sent + */ +static inline void sdhc_hal_set_data(uint8_t instance, uint32_t data) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + HW_SDHC_DATPORT_WR(data); +} + +/*! + * @brief Retrieves the data from the data port. + * + * @param instance SDHC instance ID + * @return data the data read + */ +static inline uint32_t sdhc_hal_get_data(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_DATPORT_DATCONT; +} + +/*! + * @brief Checks whether the command inhibit bit is set or not. + * + * @param instance SDHC instance ID + * @return 1 if command inhibit, 0 if not. + */ +static inline uint32_t sdhc_hal_is_cmd_inhibit(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_CIHB; +} + +/*! + * @brief Checks whether data inhibit bit is set or not. + * + * @param instance SDHC instance ID + * @return 1 if data inhibit, 0 if not. + */ +static inline uint32_t sdhc_hal_is_data_inhibit(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_CDIHB; +} + +/*! + * @brief Checks whether data line is active. + * + * @param instance SDHC instance ID + * @return 1 if it's active, 0 if not. + */ +static inline uint32_t sdhc_hal_is_data_line_active(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_DLA; +} + +/*! + * @brief Checks whether the SD clock is stable or not. + * + * @param instance SDHC instance ID + * @return 1 if it's stable, 0 if not. + */ +static inline uint32_t sdhc_hal_is_sd_clk_stable(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_SDSTB; +} + +/*! + * @brief Checks whether the IPG clock is off or not. + * + * @param instance SDHC instance ID + * @return 1 if it's off, 0 if not. + */ +static inline uint32_t sdhc_hal_is_ipg_clk_off(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_IPGOFF; +} + +/*! + * @brief Checks whether the system clock is off or not. + * + * @param instance SDHC instance ID + * @return 1 if it's off, 0 if not. + */ +static inline uint32_t sdhc_hal_is_sys_clk_off(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_HCKOFF; +} + +/*! + * @brief Checks whether the peripheral clock is off or not. + * + * @param instance SDHC instance ID. + * @return 1 if it's off, 0 if not. + */ +static inline uint32_t sdhc_hal_is_per_clk_off(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_PEROFF; +} + +/*! + * @brief Checks whether the SD clock is off or not. + * + * @param instance SDHC instance ID + * @return 1 if it's off, 0 if not. + */ +static inline uint32_t sdhc_hal_is_sd_clk_off(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_SDOFF; +} + +/*! + * @brief Checks whether the write transfer is active or not. + * + * @param instance SDHC instance ID + * @return 1 if it's active, 0 if not. + */ +static inline uint32_t sdhc_hal_is_write_trans_active(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_WTA; +} + +/*! + * @brief Checks whether the read transfer is active or not. + * + * @param instance SDHC instance ID + * @return 1 if it's off, 0 if not. + */ +static inline uint32_t sdhc_hal_is_read_trans_active(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_RTA; +} + +/*! + * @brief Check whether the buffer write is enabled or not. + * + * @param instance SDHC instance ID + * @return 1 if it's isEnabledd, 0 if not. + */ +static inline uint32_t sdhc_hal_is_buf_write_enabled(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_BWEN; +} + +/*! + * @brief Checks whether the buffer read is enabled or not. + * + * @param instance SDHC instance ID + * @return 1 if it's isEnabledd, 0 if not. + */ +static inline uint32_t sdhc_hal_is_buf_read_enabled(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_BREN; +} + +/*! + * @brief Checks whether the card is inserted or not. + * + * @param instance SDHC instance ID. + * @return 1 if it's inserted, 0 if not. + */ +static inline uint32_t sdhc_hal_is_card_inserted(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_CINS; +} + +/*! + * @brief Checks whether the command line signal is high or not. + * + * @param instance SDHC instance ID + * @return 1 if it's high, 0 if not. + */ +static inline uint32_t sdhc_hal_is_cmd_line_level_high(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_CLSL; +} + +/*! + * @brief Gets the data line signal level or not. + * + * @param instance SDHC instance ID + * @return [7:0] data line signal level + */ +static inline uint32_t sdhc_hal_get_data_line_level(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PRSSTAT_DLSL; +} + +/*! + * @brief Sets the LED state. + * + * @param instance SDHC instance ID + * @param state the LED state + */ +static inline void sdhc_hal_set_led_state(uint8_t instance, sdhc_hal_led_t state) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_LCTL(state); +} + +/*! + * @brief Sets the data transfer width. + * + * @param instance SDHC instance ID + * @param dtw data transfer width + */ +static inline void sdhc_hal_set_data_trans_width(uint8_t instance, sdhc_hal_dtw_t dtw) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_DTW(dtw); +} + +/*! + * @brief Checks whether the DAT3 is taken as card detect pin. + * + * @param instance SDHC instance ID + */ +static inline bool sdhc_hal_is_d3cd_enabled(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PROCTL_D3CD; +} + +/*! + * @brief Enables the DAT3 as a card detect pin. + * + * @param instance SDHC instance ID + * @param isEnabled isEnabled the feature + */ +static inline void sdhc_hal_enable_d3cd(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_D3CD(isEnabled ? 1 : 0); +} + +/*! + * @brief Configures the endian mode. + * + * @param instance SDHC instance ID + * @param endianMode endian mode + */ +static inline void sdhc_hal_set_endian(uint8_t instance, sdhc_hal_endian_t endianMode) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_EMODE(endianMode); +} + +/*! +* @brief Gets the card detect test level. +* +* @param instance SDHC instance ID +* @return card detect test level +*/ +static inline uint32_t sdhc_hal_get_cd_test_level(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_PROCTL_CDTL; +} + +/*! +* @brief Enables the card detect test. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_cd_test(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_CDSS(isEnabled ? 1 : 0); +} + +/*! +* @brief Sets the DMA mode. +* +* @param instance SDHC instance ID +* @param dmaMode the DMA mode +*/ +static inline void sdhc_hal_set_dma_mode(uint8_t instance, sdhc_hal_dma_mode_t dmaMode) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_DMAS(dmaMode); +} + +/*! +* @brief Enables stop at the block gap. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_stop_at_blkgap(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_SABGREQ(isEnabled ? 1 : 0); +} + +/*! +* @brief Restarts a transaction which has stopped at the block gap. +* +* @param instance SDHC instance ID +*/ +static inline void sdhc_hal_continue_req(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_CREQ(1); +} + +/*! +* @brief Enables teh read wait control for the SDIO cards. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_read_wait_ctrl(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_RWCTL(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables stop at the block gap requests. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_intr_stop_at_blk_gap(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_IABG(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables wakeup event on the card interrupt. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_wakeup_on_card_intr(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_WECINT(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables wakeup event on the card insertion. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_wakeup_on_card_ins(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_WECINS(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables wakeup event on card removal. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_wakeup_on_card_rm(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_PROCTL_WECRM(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables the IPG clock, then no automatic clock gating off. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_ipg_clk(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_SYSCTL_IPGEN(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables the system clock, then no automatic clock gating off. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_sys_clk(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_SYSCTL_HCKEN(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables the peripheral clock, then no automatic clock gating off. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_per_clk(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_SYSCTL_PEREN(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables the SD clock. It should be disabled before changing SD clock +* frequency. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_sd_clk(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_SYSCTL_SDCLKEN(isEnabled ? 1 : 0); +} + +/*! +* @brief Sets the SD clock frequency divisor. +* +* @param instance SDHC instance ID +* @param divisor the divisor +*/ +static inline void sdhc_hal_set_clk_div(uint8_t instance, uint32_t divisor) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_SYSCTL_DVS(divisor); +} + +/*! +* @brief Sets the SD clock frequency select. +* +* @param instance SDHC instance ID +* @param freq the frequency selector +*/ +static inline void sdhc_hal_set_clk_freq(uint8_t instance, uint32_t freq) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_SYSCTL_SDCLKFS(freq); +} + +/*! +* @brief Sets the data timeout counter value. +* +* @param instance SDHC instance ID +* @param timeout +*/ +static inline void sdhc_hal_set_data_timeout(uint8_t instance, uint32_t timeout) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_SYSCTL_DTOCV(timeout); +} + +/*! +* @brief Performs the kinds of SDHC reset. +* +* @param instance SDHC instance ID +* @param type the type of reset +*/ +static inline void sdhc_hal_reset(uint8_t instance, uint32_t type) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + HW_SDHC_SYSCTL_SET(type & (BM_SDHC_SYSCTL_RSTA | BM_SDHC_SYSCTL_RSTC | BM_SDHC_SYSCTL_RSTD)); +} + +/*! +* @brief Checks whether the given SDHC reset is finished. +* +* @param instance SDHC instance ID +* @param type the type of reset +* @return if the given reset is done +*/ +static inline uint32_t sdhc_hal_is_reset_done(uint8_t instance, uint32_t type) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return !(HW_SDHC_SYSCTL_RD() + & (type & (BM_SDHC_SYSCTL_RSTA | BM_SDHC_SYSCTL_RSTC | BM_SDHC_SYSCTL_RSTD))); +} + +/*! +* @brief Sends 80 SD clock cycles to the card. +* +* @param instance SDHC instance ID +*/ +static inline void sdhc_hal_init_card(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_SYSCTL_INITA(1); +} + +/*! +* @brief Checks whether sending 80 SD clock cycles to card is finished. +* +* @param instance SDHC instance ID +* @return if sending 80 SD clock cycles is finished +*/ +static inline uint32_t sdhc_hal_is_init_card_done(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return !(BR_SDHC_SYSCTL_INITA); +} + +/*! +* @brief Gets the current interrupt status. +* +* @param instance SDHC instance ID +* @return current interrupt flags +*/ +static inline uint32_t sdhc_hal_get_intr_flags(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return HW_SDHC_IRQSTAT_RD(); +} + +/*! +* @brief Clears a specified interrupt status. +* +* @param instance SDHC instance ID +* @param mask to specify interrupts' flags to be cleared +*/ +static inline void sdhc_hal_clear_intr_flags(uint8_t instance, uint32_t mask) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + HW_SDHC_IRQSTAT_WR(mask); +} + +/*! +* @brief Gets the currently enabled interrupt signal. +* +* @param instance SDHC instance ID +* @return currently enabled interrupt signal +*/ +static inline uint32_t sdhc_hal_get_intr_signal(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return HW_SDHC_IRQSIGEN_RD(); +} + +/*! +* @brief Gets the currently enabled interrupt state. +* +* @param instance SDHC instance ID +* @return currently enabled interrupts' state +*/ +static inline uint32_t sdhc_hal_get_intr_state(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return HW_SDHC_IRQSTATEN_RD(); +} + +/*! +* @brief Gets the auto cmd12 error. +* +* @param instance SDHC instance ID +* @return auto cmd12 error status +*/ +static inline uint32_t sdhc_hal_get_ac12_error(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return HW_SDHC_AC12ERR_RD(); +} + +/*! +* @brief Gets the maximum block length supported. +* +* @param instance SDHC instance ID +* @return the maximum block length support +*/ +static inline uint32_t sdhc_hal_get_max_blklen(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_HTCAPBLT_MBL; +} + +/*! +* @brief Checks whether the ADMA is supported. +* +* @param instance SDHC instance ID +* @return if ADMA is supported +*/ +static inline uint32_t sdhc_hal_host_can_do_adma(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_HTCAPBLT_ADMAS; +} + +/*! +* @brief Checks whether the high speed is supported. +* +* @param instance SDHC instance ID +* @return if high speed is supported +*/ +static inline uint32_t sdhc_hal_host_can_do_highspeed(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_HTCAPBLT_HSS; +} + +/*! +* @brief Checks whether the DMA is supported. +* +* @param instance SDHC instance ID +* @return if high speed is supported +*/ +static inline uint32_t sdhc_hal_host_can_do_dma(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_HTCAPBLT_DMAS; +} + +/*! +* @brief Checks whether the suspend/resume is supported. +* +* @param instance SDHC instance ID +* @return if suspend and resume is supported +*/ +static inline uint32_t sdhc_hal_host_can_do_suspend_resume(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_HTCAPBLT_SRS; +} + +/*! +* @brief Checks whether the voltage 3.3 is supported. +* +* @param instance SDHC instance ID +* @return if voltage 3.3 is supported +*/ +static inline uint32_t sdhc_hal_host_supports_v330(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_HTCAPBLT_VS33; +} + +/*! +* @brief Checks whether the voltage 3.0 is supported. +* +* @param instance SDHC instance ID +* @return if voltage 3.0 is supported +*/ +static inline uint32_t sdhc_hal_host_supports_v300(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); +#if defined(FSL_FEATURE_SDHC_HAS_V300_SUPPORT) && FSL_FEATURE_SDHC_HAS_V300_SUPPORT + return BR_SDHC_HTCAPBLT_VS30; +#else + return 0; +#endif +} + +/*! +* @brief Checks whether the voltage 1.8 is supported. +* +* @param instance SDHC instance ID +* @return if voltage 1.8 is supported +*/ +static inline uint32_t sdhc_hal_host_supports_v180(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); +#if defined(FSL_FEATURE_SDHC_HAS_V180_SUPPORT) && FSL_FEATURE_SDHC_HAS_V180_SUPPORT + return BR_SDHC_HTCAPBLT_VS18; +#else + return 0; +#endif +} + +/*! +* @brief Sets the watermark for writing. +* +* @param instance SDHC instance ID +* @param watermark for writing +*/ +static inline void sdhc_hal_set_write_watermark(uint8_t instance, uint32_t watermark) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_WML_WRWML(watermark); +} + +/*! +* @brief Sets the watermark for reading. +* +* @param instance SDHC instance ID +* @param watermark for reading +*/ +static inline void sdhc_hal_set_read_watermark(uint8_t instance, uint32_t watermark) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_WML_RDWML(watermark); +} + +/*! +* @brief Sets the force events according to the given mask. +* +* @param instance SDHC instance ID +* @param mask to specify the force events' flags to be set +*/ +static inline void sdhc_hal_set_force_event_flags(uint8_t instance, uint32_t mask) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + HW_SDHC_FEVT_WR(mask); +} + +/*! +* @brief Checks whether the ADMA error is length mismatch. +* +* @param instance SDHC instance ID +* @return if ADMA error is length mismatch +*/ +static inline uint32_t sdhc_hal_is_adma_len_mismatch_err(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_ADMAES_ADMALME; +} + +/*! +* @brief Gets back the state of the ADMA error. +* +* @param instance SDHC instance ID +* @return error state +*/ +static inline uint32_t sdhc_hal_get_adma_error_stat(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_ADMAES_ADMAES; +} + +/*! +* @brief Checks whether the ADMA error is a descriptor error. +* +* @param instance SDHC instance ID +* @return if ADMA error is descriptor error +*/ +static inline uint32_t sdhc_hal_is_adma_desc_err(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_ADMAES_ADMADCE; +} + +/*! +* @brief Sets the ADMA address. +* +* @param instance SDHC instance ID +* @param address for ADMA transfer +*/ +static inline void sdhc_hal_set_adma_addr(uint8_t instance, uint32_t address) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + HW_SDHC_ADSADDR_WR(BF_SDHC_ADSADDR_ADSADDR(address)); +} + +/*! +* @brief Enables the external DMA request. +* +* @param instance SDHC instance ID +* @param isEnabled or not +*/ +static inline void sdhc_hal_enable_ext_dma_req(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_VENDOR_EXTDMAEN(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables the exact block number for the SDIO CMD53. +* +* @param instance SDHC instance ID +* @param isEnabled or not +*/ +static inline void sdhc_hal_enable_exact_blk_num(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_VENDOR_EXBLKNU(isEnabled ? 1 : 0); +} + +/*! +* @brief Sets the timeout value for the boot ACK. +* +* @param instance SDHC instance ID +* @param timeout +*/ +static inline void sdhc_hal_set_boot_ack_timeout(uint8_t instance, uint32_t timeout) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_MMCBOOT_DTOCVACK(timeout); +} + +/*! +* @brief Enables the boot ACK. +* +* @param instance SDHC instance ID +* @param isEnabled +*/ +static inline void sdhc_hal_enable_boot_ack(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_MMCBOOT_BOOTACK(isEnabled ? 1 : 0); +} + +/*! +* @brief Configures the boot mode. +* +* @param instance SDHC instance ID +* @param mode the boot mode +*/ +static inline void sdhc_hal_set_boot_mode(uint8_t instance, sdhc_hal_mmcboot_t mode) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_MMCBOOT_BOOTMODE(mode); +} + +/*! +* @brief Enables the fast boot. +* +* @param instance SDHC instance ID +* @param isEnabled or not +*/ +static inline void sdhc_hal_enable_fastboot(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_MMCBOOT_BOOTEN(isEnabled ? 1 : 0); +} + +/*! +* @brief Enables the automatic stop at the block gap. +* +* @param instance SDHC instance ID +* @param isEnabled or not +*/ +static inline void sdhc_hal_enable_auto_stop_at_blkgap(uint8_t instance, bool isEnabled) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_MMCBOOT_AUTOSABGEN(isEnabled ? 1 : 0); +} + +/*! +* @brief Configures the the block count for the boot. +* +* @param instance SDHC instance ID +* @param blockCount the block count for boot +*/ +static inline void sdhc_hal_set_boot_blkcnt(uint8_t instance, uint32_t blockCount) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + BW_SDHC_MMCBOOT_BOOTBLKCNT(blockCount); +} + +/*! +* @brief Gets a specification version. +* +* @param instance SDHC instance ID +* @return specification version +*/ +static inline uint32_t sdhc_hal_get_spec_ver(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_HOSTVER_SVN; +} + +/*! +* @brief Gets the vendor version. +* +* @param instance SDHC instance ID +* @return vendor version +*/ +static inline uint32_t sdhc_hal_get_vendor_ver(uint8_t instance) +{ + assert(instance < HW_SDHC_INSTANCE_COUNT); + return BR_SDHC_HOSTVER_VVN; +} + +/*! + * @brief Gets the command response. + * + * @param instance SDHC instance ID + * @param resp an array of response, 4 bytes + */ +void sdhc_hal_get_resp(uint8_t instance, uint32_t * resp); + +/*! +* @brief Enables the specified interrupts. +* +* @param instance SDHC instance ID +* @param isEnabled enable or disable +* @param mask to specify interrupts to be isEnabledd +*/ +void sdhc_hal_enable_intr_signal(uint8_t instance, bool isEnabled, uint32_t mask); + +/*! +* @brief Enables the specified interrupt state. +* +* @param instance SDHC instance ID +* @param isEnabled enable or disable +* @param mask to specify interrupts' state to be enabled +*/ +void sdhc_hal_enable_intr_state(uint8_t instance, bool isEnabled, uint32_t mask); + +/*@} */ + +#if defined(__cplusplus) +} +#endif +/*! @} */ + +#endif + +/************************************************************************************************* + * EOF + ************************************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/sim/fsl_sim_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,286 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_SIM_FEATURES_H__ +#define __FSL_SIM_FEATURES_H__ + +#if (defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || \ + defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || \ + defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4)) + #define FSL_FEATURE_SIM_USBFS_USE_SPECIAL_DIVIDER (0) + #define FSL_FEATURE_SIM_PLLCLK_USE_SPECIAL_DIVIDER (1) + + #define FSL_FEATURE_SIM_OPT_HAS_RAMSIZE (0) + #define FSL_FEATURE_SIM_OPT_HAS_CMTUARTPAD (0) + #define FSL_FEATURE_SIM_OPT_HAS_PTD7PAD (0) + #define FSL_FEATURE_SIM_OPT_HAS_FBSL (0) + #define FSL_FEATURE_SIM_OPT_HAS_PCR (0) + #define FSL_FEATURE_SIM_OPT_HAS_MCC (0) + #define FSL_FEATURE_SIM_OPT_HAS_ODE (1) + #define FSL_FEATURE_SIM_OPT_UART_COUNT (2) + #define FSL_FEATURE_SIM_OPT_HAS_FTM (0) + #define FSL_FEATURE_SIM_OPT_FTM_TRIGGER_COUNT (0) + #define FSL_FEATURE_SIM_OPT_HAS_FTM0_TRIGGER (0) + #define FSL_FEATURE_SIM_OPT_HAS_FTM3_TRIGGER (0) + #define FSL_FEATURE_SIM_OPT_HAS_FTM1_CHANNELS (0) + #define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNELS (0) + #define FSL_FEATURE_SIM_OPT_HAS_FTM3_CHANNELS (0) + #define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNEL1 (0) + #define FSL_FEATURE_SIM_OPT_FTM0_FAULT_COUNT (0) + #define FSL_FEATURE_SIM_OPT_HAS_TPM (1) + + #define FSL_FEATURE_SIM_OPT_HAS_NFCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_ESDHCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_SDHCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_LCDCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_TIMESRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_RMIISRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_USBSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_USBFSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_USBHSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_UART0SRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_TPMSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_TRACE_CLKSEL (0) + + #define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV2 (0) + #define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV3 (0) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBDIV (0) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBFSDIV (0) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBHSDIV (0) + + #define FSL_FEATURE_SIM_SDID_HAS_FAMILYID (0) + #define FSL_FEATURE_SIM_SDID_HAS_SUBFAMID (1) + #define FSL_FEATURE_SIM_SDID_HAS_SERIESID (1) + #define FSL_FEATURE_SIM_SDID_HAS_DIEID (1) + #define FSL_FEATURE_SIM_SDID_HAS_SRAMSIZE (1) + + #define FSL_FEATURE_SIM_FCFG_HAS_FLASHDOZE (1) + #define FSL_FEATURE_SIM_FCFG_HAS_FLASHDIS (1) + #define FSL_FEATURE_SIM_FCFG_HAS_FTFDIS (0) + #define FSL_FEATURE_SIM_FCFG_HAS_NVMSIZE (0) + #define FSL_FEATURE_SIM_FCFG_HAS_EESIZE (0) + #define FSL_FEATURE_SIM_FCFG_HAS_DEPART (0) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR0 (1) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR1 (0) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR01 (0) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR23 (0) + #define FSL_FEATURE_SIM_FCFG_HAS_PFLSH (0) + +#elif (defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15)) + #define FSL_FEATURE_SIM_USBFS_USE_SPECIAL_DIVIDER (0) + #define FSL_FEATURE_SIM_PLLCLK_USE_SPECIAL_DIVIDER (0) + + #define FSL_FEATURE_SIM_OPT_HAS_RAMSIZE (1) + #define FSL_FEATURE_SIM_OPT_HAS_CMTUARTPAD (1) + #define FSL_FEATURE_SIM_OPT_HAS_PTD7PAD (0) + #define FSL_FEATURE_SIM_OPT_HAS_FBSL (1) + #define FSL_FEATURE_SIM_OPT_HAS_PCR (1) + #define FSL_FEATURE_SIM_OPT_HAS_MCC (1) + #define FSL_FEATURE_SIM_OPT_HAS_ODE (0) + #define FSL_FEATURE_SIM_OPT_UART_COUNT (2) + #define FSL_FEATURE_SIM_OPT_HAS_FTM (1) + #define FSL_FEATURE_SIM_OPT_FTM_TRIGGER_COUNT (2) + #define FSL_FEATURE_SIM_OPT_HAS_FTM0_TRIGGER (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM3_TRIGGER (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM1_CHANNELS (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNELS (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM3_CHANNELS (0) + #define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNEL1 (0) + #define FSL_FEATURE_SIM_OPT_FTM0_FAULT_COUNT (4) + #define FSL_FEATURE_SIM_OPT_HAS_TPM (0) + + #define FSL_FEATURE_SIM_OPT_HAS_NFCSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_ESDHCSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_SDHCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_LCDCSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_TIMESRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_RMIISRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_USBSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_USBFSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_USBHSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_UART0SRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_TPMSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_TRACE_CLKSEL (1) + + #define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV2 (1) + #define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV3 (1) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBDIV (0) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBFSDIV (1) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBHSDIV (1) + + #define FSL_FEATURE_SIM_SDID_HAS_FAMILYID (0) + #define FSL_FEATURE_SIM_SDID_HAS_SUBFAMID (0) + #define FSL_FEATURE_SIM_SDID_HAS_SERIESID (0) + #define FSL_FEATURE_SIM_SDID_HAS_DIEID (0) + #define FSL_FEATURE_SIM_SDID_HAS_SRAMSIZE (0) + + #define FSL_FEATURE_SIM_FCFG_HAS_FLASHDOZE (0) + #define FSL_FEATURE_SIM_FCFG_HAS_FLASHDIS (0) + #define FSL_FEATURE_SIM_FCFG_HAS_FTFDIS (1) + #define FSL_FEATURE_SIM_FCFG_HAS_NVMSIZE (1) + #define FSL_FEATURE_SIM_FCFG_HAS_EESIZE (1) + #define FSL_FEATURE_SIM_FCFG_HAS_DEPART (1) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR0 (0) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR1 (0) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR01 (1) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR23 (1) + #define FSL_FEATURE_SIM_FCFG_HAS_PFLSH (0) + +#elif (defined(CPU_MK64FN1M0VMD12)) + #define FSL_FEATURE_SIM_USBFS_USE_SPECIAL_DIVIDER (1) + #define FSL_FEATURE_SIM_PLLCLK_USE_SPECIAL_DIVIDER (0) + + #define FSL_FEATURE_SIM_OPT_HAS_RAMSIZE (1) + #define FSL_FEATURE_SIM_OPT_HAS_CMTUARTPAD (0) + #define FSL_FEATURE_SIM_OPT_HAS_PTD7PAD (1) + #define FSL_FEATURE_SIM_OPT_HAS_FBSL (1) + #define FSL_FEATURE_SIM_OPT_HAS_PCR (0) + #define FSL_FEATURE_SIM_OPT_HAS_MCC (0) + #define FSL_FEATURE_SIM_OPT_HAS_ODE (0) + #define FSL_FEATURE_SIM_OPT_UART_COUNT (2) + #define FSL_FEATURE_SIM_OPT_HAS_FTM (1) + #define FSL_FEATURE_SIM_OPT_FTM_TRIGGER_COUNT (2) + #define FSL_FEATURE_SIM_OPT_HAS_FTM0_TRIGGER (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM3_TRIGGER (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM1_CHANNELS (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNELS (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM3_CHANNELS (0) + #define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNEL1 (0) + #define FSL_FEATURE_SIM_OPT_FTM0_FAULT_COUNT (3) + #define FSL_FEATURE_SIM_OPT_HAS_TPM (0) + + #define FSL_FEATURE_SIM_OPT_HAS_NFCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_ESDHCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_SDHCSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_LCDCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_TIMESRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_RMIISRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_USBSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_USBFSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_USBHSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_UART0SRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_TPMSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_TRACE_CLKSEL (1) + + #define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV2 (1) + #define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV3 (1) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBDIV (1) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBFSDIV (0) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBHSDIV (0) + + #define FSL_FEATURE_SIM_SDID_HAS_FAMILYID (1) + #define FSL_FEATURE_SIM_SDID_HAS_SUBFAMID (1) + #define FSL_FEATURE_SIM_SDID_HAS_SERIESID (1) + #define FSL_FEATURE_SIM_SDID_HAS_DIEID (1) + #define FSL_FEATURE_SIM_SDID_HAS_SRAMSIZE (0) + + #define FSL_FEATURE_SIM_FCFG_HAS_FLASHDOZE (1) + #define FSL_FEATURE_SIM_FCFG_HAS_FLASHDIS (1) + #define FSL_FEATURE_SIM_FCFG_HAS_FTFDIS (0) + #define FSL_FEATURE_SIM_FCFG_HAS_NVMSIZE (1) + #define FSL_FEATURE_SIM_FCFG_HAS_EESIZE (1) + #define FSL_FEATURE_SIM_FCFG_HAS_DEPART (1) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR0 (1) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR1 (1) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR01 (0) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR23 (0) + #define FSL_FEATURE_SIM_FCFG_HAS_PFLSH (1) + +#elif (defined(CPU_MK22FN512VDC12)) + #define FSL_FEATURE_SIM_USBFS_USE_SPECIAL_DIVIDER (0) + #define FSL_FEATURE_SIM_PLLCLK_USE_SPECIAL_DIVIDER (0) + + #define FSL_FEATURE_SIM_OPT_HAS_RAMSIZE (1) + #define FSL_FEATURE_SIM_OPT_HAS_CMTUARTPAD (0) + #define FSL_FEATURE_SIM_OPT_HAS_PTD7PAD (0) + #define FSL_FEATURE_SIM_OPT_HAS_FBSL (1) + #define FSL_FEATURE_SIM_OPT_HAS_PCR (0) + #define FSL_FEATURE_SIM_OPT_HAS_MCC (0) + #define FSL_FEATURE_SIM_OPT_HAS_ODE (0) + #define FSL_FEATURE_SIM_OPT_UART_COUNT (2) + #define FSL_FEATURE_SIM_OPT_HAS_FTM (1) + #define FSL_FEATURE_SIM_OPT_FTM_TRIGGER_COUNT (2) + #define FSL_FEATURE_SIM_OPT_HAS_FTM0_TRIGGER (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM3_TRIGGER (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM1_CHANNELS (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNELS (1) + #define FSL_FEATURE_SIM_OPT_HAS_FTM3_CHANNELS (0) + #define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNEL1 (0) + #define FSL_FEATURE_SIM_OPT_FTM0_FAULT_COUNT (2) + #define FSL_FEATURE_SIM_OPT_HAS_TPM (0) + + #define FSL_FEATURE_SIM_OPT_HAS_NFCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_ESDHCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_SDHCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_LCDCSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_TIMESRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_RMIISRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_USBSRC (1) + #define FSL_FEATURE_SIM_OPT_HAS_USBFSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_USBHSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_UART0SRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_TPMSRC (0) + #define FSL_FEATURE_SIM_OPT_HAS_TRACE_CLKSEL (1) + + #define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV2 (1) + #define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV3 (1) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBDIV (1) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBFSDIV (0) + #define FSL_FEATURE_SIM_DIVIDER_HAS_USBHSDIV (0) + + #define FSL_FEATURE_SIM_SDID_HAS_FAMILYID (1) + #define FSL_FEATURE_SIM_SDID_HAS_SUBFAMID (1) + #define FSL_FEATURE_SIM_SDID_HAS_SERIESID (1) + #define FSL_FEATURE_SIM_SDID_HAS_DIEID (1) + #define FSL_FEATURE_SIM_SDID_HAS_SRAMSIZE (0) + + #define FSL_FEATURE_SIM_FCFG_HAS_FLASHDOZE (1) + #define FSL_FEATURE_SIM_FCFG_HAS_FLASHDIS (1) + #define FSL_FEATURE_SIM_FCFG_HAS_FTFDIS (0) + #define FSL_FEATURE_SIM_FCFG_HAS_NVMSIZE (0) + #define FSL_FEATURE_SIM_FCFG_HAS_EESIZE (0) + #define FSL_FEATURE_SIM_FCFG_HAS_DEPART (0) + + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR0 (1) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR1 (1) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR01 (0) + #define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR23 (0) + #define FSL_FEATURE_SIM_FCFG_HAS_PFLSH (0) + +#else + #error "No valid CPU defined" +#endif + +#endif /* __FSL_SIM_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/sim/fsl_sim_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1381 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !defined(__FSL_SIM_HAL_H__) +#define __FSL_SIM_HAL_H__ + +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> +#include "fsl_device_registers.h" +#include "fsl_sim_features.h" + +/*! @addtogroup sim_hal*/ +/*! @{*/ + +/*! @file*/ + +/******************************************************************************* + * Definitions + ******************************************************************************/ +typedef enum _sim_clock_names { + + /* default clocks*/ + kSimCoreClock, /**/ + kSimSystemClock, /**/ + kSimPlatformClock, /**/ + kSimBusClock, /**/ + kSimFlexBusClock, /**/ + kSimFlashClock, /**/ + + /* other internal clocks used by peripherals*/ + /* osc clock*/ + kSimOsc32kClock, + kSimOsc0ErClock, + kSimOsc1ErClock, + + /* irc 48Mhz clock */ + kSimIrc48mClock, + + /* rtc clock*/ + kSimRtc32kClock, + kSimRtc1hzClock, + + /* lpo clcok*/ + kSimLpoClock, + + /* mcg clocks*/ + kSimMcgFllClock, + kSimMcgPll0Clock, + kSimMcgPll1Clock, + kSimMcgOutClock, + kSimMcgIrClock, + + /* constant clocks (provided in other header files?)*/ + kSimSDHC0_CLKIN, + kSimENET_1588_CLKIN, + kSimEXTAL_Clock, + kSimEXTAL1_Clock, + kSimUSB_CLKIN, + + /* reserved value*/ + kSimReserved, + + kSimClockNameCount +} sim_clock_names_t; + +/*! @brief Clock gate module names */ +typedef enum _sim_clock_gate_module_names { + + /* System modules*/ + kSimClockModuleDMA, /**/ + kSimClockModuleDMAMUX, /* instance 0, 1*/ + kSimClockModulePORT, /* instance 0 - 5 (A - F)*/ + kSimClockModuleMPU, /**/ + kSimClockModuleLLWU, /**/ + kSimClockModuleEWM, /**/ + + /* Clocks*/ + kSimClockModuleOSC1, /**/ + + /* Memory and memory interfaces*/ + kSimClockModuleFTF, /* Flash memory control clock*/ + kSimClockModuleNFC, /* NAND flash control clock*/ + kSimClockModuleFLEXBUS, /**/ + kSimClockModuleDDR, /**/ + + /* Security*/ + kSimClockModuleCRC, /**/ + kSimClockModuleRNGA, /**/ + kSimClockModuleREGFILE, /**/ + kSimClockModuleDRYICESECREG, /**/ + kSimClockModuleDRYICE, /**/ + + /* Analog*/ + kSimClockModuleADC, /* instance 0 - 3*/ + kSimClockModuleCMP, /* */ + kSimClockModuleDAC, /* instance 0, 1*/ + kSimClockModuleVREF, /* */ + kSimClockModuleSAI, /* instance 0, 1*/ + + /* Timers*/ + kSimClockModuleTPM, /* TPM timers 0 - 2*/ + kSimClockModulePDB, /* */ + kSimClockModuleFTM, /* instance 0 - 3*/ + kSimClockModulePIT, /**/ + kSimClockModuleLPTIMER, /**/ + kSimClockModuleCMT, /**/ + kSimClockModuleRTC, /**/ + + /* Communication Interfaces*/ + kSimClockModuleENET, /**/ + kSimClockModuleUSBHS, /**/ + kSimClockModuleUSBFS, /**/ + kSimClockModuleUSBDCD, /**/ + kSimClockModuleFLEXCAN, /* instance 0, 1*/ + kSimClockModuleSPI, /* instance 0 - 2*/ + kSimClockModuleI2C, /* instance 0, 1*/ + kSimClockModuleUART, /* instance 0 - 5*/ + kSimClockModuleESDHC, /**/ + kSimClockModuleLPUART, /**/ + + /* Human-machine Interfaces*/ + kSimClockModuleTSI, /**/ + kSimClockModuleLCDC, /**/ + kSimClockModuleMax +} sim_clock_gate_module_names_t; + +/*! @brief Clock source and sel names */ +typedef enum _sim_clock_source_names { + kSimClockNfcSrc, /* NFCSRC*/ + kSimClockEsdhcSrc, /* ESDHCSRC K70*/ + kSimClockSdhcSrc, /* SDHCSRC K64*/ + kSimClockLcdcSrc, /* LCDCSRC*/ + kSimClockTimeSrc, /* TIMESRC*/ + kSimClockRmiiSrc, /* RMIISRC*/ + kSimClockUsbfSrc, /* USBFSRC K70*/ + kSimClockUsbSrc, /* USBSRC K64, KL25, KV31, and K22*/ + kSimClockUsbhSrc, /* USBHSRC*/ + kSimClockUart0Src, /* UART0SRC*/ + kSimClockTpmSrc, /* TPMSRC*/ + kSimClockOsc32kSel, /* OSC32KSEL*/ + kSimClockUsbfSel, /* USBF_CLKSEL*/ + kSimClockPllfllSel, /* PLLFLLSEL*/ + kSimClockNfcSel, /* NFC_CLKSEL*/ + kSimClockLcdcSel, /* LCDC_CLKSEL*/ + kSimClockTraceSel, /* TRACE_CLKSEL*/ + kSimClockClkoutSel, /* CLKOUTSEL*/ + kSimClockRtcClkoutSel, /* RTCCLKOUTSEL */ + kSimClockSourceMax +} sim_clock_source_names_t; + +/*! @brief Clock Divider names*/ +typedef enum _sim_clock_divider_names { + kSimClockDividerOutdiv1, /* OUTDIV1*/ + kSimClockDividerOutdiv2, /* OUTDIV2*/ + kSimClockDividerOutdiv3, /* OUTDIV3*/ + kSimClockDividerOutdiv4, /* OUTDIV4*/ + kSimClockDividerUsbFrac, /* (USBFRAC + 1) / (USBDIV + 1)*/ + kSimClockDividerUsbDiv, + kSimClockDividerUsbfsFrac, /* (USBFSFRAC + 1) / (USBFSDIV) + 1)*/ + kSimClockDividerUsbfsDiv, + kSimClockDividerUsbhsFrac, /* (USBHSFRAC + 1) / (USBHSDIV + 1)*/ + kSimClockDividerUsbhsDiv, + kSimClockDividerLcdcFrac, /* (LCDCFRAC + 1) / (LCDCDIV + 1)*/ + kSimClockDividerLcdcDiv, + kSimClockDividerNfcFrac, /* (NFCFRAC + 1) / (NFCDIV + 1)*/ + kSimClockDividerNfcDiv, + kSimClockDividerSpecial1, /* special divider 1*/ + kSimClockDividerMax +} sim_clock_divider_names_t; + +/*! @brief SIM USB voltage regulator in standby mode setting during stop modes */ +typedef enum _sim_usbsstby_stop +{ + kSimUsbsstbyNoRegulator, /* regulator not in standby during Stop modes */ + kSimUsbsstbyWithRegulator /* regulator in standby during Stop modes */ +} sim_usbsstby_stop_t; + +/*! @brief SIM USB voltage regulator in standby mode setting during VLPR and VLPW modes */ +typedef enum _sim_usbvstby_stop +{ + kSimUsbvstbyNoRegulator, /* regulator not in standby during VLPR and VLPW modes */ + kSimUsbvstbyWithRegulator /* regulator in standby during VLPR and VLPW modes */ +} sim_usbvstby_stop_t; + +/*! @brief SIM CMT/UART pad drive strength */ +typedef enum _sim_cmtuartpad_strengh +{ + kSimCmtuartSinglePad, /* Single-pad drive strength for CMT IRO or UART0_TXD */ + kSimCmtuartDualPad /* Dual-pad drive strength for CMT IRO or UART0_TXD */ +} sim_cmtuartpad_strengh_t; + +/*! @brief SIM PTD7 pad drive strength */ +typedef enum _sim_ptd7pad_strengh +{ + kSimPtd7padSinglePad, /* Single-pad drive strength for PTD7 */ + kSimPtd7padDualPad /* Dual-pad drive strength for PTD7 */ +} sim_ptd7pad_strengh_t; + +/*! @brief SIM FlexBus security level */ +typedef enum _sim_flexbus_security_level +{ + kSimFbslLevel0, /* All off-chip accesses (op code and data) via the FlexBus */ + /* and DDR controller are disallowed */ + kSimFbslLevel1, /* Undefined */ + kSimFbslLevel2, /* Off-chip op code accesses are disallowed. Data accesses */ + /* are allowed */ + kSimFbslLevel3 /* Off-chip op code accesses and data accesses are allowed */ +} sim_flexbus_security_level_t; + +/*! @brief SIM ADCx pre-trigger select */ +typedef enum _sim_pretrgsel +{ + kSimAdcPretrgselA, /* Pre-trigger A selected for ADCx */ + kSimAdcPretrgselB /* Pre-trigger B selected for ADCx */ +} sim_pretrgsel_t; + +/*! @brief SIM ADCx trigger select */ +typedef enum _sim_trgsel +{ + kSimAdcTrgselExt, /* External trigger */ + kSimAdcTrgSelHighSpeedComp0, /* High speed comparator 0 asynchronous interrupt */ + kSimAdcTrgSelHighSpeedComp1, /* High speed comparator 1 asynchronous interrupt */ + kSimAdcTrgSelHighSpeedComp2, /* High speed comparator 2 asynchronous interrupt */ + kSimAdcTrgSelPit0, /* PIT trigger 0 */ + kSimAdcTrgSelPit1, /* PIT trigger 1 */ + kSimAdcTrgSelPit2, /* PIT trigger 2 */ + kSimAdcTrgSelPit3, /* PIT trigger 3 */ + kSimAdcTrgSelFtm0, /* FTM0 trigger */ + kSimAdcTrgSelFtm1, /* FTM1 trigger */ + kSimAdcTrgSelFtm2, /* FTM2 trigger */ + kSimAdcTrgSelFtm3, /* FTM3 trigger */ + kSimAdcTrgSelRtcAlarm, /* RTC alarm */ + kSimAdcTrgSelRtcSec, /* RTC seconds */ + kSimAdcTrgSelLptimer, /* Low-power timer trigger */ + kSimAdcTrgSelHigSpeedComp3 /* High speed comparator 3 asynchronous interrupt */ +} sim_trgsel_t; + +/*! @brief SIM receive data source select */ +typedef enum _sim_uart_rxsrc +{ + kSimUartRxsrcPin, /* UARTx_RX Pin */ + kSimUartRxsrcCmp0, /* CMP0 */ + kSimUartRxsrcCmp1, /* CMP1 */ + kSimUartRxsrcReserved /* Reserved */ +} sim_uart_rxsrc_t; + +/*! @brief SIM transmit data source select */ +typedef enum _sim_uart_txsrc +{ + kSimUartTxsrcPin, /* UARTx_TX Pin */ + kSimUartTxsrcCmp0, /* UARTx_TX pin modulated with FTM1 channel 0 output */ + kSimUartTxsrcCmp1, /* UARTx_TX pin modulated with FTM2 channel 0 output */ + kSimUartTxsrcReserved /* Reserved */ +} sim_uart_txsrc_t; + +/*! @brief SIM FlexTimer x trigger y select */ +typedef enum _sim_ftm_trg_src +{ + kSimFtmTrgSrc0, /* FlexTimer x trigger y select 0 */ + kSimFtmTrgSrc1 /* FlexTimer x trigger y select 1 */ +} sim_ftm_trg_src_t; + +/*! @brief SIM FlexTimer external clock select */ +typedef enum _sim_ftm_clk_sel +{ + kSimFtmClkSel0, /* FTM CLKIN0 pin. */ + kSimFtmClkSel1 /* FTM CLKIN1 pin. */ +} sim_ftm_clk_sel_t; + +/*! @brief SIM FlexTimer x channel y input capture source select */ +typedef enum _sim_ftm_ch_src +{ + kSimFtmChSrc0, /* See RM for details of each selection for each channel */ + kSimFtmChSrc1, /* See RM for details of each selection for each channel */ + kSimFtmChSrc2, /* See RM for details of each selection for each channel */ + kSimFtmChSrc3 /* See RM for details of each selection for each channel */ +} sim_ftm_ch_src_t; + +/*! @brief SIM FlexTimer x Fault y select */ +typedef enum _sim_ftm_flt_sel +{ + kSimFtmFltSel0, /* FlexTimer x fault y select 0 */ + kSimFtmFltSel1 /* FlexTimer x fault y select 1 */ +} sim_ftm_flt_sel_t; + +/*! @brief SIM Timer/PWM external clock select */ +typedef enum _sim_tpm_clk_sel +{ + kSimTpmClkSel0, /* Timer/PWM TPM_CLKIN0 pin. */ + kSimTpmClkSel1 /* Timer/PWM TPM_CLKIN1 pin. */ +} sim_tpm_clk_sel_t; + +/*! @brief SIM Timer/PWM x channel y input capture source select */ +typedef enum _sim_tpm_ch_src +{ + kSimTpmChSrc0, /* TPMx_CH0 signal */ + kSimTpmChSrc1 /* CMP0 output */ +} sim_tpm_ch_src_t; + +/*! @brief SIM HAL API return status*/ +typedef enum _sim_hal_status { + kSimHalSuccess, + kSimHalFail, + kSimHalNoSuchModule, + kSimHalNoSuchClockSrc, + kSimHalNoSuchDivider +} sim_hal_status_t; + +/*! @brief Clock gate module configuration table structure*/ +typedef struct SimClockGateModuleConfig { + sim_clock_gate_module_names_t clockGateModuleName; /*!< clock module name*/ + uint8_t deviceInstance; /*!< device instance*/ + uint32_t scgcRegAddress; /*!< clock gate control register address*/ + uint32_t deviceMask; /*!< device mask in control register*/ +} sim_clock_gate_module_config_t; + +/*! @brief clock source value table structure*/ +typedef struct SimClockSourceValue { + union{ + uint8_t name; + sim_clock_names_t clockName; /*!< clock name*/ + sim_clock_source_names_t clockSelName; + }; + bool isSel; /*!< clock sel flag*/ + bool hasDivider; /*!< has divider*/ + sim_clock_divider_names_t dividerName; /*!< divider name*/ +} sim_clock_source_value_t; + +/*! @brief Clock name configuration table structure*/ +typedef struct SimClockNameConfig { + sim_clock_names_t clockName; /*!< clock name*/ + bool useOtherRefClock; /*!< if it uses the other ref clock*/ + sim_clock_names_t otherRefClockName; /*!< other ref clock name*/ + sim_clock_divider_names_t dividerName; /*!< clock divider name*/ +} sim_clock_name_config_t; + +/*! @brief clock name configuration table for specified CPU defined in fsl_clock_module_names_Kxxx.h*/ +extern const sim_clock_name_config_t kSimClockNameConfigTable[]; + +/*! @brief SIM configuration table for clock module names*/ +extern const sim_clock_gate_module_config_t kSimClockGateModuleConfigTable[]; + +/*! @brief clock source value table for specified CPU */ +extern const sim_clock_source_value_t *kClockSourceValueTable[]; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif /* __cplusplus*/ + +/*! @name clock related feature APIs*/ +/*@{*/ + +/*! + * @brief Enables or disables the clock for a specified clock module. + * + * This function enables/disables the clock for a specified clock module and instance. + * + * @param clockModule Clock module name defined in the sim_clock_gate_module_names_t + * @param instance Module instance + * @param enable Enable or disable the clock + * - true: enable the clock + * - false: disable the clock + * @return status If the clock module name doesn't exist, it returns an error. + */ +sim_hal_status_t clock_hal_set_gate(sim_clock_gate_module_names_t clockModule, uint8_t instance, + bool enable); + +/*! + * @brief Gets the clock enabled or disabled state. + * + * This function gets the current clock gate status of the specified clock + * module and instance. + * + * @param clockModule Clock module name defined in sim_clock_gate_module_names_t + * @param instance Module instance + * @param isEnabled returned status, clock is enabled or disabled for the module. + * - true: enabled + * - false: disabled + * @return status if the clock module name doesn't exist, it returns an error. + */ +sim_hal_status_t clock_hal_get_gate(sim_clock_gate_module_names_t clockModule, uint8_t instance, + bool *isEnabled); + +/*! + * @brief Sets the clock source setting. + * + * This function sets the settings for a specified clock source. Each clock + * source has its own clock selection settings. See the chip reference manual for + * clock source detailed settings and the sim_clock_source_names_t + * for clock sources. + * + * @param clockSource Clock source name defined in sim_clock_source_names_t + * @param setting Setting value + * @return status If the clock source doesn't exist, it returns an error. + */ +sim_hal_status_t clock_hal_set_clock_source(sim_clock_source_names_t clockSource, uint8_t setting); + +/*! + * @brief Gets the clock source setting. + * + * This function gets the settings for a specified clock source. Each clock + * source has its own clock selection settings. See the reference manual for + * clock source detailed settings and the sim_clock_source_names_t + * for clock sources. + * + * @param clockSource Clock source name + * @param setting Current setting for the clock source + * @return status If the clock source doesn't exist, it returns an error. + */ +sim_hal_status_t clock_hal_get_clock_source(sim_clock_source_names_t clockSource, + uint8_t *setting); + +/*! + * @brief Sets the clock divider setting. + * + * This function sets the setting for a specified clock divider. See the + * reference manual for a supported clock divider and value range and the + * sim_clock_divider_names_t for dividers. + * + * @param clockDivider Clock divider name + * @param divider Divider setting + * @return status If the clock divider doesn't exist, it returns an error. + */ +sim_hal_status_t clock_hal_set_clock_divider(sim_clock_divider_names_t clockDivider, + uint32_t setting); + +/*! + * @brief Sets the clock out dividers setting. + * + * This function sets the setting for all clock out dividers at the same time. + * See the reference manual for a supported clock divider and value range and the + * sim_clock_divider_names_t for clock out dividers. + * + * @param outdiv1 Outdivider1 setting + * @param outdiv2 Outdivider2 setting + * @param outdiv3 Outdivider3 setting + * @param outdiv4 Outdivider4 setting + */ +void clock_hal_set_clock_out_dividers(uint32_t outdiv1, uint32_t outdiv2, + uint32_t outdiv3, uint32_t outdiv4); + +/*! + * @brief Gets the clock divider setting. + * + * This function gets the setting for a specified clock divider. See the + * reference manual for a supported clock divider and value range and the + * sim_clock_divider_names_t for dividers. + * + * @param clockDivider Clock divider name + * @param divider Divider value pointer + * @return status If the clock divider doesn't exist, it returns an error. + */ +sim_hal_status_t clock_hal_get_clock_divider(sim_clock_divider_names_t clockDivider, + uint32_t *setting); + +/*@}*/ + +/*! @name individual field access APIs*/ +/*@{*/ + +/*! + * @brief Sets the USB voltage regulator enabled setting. + * + * This function controls whether the USB voltage regulator is enabled. This bit + * can only be written when the SOPT1CFG[URWE] bit is set. + * + * @param enable USB voltage regulator enable setting + * - true: USB voltage regulator is enabled. + * - false: USB voltage regulator is disabled. + */ +static inline void sim_set_usbregen(bool enable) +{ + BW_SIM_SOPT1_USBREGEN(enable ? 1 : 0); +} + +/*! + * @brief Gets the USB voltage regulator enabled setting. + * + * This function gets the USB voltage regulator enabled setting. + * + * @return enabled True if the USB voltage regulator is enabled. + */ +static inline bool sim_get_usbregen(void) +{ + return BR_SIM_SOPT1_USBREGEN; +} + +/*! + * @brief Sets the USB voltage regulator in a standby mode setting during Stop, VLPS, LLS, and VLLS. + * + * This function controls whether the USB voltage regulator is placed in a standby + * mode during Stop, VLPS, LLS, and VLLS modes. This bit can only be written when the + * SOPT1CFG[USSWE] bit is set. + * + * @param setting USB voltage regulator in standby mode setting + * - 0: USB voltage regulator not in standby during Stop, VLPS, LLS and + * VLLS modes. + * - 1: USB voltage regulator in standby during Stop, VLPS, LLS and VLLS + * modes. + */ +static inline void sim_set_usbsstby(sim_usbsstby_stop_t setting) +{ + BW_SIM_SOPT1_USBSSTBY(setting); +} + +/*! + * @brief Gets the USB voltage regulator in a standby mode setting. + * + * This function gets the USB voltage regulator in a standby mode setting. + * + * @return setting USB voltage regulator in a standby mode setting + */ +static inline sim_usbsstby_stop_t sim_get_usbsstby(void) +{ + return (sim_usbsstby_stop_t)BR_SIM_SOPT1_USBSSTBY; +} + +/*! + * @brief Sets the USB voltage regulator in a standby mode during the VLPR or the VLPW. + * + * This function controls whether the USB voltage regulator is placed in a standby + * mode during the VLPR and the VLPW modes. This bit can only be written when the + * SOPT1CFG[UVSWE] bit is set. + * + * @param setting USB voltage regulator in standby mode setting + * - 0: USB voltage regulator not in standby during VLPR and VLPW modes. + * - 1: USB voltage regulator in standby during VLPR and VLPW modes. + */ +static inline void sim_set_usbvstby(sim_usbvstby_stop_t setting) +{ + BW_SIM_SOPT1_USBVSTBY(setting); +} + +/*! + * @brief Gets the USB voltage regulator in a standby mode during the VLPR or the VLPW. + * + * This function gets the USB voltage regulator in a standby mode during the VLPR or the VLPW. + * + * @return setting USB voltage regulator in a standby mode during the VLPR or the VLPW + */ +static inline sim_usbvstby_stop_t sim_get_usbvstby(void) +{ + return (sim_usbvstby_stop_t)BR_SIM_SOPT1_USBVSTBY; +} + +#if FSL_FEATURE_SIM_OPT_HAS_RAMSIZE +/*! + * @brief Gets the RAM size. + * + * This function gets the RAM size. The field specifies the amount of system RAM, which is + * available on the device. + * + * @return size RAM size on the device + */ +static inline uint32_t sim_get_ramsize(void) +{ + return BR_SIM_SOPT1_RAMSIZE; +} +#endif /* FSL_FEATURE_SIM_OPT_HAS_RAMSIZE */ + +/*! + * @brief Sets the USB voltage regulator stop standby write enable setting. + * + * This function controls whether the USB voltage regulator stop standby write + * feature is enabled. Writing one to this bit allows the SOPT1[USBSSTBY] bit to be written. This + * register bit clears after a write to SOPT1[USBSSTBY]. + * + * @param enable USB voltage regulator stop standby write enable setting + * - true: SOPT1[USBSSTBY] can be written. + * - false: SOPT1[USBSSTBY] cannot be written. + */ +static inline void sim_set_usswe(bool enable) +{ + BW_SIM_SOPT1CFG_USSWE(enable ? 1 : 0); +} + +/*! + * @brief Gets the USB voltage regulator stop standby write enable setting. + * + * This function gets the USB voltage regulator stop standby write enable setting. + * + * @return enabled True if the USB voltage regulator stop standby write is enabled. + */ +static inline bool sim_get_usswe(void) +{ + return BR_SIM_SOPT1CFG_USSWE; +} + +/*! + * @brief Sets the USB voltage regulator VLP standby write enable setting. + * + * This function controls whether USB voltage regulator VLP standby write + * feature is enabled. Writing one to this bit allows the SOPT1[USBVSTBY] bit to be written. This + * register bit clears after a write to SOPT1[USBVSTBY]. + * + * @param enable USB voltage regulator VLP standby write enable setting + * - true: SOPT1[USBSSTBY] can be written. + * - false: SOPT1[USBSSTBY] cannot be written. + */ +static inline void sim_set_uvswe(bool enable) +{ + BW_SIM_SOPT1CFG_UVSWE(enable ? 1 : 0); +} + +/*! + * @brief Gets the USB voltage regulator VLP standby write enable setting. + * + * This function gets the USB voltage regulator VLP standby write enable setting. + * + * @return enabled True if the USB voltage regulator VLP standby write is enabled. + */ +static inline bool sim_get_uvswe(void) +{ + return BR_SIM_SOPT1CFG_UVSWE; +} + +/*! + * @brief Sets the USB voltage regulator enable write enable setting. + * + * This function controls whether the USB voltage regulator write enable + * feature is enabled. Writing one to this bit allows the SOPT1[USBREGEN] bit to be written. + * This register bit clears after a write to SOPT1[USBREGEN]. + * + * @param enable USB voltage regulator enable write enable setting + * - true: SOPT1[USBSSTBY] can be written. + * - false: SOPT1[USBSSTBY] cannot be written. + */ +static inline void sim_set_urwe(bool enable) +{ + BW_SIM_SOPT1CFG_URWE(enable ? 1 : 0); +} + +/*! + * @brief Gets the USB voltage regulator enable write enable setting. + * + * This function gets the USB voltage regulator enable write enable setting. + * + * @return enabled True if USB voltage regulator enable write is enabled. + */ +static inline bool sim_get_urwe(void) +{ + return BR_SIM_SOPT1CFG_URWE; +} + +#if FSL_FEATURE_SIM_OPT_HAS_CMTUARTPAD +/*! + * @brief Sets the CMT/UART pad drive strength setting. + * + * This function controls the output drive strength of the CMT IRO signal or + * UART0_TXD signal on PTD7 pin by selecting either one or two pads to drive it. + * + * @param setting CMT/UART pad drive strength setting + * - 0: Single-pad drive strength for CMT IRO or UART0_TXD. + * - 1: Dual-pad drive strength for CMT IRO or UART0_TXD. + */ +static inline void sim_set_cmtuartpad(sim_cmtuartpad_strengh_t setting) +{ + BW_SIM_SOPT2_CMTUARTPAD(setting); +} + +/*! + * @brief Gets the CMT/UART pad drive strength setting. + * + * This function gets the CMT/UART pad drive strength setting. + * + * @return setting CMT/UART pad drive strength setting + */ +static inline sim_cmtuartpad_strengh_t sim_get_cmtuartpad(void) +{ + return (sim_cmtuartpad_strengh_t)BR_SIM_SOPT2_CMTUARTPAD; +} +#endif /* FSL_FEATURE_SIM_OPT_HAS_CMTUARTPAD */ + +#if FSL_FEATURE_SIM_OPT_HAS_PTD7PAD +/*! + * @brief Sets the PTD7 pad drive strength setting. + * + * This function controls the output drive strength of the PTD7 pin by selecting + * either one or two pads to drive it. + * + * @param setting PTD7 pad drive strength setting + * - 0: Single-pad drive strength for PTD7. + * - 1: Double pad drive strength for PTD7. + */ +static inline void sim_set_ptd7pad(sim_ptd7pad_strengh_t setting) +{ + BW_SIM_SOPT2_PTD7PAD(setting); +} + +/*! + * @brief Gets the PTD7 pad drive strength setting. + * + * This function gets the PTD7 pad drive strength setting. + * + * @return setting PTD7 pad drive strength setting + */ +static inline sim_ptd7pad_strengh_t sim_get_ptd7pad(void) +{ + return (sim_ptd7pad_strengh_t)BR_SIM_SOPT2_PTD7PAD; +} +#endif /* FSL_FEATURE_SIM_OPT_HAS_PTD7PAD */ + +#if FSL_FEATURE_SIM_OPT_HAS_FBSL +/*! + * @brief Sets the FlexBus security level setting. + * + * This function sets the FlexBus security level setting. If the security is enabled, + * this field affects which CPU operations can access the off-chip via the FlexBus + * and DDR controller interfaces. This field has no effect if the security is not enabled. + * + * @param setting FlexBus security level setting + * - 00: All off-chip accesses (op code and data) via the FlexBus and + * DDR controller are disallowed. + * - 10: Off-chip op code accesses are disallowed. Data accesses are + * allowed. + * - 11: Off-chip op code accesses and data accesses are allowed. + */ +static inline void sim_set_fbsl(sim_flexbus_security_level_t setting) +{ + BW_SIM_SOPT2_FBSL(setting); +} + +/*! + * @brief Gets the FlexBus security level setting. + * + * This function gets the FlexBus security level setting. + * + * @return setting FlexBus security level setting + */ +static inline sim_flexbus_security_level_t sim_get_fbsl(void) +{ + return (sim_flexbus_security_level_t)BR_SIM_SOPT2_FBSL; +} +#endif /* FSL_FEATURE_SIM_OPT_HAS_FBSL */ + +#if FSL_FEATURE_SIM_OPT_HAS_PCR +/*! + * @brief Sets the PCR setting. + * + * This function sets the PCR setting. This is the FlexBus hold cycles before + * FlexBus can release bus to NFC or to IDLE. + * + * @param setting PCR setting + */ +static inline void sim_set_pcr(uint32_t setting) +{ + BW_SIM_SOPT6_PCR(setting); +} + +/*! + * @brief Gets the PCR setting. + * + * This function gets the PCR setting. + * + * @return setting PCR setting + */ +static inline uint32_t sim_get_pcr(void) +{ + return BR_SIM_SOPT6_PCR; +} +#endif /* FSL_FEATURE_SIM_OPT_HAS_PCR */ + +#if FSL_FEATURE_SIM_OPT_HAS_MCC +/*! + * @brief Sets the MCC setting. + * + * This function sets the MCC setting. This is the NFC hold cycle in case the + * FlexBus request during NFC is granted. + * + * @param setting MCC setting + */ +static inline void sim_set_mcc(uint32_t setting) +{ + BW_SIM_SOPT6_MCC(setting); +} + +/*! + * @brief Gets the MCC setting. + * + * This function gets the MCC setting. + * + * @return setting MCC setting + */ +static inline uint32_t sim_get_mcc(void) +{ + return BR_SIM_SOPT6_MCC; +} +#endif /* FSL_FEATURE_SIM_OPT_HAS_MCC */ + +/*! + * @brief Sets the ADCx alternate trigger enable setting. + * + * This function enables/disables the alternative conversion triggers for ADCx. + * + * @param enable Enable alternative conversion triggers for ADCx + * - true: Select alternative conversion trigger. + * - false: Select PDB trigger. + */ +void sim_set_alttrgen(uint8_t instance, bool enable); + +/*! + * @brief Gets the ADCx alternate trigger enable setting. + * + * This function gets the ADCx alternate trigger enable setting. + * + * @return enabled True if ADCx alternate trigger is enabled + */ +bool sim_get_alttrgen(uint8_t instance); + +/*! + * @brief Sets the ADCx pre-trigger select setting. + * + * This function selects the ADCx pre-trigger source when the alternative triggers + * are enabled through ADCxALTTRGEN. + * + * @param select pre-trigger select setting for ADCx + * - 0: Pre-trigger A selected for ADCx. + * - 1: Pre-trigger B selected for ADCx. + */ +void sim_set_pretrgsel(uint8_t instance, sim_pretrgsel_t select); + +/*! + * @brief Gets the ADCx pre-trigger select setting. + * + * This function gets the ADCx pre-trigger select setting. + * + * @return select ADCx pre-trigger select setting + */ +sim_pretrgsel_t sim_get_pretrgsel(uint8_t instance); + +/*! + * @brief Sets the ADCx trigger select setting. + * + * This function selects the ADCx trigger source when alternative triggers + * are enabled through ADCxALTTRGEN. + * + * @param select trigger select setting for ADCx + * - 0000: External trigger + * - 0001: High speed comparator 0 asynchronous interrupt + * - 0010: High speed comparator 1 asynchronous interrupt + * - 0011: High speed comparator 2 asynchronous interrupt + * - 0100: PIT trigger 0 + * - 0101: PIT trigger 1 + * - 0110: PIT trigger 2 + * - 0111: PIT trigger 3 + * - 1000: FTM0 trigger + * - 1001: FTM1 trigger + * - 1010: FTM2 trigger + * - 1011: FTM3 trigger + * - 1100: RTC alarm + * - 1101: RTC seconds + * - 1110: Low-power timer trigger + * - 1111: High speed comparator 3 asynchronous interrupt +*/ +void sim_set_trgsel(uint8_t instance, sim_trgsel_t select); + +/*! + * @brief Gets the ADCx trigger select setting. + * + * This function gets the ADCx trigger select setting. + * + * @return select ADCx trigger select setting + */ +sim_pretrgsel_t sims_get_trgsel(uint8_t instance); + +/*! + * @brief Sets the UARTx receive data source select setting. + * + * This function selects the source for the UARTx receive data. + * + * @param select the source for the UARTx receive data + * - 00: UARTx_RX pin. + * - 01: CMP0. + * - 10: CMP1. + * - 11: Reserved. + */ +void sim_set_uart_rxsrc(uint8_t instance, sim_uart_rxsrc_t select); + +/*! + * @brief Gets the UARTx receive data source select setting. + * + * This function gets the UARTx receive data source select setting. + * + * @return select UARTx receive data source select setting + */ +sim_uart_rxsrc_t sim_get_uart_rxsrc(uint8_t instance); + +/*! + * @brief Sets the UARTx transmit data source select setting. + * + * This function selects the source for the UARTx transmit data. + * + * @param select the source for the UARTx transmit data + * - 00: UARTx_TX pin. + * - 01: UARTx_TX pin modulated with FTM1 channel 0 output. + * - 10: UARTx_TX pin modulated with FTM2 channel 0 output. + * - 11: Reserved. + */ +void sim_set_uart_txsrc(uint8_t instance, sim_uart_txsrc_t select); + +/*! + * @brief Gets the UARTx transmit data source select setting. + * + * This function gets the UARTx transmit data source select setting. + * + * @return select UARTx transmit data source select setting + */ +sim_uart_txsrc_t sim_get_uart_txsrc(uint8_t instance); + +#if FSL_FEATURE_SIM_OPT_HAS_ODE +/*! + * @brief Sets the UARTx Open Drain Enable setting. + * + * This function enables/disables the UARTx Open Drain. + * + * @param enable Enable/disable UARTx Open Drain + * - True: Enable UARTx Open Drain + * - False: Disable UARTx Open Drain + */ +void sim_set_uart_ode(uint8_t instance, bool enable); + +/*! + * @brief Gets the UARTx Open Drain Enable setting. + * + * This function gets the UARTx Open Drain Enable setting. + * + * @return enabled True if UARTx Open Drain is enabled. + */ +bool sim_get_uart_ode(uint8_t instance); +#endif + +#if FSL_FEATURE_SIM_OPT_HAS_FTM +/*! + * @brief Sets the FlexTimer x hardware trigger y source select setting. + * + * This function selects the source of FTMx hardware trigger y. + * + * @param select FlexTimer x hardware trigger y + * - 0: Pre-trigger A selected for ADCx. + * - 1: Pre-trigger B selected for ADCx. + */ +void sim_set_ftm_trg_src(uint8_t instance, uint8_t trigger, sim_ftm_trg_src_t select); + +/*! + * @brief Gets the FlexTimer x hardware trigger y source select setting. + * + * This function gets the FlexTimer x hardware trigger y source select setting. + * + * @return select FlexTimer x hardware trigger y source select setting + */ +sim_ftm_trg_src_t sim_get_ftm_trg_src(uint8_t instance, uint8_t trigger); + +/*! + * @brief Sets the FlexTimer x external clock pin select setting. + * + * This function selects the source of FTMx external clock pin select. + * + * @param select FTMx external clock pin select + * - 0: FTMx external clock driven by FTM CLKIN0 pin. + * - 1: FTMx external clock driven by FTM CLKIN1 pin. + */ +void sim_set_ftm_clk_sel(uint8_t instance, sim_ftm_clk_sel_t select); + +/*! + * @brief Gets the FlexTimer x external clock pin select setting. + * + * This function gets the FlexTimer x external clock pin select setting. + * + * @return select FlexTimer x external clock pin select setting + */ +sim_ftm_clk_sel_t sim_get_ftm_clk_sel(uint8_t instance); + +/*! + * @brief Sets the FlexTimer x channel y input capture source select setting. + * + * This function selects the FlexTimer x channel y input capture source. + * + * @param select FlexTimer x channel y input capture source + * See the reference manual for detailed definition for each channel and selection. + */ +void sim_set_ftm_ch_src(uint8_t instance, uint8_t channel, sim_ftm_ch_src_t select); + +/*! + * @brief Gets the FlexTimer x channel y input capture source select setting. + * + * This function gets the FlexTimer x channel y input capture source select setting. + * + * @return select FlexTimer x channel y input capture source select setting + */ +sim_ftm_ch_src_t sim_get_ftm_ch_src(uint8_t instance, uint8_t channel); + +/*! + * @brief Sets the FlexTimer x fault y select setting. + * + * This function sets the FlexTimer x fault y select setting. + * + * @param select FlexTimer x fault y select setting + * - 0: FlexTimer x fault y select 0. + * - 1: FlexTimer x fault y select 1. + */ +void sim_set_ftm_flt_sel(uint8_t instance, uint8_t fault, sim_ftm_flt_sel_t select); + +/*! + * @brief Gets the FlexTimer x fault y select setting. + * + * This function gets the FlexTimer x fault y select setting. + * + * @return select FlexTimer x fault y select setting + */ +sim_ftm_flt_sel_t sim_get_ftm_flt_sel(uint8_t instance, uint8_t fault); +#endif + +#if FSL_FEATURE_SIM_OPT_HAS_TPM +/*! + * @brief Sets the Timer/PWM x external clock pin select setting. + * + * This function selects the source of the Timer/PWM x external clock pin select. + * + * @param select Timer/PWM x external clock pin select + * - 0: Timer/PWM x external clock driven by the TPM_CLKIN0 pin. + * - 1: Timer/PWM x external clock driven by the TPM_CLKIN1 pin. + */ +void sim_set_tpm_clk_sel(uint8_t instance, sim_tpm_clk_sel_t select); + +/*! + * @brief Gets the Timer/PWM x external clock pin select setting. + * + * This function gets the Timer/PWM x external clock pin select setting. + * + * @return select Timer/PWM x external clock pin select setting + */ +sim_tpm_clk_sel_t sim_get_tpm_clk_sel(uint8_t instance); + +/*! + * @brief Sets the Timer/PWM x channel y input capture source select setting. + * + * This function selects the Timer/PWM x channel y input capture source. + * + * @param select Timer/PWM x channel y input capture source + * - 0: TPMx_CH0 signal + * - 1: CMP0 output + */ +void sim_set_tpm_ch_src(uint8_t instance, uint8_t channel, sim_tpm_ch_src_t select); + +/*! + * @brief Gets the Timer/PWM x channel y input capture source select setting. + * + * This function gets the Timer/PWM x channel y input capture source select setting. + * + * @return select Timer/PWM x channel y input capture source select setting + */ +sim_tpm_ch_src_t sim_get_tpm_ch_src(uint8_t instance, uint8_t channel); +#endif + +#if FSL_FEATURE_SIM_SDID_HAS_FAMILYID +/*! + * @brief Gets the Kinetis Family ID in the System Device ID register (SIM_SDID). + * + * This function gets the Kinetis Family ID in the System Device ID register. + * + * @return id Kinetis Family ID + */ +static inline uint32_t sim_get_family_id(void) +{ + return BR_SIM_SDID_FAMILYID; +} +#endif + +#if FSL_FEATURE_SIM_SDID_HAS_SUBFAMID +/*! + * @brief Gets the Kinetis Sub-Family ID in the System Device ID register (SIM_SDID). + * + * This function gets the Kinetis Sub-Family ID in System Device ID register. + * + * @return id Kinetis Sub-Family ID + */ +static inline uint32_t sim_get_subfam_id(void) +{ + return BR_SIM_SDID_SUBFAMID; +} +#endif + +#if FSL_FEATURE_SIM_SDID_HAS_SERIESID +/*! + * @brief Gets the Kinetis SeriesID in the System Device ID register (SIM_SDID). + * + * This function gets the Kinetis Series ID in System Device ID register. + * + * @return id Kinetis Series ID + */ +static inline uint32_t sim_get_series_id(void) +{ + return BR_SIM_SDID_SERIESID; +} +#endif + +/*! + * @brief Gets the Kinetis Fam ID in System Device ID register (SIM_SDID). + * + * This function gets the Kinetis Fam ID in System Device ID register. + * + * @return id Kinetis Fam ID + */ +static inline uint32_t sim_get_fam_id(void) +{ + return BR_SIM_SDID_FAMID; +} + +/*! + * @brief Gets the Kinetis Pincount ID in System Device ID register (SIM_SDID). + * + * This function gets the Kinetis Pincount ID in System Device ID register. + * + * @return id Kinetis Pincount ID + */ +static inline uint32_t sim_get_pin_id(void) +{ + return BR_SIM_SDID_PINID; +} + +/*! + * @brief Gets the Kinetis Revision ID in the System Device ID register (SIM_SDID). + * + * This function gets the Kinetis Revision ID in System Device ID register. + * + * @return id Kinetis Revision ID + */ +static inline uint32_t sim_get_rev_id(void) +{ + return BR_SIM_SDID_REVID; +} + +#if FSL_FEATURE_SIM_SDID_HAS_DIEID +/*! + * @brief Gets the Kinetis Die ID in the System Device ID register (SIM_SDID). + * + * This function gets the Kinetis Die ID in System Device ID register. + * + * @return id Kinetis Die ID + */ +static inline uint32_t sim_get_die_id(void) +{ + return BR_SIM_SDID_DIEID; +} +#endif + +#if FSL_FEATURE_SIM_SDID_HAS_SRAMSIZE +/*! + * @brief Gets the Kinetis SRAM size in the System Device ID register (SIM_SDID). + * + * This function gets the Kinetis SRAM Size in System Device ID register. + * + * @return id Kinetis SRAM Size + */ +static inline uint32_t sim_get_sram_size(void) +{ + return BR_SIM_SDID_SRAMSIZE; +} +#endif + +#if FSL_FEATURE_SIM_FCFG_HAS_NVMSIZE +/*! + * @brief Gets the FlexNVM size in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function gets the FlexNVM size in the Flash Configuration Register 1. + * + * @return size FlexNVM Size + */ +static inline uint32_t sim_get_nvm_size(void) +{ + return BR_SIM_FCFG1_NVMSIZE; +} +#endif + +/*! + * @brief Gets the program flash size in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function gets the program flash size in the Flash Configuration Register 1. + * + * @return size Program flash Size + */ +static inline uint32_t sim_get_pf_size(void) +{ + return BR_SIM_FCFG1_PFSIZE; +} + +#if FSL_FEATURE_SIM_FCFG_HAS_EESIZE +/*! + * @brief Gets the EEProm size in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function gets the EEProm size in the Flash Configuration Register 1. + * + * @return size EEProm Size + */ +static inline uint32_t sim_get_eeprom_size(void) +{ + return BR_SIM_FCFG1_EESIZE; +} +#endif + +#if FSL_FEATURE_SIM_FCFG_HAS_DEPART +/*! + * @brief Gets the FlexNVM partition in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function gets the FlexNVM partition in the Flash Configuration Register 1 + * + * @return setting FlexNVM partition setting + */ +static inline uint32_t sim_get_depart(void) +{ + return BR_SIM_FCFG1_DEPART; +} +#endif + +#if FSL_FEATURE_SIM_FCFG_HAS_FLASHDOZE +/*! + * @brief Sets the Flash Doze in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function sets the Flash Doze in the Flash Configuration Register 1. + * + * @param setting Flash Doze setting + */ +static inline void sim_set_flashdoze(uint32_t setting) +{ + BW_SIM_FCFG1_FLASHDOZE(setting); +} + +/*! + * @brief Gets the Flash Doze in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function gets the Flash Doze in the Flash Configuration Register 1. + * + * @return setting Flash Doze setting + */ +static inline uint32_t sim_get_flashdoze(void) +{ + return BR_SIM_FCFG1_FLASHDOZE; +} +#endif + +#if FSL_FEATURE_SIM_FCFG_HAS_FLASHDIS +/*! + * @brief Sets the Flash disable setting in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function sets the Flash disable setting in the Flash Configuration Register 1. + * + * @param setting Flash disable setting + */ +static inline void sim_set_flashdis(uint32_t setting) +{ + BW_SIM_FCFG1_FLASHDIS(setting); +} + +/*! + * @brief Gets the Flash disable setting in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function gets the Flash disable setting in the Flash Configuration Register 1. + * + * @return setting Flash disable setting + */ +static inline uint32_t sim_get_flashdis(void) +{ + return BR_SIM_FCFG1_FLASHDIS; +} +#endif + +#if FSL_FEATURE_SIM_FCFG_HAS_MAXADDR0 +/*! + * @brief Gets the Flash maximum address block 0 in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function gets the Flash maximum block 0 in Flash Configuration Register 2. + * + * @return address Flash maximum block 0 address + */ +static inline uint32_t sim_get_maxaddr0(void) +{ + return BR_SIM_FCFG2_MAXADDR0; +} +#endif + +#if FSL_FEATURE_SIM_FCFG_HAS_MAXADDR1 +/*! + * @brief Gets the Flash maximum address block 1 in Flash Configuration Register 2. + * + * This function gets the Flash maximum block 1 in Flash Configuration Register 1. + * + * @return address Flash maximum block 0 address + */ +static inline uint32_t sim_get_maxaddr1(void) +{ + return BR_SIM_FCFG2_MAXADDR1; +} +#endif + +#if FSL_FEATURE_SIM_FCFG_HAS_MAXADDR01 +/*! + * @brief Gets the Flash maximum address block 0 in the Flash Configuration Register 1 (SIM_FCFG). + * + * This function gets the Flash maximum block 0 in Flash Configuration Register 2. + * + * @return address Flash maximum block 0 address + */ +static inline uint32_t sim_get_maxaddr01(void) +{ + return BR_SIM_FCFG2_MAXADDR01; +} +#endif + +#if FSL_FEATURE_SIM_FCFG_HAS_MAXADDR23 +/*! + * @brief Gets the Flash maximum address block 1 in the Flash Configuration Register 2. + * + * This function gets the Flash maximum block 1 in Flash Configuration Register 1. + * + * @return address Flash maximum block 0 address + */ +static inline uint32_t sim_get_maxaddr23(void) +{ + return BR_SIM_FCFG2_MAXADDR23; +} +#endif + +#if FSL_FEATURE_SIM_FCFG_HAS_PFLSH +/*! + * @brief Gets the program flash in the Flash Configuration Register 2. + * + * This function gets the program flash maximum block 0 in Flash Configuration Register 1. + * + * @return status program flash status + */ +static inline uint32_t sim_get_pflsh(void) +{ + return BR_SIM_FCFG2_PFLSH; +} +#endif + +/*@}*/ + +#if defined(__cplusplus) +} +#endif /* __cplusplus*/ + +/*! @}*/ + +#endif /* __FSL_SIM_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/smc/fsl_smc_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_SMC_FEATURES_H__ +#define __FSL_SMC_FEATURES_H__ + +#if (defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || \ + defined(CPU_MKL25Z32VFT4) || defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || \ + defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || defined(CPU_MKL25Z128VLH4) || \ + defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4)) + #define FSL_FEATURE_SMC_HAS_PSTOPO (0) + #define FSL_FEATURE_SMC_HAS_LPOPO (0) + #define FSL_FEATURE_SMC_HAS_PORPO (0) + #define FSL_FEATURE_SMC_HAS_LPWUI (0) + #define FSL_FEATURE_SMC_HAS_LLS_SUBMODE (0) + #define FSL_FEATURE_SMC_USE_VLLSCTRL_REG (0) + #define FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM (1) +#elif (defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15)) + #define FSL_FEATURE_SMC_HAS_PSTOPO (0) + #define FSL_FEATURE_SMC_HAS_LPOPO (0) + #define FSL_FEATURE_SMC_HAS_PORPO (0) + #define FSL_FEATURE_SMC_HAS_LPWUI (1) + #define FSL_FEATURE_SMC_HAS_LLS_SUBMODE (0) + #define FSL_FEATURE_SMC_USE_VLLSCTRL_REG (1) + #define FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM (0) +#elif (defined(CPU_MK64FN1M0VMD12)) + #define FSL_FEATURE_SMC_HAS_PSTOPO (0) + #define FSL_FEATURE_SMC_HAS_LPOPO (0) + #define FSL_FEATURE_SMC_HAS_PORPO (1) + #define FSL_FEATURE_SMC_HAS_LPWUI (1) + #define FSL_FEATURE_SMC_HAS_LLS_SUBMODE (0) + #define FSL_FEATURE_SMC_USE_VLLSCTRL_REG (1) + #define FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM (0) +#elif (defined(CPU_MK22FN512VDC12)) + #define FSL_FEATURE_SMC_HAS_PSTOPO (1) + #define FSL_FEATURE_SMC_HAS_LPOPO (0) + #define FSL_FEATURE_SMC_HAS_PORPO (1) + #define FSL_FEATURE_SMC_HAS_LPWUI (0) + #define FSL_FEATURE_SMC_HAS_LLS_SUBMODE (1) + #define FSL_FEATURE_SMC_USE_VLLSCTRL_REG (0) + #define FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM (0) +#else + #error "No valid CPU defined" +#endif + +#endif /* __FSL_SMC_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/smc/fsl_smc_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,395 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !defined(__FSL_SMC_HAL_H__) +#define __FSL_SMC_HAL_H__ + +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> +#include "fsl_device_registers.h" +#include "fsl_smc_features.h" + +/*! @addtogroup smc_hal*/ +/*! @{*/ + +/*! @file fsl_smc_hal.h */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + + +/*! @brief Power Modes in PMSTAT*/ +typedef enum _power_mode_stat { + kStatRun = 0x01, /*!< 0000_0001 - Current power mode is RUN*/ + kStatStop = 0x02, /*!< 0000_0010 - Current power mode is STOP*/ + kStatVlpr = 0x04, /*!< 0000_0100 - Current power mode is VLPR*/ + kStatVlpw = 0x08, /*!< 0000_1000 - Current power mode is VLPW*/ + kStatVlps = 0x10, /*!< 0001_0000 - Current power mode is VLPS*/ + kStatLls = 0x20, /*!< 0010_0000 - Current power mode is LLS*/ + kStatVlls = 0x40, /*!< 0100_0000 - Current power mode is VLLS*/ + kStatHsrun = 0x80 /*!< 1000_0000 - Current power mode is HSRUN*/ +} power_mode_stat_t; + +/*! @brief Power Modes Protection*/ +typedef enum _power_modes_protect { + kAllowHsrun, /*!< Allow High Speed Run mode*/ + kAllowVlp, /*!< Allow Very-Low-Power Modes*/ + kAllowLls, /*!< Allow Low-Leakage Stop Mode*/ + kAllowVlls, /*!< Allow Very-Low-Leakage Stop Mode*/ + kAllowMax +} power_modes_protect_t; + +/*! + * @brief Run mode definition + */ +typedef enum _smc_run_mode { + kSmcRun, /*!< normal RUN mode*/ + kSmcReservedRun, + kSmcVlpr, /*!< Very-Low-Power RUN mode*/ + kSmcHsrun /*!< High Speed Run mode (HSRUN)*/ +} smc_run_mode_t; + +/*! + * @brief Stop mode definition + */ +typedef enum _smc_stop_mode { + kSmcStop, /*!< Normal STOP mode*/ + kSmcReservedStop1, /*!< Reserved*/ + kSmcVlps, /*!< Very-Low-Power STOP mode*/ + kSmcLls, /*!< Low-Leakage Stop mode*/ + kSmcVlls /*!< Very-Low-Leakage Stop mode*/ +} smc_stop_mode_t; + +/*! + * @brief VLLS/LLS stop sub mode definition + */ +typedef enum _smc_stop_submode { + kSmcStopSub0, + kSmcStopSub1, + kSmcStopSub2, + kSmcStopSub3 +} smc_stop_submode_t; + +/*! @brief Low Power Wake Up on Interrupt option*/ +typedef enum _smc_lpwui_option { + kSmcLpwuiEnabled, /*!< Low Power Wake Up on Interrupt enabled*/ + kSmcLpwuiDisabled /*!< Low Power Wake Up on Interrupt disabled*/ +} smc_lpwui_option_t; + +/*! @brief Partial STOP option*/ +typedef enum _smc_pstop_option { + kSmcPstopStop, /*!< STOP - Normal Stop mode*/ + kSmcPstopStop1, /*!< Partial Stop with both system and bus clocks disabled*/ + kSmcPstopStop2, /*!< Partial Stop with system clock disabled and bus clock enabled*/ + kSmcPstopReserved, +} smc_pstop_option_t; + +/*! @brief POR option*/ +typedef enum _smc_por_option { + kSmcPorEnabled, /*!< POR detect circuit is enabled in VLLS0*/ + kSmcPorDisabled /*!< POR detect circuit is disabled in VLLS0*/ +} smc_por_option_t; + +/*! @brief LPO power option*/ +typedef enum _smc_lpo_option { + kSmcLpoEnabled, /*!< LPO clock is enabled in LLS/VLLSx*/ + kSmcLpoDisabled /*!< LPO clock is disabled in LLS/VLLSx*/ +} smc_lpo_option_t; + +/*! @brief Power mode control options*/ +typedef enum _smc_power_options { + kSmcOptionLpwui, /*!< Low Power Wake Up on Interrupt*/ + kSmcOptionPropo /*!< POR option*/ +} smc_power_options_t; + +/*! @brief Power mode protection configuration*/ +typedef struct _smc_power_mode_protection_config { + bool vlpProt; /*!< VLP protect*/ + bool llsProt; /*!< LLS protect */ + bool vllsProt; /*!< VLLS protect*/ +} smc_power_mode_protection_config_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif /* __cplusplus*/ + +/*! @name System mode controller APIs*/ +/*@{*/ + +/*! + * @brief Configures all power mode protection settings. + * + * This function configures the power mode protection settings for + * supported power modes in the specified chip family. The available power modes + * are defined in the smc_power_mode_protection_config_t. An application should provide + * the protect settings for all supported power modes on the chip. This + * should be done at an early system level initialization stage. See the reference manual + * for details. This register can only write once after the power reset. If the user has only a single option to set, + * either use this function or use the individual set function. + * + * + * @param protectConfig Configurations for the supported power mode protect settings + * - See smc_power_mode_protection_config_t for details. + */ +void smc_hal_config_power_mode_protection(smc_power_mode_protection_config_t *protectConfig); + +/*! + * @brief Configures the individual power mode protection settings. + * + * This function only configures the power mode protection settings for + * a specified power mode on the specified chip family. The available power modes + * are defined in the smc_power_mode_protection_config_t. See the reference manual + * for details. This register can only write once after the power reset. + * + * @param protect Power mode to set for protection + * @param allow Allow or not allow the power mode protection + */ +void smc_hal_set_power_mode_protection(power_modes_protect_t protect, bool allow); + +/*! + * @brief Gets the the current power mode protection setting. + * + * This function gets the current power mode protection settings for + * a specified power mode. + * + * @param protect Power mode to set for protection + * @return state Status of the protection setting + * - true: Allowed + * - false: Not allowed +*/ +bool smc_hal_get_power_mode_protection(power_modes_protect_t protect); + +/*! + * @brief Configures the the RUN mode control setting. + * + * This function sets the run mode settings, for example, normal run mode, + * very lower power run mode, etc. See the smc_run_mode_t for supported run + * mode on the chip family and the reference manual for details about the + * run mode. + * + * @param runMode Run mode setting defined in smc_run_mode_t + */ +void smc_hal_power_mode_config_run(smc_run_mode_t runMode); + +/*! + * @brief Gets the current RUN mode configuration setting. + * + * This function gets the run mode settings. See the smc_run_mode_t + * for a supported run mode on the chip family and the reference manual for + * details about the run mode. + * + * @return setting Run mode configuration setting +*/ +smc_run_mode_t smc_hal_power_mode_get_run_config(void); + +/*! + * @brief Configures the STOP mode control setting. + * + * This function sets the stop mode settings, for example, normal stop mode, + * very lower power stop mode, etc. See the smc_stop_mode_t for supported stop + * mode on the chip family and the reference manual for details about the + * stop mode. + * + * @param stopMode Stop mode defined in smc_stop_mode_t + */ +void smc_hal_power_mode_config_stop(smc_stop_mode_t stopMode); + +/*! + * @brief Gets the current STOP mode control settings. + * + * This function gets the stop mode settings, for example, normal stop mode, + * very lower power stop mode, etc. See the smc_stop_mode_t for supported stop + * mode on the chip family and the reference manual for details about the + * stop mode. + * + * @return setting Current stop mode configuration setting +*/ +smc_stop_mode_t smc_hal_power_mode_get_stop_config(void); + +/*! + * @brief Configures the stop sub mode control setting. + * + * This function sets the stop submode settings. Some of the stop mode + * further supports submodes. See the smc_stop_submode_t for supported + * stop submodes and the reference manual for details about the submodes + * for a specific stop mode. + * + * @param stopSubMode Stop submode setting defined in smc_stop_submode_t + * + * @return none + */ +void smc_hal_power_mode_config_stop_submode(smc_stop_submode_t stopSubMode); + +/*! + * @brief Gets the current stop submode configuration settings. + * + * This function gets the stop submode settings. Some of the stop mode + * further support submodes. See the smc_stop_submode_t for supported + * stop submodes and the reference manual for details about the submode + * for a specific stop mode. + * + * @return setting Current stop submode setting +*/ +smc_stop_submode_t smc_hal_power_mode_get_stop_submode_config(void); + +#if FSL_FEATURE_SMC_HAS_PORPO +/*! + * @brief Configures the POR (power-on-reset) option. + * + * This function sets the POR power option setting. It controls whether the + * POR detect circuit (for brown-out detection) is enabled in a certain stop mode. + * The setting either enables or disables the above feature when the POR + * occurs. See the reference manual for details. + * + * @param option POR option setting refer to smc_por_option_t + */ +void smc_hal_config_por_power_option(smc_por_option_t option); + +/*! + * @brief Gets the configuration settings for the POR option. + * + * This function sets the POR power option setting. See the configuration function + * header for details. + * + * @return option Current POR option setting +*/ +smc_por_option_t smc_hal_get_por_power_config(void); +#endif + +#if FSL_FEATURE_SMC_HAS_PSTOPO +/*! + * @brief Configures the PSTOPOR (Partial Stop Option). + * + * This function sets the PSTOPOR option. It controls whether a Partial + * Stop mode is entered when the STOPM=STOP. When entering a Partial Stop mode from the + * RUN mode, the PMC, MCG and Flash remain fully powered allowing the device + * to wakeup almost instantaneously at the expense of a higher power consumption. + * In PSTOP2, only the system clocks are gated, which allows the peripherals running on bus + * clock to remain fully functional. In PSTOP1, both system and bus clocks are + * gated. Refer to the smc_pstop_option_t for supported options. See the reference + * manual for details. + * + * @param option PSTOPOR option setting defined in smc_pstop_option_t + */ +void smc_hal_config_pstop_power_option(smc_pstop_option_t option); + +/*! + * @brief Gets the configuration of the PSTOPO option. + * + * This function gets the current PSTOPOR option setting. See the configuration + * function for more details. + * + * @return option Current PSTOPOR option setting +*/ +smc_por_option_t smc_hal_get_pstop_power_config(void); +#endif + +#if FSL_FEATURE_SMC_HAS_LPOPO +/*! + * @brief Configures the LPO option setting. + * + * This function sets the LPO option setting. It controls whether the 1 kHZ + * LPO clock is enabled in a certain lower power stop modes. See the + * smc_lpo_option_t for supported options and the reference manual for + * details about this option. + * + * @param option LPO option setting defined in smc_lpo_option_t + */ +void smc_hal_config_lpo_power_option(smc_lpo_option_t option); + +/*! + * @brief Gets the settings of the LPO option. + * + * This function gets the current LPO option setting. See the configuration + * function for details. + * + * @return option Current LPO option setting +*/ +smc_por_option_t smc_hal_get_lpo_power_config(void); +#endif + +#if FSL_FEATURE_SMC_HAS_LPWUI +/*! + * @brief Configures the LPWUI (Low Power Wake Up on interrupt) option. + * + * This function sets the LPWUI option and cause the system to exit + * to normal RUN mode when any active interrupt occurs while in a specific lower + * power mode. See the smc_lpwui_option_t for supported options and the + * reference manual for more details about this option. + * + * @param option LPWUI option setting defined in smc_lpwui_option_t + */ +void smc_hal_config_lpwui_option(smc_lpwui_option_t option); + +/*! + * @brief Gets the current LPWUI option. + * + * This function gets the LPWUI option. See the configuration function for more + * details. + * + * @return setting Current LPWAUI option setting +*/ +smc_lpwui_option_t smc_hal_get_lpwui_config(void); +#endif + +/*! + * @brief Gets the current power mode stat. + * + * This function returns the current power mode stat. Once application + * switches the power mode, it should always check the stat to check whether it + * runs into the specified mode or not. An application should check + * this mode before switching to a different mode. The system requires that + * only certain modes can switch to other specific modes. See the + * reference manual for details and the _power_mode_stat for information about + * the power stat. + * + * @return stat Current power mode stat +*/ +uint8_t smc_hal_get_power_mode_stat(void); + +/*@}*/ + +#if defined(__cplusplus) +} +#endif /* __cplusplus*/ + +/*! @}*/ + +#endif /* __FSL_SMC_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/uart/fsl_uart_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,512 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_UART_FEATURES_H__) +#define __FSL_UART_FEATURES_H__ + +/* For getting uart instance count from uart.h*/ +#include "device/fsl_device_registers.h" + +#if defined(CPU_MK10DN512VLK10) || defined(CPU_MK10DN512VLL10) || defined(CPU_MK10DX128VLQ10) || defined(CPU_MK10DX256VLQ10) || \ + defined(CPU_MK10DN512VLQ10) || defined(CPU_MK10DN512VMB10) || defined(CPU_MK10DN512VMC10) || defined(CPU_MK10DX128VMD10) || \ + defined(CPU_MK10DX256VMD10) || defined(CPU_MK10DN512VMD10) || defined(CPU_MK10FN1M0VLQ12) || defined(CPU_MK10FX512VLQ12) || \ + defined(CPU_MK10FN1M0VMD12) || defined(CPU_MK10FX512VMD12) || defined(CPU_MK20DN512VLK10) || defined(CPU_MK20DN512VLL10) || \ + defined(CPU_MK20DX128VLQ10) || defined(CPU_MK20DX256VLQ10) || defined(CPU_MK20DN512VLQ10) || defined(CPU_MK20DN512VMB10) || \ + defined(CPU_MK20DX256VMC10) || defined(CPU_MK20DN512VMC10) || defined(CPU_MK20DX128VMD10) || defined(CPU_MK20DX256VMD10) || \ + defined(CPU_MK20DN512VMD10) || defined(CPU_MK20FN1M0VLQ12) || defined(CPU_MK20FX512VLQ12) || defined(CPU_MK20FN1M0VMD12) || \ + defined(CPU_MK20FX512VMD12) || defined(CPU_MK30DN512VLK10) || defined(CPU_MK30DN512VLL10) || defined(CPU_MK30DX128VLQ10) || \ + defined(CPU_MK30DX256VLQ10) || defined(CPU_MK30DN512VLQ10) || defined(CPU_MK30DN512VMB10) || defined(CPU_MK30DN512VMC10) || \ + defined(CPU_MK30DX128VMD10) || defined(CPU_MK30DX256VMD10) || defined(CPU_MK30DN512VMD10) || defined(CPU_MK40DN512VLK10) || \ + defined(CPU_MK40DN512VLL10) || defined(CPU_MK40DX128VLQ10) || defined(CPU_MK40DX256VLQ10) || defined(CPU_MK40DN512VLQ10) || \ + defined(CPU_MK40DN512VMB10) || defined(CPU_MK40DN512VMC10) || defined(CPU_MK40DX128VMD10) || defined(CPU_MK40DX256VMD10) || \ + defined(CPU_MK40DN512VMD10) || defined(CPU_MK50DX256CLL10) || defined(CPU_MK50DN512CLL10) || defined(CPU_MK50DN512CLQ10) || \ + defined(CPU_MK50DX256CMC10) || defined(CPU_MK50DN512CMC10) || defined(CPU_MK50DN512CMD10) || defined(CPU_MK50DX256CMD10) || \ + defined(CPU_MK50DX256CLK10) || defined(CPU_MK50DX256CMB10) || defined(CPU_MK51DX256CLL10) || defined(CPU_MK51DN512CLL10) || \ + defined(CPU_MK51DN256CLQ10) || defined(CPU_MK51DN512CLQ10) || defined(CPU_MK51DX256CMC10) || defined(CPU_MK51DN512CMC10) || \ + defined(CPU_MK51DN256CMD10) || defined(CPU_MK51DN512CMD10) || defined(CPU_MK51DX256CLK10) || defined(CPU_MK51DX256CMB10) || \ + defined(CPU_MK52DN512CLQ10) || defined(CPU_MK52DN512CMD10) || defined(CPU_MK53DN512CLQ10) || defined(CPU_MK53DX256CLQ10) || \ + defined(CPU_MK53DN512CMD10) || defined(CPU_MK53DX256CMD10) || defined(CPU_MK60DN256VLL10) || defined(CPU_MK60DX256VLL10) || \ + defined(CPU_MK60DN512VLL10) || defined(CPU_MK60DN256VLQ10) || defined(CPU_MK60DX256VLQ10) || defined(CPU_MK60DN512VLQ10) || \ + defined(CPU_MK60DN256VMC10) || defined(CPU_MK60DX256VMC10) || defined(CPU_MK60DN512VMC10) || defined(CPU_MK60DN256VMD10) || \ + defined(CPU_MK60DX256VMD10) || defined(CPU_MK60DN512VMD10) || defined(CPU_MK60FN1M0VLQ12) || defined(CPU_MK60FX512VLQ12) || \ + defined(CPU_MK60FN1M0VLQ15) || defined(CPU_MK60FX512VLQ15) || defined(CPU_MK60FN1M0VMD12) || defined(CPU_MK60FX512VMD12) || \ + defined(CPU_MK60FN1M0VMD15) || defined(CPU_MK60FX512VMD15) || defined(CPU_MK61FN1M0VMD12) || defined(CPU_MK61FX512VMD12) || \ + defined(CPU_MK61FN1M0VMD15) || defined(CPU_MK61FX512VMD15) || defined(CPU_MK61FN1M0VMD12WS) || defined(CPU_MK61FX512VMD12WS) || \ + defined(CPU_MK61FN1M0VMD15WS) || defined(CPU_MK61FX512VMD15WS) || defined(CPU_MK61FN1M0VMF12) || defined(CPU_MK61FX512VMF12) || \ + defined(CPU_MK61FN1M0VMF15) || defined(CPU_MK61FX512VMF15) || defined(CPU_MK61FN1M0VMJ12) || defined(CPU_MK61FX512VMJ12) || \ + defined(CPU_MK61FN1M0VMJ15) || defined(CPU_MK61FX512VMJ15) || defined(CPU_MK61FN1M0VMJ12WS) || defined(CPU_MK61FX512VMJ12WS) || \ + defined(CPU_MK61FN1M0VMJ15WS) || defined(CPU_MK61FX512VMJ15WS) || defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK63FN1M0VMD12WS) || \ + defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12) || defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || \ + defined(CPU_MK70FN1M0VMF15) || defined(CPU_MK70FX512VMF15) || defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || \ + defined(CPU_MK70FN1M0VMJ15) || defined(CPU_MK70FX512VMJ15) || defined(CPU_MK70FN1M0VMJ12WS) || defined(CPU_MK70FX512VMJ12WS) || \ + defined(CPU_MK70FN1M0VMJ15WS) || defined(CPU_MK70FX512VMJ15WS) + /* @brief Redefine instance count */ + #define UART_INSTANCE_COUNT (HW_UART_INSTANCE_COUNT) + /* @brief Has receive FIFO overflow detection (bit field CFIFO[RXOFE]).*/ + #define FSL_FEATURE_UART_HAS_IRQ_EXTENDED_FUNCTIONS (1) + /* @brief Has low power features (can be enabled in wait mode via register bit C1[DOZEEN]).*/ + #define FSL_FEATURE_UART_HAS_LOW_POWER_UART_SUPPORT (0) + /* @brief Has extended data register ED.*/ + #define FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS (1) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_HAS_FIFO (1) + /* @brief Hardware flow control (RTS, CTS) is supported.*/ + #define FSL_FEATURE_UART_HAS_MODEM_SUPPORT (1) + /* @brief Infrared (modulation) is supported.*/ + #define FSL_FEATURE_UART_HAS_IR_SUPPORT (1) + /* @brief 2 bits long stop bit is available.*/ + #define FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT (0) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_HAS_10BIT_DATA_SUPPORT (0) + /* @brief Baud rate fine adjustment is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT (1) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_OVER_SAMPLING_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_RX_RESYNC_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BOTH_EDGE_SAMPLING_SUPPORT (0) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_FIFO_SIZEn(x) \ + ((x) == 0 ? (8) : \ + ((x) == 1 ? (8) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (1) : \ + ((x) == 5 ? (1) : (-1))))))) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_NO_PARITY (9) + /* @brief Maximal data width with parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_PARITY (9) + /* @brief Supports two match addresses to filter incoming frames.*/ + #define FSL_FEATURE_UART_HAS_ADDRESS_MATCHING (1) + /* @brief Has transmitter/receiver DMA enable bits C5[TDMAE]/C5[RDMAE].*/ + #define FSL_FEATURE_UART_HAS_DMA_ENABLE (0) + /* @brief Has transmitter/receiver DMA select bits C4[TDMAS]/C4[RDMAS].*/ + #define FSL_FEATURE_UART_HAS_DMA_SELECT (1) + /* @brief Data character bit order selection is supported (bit field S2[MSBF]).*/ + #define FSL_FEATURE_UART_HAS_BIT_ORDER_SELECT (1) + /* @brief Has smart card (ISO7816 protocol) support and no improved smart card support.*/ + #define FSL_FEATURE_UART_HAS_SMART_CARD_SUPPORTn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : \ + ((x) == 5 ? (0) : (-1))))))) + /* @brief Has improved smart card (ISO7816 protocol) support.*/ + #define FSL_FEATURE_UART_HAS_IMPROVED_SMART_CARD_SUPPORT (0) + /* @brief Has local operation network (CEA709.1-B protocol) support.*/ + #define FSL_FEATURE_UART_HAS_LOCAL_OPERATION_NETWORK_SUPPORTn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : \ + ((x) == 5 ? (0) : (-1))))))) +#elif defined(CPU_MK10DX128VMP5) || defined(CPU_MK10DN128VMP5) || defined(CPU_MK10DX64VMP5) || defined(CPU_MK10DN64VMP5) || \ + defined(CPU_MK10DX32VMP5) || defined(CPU_MK10DN32VMP5) || defined(CPU_MK10DX128VLH5) || defined(CPU_MK10DN128VLH5) || \ + defined(CPU_MK10DX64VLH5) || defined(CPU_MK10DN64VLH5) || defined(CPU_MK10DX32VLH5) || defined(CPU_MK10DN32VLH5) || \ + defined(CPU_MK10DX128VFM5) || defined(CPU_MK10DN128VFM5) || defined(CPU_MK10DX64VFM5) || defined(CPU_MK10DN64VFM5) || \ + defined(CPU_MK10DX32VFM5) || defined(CPU_MK10DN32VFM5) || defined(CPU_MK10DX128VFT5) || defined(CPU_MK10DN128VFT5) || \ + defined(CPU_MK10DX64VFT5) || defined(CPU_MK10DN64VFT5) || defined(CPU_MK10DX32VFT5) || defined(CPU_MK10DN32VFT5) || \ + defined(CPU_MK10DX128VLF5) || defined(CPU_MK10DN128VLF5) || defined(CPU_MK10DX64VLF5) || defined(CPU_MK10DN64VLF5) || \ + defined(CPU_MK10DX32VLF5) || defined(CPU_MK10DN32VLF5) || defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || \ + defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || \ + defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || \ + defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || \ + defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || \ + defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || \ + defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || \ + defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) + /* @brief Has receive FIFO overflow detection (bit field CFIFO[RXOFE]).*/ + #define FSL_FEATURE_UART_HAS_IRQ_EXTENDED_FUNCTIONS (0) + /* @brief Has low power features (can be enabled in wait mode via register bit C1[DOZEEN]).*/ + #define FSL_FEATURE_UART_HAS_LOW_POWER_UART_SUPPORT (0) + /* @brief Has extended data register ED.*/ + #define FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS (1) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_HAS_FIFO (1) + /* @brief Hardware flow control (RTS, CTS) is supported.*/ + #define FSL_FEATURE_UART_HAS_MODEM_SUPPORT (1) + /* @brief Infrared (modulation) is supported.*/ + #define FSL_FEATURE_UART_HAS_IR_SUPPORT (1) + /* @brief 2 bits long stop bit is available.*/ + #define FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT (0) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_HAS_10BIT_DATA_SUPPORT (0) + /* @brief Baud rate fine adjustment is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT (1) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_OVER_SAMPLING_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_RX_RESYNC_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BOTH_EDGE_SAMPLING_SUPPORT (0) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_FIFO_SIZEn(x) \ + ((x) == 0 ? (8) : \ + ((x) == 1 ? (1) : \ + ((x) == 2 ? (1) : (-1)))) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_NO_PARITY (9) + /* @brief Maximal data width with parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_PARITY (9) + /* @brief Supports two match addresses to filter incoming frames.*/ + #define FSL_FEATURE_UART_HAS_ADDRESS_MATCHING (1) + /* @brief Has transmitter/receiver DMA enable bits C5[TDMAE]/C5[RDMAE].*/ + #define FSL_FEATURE_UART_HAS_DMA_ENABLE (0) + /* @brief Has transmitter/receiver DMA select bits C4[TDMAS]/C4[RDMAS].*/ + #define FSL_FEATURE_UART_HAS_DMA_SELECT (1) + /* @brief Data character bit order selection is supported (bit field S2[MSBF]).*/ + #define FSL_FEATURE_UART_HAS_BIT_ORDER_SELECT (1) + /* @brief Has smart card (ISO7816 protocol) support and no improved smart card support.*/ + #define FSL_FEATURE_UART_HAS_SMART_CARD_SUPPORTn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : (-1)))) + /* @brief Has improved smart card (ISO7816 protocol) support.*/ + #define FSL_FEATURE_UART_HAS_IMPROVED_SMART_CARD_SUPPORT (0) + /* @brief Has local operation network (CEA709.1-B protocol) support.*/ + #define FSL_FEATURE_UART_HAS_LOCAL_OPERATION_NETWORK_SUPPORTn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : (-1)))) +#elif defined(CPU_MK10DX64VLH7) || defined(CPU_MK10DX128VLH7) || defined(CPU_MK10DX256VLH7) || defined(CPU_MK10DX64VLK7) || \ + defined(CPU_MK10DX128VLK7) || defined(CPU_MK10DX256VLK7) || defined(CPU_MK10DX128VLL7) || defined(CPU_MK10DX256VLL7) || \ + defined(CPU_MK10DX64VMB7) || defined(CPU_MK10DX128VMB7) || defined(CPU_MK10DX256VMB7) || defined(CPU_MK10DX128VML7) || \ + defined(CPU_MK10DX256VML7) || defined(CPU_MK10DN512ZVLK10) || defined(CPU_MK10DN512ZVLL10) || defined(CPU_MK10DN512ZVLQ10) || \ + defined(CPU_MK10DX256ZVLQ10) || defined(CPU_MK10DX128ZVLQ10) || defined(CPU_MK10DN512ZVMB10) || defined(CPU_MK10DN512ZVMC10) || \ + defined(CPU_MK10DN512ZVMD10) || defined(CPU_MK10DX256ZVMD10) || defined(CPU_MK10DX128ZVMD10) || defined(CPU_MK20DX64VLH7) || \ + defined(CPU_MK20DX128VLH7) || defined(CPU_MK20DX256VLH7) || defined(CPU_MK20DX64VLK7) || defined(CPU_MK20DX128VLK7) || \ + defined(CPU_MK20DX256VLK7) || defined(CPU_MK20DX128VLL7) || defined(CPU_MK20DX256VLL7) || defined(CPU_MK20DX64VMB7) || \ + defined(CPU_MK20DX128VMB7) || defined(CPU_MK20DX256VMB7) || defined(CPU_MK20DX128VML7) || defined(CPU_MK20DX256VML7) || \ + defined(CPU_MK20DN512ZVLK10) || defined(CPU_MK20DX256ZVLK10) || defined(CPU_MK20DN512ZVLL10) || defined(CPU_MK20DX256ZVLL10) || \ + defined(CPU_MK20DN512ZVLQ10) || defined(CPU_MK20DX256ZVLQ10) || defined(CPU_MK20DX128ZVLQ10) || defined(CPU_MK20DN512ZVMB10) || \ + defined(CPU_MK20DX256ZVMB10) || defined(CPU_MK20DN512ZVMC10) || defined(CPU_MK20DX256ZVMC10) || defined(CPU_MK20DN512ZVMD10) || \ + defined(CPU_MK20DX256ZVMD10) || defined(CPU_MK20DX128ZVMD10) || defined(CPU_MK30DX64VLH7) || defined(CPU_MK30DX128VLH7) || \ + defined(CPU_MK30DX256VLH7) || defined(CPU_MK30DX64VLK7) || defined(CPU_MK30DX128VLK7) || defined(CPU_MK30DX256VLK7) || \ + defined(CPU_MK30DX128VLL7) || defined(CPU_MK30DX256VLL7) || defined(CPU_MK30DX64VMB7) || defined(CPU_MK30DX128VMB7) || \ + defined(CPU_MK30DX256VMB7) || defined(CPU_MK30DX128VML7) || defined(CPU_MK30DX256VML7) || defined(CPU_MK30DN512ZVLK10) || \ + defined(CPU_MK30DN512ZVLL10) || defined(CPU_MK30DN512ZVLQ10) || defined(CPU_MK30DX256ZVLQ10) || defined(CPU_MK30DX128ZVLQ10) || \ + defined(CPU_MK30DN512ZVMB10) || defined(CPU_MK30DN512ZVMC10) || defined(CPU_MK30DN512ZVMD10) || defined(CPU_MK30DX256ZVMD10) || \ + defined(CPU_MK30DX128ZVMD10) || defined(CPU_MK40DX64VLH7) || defined(CPU_MK40DX128VLH7) || defined(CPU_MK40DX256VLH7) || \ + defined(CPU_MK40DX64VLK7) || defined(CPU_MK40DX128VLK7) || defined(CPU_MK40DX256VLK7) || defined(CPU_MK40DX128VLL7) || \ + defined(CPU_MK40DX256VLL7) || defined(CPU_MK40DX64VMB7) || defined(CPU_MK40DX128VMB7) || defined(CPU_MK40DX256VMB7) || \ + defined(CPU_MK40DX128VML7) || defined(CPU_MK40DX256VML7) || defined(CPU_MK40DN512ZVLK10) || defined(CPU_MK40DN512ZVLL10) || \ + defined(CPU_MK40DN512ZVLQ10) || defined(CPU_MK40DX256ZVLQ10) || defined(CPU_MK40DX128ZVLQ10) || defined(CPU_MK40DN512ZVMB10) || \ + defined(CPU_MK40DN512ZVMC10) || defined(CPU_MK40DN512ZVMD10) || defined(CPU_MK40DX256ZVMD10) || defined(CPU_MK40DX128ZVMD10) || \ + defined(CPU_MK50DX128CLH7) || defined(CPU_MK50DX128CLK7) || defined(CPU_MK50DX256CLK7) || defined(CPU_MK50DX256CLL7) || \ + defined(CPU_MK50DX128CMB7) || defined(CPU_MK50DX256CMB7) || defined(CPU_MK50DX256CML7) || defined(CPU_MK50DN512ZCLL10) || \ + defined(CPU_MK50DX256ZCLL10) || defined(CPU_MK50DN512ZCLQ10) || defined(CPU_MK50DN512ZCMC10) || defined(CPU_MK50DX256ZCMC10) || \ + defined(CPU_MK50DN512ZCMD10) || defined(CPU_MK50DX256ZCLK10) || defined(CPU_MK50DX256ZCMB10) || defined(CPU_MK51DX128CLH7) || \ + defined(CPU_MK51DX128CLK7) || defined(CPU_MK51DX256CLK7) || defined(CPU_MK51DX256CLL7) || defined(CPU_MK51DX128CMB7) || \ + defined(CPU_MK51DX256CMB7) || defined(CPU_MK51DX256CML7) || defined(CPU_MK51DN512ZCLL10) || defined(CPU_MK51DX256ZCLL10) || \ + defined(CPU_MK51DN512ZCLQ10) || defined(CPU_MK51DN256ZCLQ10) || defined(CPU_MK51DN512ZCMC10) || defined(CPU_MK51DX256ZCMC10) || \ + defined(CPU_MK51DN512ZCMD10) || defined(CPU_MK51DN256ZCMD10) || defined(CPU_MK51DX256ZCLK10) || defined(CPU_MK51DX256ZCMB10) || \ + defined(CPU_MK52DN512ZCLQ10) || defined(CPU_MK52DN512ZCMD10) || defined(CPU_MK53DN512ZCLQ10) || defined(CPU_MK53DX256ZCLQ10) || \ + defined(CPU_MK53DN512ZCMD10) || defined(CPU_MK53DX256ZCMD10) || defined(CPU_MK60DN512ZVLL10) || defined(CPU_MK60DX256ZVLL10) || \ + defined(CPU_MK60DN256ZVLL10) || defined(CPU_MK60DN512ZVLQ10) || defined(CPU_MK60DX256ZVLQ10) || defined(CPU_MK60DN256ZVLQ10) || \ + defined(CPU_MK60DN512ZVMC10) || defined(CPU_MK60DX256ZVMC10) || defined(CPU_MK60DN256ZVMC10) || defined(CPU_MK60DN512ZVMD10) || \ + defined(CPU_MK60DX256ZVMD10) || defined(CPU_MK60DN256ZVMD10) + /* @brief Has receive FIFO overflow detection (bit field CFIFO[RXOFE]).*/ + #define FSL_FEATURE_UART_HAS_IRQ_EXTENDED_FUNCTIONS (0) + /* @brief Has low power features (can be enabled in wait mode via register bit C1[DOZEEN]).*/ + #define FSL_FEATURE_UART_HAS_LOW_POWER_UART_SUPPORT (0) + /* @brief Has extended data register ED.*/ + #define FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS (1) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_HAS_FIFO (1) + /* @brief Hardware flow control (RTS, CTS) is supported.*/ + #define FSL_FEATURE_UART_HAS_MODEM_SUPPORT (1) + /* @brief Infrared (modulation) is supported.*/ + #define FSL_FEATURE_UART_HAS_IR_SUPPORT (1) + /* @brief 2 bits long stop bit is available.*/ + #define FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT (0) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_HAS_10BIT_DATA_SUPPORT (0) + /* @brief Baud rate fine adjustment is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT (1) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_OVER_SAMPLING_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_RX_RESYNC_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BOTH_EDGE_SAMPLING_SUPPORT (0) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_FIFO_SIZEn(x) \ + ((x) == 0 ? (8) : \ + ((x) == 1 ? (8) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (1) : \ + ((x) == 5 ? (1) : (-1))))))) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_NO_PARITY (9) + /* @brief Maximal data width with parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_PARITY (9) + /* @brief Supports two match addresses to filter incoming frames.*/ + #define FSL_FEATURE_UART_HAS_ADDRESS_MATCHING (1) + /* @brief Has transmitter/receiver DMA enable bits C5[TDMAE]/C5[RDMAE].*/ + #define FSL_FEATURE_UART_HAS_DMA_ENABLE (0) + /* @brief Has transmitter/receiver DMA select bits C4[TDMAS]/C4[RDMAS].*/ + #define FSL_FEATURE_UART_HAS_DMA_SELECT (1) + /* @brief Data character bit order selection is supported (bit field S2[MSBF]).*/ + #define FSL_FEATURE_UART_HAS_BIT_ORDER_SELECT (1) + /* @brief Has smart card (ISO7816 protocol) support and no improved smart card support.*/ + #define FSL_FEATURE_UART_HAS_SMART_CARD_SUPPORTn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : \ + ((x) == 5 ? (0) : (-1))))))) + /* @brief Has improved smart card (ISO7816 protocol) support.*/ + #define FSL_FEATURE_UART_HAS_IMPROVED_SMART_CARD_SUPPORT (0) + /* @brief Has local operation network (CEA709.1-B protocol) support.*/ + #define FSL_FEATURE_UART_HAS_LOCAL_OPERATION_NETWORK_SUPPORT (0) +#elif defined(CPU_MK11DX128VLK5) || defined(CPU_MK11DX256VLK5) || defined(CPU_MK11DN512VLK5) || defined(CPU_MK11DX128VLK5WS) || \ + defined(CPU_MK11DX256VLK5WS) || defined(CPU_MK11DN512VLK5WS) || defined(CPU_MK11DX128VMC5) || defined(CPU_MK11DX256VMC5) || \ + defined(CPU_MK11DN512VMC5) || defined(CPU_MK11DX128VMC5WS) || defined(CPU_MK11DX256VMC5WS) || defined(CPU_MK11DN512VMC5WS) || \ + defined(CPU_MK12DX128VLH5) || defined(CPU_MK12DX256VLH5) || defined(CPU_MK12DN512VLH5) || defined(CPU_MK12DX128VLK5) || \ + defined(CPU_MK12DX256VLK5) || defined(CPU_MK12DN512VLK5) || defined(CPU_MK12DX128VMC5) || defined(CPU_MK12DX256VMC5) || \ + defined(CPU_MK12DN512VMC5) || defined(CPU_MK12DX128VLF5) || defined(CPU_MK12DX256VLF5) || defined(CPU_MK21DX128VLK5) || \ + defined(CPU_MK21DX256VLK5) || defined(CPU_MK21DN512VLK5) || defined(CPU_MK21DX128VLK5WS) || defined(CPU_MK21DX256VLK5WS) || \ + defined(CPU_MK21DN512VLK5WS) || defined(CPU_MK21DX128VMC5) || defined(CPU_MK21DX256VMC5) || defined(CPU_MK21DN512VMC5) || \ + defined(CPU_MK21DX128VMC5WS) || defined(CPU_MK21DX256VMC5WS) || defined(CPU_MK21DN512VMC5WS) || defined(CPU_MK22DX128VLH5) || \ + defined(CPU_MK22DX256VLH5) || defined(CPU_MK22DN512VLH5) || defined(CPU_MK22DX128VLK5) || defined(CPU_MK22DX256VLK5) || \ + defined(CPU_MK22DN512VLK5) || defined(CPU_MK22DX128VMC5) || defined(CPU_MK22DX256VMC5) || defined(CPU_MK22DN512VMC5) || \ + defined(CPU_MK22DX128VLF5) || defined(CPU_MK22DX256VLF5) || defined(CPU_MK22FN512VDC12) + /* @brief Redefine instance count */ + #define UART_INSTANCE_COUNT (HW_UART_INSTANCE_COUNT) + /* @brief Has receive FIFO overflow detection (bit field CFIFO[RXOFE]).*/ + #define FSL_FEATURE_UART_HAS_IRQ_EXTENDED_FUNCTIONS (1) + /* @brief Has low power features (can be enabled in wait mode via register bit C1[DOZEEN]).*/ + #define FSL_FEATURE_UART_HAS_LOW_POWER_UART_SUPPORT (0) + /* @brief Has extended data register ED.*/ + #define FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS (1) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_HAS_FIFO (1) + /* @brief Hardware flow control (RTS, CTS) is supported.*/ + #define FSL_FEATURE_UART_HAS_MODEM_SUPPORT (1) + /* @brief Infrared (modulation) is supported.*/ + #define FSL_FEATURE_UART_HAS_IR_SUPPORT (1) + /* @brief 2 bits long stop bit is available.*/ + #define FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT (0) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_HAS_10BIT_DATA_SUPPORT (0) + /* @brief Baud rate fine adjustment is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT (1) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_OVER_SAMPLING_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_RX_RESYNC_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BOTH_EDGE_SAMPLING_SUPPORT (0) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_FIFO_SIZEn(x) \ + ((x) == 0 ? (8) : \ + ((x) == 1 ? (1) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : (-1))))) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_NO_PARITY (9) + /* @brief Maximal data width with parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_PARITY (9) + /* @brief Supports two match addresses to filter incoming frames.*/ + #define FSL_FEATURE_UART_HAS_ADDRESS_MATCHING (1) + /* @brief Has transmitter/receiver DMA enable bits C5[TDMAE]/C5[RDMAE].*/ + #define FSL_FEATURE_UART_HAS_DMA_ENABLE (0) + /* @brief Has transmitter/receiver DMA select bits C4[TDMAS]/C4[RDMAS].*/ + #define FSL_FEATURE_UART_HAS_DMA_SELECT (1) + /* @brief Data character bit order selection is supported (bit field S2[MSBF]).*/ + #define FSL_FEATURE_UART_HAS_BIT_ORDER_SELECT (1) + /* @brief Has smart card (ISO7816 protocol) support and no improved smart card support.*/ + #define FSL_FEATURE_UART_HAS_SMART_CARD_SUPPORTn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : (-1))))) + /* @brief Has improved smart card (ISO7816 protocol) support.*/ + #define FSL_FEATURE_UART_HAS_IMPROVED_SMART_CARD_SUPPORT (0) + /* @brief Has local operation network (CEA709.1-B protocol) support.*/ + #define FSL_FEATURE_UART_HAS_LOCAL_OPERATION_NETWORK_SUPPORT (0) +#elif defined(CPU_MK21FX512VLQ12) || defined(CPU_MK21FN1M0VLQ12) || defined(CPU_MK21FX512VLQ12WS) || defined(CPU_MK21FN1M0VLQ12WS) || \ + defined(CPU_MK21FX512VMC12) || defined(CPU_MK21FN1M0VMC12) || defined(CPU_MK21FX512VMC12WS) || defined(CPU_MK21FN1M0VMC12WS) || \ + defined(CPU_MK21FX512VMD12) || defined(CPU_MK21FN1M0VMD12) || defined(CPU_MK21FX512VMD12WS) || defined(CPU_MK21FN1M0VMD12WS) || \ + defined(CPU_MK22FX512VLH12) || defined(CPU_MK22FN1M0VLH12) || defined(CPU_MK22FX512VLK12) || defined(CPU_MK22FN1M0VLK12) || \ + defined(CPU_MK22FX512VLL12) || defined(CPU_MK22FN1M0VLL12) || defined(CPU_MK22FX512VLQ12) || defined(CPU_MK22FN1M0VLQ12) || \ + defined(CPU_MK22FX512VMC12) || defined(CPU_MK22FN1M0VMC12) || defined(CPU_MK22FX512VMD12) || defined(CPU_MK22FN1M0VMD12) + /* @brief Has receive FIFO overflow detection (bit field CFIFO[RXOFE]).*/ + #define FSL_FEATURE_UART_HAS_IRQ_EXTENDED_FUNCTIONS (1) + /* @brief Has low power features (can be enabled in wait mode via register bit C1[DOZEEN]).*/ + #define FSL_FEATURE_UART_HAS_LOW_POWER_UART_SUPPORT (0) + /* @brief Has extended data register ED.*/ + #define FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS (1) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_HAS_FIFO (1) + /* @brief Hardware flow control (RTS, CTS) is supported.*/ + #define FSL_FEATURE_UART_HAS_MODEM_SUPPORT (1) + /* @brief Infrared (modulation) is supported.*/ + #define FSL_FEATURE_UART_HAS_IR_SUPPORT (1) + /* @brief 2 bits long stop bit is available.*/ + #define FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT (0) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_HAS_10BIT_DATA_SUPPORT (0) + /* @brief Baud rate fine adjustment is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT (1) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_OVER_SAMPLING_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_RX_RESYNC_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BOTH_EDGE_SAMPLING_SUPPORT (0) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_FIFO_SIZEn(x) \ + ((x) == 0 ? (8) : \ + ((x) == 1 ? (8) : \ + ((x) == 2 ? (1) : \ + ((x) == 3 ? (1) : \ + ((x) == 4 ? (1) : \ + ((x) == 5 ? (1) : (-1))))))) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_NO_PARITY (9) + /* @brief Maximal data width with parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_PARITY (9) + /* @brief Supports two match addresses to filter incoming frames.*/ + #define FSL_FEATURE_UART_HAS_ADDRESS_MATCHING (1) + /* @brief Has transmitter/receiver DMA enable bits C5[TDMAE]/C5[RDMAE].*/ + #define FSL_FEATURE_UART_HAS_DMA_ENABLE (0) + /* @brief Has transmitter/receiver DMA select bits C4[TDMAS]/C4[RDMAS].*/ + #define FSL_FEATURE_UART_HAS_DMA_SELECT (1) + /* @brief Data character bit order selection is supported (bit field S2[MSBF]).*/ + #define FSL_FEATURE_UART_HAS_BIT_ORDER_SELECT (1) + /* @brief Has smart card (ISO7816 protocol) support and no improved smart card support.*/ + #define FSL_FEATURE_UART_HAS_SMART_CARD_SUPPORTn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : \ + ((x) == 5 ? (0) : (-1))))))) + /* @brief Has improved smart card (ISO7816 protocol) support.*/ + #define FSL_FEATURE_UART_HAS_IMPROVED_SMART_CARD_SUPPORTn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : \ + ((x) == 5 ? (0) : (-1))))))) + /* @brief Has local operation network (CEA709.1-B protocol) support.*/ + #define FSL_FEATURE_UART_HAS_LOCAL_OPERATION_NETWORK_SUPPORTn(x) \ + ((x) == 0 ? (1) : \ + ((x) == 1 ? (0) : \ + ((x) == 2 ? (0) : \ + ((x) == 3 ? (0) : \ + ((x) == 4 ? (0) : \ + ((x) == 5 ? (0) : (-1))))))) +#elif defined(CPU_MKE02Z64VLC2) || defined(CPU_MKE02Z32VLC2) || defined(CPU_MKE02Z16VLC2) || defined(CPU_MKE02Z64VLD2) || \ + defined(CPU_MKE02Z32VLD2) || defined(CPU_MKE02Z16VLD2) || defined(CPU_MKE02Z64VLH2) || defined(CPU_MKE02Z64VQH2) || \ + defined(CPU_MKE02Z32VLH2) || defined(CPU_MKE02Z32VQH2) || defined(CPU_MKE04Z8VFK4) || defined(CPU_MKE04Z8VTG4) || \ + defined(CPU_MKE04Z8VWJ4) || defined(CPU_MKL14Z32VFM4) || defined(CPU_MKL14Z64VFM4) || defined(CPU_MKL14Z32VFT4) || \ + defined(CPU_MKL14Z64VFT4) || defined(CPU_MKL14Z32VLH4) || defined(CPU_MKL14Z64VLH4) || defined(CPU_MKL14Z32VLK4) || \ + defined(CPU_MKL14Z64VLK4) || defined(CPU_MKL15Z32VFM4) || defined(CPU_MKL15Z64VFM4) || defined(CPU_MKL15Z128VFM4) || \ + defined(CPU_MKL15Z32VFT4) || defined(CPU_MKL15Z64VFT4) || defined(CPU_MKL15Z128VFT4) || defined(CPU_MKL15Z32VLH4) || \ + defined(CPU_MKL15Z64VLH4) || defined(CPU_MKL15Z128VLH4) || defined(CPU_MKL15Z32VLK4) || defined(CPU_MKL15Z64VLK4) || \ + defined(CPU_MKL15Z128VLK4) || defined(CPU_MKL16Z32VFM4) || defined(CPU_MKL16Z64VFM4) || defined(CPU_MKL16Z128VFM4) || \ + defined(CPU_MKL16Z32VFT4) || defined(CPU_MKL16Z64VFT4) || defined(CPU_MKL16Z128VFT4) || defined(CPU_MKL16Z32VLH4) || \ + defined(CPU_MKL16Z64VLH4) || defined(CPU_MKL16Z128VLH4) || defined(CPU_MKL16Z256VLH4) || defined(CPU_MKL16Z256VLK4) || \ + defined(CPU_MKL24Z32VFM4) || defined(CPU_MKL24Z64VFM4) || defined(CPU_MKL24Z32VFT4) || defined(CPU_MKL24Z64VFT4) || \ + defined(CPU_MKL24Z32VLH4) || defined(CPU_MKL24Z64VLH4) || defined(CPU_MKL24Z32VLK4) || defined(CPU_MKL24Z64VLK4) || \ + defined(CPU_MKL25Z32VFM4) || defined(CPU_MKL25Z64VFM4) || defined(CPU_MKL25Z128VFM4) || defined(CPU_MKL25Z32VFT4) || \ + defined(CPU_MKL25Z64VFT4) || defined(CPU_MKL25Z128VFT4) || defined(CPU_MKL25Z32VLH4) || defined(CPU_MKL25Z64VLH4) || \ + defined(CPU_MKL25Z128VLH4) || defined(CPU_MKL25Z32VLK4) || defined(CPU_MKL25Z64VLK4) || defined(CPU_MKL25Z128VLK4) || \ + defined(CPU_MKL26Z32VFM4) || defined(CPU_MKL26Z64VFM4) || defined(CPU_MKL26Z128VFM4) || defined(CPU_MKL26Z32VFT4) || \ + defined(CPU_MKL26Z64VFT4) || defined(CPU_MKL26Z128VFT4) || defined(CPU_MKL26Z32VLH4) || defined(CPU_MKL26Z64VLH4) || \ + defined(CPU_MKL26Z128VLH4) || defined(CPU_MKL26Z256VLH4) || defined(CPU_MKL26Z256VLK4) || defined(CPU_MKL26Z128VLL4) || \ + defined(CPU_MKL26Z256VLL4) || defined(CPU_MKL26Z128VMC4) || defined(CPU_MKL26Z256VMC4) || defined(CPU_MKL34Z64VLH4) || \ + defined(CPU_MKL34Z64VLL4) || defined(CPU_MKL36Z64VLH4) || defined(CPU_MKL36Z128VLH4) || defined(CPU_MKL36Z256VLH4) || \ + defined(CPU_MKL36Z64VLL4) || defined(CPU_MKL36Z128VLL4) || defined(CPU_MKL36Z256VLL4) || defined(CPU_MKL36Z128VMC4) || \ + defined(CPU_MKL36Z256VMC4) || defined(CPU_MKL46Z128VLH4) || defined(CPU_MKL46Z256VLH4) || defined(CPU_MKL46Z128VLL4) || \ + defined(CPU_MKL46Z256VLL4) || defined(CPU_MKL46Z128VMC4) || defined(CPU_MKL46Z256VMC4) + /* @brief Uart0 was not counted as part of instance count, hence add 1 to instance count*/ + #define UART_INSTANCE_COUNT (HW_UART_INSTANCE_COUNT + 1) + /* @brief Has receive FIFO overflow detection (bit field CFIFO[RXOFE]).*/ + #define FSL_FEATURE_UART_HAS_IRQ_EXTENDED_FUNCTIONS (0) + /* @brief Has low power features (can be enabled in wait mode via register bit C1[DOZEEN]).*/ + #define FSL_FEATURE_UART_HAS_LOW_POWER_UART_SUPPORT (1) + /* @brief Has extended data register ED.*/ + #define FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS (0) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_HAS_FIFO (0) + /* @brief Hardware flow control (RTS, CTS) is supported.*/ + #define FSL_FEATURE_UART_HAS_MODEM_SUPPORT (0) + /* @brief Infrared (modulation) is supported.*/ + #define FSL_FEATURE_UART_HAS_IR_SUPPORT (0) + /* @brief 2 bits long stop bit is available.*/ + #define FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT (1) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_HAS_10BIT_DATA_SUPPORT (1) + /* @brief Baud rate fine adjustment is available.*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT (0) + /* @brief Baud rate oversampling is available (has bit fields C4[OSR], C5[BOTHEDGE], C5[RESYNCDIS]).*/ + #define FSL_FEATURE_UART_HAS_BAUD_RATE_OVER_SAMPLING_SUPPORT (0) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_RX_RESYNC_SUPPORT (1) + /* @brief Baud rate oversampling is available.*/ + #define FSL_FEATURE_UART_HAS_BOTH_EDGE_SAMPLING_SUPPORT (1) + /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available).*/ + #define FSL_FEATURE_UART_FIFO_SIZE (0) + /* @brief Maximal data width without parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_NO_PARITY (9) + /* @brief Maximal data width with parity bit.*/ + #define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_PARITY (8) + /* @brief Supports two match addresses to filter incoming frames.*/ + #define FSL_FEATURE_UART_HAS_ADDRESS_MATCHING (0) + /* @brief Has transmitter/receiver DMA enable bits C5[TDMAE]/C5[RDMAE].*/ + #define FSL_FEATURE_UART_HAS_DMA_ENABLE (0) + /* @brief Has transmitter/receiver DMA select bits C4[TDMAS]/C4[RDMAS].*/ + #define FSL_FEATURE_UART_HAS_DMA_SELECT (1) + /* @brief Data character bit order selection is supported (bit field S2[MSBF]).*/ + #define FSL_FEATURE_UART_HAS_BIT_ORDER_SELECT (0) + /* @brief Has smart card (ISO7816 protocol) support.*/ + #define FSL_FEATURE_UART_HAS_SMART_CARD_SUPPORT (0) + /* @brief Has improved smart card (ISO7816 protocol) support.*/ + #define FSL_FEATURE_UART_HAS_IMPROVED_SMART_CARD_SUPPORT (0) + /* @brief Has local operation network (CEA709.1-B protocol) support.*/ + #define FSL_FEATURE_UART_HAS_LOCAL_OPERATION_NETWORK_SUPPORT (0) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_UART_FEATURES_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/uart/fsl_uart_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1760 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_UART_HAL_H__ +#define __FSL_UART_HAL_H__ + +#include <assert.h> +#include <stdint.h> +#include <stdbool.h> +#include "fsl_uart_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup uart_hal + * @{ + */ + +/*! @file*/ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @brief Error codes for the UART driver. */ +typedef enum _uart_status +{ + kStatus_UART_Success = 0, + kStatus_UART_BaudRateCalculationError,/*!< UART Baud Rate calculation error out of range */ + kStatus_UART_BaudRatePercentDiffExceeded, /*!< UART Baud Rate exceeds percentage difference */ + kStatus_UART_BitCountNotSupported, /*!< UART bit count config not supported */ + kStatus_UART_StopBitCountNotSupported, /*!< UART stop bit count config not supported */ + kStatus_UART_RxStandbyModeError, /*!< UART unable to place receiver in standby mode */ + kStatus_UART_ClearStatusFlagError, /*!< UART clear status flag error */ + kStatus_UART_MSBFirstNotSupported, /*!< UART MSB first feature not supported */ + kStatus_UART_ResyncNotSupported, /*!< UART resync disable operation not supported */ + kStatus_UART_TxNotDisabled, /*!< UART Transmitter not disabled before enabling feature */ + kStatus_UART_RxNotDisabled, /*!< UART Receiver not disabled before enabling feature */ + kStatus_UART_TxOrRxNotDisabled, /*!< UART Transmitter or Receiver not disabled */ + kStatus_UART_TxBusy, /*!< UART transmit still in progress */ + kStatus_UART_RxBusy, /*!< UART receive still in progress */ + kStatus_UART_NoTransmitInProgress, /*!< UART no transmit in progress */ + kStatus_UART_NoReceiveInProgress, /*!< UART no receive in progress */ + kStatus_UART_InvalidInstanceNumber, /*!< Invalid UART instance number */ + kStatus_UART_InvalidBitSetting, /*!< Invalid setting for desired UART register bit field */ + kStatus_UART_OverSamplingNotSupported, /*!< UART oversampling not supported */ + kStatus_UART_BothEdgeNotSupported, /*!< UART both edge sampling not supported */ + kStatus_UART_Timeout, /*!< UART transfer timed out*/ +} uart_status_t; + +/*! + * @brief UART number of stop bits. + * + * These constants define the number of allowable stop bits to configure in a UART instance. + */ +typedef enum _uart_stop_bit_count { + kUartOneStopBit = 0, /*!< one stop bit */ + kUartTwoStopBit = 1, /*!< two stop bits */ +} uart_stop_bit_count_t; + +/*! + * @brief UART parity mode. + * + * These constants define the UART parity mode options: disabled or enabled of type even or odd. + */ +typedef enum _uart_parity_mode { + kUartParityDisabled = 0x0, /*!< parity disabled */ + kUartParityEven = 0x2, /*!< parity enabled, type even, bit setting: PE|PT = 10 */ + kUartParityOdd = 0x3, /*!< parity enabled, type odd, bit setting: PE|PT = 11 */ +} uart_parity_mode_t; + +/*! + * @brief UART number of bits in a character. + * + * These constants define the number of allowable data bits per UART character. Note, check the + * UART documentation to determine if the desired UART instance supports the desired number + * of data bits per UART character. + */ +typedef enum _uart_bit_count_per_char { + kUart8BitsPerChar = 0, /*!< 8-bit data characters */ + kUart9BitsPerChar = 1, /*!< 9-bit data characters */ + kUart10BitsPerChar = 2, /*!< 10-bit data characters */ +} uart_bit_count_per_char_t; + +/*! + * @brief UART operation configuration constants. + * + * This provides constants for UART operational states: "operates normally" + * or "stops/ceases operation" + */ +typedef enum _uart_operation_config { + kUartOperates = 0, /*!< UART continues to operate normally */ + kUartStops = 1, /*!< UART ceases operation */ +} uart_operation_config_t; + +/*! + * @brief UART wakeup from standby method constants. + * + * This provides constants for the two UART wakeup methods: idle-line or address-mark. + */ +typedef enum _uart_wakeup_method { + kUartIdleLineWake = 0, /*!< The idle-line wakes UART receiver from standby */ + kUartAddrMarkWake = 1, /*!< The address-mark wakes UART receiver from standby */ +} uart_wakeup_method_t; + +/*! + * @brief UART idle-line detect selection types. + * + * This provides constants for the UART idle character bit-count start: either after start or + * stop bit. + */ +typedef enum _uart_idle_line_select { + kUartIdleLineAfterStartBit = 0, /*!< UART idle character bit count start after start bit */ + kUartIdleLineAfterStopBit = 1, /*!< UART idle character bit count start after stop bit */ +} uart_idle_line_select_t; + +/*! + * @brief UART break character length settings for transmit/detect. + * + * This provides constants for the UART break character length for both transmission and detection + * purposes. Note that the actual maximum bit times may vary depending on the UART instance. + */ +typedef enum _uart_break_char_length { + kUartBreakChar10BitMinimum = 0, /*!< UART break char length 10 bit times (if M = 0, SBNS = 0) or + 11 (if M = 1, SBNS = 0 or M = 0, SBNS = 1) or 12 (if M = 1, + SBNS = 1 or M10 = 1, SNBS = 0) or 13 (if M10 = 1, SNBS = 1) */ + kUartBreakChar13BitMinimum = 1, /*!< UART break char length 13 bit times (if M = 0, SBNS = 0) or + 14 (if M = 1, SBNS = 0 or M = 0, SBNS = 1) or 15 (if M = 1, + SBNS = 1 or M10 = 1, SNBS = 0) or 16 (if M10 = 1, SNBS = 1) */ +} uart_break_char_length_t; + +/*! + * @brief UART single-wire mode transmit direction. + * + * This provides constants for the UART transmit direction when configured for single-wire mode. + * The transmit line TXDIR is either an input or output. + */ +typedef enum _uart_singlewire_txdir { + kUartSinglewireTxdirIn = 0, /*!< UART Single-Wire mode TXDIR input */ + kUartSinglewireTxdirOut = 1, /*!< UART Single-Wire mode TXDIR output */ +} uart_singlewire_txdir_t; + +/*! + * @brief UART status flags. + * + * This provides constants for the UART status flags for use in the UART functions. + */ +typedef enum _uart_status_flag { + kUartTransmitDataRegisterEmpty, /*!< Transmit data register empty flag, sets when transmit + buffer is empty */ + kUartTransmissionComplete, /*!< Transmission complete flag, sets when transmitter is idle + (transmission activity complete) */ + kUartReceiveDataRegisterFull, /*!< Receive data register full flag, sets when the receive data + buffer is full */ + kUartIdleLineDetect, /*!< Idle line detect flag, sets when idle line detected */ + kUartReceiveOverrun, /*!< Receiver Overrun, sets when new data is received before data + is read from receive register */ + kUartNoiseDetect, /*!< Receiver takes 3 samples of each received bit. If any of + these samples differ, noise flag sets */ + kUartFrameError, /*!< Frame error flag, sets if logic 0 was detected where stop + bit expected */ + kUartParityError, /*!< If parity enabled, sets upon parity error detection */ + kUartLineBreakDetect, /*!< LIN break detect interrupt flag, sets when + LIN break char detected and LIN circuit enabled */ + kUartReceiveActiveEdgeDetect, /*!< Receive pin active edge interrupt flag, sets when active + edge detected */ + kUartReceiverActive, /*!< Receiver Active Flag (RAF), sets at beginning of valid start + bit */ +#if FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS + kUartNoiseInCurrentWord, /*!< NOISY bit, sets if noise detected in current data word */ + kUartParityErrorInCurrentWord, /*!< PARITYE bit, sets if noise detected in current data word */ +#endif +#if FSL_FEATURE_UART_HAS_FIFO + kUartTxBufferEmpty, /*!< TXEMPT bit, sets if transmit buffer is empty */ + kUartRxBufferEmpty, /*!< RXEMPT bit, sets if transmit buffer is empty */ + kUartTxBufferOverflow, /*!< TXOF bit, sets if transmit buffer overflow occurred */ + kUartRxBufferUnderflow, /*!< RXUF bit, sets if receive buffer underflow occurred */ +#endif +} uart_status_flag_t; + +/*! + * @brief UART infrared transmitter pulse width options. + * + * This provides constants for the UART infrared (IR) pulse widths. Options include 3/16, 1/16 + * 1/32, and 1/4 pulse widths. + */ +typedef enum _uart_ir_tx_pulsewidth { + kUartIrThreeSixteenthsWidth = 0, /*!< 3/16 pulse */ + kUartIrOneSixteenthWidth = 1, /*!< 1/16 pulse */ + kUartIrOneThirtysecondsWidth = 2, /*!< 1/32 pulse */ + kUartIrOneFourthWidth = 3, /*!< 1/4 pulse */ +} uart_ir_tx_pulsewidth_t; + +/*! + * @brief Structure for idle line configuration settings. + * + * This structure contains settings for the UART idle line configuration such as the Idle + * Line Type (ILT) and the Receiver Wake Up Idle Detect (RWUID). + */ +typedef struct UartIdleLineConfig { + unsigned idleLineType : 1; /*!< ILT, Idle bit count start: 0 - after start bit (default), + 1 - after stop bit */ + unsigned rxWakeIdleDetect : 1; /*!< RWUID, Receiver Wake Up Idle Detect. IDLE status bit + operation during receive standby. Controls whether idle + character that wakes up receiver will also set + IDLE status bit 0 - IDLE status bit doesn't + get set (default), 1 - IDLE status bit gets set */ +} uart_idle_line_config_t; + +/*! @brief Structure for all UART status flags. + * + * This structure contains the settings for all of the UART status flags. + */ +typedef struct UartStatusAll { + unsigned transmitDataRegisterEmpty : 1; /*!< Transmit data register empty flag, sets when + transmit buffer is empty */ + unsigned transmissionComplete : 1; /*!< Transmission complete flag, sets when transmitter + is idle (transmission activity complete)*/ + unsigned receiveDataRegisterFull : 1; /*!< Receive data register full flag, sets when the + receive data buffer is full */ + unsigned idleLineDetect : 1; /*!< Idle line detect flag, sets when idle line detected */ + unsigned receiveOverrun : 1; /*!< Receiver Overrun, sets when new data is received + before data is read from receive register */ + unsigned noiseDetect : 1; /*!< Receiver takes 3 samples of each received bit. + If any of these samples differ, noise flag sets */ + unsigned frameError : 1; /*!< Frame error flag, sets if logic 0 was detected + where stop bit expected */ + unsigned parityError : 1; /*!< If parity enabled, will set upon parity + error detection */ + unsigned lineBreakDetect : 1; /*!< LIN break detect interrupt flag, sets when + LIN break char detected and LIN circuit enabled */ + unsigned receiveActiveEdgeDetect : 1; /*!< Receive pin active edge interrupt flag, sets + when active edge detected */ + unsigned receiverActive : 1; /*!< Receiver Active Flag (RAF), sets at beginning of + valid start bit */ +#if FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS + unsigned noiseInCurrentWord : 1; /*!< NOISY bit, sets if noise detected in current data word */ + unsigned parityErrorInCurrentWord : 1; /*!< PARITYE bit, sets if noise detected in + current data word */ +#endif +#if FSL_FEATURE_UART_HAS_FIFO + unsigned txBufferEmpty : 1; /*!< TXEMPT bit, sets if transmit buffer is empty */ + unsigned rxBufferEmpty : 1; /*!< RXEMPT bit, sets if transmit buffer is empty */ + unsigned txBufferOverflow : 1; /*!< TXOF bit, sets if transmit buffer overflow occurred */ + unsigned rxBufferUnderflow : 1; /*!< RXUF bit, sets if receive buffer underflow occurred */ +#endif +} uart_status_flag_all_t; + +/*! + * @brief UART interrupt configuration structure, default settings are 0 (disabled). + * + * This structure contains the settings for all of the UART interrupt configurations. + */ +typedef struct UartInterruptConfig { + unsigned linBreakDetect : 1; /*!< LIN break detect: 0 - disable interrupt, + 1 - enable interrupt */ + unsigned rxActiveEdge : 1; /*!< RX Active Edge: 0 - disable interrupt, + 1 - enable interrupt */ + unsigned transmitDataRegisterEmpty : 1; /*!< Transmit data register empty: + 0 - disable interrupt, 1 - enable interrupt */ + unsigned transmitComplete : 1; /*!< Transmission complete: 0 - disable interrupt, + 1 - enable interrupt */ + unsigned receiverDataRegisterFull : 1; /*!< Receiver data register full: + 0 - disable interrupt, 1 - enable interrupt */ + unsigned idleLine : 1; /*!< Idle line: 0 - disable interrupt, 1 - enable interrupt*/ + unsigned receiverOverrun : 1; /*!< Receiver Overrun: 0 - disable interrupt, + 1 - enable interrupt */ + unsigned noiseErrorFlag : 1; /*!< Noise error flag: 0 - disable interrupt, + 1 - enable interrupt */ + unsigned frameErrorFlag : 1; /*!< Framing error flag: 0 - disable interrupt, + 1 - enable interrupt */ + unsigned parityErrorFlag : 1; /*!< Parity error flag: 0 - disable interrupt, + 1 - enable interrupt */ +#if FSL_FEATURE_UART_HAS_FIFO + unsigned txFifoOverflow : 1; /*!< TX FIFO Overflow: 0 - disable interrupt, + 1 - enable interrupt */ + unsigned rxFifoUnderflow : 1; /*!< RX FIFO Underflow: 0 - disable interrupt, + 1 - enable interrupt */ +#endif +} uart_interrupt_config_t; + +/*! + * @brief UART configuration structure. + * + * This structure contains the settings for the most common UART configurations including + * the UART module source clock, baud rate, parity mode, stop bit count, data bit count per + * character, and tx/rx inversion options (which is the least common of the configurations). + */ +typedef struct UartConfig { + uint32_t uartSourceClockInHz; /*!< UART module source clock in Hz */ + uint32_t baudRate; /*!< UART baud rate */ + uart_parity_mode_t parityMode; /*!< Parity mode, disabled (default), even, or odd */ + uart_stop_bit_count_t stopBitCount; /*!< Number of stop bits, 1 stop bit (default) + or 2 stop bits */ + uart_bit_count_per_char_t bitCountPerChar; /*!< Number of bits, 8-bit (default) or 9-bit + in a word (up to 10-bits in + some UART instances) */ + unsigned rxDataInvert : 1; /*!< Receive Data Inversion: 0 - not inverted (default), + 1 - inverted */ + unsigned txDataInvert : 1; /*!< Transmit Data Inversion: 0 - not inverted (default), + 1 - inverted */ +} uart_config_t; + +/******************************************************************************* + * API + ******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @name UART Common Configurations + * @{ + */ + +/*! + * @brief Initialize the UART controller. + * + * This function initializes the module to user defined settings and default settings. + * Here is an example demonstrating how to define the uart_config_t structure and call + * the uart_hal_init function: + @code + uart_config_t uartConfig; + uartConfig.uartSourceClockInHz = uartSourceClock; + uartConfig.baudRate = baudRate; + uartConfig.bitCountPerChar = kUart8BitsPerChar; + uartConfig.parityMode = kUartParityDisabled; + uartConfig.stopBitCount = kUartOneStopBit; + uartConfig.txDataInvert = 0; + uartConfig.rxDataInvert = 0; + uart_hal_init(uartInstance, &uartConfig); + @endcode + * + * @param uartInstance UART module instance number. + * @param config UART configuration data. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_init(uint32_t uartInstance, const uart_config_t *config); + +/*! + * @brief Configure the UART baud rate. + * + * This function programs the UART baud rate to the desired value passed in by the user. The user + * must also pass in the module source clock so that the function can calculate the baud + * rate divisors to their appropriate values. + * In some UART instances it is required that the transmitter/receiver be disabled + * before calling this function. + * Generally this is applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param sourceClockInHz UART source input clock in Hz. + * @param desiredBaudRate UART desired baud rate. + * @return An error code or kStatus_UART_Success + */ +uart_status_t uart_hal_set_baud_rate(uint32_t uartInstance, uint32_t sourceClockInHz, + uint32_t desiredBaudRate); + +/*! + * @brief Set the UART baud rate modulo divisor value. + * + * This function allows the user to program the baud rate divisor directly in situations + * where the divisor value is known. In this case, the user may not want to call the + * uart_hal_set_baud_rate() function, as the divisor is already known. + * + * @param uartInstance UART module instance number. + * @param baudRateDivisor The baud rate modulo division "SBR" value. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_set_baud_rate_divisor(uint32_t uartInstance, uint32_t baudRateDivisor); + +#if FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT +/*! + * @brief Set the UART baud rate fine adjust. (Note: Feature available on select + * UART instances used in conjunction with baud rate programming) + * + * This function, which programs the baud rate fine adjust, is used in conjunction with + * programming the baud rate modulo divisor in situations where these divisors value are known. + * In this case, the user may not want to call the uart_hal_set_baud_rate() function, as the + * divisors are already known. + * + * + * @param uartInstance UART module instance number. + * @param baudFineAdjust Value of 5-bit field used to add more timing resolution to average + * baud rate frequency is 1/32 increments. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_set_baud_rate_fine_adjust(uint32_t uartInstance, uint8_t baudFineAdjust); +#endif + +#if FSL_FEATURE_UART_HAS_BAUD_RATE_OVER_SAMPLING_SUPPORT +/*! + * @brief Set the UART baud rate oversampling ratio. (Note: Feature available on select + * UART instances used in conjunction with baud rate programming) + * + * This function allows the user to directly configure the oversampling ratio (OSR). Normally this + * ratio is automatically configured when calling the uart_hal_set_baud_rate(). However, if the user + * knows the necessary dividers and wishes to directly program them, they also have the option to + * directly program the OSR. + * The oversampling ratio should be set between 4x (00011) and 32x (11111), writing + * an invalid oversampling ratio results in an error and is set to a default + * 16x (01111) oversampling ratio. + * It is required that the transmitter/receiver be disabled before calling + * this function. + * + * @param uartInstance UART module instance number. + * @param overSamplingRatio The oversampling ratio "OSR" value. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_set_oversampling_ratio(uint32_t uartInstance, uint32_t overSamplingRatio); +#endif + +#if FSL_FEATURE_UART_HAS_BOTH_EDGE_SAMPLING_SUPPORT +/*! + * @brief Configure the UART baud rate both edge sampling option. (Note: Feature available on select + * UART instances used in conjunction with baud rate programming) + * + * This function allows the user to directly configure the both edge sampling option. + * When enabled, the received data is sampled on both edges of the baud rate clock. + * This must be set when the oversampling ratio is between 4x and 7x. + * This function should only be called when the receiver is disabled. + * + * @param uartInstance UART module instance number. + * @param enableBothEdgeSampling Enable (true) or disable (false) Both Edge Sampling option. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_configure_both_edge_sampling(uint32_t uartInstance, + bool enableBothEdgeSampling); +#endif + +/*! + * @brief Configure number of bits per character in the UART controller. + * + * This function allows the user to configure the number of bits per character according to the + * typedef uart_bit_count_per_char_t. + * In some UART instances it is required that the transmitter/receiver be disabled + * before calling this function. + * This may be applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param bitCountPerChar Number of bits per char (8, 9, or 10, depending on the UART instance). + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_configure_bit_count_per_char(uint32_t uartInstance, + uart_bit_count_per_char_t bitCountPerChar); + +/*! + * @brief Configure the parity mode in the UART controller. + * + * This function allows the user to configure the parity mode of the UART controller to disable + * it or enable it for even parity or for odd parity. + * In some UART instances it is required that the transmitter/receiver be disabled + * before calling this function. + * This may be applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param parityModeType Parity mode setting (enabled, disable, odd, even - see + * parity_mode_t struct). + */ +void uart_hal_configure_parity_mode(uint32_t uartInstance, uart_parity_mode_t parityModeType); + +/*! + * @brief Configure the number of stop bits in the UART controller. + * + * This function allows the user to configure the number of stop bits in the UART controller + * to be one or two stop bits. + * In some UART instances it is required that the transmitter/receiver be disabled + * before calling this function. + * This may be applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param stopBitCount Number of stop bits setting (1 or 2 - see uart_stop_bit_count_t struct). + * @return An error code (an unsupported setting in some UARTs) or kStatus_UART_Success. + */ +uart_status_t uart_hal_configure_stop_bit_count(uint32_t uartInstance, + uart_stop_bit_count_t stopBitCount); + +/*! + * @brief Configure the transmit and receive inversion control in UART controller. + * + * This function allows the user to invert the transmit and receive signals, independently. + * This function should only be called when the UART is between transmit and receive packets. + * + * @param uartInstance UART module instance number. + * @param rxInvert Enable (1) or disable (0) receive inversion. + * @param txInvert Enable (1) or disable (0) transmit inversion. + */ +void uart_hal_configure_tx_rx_inversion(uint32_t uartInstance, uint32_t rxInvert, + uint32_t txInvert); + +/*! + * @brief Enable the UART transmitter. + * + * This function allows the user to enable the UART transmitter. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_transmitter(uint32_t uartInstance); + +/*! + * @brief Disable the UART transmitter. + * + * This function allows the user to disable the UART transmitter. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_transmitter(uint32_t uartInstance); + +/*! + * @brief Get the UART transmitter enabled/disabled configuration setting. + * + * This function allows the user to get the setting of the UART transmitter. + * + * @param uartInstance UART module instance number. + * @return The state of UART transmitter enable(true)/disable(false) setting. + */ +bool uart_hal_is_transmitter_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the UART receiver. + * + * This function allows the user to enable the UART receiver. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_receiver(uint32_t uartInstance); + +/*! + * @brief Disable the UART receiver. + * + * This function allows the user to disable the UART receiver. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_receiver(uint32_t uartInstance); + +/*! + * @brief Get the UART receiver enabled/disabled configuration setting. + * + * This function allows the user to get the setting of the UART receiver. + * + * @param uartInstance UART module instance number. + * @return The state of UART receiver enable(true)/disable(false) setting. + */ +bool uart_hal_is_receiver_enabled(uint32_t uartInstance); + +/*@}*/ + +/*! + * @name UART Interrupts and DMA + * @{ + */ + +/*! + * @brief Configure the UART module interrupts to enable/disable various interrupt sources. + * + * This function allows the user to configure all of the UART interrupts with one function call. + * The user will first need to initialize and pass in a structure of type uart_interrupt_config_t + * which sets the configuration of each interrupt. + * + * @param uartInstance UART module instance number. + * @param interruptConfig UART interrupt configuration data. + */ +void uart_hal_configure_interrupts(uint32_t uartInstance, + const uart_interrupt_config_t * interruptConfig); + +/*! + * @brief Enable the break_detect_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_break_detect_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the break_detect_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_break_detect_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the break_detect_interrupt enable setting. + * + * @param uartInstance UART module instance number. + * @return The bit setting of the interrupt enable bit. + */ +bool uart_hal_is_break_detect_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the rx_active_edge_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_rx_active_edge_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the rx_active_edge_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_rx_active_edge_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the rx_active_edge_interrupt enable setting. + * + * @param uartInstance UART instance number. + * @return Bit setting of the interrupt enable bit. + */ +bool uart_hal_is_rx_active_edge_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the tx_data_register_empty_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_tx_data_register_empty_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the tx_data_register_empty_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_tx_data_register_empty_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the tx_data_register_empty_interrupt enable setting. + * + * @param uartInstance UART module instance number. + * @return Bit setting of the interrupt enable bit. + */ +bool uart_hal_is_tx_data_register_empty_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the transmission_complete_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_transmission_complete_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the transmission_complete_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_transmission_complete_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the transmission_complete_interrupt enable setting. + * + * @param uartInstance UART module instance number. + * @return Bit setting of the interrupt enable bit. + */ +bool uart_hal_is_transmission_complete_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the rx_data_register_full_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_rx_data_register_full_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the rx_data_register_full_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_rx_data_register_full_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the rx_data_register_full_interrupt enable setting. + * + * @param uartInstance UART module instance number. + * @return Bit setting of the interrupt enable bit. + */ +bool uart_hal_is_receive_data_full_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the idle_line_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_idle_line_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the idle_line_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_idle_line_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the idle_line_interrupt enable setting. + * + * @param uartInstance UART module instance number. + * @return Bit setting of the interrupt enable bit. + */ +bool uart_hal_is_idle_line_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the rx_overrun_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_rx_overrun_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the rx_overrun_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_rx_overrun_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the rx_overrun_interrupt enable setting. + * + * @param uartInstance UART module instance number. + * @return Bit setting of the interrupt enable bit . + */ +bool uart_hal_is_rx_overrun_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the noise_error_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_noise_error_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the noise_error_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_noise_error_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the noise_error_interrupt enable setting. + * + * @param uartInstance UART module instance number. + * @return Bit setting of the interrupt enable bit. + */ +bool uart_hal_is_noise_error_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the framing_error_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_framing_error_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the framing_error_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_framing_error_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the framing_error_interrupt enable setting. + * + * @param uartInstance UART module instance number. + * @return Bit setting of the interrupt enable bit. + */ +bool uart_hal_is_framing_error_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Enable the parity_error_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_parity_error_interrupt(uint32_t uartInstance); + +/*! + * @brief Disable the parity_error_interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_parity_error_interrupt(uint32_t uartInstance); + +/*! + * @brief Get the configuration of the parity_error_interrupt enable setting. + * + * @param uartInstance UART module instance number. + * @return Bit setting of the interrupt enable bit. + */ +bool uart_hal_is_parity_error_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Configure the UART DMA requests for the Transmitter and Receiver. + * + * This function allows the user to configure the transmit data register empty flag to + * generate an interrupt request (default) or a DMA request. Similarly, this function + * allows the user to configure the receive data register full flag to generate an interrupt + * request (default) or a DMA request. + * + * @param uartInstance UART module instance number. + * @param txDmaConfig Transmit DMA request configuration setting (enable: true /disable: false). + * @param rxDmaConfig Receive DMA request configuration setting (enable: true/disable: false). + */ +void uart_hal_configure_dma(uint32_t uartInstance, bool txDmaConfig, bool rxDmaConfig); + +/*! + * @brief Get the UART Transmit DMA request configuration setting. + * + * This function returns the configuration setting of the Transmit DMA request. + * + * @param uartInstance UART module instance number. + * @return Transmit DMA request configuration setting (enable: true /disable: false). + */ +bool uart_hal_is_txdma_enabled(uint32_t uartInstance); + +/*! + * @brief Get the UART Receive DMA request configuration setting. + * + * This function returns the configuration setting of the Receive DMA request. + * + * @param uartInstance UART module instance number. + * @return Receive DMA request configuration setting (enable: true /disable: false). + */ +bool uart_hal_is_rxdma_enabled(uint32_t uartInstance); + +/*@}*/ + +/*! + * @name UART Transfer Functions + * @{ + */ + +/*! + * @brief This function allows the user to send an 8-bit character from the UART data register. + * + * @param uartInstance UART module instance number. + * @param data The data to send of size 8-bit. + */ +void uart_hal_putchar(uint32_t uartInstance, uint8_t data); + +/*! + * @brief This function allows the user to send a 9-bit character from the UART data register. + * + * @param uartInstance UART module instance number. + * @param data The data to send of size 9-bit. + */ +void uart_hal_putchar9(uint32_t uartInstance, uint16_t data); + +/*! + * @brief This function allows the user to send a 10-bit character from the UART data register. + * (Note: Feature available on select UART instances) + * + * @param uartInstance UART module instance number. + * @param data The data to send of size 10-bit. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_putchar10(uint32_t uartInstance, uint16_t data); + +/*! + * @brief This function gets a received 8-bit character from the UART data register. + * + * @param uartInstance UART module instance number. + * @param readData The received data read from data register of size 8-bit. + */ +void uart_hal_getchar(uint32_t uartInstance, uint8_t *readData); + +/*! + * @brief This function gets a received 9-bit character from the UART data register. + * + * @param uartInstance UART module instance number. + * @param readData The received data read from data register of size 9-bit. + */ +void uart_hal_getchar9(uint32_t uartInstance, uint16_t *readData); + +/*! + * @brief This function gets a received 10-bit character from the UART data register. + * (Note: Feature available on select UART instances) + * + * @param uartInstance UART module instance number. + * @param readData The received data read from data register of size 10-bit. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_getchar10(uint32_t uartInstance, uint16_t *readData); + +#if FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS +/*! + * @brief Configure the UART bit 10 (if enabled) or bit 9 (if disabled) as the parity bit in the + * serial transmission. + * + * This function configures bit 10 or bit 9 to be the parity bit. To configure bit 10 as the parity + * bit, the function sets UARTx_C4[M10]; it also sets UARTx_C1[M] and UARTx_C1[PE] as required. + * + * @param uartInstance UART module instance number. + * @param enable The setting to enable (true), which configures bit 10 as the parity bit or to + * disable (false), which configures bit 9 as the parity bit in the serial + * transmission. + */ +void uart_hal_configure_bit10_as_paritybit_operation(uint32_t uartInstance, bool enable); + +/*! + * @brief Get the configuration of the UART bit 10 (if enabled) or bit 9 (if disabled) as the + * parity bit in the serial transmission. + * + * This function returns true if bit 10 is configured as the parity bit, otherwise it returns + * false if bit 9 is configured as the parity bit. + * + * @param uartInstance UART module instance number. + * @return The configuration setting of bit 10 (true), or bit 9 (false) as the + * parity bit in the serial transmission. + */ +bool uart_hal_is_bit10_set_as_paritybit(uint32_t uartInstance); + +/*! + * @brief Determine if the UART received data word was received with noise. + * + * This function returns true if the received data word was received with noise. Otherwise, + * it returns false indicating no noise was detected. + * + * @param uartInstance UART module instance number. + * @return The status of the NOISY bit in the UART extended data register. + */ +bool uart_hal_is_current_dataword_received_with_noise(uint32_t uartInstance); + +/*! + * @brief Determine if the UART received data word was received with a parity error. + * + * This function returns true if the received data word was received with a parity error. + * Otherwise, it returns false indicating no parity error was detected. + * + * @param uartInstance UART module instance number. + * @return The status of the PARITYE (parity error) bit in the UART extended data register. + */ +bool uart_hal_is_current_dataword_received_with_parityerror(uint32_t uartInstance); +#endif /* FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS*/ + +/*@}*/ + +/*! + * @name UART Special Feature Configurations + * @{ + */ + +/*! + * @brief Configure the UART to either operate or cease to operate in WAIT mode. + * + * The function configures the UART to either operate or cease to operate when WAIT mode is + * entered. + * In some UART instances it is required that the transmitter/receiver be disabled + * before calling this function. + * This may be applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param mode The UART WAIT mode operation - operates or ceases to operate in WAIT mode. + */ +void uart_hal_configure_wait_mode_operation(uint32_t uartInstance, uart_operation_config_t mode); + +/*! + * @brief Determine if the UART operates or ceases to operate in WAIT mode. + * + * This function returns kUartOperates if the UART has been configured to operate in WAIT mode. + * Else it returns KUartStops if the UART has been configured to cease-to-operate in WAIT mode. + * + * @param uartInstance UART module instance number. + * @return The UART WAIT mode operation configuration, returns either kUartOperates or KUartStops. + */ +uart_operation_config_t uart_hal_get_wait_mode_operation_config(uint32_t uartInstance); + +/*! + * @brief Configure the UART loopback operation. + * + * This function enables or disables the UART loopback operation. + * In some UART instances it is required that the transmitter/receiver be disabled + * before calling this function. + * This may be applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param enable The UART loopback mode configuration, either disabled (false) or enabled (true). + */ +void uart_hal_configure_loopback_mode(uint32_t uartInstance, bool enable); + +/*! + * @brief Configure the UART single-wire operation. + * + * This function enables or disables the UART single-wire operation. + * In some UART instances it is required that the transmitter/receiver be disabled + * before calling this function. + * This may be applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param enable The UART single-wire mode configuration, either disabled (false) or enabled (true). + */ +void uart_hal_configure_singlewire_mode(uint32_t uartInstance, bool enable); + +/*! + * @brief Configure the UART transmit direction while in single-wire mode. + * + * This function configures the transmitter direction when the UART is configured for single-wire + * operation. + * + * @param uartInstance UART module instance number. + * @param direction The UART single-wire mode transmit direction configuration of type + * uart_singlewire_txdir_t (either kUartSinglewireTxdirIn or + * kUartSinglewireTxdirOut. + */ +void uart_hal_configure_txdir_in_singlewire_mode(uint32_t uartInstance, + uart_singlewire_txdir_t direction); + +/*! + * @brief Place the UART receiver in standby mode. + * + * This function, when called, places the UART receiver into standby mode. + * In some UART instances, there are conditions that must be met before placing rx in standby mode. + * Before placing UART in standby, determine if receiver is set to + * wake on idle, and if receiver is already in idle state. + * NOTE: RWU should only be set with C1[WAKE] = 0 (wakeup on idle) if the channel is currently + * not idle. + * This can be determined by the S2[RAF] flag. If set to wake up FROM an IDLE event and the channel + * is already idle, it is possible that the UART will discard data because data must be received + * (or a LIN break detect) after an IDLE is detected before IDLE is allowed to be reasserted. + * + * @param uartInstance UART module instance number. + * @return Error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_put_receiver_in_standby_mode(uint32_t uartInstance); + +/*! + * @brief Place the UART receiver in normal mode (disable standby mode operation). + * + * This function, when called, places the UART receiver into normal mode and out of + * standby mode. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_put_receiver_in_normal_mode(uint32_t uartInstance); + +/*! + * @brief Determine if the UART receiver is currently in standby mode. + * + * This function determines the state of the UART receiver. If it returns true, this means + * that the UART receiver is in standby mode; if it returns false, the UART receiver + * is in normal mode. + * + * @param uartInstance UART module instance number. + * @return The UART receiver is in normal mode (false) or standby mode (true). + */ +bool uart_hal_is_receiver_in_standby(uint32_t uartInstance); + +/*! + * @brief Select the UART receiver wakeup method (idle-line or address-mark) from standby mode. + * + * This function configures the wakeup method of the UART receiver from standby mode. The options + * are idle-line wake or address-mark wake. + * + * @param uartInstance UART module instance number. + * @param method The UART receiver wakeup method options: kUartIdleLineWake - Idle-line wake or + * kUartAddrMarkWake - address-mark wake. + */ +void uart_hal_select_receiver_wakeup_method(uint32_t uartInstance, uart_wakeup_method_t method); + +/*! + * @brief Get the UART receiver wakeup method (idle-line or address-mark) from standby mode. + * + * This function returns how the UART receiver is configured to wake from standby mode. The + * wake method options that can be returned are kUartIdleLineWake or kUartAddrMarkWake. + * + * @param uartInstance UART module instance number. + * @return The UART receiver wakeup from standby method, false: kUartIdleLineWake (idle-line wake) + * or true: kUartAddrMarkWake (address-mark wake). + */ +uart_wakeup_method_t uart_hal_get_receiver_wakeup_method(uint32_t uartInstance); + +/*! + * @brief Configure the operation options of the UART idle line detect. + * + * This function allows the user to configure the UART idle-line detect operation. There are two + * separate operations for the user to configure, the idle line bit-count start and the receive + * wake up affect on IDLE status bit. The user will pass in a structure of type + * uart_idle_line_config_t. + * In some UART instances it is required that the transmitter/receiver be disabled + * before calling this function. + * This may be applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param config The UART configuration pointer to the structure for idle-line detect operation + * of type uart_idle_line_config_t. + */ +void uart_hal_configure_idle_line_detect(uint32_t uartInstance, + const uart_idle_line_config_t *config); + +/*! + * @brief Configure the UART break character transmit length. + * + * This function allows the user to configure the UART break character transmit length. Refer to + * the typedef uart_break_char_length_t for setting options. + * In some UART instances it is required that the transmitter be disabled before calling + * this function. This may be applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param length The UART break character length setting of type uart_break_char_length_t, either a + * minimum 10-bit times or a minimum 13-bit times. + */ +void uart_hal_set_break_char_transmit_length(uint32_t uartInstance, + uart_break_char_length_t length); + +/*! + * @brief Configure the UART break character detect length. + * + * This function allows the user to configure the UART break character detect length. Refer to + * the typedef uart_break_char_length_t for setting options. + * + * @param uartInstance UART module instance number. + * @param length The UART break character length setting of type uart_break_char_length_t, either a + * minimum 10-bit times or a minimum 13-bit times. + */ +void uart_hal_set_break_char_detect_length(uint32_t uartInstance, + uart_break_char_length_t length); + +/*! + * @brief Configure the UART transmit send break character operation. + * + * This function allows the user to queue a UART break character to send. If true is passed into + * the function, then a break character is queued for transmission. A break character will + * continuously be queued until this function is called again when a false is passed into this + * function. + * + * @param uartInstance UART module instance number. + * @param enable If false, the UART normal/queue break character setting is disabled, which + * configures the UART for normal transmitter operation. If true, a break + * character is queued for transmission. + */ +void uart_hal_queue_break_char_to_send(uint32_t uartInstance, bool enable); + +/*! + * @brief Configure the UART match address mode control operation. (Note: Feature available on + * select UART instances) + * + * The function allows the user to configure the UART match address control operation. The user + * has the option to enable the match address mode and to program the match address value. There + * are two match address modes, each with its own enable and programmable match address value. + * + * @param uartInstance UART module instance number. + * @param matchAddrMode1 If true, this enables match address mode 1 (MAEN1), where false disables. + * @param matchAddrMode2 If true, this enables match address mode 2 (MAEN2), where false disables. + * @param matchAddrValue1 The match address value to program for match address mode 1. + * @param matchAddrValue2 The match address value to program for match address mode 2. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_configure_match_address_operation( + uint32_t uartInstance, + bool matchAddrMode1, + bool matchAddrMode2, + uint8_t matchAddrValue1, + uint8_t matchAddrValue2); + +/*! + * @brief Configure the UART to send data MSB first + * (Note: Feature available on select UART instances) + * + * The function allows the user to configure the UART to send data MSB first or LSB first. + * In some UART instances it is required that the transmitter/receiver be disabled + * before calling this function. + * This may be applied to all UARTs to ensure safe operation. + * + * @param uartInstance UART module instance number. + * @param enable This configures send MSB first mode configuration. If true, the data is sent MSB + * first; if false, it is sent LSB first. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_configure_send_msb_first_operation(uint32_t uartInstance, bool enable); + +/*! + * @brief Configuration option to disable the UART resynchronization during received data. + * (Note: Feature available on select UART instances) + * + * This function allows the user to disable the UART resync of received data. The default setting + * is false, meaning that resynchronization during the received data word is supported. + * If the user passes in true, this disables resynchronization during the received data word. + * + * @param uartInstance UART module instance number. + * @param enable If false, then resynchronization during the received data word is supported. + * If true, resynchronization during the received data word is disabled. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_configure_receive_resync_disable_operation(uint32_t uartInstance, + bool enable); + +#if FSL_FEATURE_UART_HAS_MODEM_SUPPORT +/*! + * @brief Enable the UART receiver request-to-send functionality. + * + * This function allows the user to enable the UART receiver request-to-send (RTS) functionality. + * By enabling, it allows the RTS output to control the CTS input of the transmitting device to + * prevent receiver overrun. RTS is deasserted if the number of characters in the receiver data + * register (FIFO) is equal to or greater than RWFIFO[RXWATER]. RTS is asserted when the + * number of characters in the receiver data register (FIFO) is less than RWFIFO[RXWATER]. + * Do not set both RXRTSE and TXRTSE. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_receiver_rts(uint32_t uartInstance); + +/*! + * @brief Disable the UART receiver request-to-send functionality. + * + * This function allows the user to disable the UART receiver request-to-send (RTS) functionality. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_receiver_rts(uint32_t uartInstance); + +/*! + * @brief Enable the UART transmitter request-to-send functionality. + * + * This function allows the user to enable the UART transmitter request-to-send (RTS) functionality. + * When enabled, it allows the UART to control the RTS assertion before and after a transmission + * such that when a character is placed into an empty transmitter data buffer, RTS + * asserts one bit time before the start bit is transmitted. RTS deasserts one bit time after all + * characters in the transmitter data buffer and shift register are completely sent, including + * the last stop bit. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_transmitter_rts(uint32_t uartInstance); + +/*! + * @brief Disable the UART transmitter request-to-send functionality. + * + * This function allows the user to disable the UART transmitter request-to-send (RTS) + * functionality. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_transmitter_rts(uint32_t uartInstance); + +/*! + * @brief Configure the UART transmitter RTS polarity. + * + * This function allows the user configure the transmitter RTS polarity to be either active low + * or active high. + * + * @param uartInstance UART module instance number. + * @param polarity The UART transmitter RTS polarity setting (false - active low, + * true - active high). + */ +void uart_hal_configure_transmitter_rts_polarity(uint32_t uartInstance, bool polarity); + +/*! + * @brief Enable the UART transmitter clear-to-send functionality. + * + * This function allows the user to enable the UART transmitter clear-to-send (CTS) functionality. + * When enabled, the transmitter checks the state of CTS each time it is ready to send a character. + * If CTS is asserted, the character is sent. If CTS is deasserted, the signal TXD remains in + * the mark state and transmission is delayed until CTS is asserted. Changes in CTS as a + * character is being sent do not affect its transmission. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_transmitter_cts(uint32_t uartInstance); + +/*! + * @brief Disable the UART transmitter clear-to-send functionality. + * + * This function allows the user to disable the UART transmitter clear-to-send (CTS) + * functionality. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_transmitter_cts(uint32_t uartInstance); +#endif /* FSL_FEATURE_UART_HAS_MODEM_SUPPORT*/ + +#if FSL_FEATURE_UART_HAS_IR_SUPPORT +/*! + * @brief Configure the UART infrared operation. + * + * The function allows the user to enable or disable the UART infrared (IR) operation + * and to configure the IR pulse width. + * + * @param uartInstance UART module instance number. + * @param enable Enable (true) or disable (false) the infrared operation. + * @param pulseWidth The UART transmit narrow pulse width setting of type uart_ir_tx_pulsewidth_t. + */ +void uart_hal_configure_infrared_operation(uint32_t uartInstance, bool enable, + uart_ir_tx_pulsewidth_t pulseWidth); +#endif /* FSL_FEATURE_UART_HAS_IR_SUPPORT*/ + +/*@}*/ + +/*! + * @name UART Status Flags + * @{ + */ + +/*! + * @brief Get all of the UART status flag states. + * + * This function gets all of the UART status flag states and places into a structure of + * type uart_status_flag_all_t. The user must pass in a pointer to this structure. + * + * @param uartInstance UART module instance number. + * @param allStatusFlag Pointer to the structure of all the UART status flags states. + */ +void uart_hal_get_all_status_flag(uint32_t uartInstance, uart_status_flag_all_t *allStatusFlag); + +/*! + * @brief Get the UART Transmit data register empty flag. + * + * This function returns the state of the UART Transmit data register empty flag. + * + * @param uartInstance UART module instance number. + * @return The status of Transmit data register empty flag, which is set when transmit buffer + * is empty. + */ +bool uart_hal_is_transmit_data_register_empty(uint32_t uartInstance); + +/*! + * @brief Get the UART Transmission complete flag. + * + * This function returns the state of the UART Transmission complete flag. + * + * @param uartInstance UART module instance number. + * @return The status of Transmission complete flag, which is set when the transmitter is idle + * (transmission activity complete). + */ +bool uart_hal_is_transmission_complete(uint32_t uartInstance); + +/*! + * @brief Get the UART Receive data register full flag. + * + * This function returns the state of the UART Receive data register full flag. + * + * @param uartInstance UART module instance number. + * @return The status of Receive data register full flag, which is set when the receive data buffer + * is full. + */ +bool uart_hal_is_receive_data_register_full(uint32_t uartInstance); + +/*! + * @brief Get the UART Idle-line detect flag. + * + * This function returns the state of the UART Idle-line detect flag. + * + * @param uartInstance UART module instance number. + * @return The status of Idle-line detect flag which is set when an idle-line detected. + */ +bool uart_hal_is_idle_line_detected(uint32_t uartInstance); + +/*! + * @brief Get the UART Receiver Overrun status flag. + * + * This function returns the state of the the UART Receiver Overrun status flag. + * + * @param uartInstance UART module instance number. + * @return The status of Receiver Overrun, which is set when new data is received before data is + * read from receive register. + */ +bool uart_hal_is_receive_overrun_detected(uint32_t uartInstance); + +/*! + * @brief Get the UART noise status flag. + * + * This function returns the state of the UART noise status flag. + * + * @param uartInstance UART module instance number. + * @return The status of the noise flag, which is set if any of the 3 samples taken on + * receive differ. + */ +bool uart_hal_is_noise_detected(uint32_t uartInstance); + +/*! + * @brief Get the UART Frame error status flag. + * + * This function returns the state of the UART Frame error status flag. + * + * @param uartInstance UART module instance number. + * @return The status of Frame error flag, which is set if a logic 0 was detected where a stop bit + * was expected. + */ +bool uart_hal_is_frame_error_detected(uint32_t uartInstance); + +/*! + * @brief Get the UART parity error status flag. + * + * This function returns the state of the UART parity error status flag. + * + * @param uartInstance UART module instance number. + * @return The status of parity error detection flag, which is set if parity mode enabled and the + * parity bit received does not match what was expected. + */ +bool uart_hal_is_parity_error_detected(uint32_t uartInstance); + +/*! + * @brief Get the UART LIN break detect interrupt status flag. + * + * This function returns the state of the UART LIN break detect interrupt status flag. + * + * @param uartInstance UART module instance number. + * @return The status of LIN break detect interrupt flag, which is set when the LIN break char + * is detected assuming the LIN circuit is enabled. + */ +bool uart_hal_is_line_break_detected(uint32_t uartInstance); + +/*! + * @brief Get the UART Receive pin active edge interrupt status flag. + * + * This function returns the state of the UART Receive pin active edge interrupt status flag. + * + * @param uartInstance UART module instance number. + * @return The status of Receive pin active edge interrupt flag, which is set when active edge + * detected on the receive pin. + */ +bool uart_hal_is_receive_active_edge_detected(uint32_t uartInstance); + +/*! + * @brief Get the UART Receiver Active Flag (RAF) state. + * + * This function returns the state of the UART Receiver Active Flag (RAF). + * + * @param uartInstance UART module instance number. + * @return The status of the Receiver Active Flag (RAF), which is set at the beginning of a + * received valid start bit. + */ +bool uart_hal_is_receiver_active(uint32_t uartInstance); + +/*! + * @brief Clear an individual and specific UART status flag. + * + * This function allows the user to clear an individual and specific UART status flag. Refer to + * structure definition uart_status_flag_t for list of status bits. + * + * @param uartInstance UART module instance number. + * @param statusFlag The desired UART status flag to clear. + * @return An error code or kStatus_UART_Success. + */ +uart_status_t uart_hal_clear_status_flag(uint32_t uartInstance, uart_status_flag_t statusFlag); + +/*! + * @brief Clear ALL of the UART status flags. + * + * This function tries to clear all of the UART status flags. In some cases, some of the status + * flags may not get cleared because the condition that set the flag may still exist. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_clear_all_non_autoclear_status_flags(uint32_t uartInstance); + +/*@}*/ + +/*! + * @name UART FIFO Configurations + * @{ + */ + +#if FSL_FEATURE_UART_HAS_FIFO +/*! + * @brief Enable the UART transmit FIFO. + * + * This function allows the user to enable the UART transmit FIFO. + * It is required that the transmitter/receiver be disabled before calling this function + * when the FIFO is empty. + * Additionally, TXFLUSH and RXFLUSH commands should be issued after calling this function. + * + * @param uartInstance UART module instance number. + * @return Error code if it is detected that the transmitter or receiver is enabled or + * kStatus_UART_Success. + */ +uart_status_t uart_hal_enable_tx_fifo(uint32_t uartInstance); + +/*! + * @brief Disable the UART transmit FIFO. + * + * This function allows the user to disable the UART transmit FIFO. + * It is required that the transmitter/receiver be disabled before calling this function + * when the FIFO is empty. + * Additionally, TXFLUSH and RXFLUSH commands should be issued after calling this function. + * + * @param uartInstance UART module instance number. + * @return Error code if it is detected that the transmitter or receiver is enabled or + * kStatus_UART_Success. + */ +uart_status_t uart_hal_disable_tx_fifo(uint32_t uartInstance); + +/*! + * @brief Enable the UART receive FIFO. + * + * This function allows the user to enable the UART receive FIFO. + * It is required that the transmitter/receiver be disabled before calling this function + * when the FIFO is empty. + * Additionally, TXFLUSH and RXFLUSH commands should be issued after calling this function. + * + * @param uartInstance UART module instance number. + * @return Error code if it is detected that the transmitter or receiver is enabled or + * kStatus_UART_Success. + */ +uart_status_t uart_hal_enable_rx_fifo(uint32_t uartInstance); + +/*! + * @brief Disable the UART receive FIFO. + * + * This function allows the user to disable the UART receive FIFO. + * It is required that the transmitter/receiver be disabled before calling this function + * when the FIFO is empty. + * Additionally, TXFLUSH and RXFLUSH commands should be issued after calling this function. + * + * @param uartInstance UART module instance number. + * @return Error code if it is detected that the transmitter or receiver is enabled or + * kStatus_UART_Success. + */ +uart_status_t uart_hal_disable_rx_fifo(uint32_t uartInstance); + +/*! + * @brief Get the size of the UART transmit FIFO. + * + * This function returns the size (number of entries) supported in the UART transmit FIFO for + * a particular module instance. + * + * @param uartInstance UART module instance number. + * @return The UART transmit FIFO size as follows: + * 0x0: 1 data word; 0x1: 4 data words; 0x2: 8 data words; 0x3: 16 data words + * 0x4: 32 data words; 0x5: 64 data words; 0x6: 128 data words; 0x7: reserved + */ +uint8_t uart_hal_get_tx_fifo_size(uint32_t uartInstance); + +/*! + * @brief Get the size of the UART receive FIFO. + * + * This function returns the size (number of entries) supported in the UART receive FIFO for + * a particular module instance. + * + * @param uartInstance UART module instance number. + * @return The receive FIFO size as follows: + * 0x0: 1 data word; 0x1: 4 data words; 0x2: 8 data words; 0x3: 16 data words + * 0x4: 32 data words; 0x5: 64 data words; 0x6: 128 data words; 0x7: reserved + */ +uint8_t uart_hal_get_rx_fifo_size(uint32_t uartInstance); + +/*! + * @brief Flush the UART transmit FIFO. + * + * This function allows the user to flush the UART transmit FIFO for a particular module instance. + * Flushing the FIFO may result in data loss. + * It is recommended that the transmitter be disabled before calling this function. + * + * @param uartInstance UART module instance number. + * @return Error code if it is detected that the transmitter or receiver is enabled or + * kStatus_UART_Success. + */ +uart_status_t uart_hal_flush_tx_fifo(uint32_t uartInstance); + +/*! + * @brief Flush the UART receive FIFO. + * + * This function allows the user to flush the UART receive FIFO for a particular module instance. + * Flushing the FIFO may result in data loss. + * It is recommended that the receiver be disabled before calling this function. + * + * @param uartInstance UART module instance number. + * @return Error code if it is detected that the transmitter or receiver is enabled or + * kStatus_UART_Success. + */ +uart_status_t uart_hal_flush_rx_fifo(uint32_t uartInstance); + +/*! + * @brief Enable the UART transmit FIFO overflow interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_tx_fifo_overflow_interrupt(uint32_t uartInstance); + + +/*! + * @brief Disable the UART transmit FIFO overflow interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_tx_fifo_overflow_interrupt(uint32_t uartInstance); + + +/*! + * @brief Get the configuration of the UART transmit FIFO overflow interrupt enable. + * + * @param uartInstance UART module instance number. + * @return The UART transmit FIFO overflow interrupt enable state: true=enable; false=disable. + */ +bool uart_hal_is_tx_fifo_overflow_interrupt_enabled(uint32_t uartInstance); + + +/*! + * @brief Enable the UART receive FIFO underflow interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_enable_rx_fifo_underflow_interrupt(uint32_t uartInstance); + + +/*! + * @brief Disable the UART receive FIFO underflow interrupt. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_disable_rx_fifo_underflow_interrupt(uint32_t uartInstance); + + +/*! + * @brief Get the configuration of the UART receive FIFO underflow interrupt enable. + * + * @param uartInstance UART module instance number. + * @return The UART receive FIFO underflow interrupt enable state: true=enable; false=disable. + */ +bool uart_hal_is_rx_fifo_underflow_interrupt_enabled(uint32_t uartInstance); + +/*! + * @brief Get the UART transmit FIFO empty status state. + * + * The function returns the state of the transmit FIFO empty status state, but does not take into + * account data in the shift register. + * + * @param uartInstance UART module instance number. + * @return The UART transmit FIFO empty status: true=empty; false=not-empty. + */ +bool uart_hal_is_tx_fifo_empty(uint32_t uartInstance); + +/*! + * @brief Get the UART receive FIFO empty status state. + * + * The function returns the state of the receive FIFO empty status state, but does not take into + * account data in the shift register. + * + * @param uartInstance UART module instance number. + * @return The UART receive FIFO empty status: true=empty; false=not-empty. + */ +bool uart_hal_is_rx_fifo_empty(uint32_t uartInstance); + +/*! + * @brief Get the UART transmit FIFO overflow status state. + * + * @param uartInstance UART module instance number. + * @return The UART transmit FIFO overflow status state: true=overflow; false=no overflow. + */ +bool uart_hal_is_tx_fifo_overflow(uint32_t uartInstance); + +/*! + * @brief Clear the UART transmit FIFO overflow status. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_clear_tx_fifo_overflow(uint32_t uartInstance); + +/*! + * @brief Get the UART receive FIFO underflow status state. + * + * @param uartInstance UART module instance number. + * @return The receive FIFO underflow status state: true=overflow; false=no overflow. + */ +bool uart_hal_is_rx_fifo_underflow(uint32_t uartInstance); + +/*! + * @brief Clear the UART receive FIFO underflow status. + * + * @param uartInstance UART module instance number. + */ +void uart_hal_clear_rx_fifo_underflow(uint32_t uartInstance); + +/*! + * @brief Set the UART transmit FIFO watermark value. + * + * Programming the transmit watermark should be done when UART the transmitter is disabled + * and the value must be set less than the size obtained from uart_hal_get_tx_fifo_size. + * + * @param uartInstance UART module instance number. + * @param watermark The UART transmit watermark value to be programmed. + * @return Error code if transmitter is enabled or kStatus_UART_Success. + */ +uart_status_t uart_hal_set_tx_fifo_watermark(uint32_t uartInstance, uint8_t watermark); + +/*! + * @brief Get the UART transmit FIFO watermark value. + * + * @param uartInstance UART module instance number. + * @return The value currently programmed for the UART transmit watermark. + */ +uint8_t uart_hal_get_tx_fifo_watermark(uint32_t uartInstance); + +/*! + * @brief Get the UART transmit FIFO data word count (number of words in the transmit FIFO). + * + * The function uart_hal_get_tx_dataword_count_in_fifo excludes any data that may + * be in the UART transmit shift register + * + * @param uartInstance UART module instance number. + * @return The number of data words currently in the UART transmit FIFO. + */ +uint8_t uart_hal_get_tx_dataword_count_in_fifo(uint32_t uartInstance); + +/*! + * @brief Set the UART receive FIFO watermark value. + * + * Programming the receive watermark should be done when the receiver is disabled + * and the value must be set less than the size obtained from uart_hal_get_rx_fifo_size and + * greater than zero. + * + * @param uartInstance UART module instance number. + * @param watermark The UART receive watermark value to be programmed. + * @return Error code if receiver is enabled or kStatus_UART_Success. + */ +uart_status_t uart_hal_set_rx_fifo_watermark(uint32_t uartInstance, uint8_t watermark); + +/*! + * @brief Get the UART receive FIFO data word count (number of words in the receive FIFO). + * + * The function uart_hal_get_rx_dataword_count_in_fifo excludes any data that may be + * in the receive shift register. + * + * @param uartInstance UART module instance number. + * @return The number of data words currently in the UART receive FIFO. + */ +uint8_t uart_hal_get_rx_dataword_count_in_fifo(uint32_t uartInstance); + +/*! + * @brief Get the UART receive FIFO watermark value. + * + * @param uartInstance UART module instance number. + * @return The value currently programmed for the UART receive watermark. + */ +uint8_t uart_hal_get_rx_fifo_watermark(uint32_t uartInstance); + +#endif /* FSL_FEATURE_UART_HAS_FIFO*/ + +/*@}*/ + +#if defined(__cplusplus) +} +#endif + +/*! @}*/ + +#endif /* __FSL_UART_HAL_H__*/ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/wdog/fsl_wdog_features.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if !defined(__FSL_WDOG_FEATURES_H__) +#define __FSL_WDOG_FEATURES_H__ + +#if defined(CPU_MK20DX128VMP5) || defined(CPU_MK20DN128VMP5) || defined(CPU_MK20DX64VMP5) || defined(CPU_MK20DN64VMP5) || \ + defined(CPU_MK20DX32VMP5) || defined(CPU_MK20DN32VMP5) || defined(CPU_MK20DX128VLH5) || defined(CPU_MK20DN128VLH5) || \ + defined(CPU_MK20DX64VLH5) || defined(CPU_MK20DN64VLH5) || defined(CPU_MK20DX32VLH5) || defined(CPU_MK20DN32VLH5) || \ + defined(CPU_MK20DX128VFM5) || defined(CPU_MK20DN128VFM5) || defined(CPU_MK20DX64VFM5) || defined(CPU_MK20DN64VFM5) || \ + defined(CPU_MK20DX32VFM5) || defined(CPU_MK20DN32VFM5) || defined(CPU_MK20DX128VFT5) || defined(CPU_MK20DN128VFT5) || \ + defined(CPU_MK20DX64VFT5) || defined(CPU_MK20DN64VFT5) || defined(CPU_MK20DX32VFT5) || defined(CPU_MK20DN32VFT5) || \ + defined(CPU_MK20DX128VLF5) || defined(CPU_MK20DN128VLF5) || defined(CPU_MK20DX64VLF5) || defined(CPU_MK20DN64VLF5) || \ + defined(CPU_MK20DX32VLF5) || defined(CPU_MK20DN32VLF5) || defined(CPU_MK22FN256VDC12) || defined(CPU_MK22FN256VLH12) || \ + defined(CPU_MK22FN256VLL12) || defined(CPU_MK22FN256VMP12) || defined(CPU_MK22FN512VDC12) || defined(CPU_MK22FN512VLH12) || \ + defined(CPU_MK22FN512VLL12) || defined(CPU_MK24FN1M0VDC12) || defined(CPU_MK24FN1M0VLQ12) || defined(CPU_MK63FN1M0VLQ12) || \ + defined(CPU_MK63FN1M0VMD12) || defined(CPU_MK64FX512VDC12) || defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FX512VLL12) || \ + defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VMD12) || \ + defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK65FN2M0CAC18) || defined(CPU_MK65FX1M0CAC18) || defined(CPU_MK65FN2M0VMI18) || \ + defined(CPU_MK65FX1M0VMI18) || defined(CPU_MK66FN2M0VLQ18) || defined(CPU_MK66FX1M0VLQ18) || defined(CPU_MK66FN2M0VMD18) || \ + defined(CPU_MK66FX1M0VMD18) || defined(CPU_MK70FN1M0VMF12) || defined(CPU_MK70FX512VMF12) || defined(CPU_MK70FN1M0VMF15) || \ + defined(CPU_MK70FX512VMF15) || defined(CPU_MK70FN1M0VMJ12) || defined(CPU_MK70FX512VMJ12) || defined(CPU_MK70FN1M0VMJ15) || \ + defined(CPU_MK70FX512VMJ15) || defined(CPU_MKV31F256VLH12) || defined(CPU_MKV31F256VLL12) || defined(CPU_MKV31FN512VLH12) || \ + defined(CPU_MKV31F512VLL12) + /* @brief Watchdog is available. */ + #define FSL_FEATURE_WDOG_HAS_WATCHDOG (1) +#else + #error "No valid CPU defined!" +#endif + +#endif /* __FSL_WDOG_FEATURES_H__ */ +/******************************************************************************* + * EOF + ******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/wdog/fsl_wdog_hal.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,467 @@ +/* + * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of Freescale Semiconductor, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FSL_WDOG_HAL_H__ +#define __FSL_WDOG_HAL_H__ + +#include <assert.h> +#include <stdint.h> +#include <stdbool.h> +#include "fsl_wdog_features.h" +#include "fsl_device_registers.h" + +/*! + * @addtogroup wdog_hal + * @{ + */ + +/******************************************************************************* + * Definitions + *******************************************************************************/ + +/*! @brief Watchdog ISR callback function type*/ +typedef void (*wdog_isr_callback_t)(void); + +/*! @brief Watchdog clock source selection.*/ +typedef enum _wdog_clock_source { + kWdogDedicatedClock = 0, /*!< Dedicated clock source (LPO Oscillator),1K HZ.*/ + kWdogAlternateClock = 1 /*!< Alternate clock source, Bus clock.*/ +} wdog_clock_source_t; + +/*! @brief Define the selection of the clock prescaler*/ +typedef enum _wdog_clock_prescaler { + kWdogClockPrescaler1 = 0, /*!< Divide 1, default*/ + kWdogClockPrescaler2 = 1, /*!< Divide 2*/ + kWdogClockPrescaler3 = 2, /*!< Divide 3*/ + kWdogClockPrescaler4 = 3, /*!< Divide 4*/ + kWdogClockPrescaler5 = 4, /*!< Divide 5*/ + kWdogClockPrescaler6 = 5, /*!< Divide 6*/ + kWdogClockPrescaler7 = 6, /*!< Divide 7*/ + kWdogClockPrescaler8 = 7, /*!< Divide 8*/ +} wdog_clock_prescaler_t; + +/******************************************************************************* + * API + *******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @name Watchdog HAL. + * @{ + */ + +/*! + * @brief Enable watchdog module. + * + * This function is used to enable the WDOG and must be called after all + * necessary configure have been set. + * + */ +void wdog_hal_enable(void); + +/*! + * @brief Disable watchdog module. + * + * This function is used to disable the WDOG. + * + */ +void wdog_hal_disable(void); + +/*! + * @brief Check whether WDOG is enabled. + * + * This function is used check whether WDOG is enabled. + * + * @return 0 means WDOG is disabled, 1 means WODG is enabled. + * + */ +static inline bool wdog_hal_is_enabled(void) +{ + return BR_WDOG_STCTRLH_WDOGEN; +} + +/*! + * @brief Enable and disable watchdog interrupt. + * + * This function is used to configure the WDOG interrupt. + * The configuration is saved in an internal configure buffer and written back to the register in wdog_hal_enable + * function, so this function must be called before wdog_hal_enable is called. + * + * @param isEnabled 0 means disable watchdog interrupt. 1 means enable watchdog interrupt. + */ +void wdog_hal_configure_interrupt(bool isEnabled); + +/*! + * @brief Check whether WDOG interrupt is enabled. + * + * This function is used to check whether the WDOG interrupt is enabled. + * + * @return 0 means interrupt is disabled, 1 means interrupt is enabled. + */ +static inline bool wdog_hal_is_interrupt_enabled(void) +{ + return BR_WDOG_STCTRLH_IRQRSTEN; +} + +/*! + * @brief set watchdog clock Source. + * + * This function is used to set the WDOG clock source. There are two clock sources that can be used, + * the LPO clock and the bus clock. + * The configuration is saved in an internal configure buffer and written back to the register in wdog_hal_enable + * function, so this function must be called before wdog_hal_enable is called. + * + * @param clockSource watchdog clock source, see wdog_clock_source_t. + */ +void wdog_hal_set_clock_source(wdog_clock_source_t clockSource); + +/*! + * @brief Get watchdog clock Source. + * + * This function is used to get the WDOG clock source. There are two clock sources that can be used, + * the LPO clock and the bus clock. + * + * @return watchdog clock source, see wdog_clock_source_t. + */ +static inline wdog_clock_source_t wdog_hal_get_clock_source(void) +{ + return (wdog_clock_source_t)BR_WDOG_STCTRLH_CLKSRC; +} + +/*! + * @brief Enable and disable watchdog window mode. + * + * This function is used to configure the WDOG window mode. + * The configuration is saved in an internal configure buffer and written back to the register in wdog_hal_enable + * function, so this function must be called before wdog_hal_enable is called. + * + * @param isEnabled 0 means disable watchdog window mode. 1 means enable watchdog window mode. + */ +void wdog_hal_configure_window_mode(bool isEnabled); + +/*! + * @brief Check whether window mode is enabled. + * + * This function is used to check whether the WDOG window mode is enabled. + * + * @return 0 means window mode is disabled, 1 means window mode is enabled. + */ +static inline bool wdog_hal_is_window_mode_enabled(void) +{ + return BR_WDOG_STCTRLH_WINEN; +} + +/*! + * @brief Enable and disable watchdog write-once-only register update. + * + * This function is used to configure the WDOG register update feature. If disabled, it means that + * all WDOG registers will never be written again unless Power On Reset. + * The configuration is saved in an internal configure buffer and written back to the register in wdog_hal_enable + * function, so this function must be called before wdog_hal_enable is called. + * + * @param isEnabled 0 means disable watchdog write-once-only register update. + * 1 means enable watchdog write-once-only register update. + */ +void wdog_hal_configure_register_update(bool isEnabled); + +/*! + * @brief Check whether register update is enabled. + * + * This function is used to check whether the WDOG register update is enabled. + * + * @return 0 means register update is disabled, 1 means register update is enabled. + */ +static inline bool wdog_hal_is_register_update_enabled(void) +{ + return BR_WDOG_STCTRLH_ALLOWUPDATE; +} + +/*! + * @brief Set whether watchdog is working while cpu is in debug mode. + * + * This function is used to configure whether the WDOG is enabled in CPU debug mode. + * The configuration is saved in an internal configure buffer and written back to the register in wdog_hal_enable + * function, so this function must be called before wdog_hal_enable is called. + * + * @param isEnabled 0 means watchdog is disabled in CPU debug mode. + * 1 means watchdog is enabled in CPU debug mode. + */ +void wdog_hal_configure_enabled_in_cpu_debug_mode(bool isEnabled); + +/*! + * @brief Check whether WDOG works while in CPU debug mode. + * + * This function is used to check whether WDOG works in CPU debug mode. + * + * @return 0 means not work while in cpu debug mode, 1 means works while in cpu debug mode. + */ +static inline bool wdog_hal_is_cpu_debug_mode_enabled(void) +{ + return BR_WDOG_STCTRLH_DBGEN; +} + +/*! + * @brief Set whether watchdog is working while cpu is in stop mode. + * + * This function is used to configure whether the WDOG is enabled in CPU stop mode. + * The configuration is saved in an internal configure buffer and written back to the register in wdog_hal_enable + * function, so this function must be called before wdog_hal_enable is called. + * + * @param isEnabled 0 means watchdog is disabled in CPU stop mode. + * 1 means watchdog is enabled in CPU stop mode. + */ +void wdog_hal_configure_enabled_in_cpu_stop_mode(bool isEnabled); + +/*! + * @brief Check whether WDOG works while in CPU stop mode. + * + * This function is used to check whether WDOG works in CPU stop mode. + * + * @return 0 means not work while in CPU stop mode, 1 means works while in CPU stop mode. + */ +static inline bool wdog_hal_is_cpu_stop_mode_enabled(void) +{ + return BR_WDOG_STCTRLH_STOPEN; +} + +/*! + * @brief Set whether watchdog is working while CPU is in wait mode. + * + * This function is used to configure whether the WDOG is enabled in CPU wait mode. + * The configuration is saved in an internal configure buffer and written back to the register in wdog_hal_enable + * function, so this function must be called before wdog_hal_enable is called. + * + * @param isEnabled 0 means watchdog is disabled in CPU wait mode. + * 1 means watchdog is enabled in CPU wait mode. + */ +void wdog_hal_configure_enabled_in_cpu_wait_mode(bool isEnabled); + +/*! + * @brief Check whether WDOG works while in CPU wait mode. + * + * This function is used to check whether WDOG works in CPU wait mode. + * + * @return 0 means not work while in CPU wait mode, 1 means works while in CPU wait mode. + */ + +static inline bool wdog_hal_is_cpu_wait_mode_enabled(void) +{ + return BR_WDOG_STCTRLH_WAITEN; +} + +/*! + * @brief Get watchdog interrupt status. + * + * This function is used to get the WDOG interrupt flag. + * + * @return Watchdog interrupt status, 0 means interrupt not asserted, 1 means interrupt asserted. + */ +static inline bool wdog_hal_is_interrupt_asserted(void) +{ + return BR_WDOG_STCTRLL_INTFLG; +} + +/*! + * @brief Clear watchdog interrupt flag. + * + * This function is used to clear the WDOG interrupt flag. + * + */ +static inline void wdog_hal_clear_interrupt_flag(void) +{ + BW_WDOG_STCTRLL_INTFLG(1); +} + +/*! + * @brief set watchdog timeout value. + * + * This function is used to set the WDOG_TOVAL value. + * + * @param timeoutCount watchdog timeout value, count of watchdog clock tick. + */ +static inline void wdog_hal_set_timeout_value(uint32_t timeoutCount) +{ + BW_WDOG_TOVALH_TOVALHIGH((uint16_t)((timeoutCount >> 16U) & 0xFFFFU)); + BW_WDOG_TOVALL_TOVALLOW((uint16_t)((timeoutCount) & 0xFFFFU)); +} + +/*! + * @brief Get watchdog timeout value. + * + * This function is used to Get the WDOG_TOVAL value. + * + * @return value of register WDOG_TOVAL. + */ +static inline uint32_t wdog_hal_get_timeout_value(void) +{ + return (uint32_t)((((uint32_t)(BR_WDOG_TOVALH_TOVALHIGH)) << 16U) | (BR_WDOG_TOVALL_TOVALLOW)); +} + +/*! + * @brief Get watchdog timer output. + * + * This function is used to get the WDOG_TMROUT value. + * + * @return Current value of watchdog timer counter. + */ +static inline uint32_t wdog_hal_get_timer_output(void) +{ + return (uint32_t)((((uint32_t)(BR_WDOG_TMROUTH_TIMEROUTHIGH)) << 16U) | (BR_WDOG_TMROUTL_TIMEROUTLOW)); +} + +/*! + * @brief Set watchdog clock prescaler. + * + * This function is used to set the WDOG clock proscaler. + * + * @param clockPrescaler watchdog clock prescaler, see wdog_clock_prescaler_t. + */ +static inline void wdog_hal_set_clock_prescaler(wdog_clock_prescaler_t clockPrescaler) +{ + BW_WDOG_PRESC_PRESCVAL(clockPrescaler); +} + +/*! + * @brief Get watchdog clock prescaler. + * + * This function is used to get the WDOG clock prescaler. + * + * @return WDOG clock prescaler. + */ +static inline wdog_clock_prescaler_t wdog_hal_get_clock_prescaler(void) +{ + return (wdog_clock_prescaler_t)BR_WDOG_PRESC_PRESCVAL; +} + +/*! + * @brief Set watchdog window value. + * + * This function is used to set the WDOG_WIN value. + * + * @param windowValue watchdog window value. + */ +static inline void wdog_hal_set_window_value(uint32_t windowValue) +{ + BW_WDOG_WINH_WINHIGH((uint16_t)((windowValue>>16U) & 0xFFFFU)); + BW_WDOG_WINL_WINLOW((uint16_t)((windowValue) & 0xFFFFU)); +} + +/*! + * @brief Get watchdog window value. + * + * This function is used to Get the WDOG_WIN value. + * + * @return watchdog window value. + */ +static inline uint32_t wdog_hal_get_window_value(void) +{ + return (uint32_t)((((uint32_t)(BR_WDOG_WINH_WINHIGH)) << 16U) | (BR_WDOG_WINL_WINLOW)); +} + +/*! + * @brief Unlock watchdog register written. + * + * This function is used to unlock the WDOG register written. + * This function must be called before any configuration is set because watchdog register + * will be locked automatically after a WCT(256 bus cycles). + * + */ +static inline void wdog_hal_unlock(void) +{ + BW_WDOG_UNLOCK_WDOGUNLOCK(0xC520U); + BW_WDOG_UNLOCK_WDOGUNLOCK(0xD928U); +} + +/*! + * @brief Refresh watchdog timer. + * + * This function is used to feed the WDOG. + * This function should be called before watchdog timer is in timeout, otherwise a RESET + * will assert. + * + */ +static inline void wdog_hal_refresh(void) +{ + BW_WDOG_REFRESH_WDOGREFRESH(0xA602U); + BW_WDOG_REFRESH_WDOGREFRESH(0xB480U); +} + +/*! + * @brief Reset chip using watchdog. + * + * This function is used to reset chip using WDOG. + * + */ +static inline void wdog_hal_reset_chip(void) +{ + BW_WDOG_REFRESH_WDOGREFRESH(0xA602U); + BW_WDOG_REFRESH_WDOGREFRESH(0); + while(1) + { + } +} + +/*! + * @brief Get chip reset count that was reset by watchdog. + * + * This function is used to get the value of WDOG_RSTCNT. + * + * @return Chip reset count that was reset by watchdog. + */ +static inline uint32_t wdog_hal_get_reset_count(void) +{ + return BR_WDOG_RSTCNT_RSTCNT; +} + +/*! + * @brief Clear chip reset count that was reset by watchdog. + * + * This function is used to clear the WDOG_RSTCNT. + * + */ +static inline void wdog_hal_clear_reset_count(void) +{ + BW_WDOG_RSTCNT_RSTCNT(0xFFFFU); +} +/*@}*/ + +#if defined(__cplusplus) +} +#endif + +/*! @}*/ + +#endif /* __FSL_WDOG_HAL_H__*/ +/******************************************************************************* + * EOF + *******************************************************************************/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/TOOLCHAIN_ARM_STD/MK64F.sct Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,14 @@ + +LR_IROM1 0x00000000 0x100000 { ; load region size_region (1000k) + ER_IROM1 0x00000000 0x100000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + ; 8_byte_aligned(62 vect * 4 bytes) = 8_byte_aligned(0x194) = 0x198 + ; 0x40000 - 0x198 = 0x3FE68 + RW_IRAM1 0x1FFF0198 0x3FE68 { + .ANY (+RW +ZI) + } +} +
Binary file TARGET_K64F/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_K64F/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_K64F/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_K64F/TOOLCHAIN_ARM_STD/mbed_overrides.o has changed
Binary file TARGET_K64F/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_K64F/TOOLCHAIN_ARM_STD/startup_MK64F12.o has changed
Binary file TARGET_K64F/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_K64F/TOOLCHAIN_ARM_STD/system_MK64F12.o has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/cmsis.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,13 @@ +/* mbed Microcontroller Library - CMSIS + * Copyright (C) 2009-2011 ARM Limited. All rights reserved. + * + * A generic CMSIS include header, pulling in LPC11U24 specifics + */ + +#ifndef MBED_CMSIS_H +#define MBED_CMSIS_H + +#include "MK64F12.h" +#include "cmsis_nvic.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/cmsis_nvic.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,26 @@ +/* mbed Microcontroller Library - cmsis_nvic + * Copyright (c) 2009-2011 ARM Limited. All rights reserved. + * + * CMSIS-style functionality to support dynamic vectors + */ + +#ifndef MBED_CMSIS_NVIC_H +#define MBED_CMSIS_NVIC_H + +#define NVIC_NUM_VECTORS (16 + 85) // CORE + MCU Peripherals +#define NVIC_USER_IRQ_OFFSET 16 + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector); +uint32_t NVIC_GetVector(IRQn_Type IRQn); + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/core_cm0.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,682 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM0_H_GENERIC +#define __CORE_CM0_H_GENERIC + +/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.<br> + Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br> + Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.<br> + Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \ingroup Cortex_M0 + @{ + */ + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16) | \ + __CM0_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x00) /*!< Cortex-M Core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + #define __STATIC_INLINE static __inline + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + #define __STATIC_INLINE static inline + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + #define __STATIC_INLINE static inline + +#endif + +/** __FPU_USED indicates whether an FPU is used or not. This core does not support an FPU at all +*/ +#define __FPU_USED 0 + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif +#endif + +#include <stdint.h> /* standard types definitions */ +#include <core_cmInstr.h> /* Core Instruction Access */ +#include <core_cmFunc.h> /* Core Function Access */ + +#endif /* __CORE_CM0_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0_H_DEPENDANT +#define __CORE_CM0_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0_REV + #define __CM0_REV 0x0000 + #warning "__CM0_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + <strong>IO Type Qualifiers</strong> are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/*@} end of group Cortex_M0 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[1]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31]; + __IO uint32_t ICER[1]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31]; + __IO uint32_t ISPR[1]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31]; + __IO uint32_t ICPR[1]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31]; + uint32_t RESERVED4[64]; + __IO uint32_t IP[8]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IO uint32_t SHP[2]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) + are only accessible over DAP and not via processor. Therefore + they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Cortex-M0 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +/* Interrupt Priorities are WORD accessible only under ARMv6M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( (((uint32_t)(IRQn) ) & 0x03) * 8 ) +#define _SHP_IDX(IRQn) ( ((((uint32_t)(IRQn) & 0x0F)-8) >> 2) ) +#define _IP_IDX(IRQn) ( ((uint32_t)(IRQn) >> 2) ) + + +/** \brief Enable External Interrupt + + The function enables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Disable External Interrupt + + The function disables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Get Pending Interrupt + + The function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + */ +__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); +} + + +/** \brief Set Pending Interrupt + + The function sets the pending bit of an external interrupt. + + \param [in] IRQn Interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Clear Pending Interrupt + + The function clears the pending bit of an external interrupt. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Set Interrupt Priority + + The function sets the priority of an interrupt. + + \note The priority cannot be set for every core interrupt. + + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + */ +__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } + else { + NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } +} + + +/** \brief Get Interrupt Priority + + The function reads the priority of an interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented + priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M0 system interrupts */ + else { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief System Reset + + The function initiates a system reset request to reset the MCU. + */ +__STATIC_INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + The function initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + + \param [in] ticks Number of ticks between two interrupts. + + \return 0 Function succeeded. + \return 1 Function failed. + + \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the + function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = ticks - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#endif /* __CORE_CM0_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/core_cm0plus.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,793 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_H_GENERIC + +/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.<br> + Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br> + Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.<br> + Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \ingroup Cortex-M0+ + @{ + */ + +/* CMSIS CM0P definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16) | \ + __CM0PLUS_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x00) /*!< Cortex-M Core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + #define __STATIC_INLINE static __inline + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + #define __STATIC_INLINE static inline + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + #define __STATIC_INLINE static inline + +#endif + +/** __FPU_USED indicates whether an FPU is used or not. This core does not support an FPU at all +*/ +#define __FPU_USED 0 + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif +#endif + +#include <stdint.h> /* standard types definitions */ +#include <core_cmInstr.h> /* Core Instruction Access */ +#include <core_cmFunc.h> /* Core Function Access */ + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000 + #warning "__CM0PLUS_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0 + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0 + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + <strong>IO Type Qualifiers</strong> are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/*@} end of group Cortex-M0+ */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[1]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31]; + __IO uint32_t ICER[1]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31]; + __IO uint32_t ISPR[1]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31]; + __IO uint32_t ICPR[1]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31]; + uint32_t RESERVED4[64]; + __IO uint32_t IP[8]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if (__VTOR_PRESENT == 1) + __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IO uint32_t SHP[2]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if (__VTOR_PRESENT == 1) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if (__MPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 8 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18 /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17 /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16 /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) + are only accessible over DAP and not via processor. Therefore + they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Cortex-M0+ Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +/* Interrupt Priorities are WORD accessible only under ARMv6M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( (((uint32_t)(IRQn) ) & 0x03) * 8 ) +#define _SHP_IDX(IRQn) ( ((((uint32_t)(IRQn) & 0x0F)-8) >> 2) ) +#define _IP_IDX(IRQn) ( ((uint32_t)(IRQn) >> 2) ) + + +/** \brief Enable External Interrupt + + The function enables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Disable External Interrupt + + The function disables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Get Pending Interrupt + + The function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + */ +__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); +} + + +/** \brief Set Pending Interrupt + + The function sets the pending bit of an external interrupt. + + \param [in] IRQn Interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Clear Pending Interrupt + + The function clears the pending bit of an external interrupt. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Set Interrupt Priority + + The function sets the priority of an interrupt. + + \note The priority cannot be set for every core interrupt. + + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + */ +__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } + else { + NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } +} + + +/** \brief Get Interrupt Priority + + The function reads the priority of an interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented + priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M0 system interrupts */ + else { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief System Reset + + The function initiates a system reset request to reset the MCU. + */ +__STATIC_INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + The function initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + + \param [in] ticks Number of ticks between two interrupts. + + \return 0 Function succeeded. + \return 1 Function failed. + + \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the + function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = ticks - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#endif /* __CORE_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/core_cm3.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1627 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_H_GENERIC + +/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.<br> + Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br> + Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.<br> + Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \ingroup Cortex_M3 + @{ + */ + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x03) /*!< Cortex-M Core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + #define __STATIC_INLINE static __inline + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + #define __STATIC_INLINE static inline + +#elif defined ( __TMS470__ ) + #define __ASM __asm /*!< asm keyword for TI CCS Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + #define __STATIC_INLINE static inline + +#endif + +/** __FPU_USED indicates whether an FPU is used or not. This core does not support an FPU at all +*/ +#define __FPU_USED 0 + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TMS470__ ) + #if defined __TI__VFP_SUPPORT____ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif +#endif + +#include <stdint.h> /* standard types definitions */ +#include <core_cmInstr.h> /* Core Instruction Access */ +#include <core_cmFunc.h> /* Core Function Access */ + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200 + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0 + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 4 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + <strong>IO Type Qualifiers</strong> are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/*@} end of group Cortex_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24]; + __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24]; + __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24]; + __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24]; + __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56]; + __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644]; + __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5]; + __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#if (__CM3_REV < 0x0201) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Registers Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* SCB Hard Fault Status Registers Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) + __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __O union + { + __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864]; + __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15]; + __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15]; + __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29]; + __O uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __I uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IO uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43]; + __O uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __I uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6]; + __I uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __I uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __I uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __I uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __I uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __I uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __I uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __I uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __I uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __I uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __I uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __I uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IO uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IO uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IO uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IO uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IO uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IO uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __I uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IO uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IO uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IO uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1]; + __IO uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IO uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IO uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1]; + __IO uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IO uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IO uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1]; + __IO uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IO uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IO uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28 /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27 /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26 /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25 /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24 /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22 /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21 /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20 /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19 /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18 /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17 /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16 /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12 /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10 /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9 /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5 /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1 /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0 /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL << DWT_CTRL_CYCCNTENA_Pos) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0 /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL << DWT_CPICNT_CPICNT_Pos) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0 /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL << DWT_EXCCNT_EXCCNT_Pos) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0 /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0 /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL << DWT_LSUCNT_LSUCNT_Pos) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0 /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0 /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL << DWT_MASK_MASK_Pos) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24 /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16 /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12 /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10 /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9 /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8 /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7 /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5 /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0 /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL << DWT_FUNCTION_FUNCTION_Pos) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IO uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IO uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2]; + __IO uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55]; + __IO uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131]; + __I uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IO uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __I uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759]; + __I uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ + __I uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __I uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1]; + __I uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __I uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IO uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39]; + __IO uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IO uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8]; + __I uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __I uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0 /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL << TPI_ACPR_PRESCALER_Pos) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0 /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL << TPI_SPPR_TXMODE_Pos) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3 /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2 /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1 /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0 /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL << TPI_FFSR_FlInProg_Pos) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8 /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1 /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0 /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL << TPI_TRIGGER_TRIGGER_Pos) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29 /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27 /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26 /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24 /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16 /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8 /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0 /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL << TPI_FIFO0_ETM0_Pos) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY_Pos 0 /*!< TPI ITATBCTR2: ATREADY Position */ +#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL << TPI_ITATBCTR2_ATREADY_Pos) /*!< TPI ITATBCTR2: ATREADY Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29 /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27 /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26 /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24 /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16 /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8 /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0 /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL << TPI_FIFO1_ITM0_Pos) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY_Pos 0 /*!< TPI ITATBCTR0: ATREADY Position */ +#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL << TPI_ITATBCTR0_ATREADY_Pos) /*!< TPI ITATBCTR0: ATREADY Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0 /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x1UL << TPI_ITCTRL_Mode_Pos) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11 /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10 /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9 /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6 /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5 /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0 /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL << TPI_DEVID_NrTraceInput_Pos) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 0 /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL << TPI_DEVTYPE_SubType_Pos) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 4 /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if (__MPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18 /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17 /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16 /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Cortex-M3 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +/** \brief Set Priority Grouping + + The function sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** \brief Get Priority Grouping + + The function reads the priority grouping field from the NVIC Interrupt Controller. + + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void) +{ + return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ +} + + +/** \brief Enable External Interrupt + + The function enables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ +} + + +/** \brief Disable External Interrupt + + The function disables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + + +/** \brief Get Pending Interrupt + + The function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + */ +__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + + +/** \brief Set Pending Interrupt + + The function sets the pending bit of an external interrupt. + + \param [in] IRQn Interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + + +/** \brief Clear Pending Interrupt + + The function clears the pending bit of an external interrupt. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Get Active Interrupt + + The function reads the active register in NVIC and returns the active bit. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + */ +__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ +} + + +/** \brief Set Interrupt Priority + + The function sets the priority of an interrupt. + + \note The priority cannot be set for every core interrupt. + + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + */ +__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ + else { + NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ +} + + +/** \brief Get Interrupt Priority + + The function reads the priority of an interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented + priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ + else { + return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief Encode Priority + + The function encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set. + + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + return ( + ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | + ((SubPriority & ((1 << (SubPriorityBits )) - 1))) + ); +} + + +/** \brief Decode Priority + + The function decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); + *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); +} + + +/** \brief System Reset + + The function initiates a system reset request to reset the MCU. + */ +__STATIC_INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + The function initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + + \param [in] ticks Number of ticks between two interrupts. + + \return 0 Function succeeded. + \return 1 Function failed. + + \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the + function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = ticks - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** \brief ITM Send Character + + The function transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + + \param [in] ch Character to transmit. + + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if ((ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ + (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0].u32 == 0); + ITM->PORT[0].u8 = (uint8_t) ch; + } + return (ch); +} + + +/** \brief ITM Receive Character + + The function inputs a character via the external variable \ref ITM_RxBuffer. + + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) { + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** \brief ITM Check Character + + The function checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) { + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { + return (0); /* no character available */ + } else { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/core_cm4.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1772 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.<br> + Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br> + Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.<br> + Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \ingroup Cortex_M4 + @{ + */ + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x04) /*!< Cortex-M Core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + #define __STATIC_INLINE static __inline + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + #define __STATIC_INLINE static inline + +#elif defined ( __TMS470__ ) + #define __ASM __asm /*!< asm keyword for TI CCS Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + #define __STATIC_INLINE static inline + +#endif + +/** __FPU_USED indicates whether an FPU is used or not. For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __TMS470__ ) + #if defined __TI_VFP_SUPPORT__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif +#endif + +#include <stdint.h> /* standard types definitions */ +#include <core_cmInstr.h> /* Core Instruction Access */ +#include <core_cmFunc.h> /* Core Function Access */ +#include <core_cm4_simd.h> /* Compiler specific SIMD Intrinsics */ + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000 + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0 + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0 + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 4 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + <strong>IO Type Qualifiers</strong> are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24]; + __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24]; + __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24]; + __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24]; + __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56]; + __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644]; + __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5]; + __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Registers Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* SCB Hard Fault Status Registers Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9 /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8 /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __O union + { + __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864]; + __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15]; + __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15]; + __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29]; + __O uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __I uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IO uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43]; + __O uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __I uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6]; + __I uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __I uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __I uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __I uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __I uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __I uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __I uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __I uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __I uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __I uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __I uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __I uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IO uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IO uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IO uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IO uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IO uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IO uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __I uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IO uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IO uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IO uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1]; + __IO uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IO uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IO uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1]; + __IO uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IO uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IO uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1]; + __IO uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IO uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IO uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28 /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27 /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26 /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25 /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24 /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22 /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21 /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20 /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19 /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18 /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17 /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16 /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12 /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10 /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9 /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5 /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1 /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0 /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL << DWT_CTRL_CYCCNTENA_Pos) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0 /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL << DWT_CPICNT_CPICNT_Pos) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0 /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL << DWT_EXCCNT_EXCCNT_Pos) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0 /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0 /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL << DWT_LSUCNT_LSUCNT_Pos) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0 /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0 /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL << DWT_MASK_MASK_Pos) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24 /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16 /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12 /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10 /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9 /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8 /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7 /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5 /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0 /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL << DWT_FUNCTION_FUNCTION_Pos) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IO uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IO uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2]; + __IO uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55]; + __IO uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131]; + __I uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IO uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __I uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759]; + __I uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ + __I uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __I uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1]; + __I uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __I uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IO uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39]; + __IO uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IO uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8]; + __I uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __I uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0 /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL << TPI_ACPR_PRESCALER_Pos) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0 /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL << TPI_SPPR_TXMODE_Pos) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3 /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2 /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1 /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0 /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL << TPI_FFSR_FlInProg_Pos) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8 /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1 /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0 /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL << TPI_TRIGGER_TRIGGER_Pos) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29 /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27 /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26 /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24 /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16 /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8 /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0 /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL << TPI_FIFO0_ETM0_Pos) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY_Pos 0 /*!< TPI ITATBCTR2: ATREADY Position */ +#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL << TPI_ITATBCTR2_ATREADY_Pos) /*!< TPI ITATBCTR2: ATREADY Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29 /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27 /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26 /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24 /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16 /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8 /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0 /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL << TPI_FIFO1_ITM0_Pos) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY_Pos 0 /*!< TPI ITATBCTR0: ATREADY Position */ +#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL << TPI_ITATBCTR0_ATREADY_Pos) /*!< TPI ITATBCTR0: ATREADY Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0 /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x1UL << TPI_ITCTRL_Mode_Pos) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11 /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10 /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9 /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6 /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5 /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0 /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL << TPI_DEVID_NrTraceInput_Pos) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 0 /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL << TPI_DEVTYPE_SubType_Pos) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 4 /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if (__MPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18 /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17 /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16 /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if (__FPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __IO uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IO uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IO uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __I uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __I uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register */ +#define FPU_FPCCR_ASPEN_Pos 31 /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30 /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8 /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6 /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5 /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4 /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3 /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1 /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0 /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL << FPU_FPCCR_LSPACT_Pos) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register */ +#define FPU_FPCAR_ADDRESS_Pos 3 /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register */ +#define FPU_FPDSCR_AHP_Pos 26 /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25 /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24 /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22 /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28 /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24 /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20 /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16 /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12 /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8 /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4 /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0 /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28 /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24 /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4 /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0 /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL << FPU_MVFR1_FtZ_mode_Pos) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ +#endif + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Cortex-M4 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#if (__FPU_PRESENT == 1) + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +/** \brief Set Priority Grouping + + The function sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** \brief Get Priority Grouping + + The function reads the priority grouping field from the NVIC Interrupt Controller. + + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void) +{ + return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ +} + + +/** \brief Enable External Interrupt + + The function enables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ +/* NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); enable interrupt */ + NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */ +} + + +/** \brief Disable External Interrupt + + The function disables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + + +/** \brief Get Pending Interrupt + + The function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + */ +__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + + +/** \brief Set Pending Interrupt + + The function sets the pending bit of an external interrupt. + + \param [in] IRQn Interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + + +/** \brief Clear Pending Interrupt + + The function clears the pending bit of an external interrupt. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Get Active Interrupt + + The function reads the active register in NVIC and returns the active bit. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + */ +__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ +} + + +/** \brief Set Interrupt Priority + + The function sets the priority of an interrupt. + + \note The priority cannot be set for every core interrupt. + + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + */ +__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ + else { + NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ +} + + +/** \brief Get Interrupt Priority + + The function reads the priority of an interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented + priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ + else { + return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief Encode Priority + + The function encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set. + + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + return ( + ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | + ((SubPriority & ((1 << (SubPriorityBits )) - 1))) + ); +} + + +/** \brief Decode Priority + + The function decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); + *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); +} + + +/** \brief System Reset + + The function initiates a system reset request to reset the MCU. + */ +__STATIC_INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + The function initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + + \param [in] ticks Number of ticks between two interrupts. + + \return 0 Function succeeded. + \return 1 Function failed. + + \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the + function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = ticks - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** \brief ITM Send Character + + The function transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + + \param [in] ch Character to transmit. + + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if ((ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ + (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0].u32 == 0); + ITM->PORT[0].u8 = (uint8_t) ch; + } + return (ch); +} + + +/** \brief ITM Receive Character + + The function inputs a character via the external variable \ref ITM_RxBuffer. + + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) { + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** \brief ITM Check Character + + The function checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) { + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { + return (0); /* no character available */ + } else { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/core_cm4_simd.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,673 @@ +/**************************************************************************//** + * @file core_cm4_simd.h + * @brief CMSIS Cortex-M4 SIMD Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM4_SIMD_H +#define __CORE_CM4_SIMD_H + + +/******************************************************************************* + * Hardware Abstraction Layer + ******************************************************************************/ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ + ((int64_t)(ARG3) << 32) ) >> 32)) + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +#include <cmsis_iar.h> + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ +/* TI CCS specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +#include <cmsis_ccs.h> + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SMLALD(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +#define __SMLALDX(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SMLSLD(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +#define __SMLSLDX(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ +/* TASKING carm specific functions */ + + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +/* not yet supported */ +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + +#endif + +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CORE_CM4_SIMD_H */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/core_cmFunc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,636 @@ +/**************************************************************************//** + * @file core_cmFunc.h + * @brief CMSIS Cortex-M Core Function Access Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#ifndef __CORE_CMFUNC_H +#define __CORE_CMFUNC_H + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#if (__ARMCC_VERSION < 400677) + #error "Please use ARM Compiler Toolchain V4.0.677 or later!" +#endif + +/* intrinsic void __enable_irq(); */ +/* intrinsic void __disable_irq(); */ + +/** \brief Get Control Register + + This function returns the content of the Control Register. + + \return Control Register value + */ +__STATIC_INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + + +/** \brief Set Control Register + + This function writes the given value to the Control Register. + + \param [in] control Control Register value to set + */ +__STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + + +/** \brief Get IPSR Register + + This function returns the content of the IPSR Register. + + \return IPSR Register value + */ +__STATIC_INLINE uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __ASM("ipsr"); + return(__regIPSR); +} + + +/** \brief Get APSR Register + + This function returns the content of the APSR Register. + + \return APSR Register value + */ +__STATIC_INLINE uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __ASM("apsr"); + return(__regAPSR); +} + + +/** \brief Get xPSR Register + + This function returns the content of the xPSR Register. + + \return xPSR Register value + */ +__STATIC_INLINE uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __ASM("xpsr"); + return(__regXPSR); +} + + +/** \brief Get Process Stack Pointer + + This function returns the current value of the Process Stack Pointer (PSP). + + \return PSP Register value + */ +__STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + return(__regProcessStackPointer); +} + + +/** \brief Set Process Stack Pointer + + This function assigns the given value to the Process Stack Pointer (PSP). + + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + __regProcessStackPointer = topOfProcStack; +} + + +/** \brief Get Main Stack Pointer + + This function returns the current value of the Main Stack Pointer (MSP). + + \return MSP Register value + */ +__STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + return(__regMainStackPointer); +} + + +/** \brief Set Main Stack Pointer + + This function assigns the given value to the Main Stack Pointer (MSP). + + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + __regMainStackPointer = topOfMainStack; +} + + +/** \brief Get Priority Mask + + This function returns the current state of the priority mask bit from the Priority Mask Register. + + \return Priority Mask value + */ +__STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + + +/** \brief Set Priority Mask + + This function assigns the given value to the Priority Mask Register. + + \param [in] priMask Priority Mask + */ +__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + + +#if (__CORTEX_M >= 0x03) + +/** \brief Enable FIQ + + This function enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq + + +/** \brief Disable FIQ + + This function disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq + + +/** \brief Get Base Priority + + This function returns the current value of the Base Priority register. + + \return Base Priority register value + */ +__STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + + +/** \brief Set Base Priority + + This function assigns the given value to the Base Priority register. + + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xff); +} + + +/** \brief Get Fault Mask + + This function returns the current value of the Fault Mask register. + + \return Fault Mask register value + */ +__STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + + +/** \brief Set Fault Mask + + This function assigns the given value to the Fault Mask register. + + \param [in] faultMask Fault Mask value to set + */ +__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & (uint32_t)1); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + +#if (__CORTEX_M == 0x04) + +/** \brief Get FPSCR + + This function returns the current value of the Floating Point Status/Control register. + + \return Floating Point Status/Control register value + */ +__STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#else + return(0); +#endif +} + + +/** \brief Set FPSCR + + This function assigns the given value to the Floating Point Status/Control register. + + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#endif +} + +#endif /* (__CORTEX_M == 0x04) */ + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#include <cmsis_iar.h> + + +#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ +/* TI CCS specific functions */ + +#include <cmsis_ccs.h> + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/** \brief Enable IRQ Interrupts + + This function enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** \brief Disable IRQ Interrupts + + This function disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** \brief Get Control Register + + This function returns the content of the Control Register. + + \return Control Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +/** \brief Set Control Register + + This function writes the given value to the Control Register. + + \param [in] control Control Register value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +/** \brief Get IPSR Register + + This function returns the content of the IPSR Register. + + \return IPSR Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** \brief Get APSR Register + + This function returns the content of the APSR Register. + + \return APSR Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** \brief Get xPSR Register + + This function returns the content of the xPSR Register. + + \return xPSR Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** \brief Get Process Stack Pointer + + This function returns the current value of the Process Stack Pointer (PSP). + + \return PSP Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t result; + + __ASM volatile ("MRS %0, psp\n" : "=r" (result) ); + return(result); +} + + +/** \brief Set Process Stack Pointer + + This function assigns the given value to the Process Stack Pointer (PSP). + + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) : "sp"); +} + + +/** \brief Get Main Stack Pointer + + This function returns the current value of the Main Stack Pointer (MSP). + + \return MSP Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t result; + + __ASM volatile ("MRS %0, msp\n" : "=r" (result) ); + return(result); +} + + +/** \brief Set Main Stack Pointer + + This function assigns the given value to the Main Stack Pointer (MSP). + + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) : "sp"); +} + + +/** \brief Get Priority Mask + + This function returns the current state of the priority mask bit from the Priority Mask Register. + + \return Priority Mask value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +/** \brief Set Priority Mask + + This function assigns the given value to the Priority Mask Register. + + \param [in] priMask Priority Mask + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (__CORTEX_M >= 0x03) + +/** \brief Enable FIQ + + This function enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** \brief Disable FIQ + + This function disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** \brief Get Base Priority + + This function returns the current value of the Base Priority register. + + \return Base Priority register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); + return(result); +} + + +/** \brief Set Base Priority + + This function assigns the given value to the Base Priority register. + + \param [in] basePri Base Priority value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (value) : "memory"); +} + + +/** \brief Get Fault Mask + + This function returns the current value of the Fault Mask register. + + \return Fault Mask register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +/** \brief Set Fault Mask + + This function assigns the given value to the Fault Mask register. + + \param [in] faultMask Fault Mask value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + +#if (__CORTEX_M == 0x04) + +/** \brief Get FPSCR + + This function returns the current value of the Floating Point Status/Control register. + + \return Floating Point Status/Control register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + uint32_t result; + + /* Empty asm statement works as a scheduling barrier */ + __ASM volatile (""); + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + __ASM volatile (""); + return(result); +#else + return(0); +#endif +} + + +/** \brief Set FPSCR + + This function assigns the given value to the Floating Point Status/Control register. + + \param [in] fpscr Floating Point Status/Control value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + /* Empty asm statement works as a scheduling barrier */ + __ASM volatile (""); + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc"); + __ASM volatile (""); +#endif +} + +#endif /* (__CORTEX_M == 0x04) */ + + +#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all instrinsics, + * Including the CMSIS ones. + */ + +#endif + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +#endif /* __CORE_CMFUNC_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/core_cmInstr.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,688 @@ +/**************************************************************************//** + * @file core_cmInstr.h + * @brief CMSIS Cortex-M Core Instruction Access Header File + * @version V3.20 + * @date 05. March 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#ifndef __CORE_CMINSTR_H +#define __CORE_CMINSTR_H + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#if (__ARMCC_VERSION < 400677) + #error "Please use ARM Compiler Toolchain V4.0.677 or later!" +#endif + + +/** \brief No Operation + + No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __nop + + +/** \brief Wait For Interrupt + + Wait For Interrupt is a hint instruction that suspends execution + until one of a number of events occurs. + */ +#define __WFI __wfi + + +/** \brief Wait For Event + + Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __wfe + + +/** \brief Send Event + + Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __sev + + +/** \brief Instruction Synchronization Barrier + + Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or + memory, after the instruction has been completed. + */ +#define __ISB() __isb(0xF) + + +/** \brief Data Synchronization Barrier + + This function acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __dsb(0xF) + + +/** \brief Data Memory Barrier + + This function ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __dmb(0xF) + + +/** \brief Reverse byte order (32 bit) + + This function reverses the byte order in integer value. + + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV __rev + + +/** \brief Reverse byte order (16 bit) + + This function reverses the byte order in two unsigned short values. + + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} +#endif + +/** \brief Reverse byte order in signed short value + + This function reverses the byte order in a signed short value with sign extension to integer. + + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value) +{ + revsh r0, r0 + bx lr +} +#endif + + +/** \brief Rotate Right in unsigned value (32 bit) + + This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + + \param [in] value Value to rotate + \param [in] value Number of Bits to rotate + \return Rotated value + */ +#define __ROR __ror + + +/** \brief Breakpoint + + This function causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __breakpoint(value) + + +#if (__CORTEX_M >= 0x03) + +/** \brief Reverse bit order of value + + This function reverses the bit order of the given value. + + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __rbit + + +/** \brief LDR Exclusive (8 bit) + + This function performs a exclusive LDR command for 8 bit value. + + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) + + +/** \brief LDR Exclusive (16 bit) + + This function performs a exclusive LDR command for 16 bit values. + + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) + + +/** \brief LDR Exclusive (32 bit) + + This function performs a exclusive LDR command for 32 bit values. + + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) + + +/** \brief STR Exclusive (8 bit) + + This function performs a exclusive STR command for 8 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB(value, ptr) __strex(value, ptr) + + +/** \brief STR Exclusive (16 bit) + + This function performs a exclusive STR command for 16 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH(value, ptr) __strex(value, ptr) + + +/** \brief STR Exclusive (32 bit) + + This function performs a exclusive STR command for 32 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW(value, ptr) __strex(value, ptr) + + +/** \brief Remove the exclusive lock + + This function removes the exclusive lock which is created by LDREX. + + */ +#define __CLREX __clrex + + +/** \brief Signed Saturate + + This function saturates a signed value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + + +/** \brief Unsigned Saturate + + This function saturates an unsigned value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + + +/** \brief Count leading zeros + + This function counts the number of leading zeros of a data value. + + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + +#endif /* (__CORTEX_M >= 0x03) */ + + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#include <cmsis_iar.h> + + +#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ +/* TI CCS specific functions */ + +#include <cmsis_ccs.h> + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constrant "l" + * Otherwise, use general registers, specified by constrant "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** \brief No Operation + + No Operation does nothing. This instruction can be used for code alignment purposes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void) +{ + __ASM volatile ("nop"); +} + + +/** \brief Wait For Interrupt + + Wait For Interrupt is a hint instruction that suspends execution + until one of a number of events occurs. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void) +{ + __ASM volatile ("wfi"); +} + + +/** \brief Wait For Event + + Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void) +{ + __ASM volatile ("wfe"); +} + + +/** \brief Send Event + + Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void) +{ + __ASM volatile ("sev"); +} + + +/** \brief Instruction Synchronization Barrier + + Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or + memory, after the instruction has been completed. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void) +{ + __ASM volatile ("isb"); +} + + +/** \brief Data Synchronization Barrier + + This function acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void) +{ + __ASM volatile ("dsb"); +} + + +/** \brief Data Memory Barrier + + This function ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void) +{ + __ASM volatile ("dmb"); +} + + +/** \brief Reverse byte order (32 bit) + + This function reverses the byte order in integer value. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +#endif +} + + +/** \brief Reverse byte order (16 bit) + + This function reverses the byte order in two unsigned short values. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** \brief Reverse byte order in signed short value + + This function reverses the byte order in a signed short value with sign extension to integer. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (short)__builtin_bswap16(value); +#else + uint32_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +#endif +} + + +/** \brief Rotate Right in unsigned value (32 bit) + + This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + + \param [in] value Value to rotate + \param [in] value Number of Bits to rotate + \return Rotated value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + return (op1 >> op2) | (op1 << (32 - op2)); +} + + +/** \brief Breakpoint + + This function causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +#if (__CORTEX_M >= 0x03) + +/** \brief Reverse bit order of value + + This function reverses the bit order of the given value. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + + +/** \brief LDR Exclusive (8 bit) + + This function performs a exclusive LDR command for 8 bit value. + + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return(result); +} + + +/** \brief LDR Exclusive (16 bit) + + This function performs a exclusive LDR command for 16 bit values. + + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return(result); +} + + +/** \brief LDR Exclusive (32 bit) + + This function performs a exclusive LDR command for 32 bit values. + + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** \brief STR Exclusive (8 bit) + + This function performs a exclusive STR command for 8 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** \brief STR Exclusive (16 bit) + + This function performs a exclusive STR command for 16 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** \brief STR Exclusive (32 bit) + + This function performs a exclusive STR command for 32 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** \brief Remove the exclusive lock + + This function removes the exclusive lock which is created by LDREX. + + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + + +/** \brief Signed Saturate + + This function saturates a signed value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** \brief Unsigned Saturate + + This function saturates an unsigned value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** \brief Count leading zeros + + This function counts the number of leading zeros of a data value. + + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + + + +#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + +#endif + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + +#endif /* __CORE_CMINSTR_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_K64F/system_MK64F12.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,92 @@ +/* +** ################################################################### +** Processor: MK64FN1M0VMD12 +** Compilers: ARM Compiler +** Freescale C/C++ for Embedded ARM +** GNU C Compiler +** GNU C Compiler - CodeSourcery Sourcery G++ +** IAR ANSI C/C++ Compiler for ARM +** +** Reference manual: K64P144M120SF5RM, Rev.1, July 2013 +** Version: rev. 2.1, 2013-10-29 +** +** Abstract: +** Provides a system configuration function and a global variable that +** contains the system frequency. It configures the device and initializes +** the oscillator (PLL) that is part of the microcontroller device. +** +** Copyright: 2013 Freescale, Inc. All Rights Reserved. +** +** http: www.freescale.com +** mail: support@freescale.com +** +** Revisions: +** - rev. 1.0 (2013-08-12) +** Initial version. +** - rev. 2.0 (2013-10-29) +** Register accessor macros added to the memory map. +** Symbols for Processor Expert memory map compatibility added to the memory map. +** Startup file for gcc has been updated according to CMSIS 3.2. +** System initialization updated. +** MCG - registers updated. +** PORTA, PORTB, PORTC, PORTE - registers for digital filter removed. +** - rev. 2.1 (2013-10-29) +** Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled. +** +** ################################################################### +*/ + +/*! + * @file MK64F12 + * @version 2.1 + * @date 2013-10-29 + * @brief Device specific configuration file for MK64F12 (header file) + * + * Provides a system configuration function and a global variable that contains + * the system frequency. It configures the device and initializes the oscillator + * (PLL) that is part of the microcontroller device. + */ + +#ifndef SYSTEM_MK64F12_H_ +#define SYSTEM_MK64F12_H_ /**< Symbol preventing repeated inclusion */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +/** + * @brief System clock frequency (core clock) + * + * The system clock frequency supplied to the SysTick timer and the processor + * core clock. This variable can be used by the user application to setup the + * SysTick timer or configure other parameters. It may also be used by debugger to + * query the frequency of the debug timer or configure the trace clock speed + * SystemCoreClock is initialized with a correct predefined value. + */ +extern uint32_t SystemCoreClock; + +/** + * @brief Setup the microcontroller system. + * + * Typically this function configures the oscillator (PLL) that is part of the + * microcontroller device. For systems with variable clock speed it also updates + * the variable SystemCoreClock. SystemInit is called from startup_device file. + */ +void SystemInit (void); + +/** + * @brief Updates the SystemCoreClock variable. + * + * It must be called whenever the core clock is changed during program + * execution. SystemCoreClockUpdate() evaluates the clock register settings and calculates + * the current core clock. + */ +void SystemCoreClockUpdate (void); + +#ifdef __cplusplus +} +#endif + +#endif /* #if !defined(SYSTEM_MK64F12_H_) */
--- a/TARGET_KL05Z/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - OSC32KCLK = 0, - RTC_CLKIN = 2 -} RTCName; - -typedef enum { - UART_0 = (int)UART0_BASE -} UARTName; - -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -typedef enum { - I2C_0 = (int)I2C0_BASE, - I2C_1 = -1 -} I2CName; - -typedef enum { - ADC0_SE0 = 0, - ADC0_SE1 = 1, - ADC0_SE2 = 2, - ADC0_SE3 = 3, - ADC0_SE4 = 4, - ADC0_SE5 = 5, - ADC0_SE6 = 6, - ADC0_SE7 = 7, - ADC0_SE8 = 8, - ADC0_SE9 = 9, - ADC0_SE10 = 10, - ADC0_SE11 = 11, - ADC0_SE12 = 12, - ADC0_SE13 = 13 -} ADCName; - -typedef enum { - DAC_0 = 0 -} DACName; - -typedef enum { - SPI_0 = (int)SPI0_BASE -} SPIName; - -#define TPM_SHIFT 8 -typedef enum { - PWM_1 = (0 << TPM_SHIFT) | (0), // TPM0 CH0 - PWM_2 = (0 << TPM_SHIFT) | (1), // TPM0 CH1 - PWM_3 = (0 << TPM_SHIFT) | (2), // TPM0 CH2 - PWM_4 = (0 << TPM_SHIFT) | (3), // TPM0 CH3 - PWM_5 = (0 << TPM_SHIFT) | (4), // TPM0 CH4 - PWM_6 = (0 << TPM_SHIFT) | (5), // TPM0 CH5 - - PWM_7 = (1 << TPM_SHIFT) | (0), // TPM1 CH0 - PWM_8 = (1 << TPM_SHIFT) | (1), // TPM1 CH1 -} PWMName; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL05Z/PeripheralPins.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef MBED_PERIPHERALPINS_H -#define MBED_PERIPHERALPINS_H - -#include "pinmap.h" -#include "PeripheralNames.h" - -/************RTC***************/ -extern const PinMap PinMap_RTC[]; - -/************ADC***************/ -extern const PinMap PinMap_ADC[]; - -/************DAC***************/ -extern const PinMap PinMap_DAC[]; - -/************I2C***************/ -extern const PinMap PinMap_I2C_SDA[]; -extern const PinMap PinMap_I2C_SCL[]; - -/************UART***************/ -extern const PinMap PinMap_UART_TX[]; -extern const PinMap PinMap_UART_RX[]; - -/************SPI***************/ -extern const PinMap PinMap_SPI_SCLK[]; -extern const PinMap PinMap_SPI_MOSI[]; -extern const PinMap PinMap_SPI_MISO[]; -extern const PinMap PinMap_SPI_SSEL[]; - -/************PWM***************/ -extern const PinMap PinMap_PWM[]; - -#endif
--- a/TARGET_KL05Z/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,136 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -/* PCR - 0x1000 */ -#define PORT_SHIFT 12 - -typedef enum { - PTA0 = 0x0, - PTA1 = 0x4, - PTA2 = 0x8, - PTA3 = 0xc, - PTA4 = 0x10, - PTA5 = 0x14, - PTA6 = 0x18, - PTA7 = 0x1c, - PTA8 = 0x20, - PTA9 = 0x24, - PTA10 = 0x28, - PTA11 = 0x2c, - PTA12 = 0x30, - PTA13 = 0x34, - PTA14 = 0x38, - PTA15 = 0x3c, - PTA16 = 0x40, - PTA17 = 0x44, - PTA18 = 0x48, - PTA19 = 0x4c, - PTB0 = 0x1000, - PTB1 = 0x1004, - PTB2 = 0x1008, - PTB3 = 0x100c, - PTB4 = 0x1010, - PTB5 = 0x1014, - PTB6 = 0x1018, - PTB7 = 0x101c, - PTB8 = 0x1020, - PTB9 = 0x1024, - PTB10 = 0x1028, - PTB11 = 0x102c, - PTB12 = 0x1030, - PTB13 = 0x1034, - PTB14 = 0x1038, - PTB15 = 0x103c, - PTB16 = 0x1040, - PTB17 = 0x1044, - PTB18 = 0x1048, - PTB19 = 0x104c, - PTB20 = 0x1050, - - LED_RED = PTB8, - LED_GREEN = PTB9, - LED_BLUE = PTB10, - - // mbed original LED naming - LED1 = LED_RED, - LED2 = LED_GREEN, - LED3 = LED_BLUE, - LED4 = LED_BLUE, - - // USB Pins - USBTX = PTB1, - USBRX = PTB2, - - // Arduino Headers - D0 = PTB2, - D1 = PTB1, - D2 = PTA11, - D3 = PTB5, - D4 = PTA10, - D5 = PTA12, - D6 = PTB6, - D7 = PTB7, - D8 = PTB10, - D9 = PTB11, - D10 = PTA5, - D11 = PTA7, - D12 = PTA6, - D13 = PTB0, - D14 = PTB4, - D15 = PTB3, - - A0 = PTB8, - A1 = PTB9, - A2 = PTA8, - A3 = PTA0, - A4 = PTA9, - A5 = PTB13, - - I2C_SCL = D15, - I2C_SDA = D14, - - TSI_ELEC0 = PTA13, - TSI_ELEC1 = PTB12, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -/* PullDown not available for KL05 */ -typedef enum { - PullNone = 0, - PullUp = 2, - PullDefault = PullUp -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL05Z/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PortA = 0, - PortB = 1, - PortC = 2, - PortD = 3, - PortE = 4 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL05Z/TARGET_Freescale/TARGET_KLXX/PeripheralPins.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,49 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PERIPHERALPINS_H +#define MBED_PERIPHERALPINS_H + +#include "pinmap.h" +#include "PeripheralNames.h" + +/************RTC***************/ +extern const PinMap PinMap_RTC[]; + +/************ADC***************/ +extern const PinMap PinMap_ADC[]; + +/************DAC***************/ +extern const PinMap PinMap_DAC[]; + +/************I2C***************/ +extern const PinMap PinMap_I2C_SDA[]; +extern const PinMap PinMap_I2C_SCL[]; + +/************UART***************/ +extern const PinMap PinMap_UART_TX[]; +extern const PinMap PinMap_UART_RX[]; + +/************SPI***************/ +extern const PinMap PinMap_SPI_SCLK[]; +extern const PinMap PinMap_SPI_MOSI[]; +extern const PinMap PinMap_SPI_MISO[]; +extern const PinMap PinMap_SPI_SSEL[]; + +/************PWM***************/ +extern const PinMap PinMap_PWM[]; + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL05Z/TARGET_Freescale/TARGET_KLXX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,34 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PortA = 0, + PortB = 1, + PortC = 2, + PortD = 3, + PortE = 4 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL05Z/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,85 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + OSC32KCLK = 0, + RTC_CLKIN = 2 +} RTCName; + +typedef enum { + UART_0 = (int)UART0_BASE +} UARTName; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +typedef enum { + I2C_0 = (int)I2C0_BASE, + I2C_1 = -1 +} I2CName; + +typedef enum { + ADC0_SE0 = 0, + ADC0_SE1 = 1, + ADC0_SE2 = 2, + ADC0_SE3 = 3, + ADC0_SE4 = 4, + ADC0_SE5 = 5, + ADC0_SE6 = 6, + ADC0_SE7 = 7, + ADC0_SE8 = 8, + ADC0_SE9 = 9, + ADC0_SE10 = 10, + ADC0_SE11 = 11, + ADC0_SE12 = 12, + ADC0_SE13 = 13 +} ADCName; + +typedef enum { + DAC_0 = 0 +} DACName; + +typedef enum { + SPI_0 = (int)SPI0_BASE +} SPIName; + +#define TPM_SHIFT 8 +typedef enum { + PWM_1 = (0 << TPM_SHIFT) | (0), // TPM0 CH0 + PWM_2 = (0 << TPM_SHIFT) | (1), // TPM0 CH1 + PWM_3 = (0 << TPM_SHIFT) | (2), // TPM0 CH2 + PWM_4 = (0 << TPM_SHIFT) | (3), // TPM0 CH3 + PWM_5 = (0 << TPM_SHIFT) | (4), // TPM0 CH4 + PWM_6 = (0 << TPM_SHIFT) | (5), // TPM0 CH5 + + PWM_7 = (1 << TPM_SHIFT) | (0), // TPM1 CH0 + PWM_8 = (1 << TPM_SHIFT) | (1), // TPM1 CH1 +} PWMName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL05Z/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,136 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +/* PCR - 0x1000 */ +#define PORT_SHIFT 12 + +typedef enum { + PTA0 = 0x0, + PTA1 = 0x4, + PTA2 = 0x8, + PTA3 = 0xc, + PTA4 = 0x10, + PTA5 = 0x14, + PTA6 = 0x18, + PTA7 = 0x1c, + PTA8 = 0x20, + PTA9 = 0x24, + PTA10 = 0x28, + PTA11 = 0x2c, + PTA12 = 0x30, + PTA13 = 0x34, + PTA14 = 0x38, + PTA15 = 0x3c, + PTA16 = 0x40, + PTA17 = 0x44, + PTA18 = 0x48, + PTA19 = 0x4c, + PTB0 = 0x1000, + PTB1 = 0x1004, + PTB2 = 0x1008, + PTB3 = 0x100c, + PTB4 = 0x1010, + PTB5 = 0x1014, + PTB6 = 0x1018, + PTB7 = 0x101c, + PTB8 = 0x1020, + PTB9 = 0x1024, + PTB10 = 0x1028, + PTB11 = 0x102c, + PTB12 = 0x1030, + PTB13 = 0x1034, + PTB14 = 0x1038, + PTB15 = 0x103c, + PTB16 = 0x1040, + PTB17 = 0x1044, + PTB18 = 0x1048, + PTB19 = 0x104c, + PTB20 = 0x1050, + + LED_RED = PTB8, + LED_GREEN = PTB9, + LED_BLUE = PTB10, + + // mbed original LED naming + LED1 = LED_RED, + LED2 = LED_GREEN, + LED3 = LED_BLUE, + LED4 = LED_BLUE, + + // USB Pins + USBTX = PTB1, + USBRX = PTB2, + + // Arduino Headers + D0 = PTB2, + D1 = PTB1, + D2 = PTA11, + D3 = PTB5, + D4 = PTA10, + D5 = PTA12, + D6 = PTB6, + D7 = PTB7, + D8 = PTB10, + D9 = PTB11, + D10 = PTA5, + D11 = PTA7, + D12 = PTA6, + D13 = PTB0, + D14 = PTB4, + D15 = PTB3, + + A0 = PTB8, + A1 = PTB9, + A2 = PTA8, + A3 = PTA0, + A4 = PTA9, + A5 = PTB13, + + I2C_SCL = D15, + I2C_SDA = D14, + + TSI_ELEC0 = PTA13, + TSI_ELEC1 = PTB12, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +/* PullDown not available for KL05 */ +typedef enum { + PullNone = 0, + PullUp = 2, + PullDefault = PullUp +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL05Z/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,58 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 1 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 1 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_RED 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL05Z/TARGET_Freescale/TARGET_KLXX/clk_freqs.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,118 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_CLK_FREQS_H +#define MBED_CLK_FREQS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "PeripheralPins.h" + +//Get the peripheral bus clock frequency +static inline uint32_t bus_frequency(void) { + return SystemCoreClock / (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1); +} + +//Get external oscillator (crystal) frequency +static uint32_t extosc_frequency(void) { + uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); + + if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(2)) //MCG clock = external reference clock + return MCGClock; + + uint32_t divider, multiplier; + #ifdef MCG_C5_PLLCLKEN0_MASK //PLL available + if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(0)) { //PLL/FLL is selected + if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected + #endif + if ((MCG->S & MCG_S_IREFST_MASK) == 0x0u) { //FLL uses external reference + divider = (uint8_t)(1u << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT)); + if ((MCG->C2 & MCG_C2_RANGE0_MASK) != 0x0u) + divider <<= 5u; + /* Select correct multiplier to calculate the MCG output clock */ + switch (MCG->C4 & (MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) { + case 0x0u: + multiplier = 640u; + break; + case 0x20u: + multiplier = 1280u; + break; + case 0x40u: + multiplier = 1920u; + break; + case 0x60u: + multiplier = 2560u; + break; + case 0x80u: + multiplier = 732u; + break; + case 0xA0u: + multiplier = 1464u; + break; + case 0xC0u: + multiplier = 2197u; + break; + case 0xE0u: + default: + multiplier = 2929u; + break; + } + + return MCGClock * divider / multiplier; + } + #ifdef MCG_C5_PLLCLKEN0_MASK + } else { //PLL is selected + divider = (1u + (MCG->C5 & MCG_C5_PRDIV0_MASK)); + multiplier = ((MCG->C6 & MCG_C6_VDIV0_MASK) + 24u); + return MCGClock * divider / multiplier; + } + } + #endif + + //In all other cases either there is no crystal or we cannot determine it + //For example when the FLL is running on the internal reference, and there is also an + //external crystal. However these are unlikely situations + return 0; +} + +//Get MCG PLL/2 or FLL frequency, depending on which one is active, sets PLLFLLSEL bit +static uint32_t mcgpllfll_frequency(void) { + if ((MCG->C1 & MCG_C1_CLKS_MASK) != MCG_C1_CLKS(0)) //PLL/FLL is not selected + return 0; + + uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); + #ifdef MCG_C5_PLLCLKEN0_MASK + if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected + SIM->SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is FLL output + #endif + return MCGClock; + #ifdef MCG_C5_PLLCLKEN0_MASK + } else { //PLL is selected + SIM->SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is PLL output + return (MCGClock >> 1); + } + #endif + + //It is possible the SystemCoreClock isn't running on the PLL, and the PLL is still active + //for the peripherals, this is however an unlikely setup +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL05Z/TARGET_Freescale/TARGET_KLXX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL05Z/TARGET_Freescale/TARGET_KLXX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,79 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef TARGET_KL46Z +#define UARTLP_Type UART0_Type +#endif + +struct gpio_irq_s { + uint32_t port; + uint32_t pin; + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_out; + __I uint32_t *reg_in; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + __IO uint32_t *MOD; + __IO uint32_t *CNT; + __IO uint32_t *CnV; +}; + +struct serial_s { + UARTLP_Type *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct dac_s { + DACName dac; +}; + +struct i2c_s { + I2C_Type *i2c; +}; + +struct spi_s { + SPI_Type *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_MICRO/mbed_overrides.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_MICRO/system_MKL05Z4.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_STD/mbed_overrides.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_ARM_STD/system_MKL05Z4.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_KL05Z/TOOLCHAIN_GCC_ARM/mbed_overrides.o has changed
Binary file TARGET_KL05Z/TOOLCHAIN_GCC_ARM/retarget.o has changed
--- a/TARGET_KL05Z/clk_freqs.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_CLK_FREQS_H -#define MBED_CLK_FREQS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "PeripheralPins.h" - -//Get the peripheral bus clock frequency -static inline uint32_t bus_frequency(void) { - return SystemCoreClock / (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1); -} - -//Get external oscillator (crystal) frequency -static uint32_t extosc_frequency(void) { - uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); - - if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(2)) //MCG clock = external reference clock - return MCGClock; - - uint32_t divider, multiplier; - #ifdef MCG_C5_PLLCLKEN0_MASK //PLL available - if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(0)) { //PLL/FLL is selected - if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected - #endif - if ((MCG->S & MCG_S_IREFST_MASK) == 0x0u) { //FLL uses external reference - divider = (uint8_t)(1u << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT)); - if ((MCG->C2 & MCG_C2_RANGE0_MASK) != 0x0u) - divider <<= 5u; - /* Select correct multiplier to calculate the MCG output clock */ - switch (MCG->C4 & (MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) { - case 0x0u: - multiplier = 640u; - break; - case 0x20u: - multiplier = 1280u; - break; - case 0x40u: - multiplier = 1920u; - break; - case 0x60u: - multiplier = 2560u; - break; - case 0x80u: - multiplier = 732u; - break; - case 0xA0u: - multiplier = 1464u; - break; - case 0xC0u: - multiplier = 2197u; - break; - case 0xE0u: - default: - multiplier = 2929u; - break; - } - - return MCGClock * divider / multiplier; - } - #ifdef MCG_C5_PLLCLKEN0_MASK - } else { //PLL is selected - divider = (1u + (MCG->C5 & MCG_C5_PRDIV0_MASK)); - multiplier = ((MCG->C6 & MCG_C6_VDIV0_MASK) + 24u); - return MCGClock * divider / multiplier; - } - } - #endif - - //In all other cases either there is no crystal or we cannot determine it - //For example when the FLL is running on the internal reference, and there is also an - //external crystal. However these are unlikely situations - return 0; -} - -//Get MCG PLL/2 or FLL frequency, depending on which one is active, sets PLLFLLSEL bit -static uint32_t mcgpllfll_frequency(void) { - if ((MCG->C1 & MCG_C1_CLKS_MASK) != MCG_C1_CLKS(0)) //PLL/FLL is not selected - return 0; - - uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); - #ifdef MCG_C5_PLLCLKEN0_MASK - if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected - SIM->SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is FLL output - #endif - return MCGClock; - #ifdef MCG_C5_PLLCLKEN0_MASK - } else { //PLL is selected - SIM->SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is PLL output - return (MCGClock >> 1); - } - #endif - - //It is possible the SystemCoreClock isn't running on the PLL, and the PLL is still active - //for the peripherals, this is however an unlikely setup -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL05Z/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 1 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 1 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 1 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 24 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -#define DEVICE_ERROR_RED 1 - -#include "objects.h" - -#endif
--- a/TARGET_KL05Z/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL05Z/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef TARGET_KL46Z -#define UARTLP_Type UART0_Type -#endif - -struct gpio_irq_s { - uint32_t port; - uint32_t pin; - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_out; - __I uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - __IO uint32_t *MOD; - __IO uint32_t *CNT; - __IO uint32_t *CnV; -}; - -struct serial_s { - UARTLP_Type *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct dac_s { - DACName dac; -}; - -struct i2c_s { - I2C_Type *i2c; -}; - -struct spi_s { - SPI_Type *spi; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL25Z/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - OSC32KCLK = 0, - RTC_CLKIN = 2 -} RTCName; - -typedef enum { - UART_0 = (int)UART0_BASE, - UART_1 = (int)UART1_BASE, - UART_2 = (int)UART2_BASE -} UARTName; -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -typedef enum { - I2C_0 = (int)I2C0_BASE, - I2C_1 = (int)I2C1_BASE, -} I2CName; - -#define TPM_SHIFT 8 -typedef enum { - PWM_1 = (0 << TPM_SHIFT) | (0), // TPM0 CH0 - PWM_2 = (0 << TPM_SHIFT) | (1), // TPM0 CH1 - PWM_3 = (0 << TPM_SHIFT) | (2), // TPM0 CH2 - PWM_4 = (0 << TPM_SHIFT) | (3), // TPM0 CH3 - PWM_5 = (0 << TPM_SHIFT) | (4), // TPM0 CH4 - PWM_6 = (0 << TPM_SHIFT) | (5), // TPM0 CH5 - - PWM_7 = (1 << TPM_SHIFT) | (0), // TPM1 CH0 - PWM_8 = (1 << TPM_SHIFT) | (1), // TPM1 CH1 - - PWM_9 = (2 << TPM_SHIFT) | (0), // TPM2 CH0 - PWM_10 = (2 << TPM_SHIFT) | (1) // TPM2 CH1 -} PWMName; - -#define CHANNELS_A_SHIFT 5 -typedef enum { - ADC0_SE0 = 0, - ADC0_SE3 = 3, - ADC0_SE4a = (1 << CHANNELS_A_SHIFT) | (4), - ADC0_SE4b = 4, - ADC0_SE5b = 5, - ADC0_SE6b = 6, - ADC0_SE7a = (1 << CHANNELS_A_SHIFT) | (7), - ADC0_SE7b = 7, - ADC0_SE8 = 8, - ADC0_SE9 = 9, - ADC0_SE11 = 11, - ADC0_SE12 = 12, - ADC0_SE13 = 13, - ADC0_SE14 = 14, - ADC0_SE15 = 15, - ADC0_SE23 = 23 -} ADCName; - -typedef enum { - DAC_0 = 0 -} DACName; - - -typedef enum { - SPI_0 = (int)SPI0_BASE, - SPI_1 = (int)SPI1_BASE, -} SPIName; - -// Default peripherals -#define MBED_SPI0 PTD2, PTD3, PTD1, PTD0 - -#define MBED_UART0 PTC4, PTC3 -#define MBED_UART1 PTD3, PTD2 -#define MBED_UARTUSB PTA2, PTA1 - -#define MBED_I2C0 PTC9, PTC8 -#define MBED_I2C1 PTE1, PTE0 - -#define MBED_ANALOGOUT0 PTE30 - -#define MBED_ANALOGIN0 PTC2 -#define MBED_ANALOGIN1 PTB3 -#define MBED_ANALOGIN2 PTB2 -#define MBED_ANALOGIN3 PTB1 -#define MBED_ANALOGIN4 PTB0 - -#define MBED_PWMOUT0 PTD4 -#define MBED_PWMOUT1 PTA12 -#define MBED_PWMOUT2 PTA4 -#define MBED_PWMOUT3 PTA5 -#define MBED_PWMOUT4 PTC8 -#define MBED_PWMOUT5 PTC9 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL25Z/PeripheralPins.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef MBED_PERIPHERALPINS_H -#define MBED_PERIPHERALPINS_H - -#include "pinmap.h" -#include "PeripheralNames.h" - -/************RTC***************/ -extern const PinMap PinMap_RTC[]; - -/************ADC***************/ -extern const PinMap PinMap_ADC[]; - -/************DAC***************/ -extern const PinMap PinMap_DAC[]; - -/************I2C***************/ -extern const PinMap PinMap_I2C_SDA[]; -extern const PinMap PinMap_I2C_SCL[]; - -/************UART***************/ -extern const PinMap PinMap_UART_TX[]; -extern const PinMap PinMap_UART_RX[]; - -/************SPI***************/ -extern const PinMap PinMap_SPI_SCLK[]; -extern const PinMap PinMap_SPI_MOSI[]; -extern const PinMap PinMap_SPI_MISO[]; -extern const PinMap PinMap_SPI_SSEL[]; - -/************PWM***************/ -extern const PinMap PinMap_PWM[]; - -#endif
--- a/TARGET_KL25Z/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,254 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 12 - -typedef enum { - PTA0 = 0x0, - PTA1 = 0x4, - PTA2 = 0x8, - PTA3 = 0xc, - PTA4 = 0x10, - PTA5 = 0x14, - PTA6 = 0x18, - PTA7 = 0x1c, - PTA8 = 0x20, - PTA9 = 0x24, - PTA10 = 0x28, - PTA11 = 0x2c, - PTA12 = 0x30, - PTA13 = 0x34, - PTA14 = 0x38, - PTA15 = 0x3c, - PTA16 = 0x40, - PTA17 = 0x44, - PTA18 = 0x48, - PTA19 = 0x4c, - PTA20 = 0x50, - PTA21 = 0x54, - PTA22 = 0x58, - PTA23 = 0x5c, - PTA24 = 0x60, - PTA25 = 0x64, - PTA26 = 0x68, - PTA27 = 0x6c, - PTA28 = 0x70, - PTA29 = 0x74, - PTA30 = 0x78, - PTA31 = 0x7c, - PTB0 = 0x1000, - PTB1 = 0x1004, - PTB2 = 0x1008, - PTB3 = 0x100c, - PTB4 = 0x1010, - PTB5 = 0x1014, - PTB6 = 0x1018, - PTB7 = 0x101c, - PTB8 = 0x1020, - PTB9 = 0x1024, - PTB10 = 0x1028, - PTB11 = 0x102c, - PTB12 = 0x1030, - PTB13 = 0x1034, - PTB14 = 0x1038, - PTB15 = 0x103c, - PTB16 = 0x1040, - PTB17 = 0x1044, - PTB18 = 0x1048, - PTB19 = 0x104c, - PTB20 = 0x1050, - PTB21 = 0x1054, - PTB22 = 0x1058, - PTB23 = 0x105c, - PTB24 = 0x1060, - PTB25 = 0x1064, - PTB26 = 0x1068, - PTB27 = 0x106c, - PTB28 = 0x1070, - PTB29 = 0x1074, - PTB30 = 0x1078, - PTB31 = 0x107c, - PTC0 = 0x2000, - PTC1 = 0x2004, - PTC2 = 0x2008, - PTC3 = 0x200c, - PTC4 = 0x2010, - PTC5 = 0x2014, - PTC6 = 0x2018, - PTC7 = 0x201c, - PTC8 = 0x2020, - PTC9 = 0x2024, - PTC10 = 0x2028, - PTC11 = 0x202c, - PTC12 = 0x2030, - PTC13 = 0x2034, - PTC14 = 0x2038, - PTC15 = 0x203c, - PTC16 = 0x2040, - PTC17 = 0x2044, - PTC18 = 0x2048, - PTC19 = 0x204c, - PTC20 = 0x2050, - PTC21 = 0x2054, - PTC22 = 0x2058, - PTC23 = 0x205c, - PTC24 = 0x2060, - PTC25 = 0x2064, - PTC26 = 0x2068, - PTC27 = 0x206c, - PTC28 = 0x2070, - PTC29 = 0x2074, - PTC30 = 0x2078, - PTC31 = 0x207c, - PTD0 = 0x3000, - PTD1 = 0x3004, - PTD2 = 0x3008, - PTD3 = 0x300c, - PTD4 = 0x3010, - PTD5 = 0x3014, - PTD6 = 0x3018, - PTD7 = 0x301c, - PTD8 = 0x3020, - PTD9 = 0x3024, - PTD10 = 0x3028, - PTD11 = 0x302c, - PTD12 = 0x3030, - PTD13 = 0x3034, - PTD14 = 0x3038, - PTD15 = 0x303c, - PTD16 = 0x3040, - PTD17 = 0x3044, - PTD18 = 0x3048, - PTD19 = 0x304c, - PTD20 = 0x3050, - PTD21 = 0x3054, - PTD22 = 0x3058, - PTD23 = 0x305c, - PTD24 = 0x3060, - PTD25 = 0x3064, - PTD26 = 0x3068, - PTD27 = 0x306c, - PTD28 = 0x3070, - PTD29 = 0x3074, - PTD30 = 0x3078, - PTD31 = 0x307c, - PTE0 = 0x4000, - PTE1 = 0x4004, - PTE2 = 0x4008, - PTE3 = 0x400c, - PTE4 = 0x4010, - PTE5 = 0x4014, - PTE6 = 0x4018, - PTE7 = 0x401c, - PTE8 = 0x4020, - PTE9 = 0x4024, - PTE10 = 0x4028, - PTE11 = 0x402c, - PTE12 = 0x4030, - PTE13 = 0x4034, - PTE14 = 0x4038, - PTE15 = 0x403c, - PTE16 = 0x4040, - PTE17 = 0x4044, - PTE18 = 0x4048, - PTE19 = 0x404c, - PTE20 = 0x4050, - PTE21 = 0x4054, - PTE22 = 0x4058, - PTE23 = 0x405c, - PTE24 = 0x4060, - PTE25 = 0x4064, - PTE26 = 0x4068, - PTE27 = 0x406c, - PTE28 = 0x4070, - PTE29 = 0x4074, - PTE30 = 0x4078, - PTE31 = 0x407c, - - LED_RED = PTB18, - LED_GREEN = PTB19, - LED_BLUE = PTD1, - - // mbed original LED naming - LED1 = LED_RED, - LED2 = LED_GREEN, - LED3 = LED_BLUE, - LED4 = LED_BLUE, - - // USB Pins - USBTX = PTA2, - USBRX = PTA1, - - // Arduino Headers - D0 = PTA1, - D1 = PTA2, - D2 = PTD4, - D3 = PTA12, - D4 = PTA4, - D5 = PTA5, - D6 = PTC8, - D7 = PTC9, - D8 = PTA13, - D9 = PTD5, - D10 = PTD0, - D11 = PTD2, - D12 = PTD3, - D13 = PTD1, - D14 = PTE0, - D15 = PTE1, - - A0 = PTB0, - A1 = PTB1, - A2 = PTB2, - A3 = PTB3, - A4 = PTC2, - A5 = PTC1, - - I2C_SCL = D15, - I2C_SDA = D14, - - TSI_ELEC0 = PTB16, - TSI_ELEC1 = PTB17, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -/* PullDown not available for KL25 */ -typedef enum { - PullNone = 0, - PullUp = 2, - PullDefault = PullUp -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL25Z/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PortA = 0, - PortB = 1, - PortC = 2, - PortD = 3, - PortE = 4 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL25Z/TARGET_Freescale/TARGET_KLXX/PeripheralPins.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,49 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PERIPHERALPINS_H +#define MBED_PERIPHERALPINS_H + +#include "pinmap.h" +#include "PeripheralNames.h" + +/************RTC***************/ +extern const PinMap PinMap_RTC[]; + +/************ADC***************/ +extern const PinMap PinMap_ADC[]; + +/************DAC***************/ +extern const PinMap PinMap_DAC[]; + +/************I2C***************/ +extern const PinMap PinMap_I2C_SDA[]; +extern const PinMap PinMap_I2C_SCL[]; + +/************UART***************/ +extern const PinMap PinMap_UART_TX[]; +extern const PinMap PinMap_UART_RX[]; + +/************SPI***************/ +extern const PinMap PinMap_SPI_SCLK[]; +extern const PinMap PinMap_SPI_MOSI[]; +extern const PinMap PinMap_SPI_MISO[]; +extern const PinMap PinMap_SPI_SSEL[]; + +/************PWM***************/ +extern const PinMap PinMap_PWM[]; + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL25Z/TARGET_Freescale/TARGET_KLXX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,34 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PortA = 0, + PortB = 1, + PortC = 2, + PortD = 3, + PortE = 4 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL25Z/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,119 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + OSC32KCLK = 0, + RTC_CLKIN = 2 +} RTCName; + +typedef enum { + UART_0 = (int)UART0_BASE, + UART_1 = (int)UART1_BASE, + UART_2 = (int)UART2_BASE +} UARTName; +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +typedef enum { + I2C_0 = (int)I2C0_BASE, + I2C_1 = (int)I2C1_BASE, +} I2CName; + +#define TPM_SHIFT 8 +typedef enum { + PWM_1 = (0 << TPM_SHIFT) | (0), // TPM0 CH0 + PWM_2 = (0 << TPM_SHIFT) | (1), // TPM0 CH1 + PWM_3 = (0 << TPM_SHIFT) | (2), // TPM0 CH2 + PWM_4 = (0 << TPM_SHIFT) | (3), // TPM0 CH3 + PWM_5 = (0 << TPM_SHIFT) | (4), // TPM0 CH4 + PWM_6 = (0 << TPM_SHIFT) | (5), // TPM0 CH5 + + PWM_7 = (1 << TPM_SHIFT) | (0), // TPM1 CH0 + PWM_8 = (1 << TPM_SHIFT) | (1), // TPM1 CH1 + + PWM_9 = (2 << TPM_SHIFT) | (0), // TPM2 CH0 + PWM_10 = (2 << TPM_SHIFT) | (1) // TPM2 CH1 +} PWMName; + +#define CHANNELS_A_SHIFT 5 +typedef enum { + ADC0_SE0 = 0, + ADC0_SE3 = 3, + ADC0_SE4a = (1 << CHANNELS_A_SHIFT) | (4), + ADC0_SE4b = 4, + ADC0_SE5b = 5, + ADC0_SE6b = 6, + ADC0_SE7a = (1 << CHANNELS_A_SHIFT) | (7), + ADC0_SE7b = 7, + ADC0_SE8 = 8, + ADC0_SE9 = 9, + ADC0_SE11 = 11, + ADC0_SE12 = 12, + ADC0_SE13 = 13, + ADC0_SE14 = 14, + ADC0_SE15 = 15, + ADC0_SE23 = 23 +} ADCName; + +typedef enum { + DAC_0 = 0 +} DACName; + + +typedef enum { + SPI_0 = (int)SPI0_BASE, + SPI_1 = (int)SPI1_BASE, +} SPIName; + +// Default peripherals +#define MBED_SPI0 PTD2, PTD3, PTD1, PTD0 + +#define MBED_UART0 PTC4, PTC3 +#define MBED_UART1 PTD3, PTD2 +#define MBED_UARTUSB PTA2, PTA1 + +#define MBED_I2C0 PTC9, PTC8 +#define MBED_I2C1 PTE1, PTE0 + +#define MBED_ANALOGOUT0 PTE30 + +#define MBED_ANALOGIN0 PTC2 +#define MBED_ANALOGIN1 PTB3 +#define MBED_ANALOGIN2 PTB2 +#define MBED_ANALOGIN3 PTB1 +#define MBED_ANALOGIN4 PTB0 + +#define MBED_PWMOUT0 PTD4 +#define MBED_PWMOUT1 PTA12 +#define MBED_PWMOUT2 PTA4 +#define MBED_PWMOUT3 PTA5 +#define MBED_PWMOUT4 PTC8 +#define MBED_PWMOUT5 PTC9 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL25Z/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,254 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 12 + +typedef enum { + PTA0 = 0x0, + PTA1 = 0x4, + PTA2 = 0x8, + PTA3 = 0xc, + PTA4 = 0x10, + PTA5 = 0x14, + PTA6 = 0x18, + PTA7 = 0x1c, + PTA8 = 0x20, + PTA9 = 0x24, + PTA10 = 0x28, + PTA11 = 0x2c, + PTA12 = 0x30, + PTA13 = 0x34, + PTA14 = 0x38, + PTA15 = 0x3c, + PTA16 = 0x40, + PTA17 = 0x44, + PTA18 = 0x48, + PTA19 = 0x4c, + PTA20 = 0x50, + PTA21 = 0x54, + PTA22 = 0x58, + PTA23 = 0x5c, + PTA24 = 0x60, + PTA25 = 0x64, + PTA26 = 0x68, + PTA27 = 0x6c, + PTA28 = 0x70, + PTA29 = 0x74, + PTA30 = 0x78, + PTA31 = 0x7c, + PTB0 = 0x1000, + PTB1 = 0x1004, + PTB2 = 0x1008, + PTB3 = 0x100c, + PTB4 = 0x1010, + PTB5 = 0x1014, + PTB6 = 0x1018, + PTB7 = 0x101c, + PTB8 = 0x1020, + PTB9 = 0x1024, + PTB10 = 0x1028, + PTB11 = 0x102c, + PTB12 = 0x1030, + PTB13 = 0x1034, + PTB14 = 0x1038, + PTB15 = 0x103c, + PTB16 = 0x1040, + PTB17 = 0x1044, + PTB18 = 0x1048, + PTB19 = 0x104c, + PTB20 = 0x1050, + PTB21 = 0x1054, + PTB22 = 0x1058, + PTB23 = 0x105c, + PTB24 = 0x1060, + PTB25 = 0x1064, + PTB26 = 0x1068, + PTB27 = 0x106c, + PTB28 = 0x1070, + PTB29 = 0x1074, + PTB30 = 0x1078, + PTB31 = 0x107c, + PTC0 = 0x2000, + PTC1 = 0x2004, + PTC2 = 0x2008, + PTC3 = 0x200c, + PTC4 = 0x2010, + PTC5 = 0x2014, + PTC6 = 0x2018, + PTC7 = 0x201c, + PTC8 = 0x2020, + PTC9 = 0x2024, + PTC10 = 0x2028, + PTC11 = 0x202c, + PTC12 = 0x2030, + PTC13 = 0x2034, + PTC14 = 0x2038, + PTC15 = 0x203c, + PTC16 = 0x2040, + PTC17 = 0x2044, + PTC18 = 0x2048, + PTC19 = 0x204c, + PTC20 = 0x2050, + PTC21 = 0x2054, + PTC22 = 0x2058, + PTC23 = 0x205c, + PTC24 = 0x2060, + PTC25 = 0x2064, + PTC26 = 0x2068, + PTC27 = 0x206c, + PTC28 = 0x2070, + PTC29 = 0x2074, + PTC30 = 0x2078, + PTC31 = 0x207c, + PTD0 = 0x3000, + PTD1 = 0x3004, + PTD2 = 0x3008, + PTD3 = 0x300c, + PTD4 = 0x3010, + PTD5 = 0x3014, + PTD6 = 0x3018, + PTD7 = 0x301c, + PTD8 = 0x3020, + PTD9 = 0x3024, + PTD10 = 0x3028, + PTD11 = 0x302c, + PTD12 = 0x3030, + PTD13 = 0x3034, + PTD14 = 0x3038, + PTD15 = 0x303c, + PTD16 = 0x3040, + PTD17 = 0x3044, + PTD18 = 0x3048, + PTD19 = 0x304c, + PTD20 = 0x3050, + PTD21 = 0x3054, + PTD22 = 0x3058, + PTD23 = 0x305c, + PTD24 = 0x3060, + PTD25 = 0x3064, + PTD26 = 0x3068, + PTD27 = 0x306c, + PTD28 = 0x3070, + PTD29 = 0x3074, + PTD30 = 0x3078, + PTD31 = 0x307c, + PTE0 = 0x4000, + PTE1 = 0x4004, + PTE2 = 0x4008, + PTE3 = 0x400c, + PTE4 = 0x4010, + PTE5 = 0x4014, + PTE6 = 0x4018, + PTE7 = 0x401c, + PTE8 = 0x4020, + PTE9 = 0x4024, + PTE10 = 0x4028, + PTE11 = 0x402c, + PTE12 = 0x4030, + PTE13 = 0x4034, + PTE14 = 0x4038, + PTE15 = 0x403c, + PTE16 = 0x4040, + PTE17 = 0x4044, + PTE18 = 0x4048, + PTE19 = 0x404c, + PTE20 = 0x4050, + PTE21 = 0x4054, + PTE22 = 0x4058, + PTE23 = 0x405c, + PTE24 = 0x4060, + PTE25 = 0x4064, + PTE26 = 0x4068, + PTE27 = 0x406c, + PTE28 = 0x4070, + PTE29 = 0x4074, + PTE30 = 0x4078, + PTE31 = 0x407c, + + LED_RED = PTB18, + LED_GREEN = PTB19, + LED_BLUE = PTD1, + + // mbed original LED naming + LED1 = LED_RED, + LED2 = LED_GREEN, + LED3 = LED_BLUE, + LED4 = LED_BLUE, + + // USB Pins + USBTX = PTA2, + USBRX = PTA1, + + // Arduino Headers + D0 = PTA1, + D1 = PTA2, + D2 = PTD4, + D3 = PTA12, + D4 = PTA4, + D5 = PTA5, + D6 = PTC8, + D7 = PTC9, + D8 = PTA13, + D9 = PTD5, + D10 = PTD0, + D11 = PTD2, + D12 = PTD3, + D13 = PTD1, + D14 = PTE0, + D15 = PTE1, + + A0 = PTB0, + A1 = PTB1, + A2 = PTB2, + A3 = PTB3, + A4 = PTC2, + A5 = PTC1, + + I2C_SCL = D15, + I2C_SDA = D14, + + TSI_ELEC0 = PTB16, + TSI_ELEC1 = PTB17, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +/* PullDown not available for KL25 */ +typedef enum { + PullNone = 0, + PullUp = 2, + PullDefault = PullUp +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL25Z/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,58 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 1 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 1 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_RED 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL25Z/TARGET_Freescale/TARGET_KLXX/clk_freqs.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,118 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_CLK_FREQS_H +#define MBED_CLK_FREQS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "PeripheralPins.h" + +//Get the peripheral bus clock frequency +static inline uint32_t bus_frequency(void) { + return SystemCoreClock / (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1); +} + +//Get external oscillator (crystal) frequency +static uint32_t extosc_frequency(void) { + uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); + + if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(2)) //MCG clock = external reference clock + return MCGClock; + + uint32_t divider, multiplier; + #ifdef MCG_C5_PLLCLKEN0_MASK //PLL available + if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(0)) { //PLL/FLL is selected + if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected + #endif + if ((MCG->S & MCG_S_IREFST_MASK) == 0x0u) { //FLL uses external reference + divider = (uint8_t)(1u << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT)); + if ((MCG->C2 & MCG_C2_RANGE0_MASK) != 0x0u) + divider <<= 5u; + /* Select correct multiplier to calculate the MCG output clock */ + switch (MCG->C4 & (MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) { + case 0x0u: + multiplier = 640u; + break; + case 0x20u: + multiplier = 1280u; + break; + case 0x40u: + multiplier = 1920u; + break; + case 0x60u: + multiplier = 2560u; + break; + case 0x80u: + multiplier = 732u; + break; + case 0xA0u: + multiplier = 1464u; + break; + case 0xC0u: + multiplier = 2197u; + break; + case 0xE0u: + default: + multiplier = 2929u; + break; + } + + return MCGClock * divider / multiplier; + } + #ifdef MCG_C5_PLLCLKEN0_MASK + } else { //PLL is selected + divider = (1u + (MCG->C5 & MCG_C5_PRDIV0_MASK)); + multiplier = ((MCG->C6 & MCG_C6_VDIV0_MASK) + 24u); + return MCGClock * divider / multiplier; + } + } + #endif + + //In all other cases either there is no crystal or we cannot determine it + //For example when the FLL is running on the internal reference, and there is also an + //external crystal. However these are unlikely situations + return 0; +} + +//Get MCG PLL/2 or FLL frequency, depending on which one is active, sets PLLFLLSEL bit +static uint32_t mcgpllfll_frequency(void) { + if ((MCG->C1 & MCG_C1_CLKS_MASK) != MCG_C1_CLKS(0)) //PLL/FLL is not selected + return 0; + + uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); + #ifdef MCG_C5_PLLCLKEN0_MASK + if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected + SIM->SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is FLL output + #endif + return MCGClock; + #ifdef MCG_C5_PLLCLKEN0_MASK + } else { //PLL is selected + SIM->SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is PLL output + return (MCGClock >> 1); + } + #endif + + //It is possible the SystemCoreClock isn't running on the PLL, and the PLL is still active + //for the peripherals, this is however an unlikely setup +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL25Z/TARGET_Freescale/TARGET_KLXX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL25Z/TARGET_Freescale/TARGET_KLXX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,79 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef TARGET_KL46Z +#define UARTLP_Type UART0_Type +#endif + +struct gpio_irq_s { + uint32_t port; + uint32_t pin; + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_out; + __I uint32_t *reg_in; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + __IO uint32_t *MOD; + __IO uint32_t *CNT; + __IO uint32_t *CnV; +}; + +struct serial_s { + UARTLP_Type *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct dac_s { + DACName dac; +}; + +struct i2c_s { + I2C_Type *i2c; +}; + +struct spi_s { + SPI_Type *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_KL25Z/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_KL25Z/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_KL25Z/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_KL25Z/TOOLCHAIN_ARM_STD/mbed_overrides.o has changed
Binary file TARGET_KL25Z/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_KL25Z/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_KL25Z/TOOLCHAIN_ARM_STD/system_MKL25Z4.o has changed
Binary file TARGET_KL25Z/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_KL25Z/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_KL25Z/TOOLCHAIN_GCC_ARM/mbed_overrides.o has changed
Binary file TARGET_KL25Z/TOOLCHAIN_GCC_ARM/retarget.o has changed
--- a/TARGET_KL25Z/clk_freqs.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_CLK_FREQS_H -#define MBED_CLK_FREQS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "PeripheralPins.h" - -//Get the peripheral bus clock frequency -static inline uint32_t bus_frequency(void) { - return SystemCoreClock / (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1); -} - -//Get external oscillator (crystal) frequency -static uint32_t extosc_frequency(void) { - uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); - - if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(2)) //MCG clock = external reference clock - return MCGClock; - - uint32_t divider, multiplier; - #ifdef MCG_C5_PLLCLKEN0_MASK //PLL available - if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(0)) { //PLL/FLL is selected - if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected - #endif - if ((MCG->S & MCG_S_IREFST_MASK) == 0x0u) { //FLL uses external reference - divider = (uint8_t)(1u << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT)); - if ((MCG->C2 & MCG_C2_RANGE0_MASK) != 0x0u) - divider <<= 5u; - /* Select correct multiplier to calculate the MCG output clock */ - switch (MCG->C4 & (MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) { - case 0x0u: - multiplier = 640u; - break; - case 0x20u: - multiplier = 1280u; - break; - case 0x40u: - multiplier = 1920u; - break; - case 0x60u: - multiplier = 2560u; - break; - case 0x80u: - multiplier = 732u; - break; - case 0xA0u: - multiplier = 1464u; - break; - case 0xC0u: - multiplier = 2197u; - break; - case 0xE0u: - default: - multiplier = 2929u; - break; - } - - return MCGClock * divider / multiplier; - } - #ifdef MCG_C5_PLLCLKEN0_MASK - } else { //PLL is selected - divider = (1u + (MCG->C5 & MCG_C5_PRDIV0_MASK)); - multiplier = ((MCG->C6 & MCG_C6_VDIV0_MASK) + 24u); - return MCGClock * divider / multiplier; - } - } - #endif - - //In all other cases either there is no crystal or we cannot determine it - //For example when the FLL is running on the internal reference, and there is also an - //external crystal. However these are unlikely situations - return 0; -} - -//Get MCG PLL/2 or FLL frequency, depending on which one is active, sets PLLFLLSEL bit -static uint32_t mcgpllfll_frequency(void) { - if ((MCG->C1 & MCG_C1_CLKS_MASK) != MCG_C1_CLKS(0)) //PLL/FLL is not selected - return 0; - - uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); - #ifdef MCG_C5_PLLCLKEN0_MASK - if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected - SIM->SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is FLL output - #endif - return MCGClock; - #ifdef MCG_C5_PLLCLKEN0_MASK - } else { //PLL is selected - SIM->SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is PLL output - return (MCGClock >> 1); - } - #endif - - //It is possible the SystemCoreClock isn't running on the PLL, and the PLL is still active - //for the peripherals, this is however an unlikely setup -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL25Z/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 1 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 1 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 1 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 24 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -#define DEVICE_ERROR_RED 1 - -#include "objects.h" - -#endif
--- a/TARGET_KL25Z/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL25Z/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef TARGET_KL46Z -#define UARTLP_Type UART0_Type -#endif - -struct gpio_irq_s { - uint32_t port; - uint32_t pin; - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_out; - __I uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - __IO uint32_t *MOD; - __IO uint32_t *CNT; - __IO uint32_t *CnV; -}; - -struct serial_s { - UARTLP_Type *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct dac_s { - DACName dac; -}; - -struct i2c_s { - I2C_Type *i2c; -}; - -struct spi_s { - SPI_Type *spi; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL46Z/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - OSC32KCLK = 0, - RTC_CLKIN = 2 -} RTCName; - -typedef enum { - UART_0 = (int)UART0_BASE, - UART_1 = (int)UART1_BASE, - UART_2 = (int)UART2_BASE -} UARTName; -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -typedef enum { - I2C_0 = (int)I2C0_BASE, - I2C_1 = (int)I2C1_BASE, -} I2CName; - -#define TPM_SHIFT 8 -typedef enum { - PWM_1 = (0 << TPM_SHIFT) | (0), // TPM0 CH0 - PWM_2 = (0 << TPM_SHIFT) | (1), // TPM0 CH1 - PWM_3 = (0 << TPM_SHIFT) | (2), // TPM0 CH2 - PWM_4 = (0 << TPM_SHIFT) | (3), // TPM0 CH3 - PWM_5 = (0 << TPM_SHIFT) | (4), // TPM0 CH4 - PWM_6 = (0 << TPM_SHIFT) | (5), // TPM0 CH5 - - PWM_7 = (1 << TPM_SHIFT) | (0), // TPM1 CH0 - PWM_8 = (1 << TPM_SHIFT) | (1), // TPM1 CH1 - - PWM_9 = (2 << TPM_SHIFT) | (0), // TPM2 CH0 - PWM_10 = (2 << TPM_SHIFT) | (1) // TPM2 CH1 -} PWMName; - -#define CHANNELS_A_SHIFT 5 -typedef enum { - ADC0_SE0 = 0, - ADC0_SE3 = 3, - ADC0_SE4a = (1 << CHANNELS_A_SHIFT) | (4), - ADC0_SE4b = 4, - ADC0_SE5b = 5, - ADC0_SE6b = 6, - ADC0_SE7a = (1 << CHANNELS_A_SHIFT) | (7), - ADC0_SE7b = 7, - ADC0_SE8 = 8, - ADC0_SE9 = 9, - ADC0_SE11 = 11, - ADC0_SE12 = 12, - ADC0_SE13 = 13, - ADC0_SE14 = 14, - ADC0_SE15 = 15, - ADC0_SE23 = 23 -} ADCName; - -typedef enum { - DAC_0 = 0 -} DACName; - - -typedef enum { - SPI_0 = (int)SPI0_BASE, - SPI_1 = (int)SPI1_BASE, -} SPIName; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL46Z/PeripheralPins.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef MBED_PERIPHERALPINS_H -#define MBED_PERIPHERALPINS_H - -#include "pinmap.h" -#include "PeripheralNames.h" - -/************RTC***************/ -extern const PinMap PinMap_RTC[]; - -/************ADC***************/ -extern const PinMap PinMap_ADC[]; - -/************DAC***************/ -extern const PinMap PinMap_DAC[]; - -/************I2C***************/ -extern const PinMap PinMap_I2C_SDA[]; -extern const PinMap PinMap_I2C_SCL[]; - -/************UART***************/ -extern const PinMap PinMap_UART_TX[]; -extern const PinMap PinMap_UART_RX[]; - -/************SPI***************/ -extern const PinMap PinMap_SPI_SCLK[]; -extern const PinMap PinMap_SPI_MOSI[]; -extern const PinMap PinMap_SPI_MISO[]; -extern const PinMap PinMap_SPI_SSEL[]; - -/************PWM***************/ -extern const PinMap PinMap_PWM[]; - -#endif
--- a/TARGET_KL46Z/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,258 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 12 - -typedef enum { - PTA0 = 0x0, - PTA1 = 0x4, - PTA2 = 0x8, - PTA3 = 0xc, - PTA4 = 0x10, - PTA5 = 0x14, - PTA6 = 0x18, - PTA7 = 0x1c, - PTA8 = 0x20, - PTA9 = 0x24, - PTA10 = 0x28, - PTA11 = 0x2c, - PTA12 = 0x30, - PTA13 = 0x34, - PTA14 = 0x38, - PTA15 = 0x3c, - PTA16 = 0x40, - PTA17 = 0x44, - PTA18 = 0x48, - PTA19 = 0x4c, - PTA20 = 0x50, - PTA21 = 0x54, - PTA22 = 0x58, - PTA23 = 0x5c, - PTA24 = 0x60, - PTA25 = 0x64, - PTA26 = 0x68, - PTA27 = 0x6c, - PTA28 = 0x70, - PTA29 = 0x74, - PTA30 = 0x78, - PTA31 = 0x7c, - PTB0 = 0x1000, - PTB1 = 0x1004, - PTB2 = 0x1008, - PTB3 = 0x100c, - PTB4 = 0x1010, - PTB5 = 0x1014, - PTB6 = 0x1018, - PTB7 = 0x101c, - PTB8 = 0x1020, - PTB9 = 0x1024, - PTB10 = 0x1028, - PTB11 = 0x102c, - PTB12 = 0x1030, - PTB13 = 0x1034, - PTB14 = 0x1038, - PTB15 = 0x103c, - PTB16 = 0x1040, - PTB17 = 0x1044, - PTB18 = 0x1048, - PTB19 = 0x104c, - PTB20 = 0x1050, - PTB21 = 0x1054, - PTB22 = 0x1058, - PTB23 = 0x105c, - PTB24 = 0x1060, - PTB25 = 0x1064, - PTB26 = 0x1068, - PTB27 = 0x106c, - PTB28 = 0x1070, - PTB29 = 0x1074, - PTB30 = 0x1078, - PTB31 = 0x107c, - PTC0 = 0x2000, - PTC1 = 0x2004, - PTC2 = 0x2008, - PTC3 = 0x200c, - PTC4 = 0x2010, - PTC5 = 0x2014, - PTC6 = 0x2018, - PTC7 = 0x201c, - PTC8 = 0x2020, - PTC9 = 0x2024, - PTC10 = 0x2028, - PTC11 = 0x202c, - PTC12 = 0x2030, - PTC13 = 0x2034, - PTC14 = 0x2038, - PTC15 = 0x203c, - PTC16 = 0x2040, - PTC17 = 0x2044, - PTC18 = 0x2048, - PTC19 = 0x204c, - PTC20 = 0x2050, - PTC21 = 0x2054, - PTC22 = 0x2058, - PTC23 = 0x205c, - PTC24 = 0x2060, - PTC25 = 0x2064, - PTC26 = 0x2068, - PTC27 = 0x206c, - PTC28 = 0x2070, - PTC29 = 0x2074, - PTC30 = 0x2078, - PTC31 = 0x207c, - PTD0 = 0x3000, - PTD1 = 0x3004, - PTD2 = 0x3008, - PTD3 = 0x300c, - PTD4 = 0x3010, - PTD5 = 0x3014, - PTD6 = 0x3018, - PTD7 = 0x301c, - PTD8 = 0x3020, - PTD9 = 0x3024, - PTD10 = 0x3028, - PTD11 = 0x302c, - PTD12 = 0x3030, - PTD13 = 0x3034, - PTD14 = 0x3038, - PTD15 = 0x303c, - PTD16 = 0x3040, - PTD17 = 0x3044, - PTD18 = 0x3048, - PTD19 = 0x304c, - PTD20 = 0x3050, - PTD21 = 0x3054, - PTD22 = 0x3058, - PTD23 = 0x305c, - PTD24 = 0x3060, - PTD25 = 0x3064, - PTD26 = 0x3068, - PTD27 = 0x306c, - PTD28 = 0x3070, - PTD29 = 0x3074, - PTD30 = 0x3078, - PTD31 = 0x307c, - PTE0 = 0x4000, - PTE1 = 0x4004, - PTE2 = 0x4008, - PTE3 = 0x400c, - PTE4 = 0x4010, - PTE5 = 0x4014, - PTE6 = 0x4018, - PTE7 = 0x401c, - PTE8 = 0x4020, - PTE9 = 0x4024, - PTE10 = 0x4028, - PTE11 = 0x402c, - PTE12 = 0x4030, - PTE13 = 0x4034, - PTE14 = 0x4038, - PTE15 = 0x403c, - PTE16 = 0x4040, - PTE17 = 0x4044, - PTE18 = 0x4048, - PTE19 = 0x404c, - PTE20 = 0x4050, - PTE21 = 0x4054, - PTE22 = 0x4058, - PTE23 = 0x405c, - PTE24 = 0x4060, - PTE25 = 0x4064, - PTE26 = 0x4068, - PTE27 = 0x406c, - PTE28 = 0x4070, - PTE29 = 0x4074, - PTE30 = 0x4078, - PTE31 = 0x407c, - - LED_RED = PTE29, - LED_GREEN = PTD5, - - // mbed original LED naming - LED1 = LED_GREEN, - LED2 = LED_RED, - LED3 = LED_GREEN, - LED4 = LED_RED, - - //Push buttons - SW1 = PTC3, - SW3 = PTC12, - - // USB Pins - USBTX = PTA2, - USBRX = PTA1, - - // Arduino Headers - D0 = PTA1, - D1 = PTA2, - D2 = PTD3, - D3 = PTA12, - D4 = PTA4, - D5 = PTA5, - D6 = PTC8, - D7 = PTC9, - D8 = PTA13, - D9 = PTD2, - D10 = PTD4, - D11 = PTD6, - D12 = PTD7, - D13 = PTD5, - D14 = PTE0, - D15 = PTE1, - - A0 = PTB0, - A1 = PTB1, - A2 = PTB2, - A3 = PTB3, - A4 = PTC2, - A5 = PTC1, - - I2C_SCL = D15, - I2C_SDA = D14, - - TSI_ELEC0 = PTB16, - TSI_ELEC1 = PTB17, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -/* Pull modes for input pins */ -typedef enum { - PullNone = 0, - PullDown = 2, - PullUp = 3, - PullDefault = PullUp -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL46Z/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PortA = 0, - PortB = 1, - PortC = 2, - PortD = 3, - PortE = 4 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL46Z/TARGET_Freescale/TARGET_KLXX/PeripheralPins.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,49 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PERIPHERALPINS_H +#define MBED_PERIPHERALPINS_H + +#include "pinmap.h" +#include "PeripheralNames.h" + +/************RTC***************/ +extern const PinMap PinMap_RTC[]; + +/************ADC***************/ +extern const PinMap PinMap_ADC[]; + +/************DAC***************/ +extern const PinMap PinMap_DAC[]; + +/************I2C***************/ +extern const PinMap PinMap_I2C_SDA[]; +extern const PinMap PinMap_I2C_SCL[]; + +/************UART***************/ +extern const PinMap PinMap_UART_TX[]; +extern const PinMap PinMap_UART_RX[]; + +/************SPI***************/ +extern const PinMap PinMap_SPI_SCLK[]; +extern const PinMap PinMap_SPI_MOSI[]; +extern const PinMap PinMap_SPI_MISO[]; +extern const PinMap PinMap_SPI_SSEL[]; + +/************PWM***************/ +extern const PinMap PinMap_PWM[]; + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL46Z/TARGET_Freescale/TARGET_KLXX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,34 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PortA = 0, + PortB = 1, + PortC = 2, + PortD = 3, + PortE = 4 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL46Z/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,94 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + OSC32KCLK = 0, + RTC_CLKIN = 2 +} RTCName; + +typedef enum { + UART_0 = (int)UART0_BASE, + UART_1 = (int)UART1_BASE, + UART_2 = (int)UART2_BASE +} UARTName; +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +typedef enum { + I2C_0 = (int)I2C0_BASE, + I2C_1 = (int)I2C1_BASE, +} I2CName; + +#define TPM_SHIFT 8 +typedef enum { + PWM_1 = (0 << TPM_SHIFT) | (0), // TPM0 CH0 + PWM_2 = (0 << TPM_SHIFT) | (1), // TPM0 CH1 + PWM_3 = (0 << TPM_SHIFT) | (2), // TPM0 CH2 + PWM_4 = (0 << TPM_SHIFT) | (3), // TPM0 CH3 + PWM_5 = (0 << TPM_SHIFT) | (4), // TPM0 CH4 + PWM_6 = (0 << TPM_SHIFT) | (5), // TPM0 CH5 + + PWM_7 = (1 << TPM_SHIFT) | (0), // TPM1 CH0 + PWM_8 = (1 << TPM_SHIFT) | (1), // TPM1 CH1 + + PWM_9 = (2 << TPM_SHIFT) | (0), // TPM2 CH0 + PWM_10 = (2 << TPM_SHIFT) | (1) // TPM2 CH1 +} PWMName; + +#define CHANNELS_A_SHIFT 5 +typedef enum { + ADC0_SE0 = 0, + ADC0_SE3 = 3, + ADC0_SE4a = (1 << CHANNELS_A_SHIFT) | (4), + ADC0_SE4b = 4, + ADC0_SE5b = 5, + ADC0_SE6b = 6, + ADC0_SE7a = (1 << CHANNELS_A_SHIFT) | (7), + ADC0_SE7b = 7, + ADC0_SE8 = 8, + ADC0_SE9 = 9, + ADC0_SE11 = 11, + ADC0_SE12 = 12, + ADC0_SE13 = 13, + ADC0_SE14 = 14, + ADC0_SE15 = 15, + ADC0_SE23 = 23 +} ADCName; + +typedef enum { + DAC_0 = 0 +} DACName; + + +typedef enum { + SPI_0 = (int)SPI0_BASE, + SPI_1 = (int)SPI1_BASE, +} SPIName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL46Z/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,258 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 12 + +typedef enum { + PTA0 = 0x0, + PTA1 = 0x4, + PTA2 = 0x8, + PTA3 = 0xc, + PTA4 = 0x10, + PTA5 = 0x14, + PTA6 = 0x18, + PTA7 = 0x1c, + PTA8 = 0x20, + PTA9 = 0x24, + PTA10 = 0x28, + PTA11 = 0x2c, + PTA12 = 0x30, + PTA13 = 0x34, + PTA14 = 0x38, + PTA15 = 0x3c, + PTA16 = 0x40, + PTA17 = 0x44, + PTA18 = 0x48, + PTA19 = 0x4c, + PTA20 = 0x50, + PTA21 = 0x54, + PTA22 = 0x58, + PTA23 = 0x5c, + PTA24 = 0x60, + PTA25 = 0x64, + PTA26 = 0x68, + PTA27 = 0x6c, + PTA28 = 0x70, + PTA29 = 0x74, + PTA30 = 0x78, + PTA31 = 0x7c, + PTB0 = 0x1000, + PTB1 = 0x1004, + PTB2 = 0x1008, + PTB3 = 0x100c, + PTB4 = 0x1010, + PTB5 = 0x1014, + PTB6 = 0x1018, + PTB7 = 0x101c, + PTB8 = 0x1020, + PTB9 = 0x1024, + PTB10 = 0x1028, + PTB11 = 0x102c, + PTB12 = 0x1030, + PTB13 = 0x1034, + PTB14 = 0x1038, + PTB15 = 0x103c, + PTB16 = 0x1040, + PTB17 = 0x1044, + PTB18 = 0x1048, + PTB19 = 0x104c, + PTB20 = 0x1050, + PTB21 = 0x1054, + PTB22 = 0x1058, + PTB23 = 0x105c, + PTB24 = 0x1060, + PTB25 = 0x1064, + PTB26 = 0x1068, + PTB27 = 0x106c, + PTB28 = 0x1070, + PTB29 = 0x1074, + PTB30 = 0x1078, + PTB31 = 0x107c, + PTC0 = 0x2000, + PTC1 = 0x2004, + PTC2 = 0x2008, + PTC3 = 0x200c, + PTC4 = 0x2010, + PTC5 = 0x2014, + PTC6 = 0x2018, + PTC7 = 0x201c, + PTC8 = 0x2020, + PTC9 = 0x2024, + PTC10 = 0x2028, + PTC11 = 0x202c, + PTC12 = 0x2030, + PTC13 = 0x2034, + PTC14 = 0x2038, + PTC15 = 0x203c, + PTC16 = 0x2040, + PTC17 = 0x2044, + PTC18 = 0x2048, + PTC19 = 0x204c, + PTC20 = 0x2050, + PTC21 = 0x2054, + PTC22 = 0x2058, + PTC23 = 0x205c, + PTC24 = 0x2060, + PTC25 = 0x2064, + PTC26 = 0x2068, + PTC27 = 0x206c, + PTC28 = 0x2070, + PTC29 = 0x2074, + PTC30 = 0x2078, + PTC31 = 0x207c, + PTD0 = 0x3000, + PTD1 = 0x3004, + PTD2 = 0x3008, + PTD3 = 0x300c, + PTD4 = 0x3010, + PTD5 = 0x3014, + PTD6 = 0x3018, + PTD7 = 0x301c, + PTD8 = 0x3020, + PTD9 = 0x3024, + PTD10 = 0x3028, + PTD11 = 0x302c, + PTD12 = 0x3030, + PTD13 = 0x3034, + PTD14 = 0x3038, + PTD15 = 0x303c, + PTD16 = 0x3040, + PTD17 = 0x3044, + PTD18 = 0x3048, + PTD19 = 0x304c, + PTD20 = 0x3050, + PTD21 = 0x3054, + PTD22 = 0x3058, + PTD23 = 0x305c, + PTD24 = 0x3060, + PTD25 = 0x3064, + PTD26 = 0x3068, + PTD27 = 0x306c, + PTD28 = 0x3070, + PTD29 = 0x3074, + PTD30 = 0x3078, + PTD31 = 0x307c, + PTE0 = 0x4000, + PTE1 = 0x4004, + PTE2 = 0x4008, + PTE3 = 0x400c, + PTE4 = 0x4010, + PTE5 = 0x4014, + PTE6 = 0x4018, + PTE7 = 0x401c, + PTE8 = 0x4020, + PTE9 = 0x4024, + PTE10 = 0x4028, + PTE11 = 0x402c, + PTE12 = 0x4030, + PTE13 = 0x4034, + PTE14 = 0x4038, + PTE15 = 0x403c, + PTE16 = 0x4040, + PTE17 = 0x4044, + PTE18 = 0x4048, + PTE19 = 0x404c, + PTE20 = 0x4050, + PTE21 = 0x4054, + PTE22 = 0x4058, + PTE23 = 0x405c, + PTE24 = 0x4060, + PTE25 = 0x4064, + PTE26 = 0x4068, + PTE27 = 0x406c, + PTE28 = 0x4070, + PTE29 = 0x4074, + PTE30 = 0x4078, + PTE31 = 0x407c, + + LED_RED = PTE29, + LED_GREEN = PTD5, + + // mbed original LED naming + LED1 = LED_GREEN, + LED2 = LED_RED, + LED3 = LED_GREEN, + LED4 = LED_RED, + + //Push buttons + SW1 = PTC3, + SW3 = PTC12, + + // USB Pins + USBTX = PTA2, + USBRX = PTA1, + + // Arduino Headers + D0 = PTA1, + D1 = PTA2, + D2 = PTD3, + D3 = PTA12, + D4 = PTA4, + D5 = PTA5, + D6 = PTC8, + D7 = PTC9, + D8 = PTA13, + D9 = PTD2, + D10 = PTD4, + D11 = PTD6, + D12 = PTD7, + D13 = PTD5, + D14 = PTE0, + D15 = PTE1, + + A0 = PTB0, + A1 = PTB1, + A2 = PTB2, + A3 = PTB3, + A4 = PTC2, + A5 = PTC1, + + I2C_SCL = D15, + I2C_SDA = D14, + + TSI_ELEC0 = PTB16, + TSI_ELEC1 = PTB17, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +/* Pull modes for input pins */ +typedef enum { + PullNone = 0, + PullDown = 2, + PullUp = 3, + PullDefault = PullUp +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL46Z/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,58 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 1 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 1 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_RED 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL46Z/TARGET_Freescale/TARGET_KLXX/clk_freqs.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,118 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_CLK_FREQS_H +#define MBED_CLK_FREQS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "PeripheralPins.h" + +//Get the peripheral bus clock frequency +static inline uint32_t bus_frequency(void) { + return SystemCoreClock / (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1); +} + +//Get external oscillator (crystal) frequency +static uint32_t extosc_frequency(void) { + uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); + + if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(2)) //MCG clock = external reference clock + return MCGClock; + + uint32_t divider, multiplier; + #ifdef MCG_C5_PLLCLKEN0_MASK //PLL available + if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(0)) { //PLL/FLL is selected + if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected + #endif + if ((MCG->S & MCG_S_IREFST_MASK) == 0x0u) { //FLL uses external reference + divider = (uint8_t)(1u << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT)); + if ((MCG->C2 & MCG_C2_RANGE0_MASK) != 0x0u) + divider <<= 5u; + /* Select correct multiplier to calculate the MCG output clock */ + switch (MCG->C4 & (MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) { + case 0x0u: + multiplier = 640u; + break; + case 0x20u: + multiplier = 1280u; + break; + case 0x40u: + multiplier = 1920u; + break; + case 0x60u: + multiplier = 2560u; + break; + case 0x80u: + multiplier = 732u; + break; + case 0xA0u: + multiplier = 1464u; + break; + case 0xC0u: + multiplier = 2197u; + break; + case 0xE0u: + default: + multiplier = 2929u; + break; + } + + return MCGClock * divider / multiplier; + } + #ifdef MCG_C5_PLLCLKEN0_MASK + } else { //PLL is selected + divider = (1u + (MCG->C5 & MCG_C5_PRDIV0_MASK)); + multiplier = ((MCG->C6 & MCG_C6_VDIV0_MASK) + 24u); + return MCGClock * divider / multiplier; + } + } + #endif + + //In all other cases either there is no crystal or we cannot determine it + //For example when the FLL is running on the internal reference, and there is also an + //external crystal. However these are unlikely situations + return 0; +} + +//Get MCG PLL/2 or FLL frequency, depending on which one is active, sets PLLFLLSEL bit +static uint32_t mcgpllfll_frequency(void) { + if ((MCG->C1 & MCG_C1_CLKS_MASK) != MCG_C1_CLKS(0)) //PLL/FLL is not selected + return 0; + + uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); + #ifdef MCG_C5_PLLCLKEN0_MASK + if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected + SIM->SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is FLL output + #endif + return MCGClock; + #ifdef MCG_C5_PLLCLKEN0_MASK + } else { //PLL is selected + SIM->SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is PLL output + return (MCGClock >> 1); + } + #endif + + //It is possible the SystemCoreClock isn't running on the PLL, and the PLL is still active + //for the peripherals, this is however an unlikely setup +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL46Z/TARGET_Freescale/TARGET_KLXX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL46Z/TARGET_Freescale/TARGET_KLXX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,79 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef TARGET_KL46Z +#define UARTLP_Type UART0_Type +#endif + +struct gpio_irq_s { + uint32_t port; + uint32_t pin; + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_out; + __I uint32_t *reg_in; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + __IO uint32_t *MOD; + __IO uint32_t *CNT; + __IO uint32_t *CnV; +}; + +struct serial_s { + UARTLP_Type *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct dac_s { + DACName dac; +}; + +struct i2c_s { + I2C_Type *i2c; +}; + +struct spi_s { + SPI_Type *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_KL46Z/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_KL46Z/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_KL46Z/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_KL46Z/TOOLCHAIN_ARM_STD/mbed_overrides.o has changed
Binary file TARGET_KL46Z/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_KL46Z/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_KL46Z/TOOLCHAIN_ARM_STD/system_MKL46Z4.o has changed
Binary file TARGET_KL46Z/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_KL46Z/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_KL46Z/TOOLCHAIN_GCC_ARM/mbed_overrides.o has changed
Binary file TARGET_KL46Z/TOOLCHAIN_GCC_ARM/retarget.o has changed
--- a/TARGET_KL46Z/clk_freqs.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_CLK_FREQS_H -#define MBED_CLK_FREQS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "PeripheralPins.h" - -//Get the peripheral bus clock frequency -static inline uint32_t bus_frequency(void) { - return SystemCoreClock / (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1); -} - -//Get external oscillator (crystal) frequency -static uint32_t extosc_frequency(void) { - uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); - - if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(2)) //MCG clock = external reference clock - return MCGClock; - - uint32_t divider, multiplier; - #ifdef MCG_C5_PLLCLKEN0_MASK //PLL available - if ((MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(0)) { //PLL/FLL is selected - if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected - #endif - if ((MCG->S & MCG_S_IREFST_MASK) == 0x0u) { //FLL uses external reference - divider = (uint8_t)(1u << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT)); - if ((MCG->C2 & MCG_C2_RANGE0_MASK) != 0x0u) - divider <<= 5u; - /* Select correct multiplier to calculate the MCG output clock */ - switch (MCG->C4 & (MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) { - case 0x0u: - multiplier = 640u; - break; - case 0x20u: - multiplier = 1280u; - break; - case 0x40u: - multiplier = 1920u; - break; - case 0x60u: - multiplier = 2560u; - break; - case 0x80u: - multiplier = 732u; - break; - case 0xA0u: - multiplier = 1464u; - break; - case 0xC0u: - multiplier = 2197u; - break; - case 0xE0u: - default: - multiplier = 2929u; - break; - } - - return MCGClock * divider / multiplier; - } - #ifdef MCG_C5_PLLCLKEN0_MASK - } else { //PLL is selected - divider = (1u + (MCG->C5 & MCG_C5_PRDIV0_MASK)); - multiplier = ((MCG->C6 & MCG_C6_VDIV0_MASK) + 24u); - return MCGClock * divider / multiplier; - } - } - #endif - - //In all other cases either there is no crystal or we cannot determine it - //For example when the FLL is running on the internal reference, and there is also an - //external crystal. However these are unlikely situations - return 0; -} - -//Get MCG PLL/2 or FLL frequency, depending on which one is active, sets PLLFLLSEL bit -static uint32_t mcgpllfll_frequency(void) { - if ((MCG->C1 & MCG_C1_CLKS_MASK) != MCG_C1_CLKS(0)) //PLL/FLL is not selected - return 0; - - uint32_t MCGClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); - #ifdef MCG_C5_PLLCLKEN0_MASK - if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) { //FLL is selected - SIM->SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is FLL output - #endif - return MCGClock; - #ifdef MCG_C5_PLLCLKEN0_MASK - } else { //PLL is selected - SIM->SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK; //MCG peripheral clock is PLL output - return (MCGClock >> 1); - } - #endif - - //It is possible the SystemCoreClock isn't running on the PLL, and the PLL is still active - //for the peripherals, this is however an unlikely setup -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL46Z/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 1 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 1 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 1 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 24 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -#define DEVICE_ERROR_RED 1 - -#include "objects.h" - -#endif
--- a/TARGET_KL46Z/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_KL46Z/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef TARGET_KL46Z -#define UARTLP_Type UART0_Type -#endif - -struct gpio_irq_s { - uint32_t port; - uint32_t pin; - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_out; - __I uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - __IO uint32_t *MOD; - __IO uint32_t *CNT; - __IO uint32_t *CnV; -}; - -struct serial_s { - UARTLP_Type *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct dac_s { - DACName dac; -}; - -struct i2c_s { - I2C_Type *i2c; -}; - -struct spi_s { - SPI_Type *spi; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1114/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)LPC_UART_BASE -} UARTName; - -typedef enum { - I2C_0 = (int)LPC_I2C_BASE -} I2CName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7 -} ADCName; - -typedef enum { - SPI_0 = (int)LPC_SSP0_BASE, - SPI_1 = (int)LPC_SSP1_BASE -} SPIName; - -typedef enum { - PWM_1 = 0, - PWM_2, - PWM_3, - PWM_4, - PWM_5 -} PWMName; - -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1114/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,234 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 12 -#define PIN_SHIFT 8 - -typedef enum { - // LPC1114 Pin Names (PORT[15:12] + PIN[11:8] + IOCON offset[7:0]) - - P0_0 = (0 << PORT_SHIFT) | (0 << PIN_SHIFT) | 0x0c, - P0_1 = (0 << PORT_SHIFT) | (1 << PIN_SHIFT) | 0x10, - P0_2 = (0 << PORT_SHIFT) | (2 << PIN_SHIFT) | 0x1c, - P0_3 = (0 << PORT_SHIFT) | (3 << PIN_SHIFT) | 0x2c, - P0_4 = (0 << PORT_SHIFT) | (4 << PIN_SHIFT) | 0x30, - P0_5 = (0 << PORT_SHIFT) | (5 << PIN_SHIFT) | 0x34, - P0_6 = (0 << PORT_SHIFT) | (6 << PIN_SHIFT) | 0x4c, - P0_7 = (0 << PORT_SHIFT) | (7 << PIN_SHIFT) | 0x50, - P0_8 = (0 << PORT_SHIFT) | (8 << PIN_SHIFT) | 0x60, - P0_9 = (0 << PORT_SHIFT) | (9 << PIN_SHIFT) | 0x64, - P0_11 = (0 << PORT_SHIFT) | (11 << PIN_SHIFT) | 0x74, - - P1_0 = (1 << PORT_SHIFT) | (0 << PIN_SHIFT) | 0x78, - P1_1 = (1 << PORT_SHIFT) | (1 << PIN_SHIFT) | 0x7c, - P1_2 = (1 << PORT_SHIFT) | (2 << PIN_SHIFT) | 0x80, - P1_4 = (1 << PORT_SHIFT) | (4 << PIN_SHIFT) | 0x94, - P1_5 = (1 << PORT_SHIFT) | (5 << PIN_SHIFT) | 0xa0, - P1_6 = (1 << PORT_SHIFT) | (6 << PIN_SHIFT) | 0xa4, - P1_7 = (1 << PORT_SHIFT) | (7 << PIN_SHIFT) | 0xa8, - P1_8 = (1 << PORT_SHIFT) | (8 << PIN_SHIFT) | 0x14, - P1_9 = (1 << PORT_SHIFT) | (9 << PIN_SHIFT) | 0x38, - P1_10 = (1 << PORT_SHIFT) | (10 << PIN_SHIFT) | 0x6c, - P1_11 = (1 << PORT_SHIFT) | (11 << PIN_SHIFT) | 0x98, - - P2_0 = (2 << PORT_SHIFT) | (0 << PIN_SHIFT) | 0x08, - P2_1 = (2 << PORT_SHIFT) | (1 << PIN_SHIFT) | 0x28, - P2_2 = (2 << PORT_SHIFT) | (2 << PIN_SHIFT) | 0x5c, - P2_3 = (2 << PORT_SHIFT) | (3 << PIN_SHIFT) | 0x8c, - P2_4 = (2 << PORT_SHIFT) | (4 << PIN_SHIFT) | 0x40, - P2_5 = (2 << PORT_SHIFT) | (5 << PIN_SHIFT) | 0x44, - P2_6 = (2 << PORT_SHIFT) | (6 << PIN_SHIFT) | 0x00, - P2_7 = (2 << PORT_SHIFT) | (7 << PIN_SHIFT) | 0x20, - P2_8 = (2 << PORT_SHIFT) | (8 << PIN_SHIFT) | 0x24, - P2_9 = (2 << PORT_SHIFT) | (9 << PIN_SHIFT) | 0x54, - P2_10 = (2 << PORT_SHIFT) | (10 << PIN_SHIFT) | 0x58, - P2_11 = (2 << PORT_SHIFT) | (11 << PIN_SHIFT) | 0x70, - - P3_0 = (3 << PORT_SHIFT) | (0 << PIN_SHIFT) | 0x84, - P3_1 = (3 << PORT_SHIFT) | (1 << PIN_SHIFT) | 0x88, - P3_2 = (3 << PORT_SHIFT) | (2 << PIN_SHIFT) | 0x9c, - P3_3 = (3 << PORT_SHIFT) | (3 << PIN_SHIFT) | 0xac, - P3_4 = (3 << PORT_SHIFT) | (4 << PIN_SHIFT) | 0x3c, - P3_5 = (3 << PORT_SHIFT) | (5 << PIN_SHIFT) | 0x48, - - // mbed DIP Pin Names (CQ board) - p4 = P0_0, - p5 = P0_9, - p6 = P0_8, - p7 = P0_6, - p8 = P1_5, - p9 = P1_7, - p10 = P1_6, - p11 = P0_7, - p12 = P1_0, - p13 = P1_1, - p14 = P1_2, - p15 = P0_11, - p16 = P1_0, - p17 = P1_1, - p18 = P1_2, - p20 = P1_4, - p22 = P0_2, - p23 = P0_11, - p24 = P0_2, - p25 = P1_8, - p26 = P1_9, - p27 = P0_4, - p28 = P0_5, - p29 = P0_3, - p30 = P0_1, - - // Other mbed Pin Names - LED1 = P1_5, - LED2 = P0_7, - LED3 = P1_5, - LED4 = P0_7, - - USBTX = P1_7, - USBRX = P1_6, - - // mbed DIP Pin Names (LPCXpresso LPC1114) - xp4 = P0_0, - xp5 = P0_9, - xp6 = P0_8, - xp7 = P2_11, - xp8 = P0_2, - xp9 = P1_7, - xp10 = P1_6, - xp11 = P0_7, - xp12 = P2_0, - xp13 = P2_1, - xp14 = P2_2, - xp15 = P0_11, - xp16 = P1_0, - xp17 = P1_1, - xp18 = P1_2, - xp20 = P1_4, - xp21 = P1_5, - xp22 = P1_8, - xp23 = P0_6, - xp25 = P3_0, - xp26 = P3_1, - xp27 = P3_2, - - xp29 = P3_3, - xp30 = P2_10, - xp31 = P2_9, - xp32 = P2_8, - xp33 = P2_7, - xp34 = P2_6, - xp35 = P2_5, - xp36 = P2_4, - xp37 = P2_3, - xp38 = P1_11, - xp39 = P1_10, - xp40 = P1_9, - xp41 = P0_4, - xp42 = P0_5, - xp43 = P0_3, - xp44 = P0_1, - - // Other mbed Pin Names - xLED1 = P0_7, - - // DIP Package Names - - dp1 = P0_8, - dp2 = P0_9, - dp4 = P0_11, - dp5 = P0_5, - dp6 = P0_6, - dp9 = P1_0, - dp10 = P1_1, - dp11 = P1_2, - dp13 = P1_4, - dp14 = P1_5, - dp15 = P1_6, - dp16 = P1_7, - dp17 = P1_8, - dp18 = P1_9, - dp23 = P0_0, - dp24 = P0_1, - dp25 = P0_2, - dp26 = P0_3, - dp27 = P0_4, - dp28 = P0_7, - - dip1 = P0_8, - dip2 = P0_9, - dip4 = P0_11, - dip5 = P0_5, - dip6 = P0_6, - dip9 = P1_0, - dip10 = P1_1, - dip11 = P1_2, - dip13 = P1_4, - dip14 = P1_5, - dip15 = P1_6, - dip16 = P1_7, - dip17 = P1_8, - dip18 = P1_9, - dip23 = P0_0, - dip24 = P0_1, - dip25 = P0_2, - dip26 = P0_3, - dip27 = P0_4, - dip28 = P0_7, - - - - // Not connected - NC = (int)0xFFFFFFFF, -} PinName; - -typedef enum { - CHANNEL0 = WAKEUP0_IRQn, - CHANNEL1 = WAKEUP1_IRQn, - CHANNEL2 = WAKEUP2_IRQn, - CHANNEL3 = WAKEUP3_IRQn, - CHANNEL4 = WAKEUP4_IRQn, - CHANNEL5 = WAKEUP5_IRQn, - CHANNEL6 = WAKEUP6_IRQn, - CHANNEL7 = WAKEUP7_IRQn -} Channel; - -typedef enum { - PullUp = 2, - PullDown = 1, - PullNone = 0, - Repeater = 3, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1114/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1, - Port2 = 2, - Port3 = 3 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1114/TARGET_NXP/TARGET_LPC11XX_11CXX/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,65 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)LPC_UART_BASE +} UARTName; + +typedef enum { + I2C_0 = (int)LPC_I2C_BASE +} I2CName; + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7 +} ADCName; + +typedef enum { + SPI_0 = (int)LPC_SSP0_BASE, + SPI_1 = (int)LPC_SSP1_BASE +} SPIName; + +typedef enum { + PWM_1 = 0, + PWM_2, + PWM_3, + PWM_4, + PWM_5 +} PWMName; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1114/TARGET_NXP/TARGET_LPC11XX_11CXX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,33 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1, + Port2 = 2, + Port3 = 3 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1114/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11XX/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,234 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 12 +#define PIN_SHIFT 8 + +typedef enum { + // LPC1114 Pin Names (PORT[15:12] + PIN[11:8] + IOCON offset[7:0]) + + P0_0 = (0 << PORT_SHIFT) | (0 << PIN_SHIFT) | 0x0c, + P0_1 = (0 << PORT_SHIFT) | (1 << PIN_SHIFT) | 0x10, + P0_2 = (0 << PORT_SHIFT) | (2 << PIN_SHIFT) | 0x1c, + P0_3 = (0 << PORT_SHIFT) | (3 << PIN_SHIFT) | 0x2c, + P0_4 = (0 << PORT_SHIFT) | (4 << PIN_SHIFT) | 0x30, + P0_5 = (0 << PORT_SHIFT) | (5 << PIN_SHIFT) | 0x34, + P0_6 = (0 << PORT_SHIFT) | (6 << PIN_SHIFT) | 0x4c, + P0_7 = (0 << PORT_SHIFT) | (7 << PIN_SHIFT) | 0x50, + P0_8 = (0 << PORT_SHIFT) | (8 << PIN_SHIFT) | 0x60, + P0_9 = (0 << PORT_SHIFT) | (9 << PIN_SHIFT) | 0x64, + P0_11 = (0 << PORT_SHIFT) | (11 << PIN_SHIFT) | 0x74, + + P1_0 = (1 << PORT_SHIFT) | (0 << PIN_SHIFT) | 0x78, + P1_1 = (1 << PORT_SHIFT) | (1 << PIN_SHIFT) | 0x7c, + P1_2 = (1 << PORT_SHIFT) | (2 << PIN_SHIFT) | 0x80, + P1_4 = (1 << PORT_SHIFT) | (4 << PIN_SHIFT) | 0x94, + P1_5 = (1 << PORT_SHIFT) | (5 << PIN_SHIFT) | 0xa0, + P1_6 = (1 << PORT_SHIFT) | (6 << PIN_SHIFT) | 0xa4, + P1_7 = (1 << PORT_SHIFT) | (7 << PIN_SHIFT) | 0xa8, + P1_8 = (1 << PORT_SHIFT) | (8 << PIN_SHIFT) | 0x14, + P1_9 = (1 << PORT_SHIFT) | (9 << PIN_SHIFT) | 0x38, + P1_10 = (1 << PORT_SHIFT) | (10 << PIN_SHIFT) | 0x6c, + P1_11 = (1 << PORT_SHIFT) | (11 << PIN_SHIFT) | 0x98, + + P2_0 = (2 << PORT_SHIFT) | (0 << PIN_SHIFT) | 0x08, + P2_1 = (2 << PORT_SHIFT) | (1 << PIN_SHIFT) | 0x28, + P2_2 = (2 << PORT_SHIFT) | (2 << PIN_SHIFT) | 0x5c, + P2_3 = (2 << PORT_SHIFT) | (3 << PIN_SHIFT) | 0x8c, + P2_4 = (2 << PORT_SHIFT) | (4 << PIN_SHIFT) | 0x40, + P2_5 = (2 << PORT_SHIFT) | (5 << PIN_SHIFT) | 0x44, + P2_6 = (2 << PORT_SHIFT) | (6 << PIN_SHIFT) | 0x00, + P2_7 = (2 << PORT_SHIFT) | (7 << PIN_SHIFT) | 0x20, + P2_8 = (2 << PORT_SHIFT) | (8 << PIN_SHIFT) | 0x24, + P2_9 = (2 << PORT_SHIFT) | (9 << PIN_SHIFT) | 0x54, + P2_10 = (2 << PORT_SHIFT) | (10 << PIN_SHIFT) | 0x58, + P2_11 = (2 << PORT_SHIFT) | (11 << PIN_SHIFT) | 0x70, + + P3_0 = (3 << PORT_SHIFT) | (0 << PIN_SHIFT) | 0x84, + P3_1 = (3 << PORT_SHIFT) | (1 << PIN_SHIFT) | 0x88, + P3_2 = (3 << PORT_SHIFT) | (2 << PIN_SHIFT) | 0x9c, + P3_3 = (3 << PORT_SHIFT) | (3 << PIN_SHIFT) | 0xac, + P3_4 = (3 << PORT_SHIFT) | (4 << PIN_SHIFT) | 0x3c, + P3_5 = (3 << PORT_SHIFT) | (5 << PIN_SHIFT) | 0x48, + + // mbed DIP Pin Names (CQ board) + p4 = P0_0, + p5 = P0_9, + p6 = P0_8, + p7 = P0_6, + p8 = P1_5, + p9 = P1_7, + p10 = P1_6, + p11 = P0_7, + p12 = P1_0, + p13 = P1_1, + p14 = P1_2, + p15 = P0_11, + p16 = P1_0, + p17 = P1_1, + p18 = P1_2, + p20 = P1_4, + p22 = P0_2, + p23 = P0_11, + p24 = P0_2, + p25 = P1_8, + p26 = P1_9, + p27 = P0_4, + p28 = P0_5, + p29 = P0_3, + p30 = P0_1, + + // Other mbed Pin Names + LED1 = P1_5, + LED2 = P0_7, + LED3 = P1_5, + LED4 = P0_7, + + USBTX = P1_7, + USBRX = P1_6, + + // mbed DIP Pin Names (LPCXpresso LPC1114) + xp4 = P0_0, + xp5 = P0_9, + xp6 = P0_8, + xp7 = P2_11, + xp8 = P0_2, + xp9 = P1_7, + xp10 = P1_6, + xp11 = P0_7, + xp12 = P2_0, + xp13 = P2_1, + xp14 = P2_2, + xp15 = P0_11, + xp16 = P1_0, + xp17 = P1_1, + xp18 = P1_2, + xp20 = P1_4, + xp21 = P1_5, + xp22 = P1_8, + xp23 = P0_6, + xp25 = P3_0, + xp26 = P3_1, + xp27 = P3_2, + + xp29 = P3_3, + xp30 = P2_10, + xp31 = P2_9, + xp32 = P2_8, + xp33 = P2_7, + xp34 = P2_6, + xp35 = P2_5, + xp36 = P2_4, + xp37 = P2_3, + xp38 = P1_11, + xp39 = P1_10, + xp40 = P1_9, + xp41 = P0_4, + xp42 = P0_5, + xp43 = P0_3, + xp44 = P0_1, + + // Other mbed Pin Names + xLED1 = P0_7, + + // DIP Package Names + + dp1 = P0_8, + dp2 = P0_9, + dp4 = P0_11, + dp5 = P0_5, + dp6 = P0_6, + dp9 = P1_0, + dp10 = P1_1, + dp11 = P1_2, + dp13 = P1_4, + dp14 = P1_5, + dp15 = P1_6, + dp16 = P1_7, + dp17 = P1_8, + dp18 = P1_9, + dp23 = P0_0, + dp24 = P0_1, + dp25 = P0_2, + dp26 = P0_3, + dp27 = P0_4, + dp28 = P0_7, + + dip1 = P0_8, + dip2 = P0_9, + dip4 = P0_11, + dip5 = P0_5, + dip6 = P0_6, + dip9 = P1_0, + dip10 = P1_1, + dip11 = P1_2, + dip13 = P1_4, + dip14 = P1_5, + dip15 = P1_6, + dip16 = P1_7, + dip17 = P1_8, + dip18 = P1_9, + dip23 = P0_0, + dip24 = P0_1, + dip25 = P0_2, + dip26 = P0_3, + dip27 = P0_4, + dip28 = P0_7, + + + + // Not connected + NC = (int)0xFFFFFFFF, +} PinName; + +typedef enum { + CHANNEL0 = WAKEUP0_IRQn, + CHANNEL1 = WAKEUP1_IRQn, + CHANNEL2 = WAKEUP2_IRQn, + CHANNEL3 = WAKEUP3_IRQn, + CHANNEL4 = WAKEUP4_IRQn, + CHANNEL5 = WAKEUP5_IRQn, + CHANNEL6 = WAKEUP6_IRQn, + CHANNEL7 = WAKEUP7_IRQn +} Channel; + +typedef enum { + PullUp = 2, + PullDown = 1, + PullNone = 0, + Repeater = 3, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1114/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11XX/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,59 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 0 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 1 +#define DEVICE_LOCALFILESYSTEM 1 +#define DEVICE_ID_LENGTH 32 +#define DEVICE_MAC_OFFSET 20 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_PATTERN 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1114/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11XX/reserved_pins.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,8 @@ +// List of reserved pins for LPC1114 + +#ifndef RESERVED_PINS_H +#define RESERVED_PINS_H + +#define TARGET_RESERVED_PINS {P0_0, P0_11, P1_0, P1_1, P1_2} + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1114/TARGET_NXP/TARGET_LPC11XX_11CXX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,46 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + __I uint32_t *reg_mask_read; + __IO uint32_t *reg_dir; + __IO uint32_t *reg_write; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + uint32_t pin_number = ((obj->pin & 0x0F00) >> 8); + if (value) + *obj->reg_write |= (1 << pin_number); + else + *obj->reg_write &= ~(1 << pin_number); +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_mask_read) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1114/TARGET_NXP/TARGET_LPC11XX_11CXX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,74 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t ch; + PinName pin; + __I uint32_t *reg_mask_read; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_data; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + PWMName pwm; +}; + +struct serial_s { + LPC_UART_TypeDef *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct i2c_s { + LPC_I2C_TypeDef *i2c; +}; + +struct spi_s { + LPC_SSP_TypeDef *spi; +}; + +#if DEVICE_CAN +struct can_s { + int index; +}; +#endif + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC1114/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_LPC1114/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_LPC1114/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_LPC1114/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_LPC1114/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_LPC1114/TOOLCHAIN_ARM_MICRO/system_LPC11xx.o has changed
Binary file TARGET_LPC1114/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_LPC1114/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_LPC1114/TOOLCHAIN_GCC_ARM/retarget.o has changed
--- a/TARGET_LPC1114/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 0 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 0 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 1 -#define DEVICE_LOCALFILESYSTEM 1 -#define DEVICE_ID_LENGTH 32 -#define DEVICE_MAC_OFFSET 20 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -#define DEVICE_ERROR_PATTERN 1 - -#include "objects.h" - -#endif
--- a/TARGET_LPC1114/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - __I uint32_t *reg_mask_read; - __IO uint32_t *reg_dir; - __IO uint32_t *reg_write; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - uint32_t pin_number = ((obj->pin & 0x0F00) >> 8); - if (value) - *obj->reg_write |= (1 << pin_number); - else - *obj->reg_write &= ~(1 << pin_number); -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_mask_read) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1114/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t ch; - PinName pin; - __I uint32_t *reg_mask_read; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_data; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - PWMName pwm; -}; - -struct serial_s { - LPC_UART_TypeDef *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct i2c_s { - LPC_I2C_TypeDef *i2c; -}; - -struct spi_s { - LPC_SSP_TypeDef *spi; -}; - -#if DEVICE_CAN -struct can_s { - int index; -}; -#endif - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1114/reserved_pins.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -// List of reserved pins for LPC1114 - -#ifndef RESERVED_PINS_H -#define RESERVED_PINS_H - -#define TARGET_RESERVED_PINS {P0_0, P0_11, P1_0, P1_1, P1_2} - -#endif
--- a/TARGET_LPC11U24/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)LPC_USART_BASE -} UARTName; - -typedef enum { - I2C_0 = (int)LPC_I2C_BASE -} I2CName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7 -} ADCName; - -typedef enum { - SPI_0 = (int)LPC_SSP0_BASE, - SPI_1 = (int)LPC_SSP1_BASE -} SPIName; - -typedef enum { - PWM_1 = 0, - PWM_2, - PWM_3, - PWM_4, - PWM_5, - PWM_6, - PWM_7, - PWM_8, - PWM_9, - PWM_10, - PWM_11 -} PWMName; - -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -// Default peripherals -#define MBED_SPI0 p5, p6, p7, p8 -#define MBED_SPI1 p11, p12, p13, p14 - -#define MBED_UART0 p9, p10 -#define MBED_UARTUSB USBTX, USBRX - -#define MBED_I2C0 p28, p27 - -#define MBED_ANALOGIN0 p15 -#define MBED_ANALOGIN1 p16 -#define MBED_ANALOGIN2 p17 -#define MBED_ANALOGIN3 p18 -#define MBED_ANALOGIN4 p19 -#define MBED_ANALOGIN5 p20 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U24/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,189 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 5 - -typedef enum { - // LPC11U Pin Names - P0_0 = 0, - P0_1 = 1, - P0_2 = 2, - P0_3 = 3, - P0_4 = 4, - P0_5 = 5, - P0_6 = 6, - P0_7 = 7, - P0_8 = 8, - P0_9 = 9, - P0_10 = 10, - P0_11 = 11, - P0_12 = 12, - P0_13 = 13, - P0_14 = 14, - P0_15 = 15, - P0_16 = 16, - P0_17 = 17, - P0_18 = 18, - P0_19 = 19, - P0_20 = 20, - P0_21 = 21, - P0_22 = 22, - P0_23 = 23, - P0_24 = 24, - P0_25 = 25, - P0_26 = 26, - P0_27 = 27, - - P1_0 = 32, - P1_1 = 33, - P1_2 = 34, - P1_3 = 35, - P1_4 = 36, - P1_5 = 37, - P1_6 = 38, - P1_7 = 39, - P1_8 = 40, - P1_9 = 41, - P1_10 = 42, - P1_11 = 43, - P1_12 = 44, - P1_13 = 45, - P1_14 = 46, - P1_15 = 47, - P1_16 = 48, - P1_17 = 49, - P1_18 = 50, - P1_19 = 51, - P1_20 = 52, - P1_21 = 53, - P1_22 = 54, - P1_23 = 55, - P1_24 = 56, - P1_25 = 57, - P1_26 = 58, - P1_27 = 59, - P1_28 = 60, - P1_29 = 61, - - P1_31 = 63, - - // mbed DIP Pin Names - p5 = P0_9, - p6 = P0_8, - p7 = P1_29, - p8 = P0_2, - p9 = P1_27, - p10 = P1_26, - p11 = P1_22, - p12 = P1_21, - p13 = P1_20, - p14 = P1_23, - p15 = P0_11, - p16 = P0_12, - p17 = P0_13, - p18 = P0_14, - p19 = P0_16, - p20 = P0_22, - p21 = P0_7, - p22 = P0_17, - p23 = P1_17, - p24 = P1_18, - p25 = P1_24, - p26 = P1_25, - p27 = P0_4, - p28 = P0_5, - p29 = P1_5, - p30 = P1_2, - - p33 = P0_3, - p34 = P1_15, - p35 = P0_20, - p36 = P0_21, - - // Other mbed Pin Names - LED1 = P1_8, - LED2 = P1_9, - LED3 = P1_10, - LED4 = P1_11, - - USBTX = P0_19, - USBRX = P0_18, - - // for Arch V1.1 - D0 = P0_18, - D1 = P0_19, - D2 = P0_17, - D3 = P1_17, - D4 = P1_18, - D5 = P1_24, - D6 = P1_25, - D7 = P1_5, - D8 = P1_26, - D9 = P1_27, - D10 = P0_2, - D11 = P0_9, // P1_29 for Arch V1.0 - D12 = P0_8, - D13 = P1_29, // P0_9 for Arch V1.0 - - A0 = P0_11, - A1 = P0_12, - A2 = P0_13, - A3 = P0_14, - A4 = P0_16, - A5 = P0_22, - - // Not connected - NC = (int)0xFFFFFFFF, -} PinName; - -typedef enum { - CHANNEL0 = FLEX_INT0_IRQn, - CHANNEL1 = FLEX_INT1_IRQn, - CHANNEL2 = FLEX_INT2_IRQn, - CHANNEL3 = FLEX_INT3_IRQn, - CHANNEL4 = FLEX_INT4_IRQn, - CHANNEL5 = FLEX_INT5_IRQn, - CHANNEL6 = FLEX_INT6_IRQn, - CHANNEL7 = FLEX_INT7_IRQn -} Channel; - -typedef enum { - PullUp = 2, - PullDown = 1, - PullNone = 0, - Repeater = 3, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U24/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U24/TARGET_NXP/TARGET_LPC11UXX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,31 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U24/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U24_401/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,87 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)LPC_USART_BASE +} UARTName; + +typedef enum { + I2C_0 = (int)LPC_I2C_BASE +} I2CName; + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7 +} ADCName; + +typedef enum { + SPI_0 = (int)LPC_SSP0_BASE, + SPI_1 = (int)LPC_SSP1_BASE +} SPIName; + +typedef enum { + PWM_1 = 0, + PWM_2, + PWM_3, + PWM_4, + PWM_5, + PWM_6, + PWM_7, + PWM_8, + PWM_9, + PWM_10, + PWM_11 +} PWMName; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +// Default peripherals +#define MBED_SPI0 p5, p6, p7, p8 +#define MBED_SPI1 p11, p12, p13, p14 + +#define MBED_UART0 p9, p10 +#define MBED_UARTUSB USBTX, USBRX + +#define MBED_I2C0 p28, p27 + +#define MBED_ANALOGIN0 p15 +#define MBED_ANALOGIN1 p16 +#define MBED_ANALOGIN2 p17 +#define MBED_ANALOGIN3 p18 +#define MBED_ANALOGIN4 p19 +#define MBED_ANALOGIN5 p20 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U24/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U24_401/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,189 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 5 + +typedef enum { + // LPC11U Pin Names + P0_0 = 0, + P0_1 = 1, + P0_2 = 2, + P0_3 = 3, + P0_4 = 4, + P0_5 = 5, + P0_6 = 6, + P0_7 = 7, + P0_8 = 8, + P0_9 = 9, + P0_10 = 10, + P0_11 = 11, + P0_12 = 12, + P0_13 = 13, + P0_14 = 14, + P0_15 = 15, + P0_16 = 16, + P0_17 = 17, + P0_18 = 18, + P0_19 = 19, + P0_20 = 20, + P0_21 = 21, + P0_22 = 22, + P0_23 = 23, + P0_24 = 24, + P0_25 = 25, + P0_26 = 26, + P0_27 = 27, + + P1_0 = 32, + P1_1 = 33, + P1_2 = 34, + P1_3 = 35, + P1_4 = 36, + P1_5 = 37, + P1_6 = 38, + P1_7 = 39, + P1_8 = 40, + P1_9 = 41, + P1_10 = 42, + P1_11 = 43, + P1_12 = 44, + P1_13 = 45, + P1_14 = 46, + P1_15 = 47, + P1_16 = 48, + P1_17 = 49, + P1_18 = 50, + P1_19 = 51, + P1_20 = 52, + P1_21 = 53, + P1_22 = 54, + P1_23 = 55, + P1_24 = 56, + P1_25 = 57, + P1_26 = 58, + P1_27 = 59, + P1_28 = 60, + P1_29 = 61, + + P1_31 = 63, + + // mbed DIP Pin Names + p5 = P0_9, + p6 = P0_8, + p7 = P1_29, + p8 = P0_2, + p9 = P1_27, + p10 = P1_26, + p11 = P1_22, + p12 = P1_21, + p13 = P1_20, + p14 = P1_23, + p15 = P0_11, + p16 = P0_12, + p17 = P0_13, + p18 = P0_14, + p19 = P0_16, + p20 = P0_22, + p21 = P0_7, + p22 = P0_17, + p23 = P1_17, + p24 = P1_18, + p25 = P1_24, + p26 = P1_25, + p27 = P0_4, + p28 = P0_5, + p29 = P1_5, + p30 = P1_2, + + p33 = P0_3, + p34 = P1_15, + p35 = P0_20, + p36 = P0_21, + + // Other mbed Pin Names + LED1 = P1_8, + LED2 = P1_9, + LED3 = P1_10, + LED4 = P1_11, + + USBTX = P0_19, + USBRX = P0_18, + + // for Arch V1.1 + D0 = P0_18, + D1 = P0_19, + D2 = P0_17, + D3 = P1_17, + D4 = P1_18, + D5 = P1_24, + D6 = P1_25, + D7 = P1_5, + D8 = P1_26, + D9 = P1_27, + D10 = P0_2, + D11 = P0_9, // P1_29 for Arch V1.0 + D12 = P0_8, + D13 = P1_29, // P0_9 for Arch V1.0 + + A0 = P0_11, + A1 = P0_12, + A2 = P0_13, + A3 = P0_14, + A4 = P0_16, + A5 = P0_22, + + // Not connected + NC = (int)0xFFFFFFFF, +} PinName; + +typedef enum { + CHANNEL0 = FLEX_INT0_IRQn, + CHANNEL1 = FLEX_INT1_IRQn, + CHANNEL2 = FLEX_INT2_IRQn, + CHANNEL3 = FLEX_INT3_IRQn, + CHANNEL4 = FLEX_INT4_IRQn, + CHANNEL5 = FLEX_INT5_IRQn, + CHANNEL6 = FLEX_INT6_IRQn, + CHANNEL7 = FLEX_INT7_IRQn +} Channel; + +typedef enum { + PullUp = 2, + PullDown = 1, + PullNone = 0, + Repeater = 3, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U24/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U24_401/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,59 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 0 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 1 +#define DEVICE_LOCALFILESYSTEM 1 +#define DEVICE_ID_LENGTH 32 +#define DEVICE_MAC_OFFSET 20 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_PATTERN 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U24/TARGET_NXP/TARGET_LPC11UXX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U24/TARGET_NXP/TARGET_LPC11UXX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,66 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_mpin; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + PWMName pwm; +}; + +struct serial_s { + LPC_USART_Type *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct i2c_s { + LPC_I2C_Type *i2c; +}; + +struct spi_s { + LPC_SSPx_Type *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_MICRO/system_LPC11Uxx.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_ARM_STD/system_LPC11Uxx.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_LPC11U24/TOOLCHAIN_GCC_ARM/retarget.o has changed
--- a/TARGET_LPC11U24/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 0 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 0 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 1 -#define DEVICE_LOCALFILESYSTEM 1 -#define DEVICE_ID_LENGTH 32 -#define DEVICE_MAC_OFFSET 20 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -#define DEVICE_ERROR_PATTERN 1 - -#include "objects.h" - -#endif
--- a/TARGET_LPC11U24/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U24/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_mpin; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - PWMName pwm; -}; - -struct serial_s { - LPC_USART_Type *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct i2c_s { - LPC_I2C_Type *i2c; -}; - -struct spi_s { - LPC_SSPx_Type *spi; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U35_401/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)LPC_USART_BASE -} UARTName; - -typedef enum { - I2C_0 = (int)LPC_I2C_BASE -} I2CName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7 -} ADCName; - -typedef enum { - SPI_0 = (int)LPC_SSP0_BASE, - SPI_1 = (int)LPC_SSP1_BASE -} SPIName; - -typedef enum { - PWM_1 = 0, - PWM_2, - PWM_3, - PWM_4, - PWM_5, - PWM_6, - PWM_7, - PWM_8, - PWM_9, - PWM_10, - PWM_11 -} PWMName; - -#define STDIO_UART_TX UART_TX -#define STDIO_UART_RX UART_RX -#define STDIO_UART UART_0 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U35_401/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,161 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 5 - -typedef enum { - // LPC11U Pin Names - P0_0 = 0, - P0_1 = 1, - P0_2 = 2, - P0_3 = 3, - P0_4 = 4, - P0_5 = 5, - P0_6 = 6, - P0_7 = 7, - P0_8 = 8, - P0_9 = 9, - P0_10 = 10, - P0_11 = 11, - P0_12 = 12, - P0_13 = 13, - P0_14 = 14, - P0_15 = 15, - P0_16 = 16, - P0_17 = 17, - P0_18 = 18, - P0_19 = 19, - P0_20 = 20, - P0_21 = 21, - P0_22 = 22, - P0_23 = 23, - P0_24 = 24, - P0_25 = 25, - P0_26 = 26, - P0_27 = 27, - - P1_0 = 32, - P1_1 = 33, - P1_2 = 34, - P1_3 = 35, - P1_4 = 36, - P1_5 = 37, - P1_6 = 38, - P1_7 = 39, - P1_8 = 40, - P1_9 = 41, - P1_10 = 42, - P1_11 = 43, - P1_12 = 44, - P1_13 = 45, - P1_14 = 46, - P1_15 = 47, - P1_16 = 48, - P1_17 = 49, - P1_18 = 50, - P1_19 = 51, - P1_20 = 52, - P1_21 = 53, - P1_22 = 54, - P1_23 = 55, - P1_24 = 56, - P1_25 = 57, - P1_26 = 58, - P1_27 = 59, - P1_28 = 60, - P1_29 = 61, - - P1_31 = 63, - - // mbed DIP Pin Names - p3 = P0_7, - p4 = P0_8, - p5 = P0_9, - p6 = P0_10, - p7 = P0_22, - p8 = P0_11, - p9 = P0_12, - p10 = P0_13, - p11 = P0_14, - p12 = P0_15, - p13 = P0_16, - p14 = P0_23, - p15 = P1_15, - p16 = P0_17, - p17 = P0_18, - p18 = P0_19, - p19 = P0_1, - p20 = P1_19, - p21 = P0_0, - p22 = P0_20, - p23 = P0_2, - p24 = P0_3, - p25 = P0_4, - p26 = P0_5, - p27 = P0_21, - p28 = P0_6, - - // Other mbed Pin Names - LED1 = P0_7, - LED2 = P0_7, - LED3 = P0_7, - LED4 = P0_7, - - UART_TX = P0_19, - UART_RX = P0_18, - - // Not connected - NC = (int)0xFFFFFFFF, -} PinName; - -typedef enum { - CHANNEL0 = FLEX_INT0_IRQn, - CHANNEL1 = FLEX_INT1_IRQn, - CHANNEL2 = FLEX_INT2_IRQn, - CHANNEL3 = FLEX_INT3_IRQn, - CHANNEL4 = FLEX_INT4_IRQn, - CHANNEL5 = FLEX_INT5_IRQn, - CHANNEL6 = FLEX_INT6_IRQn, - CHANNEL7 = FLEX_INT7_IRQn -} Channel; - -typedef enum { - PullUp = 2, - PullDown = 1, - PullNone = 0, - Repeater = 3, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U35_401/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_401/TARGET_NXP/TARGET_LPC11UXX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,31 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_401/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U35_401/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,71 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)LPC_USART_BASE +} UARTName; + +typedef enum { + I2C_0 = (int)LPC_I2C_BASE +} I2CName; + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7 +} ADCName; + +typedef enum { + SPI_0 = (int)LPC_SSP0_BASE, + SPI_1 = (int)LPC_SSP1_BASE +} SPIName; + +typedef enum { + PWM_1 = 0, + PWM_2, + PWM_3, + PWM_4, + PWM_5, + PWM_6, + PWM_7, + PWM_8, + PWM_9, + PWM_10, + PWM_11 +} PWMName; + +#define STDIO_UART_TX UART_TX +#define STDIO_UART_RX UART_RX +#define STDIO_UART UART_0 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_401/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U35_401/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,161 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 5 + +typedef enum { + // LPC11U Pin Names + P0_0 = 0, + P0_1 = 1, + P0_2 = 2, + P0_3 = 3, + P0_4 = 4, + P0_5 = 5, + P0_6 = 6, + P0_7 = 7, + P0_8 = 8, + P0_9 = 9, + P0_10 = 10, + P0_11 = 11, + P0_12 = 12, + P0_13 = 13, + P0_14 = 14, + P0_15 = 15, + P0_16 = 16, + P0_17 = 17, + P0_18 = 18, + P0_19 = 19, + P0_20 = 20, + P0_21 = 21, + P0_22 = 22, + P0_23 = 23, + P0_24 = 24, + P0_25 = 25, + P0_26 = 26, + P0_27 = 27, + + P1_0 = 32, + P1_1 = 33, + P1_2 = 34, + P1_3 = 35, + P1_4 = 36, + P1_5 = 37, + P1_6 = 38, + P1_7 = 39, + P1_8 = 40, + P1_9 = 41, + P1_10 = 42, + P1_11 = 43, + P1_12 = 44, + P1_13 = 45, + P1_14 = 46, + P1_15 = 47, + P1_16 = 48, + P1_17 = 49, + P1_18 = 50, + P1_19 = 51, + P1_20 = 52, + P1_21 = 53, + P1_22 = 54, + P1_23 = 55, + P1_24 = 56, + P1_25 = 57, + P1_26 = 58, + P1_27 = 59, + P1_28 = 60, + P1_29 = 61, + + P1_31 = 63, + + // mbed DIP Pin Names + p3 = P0_7, + p4 = P0_8, + p5 = P0_9, + p6 = P0_10, + p7 = P0_22, + p8 = P0_11, + p9 = P0_12, + p10 = P0_13, + p11 = P0_14, + p12 = P0_15, + p13 = P0_16, + p14 = P0_23, + p15 = P1_15, + p16 = P0_17, + p17 = P0_18, + p18 = P0_19, + p19 = P0_1, + p20 = P1_19, + p21 = P0_0, + p22 = P0_20, + p23 = P0_2, + p24 = P0_3, + p25 = P0_4, + p26 = P0_5, + p27 = P0_21, + p28 = P0_6, + + // Other mbed Pin Names + LED1 = P0_7, + LED2 = P0_7, + LED3 = P0_7, + LED4 = P0_7, + + UART_TX = P0_19, + UART_RX = P0_18, + + // Not connected + NC = (int)0xFFFFFFFF, +} PinName; + +typedef enum { + CHANNEL0 = FLEX_INT0_IRQn, + CHANNEL1 = FLEX_INT1_IRQn, + CHANNEL2 = FLEX_INT2_IRQn, + CHANNEL3 = FLEX_INT3_IRQn, + CHANNEL4 = FLEX_INT4_IRQn, + CHANNEL5 = FLEX_INT5_IRQn, + CHANNEL6 = FLEX_INT6_IRQn, + CHANNEL7 = FLEX_INT7_IRQn +} Channel; + +typedef enum { + PullUp = 2, + PullDown = 1, + PullNone = 0, + Repeater = 3, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_401/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U35_401/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,59 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 0 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 32 +#define DEVICE_MAC_OFFSET 20 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 0 + +#define DEVICE_ERROR_PATTERN 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_401/TARGET_NXP/TARGET_LPC11UXX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_401/TARGET_NXP/TARGET_LPC11UXX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,66 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_mpin; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + PWMName pwm; +}; + +struct serial_s { + LPC_USART_Type *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct i2c_s { + LPC_I2C_Type *i2c; +}; + +struct spi_s { + LPC_SSPx_Type *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_MICRO/system_LPC11Uxx.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_ARM_STD/system_LPC11Uxx.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_GCC_ARM/retarget.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_GCC_CR/board.o has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_GCC_CR/libmbed.a has changed
Binary file TARGET_LPC11U35_401/TOOLCHAIN_GCC_CR/retarget.o has changed
--- a/TARGET_LPC11U35_401/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 0 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 0 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 32 -#define DEVICE_MAC_OFFSET 20 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 0 - -#define DEVICE_ERROR_PATTERN 1 - -#include "objects.h" - -#endif
--- a/TARGET_LPC11U35_401/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U35_401/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_mpin; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - PWMName pwm; -}; - -struct serial_s { - LPC_USART_Type *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct i2c_s { - LPC_I2C_Type *i2c; -}; - -struct spi_s { - LPC_SSPx_Type *spi; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U35_501/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)LPC_USART_BASE -} UARTName; - -typedef enum { - I2C_0 = (int)LPC_I2C_BASE -} I2CName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7 -} ADCName; - -typedef enum { - SPI_0 = (int)LPC_SSP0_BASE, - SPI_1 = (int)LPC_SSP1_BASE -} SPIName; - -typedef enum { - PWM_1 = 0, - PWM_2, - PWM_3, - PWM_4, - PWM_5, - PWM_6, - PWM_7, - PWM_8, - PWM_9, - PWM_10, - PWM_11 -} PWMName; - -#define STDIO_UART_TX UART_TX -#define STDIO_UART_RX UART_RX -#define STDIO_UART UART_0 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U35_501/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 5 - -typedef enum { - // LPC11U Pin Names - P0_0 = 0, - P0_1 = 1, - P0_2 = 2, - P0_3 = 3, - P0_4 = 4, - P0_5 = 5, - P0_6 = 6, - P0_7 = 7, - P0_8 = 8, - P0_9 = 9, - P0_10 = 10, - P0_11 = 11, - P0_12 = 12, - P0_13 = 13, - P0_14 = 14, - P0_15 = 15, - P0_16 = 16, - P0_17 = 17, - P0_18 = 18, - P0_19 = 19, - P0_20 = 20, - P0_21 = 21, - P0_22 = 22, - P0_23 = 23, - P0_24 = 24, - P0_25 = 25, - P0_26 = 26, - P0_27 = 27, - - P1_0 = 32, - P1_1 = 33, - P1_2 = 34, - P1_3 = 35, - P1_4 = 36, - P1_5 = 37, - P1_6 = 38, - P1_7 = 39, - P1_8 = 40, - P1_9 = 41, - P1_10 = 42, - P1_11 = 43, - P1_12 = 44, - P1_13 = 45, - P1_14 = 46, - P1_15 = 47, - P1_16 = 48, - P1_17 = 49, - P1_18 = 50, - P1_19 = 51, - P1_20 = 52, - P1_21 = 53, - P1_22 = 54, - P1_23 = 55, - P1_24 = 56, - P1_25 = 57, - P1_26 = 58, - P1_27 = 59, - P1_28 = 60, - P1_29 = 61, - - P1_31 = 63, - - // mbed DIP Pin Names - // CN1-1 (GND) - // CN1-2 (EXTPOWER) - // CN1-3 (NC) - p4 = P0_0, // CN1-4 - p5 = P0_9, // CN1-5 - p6 = P0_8, // CN1-6 - p7 = P0_10, // CN1-7 - p8 = P0_7, // CN1-8 - p9 = P0_19, // CN1-9 - p10 = P0_18, // CN1-10 - p11 = P0_21, // CN1-11 - p12 = P0_22, // CN1-12 - p13 = P1_15, // CN1-13 - p14 = P0_6, // CN1-14 - p15 = P0_11, // CN1-15 - p16 = P0_12, // CN1-16 - p17 = P0_13, // CN1-17 - p18 = P0_14, // CN1-18 - p19 = P0_15, // CN1-19 - p20 = P0_16, // CN1-20 - - p21 = P0_14, // CN2-20 - p22 = P0_2, // CN2-19 - p23 = P0_23, // CN2-18 - p24 = P0_17, // CN2-17 - p25 = P0_20, // CN2-16 - p26 = P1_15, // CN2-15 - p27 = P0_4, // CN2-14 - p28 = P0_5, // CN2-13 - p29 = P1_19, // CN2-12 - p30 = P0_1, // CN2-11 - // CN2-10 (D+USB) - // CN2-9 (D-USB) - p33 = P0_3, // CN2-8 (USB-VBUS) - // CN2-7 (NC) - // CN2-6 (NC) - // CN2-5 (NC) - // CN2-4 (NC) - // CN2-3 (NC) - // CN2-2 (VDD) - // CN2-1 (VDD) - - // Other mbed Pin Names - LED1 = P0_20, - LED2 = P0_21, - LED3 = P0_20, - LED4 = P0_21, - - UART_TX = P0_19, - UART_RX = P0_18, - - // Not connected - NC = (int)0xFFFFFFFF, -} PinName; - -typedef enum { - CHANNEL0 = FLEX_INT0_IRQn, - CHANNEL1 = FLEX_INT1_IRQn, - CHANNEL2 = FLEX_INT2_IRQn, - CHANNEL3 = FLEX_INT3_IRQn, - CHANNEL4 = FLEX_INT4_IRQn, - CHANNEL5 = FLEX_INT5_IRQn, - CHANNEL6 = FLEX_INT6_IRQn, - CHANNEL7 = FLEX_INT7_IRQn -} Channel; - -typedef enum { - PullUp = 2, - PullDown = 1, - PullNone = 0, - Repeater = 3, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U35_501/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_501/TARGET_NXP/TARGET_LPC11UXX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,31 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_501/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U35_501/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,71 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)LPC_USART_BASE +} UARTName; + +typedef enum { + I2C_0 = (int)LPC_I2C_BASE +} I2CName; + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7 +} ADCName; + +typedef enum { + SPI_0 = (int)LPC_SSP0_BASE, + SPI_1 = (int)LPC_SSP1_BASE +} SPIName; + +typedef enum { + PWM_1 = 0, + PWM_2, + PWM_3, + PWM_4, + PWM_5, + PWM_6, + PWM_7, + PWM_8, + PWM_9, + PWM_10, + PWM_11 +} PWMName; + +#define STDIO_UART_TX UART_TX +#define STDIO_UART_RX UART_RX +#define STDIO_UART UART_0 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_501/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U35_501/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,176 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 5 + +typedef enum { + // LPC11U Pin Names + P0_0 = 0, + P0_1 = 1, + P0_2 = 2, + P0_3 = 3, + P0_4 = 4, + P0_5 = 5, + P0_6 = 6, + P0_7 = 7, + P0_8 = 8, + P0_9 = 9, + P0_10 = 10, + P0_11 = 11, + P0_12 = 12, + P0_13 = 13, + P0_14 = 14, + P0_15 = 15, + P0_16 = 16, + P0_17 = 17, + P0_18 = 18, + P0_19 = 19, + P0_20 = 20, + P0_21 = 21, + P0_22 = 22, + P0_23 = 23, + P0_24 = 24, + P0_25 = 25, + P0_26 = 26, + P0_27 = 27, + + P1_0 = 32, + P1_1 = 33, + P1_2 = 34, + P1_3 = 35, + P1_4 = 36, + P1_5 = 37, + P1_6 = 38, + P1_7 = 39, + P1_8 = 40, + P1_9 = 41, + P1_10 = 42, + P1_11 = 43, + P1_12 = 44, + P1_13 = 45, + P1_14 = 46, + P1_15 = 47, + P1_16 = 48, + P1_17 = 49, + P1_18 = 50, + P1_19 = 51, + P1_20 = 52, + P1_21 = 53, + P1_22 = 54, + P1_23 = 55, + P1_24 = 56, + P1_25 = 57, + P1_26 = 58, + P1_27 = 59, + P1_28 = 60, + P1_29 = 61, + + P1_31 = 63, + + // mbed DIP Pin Names + // CN1-1 (GND) + // CN1-2 (EXTPOWER) + // CN1-3 (NC) + p4 = P0_0, // CN1-4 + p5 = P0_9, // CN1-5 + p6 = P0_8, // CN1-6 + p7 = P0_10, // CN1-7 + p8 = P0_7, // CN1-8 + p9 = P0_19, // CN1-9 + p10 = P0_18, // CN1-10 + p11 = P0_21, // CN1-11 + p12 = P0_22, // CN1-12 + p13 = P1_15, // CN1-13 + p14 = P0_6, // CN1-14 + p15 = P0_11, // CN1-15 + p16 = P0_12, // CN1-16 + p17 = P0_13, // CN1-17 + p18 = P0_14, // CN1-18 + p19 = P0_15, // CN1-19 + p20 = P0_16, // CN1-20 + + p21 = P0_14, // CN2-20 + p22 = P0_2, // CN2-19 + p23 = P0_23, // CN2-18 + p24 = P0_17, // CN2-17 + p25 = P0_20, // CN2-16 + p26 = P1_15, // CN2-15 + p27 = P0_4, // CN2-14 + p28 = P0_5, // CN2-13 + p29 = P1_19, // CN2-12 + p30 = P0_1, // CN2-11 + // CN2-10 (D+USB) + // CN2-9 (D-USB) + p33 = P0_3, // CN2-8 (USB-VBUS) + // CN2-7 (NC) + // CN2-6 (NC) + // CN2-5 (NC) + // CN2-4 (NC) + // CN2-3 (NC) + // CN2-2 (VDD) + // CN2-1 (VDD) + + // Other mbed Pin Names + LED1 = P0_20, + LED2 = P0_21, + LED3 = P0_20, + LED4 = P0_21, + + UART_TX = P0_19, + UART_RX = P0_18, + + // Not connected + NC = (int)0xFFFFFFFF, +} PinName; + +typedef enum { + CHANNEL0 = FLEX_INT0_IRQn, + CHANNEL1 = FLEX_INT1_IRQn, + CHANNEL2 = FLEX_INT2_IRQn, + CHANNEL3 = FLEX_INT3_IRQn, + CHANNEL4 = FLEX_INT4_IRQn, + CHANNEL5 = FLEX_INT5_IRQn, + CHANNEL6 = FLEX_INT6_IRQn, + CHANNEL7 = FLEX_INT7_IRQn +} Channel; + +typedef enum { + PullUp = 2, + PullDown = 1, + PullNone = 0, + Repeater = 3, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_501/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U35_501/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,59 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 0 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 32 +#define DEVICE_MAC_OFFSET 20 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 0 + +#define DEVICE_ERROR_PATTERN 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_501/TARGET_NXP/TARGET_LPC11UXX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC11U35_501/TARGET_NXP/TARGET_LPC11UXX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,66 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_mpin; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + PWMName pwm; +}; + +struct serial_s { + LPC_USART_Type *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct i2c_s { + LPC_I2C_Type *i2c; +}; + +struct spi_s { + LPC_SSPx_Type *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_MICRO/system_LPC11Uxx.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_ARM_STD/system_LPC11Uxx.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_GCC_ARM/retarget.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_GCC_CR/board.o has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_GCC_CR/libmbed.a has changed
Binary file TARGET_LPC11U35_501/TOOLCHAIN_GCC_CR/retarget.o has changed
--- a/TARGET_LPC11U35_501/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 0 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 0 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 32 -#define DEVICE_MAC_OFFSET 20 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 0 - -#define DEVICE_ERROR_PATTERN 1 - -#include "objects.h" - -#endif
--- a/TARGET_LPC11U35_501/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC11U35_501/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_mpin; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - PWMName pwm; -}; - -struct serial_s { - LPC_USART_Type *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct i2c_s { - LPC_I2C_Type *i2c; -}; - -struct spi_s { - LPC_SSPx_Type *spi; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1347/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)LPC_USART_BASE -} UARTName; - -typedef enum { - I2C_0 = (int)LPC_I2C_BASE -} I2CName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7 -} ADCName; - -typedef enum { - SPI_0 = (int)LPC_SSP0_BASE, - SPI_1 = (int)LPC_SSP1_BASE -} SPIName; - -typedef enum { - PWM_1 = 0, - PWM_2, - PWM_3, - PWM_4, - PWM_5, - PWM_6, - PWM_7, - PWM_8, - PWM_9, - PWM_10, - PWM_11 -} PWMName; - -#define STDIO_UART_TX UART_TX -#define STDIO_UART_RX UART_RX -#define STDIO_UART UART_0 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1347/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 5 - -typedef enum { - // LPC1347 Pin Names - P0_0 = 0, - P0_1 = 1, - P0_2 = 2, - P0_3 = 3, - P0_4 = 4, - P0_5 = 5, - P0_6 = 6, - P0_7 = 7, - P0_8 = 8, - P0_9 = 9, - P0_10 = 10, - P0_11 = 11, - P0_12 = 12, - P0_13 = 13, - P0_14 = 14, - P0_15 = 15, - P0_16 = 16, - P0_17 = 17, - P0_18 = 18, - P0_19 = 19, - P0_20 = 20, - P0_21 = 21, - P0_22 = 22, - P0_23 = 23, - - P1_13 = 45, - P1_14 = 46, - P1_15 = 47, - P1_16 = 48, - - P1_19 = 51, - P1_20 = 52, - P1_21 = 53, - P1_22 = 54, - P1_23 = 55, - P1_24 = 56, - P1_25 = 57, - P1_26 = 58, - P1_27 = 59, - P1_28 = 60, - P1_29 = 61, - - P1_31 = 63, - - // DIP Pin Names - p1 = P0_0, - p2 = P0_11, - p3 = P0_12, - p4 = P0_13, - p5 = P0_14, - p6 = P1_31, - p8 = P0_16, - p9 = P0_22, - p10 = P0_23, - p13 = P1_29, - p14 = P1_21, - p15 = P0_8, - p16 = P0_9, - p17 = P1_24, - p18 = P0_4, - p19 = P1_13, - p20 = P1_14, - p21 = P1_22, - p22 = P0_17, - p23 = P0_5, - p24 = P0_21, - p25 = P0_19, - p26 = P0_18, - p27 = P1_15, - p28 = P1_16, - p29 = P1_25, - p30 = P1_19, - p33 = P0_20, - p34 = P0_2, - p35 = P1_26, - p36 = P1_27, - p37 = P1_20, - p38 = P1_23, - p39 = P0_7, - p40 = P1_28, - - UART_TX = P0_19, - UART_RX = P0_18, - - // Not connected - NC = (int)0xFFFFFFFF, - - LED1 = p21, - LED2 = p21, - LED3 = p21, - LED4 = p21 -} PinName; - -typedef enum { - CHANNEL0 = PIN_INT0_IRQn, - CHANNEL1 = PIN_INT1_IRQn, - CHANNEL2 = PIN_INT2_IRQn, - CHANNEL3 = PIN_INT3_IRQn, - CHANNEL4 = PIN_INT4_IRQn, - CHANNEL5 = PIN_INT5_IRQn, - CHANNEL6 = PIN_INT6_IRQn, - CHANNEL7 = PIN_INT7_IRQn -} Channel; - -typedef enum { - PullUp = 2, - PullDown = 1, - PullNone = 0, - Repeater = 3, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1347/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1347/TARGET_NXP/TARGET_LPC13XX/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,71 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)LPC_USART_BASE +} UARTName; + +typedef enum { + I2C_0 = (int)LPC_I2C_BASE +} I2CName; + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7 +} ADCName; + +typedef enum { + SPI_0 = (int)LPC_SSP0_BASE, + SPI_1 = (int)LPC_SSP1_BASE +} SPIName; + +typedef enum { + PWM_1 = 0, + PWM_2, + PWM_3, + PWM_4, + PWM_5, + PWM_6, + PWM_7, + PWM_8, + PWM_9, + PWM_10, + PWM_11 +} PWMName; + +#define STDIO_UART_TX UART_TX +#define STDIO_UART_RX UART_RX +#define STDIO_UART UART_0 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1347/TARGET_NXP/TARGET_LPC13XX/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,151 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 5 + +typedef enum { + // LPC1347 Pin Names + P0_0 = 0, + P0_1 = 1, + P0_2 = 2, + P0_3 = 3, + P0_4 = 4, + P0_5 = 5, + P0_6 = 6, + P0_7 = 7, + P0_8 = 8, + P0_9 = 9, + P0_10 = 10, + P0_11 = 11, + P0_12 = 12, + P0_13 = 13, + P0_14 = 14, + P0_15 = 15, + P0_16 = 16, + P0_17 = 17, + P0_18 = 18, + P0_19 = 19, + P0_20 = 20, + P0_21 = 21, + P0_22 = 22, + P0_23 = 23, + + P1_13 = 45, + P1_14 = 46, + P1_15 = 47, + P1_16 = 48, + + P1_19 = 51, + P1_20 = 52, + P1_21 = 53, + P1_22 = 54, + P1_23 = 55, + P1_24 = 56, + P1_25 = 57, + P1_26 = 58, + P1_27 = 59, + P1_28 = 60, + P1_29 = 61, + + P1_31 = 63, + + // DIP Pin Names + p1 = P0_0, + p2 = P0_11, + p3 = P0_12, + p4 = P0_13, + p5 = P0_14, + p6 = P1_31, + p8 = P0_16, + p9 = P0_22, + p10 = P0_23, + p13 = P1_29, + p14 = P1_21, + p15 = P0_8, + p16 = P0_9, + p17 = P1_24, + p18 = P0_4, + p19 = P1_13, + p20 = P1_14, + p21 = P1_22, + p22 = P0_17, + p23 = P0_5, + p24 = P0_21, + p25 = P0_19, + p26 = P0_18, + p27 = P1_15, + p28 = P1_16, + p29 = P1_25, + p30 = P1_19, + p33 = P0_20, + p34 = P0_2, + p35 = P1_26, + p36 = P1_27, + p37 = P1_20, + p38 = P1_23, + p39 = P0_7, + p40 = P1_28, + + UART_TX = P0_19, + UART_RX = P0_18, + + // Not connected + NC = (int)0xFFFFFFFF, + + LED1 = p21, + LED2 = p21, + LED3 = p21, + LED4 = p21 +} PinName; + +typedef enum { + CHANNEL0 = PIN_INT0_IRQn, + CHANNEL1 = PIN_INT1_IRQn, + CHANNEL2 = PIN_INT2_IRQn, + CHANNEL3 = PIN_INT3_IRQn, + CHANNEL4 = PIN_INT4_IRQn, + CHANNEL5 = PIN_INT5_IRQn, + CHANNEL6 = PIN_INT6_IRQn, + CHANNEL7 = PIN_INT7_IRQn +} Channel; + +typedef enum { + PullUp = 2, + PullDown = 1, + PullNone = 0, + Repeater = 3, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1347/TARGET_NXP/TARGET_LPC13XX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,31 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1347/TARGET_NXP/TARGET_LPC13XX/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,57 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 0 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 32 +#define DEVICE_MAC_OFFSET 20 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1347/TARGET_NXP/TARGET_LPC13XX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1347/TARGET_NXP/TARGET_LPC13XX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,70 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_mpin; + PortName port; + uint32_t mask; +}; + + +struct pwmout_s { + PWMName pwm; +}; + + +struct serial_s { + LPC_USART_Type *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + + +struct i2c_s { + LPC_I2C_Type *i2c; +}; + + +struct spi_s { + LPC_SSPx_Type *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC1347/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_LPC1347/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_LPC1347/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_LPC1347/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_LPC1347/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_LPC1347/TOOLCHAIN_ARM_STD/system_LPC13Uxx.o has changed
--- a/TARGET_LPC1347/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 0 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 0 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 32 -#define DEVICE_MAC_OFFSET 20 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -#include "objects.h" - -#endif
--- a/TARGET_LPC1347/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1347/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_mpin; - PortName port; - uint32_t mask; -}; - - -struct pwmout_s { - PWMName pwm; -}; - - -struct serial_s { - LPC_USART_Type *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - - -struct i2c_s { - LPC_I2C_Type *i2c; -}; - - -struct spi_s { - LPC_SSPx_Type *spi; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1549/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7, - ADC0_8, - ADC0_9, - ADC0_10, - ADC0_11, - ADC1_0, - ADC1_1, - ADC1_2, - ADC1_3, - ADC1_4, - ADC1_5, - ADC1_6, - ADC1_7, - ADC1_8, - ADC1_9, - ADC1_10, - ADC1_11, -} ADCName; - -typedef enum { - DAC0_0 = 0, -} DACName; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1549/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2014 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -typedef enum { - // LPC Pin Names - P0_0 = 0, - P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, - P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, - P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, - - LED_RED = P0_25, - LED_GREEN = P0_3, - LED_BLUE = P1_1, - - // mbed original LED naming - LED1 = LED_BLUE, - LED2 = LED_GREEN, - LED3 = LED_RED, - LED4 = LED_RED, - - // Serial to USB pins - USBTX = P0_18, - USBRX = P0_13, - - // Arduino Shield Receptacles Names - D0 = P0_13, - D1 = P0_18, - D2 = P0_29, - D3 = P0_9, - D4 = P0_10, - D5 = P0_16, // same port as D13 - D6 = P1_3, - D7 = P0_0, - D8 = P0_24, - D9 = P1_0, - D10= P0_27, - D11= P0_28, - D12= P0_12, - D13= P0_16, // same port as D5 - A0 = P0_8, - A1 = P0_7, - A2 = P0_6, - A3 = P0_5, - A4 = P0_23, // same port as SDA - A5 = P0_22, // same port as SCL - SDA= P0_23, // same port as A4 - SCL= P0_22, // same port as A5 - - // Not connected - NC = (int)0xFFFFFFFF, -} PinName; - -typedef enum { - PullUp = 2, - PullDown = 1, - PullNone = 0, - Repeater = 3, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX - -typedef struct { - unsigned char n; - unsigned char offset; -} SWM_Map; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1549/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2014 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1, - Port2 = 2 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1549/TARGET_NXP/TARGET_LPC15XX/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,60 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7, + ADC0_8, + ADC0_9, + ADC0_10, + ADC0_11, + ADC1_0, + ADC1_1, + ADC1_2, + ADC1_3, + ADC1_4, + ADC1_5, + ADC1_6, + ADC1_7, + ADC1_8, + ADC1_9, + ADC1_10, + ADC1_11, +} ADCName; + +typedef enum { + DAC0_0 = 0, +} DACName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1549/TARGET_NXP/TARGET_LPC15XX/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,103 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2014 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +typedef enum { + // LPC Pin Names + P0_0 = 0, + P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, + P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, + P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, + + LED_RED = P0_25, + LED_GREEN = P0_3, + LED_BLUE = P1_1, + + // mbed original LED naming + LED1 = LED_BLUE, + LED2 = LED_GREEN, + LED3 = LED_RED, + LED4 = LED_RED, + + // Serial to USB pins + USBTX = P0_18, + USBRX = P0_13, + + // Arduino Shield Receptacles Names + D0 = P0_13, + D1 = P0_18, + D2 = P0_29, + D3 = P0_9, + D4 = P0_10, + D5 = P0_16, // same port as D13 + D6 = P1_3, + D7 = P0_0, + D8 = P0_24, + D9 = P1_0, + D10= P0_27, + D11= P0_28, + D12= P0_12, + D13= P0_16, // same port as D5 + D14= P0_23, + D15= P0_22, + + A0 = P0_8, + A1 = P0_7, + A2 = P0_6, + A3 = P0_5, + A4 = P0_23, // same port as SDA + A5 = P0_22, // same port as SCL + SDA= P0_23, // same port as A4 + SCL= P0_22, // same port as A5 + + // Not connected + NC = (int)0xFFFFFFFF, +} PinName; + +typedef enum { + PullUp = 2, + PullDown = 1, + PullNone = 0, + Repeater = 3, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX + +typedef struct { + unsigned char n; + unsigned char offset; +} SWM_Map; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1549/TARGET_NXP/TARGET_LPC15XX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,32 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2014 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1, + Port2 = 2 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1549/TARGET_NXP/TARGET_LPC15XX/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,58 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2014 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 0 +#define DEVICE_PORTOUT 0 +#define DEVICE_PORTINOUT 0 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 +#define DEVICE_SERIAL_FC 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 0 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 0 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 + +#define DEVICE_SLEEP 0 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 0 + +#define DEVICE_ERROR_RED 0 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1549/TARGET_NXP/TARGET_LPC15XX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1549/TARGET_NXP/TARGET_LPC15XX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,65 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t ch; +}; + +struct pwmout_s { + LPC_SCT0_Type* pwm; + uint32_t pwm_ch; +}; + +struct serial_s { + LPC_USART0_Type *uart; + unsigned char index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct dac_s { + DACName dac; +}; + +struct i2c_s { + LPC_I2C0_Type *i2c; +}; + +struct spi_s { + LPC_SPI0_Type *spi; + unsigned char spi_n; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC1549/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_LPC1549/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_LPC1549/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_LPC1549/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_LPC1549/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_LPC1549/TOOLCHAIN_ARM_MICRO/system_LPC15xx.o has changed
--- a/TARGET_LPC1549/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2014 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 0 -#define DEVICE_PORTOUT 0 -#define DEVICE_PORTINOUT 0 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 1 - -#define DEVICE_SERIAL 1 -#define DEVICE_SERIAL_FC 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 0 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 0 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 - -#define DEVICE_SLEEP 0 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 0 - -#define DEVICE_ERROR_RED 0 - -#include "objects.h" - -#endif
--- a/TARGET_LPC1549/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1549/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t ch; -}; - -struct pwmout_s { - LPC_SCT0_Type* pwm; - uint32_t pwm_ch; -}; - -struct serial_s { - LPC_USART0_Type *uart; - unsigned char index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct dac_s { - DACName dac; -}; - -struct i2c_s { - LPC_I2C0_Type *i2c; -}; - -struct spi_s { - LPC_SPI0_Type *spi; - unsigned char spi_n; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1768/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)LPC_UART0_BASE, - UART_1 = (int)LPC_UART1_BASE, - UART_2 = (int)LPC_UART2_BASE, - UART_3 = (int)LPC_UART3_BASE -} UARTName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7 -} ADCName; - -typedef enum { - DAC_0 = 0 -} DACName; - -typedef enum { - SPI_0 = (int)LPC_SSP0_BASE, - SPI_1 = (int)LPC_SSP1_BASE -} SPIName; - -typedef enum { - I2C_0 = (int)LPC_I2C0_BASE, - I2C_1 = (int)LPC_I2C1_BASE, - I2C_2 = (int)LPC_I2C2_BASE -} I2CName; - -typedef enum { - PWM_1 = 1, - PWM_2, - PWM_3, - PWM_4, - PWM_5, - PWM_6 -} PWMName; - -typedef enum { - CAN_1 = (int)LPC_CAN1_BASE, - CAN_2 = (int)LPC_CAN2_BASE -} CANName; - -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -// Default peripherals -#define MBED_SPI0 p5, p6, p7, p8 -#define MBED_SPI1 p11, p12, p13, p14 - -#define MBED_UART0 p9, p10 -#define MBED_UART1 p13, p14 -#define MBED_UART2 p28, p27 -#define MBED_UARTUSB USBTX, USBRX - -#define MBED_I2C0 p28, p27 -#define MBED_I2C1 p9, p10 - -#define MBED_CAN0 p30, p29 - -#define MBED_ANALOGOUT0 p18 - -#define MBED_ANALOGIN0 p15 -#define MBED_ANALOGIN1 p16 -#define MBED_ANALOGIN2 p17 -#define MBED_ANALOGIN3 p18 -#define MBED_ANALOGIN4 p19 -#define MBED_ANALOGIN5 p20 - -#define MBED_PWMOUT0 p26 -#define MBED_PWMOUT1 p25 -#define MBED_PWMOUT2 p24 -#define MBED_PWMOUT3 p23 -#define MBED_PWMOUT4 p22 -#define MBED_PWMOUT5 p21 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1768/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 5 - -typedef enum { - // LPC Pin Names - P0_0 = LPC_GPIO0_BASE, - P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, - P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, - P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31, - P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31, - P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31, - - // mbed DIP Pin Names - p5 = P0_9, - p6 = P0_8, - p7 = P0_7, - p8 = P0_6, - p9 = P0_0, - p10 = P0_1, - p11 = P0_18, - p12 = P0_17, - p13 = P0_15, - p14 = P0_16, - p15 = P0_23, - p16 = P0_24, - p17 = P0_25, - p18 = P0_26, - p19 = P1_30, - p20 = P1_31, - p21 = P2_5, - p22 = P2_4, - p23 = P2_3, - p24 = P2_2, - p25 = P2_1, - p26 = P2_0, - p27 = P0_11, - p28 = P0_10, - p29 = P0_5, - p30 = P0_4, - - // Other mbed Pin Names -#ifdef MCB1700 - LED1 = P1_28, - LED2 = P1_29, - LED3 = P1_31, - LED4 = P2_2, -#else - LED1 = P1_18, - LED2 = P1_20, - LED3 = P1_21, - LED4 = P1_23, -#endif - USBTX = P0_2, - USBRX = P0_3, - - // Arch Pro Pin Names - D0 = P4_29, - D1 = P4_28, - D2 = P0_4, - D3 = P0_5, - D4 = P2_2, - D5 = P2_3, - D6 = P2_4, - D7 = P2_5, - D8 = P0_0, - D9 = P0_1, - D10 = P0_6, - D11 = P0_9, - D12 = P0_8, - D13 = P0_7, - - A0 = P0_23, - A1 = P0_24, - A2 = P0_25, - A3 = P0_26, - A4 = P1_30, - A5 = P1_31, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -typedef enum { - PullUp = 0, - PullDown = 3, - PullNone = 2, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -// version of PINCON_TypeDef using register arrays -typedef struct { - __IO uint32_t PINSEL[11]; - uint32_t RESERVED0[5]; - __IO uint32_t PINMODE[10]; - __IO uint32_t PINMODE_OD[5]; -} PINCONARRAY_TypeDef; - -#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE) - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1768/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1, - Port2 = 2, - Port3 = 3, - Port4 = 4 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1768/TARGET_NXP/TARGET_LPC176X/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,111 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)LPC_UART0_BASE, + UART_1 = (int)LPC_UART1_BASE, + UART_2 = (int)LPC_UART2_BASE, + UART_3 = (int)LPC_UART3_BASE +} UARTName; + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7 +} ADCName; + +typedef enum { + DAC_0 = 0 +} DACName; + +typedef enum { + SPI_0 = (int)LPC_SSP0_BASE, + SPI_1 = (int)LPC_SSP1_BASE +} SPIName; + +typedef enum { + I2C_0 = (int)LPC_I2C0_BASE, + I2C_1 = (int)LPC_I2C1_BASE, + I2C_2 = (int)LPC_I2C2_BASE +} I2CName; + +typedef enum { + PWM_1 = 1, + PWM_2, + PWM_3, + PWM_4, + PWM_5, + PWM_6 +} PWMName; + +typedef enum { + CAN_1 = (int)LPC_CAN1_BASE, + CAN_2 = (int)LPC_CAN2_BASE +} CANName; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +// Default peripherals +#define MBED_SPI0 p5, p6, p7, p8 +#define MBED_SPI1 p11, p12, p13, p14 + +#define MBED_UART0 p9, p10 +#define MBED_UART1 p13, p14 +#define MBED_UART2 p28, p27 +#define MBED_UARTUSB USBTX, USBRX + +#define MBED_I2C0 p28, p27 +#define MBED_I2C1 p9, p10 + +#define MBED_CAN0 p30, p29 + +#define MBED_ANALOGOUT0 p18 + +#define MBED_ANALOGIN0 p15 +#define MBED_ANALOGIN1 p16 +#define MBED_ANALOGIN2 p17 +#define MBED_ANALOGIN3 p18 +#define MBED_ANALOGIN4 p19 +#define MBED_ANALOGIN5 p20 + +#define MBED_PWMOUT0 p26 +#define MBED_PWMOUT1 p25 +#define MBED_PWMOUT2 p24 +#define MBED_PWMOUT3 p23 +#define MBED_PWMOUT4 p22 +#define MBED_PWMOUT5 p21 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1768/TARGET_NXP/TARGET_LPC176X/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,34 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1, + Port2 = 2, + Port3 = 3, + Port4 = 4 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1768/TARGET_NXP/TARGET_LPC176X/TARGET_MBED_LPC1768/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,135 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 5 + +typedef enum { + // LPC Pin Names + P0_0 = LPC_GPIO0_BASE, + P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, + P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, + P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31, + P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31, + P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31, + + // mbed DIP Pin Names + p5 = P0_9, + p6 = P0_8, + p7 = P0_7, + p8 = P0_6, + p9 = P0_0, + p10 = P0_1, + p11 = P0_18, + p12 = P0_17, + p13 = P0_15, + p14 = P0_16, + p15 = P0_23, + p16 = P0_24, + p17 = P0_25, + p18 = P0_26, + p19 = P1_30, + p20 = P1_31, + p21 = P2_5, + p22 = P2_4, + p23 = P2_3, + p24 = P2_2, + p25 = P2_1, + p26 = P2_0, + p27 = P0_11, + p28 = P0_10, + p29 = P0_5, + p30 = P0_4, + + // Other mbed Pin Names +#ifdef MCB1700 + LED1 = P1_28, + LED2 = P1_29, + LED3 = P1_31, + LED4 = P2_2, +#else + LED1 = P1_18, + LED2 = P1_20, + LED3 = P1_21, + LED4 = P1_23, +#endif + USBTX = P0_2, + USBRX = P0_3, + + // Arch Pro Pin Names + D0 = P4_29, + D1 = P4_28, + D2 = P0_4, + D3 = P0_5, + D4 = P2_2, + D5 = P2_3, + D6 = P2_4, + D7 = P2_5, + D8 = P0_0, + D9 = P0_1, + D10 = P0_6, + D11 = P0_9, + D12 = P0_8, + D13 = P0_7, + D14 = P0_27, + D15 = P0_28, + + A0 = P0_23, + A1 = P0_24, + A2 = P0_25, + A3 = P0_26, + A4 = P1_30, + A5 = P1_31, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullUp = 0, + PullDown = 3, + PullNone = 2, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +// version of PINCON_TypeDef using register arrays +typedef struct { + __IO uint32_t PINSEL[11]; + uint32_t RESERVED0[5]; + __IO uint32_t PINMODE[10]; + __IO uint32_t PINMODE_OD[5]; +} PINCONARRAY_TypeDef; + +#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE) + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1768/TARGET_NXP/TARGET_LPC176X/TARGET_MBED_LPC1768/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,60 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 +#define DEVICE_SERIAL_FC 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 1 + +#define DEVICE_RTC 1 + +#define DEVICE_ETHERNET 1 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 1 +#define DEVICE_LOCALFILESYSTEM 1 +#define DEVICE_ID_LENGTH 32 +#define DEVICE_MAC_OFFSET 20 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 1 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_PATTERN 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1768/TARGET_NXP/TARGET_LPC176X/TARGET_MBED_LPC1768/reserved_pins.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,8 @@ +// List of reserved pins for MBED LPC1768 + +#ifndef RESERVED_PINS_H +#define RESERVED_PINS_H + +#define TARGET_RESERVED_PINS {} + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1768/TARGET_NXP/TARGET_LPC176X/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC1768/TARGET_NXP/TARGET_LPC176X/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,78 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" +#include "gpio_object.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t port; + uint32_t pin; + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_out; + __I uint32_t *reg_in; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + __IO uint32_t *MR; + PWMName pwm; +}; + +struct serial_s { + LPC_UART_TypeDef *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct dac_s { + DACName dac; +}; + +struct can_s { + LPC_CAN_TypeDef *dev; + int index; +}; + +struct i2c_s { + LPC_I2C_TypeDef *i2c; +}; + +struct spi_s { + LPC_SSP_TypeDef *spi; +}; + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC1768/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_LPC1768/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_ARM_STD/system_LPC17xx.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_LPC1768/TOOLCHAIN_GCC_ARM/retarget.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_GCC_CR/board.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_GCC_CR/libmbed.a has changed
Binary file TARGET_LPC1768/TOOLCHAIN_GCC_CR/retarget.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_GCC_CS/board.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_GCC_CS/libmbed.a has changed
Binary file TARGET_LPC1768/TOOLCHAIN_GCC_CS/retarget.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_IAR/board.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_IAR/cmsis_nvic.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_IAR/mbed.a has changed
Binary file TARGET_LPC1768/TOOLCHAIN_IAR/retarget.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_IAR/startup_LPC17xx.o has changed
Binary file TARGET_LPC1768/TOOLCHAIN_IAR/system_LPC17xx.o has changed
--- a/TARGET_LPC1768/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 1 - -#define DEVICE_SERIAL 1 -#define DEVICE_SERIAL_FC 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 1 - -#define DEVICE_RTC 1 - -#define DEVICE_ETHERNET 1 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 1 -#define DEVICE_LOCALFILESYSTEM 1 -#define DEVICE_ID_LENGTH 32 -#define DEVICE_MAC_OFFSET 20 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 1 - -#define DEVICE_STDIO_MESSAGES 1 - -#define DEVICE_ERROR_PATTERN 1 - -#include "objects.h" - -#endif
--- a/TARGET_LPC1768/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1768/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" -#include "gpio_object.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t port; - uint32_t pin; - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_out; - __I uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - __IO uint32_t *MR; - PWMName pwm; -}; - -struct serial_s { - LPC_UART_TypeDef *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct dac_s { - DACName dac; -}; - -struct can_s { - LPC_CAN_TypeDef *dev; - int index; -}; - -struct i2c_s { - LPC_I2C_TypeDef *i2c; -}; - -struct spi_s { - LPC_SSP_TypeDef *spi; -}; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC1768/reserved_pins.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -// List of reserved pins for MBED LPC1768 - -#ifndef RESERVED_PINS_H -#define RESERVED_PINS_H - -#define TARGET_RESERVED_PINS {} - -#endif
--- a/TARGET_LPC2368/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)LPC_UART0_BASE, - UART_1 = (int)LPC_UART1_BASE, - UART_2 = (int)LPC_UART2_BASE, - UART_3 = (int)LPC_UART3_BASE -} UARTName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7 -} ADCName; - -typedef enum { - DAC_0 = 0 -} DACName; - -typedef enum { - SPI_0 = (int)LPC_SSP0_BASE, - SPI_1 = (int)LPC_SSP1_BASE -} SPIName; - -typedef enum { - I2C_0 = (int)LPC_I2C0_BASE, - I2C_1 = (int)LPC_I2C1_BASE, - I2C_2 = (int)LPC_I2C2_BASE -} I2CName; - -typedef enum { - PWM_1 = 1, - PWM_2, - PWM_3, - PWM_4, - PWM_5, - PWM_6 -} PWMName; - -typedef enum { - CAN_1 = (int)LPC_CAN1_BASE, - CAN_2 = (int)LPC_CAN2_BASE -} CANName; - -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -// Default peripherals -#define MBED_SPI0 p5, p6, p7, p8 -#define MBED_SPI1 p11, p12, p13, p14 - -#define MBED_UART0 p9, p10 -#define MBED_UART1 p13, p14 -#define MBED_UART2 p28, p27 -#define MBED_UARTUSB USBTX, USBRX - -#define MBED_I2C0 p28, p27 -#define MBED_I2C1 p9, p10 - -#define MBED_CAN0 p30, p29 - -#define MBED_ANALOGOUT0 p18 - -#define MBED_ANALOGIN0 p15 -#define MBED_ANALOGIN1 p16 -#define MBED_ANALOGIN2 p17 -#define MBED_ANALOGIN3 p18 -#define MBED_ANALOGIN4 p19 -#define MBED_ANALOGIN5 p20 - -#define MBED_PWMOUT0 p26 -#define MBED_PWMOUT1 p25 -#define MBED_PWMOUT2 p24 -#define MBED_PWMOUT3 p23 -#define MBED_PWMOUT4 p22 -#define MBED_PWMOUT5 p21 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC2368/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 5 - -typedef enum { - // LPC Pin Names - P0_0 = LPC_GPIO0_BASE, - P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, - P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, - P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31, - P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31, - P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31, - - // mbed DIP Pin Names - p5 = P0_9, - p6 = P0_8, - p7 = P0_7, - p8 = P0_6, - p9 = P0_0, - p10 = P0_1, - p11 = P0_18, - p12 = P0_17, - p13 = P0_15, - p14 = P0_16, - p15 = P0_23, - p16 = P0_24, - p17 = P0_25, - p18 = P0_26, - p19 = P1_30, - p20 = P1_31, - p21 = P2_5, - p22 = P2_4, - p23 = P2_3, - p24 = P2_2, - p25 = P2_1, - p26 = P2_0, - p27 = P0_11, - p28 = P0_10, - p29 = P0_5, - p30 = P0_4, - - // Other mbed Pin Names - LED1 = P1_18, - LED2 = P1_20, - LED3 = P1_21, - LED4 = P1_23, - - USBTX = P0_2, - USBRX = P0_3, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -typedef enum { - PullUp = 0, - PullDown = 3, - PullNone = 2, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -// version of PINCON_TypeDef using register arrays -typedef struct { - __IO uint32_t PINSEL[11]; - uint32_t RESERVED0[5]; - __IO uint32_t PINMODE[10]; -} PINCONARRAY_TypeDef; - -#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE) - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC2368/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1, - Port2 = 2, - Port3 = 3, - Port4 = 4 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC2368/TARGET_NXP/TARGET_LPC23XX/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,110 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)LPC_UART0_BASE, + UART_1 = (int)LPC_UART1_BASE, + UART_2 = (int)LPC_UART2_BASE, + UART_3 = (int)LPC_UART3_BASE +} UARTName; + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7 +} ADCName; + +typedef enum { + DAC_0 = 0 +} DACName; + +typedef enum { + SPI_0 = (int)LPC_SSP0_BASE, + SPI_1 = (int)LPC_SSP1_BASE +} SPIName; + +typedef enum { + I2C_0 = (int)LPC_I2C0_BASE, + I2C_1 = (int)LPC_I2C1_BASE, + I2C_2 = (int)LPC_I2C2_BASE +} I2CName; + +typedef enum { + PWM_1 = 1, + PWM_2, + PWM_3, + PWM_4, + PWM_5, + PWM_6 +} PWMName; + +typedef enum { + CAN_1 = (int)LPC_CAN1_BASE, + CAN_2 = (int)LPC_CAN2_BASE +} CANName; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +// Default peripherals +#define MBED_SPI0 p5, p6, p7, p8 +#define MBED_SPI1 p11, p12, p13, p14 + +#define MBED_UART0 p9, p10 +#define MBED_UART1 p13, p14 +#define MBED_UART2 p28, p27 +#define MBED_UARTUSB USBTX, USBRX + +#define MBED_I2C0 p28, p27 +#define MBED_I2C1 p9, p10 + +#define MBED_CAN0 p30, p29 + +#define MBED_ANALOGOUT0 p18 + +#define MBED_ANALOGIN0 p15 +#define MBED_ANALOGIN1 p16 +#define MBED_ANALOGIN2 p17 +#define MBED_ANALOGIN3 p18 +#define MBED_ANALOGIN4 p19 +#define MBED_ANALOGIN5 p20 + +#define MBED_PWMOUT0 p26 +#define MBED_PWMOUT1 p25 +#define MBED_PWMOUT2 p24 +#define MBED_PWMOUT3 p23 +#define MBED_PWMOUT4 p22 +#define MBED_PWMOUT5 p21 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC2368/TARGET_NXP/TARGET_LPC23XX/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,104 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 5 + +typedef enum { + // LPC Pin Names + P0_0 = LPC_GPIO0_BASE, + P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, + P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, + P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31, + P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31, + P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31, + + // mbed DIP Pin Names + p5 = P0_9, + p6 = P0_8, + p7 = P0_7, + p8 = P0_6, + p9 = P0_0, + p10 = P0_1, + p11 = P0_18, + p12 = P0_17, + p13 = P0_15, + p14 = P0_16, + p15 = P0_23, + p16 = P0_24, + p17 = P0_25, + p18 = P0_26, + p19 = P1_30, + p20 = P1_31, + p21 = P2_5, + p22 = P2_4, + p23 = P2_3, + p24 = P2_2, + p25 = P2_1, + p26 = P2_0, + p27 = P0_11, + p28 = P0_10, + p29 = P0_5, + p30 = P0_4, + + // Other mbed Pin Names + LED1 = P1_18, + LED2 = P1_20, + LED3 = P1_21, + LED4 = P1_23, + + USBTX = P0_2, + USBRX = P0_3, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullUp = 0, + PullDown = 3, + PullNone = 2, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +// version of PINCON_TypeDef using register arrays +typedef struct { + __IO uint32_t PINSEL[11]; + uint32_t RESERVED0[5]; + __IO uint32_t PINMODE[10]; +} PINCONARRAY_TypeDef; + +#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE) + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC2368/TARGET_NXP/TARGET_LPC23XX/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,34 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1, + Port2 = 2, + Port3 = 3, + Port4 = 4 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC2368/TARGET_NXP/TARGET_LPC23XX/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,59 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 1 + +#define DEVICE_RTC 1 + +#define DEVICE_ETHERNET 1 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 1 +#define DEVICE_LOCALFILESYSTEM 1 +#define DEVICE_ID_LENGTH 32 +#define DEVICE_MAC_OFFSET 20 + +#define DEVICE_SLEEP 0 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_PATTERN 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC2368/TARGET_NXP/TARGET_LPC23XX/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC2368/TARGET_NXP/TARGET_LPC23XX/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,78 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t port; + uint32_t pin; + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_out; + __I uint32_t *reg_in; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + __IO uint32_t *MR; + PWMName pwm; +}; + +struct serial_s { + LPC_UART_TypeDef *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct dac_s { + DACName dac; +}; + +struct can_s { + LPC_CAN_TypeDef *dev; +}; + +struct i2c_s { + LPC_I2C_TypeDef *i2c; +}; + +struct spi_s { + LPC_SSP_TypeDef *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC2368/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_LPC2368/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_LPC2368/TOOLCHAIN_ARM_STD/core_arm7.o has changed
Binary file TARGET_LPC2368/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_LPC2368/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_LPC2368/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_LPC2368/TOOLCHAIN_ARM_STD/system_LPC23xx.o has changed
Binary file TARGET_LPC2368/TOOLCHAIN_ARM_STD/vector_realmonitor.o has changed
--- a/TARGET_LPC2368/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 1 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 1 - -#define DEVICE_RTC 1 - -#define DEVICE_ETHERNET 1 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 1 -#define DEVICE_LOCALFILESYSTEM 1 -#define DEVICE_ID_LENGTH 32 -#define DEVICE_MAC_OFFSET 20 - -#define DEVICE_SLEEP 0 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -#define DEVICE_ERROR_PATTERN 1 - -#include "objects.h" - -#endif
--- a/TARGET_LPC2368/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC2368/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t port; - uint32_t pin; - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_out; - __I uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - __IO uint32_t *MR; - PWMName pwm; -}; - -struct serial_s { - LPC_UART_TypeDef *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct dac_s { - DACName dac; -}; - -struct can_s { - LPC_CAN_TypeDef *dev; -}; - -struct i2c_s { - LPC_I2C_TypeDef *i2c; -}; - -struct spi_s { - LPC_SSP_TypeDef *spi; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC4088/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)LPC_UART0_BASE, - UART_1 = (int)LPC_UART1_BASE, - UART_2 = (int)LPC_UART2_BASE, - UART_3 = (int)LPC_UART3_BASE, - UART_4 = (int)LPC_UART4_BASE -} UARTName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7 -} ADCName; - -typedef enum { - DAC_0 = 0 -} DACName; - -typedef enum { - SPI_0 = (int)LPC_SSP0_BASE, - SPI_1 = (int)LPC_SSP1_BASE, - SPI_2 = (int)LPC_SSP2_BASE -} SPIName; - -typedef enum { - I2C_0 = (int)LPC_I2C0_BASE, - I2C_1 = (int)LPC_I2C1_BASE, - I2C_2 = (int)LPC_I2C2_BASE -} I2CName; - -typedef enum { - PWM0_1 = 1, - PWM0_2, - PWM0_3, - PWM0_4, - PWM0_5, - PWM0_6, - PWM1_1, - PWM1_2, - PWM1_3, - PWM1_4, - PWM1_5, - PWM1_6 -} PWMName; - -typedef enum { - CAN_1 = (int)LPC_CAN1_BASE, - CAN_2 = (int)LPC_CAN2_BASE -} CANName; - -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -// Default peripherals -#define MBED_SPI0 p5, p6, p7 -#define MBED_SPI1 p11, p12, p13, p14 -#define MBED_SPI2 p39, p38, p32, p31 - -#define MBED_UART3 p9, p10 -#define MBED_UART4 p37, p31 -#define MBED_UARTUSB USBTX, USBRX - -#define MBED_I2C0 p32, p31 -#define MBED_I2C1 p9, p10 - -#define MBED_CAN1 p9, p10 -#define MBED_CAN2 p34, p33 - -#define MBED_ANALOGOUT0 p18 - -#define MBED_ANALOGIN0 p15 -#define MBED_ANALOGIN1 p16 -#define MBED_ANALOGIN2 p17 -#define MBED_ANALOGIN3 p18 -#define MBED_ANALOGIN4 p19 -#define MBED_ANALOGIN5 p20 - -#define MBED_PWMOUT0 p30 -#define MBED_PWMOUT1 p29 -#define MBED_PWMOUT2 p28 -#define MBED_PWMOUT3 p27 -#define MBED_PWMOUT4 p26 -#define MBED_PWMOUT5 p25 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC4088/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 5 - -typedef enum { - // LPC Pin Names - P0_0 = /*LPC_GPIO0_BASE*/0, - P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, - P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, - P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31, - P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31, - P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31, - P5_0, P5_1, P5_2, P5_3, P5_4, - - // mbed DIP Pin Names - p5 = P1_24, - p6 = P1_23, - p7 = P1_20, - p8 = P0_21, - p9 = P0_0, - p10 = P0_1, - p11 = P0_9, - p12 = P0_8, - p13 = P0_7, - p14 = P0_6, - p15 = P0_23, - p16 = P0_24, - p17 = P0_25, - p18 = P0_26, - p19 = P1_30, - p20 = P1_31, - - p23 = P2_10, - p24 = P1_12, - p25 = P1_11, - p26 = P1_7, - p27 = P1_6, - p28 = P1_5, - p29 = P1_3, - p30 = P1_2, - p31 = P5_3, - p32 = P5_2, - p33 = P0_5, - p34 = P0_4, - - p37 = P5_4, - p38 = P5_1, - p39 = P5_0, - - // Other mbed Pin Names - LED1 = P1_18, - LED2 = P0_13, - LED3 = P1_13, - LED4 = P2_19, - - USBTX = P0_2, - USBRX = P0_3, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -typedef enum { - PullUp = 2, - PullDown = 1, - PullNone = 0, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - - - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC4088/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1, - Port2 = 2, - Port3 = 3, - Port4 = 4, - Port5 = 5 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC4088/TARGET_NXP/TARGET_LPC408X/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,119 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)LPC_UART0_BASE, + UART_1 = (int)LPC_UART1_BASE, + UART_2 = (int)LPC_UART2_BASE, + UART_3 = (int)LPC_UART3_BASE, + UART_4 = (int)LPC_UART4_BASE +} UARTName; + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7 +} ADCName; + +typedef enum { + DAC_0 = 0 +} DACName; + +typedef enum { + SPI_0 = (int)LPC_SSP0_BASE, + SPI_1 = (int)LPC_SSP1_BASE, + SPI_2 = (int)LPC_SSP2_BASE +} SPIName; + +typedef enum { + I2C_0 = (int)LPC_I2C0_BASE, + I2C_1 = (int)LPC_I2C1_BASE, + I2C_2 = (int)LPC_I2C2_BASE +} I2CName; + +typedef enum { + PWM0_1 = 1, + PWM0_2, + PWM0_3, + PWM0_4, + PWM0_5, + PWM0_6, + PWM1_1, + PWM1_2, + PWM1_3, + PWM1_4, + PWM1_5, + PWM1_6 +} PWMName; + +typedef enum { + CAN_1 = (int)LPC_CAN1_BASE, + CAN_2 = (int)LPC_CAN2_BASE +} CANName; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +// Default peripherals +#define MBED_SPI0 p5, p6, p7 +#define MBED_SPI1 p11, p12, p13, p14 +#define MBED_SPI2 p39, p38, p32, p31 + +#define MBED_UART3 p9, p10 +#define MBED_UART4 p37, p31 +#define MBED_UARTUSB USBTX, USBRX + +#define MBED_I2C0 p32, p31 +#define MBED_I2C1 p9, p10 + +#define MBED_CAN1 p9, p10 +#define MBED_CAN2 p34, p33 + +#define MBED_ANALOGOUT0 p18 + +#define MBED_ANALOGIN0 p15 +#define MBED_ANALOGIN1 p16 +#define MBED_ANALOGIN2 p17 +#define MBED_ANALOGIN3 p18 +#define MBED_ANALOGIN4 p19 +#define MBED_ANALOGIN5 p20 + +#define MBED_PWMOUT0 p30 +#define MBED_PWMOUT1 p29 +#define MBED_PWMOUT2 p28 +#define MBED_PWMOUT3 p27 +#define MBED_PWMOUT4 p26 +#define MBED_PWMOUT5 p25 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC4088/TARGET_NXP/TARGET_LPC408X/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,104 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 5 + +typedef enum { + // LPC Pin Names + P0_0 = /*LPC_GPIO0_BASE*/0, + P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, + P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, + P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31, + P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31, + P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31, + P5_0, P5_1, P5_2, P5_3, P5_4, + + // mbed DIP Pin Names + p5 = P1_24, + p6 = P1_23, + p7 = P1_20, + p8 = P0_21, + p9 = P0_0, + p10 = P0_1, + p11 = P0_9, + p12 = P0_8, + p13 = P0_7, + p14 = P0_6, + p15 = P0_23, + p16 = P0_24, + p17 = P0_25, + p18 = P0_26, + p19 = P1_30, + p20 = P1_31, + + p23 = P2_10, + p24 = P1_12, + p25 = P1_11, + p26 = P1_7, + p27 = P1_6, + p28 = P1_5, + p29 = P1_3, + p30 = P1_2, + p31 = P5_3, + p32 = P5_2, + p33 = P0_5, + p34 = P0_4, + + p37 = P5_4, + p38 = P5_1, + p39 = P5_0, + + // Other mbed Pin Names + LED1 = P1_18, + LED2 = P0_13, + LED3 = P1_13, + LED4 = P2_19, + + USBTX = P0_2, + USBRX = P0_3, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullUp = 2, + PullDown = 1, + PullNone = 0, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + + + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC4088/TARGET_NXP/TARGET_LPC408X/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,35 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1, + Port2 = 2, + Port3 = 3, + Port4 = 4, + Port5 = 5 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC4088/TARGET_NXP/TARGET_LPC408X/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,59 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 1 + +#define DEVICE_RTC 1 + +#define DEVICE_ETHERNET 1 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 32 +#define DEVICE_MAC_OFFSET 20 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 1 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_PATTERN 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC4088/TARGET_NXP/TARGET_LPC408X/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC4088/TARGET_NXP/TARGET_LPC408X/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,80 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t port; + uint32_t pin; + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_out; + __I uint32_t *reg_in; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + __IO uint32_t *MR; + LPC_PWM_TypeDef *pwm; + uint32_t channel; +}; + +struct serial_s { + LPC_UART_TypeDef *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct dac_s { + DACName dac; +}; + +struct can_s { + LPC_CAN_TypeDef *dev; + int index; +}; + +struct i2c_s { + LPC_I2C_TypeDef *i2c; +}; + +struct spi_s { + LPC_SSP_TypeDef *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC4088/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_LPC4088/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_ARM_STD/sys_helper.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_ARM_STD/system_LPC407x_8x_177x_8x.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_ARM/cmsis_nvic.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_ARM/retarget.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_ARM/system_LPC407x_8x_177x_8x.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_CR/board.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_CR/cmsis_nvic.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_CR/libmbed.a has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_CR/retarget.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_CR/startup_lpc407x_8x.o has changed
Binary file TARGET_LPC4088/TOOLCHAIN_GCC_CR/system_LPC407x_8x_177x_8x.o has changed
--- a/TARGET_LPC4088/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 1 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 1 - -#define DEVICE_RTC 1 - -#define DEVICE_ETHERNET 1 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 32 -#define DEVICE_MAC_OFFSET 20 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 1 - -#define DEVICE_STDIO_MESSAGES 1 - -#define DEVICE_ERROR_PATTERN 1 - -#include "objects.h" - -#endif
--- a/TARGET_LPC4088/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC4088/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t port; - uint32_t pin; - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_out; - __I uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - __IO uint32_t *MR; - LPC_PWM_TypeDef *pwm; - uint32_t channel; -}; - -struct serial_s { - LPC_UART_TypeDef *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct dac_s { - DACName dac; -}; - -struct can_s { - LPC_CAN_TypeDef *dev; - int index; -}; - -struct i2c_s { - LPC_I2C_TypeDef *i2c; -}; - -struct spi_s { - LPC_SSP_TypeDef *spi; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC812/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// Default peripherals -#define MBED_SPI0 P0_14, P0_15, P0_12, P0_13 - -#define MBED_UART0 P0_4, P0_0 -#define MBED_UARTUSB USBTX, USBRX - -#define MBED_I2C0 P0_10, P0_11 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC812/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -typedef enum { - P0_0 = 0, - P0_1 = 1, - P0_2 = 2, - P0_3 = 3, - P0_4 = 4, - P0_5 = 5, - P0_6 = 6, - P0_7 = 7, - P0_8 = 8, - P0_9 = 9, - P0_10 = 10, - P0_11 = 11, - P0_12 = 12, - P0_13 = 13, - P0_14 = 14, - P0_15 = 15, - P0_16 = 16, - P0_17 = 17, - - D0 = P0_0, - D1 = P0_4, - D2 = P0_6, - D3 = P0_8, - D4 = P0_9, - - D7 = P0_7, - D8 = P0_17, - D9 = P0_16, - D10 = P0_13, - D11 = P0_14, - D12 = P0_15, - D13 = P0_12, - - A4 = P0_10, - A5 = P0_11, - - // LPC800-MAX board - LED_RED = P0_7, - LED_GREEN = P0_17, - LED_BLUE = P0_16, - - // mbed original LED naming - LED1 = LED_BLUE, - LED2 = LED_GREEN, - LED3 = LED_RED, - LED4 = LED_RED, - - // Serial to USB pins - USBTX = P0_6, - USBRX = P0_1, - - // Not connected - NC = (int)0xFFFFFFFF, -} PinName; - -typedef enum { - PullUp = 2, - PullDown = 1, - PullNone = 0, - Repeater = 3, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX - -typedef struct { - unsigned char n; - unsigned char offset; -} SWM_Map; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC812/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC812/TARGET_NXP/TARGET_LPC81X/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,30 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC812/TARGET_NXP/TARGET_LPC81X/TARGET_LPC812/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,37 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Default peripherals +#define MBED_SPI0 P0_14, P0_15, P0_12, P0_13 + +#define MBED_UART0 P0_4, P0_0 +#define MBED_UARTUSB USBTX, USBRX + +#define MBED_I2C0 P0_10, P0_11 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC812/TARGET_NXP/TARGET_LPC81X/TARGET_LPC812/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,107 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +typedef enum { + P0_0 = 0, + P0_1 = 1, + P0_2 = 2, + P0_3 = 3, + P0_4 = 4, + P0_5 = 5, + P0_6 = 6, + P0_7 = 7, + P0_8 = 8, + P0_9 = 9, + P0_10 = 10, + P0_11 = 11, + P0_12 = 12, + P0_13 = 13, + P0_14 = 14, + P0_15 = 15, + P0_16 = 16, + P0_17 = 17, + + D0 = P0_0, + D1 = P0_4, + D2 = P0_6, + D3 = P0_8, + D4 = P0_9, + + D7 = P0_7, + D8 = P0_17, + D9 = P0_16, + D10 = P0_13, + D11 = P0_14, + D12 = P0_15, + D13 = P0_12, + + A4 = P0_10, + A5 = P0_11, + + // LPC800-MAX board + LED_RED = P0_7, + LED_GREEN = P0_17, + LED_BLUE = P0_16, + + // mbed original LED naming + LED1 = LED_BLUE, + LED2 = LED_GREEN, + LED3 = LED_RED, + LED4 = LED_RED, + + // Serial to USB pins + USBTX = P0_6, + USBRX = P0_1, + + // Not connected + NC = (int)0xFFFFFFFF, +} PinName; + +typedef enum { + PullUp = 2, + PullDown = 1, + PullNone = 0, + Repeater = 3, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX + +typedef struct { + unsigned char n; + unsigned char offset; +} SWM_Map; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC812/TARGET_NXP/TARGET_LPC81X/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,58 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 0 +#define DEVICE_PORTOUT 0 +#define DEVICE_PORTINOUT 0 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 0 +#define DEVICE_ANALOGOUT 0 + +#define DEVICE_SERIAL 1 +#define DEVICE_SERIAL_FC 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 0 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 0 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 0 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 0 + +#define DEVICE_ERROR_RED 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC812/TARGET_NXP/TARGET_LPC81X/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_LPC812/TARGET_NXP/TARGET_LPC81X/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,52 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t ch; +}; + +struct serial_s { + LPC_USART_TypeDef *uart; + unsigned char index; +}; + +struct i2c_s { + LPC_I2C_TypeDef *i2c; +}; + +struct spi_s { + LPC_SPI_TypeDef *spi; + unsigned char spi_n; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_LPC812/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_LPC812/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_LPC812/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_LPC812/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_LPC812/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_LPC812/TOOLCHAIN_ARM_MICRO/system_LPC8xx.o has changed
--- a/TARGET_LPC812/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 0 -#define DEVICE_PORTOUT 0 -#define DEVICE_PORTINOUT 0 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 0 -#define DEVICE_ANALOGOUT 0 - -#define DEVICE_SERIAL 1 -#define DEVICE_SERIAL_FC 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 0 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 0 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 0 - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 0 - -#define DEVICE_ERROR_RED 1 - -#include "objects.h" - -#endif
--- a/TARGET_LPC812/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_LPC812/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t ch; -}; - -struct serial_s { - LPC_USART_TypeDef *uart; - unsigned char index; -}; - -struct i2c_s { - LPC_I2C_TypeDef *i2c; -}; - -struct spi_s { - LPC_SPI_TypeDef *spi; - unsigned char spi_n; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NRF51822/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2013 Nordic Semiconductor - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define STDIO_UART_TX TX_PIN_NUMBER -#define STDIO_UART_RX RX_PIN_NUMBER -#define STDIO_UART UART_0 - -typedef enum { - UART_0 = (int)NRF_UART0_BASE -} UARTName; - - -typedef enum { - SPI_0 = (int)NRF_SPI0_BASE, - SPI_1 = (int)NRF_SPI1_BASE, - SPIS = (int)NRF_SPIS1_BASE -} SPIName; - -typedef enum { - PWM_1 = 0, - PWM_2 -} PWMName; - -typedef enum { - I2C_0 = (int)NRF_TWI0_BASE, - I2C_1 = (int)NRF_TWI1_BASE -} I2CName; - -typedef enum { - ADC0_0 = (int)NRF_ADC_BASE -} ADCName; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NRF51822/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2013 Nordic Semiconductor - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 3 - -typedef enum { - p0 = 0, - p1 = 1, - p2 = 2, - p3 = 3, - p4 = 4, - p5 = 5, - p6 = 6, - p7 = 7, - p8 = 8, - p9 = 9, - p10 = 10, - p11 = 11, - p12 = 12, - p13 = 13, - p14 = 14, - p15 = 15, - p16 = 16, - p17 = 17, - p18 = 18, - p19 = 19, - p20 = 20, - p21 = 21, - p22 = 22, - p23 = 23, - p24 = 24, - p25 = 25, - p26 = 26, - p27 = 27, - p28 = 28, - p29 = 29, - p30 = 30, -// p31=31, - - P0_0 = p0, - P0_1 = p1, - P0_2 = p2, - P0_3 = p3, - P0_4 = p4, - P0_5 = p5, - P0_6 = p6, - P0_7 = p7, - - P0_8 = p8, - P0_9 = p9, - P0_10 = p10, - P0_11 = p11, - P0_12 = p12, - P0_13 = p13, - P0_14 = p14, - P0_15 = p15, - - P0_16 = p16, - P0_17 = p17, - P0_18 = p18, - P0_19 = p19, - P0_20 = p20, - P0_21 = p21, - P0_22 = p22, - P0_23 = p23, - - P0_24 = p24, - P0_25 = p25, - P0_26 = p26, - P0_27 = p27, - P0_28 = p28, - P0_29 = p29, - P0_30 = p30, - - LED1 = p18, - LED2 = p19, - LED3 = p18, - LED4 = p19, - - BUTTON1 = p16, - BUTTON2 = p17, - - RX_PIN_NUMBER = p11, - TX_PIN_NUMBER = p9, - CTS_PIN_NUMBER = p10, - RTS_PIN_NUMBER = p8, - - // mBed interface Pins - USBTX = TX_PIN_NUMBER, - USBRX = RX_PIN_NUMBER, - - SPI_PSELMOSI0 = p20, - SPI_PSELMISO0 = p22, - SPI_PSELSS0 = p24, - SPI_PSELSCK0 = p25, - - SPI_PSELMOSI1 = p12, - SPI_PSELMISO1 = p13, - SPI_PSELSS1 = p14, - SPI_PSELSCK1 = p15, - - SPIS_PSELMOSI = p12, - SPIS_PSELMISO = p13, - SPIS_PSELSS = p14, - SPIS_PSELSCK = p15, - - I2C_SDA0 = p22, - I2C_SCL0 = p20, - - I2C_SDA1 = p13, - I2C_SCL1 = p15, - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -typedef enum { - PullNone = 0, - PullDown = 1, - PullUp = 3, - PullDefault = PullUp -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NRF51822/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2013 Nordic Semiconductor - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0 //GPIO pins 0-31 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,302 @@ +/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ +/** + @addtogroup BLE_COMMON BLE SoftDevice Common + @{ + @defgroup ble_api Events, type definitions and API calls + @{ + + @brief Module independent events, type definitions and API calls for the S110 SoftDevice. + + */ + +#ifndef BLE_H__ +#define BLE_H__ + +#include "ble_ranges.h" +#include "ble_types.h" +#include "ble_gap.h" +#include "ble_l2cap.h" +#include "ble_gatt.h" +#include "ble_gattc.h" +#include "ble_gatts.h" + +/** + * @brief Common API SVC numbers. + */ +enum BLE_COMMON_SVCS +{ + SD_BLE_EVT_GET = BLE_SVC_BASE, /**< Get an event from the pending events queue. */ + SD_BLE_TX_BUFFER_COUNT_GET, /**< Get the total number of available application transmission buffers from the stack. */ + SD_BLE_UUID_VS_ADD, /**< Add a Vendor Specific UUID. */ + SD_BLE_UUID_DECODE, /**< Decode UUID bytes. */ + SD_BLE_UUID_ENCODE, /**< Encode UUID bytes. */ + SD_BLE_VERSION_GET, /**< Get the local version information (company id, LMP Version, LMP Subversion). */ + SD_BLE_USER_MEM_REPLY, /**< User Memory Reply. */ +}; + +/** @brief Required pointer alignment for BLE Events. +*/ +#define BLE_EVTS_PTR_ALIGNMENT 4 + +/** @defgroup BLE_USER_MEM_TYPES User Memory Types + * @{ */ +#define BLE_USER_MEM_TYPE_INVALID 0x00 /**< Invalid User Memory Types. */ +#define BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES 0x01 /**< User Memory for GATTS queued writes. */ +/** @} */ + +/** @brief Maximum number of Vendor Specific UUIDs. +*/ +#define BLE_UUID_VS_MAX_COUNT 10 + +/** + * @brief BLE Module Independent Event IDs. + */ +enum BLE_COMMON_EVTS +{ + BLE_EVT_TX_COMPLETE = BLE_EVT_BASE, /**< Transmission Complete. */ + BLE_EVT_USER_MEM_REQUEST, /**< User Memory request. */ + BLE_EVT_USER_MEM_RELEASE /**< User Memory release. */ +}; + +/**@brief User Memory Block. */ +typedef struct +{ + uint8_t* p_mem; /**< Pointer to the start of the user memory block. */ + uint16_t len; /**< Length in bytes of the user memory block. */ +} ble_user_mem_block_t; + +/** + * @brief TX complete event. + */ +typedef struct +{ + uint8_t count; /**< Number of packets transmitted. */ +} ble_evt_tx_complete_t; + +/**@brief Event structure for BLE_EVT_USER_MEM_REQUEST. */ +typedef struct +{ + uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ +} ble_evt_user_mem_request_t; + +/**@brief Event structure for BLE_EVT_USER_MEM_RELEASE. */ +typedef struct +{ + uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ + ble_user_mem_block_t mem_block; /**< User memory block */ +} ble_evt_user_mem_release_t; + + +/**@brief Event structure for events not associated with a specific function module. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which this event occured. */ + union + { + ble_evt_tx_complete_t tx_complete; /**< Transmission Complete. */ + ble_evt_user_mem_request_t user_mem_request; /**< User Memory Request Event Parameters. */ + ble_evt_user_mem_release_t user_mem_release; /**< User Memory Release Event Parameters. */ + } params; +} ble_common_evt_t; + +/**@brief BLE Event header. */ +typedef struct +{ + uint16_t evt_id; /**< Value from a BLE_<module>_EVT series. */ + uint16_t evt_len; /**< Length in octets excluding this header. */ +} ble_evt_hdr_t; + +/**@brief Common BLE Event type, wrapping the module specific event reports. */ +typedef struct +{ + ble_evt_hdr_t header; /**< Event header. */ + union + { + ble_common_evt_t common_evt; /**< Common Event, evt_id in BLE_EVT_* series. */ + ble_gap_evt_t gap_evt; /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */ + ble_l2cap_evt_t l2cap_evt; /**< L2CAP originated event, evt_id in BLE_L2CAP_EVT* series. */ + ble_gattc_evt_t gattc_evt; /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */ + ble_gatts_evt_t gatts_evt; /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */ + } evt; +} ble_evt_t; + + +/** + * @brief Version Information. + */ +typedef struct +{ + uint8_t version_number; /**< LMP Version number for BT 4.0 spec is 6 (https://www.bluetooth.org/technical/assignednumbers/link_layer.htm). */ + uint16_t company_id; /**< Company ID, Nordic Semiconductor's company ID is 89 (0x0059) (https://www.bluetooth.org/apps/content/Default.aspx?doc_id=49708). */ + uint16_t subversion_number; /**< LMP Sub Version number corresponds to the SoftDevice Config ID. */ +} ble_version_t; + + +/**@brief Get an event from the pending events queue. + * + * @param[in] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. This buffer <b>must be 4-byte aligned in memory</b>. + * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length. + * + * @details This call allows the application to pull a BLE event from the BLE stack. The application is signalled that an event is + * available from the BLE Stack by the triggering of the SD_EVT_IRQn interrupt (mapped to IRQ 22). + * The application is free to choose whether to call this function from thread mode (main context) or directly from the Interrupt Service Routine + * that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher priority than the application, this function should be called + * in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the stack. + * Failure to do so could potentially leave events in the internal queue without the application being aware of this fact. + * Sizing the p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to be copied into + * application memory. If the buffer provided is not large enough to fit the entire contents of the event, @ref NRF_ERROR_DATA_SIZE will be returned + * and the application can then call again with a larger buffer size. + * Please note that because of the variable length nature of some events, sizeof(ble_evt_t) will not always be large enough to fit certain events, + * and so it is the application's responsability to provide an amount of memory large enough so that the relevant event is copied in full. + * The application may "peek" the event length by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return. + * + * @note The pointer supplied must be aligned to the extend defined by @ref BLE_EVTS_PTR_ALIGNMENT + * + * @return @ref NRF_SUCCESS Event pulled and stored into the supplied buffer. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. + * @return @ref NRF_ERROR_NOT_FOUND No events ready to be pulled. + * @return @ref NRF_ERROR_DATA_SIZE Event ready but could not fit into the supplied buffer. + */ +SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t* p_dest, uint16_t *p_len)); + + +/**@brief Get the total number of available application transmission buffers in the BLE stack. + * + * @details This call allows the application to obtain the total number of + * transmission buffers available for application data. Please note that + * this does not give the number of free buffers, but rather the total amount of them. + * The application has two options to handle its own application transmission buffers: + * - Use a simple arithmetic calculation: at boot time the application should use this function + * to find out the total amount of buffers available to it and store it in a variable. + * Every time a packet that consumes an application buffer is sent using any of the + * exposed functions in this BLE API, the application should decrement that variable. + * Conversely, whenever a @ref BLE_EVT_TX_COMPLETE event is received by the application + * it should retrieve the count field in such event and add that number to the same + * variable storing the number of available packets. + * This mechanism allows the application to be aware at any time of the number of + * application packets available in the BLE stack's internal buffers, and therefore + * it can know with certainty whether it is possible to send more data or it has to + * wait for a @ref BLE_EVT_TX_COMPLETE event before it proceeds. + * - Choose to simply not keep track of available buffers at all, and instead handle the + * @ref BLE_ERROR_NO_TX_BUFFERS error by queueing the packet to be transmitted and + * try again as soon as a @ref BLE_EVT_TX_COMPLETE event arrives. + * + * The API functions that <b>may</b> consume an application buffer depending on + * the parameters supplied to them can be found below: + * + * - @ref sd_ble_gattc_write (write witout response only) + * - @ref sd_ble_gatts_hvx (notifications only) + * - @ref sd_ble_l2cap_tx (all packets) + * + * @param[out] p_count Pointer to a uint8_t which will contain the number of application transmission buffers upon + * successful return. + * + * @return @ref NRF_SUCCESS Number of application transmission buffers retrieved successfully. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_TX_BUFFER_COUNT_GET, uint32_t, sd_ble_tx_buffer_count_get(uint8_t* p_count)); + + +/**@brief Add a Vendor Specific UUID. + * + * @details This call enables the application to add a vendor specific UUID to the BLE stack's table, + * for later use all other modules and APIs. This then allows the application to use the shorter, + * 24-bit @ref ble_uuid_t format when dealing with both 16-bit and 128-bit UUIDs without having to + * check for lengths and having split code paths. The way that this is accomplished is by extending the + * grouping mechanism that the Bluetooth SIG standard base UUID uses for all other 128-bit UUIDs. The + * type field in the @ref ble_uuid_t structure is an index (relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN) + * to the table populated by multiple calls to this function, and the uuid field in the same structure + * contains the 2 bytes at indices 12 and 13. The number of possible 128-bit UUIDs available to the + * application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536, + * although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array. + * + * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by + * the 16-bit uuid field in @ref ble_uuid_t. + * + * + * @param[in] p_vs_uuid Pointer to a 16-octet (128-bit) little endian Vendor Specific UUID disregarding + * bytes 12 and 13. + * @param[out] p_uuid_type Pointer where the type field in @ref ble_uuid_t corresponding to this UUID will be stored. + * + * @return @ref NRF_SUCCESS Successfully added the Vendor Specific UUID. + * @return @ref NRF_ERROR_INVALID_ADDR If p_vs_uuid or p_uuid_type is NULL or invalid. + * @return @ref NRF_ERROR_NO_MEM If there are no more free slots for VS UUIDs. + * @return @ref NRF_ERROR_FORBIDDEN If p_vs_uuid has already been added to the VS UUID table. + */ +SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const * const p_vs_uuid, uint8_t * const p_uuid_type)); + + +/** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure. + * + * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared + * to the corresponding ones in each entry of the table of vendor specific UUIDs pouplated with @ref sd_ble_uuid_vs_add + * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index + * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type. + * + * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE. + * + * @param[in] uuid_le_len Length in bytes of the buffer pointed to by p_uuid_le (must be 2 or 16 bytes). + * @param[in] p_uuid_le Pointer pointing to little endian raw UUID bytes. + * @param[in,out] p_uuid Pointer to a @ref ble_uuid_t structure to be filled in. + * + * @return @ref NRF_SUCCESS Successfully decoded into the @ref ble_uuid_t structure. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_LENGTH Invalid UUID length. + * @return @ref NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs. + */ +SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const * const p_uuid_le, ble_uuid_t * const p_uuid)); + + +/** @brief Encode a @ref ble_uuid_t structure into little endian raw UUID bytes (16-bit or 128-bit). + * + * @note The pointer to the destination buffer p_uuid_le may be NULL, in which case only the validitiy and size of p_uuid is computed. + * + * @param[in] p_uuid Pointer to a @ref ble_uuid_t structure that will be encoded into bytes. + * @param[out] p_uuid_le_len Pointer to a uint8_t that will be filled with the encoded length (2 or 16 bytes). + * @param[out] p_uuid_le Pointer to a buffer where the little endian raw UUID bytes (2 or 16) will be stored. + * + * @return @ref NRF_SUCCESS Successfully encoded into the buffer. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid UUID type. + */ +SVCALL(SD_BLE_UUID_ENCODE, uint32_t, sd_ble_uuid_encode(ble_uuid_t const * const p_uuid, uint8_t * const p_uuid_le_len, uint8_t * const p_uuid_le)); + + +/**@brief Get Version Information. + * + * @details This call allows the application to get the BLE stack version information. + * + * @param[in] p_version Pointer to ble_version_t structure to be filled in. + * + * @return @ref NRF_SUCCESS Version information stored successfully. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_BUSY The stack is busy (typically doing a locally-initiated disconnection procedure). + */ +SVCALL(SD_BLE_VERSION_GET, uint32_t, sd_ble_version_get(ble_version_t * p_version)); + + +/**@brief Provide a user memory block. + * + * @note This call can only be used as a response to a @ref BLE_EVT_USER_MEM_REQUEST event issued to the application. + * + * @param[in] conn_handle Connection handle. + * @param[in] p_block Pointer to a user memory block structure. + * + * @return @ref NRF_SUCCESS Successfully queued a response to the peer. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_STATE No execute write request pending. + */ +SVCALL(SD_BLE_USER_MEM_REPLY, uint32_t, sd_ble_user_mem_reply(uint16_t conn_handle, ble_user_mem_block_t *p_block)); + +#endif /* BLE_H__ */ + +/** + @} + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble_err.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ + /** + @addtogroup BLE_COMMON + @{ + @addtogroup nrf_error + @{ + @ingroup BLE_COMMON + @} + + @defgroup ble_err General error codes + @{ + + @brief General error code definitions for the BLE API. + + @ingroup BLE_COMMON +*/ +#ifndef NRF_BLE_ERR_H__ +#define NRF_BLE_ERR_H__ + +#include "nrf_error.h" + +/* @defgroup BLE_ERRORS Error Codes + * @{ */ +#define BLE_ERROR_INVALID_CONN_HANDLE (NRF_ERROR_STK_BASE_NUM+0x001) /**< Invalid connection handle. */ +#define BLE_ERROR_INVALID_ATTR_HANDLE (NRF_ERROR_STK_BASE_NUM+0x002) /**< Invalid attribute handle. */ +#define BLE_ERROR_NO_TX_BUFFERS (NRF_ERROR_STK_BASE_NUM+0x003) /**< Buffer capacity exceeded. */ +/** @} */ + + +/** @defgroup BLE_ERROR_SUBRANGES Module specific error code subranges + * @brief Assignment of subranges for module specific error codes. + * @note For specific error codes, see ble_<module>.h or ble_error_<module>.h. + * @{ */ +#define NRF_L2CAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x100) /**< L2CAP specific errors. */ +#define NRF_GAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x200) /**< GAP specific errors. */ +#define NRF_GATTC_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x300) /**< GATT client specific errors. */ +#define NRF_GATTS_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x400) /**< GATT server specific errors. */ +/** @} */ + +#endif + + +/** + @} + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble_gap.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,895 @@ +/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ +/** + @addtogroup BLE_GAP Generic Access Profile (GAP) + @{ + @brief Definitions and prototypes for the GAP interface. + */ + +#ifndef BLE_GAP_H__ +#define BLE_GAP_H__ + +#include "ble_types.h" +#include "ble_ranges.h" +#include "nrf_svc.h" + +/** + * @brief GAP API SVC numbers. + */ +enum BLE_GAP_SVCS +{ + SD_BLE_GAP_ADDRESS_SET = BLE_GAP_SVC_BASE, /**< Set own Bluetooth Address. */ + SD_BLE_GAP_ADDRESS_GET, /**< Get own Bluetooth Address. */ + SD_BLE_GAP_ADV_DATA_SET, /**< Set Advertisement Data. */ + SD_BLE_GAP_ADV_START, /**< Start Advertising. */ + SD_BLE_GAP_ADV_STOP, /**< Stop Advertising. */ + SD_BLE_GAP_CONN_PARAM_UPDATE, /**< Connection Parameter Update. */ + SD_BLE_GAP_DISCONNECT, /**< Disconnect. */ + SD_BLE_GAP_TX_POWER_SET, /**< Set TX Power. */ + SD_BLE_GAP_APPEARANCE_SET, /**< Set Appearance. */ + SD_BLE_GAP_APPEARANCE_GET, /**< Get Appearance. */ + SD_BLE_GAP_PPCP_SET, /**< Set PPCP. */ + SD_BLE_GAP_PPCP_GET, /**< Get PPCP. */ + SD_BLE_GAP_DEVICE_NAME_SET, /**< Set Device Name. */ + SD_BLE_GAP_DEVICE_NAME_GET, /**< Get Device Name. */ + SD_BLE_GAP_AUTHENTICATE, /**< Initiate Pairing/Bonding. */ + SD_BLE_GAP_SEC_PARAMS_REPLY, /**< Reply with Security Parameters. */ + SD_BLE_GAP_AUTH_KEY_REPLY, /**< Reply with an authentication key. */ + SD_BLE_GAP_SEC_INFO_REPLY, /**< Reply with Security Information. */ + SD_BLE_GAP_CONN_SEC_GET, /**< Obtain connection security level. */ + SD_BLE_GAP_RSSI_START, /**< Start reporting of changes in RSSI. */ + SD_BLE_GAP_RSSI_STOP, /**< Stop reporting of changes in RSSI. */ +}; + + +/** @addtogroup BLE_GAP_DEFINES Defines + * @{ */ + +/** @defgroup BLE_ERRORS_GAP SVC return values specific to GAP + * @{ */ +#define BLE_ERROR_GAP_UUID_LIST_MISMATCH (NRF_GAP_ERR_BASE + 0x000) /**< UUID list does not contain an integral number of UUIDs. */ +#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST (NRF_GAP_ERR_BASE + 0x001) /**< Use of Whitelist not permitted with discoverable advertising. */ +#define BLE_ERROR_GAP_INVALID_BLE_ADDR (NRF_GAP_ERR_BASE + 0x002) /**< The upper two bits of the address do not correspond to the specified address type. */ +/** @} */ + + +/** @defgroup BLE_GAP_ROLES GAP Roles + * @note Not explicitly used in peripheral API, but will be relevant for central API. + * @{ */ +#define BLE_GAP_ROLE_INVALID 0x0 /**< Invalid Role. */ +#define BLE_GAP_ROLE_PERIPH 0x1 /**< Peripheral Role. */ +#define BLE_GAP_ROLE_CENTRAL 0x2 /**< Central Role. */ +/** @} */ + + +/** @defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources + * @{ */ +#define BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT 0x00 /**< Advertisement timeout. */ +#define BLE_GAP_TIMEOUT_SRC_SECURITY_REQUEST 0x01 /**< Security request timeout. */ +/** @} */ + + +/** @defgroup BLE_GAP_ADDR_TYPES GAP Address types + * @{ */ +#define BLE_GAP_ADDR_TYPE_PUBLIC 0x00 /**< Public address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC 0x01 /**< Random Static address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE 0x02 /**< Private Resolvable address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Private Non-Resolvable address. */ +/** @} */ + + +/** @brief BLE address length. */ +#define BLE_GAP_ADDR_LEN 6 + + +/** @defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format + * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm + * @{ */ +#define BLE_GAP_AD_TYPE_FLAGS 0x01 /**< Flags for discoverability. */ +#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**< Partial list of 16 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**< Complete list of 16 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**< Partial list of 32 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**< Complete list of 32 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**< Partial list of 128 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**< Complete list of 128 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**< Short local device name. */ +#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**< Complete local device name. */ +#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**< Transmit power level. */ +#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**< Class of device. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**< Simple Pairing Hash C. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**< Simple Pairing Randomizer R. */ +#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**< Security Manager TK Value. */ +#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**< Security Manager Out Of Band Flags. */ +#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**< Slave Connection Interval Range. */ +#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**< List of 16-bit Service Solicitation UUIDs. */ +#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**< List of 128-bit Service Solicitation UUIDs. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**< Service Data. */ +#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**< Public Target Address. */ +#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**< Random Target Address. */ +#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**< Appearance. */ +#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /**< Manufacturer Specific Data. */ +/** @} */ + + +/** @defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags + * @{ */ +#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE (0x01) /**< LE Limited Discoverable Mode. */ +#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE (0x02) /**< LE General Discoverable Mode. */ +#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED (0x04) /**< BR/EDR not supported. */ +#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER (0x08) /**< Simultaneous LE and BR/EDR, Controller. */ +#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST (0x10) /**< Simultaneous LE and BR/EDR, Host. */ +#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE Limited Discoverable Mode, BR/EDR not supported. */ +#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE General Discoverable Mode, BR/EDR not supported. */ +/** @} */ + + +/** @defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min + * @{ */ +#define BLE_GAP_ADV_INTERVAL_MIN 0x0020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */ +#define BLE_GAP_ADV_NONCON_INTERVAL_MIN 0x00A0 /**< Minimum Advertising interval in 625 us units for non connectable mode, i.e. 100 ms. */ +#define BLE_GAP_ADV_INTERVAL_MAX 0x4000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. */ + /** @} */ + + +/** @brief Maximum size of advertising data in octets. */ +#define BLE_GAP_ADV_MAX_SIZE 31 + + +/** @defgroup BLE_GAP_ADV_TYPES GAP Advertising types + * @{ */ +#define BLE_GAP_ADV_TYPE_ADV_IND 0x00 /**< Connectable undirected. */ +#define BLE_GAP_ADV_TYPE_ADV_DIRECT_IND 0x01 /**< Connectable directed. */ +#define BLE_GAP_ADV_TYPE_ADV_SCAN_IND 0x02 /**< Scannable undirected. */ +#define BLE_GAP_ADV_TYPE_ADV_NONCONN_IND 0x03 /**< Non connectable undirected. */ +/** @} */ + + +/** @defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies + * @{ */ +#define BLE_GAP_ADV_FP_ANY 0x00 /**< Allow scan requests and connect requests from any device. */ +#define BLE_GAP_ADV_FP_FILTER_SCANREQ 0x01 /**< Filter scan requests with whitelist. */ +#define BLE_GAP_ADV_FP_FILTER_CONNREQ 0x02 /**< Filter connect requests with whitelist. */ +#define BLE_GAP_ADV_FP_FILTER_BOTH 0x03 /**< Filter both scan and connect requests with whitelist. */ +/** @} */ + + +/** @defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values + * @{ */ +#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX 180 /**< Maximum advertising time in limited discoverable mode (TGAP(lim_adv_timeout) = 180s in spec (Addendum 2)). */ +#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED 0 /**< Unlimited advertising in general discoverable mode. */ +/** @} */ + + +/** @defgroup BLE_GAP_DISC_MODES GAP Discovery modes + * @{ */ +#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE 0x00 /**< Not discoverable discovery Mode. */ +#define BLE_GAP_DISC_MODE_LIMITED 0x01 /**< Limited Discovery Mode. */ +#define BLE_GAP_DISC_MODE_GENERAL 0x02 /**< General Discovery Mode. */ +/** @} */ + +/** @defgroup BLE_GAP_IO_CAPS GAP IO Capabilities + * @{ */ +#define BLE_GAP_IO_CAPS_DISPLAY_ONLY 0x00 /**< Display Only. */ +#define BLE_GAP_IO_CAPS_DISPLAY_YESNO 0x01 /**< Display and Yes/No entry. */ +#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY 0x02 /**< Keyboard Only. */ +#define BLE_GAP_IO_CAPS_NONE 0x03 /**< No I/O capabilities. */ +#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY 0x04 /**< Keyboard and Display. */ +/** @} */ + + +/** @defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types + * @{ */ +#define BLE_GAP_AUTH_KEY_TYPE_NONE 0x00 /**< No key (may be used to reject). */ +#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY 0x01 /**< 6-digit Passkey. */ +#define BLE_GAP_AUTH_KEY_TYPE_OOB 0x02 /**< Out Of Band data. */ +/** @} */ + +/** @defgroup BLE_GAP_SEC_STATUS GAP Security status + * @{ */ +#define BLE_GAP_SEC_STATUS_SUCCESS 0x00 /**< Successful parameters. */ +#define BLE_GAP_SEC_STATUS_TIMEOUT 0x01 /**< Procedure timed out. */ +#define BLE_GAP_SEC_STATUS_PDU_INVALID 0x02 /**< Invalid PDU received. */ +#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED 0x81 /**< Passkey entry failed (user cancelled or other). */ +#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE 0x82 /**< Out of Band Key not available. */ +#define BLE_GAP_SEC_STATUS_AUTH_REQ 0x83 /**< Authentication requirements not met. */ +#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE 0x84 /**< Confirm value failed. */ +#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP 0x85 /**< Pairing not supported. */ +#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE 0x86 /**< Encryption key size. */ +#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED 0x87 /**< Unsupported SMP command. */ +#define BLE_GAP_SEC_STATUS_UNSPECIFIED 0x88 /**< Unspecified reason. */ +#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS 0x89 /**< Too little time elapsed since last attempt. */ +#define BLE_GAP_SEC_STATUS_INVALID_PARAMS 0x8A /**< Invalid parameters. */ +/** @} */ + +/** @defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources + * @{ */ +#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL 0x00 /**< Local failure. */ +#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE 0x01 /**< Remote failure. */ +/** @} */ + +/** @defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits + * @{ */ +#define BLE_GAP_CP_MIN_CONN_INTVL_NONE 0xFFFF /**< No new minimum connction interval specified in connect parameters. */ +#define BLE_GAP_CP_MIN_CONN_INTVL_MIN 0x0006 /**< Lowest mimimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ +#define BLE_GAP_CP_MIN_CONN_INTVL_MAX 0x0C80 /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_NONE 0xFFFF /**< No new maximum connction interval specified in connect parameters. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_MIN 0x0006 /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_MAX 0x0C80 /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ +#define BLE_GAP_CP_SLAVE_LATENCY_MAX 0x03E8 /**< Highest slave latency permitted, in connection events. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE 0xFFFF /**< No new supervision timeout specified in connect parameters. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN 0x000A /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX 0x0C80 /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */ +/** @} */ + + +/**@brief GAP device name maximum length. */ +#define BLE_GAP_DEVNAME_MAX_LEN 31 + + +/** @defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters + * + * See @ref ble_gap_conn_sec_mode_t. + * @{ */ +/** @brief Set sec_mode pointed to by ptr to have no access rights.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr) do {(ptr)->sm = 0; (ptr)->lv = 0;} while(0) +/** @brief Set sec_mode pointed to by ptr to require no protection, open link.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0) +/** @brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0) +/** @brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0) +/** @brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0) +/** @brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0) +/** @} */ + + +/**@brief GAP Security Key Length. */ +#define BLE_GAP_SEC_KEY_LEN 16 + +/**@brief Maximum amount of addresses in a whitelist. */ +#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8) + +/**@brief Maximum amount of IRKs in a whitelist. + * @note The number of IRKs is limited to 8, even if the hardware supports more. + */ +#define BLE_GAP_WHITELIST_IRK_MAX_COUNT (8) + +/** @defgroup GAP_SEC_MODES GAP Security Modes + * @{ */ +#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */ + +/** @} */ + + +/** @} */ + +/**@brief Bluetooth Low Energy address. */ +typedef struct +{ + uint8_t addr_type; /**< See @ref BLE_GAP_ADDR_TYPES. */ + uint8_t addr[BLE_GAP_ADDR_LEN]; /**< 48-bit address, LSB format. */ +} ble_gap_addr_t; + + +/**@brief GAP connection parameters. + * + * @note When ble_conn_params_t is received in an event, both min_conn_interval and + * max_conn_interval will be equal to the connection interval set by the central. + */ +typedef struct +{ + uint16_t min_conn_interval; /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t max_conn_interval; /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t slave_latency; /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t conn_sup_timeout; /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/ +} ble_gap_conn_params_t; + + +/**@brief GAP link requirements. + * + * See Bluetooth Core specification, Volume 3 Part C 10.2 for details. + * + * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n + * Security Mode 1 Level 1: No security is needed (aka open link).\n + * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n + * Security Mode 1 Level 3: MITM protected encrypted link required.\n + * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n + * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n + */ +typedef struct +{ + uint8_t sm : 4; /**< Security Mode (1 or 2), 0 for no permissions at all. */ + uint8_t lv : 4; /**< Level (1, 2 or 3), 0 for no permissions at all. */ + +} ble_gap_conn_sec_mode_t; + + + +/**@brief GAP connection security status.*/ +typedef struct +{ + ble_gap_conn_sec_mode_t sec_mode; /**< Currently active security mode for this connection.*/ + uint8_t encr_key_size; /**< Length of currently active encryption key, 7 to 16 octets.*/ +} ble_gap_conn_sec_t; + + + +/**@brief Identity Resolving Key. */ +typedef struct +{ + uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Array containing IRK. */ +} ble_gap_irk_t; + + +/**@brief Whitelist structure. */ +typedef struct +{ + ble_gap_addr_t ** pp_addrs; /**< Pointer to array of device address pointers, pointing to addresses to be used in whitelist. NULL if none are given. */ + uint8_t addr_count; /**< Count of device addresses in array, up to @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. */ + ble_gap_irk_t ** pp_irks; /**< Pointer to array of Identity Resolving Key (IRK) pointers, each pointing to an IRK in the whitelist. NULL if none are given. */ + uint8_t irk_count; /**< Count of IRKs in array, up to @ref BLE_GAP_WHITELIST_IRK_MAX_COUNT. */ +} ble_gap_whitelist_t; + + +/**@brief GAP advertising parameters.*/ +typedef struct +{ + uint8_t type; /**< See @ref BLE_GAP_ADV_TYPES. */ + ble_gap_addr_t* p_peer_addr; /**< For BLE_GAP_CONN_MODE_DIRECTED mode only, known peer address. */ + uint8_t fp; /**< Filter Policy, see @ref BLE_GAP_ADV_FILTER_POLICIES. */ + ble_gap_whitelist_t * p_whitelist; /**< Pointer to whitelist, NULL if none is given. */ + uint16_t interval; /**< Advertising interval between 0x0020 and 0x4000 in 0.625 ms units (20ms to 10.24s), see @ref BLE_GAP_ADV_INTERVALS. This parameter must be set to 0 if type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND. */ + uint16_t timeout; /**< Advertising timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. See also @ref BLE_GAP_ADV_TIMEOUT_VALUES. This parameter must be set to 0 if type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND. */ +} ble_gap_adv_params_t; + + +/**@brief GAP scanning parameters. */ +typedef struct +{ + uint8_t filter; /**< Filter based on discovery mode, see @ref BLE_GAP_DISC_MODES. */ + uint8_t active : 1; /**< If 1, perform active scanning (scan requests). */ + uint8_t selective : 1; /**< If 1, ignore unknown devices (non whitelisted). */ + uint16_t interval; /**< Scan interval between 0x0020 and 0x4000 in 0.625ms units (20ms to 10.24s). */ + uint16_t window; /**< Scan window between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */ + uint16_t timeout; /**< Scan timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. */ +} ble_gap_scan_params_t; + + +/**@brief GAP security parameters. */ +typedef struct +{ + uint16_t timeout; /**< Timeout for SMP transactions or Security Request in seconds, see @ref sd_ble_gap_authenticate and @ref sd_ble_gap_sec_params_reply for more information. */ + uint8_t bond : 1; /**< Perform bonding. */ + uint8_t mitm : 1; /**< Man In The Middle protection required. */ + uint8_t io_caps : 3; /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */ + uint8_t oob : 1; /**< Out Of Band data available. */ + uint8_t min_key_size; /**< Minimum encryption key size in octets between 7 and 16. */ + uint8_t max_key_size; /**< Maximum encryption key size in octets between min_key_size and 16. */ +} ble_gap_sec_params_t; + + +/**@brief GAP Encryption Information. */ +typedef struct +{ + uint16_t div; /**< Encryption Diversifier. */ + uint8_t ltk[BLE_GAP_SEC_KEY_LEN]; /**< Long Term Key. */ + uint8_t auth : 1; /**< Authenticated Key. */ + uint8_t ltk_len : 7; /**< LTK length in octets. */ +} ble_gap_enc_info_t; + + +/**@brief GAP Master Identification. */ +typedef struct +{ + uint16_t ediv; /**< Encrypted Diversifier. */ + uint8_t rand[8]; /**< Random Number. */ +} ble_gap_master_id_t; + + +/**@brief GAP Identity Information. */ +typedef struct +{ + ble_gap_addr_t addr; /**< Bluetooth address to which this key applies. */ + uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Identity Resolution Key. */ +} ble_gap_id_info_t; + + +/**@brief GAP Signing Information. */ +typedef struct +{ + uint8_t csrk[BLE_GAP_SEC_KEY_LEN]; /* Connection Signature Resolving Key. */ +} ble_gap_sign_info_t; + + + +/** + * @brief GAP Event IDs. + * Those IDs uniquely identify an event coming from the stack to the application. + */ +enum BLE_GAP_EVTS +{ + BLE_GAP_EVT_CONNECTED = BLE_GAP_EVT_BASE, /**< Connection established. */ + BLE_GAP_EVT_DISCONNECTED, /**< Disconnected from peer. */ + BLE_GAP_EVT_CONN_PARAM_UPDATE, /**< Connection Parameters updated. */ + BLE_GAP_EVT_SEC_PARAMS_REQUEST, /**< Request to provide security parameters. */ + BLE_GAP_EVT_SEC_INFO_REQUEST, /**< Request to provide security information. */ + BLE_GAP_EVT_PASSKEY_DISPLAY, /**< Request to display a passkey to the user. */ + BLE_GAP_EVT_AUTH_KEY_REQUEST, /**< Request to provide an authentication key. */ + BLE_GAP_EVT_AUTH_STATUS, /**< Authentication procedure completed with status. */ + BLE_GAP_EVT_CONN_SEC_UPDATE, /**< Connection security updated. */ + BLE_GAP_EVT_TIMEOUT, /**< Timeout expired. */ + BLE_GAP_EVT_RSSI_CHANGED, /**< Signal strength measurement report. */ +}; + + +/** @brief Event data for connected event. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ + uint8_t irk_match :1; /**< If 1, peer device's address resolved using an IRK. */ + uint8_t irk_match_idx :7; /**< Index in IRK list where the address was matched. */ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_connected_t; + + +/** @brief Event data for disconnected event. */ +typedef struct +{ + uint8_t reason; /**< HCI error code. */ +} ble_gap_evt_disconnected_t; + + +/** @brief Event data for connection parameter update event. */ +typedef struct +{ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_conn_param_update_t; + + +/** @brief Event data for security parameters request event. */ +typedef struct +{ + ble_gap_sec_params_t peer_params; /**< Initiator Security Parameters. */ +} ble_gap_evt_sec_params_request_t; + + +/** @brief Event data for securito info request event. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ + uint16_t div; /**< Encryption diversifier for LTK lookup. */ + uint8_t enc_info : 1; /**< If 1, Encryption Information required. */ + uint8_t id_info : 1; /**< If 1, Identity Information required. */ + uint8_t sign_info : 1; /**< If 1, Signing Information required. */ +} ble_gap_evt_sec_info_request_t; + + +/** @brief Event data for passkey display event. */ +typedef struct +{ + uint8_t passkey[6]; /**< 6-digit passkey in ASCII ('0'-'9' digits only). */ +} ble_gap_evt_passkey_display_t; + + +/** @brief Event data for authentication key request event. */ +typedef struct +{ + uint8_t key_type; /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */ +} ble_gap_evt_auth_key_request_t; + + +/** @brief Security levels supported. + * @note See Bluetooth Specification Version 4.0 Volume 3, Chapter 10. +*/ +typedef struct +{ + uint8_t lv1 : 1; /**< If 1: Level 1 is supported. */ + uint8_t lv2 : 1; /**< If 1: Level 2 is supported. */ + uint8_t lv3 : 1; /**< If 1: Level 3 is supported. */ +} ble_gap_sec_levels_t; + + +/** @brief Keys that have been exchanged. */ +typedef struct +{ + uint8_t ltk : 1; /**< Long Term Key. */ + uint8_t ediv_rand : 1; /**< Encrypted Diversifier and Random value. */ + uint8_t irk : 1; /**< Identity Resolving Key. */ + uint8_t address : 1; /**< Public or static random address. */ + uint8_t csrk : 1; /**< Connection Signature Resolving Key. */ +} ble_gap_sec_keys_t; + + +/** @brief Event data for authentication status event. */ +typedef struct +{ + uint8_t auth_status; /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */ + uint8_t error_src; /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */ + ble_gap_sec_levels_t sm1_levels; /**< Levels supported in Security Mode 1. */ + ble_gap_sec_levels_t sm2_levels; /**< Levels supported in Security Mode 2. */ + ble_gap_sec_keys_t periph_kex; /**< Bitmap stating which keys were exchanged (distributed) by the peripheral. */ + ble_gap_sec_keys_t central_kex; /**< Bitmap stating which keys were exchanged (distributed) by the central. */ + struct periph_keys_t + { + ble_gap_enc_info_t enc_info; /**< Peripheral's Encryption information. */ + } periph_keys; /**< Actual keys distributed from the Peripheral to the Central. */ + struct central_keys_t + { + ble_gap_irk_t irk; /**< Central's IRK. */ + ble_gap_addr_t id_info; /**< Central's Identity Info. */ + } central_keys; /**< Actual keys distributed from the Central to the Peripheral. */ +} ble_gap_evt_auth_status_t; + + +/** @brief Event data for connection security update event. */ +typedef struct +{ + ble_gap_conn_sec_t conn_sec; /**< Connection security level. */ +} ble_gap_evt_conn_sec_update_t; + + +/** @brief Event data for timeout event. */ +typedef struct +{ + uint8_t src; /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */ +} ble_gap_evt_timeout_t; + + +/** @brief Event data for advertisement report event. */ +typedef struct +{ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ +} ble_gap_evt_rssi_changed_t; + + + +/**@brief GAP event callback event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occured. */ + union /**< union alternative identified by evt_id in enclosing struct. */ + { + ble_gap_evt_connected_t connected; /**< Connected Event Parameters. */ + ble_gap_evt_disconnected_t disconnected; /**< Disconnected Event Parameters. */ + ble_gap_evt_conn_param_update_t conn_param_update; /**< Connection Parameter Update Parameters. */ + ble_gap_evt_sec_params_request_t sec_params_request; /**< Security Parameters Request Event Parameters. */ + ble_gap_evt_sec_info_request_t sec_info_request; /**< Security Information Request Event Parameters. */ + ble_gap_evt_passkey_display_t passkey_display; /**< Passkey Display Event Parameters. */ + ble_gap_evt_auth_key_request_t auth_key_request; /**< Authentication Key Request Event Parameters. */ + ble_gap_evt_auth_status_t auth_status; /**< Authentication Status Event Parameters. */ + ble_gap_evt_conn_sec_update_t conn_sec_update; /**< Connection Security Update Event Parameters. */ + ble_gap_evt_timeout_t timeout; /**< Timeout Event Parameters. */ + ble_gap_evt_rssi_changed_t rssi_changed; /**< RSSI Event parameters. */ + } params; + +} ble_gap_evt_t; + + +/**@brief Set local Bluetooth address. + * + * @param[in] p_addr Pointer to address structure. + * + * @return @ref NRF_SUCCESS Address successfully set. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address. + * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry. + */ +SVCALL(SD_BLE_GAP_ADDRESS_SET, uint32_t, sd_ble_gap_address_set(ble_gap_addr_t const * const p_addr)); + + +/**@brief Get local Bluetooth address. + * + * @param[out] p_addr Pointer to address structure. + * + * @return @ref NRF_SUCCESS Address successfully retrieved. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GAP_ADDRESS_GET, uint32_t, sd_ble_gap_address_get(ble_gap_addr_t * const p_addr)); + + +/**@brief Set, clear or update advertisement and scan response data. + * + * @note The format of the advertisement data will be checked by this call to ensure interoperability. + * Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and + * duplicating the local name in the advertisement data and scan response data. + * + * @note: To clear the advertisement data and set it to a 0-length packet, simply provide a valid pointer (p_data/p_sr_data) with its corresponding + * length (dlen/srdlen) set to 0. + * + * @note: The call will fail if p_data and p_sr_data are both NULL since this would have no effect. + * + * @param[in] p_data Raw data to be placed in advertisement packet. If NULL, no changes are made to the current advertisement packet data. + * @param[in] dlen Data length for p_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_data is NULL, can be 0 if p_data is not NULL. + * @param[in] p_sr_data Raw data to be placed in scan response packet. If NULL, no changes are made to the current scan response packet data. + * @param[in] srdlen Data length for p_sr_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_sr_data is NULL, can be 0 if p_data is not NULL. + * + * @return @ref NRF_SUCCESS Advertisement data successfully updated or cleared. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied. + * @return @ref NRF_ERROR_INVALID_DATA Invalid data type(s) supplied, check the advertising data format specification. + * @return @ref NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied. + * @return @ref BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied. + * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry. + */ +SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const * const p_data, uint8_t dlen, uint8_t const * const p_sr_data, uint8_t srdlen)); + + +/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). + * + * @param[in] p_adv_params Pointer to advertising parameters structure. + * + * @return @ref NRF_SUCCESS The BLE stack has started advertising. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check the accepted ranges and limits. + * @return @ref BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Bluetooth address supplied. + * @return @ref BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible. + */ +SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(ble_gap_adv_params_t const * const p_adv_params)); + + +/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). + * + * @return @ref NRF_SUCCESS The BLE stack has stopped advertising. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in advertising state). + */ +SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(void)); + + +/**@brief Update connection parameters. + * + * @details In the central role this will initiate a Link Layer connection parameter update procedure, + * otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for + * the central to perform the procedure. In both cases, and regardless of success or failure, the application + * will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event. + * + * @note If both a connection supervision timeout and a maximum connection interval are specified, then the following constraint + * applies: (conn_sup_timeout * 8) >= (max_conn_interval * (slave_latency + 1)) + * + * @param[in] conn_handle Connection handle. + * @param[in] p_conn_params Pointer to desired connection parameters. If NULL is provided on a peripheral role, + * the parameters in the PPCP characteristic of the GAP service will be used instead. + * + * @return @ref NRF_SUCCESS The Connection Update procedure has been started successfully. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. + * @return @ref NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, process pending events and retry. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const * const p_conn_params)); + + +/**@brief Disconnect (GAP Link Termination). + * + * @details This call initiates the disconnection procedure, and its completion will be communicated to the application + * with a BLE_GAP_EVT_DISCONNECTED event. + * + * @param[in] conn_handle Connection handle. + * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are BTLE_REMOTE_USER_TERMINATED_CONNECTION and BTLE_CONN_INTERVAL_UNACCEPTABLE). + * + * @return @ref NRF_SUCCESS The disconnection procedure has been started successfully. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation (disconnection is already in progress or not connected at all). + */ +SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code)); + + +/**@brief Set the radio's transmit power. + * + * @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -30, -20, -16, -12, -8, -4, 0, and 4 dBm). + * + * @note -40 dBm will not actually give -40 dBm, but will instead be remapped to -30 dBm. + * + * @return @ref NRF_SUCCESS Successfully changed the transmit power. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry. + */ +SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(int8_t tx_power)); + + +/**@brief Set GAP Appearance value. + * + * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES. + * + * @return @ref NRF_SUCCESS Appearance value set successfully. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance)); + + +/**@brief Get GAP Appearance value. + * + * @param[out] p_appearance Appearance (16-bit), see @ref BLE_APPEARANCES. + * + * @return @ref NRF_SUCCESS Appearance value retrieved successfully. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t * const p_appearance)); + + +/**@brief Set GAP Peripheral Preferred Connection Parameters. + * + * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters. + * + * @return @ref NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const * const p_conn_params)); + + +/**@brief Get GAP Peripheral Preferred Connection Parameters. + * + * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored. + * + * @return @ref NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t * const p_conn_params)); + + +/**@brief Set GAP device name. + * + * @param[in] p_write_perm Write permissions for the Device Name characteristic see @ref ble_gap_conn_sec_mode_t. + * @param[in] p_dev_name Pointer to a UTF-8 encoded, <b>non NULL-terminated</b> string. + * @param[in] len Length of the UTF-8, <b>non NULL-terminated</b> string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN). + * + * @return @ref NRF_SUCCESS GAP device name and permissions set successfully. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + */ +SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const * const p_write_perm, uint8_t const * const p_dev_name, uint16_t len)); + + +/**@brief Get GAP device name. + * + * @param[in] p_dev_name Pointer to an empty buffer where the UTF-8 <b>non NULL-terminated</b> string will be placed. Set to NULL to obtain the complete device name length. + * @param[in,out] p_len Length of the buffer pointed by p_dev_name, complete device name length on output. + * + * @note If the device name is longer than the size of the supplied buffer, + * p_len will return the complete device name length, + * and not the number of bytes actually returned in p_dev_name. + * The application may use this information to allocate a suitable buffer size. + * + * @return @ref NRF_SUCCESS GAP device name retrieved successfully. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + */ +SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t * const p_dev_name, uint16_t * const p_len)); + + +/**@brief Initiate GAP Authentication procedure. + * + * @param[in] conn_handle Connection handle. + * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing procedure. + * + * @details In the central role, this function will send an SMP Pairing Request, otherwise in the peripheral role, an SMP Security Request will be sent. + * In the peripheral role, only the timeout, bond and mitm fields of @ref ble_gap_sec_params_t are used. + * + * @note The GAP Authentication procedure may be triggered by the central without calling this function when accessing a secure service. + * @note Calling this function may result in the following events depending on the outcome and parameters: @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, + * @ref BLE_GAP_EVT_SEC_INFO_REQUEST, @ref BLE_GAP_EVT_AUTH_KEY_REQUEST, @ref BLE_GAP_EVT_AUTH_STATUS. + * @note The timeout parameter in @ref ble_gap_sec_params_t is interpreted here as the Security Request timeout + * + * + * @return @ref NRF_SUCCESS Successfully initiated authentication procedure. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const * const p_sec_params)); + + +/**@brief Reply with GAP security parameters. + * + * @param[in] conn_handle Connection handle. + * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS. + * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * @note The timeout parameter in @ref ble_gap_sec_params_t is interpreted here as the SMP procedure timeout, and must be 30 seconds. The function will fail + * if the application supplies a different value. + * + * @return @ref NRF_SUCCESS Successfully accepted security parameter from the application. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const * const p_sec_params)); + + +/**@brief Reply with an authentication key. + * + * @param[in] conn_handle Connection handle. + * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES. + * @param[in] key If key type is BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL. + * If key type is BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination). + * If key type is BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in Little Endian format. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @return @ref NRF_SUCCESS Authentication key successfully set. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const * const key)); + + +/**@brief Reply with GAP security information. + * + * @param[in] conn_handle Connection handle. + * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available. + * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * @note Data signing is not implemented yet. p_sign_info must therefore be NULL. + * + * @return @ref NRF_SUCCESS Successfully accepted security information. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry. + */ +SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const * const p_enc_info, ble_gap_sign_info_t const * const p_sign_info)); + + +/**@brief Get the current connection security. + * + * @param[in] conn_handle Connection handle. + * @param[out] p_conn_sec Pointer to a @ref ble_gap_conn_sec_t structure to be filled in. + * + * @return @ref NRF_SUCCESS Current connection security successfully retrieved. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t * const p_conn_sec)); + + +/**@brief Start reporting the received signal strength to the application. + * + * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called. + * + * @param[in] conn_handle Connection handle. + * + * @return @ref NRF_SUCCESS Successfully activated RSSI reporting. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle)); + + +/**@brief Stop reporting the received singnal strength. + * + * An RSSI change detected before the call but not yet received by the application + * may be reported after @ref sd_ble_gap_rssi_stop has been called. + * + * @param[in] conn_handle Connection handle. + * + * @return @ref NRF_SUCCESS Successfully deactivated RSSI reporting. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle)); + +#endif // BLE_GAP_H__ + +/** + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble_gatt.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,166 @@ +/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ + /** + @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common + @{ + @brief Common definitions and prototypes for the GATT interfaces. + */ + +#ifndef BLE_GATT_H__ +#define BLE_GATT_H__ + +#include "ble_types.h" +#include "ble_ranges.h" + + +/** @addtogroup BLE_GATT_DEFINES Defines + * @{ */ + +/** @brief Default MTU size. */ +#define GATT_MTU_SIZE_DEFAULT 23 + +/** @brief Only the default MTU size of 23 is currently supported. */ +#define GATT_RX_MTU 23 + + +/**@brief Invalid Attribute Handle. */ +#define BLE_GATT_HANDLE_INVALID 0x0000 + +/** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources + * @{ */ +#define BLE_GATT_TIMEOUT_SRC_PROTOCOL 0x00 /**< ATT Protocol timeout. */ +/** @} */ + +/** @defgroup BLE_GATT_WRITE_OPS GATT Write operations + * @{ */ +#define BLE_GATT_OP_INVALID 0x00 /**< Invalid Operation. */ +#define BLE_GATT_OP_WRITE_REQ 0x01 /**< Write Request. */ +#define BLE_GATT_OP_WRITE_CMD 0x02 /**< Write Command. */ +#define BLE_GATT_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ +#define BLE_GATT_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ +#define BLE_GATT_OP_EXEC_WRITE_REQ 0x05 /**< Execute Write Request. */ +/** @} */ + +/** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags + * @{ */ +#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00 +#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE 0x01 +/** @} */ + +/** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations + * @{ */ +#define BLE_GATT_HVX_INVALID 0x00 /**< Invalid Operation. */ +#define BLE_GATT_HVX_NOTIFICATION 0x01 /**< Handle Value Notification. */ +#define BLE_GATT_HVX_INDICATION 0x02 /**< Handle Value Indication. */ +/** @} */ + +/** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes + * @{ */ +#define BLE_GATT_STATUS_SUCCESS 0x0000 /**< Success. */ +#define BLE_GATT_STATUS_UNKNOWN 0x0001 /**< Unknown or not applicable status. */ +#define BLE_GATT_STATUS_ATTERR_INVALID 0x0100 /**< ATT Error: Invalid Error Code. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE 0x0101 /**< ATT Error: Invalid Attribute Handle. */ +#define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED 0x0102 /**< ATT Error: Read not permitted. */ +#define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED 0x0103 /**< ATT Error: Write not permitted. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_PDU 0x0104 /**< ATT Error: Used in ATT as Invalid PDU. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION 0x0105 /**< ATT Error: Authenticated link required. */ +#define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED 0x0106 /**< ATT Error: Used in ATT as Request Not Supported. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET 0x0107 /**< ATT Error: Offset specified was past the end of the attribute. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION 0x0108 /**< ATT Error: Used in ATT as Insufficient Authorisation. */ +#define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL 0x0109 /**< ATT Error: Used in ATT as Prepare Queue Full. */ +#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND 0x010A /**< ATT Error: Used in ATT as Attribute not found. */ +#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG 0x010B /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE 0x010C /**< ATT Error: Encryption key size used is insufficient. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH 0x010D /**< ATT Error: Invalid value size. */ +#define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR 0x010E /**< ATT Error: Very unlikely error. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION 0x010F /**< ATT Error: Encrypted link required. */ +#define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE 0x0110 /**< ATT Error: Attribute type is not a supported grouping attribute. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES 0x0111 /**< ATT Error: Encrypted link required. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN 0x0112 /**< ATT Error: Reserved for Future Use range #1 begin. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END 0x017F /**< ATT Error: Reserved for Future Use range #1 end. */ +#define BLE_GATT_STATUS_ATTERR_APP_BEGIN 0x0180 /**< ATT Error: Application range begin. */ +#define BLE_GATT_STATUS_ATTERR_APP_END 0x019F /**< ATT Error: Application range end. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN 0x01A0 /**< ATT Error: Reserved for Future Use range #2 begin. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END 0x01DF /**< ATT Error: Reserved for Future Use range #2 end. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN 0x01E0 /**< ATT Error: Reserved for Future Use range #3 begin. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END 0x01FC /**< ATT Error: Reserved for Future Use range #3 end. */ +#define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR 0x01FD /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */ +#define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG 0x01FE /**< ATT Common Profile and Service Error: Procedure Already in Progress. */ +#define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE 0x01FF /**< ATT Common Profile and Service Error: Out Of Range. */ +/** @} */ + + +/** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats + * @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml + * @{ */ +#define BLE_GATT_CPF_FORMAT_RFU 0x00 /**< Reserved For Future Use. */ +#define BLE_GATT_CPF_FORMAT_BOOLEAN 0x01 /**< Boolean. */ +#define BLE_GATT_CPF_FORMAT_2BIT 0x02 /**< Unsigned 2-bit integer. */ +#define BLE_GATT_CPF_FORMAT_NIBBLE 0x03 /**< Unsigned 4-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT8 0x04 /**< Unsigned 8-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT12 0x05 /**< Unsigned 12-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT16 0x06 /**< Unsigned 16-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT24 0x07 /**< Unsigned 24-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT32 0x08 /**< Unsigned 32-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT48 0x09 /**< Unsigned 48-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT64 0x0A /**< Unsigned 64-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT128 0x0B /**< Unsigned 128-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT8 0x0C /**< Signed 2-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT12 0x0D /**< Signed 12-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT16 0x0E /**< Signed 16-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT24 0x0F /**< Signed 24-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT32 0x10 /**< Signed 32-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT48 0x11 /**< Signed 48-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT64 0x12 /**< Signed 64-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT128 0x13 /**< Signed 128-bit integer. */ +#define BLE_GATT_CPF_FORMAT_FLOAT32 0x14 /**< IEEE-754 32-bit floating point. */ +#define BLE_GATT_CPF_FORMAT_FLOAT64 0x15 /**< IEEE-754 64-bit floating point. */ +#define BLE_GATT_CPF_FORMAT_SFLOAT 0x16 /**< IEEE-11073 16-bit SFLOAT. */ +#define BLE_GATT_CPF_FORMAT_FLOAT 0x17 /**< IEEE-11073 32-bit FLOAT. */ +#define BLE_GATT_CPF_FORMAT_DUINT16 0x18 /**< IEEE-20601 format. */ +#define BLE_GATT_CPF_FORMAT_UTF8S 0x19 /**< UTF-8 string. */ +#define BLE_GATT_CPF_FORMAT_UTF16S 0x1A /**< UTF-16 string. */ +#define BLE_GATT_CPF_FORMAT_STRUCT 0x1B /**< Opaque Structure. */ +/** @} */ + +/** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces + * @{ + */ +#define BLE_GATT_CPF_NAMESPACE_BTSIG 0x01 +#define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000 +/** @} */ + +/** @} */ + +/**@brief GATT Characteristic Properties. */ +typedef struct +{ + /* Standard properties */ + uint8_t broadcast :1; /**< Broadcasting of value permitted. */ + uint8_t read :1; /**< Reading value permitted. */ + uint8_t write_wo_resp :1; /**< Writing value with Write Command permitted. */ + uint8_t write :1; /**< Writing value with Write Request permitted. */ + uint8_t notify :1; /**< Notications of value permitted. */ + uint8_t indicate :1; /**< Indications of value permitted. */ + uint8_t auth_signed_wr :1; /**< Writing value with Signed Write Command permitted. */ +} ble_gatt_char_props_t; + +/**@brief GATT Characteristic Extended Properties. */ +typedef struct +{ + /* Extended properties */ + uint8_t reliable_wr :1; /**< Writing value with Queued Write Request permitted. */ + uint8_t wr_aux :1; /**< Writing the Characteristic User Description permitted. */ +} ble_gatt_char_ext_props_t; + +#endif // BLE_GATT_H__ + +/** + @} + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble_gattc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,395 @@ +/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ +/** + @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client + @{ + @brief Definitions and prototypes for the GATT Client interface. + */ + +#ifndef BLE_GATTC_H__ +#define BLE_GATTC_H__ + +#include "ble_gatt.h" +#include "ble_types.h" +#include "ble_ranges.h" +#include "nrf_svc.h" + + +/**@brief GATTC API SVC numbers. */ +enum BLE_GATTC_SVCS +{ + SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */ + SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, /**< Relationship Discovery. */ + SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, /**< Characteristic Discovery. */ + SD_BLE_GATTC_DESCRIPTORS_DISCOVER, /**< Characteristic Descriptor Discovery. */ + SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, /**< Read Characteristic Value by UUID. */ + SD_BLE_GATTC_READ, /**< Generic read. */ + SD_BLE_GATTC_CHAR_VALUES_READ, /**< Read multiple Characteristic Values. */ + SD_BLE_GATTC_WRITE, /**< Generic write. */ + SD_BLE_GATTC_HV_CONFIRM /**< Handle Value Confirmation. */ +}; + +/** @addtogroup BLE_GATTC_DEFINES Defines + * @{ */ + +/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC + * @{ */ +#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED (NRF_GATTC_ERR_BASE + 0x000) +/** @} */ + +/**@brief Last Attribute Handle. */ +#define BLE_GATTC_HANDLE_END 0xFFFF + +/** @} */ + +/**@brief Operation Handle Range. */ +typedef struct +{ + uint16_t start_handle; /**< Start Handle. */ + uint16_t end_handle; /**< End Handle. */ +} ble_gattc_handle_range_t; + + +/**@brief GATT service. */ +typedef struct +{ + ble_uuid_t uuid; /**< Service UUID. */ + ble_gattc_handle_range_t handle_range; /**< Service Handle Range. */ +} ble_gattc_service_t; + + +/**@brief GATT include. */ +typedef struct +{ + uint16_t handle; /**< Include Handle. */ + ble_gattc_service_t included_srvc; /**< Handle of the included service. */ +} ble_gattc_include_t; + + +/**@brief GATT characteristic. */ +typedef struct +{ + ble_uuid_t uuid; /**< Characteristic UUID. */ + ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ + uint8_t char_ext_props : 1; /**< Extended properties present. */ + uint16_t handle_decl; /**< Handle of the Characteristic Declaration. */ + uint16_t handle_value; /**< Handle of the Characteristic Value. */ +} ble_gattc_char_t; + + +/**@brief GATT descriptor. */ +typedef struct +{ + uint16_t handle; /**< Descriptor Handle. */ + ble_uuid_t uuid; /**< Descriptor UUID. */ +} ble_gattc_desc_t; + + +/**@brief Write Parameters. */ +typedef struct +{ + uint8_t write_op; /**< Write Operation to be performed, see BLE_GATT_WRITE_OPS. */ + uint16_t handle; /**< Handle to the attribute to be written. */ + uint16_t offset; /**< Offset in bytes. */ + uint16_t len; /**< Length of data in bytes. */ + uint8_t* p_value; /**< Pointer to the value data. */ + uint8_t flags; /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */ +} ble_gattc_write_params_t; + + +/** + * @brief GATT Client Event IDs. + */ +enum BLE_GATTC_EVTS +{ + BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE, /**< Primary Service Discovery Response event. */ + BLE_GATTC_EVT_REL_DISC_RSP, /**< Relationship Discovery Response event. */ + BLE_GATTC_EVT_CHAR_DISC_RSP, /**< Characteristic Discovery Response event. */ + BLE_GATTC_EVT_DESC_DISC_RSP, /**< Descriptor Discovery Response event. */ + BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP, /**< Read By UUID Response event. */ + BLE_GATTC_EVT_READ_RSP, /**< Read Response event. */ + BLE_GATTC_EVT_CHAR_VALS_READ_RSP, /**< Read multiple Response event. */ + BLE_GATTC_EVT_WRITE_RSP, /**< Write Response event. */ + BLE_GATTC_EVT_HVX, /**< Handle Value Notification or Indication event. */ + BLE_GATTC_EVT_TIMEOUT /**< Timeout event. */ +}; + +/**@brief Event structure for BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Service count. */ + ble_gattc_service_t services[1]; /**< Service data, variable length. */ +} ble_gattc_evt_prim_srvc_disc_rsp_t; + +/**@brief Event structure for BLE_GATTC_EVT_REL_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Include count. */ + ble_gattc_include_t includes[1]; /**< Include data, variable length. */ +} ble_gattc_evt_rel_disc_rsp_t; + +/**@brief Event structure for BLE_GATTC_EVT_CHAR_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Characteristic count. */ + ble_gattc_char_t chars[1]; /**< Characteristic data, variable length. */ +} ble_gattc_evt_char_disc_rsp_t; + +/**@brief Event structure for BLE_GATTC_EVT_DESC_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Descriptor count. */ + ble_gattc_desc_t descs[1]; /**< Descriptor data, variable length. */ +} ble_gattc_evt_desc_disc_rsp_t; + +/**@brief GATT read by UUID handle value pair. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint8_t *p_value; /**< Pointer to value, variable length (length available as value_len in ble_gattc_evt_read_by_uuid_rsp_t). + Please note that this pointer is absolute to the memory provided by the user when retrieving the event, + so it will effectively point to a location inside the handle_value array. */ +} ble_gattc_handle_value_t; + +/**@brief Event structure for BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */ +typedef struct +{ + uint16_t count; /**< Handle-Value Pair Count. */ + uint16_t value_len; /**< Length of the value in Handle-Value(s) list. */ + ble_gattc_handle_value_t handle_value[1]; /**< Handle-Value(s) list, variable length. */ +} ble_gattc_evt_char_val_by_uuid_read_rsp_t; + +/**@brief Event structure for BLE_GATTC_EVT_READ_RSP. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint16_t offset; /**< Offset of the attribute data. */ + uint16_t len; /**< Attribute data length. */ + uint8_t data[1]; /**< Attribute data, variable length. */ +} ble_gattc_evt_read_rsp_t; + +/**@brief Event structure for BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */ +typedef struct +{ + uint16_t len; /**< Concatenated Attribute values length. */ + uint8_t values[1]; /**< Attribute values, variable length. */ +} ble_gattc_evt_char_vals_read_rsp_t; + +/**@brief Event structure for BLE_GATTC_EVT_WRITE_RSP. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint8_t write_op; /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */ + uint16_t offset; /**< Data Offset. */ + uint16_t len; /**< Data length. */ + uint8_t data[1]; /**< Data, variable length. */ +} ble_gattc_evt_write_rsp_t; + +/**@brief Event structure for BLE_GATTC_EVT_HVX. */ +typedef struct +{ + uint16_t handle; /**< Handle to which the HVx operation applies. */ + uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ + uint16_t len; /**< Attribute data length. */ + uint8_t data[1]; /**< Attribute data, variable length. */ +} ble_gattc_evt_hvx_t; + +/**@brief Event structure for BLE_GATTC_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ +} ble_gattc_evt_timeout_t; + +/**@brief GATTC event type. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occured. */ + uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ + uint16_t error_handle; /**< In case of error: The handle causing the error. In all other cases BLE_GATT_HANDLE_INVALID. */ + union + { + ble_gattc_evt_prim_srvc_disc_rsp_t prim_srvc_disc_rsp; /**< Primary Service Discovery Response Event Parameters. */ + ble_gattc_evt_rel_disc_rsp_t rel_disc_rsp; /**< Relationship Discovery Response Event Parameters. */ + ble_gattc_evt_char_disc_rsp_t char_disc_rsp; /**< Characteristic Discovery Response Event Parameters. */ + ble_gattc_evt_desc_disc_rsp_t desc_disc_rsp; /**< Descriptor Discovery Response Event Parameters. */ + ble_gattc_evt_char_val_by_uuid_read_rsp_t char_val_by_uuid_read_rsp; /**< Characteristic Value Read by UUID Response Event Parameters. */ + ble_gattc_evt_read_rsp_t read_rsp; /**< Read Response Event Parameters. */ + ble_gattc_evt_char_vals_read_rsp_t char_vals_read_rsp; /**< Characteristic Values Read Response Event Parameters. */ + ble_gattc_evt_write_rsp_t write_rsp; /**< Write Response Event Parameters. */ + ble_gattc_evt_hvx_t hvx; /**< Handle Value Notification/Indication Event Parameters. */ + ble_gattc_evt_timeout_t timeout; /**< Timeout Event Parameters. */ + } params; /**< Event Parameters. @note Only valid if @ref gatt_status == BLE_GATT_STATUS_SUCCESS. */ +} ble_gattc_evt_t; + + +/**@brief Initiate or continue a GATT Primary Service Discovery procedure. + * + * @details This function initiates a Primary Service discovery, starting from the supplied handle. + * If the last service has not been reached, this must be called again with an updated start handle value to continue the search. + * + * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with + * type BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] start_handle Handle to start searching from. + * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned. + * + * @return @ref NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const * const p_srvc_uuid)); + + +/**@brief Initiate or continue a GATT Relationship Discovery procedure. + * + * @details This function initiates the Find Included Services sub-procedure. If the last included service has not been reached, + * this must be called again with an updated handle range to continue the search. + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. + * + * @return @ref NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range)); + + +/**@brief Initiate or continue a GATT Characteristic Discovery procedure. + * + * @details This function initiates a Characteristic discovery procedure. If the last Characteristic has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with + * type BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. + * + * @return @ref NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range)); + + +/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure. + * + * @details This function initiates the Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on. + * + * @return @ref NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range)); + + +/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure. + * + * @details This function initiates the Read using Characteristic UUID procedure. If the last Characteristic has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_uuid Pointer to a Characteristic value UUID to read. + * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on. + * + * @return @ref NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const * const p_uuid, ble_gattc_handle_range_t const * const p_handle_range)); + + +/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure. + * + * @details This function initiates a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor + * to be read is longer than GATT_MTU - 1, this function must be called multiple times with appropriate offset to read the + * complete value. + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] handle The handle of the attribute to be read. + * @param[in] offset Offset into the attribute value to be read. + * + * @return @ref NRF_SUCCESS Successfully started or resumed the Read (Long) procedure. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset)); + + +/**@brief Initiate a GATT Read Multiple Characteristic Values procedure. + * + * @details This function initiates a GATT Read Multiple Characteristic Values procedure. + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read. + * @param[in] handle_count The number of handles in p_handles. + * + * @return @ref NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const * const p_handles, uint16_t handle_count)); + + +/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure. + * + * @details This function can perform all write procedures described in GATT. + * + * @note It is important to note that a write without response will <b>consume an application buffer</b>, and will therefore + * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. A write on the other hand will use the + * standard client internal buffer and thus will only generate a @ref BLE_GATTC_EVT_WRITE_RSP event as soon as the write response + * has been received from the peer. Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details. + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_write_params A pointer to a write parameters structure. + * + * @return @ref NRF_SUCCESS Successfully started the Write procedure. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @return @ref NRF_ERROR_BUSY Procedure already in progress. + * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers left. + */ +SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const * const p_write_params)); + + +/**@brief Send a Handle Value Confirmation to the GATT Server. + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] handle The handle of the attribute in the indication. + * + * @return @ref NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_STATE No Indication pending to be confirmed. + * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle. + * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers left. + */ +SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle)); + + +#endif /* BLE_GATTC_H__ */ + +/** + @} + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble_gatts.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,547 @@ +/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ +/** + @addtogroup BLE_GATTS Generic Attribute Profile (GATT) Server + @{ + @brief Definitions and prototypes for the GATTS interface. + */ + +#ifndef BLE_GATTS_H__ +#define BLE_GATTS_H__ + +#include "ble_types.h" +#include "ble_ranges.h" +#include "ble_l2cap.h" +#include "ble_gap.h" +#include "ble_gatt.h" +#include "nrf_svc.h" + + +/** + * @brief GATTS API SVC numbers. + */ +enum BLE_GATTS_SVCS +{ + SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */ + SD_BLE_GATTS_INCLUDE_ADD, /**< Add an included service. */ + SD_BLE_GATTS_CHARACTERISTIC_ADD, /**< Add a characteristic. */ + SD_BLE_GATTS_DESCRIPTOR_ADD, /**< Add a generic attribute. */ + SD_BLE_GATTS_VALUE_SET, /**< Set an attribute value. */ + SD_BLE_GATTS_VALUE_GET, /**< Get an attribute value. */ + SD_BLE_GATTS_HVX, /**< Handle Value Notification or Indication. */ + SD_BLE_GATTS_SERVICE_CHANGED, /**< Perform a Service Changed Indication to one or more peers. */ + SD_BLE_GATTS_RW_AUTHORIZE_REPLY, /**< Reply to an authorization request for a read or write operation on one or more attributes. */ + SD_BLE_GATTS_SYS_ATTR_SET, /**< Set the persistent system attributes for a connection. */ + SD_BLE_GATTS_SYS_ATTR_GET, /**< Get updated persistent system attributes after terminating a connection. */ +}; + + +/** @addtogroup BLE_GATTS_DEFINES Defines + * @{ */ + +/** @brief Only the default MTU size of 23 is currently supported. */ +#define GATT_RX_MTU 23 + +/** @defgroup BLE_ERRORS_GATTS SVC return values specific to GATTS + * @{ */ +#define BLE_ERROR_GATTS_INVALID_ATTR_TYPE (NRF_GATTS_ERR_BASE + 0x000) /**< Invalid attribute type. */ +#define BLE_ERROR_GATTS_SYS_ATTR_MISSING (NRF_GATTS_ERR_BASE + 0x001) /**< System Attributes missing. */ +/** @} */ + +/** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths + * @{ */ +#define BLE_GATTS_FIX_ATTR_LEN_MAX (510) /**< Maximum length for fixed length Attribute Values. */ +#define BLE_GATTS_VAR_ATTR_LEN_MAX (512) /**< Maximum length for variable length Attribute Values. */ +/** @} */ + +/** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types + * @{ */ +#define BLE_GATTS_SRVC_TYPE_INVALID 0x00 /**< Invalid Service Type. */ +#define BLE_GATTS_SRVC_TYPE_PRIMARY 0x01 /**< Primary Service. */ +#define BLE_GATTS_SRVC_TYPE_SECONDARY 0x02 /**< Secondary Type. */ +/** @} */ + + +/** @defgroup BLE_GATTS_ATTR_TYPES GATT Server Attribute Types + * @{ */ +#define BLE_GATTS_ATTR_TYPE_INVALID 0x00 /**< Invalid Attribute Type. */ +#define BLE_GATTS_ATTR_TYPE_PRIM_SRVC_DECL 0x01 /**< Primary Service Declaration. */ +#define BLE_GATTS_ATTR_TYPE_SEC_SRVC_DECL 0x02 /**< Secondary Service Declaration. */ +#define BLE_GATTS_ATTR_TYPE_INC_DECL 0x03 /**< Include Declaration. */ +#define BLE_GATTS_ATTR_TYPE_CHAR_DECL 0x04 /**< Characteristic Declaration. */ +#define BLE_GATTS_ATTR_TYPE_CHAR_VAL 0x05 /**< Characteristic Value. */ +#define BLE_GATTS_ATTR_TYPE_DESC 0x06 /**< Descriptor. */ +#define BLE_GATTS_ATTR_TYPE_OTHER 0x07 /**< Other, non-GATT specific type. */ +/** @} */ + + +/** @defgroup BLE_GATTS_OPS GATT Server Operations + * @{ */ +#define BLE_GATTS_OP_INVALID 0x00 /**< Invalid Operation. */ +#define BLE_GATTS_OP_WRITE_REQ 0x01 /**< Write Request. */ +#define BLE_GATTS_OP_WRITE_CMD 0x02 /**< Write Command. */ +#define BLE_GATTS_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ +#define BLE_GATTS_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ +#define BLE_GATTS_OP_EXEC_WRITE_REQ_CANCEL 0x05 /**< Execute Write Request: Cancel all prepared writes. */ +#define BLE_GATTS_OP_EXEC_WRITE_REQ_NOW 0x06 /**< Execute Write Request: Immediately execute all prepared writes. */ +/** @} */ + +/** @defgroup BLE_GATTS_VLOCS GATT Value Locations + * @{ */ +#define BLE_GATTS_VLOC_INVALID 0x00 /**< Invalid Location. */ +#define BLE_GATTS_VLOC_STACK 0x01 /**< Attribute Value is located in stack memory, no user memory is required. */ +#define BLE_GATTS_VLOC_USER 0x02 /**< Attribute Value is located in user memory. This requires the user to maintain a valid buffer through the lifetime of the attribute, since the stack + will read and write directly to the memory using the pointer provided in the APIs. There are no alignment requirements for the buffer. */ +/** @} */ + +/** @defgroup BLE_GATTS_AUTHORIZE_TYPES GATT Server Authorization Types + * @{ */ +#define BLE_GATTS_AUTHORIZE_TYPE_INVALID 0x00 /**< Invalid Type. */ +#define BLE_GATTS_AUTHORIZE_TYPE_READ 0x01 /**< Authorize a Read Operation. */ +#define BLE_GATTS_AUTHORIZE_TYPE_WRITE 0x02 /**< Authorize a Write Request Operation. */ +/** @} */ + + +/** @} */ + +/**@brief Attribute metadata. */ +typedef struct +{ + ble_gap_conn_sec_mode_t read_perm; /**< Read permissions. */ + ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ + uint8_t vlen :1; /**< Variable length attribute. */ + uint8_t vloc :2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ + uint8_t rd_auth :1; /**< Read Authorization and value will be requested from the application on every read operation. */ + uint8_t wr_auth :1; /**< Write Authorization will be requested from the application on every Write Request operation (but not Write Command). */ +} ble_gatts_attr_md_t; + + +/**@brief GATT Attribute. */ +typedef struct +{ + ble_uuid_t* p_uuid; /**< Pointer to the attribute UUID. */ + ble_gatts_attr_md_t* p_attr_md; /**< Pointer to the attribute metadata structure. */ + uint16_t init_len; /**< Initial attribute value length in bytes. */ + uint16_t init_offs; /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */ + uint16_t max_len; /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */ + uint8_t* p_value; /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer + that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. + The stack may access that memory directly without the application's knowledge. */ +} ble_gatts_attr_t; + + +/**@brief GATT Attribute Context. */ +typedef struct +{ + ble_uuid_t srvc_uuid; /**< Service UUID. */ + ble_uuid_t char_uuid; /**< Characteristic UUID if applicable (BLE_UUID_TYPE_UNKNOWN if N/A). */ + ble_uuid_t desc_uuid; /**< Descriptor UUID if applicable (BLE_UUID_TYPE_UNKNOWN if N/A). */ + uint16_t srvc_handle; /**< Service Handle. */ + uint16_t value_handle; /**< Characteristic Handle if applicable (BLE_GATT_HANDLE_INVALID if N/A). */ + uint8_t type; /**< Attribute Type, see @ref BLE_GATTS_ATTR_TYPES. */ +} ble_gatts_attr_context_t; + + +/**@brief GATT Characteristic Presentation Format. */ +typedef struct +{ + uint8_t format; /**< Format of the value, see @ref BLE_GATT_CPF_FORMATS. */ + int8_t exponent; /**< Exponent for integer data types. */ + uint16_t unit; /**< UUID from Bluetooth Assigned Numbers. */ + uint8_t name_space; /**< Namespace from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ + uint16_t desc; /**< Namespace description from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ +} ble_gatts_char_pf_t; + + +/**@brief GATT Characteristic metadata. */ +typedef struct +{ + ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ + ble_gatt_char_ext_props_t char_ext_props; /**< Characteristic Extended Properties. */ + uint8_t* p_char_user_desc; /**< Pointer to a UTF-8, NULL if the descriptor is not required. */ + uint16_t char_user_desc_max_size; /**< The maximum size in bytes of the user description descriptor. */ + uint16_t char_user_desc_size; /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ + ble_gatts_char_pf_t* p_char_pf; /**< Pointer to a presentation format structure or NULL if the descriptor is not required. */ + ble_gatts_attr_md_t* p_user_desc_md; /**< Attribute metadata for the User Description descriptor, or NULL for default values. */ + ble_gatts_attr_md_t* p_cccd_md; /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */ + ble_gatts_attr_md_t* p_sccd_md; /**< Attribute metadata for the Server Characteristic Configuration Descriptor, or NULL for default values. */ +} ble_gatts_char_md_t; + + +/**@brief GATT Characteristic Definition Handles. */ +typedef struct +{ + uint16_t value_handle; /**< Handle to the characteristic value. */ + uint16_t user_desc_handle; /**< Handle to the User Description descriptor, or BLE_GATT_HANDLE_INVALID if not present. */ + uint16_t cccd_handle; /**< Handle to the Client Characteristic Configuration Descriptor, or BLE_GATT_HANDLE_INVALID if not present. */ + uint16_t sccd_handle; /**< Handle to the Server Characteristic Configuration Descriptor, or BLE_GATT_HANDLE_INVALID if not present. */ +} ble_gatts_char_handles_t; + + +/**@brief GATT HVx parameters. */ +typedef struct +{ + uint16_t handle; /**< Characteristic Value Handle. */ + uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ + uint16_t offset; /**< Offset within the attribute value. */ + uint16_t* p_len; /**< Length in bytes to be written, length in bytes written after successful return. */ + uint8_t* p_data; /**< Actual data content, use NULL to use the current attribute value. */ +} ble_gatts_hvx_params_t; + +/**@brief GATT Read Authorization parameters. */ +typedef struct +{ + uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ + uint8_t update : 1; /**< If set, data supplied in p_data will be used in the ATT response. */ + uint16_t offset; /**< Offset of the attribute value being updated. */ + uint16_t len; /**< Length in bytes of the value in p_data pointer, see @ref BLE_GATTS_ATTR_LENS_MAX. */ + uint8_t* p_data; /**< Pointer to new value used to update the attribute value. */ +} ble_gatts_read_authorize_params_t; + +/**@brief GATT Write Authorisation parameters. */ +typedef struct +{ + uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ +} ble_gatts_write_authorize_params_t; + +/**@brief GATT Read or Write Authorize Reply parameters. */ +typedef struct +{ + uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ + union { + ble_gatts_read_authorize_params_t read; /**< Read authorization parameters. */ + ble_gatts_write_authorize_params_t write; /**< Write authorization parameters. */ + } params; +} ble_gatts_rw_authorize_reply_params_t; + + +/** + * @brief GATT Server Event IDs. + */ +enum BLE_GATTS_EVTS +{ + BLE_GATTS_EVT_WRITE = BLE_GATTS_EVT_BASE, /**< Write operation performed. */ + BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST, /**< Read/Write Authorization request. */ + BLE_GATTS_EVT_SYS_ATTR_MISSING, /**< A persistent system attribute access is pending, awaiting a sd_ble_gatts_sys_attr_set(). */ + BLE_GATTS_EVT_HVC, /**< Handle Value Confirmation. */ + BLE_GATTS_EVT_SC_CONFIRM, /**< Service Changed Confirmation. */ + BLE_GATTS_EVT_TIMEOUT /**< Timeout. */ +}; + + +/**@brief Event structure for BLE_GATTS_EVT_WRITE. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint8_t op; /**< Type of write operation, see @ref BLE_GATTS_OPS. */ + ble_gatts_attr_context_t context; /**< Attribute Context. */ + uint16_t offset; /**< Offset for the write operation. */ + uint16_t len; /**< Length of the incoming data. */ + uint8_t data[1]; /**< Incoming data, variable length. */ +} ble_gatts_evt_write_t; + +/**@brief Event structure for authorize read request. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + ble_gatts_attr_context_t context; /**< Attribute Context. */ + uint16_t offset; /**< Offset for the read operation. */ +} ble_gatts_evt_read_t; + +/**@brief Event structure for BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST. */ +typedef struct +{ + uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ + union { + ble_gatts_evt_read_t read; /**< Attribute Read Parameters. */ + ble_gatts_evt_write_t write; /**< Attribute Write Parameters. */ + } request; +} ble_gatts_evt_rw_authorize_request_t; + +/**@brief Event structure for BLE_GATTS_EVT_SYS_ATTR_MISSING. */ +typedef struct +{ + uint8_t hint; +} ble_gatts_evt_sys_attr_missing_t; + + +/**@brief Event structure for BLE_GATTS_EVT_HVC. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ +} ble_gatts_evt_hvc_t; + +/**@brief Event structure for BLE_GATTS_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ +} ble_gatts_evt_timeout_t; + + +/**@brief GATT Server event callback event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occurred. */ + union + { + ble_gatts_evt_write_t write; /**< Write Event Parameters. */ + ble_gatts_evt_rw_authorize_request_t authorize_request; /**< Read or Write Authorize Request Parameters. */ + ble_gatts_evt_sys_attr_missing_t sys_attr_missing; /**< System attributes missing. */ + ble_gatts_evt_hvc_t hvc; /**< Handle Value Confirmation Event Parameters. */ + ble_gatts_evt_timeout_t timeout; /**< Timeout Event. */ + } params; +} ble_gatts_evt_t; + + +/**@brief Add a service declaration to the local server ATT table. + * + * @param[in] type Toggles between primary and secondary services, see @ref BLE_GATTS_SRVC_TYPES. + * @param[in] p_uuid Pointer to service UUID. + * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. + * + * @note Secondary Services are only relevant in the context of the entity that references them, it is therefore forbidden to + * add a secondary service declaration that is not referenced by another service later in the ATT table. + * + * @return @ref NRF_SUCCESS Successfully added a service declaration. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, Vendor Specific UUIDs need to be present in the table. + * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. + * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type, ble_uuid_t const*const p_uuid, uint16_t *const p_handle)); + + +/**@brief Add an include declaration to the local server ATT table. + * + * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential addition is supported at this time). + * + * @note The included service must already be present in the ATT table prior to this call. + * + * @param[in] service_handle Handle of the service where the included service is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. + * @param[in] inc_srvc_handle Handle of the included service. + * @param[out] p_include_handle Pointer to a 16-bit word where the assigned handle will be stored. + * + * @return @ref NRF_SUCCESS Successfully added an include declaration. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, handle values need to match previously added services. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, self inclusions are not allowed. + * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @return @ref NRF_ERROR_NOT_FOUND Attribute not found. + */ +SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t *const p_include_handle)); + + +/**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the local server ATT table. + * + * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential addition is supported at this time). + * + * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writeable auxiliaries bits, + * readable (no security) and writeable (selectable) CCCDs and SCCDs and valid presentation format values. + * + * @note If no metadata is provided for the optional descriptors, their permissions will be derived from the characteristic permissions. + * + * @param[in] service_handle Handle of the service where the characteristic is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. + * @param[in] p_char_md Characteristic metadata. + * @param[in] p_attr_char_value Pointer to the attribute structure corresponding to the characteristic value. + * @param[out] p_handles Pointer to the structure where the assigned handles will be stored. + * + * @return @ref NRF_SUCCESS Successfully added a characteristic. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, service handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required. + * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. + * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. + */ +SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_add(uint16_t service_handle, ble_gatts_char_md_t const*const p_char_md, ble_gatts_attr_t const*const p_attr_char_value, ble_gatts_char_handles_t *const p_handles)); + + +/**@brief Add a descriptor to the local server ATT table. + * + * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential addition is supported at this time). + * + * @param[in] char_handle Handle of the characteristic where the descriptor is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. + * @param[in] p_attr Pointer to the attribute structure. + * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. + * + * @return @ref NRF_SUCCESS Successfully added a descriptor. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, characteristic handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, a characteristic context is required. + * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. + * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. + */ +SVCALL(SD_BLE_GATTS_DESCRIPTOR_ADD, uint32_t, sd_ble_gatts_descriptor_add(uint16_t char_handle, ble_gatts_attr_t const * const p_attr, uint16_t* const p_handle)); + +/**@brief Set the value of a given attribute. + * + * @param[in] handle Attribute handle. + * @param[in] offset Offset in bytes to write from. + * @param[in,out] p_len Length in bytes to be written, length in bytes written after successful return. + * @param[in] p_value Pointer to a buffer (at least len bytes long) containing the desired attribute value. + * + * @return @ref NRF_SUCCESS Successfully set the value of the attribute. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_NOT_FOUND Attribute not found. + * @return @ref NRF_ERROR_FORBIDDEN Forbidden handle supplied, certain attributes are not modifiable by the application. + * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. + */ +SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t handle, uint16_t offset, uint16_t* const p_len, uint8_t const * const p_value)); + +/**@brief Get the value of a given attribute. + * + * @param[in] handle Attribute handle. + * @param[in] offset Offset in bytes to read from. + * @param[in,out] p_len Length in bytes to be read, total length of attribute value (in bytes, starting from offset) after successful return. + * @param[in,out] p_data Pointer to a buffer (at least len bytes long) where to store the attribute value. Set to NULL to obtain the complete length of attribute value. + * + * @note If the attribute value is longer than the size of the supplied buffer, + * p_len will return the total attribute value length (excluding offset), + * and not the number of bytes actually returned in p_data. + * The application may use this information to allocate a suitable buffer size. + * + * @return @ref NRF_SUCCESS Successfully retrieved the value of the attribute. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_NOT_FOUND Attribute not found. + */ +SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t handle, uint16_t offset, uint16_t *const p_len, uint8_t* const p_data)); + +/**@brief Notify or Indicate an attribute value. + * + * @details This function checks for the relevant Client Characteristic Configuration descriptor value to verify that the relevant operation + * (notification or indication) has been enabled by the client. It is also able to update the attribute value before issuing the PDU, so that + * the application can atomically perform a value update and a server initiated transaction with a single API call. + * If the application chooses to indicate an attribute value, a @ref BLE_GATTS_EVT_HVC will be sent up as soon as the confirmation arrives from + * the peer. + * + * @note The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. + * When receiveing the error codes @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and + * @ref BLE_ERROR_NO_TX_BUFFERS the ATT table has been updated. + * The caller can check whether the value has been updated by looking at the contents of *(p_hvx_params->p_len). + * + * @note It is important to note that a notification will <b>consume an application buffer</b>, and will therefore + * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. An indication on the other hand will use the + * standard server internal buffer and thus will only generate a @ref BLE_GATTS_EVT_HVC event as soon as the confirmation + * has been received from the peer. Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details. + * + * @param[in] conn_handle Connection handle. + * @param[in] p_hvx_params Pointer to an HVx parameters structure. If the p_data member contains a non-NULL pointer the attribute value will be updated with + * the contents pointed by it before sending the notification or indication. + * + * @return @ref NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate. + * @return @ref BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated. + * @return @ref NRF_ERROR_NOT_FOUND Attribute not found. + * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, notifications or indications must be enabled in the CCCD. + * @return @ref NRF_ERROR_BUSY Procedure already in progress. + * @return @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. + * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers to send the data, applies only to notifications. + */ +SVCALL(SD_BLE_GATTS_HVX, uint32_t, sd_ble_gatts_hvx(uint16_t conn_handle, ble_gatts_hvx_params_t const*const p_hvx_params)); + +/**@brief Indicate the Service Changed attribute value. + * + * @details This call will send a Handle Value Indication to one or more peers connected to inform them that the attribute + * table layout has changed. As soon as the peer has confirmed the indication, a @ref BLE_GATTS_EVT_SC_CONFIRM event will + * be issued. + * + * @note Some of the restrictions and limitations that apply to @ref sd_ble_gatts_hvx also apply here. + * + * @param[in] conn_handle Connection handle. + * @param[in] start_handle Start of affected attribute handle range. + * @param[in] end_handle End of affected attribute handle range. + * + * @return @ref NRF_SUCCESS Successfully queued the Service Changed indication for transmission. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied, handles must be in the range populated by the application. + * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, notifications or indications must be enabled in the CCCD. + * @return @ref NRF_ERROR_BUSY Procedure already in progress. + * @return @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. + */ +SVCALL(SD_BLE_GATTS_SERVICE_CHANGED, uint32_t, sd_ble_gatts_service_changed(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle)); + +/**@brief Respond to a Read/Write authorization request. + * + * @note This call should only be used as a response to a @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event issued to the application. + * + * @param[in] conn_handle Connection handle. + * @param[in] p_rw_authorize_reply_params Pointer to a structure with the attribute provided by the application. + * + * @return @ref NRF_SUCCESS Successfully queued a response to the peer, and in the case of a write operation, ATT table updated. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_STATE No authorization request pending. + * @return @ref NRF_ERROR_INVALID_PARAM Authorization op invalid, + * or for Read Authorization reply: requested handles not replied with, + * or for Write Authorization reply: handle supplied does not match requested handle. + */ +SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_reply(uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const*const p_rw_authorize_reply_params)); + + +/**@brief Update persistent system attribute information. + * + * @details Supply to the stack information about persistent system attributes. + * This call is legal in the connected state only, and is usually + * made immediately after a connection is established and the bond identified. + * usually as a response to a BLE_GATTS_EVT_SYS_ATTR_MISSING. + * + * p_sysattrs may point directly to the application's stored copy of the struct. + * If the pointer is NULL, the system attribute info is initialized, assuming that + * the application does not have any previously saved data for this bond. + * + * @note The state of persistent system attributes is reset upon connection and then remembered for its duration. + * + * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially. + * This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or + * reset the SoftDevice to return to a known state. + * + * @param[in] conn_handle Connection handle. + * @param[in] p_sys_attr_data Pointer to a saved copy of system attributes supplied to the stack, or NULL. + * @param[in] len Size of data pointed by p_sys_attr_data, in octets. + * + * @return @ref NRF_SUCCESS Successfully set the system attribute information. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get. + * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const*const p_sys_attr_data, uint16_t len)); + + +/**@brief Retrieve persistent system attribute information from the stack. + * + * @details This call is used to retrieve information about values to be stored perisistently by the application + * after a connection has been terminated. When a new connection is made to the same bond, the values + * should be restored using @ref sd_ble_gatts_sys_attr_set. + * The data should be read before any new advertising is started, or any new connection established. The connection handle for + * the previous now defunct connection will remain valid until a new one is created to allow this API call to refer to it. + * + * @param[in] conn_handle Connection handle of the recently terminated connection. + * @param[in] p_sys_attr_data Pointer to a buffer where updated information about system attributes will be filled in. NULL can be provided to + * obtain the length of the data + * @param[in,out] p_len Size of application buffer if p_sys_attr_data is not NULL. Unconditially updated to actual length of system attribute data. + * + * @return @ref NRF_SUCCESS Successfully retrieved the system attribute information. + * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer. + */ +SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t * const p_sys_attr_data, uint16_t* const p_len)); + + +#endif // BLE_GATTS_H__ + +/** + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble_hci.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,96 @@ +/* + Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + + The information contained herein is confidential property of Nordic Semiconductor. The use, + copying, transfer or disclosure of such information is prohibited except by express written + agreement with Nordic Semiconductor. + */ +/** + @addtogroup BLE_COMMON + @{ +*/ + + +#ifndef BLE_HCI_H__ +#define BLE_HCI_H__ + +/** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes + * @{ */ + +#define BLE_HCI_STATUS_CODE_SUCCESS 0x00 +#define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND 0x01 +#define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER 0x02 +/*0x03 Hardware Failure +0x04 Page Timeout +*/ +#define BLE_HCI_AUTHENTICATION_FAILURE 0x05 +#define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING 0x06 +#define BLE_HCI_MEMORY_CAPACITY_EXCEEDED 0x07 +#define BLE_HCI_CONNECTION_TIMEOUT 0x08 +/*0x09 Connection Limit Exceeded +0x0A Synchronous Connection Limit To A Device Exceeded +0x0B ACL Connection Already Exists*/ +#define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED 0x0C +/*0x0D Connection Rejected due to Limited Resources +0x0E Connection Rejected Due To Security Reasons +0x0F Connection Rejected due to Unacceptable BD_ADDR +0x10 Connection Accept Timeout Exceeded +0x11 Unsupported Feature or Parameter Value*/ +#define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12 +#define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION 0x13 +#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14 +#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF 0x15 +#define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION 0x16 +/* +0x17 Repeated Attempts +0x18 Pairing Not Allowed +0x19 Unknown LMP PDU +*/ +#define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A +/* +0x1B SCO Offset Rejected +0x1C SCO Interval Rejected +0x1D SCO Air Mode Rejected*/ +#define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS 0x1E +#define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR 0x1F +/*0x20 Unsupported LMP Parameter Value +0x21 Role Change Not Allowed +*/ +#define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT 0x22 +/*0x23 LMP Error Transaction Collision*/ +#define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED 0x24 +/*0x25 Encryption Mode Not Acceptable +0x26 Link Key Can Not be Changed +0x27 Requested QoS Not Supported +*/ +#define BLE_HCI_INSTANT_PASSED 0x28 +#define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED 0x29 +#define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION 0x2A +/* +0x2B Reserved +0x2C QoS Unacceptable Parameter +0x2D QoS Rejected +0x2E Channel Classification Not Supported +0x2F Insufficient Security +0x30 Parameter Out Of Mandatory Range +0x31 Reserved +0x32 Role Switch Pending +0x33 Reserved +0x34 Reserved Slot Violation +0x35 Role Switch Failed +0x36 Extended Inquiry Response Too Large +0x37 Secure Simple Pairing Not Supported By Host. +0x38 Host Busy - Pairing +0x39 Connection Rejected due to No Suitable Channel Found*/ +#define BLE_HCI_CONTROLLER_BUSY 0x3A +#define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE 0x3B +#define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT 0x3C +#define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE 0x3D +#define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED 0x3E + +/** @} */ + + +#endif // BLE_HCI_H__ + +/** @} */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble_l2cap.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,135 @@ +/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ +/** + @addtogroup BLE_L2CAP Logical Link Control and Adaptation Protocol (L2CAP) + @{ + @brief Definitions and prototypes for the L2CAP interface. + */ + +#ifndef BLE_L2CAP_H__ +#define BLE_L2CAP_H__ + +#include "ble_types.h" +#include "ble_ranges.h" +#include "ble_err.h" +#include "nrf_svc.h" + +/**@brief L2CAP API SVC numbers. */ +enum BLE_L2CAP_SVCS +{ + SD_BLE_L2CAP_CID_REGISTER = BLE_L2CAP_SVC_BASE, /**< Register a CID. */ + SD_BLE_L2CAP_CID_UNREGISTER, /**< Unregister a CID. */ + SD_BLE_L2CAP_TX /**< Transmit a packet. */ +}; + +/**@addtogroup BLE_L2CAP_DEFINES Defines + * @{ */ + +/**@defgroup BLE_ERRORS_L2CAP SVC return values specific to L2CAP + * @{ */ +#define BLE_ERROR_L2CAP_CID_IN_USE (NRF_L2CAP_ERR_BASE + 0x000) /**< CID already in use. */ +/** @} */ + +/**@brief Default L2CAP MTU. */ +#define BLE_L2CAP_MTU_DEF (23) + +/**@brief Invalid Channel Identifier. */ +#define BLE_L2CAP_CID_INVALID (0x0000) + +/**@brief Dynamic Channel Identifier base. */ +#define BLE_L2CAP_CID_DYN_BASE (0x0040) + +/**@brief Maximum amount of dynamic CIDs. */ +#define BLE_L2CAP_CID_DYN_MAX (8) + +/** @} */ + +/**@brief Packet header format for L2CAP transmission. */ +typedef struct +{ + uint16_t len; /**< Length of valid info in data member. */ + uint16_t cid; /**< Channel ID on which packet is transmitted. */ +} ble_l2cap_header_t; + +/**@brief L2CAP Event IDs. */ +enum BLE_L2CAP_EVTS +{ + BLE_L2CAP_EVT_RX = BLE_L2CAP_EVT_BASE /**< L2CAP packet received. */ +}; + + +/**@brief L2CAP Received packet event report. */ +typedef struct +{ + ble_l2cap_header_t header; /** L2CAP packet header. */ + uint8_t data[1]; /**< Packet data, variable length. */ +} ble_l2cap_evt_rx_t; + + +/**@brief L2CAP event callback event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occured. */ + union + { + ble_l2cap_evt_rx_t rx; /**< RX Event parameters. */ + } params; +} ble_l2cap_evt_t; + + +/**@brief Register a CID with L2CAP. + * + * @details This registers a higher protocol layer with the L2CAP multiplexer, and is requried prior to all operations on the CID. + * + * @param[in] cid L2CAP CID. + * + * @return @ref NRF_SUCCESS Successfully registered a CID with the L2CAP layer. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CID must be above @ref BLE_L2CAP_CID_DYN_BASE. + * @return @ref BLE_ERROR_L2CAP_CID_IN_USE L2CAP CID already in use. + * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_L2CAP_CID_REGISTER, uint32_t, sd_ble_l2cap_cid_register(uint16_t cid)); + +/**@brief Unregister a CID with L2CAP. + * + * @details This unregisters a previously registerd higher protocol layer with the L2CAP multiplexer. + * + * @param[in] cid L2CAP CID. + * + * @return @ref NRF_SUCCESS Successfully unregistered the CID. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @return @ref NRF_ERROR_NOT_FOUND CID not previously registered. + */ +SVCALL(SD_BLE_L2CAP_CID_UNREGISTER, uint32_t, sd_ble_l2cap_cid_unregister(uint16_t cid)); + +/**@brief Transmit an L2CAP packet. + * + * @note It is important to note that a call to this function will <b>consume an application buffer</b>, and will therefore + * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. + * Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details. + * + * @param[in] conn_handle Connection Handle. + * @param[in] p_header Pointer to a packet header containing length and CID. + * @param[in] p_data Pointer to the data to be transmitted. + * + * @return @ref NRF_SUCCESS Successfully queued an L2CAP packet for transmission. + * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CIDs must be registered beforehand with @ref sd_ble_l2cap_cid_register. + * @return @ref NRF_ERROR_NOT_FOUND CID not found. + * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @return @ref BLE_ERROR_NO_TX_BUFFERS Not enough application buffers available. + * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, see @ref BLE_L2CAP_MTU_DEF. + */ +SVCALL(SD_BLE_L2CAP_TX, uint32_t, sd_ble_l2cap_tx(uint16_t conn_handle, ble_l2cap_header_t const * const p_header, uint8_t const * const p_data)); + + +#endif // BLE_L2CAP_H__ + +/** + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble_ranges.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,72 @@ +/* + Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + + The information contained herein is confidential property of Nordic Semiconductor. The use, + copying, transfer or disclosure of such information is prohibited except by express written + agreement with Nordic Semiconductor. + */ +/** + @addtogroup BLE_COMMON + @{ + @defgroup ble_ranges Module specific SVC and event number subranges + @{ + + @brief Definition of SVC and event number subranges for each API module. + + @note + SVCs and event numbers are split into subranges for each API module. + Each module receives its entire allocated range of SVC calls, whether implemented or not, + but return BLE_ERROR_NOT_SUPPORTED for unimplemented or undefined calls in its range. + + Note that the symbols BLE_<module>_SVC_LAST is the end of the allocated SVC range, + rather than the last SVC function call actually defined and implemented. + + Specific SVC and event values are defined in each module's ble_<module>.h file, + which defines names of each individual SVC code based on the range start value. +*/ + +#ifndef BLE_RANGES_H__ +#define BLE_RANGES_H__ + +#define BLE_SVC_BASE 0x60 +#define BLE_SVC_LAST 0x6B /* Total: 12. */ + +#define BLE_RESERVED_SVC_BASE 0x6C +#define BLE_RESERVED_SVC_LAST 0x6F /* Total: 4. */ + +#define BLE_GAP_SVC_BASE 0x70 +#define BLE_GAP_SVC_LAST 0x8F /* Total: 32. */ + +#define BLE_GATTC_SVC_BASE 0x90 +#define BLE_GATTC_SVC_LAST 0x9F /* Total: 16. */ + +#define BLE_GATTS_SVC_BASE 0xA0 +#define BLE_GATTS_SVC_LAST 0xAF /* Total: 16. */ + +#define BLE_L2CAP_SVC_BASE 0xB0 +#define BLE_L2CAP_SVC_LAST 0xBF /* Total: 16. */ + + +#define BLE_EVT_INVALID 0x00 + +#define BLE_EVT_BASE 0x01 +#define BLE_EVT_LAST 0x0F /* Total: 15. */ + +#define BLE_GAP_EVT_BASE 0x10 +#define BLE_GAP_EVT_LAST 0x2F /* Total: 32. */ + +#define BLE_GATTC_EVT_BASE 0x30 +#define BLE_GATTC_EVT_LAST 0x4F /* Total: 32. */ + +#define BLE_GATTS_EVT_BASE 0x50 +#define BLE_GATTS_EVT_LAST 0x6F /* Total: 32. */ + +#define BLE_L2CAP_EVT_BASE 0x70 +#define BLE_L2CAP_EVT_LAST 0x8F /* Total: 32. */ + +#endif /* BLE_RANGES_H__ */ + +/** + @} + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/ble_types.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,157 @@ +/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ +/** + @addtogroup BLE_COMMON + @{ + @defgroup ble_types Common types and macro definitions + @{ + + @brief Common types and macro definitions for the S110 SoftDevice. + */ + +#ifndef BLE_TYPES_H__ +#define BLE_TYPES_H__ + +#include <stdint.h> + +/** @addtogroup BLE_COMMON_DEFINES Defines + * @{ */ + +/** @defgroup BLE_CONN_HANDLES BLE Connection Handles + * @{ */ +#define BLE_CONN_HANDLE_INVALID 0xFFFF /**< Invalid Connection Handle. */ +#define BLE_CONN_HANDLE_ALL 0xFFFE /**< Applies to all Connection Handles. */ +/** @} */ + + +/** @defgroup BLE_UUID_VALUES Assigned Values for BLE UUIDs + * @{ */ +/* Generic UUIDs, applicable to all services */ +#define BLE_UUID_UNKNOWN 0x0000 /**< Reserved UUID. */ +#define BLE_UUID_SERVICE_PRIMARY 0x2800 /**< Primary Service. */ +#define BLE_UUID_SERVICE_SECONDARY 0x2801 /**< Secondary Service. */ +#define BLE_UUID_SERVICE_INCLUDE 0x2802 /**< Include. */ +#define BLE_UUID_CHARACTERISTIC 0x2803 /**< Characteristic. */ +#define BLE_UUID_DESCRIPTOR_CHAR_EXT_PROP 0x2900 /**< Characteristic Extended Properties Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CHAR_USER_DESC 0x2901 /**< Characteristic User Description Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG 0x2902 /**< Client Characteristic Configuration Descriptor. */ +#define BLE_UUID_DESCRIPTOR_SERVER_CHAR_CONFIG 0x2903 /**< Server Characteristic Configuration Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CHAR_PRESENTATION_FORMAT 0x2904 /**< Characteristic Presentation Format Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CHAR_AGGREGATE_FORMAT 0x2905 /**< Characteristic Aggregate Format Descriptor. */ +/* GATT specific UUIDs */ +#define BLE_UUID_GATT 0x1801 /**< Generic Attribute Profile. */ +#define BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED 0x2A05 /**< Service Changed Characteristic. */ +/* GAP specific UUIDs */ +#define BLE_UUID_GAP 0x1800 /**< Generic Access Profile. */ +#define BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME 0x2A00 /**< Device Name Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_APPEARANCE 0x2A01 /**< Appearance Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_PPF 0x2A02 /**< Peripheral Privacy Flag Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_RECONN_ADDR 0x2A03 /**< Reconnection Address Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_PPCP 0x2A04 /**< Peripheral Preferred Connection Parameters Characteristic. */ +/** @} */ + + +/** @defgroup BLE_UUID_TYPES Types of UUID + * @{ */ +#define BLE_UUID_TYPE_UNKNOWN 0x00 /**< Invalid UUID type. */ +#define BLE_UUID_TYPE_BLE 0x01 /**< Bluetooth SIG UUID (16-bit). */ +#define BLE_UUID_TYPE_VENDOR_BEGIN 0x02 /**< Vendor UUID types start at this index (128-bit). */ +/** @} */ + + +/** @defgroup BLE_APPEARANCES Bluetooth Appearance values + * @note Retrieved from http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml + * @{ */ +#define BLE_APPEARANCE_UNKNOWN 0 /**< Unknown. */ +#define BLE_APPEARANCE_GENERIC_PHONE 64 /**< Generic Phone. */ +#define BLE_APPEARANCE_GENERIC_COMPUTER 128 /**< Generic Computer. */ +#define BLE_APPEARANCE_GENERIC_WATCH 192 /**< Generic Watch. */ +#define BLE_APPEARANCE_WATCH_SPORTS_WATCH 193 /**< Watch: Sports Watch. */ +#define BLE_APPEARANCE_GENERIC_CLOCK 256 /**< Generic Clock. */ +#define BLE_APPEARANCE_GENERIC_DISPLAY 320 /**< Generic Display. */ +#define BLE_APPEARANCE_GENERIC_REMOTE_CONTROL 384 /**< Generic Remote Control. */ +#define BLE_APPEARANCE_GENERIC_EYE_GLASSES 448 /**< Generic Eye-glasses. */ +#define BLE_APPEARANCE_GENERIC_TAG 512 /**< Generic Tag. */ +#define BLE_APPEARANCE_GENERIC_KEYRING 576 /**< Generic Keyring. */ +#define BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 640 /**< Generic Media Player. */ +#define BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 704 /**< Generic Barcode Scanner. */ +#define BLE_APPEARANCE_GENERIC_THERMOMETER 768 /**< Generic Thermometer. */ +#define BLE_APPEARANCE_THERMOMETER_EAR 769 /**< Thermometer: Ear. */ +#define BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR 832 /**< Generic Heart rate Sensor. */ +#define BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT 833 /**< Heart Rate Sensor: Heart Rate Belt. */ +#define BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 896 /**< Generic Blood Pressure. */ +#define BLE_APPEARANCE_BLOOD_PRESSURE_ARM 897 /**< Blood Pressure: Arm. */ +#define BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 898 /**< Blood Pressure: Wrist. */ +#define BLE_APPEARANCE_GENERIC_HID 960 /**< Human Interface Device (HID). */ +#define BLE_APPEARANCE_HID_KEYBOARD 961 /**< Keyboard (HID Subtype). */ +#define BLE_APPEARANCE_HID_MOUSE 962 /**< Mouse (HID Subtype). */ +#define BLE_APPEARANCE_HID_JOYSTICK 963 /**< Joystiq (HID Subtype). */ +#define BLE_APPEARANCE_HID_GAMEPAD 964 /**< Gamepad (HID Subtype). */ +#define BLE_APPEARANCE_HID_DIGITIZERSUBTYPE 965 /**< Digitizer Tablet (HID Subtype). */ +#define BLE_APPEARANCE_HID_CARD_READER 966 /**< Card Reader (HID Subtype). */ +#define BLE_APPEARANCE_HID_DIGITAL_PEN 967 /**< Digital Pen (HID Subtype). */ +#define BLE_APPEARANCE_HID_BARCODE 968 /**< Barcode Scanner (HID Subtype). */ +#define BLE_APPEARANCE_GENERIC_GLUCOSE_METER 1024 /**< Generic Glucose Meter. */ +#define BLE_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR 1088 /**< Generic Running Walking Sensor. */ +#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE 1089 /**< Running Walking Sensor: In-Shoe. */ +#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE 1090 /**< Running Walking Sensor: On-Shoe. */ +#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP 1091 /**< Running Walking Sensor: On-Hip. */ +#define BLE_APPEARANCE_GENERIC_CYCLING 1152 /**< Generic Cycling. */ +#define BLE_APPEARANCE_CYCLING_CYCLING_COMPUTER 1153 /**< Cycling: Cycling Computer. */ +#define BLE_APPEARANCE_CYCLING_SPEED_SENSOR 1154 /**< Cycling: Speed Sensor. */ +#define BLE_APPEARANCE_CYCLING_CADENCE_SENSOR 1155 /**< Cycling: Cadence Sensor. */ +#define BLE_APPEARANCE_CYCLING_POWER_SENSOR 1156 /**< Cycling: Power Sensor. */ +#define BLE_APPEARANCE_CYCLING_SPEED_CADENCE_SENSOR 1157 /**< Cycling: Speed and Cadence Sensor. */ +/** @} */ + +/** @brief Set .type and .uuid fields of ble_uuid_struct to specified uuid value. */ +#define BLE_UUID_BLE_ASSIGN(instance, value) do {\ + instance.type = BLE_UUID_TYPE_BLE; \ + instance.uuid = value;} while(0) + +/** @brief Copy type and uuid members from src to dst ble_uuid_t pointer. Both pointers must be valid/non-null. */ +#define BLE_UUID_COPY_PTR(dst, src) do {\ + (dst)->type = (src)->type; \ + (dst)->uuid = (src)->uuid;} while(0) + +/** @brief Copy type and uuid members from src to dst ble_uuid_t struct. */ +#define BLE_UUID_COPY_INST(dst, src) do {\ + (dst).type = (src).type; \ + (dst).uuid = (src).uuid;} while(0) + +/** @brief Compare for equality both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ +#define BLE_UUID_EQ(p_uuid1, p_uuid2) \ + (((p_uuid1)->type == (p_uuid2)->type) && ((p_uuid1)->uuid == (p_uuid2)->uuid)) + +/** @brief Compare for difference both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ +#define BLE_UUID_NEQ(p_uuid1, p_uuid2) \ + (((p_uuid1)->type != (p_uuid2)->type) || ((p_uuid1)->uuid != (p_uuid2)->uuid)) + +/** @} */ + +/** @brief 128 bit UUID values. */ +typedef struct +{ + unsigned char uuid128[16]; +} ble_uuid128_t; + +/** @brief Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs. */ +typedef struct +{ + uint16_t uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */ + uint8_t type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */ +} ble_uuid_t; + + + +#endif /* BLE_TYPES_H__ */ + +/** + @} + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/nrf_error.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ + /** + @defgroup nrf_error SoftDevice Global Error Codes + @{ + + @brief Global Error definitions +*/ + +/* Header guard */ +#ifndef NRF_ERROR_H__ +#define NRF_ERROR_H__ + +/** @defgroup NRF_ERRORS_BASE Error Codes Base number definitions + * @{ */ +#define NRF_ERROR_BASE_NUM (0x0) ///< Global error base +#define NRF_ERROR_SDM_BASE_NUM (0x1000) ///< SDM error base +#define NRF_ERROR_SOC_BASE_NUM (0x2000) ///< SoC error base +#define NRF_ERROR_STK_BASE_NUM (0x3000) ///< STK error base +/** @} */ + +#define NRF_SUCCESS (NRF_ERROR_BASE_NUM + 0) ///< Successful command +#define NRF_ERROR_SVC_HANDLER_MISSING (NRF_ERROR_BASE_NUM + 1) ///< SVC handler is missing +#define NRF_ERROR_SOFTDEVICE_NOT_ENABLED (NRF_ERROR_BASE_NUM + 2) ///< SoftDevice has not been enabled +#define NRF_ERROR_INTERNAL (NRF_ERROR_BASE_NUM + 3) ///< Internal Error +#define NRF_ERROR_NO_MEM (NRF_ERROR_BASE_NUM + 4) ///< No Memory for operation +#define NRF_ERROR_NOT_FOUND (NRF_ERROR_BASE_NUM + 5) ///< Not found +#define NRF_ERROR_NOT_SUPPORTED (NRF_ERROR_BASE_NUM + 6) ///< Not supported +#define NRF_ERROR_INVALID_PARAM (NRF_ERROR_BASE_NUM + 7) ///< Invalid Parameter +#define NRF_ERROR_INVALID_STATE (NRF_ERROR_BASE_NUM + 8) ///< Invalid state, operation disallowed in this state +#define NRF_ERROR_INVALID_LENGTH (NRF_ERROR_BASE_NUM + 9) ///< Invalid Length +#define NRF_ERROR_INVALID_FLAGS (NRF_ERROR_BASE_NUM + 10) ///< Invalid Flags +#define NRF_ERROR_INVALID_DATA (NRF_ERROR_BASE_NUM + 11) ///< Invalid Data +#define NRF_ERROR_DATA_SIZE (NRF_ERROR_BASE_NUM + 12) ///< Data size exceeds limit +#define NRF_ERROR_TIMEOUT (NRF_ERROR_BASE_NUM + 13) ///< Operation timed out +#define NRF_ERROR_NULL (NRF_ERROR_BASE_NUM + 14) ///< Null Pointer +#define NRF_ERROR_FORBIDDEN (NRF_ERROR_BASE_NUM + 15) ///< Forbidden Operation +#define NRF_ERROR_INVALID_ADDR (NRF_ERROR_BASE_NUM + 16) ///< Bad Memory Address +#define NRF_ERROR_BUSY (NRF_ERROR_BASE_NUM + 17) ///< Busy + +#endif // NRF_ERROR_H__ + +/** + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/nrf_error_sdm.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ + /** + @addtogroup nrf_sdm_api + @{ + @defgroup nrf_sdm_error SoftDevice Manager Error Codes + @{ + + @brief Error definitions for the SDM API +*/ + +/* Header guard */ +#ifndef NRF_ERROR_SDM_H__ +#define NRF_ERROR_SDM_H__ + +#include "nrf_error.h" + +#define NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN (NRF_ERROR_SDM_BASE_NUM + 0) ///< Unknown lfclk source +#define NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION (NRF_ERROR_SDM_BASE_NUM + 1) ///< Incorrect interrupt configuration (can be caused by using illegal priority levels, or having enabled SoftDevice interrupts) +#define NRF_ERROR_SDM_INCORRECT_CLENR0 (NRF_ERROR_SDM_BASE_NUM + 2) ///< Incorrect CLENR0 (can be caused by erronous SoftDevice flashing) + +#endif // NRF_ERROR_SDM_H__ + +/** + @} + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/nrf_error_soc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ + /** + @addtogroup nrf_soc_api + @{ + @defgroup nrf_soc_error SoC Library Error Codes + @{ + + @brief Error definitions for the SoC library + +*/ + +/* Header guard */ +#ifndef NRF_ERROR_SOC_H__ +#define NRF_ERROR_SOC_H__ + +#include "nrf_error.h" + +/* Mutex Errors */ +#define NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN (NRF_ERROR_SOC_BASE_NUM + 0) ///< Mutex already taken + +/* NVIC errors */ +#define NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE (NRF_ERROR_SOC_BASE_NUM + 1) ///< NVIC interrupt not available +#define NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED (NRF_ERROR_SOC_BASE_NUM + 2) ///< NVIC interrupt priority not allowed +#define NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 3) ///< NVIC should not return + +/* Power errors */ +#define NRF_ERROR_SOC_POWER_MODE_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 4) ///< Power mode unknown +#define NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 5) ///< Power POF threshold unknown +#define NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 6) ///< Power off should not return + +/* Rand errors */ +#define NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES (NRF_ERROR_SOC_BASE_NUM + 7) ///< RAND not enough values + +/* PPI errors */ +#define NRF_ERROR_SOC_PPI_INVALID_CHANNEL (NRF_ERROR_SOC_BASE_NUM + 8) ///< Invalid PPI Channel +#define NRF_ERROR_SOC_PPI_INVALID_GROUP (NRF_ERROR_SOC_BASE_NUM + 9) ///< Invalid PPI Group + +#endif // NRF_ERROR_SOC_H__ +/** + @} + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/nrf_sdm.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ +/** + @defgroup nrf_sdm_api SoftDevice Manager API + @{ + + @brief APIs for SoftDevice management. + +*/ + +/* Header guard */ +#ifndef NRF_SDM_H__ +#define NRF_SDM_H__ + +#include "nrf_svc.h" +#include "nrf51.h" +#include "nrf_soc.h" +#include "nrf_error_sdm.h" + +/** @addtogroup NRF_SDM_DEFINES Defines + * @{ */ + +/**@brief SoftDevice Manager SVC Base number. */ +#define SDM_SVC_BASE 0x10 + +/** @} */ + +/** @addtogroup NRF_SDM_ENUMS Enumerations + * @{ */ + +/**@brief nRF SoftDevice Manager API SVC numbers. */ +enum NRF_SD_SVCS +{ + SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */ + SD_SOFTDEVICE_DISABLE, /**< ::sd_softdevice_disable */ + SD_SOFTDEVICE_IS_ENABLED, /**< ::sd_softdevice_is_enabled */ + SD_SOFTDEVICE_FORWARD_TO_APPLICATION,/**< ::sd_softdevice_forward_to_application */ + SVC_SDM_LAST /**< Placeholder for last SDM SVC */ +}; + +/**@brief Possible lfclk oscillator sources. */ +enum NRF_CLOCK_LFCLKSRCS +{ + NRF_CLOCK_LFCLKSRC_SYNTH_250_PPM, /**< LFCLK Synthesized from HFCLK. */ + NRF_CLOCK_LFCLKSRC_XTAL_500_PPM, /**< LFCLK crystal oscillator 500 PPM accuracy. */ + NRF_CLOCK_LFCLKSRC_XTAL_250_PPM, /**< LFCLK crystal oscillator 250 PPM accuracy. */ + NRF_CLOCK_LFCLKSRC_XTAL_150_PPM, /**< LFCLK crystal oscillator 150 PPM accuracy. */ + NRF_CLOCK_LFCLKSRC_XTAL_100_PPM, /**< LFCLK crystal oscillator 100 PPM accuracy. */ + NRF_CLOCK_LFCLKSRC_XTAL_75_PPM, /**< LFCLK crystal oscillator 75 PPM accuracy. */ + NRF_CLOCK_LFCLKSRC_XTAL_50_PPM, /**< LFCLK crystal oscillator 50 PPM accuracy. */ + NRF_CLOCK_LFCLKSRC_XTAL_30_PPM, /**< LFCLK crystal oscillator 30 PPM accuracy. */ + NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, /**< LFCLK crystal oscillator 20 PPM accuracy. */ + NRF_CLOCK_LFCLKSRC_RC_250_PPM_250MS_CALIBRATION, /**< LFCLK RC oscillator, 250ms calibration interval.*/ + NRF_CLOCK_LFCLKSRC_RC_250_PPM_500MS_CALIBRATION, /**< LFCLK RC oscillator, 500ms calibration interval.*/ + NRF_CLOCK_LFCLKSRC_RC_250_PPM_1000MS_CALIBRATION, /**< LFCLK RC oscillator, 1000ms calibration interval.*/ + NRF_CLOCK_LFCLKSRC_RC_250_PPM_2000MS_CALIBRATION, /**< LFCLK RC oscillator, 2000ms calibration interval.*/ + NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION, /**< LFCLK RC oscillator, 4000ms calibration interval.*/ + NRF_CLOCK_LFCLKSRC_RC_250_PPM_8000MS_CALIBRATION, /**< LFCLK RC oscillator, 8000ms calibration interval.*/ +}; + +/** @} */ + +/** @addtogroup NRF_SDM_TYPES Types + * @{ */ + +/**@brief Type representing lfclk oscillator source. */ +typedef uint32_t nrf_clock_lfclksrc_t; + + +/**@brief SoftDevice Assertion Handler type. + * + * When an unexpected error occurs within the SoftDevice it will call the SoftDevice assertion handler callback. + * The protocol stack will be in an undefined state when this happens and the only way to recover will be to + * perform a reset, using e.g. CMSIS NVIC_SystemReset(). + * + * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the SoftDevice assert callback. + * + * @param[in] pc The program counter of the failed assert. + * @param[in] line_number Line number where the assert failed. + * @param[in] file_name File name where the assert failed. + */ +typedef void (*softdevice_assertion_handler_t)(uint32_t pc, uint16_t line_number, const uint8_t * p_file_name); + +/** @} */ + +/** @addtogroup NRF_SDM_FUNCTIONS Functions + * @{ */ + +/**@brief Enables the SoftDevice and by extension the protocol stack. + * + * Idempotent function to enable the SoftDevice. + * + * @note Some care must be taken if a low frequency clock source is already running when calling this function: + * If the LF clock has a different source then the one currently running, it will be stopped. Then, the new + * clock source will be started. + * + * @note This function has no effect when returning with an error. + * + * @post If return code is ::NRF_SUCCESS + * - SoC library and protocol stack APIs are made available + * - A portion of RAM will be unavailable (see relevant SDS documentation) + * - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation) + * - Interrupts will not arrive from protected peripherals or interrupts + * - nrf_nvic_ functions must be used instead of CMSIS NVIC_ functions for reliable usage of the softdevice. + * - Interrupt latency may be affected by the SoftDevice (see relevant SDS documentation) + * - Chosen low frequency clock source will be running + * + * @param clock_source Low frequency clock source and accuracy. (Note: In the case of XTAL source, the PPM accuracy of the chosen clock source must be greater than or equal to the actual characteristics of your XTAL clock). + * @param assertion_handler Callback for SoftDevice assertions. + * + * @retval ::NRF_SUCCESS + * @retval ::NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION SoftDeviceinterrupt is already enabled, or an enabled interrupt has an illegal priority level + * @retval ::NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN Unknown low frequency clock source selected + */ +SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lfclksrc_t clock_source, softdevice_assertion_handler_t assertion_handler)); + +/**@brief Disables the SoftDevice and by extension the protocol stack. + * + * Idempotent function to disable the SoftDevice. + * + * @post SoC library and protocol stack APIs are made unavailable. + * @post All interrupts that was protected by the SoftDevice will be disabled and initialized to priority 0 (highest). + * @post All peripherals used by the SoftDevice will be reset to default values. + * @post All of RAM become available. + * @post All interrupts are forwarded to the application. + * @post LFCLK source chosen in ::sd_softdevice_enable will be left running. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void)); + +/**@brief Check if the SoftDevice is enabled. + * + * @param[out] p_softdevice_enabled If the SoftDevice is enabled: 1 else 0. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled)); + +/**@brief Start forwarding interrupts to application. + * + * This function is only intended to be called when a bootloader is enabled is used. + * The bootloader should call this right before it starts the application. + * It is recommended that all interrupt sources are off when this is called, + * or you could end up having interrupts in the application being executed before main() of the application. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_SOFTDEVICE_FORWARD_TO_APPLICATION, uint32_t, sd_softdevice_forward_to_application(void)); + +/** @} */ + +#endif // NRF_SDM_H__ + +/** + @} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/nrf_soc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,777 @@ +/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ + +/** + @defgroup nrf_soc_api SoC Library API + @{ + + @brief APIs for the SoC library. + +*/ + +#ifndef NRF_SOC_H__ +#define NRF_SOC_H__ + +#include <stdint.h> +#include <stdbool.h> +#include "nrf_svc.h" +#include "nrf51.h" +#include "nrf51_bitfields.h" +#include "nrf_error_soc.h" + +/** @addtogroup NRF_SOC_DEFINES Defines + * @{ */ + +/**@brief The number of the lowest SVC number reserved for the SoC library. */ +#define SOC_SVC_BASE 0x20 + +/**@brief Guranteed time for application to process radio inactive notification. */ +#define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US (62) + +#define SOC_ECB_KEY_LENGTH (16) /**< ECB key length. */ +#define SOC_ECB_CLEARTEXT_LENGTH (16) /**< ECB cleartext length. */ +#define SOC_ECB_CIPHERTEXT_LENGTH (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */ + +#define SD_EVT_IRQn (SWI2_IRQn) /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */ +#define SD_EVT_IRQHandler (SWI2_IRQHandler) /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. */ +#define RADIO_NOTIFICATION_IRQn (SWI1_IRQn) /**< The radio notification IRQ number. */ +#define RADIO_NOTIFICATION_IRQHandler (SWI1_IRQHandler) /**< The radio notification IRQ handler. */ + +/** @} */ + +/** @addtogroup NRF_SOC_TYPES Types + * @{ */ + +/**@brief The SVC numbers used by the SVC functions in the SoC library. */ +enum NRF_SOC_SVCS +{ + SD_MUTEX_NEW = SOC_SVC_BASE, + SD_MUTEX_ACQUIRE, + SD_MUTEX_RELEASE, + SD_NVIC_ENABLEIRQ, + SD_NVIC_DISABLEIRQ, + SD_NVIC_GETPENDINGIRQ, + SD_NVIC_SETPENDINGIRQ, + SD_NVIC_CLEARPENDINGIRQ, + SD_NVIC_SETPRIORITY, + SD_NVIC_GETPRIORITY, + SD_NVIC_SYSTEMRESET, + SD_NVIC_CRITICAL_REGION_ENTER, + SD_NVIC_CRITICAL_REGION_EXIT, + SD_RAND_APPLICATION_POOL_CAPACITY, + SD_RAND_APPLICATION_BYTES_AVAILABLE, + SD_RAND_APPLICATION_GET_VECTOR, + SD_POWER_MODE_SET, + SD_POWER_SYSTEM_OFF, + SD_POWER_RESET_REASON_GET, + SD_POWER_RESET_REASON_CLR, + SD_POWER_POF_ENABLE, + SD_POWER_POF_THRESHOLD_SET, + SD_POWER_RAMON_SET, + SD_POWER_RAMON_CLR, + SD_POWER_RAMON_GET, + SD_POWER_GPREGRET_SET, + SD_POWER_GPREGRET_CLR, + SD_POWER_GPREGRET_GET, + SD_POWER_DCDC_MODE_SET, + SD_APP_EVT_WAIT, + SD_CLOCK_HFCLK_REQUEST, + SD_CLOCK_HFCLK_RELEASE, + SD_CLOCK_HFCLK_IS_RUNNING, + SD_PPI_CHANNEL_ENABLE_GET, + SD_PPI_CHANNEL_ENABLE_SET, + SD_PPI_CHANNEL_ENABLE_CLR, + SD_PPI_CHANNEL_ASSIGN, + SD_PPI_GROUP_TASK_ENABLE, + SD_PPI_GROUP_TASK_DISABLE, + SD_PPI_GROUP_ASSIGN, + SD_PPI_GROUP_GET, + SD_RADIO_NOTIFICATION_CFG_SET, + SD_ECB_BLOCK_ENCRYPT, + SD_RESERVED1, + SD_RESERVED2, + SD_RESERVED3, + SD_EVT_GET, + SD_TEMP_GET, + SD_FLASH_ERASE_PAGE, + SD_FLASH_WRITE, + SD_FLASH_PROTECT, + SVC_SOC_LAST +}; + +/**@brief Possible values of a ::nrf_mutex_t. */ +enum NRF_MUTEX_VALUES +{ + NRF_MUTEX_FREE, + NRF_MUTEX_TAKEN +}; + +/**@brief Possible values of ::nrf_app_irq_priority_t. */ +enum NRF_APP_PRIORITIES +{ + NRF_APP_PRIORITY_HIGH = 1, + NRF_APP_PRIORITY_LOW = 3 +}; + +/**@brief Possible values of ::nrf_power_mode_t. */ +enum NRF_POWER_MODES +{ + NRF_POWER_MODE_CONSTLAT, /**< Constant latency mode. See power management in the reference manual. */ + NRF_POWER_MODE_LOWPWR /**< Low power mode. See power management in the reference manual. */ +}; + + +/**@brief Possible values of ::nrf_power_failure_threshold_t */ +enum NRF_POWER_THRESHOLDS +{ + NRF_POWER_THRESHOLD_V21, /**< 2.1 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V23, /**< 2.3 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V25, /**< 2.5 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V27 /**< 2.7 Volts power failure threshold. */ +}; + + +/**@brief Possible values of ::nrf_power_dcdc_mode_t. */ +enum NRF_POWER_DCDC_MODES +{ + NRF_POWER_DCDC_MODE_OFF, /**< The DCDC is always off. */ + NRF_POWER_DCDC_MODE_ON, /**< The DCDC is always on. */ + NRF_POWER_DCDC_MODE_AUTOMATIC /**< The DCDC is automatically managed. */ +}; + +/**@brief Possible values of ::nrf_radio_notification_distance_t. */ +enum NRF_RADIO_NOTIFICATION_DISTANCES +{ + NRF_RADIO_NOTIFICATION_DISTANCE_NONE = 0, /**< The event does not have a notification. */ + NRF_RADIO_NOTIFICATION_DISTANCE_800US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_1740US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_2680US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_3620US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_4560US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_5500US /**< The distance from the active notification to start of radio activity. */ +}; + + +/**@brief Possible values of ::nrf_radio_notification_type_t. */ +enum NRF_RADIO_NOTIFICATION_TYPES +{ + NRF_RADIO_NOTIFICATION_TYPE_NONE = 0, /**< The event does not have a radio notification signal. */ + NRF_RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE, /**< Using interrupt for notification when the radio will be enabled. */ + NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE, /**< Using interrupt for notification when the radio has been disabled. */ + NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH, /**< Using interrupt for notification both when the radio will be enabled and disabled. */ +}; + +/**@brief SoC Events. */ +enum NRF_SOC_EVTS +{ + NRF_EVT_HFCLKSTARTED, /**< Event indicating that the HFCLK has started. */ + NRF_EVT_POWER_FAILURE_WARNING, /**< Event indicating that a power failure warning has occurred. */ + NRF_EVT_FLASH_OPERATION_SUCCESS, /**< Event indicating that the ongoing flash operation has completed successfully. */ + NRF_EVT_FLASH_OPERATION_ERROR, /**< Event indicating that the ongoing flash operation has timed out with an error. */ + NRF_EVT_RESERVED1, + NRF_EVT_RESERVED2, + NRF_EVT_RESERVED3, + NRF_EVT_RESERVED4, + NRF_EVT_RESERVED5, + NRF_EVT_NUMBER_OF_EVTS +}; + +/** @} */ + +/** @addtogroup NRF_SOC_TYPES Types + * @{ */ + +/**@brief Represents a mutex for use with the nrf_mutex functions. + * @note Accessing the value directly is not safe, use the mutex functions! + */ +typedef volatile uint8_t nrf_mutex_t; + +/**@brief The interrupt priorities available to the application while the softdevice is active. */ +typedef uint8_t nrf_app_irq_priority_t; + +/**@brief Represents a power mode, used in power mode functions */ +typedef uint8_t nrf_power_mode_t; + +/**@brief Represents a power failure threshold value. */ +typedef uint8_t nrf_power_failure_threshold_t; + +/**@brief Represents a DCDC mode value. */ +typedef uint32_t nrf_power_dcdc_mode_t; + +/**@brief Radio notification distances. */ +typedef uint8_t nrf_radio_notification_distance_t; + +/**@brief Radio notification types. */ +typedef uint8_t nrf_radio_notification_type_t; + + +/**@brief AES ECB data structure */ +typedef struct +{ + uint8_t key[SOC_ECB_KEY_LENGTH]; /**< Encryption key. */ + uint8_t cleartext[SOC_ECB_CLEARTEXT_LENGTH]; /**< Clear Text data. */ + uint8_t ciphertext[SOC_ECB_CIPHERTEXT_LENGTH]; /**< Cipher Text data. */ +} nrf_ecb_hal_data_t; + +/** @} */ + +/** @addtogroup NRF_SOC_FUNCTIONS Functions + * @{ */ + +/**@brief Initialize a mutex. + * + * @param[in] p_mutex Pointer to the mutex to initialize. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_MUTEX_NEW, uint32_t, sd_mutex_new(nrf_mutex_t * p_mutex)); + +/**@brief Attempt to acquire a mutex. + * + * @param[in] p_mutex Pointer to the mutex to acquire. + * + * @retval ::NRF_SUCCESS The mutex was successfully acquired. + * @retval ::NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN The mutex could not be acquired. + */ +SVCALL(SD_MUTEX_ACQUIRE, uint32_t, sd_mutex_acquire(nrf_mutex_t * p_mutex)); + +/**@brief Release a mutex. + * + * @param[in] p_mutex Pointer to the mutex to release. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_MUTEX_RELEASE, uint32_t, sd_mutex_release(nrf_mutex_t * p_mutex)); + +/**@brief Enable External Interrupt. + * @note Corresponds to NVIC_EnableIRQ in CMSIS. + * + * @pre{IRQn is valid and not reserved by the stack} + * + * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt was enabled. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application. + */ +SVCALL(SD_NVIC_ENABLEIRQ, uint32_t, sd_nvic_EnableIRQ(IRQn_Type IRQn)); + +/**@brief Disable External Interrupt. + * @note Corresponds to NVIC_DisableIRQ in CMSIS. + * + * @pre{IRQn is valid and not reserved by the stack} + * + * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS + * + * @retval ::NRF_SUCCESS The interrupt was disabled. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. + */ +SVCALL(SD_NVIC_DISABLEIRQ, uint32_t, sd_nvic_DisableIRQ(IRQn_Type IRQn)); + +/**@brief Get Pending Interrupt. + * @note Corresponds to NVIC_GetPendingIRQ in CMSIS. + * + * @pre{IRQn is valid and not reserved by the stack} + * + * @param[in] IRQn See the NVIC_GetPendingIRQ documentation in CMSIS. + * @param[out] p_pending_irq Return value from NVIC_GetPendingIRQ. + * + * @retval ::NRF_SUCCESS The interrupt is available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +SVCALL(SD_NVIC_GETPENDINGIRQ, uint32_t, sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq)); + +/**@brief Set Pending Interrupt. + * @note Corresponds to NVIC_SetPendingIRQ in CMSIS. + * + * @pre{IRQn is valid and not reserved by the stack} + * + * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt is set pending. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +SVCALL(SD_NVIC_SETPENDINGIRQ, uint32_t, sd_nvic_SetPendingIRQ(IRQn_Type IRQn)); + +/**@brief Clear Pending Interrupt. + * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS. + * + * @pre{IRQn is valid and not reserved by the stack} + * + * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt pending flag is cleared. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +SVCALL(SD_NVIC_CLEARPENDINGIRQ, uint32_t, sd_nvic_ClearPendingIRQ(IRQn_Type IRQn)); + +/**@brief Set Interrupt Priority. + * @note Corresponds to NVIC_SetPriority in CMSIS. + * + * @pre{IRQn is valid and not reserved by the stack} + * @pre{priority is valid and not reserved by the stack} + * + * @param[in] IRQn See the NVIC_SetPriority documentation in CMSIS. + * @param[in] priority A valid IRQ priority for use by the application. + * + * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application. + */ +SVCALL(SD_NVIC_SETPRIORITY, uint32_t, sd_nvic_SetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t priority)); + +/**@brief Get Interrupt Priority. + * @note Corresponds to NVIC_GetPriority in CMSIS. + * + * @pre{IRQn is valid and not reserved by the stack} + * + * @param[in] IRQn See the NVIC_GetPriority documentation in CMSIS. + * @param[out] p_priority Return value from NVIC_GetPriority. + * + * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application. + */ +SVCALL(SD_NVIC_GETPRIORITY, uint32_t, sd_nvic_GetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t * p_priority)); + +/**@brief System Reset. + * @note Corresponds to NVIC_SystemReset in CMSIS. + * + * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN + */ +SVCALL(SD_NVIC_SYSTEMRESET, uint32_t, sd_nvic_SystemReset(void)); + +/**@brief Enters critical region. + * + * @post Application interrupts will be disabled. + * @sa sd_nvic_critical_region_exit + * + * @param[out] p_is_nested_critical_region 1: If in a nested critical region. + * 0: Otherwise. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_NVIC_CRITICAL_REGION_ENTER, uint32_t, sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region)); + +/**@brief Exit critical region. + * + * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter. + * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. + * + * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_NVIC_CRITICAL_REGION_EXIT, uint32_t, sd_nvic_critical_region_exit(uint8_t is_nested_critical_region)); + +/**@brief Query the capacity of the application random pool. + * + * @param[out] p_pool_capacity The capacity of the pool. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_RAND_APPLICATION_POOL_CAPACITY, uint32_t, sd_rand_application_pool_capacity_get(uint8_t * p_pool_capacity)); + +/**@brief Get number of random bytes available to the application. + * + * @param[out] p_bytes_available The number of bytes currently available in the pool. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE, uint32_t, sd_rand_application_bytes_available_get(uint8_t * p_bytes_available)); + +/**@brief Get random bytes from the application pool. + + @param[out] p_buff Pointer to unit8_t buffer for storing the bytes. + @param[in] length Number of bytes to take from pool and place in p_buff. + + @retval ::NRF_SUCCESS The requested bytes were written to p_buff. + @retval ::NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES No bytes were written to the buffer, because there were not enough bytes available. +*/ +SVCALL(SD_RAND_APPLICATION_GET_VECTOR, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length)); + +/**@brief Gets the reset reason register. + * + * @param[out] p_reset_reason Contents of the NRF_POWER->RESETREAS register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason)); + +/**@brief Clears the bits of the reset reason register. + * + * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk)); + +/**@brief Sets the power mode when in CPU sleep. + * + * @param[in] power_mode The power mode to use when in CPU sleep. @sa sd_app_evt_wait + * + * @retval ::NRF_SUCCESS The power mode was set. + * @retval ::NRF_ERROR_SOC_POWER_MODE_UNKNOWN The power mode was unknown. + */ +SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(nrf_power_mode_t power_mode)); + +/**@brief Puts the chip in System OFF mode. + * + * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN + */ +SVCALL(SD_POWER_SYSTEM_OFF, uint32_t, sd_power_system_off(void)); + +/**@brief Enables or disables the power-fail comparator. + * + * Enabling this will give a softdevice event (NRF_EVT_POWER_FAILURE_WARNING) when the power failure warning occurs. + * The event can be retrieved with sd_evt_get(); + * + * @param[in] pof_enable True if the power-fail comparator should be enabled, false if it should be disabled. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_POF_ENABLE, uint32_t, sd_power_pof_enable(uint8_t pof_enable)); + +/**@brief Sets the power-fail threshold value. + * + * @param[in] threshold The power-fail threshold value to use. + * + * @retval ::NRF_SUCCESS The power failure threshold was set. + * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown. + */ +SVCALL(SD_POWER_POF_THRESHOLD_SET, uint32_t, sd_power_pof_threshold_set(nrf_power_failure_threshold_t threshold)); + +/**@brief Sets bits in the NRF_POWER->RAMON register. + * + * @param[in] ramon Contains the bits needed to be set in the NRF_POWER->RAMON register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RAMON_SET, uint32_t, sd_power_ramon_set(uint32_t ramon)); + +/** @brief Clears bits in the NRF_POWER->RAMON register. + * + * @param ramon Contains the bits needed to be cleared in the NRF_POWER->RAMON register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RAMON_CLR, uint32_t, sd_power_ramon_clr(uint32_t ramon)); + +/**@brief Get contents of NRF_POWER->RAMON register, indicates power status of ram blocks. + * + * @param[out] p_ramon Content of NRF_POWER->RAMON register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RAMON_GET, uint32_t, sd_power_ramon_get(uint32_t * p_ramon)); + +/**@brief Set bits in the NRF_POWER->GPREGRET register. + * + * @param[in] gpregret_msk Bits to be set in the GPREGRET register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_GPREGRET_SET, uint32_t, sd_power_gpregret_set(uint32_t gpregret_msk)); + +/**@brief Clear bits in the NRF_POWER->GPREGRET register. + * + * @param[in] gpregret_msk Bits to be clear in the GPREGRET register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_GPREGRET_CLR, uint32_t, sd_power_gpregret_clr(uint32_t gpregret_msk)); + +/**@brief Get contents of the NRF_POWER->GPREGRET register. + * + * @param[out] p_gpregret Contents of the GPREGRET register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_GPREGRET_GET, uint32_t, sd_power_gpregret_get(uint32_t *p_gpregret)); + +/**@brief Sets the DCDC mode. + * + * Depending on the internal state of the SoftDevice, the mode change may not happen immediately. + * The DCDC mode switch will be blocked when occurring in close proximity to radio transmissions. When + * the radio transmission is done, the last mode will be used. + * + * @param[in] dcdc_mode The mode of the DCDC. + * + * @retval ::NRF_SUCCESS + * @retval ::NRF_ERROR_INVALID_PARAM The DCDC mode is invalid. + */ +SVCALL(SD_POWER_DCDC_MODE_SET, uint32_t, sd_power_dcdc_mode_set(nrf_power_dcdc_mode_t dcdc_mode)); + +/**@brief Request the high frequency crystal oscillator. + * + * Will start the high frequency crystal oscillator, the startup time of the crystal varies + * and the ::sd_clock_hfclk_is_running function can be polled to check if it has started. + * + * @see sd_clock_hfclk_is_running + * @see sd_clock_hfclk_release + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_CLOCK_HFCLK_REQUEST, uint32_t, sd_clock_hfclk_request(void)); + +/**@brief Releases the high frequency crystal oscillator. + * + * Will stop the high frequency crystal oscillator, this happens immediately. + * + * @see sd_clock_hfclk_is_running + * @see sd_clock_hfclk_request + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void)); + +/**@brief Checks if the high frequency crystal oscillator is running. + * + * @see sd_clock_hfclk_request + * @see sd_clock_hfclk_release + * + * @param[out] p_is_running 1 if the external crystal oscillator is running, 0 if not. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running)); + +/**@brief Waits for an application event. + * + * An application event is either an application interrupt or a pended interrupt when the + * interrupt is disabled. When the interrupt is enabled it will be taken immediately since + * this function will wait in thread mode, then the execution will return in the application's + * main thread. When an interrupt is disabled and gets pended it will return to the application's + * thread main. The application must ensure that the pended flag is cleared using + * ::sd_nvic_ClearPendingIRQ in order to sleep using this function. This is only necessary for + * disabled interrupts, as the interrupt handler will clear the pending flag automatically for + * enabled interrupts. + * + * In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M0 + * System Control Register (SCR). @sa CMSIS_SCB + * + * @note If an application interrupt has happened since the last time sd_app_evt_wait was + * called this function will return immediately and not go to sleep. This is to avoid race + * conditions that can occur when a flag is updated in the interrupt handler and processed + * in the main loop. + * + * @post An application interrupt has happened or a interrupt pending flag is set. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_APP_EVT_WAIT, uint32_t, sd_app_evt_wait(void)); + +/**@brief Get PPI channel enable register contents. + * + * @param[out] p_channel_enable The contents of the PPI CHEN register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ENABLE_GET, uint32_t, sd_ppi_channel_enable_get(uint32_t * p_channel_enable)); + +/**@brief Set PPI channel enable register. + * + * @param[in] channel_enable_set_msk Mask containing the bits to set in the PPI CHEN register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ENABLE_SET, uint32_t, sd_ppi_channel_enable_set(uint32_t channel_enable_set_msk)); + +/**@brief Clear PPI channel enable register. + * + * @param[in] channel_enable_clr_msk Mask containing the bits to clear in the PPI CHEN register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ENABLE_CLR, uint32_t, sd_ppi_channel_enable_clr(uint32_t channel_enable_clr_msk)); + +/**@brief Assign endpoints to a PPI channel. + * + * @param[in] channel_num Number of the PPI channel to assign. + * @param[in] evt_endpoint Event endpoint of the PPI channel. + * @param[in] task_endpoint Task endpoint of the PPI channel. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_CHANNEL The channel number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ASSIGN, uint32_t, sd_ppi_channel_assign(uint8_t channel_num, const volatile void * evt_endpoint, const volatile void * task_endpoint)); + +/**@brief Task to enable a channel group. + * + * @param[in] group_num Number of the channel group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_TASK_ENABLE, uint32_t, sd_ppi_group_task_enable(uint8_t group_num)); + +/**@brief Task to disable a channel group. + * + * @param[in] group_num Number of the PPI group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_TASK_DISABLE, uint32_t, sd_ppi_group_task_disable(uint8_t group_num)); + +/**@brief Assign PPI channels to a channel group. + * + * @param[in] group_num Number of the channel group. + * @param[in] channel_msk Mask of the channels to assign to the group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_ASSIGN, uint32_t, sd_ppi_group_assign(uint8_t group_num, uint32_t channel_msk)); + +/**@brief Gets the PPI channels of a channel group. + * + * @param[in] group_num Number of the channel group. + * @param[out] p_channel_msk Mask of the channels assigned to the group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t * p_channel_msk)); + +/**@brief Configures the Radio Notification signal. + * + * @note + * - The notification signal latency depends on the interrupt priority settings of SWI used + * for notification signal. + * - In the period between the ACTIVE signal and the start of the Radio Event, the SoftDevice + * will interrupt the application to do Radio Event preparation. + * - Using the Radio Notification feature may limit the bandwidth, as the SoftDevice may have + * to shorten the connection events to have time for the Radio Notification signals. + * + * @param[in] type Type of notification signal. + * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE shall be used to turn off radio + * notification. Using @ref NRF_RADIO_NOTIFICATION_DISTANCE_NONE is + * recommended (but not required) to be used with + * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE. + * + * @param[in] distance Distance between the notification signal and start of radio activity. + * This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or + * @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used. + * + * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_RADIO_NOTIFICATION_CFG_SET, uint32_t, sd_radio_notification_cfg_set(nrf_radio_notification_type_t type, nrf_radio_notification_distance_t distance)); + +/**@brief Encrypts a block according to the specified parameters. + * + * 128-bit AES encryption. + * + * @param[in, out] p_ecb_data Pointer to the ECB parameters' struct (two input + * parameters and one output parameter). + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t * p_ecb_data)); + +/**@brief Gets any pending events generated by the SoC API. + * + * The application should keep calling this function to get events, until ::NRF_ERROR_NOT_FOUND is returned. + * + * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending. + * + * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter. + * @retval ::NRF_ERROR_NOT_FOUND No pending events. + */ +SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id)); + +/**@brief Get the temperature measured on the chip + * + * This function will block until the temperature measurement is done. + * It takes around 50us from call to return. + * + * @note Pan #28 in PAN-028 v 1.6 "Negative measured values are not represented correctly" is corrected by this function. + * + * @param[out] p_temp Result of temperature measurement. Die temperature in 0.25 degrees celsius. + * + * @retval ::NRF_SUCCESS A temperature measurement was done, and the temperature was written to temp + */ +SVCALL(SD_TEMP_GET, uint32_t, sd_temp_get(int32_t * p_temp)); + +/**@brief Flash Write + * + * Commands to write a buffer to flash + * + * This call initiates the flash access command, and its completion will be communicated to the + * application with exactly one of the following events: + * - NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. + * - NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. + * + * @note + * - This call takes control over the radio and the CPU during flash erase and write to make sure that + * they will not interfere with the flash access. This means that all interrupts will be blocked + * for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual + * and the command parameters). + * + * + * @param[in] p_dst Pointer to start of flash location to be written. + * @param[in] p_src Pointer to buffer with data to be written + * @param[in] size Number of 32-bit words to write. Maximum size is 256 32bit words. + * + * @retval ::NRF_ERROR_INVALID_ADDR Tried to write to a non existing flash address, or p_dst or p_src was unaligned. + * @retval ::NRF_ERROR_BUSY The previous command has not yet completed. + * @retval ::NRF_ERROR_INVALID_LENGTH Size was 0, or more than 256 words. + * @retval ::NRF_ERROR_FORBIDDEN Tried to write to or read from protected location. + * @retval ::NRF_SUCCESS The command was accepted. + */ +SVCALL(SD_FLASH_WRITE, uint32_t, sd_flash_write(uint32_t * const p_dst, uint32_t const * const p_src, uint32_t size)); + + +/**@brief Flash Erase page + * + * Commands to erase a flash page + * + * This call initiates the flash access command, and its completion will be communicated to the + * application with exactly one of the following events: + * - NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. + * - NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. + * + * @note + * - This call takes control over the radio and the CPU during flash erase and write to make sure that + * they will not interfere with the flash access. This means that all interrupts will be blocked + * for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual + * and the command parameters). + * + * + * @param[in] page_number Pagenumber of the page to erase + * @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. + * @retval ::NRF_ERROR_INVALID_ADDR Tried to erase to a non existing flash page. + * @retval ::NRF_ERROR_BUSY The previous command has not yet completed. + * @retval ::NRF_ERROR_FORBIDDEN Tried to erase a protected page. + * @retval ::NRF_SUCCESS The command was accepted. + */ +SVCALL(SD_FLASH_ERASE_PAGE, uint32_t, sd_flash_page_erase(uint32_t page_number)); + + +/**@brief Flash Protection set + * + * Commands to set the flash protection registers PROTENSETx + * + * @note To read the values in PROTENSETx you can read them directly. They are only write-protected. + * + * @param[in] protenset0 Value to be written to PROTENSET0 + * @param[in] protenset1 Value to be written to PROTENSET1 + * + * @retval ::NRF_ERROR_FORBIDDEN Tried to protect the SoftDevice + * @retval ::NRF_SUCCESS Values successfully written to PROTENSETx + */ +SVCALL(SD_FLASH_PROTECT, uint32_t, sd_flash_protect(uint32_t protenset0, uint32_t protenset1)); + + +/** @} */ + +#endif // NRF_SOC_H__ + +/** + @} + */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/nrf_svc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,33 @@ +#ifndef NRF_SVC__ +#define NRF_SVC__ + +#ifdef SVCALL_AS_NORMAL_FUNCTION +#define SVCALL(number, return_type, signature) return_type signature +#else + +#ifndef SVCALL +#if defined (__CC_ARM) +#define SVCALL(number, return_type, signature) return_type __svc(number) signature +#elif defined (__GNUC__) +#define SVCALL(number, return_type, signature) \ + _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \ + _Pragma("GCC diagnostic ignored \"-Wunused-function\"") \ + __attribute__((naked)) static return_type signature \ + { \ + __asm( \ + "svc %0\n" \ + "bx r14" : : "I" (number) : "r0" \ + ); \ + } +#elif defined (__ICCARM__) +#define PRAGMA(x) _Pragma(#x) +#define SVCALL(number, return_type, signature) \ +PRAGMA(swi_number = number) \ + __swi return_type signature; +#else +#define SVCALL(number, return_type, signature) return_type signature +#endif +#endif // SVCALL + +#endif // SVCALL_AS_NORMAL_FUNCTION +#endif // NRF_SVC__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_API/include/softdevice_assert.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor. The use, + * copying, transfer or disclosure of such information is prohibited except by express written + * agreement with Nordic Semiconductor. + * + */ + +/** @brief Utilities for verifying program logic + */ + +#ifndef SOFTDEVICE_ASSERT_H_ +#define SOFTDEVICE_ASSERT_H_ + +#include <stdint.h> + +/** @brief This function handles assertions. + * + * + * @note + * This function is called when an assertion has triggered. + * + * + * @param line_num The line number where the assertion is called + * @param file_name Pointer to the file name + */ +void assert_softdevice_callback(uint16_t line_num, const uint8_t *file_name); + + +/*lint -emacro(506, ASSERT) */ /* Suppress "Constant value Boolean */ +/*lint -emacro(774, ASSERT) */ /* Suppress "Boolean within 'if' always evaluates to True" */ \ +/** @brief Check intended for production code + * + * Check passes if "expr" evaluates to true. */ +#define ASSERT(expr) \ +if (expr) \ +{ \ +} \ +else \ +{ \ + assert_softdevice_callback((uint16_t)__LINE__, (uint8_t *)__FILE__); \ + /*lint -unreachable */ \ +} + +#endif /* SOFTDEVICE_ASSERT_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/Lib/s110_nrf51822_6_0_0/s110_nrf51822_6.0.0_softdevice.hex Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,4835 @@ +:020000040000FA +:10000000481C0020992B0100F1160100CF2A0100A5 +:1000100000000000000000000000000000000000E0 +:100020000000000000000000000000000D2C010096 +:100030000000000000000000F1160100F1160100B0 +:10004000752C01007B2C0100F1160100F116010056 +:10005000F1160100F1160100F1160100F116010080 +:10006000812C0100F1160100F1160100872C01001E +:10007000F11601008D2C0100B9020000FF81000083 +:10008000F1160100F1160100F1160100F116010050 +:10009000F1160100F1160100F1160100F116010040 +:1000A000932C0100992C0100F1160100F1160100BA +:1000B000F1160100F1160100F1160100F116010020 +:1000C00000F002F812F04FFD0CA030C808382418D8 +:1000D0002D18A246671EAB4654465D46AC4201D180 +:1000E00012F041FD7E460F3E0FCCB646012633424C +:1000F00000D0FB1AA246AB46334318475C2C0100E4 +:100100008C2C0100103A02D378C878C1FAD8520773 +:1001100001D330C830C101D504680C6070470000BD +:100120000023002400250026103A01D378C1FBD813 +:10013000520700D330C100D50B6070471FB5C046D1 +:10014000C04612F093FC04B00FB41FBD826902498F +:100150008161024810447047610100000100000005 +:1001600001B41EB400B50FF067FE01B401988646D5 +:1001700001BC01B01EBD0000F0B4404649465246E5 +:100180005B460FB402A0013001B50648004700BF2E +:1001900001BC86460FBC8046894692469B46F0BC11 +:1001A00070470000C1000000401E00BF00BF00BF3C +:1001B00000BF00BF00BF00BF00BF00BF00BF00BF47 +:1001C00000BFF1D17047000070B505460C461646D9 +:1001D00002E00FCC0FC5103E102EFAD2082E02D32B +:1001E00003CC03C5083E042E07D301CC01C5361F3E +:1001F00003E021782970641C6D1C761EF9D270BD55 +:100200008307FF22DB0E9A408907090E99400028D8 +:100210000BDA0007000F0838830828489B001B18DA +:10022000D86990430843D8617047830824489B00ED +:100230001B181868904308431860704710B50446AF +:1002400000210120FFF7DCFF00211820FFF7D8FF75 +:1002500000210B20FFF7D4FF02211920FFF7D0FF68 +:1002600002210D20FFF7CCFF02210E20FFF7C8FF6F +:1002700002210F20FFF7C4FF0221C81FFFF7C0FFB4 +:1002800003211620FFF7BCFF03211520FFF7B8FF5D +:10029000204600F019F8002010BD49210180704768 +:1002A00010B500F04FF810BD0648704710B500F0CB +:1002B0004AF810BD704770477047000000ED00E03D +:1002C00000E400E003F900C330B50546384C95B0B2 +:1002D00006202070A01CFFF7E0FF5920A0803548C1 +:1002E00061880069344A80B2D269344B120C98425A +:1002F00004D18A4208D032A1B42003E0884203D05E +:100300002FA1B72012F0DDFB334802F057F9044665 +:10031000072000F0D7F92146254800F015FA6D1E98 +:10032000072D0AD8302168460170857001F0CCF99C +:10033000002802D009A800F065FC204601F0BBFAB5 +:1003400015B030BD704710B50C46014660390B2919 +:1003500003D8214601F01CFF06E001466C39032951 +:1003600004D8214601F047FF206010BD01467039D6 +:100370001F2903D8214600F03FF8F5E701469039E0 +:100380000F2903D8214600F0C1F8EDE70146A03956 +:100390000F2903D8214600F029F9E5E70146B039D5 +:1003A0000F2903D8214600F006F9DDE70120DBE73D +:1003B000140000200010001040000010FFFF00009B +:1003C0007372635C636F72655F66756E6374696F89 +:1003D0006E732E63000000006D1C000070477047B4 +:1003E00070477047704770477047704710B50128D5 +:1003F00001D100F0CEF910BD10B57038030012F035 +:1004000065FC150C10141C20232A31363B3F434752 +:100410004E535A626A72797E8300086803F0FDFBCE +:1004200010BD086803F050FC10BD0C790B7B8A6886 +:100430000868214603F06EFC10BD086803F0E8FC74 +:1004400010BD03F0BAF910BD08884A6880B21146A1 +:1004500003F06CFE10BD0A790888114680B203F0E3 +:10046000BCFE10BD087840B203F0C7FE10BD08887E +:1004700080B203F0E3FE10BD086803F0F2FE10BD89 +:10048000086803F00AFF10BD086803F036FF10BDCE +:10049000088982B209C9194603F061FF10BD05C978 +:1004A000114603F0B0FF10BD08884A6880B21146BB +:1004B00003F0CEFF10BD0B7908888A6880B2194618 +:1004C00004F010F810BD0B7908888A6880B21946CC +:1004D00004F0B9F810BD08884B688A6880B21946E4 +:1004E00004F0FAF810BD08884A6880B2114604F09A +:1004F00045F910BD088880B204F05EF910BD088887 +:1005000080B204F07CF910BD012010BD10B5903808 +:10051000030012F0DBFB09060F161D242C363F46A4 +:100520004E0088888A6883B20888194680B204F031 +:1005300030FD10BD08884A6880B2114604F086FD7F +:1005400010BD08884A6880B2114604F0C9FD10BD8C +:1005500008884A6880B2114604F0FFFD10BD088883 +:100560004B688A6880B2194604F030FE10BD0889D5 +:1005700082B2888883B20888194680B204F065FE8A +:1005800010BD08894B6882B20888194680B204F011 +:100590009AFE10BD08884A6880B2114604F0CAFE6F +:1005A00010BD888882B20888114680B204F05EFFD0 +:1005B00010BD012010BD10B5B02805D0B12808D05D +:1005C000B2280BD0012010BD088880B205F042FA95 +:1005D00010BD088880B205F06DFA10BD08884B6820 +:1005E0008A6880B2194605F076FA10BD10B5A038B9 +:1005F000030012F06BFB0B070E172028323C434D13 +:10060000545D65004B6808788A68194606F090FDCD +:1006100010BD88888A6883B20888194680B206F0BF +:100620009CFD10BD08884C68CB688A6880B2214662 +:1006300006F0A3FD10BD08884B688A6880B2194691 +:1006400006F0BDFD10BD8888CB6884B208888A6832 +:1006500080B2214606F0DDFD10BD8888CB6884B2EB +:1006600008888A6880B2214606F0E3FD10BD08883C +:100670004A6880B2114606F00BFE10BD088982B2AE +:10068000888883B20888194680B206F00BFE10BD38 +:1006900008884A6880B2114606F024FE10BD088919 +:1006A0004B6882B20888194680B206F0A1FE10BDE0 +:1006B00008884B688A6880B2194606F05EFF10BD54 +:1006C000012010BD10B507F09BF80FF0CFF907F02F +:1006D00049FD0FF01DFB07F0B3FD07F0D1FC10BD85 +:1006E0001CB50446002069460870204608F020FD2D +:1006F0006946204608F0DEFB002803D1FBA1B120AB +:1007000012F0DFF901A9204608F033FB002803D1DD +:10071000F6A1B62012F0D5F9684600781CBD70B578 +:10072000F74D002428462C7620308471C47112F0D5 +:10073000DBFA284640380470203084738474847651 +:100740002C74AC7070BDEAE710B50C46ED49828898 +:100750008A8042884A800078087008460A38847087 +:1007600008F0DDFAFFF7DBFF204609F01FFDE44A41 +:10077000E0321146383908461446813808F04AFDFF +:100780002146E0480AF0FDFF08F0C9FC12F0ACFA7F +:1007900010BD10B50120FFF721FE10BDF8B509F01E +:1007A0004CF9D84DD64C0A3D022802D0207C0028B6 +:1007B0007CD0207E0026102819D1A078002803D0F4 +:1007C000CAA1D14812F07DF9CD48E838817A89076D +:1007D0000DD50146267160398989E180C17A21727F +:1007E00081896181C089A0810120A0702676C44FD3 +:1007F000203FB87C002859D1C4486946808908F058 +:1008000059FB002805D06946687809784018687057 +:1008100004E0C520B5A1C00012F053F9207C0028E7 +:1008200038D0BA488189FF300930406D80898142D3 +:1008300004D0B548ADA1223012F043F9B348808905 +:1008400008F0DEFB002804D1AF48A8A1283012F040 +:1008500038F908F04CFC00281CD0AC488089FFF720 +:100860003FFF697840186870A5484038416D2031D5 +:100870000A7C012A0DD1A54A3E779289C287487C1D +:1008800020700120B876207E102801D0282800D1C1 +:10089000267626746978002908D09C488289FF3022 +:1008A0000930C28601870120B8746E7009F0BAF869 +:1008B000002805D1207C002802D0A87801F0A2FEF3 +:1008C000F8BDF8B50F460446FFF768FF8C4D403D74 +:1008D00028788B4E002813D0002F10D1307E0028AE +:1008E00004D0FF2081A1BE3012F0EBF82C22A91C0D +:1008F000204611F049FF0E202070002028708FE064 +:100900007F4D203DA87B002818D0002FF7D1307EE6 +:10091000102808D0282806D0002804D0FF2073A172 +:10092000CA3012F0CEF80120E070E87BA070287C7D +:1009300060700F2020700020A87371E00121204614 +:1009400008F00EFC002807D0307C002851D1394631 +:10095000204608F005FCF8BDA97C69480C380090D9 +:1009600068480A38002913D00178052910D2002FD1 +:1009700056D1491C0170002666700D2020700120A0 +:1009800028750622A01C009911F0FEFEAE7447E007 +:100990005C4800210A380170B078002814D0002F7C +:1009A0003ED1307E002803D050A1594812F089F87A +:1009B000002565700120524920700A22091DA01CE3 +:1009C00011F0E2FEB5702BE0394620460AF046FEF3 +:1009D000002825D1A87C002805D0002F20D1494827 +:1009E0000A380178C5E7A87E002802D0307C0028AC +:1009F00001D00020F8BD002F12D1307E002804D095 +:100A00008D203AA1800012F05CF8002666700A2062 +:100A10003B4920700622091FA01C11F0B5FEAE76DE +:100A20000120F8BD10B53648017E002908D1007CB0 +:100A3000012805D001210020FFF743FF002801D045 +:100A4000072010BD012010BD10B5012409F0F8FBEE +:100A50000443FFF7E7FF044308F062FB014621432C +:100A6000084610BDF8B51D4614460E4608F0A1F91B +:100A7000002807D0684608F0A7F9002803D0002C0A +:100A800007D101E00120F8BD992018A1800012F0E3 +:100A900018F808F045F9A04204D21D4813A15830B7 +:100AA00012F00FF8009807F0B9FD3146009807F0F2 +:100AB000C7FDE2B22946009807F07EFF08F096F9DC +:100AC000002804D19D2009A1800011F0FAFF08F050 +:100AD00029FB0E4800244030C17B002902D0C4739A +:100AE00009F080FC0948C480CCE700007372635CA5 +:100AF0006C6C5F6374726C2E73302E6300000000A8 +:100B0000E0020020240000200B06000098010020D5 +:100B10000D02000010B50179002907D001290AD083 +:100B2000F749FE2011F0CDFF002010BD831D428843 +:100B30000488022103E042880488831D01212046A5 +:100B4000FFF790FF10BDF8B51F4615460E46044648 +:100B500008F073FF022803D0EA48007C00281FD069 +:100B6000E9488089208008F04BFA002803D1E44945 +:100B7000E64811F0A6FF0524684608F04CFA002864 +:100B80000ED0009807F094FD3070022809D001289B +:100B900007D008F080FA641E2406240EECD1002051 +:100BA000F8BD3946009807F01FFF2880002804D1BF +:100BB000D648D349123011F084FF08F06CFA0028AF +:100BC00004D1AF20CE49800011F07BFF0120F8BD99 +:100BD00038B50446831D821C6946FFF7B4FF002820 +:100BE0000DD00020607168460078012808D00228E6 +:100BF00006D0FF20C249203011F063FF012038BD2C +:100C00002071FBE700215CE670B5BE4C0546403C18 +:100C10002078002803D1BB48007E002803D0B849C3 +:100C2000BB4811F04EFF287808F093FB28780AF0B3 +:100C3000EEFE00202071012060713921E1702070EA +:100C400070BD70B5AF4D0446403D2878002803D1F3 +:100C5000AC48007E002804D0AD48A949183811F0EE +:100C600030FFA94E2188B089884203D108F0E5FE03 +:100C7000022807D002202871012068713821E9700C +:100C8000287070BD7F2070769F48E1782030C17356 +:100C9000A17881730020EEE710B59A4C403C207893 +:100CA000002807D19748007E002803D108F0C5FE30 +:100CB000032804D161209249C00011F002FF91493C +:100CC00000202031C8712071012060713A21E1704B +:100CD000207010BD70B58B4C0646403C2078002833 +:100CE00007D18848007E002803D108F0A6FE03281B +:100CF00004D186488249783011F0E3FE814D2035D9 +:100D0000E87908280CD2E87910220001001968302F +:100D1000314600F09FFDE879401CE871002000E0BA +:100D200007202071012060713B21E170207070BDAF +:100D3000F8B5744C0546403C2078002803D1714832 +:100D4000007E002804D072486D49443811F0B9FE85 +:100D5000A878002801D0012804D1A888FF21F53106 +:100D6000884204D96A4866493E3811F0AAFE664EA8 +:100D70002988B089884203D108F05FFE022807D095 +:100D800002202071012060713621E1702070F8BDD1 +:100D90005D48002720308772A988B185012131760E +:100DA000A978012900D00021817257484030C07BCA +:100DB000002801D009F016FB2771E3E770B5514C0C +:100DC0000546403C2078002807D14E48007E002888 +:100DD00003D108F032FE002804D04D484849673856 +:100DE00011F06FFE287809F02EFA00202071012002 +:100DF00060713021E170207070BD70B5414C0546C6 +:100E0000403C2078002803D13E48007E002804D0D2 +:100E10003F483B490D3011F054FE287800280BD094 +:100E2000012809D0022807D06878402804D3384820 +:100E30003349143011F045FE284608F0F6FD00282D +:100E400001D0002000E00C202071012060713421CD +:100E5000E170207070BD70B52A4C0546403C20788A +:100E6000002807D12748007E002803D108F0E5FDBF +:100E7000002804D0264822495C3811F022FE297847 +:100E8000002914D00A2912D0142910D01E290ED0FE +:100E900028290CD032290AD04B2908D0642906D041 +:100EA000FF2904D01A481649503811F00AFE284686 +:100EB00009F028FA00202071012060713321E170CF +:100EC000207070BD70B50F4C0546403C207800285E +:100ED00003D10C4A107E002804D00D48084975380B +:100EE00011F0EFFD062229460A4811F04DFC0020C2 +:100EF0002071012060713221E170207070BD00000E +:100F0000EC0A0000E002002098010020A30200008B +:100F1000910500001D00002070B5F84C05462078B2 +:100F2000002804D120464030007E002803D0F44938 +:100F3000F44811F0C6FD00216956042914D0002997 +:100F400012D0081D10D0001D0ED0001D0CD0001DA9 +:100F50000AD0001D08D00A3006D0283104D0A120C4 +:100F6000E749C00011F0ADFDE74829780170012084 +:100F700060713121E1702070C0E710B5DF4C20783E +:100F8000002804D120464030007E002804D067208D +:100F9000DB49000111F095FD07F0C2FEE08007F08B +:100FA00087FF207200202071012060710521E1700F +:100FB000207010BDF8B5D14C07462034A07B2546E3 +:100FC0002035002805D1287E002802D1A8780028E5 +:100FD00004D0CC48CA492A3811F073FD08F02DFD21 +:100FE0001026022822D1C9483988808988421DD11B +:100FF000C249483908460A7F6038807A002A03D0FF +:1010000080070CD40C200CE0800708D40620087759 +:10101000BE484030C07B002801D009F0E3F92E76AD +:101020000020E07326740120A073F8BD0220F8E7C9 +:1010300010B5B24C2078002804D120464030007E04 +:10104000002804D0AF48AE493C3811F03AFD0020EA +:1010500020710E20A0700F20E070FF20A0710020F2 +:10106000C0432081AA480178A1728188A18140886B +:10107000E08101206071207010BD10B59F4C207878 +:10108000002804D120464030007E002804D0DB2018 +:101090009B49800011F015FD0821A01D0EF082FD76 +:1010A00000202071012060712B21E170207010BDA3 +:1010B00070B5924D04462878002804D12846403067 +:1010C000007E002804D0B7208D49C00011F0F9FC43 +:1010D0008E4810222146303800F0BCFB8B4810228D +:1010E000A118203800F0B6FB884830380EF061FEB9 +:1010F0008649102210392C46A81D00F0ABFB0020B9 +:1011000020710E20A0702A20E070012060712070F4 +:10111000F4E6F8B5794C05462034A07B2646203607 +:10112000002802D1307E002804D076487449DC388B +:1011300011F0C7FCA978052912D0132910D0142961 +:101140000ED015290CD01A290AD0292908D03D29FA +:1011500006D03B2904D06B486949D43811F0B1FC62 +:1011600028886C49884204D966486549CB3811F013 +:10117000A8FC08F062FC0C212827022809D163484A +:101180002A888089904215D15C484838027E002A1E +:1011900001D0E17310E0A97841760121017637761C +:1011A0000020E07359484030C07B002804D009F08B +:1011B00019F901E00220E07327740120A073F8BD43 +:1011C00070B54E4C05462078002804D122464032A6 +:1011D000107E002804D083204949C00011F071FC22 +:1011E0004648294660300622054611F0CDFA012016 +:1011F000A8710021217160711721E17020707DE6D6 +:10120000F0B5414F85B0403F3D7A06463B480078F7 +:10121000002804D13846A038007E002803D0384981 +:101220003D4811F04EFC3078002806D0012804D04B +:101230000D203349800111F044FC082D39D2324889 +:1012400020380190C469307800282CD0012804D0BF +:1012500031482B490F3011F034FC29460831012068 +:10126000884004430120A84020430090B179234CDA +:1012700008027279690009191043FF310131888130 +:10128000B01C11F0E2FA717800020843A9000919B4 +:10129000C031C862387A401C387201990098C86120 +:1012A0000020207108E0294608310120884084434D +:1012B000D8E7124807210171012110480B22417122 +:1012C000C270017005B0F0BD10B50C4C207800283C +:1012D00004D120464030007E002804D00E48084942 +:1012E0000E3811F0EEFB11F0FFFC00202071012000 +:1012F00060710A21E170207010BD0000A002002082 +:10130000EC0A000006050000C00300209801002040 +:1013100024000020FF0E00003F03000010B508F07D +:101320000AFF002803D0FC49FC4811F0CAFB07F073 +:10133000F5FE07F0D8FC0AF016FA002804D0F748AA +:10134000F5490E3011F0BDFB07F039FF002804D03D +:10135000F248F149123011F0B4FB11F0C5FCF0482D +:1013600000240470FFF7DBF9EE480121047141719C +:101370000222C2700170BFE770B5EA4D04462878BA +:10138000002804D128464030007E002804D0EF20F9 +:10139000E149800011F095FB20781F2801D8601CDE +:1013A00004D1DE48DC49DE3011F08BFB00202871CF +:1013B0002078611C07F0BCFF012068712021E970D2 +:1013C00028709BE5F8B5D74C054620782646403670 +:1013D00000280CD1307E002809D108F02EFB00280F +:1013E00002D1307C002807D0287800280ED0CB48C6 +:1013F000C949EB3011F065FB2878012806D0002898 +:1014000004D0C648C449F03011F05BFB0120607184 +:1014100028780027C44D01280BD0002008F074FE66 +:10142000002844D00C2020711B20E0700120207087 +:10143000F8BD0C20207107F003FF0028F4D0BA4853 +:1014400002210C300EF037FB002806D00F21A889AE +:10145000090211F013FAA98100E0AF8101220321F2 +:10146000B14807F0E9FAB04808F051F8A88907F048 +:1014700059FC002803D1A849AC4811F022FBA889E7 +:10148000002107F053FE002804D0A848A249001DFF +:1014900011F017FB317F708B08F0D9FE002804D0C3 +:1014A000A2489D49083011F00CFB2771BCE7277159 +:1014B000307C0028B8D1A889FFF712F9B4E770B5DD +:1014C000984D04462878002804D128464030007EF4 +:1014D000002804D0954890493B3811F0F2FA207862 +:1014E0001F2801D8601C04D190488B493A3811F06C +:1014F000E8FA002028712078611C07F02DFF0120F8 +:1015000068711A21E9702870F8E4F8B5854D044631 +:1015100028780C272E464036002806D1307E002839 +:1015200003D108F08AFA032804D16F207A49C00059 +:1015300011F0C7FA6079002801D001282FD1A079D5 +:10154000002801D001282AD1A07B002805D001283D +:1015500003D0022801D0032821D1607B40071ED090 +:10156000618801208003814202D82288824201D909 +:1015700020790CE02079002804D0022805D0032827 +:1015800003D004E0202904D209E0A02A01D20128D6 +:1015900005D12088884207D92079012804D06348E2 +:1015A0005D495F3811F08DFA20887083207930779B +:1015B0006079002802D0012803D00CE05C4A0021A9 +:1015C00005E0584A60329079002804D00121204675 +:1015D00007F03AFE074601202F7168711821E97063 +:1015E0002870F8BD70B54F4C05462078002804D10E +:1015F00020464030007E002804D04C484649B63092 +:1016000011F05FFA08F019FA0C2102280ED14648B1 +:101610002A8883899A4219D10246C032137F002B4F +:1016200004D1807E0E2803D00F2801D0217103E061 +:1016300005201077002020710E20A0702E20E07071 +:101640002888E08001206071207057E40220F2E7D2 +:1016500070B5344C05462078002804D1204640302F +:10166000007E002804D031482B498A3011F029FA35 +:1016700008F0E3F90C2102280ED12B482A8883892F +:101680009A421FD10646C036327F002A04D1807E9E +:101690000E2803D00F2801D0217109E02148102223 +:1016A000A91C1E3811F070F804203077002020713A +:1016B0000E20A0702D20E0702888E080012060714D +:1016C00020701BE40220F2E710B501780B0011F046 +:1016D000FDFA3C90904590906590909090484B908A +:1016E00090905E619090909090904F3590393D90A1 +:1016F00090909041909090909090905390575B90E4 +:101700001F319078686C7074907C90878B84809087 +:10171000801CFFF79DFF6AE0EC0A0000DF0200007A +:10172000C0030020A002002098010020E90300006F +:101730001D000020801CFFF755FF58E0801CFFF7BC +:10174000E4FE54E0801CFFF7BAFE50E0801CFFF777 +:1017500039FE4CE0801CFFF70FFE48E0FFF7DEFD8E +:1017600045E0FFF7B1FD42E0801CFFF749FD3EE098 +:10177000801CFFF725FD3AE0801CFFF7CAFC36E02D +:10178000801CFFF795FC32E0FFF777FC2FE0FFF7B6 +:101790004FFC2CE0801CFFF70DFC28E0FFF7EDFB71 +:1017A00025E0801CFFF7B8FB21E0801CFFF78AFBD7 +:1017B0001DE0801CFFF74FFB19E0801CFFF71DFBAD +:1017C00015E0801CFFF7FAFA11E0801CFFF7B0FA71 +:1017D0000DE0801CFFF77EFA09E0FFF75DFA06E0F6 +:1017E000801CFFF72EFA02E0801CFFF70DFA0120A3 +:1017F00082E5002080E510B51D491E4811F061F911 +:101800007AE570B51D4A012411461B4D4031030095 +:1018100011F05CFA05191C1C04191C00012200219E +:10182000154807F009F91548002148380177417734 +:10183000C03808F068FD002804D00E480C49D330A9 +:1018400011F03FF964E40C74556561E46D200849BA +:101850000001F5E730B5134606E0CC18203CE47FE4 +:10186000D51A44555B1EDBB2002BF6D130BD00000B +:10187000EC0A0000CA05000098010020A002002028 +:1018800010B5030011F022FA070805080B0B0E0E25 +:10189000110003F0FAFF10BD01F0BAFF10BD0BF00C +:1018A0009BFF10BD0DF004FE10BDFF20F8A17D30A0 +:1018B00011F007F910BD7FB5F94AFA4C51689268EA +:1018C0000192009120700823F74A1946F7480EF05C +:1018D00093FB0025F6480EF0ADFB6D1CEDB2072D15 +:1018E000F8D3F1490320803140020BF0C7FF0028F4 +:1018F00003D0E7A1912011F0E4F81E220221ED4867 +:101900000AF077FBEB481E22032110300BF0EBF8B6 +:10191000E8480722342174300AF0C4FAE5484C2123 +:10192000283010F090FFE3496A46743108464C387D +:101930004164FF317B31816401211172039002F017 +:1019400016F902A80CF0CCFA002803D0D0A1A520EB +:1019500011F0B7F8D54802222421A8380AF0A2FADB +:10196000D24802222C215C380AF09CFAD2490B2082 +:101970000DF08AFE002803D0C5A1B22011F0A1F815 +:1019800003F070FF03F076F904F0D6FD6B46CB4A06 +:101990000821CBA002F04BF8002803D0BCA1B9204D +:1019A00011F08FF8012005F0C8F8002803D0B8A185 +:1019B000BB2011F086F87921C900C44810F043FF1C +:1019C000C249B74A0020135C0D18401CC0B2EB702E +:1019D0000428F8D3002060606070A0707FBD70B5EF +:1019E000BB4E0546706A94B00C46401C04D1B06AE8 +:1019F000C0430004000C0BD0306AC007C00F287031 +:101A0000706A10F033FFB06A2071000A607113E051 +:101A10002B206946087009A968460AF089FA00284F +:101A200003D09BA1DF2011F04CF801202870062282 +:101A30000AA9204610F0A8FE2878002815D0607961 +:101A4000C0210843607117206946087000A806226B +:101A50002146023010F098FE09A968460AF068FA9B +:101A6000002816D08AA1F42011E0322069460870BF +:101A700000A806222146023010F086FE09A9684619 +:101A80000AF056FA002804D0FF2081A1013011F09D +:101A900018F814B070BDF0B58D4C0646206895B0AE +:101AA0000D463746401C0837002808D16068401CA6 +:101AB00005D1A068401C02D1E068401C11D020680C +:101AC000314610F0D3FE6068311D10F0CFFEA068E3 +:101AD000394610F0CBFEE06831460C3110F0C6FEFE +:101AE00025E02B206946087009A968460AF020FA0B +:101AF000002804D0FF2066A1203010F0E2FF082269 +:101B00000AA9304610F040FE2B206946087009A94A +:101B100068460AF00DFA002804D0FF205CA12730A7 +:101B200010F0CFFF08220AA9384610F02DFE2069D8 +:101B30002E46401C0836002808D16069401C05D19B +:101B4000A069401C02D1E069401C12D020692946DE +:101B500010F08CFE6069291D10F088FEA0693146E6 +:101B600010F084FEE06929460C3110F07FFE15B0BC +:101B7000F0BD2B246846047009A90AF0D9F90028A1 +:101B800004D0FF2042A1453010F09BFF082209AF8E +:101B90000AA9284610F0F8FD6846047009A90AF061 +:101BA000C7F9002804D0FF2039A14C3010F089FF7C +:101BB0000822391D304610F0E7FDD8E710B50021A6 +:101BC00008460EF0ECFA002101200EF0E8FA0021A0 +:101BD00002200EF0E4FA002103200EF0E0FA0021CA +:101BE00004200EF0DCFA002105200EF0D8FA10BD1A +:101BF00010B5364CA0780A2804D3FF2024A19630D3 +:101C000010F05FFF20786021484300190830002160 +:101C100001704178E722C908C900C91C1140417010 +:101C2000204A0121517010BD70B51E4C607800280B +:101C30000ED0264800250178491CC9B201700A2936 +:101C400000D105708178491C81700EF072FB6570BF +:101C500070BD70B5134C05466068002804D0FF20A5 +:101C60000BA1BF3010F02DFF656070BD70B50D4E3B +:101C7000164DFFF7BDFF7168044600292AD0602287 +:101C8000FEF7A2FAFFF7D0FF00207060F1E7000036 +:101C90007372635C686F73745F636F72652E630049 +:101CA000F82C01002C000020C40300206C1100203F +:101CB00081180000440A0020141000203412000093 +:101CC0006E52463531383232000000004C0C002094 +:101CD000800000102879002852D0FE480AF0F2F85F +:101CE0006060002804D1FF20FB49DD3010F0E9FEE0 +:101CF00060680AF045F9002810D0204601F0A5F8E8 +:101D00006078010707D5C008C000401C60702879C2 +:101D1000401E287126E0EF48616829E0ED486168BF +:101D20000AF0D9F8687900282AD0EA484C380AF035 +:101D3000C9F86060002803D1E749E84810F0C1FE07 +:101D400060680AF021F9002815D0204603F0DCFD78 +:101D50006078010709D5C008C000801C60706879F0 +:101D6000401E6871FFF760FF83E7DA4861684C380E +:101D70000AF0B1F87DE7D74861684C380AF0ABF853 +:101D800070BDF7B505460078002700090C463E46B1 +:101D9000062804D0D148D049223010F092FE287A8B +:101DA00000280ED0012814D0CC48CB49433010F085 +:101DB00088FE0298002C068001D0278066800020D3 +:101DC000FEBD02270926002C0ED0A889A080A87B82 +:101DD00008E003271426002C06D02869E060A88AB2 +:101DE0002082287B2072E4E702980680E7E770B53E +:101DF0000E4600211C4619801546030010F066FFB0 +:101E00000723050B1711231D2300224629463046C0 +:101E100003F046FD70BD22462946304601F09BFA8C +:101E200070BD22462946304604F081FA70BD224634 +:101E30002946304602F052FF70BD22462946304600 +:101E4000FFF79FFF70BD4D20A349C00010F039FE81 +:101E5000032070BD01469F4810B54C380AF03BF88E +:101E60009F494879401CC0B24871012803D19D4860 +:101E7000007800F0C7FB10BDF8B505460720400705 +:101E80000F460A18012189038A4209D2002D02D087 +:101E90002818884204D2E81C80088000A84201D09B +:101EA0001020F8BD8E488178002911D03988009122 +:101EB0004178602251430C18083420783B460007D3 +:101EC000000F00222146FFF792FF060004D015E024 +:101ED000002038800520F8BD002D13D039880098E7 +:101EE000814201D90C260DE020783B460007000F07 +:101EF0002A462146FFF77BFF060005D00C2E01D0B5 +:101F0000002038803046F8BD754D6878401CC0B25E +:101F100068700A2801D100206870A878401EA87057 +:101F200061784807400F022810D00128EAD169489B +:101F3000616809F0D0FF2879401CC0B228710128DF +:101F4000E0D16848007800F05DFBDBE7C806D9D433 +:101F50006068FFF77FFFD5E770B504466248164614 +:101F60000D46814204D15D485B49DB3010F0A9FD8C +:101F7000012E05D059485849EB3010F0A2FD70BD34 +:101F80005848012181706620207000202072A581B0 +:101F9000A17370BD70B516460D46040001D1FFF760 +:101FA00027FE662101700121017229680161A9885B +:101FB00081820673002C01D1FFF736FE70BD072128 +:101FC0004907012241189203914201D31020704722 +:101FD0000721017000207047052210B5920390423E +:101FE0000ED301239B04C21A404B9A4208D3404BA4 +:101FF000984205D2072252078A18DB139A4201D36E +:10200000102010BD0DF079FB10BD052310B59B030A +:1020100099420ED301239B04344CCB1AA34208D31C +:10202000334B994205D2E3020124D318A403A342FF +:1020300001D3102010BD022803D0102801D00920A0 +:1020400010BD0DF080FB0028FAD0052010BD70B542 +:1020500005239B03984212D301239B04234CC31AEC +:10206000A3420CD3224B984209D2E4020D19DB1390 +:102070009D4204D2002A04D014199C4201D310209E +:1020800070BD0DF086FB0028FAD0072070BD10B59A +:1020900004460720400701212018890394B0884294 +:1020A00002D3102014B010BD01F0ADFD002801D006 +:1020B0001120F7E70F2008A9087369460BA809F05B +:1020C00037FF0028EED16846007A207068464089C4 +:1020D00060800FE010110020901C0000FF01000044 +:1020E0004C0C00202C000020FFFF00000000FC1F13 +:1020F0000040002068468089A0800020D2E710B50B +:1021000094B0044601F07FFD002801D01120C9E7FA +:10211000002C01D00720C5E7392168460170002155 +:10212000817009A909F004FF002803D01549164859 +:1021300010F0C7FC0020B5E770B5144C0846A17834 +:10214000002913D000280FD0072252070123851839 +:102150009B039D4203D20568AA189A4201D310201E +:1021600070BD8288002A03D0012903D0082070BDE9 +:10217000092070BD04F042FA0028FAD10021A170B4 +:1021800070BD0000901C0000790300002C000020AE +:1021900010B56038030010F099FD07050A0E131AF8 +:1021A00021252C0005C91146FFF766FE10BD086801 +:1021B000FFF705FF10BD05C91146FFF70DFF10BD64 +:1021C0004B6808788A681946FFF71FFF10BD4B68F7 +:1021D0008A6808681946FFF73AFF10BD0868FFF7DC +:1021E00056FF10BD08884A6880B21146FFF7A4FF69 +:1021F00010BD012010BD10B56C2801D0012010BD0C +:102200000878FFF77CFF10BD10B5EFF31080C4070E +:10221000E40F72B6D6484178491C417040780128D5 +:1022200001D10EF0ABF8002C00D162B610BD70B534 +:10223000CF4CE07800280AD10125E570FFF7E4FFD4 +:102240000EF0A4F8002804D000200EF077F800204B +:1022500070BDC84865714560F9E770B5EFF310804F +:10226000C507ED0F72B6C24C6078002803D1C2A139 +:102270008F2010F026FC6078401E60706078002887 +:1022800001D10EF07FF8002D00D162B670BD10B5FF +:10229000B748C178002904D000214171C170FFF70F +:1022A000DCFF002010BD10B504460EF06FF8B049F9 +:1022B000C978084000D001202060002010BDF8B58A +:1022C0000246AB4C0026A6710820042101251027E8 +:1022D000130010F0FBFC0D080A0C0E101214161E51 +:1022E000262123252800257122E0022001E021710A +:1022F0001EE020711CE027711AE02020F9E701267A +:1023000016E0FFF781FF0EF041F80028FBD002260F +:102310000EE02171A5710BE02771FBE7202000E0A2 +:1023200040202071F6E7FF2093A17E3010F0C9FB1A +:102330000EF038F8002809D00EF03AF8B04205D176 +:1023400030460EF038F80028FAD024E0012080074B +:10235000C5608D4A002151608C4A9661854B0222EE +:102360005A6085608A4803690569DB43DB06DB1731 +:102370005B1C10273D430561834D00E020BF6F6863 +:10238000002FFBD0002B03D1076910239F43076167 +:10239000784882606960A07900280CD00DF0F6FFC3 +:1023A00005460DF053FF7B4A002D02D0A260E0608D +:1023B00001E0E260A060002E01D100F0B1F8F8BDAC +:1023C00010B504460DF0E8FF002805D0684901204B +:1023D000C8704A78521C4A702046FFF770FF10BD43 +:1023E000F8B5694FB8680025012802D1BD600DF02D +:1023F000A5FF7868012800D17D60386801265C4C13 +:10240000012814D13D606079002803D000200DF030 +:1024100095FF65712078002809D00DF0B7FF0028DE +:1024200005D05948C038866300060661A670386931 +:1024300001282CD13D6100F068F801208007466139 +:10244000A079002815D00DF0A1FF00900DF0FEFE40 +:102450000099002901D0E16800E0A168411A022931 +:1024600001DA8A1C13DC0099002901D0E06000E049 +:10247000A060FFF7C9FE0DF089FF002806D0424892 +:10248000C038866300060661A67000E02670F86812 +:10249000012819D100F039F800F037F800F035F8CC +:1024A000A078002804D1FF2033A1053010F009FBEB +:1024B000FD60A5702570FFF7D0FE0DF042FA0028F0 +:1024C00002D03148C038C663F8BD10B5284CE0785A +:1024D000002801D10DF056FF01208107886100F02E +:1024E00014F8A07800280BD0274CE068002803D10E +:1024F0000DF061FF0028F8D10020E06000F005F841 +:1025000000201C49C043886010BD08B550206946B2 +:1025100008806A461088411E11800028F9D108BD44 +:10252000F8B5144819278760174900200860C8606B +:102530000DF02CFFBD0701240D4E002805D01248D8 +:10254000C03884632C61B47000E03470FFF75CFE27 +:10255000084847600D4930798863FFF7D6FFAC61C2 +:10256000FFF7D3FF0849002008616C61F8BD000047 +:1025700034000020000300407372635C736F635F7C +:10258000636C6F636B2E6300000100400005004028 +:1025900000ED00E0FFFFFF7F01203F49400608609B +:1025A0003E4908603E490A68FF231B029A43831292 +:1025B0001A430A60384980390860704710B50246EE +:1025C0000420384904E0C3005B181B79002B0AD0B3 +:1025D0000346401EC0B2002BF5D133A1432010F0BA +:1025E00070FAFF2010BDC300CA50002259184A716A +:1025F0008A7101220A7110BD2A4A0021C000801888 +:102600000171704710B50446042803D326A1522057 +:1026100010F057FA2348E1000C182079012803D064 +:1026200021A1532010F04DFA6079A179401CC0B26D +:10263000814200D060710120174940068031086056 +:1026400010BD70B5164800680004800F022803D042 +:1026500015A1692010F035FA124E194C0325207887 +:10266000C10088190279012A07D1427983799A42F7 +:1026700003D042798271705880472078401CC0B2E4 +:102680002070042801D30020207028466D1EEDB272 +:102690000028E4D170BD000080E100E080E200E0AD +:1026A00018E400E08C1100207372635C736F635F49 +:1026B0007369676E616C6C696E672E630000000061 +:1026C000440000208107C90E002808DA0007000F27 +:1026D000083880082C4A80008018C06904E080080F +:1026E0002A4A800080180068C8400006800F7047A2 +:1026F00010B50D20FFF7E6FFC4B20420C043FFF77A +:10270000E1FFC0B2844203D021A11A2010F0D9F910 +:1027100010BD0121234A48031060234B00221A6098 +:10272000224A5160224A1060224A11601D498039B4 +:102730000860704701211B4A480310601D4A516020 +:10274000194A002111601A490860704710B51649EE +:102750000868012804D00EA1562010F0B2F910BD6F +:10276000154880680022C0B20A600DF041FA10BD21 +:1027700010B50D4801680029FCD0FFF7E7FF0120E4 +:102780000B494003086010BD00ED00E000E400E0EC +:102790007372635C736F635F68616C5F726E672EE8 +:1027A0006300000080E100E000D1004000D3004061 +:1027B00080E200E000D0004000D5004030B40121AC +:1027C000BB48C9020160CD1005604A030260B948E8 +:1027D00003681B021B0A036004680023240A240206 +:1027E0000460B5480468240A24020460B348012444 +:1027F00044608460B24C23606360A360B14B196095 +:102800001D601A60B04B19601A600121016030BC74 +:10281000704710B40121A648CC0204600A0202608D +:102820000B060360A54841608160A549002008604F +:1028300048608860A34804600260036010BC704771 +:102840000121A048C9020160C91001607047002839 +:1028500005D0012805D0022805D19C4870479C4826 +:1028600070479C48704710B59BA18B2010F029F948 +:10287000002010BD70B500219E4C9F4D9F4A904B8B +:10288000002808D001281DD0022822D092A1B32010 +:1028900010F017F970BD01200004A060A86011605D +:1028A0001960974B42109A60964A9060804A0012D5 +:1028B0001060954801608648016094480160944822 +:1028C000017070BD01204004A060A8605160596093 +:1028D00070BD01208004A060A8609160996070BD07 +:1028E000F8B59446834A844D00240127744E00288D +:1028F00008D0012836D0022844D077A1E82010F073 +:10290000E0F8F8BD891E0902090A01200004906060 +:1029100034606860794A1160012B21D000217C4A23 +:102920007C4B517061463D31DC63DF637A4B5C6008 +:1029300002249C6004241C61734B196073490F606E +:10294000604B891519606F4B58605F48016074488F +:102950007249C16086606A49600348601770F8BDBB +:102960000121DCE701205B4E40046E4F012B04D1B6 +:102970003460506068603960F8BD906034606860B1 +:102980003960F8BD0120514E8004674F012BF4D10E +:10299000EEE766484068704770B5494D28680026E4 +:1029A000544C012806D1A068C00303D501200004BF +:1029B000A0602E606868012809D1A068800306D550 +:1029C00001204004A0606E6001200EF05BFAA86850 +:1029D000012809D1A068400306D501208004A06029 +:1029E000AE6002200EF04EFA70BD10B5484908786E +:1029F000002818D00120424AC0039060414A40009C +:102A000090602B4A001210603F4A00201060304A4C +:102A100010603E4A106008704A78002A02D0487060 +:102A20000EF030FA10BD0320FAE7012040490006FD +:102A300008607047012023490006086070470120A4 +:102A40003B4940050860704701201E494005086069 +:102A5000704730490020C8637047410A354AC005B5 +:102A6000C00D5043801C5143400A0818704710B4F1 +:102A7000314C430B63431B0C5C020C602D4C6343D5 +:102A8000C31A2E485C0258432A4B400D4343E31AB5 +:102A90000124DB0324041B191B1613700A68101889 +:102AA000086010BC704710B50EF0B6FA10BD0000FB +:102AB00080E100E008E400E018E400E000B000403D +:102AC00040B1004080E200E000E100E048B1004099 +:102AD0004081004044B100407372635C72656D5F79 +:102AE00068616C5F6576656E745F74696D65722E82 +:102AF0006300000000B3004040B3004040B5004018 +:102B000000F5014000830040408500400082004005 +:102B100045000020C08F004000850040008000403C +:102B200080F5014044B5004048B5004000B5004084 +:102B300000E200E0093D0000378600006F0C010054 +:102B400010B50EF055FA10BD012001218140064A52 +:102B5000116000BF00200549C8630120C8637047A9 +:102B600000200249C863704780E100E0C01F0040B8 +:102B700070B5FF4D044629680300A03110F0A6F897 +:102B800008053E08080E1D2C3242FAA1D22033E07F +:102B9000887F012832D0F7A1D8202DE001F058FE1F +:102BA00005282BD001F054FE062827D001F050FE56 +:102BB000072823D0EFA1DB201EE001F049FE032807 +:102BC0001CD001F045FE062818D001F041FE072870 +:102BD00014D0E8A1E0200FE0887F05280ED0E5A101 +:102BE000E52009E001F034FE052807D001F030FEB1 +:102BF000062803D0DFA1E8200FF063FF2868A0308B +:102C0000847770BDDBA1EC20F6E7D949C1220968C1 +:102C1000525CD206920F05D1A0318A8A824201D13C +:102C2000887D70470020704770B5044611202070E1 +:102C30000021CF4D61702968C0318978002908D002 +:102C400003290ED0042910D0FF20CAA116300FF09E +:102C500038FF20780009012802D92868807E60703A +:102C600070BD0007000F203002E00007000F303079 +:102C70002070EEE730B50388C249C34C8B4202D0C6 +:102C80009A1FA2421ED242888A4202D0951FA542B4 +:102C900018D2934216D883887D24E400A34211D829 +:102CA000C088884205D0B84D04460A3C2D1FAC426E +:102CB00008D2884208D08A4206D05B1C5A43C00022 +:102CC000824201DD072030BD002030BDFFB500226B +:102CD000099B002802D0994205DC5CE0002902D162 +:102CE000002004B0F0BD0920FBE7845C002C12D06A +:102CF00085186F780D2F4CD010DC3B000FF0E6FFED +:102D00000A421B2A2A303032323A3A42835C002B84 +:102D10003FD1521CD2B28A42F8DBE1E7122F31D008 +:102D200004DC0E2F35D00F2F2CD132E0142F11D010 +:102D3000152F27D116E0022CD5D1AB78039C072B99 +:102D4000237001D25B0701D40A20CAE7029B012449 +:102D50001B7814E0E343DB0708E0012C08D011E006 +:102D60000620BEE70F2523072D075B19002BF4D0A3 +:102D70003046B6E7029B1B789C070AD40224234303 +:102D8000029C2370835C521C9A18D2B28A4204DDE2 +:102D9000A9E70B20A5E7192676028A42A5DB9FE763 +:102DA00005E00278401C002A01D0002070470A4646 +:102DB000491E89B2002AF4D10120704730B56C4D0C +:102DC0000021286887B0C943A0308182002484751F +:102DD000214606200DF0E3F9002105200DF0DFF972 +:102DE000002102200DF0DBF90120FFF7C1FE286869 +:102DF000BF210C54C0300470012069460870684639 +:102E00000BF08FF807B030BD10B5594A94B0126876 +:102E1000A032927F042A0AD028236A461370508079 +:102E2000132906D03B2904D0072014B010BD082078 +:102E3000FBE71171104609A909F07AF8040002D1E4 +:102E40000420FFF795FE2046EFE7F0B59BB00400A5 +:102E500003D148A14D480FF034FE72202070606805 +:102E6000002701780826491F414D0B000FF02EFF67 +:102E70000F096ECBFB6E70F9F8AA6E6E6E6EF7F6E8 +:102E80006E002868A030807F032804D0972039A1E5 +:102E900080000FF016FE002108460DF080F96078E2 +:102EA00010233043607028680146C0314A781A43C5 +:102EB0004A7061688A783C2A45D08E880146012292 +:102EC000A0318A756268D2890A836268128A4A834D +:102ED0006268528A8A838E8261680622C979C173C8 +:102EE0006168103008310FF04FFC0520FFF740FEFD +:102EF0002868C2210F54017FFB2211400177B021C5 +:102F000009584A7A920892004A72C782304602F003 +:102F1000B5FC002804D01D4816A122300FF0D1FDC9 +:102F2000304601F0C7FE002804D04F2011A1C00098 +:102F30000FF0C7FD304603F00FFB002806D0134802 +:102F40000CA1273023E10120FFF712FE1BB0F0BDDA +:102F5000878801F07DFC052820D001F079FC062847 +:102F60001CD001F075FC072818D001F071FC0FE0AF +:102F7000480000207372635C6761705F636F726505 +:102F80002E630000FFFF00007B0C000053020000D6 +:102F9000042803D0FB49FC480FF093FD60783043D0 +:102FA00060702868C030417831434170FFF706FFF8 +:102FB000384602F068FC384601F082FE384603F0DD +:102FC00001FBC3E701F044FC052810D001F040FCF0 +:102FD00006280CD001F03CFC072808D001F038FC92 +:102FE000042804D0E848E74913300FF06AFD606810 +:102FF000807902F000FD0028A8D06178314361702B +:103000006168C880A2E701F023FC052810D001F018 +:103010001FFC06280CD001F01BFC072808D001F08B +:1030200017FC042804D05520D649C0000FF049FDF4 +:103030006078304360706068C1882868A030018380 +:10304000616809894183616849898183002102207F +:103050000DF0A5F82868A030C77777E70CE167E1A5 +:103060006FE070E0FFE701F0F3FB052810D001F0FE +:10307000EFFB06280CD001F0EBFB072808D001F08D +:10308000E7FB042804D0C048BE4935300FF019FDD5 +:103090002868BE21095C042993D0807D40063CD578 +:1030A000606802210C30FFF77BFE002835D0606895 +:1030B0000821001DFFF774FE00282ED02868014665 +:1030C00080310A6B527A920708D1C222125C002A20 +:1030D00008D1C28AD30505D5D20703D1C38A4022BD +:1030E0009343C382C38A80229343C3822D236A46BB +:1030F0001370A030808A5080CB698A694869096A58 +:1031000001AC0DC4049109A9684608F011FF00281C +:10311000A3D09D489B49573039E062682868A421B4 +:1031200092890A5261680822091DA6300FF02CFB13 +:1031300010A806742868A630159014A80AF0F1FEAD +:1031400004E70121817101F083FB052810D001F013 +:103150007FFB06280CD001F07BFB072808D001F08C +:1031600077FB042804D0884886497B300FF0A9FCFF +:103170002868BE21095C0429E2D061688A79002AA6 +:1031800002D08978002905D07F487E49E1300FF0D0 +:1031900098FCDBE6617831436170B0210958497AC7 +:1031A0008907890F01294DD1817D09064AD4017F04 +:1031B000490701D5042100E00321C03081702B2094 +:1031C0006946087009A9684608F0B2FE002804D0D4 +:1031D0006D486C4997300FF074FC69462868098D7A +:1031E00001830E2210A90A7468491591027A0A70A7 +:1031F000024609324A600F320A61521D8A6010325B +:10320000CA60133A4A618A328A61921CCA61423AA0 +:103210000A6210324A6210328A62403A8A63D21FCE +:10322000CA63521C54300A64486414A80CF004F8B1 +:10323000022815D0002813D053485249BF300FF050 +:1032400040FC0DE0817D4906017F490701D504213D +:1032500000E00321C0308170002106200CF09FFFA8 +:103260002868C18A0A0602D440229143C1828AB2E8 +:1032700080218A43C28269E62868A030807F0328C3 +:1032800004D041483F49ED300FF01BFC00210846B7 +:103290000CF085FF60781023304360702868014689 +:1032A000C0314A781A434A7061688A783C2A00D152 +:1032B00049E68E8801460122A0318A756268D2896A +:1032C0000A836268128A4A836268528A8A838E827B +:1032D00061680622C979C1736168103008310FF046 +:1032E00053FA0520FFF744FC2868C2210F54017FE0 +:1032F000FB2211400177C782304602F0BFFA002856 +:1033000004D0E3201F4980000FF0DBFB304601F0C2 +:10331000D1FC002803D01B491D480FF0D2FB3046DA +:1033200003F01AF90028A6D019481649801C2EE788 +:1033300060783043607009E600290BD0888015481A +:103340000068A030028BCA80028B0A81428B4A81BE +:10335000808B88817047F7B5064600780C460027B9 +:10336000010982B03D4601296FD00A4800680090EB +:10337000C03002296AD0072910D00A2967D0014934 +:103380000548DAE1742F0000860200000C120020CC +:103390008F030000480000201105000071680A78C2 +:1033A000521F13000FF092FC0F09B054B0B02F5B06 +:1033B0005B47B0B0B0B0656FB0008A783C2A1BD0D4 +:1033C00010271625002C7DD08888A0807068A21D4B +:1033D000C08920827068C089E0817068008A60823C +:1033E0007068408AA082716808460831C07901F08F +:1033F00034FA0020607375E019270725002CE2D00D +:103400000021A17171E011270725002CDBD08988EC +:103410000091A1807168F7228979A17141781140EA +:103420004170009802F030FA009801F04DFC0098CD +:1034300003F0D6F8ACE101270925002CC3D0888819 +:10344000A080706880792072A2E160E09DE178E060 +:10345000888812270E252146FFF76EFF98E118276E +:103460000825002CAFD08888A080A01DFFF7DCFBCA +:103470008EE11A270725002CA5D04888A080706807 +:103480000079A07184E18A783C2A32D01027162571 +:10349000002C98D08888A0807068C08920827068CD +:1034A000C089E0817068008A60827068408AA0826A +:1034B0007168607B497D40084000C907C90F084317 +:1034C000607300E036E17168C007497DC00F4908AC +:1034D0004900084360737168A21D08460831C0792D +:1034E00001F0BBF9FB480068C0304178EF22114081 +:1034F00031E119270725002C88D00021A1714278DD +:10350000EF210A40427043E1F349F44815E1307A73 +:10351000012803D0F148F04917300EE112270E259B +:1035200070892146FFF708FF002C87D0707840078C +:10353000400F032888D1E7480068C0304178FB225B +:10354000D5E7E4490968A031002C01D08A8AA2801D +:10355000327A921E13000FF0B9FB073B4651EEDBA7 +:103560006B05EE0013270C25002C85D0F1688978B7 +:103570008907890F0129217A27D04908490021723A +:10358000FD221140F268E32392785207D20F5200D5 +:10359000114321720022E2801940F3681B785B0717 +:1035A000DB0E19432172DF231940F3685B78DB07D8 +:1035B0009B0E194321726272F1680122C978A172CF +:1035C00001781143F722114016E001221143D6E79A +:1035D00015270C25002C8FD0F06806220068A11D4D +:1035E0000EF032F8D4E016270725002C84D0317B6A +:1035F000A1710178082219E00170C9E01427122591 +:10360000002C92D000980099C07BA21D103101F0CF +:1036100024F9B089E081207C01210843F921084088 +:103620002074AC480068C030017802221143E3E7FF +:1036300017273825002C7DD03221A01D0FF001F96D +:103640000020A071207A03210843A24A2072116849 +:10365000FB260B7F30405B07DB0F9B00184320727B +:10366000B0204058407A800751D0A07A8A7D400827 +:10367000D2074000D20F1043FD221040A0728B7D74 +:1036800030409B07DB0F9B00184308231843EF23B0 +:103690001840A0728A7DE07AD206D20F30409200A4 +:1036A0001043E072F72210408A7DD206D20FD2007A +:1036B0001043E072088BA0812046102264310E3046 +:1036C0000FF062F88349A07F0968C0078A7EC00FA7 +:1036D00052001043A0770A7F400852074000D20FE3 +:1036E0001043A077084644304DC820344DC4303CC8 +:1036F0003D20405C224630323E3101F0AEF8754844 +:1037000000688030006B417A8908890041723FE08F +:10371000327B022A14D017273825002C2ED0012AFC +:103720001BD0032A1BD0042A1CD0052A1AD06A49B0 +:103730006A4801E022E024E0B1300FF0C2F927E04E +:1037400019270725002C19D0898AA1800121A17190 +:1037500041784908490041701AE0012000E0022048 +:10376000A07106E0707B0007000F8030A071052A71 +:1037700002D00020E0710BE00120FBE704980580F7 +:103780000CE09F205449C000D7E7317A002908D0C7 +:103790000498002C058001D027806580002005B0AA +:1037A000F0BD19270725002CE8D00021C943A180CE +:1037B0000021A1714178FD2299E600B595B001F094 +:1037C00047F8022803D001F043F8032819D11B2140 +:1037D00008A801730021817369460BA808F0A8FBB3 +:1037E000002804D1684640781B2802D0032015B079 +:1037F00000BD002108460CF0D2FC68468078002805 +:1038000001D00820F3E70120FFF7B2F90020EEE72E +:1038100070B500252F4C002807D0022817D0A9200A +:103820002D49C0000FF04DF970BDFFF7C6FF00280D +:10383000FAD1FEF7DDF9222101700572FEF7F4F9E5 +:103840002068C030417802221143417070BDFEF7FC +:10385000CFF912210170012101722168A0318A8AF9 +:103860004281CD77FEF7E0F92068C030417804222C +:10387000EAE770B50D46040004D155201649000151 +:103880000FF01FF92078012804D0134914480FF0D5 +:1038900018F970BDA18813480E4E814209D1E28803 +:1038A000824206D130681321A030808AFFF7ACFA3B +:1038B00070BD814202D1E088002815D01220287006 +:1038C000687808210843687007CC083507C50021CF +:1038D00011E0000048000020742F00003D040000AB +:1038E0006E050000FFFF0000002278231146022031 +:1038F0000CF0B3FB02213068A030C17770BDF748EF +:103900000068C0308078704738B5F44C05460178BF +:1039100020680B00A0300FF0D9F909863506067132 +:1039200013365A758600807F052803D0EC49ED4890 +:103930000FF0C7F820680422017F114301775DE092 +:10394000A98800291ED0808AE74988421AD0A86831 +:10395000002804D1E348E2490F300FF0B2F8A8681C +:1039600006220A38A86000902068AB88A030808AC0 +:10397000042101F0B7FE002804D0DA48D8491430F9 +:103980000FF09FF838BD2979807F02290BD00428D9 +:10399000F8D0284600F072FF20681321A030808AFA +:1039A000FFF732FA38BD062804D0CE48CC491E3085 +:1039B0000FF087F8284600F061FF20680122C03030 +:1039C0004178114341700520FFF7D2F838BD00F06F +:1039D0003FFF052808D000F03BFF042804D0C14871 +:1039E000BF493C300FF06DF80ECDC0480361C26096 +:1039F0008160A2210170FEF72CF938BD284600F045 +:103A00003DFF38BD00F024FF052808D000F020FF5E +:103A1000062804D0B348B2494D300FF052F80720C1 +:103A2000FFF7A6F8EAE7AF48AD495630A8E7FFB57B +:103A300093B00124684603218470C9021D460180A9 +:103A400009F063FF00226946012003F027F80646CB +:103A500009F05FFF002E5CD1684615218470490291 +:103A6000018000271C2101A808970EF0ECFE012020 +:103A70000146103108A801700020014608A84170D5 +:103A80008178F9200140891C214308A8817068468B +:103A9000017902263143017114998185C7851F215F +:103AA000018608A80A9013980D906846099009F0BD +:103AB0002CFF0EAA09A901A802F0D4FD074609F0BF +:103AC00028FF002F02D0384617B0F0BD834F68465C +:103AD0003968008F4880684684708549018008A84D +:103AE0008078F9210840801C4108490008A88170AD +:103AF00068468685068615A80D9009F006FF0EAA71 +:103B000009A901A802F0AEFD064609F002FF002E49 +:103B100001D03046D8E768463968008F88807449FC +:103B200068468470C91C0180298810A801806988B2 +:103B30004180A9888180E988C18008216846818503 +:103B4000018610A80D9009F0E0FE0EAA09A901A8AF +:103B500002F088FD044609F0DCFE002C01D020466E +:103B6000B2E768463968008FC8800020ACE770B5BE +:103B700004465E48C421A8300EF065FE5B48574DF0 +:103B8000A83000212860C943A030818200268675B4 +:103B90000120FEF7EDFF2868BF210E5401460931D0 +:103BA0000830FDF71CFF296808462D311D30FDF750 +:103BB00072FF002C26D02868B0210C501E21A18154 +:103BC000217A8F2211401031217201461831216172 +:103BD00009396161491CA1610839E161491C21620F +:103BE0009B31616287392160103161601339E16274 +:103BF000091F21637E3121643039616310318430C3 +:103C0000A163E06370BD35480068A030807F042860 +:103C100001D0002070470120704730B504460520D0 +:103C2000800395B0844208D3012080043149201AD2 +:103C3000884202D33048844202D3102015B030BDF0 +:103C400026490868A030807F012801D00820F5E7C8 +:103C5000FFF7D9FF002801D01120EFE70D68012000 +:103C600028722278002A08D024491720012A0AD075 +:103C7000022A1FD0032A25D121E03220694608708C +:103C80000020287205E0A2799209032A1AD1694618 +:103C9000087000A80622611C02300EF075FD28464F +:103CA0000622611C09300EF06FFD09A9684608F074 +:103CB0003FF9C3E7A2799209012A03D1E7E7A27984 +:103CC0009209E4D00846B9E707214907012210B557 +:103CD00041189203914213D3102010BD48000020D8 +:103CE000742F000085050000FFFF0000AC110020CC +:103CF000012A00000000FC1F0040002002320000EA +:103D0000F949024609680B7A0931184600F0A5FD09 +:103D10000020E2E7FFB599B005460020694608712A +:103D2000087208A9087408751E461446052001216A +:103D300080038904ED4AEE4B002D06D085420DD359 +:103D40006F1A97420AD39D4208D2002C09D08442B0 +:103D500004D3601A904201D39C4202D310201DB0BC +:103D6000F0BD2846204318D01F270CAB01AA0097AE +:103D700028461A99FEF7AAFF0028F0D10DAB02AA37 +:103D8000314620460097FEF7A1FF0028E7D168469C +:103D9000007AC10703D00A20E1E70720DFE78007A8 +:103DA00005D568460079800701D50B20D7E7FFF7D6 +:103DB0002AFF002801D01120D1E703AF002D0FD03A +:103DC0001A20694608731A9888732946F81C1A9AAB +:103DD0000EF0DAFC0EA903A808F0AAF80028BED15C +:103DE000002C0ED02021684601738673324621468E +:103DF000F81C0EF0C9FC0EA903A808F099F80028D9 +:103E0000ADD1B94908A80968007C08700020A6E770 +:103E1000F0B5044695B0002014900520800384423C +:103E200075D301208004B14F201AB8426FD3B04837 +:103E300084426CD2207801280CD105216068890366 +:103E4000884264D301218904411AB9425FD3A84949 +:103E500088425CD200F0FCFC022809D000F0F8FC9B +:103E6000032805D0A048BE210068095C012902D0C2 +:103E7000082015B0F0BDC121095CCA06920F03D11C +:103E80008A0701D4490701D51120F2E721780129D9 +:103E900015D0228A974D1346203BAB4272D202299D +:103EA00001D0032901D1A02A6CD3012907D00278BF +:103EB000D20704D0628A002A64D0B42A62D80029CA +:103EC00006D0012908D0022904D003295AD110E0D4 +:103ED000002512E0022510E061680125097800291B +:103EE0000BD0012907D0022905D0032903D082482D +:103EF000BFE7032501E001211491217A002907D0B1 +:103F0000012907D0022907D003293BD106E037E079 +:103F1000002604E0012602E0022600E00326002D30 +:103F200001D0022D3FD1002E3DD0E168002929D0DB +:103F30000A79002A27D0082A24D80B7B9C46082B14 +:103F400020D8002A0CD005230A689B039A4217D375 +:103F500001239B04D31ABB4212D3654B9A420FD262 +:103F60006246002A13D0896805229203914207D342 +:103F7000012292048A1ABA4202D35D4A914206D3C0 +:103F8000102076E75EE00B7B002B5BD0D5E7017855 +:103F9000890702D05848401E6BE7022D03D1022E3C +:103FA00050D0032E4ED0182269460A70228A4A80C9 +:103FB000228A8A808D71007A0127002802D0012888 +:103FC0007ED102E00020C87100E0CF711498087221 +:103FD000217802A80130012922D006210EF031FCFF +:103FE00007216846C173067409A907F0A1FF0028DC +:103FF000C7D10A206946087009A9684607F098FFEA +:104000000028BED13A206946087009A9684607F021 +:104010008FFF0028B5D1002D08D0022D06D04AE030 +:1040200061680622491C0EF0AFFBD9E7002E42D092 +:10403000002623E00168B00009580978002903D060 +:10404000012905D0072014E700216A46917001E09C +:1040500069468F70E16806220968095800A8491C62 +:1040600003300EF091FB0B206946087009A96846E1 +:1040700007F05EFF002884D1761CF6B2E068017973 +:10408000B142D7D8002612E08068B100415800A89C +:10409000102202300EF078FB3B206946087009A917 +:1040A000684607F045FF0028CDD1761CF6B2E068DF +:1040B000017BB142E8D81B2168460170877000E09F +:1040C0002EE009A907F034FF0028BCD108A84079E8 +:1040D0001B2825D1002D15D0012D0FD0022D21D068 +:1040E000032D12D11EE00000480000200000FC1F3C +:1040F00000400020E13F0000023200000320FEF7F4 +:1041000037FD11E00320FEF733FD608A00280BD055 +:1041100000228300114610460BF09FFF002803D0B9 +:104120000320A6E60220EEE70020A2E670B586B0E6 +:104130000C0006460CD00520800384424BD301209E +:104140008004FD49201A884245D3FC48844242D26B +:10415000FB4DBF212868095C022903D0C03040789C +:10416000400702D5112006B070BD002C04D02046B7 +:10417000FEF780FD0028F6D13046FEF746FD012807 +:1041800003D0022823D0EF48EDE721001BD10820FF +:1041900069468882286801ABC08805AA002103F01F +:1041A00048F80028DFD16846808A082801D003201B +:1041B000D9E7684681888181C188C18101890182EE +:1041C0004189418203A9304601F0E5FBCBE7002C91 +:1041D00001D00620C7E71020C5E770B50C4605469C +:1041E000FEF713FD012803D0022801D0D54870BD89 +:1041F00021462846FEF708FE70BD00B50146143082 +:1042000095B0192801D2880707D008461E3004D07F +:104210000A3002D0072015B000BDFFF7F4FC0028DB +:1042200001D01120F7E7C648312200684170684686 +:104230000270817009A907F07BFEECE701B582B03E +:10424000022069460880BE4802AB00686A46808842 +:10425000002102F073FE69460988022900D003207C +:104260000EBD38B502216A46118007214907012297 +:1042700041189203914201D3102038BDB049034642 +:1042800009686A468C880021204602F0D2FF694600 +:1042900009880229F1D0032038BD3EB50446082024 +:1042A0006946088005208003844208D301208004E9 +:1042B000A149201A884202D3A048844201D3102089 +:1042C0003EBD2046FEF7D6FC0028F9D1208869467D +:1042D00088806088C880A0880881E08848819848E4 +:1042E00001AB00686A46C088002102F027FE6946DB +:1042F00009880829E4D003203EBD1FB504460820E4 +:104300006946888105208003844208D30120800407 +:104310008949201A884202D38848844202D3102057 +:1043200004B0DAE486486B46006803AAC08800211E +:1043300002F07FFF0028F3D169468989082901D05E +:104340000320EDE769460988218069464988618034 +:1043500069468988A1806946C988E180E0E7FEB5A1 +:1043600005460520800317460E46814208D30121E9 +:104370008904714A731A934202D3704B9E4201D34F +:104380001020FEBD1F2F01D90C20FEBD6C4C8542B4 +:104390002AD3681A904227D39D4225D2206801A9CA +:1043A000408802F07DFD0028EFD1287869464871E9 +:1043B000206801A9408802F056FD0028E5D1694631 +:1043C0000090087802210843694608704979090776 +:1043D00003D0082108436946087020686946408870 +:1043E00002F0EBFC0028D0D169460F8120683346EB +:1043F000408802AA002102F0A1FD69460989B9425C +:10440000C3D00320FEBD38B50C4607210122490761 +:104410009203002802D04318934202D261189142BD +:1044200001D3102038BD21886A461180002801D0B0 +:1044300000290BD04249034609684D8800212846CF +:1044400002F0F7FE69460988218038BD0C2038BD8E +:1044500010B50C460521890386B08C4208D3012192 +:104460008904354A611A914202D334498C4202D3FD +:10447000102006B031E432490968A031897F05294E +:1044800001D00820F5E7FEF7C0FB012803D0022881 +:1044900026D02C48EDE720881E2801D20720E8E727 +:1044A0000620FEF765FB052168460170007981084A +:1044B000A0788900C007C00F014368460171FB2046 +:1044C0000140A0788007C00F800001436846017159 +:1044D0002188C18009F025FD0028CAD00320C8E743 +:1044E0000620C6E770B586B014460D46FEF78DFB74 +:1044F000012803D0022801D0124834E6104EC02112 +:104500003068095CC90706D0BE21095C042902D0C5 +:10451000002D02D05AE0082025E6052189038C42AF +:1045200008D301218904044A611A914202D3034944 +:104530008C4209D3102016E60000FC1F004000202A +:104540004800002001300000A178C906490F042965 +:104550000CD8E178072909D3102907D822798A4293 +:1045600004D3102A02D822881E2A01D00720FAE597 +:104570008030026BF7239172026B2179D172026B4A +:10458000117A1940A3789B06DB0FDB0019431172E7 +:10459000026B21889181026BA378517ADB0789082D +:1045A0008900DB0F19435172FB231940A378026B7A +:1045B0009B07DB0F9B0019435172006BA278017AB5 +:1045C000D206C908C900520F114301720B20694677 +:1045D0000870852D25D008DC002D1AD0812D1AD029 +:1045E000822D1AD0832D08D119E0862D1BD0882D5D +:1045F0001BD0892D1BD08A2D1BD00B2008710520C4 +:10460000FEF7B6FA684609F08CFC002813D00320A8 +:10461000A9E50020F2E70120F0E70220EEE7032001 +:10462000ECE70520EAE70620E8E70820E6E70920AE +:10463000E4E70A20E2E73068C03001784908490021 +:10464000017000208FE570B5924E0D46316886B03E +:10465000C03109781446090701D4082083E5FEF724 +:10466000D4FA012803D0022801D08B487BE5002D25 +:1046700013D005208003844208D301208004874999 +:10468000201A884202D38648844201D310206AE56A +:10469000012D0BD0022D02D106E0002C01D0072005 +:1046A00061E50020029005E0022000E0012069465B +:1046B00008710294032069460870684609F031FCCD +:1046C000002801D003204EE53068F722C030017881 +:1046D00011400170002046E570B594B014460E46B6 +:1046E000FEF793FA012804D0022802D06A4814B0D9 +:1046F00070BD684D2868C0300078800701D408205C +:10470000F5E7002C01D00720F1E7FFF77CFA00283D +:1047100001D01120EBE7002E1DD02D21684601703D +:104720002C68B420015B684641801022B11C01A8AE +:104730000EF02AF8207FFB210840B17CC907490F01 +:1047400008432077B07CFF214008A076E08A8231C0 +:104750000843E08207E02E21684601702868A030F7 +:10476000818A6846418009A9684607F0E1FB29680B +:10477000FD23C0310A781A400A70B8E710B50C461C +:10478000FEF743FA012803D0022801D0424810BDA9 +:1047900005208003844208D3012080043F49201A69 +:1047A000884202D33E48844201D3102010BD2046E7 +:1047B000FEF73AFA002010BD10B594B00446FEF79B +:1047C00024FA012804D0022802D0334814B010BDC6 +:1047D00030480068A030807F04280ED03820694619 +:1047E00008704C8001200871487109A9684607F0DB +:1047F0009FFB0028EAD00B20E8E70020E6E710B591 +:1048000094B00446FEF701FA012803D0022801D033 +:104810002148DBE71F480068A030807F04280BD0C8 +:104820003820694608704C8000200871487109A939 +:10483000684607F07DFBC9E70020C7E71548006818 +:10484000A030807F052801D30120704700207047E9 +:1048500010480068A030807F704708B513460028D4 +:1048600006D010A00068009048796A468009105C64 +:1048700018700622581C0DF087FF08BD10B50446BD +:10488000FDF7B6F9A22101700ECC08300EC0FDF77D +:10489000CBF910BD48000020013000000000FC1FD3 +:1048A000004000200302FF01FFB581B001980E46D1 +:1048B000C078174610360E37022809D0032840D09A +:1048C00005287DD0F2A1F7480EF0FBF805B0F0BD49 +:1048D000CC890A2060430E30188031230A98002AC0 +:1048E0000380F3D04868008890800020D080108139 +:1048F000097B9481891FCDB21AE0308871683880B5 +:1049000048780A7800021043F880C8788A78000254 +:1049100010433881BA1C091D28460AF014FF002DE7 +:1049200001D0002802D000203871788008360A377C +:104930002046641EA4B20028DFD101990020C8706F +:10494000C4E7CC890A2060430E30188032230A98CD +:10495000002A0380BAD04868002500889080D5805E +:104960001581087B401FC0B20090948142E07168BD +:1049700032880878FA803A79C30752085200DB0F70 +:104980001A43FD231A408307DB0F5B001A43FB2306 +:104990001A404307DB0F9B001A43F7231A40030713 +:1049A000DB0FDB001A43EF231A40C306DB0F1B01AA +:1049B0001A43DF231A408306DB0F5B011A4300E032 +:1049C00020E0BF231A404306DB0F9B011A433A71D4 +:1049D000C00978718A784B781002184338813A46BA +:1049E000C91C00980AF0AFFE002801D0BD703D80C0 +:1049F00008360A372046641EA4B20028B7D10198B1 +:104A0000C57063E7087BCC89801E85B228460830D4 +:104A100060431030188034230A98002A03808FD016 +:104A200048681746008890800020D08010819481CB +:104A30001037E000D581C0190CE03088388000982C +:104A400078602A46716800980DF09EFE009808363E +:104A50000837401900902046641EA4B20028ECD10B +:104A60006BE7FFB50546C07881B00C460A9E03008F +:104A70000EF02CF90BA3071733414F6D8F9D9D9DB1 +:104A8000A300207B1746082806D0032804D08548B9 +:104A90007FA153300EF015F804990E2008803020C5 +:104AA0000CE0207B1746042804D07E4878A17030A3 +:104AB0000EF007F804990E20088031203080002F76 +:104AC00044D060680088B880607AFF300130F88098 +:104AD000E08938810020B88137E0207B1746042820 +:104AE00004D070486AA18C300DF0EBFF04990E20C1 +:104AF00008803220E2E7207B1746022804D069486C +:104B000063A1A8300DF0DDFF04990E20088033204A +:104B1000D4E7207B1746042804D062485CA1C33048 +:104B20000DF0CFFF04981021018034203080002F39 +:104B30000CD060680088B880607AFF300130F8805F +:104B4000E08938810020B881F881E870BEE6207BDA +:104B50001746052806D0062804D052484CA1E0305C +:104B60000DF0AFFF04981221018035203080002F16 +:104B7000ECD060680088B880607AFF300130F8803F +:104B8000E0893881E089B88100203882A988F981DC +:104B9000DBE7207B1746072804D042483CA1F730CA +:104BA0000DF08FFF04990E200880362086E70096CE +:104BB0002846049B00F02BFD88E635A13A480DF00D +:104BC00080FF83E670B5054600780C460826030092 +:104BD0000EF07CF8124C3434241C380A0A0A0A0AF3 +:104BE0000A0A0A0A0A0A0A4C6878002804D02E48E1 +:104BF00027A12C300DF065FF002C03D12A4824A1F9 +:104C00002D3008E060783043607020E0002CF9D14E +:104C100025481FA135300DF054FFF3E7002904D0DB +:104C200021481BA13D300DF04CFFFCF7E1FF04468D +:104C3000407830436070FCF7F7FF08E01A4814A191 +:104C4000473002E0184812A14C300DF03AFF002C1A +:104C50000AD06078000707D593202070204658229C +:104C600029460830FBF7B0FA002070BD0E4808A1B5 +:104C70005030EAE710B500200C4C0D490346C20045 +:104C80008C525218401C0006D370000EF7D010BD95 +:104C90007372635C67617474635F636F72652E63C4 +:104CA000000000005A020000B2030000FFFF0000F5 +:104CB0004C000020FD4908800120887000207047CA +:104CC000FA4900208870704710B50021F748C943A1 +:104CD00001800021C17007F065F9D8E7F7B584B00D +:104CE0000546002768460781878068680C4600886B +:104CF00000F0EAFB0646287A032805D0002E03D1EF +:104D0000EB49EC480DF0DDFE287A2146C01E123139 +:104D1000009103000DF0DAFF0FF1F0EF3D09AA4614 +:104D20005C6D34B3CCF28B8BEF00F078012803D0AC +:104D3000DF49AD200DF0C5FEA8896946C0000E30E0 +:104D4000888030200881002C22D068680188A180EA +:104D5000E7802781A989A18100200DE0C100B279F7 +:104D600009190A74B288CA8182005219D3894B8208 +:104D7000128A401C8A8280B2A1898142EED8D6E094 +:104D800002A8009001AB22462946304600F0CAFB3B +:104D9000F0E002A8009001AB22462946304600F020 +:104DA00003FCE7E0F07806281AD0FF20C049223043 +:104DB00014E068680188A180E7802781A989A18122 +:104DC000B188E181E9892182EA89296900982BE08B +:104DD000F078062804D0FF20B5493C300DF071FE74 +:104DE000E88969461230888035200881002CE0D19E +:104DF000C0E0F078072804D0FF20AD4956300DF010 +:104E000060FEA88969460E30888036200881002C13 +:104E1000BED068680188A180E7802781A989A18127 +:104E20002046AA890E3029690DF0AEFC7FE0E889A2 +:104E30006946123080B2382288800A81002C78D0EE +:104E400068680188A180E7802781A989A181287AE3 +:104E5000102809D00221A173E9892182EA892969F0 +:104E600000980DF091FC85E00121F4E702A8009084 +:104E700001AB224629463046FFF716FD7AE0F0786E +:104E8000082803D08A498C480DF01BFE142069467F +:104E9000888037200881002C6CD068680188A18048 +:104EA000E7802781A989A18167820120A0733EE064 +:104EB000F078092804D080487D4917300DF001FEB4 +:104EC000288A69461430888037200881002C51D008 +:104ED00068680188A180E78004212781A173A989DE +:104EE000A181E9892182298A618220462A8A143097 +:104EF000696999E702E038E01CE024E0F0780A28CC +:104F000004D06D486A4932300DF0DBFD142069464B +:104F1000888037200881002C2CD068680188A18007 +:104F2000E78027810521A173A78127826782F77017 +:104F300020E017E002A8009001AB22462946304647 +:104F4000FFF78FFD16E00D206946392288800A811F +:104F5000002C07D00120E08054480188A1802781DF +:104F6000277307E00699088010E0524850493C300A +:104F70000DF0A7FD6846069980880880002C05D0B2 +:104F8000684600892080684680886080002007B0DD +:104F9000F0BDF7B594B015460F46149800F09FFA8F +:104FA00004000AD0032000F087FB022802D2E07838 +:104FB000002804D0112017B0F0BD4048FBE71720AF +:104FC000694601260883002D0FD003216846017130 +:104FD0001021018210A80246059004A928460AF073 +:104FE000D8FB00280DD00720E5E7082168460171AD +:104FF00000210781C943418105218673C90281814E +:105000000CE0A878A0712888A080684605218673E6 +:10501000C902818100210781C943418109AA023265 +:1050200006A901A806F0F7FF002802D000F06AFAEE +:10503000C1E707A800906846038B04220321149857 +:1050400000F050FB0028B6D1E670B4E770B592B01E +:105050000D0006460ED000F042FA04000CD00320EA +:1050600000F02AFB022802D2E078002806D01120A6 +:1050700012B070BD1020FBE71048F9E71721684611 +:10508000818004210172298881816988C18101217F +:1050900081740B4901820AAA023201A902A806F012 +:1050A000BAFF00280ED000F02DFAE1E74C000020F6 +:1050B000904C00003B04000063020000013000003F +:1050C0000228000008A80090684683880422032173 +:1050D000304600F007FB0028CAD10221E170C7E783 +:1050E00070B592B00D0006460DD000F0F8F904003E +:1050F0000BD0032000F0E0FA022802D2E07800286A +:1051000005D01120B4E71020B2E7FA48B0E7172124 +:105110006846818004210172298881816988C18162 +:1051200001218174F44901820AAA023201A902A86C +:1051300006F071FF002802D000F0E4F998E708A813 +:1051400000906846838804220321304600F0CAFAA2 +:1051500000288DD10321E1708AE770B592B00D006F +:1051600006460DD000F0BBF904000BD0032000F080 +:10517000A3FA022802D2E078002805D0112077E7B0 +:10518000102075E7DB4873E7022168460172298821 +:1051900081816988C181172181800AAA023201A90F +:1051A00002A806F038FF002802D000F0ABF95FE754 +:1051B00008A800906846838804220321304600F046 +:1051C00091FA0028DBD10421E17051E7F0B591B0EC +:1051D00015000E4607460ED000F081F904000CD0F1 +:1051E000032000F069FA022802D2E078002806D0F5 +:1051F000112011B0F0BD1020FBE7BE48F9E71721E0 +:105200006846818004210172298881816988C18171 +:10521000B1788174318801820AAA023201A902A8F8 +:1052200006F0F9FE002802D000F06CF9E1E708A8CA +:1052300000906846838804220321384600F052FA21 +:105240000028D6D10521E170D3E7F7B592B0154615 +:105250000E46129800F043F904000AD0032000F033 +:105260002BFA022802D2E078002804D0112015B0D1 +:10527000F0BDA048FBE70627002D12D06846077254 +:105280008681C581A5801720694688800AAA0232D6 +:1052900001A902A806F0BFFE002807D000F032F9ED +:1052A000E5E70521684601728681EBE708A80090D2 +:1052B0006846838804220321129800F013FA00281C +:1052C000D5D1E770D3E7F7B592B016460D000ED0F2 +:1052D000129800F004F904000BD0032000F0ECF960 +:1052E000022802D2E078002805D01120BFE7102064 +:1052F000BDE78048BBE7072768460772868117210C +:10530000049581800AAA023201A902A806F083FE50 +:10531000002802D000F0F6F8A9E708A80090684637 +:10532000838804220321129800F0DCF900289ED122 +:10533000E7709CE7F3B5172091B00C46002915D013 +:1053400021780B000DF0C2FC062B05051A041C2B5E +:105350001520C01EE28880B2002A02D0A368002B6C +:1053600004D0824204D90C2013B0F0BD1020FBE71A +:10537000042905D0A088002811D101E00620F3E718 +:10538000119800F0ACF805000BD02078092701280F +:105390001AD0022807D0042824D0052835D00720A9 +:1053A000E2E75448E0E76846077161880181E188D7 +:1053B0004181A06808260390304600F07DF9072857 +:1053C00029D34C48801CCFE70C21684601716188C5 +:1053D0000181E1884181A06803900EE0E87800280F +:1053E00011D118E00D216846017161880181A18801 +:1053F0004181E1888181A06804900326304600F055 +:105400005BF90228EAD31120AEE70E21684601714C +:10541000217B0172F1E717216846018309AA023254 +:1054200006A901A806F0F7FD002802D000F06AF8EE +:105430009AE707A800906846038B0422314611982A +:1054400000F050F900288FD12178012907D00229D6 +:105450008AD0042905D0052905D0032084E7082136 +:1054600002E0EF7080E70A21E9707DE730B591B086 +:105470000C46054600F033F8002808D0032000F061 +:105480001BF9022805D31B48801C11B030BD1948F8 +:10549000FBE70F216846017104811721018309AAE6 +:1054A000023206A901A806F0B6FD002802D000F0DD +:1054B00029F8EAE707A800906846038B0422032135 +:1054C000284600F00FF9E0E70C49884205D00C4966 +:1054D0000988814201D10A4870470020704710B501 +:1054E000FFF7F2FF002802D08178C90700D1002021 +:1054F00010BD00000130000003280000FFFF000085 +:105500004C000020002806D0012805D0052805D031 +:10551000062805D0032070471120704708207047E7 +:105520005C487047FFB583B003980C9EC0781D4659 +:1055300014460F46012803D05749D2200DF0C1FA76 +:10554000F889C0000E30288030203080387B001F62 +:10555000C0B20190002C26D078680088A08000207E +:10556000E0802081F889A081002616E0F00005196E +:10557000C01900902A4641690E3201980AF0E3F8FA +:10558000002802D000202874E8810098761C008A48 +:1055900068820098B6B2408AA882A089B042E5D855 +:1055A00003990020C870F2E4F8B50646C0781F469B +:1055B00014460D46042804D0FF20374903300DF06F +:1055C00080FAA889062148430E3038803321069896 +:1055D000002C01801AD068680088A0800020E0803C +:1055E0002081A989A18103460CE019460622514376 +:1055F0004A190919D789CF81977C8F74128A5B1C4D +:105600000A829BB2A1899942EFD8F070F8BD70B5BB +:1056100014460546142204981A8037220280002C72 +:1056200018D0486800260088A080487AFF300130F2 +:10563000E080C8892081C889A0816682E87808282E +:1056400009D0092811D00A2819D0134913480DF0A0 +:1056500038FAEE7070BD087B0C2804D00F480E4954 +:105660000C380DF02EFA012012E0087B0D2804D032 +:105670000A48094908380DF024FA042008E0087B9C +:105680000E2804D005480449001F0DF01AFA052021 +:10569000A073DEE702300000904C000081030000A0 +:1056A00001460020FA4A02E0401C082803D24300C9 +:1056B000D35A8B42F8D1704730B50446F44A0020E3 +:1056C000163A117953790AE05518AD79A54201D1FE +:1056D000401CC0B2491CC9B2102900D100218B4224 +:1056E000F2D130BDFFB5EA4881B0163841790A9C45 +:1056F000491CCDB21E46102D00D10025E4481638B5 +:105700000079A84202D1042005B0F0BD0820FFF7BF +:10571000D3FF0746072804D9FF20DEA1A5300DF0EE +:10572000D0F90298082801D1072F17D001982080BE +:10573000301D6080002060712071E6800398208118 +:10574000204606F019FC00280AD0D14802991638E4 +:105750004379821D995445710020D5E7D248D3E79B +:10576000FF20CCA1B7300DF0ACF90320CCE7F0B5A9 +:105770008DB0044600256846057116468C46062005 +:10578000FFF79AFF00281CD121780127C8070028BD +:1057900001D0132917D9684687766178C17602212E +:1057A0008183C58304A8009070680C2300880522BB +:1057B0000621FFF797FF002803D0B6A185200DF042 +:1057C00080F90DB0F0BDB24816380278002AF8D042 +:1057D000427863789A42F4D1012918D0132919D15B +:1057E0006146062916D10570002101200AF0D7FC78 +:1057F00068460771706801886846C1800021C94306 +:105800000181607922790102114368461AE06146FC +:10581000062908D0684600790028D2D0314601A870 +:10582000FEF727F8CDE70570002101200AF0B7FC4C +:105830006846077160792279010211436846018147 +:105840000021C9434181E9E7914810B5002116388C +:1058500001704A1E428041700171417101200AF0BD +:105860009EFC10BD10B5FFF7EFFF002088490246EF +:105870004300401CCA520828FAD310BD8449163987 +:10588000488000207047DFE770470EB50121684669 +:10589000017086498180C1800021FDF7EAFF0EBDBD +:1058A000F7B505460078002700090C463E4601285A +:1058B00004D0FF2077A168300DF003F9287A022880 +:1058C0000CD0FF2073A17E300DF0FBF80298002C65 +:1058D000068001D0278066800020FEBDEA897027FF +:1058E00010460A3086B2002C0BD068680088A08071 +:1058F000A8892081E28020460A3029690CF044FF03 +:10590000E4E702980680E7E7F0B543680246D979F4 +:105910009C79090221435C7A1E7A25025C88981DD5 +:105920003543241F87B0A1421DD11B79022B1AD108 +:10593000042D1AD0052D2AD0062D1AD0402D12D3B1 +:10594000061D0F4614462846FFF7AAFE08280AD06F +:105950001120207002202072A581E78126616078E5 +:1059600008210843607007B0F0BD001D00F0E1F8A9 +:10597000F9E7041D0D46FEF761FF0028F3D006216C +:10598000684601700194057208F0CBFAEBE7001D40 +:10599000FFF7EDFEE7E710B53D4C8AB0163C2278E4 +:1059A000012A26D012236A46937363789B1CD37313 +:1059B000082313820B8853824B8893828B88D3826F +:1059C000C988118301A900910C2305220721FFF743 +:1059D00089FE00280BD10022F023114601200AF095 +:1059E0003CFB012020706078801C607000200AB0B1 +:1059F00010BD1120FBE7F0B5254C0027163C87B001 +:105A00000646A51D1FE060792179884204D1112046 +:105A100020A140010DF055F82079405D042804D004 +:105A2000082808D17F1CFFB205E0072069460870EE +:105A3000684608F076FA2079401CC0B22071102820 +:105A400001D1002020713046761EF6B20028DAD14E +:105A5000384688E710B50446402801D2072010BD1B +:105A6000FFF71EFE082802D03120000210BD0021E1 +:105A7000074802E0491C082903D24A00825A002A3A +:105A8000F8D1082914D049004452002010BD00006C +:105A90002E1300207372635C6C326361705F636FFE +:105AA00072652E630000000003300000FFFF00005D +:105AB0000420EBE700B5402801D2072000BDFFF726 +:105AC000EFFD082805D000213B4A4000115208464E +:105AD00000BD052000BDF0B58BB016460C00074692 +:105AE00007D0002E05D06188402904D207200BB0D2 +:105AF000F0BD1020FBE72088002801D0172801D92D +:105B00000C20F4E70846FFF7CBFD08280FD02588C6 +:105B100003A82A46314602300CF036FE01A8009058 +:105B200062882B4608213846FFF7DCFDDFE70520B9 +:105B3000DDE7F0B50E46074601468BB01446012559 +:105B4000304606F0E5FB08281DD10020694608858F +:105B50000120FFF7B1FD002802D117206946088512 +:105B600003AB02330AAA39463046009406F0E3FF3D +:105B700000280AD0022819D0032804D0FF200F499A +:105B800002300CF09EFF2846B1E76846038D002BDB +:105B9000F9D001A800906068042200880121FFF775 +:105BA000A1FD0028EFD00549EC20EAE76078002548 +:105BB000102108436070E6E72E130020945A00007D +:105BC000002803D08178012939D101E010207047E5 +:105BD0000188FA4A881A914233D01BDCF84A881AA5 +:105BE00091422ED00BDC00292BD00320C002081AD2 +:105BF00027D0012825D001210903401A07E00128F8 +:105C00001FD002281DD0FF281BD0FF3801380028E4 +:105C100015D116E0FF220132811A904211D008DC22 +:105C200001280ED002280CD0FE280AD0FF2806D169 +:105C300007E0012905D0022903D0032901D0002063 +:105C400070470F20704700B50A2821D008DC0300F8 +:105C50000DF03CF80A1C2024241A24282224261A99 +:105C6000102819D008DC0B2816D00C2814D00D28C9 +:105C70001AD00F2808D111E011280FD0822807D0A0 +:105C800084280DD085280DD0032000BD002000BD44 +:105C9000052000BDCB4800BD072000BD0F2000BD82 +:105CA000042000BD062000BD0C2000BD70B50029F9 +:105CB0000BD0CB1FFA3B81241E46CDB2112B1BD239 +:105CC000012805D0022806D009E0002010701DE050 +:105CD000FF20043001E0FF200330814218D0330060 +:105CE0000CF0F4FF111613131613161613161616CE +:105CF00013131313161316000846FF3881381F2894 +:105D000003D9FF39FE39022902D81570002070BD71 +:105D10001470072070BD00B503000CF0D7FF060417 +:105D200006040C080A0C002000BD112000BD07204D +:105D300000BD082000BD032000BD00780207120F3F +:105D400004D0012A05D0022A0AD10EE0000907D1A9 +:105D500008E00009012805D0022803D0032801D05B +:105D60000720704708700020704706207047002801 +:105D700007D0012807D0022807D0032807D0072022 +:105D80007047002004E0112002E0212000E03120D3 +:105D900008700020704738B50C4605004FD06946A2 +:105DA000FFF7CBFF002822D12088032189028843F6 +:105DB000694609788907090D084320806946681CEF +:105DC000FFF7BBFF002812D1218803200003814385 +:105DD000684600788007800C01432180A87840073E +:105DE000820F2020012A03D0022A03D0072038BDC9 +:105DF000814300E00143218088B20105890F08D06A +:105E0000012189038843A9780907C90F8903084339 +:105E1000208080B28104890F0AD0A9784004C90685 +:105E2000C90F400CC903084320808004800F02D1B1 +:105E30002088400403D5208840210843208000208A +:105E400038BD70B504460020088015466068FFF72D +:105E5000A2FF002815D12189A089814210D861684C +:105E6000594E8978C90707D0711E884208D8314633 +:105E70000CF004FD298009E0FF21FF31884201D99F +:105E80000C2070BDFF30FF300330288060688078C0 +:105E9000C007A08903D031460CF0F0FC03E0FF30CE +:105EA000FF30033081B22980206881784748017330 +:105EB00020684649008820394885002070BD10B50B +:105EC000137804785B08E4075B00E40F2343137046 +:105ED000FD2423400478A407E40F640023431370D7 +:105EE000FB24234004786407E40FA40023431370C9 +:105EF000F724234004782407E40FE40023431370BD +:105F0000EF2423400478E406E40F240123431370B4 +:105F1000DF2423400478A406E40F640123431370B4 +:105F20000078BF244006C00F234080010343137054 +:105F3000002906D00878C10701D1800701D50120CA +:105F400000E00020C0015906490E0843107010BD42 +:105F500030B50A8803239B0204889A4323059D0FCA +:105F600002D1A3049C0F01D09B0F00E001239B02F0 +:105F70001A4303230A801B039A4303889804840F5F +:105F800002D11805830F01D0800F00E0012000032B +:105F900002430A8030BDF3B591B00D0018D01198BE +:105FA000002818D0122128460CF04BFC01A9012032 +:105FB00007F0A8FD00242646374677E002290000B6 +:105FC00001280000023000000102000060130020E0 +:105FD000102013B0F0BD0720FBE76846007C0128C5 +:105FE0000BD16846C1890520C002081A0AD00128D1 +:105FF0000AD002280CD003280CD0042C0ED0052C7B +:106000000FD10DE0012400E002246846868908E0F3 +:10601000032406E068460424878902E0052400E0A2 +:10602000062468468189119881423FD12C74002E44 +:106030003AD00BA800900CAB10220021304607F09C +:10604000F3FD002820D16846808D2A46C0B20CA9F5 +:1060500009F079FB002817D1AE81002F24D00BA8BE +:10606000009006AB13220021384607F0DDFD002822 +:106070000AD16846808D06A9C01E0331C0B22A1D10 +:1060800009F061FB002801D00320A2E76846817E69 +:10609000427E08021043E881062C05D16846007C48 +:1060A000A8726846C0892881002092E701A807F0FD +:1060B00031FD002891D0FFF7C6FD8AE7002804D003 +:1060C000012903D0022904D003207047F949C98D62 +:1060D00002E0F8494031C988814201D1002070476F +:1060E0000720704730B5F34C0025608B91B0C00B92 +:1060F0002ED1216900292BD0207B800728D40122B2 +:1061000068460271027200224272228B8281A28A48 +:10611000828204911721018309AA0023023206A971 +:1061200001A807F0BBF8002803D0FFF7F4FD11B079 +:1061300030BD207B02210843207307A800906946E8 +:106140000B8B208804220121FFF7CCFA05460BE0D7 +:10615000FBF74EFD842101700921017218341ECC19 +:106160000C301EC0FBF760FD2846E0E710B5D14CAF +:10617000034621690020002909D02146012210315F +:106180001846FBF707FF00202061A0820120217B39 +:10619000F9221140217310BD70B50C4605461C2133 +:1061A00020460CF04EFB00202080002D08D0012D51 +:1061B00004D0C1A1C5480CF084FC70BD062000E0ED +:1061C0000520A07070BD10B507F090FA10BDFEB5A7 +:1061D0000546007800260C46374603000CF076FD95 +:1061E0000C91070C1D962F462F46486C89916868C4 +:1061F0000A38FBF72FFE89E0002904D0B348AEA18E +:106200001B300CF05EFCFBF7F3FC044640780821E1 +:1062100008436070FBF708FD78E0002C04D1BB2038 +:10622000A5A180000CF04DFC284601F05BFA002887 +:106230006CD06078082108436070022666E0E88828 +:10624000694608800190002C04D1A0489AA12F3003 +:106250000CF037FC287807281CD10198C00B19D006 +:10626000944800218171A988818012E003264DE0C5 +:10627000002C04D1C52090A180000CF022FC8D4898 +:10628000017B89070BD50069002802D0E888C00B84 +:106290003CD00226607808210843607036E0291D52 +:1062A0008EC918308EC02838018802260122204667 +:1062B000FBF752FE0127EDE7002C04D183487EA1B5 +:1062C00064300CF0FEFB7B480821007B4007C00FC8 +:1062D0004600607808436070002E17D128790128A5 +:1062E00002D16879002811D02046FFF73FFF07460A +:1062F0000CE0002CCED10D206FA180010CF0E1FB51 +:10630000C8E772486CA17A300CF0DBFB002C0CD093 +:106310006078000709D5002F07D18420207020461F +:10632000582229460830F9F74FFF3046FEBDF7B531 +:10633000027A88B00C46054620460C30049006923E +:1063400016300027921E02903E460A31594813002B +:106350000CF0BCFC0ADF06E62AE62AE66A98C6E6E6 +:106360004288002A02D052270726DDE051271E2648 +:10637000002C7DD06A684F481288A2800122A27149 +:106380008079C0004019C089FFF705FE002877D149 +:1063900048488179C9004919C98921818079C0009B +:1063A0004019408AA083BFE0688A009006980728B9 +:1063B00017D1E889C00B14D000985127223086B23B +:1063C000002C55D0A8890499FFF7E5FD002857D186 +:1063D00068680088A0800220A071A889208101201F +:1063E00041E000985027203086B2002C40D0A88988 +:1063F000FFF7D1FD002843D168680088A080A889F4 +:10640000E080287A07280AD002202072288AA083F8 +:106410000098E083204669692030009A01E001205D +:10642000F3E70CF0B1F97FE0698A00910169002976 +:1064300002D0E989C90B22D00099512722318EB2AE +:1064400000218171A9898180002C5FD00088A08003 +:10645000A8890499FFF79FFD002811D10220A0719F +:10646000A88920810420A072288AE083009801E096 +:106470004CE005E020846969009A0298D1E7032086 +:106480000BB0F0BD007B400702D55127222601E06A +:1064900050272026002C39D06868502F0088A08013 +:1064A00016D00220A0712146287B0831FFF774FE28 +:1064B0003AE00000401300207372635C67617474FB +:1064C000735F636F72652E6300000000CB020000F3 +:1064D000287BA11DFFF760FE0020FFF747FE23E0A9 +:1064E000A9890089884207D154270626002C0DD09F +:1064F00068680088A08017E053270826002C05D084 +:1065000068680088A080A889E0800DE00A9806806D +:1065100010E055270726002CF8D00020A07103E0DA +:10652000FD49FE480CF0CDFA0A98002C068001D0F7 +:10653000278066800020A3E7F948002101722038F7 +:10654000418081718180027BF923520852001A40F8 +:10655000027301618182704770B5F14C86B0203CB6 +:10656000208000206080A071A0806946012007F093 +:10657000C9FA102608E00199088802461207D20FCE +:10658000B043120110430880684607F0C3FA0500C3 +:10659000F1D02069002804D0E048DF4931300CF008 +:1065A00090FA207B800704D5DC48DB4932300CF0C0 +:1065B00088FA822D04D02846FFF745FB06B070BD4F +:1065C0000020FBE7D64810B52038017B012211439B +:1065D0000173002141808171818006F05BFA10BD5A +:1065E00010B5CF4C0020C043203C20800020FFF796 +:1065F000BDFD207B40084000207310BD70B5C84D24 +:106600000446203D287B800704D5C448C249493050 +:106610000CF057FA287BC00706D12888C149884268 +:1066200002D02869002801D0082070BD002C08D0B5 +:10663000A088162801D2092070BD20682861A08892 +:10664000A882FFF74FFD70BD10B50C4607F04BFA5E +:10665000002803D0B049B4480CF033FA2046FFF7C5 +:10666000F2FA10BDF0B5AE4D0446203591B00020D1 +:10667000089068820E462882E8812946E8804039E1 +:106680000886694608830885088688838882A44826 +:106690000E90007A1746012808D0022806D0032859 +:1066A00004D0042802D0082011B0F0BD05239B03BC +:1066B0009C421CD3012080049C49221A8A4216D392 +:1066C0009B4A944213D29E4211D3331A8B420ED36B +:1066D00096420CD26268002A16D005239B039A4288 +:1066E00005D3101A884202D39148824201D3102068 +:1066F000DAE760892189884203D801225202914257 +:1067000001D90C20D0E7089010AA0CA93046FFF759 +:1067100098FB0028C8D106A92069FFF73CFB002898 +:10672000C2D1206900280CD0607880070028684614 +:10673000008B03DA8004800F56D002E08004800FC3 +:1067400052D105A96069FFF726FB0028ACD160692A +:10675000002808D06846808A0105890F012943D1A5 +:106760008004800F40D007A9A069FFF714FB002820 +:106770009AD16846008B800636D46846808A8006A7 +:1067800032D46846808B81062ED4A169002906D0B8 +:106790000105890F012927D18004800F24D0E068EA +:1067A000002804D0007800281ED01C281CD25C4A87 +:1067B000611C123220460992FFF781FB0321002061 +:1067C0008902884301218902411868460D9101859B +:1067D0000121817457490182514A0FA9153230684D +:1067E00008F0D7FF002801D007205DE708A8007F48 +:1067F0004B49C01CC2B26A7100201031FF320090B8 +:106800000190FF3203460291039003320AA904A8C3 +:1068100007F004F9002827D141482038008E0B905A +:106820003F4833893830326901461239029100936A +:106830000192039010A90A8873890CA9306807F0A7 +:10684000EDF801007AD13648E98811308170090AE3 +:10685000C1700026009631386A79008E3146099B56 +:1068600007F05BF8002802D0FFF7EDF91CE70E985F +:10687000807CC00928D068460D990185012181746A +:10688000292109020182AE81287B61784008C9076D +:106890004000C90F08432873FD2108406178204A51 +:1068A0008907C90F4900084328732A32901C022126 +:1068B000029200910190002303961F4A0AA904A89E +:1068C00007F0ACF80100BDD1606800283FD0206916 +:1068D00000280DD106A90CA8FFF73AFB60788007C5 +:1068E00006D46946088B0321090388436946088357 +:1068F0000120694688740F48FE3008820E492089BD +:10690000891E0BF0BBFF62680548089B2E3003967A +:1069100000930192029012E0B8640000220400008B +:1069200060130020FFFF0000260600000000FC1F8F +:1069300000400020032800000302000086E00A4611 +:10694000002306A904A807F069F801007ED1207889 +:10695000C10601D480062BD56846068460690028EC +:106960000DD105A90CA8FFF7F3FA6846818A032028 +:1069700080028143012080020918684681826946AD +:10698000888A482108436946888201208874F8482B +:106990000882F84908AA022001920291009000237F +:1069A0000396F54A05A904A807F038F8010062D15A +:1069B0002078C0072DD068460684A06900280DD134 +:1069C00007A90CA8FFF7C4FA6846808B0321890247 +:1069D0008843012189024118684681836846818B7A +:1069E000402001436846818301218174E04908AA5F +:1069F000491C0182DF480221801C01920091029013 +:106A000000230396DC4A07A904A807F007F8010051 +:106A100031D1E068002832D068460D990185012106 +:106A20008174D349891C0182E16808A80A78027040 +:106A300049784170E068418868464184E06801799E +:106A400008A80171E068C18808A800E013E041715E +:106A5000090A8171C7480722001D08A90092019107 +:106A60000290412200230396D2000AA904A806F04E +:106A7000D5FF010003D00B98FFF7E6FD14E60321D4 +:106A80000E98002F017207D0E8883880E889788056 +:106A9000288AB880688AF880002005E6F0B50124CD +:106AA0008BB016460F46012802D002281BD104E005 +:106AB000684605218474C90202E06846AF498474BF +:106AC0000182002F11D00321002089028843012177 +:106AD000890241186846018506AA05A9384608F0CA +:106AE00058FE002803D00720CAE41020C8E4A14DB6 +:106AF000B878303D287338882F46203F78856A461D +:106B0000127D0020294606AB00920E310193FF3220 +:106B1000029103900346FF3203320AA904A806F04B +:106B20007DFF002802D0FFF78EF8A9E4002E01D0E7 +:106B3000F88D30802C720020A2E470B592B0064629 +:106B4000012508A885708E496846018406F0DDFE9F +:106B5000002208A90120FFF7A1FF044606F0D9FE94 +:106B6000002C02D0204612B070BD0024002E3ED072 +:106B70001C2168460BF067FE68460178202001431F +:106B80006846017008A885707E49684601841194A2 +:106B90000794817FF9200140891C68468177002095 +:106BA0000146684601770020014668464177042186 +:106BB0008185C485018607A80A9011A80D9008A8B0 +:106BC000099006F0A2FE0EAA09A96846FFF74AFD41 +:106BD000054606F09EFE002D01D02846C3E7654815 +:106BE0006946098F503801816946898F4181614822 +:106BF000303804720020B6E7F7B55E4E9CB0002135 +:106C0000303E0091317A012904D0022902D00820B7 +:106C10001FB0F0BD57495039CA8D824201D00620BD +:106C2000F6E71D98824201D10720F1E75348012180 +:106C300010AA9176401C1083002003239B02024679 +:106C40009A438B02D31810AA93846A4691844E49C2 +:106C5000D18410AA9077908317AA0A926A469185E8 +:106C60000C9009A806F075FF00242546274604A9C4 +:106C700009A806F071FF002810D0822877D1002CD7 +:106C80006AD0002D68D010A80481458100240475C5 +:106C900018A8807812AD012860D077E06846807D22 +:106CA000002F1FD0012853D16846818A3348401CE9 +:106CB000814219D114A800906846408A0EAB102278 +:106CC000002106F0B1FF002874D110A8008A042822 +:106CD00001D0062849D16846018F1D98814237D1DD +:106CE0000F2095E7012833D16846808A0521C90223 +:106CF000884202D0491C88422AD11E485038C18D92 +:106D00006846408A814201D1012700E00027002C1B +:106D100001D0002D0DD01D99884219D114A90091E0 +:106D200004460EAB1022002106F07EFF002841D160 +:106D300001E0009D0CE010A8008A022801D0102874 +:106D400013D1C0B218AA0EA908F0FDFC00280CD17E +:106D50006846408A00908AE7052059E72A1D15A950 +:106D600018A808F016FD002810D0032050E721E0F5 +:106D700002290000901300200302000001280000F7 +:106D800001180000052A0000FFFF000010A8007D88 +:106D90000023001DC2B210A802751E98029019A906 +:106DA00001950394009216A806F038FE002801D140 +:106DB00002213172FEF747FF2AE73EB50B46401E1F +:106DC00084B201AA00211846FFF779F806F09DFD6C +:106DD00002A8009001AB01220021204606F09DFD93 +:106DE000044606F096FD68460089012803D0FE4956 +:106DF000FE480BF066FE2046FEF725FF3EBDF0B5CF +:106E0000FB4E0446307A89B00F46032804D004288C +:106E100002D0082009B0F0BD04AA06A92046FFF759 +:106E200010F80500F6D1F24823893830226901466E +:106E30001039029100930192039069460A8A63898E +:106E400006A9206806F0EAFD002802D0FEF7FBFE46 +:106E5000E0E7002F03D0E648203000893880042086 +:106E600030722846D6E738B50C00054608D0002217 +:106E7000694606F033FF002804D0FEF7E4FE38BD73 +:106E8000102038BD69462046FEF785FF0028F8D15E +:106E9000A0786946C207D20F284606F03AFFECE711 +:106EA0003EB50C0008D002AA694606F017FF00287C +:106EB00004D0FEF7C8FE3EBD10203EBD0321204693 +:106EC0000BF0BFFC6846008801A90005800FFEF7A3 +:106ED0004EFF00280BD16846007920706846008874 +:106EE00001A98004800FFEF742FF002801D0032093 +:106EF0003EBD684600796070A278EF200240684687 +:106F00000088C10B09010A43F7210A404104C90F57 +:106F1000C9000A43A270F9210A40800601D5012068 +:106F200000E00220400069460243097A5008400010 +:106F3000C907C90F0843A07000203EBDFEB51D461D +:106F400014000E46074615D0002D13D006F0DDFCC8 +:106F500001A8009022882B463146384606F0DDFC19 +:106F6000054668468088208006F0D3FC2846FEF758 +:106F70006AFEFEBD1020FEBDF0B50C46002199B0A2 +:106F80000746684681850D46002C11D0E068002830 +:106F900006D0A06800280BD002886B469A85018035 +:106FA000A078012806D0022804D0072019B0F0BD2F +:106FB0001020FBE72088002807D0401E80B201A9DE +:106FC00006F0A0FD002842D136E08A48EEE7694687 +:106FD0008A8921888A420BD26846007C00250128D4 +:106FE0002CD16846C0898449884227D1012525E0F3 +:106FF0008A4203D1002D2FD06D1C01E0022D02D05A +:10700000032D1BD31FE06946097C012916D169466F +:10701000794BCA895B1ED11A9A421DD005DC77488C +:10702000101A19D0012809D116E0012914D0FF390E +:10703000013903D1032506E00D26B60201A806F0AA +:1070400069FD0028C3D0822804D0002806D0FEF7AE +:10705000FAFDABE7022DFAD13046A7E7E068002839 +:1070600013D006F052FC0BA800906A46A188208835 +:10707000928DE36806F051FC054606F04AFC002DAF +:1070800019D16846A168808D088002980078C006F2 +:1070900001D55B488AE706F038FC0EA800906846E8 +:1070A00080890CAB0222002106F0BEFD054606F0E9 +:1070B00030FC002D01D02846C9E76846008F022821 +:1070C00001D0032072E7A078012808A8007C03D033 +:1070D00080070ED4082069E7C007FBD00820FEF720 +:1070E000EBFA072802D34348401C5FE7082502203B +:1070F00001E00225032069460876218868468183DD +:107100001721818611AA002302320DA906A806F0D4 +:10711000C5F8002802D0FEF7FEFD47E70FA8009053 +:107120006846838E042229463846FEF7DBFA3DE79F +:1071300070B5064615460C460846FEF741FD002888 +:107140000AD106F0E2FB2A4621463046FFF7A6FCAC +:10715000044606F0DEFB204670BD70B514460D46B1 +:10716000064606F0D2FB224629463046FFF744FD8C +:10717000044606F0CEFB204670BD70B51E46144690 +:107180000D001AD0002C18D06168002915D00121FB +:10719000FEF794FF00280FD12068FEF711FD0028AC +:1071A0000AD106F0B2FB324621462846FFF75AFACA +:1071B000044606F0AEFB204670BD102070BD70B5D1 +:1071C00015460C0023D00221FEF778FF00281DD1C0 +:1071D0002068FEF7F5FC002818D106F096FB29463A +:1071E0002046FFF70CFE0DE0B86400003C060000EE +:1071F0006013002002300000032800000028000077 +:1072000001340000044606F084FB204670BD1020C7 +:1072100070BDF8B51C4615460E46074600F01FFA2D +:10722000002805D123462A4631463846FFF786FE18 +:10723000F8BDFFB583B01E4615000F460FD006F00F +:1072400064FB01A800900023F74A3946039806F032 +:10725000EBFC044606F05DFB002C03D014E010208C +:1072600007B0F0BD002E0CD006F04FFB00200090C0 +:107270002A8833463946039806F0D6FC044606F0C1 +:1072800048FB6846808828802046FEF7DCFCE7E75C +:10729000002906D0E54B0A885B899A4201D8E44868 +:1072A000704769E610B586B004236C46A382DF4BB5 +:1072B0005C898C4201D2914202D9DD4806B010BDF2 +:1072C0006C462182628200210091019119892180FE +:1072D0000221A17005A9029104A903916946FFF753 +:1072E0004BFEEBE7F0B591B00D4681206946087181 +:1072F00005F002FC0646002D08D02878CB4C01286A +:1073000006D0022828D0072011B0F0BD1020FBE7DE +:10731000A98801AAFEF7CAFC0028F5D1B00734D528 +:1073200068460079002820D1A879C0071DD006F052 +:10733000ECFA002000906A892989A088EB6806F0A1 +:10734000ECFA6946087106F0E4FA69460879002803 +:107350000BD0FEF778FCD7E7A98801AAFEF7A6FCB8 +:107360000028D1D1342006420FD001216846017295 +:10737000017301794173F00609D5A188684601823D +:10738000A18A01832069059004E00820BCE7A08859 +:1073900069460882FAF72CFC05461720694688835F +:1073A0000AAA2B46023207A902A805F077FF074672 +:1073B0006878000701D5FAF737FC002F03D038466C +:1073C000FEF7A9FCA0E7F00603D5207B06210843C1 +:1073D0002073B00602D50020FEF7C8FE08A8009072 +:1073E00069468B8B208804220121FEF77BF98BE70D +:1073F000F0B5002695B014460D4600290FD0022C9A +:107400004FD3A71EBAB288480AF02EF929191039AD +:10741000CA7B8B7B11021943884242D1BCB201A9BD +:10742000012006F06FFB7AE0029F3888010776D5CD +:10743000002D41D0A9190691CA788B78361D11020A +:10744000B6B219438919A1422BD869468A8906998F +:107450004B7809781B020B439A4222D1C00623D5F0 +:1074600006F053FA07A800900698AB19C178807807 +:107470000A0206990243487809780002084300216D +:1074800006F04BFA009006F044FA009800283ED12E +:107490000698C178827808026946898B1043884231 +:1074A00002D00B2015B0F0BD0698C1788278080292 +:1074B0001043801986B22EE0C0062CD5002007AA02 +:1074C00001461154401C80B21028FAD306F01DFA70 +:1074D00006A800906846002380891022194606F00D +:1074E000A3FB0090002803D006F013FA00980EE0EA +:1074F0000BA86946009088890A8B07AB002106F02B +:107500000CFA009006F005FA0098002803D0FEF768 +:107510009AFBC7E703E0388810218843388001A828 +:1075200006F0F8FA002800D17EE7404D698800296E +:1075300021D0012268460276027700244477018434 +:10754000172181850EAA234602320BA906A805F051 +:10755000A5FE002802D0FEF7DEFBA3E70CA80090F2 +:1075600069468B8D288804220121FEF7BBF800288C +:1075700098D16C8096E7002094E7F0B5002487B09E +:1075800015460E46002A04D002A9012006F0BAFAD8 +:1075900040E0102064E60398007800073AD506F032 +:1075A000B4F901A8009068460023008A1E4A1946D3 +:1075B00006F03AFB074606F0ACF9002F23D1002E67 +:1075C00023D068468088298820183719001D8142F9 +:1075D00036D36946098A3970090A797069468988FB +:1075E000B970090AF97006F090F901A8694600908F +:1075F000088A8A883B1D002106F016FB074606F024 +:1076000088F9002F01D003202AE6684680882018D8 +:10761000001D84B202A806F07DFA0028BBD08228A3 +:1076200008D0FEF710FB1BE6FFFF00004013002010 +:1076300002300000002E0ED02988A01C814201D209 +:107640000C200DE62246314639480AF00DF8311972 +:107650000870000A4870A41C2C80002000E600B5C9 +:1076600085B06946FEF797FC00280AD16846007C81 +:1076700003000BF02BFB08052F2F2F2F08080531D7 +:10768000032005B000BD68468078012807D1684610 +:1076900000880321C902401A1CD001281AD068466C +:1076A0008079012806D16846808815214902401A50 +:1076B00005280FD96846807A012811D168460189CA +:1076C00029200002081A05D0022803D0032801D07F +:1076D000042805D10F20D4E7164917480BF0F1F91B +:1076E0000020CEE738B5154A0021518003791AE011 +:1076F000CC002418A46800946C462488250707D57C +:10770000E50605D5D90008182038C08B508006E062 +:10771000640406D59171C9000818C08890800120C2 +:1077200038BD491CC9B28B42E2D8002038BD0000E8 +:10773000FFFF0000B8640000330200004013002087 +:10774000F8B50125F84902260E603F27F7493F02A8 +:107750008F60F7490022CA63CD63F649C96A0907F9 +:107760000ED4F4494031CB6AF34A53620B6B9362F7 +:107770004B6BD3628B6B1363C96BD3051943516396 +:10778000EE49EF4CC969002829D001282BD0FF20F1 +:10779000ECA16E300BF095F9EE48A063FF200430A9 +:1077A00060632563EC49032008602061E44996206A +:1077B00040314860DD48E94940304163E649FC39E1 +:1077C0000163E649091FC163E349F0398163D74882 +:1077D0004760E34910204860E2480660F8BDE2488F +:1077E0006061E24804E0E148E0306061DF48801F0A +:1077F0000143A161D0E70120D0494006C86170472C +:1078000010B5CE4C0020A070214660702031487029 +:1078100008746061A072A06209F02AFBA061204692 +:10782000343009F038FF002804D0FF20C5A13A30D9 +:107830000BF047F901204006E0610020FFF780FFD0 +:1078400010BDBE49012008707047BC490020087077 +:10785000704770477047BA4940310028086802D025 +:107860000122104301E0400840000860704770B5F5 +:107870000C46B24D01460622E81C0AF085FF6C72E8 +:1078800070BDAE48203040787047AC4A917050705F +:10789000704770B50D460446082904D9FF20A9A1F8 +:1078A000CB300BF00EF90022B14809E0910063588B +:1078B00009180B6053001B191B8C0B62521CD2B2AF +:1078C000AA42F3D3206BAA494031086070BD0B2354 +:1078D000DB4310B5C21A9A4998421FD008DC1C320B +:1078E00022D00A2A20D0142A1CD0182A08D117E046 +:1078F000083011D004280DD0082809D00C2805D054 +:10790000FF2090A1F7300BF0DCF810BD04200CE054 +:1079100000200AE0FC2008E0F82006E0F42004E063 +:10792000F02002E0EC2000E0D820C86010BD8348C1 +:107930002030007B704710B5814CC17861620AF03D +:1079400084FF0002E06110BD252808D0262808D059 +:10795000272808D041000A2807D8091D06E002217F +:1079600005E01A2103E0502101E0891DC9B2744AE3 +:107970009160734940314861704770494861704770 +:1079800070B56E4DA87200F028FBA87AC0073CD0F5 +:10799000714C2068800703D46AA176480BF091F8F7 +:1079A000A87A010619D5800707D5724865A1801C01 +:1079B0000BF087F8A87A00060FD55C4E2878403681 +:1079C000012811D0002804D0A3205EA180000BF074 +:1079D00078F869487061A8693061A87A800714D581 +:1079E0002068C00708D102E06348001FF2E7A52025 +:1079F00054A180000BF065F8A87A4007206801D5F3 +:107A0000042100E008210843206070BD70B5012406 +:107A10004A4D002807D0012818D002281AD055480E +:107A200048A145380BE000F0D8FA53482978001FE8 +:107A3000012907D0002907D04E4842A158380BF041 +:107A400040F870BD046070BD446070BD8120FFF7D8 +:107A500097FF70BD00F0C1FA6869002804D145485D +:107A600038A150380BF02DF86969A86A40184349CD +:107A7000C8602E484249403001623F490C314162A2 +:107A80002A49001548603F4884602C48203004741F +:107A900070BDF8B50C2069460870314C6068C006AE +:107AA000C50F1026A66034480021FC300161324B1E +:107AB00001221B1F1A610BE000BF00BF00BF00BF07 +:107AC00000BF00BF00BF00BF6B461A78521E1A707D +:107AD0006A461278002A02D00269002AECD00161BD +:107AE00068460078002804D1224816A131380AF0EF +:107AF000E8FF002D00D06660F8BD10490020C86185 +:107B0000704710B50AF0A1FE00020D49000AC863D3 +:107B100010BD054902200860704703490220086033 +:107B2000104908607047000080E100E000F5014066 +:107B3000C01F004080000010001700409C13002070 +:107B4000001500407372635C68616C5F7263732E32 +:107B5000630000005B06000000120040448000400B +:107B60000013004080E200E006010200250003004F +:107B7000001600407B0200000410004040850040D9 +:107B80004C81004000050040FB4902200860C9E725 +:107B9000FA490870C6E710B5F94809F084FD0028D5 +:107BA00004D02B20F74900010AF08BFF10BD10B55F +:107BB000F34809F090FD10BDF3494860B2E7F04981 +:107BC00010B53439F14B0022C8605A60896A081830 +:107BD000EF49486000F008FA10BDE94810B5C2212D +:107BE0003438C160E94A00215160806AE849C230F6 +:107BF000486000F0F9F910BDE64900208861C861CD +:107C0000DF493439C860E24948608BE7DC4900202D +:107C10003439886286E73F20DE49000240398860B7 +:107C200080E7D748DA493438806AFE30886079E7DF +:107C3000D7490020886075E7D74801681022914332 +:107C40000160D649012088616CE7D5490020C861F0 +:107C5000D148016810221143016063E700B5FFF7C6 +:107C6000EBFFC74900203439087400BD00B5FFF7A9 +:107C7000ECFFC34901203439087400BDC849CA6902 +:107C8000012A01D000204DE7BF4A403292685206D7 +:107C9000520E524202700020C861012042E7F8B53E +:107CA000BF4C2069012806D00021B548343800783F +:107CB000012802D004E04021F7E7E268012A04D05D +:107CC00000220A43012802D004E02022F9E761687B +:107CD000012905D000211143B24A002802D007E053 +:107CE0001021F8E71368012B02D1E368012B04D0BF +:107CF00000230B43002802D007E00823F9E71168AE +:107D0000002902D1E168012905D000221A439F4EC3 +:107D1000002802D004E00422F8E77168012904D0A9 +:107D200000211143002802D004E00221F9E7606835 +:107D3000012829D000259C480D4301680906090E39 +:107D400002D06169012900D000218D4F143F3973A1 +:107D500000680006000E02D0A069012800D00020B3 +:107D600078738B488068002803D000F0ABFA0128B4 +:107D700000D00020B8730021E16021616160616181 +:107D8000A16171602846F8BD0125D4E77C48012136 +:107D90001438C173C6E6F8B5794E0127143E307C1D +:107DA0000025002827D07C4C206800902560FFF734 +:107DB00070FE009820607A48C560056145604561A5 +:107DC000856174490015403988607848856030467F +:107DD000203801787148012909D0002909D0694962 +:107DE00073480AF06EFE0AF06BFF3574F8BD076049 +:107DF000F9E74760F7E7FFF752FF04460020F0730A +:107E0000634842685E4D343D6A620068A862297822 +:107E1000002909D1A978002906D05B4B5B681B7843 +:107E20000B406978994309D000213170E10707D0F0 +:107E3000104602F031FC0121A86A08E03770F5E72E +:107E4000A10601D5022102E0A10702D5002102F01E +:107E500030FC4D4F796806220931E81C0AF067FCB6 +:107E6000002807D1687A79680978C909884201D160 +:107E7000012000E000207070204600F0BBF83F4871 +:107E8000C2270078002815D0012828D002283BD02E +:107E900003285AD03B4947480AF013FE287C0028A3 +:107EA00004D02878002865D0FFF7C6FE287800287F +:107EB00061D08BE0A00701D501F001FC200703D5BC +:107EC0000120EF6001F034FC600703D50020EF6073 +:107ED00001F02EFCA006E1D501F09EFBDEE7A00735 +:107EE00001D503F08BFE200703D50120EF6003F0DE +:107EF00005FE600703D50020EF6003F0FFFDA0063C +:107F0000CCD503F087FDC9E7A00703D5BF20044007 +:107F100009F07EFB200705D5BF2004400120EF605B +:107F200009F075FB600705D5BF2004400020EF6015 +:107F300009F06DFBA00603D5BF20044009F066FBE5 +:107F40006006ABD509F065FBA8E7A00701D509F0ED +:107F500063FB200703D50120EF6009F05CFB60079D +:107F600003D50020EF6009F056FBA00696D509F076 +:107F700051FB93E720E022E000E100E05400002004 +:107F8000D0130020447B00000015004040810040D9 +:107F90004085004040F501400012004000100040C4 +:107FA0000011004000140040401600400005004051 +:107FB0006F0300009F040000FFF747FE76E7E868C4 +:107FC000002803D0A96A091826484160F07B0028E0 +:107FD00000D10BE70AF074FEF8BD234903200860C6 +:107FE0002249002008619DE520482149C1612149BD +:107FF000816197E570B50546FFF7EFFF1E4CA17A4A +:10800000080701D568071CD41C4AC80605D5507B53 +:10801000002802D0907B002813D0880602D5107863 +:1080200000280ED1480602D55078002809D000203B +:108030008A070026002A07DA4A0704D5012222709F +:1080400002E00120F4E72670CA0709D0AA0705D488 +:10805000890705D5002803D0A80601D4FFF719FD2C +:10806000A67270BD408500400012004040F50140FE +:1080700010100040448100409C130020BC130020DD +:108080002E48002101704170704770B506461446B5 +:108090000D46012000F072F828490120284B087095 +:1080A0009E60DC601D6170BDF8B50446012000F0E3 +:1080B00065F822490120087021494C6021490026B9 +:1080C0004E601121204D8902A960204F002C0AD05A +:1080D000012C03D01EA140200AF0F3FC3E601120C9 +:1080E00080026860F8BD386001208002F9E710B5B1 +:1080F0001248017800290ED01121134A890291609B +:1081000010494A680021002A03D0154A12684270BB +:1081100000E041700170002000F030F810BD074809 +:108120000178002907D007484068002802D00C4891 +:108130000068C0B2704740787047000055000020CA +:1081400000F5004000F1004000F5014000F2004061 +:108150007372635C68616C5F63636D2E6300000023 +:1081600000F4004001202949C0030860284900208C +:1081700008701120274980028860704770B5244D2F +:1081800004462878A04207D0002C05D0002803D050 +:1081900021A14D200AF095FC2878A04210D00020A3 +:1081A00022492C70002C23D01A4A214D214B8032B9 +:1081B000012C06D0022C13D017A16A200AF081FCF2 +:1081C00070BD0860022008604D6112481A494030B5 +:1081D00001624362081D10601648001D506070BDAA +:1081E0000860032008604D6114481060536070BD42 +:1081F00008600860112007498002886070BD10B5D2 +:1082000005A173200AF05DFC10BD000080E100E0D4 +:108210005700002000F501407372635C68616C5F79 +:1082200063636D5F6161722E6300000000F50040C2 +:10823000D413002000F000400011004048810040AD +:10824000364800210170417010218170704770B56F +:10825000064614460D460220FFF790FF01202F49E5 +:108260002F4A0870E41E14619660556070BD10B509 +:108270000220FFF783FF29490120087029480021C7 +:1082800001604160816028490014486010BD10B54C +:10829000224C2078002811D00120234980038860D7 +:1082A00000F02EF80021002804D0012060701F4843 +:1082B000006801E061701020A07021700020FFF7BD +:1082C0005DFF10BD10B515480178002905D000F0FC +:1082D00017F8002800D0012010BD407810BD10B55F +:1082E0000E480178002909D000F00AF8002803D0D0 +:1082F0000E480068C0B210BD102010BD807810BDBF +:1083000008480168002905D04168002902D080682A +:10831000002801D00020704701207047580000203D +:1083200000F5004000F1004000F5014000F400407D +:1083300010B528210AF085FA10BD40788006800E1D +:10834000704740788006800EC01C70472820704718 +:1083500070B5054600780A0700090001120F1043A6 +:1083600028700B000AF0B2FC070507050705090590 +:108370000B00062408E00C2406E0222404E000247C +:10838000FEA158200AF09DFB6878800980012043F7 +:10839000687070BD00780007000F704710B50622A6 +:1083A000C01C0AF0F1F910BD0B4610B5C11C062225 +:1083B00018460AF0E9F910BD10B5062209300AF096 +:1083C000E3F910BD0B46014610B5062209311846E7 +:1083D0000AF0DAF910BD0278BF23C9071A40490E26 +:1083E0000A430270704700784006C00F7047027859 +:1083F0005206520EC9010A43027070470078C00944 +:10840000704770B50C460546C11C2046062209304F +:108410000AF0BAF920784006400E20702978490603 +:10842000C90FC9010843207070BD70B515460E46CE +:1084300004461F2A03D9D1A1A9200AF042FB2046F5 +:108440002A46314609300AF09FF96078AD1D80094F +:108450008001A906890E0843607070BD70B505469D +:1084600040780E468406A40E062C03D2C3A1B92080 +:108470000AF027FBA41FE4B21F2C00D91F242946B1 +:108480002246093130460AF07FF9204670BD70B5AA +:1084900015460E4604461F2A03D9B8A1CD200AF07E +:1084A00010FB20462A46314609300AF06DF9607803 +:1084B000AD1D80098001A906890E0843607070BD5A +:1084C00070B5044640780E468506AD0E062D03D2E3 +:1084D000AAA1DE200AF0F5FAAD1FEDB21F2D03D9D7 +:1084E000A6A1E2200AF0EDFA21462A4609313046DB +:1084F0000AF04AF9284670BD10B504220F300AF080 +:1085000043F910BD0B46014610B504220F31184641 +:108510000AF03AF910BD10B5032213300AF034F90D +:1085200010BD0B46014610B50322133118460AF060 +:108530002BF910BD4176090A81767047817E427E13 +:10854000080210437047C176090A01777047017F1E +:10855000C27E0802104370474177090A817770474D +:10856000817F427F080210437047C175090A017676 +:108570007047017EC27D08021043704781757047C5 +:10858000807D704720300279C90652095201C90E18 +:108590000A430271704720300079C006C00E704750 +:1085A00020300279D206D20E49010A430271704787 +:1085B000203000794009704710B505221F300AF0BD +:1085C000E3F810BD0B46014610B505221F311846D1 +:1085D0000AF0DAF810BD30B5411C837E0A46190254 +:1085E000D37D447E927D1B0221431343674D827DE0 +:1085F0008C1FAC4210D8002A0ED0082A0CD88A4210 +:108600000AD28B4208D8817F427F08021043A91DFD +:10861000884201D8012030BD002030BD00210A462B +:108620004254491C2229FBDB70474078C006C00E2B +:1086300070474078C006C00EC01C704722207047AB +:1086400010B502788B07920892009B0F1A430270B4 +:108650004278520952014270012908D0022906D0FD +:10866000032905D0FF2045A1A3300AF02AFA10BD46 +:1086700001210A43427010BD10B502788B079208A1 +:1086800092009B0F1A4302704278520952014270C5 +:10869000012908D0022906D0032905D0FF2037A1DF +:1086A000BD300AF00EFA10BD01210A43427010BD20 +:1086B00000788007800F70470278FB23C9071A40B3 +:1086C000490F0A430270704700784007C00F704797 +:1086D0000278F723C9071A40090F0A43027070474E +:1086E00000780007C00F70470278EF23C9071A40CF +:1086F000C90E0A43027070470078C006C00F704769 +:1087000070B50546C1700B000AF0E0FA0E080A0CBD +:108710000E1012120C14141212160C180C2413E062 +:10872000082411E002240FE017240DE00D240BE0D3 +:10873000012409E0092407E0062405E0452000247F +:108740000EA1C0000AF0BDF968784009400120433D +:10875000687070BDC078704770B5044640780E46AA +:10876000C506ED0E1B2D03D904A109480AF0A9F98D +:108770006019C01C042231460CE000007372635C77 +:10878000756C5F7064752E63000000007A0C000049 +:108790003A02000009F0F8FF70BD70B50446407859 +:1087A0000E46C506ED0E1B2D03D9A049A0480AF0C0 +:1087B00088F96119C91C0422304609F0E5FF70BD33 +:1087C000C171090A01727047017AC2790802104327 +:1087D00070474172090A81727047817A427A0802B1 +:1087E00010437047C172090A01737047017BC27A56 +:1087F0000802104370474171090A817170478179FD +:108800004279080210437047017170470079704740 +:108810004173090A81737047817B427B08021043D0 +:10882000704730B5411C037A0A46C47919022143C6 +:10883000537914791B0223437E4D00798C1FAC427F +:1088400010D800280ED008280CD888420AD28B42B3 +:1088500008D8D07A917A00020843A91D884201D82D +:10886000012030BD002030BD10B50522001D09F0EB +:108870008BFF10BD0B4610B5011D0522184609F0EF +:1088800083FF10BD4172090A81727047817A427A72 +:10889000080210437047017170470079704710B5A6 +:1088A0000822001D09F070FF10BD0B4610B5011D18 +:1088B0000822184609F068FF10BD0A78027349784B +:1088C00041737047027B0A70407B4870704710B557 +:1088D00008220E3009F058FF10BD0B46014610B5B6 +:1088E00008220E31184609F04FFF10BD10B50422C2 +:1088F000163009F049FF10BD0B46014610B50422A1 +:108900001631184609F040FF10BD10B50822001DB1 +:1089100009F03AFF10BD0B4610B5011D082218469C +:1089200009F032FF10BD10B504220C3009F02CFF05 +:1089300010BD0B46014610B504220C31184609F053 +:1089400023FF10BD017170474171090A81717047A1 +:10895000C171090A017270470079704781794279C3 +:10896000080210437047017AC27908021043704729 +:108970000171704700797047017170470079704745 +:1089800010B50822001D09F0FFFE10BD0B4610B502 +:10899000011D0822184609F0F7FE10BD10B5082287 +:1089A000001D09F0F1FE10BD0B4610B5011D082297 +:1089B000184609F0E9FE10BD70B515460E4604468E +:1089C0001B2A04D93720194900010AF07AF82A46EF +:1089D0003146E01C09F0D8FE6078E9064009400104 +:1089E000C90E0843607070BD70B5054640780E46EC +:1089F000C406E40E1B2C04D9DF200C4980000AF0C9 +:108A000060F82246E91C304609F0BEFE204670BDE3 +:108A10004078C006C00E1B2801D8012070470020F6 +:108A2000704710B5222209F0AFFE10BD7C87000010 +:108A3000430200007A0C0000FEB50F4601460646D0 +:108A40000546C031203640350446032F04D0002FA0 +:108A50002BD0012F29D049E000206080A080E08049 +:108A600020816081A082E082E873A074E074A07627 +:108A7000E076A073E0732074607430740123AB73EC +:108A80006882E88208762146A883603108702883CE +:108A90002873687320776077B072B0730872487279 +:108AA00088720A7488746883FEBD00206882E88238 +:108AB000012F50D0E08B0090608C0190C000009995 +:108AC00009F0DCFE401C80B2A882009919224143C3 +:108AD0009202914201DD401EA8827D200002009991 +:108AE00009F0CCFE401CE883002F01D0022FDBD11F +:108AF000307AC006C00E30720020E872221824219D +:108B00008B5C4032D9075B08DE07C90FF60F71187E +:108B10005B08DE07F60F71185B08DE07F60F7118A9 +:108B20005B08DE07F60F71185B08DE07F60F711899 +:108B30005B08DE07F60F71185B0859189171EA7A25 +:108B4000401C5118C0B2E9720528D7D3002FABD111 +:108B500000202874FEBD4A7F2046E030022A12D051 +:108B6000097F022913D050A1722009F0AAFF012029 +:108B700000900190E08B698B4843009909F08CFECE +:108B8000688301989AE7818800910089F1E7018A5A +:108B90000091808AEDE770B504464034E67A0546D8 +:108BA000002E68D0252E66D8002964D03C20405D78 +:108BB000227B48431018252109F060FE08462173E6 +:108BC0004207C908520F3C4B691820319A5C097959 +:108BD0008A4367D0314609F051FE491CCAB20020D1 +:108BE00006E0002804D0291840314979511ACAB248 +:108BF000291846235B5C93423AD320310979C94353 +:108C0000CB07DB17D21A521E1206120E34D08B0776 +:108C1000DB17D21A521E1206120E2FD04B07DB178B +:108C2000D21A521E1206120E2BD00B07DB17D21AC5 +:108C3000521E1206120E27D0CB06DB17D21A521E76 +:108C40001206120E23D08B06DB17D21A521E120602 +:108C5000120E1FD04B06DB17D21A521E1206120E2E +:108C60001BD00906C917511A491E0A06120E17D041 +:108C7000401C0528B5DB70BDC00013E0C000401CDF +:108C800010E0C000801C0DE0C000C01C0AE0C00065 +:108C9000001D07E0C000401D04E0C000801D01E091 +:108CA000C000C01D607370BD7372635C6C6C5F75D7 +:108CB00074696C2E63000000042D010010B5FF489C +:108CC0000021017041708170C17041718171C17169 +:108CD000083008F0E0FC002804D0FF20F8A1843020 +:108CE00009F0EFFE10BD10B5F44900204872081DD0 +:108CF00008F0D1FC002804D0FF20F1A1C33009F016 +:108D0000E0FEFFF7DBFFF148FFF788FC0021EF48AA +:108D1000FFF7EAFC0121ED48FFF792FC10BDE2E706 +:108D20001B207047E5494A7A002A01D0002070478D +:108D3000488101204872704710B5E0494A7A002AFC +:108D400002D04989814201D0002010BDDB48001DBE +:108D500008F0A9FC002804D0FF20D9A1B43009F004 +:108D6000B0FED648001D08F0B6FCFFF7A7FF0120B3 +:108D700010BD70B5D14C0025627A002A02D06289FC +:108D8000824201D00D700DE0227863789A4203D3BD +:108D900022786378D21A04E062782378D21A1023FA +:108DA0009A1A0A70FFF7C8FF002801D065720120E7 +:108DB00070BDC2494A7A002A04D04989814201D152 +:108DC0000120704700207047BC490A784B78521C3C +:108DD0001207120F9A4207D0097822225143BC4A47 +:108DE000891801600120704700207047B34801785E +:108DF0004278491C0907090F914206D00178491CA5 +:108E00000907090F01700120704700207047AB4926 +:108E10004A7A002A04D04989814201D10120704751 +:108E200000207047A5490A784B789A4207D04978C4 +:108E300022225143A64A8918016001207047002070 +:108E4000704710B59D4C20786178884216D06078C4 +:108E5000401C0007000F6070201D08F024FC002853 +:108E600004D0E078401CE070012010BDA078401CC8 +:108E7000A0709248001D08F02EFCF5E7002010BD00 +:108E80008E4801784078814201D10120704700204E +:108E900070478A4801784278914202D3017840783D +:108EA00003E041780078081A1021081AC0B2704710 +:108EB0000F20704770B5814C0D46617A002916D09D +:108EC0006189814213D100262E70201D08F0EBFB32 +:108ED000002805D1A0782870A670201D08F0FBFBA3 +:108EE0002878E17840182870E670012070BD0020D5 +:108EF00070BD76490160704770494A7A002A04D0F3 +:108F00004989814201D101207047002070476B4997 +:108F10004979002901D0002070476E490160012085 +:108F2000704766484179002901D00020704701212F +:108F300041710846704761494A7A002A04D049893C +:108F4000814201D101207047002070475B49497977 +:108F5000012901D0002070475E490160012070475F +:108F600056484179012901D0002070470021417104 +:108F70000120704751484079012801D001207047F5 +:108F8000002070474D494A7A002A04D0498981421D +:108F900001D1012070470020704770B5474C05464D +:108FA000A0790721401C09F069FCE079814208D0D2 +:108FB000A0792221484347492231401828600120E6 +:108FC00070BD002070BD10B53C4C0721A079401C3D +:108FD00009F054FCE079814207D0A0790721401CB8 +:108FE00009F04CFCA171012010BD002010BD3348D8 +:108FF0008179C079814201D10120704700207047FA +:109000002E494A7A002A04D04989814201D101209F +:1090100070470020704710B504462848083008F013 +:1090200042FB002815D125498879CA7990420CD095 +:10903000C8792221484327492231401820601F481F +:10904000083008F048FB012010BD1C48083008F02B +:1090500042FB002010BD10B504461848083008F047 +:1090600022FB002815D115498879CA7990420CD085 +:10907000C8792221484317492231401820600F48FF +:10908000083008F028FB012010BD0C48083008F01B +:1090900022FB002010BD094810B5083008F003FB82 +:1090A000002822D1054CA079E17988421AD0E079D4 +:1090B0000721401C09F0E2FBE1710DE05C0000209B +:1090C0007372635C646D5F712E6300002F17002064 +:1090D000FF1300201F1600202046083008F0FBFA7E +:1090E000012010BD0C4808F0F6FA002010BD0A4817 +:1090F00008388179C079814201D101207047002070 +:109100007047054808388179C079814201D1012032 +:1091100070470020704700006400002070477047CF +:10912000FF2070477047704700207047002070474D +:1091300000207047002070470020704700207047D3 +:1091400000207047002070470020704701207047C2 +:1091500000207047002070470020704700207047B3 +:10916000F8B5FA4D0446A87F002600280CD0002947 +:1091700023D1667010202070E87FA0702846203030 +:109180000078E070AE7718E0287A012801D000203E +:10919000F8BD002911D16670EC49687A01270A31BF +:1091A000002801D0132000E0052020701422A01C0C +:1091B00009F0EAFAA7716E722E720120F8BDF8B5B7 +:1091C000E3480078002802D00C273846F8BD002775 +:1091D000DE4D3C46203DAF74EF742F7528466F730B +:1091E0002038DA4E47737771687D002804D0FEF787 +:1091F0001FFDFFF74CF86C7534727472B477D34866 +:109200002430FFF795F8D1484C30FFF791F8D0485B +:109210004470DAE710B5CE4C00232370CB4C203CD1 +:109220006375CA4B01241C71603B583307C3FFF7B9 +:10923000C6FF002803D0C7A1FF2009F042FC10BDE3 +:10924000C2482038807C7047F8B5C04D0646407B48 +:10925000203DE873BD4837791346AF73B27B827106 +:109260000446603C217006221946601C09F08CFA05 +:10927000B07960730622F11DE01D09F085FA687B64 +:109280000126002800D0EE74B0484038407B00280A +:1092900000D02E75002F09D0012F09D0022F24D025 +:1092A000032F43D0FF20ABA14B3013E000211DE082 +:1092B000A64801212430FFF74BF8A448E11D2430D3 +:1092C000FFF77AF8607B002807D0012807D0FF203D +:1092D000A0A1413009F0F5FB0CE0002100E00121E4 +:1092E0009A482430FFF783F804E006219748243099 +:1092F000FFF72EF89548611C2430FFF74FF893488C +:1093000021782430FFF767F8904804214C30FFF7AC +:109310001FF88E48611C4C30FFF740F88B482178CD +:109320004C30FFF758F8AE740020F8BD0221DDE79D +:1093300070B50446854D0020203D287528462246FC +:10934000323809F021FA2846203844730120287564 +:1093500070BD7E490871704710B57C4C0022203CDE +:10936000E274607302462046123809F00DFA0120BB +:10937000E07410BDF8B500F02DFB744C0025203CC6 +:10938000607D002804D0FEF753FCFEF780FF657572 +:109390006F4E3570FEF70BFCA07B012804D0002136 +:1093A000084601F02DF9F8BD0021022001F028F94E +:1093B000664C207A0127002809D0A07F0028F2D12E +:1093C0000520E077204620300570A777F8BD70783B +:1093D0000028FBD05D4906226039487BE073C91D37 +:1093E0000846693009F0D0F93C20A07227727570E8 +:1093F000F8BD10B5554C203CE17B207CCA0701D05C +:10940000C2070BD08A070FD582070DD42620FEF79E +:109410009BFA207C02210843207410BD2520FEF712 +:1094200093FA207C0121F6E74907F6D54007F4D4EA +:109430002720FEF789FA207C0421ECE770B5444828 +:109440000078002861D1414C203CA07C00285CD0F1 +:10945000FEF7A1FB0026267466743046FEF798FBE3 +:109460000020FEF76DF93F48FEF765FA2546403DBE +:10947000296E8857FEF72BFA3A48C01EFEF741FBCB +:10948000FEF7BAFBFFF7B5FFFEF7DBF9FEF77CFB53 +:109490000120FEF7BBFA0F210520FEF7F6F9297827 +:1094A000681CFEF7E4F9A07B01280AD0E07C0028C4 +:1094B00007D0214612390846627B5630FEF7B5FFC9 +:1094C000E674207D002808D0204840380146427BC1 +:1094D00012398C30FEF7DBFF2675E86D0178002924 +:1094E00003D00178001DFEF7D4F9A86D017800299A +:1094F00007D00178154A401C7732FEF7A8FE0120FC +:109500006075FEF754FB002070BD0C2070BD104943 +:109510004860704770B50546FEF76EFB002D06D01B +:109520000020FEF72DFAFEF78CF9FFF762FF074CDB +:10953000203C607C002819D0A07B012803D105A124 +:10954000094809F0BEFAFFF715FF70BDB4170020F7 +:10955000680000207372635C6C6C5F6164762E63DC +:10956000000000000F2D0100CF0300000126002D98 +:1095700004D00220FEF74AFAFE484671FD48243026 +:10958000FEF71AFB012008F03CF8FEF762F9A07B19 +:1095900000280ED001280CD002280AD003280AD0B7 +:1095A000F549F64809F08DFAE07B217C884306D026 +:1095B00009E0032000E00120FEF7E2F9F4E7A07BD8 +:1095C000012803D06674EE480670BEE700202074C0 +:1095D000F9E710B5FEF7DFFAE948007800280ED168 +:1095E000E4482038807C002809D00020FFF792FF53 +:1095F000F6F7F9FEDF480079012806D007E000F011 +:10960000E9F9FEF7D4FA0C2010BD09F059FB00204F +:1096100010BDDB494870704770B500F0AFFE002800 +:1096200019D0FF202D30FEF7A8F9D54E3078D14C57 +:10963000012813D0022801D003282ED0CE49D148CA +:1096400009F03FFA3078002807D0F6F7CCFE2079F1 +:1096500001282CD030E0FFF78DFE76E7C54D203D88 +:10966000A87B032819D0FEF7B8FA687D002803D03C +:10967000FEF7FDFDFEF7D5FABE487430FEF79CFA02 +:10968000012007F0BFFFA87B01280BD0A1796F2034 +:10969000012906D0032904D004E00120FFF73AFF96 +:1096A000D0E77F20FEF76CF902203070CAE76079BE +:1096B000002801D1FEF76AFB0020607145E770B514 +:1096C000AC4C203C607D002803D0FEF7B1FAFEF7D9 +:1096D000DEFD00F053FE00281CD0A94D287802289A +:1096E00004D0A848A4492B3009F0EBF9A07B01284D +:1096F00013D0FF202D30FEF740F90120FFF70AFFBD +:109700002878002808D0F6F76EFE9A4C20790128B8 +:1097100006D00AE0FFF72EFE17E799208000EAE75F +:109720006079002801D1FEF731FB002060710CE761 +:10973000F8B50446FEF7FBF80546FEF7C3FD012821 +:1097400000D0002000908E480078022804D08D4878 +:109750008949673009F0B5F9864E203E707D0028B2 +:1097600003D0FEF765FAFEF792FDFEF745FA814851 +:109770007430FEF70FFE21007E4C07464DD0FEF7F9 +:1097800080F80028FAD03B0009F0A0FA06474747C6 +:1097900004471D47B07B0128F0D00098054304D151 +:1097A000A079002801D0022837D172484C30FEF74A +:1097B00003FA012007F025FF0120FEF7E1F87048C9 +:1097C00003210170F5E06B4F74373846D438F978CF +:1097D000C27991421BD13979027A914217D17979B4 +:1097E000427A914213D1B979827A91420FD1F979B3 +:1097F000C27A91420BD1397A027B914207D13978F2 +:10980000407B4906C90F814201D1012100E00021BE +:10981000B07B012802D0002803D0C3E0002908D182 +:10982000C0E00098054304D1A079002801D00128A8 +:109830007ED150487430FEF7CEFE002878D0504DCF +:109840004C49686804228331323008F09DFF387833 +:109850003E214006C20F68680A540622F91C3F30B8 +:1098600008F092FF4349686803228731363008F0D8 +:109870008BFF6868BA7D39210A543E4974310A7EEB +:10988000CB7D12021A4342878A7E4B7E12021A4314 +:10989000C2830A7FCB7E110219430184354974319A +:1098A0008A7F4B7F1102194341843249052293314B +:1098B000243008F069FF2F486D68943001792F46F5 +:1098C000C906C90E20373977007940097877207AA0 +:1098D000002810D0A07F002858D1607A002801D03D +:1098E000132000E005202349E07700202031087094 +:1098F0000120A0774AE01F48717D1030002925D053 +:109900000021A172A989A181B97FE17329460622AC +:109910003F3108F039FFE88BE082288C2083688C87 +:109920006083787F2077607F00994008400000E0E6 +:1099300038E008436077FEF7D2FC617F4000C9073A +:10994000C90F01436177012060721EE00021A172FE +:10995000A989A181B97FE173294606223F3108F028 +:1099600013FFE88BE082288C2083688C6083787FEB +:10997000207709E0B417002054950000ED030000A3 +:10998000680000206B02000001202072194D0020A9 +:10999000287000F01FF8FEF70AF90120696800F04E +:1099A0002FFE06E0FF202D30FDF7E7FF0120FFF737 +:1099B000B1FD1048007800280BD0F6F714FD20798F +:1099C000012804D16079002801D1FEF7DFF90020D9 +:1099D0006071F8BD10B5FEF719F9FEF70DF9FEF745 +:1099E00058F80020FDF7CCFFFEF715F9FEF795F8C3 +:1099F00010BD0000680000208107C90E002808DAA9 +:109A00000007000F08388008F94A80008018C069F4 +:109A100004E08008F74A800080180068C84000060B +:109A2000800F7047F448C07D7047F44800780028E4 +:109A300001D00020704701207047F048007870473F +:109A400010B5EE4A1378EC4CA47DA34202D007F087 +:109A500059F910BD1078032803D1E8490120891D68 +:109A6000887000F04AFE10BD38B5E44DE24CAD1DE3 +:109A7000687801281ED00121684606F041F8684642 +:109A80000078DF49000208F0F9FE68684118606854 +:109A900007F08FF86060DB48A060A18A00200029F1 +:109AA00010D06070032121702073A07ED249FFF78F +:109AB000C7FF38BD7D21C900606807F07AF8606093 +:109AC000D148E9E70121A18202216170EAE7FFB5EF +:109AD000C94C85B01C3461680191A1680391C749E4 +:109AE0001E46891E4A6807995388C91A89B202918D +:109AF000002E04D025463C3521464C3102E0BE4DB7 +:109B0000114664310091BC4F03213C372970002875 +:109B100018D0BA49891E4968403101287ED00228F0 +:109B20005CD003287BD0B9A1BC4808F0CAFF2878D4 +:109B3000002E75D0032804D0B848B4A1093008F02D +:109B4000C0FF35E1A068002804D1B448AFA1663851 +:109B500008F0B7FFA948B149801E40686031408FC6 +:109B600048434018069900F0CEFDE061A348AB4998 +:109B7000801E40686031C08B4843069900F0C3FDE9 +:109B80009E492062891E4B68A44A598FA0686032A2 +:109B9000514386464118E069A04A091A4C3A89188F +:109BA0008C462033E1629D4A597E60325143411810 +:109BB0000818FF3016306062A06261467046081ACD +:109BC000FF38974935388842B1D29649884204D245 +:109BD00092488EA1593808F074FFD0E0508F8F4A18 +:109BE0002169603250430818069900F08CFDE0614D +:109BF00082488A49801E40686031C08B484306997C +:109C000000F081FD2062A068002804D183487FA174 +:109C1000513808F056FF7948801E02E02FE05EE0E0 +:109C2000C1E040685621095A7F4B0029418F2269C3 +:109C30001DD059435118E269891AE1626269E168ED +:109C4000794B5143E26989183922125C5A438A18C8 +:109C50005118FF3114316162C08B216A5843411A97 +:109C600072480818A062A168E06A401A81E059436E +:109C70005118E269891A6268D3398918DDE7C88A00 +:109C8000002802D0A068002804D164485FA13938B8 +:109C900008F017FF59486449801E4068C28B4A4348 +:109CA000216A8E46511AE1628C4656226369125A25 +:109CB000E168D21A5943E3692030CB187146514309 +:109CC000407E594A5918504308184018FF30143044 +:109CD0006062564861466044A062A06848E0D08B4C +:109CE000514A5043226A801A029A5043E062C88A5D +:109CF000002805D0002E19D0B87D002816D0A1E08C +:109D0000002E02D0B87D0028F6D10198002802D09C +:109D10000398002804D141483CA1213808F0D1FE25 +:109D20000198E16AD3380818E06207E0019800283A +:109D300004D08D2035A1C00008F0C3FE2F48801E3E +:109D400042685620815A02980818216A4843400008 +:109D5000FF3014306062D08B334A5043411A33488D +:109D60000818A0622448C07D00280BD0E16A03983F +:109D7000081AFF382A492338884200D3D7E6022040 +:109D80002870D4E606F072FC01461B48006907F013 +:109D9000C7FBE16A081AFF3821491E388842EDD214 +:109DA000012009B0F0BD032802D1144907204870F2 +:109DB0001148E16A006906F0FCFE6860A16A606A09 +:109DC000884202D90098016001E00099086000987B +:109DD000174900680818A8600848801E40688188F4 +:109DE0000798081A00B2002824DD022023E00000B2 +:109DF00000ED00E000E400E05018002072000020B8 +:109E000010270000F82A0000B78913007372635C02 +:109E10006C6C5F6C6D2E73302E630000820400004A +:109E20004707000082020000E204000061FCFFFF1F +:109E3000EF160000002068702E73002E04D0B87D4D +:109E4000002801D00220ACE701204640BE76F7484A +:109E5000807E2946FFF7F4FD0020A2E7F8B5F3481D +:109E60003C30807EF14FF24D3C461C3400280CD033 +:109E70006968208F4988884207D17878002804D102 +:109E8000A920EC49C00008F01CFE06F0EFFB0146DB +:109E9000386907F045FB00F044FC6968228F4B8865 +:109EA0001E18B24202DB521C228702E0401C181826 +:109EB0002087208F0A89904201D1401C2087B88AD0 +:109EC000032802D2401CB88201E0208F8880084617 +:109ED0004030828A408A4988101A401E401886B253 +:109EE00017E028786B6841002033D3485B7F415AE4 +:109EF0005B00C05A081881B2207E0023FFF7E7FDFF +:109F0000002811D0012810D00B20CA49C00108F048 +:109F1000D8FD228FB01A00B20028E2DA6868082162 +:109F20002030417400F0A7FDF8BD208F401C208731 +:109F3000EFE770B5BD4C00261C3466600120A660BA +:109F400000F0C9FBBA481F21801C41700078B74D52 +:109F5000030008F0BBFE044545033745B3482670AF +:109F60003C30807EB24E002806D106F07FFB216C8B +:109F700007F0D6FA002811DC7068228F41888A42E7 +:109F800004D10289511A4181428003E0511A418172 +:109F9000218F41806868206428610BE0A18E706881 +:109FA0004288891A4181A18E4180216C69602961B2 +:109FB000E16C4166706801F0FFFB00280DD09D49FF +:109FC0009E4808E068682861FFF738FA002804D046 +:109FD0009A489849401D08F074FDF6F704FA70BDE0 +:109FE000964894490C30F6E7F8B505468F4A0120AB +:109FF0003C3290758D4C17466576213F00260B004C +:10A0000008F064FE09061D2E4E2B69691C64690068 +:10A0100020768748801C0078022807D0384607F051 +:10A0200042FB002803D1A07EA84200D12676207EE4 +:10A03000002803D1FFF77DFF00F0A0FBF8BD207ED4 +:10A04000002806D006F064FA6676384607F043FB2F +:10A0500001E000F075FB2676F8BDFDF79CFEF8BD2B +:10A060007348801C017802290ED0A17E0078A94295 +:10A070000DD0002804D0FF206E497B3008F021FD70 +:10A08000284606F0D8FAF8BDFFF7E8FEF8BD032829 +:10A0900003D0FF206749813015E0FFF7E5FCF8BDEC +:10A0A000A07EA84204D0FF206249873008F009FD55 +:10A0B0005F48801C01780229E6D000780328ECD0A4 +:10A0C000FF205C498E3008F0FCFCE6E7284606F0ED +:10A0D000B2FA6676F8BDFF2056499D3008F0F1FCD3 +:10A0E000F8BD524988755248801C00E020BF0278B4 +:10A0F0008B7D9A42FAD00078002803D000200022FD +:10A100008A7570470120FAE710B500280BD00128A6 +:10A1100005D04A484749853808F0D3FC09E00320B8 +:10A12000FFF7DFFF01E000F049FB002801D000202D +:10A1300010BD0C2010BDF8B5FF273D4D1F24D037B2 +:10A14000AD1C2E78330008F0C1FD040811030C117A +:10A150000220FFF7C6FF002801D000240FE00C24E6 +:10A160000AE00120FFF7D0FF044603E031493846FA +:10A1700008F0A7FC002C02D02878B042E1D1287862 +:10A18000002804D0FF202B49D53008F09AFC27493D +:10A1900000201C3108761C39887501226A70244A17 +:10A1A00008325070C87508612046F8BD70B5044685 +:10A1B0000120FFF721FCC5B20B20FFF71DFCC0B248 +:10A1C000854204D0FF201B49A73008F07AFC01200B +:10A1D000FFF712FCC5B21820FFF70EFCC0B2854293 +:10A1E00004D0FF201349A83008F06BFC0420C043C2 +:10A1F000FFF702FCC5B21920FFF7FEFBC0B2854293 +:10A2000004D0FF200B49A93008F05BFC08484470DB +:10A2100006481B3007F03FFA05490020891C0870EA +:10A2200002498875FFF787FF70BD000050180020B5 +:10A23000700000200C9E0000142D0100220300007D +:10A24000F74840787047F649891E08707047F3B5A3 +:10A2500081B006F0E9F9F349884200D20846FF30A0 +:10A260009930EF4D87B22878002801D00C20FEBD30 +:10A27000ED4806F08CF9ED4CA076E9490320087012 +:10A2800000268D1DAE70A07E002804D19720E849DD +:10A29000800008F016FC0298012827D0E5490198B3 +:10A2A00048436860012028700146684605F028FC94 +:10A2B00068460078E049000208F0E0FA0D4606F032 +:10A2C000D5F9791906F075FC6060DC48A0600320C0 +:10A2D0002070022060702673A07ED449FFF7B0FB87 +:10A2E000CF48A682072141700020FEBD06F0BEF9CE +:10A2F000394606F05EFC6060D148A0602E700120F7 +:10A300006870E4E7704770B5C5490A78002A01D043 +:10A310000C2089E702220A70C14CC44DA41E1C35D2 +:10A320006060287E002804D0C248C1494E3008F041 +:10A33000C8FB207800234100C248425A616820319E +:10A34000497F4900405A101881B21A461846FFF753 +:10A35000BEFB002804D0B748B549503008F0B1FB27 +:10A36000002068610121E8602976B049888262682E +:10A370005188491E51802887A88655E770B5A8489E +:10A380000124801D4078A94D002813D028461C3098 +:10A390008168AD48814202D8AA7D032A00D10024F9 +:10A3A000814207D9A87D032801D0012000E00020C8 +:10A3B000FFF72FF9A87D032800D10024204633E7BA +:10A3C0009A481C300178491C0170026B81689142E7 +:10A3D00004D8007E012801D001207047002070477A +:10A3E0000020704770B5914C1C34207E032849D161 +:10A3F0000021204620308175894DAD1E68684030AF +:10A40000007C00283ED106F031F988490A690146EE +:10A41000104607F085F8002834DD00F082F96968FD +:10A42000401C4A888018A0860889A28E904229D9AB +:10A430004888088140318A8A498A511A491E081879 +:10A4400086B21AE0287841007E48425A6968203175 +:10A45000497F4900405A1018A28E81B2207E012304 +:10A46000FFF735FB00280DD001280CD0022809D0B9 +:10A470006C486F49C43808F024FBA08E301A00B233 +:10A480000028DFDAD0E6A08E401CA086F5E7F8B5FC +:10A49000664C634F00251C34BF1E012819D00720CD +:10A4A000B91C487006F034F8604E304675761B30A3 +:10A4B00007F011F97878F8F7A5F8B5827868314691 +:10A4C0004088208701203C318875002000F003F986 +:10A4D000F8BD267E52495B48891E0A7853004A68B7 +:10A4E00011462031032E18D0267E022E21D0267E42 +:10A4F000012ED7D1497FC35A4900405A12891818F2 +:10A5000081B200230120FFF7E2FA0028CAD04548B3 +:10A510004749213808F0D5FAC4E76561E560497F0D +:10A52000C35A4900405A1289181881B200230320E7 +:10A53000E9E75626B65A6661497FC35A4900405A30 +:10A540001289181881B200230220FFF7C0FA0121F6 +:10A550002176DAE7F8B5324E0021B61D7078334C1B +:10A560000D46002801D075701AE03078002809D017 +:10A570000121684605F0C4FA684600782E490002B9 +:10A5800008F07CF970684118606806F012FB6060A2 +:10A59000257302206070607E2449FFF751FAA5827E +:10A5A00005F0B6FF214865761B3007F094F81C488B +:10A5B000801E4078F8F726F8002000F08CF8F8BDEF +:10A5C00010B5030008F082FB060A0E0406130916F4 +:10A5D000012000E0002000F037F910BD0120FFF756 +:10A5E00056FF10BD114903201C31087610BD00F044 +:10A5F0003DF910BD0B480E498E3008F062FA10BDCF +:10A6000070B50A4D002821D0054EB61D012828D06E +:10A61000022837D003480649AD3008F052FA03E665 +:10A6200072000020F6050000E99F0000501800208D +:10A630000C9E00007102000010270000F82A0000A4 +:10A64000B7891300142D01002E841300FFF782FF39 +:10A65000A97D9448002901D01F2100E00721417005 +:10A66000E2E5002490487470047600F046F8032078 +:10A67000F7F7C7F805F04CFF8B486C76401E07F0E3 +:10A680002AF8D1E5FFF766FF0120B07000F035F839 +:10A690000420F7F7B6F8C7E582490978022907D1FF +:10A6A00081490A78002A03D148600A6B10180863B0 +:10A6B000704710B57C4A00290BD0012906D0022929 +:10A6C00006D07A497A4808F0FCF910BD401E00E037 +:10A6D000401F906010BD744910B51C39C875002822 +:10A6E00005D0F5F781FE0220F5F778FE10BDF5F7ED +:10A6F0007CFE0120F5F77AFE10BD6A48002101704A +:10A7000001214170704710B504460020002907D090 +:10A71000684808F0B3F80146204608F0AFF8401C3E +:10A7200010BD10B500280AD05E49634A891E4968E9 +:10A73000C98B51435C4A126A891A08F09FF810BD10 +:10A7400010B558480078030008F0C0FA0414140348 +:10A750000A1401F035F900280BD05449574806E097 +:10A76000FEF737FF002804D054485049001D08F078 +:10A77000A8F910BD51484D490B30F8E710B505F068 +:10A7800053FF4849891E4968CA8B4B494A43464989 +:10A790000B6AD21AD33AFF2332330A63984202D2A9 +:10A7A0004748101802E0101A464A801808634648C5 +:10A7B0000A6B824200D81046086310BDF0B53A4CCF +:10A7C000032685B01C3CA67520461B30009001E096 +:10A7D00020BF009806F067FF0028F9D10025A57575 +:10A7E00030480178032903D0007800281DD021E0EB +:10A7F000A07E002803D12D49344808F062F9A77ED5 +:10A80000684606710221417105F030FF0290FF2079 +:10A81000F5300390012168460174A57601A93846F8 +:10A8200006F070FAFFF769FF0CE01E48801D817882 +:10A83000012906D00024009806F04DFF204605B0FF +:10A84000F0BD85700124F6E710B5002803D0002084 +:10A85000FFF71DFE04E01348801E4078F7F7D2FE94 +:10A86000FFF74BFF0020F6F7CCFF10BD10B50E4AE6 +:10A87000114B106AD0600B48801E4068C18B594351 +:10A8800011610146E0314B8843870C7839231C5411 +:10A890008B88C383CB880384098941840220107686 +:10A8A00010BD0000720000206C1800200C9E0000FB +:10A8B000C306000040420F00E20400004303000012 +:10A8C000A5F8FFFFD6F9FFFF1612000029020000CD +:10A8D000F8B5FEF7DEFA0646FEF74CFBF94D0746E3 +:10A8E0006879F94C002809D0012823D0022826D005 +:10A8F00003282ED0FF20F5A1BC3033E0F2481430FD +:10A90000FEF724FB002801D003200FE0EE481430AE +:10A91000FEF788FA002804D020696030007A002809 +:10A9200006D0E9481430FEF7E4FA012068711BE014 +:10A930000220FBE7E4481430FEF7DBFA14E0E248BB +:10A940001430FEF76FFA00280ED1FF20DFA1AE30E1 +:10A9500008E0DD481430FEF7F9FA002804D1FF20A2 +:10A96000DAA1B63008F0ADF86169F7220878104036 +:10A970000870AA79D207120F1043FB22104008700A +:10A98000EA79D207520F104308706B79EF22022B3D +:10A9900004D0012B07D0032B07D00CE0012E06D8E2 +:10A9A000002F04D007E07F1E3E43002E03D010404E +:10A9B0001022104300E010400870287C002811D0BD +:10A9C000687901280ED0BF484A38FDF7F5F8BD492F +:10A9D00020694A3978306269FDF757FB0020FDF79E +:10A9E00063FB04E00846FDF7E7F8FDF780FB6069CC +:10A9F0000078C00606D4A0690078C00602D4E079C9 +:10AA0000002802D0A079002801D0012000E0032016 +:10AA1000FCF7B6FF0320207001202071F8BDAA4882 +:10AA200010B51830FEF7B9FAA74C002802D0002064 +:10AA3000607004E001206070A2484A38A061A1481B +:10AA4000407C002802D06078002805D0A069FDF77E +:10AA5000B3F8FDF74CFB10BD9A484A38FDF7ACF847 +:10AA6000984A20694A3AA030A169FDF70EFB0120FF +:10AA7000FDF71AFB10BD10B5934900220869302379 +:10AA80008276C27601221A544030007C002803D01E +:10AA90000A700021022001E000210320FFF790FD51 +:10AAA00010BD70B5884C6079C20620460169084621 +:10AAB0004030002A01DA002202E0C28A4B89D21813 +:10AAC0000B46C282C0331A7E002A03D0428B4D89C6 +:10AAD00052194283627A002A03D03D2001F0A3F884 +:10AAE00052E08A7E032A4FD0227A002A13D05007E0 +:10AAF00001D4D00601D51E2036E0100701D53D2037 +:10AB000032E0D00705D1900703D470A1734807F055 +:10AB1000D8FF2A2028E060310978002905D0818BF0 +:10AB20004A1C8283C28B91420FD2597F062902D0E0 +:10AB3000197F062905D1018B4A1C0283C28B9142E1 +:10AB400003D2428B818A8A4201D322200CE0827B8D +:10AB5000408A002A0FD006280FD35A48C07B01280C +:10AB600001D03E2000E0082001F05DF82069807EE1 +:10AB7000032809D001E08842F5D20120207000218D +:10AB80000846FFF71DFD70BDFFF775FF70BD10B5DE +:10AB90004C494D48CA7B002A2BD0012A29D0022AD1 +:10ABA00027D0032A04D049A14D4807F08AFF10BDE1 +:10ABB000897B02290FD007291BD00069014640314B +:10ABC0008A8A498A511A891E89B2032900D303212E +:10ABD000028951180BE00069014640314A8A032A74 +:10ABE00001D2018903E04288898A5118491C818079 +:10ABF00010BD0069F5E700B5030008F067F806042A +:10AC0000070B0F12121700290ED00FE0491E022960 +:10AC10000AD90BE0491F012906D907E0072903D00B +:10AC200004E00A390C2901D8012000BD002000BD34 +:10AC3000FEB5054624481430FEF769F9002804D112 +:10AC40003D2022A1400107F03CFF1F4C6069FDF749 +:10AC5000E5FC03216069FDF70FFD6069EF220178D3 +:10AC6000114001702946FDF74BFD002601272B00FE +:10AC700008F02CF80E5D5D085D1D6161155D4D5D90 +:10AC8000613D385D20697121095C002901D00621F0 +:10AC900001E0C030417E6069FDF7FDFD4BE0A06939 +:10ACA000FDF758FD01466069FDF766FE43E0216946 +:10ACB0006069D031FDF729FE216960699531FDF7A2 +:10ACC00032FE38E006190020800000207372635CB9 +:10ACD0006C6C5F736C6176652E630000610200002E +:10ACE0006F08000006216069FDF742FE23E0E0687E +:10ACF00001786069FDF726FEE06881886069FDF7EC +:10AD000023FEE06841886069FDF722FE13E00096AB +:10AD1000019620696030007C002803D069460878DD +:10AD20003843087069466069FDF738FE03E0FA4968 +:10AD3000FA4807F0C6FEFEF7F4F8002804D1F748F9 +:10AD4000F549801D07F0BDFE0C2D07D0072D04D05E +:10AD500020695C210E5260300770FEBD20694030D2 +:10AD60000683FEBDF0B5EE4CDC2021698DB0405C61 +:10AD7000042809D0052834D16031487A002829D028 +:10AD800001204874022026E01022EA31684600F0D3 +:10AD90007AFF21691022C83104A800F074FF6846C8 +:10ADA00005F007F8216908AA6CCA0F46CB67783707 +:10ADB0008A670846FE608030BD60074620376CC752 +:10ADC0000023036343630120A0310876D54948740A +:10ADD000052000E00D20FFF72BFF21690020C03186 +:10ADE00008770DB0F0BDF8B5CD481430FEF78FF8F8 +:10ADF000002842D0CA4C207A00283ED12069002584 +:10AE0000C030007EC74E00280BD0B17B0120FFF779 +:10AE1000F2FE002805D1B17B0420FFF7ECFE0028EC +:10AE200006D020690127C030407F062807D00CE0FB +:10AE300020695A210D526030457402202FE0B17B09 +:10AE40000420FFF7D8FE002810D0B07B030007F0E5 +:10AE50003DFF173F3F3F3F1E3F3F3F3D3F203F3FAE +:10AE60003F292C3F3F3F3F3F3F2F3F0020696A2152 +:10AE7000095CC90702D0C0304577F8BD0C20FFF748 +:10AE8000D7FE20696030817A39438172F8BD07208E +:10AE900005E0FEF7ACF80028F8D075740B20FFF73A +:10AEA000C7FEF8BD00F0FEFEF8BDFFF75BFFF8BD82 +:10AEB0002069002180308160C160057437740620EC +:10AEC000FFF7B6FE206960300570F8BD0920E6E79F +:10AED00000F0B2FEF8BD70B5924DA87B072831D1C5 +:10AEE0008F4CDE2220694188125A491C914229D197 +:10AEF000217A002926D10146E0318B88C28B93420A +:10AF000007D1CA88068CB24203D10A89468CB24264 +:10AF10000AD0844A8689283A9680D380CB881381C8 +:10AF2000098951810121117001221146FDF784FD2B +:10AF300000210420FFF744FB21690020C03148773D +:10AF4000A873E87370BD70B5764CA07B162803D04B +:10AF50007149754807F0B5FD7148002102697148D3 +:10AF60006032117211702838067C0B250123002EE7 +:10AF700006D0027B002A12D14573817303730EE061 +:10AF8000567A002E06D051722288828281740C2259 +:10AF9000027404E022888282817483750574A1732F +:10AFA00070BDF8B55E4DA879800723D5287A0028B2 +:10AFB00020D15C4C0120A17BFFF71DFE002819D198 +:10AFC00068690026C0780127030007F07FFE0E594C +:10AFD0005908592E3B4F0A591459205245590220FD +:10AFE00021E0A07B042804D04F484B49333807F0B8 +:10AFF00068FDA673F8BDA07B082804D04A484649DE +:10B000002D3807F05EFD286960300670F1E7A07BFF +:10B010000A2804D015204049800107F052FD286914 +:10B02000603007720B20A073F8BDA07B0E2804D0FF +:10B030003D4839491F3807F044FD286960300772E0 +:10B040000F20F0E7A07B0F2804D03748324918388A +:10B0500007F037FD1120E6E7A07B0F2804D0324827 +:10B060002D49123807F02DFD1320DCE7FFF76BFFA9 +:10B07000F8BD2869C030417F0629F9D14677F8BD6F +:10B0800029482549813007F01CFDF8BD10B5254C35 +:10B090000020A17BFFF7AFFD002804D1204801224A +:10B0A000017A114301720420A07310BD10B51C4C2D +:10B0B000DD212069095C002903D0217A0122114396 +:10B0C00021726030807A800715D4A069FDF744FCB6 +:10B0D00021696031C872A069FDF740FC21696031C7 +:10B0E0008881A069FDF73FFC216902226031C88197 +:10B0F000887A10438872206900220146C0310B7F94 +:10B10000062B13D06A231B5CDB0703D106234B7786 +:10B110004030028310BD0000CCAC0000E40700000A +:10B120008000002006190020660500000A77F1E77C +:10B13000F8B5FE48817B0020FFF75DFDFC4C012641 +:10B14000002807D120696030407A002802D1207A97 +:10B1500030432072216900255C204552602046540E +:10B16000C831A069FDF7B9FB2169A0699131FDF7EC +:10B17000C3FB2169042208469131B93007F004FB72 +:10B18000EA482838017C0827002906D0017B0029DD +:10B1900012D14773857306730EE0216905468989CC +:10B1A0004182E249A0691439FDF77FFBDF49A069BC +:10B1B0000C39FDF787FB2F74DC480E218173F8BD35 +:10B1C00070B5DA4D0020A97BFFF715FDD84C00289B +:10B1D00003D1207A012108432072A069FDF721FBE9 +:10B1E00000280ED0A069FDF717FB2169DE2250521E +:10B1F000498800F0A2FD002806D0282000F013FDA9 +:10B2000070BDFFF743FF70BDA069FDF7FFFA21692C +:10B21000E0310870A069FDF7F2FA2169E031488059 +:10B22000A069FDF7D1FA2169E0318880A069FDF7B6 +:10B23000D4FA2169E031C880A069FDF7D7FA216905 +:10B24000E03108810720A87370BDF8B5B84CA0792B +:10B25000C0076ED0207A00286BD1B44D0120A97BA5 +:10B26000FFF7C9FC002853D1A0690027C17802224A +:10B2700001260B0007F02AFD0D161308354A4A383F +:10B280004C474A1929444A00FDF707FB2169DA2295 +:10B290005054AE735C20475260310E7038E000F0BD +:10B2A00057FD35E0FFF78CFF32E0A97B0020FFF768 +:10B2B000A2FC002802D1207A3043207220695C2150 +:10B2C0000F52603006700A2018E0A87B0B2802D0CD +:10B2D000207A104320722F742069603046720C204F +:10B2E0000CE0FFF725FF13E0A87B112802D0207A9D +:10B2F000104320722069603007701620A87307E0A1 +:10B30000FFF7D4FE04E000F0F0FC01E0FFF7BEFE22 +:10B31000FDF759FE002803D18649874807F0D1FB85 +:10B32000206900238030016B426B491C5A41426303 +:10B330000163F8BDF8B57D4F787C002802D1387CD8 +:10B34000002801D0FCF7D3FEFCF760FCFCF754FCAE +:10B350000020FCF715FBFCF79CFBFCF75CFCFCF702 +:10B36000DCFBFCF724FCF87B01260025704C002850 +:10B370000FD16079C10705D00220F87320694030F1 +:10B38000857302E0800717D5FE7300210120FFF7C7 +:10B3900017F9F87B012802D0022808D00CE0607968 +:10B3A000C00709D00220F8732069403085736079A6 +:10B3B000000701D50320F87300F0EEFCFFF713FD42 +:10B3C0002079002801D03D8102E03889401C388175 +:10B3D0006079C007206904D072210D544030458245 +:10B3E00003E04030418A491C4182E079002806D0C0 +:10B3F00021696031887C022806D8401C8874206945 +:10B400006030807C022804D93D817D8120696030D4 +:10B410008574B97B0020FFF7EEFB002802D1B87BD2 +:10B4200006284BD120690146C0310A7F062A45D043 +:10B43000497F062942D03D49C97B03293ED160306E +:10B44000807C00283AD1FDF71BFD002836D0FDF79F +:10B4500091FD002832D02169C88801282ED90A46DA +:10B460004032D673908A578A831E9F4201DB0120A7 +:10B4700002E0C01B401E80B22C4B0F8C1B89BB42CC +:10B4800001D3012302E0FB1A5B1C9BB2984200D956 +:10B490001846012800D1D5732A22525C002A11D007 +:10B4A000224A898D52898A4201D3012102E0891AF8 +:10B4B000491C89B2884205D9084603E02169012068 +:10B4C0004031CD7321694A8810180881FFF75FFB6E +:10B4D0002069122215490C3007F056F9FFF7E1FAFE +:10B4E000FEF77EFF002808D010482838817F002909 +:10B4F00003D121698989018486770D481830FDF7C9 +:10B50000AAFD00280FD0A06900788007800F0128CD +:10B5100009D0022807D0FDF7BEFD002803D1054958 +:10B52000064807F0CEFA2069403009E006190020ED +:10B5300080000020CCAC0000DF040000720300009B +:10B540000574F8BD70B5FE4C607900283DD0FD4D06 +:10B55000022811D1FDF775FC002804D17320FA49A7 +:10B56000000107F0AEFA2A69002380329068D168A2 +:10B57000401C5941D16090600026667120790128F5 +:10B5800004D12671A87910210843A871E078012818 +:10B5900016D1E670A87908210843A871FDF7E0FCF0 +:10B5A000002804D1E920E849C00007F08AFA296997 +:10B5B000002380318A68C868521C58418A60C8607C +:10B5C000A079012802D00120A07170BDA67170BDC4 +:10B5D000F8B5DC4CDA4DA269002710780421830706 +:10B5E0009B0FE8790126012B11D0022B0FD0032BE2 +:10B5F00001D0207A2FE06178002905D1AE70A179C1 +:10B600003143A17122E0EF71F8BDEE71F8BD5278BF +:10B61000D3061BD060780028F8D1D006C00E1B28B6 +:10B6200017D8607908436071FDF7CDFC002803D17D +:10B63000C549C64807F045FA206900238030026BEF +:10B64000416B521C594102634163E8790128DCD106 +:10B65000D9E7207A102108432072F8BD70B5B84DA3 +:10B660000446283D287B002600280AD0002976D1F0 +:10B67000667010202070687BA070A87BE0702E732D +:10B680006DE02878002810D0002968D16670072066 +:10B69000207005E02E700A22A91CA01C07F074F887 +:10B6A00028780028F6D1A67059E0287C002839D0E7 +:10B6B000002954D1297CA3480B0007F007FB0D2E6D +:10B6C0002E2E2E2E2E2E2E112E2E22082E0066709D +:10B6D0000C212170A97CA17000698089A0801AE0EA +:10B6E00008216670217000690A468089944960804B +:10B6F0001439201D07F048F891484A38C08FA081BE +:10B7000009E066700B212170A97CA1700069808915 +:10B71000A080A87DA0712E7421E08B498C4807F091 +:10B72000D0F91CE0AA7F86480838002A08D00029F2 +:10B7300015D166701121217000886080AE770EE00F +:10B740007F4A083A9378002B0BD0002907D1667006 +:10B750001221217081886180C088A08096700120AC +:10B7600070BD002070BD77480078012801D00C2002 +:10B770007047734900202839087008730874887767 +:10B78000704770B56F4C064620780D46002804D0EF +:10B790006F486D493F3007F094F90120E660E07290 +:10B7A000E5612070FFF7DFFF002804D09320664991 +:10B7B000000107F086F970BDF8B5624C21780129C7 +:10B7C00002D12178012901D00C20F8BD014605469F +:10B7D000206112220C315A4806F0D6FF012740356D +:10B7E0002F74574D2888FDF712FB002827D0288892 +:10B7F000FDF7C8FB002822D02888FDF77DFB002834 +:10B800001DD02888FDF797FB002818D0FCF7C3F956 +:10B8100020690026C088002824D04A481430FDF74B +:10B8200076FB00281ED02069C030007E002819D089 +:10B83000A97B0120FFF7DFF9002802D012E01220D7 +:10B84000F8BDA97B0420FFF7D6F900280AD12169A9 +:10B850005A20465260314E740220FFF7E9F9206900 +:10B860004030C67320694189491E8AB229898918E6 +:10B870002981297B002902D06E812E7302E069891B +:10B8800089186981014640314B8A9B184B82C388D5 +:10B89000012B01D85B1CC380002A01D072221654F0 +:10B8A000AA7B032A16D0C97B002915D02989008CD0 +:10B8B000814211D2FDF7E4FA00280DD020692A2137 +:10B8C000095C00290BD06989808D814207D3A6705D +:10B8D000E7700CE0A7700AE0A670E67007E06889E0 +:10B8E0000021401C6881A7700520FEF769FE2069D1 +:10B8F0004F210E54A178002930D12030807A0028C1 +:10B9000000D06E810120FBF71BFF20693630FCF769 +:10B91000F8F820693230FCF70EF8E169002008568B +:10B92000FBF7D5FF0120FCF733F9FBF78EFFFCF79F +:10B930002BF90120FCF76AF82069406E0AE000004C +:10B940000619002080000020CCAC00007B0700001E +:10B95000E7080000FCF733F9FFF761F8A87B05283A +:10B9600001D0062816D12069DE224188125A891A90 +:10B9700009B200290EDB01460522E0312430F4F73C +:10B9800023FC012202212069FDF756F82069C0300E +:10B990004677AE7320694189FDF7FDF82069403094 +:10B9A000407BFBF7D1FF6671E671A6712672A67225 +:10B9B0006672267102202070FCF7F9F80020F8BDAD +:10B9C00010B5FE4C2078022801D00C2010BDFCF7E9 +:10B9D000E2F8A078002802D0FFF7ACFC15E000F0F8 +:10B9E0001AF920692030807B012809D0FCF736F94C +:10B9F000FBF730FFF4F7F7FCE07A012803D004E00E +:10BA0000FCF734F9F4E707F05BF9002010BDEB49CF +:10BA1000C872704710B5E94C2078032803D0E84974 +:10BA2000E84807F04EF8E84801218278002A06D05D +:10BA3000002282700171A27904231A43A271626903 +:10BA40001378DB439B0707D1C378002B04D1C17067 +:10BA5000A07902210843A0711078C00606D4A0691D +:10BA60000078C00602D4E07900280CD06078002865 +:10BA700009D1A079002806D1FEF7A2FC002802D047 +:10BA8000207A002802D0FFF755FC03E0FEF7C7FF3D +:10BA900000F0C1F82078012806D0F4F7A4FCE07A81 +:10BAA000012801D1FCF772F910BD38B5C34C2069EB +:10BAB0002030807B012820D1A07A00281DD1684643 +:10BAC000FCF7DCF8002818D021692F20405C012801 +:10BAD00010D1BD4A0D236D460020D356285683420F +:10BAE00008D050738989283A918411462031887191 +:10BAF00001208870A07A401CA07238BD70B5AF4C90 +:10BB000006462078042804D0AE48AD49553006F0EA +:10BB1000D8FF607910210843AB4D6071002E47D0EB +:10BB2000FCF7FDFA61780126084300280ED1687CF5 +:10BB300000280BD0A0694178C90607D00078E979C0 +:10BB40000007C00F884201D1667247E0E078002804 +:10BB500009D0A0694178C90605D10078C00602D491 +:10BB6000FFF7A3FF3AE0FFF7A0FFA069A9790078EB +:10BB70004007C00F884205D0FFF7E4FC6079082138 +:10BB800008436071A069E97900780007C00F884216 +:10BB900001D1FFF71DFD6079304360710020E07135 +:10BBA000A079000702D5A87B022817D0207A13E0DD +:10BBB000022108436071E079401CC0B2E0710128A5 +:10BBC0000CD8687C00280CD07F484A384078C106E1 +:10BBD000C90E052905D2C006002802D0FFF7AAFB2E +:10BBE00001E0FEF775FE2078012806D0F4F7FBFB94 +:10BBF000E07A012801D1FCF7C9F870BD10B56F4893 +:10BC00000078042804D06F486D49B73006F059FF1A +:10BC1000FFF790FB10BD10B50720FBF7B1FE674999 +:10BC20000420087010BD6549312209695054664AE4 +:10BC3000032090738876704710B5604C2069C0303F +:10BC4000007F00281ED06048817B0020FEF7D3FFD4 +:10BC5000002817D02069DC21095C0B0007F036F8BA +:10BC6000071212121212120512006030807AC007F9 +:10BC700008D10C20FEF7DCFF206901226030817AB8 +:10BC80001143817210BD10B5002A0AD0002306E0CE +:10BC9000D41A6418203CE47FC4545B1CDBB293428A +:10BCA000F6D310BD10B503F02AFF0C281CD3434C6B +:10BCB00008212069D03003F023FF002806D0206936 +:10BCC0000421953003F01CFF002803D13C493F4874 +:10BCD00006F0F7FE2169042208469531BD3006F0D2 +:10BCE00053FD0420FEF7A4FF10BD7CB5364E0020A6 +:10BCF000B17BFEF780FF0125304C002802D1207A6D +:10BD0000284320726946A069FCF74EFE6846007819 +:10BD10000021C207D20F684602702069002A02D0B3 +:10BD20006030057401E06030017420695C221152BA +:10BD3000603005700820B0737CBD401A244900B201 +:10BD4000884201DC002801DC012070470020704798 +:10BD500070B51D4D0020A97BFEF74DFF174C002844 +:10BD600003D1207A012108432072A069FCF78EFDDF +:10BD70002169DE2250524988FFF7DFFF002803D0F7 +:10BD80002820FFF750FF70BD2169A069E031FCF762 +:10BD900071FD0520A87370BD70B500F054F8074C14 +:10BDA000094D6079400716D5A97B0520FEF723FFD2 +:10BDB000002810D0207A082108430BE080000020E2 +:10BDC000CCAC00001D0A000006190020640600002B +:10BDD000FE7F00002072FFF738FA00F012F8FFF73C +:10BDE000E0F8A079C00609D5A87B030006F06EFF35 +:10BDF00006060606060604060620A873FFF76BF87B +:10BE000070BD10B525488179490714D5017A0029FC +:10BE100011D12349897B0B0006F058FF080D050D51 +:10BE20000D0D0E0D100D0069002260210A54C03066 +:10BE3000807EFFF7F8FE10BD012100E002210069BD +:10BE4000C030417710BD10B51448817909071DD560 +:10BE5000017A00291AD1124A947B230006F036FF9A +:10BE60001416160B1616161616161616161616167F +:10BE7000161616161716006960300170407C0028EF +:10BE800001D0062000E01620FFF7CDFE10BD0069AE +:10BE9000603001720170917310BD000080000020BD +:10BEA0000619002010B5031D03600020521E04E097 +:10BEB0005C181C60401C2346C0B29042F8DB002096 +:10BEC000186010BD01460A680020002A02D0104602 +:10BED00012680A60704702680A60016070470000DB +:10BEE00000B51A2822D00ADC030006F0EFFE0D117F +:10BEF0001F131F1F191915171F1F1F1B1F002A288B +:10BF000014DD3A38030006F0E1FE030F11091100B9 +:10BF1000002000BD1E4800BD042000BD0D2000BD56 +:10BF20000F2000BD082000BD112000BD032000BD72 +:10BF300010B50C46F5F7C8FB00281AD02046F4F7D8 +:10BF400061FE002812D020780E280BD00F2809D0CF +:10BF5000022807D0032805D00EA1772006F0B1FDF6 +:10BF6000002010BDA078FFF7BBFF10BD09A17D2008 +:10BF7000F4E708A18320F1E710B5F4F7CBFD10BD7D +:10BF800010B5F4F73FFE10BD10B5F4F721FE10BD5B +:10BF9000013000007372635C686F73745F6863697B +:10BFA0002E630000F0B597B00021032004F0F7F8ED +:10BFB0000025FE4E022775807574347C12E0F0680F +:10BFC000E1004018818800290CD0858069460F70F7 +:10BFD0004D7001680291808869468880002168461A +:10BFE000F8F7F0FD2046641EE4B20028E7D117B050 +:10BFF000F0BDEE4BD86019741A80D3E7EB49EC4BD7 +:10C000004A8800201A4200D00120497C002901D032 +:10C01000082108437047F7B504460E460078012111 +:10C02000E34A8140521C114098B0E04A0091518887 +:10C03000E04B994205D0009B002B05D0DC4B194208 +:10C0400002D001201BB0F0BD009BD84A194351809B +:10C050001A9D002D11D00020287022781A980027F0 +:10C06000401C130006F032FE10EF0D152137555D10 +:10C070006A39AFAB85B3EEEDECEF0B28EDD00420C1 +:10C08000E0E702212970A1880170090A41700320AC +:10C0900093E004212970A1880170090A4170E188A8 +:10C0A0008170090AC170052087E006212970A188E6 +:10C0B0000170090A4170E1888170090AC170218903 +:10C0C0000171090A4171A289E81D216906F05CFB32 +:10C0D000A089C01D71E0082129702178082901D1AB +:10C0E00010212970A1880170090A4170E1888170CE +:10C0F000090AC1700520308020466A1D01A9083058 +:10C1000003F047FB00287DD1694630880979401843 +:10C1100053E00A212970A1880170090A41700320A7 +:10C120000AE00C212970A1880170090A4170E18898 +:10C130008170090AC170052030809DE0A088844686 +:10C140004000401C81B2308888425BD3052959D316 +:10C150000E202870002008E0A36842009B5A521964 +:10C1600053701B0A401C937080B26045F4D3318039 +:10C17000B6E08E49487C002873D0401E4874C868D9 +:10C1800021790822C9004518A9882868401808386C +:10C19000A16806F0F9FA0221684601710021417197 +:10C1A00028680390A98868460181002101A8F8F752 +:10C1B00009FD0020A880002E00D0308090E0297872 +:10C1C000802211432970297840221143297029784F +:10C1D0008909890112312970A1880170090A417009 +:10C1E000E288E81CA16806F0CFFAE088C01C308025 +:10C1F0002878410640D5C00972D0012168460171F6 +:10C20000002100E02BE041713188ED1C091D018106 +:10C210001A980390E08840190490001D634D059022 +:10C22000297C68460176002101A8F8F7CBFC074677 +:10C2300030880C303080022F06D0002F50D060E0C4 +:10C240003CE032E01CE059E06946097EE868CA003B +:10C2500080182A7C914202D28188002902D00427CA +:10C260004FE02EE0697C491C69741A99016031889D +:10C2700081800020308044E04C48A188C1802FE0BC +:10C2800029788909890116312970A1880170090A64 +:10C290004170E1888170090AC1702289681DE168D6 +:10C2A00006F072FA2089401D46E72878800980014F +:10C2B000183028702079687002207EE73B480A0415 +:10C2C00001D405271DE00289A3889A4201D00627E0 +:10C2D00017E01E222A70012249043280490C418055 +:10C2E000009800280DD0314D002228881146830087 +:10C2F000032003F0B2FE2078287107E00020308090 +:10C3000003272A48009942888A434280384699E6A2 +:10C31000F7B59AB002000C4606D0172A04D8234875 +:10C32000244B4088984202D107201DB0F0BD2378ED +:10C330005D0601D4DB0901D00820F6E700236D4635 +:10C340002B706B701D462378611C9F06931E1893FB +:10C35000531E19939BB2169302AB1793134BBF0E48 +:10C36000DE883B0006F0B2FC208511F15EF16BF136 +:10C37000A3F1C6F1F2F1FBF1EEF1EDF1ECF1F1F127 +:10C38000EBF1EAF1E9F1E8F185F1052A71D1042236 +:10C3900069460A7005490A7969460A71E178A37805 +:10C3A0000A021A436946CA80227905E0181900205A +:10C3B000FE710000FFFF00004A7061788906890E57 +:10C3C0000C2923D009DC891E0B0006F07FFC091321 +:10C3D00052155219521B521D520012291CD004DC56 +:10C3E0000E2915D01029D1D114E0162916D01829FC +:10C3F000CCD115E0800700E04007002839DA2AE1B7 +:10C400000007FAE7C006F8E78006F6E74006F4E71B +:10C410000006F2E7C005F0E7C004EEE78004ECE7B1 +:10C420004004EAE7800724D5032AAFD105206A46F5 +:10C430001070487809780002084390800BE14007AB +:10C44000F1D5062A15D31898617880B2012902D057 +:10C4500002299BD101E0022700E01027062269464D +:10C460000A7000228A8001AEA11C0236BA1C179203 +:10C4700018E0B6E04A780B7812021A433280801E28 +:10C48000891C1890B21C1691384603F05CF9169975 +:10C4900018986B469A88C919C01BB61D521C9A8001 +:10C4A000179A80B28242E5D900289CD1D3E00007D8 +:10C4B000B9D51998694682B2072008700020888093 +:10C4C000601C891D11E0437806781B0233430B8002 +:10C4D000C37886781B0233434B806E46121FB388A5 +:10C4E000001D091D5B1C92B2B380042AEBD2002A06 +:10C4F00077D1B0E0C00674D5022A72D3189808210B +:10C5000082B2684601700021C18063780371A01C6B +:10C5100017990EE04678077836023E430E80861C57 +:10C520004E606F46D21AFE88C0180831761C92B24F +:10C53000FE809342EED9DAE76FE076E065E051E005 +:10C5400046E01EE014E00AE000E0A0E0800648D5E6 +:10C5500009206A46107096801698D0800FE0400639 +:10C560003FD50A22684602708680169AC28006E08D +:10C57000000636D50B206A461070169890800291FE +:10C5800069E0C0052DD5022A7FD318980C2182B20C +:10C59000684601700021C18063780371A01C17995F +:10C5A00013E04678077836023E430E80C6788778D7 +:10C5B00036023E434E80061D4E606F46D21AFE88FC +:10C5C000C0180831761C92B2FE809342E9D98EE7FA +:10C5D000C0045AD5012A58D10D21684601708680C1 +:10C5E00039E052E0800450D5052A4ED30E23684628 +:10C5F00003708680C8788B78010219436846C18031 +:10C60000521F0281601D039025E040043DD5012AA0 +:10C610003BD10F20694608701DE0030435D44B78E8 +:10C620000E781B023343244E3381032A2DD31B2F54 +:10C6300027D011236E46337001261F4BF60330437B +:10C64000588048780B780102194368468180D21ED1 +:10C65000C280E01C029020788006800E1B280AD041 +:10C660001D2808D00021032003F099FD12484188BD +:10C67000C90BC903418068461C99F8F7A3FA2846FC +:10C6800053E610206B461870DBE70725F7E708250F +:10C69000F5E700B50022D243074997B04A80032846 +:10C6A00007D1032268460270097901710021F8F769 +:10C6B00089FA17B000BD000018190020FFB589B035 +:10C6C0000020019009981027FE4C1E4615460828A8 +:10C6D00006D0E06901F05EF8002809D03770BEE0AE +:10C6E000288809213843108013980227017016E02A +:10C6F000E169012088710521E269C9029180E1693F +:10C700008872E169F0480881E1690020887328880F +:10C7100020210843288011211398042701701398C1 +:10C720000225801C0290307806900A203070E5487F +:10C730001830049001F00DFA0020059020462C30AE +:10C7400003906DE00998102808D1022D06D00199B8 +:10C750000298A28D401A8270110AC170E08D0A9968 +:10C76000884202D901F0D5F806E0884204D1069843 +:10C77000002801D030701CE00298E18D0170090A98 +:10C78000417012980088401BC01B82B2FF20C01B62 +:10C79000904200D2024607A8009002980021C319D7 +:10C7A000E08D01F041FA3070002805D0C0B2832836 +:10C7B00058D0E08D20833EE00598002804D0206CFE +:10C7C00000790A282CD336E06846808BC119C9B29B +:10C7D0000191022D0DD01399019A4978914202D10D +:10C7E000228F824208D00191206C0178032908D061 +:10C7F00023E0084613994870206C0178042906D07C +:10C8000007E000790A2818D20120059008E0E18DA0 +:10C81000818002990198081802900198281885B221 +:10C820000399049801F098F9002804D1129800881F +:10C83000401BB84286DA022D0DD00998102806D187 +:10C8400002990198A28D081A8270110AC17012987B +:10C85000058000203070206C0078032802D0002072 +:10C860000DB0F0BD0220FBE7F8B5964A0026126D28 +:10C87000002A2ED0401F934D84B24035E88A2346CB +:10C880000833AF8AC318BB4222D88B784F781B027B +:10C8900010183B4303701B0A43700B79CF781A02C0 +:10C8A0003A438270120AC2700471220A427122460F +:10C8B000491D801D05F068FFE88AA41D001980B29B +:10C8C0008049E882096D002208180270427000E079 +:10C8D00009263046F8BD30B57A4B028840339B8A32 +:10C8E000934213D9774B1C6DA3185C781D782402F2 +:10C8F0002C430BD05C791D7924022C436404640C16 +:10C90000A41D1219028000200B6030BD822030BDB2 +:10C91000F0B585B0074600266846068155E00198C7 +:10C92000417802780D0215434179027908021043DB +:10C9300000044AD43D8003A8002301220090520243 +:10C940001946284601F070F9040044D1684601896F +:10C9500001820198417902790902114343780278F2 +:10C960001C021443AC421CD10A041AD44A0401210B +:10C97000520C89030A430096C1788078090201436A +:10C980000023204600F0C9FF040010D10199487926 +:10C990000A79000210430122D20310430871000AF1 +:10C9A000487101A904A8FFF796FF0400D1D00199AE +:10C9B00000964878097800020843694600238A896E +:10C9C000194600F0AAFF822C05D101A902A8FFF7A1 +:10C9D00082FF0400A3D06846068109E001994879E6 +:10C9E0000A79000210434004400C0871000A4871A3 +:10C9F00001A902A8FFF76FFF0028EFD0822C02D018 +:10CA0000204605B0F0BD0020FBE7F7B584B0144622 +:10CA10000646002700F079FF2A480025006D00280F +:10CA20002FD0059801282CD12046FFF771FF070071 +:10CA300027D1002E29D06846058118E00199487851 +:10CA40000978000208432080019B009558791979E4 +:10CA50000202D8780A4301029F78587839431F7838 +:10CA600000029B1D384300F058FF002805D101A9A2 +:10CA700002A8FFF730FF0028E0D0822800D1002074 +:10CA80000746002E01D00F48056500F042FF3846EA +:10CA900007B0F0BDF0B597B00021042003F07FFB94 +:10CAA000084F00243D467C8040356C73AC73287B76 +:10CAB000B96CC00008380E18B08800280DD00120CD +:10CAC000694603E02C190020012800000870306836 +:10CAD000019000216846F9F77AFBB4803C65AC828E +:10CAE000EC8217B0F0BDFE4B9864184640300173DD +:10CAF0001A803838D861CDE7F949002049880A07FB +:10CB000000D501200A06120F01D002221043CA05E7 +:10CB100001D5042210438A0501D51022104349058E +:10CB200001D520210843EE494031497B002901D03D +:10CB3000082108437047FFB5A7B00400289816469F +:10CB40001B9022D00178E6484D0642882292024688 +:10CB500040320092002D14DB8A06920E1E2A0ED05F +:10CB6000229A5205520E10D13288172A0DD3009AFC +:10CB7000927B002A09D1DB4D229AAA4205D0CA092C +:10CB800006D08A06920E122A02D003202BB0F0BDE6 +:10CB9000D348826C0098007B2590C000083810189C +:10CBA0001F9048060CD40098407B002808D00099BC +:10CBB00088731F99289808601F9884800220E5E7F1 +:10CBC000002718A90F7069460F72C54902AA0A64A6 +:10CBD000309A4A6410A90F850F861B981D4600786D +:10CBE00020908106BE4B601F24901A462C32219261 +:10CBF0002898DA691833890E1E93401C0B0006F042 +:10CC000065F81FFDFD11FD1AFD90FDFCFDFBFDFA11 +:10CC1000FDF9FDFCFDF8FDFDFDF7FDF6FDFDFDFD5B +:10CC2000FDF5FD00032C7BD10320287017226A70CC +:10CC30000022AA70E0E2052CF5D1417802780902C1 +:10CC40001143A74B10AA19831185C278807812026C +:10CC500002435A8300297DD091427BD80021184697 +:10CC600081720181491E01841E9800F072FF052027 +:10CC70002870A81C1D900220009021991E9800F099 +:10CC80006BFF002803D047E018A90870F0E2944831 +:10CC90002030807C012803D002206870102002E040 +:10CCA00001206870022022908D48303023900022AD +:10CCB00020A9239802F06DFD00282AD120A8007831 +:10CCC0002299814225D132880099801C511A8142D3 +:10CCD0001FDB83481D99C08D0870000A48701D989D +:10CCE00020A9801C1D9000981D9A801C00902398FC +:10CCF00002F04FFD20A909781D9840181D9000985A +:10CD0000401880B2009021991E9800F025FF00285D +:10CD1000CDD0009802288DD10A2018A908706CE2A5 +:10CD20006DE0072C6BD341780378090219436C4BF3 +:10CD30008446198310AB1985C37880781B02184389 +:10CD4000674B0029588305D0814203D8012118463A +:10CD5000817200E0A4E061464B7909791B020B4324 +:10CD6000038100218173104600F014FD00280FD1CB +:10CD70005B480121C26991710522C369D2029A8080 +:10CD8000C2699172C26958491181C06900218173D9 +:10CD90005349E01F08841B98C01D48621E9800F08C +:10CDA000D8FE07202870681C009001201D904C4878 +:10CDB0000021C18530E01D98012815D04848C1697F +:10CDC000897901292FD000981038C17B807B090216 +:10CDD000014300980170090A41700098801C00907E +:10CDE0001D98801C80B21D903D4809E013E2BEE111 +:10CDF0007AE1D8E00DE2A0E080E03BE01EE2B6E0A0 +:10CE0000C18D00980170090A41700098801C009043 +:10CE10001D98801C80B21D9021991E9800F09CFEE8 +:10CE2000002802D006E0818DD3E731881D98081ACA +:10CE30000428C0DA1D98012800D16DE72848C1698F +:10CE40008979012903D0828D26498A4205D1818DB5 +:10CE500000980170090A417009E000981038C17B00 +:10CE6000827B0802009910430870000A48701D98E0 +:10CE7000801CC1E1072C01D0152C78D141780378B2 +:10CE800009021943164B198310AB1985C3788078B2 +:10CE90001B02034312480029438301D0994201D960 +:10CEA0000120F1E60E480121817200210181817388 +:10CEB000052C07D024981B99C0B2491D02F043FCF1 +:10CEC0000028BAD100200649C04308841B98009668 +:10CED0000195007818AB8006800E1CAA002105E0A1 +:10CEE0002C190020FFFF000001280000FFF7E6FBDF +:10CEF0000746FE4810A9008B08857EE1032CBCD1B3 +:10CF0000402210A90A86417802780802F7491043A6 +:10CF1000088310A9088520A9009131886B1C491E3F +:10CF20008AB2002100F080FE18A90870002830D1D4 +:10CF30000B20287020A8008833E0052C9DD180218B +:10CF400010AB1986014640780B780202E7481A4375 +:10CF50000283CB7889781B021943E44B104619846D +:10CF600010AB1A85E24A914202D307208CE697E083 +:10CF70003F23DE4A9B021943118421AA0092328882 +:10CF80006B1C521E92B200F04FFE18A908700028C8 +:10CF900003D08328B1D102272FE10D20287020A8CB +:10CFA0008088401C28E120990C22C9095143C91CE2 +:10CFB0001E91A14204D92098400671D500201BE1A2 +:10CFC000417800780902014310A801851B98007878 +:10CFD00042062898C01C1D90002A62DA05206A4685 +:10CFE00010721B980078C00944D00822684602726B +:10CFF0008181A01A87B268468782289806901E9879 +:10D00000201A81B26846C1811D980490401805F02D +:10D010001CFC079006982599C0190890491E08A87D +:10D02000017102A83099F9F7D2F807460021684645 +:10D030000172002F1BD0022F18D1009808A9007B85 +:10D040000979401E884210DDA848289A836CC900DF +:10D050005A50816C08A80079C000001D0C5200983D +:10D060000099407B401C4873C7E00527EAE0062092 +:10D0700069460872002000901E980021201A209016 +:10D0800082B21B9B10A8DB1C008D00F046FC014601 +:10D0900018A80170002268460272832903D003E0B9 +:10D0A00093E00720E4E702271B98007840060ED59E +:10D0B0008E484188C90506D510AA018B128D914270 +:10D0C00001D100214162002018A9087094E0FF21DD +:10D0D000013110A80186018D8448018320990184C3 +:10D0E0001D994162132085E0052C6ED341780378A9 +:10D0F0000A021A4310A90A859446092269460A724F +:10D100000021009101222499D20311438AB2C178EF +:10D11000807809021B9B01435B1D604600F0FDFB0C +:10D1200018A90870002269460A720122520210A949 +:10D130000A86832802D0002805D099E06B48098D23 +:10D14000018302277EE06948006D002807D0204651 +:10D150001B99FFF789FB18A9087000284DD12B46B1 +:10D16000324620461B9900F024FB074645E01B98F9 +:10D17000022C4078009064D1002801D0012860D1B1 +:10D180000A2168460172009901731AAA00200099C9 +:10D19000FFF73BFC0146684641730021817302A8FA +:10D1A0003099F9F714F80746002168460172012109 +:10D1B000890210A80186022F08D04C48006C8079A3 +:10D1C000002807D018A9087020E04BE047490098D4 +:10D1D000088337E0002F03D0812018A9087031E0C0 +:10D1E0001AAA01200099FFF710FC18A9087000285E +:10D1F00003D119202870012030806846007A002869 +:10D2000004D002A83099F8F7E2FF0746002F2BD090 +:10D2100018E0062038E522993448090711D5012C79 +:10D220000FD10B2269460A72C08888810021042030 +:10D2300002F0B5FF082010A90886BFE62098400636 +:10D2400010D50327294810AA4188128E1143418026 +:10D250005005400E04D01F99289808601F988480BC +:10D26000384693E404200FE518A8007800280ED073 +:10D27000012028701B980078687010A8008DA87095 +:10D28000000AE87018A80078287105203080174837 +:10D2900010AA4188128E91434180E1E7FFB506460E +:10D2A0009FB000201B903178012088401149124A1C +:10D2B000084010A908860D494988914203D00028EA +:10D2C00004D0080702D5012023B0F0BD219D00271E +:10D2D0002F7020983C46018810A8018418A8077177 +:10D2E00000F013FB6846077202A907E02C19002022 +:10D2F0000102000009F80000FFFF0000FA48016485 +:10D3000001464031826C1A91097BC90008395718CF +:10D3100022994164307801282AD0022809D00328B4 +:10D3200079D12878800980011D302870EE48B188B5 +:10D33000C1803078022804D12878800980011B3010 +:10D34000287001A8009010A8008CEB1CC01E82B2AF +:10D35000B088002100F068FC0028E1D1B188697034 +:10D36000090AA9706946888810A9C01C08842DE1A3 +:10D37000717918A801713079012802D00228CFD123 +:10D38000E6E0D9487F2340881B010246184010ABD5 +:10D390001886802840D006DC102810D020280ED017 +:10D3A00040280AD120E0FF38013859D0FF38013831 +:10D3B0006AD0FF38FF3802387ED0052491E0D006CD +:10D3C00001D5082000E010201B9004206946087257 +:10D3D0000020888118A800900195318919AB1CAAFA +:10D3E0001B98FFF76BF977E0BF4B3289188B8242AD +:10D3F0004FD10A221B92002973D101A9009110A9D3 +:10D40000098C6B1C491E8AB2002100F00DFC18A982 +:10D4100008710B2017E0F6E0B34B3289188B82427B +:10D4200037D10C221B9200295BD101A9009110A9D0 +:10D43000098C491E8AB21946098C6B1C00F0F4FB5A +:10D4400018A908710D2028706946888810A9401C09 +:10D450000884042069460872A348008B888140E054 +:10D46000A14A3389108B834213D112231B930029C5 +:10D4700037D1536A002B05D00091128C00F04DFA81 +:10D4800018A9087113205EE097483289038B9A42ED +:10D4900001D00424E7E016221B92026D002A09D174 +:10D4A000F268002A06D002651A98328A82821A9A95 +:10D4B0000020D082002900E02FE012D1B88839681E +:10D4C000FFF7D2F918A9087100280AD1B8882B46AD +:10D4D00018AA396800F06DF90446022818D0042C07 +:10D4E00016D0B88800280FD06846007A002804D0EB +:10D4F00002A82299F8F76BFE0446012069460872DB +:10D50000386803900020B880002C5FD0052C7BD0B9 +:10D510006846007A032873D0A5E018201B900029E4 +:10D5200005D071483189018300210165D9E76E4832 +:10D530000246017E18320120FFF767FA18A9087128 +:10D540000028CED119202870012010A90884C8E72E +:10D550001A98407B002856D0307AC0001358001D1E +:10D560000193105A1D9000291AD100F0D2F906201B +:10D5700069460872002000901D980F3882B2019809 +:10D580008178437808021843019B0021DB1C00F0DE +:10D59000C4F918A90871002269460A72832830D09C +:10D5A000002118A8017110A80184012168460172A8 +:10D5B000019803901A981A99407B401E48731A9854 +:10D5C000807B002802D01A99401E887310A8008E14 +:10D5D0007F21090102468A431DD04348002200886A +:10D5E00011468300042002F038FD3F483178017174 +:10D5F00010A94088098E08433B4948800FE003E0AA +:10D600002BE002242FE00524374810AA4188128E0F +:10D610009143418027E034494A8882434A806846E2 +:10D62000007A002805D03048416C02A8F8F7CFFDF9 +:10D63000044618A80079002815D01B9868700120AE +:10D6400028702948008BA870000AE87018A8007993 +:10D650002871052110A8018405E02348416C02A827 +:10D66000F8F7B5FD044600F054F91F48408840051E +:10D67000400E20D11A98807B00281CD1B888002841 +:10D6800019D0209910AA098811842299009139682B +:10D6900018AA219BFFF74FFA044602280BD001205D +:10D6A000694608723868039002A82299F8F78FFD3E +:10D6B00004460020B88010A8018C209801802046E4 +:10D6C00002E600B50022D243074997B04A800428F9 +:10D6D00007D1022268460270097901710021F8F72A +:10D6E00076FD17B000BD00002C19002010B5394C94 +:10D6F00003780022216C012B02D0022B44D126E0BA +:10D700000B78002B01D0042B03D10A71226C03216A +:10D710001170216C83880A79D200921D8B52216C82 +:10D720000A79D20008328918C2880A80216C0389DC +:10D730000A79D2000A328B524289206C0179C900E1 +:10D740000C314252216C0879401C087120E00A74A7 +:10D75000226C81889180216CC288CA80226C0189E8 +:10D760001181226C41895181216CC068C860616C53 +:10D77000206CF8F72CFD0146022807D0206C007CB5 +:10D78000002802D1002903D0812010BD832010BDC4 +:10D79000002010BD8178012909D100880521C90226 +:10D7A000884202D0491C884201D1002070470520E0 +:10D7B000704710B51488844201D2052010BD17248B +:10D7C0001C701080421E491C581C04F0DDFF002014 +:10D7D00010BD00002C19002010B50446FEF759FFBB +:10D7E0002046FFF76EFF10BD10B58B78002B11D0CF +:10D7F00082789A4207D10B88002B0BD003E0091DD9 +:10D800008B78002B08D08B789A42F8D103880C884B +:10D81000A342F4D1002010BD812010BD10B5002915 +:10D8200002D001290DD102E00088000501E0008846 +:10D830008004800F07D001281CD0022809D00328BB +:10D8400010D0812010BD002901D0032010BD02207E +:10D8500010BDF6F754F803280CD004280AD000288D +:10D8600006D009E0F6F74BF8042803D0022803D0CD +:10D87000052010BD002010BD0F2010BDF3B5C81C41 +:10D8800080080E46800081B0B04201D08620FEBDE7 +:10D89000FE4C354626600198A08000202081E08063 +:10D8A00014E0B807A978800D0843F94904F0E6FFB1 +:10D8B000E088401CE080B80607D42089401880B278 +:10D8C00020810199081A8019A8600C352F887807E3 +:10D8D000E7D40020A072FEBDEC480C22C18800896C +:10D8E0005143081880B2704770B51346E74A45188F +:10D8F0009488AC4201D2842070BD126810180A4688 +:10D90000194604F041FF002070BDE04901208872F3 +:10D910007047DE49002088727047FFB589B09704D0 +:10D920000E460546BF0C029200F017FA040021D003 +:10D93000002069460873D548807A012812D0012159 +:10D940002046FFF76BFF002815D12078400609D547 +:10D950000221684601730582218841828682C7823E +:10D960000C9806900298000407D500273E46012532 +:10D9700001970CE001200DB0F0BD2078A178800760 +:10D98000800D0843C249019004F078FF0D460298CB +:10D9900040040AD50198A84207D12088E178800583 +:10D9A000800F00020843B04201D3AE4201D90720E4 +:10D9B000E1E7B81980B20290A84201D90D20DAE758 +:10D9C0006846007B002804D003A8F8F7FCFB002879 +:10D9D000D1D10198A8420BD12088032109028843A4 +:10D9E00002998905890F0902084320800298E07096 +:10D9F0001298002800D007800C9800280CD02078BE +:10DA0000000609D4A0683A4680190C9904F0BCFEBF +:10DA100020881021884320800020ACE7FFB59B4D73 +:10DA200081B00E46E8882F680C21009048433C18CE +:10DA30009749039804F022FF0A462889E11B84468F +:10DA40000C314018318880B28B0601D5002300E0EC +:10DA500013461818AB8880B2834202D8842005B0E0 +:10DA6000F0BD0098894D401C80B2E88021800D995E +:10DA7000002900D00C600399A170E2702188039DF9 +:10DA80008908AD058900AD0F294303252D02A9435F +:10DA90009505AD0F2D0229430425294321800C99BA +:10DAA000002900D0088001998978A171019909881D +:10DAB000A1803178890601D50B9905E0734962444C +:10DAC00092B20A81991AC919A16000212173327892 +:10DAD000920601D50020C2E700910B9B0A9A049997 +:10DAE000FFF71BFFBBE710B5044600F036F900282E +:10DAF00006D06649641ECC8000210170084610BD26 +:10DB0000012010BD002803D0401E0880002070476F +:10DB10000120704710B55D490288CB889A4201D335 +:10DB2000822010BD0B680C21514359180B88CC780A +:10DB30009B059B0F1B02234341608C7904738C88E7 +:10DB40004481C3818968521C0161028002810020E6 +:10DB500010BD012101827047FEB505460020C0437B +:10DB6000088068680F468178684681706868018817 +:10DB70006846018000218171288A2C88A04200D348 +:10DB800004462C8234E0288A401C2882301D6968B3 +:10DB9000FFF72AFE002829D139883E48814201D169 +:10DBA000601E38806888A04227D33088F1788005CD +:10DBB000800F0002084302906946301DFFF714FEF3 +:10DBC000002813D12989334881421AD000213046D8 +:10DBD000FFF724FE002809D12A890298824205D144 +:10DBE000E968B06804F0A3FD00280AD0641CA4B260 +:10DBF000204600F0B2F80600C5D1641E2C828220B7 +:10DC0000FEBD7C80B079B871B088B880308838812A +:10DC100030788007810DB078014379810298B8810E +:10DC2000B06838610020FEBDFFB585B014460F46D0 +:10DC3000059800F092F8050037D01448BE05807AA8 +:10DC4000B60D012815D000212846FFF7E7FD002872 +:10DC500029D1287840060CD5012168460170059924 +:10DC600081802988C18006814481F8F7ACFA0028B8 +:10DC700019D12888AA788107890D11438005800F62 +:10DC8000EA7800021043BE4211D005E0841900205A +:10DC900001020000FFFF0000374A914207D3611ED6 +:10DCA000814204DD0B2009B0F0BD0120FBE7864274 +:10DCB00001D90720F7E7801B82B2A24200D9224691 +:10DCC0000E98002800D002800898002804D0A86888 +:10DCD0008119089804F058FD0020E4E770B5144657 +:10DCE0000D4600F03AF800280DD001882980002C5C +:10DCF0000DD0017880788907890D01431E48814243 +:10DD000003D2012002E0012070BD0020207000201D +:10DD100070BD70B516460D4600F01FF804000DD01A +:10DD20002D882580FF2E16D0A807A178800D0843E6 +:10DD3000114904F0A3FD002E06D101E0012070BDC1 +:10DD4000FF31FF31033189B2A170A8088000890535 +:10DD5000890F08432080002070BD0849CA8882428C +:10DD600007D3002805D00C22096850430C38081846 +:10DD70007047002070470000010200008419002055 +:10DD8000F0B585B00E4605460020694608707078EB +:10DD9000FE49C00003900C58FD4F002D0ED0022DFF +:10DDA00073D0002C72D02078801E030004F08EFF08 +:10DDB00009837F7F7F83797F77727F00002C03D177 +:10DDC000F4A16B2004F07DFE2078801E030004F097 +:10DDD0007DFF09065E5E5E19365E50545E00307847 +:10DDE000062803D0EBA1762004F06BFEB8687168BA +:10DDF000806A032204F0C8FC0120694608700028EC +:10DE000035D1CEE730780C2803D0E2A1812004F090 +:10DE100058FEE0680078002806D0B8687168C06BCA +:10DE2000102204F0B1FC28E0B8681021406B04F027 +:10DE300008FDB868C16A406B0A787168F1E730780C +:10DE40000D2803D0D3A1942004F03BFE04206946A2 +:10DE5000087071684878097800020843B9684A6A0E +:10DE60005178127809021143484069468880084673 +:10DE700008E0C8A1AF2004F024FE6846007800281E +:10DE80008FD06846F5F740FD8BE727E01CE0C1A185 +:10DE9000B420F0E7B8686169406CFEF71CF8A1692E +:10DEA00000E0E168B868406CFEF715F803E0B9A13E +:10DEB000E32004F006FEB8682146406CFEF70BF83C +:10DEC000B24A039900205050022D07D0002D05D0F2 +:10DED000012D03D0AFA1EF2004F0F3FD05B0F0BD9C +:10DEE00010B501780124012902D0022910D112E0D5 +:10DEF0004268A748002182600170A4486C38C1665E +:10DF0000016741678167928902214C3001F083F9F2 +:10DF10000024204610BDFF209EA11C3004F0D1FD3E +:10DF2000F7E7F0B505469EA103C997B01491139089 +:10DF3000002108A8017595482A781030944C049067 +:10DF40002078012605903746A068130004F0BEFE35 +:10DF50000CEE073098EFF5EBEAE9E8E8E7EE217020 +:10DF60000124FF2655360D4610A80570457001F0B6 +:10DF700063F90746012803D086A1304604F0A1FDCD +:10DF800010A93846FFF7FCFE2046641EE4B20028C4 +:10DF9000EAD10A20694608706846029501F02AFA1B +:10DFA000002803D0FF207BA15E3066E00026E6E279 +:10DFB000006B0078C0072ED06846077001F01AFA8F +:10DFC000002804D0FF2073A1713004F07AFDA0680E +:10DFD000406CFDF777FF050004D1FF206DA1743080 +:10DFE00004F06FFD08984078C1006848455006204D +:10DFF0002870A068016869600069A8606448C01C56 +:10E00000E860284601F0F6F9022804D0FF2061A15B +:10E010007E3004F056FDA068006B00784007C5D53F +:10E020006846077001F0E6F9002804D0FF2059A1E6 +:10E03000863004F046FDA068406CFDF743FF050004 +:10E0400004D1FF2053A1893004F03BFD08984078AB +:10E05000C1004E48455006202870A06801686960DC +:10E060000069A8604A48401DE860284601F0C2F9EE +:10E0700002289BD0FF2047A1933004F022FD95E7B2 +:10E08000A8680028684632D001712879012833D069 +:10E09000022804D0FF203FA1AD3004F012FD3B4820 +:10E0A00010221030A96804F06FFB38481030014688 +:10E0B000103148602078C1062DD5EF21084020702E +:10E0C000032069460870314810300290684601F01C +:10E0D000B3F80446022808D0002C06D0012C04D046 +:10E0E000FF202CA1BE3004F0ECFC69462AE1077148 +:10E0F000264820304160DDE7244A04986C3AD16715 +:10E1000041608160C1600621A86803F087FA1F4959 +:10E1100010310860C9E720210843207046E758E124 +:10E1200014E1D6E0A3E046E007E000E031E2FF20A2 +:10E1300018A1E73004F0C5FC21E2172269460A72F3 +:10E140000F7089788A08297992008907890F0A4314 +:10E1500069468A70FB210A4029794907C90F89005D +:10E160000A4369468A70EA888A80826C02A96846F6 +:10E1700001F082F9002804D0FF2006A1F73004F056 +:10E18000A0FC052108A8017568460DE0FC190020D7 +:10E19000A00000207372635C736D2E6300000000AA +:10E1A00004411A8800A48000017A0187A068002633 +:10E1B000806C0F90E7E16846077001F01BF90028BA +:10E1C00003D0FD49FD4804F07CFCA068406CFDF7DD +:10E1D00079FE060004D18320F749800004F071FC29 +:10E1E000A068406CFDF76EFE070004D1F348F249C9 +:10E1F000801D04F066FCF2488068406CFDF762FE0A +:10E20000040004D1ED48EC49093004F05AFC0898A8 +:10E210004078C100EB4846500A203070287A3071AF +:10E220006868E74DB060A868806C30611720307373 +:10E2300077613046B46101F0DDF80446022808D069 +:10E24000002C06D0012C04D01120DB49400104F041 +:10E2500038FC2046316AFFF793FD297805220A40F1 +:10E26000042A00D0A2E6FB22114029702AE0059979 +:10E270004908490021708A071CD5FD2211402170F0 +:10E280000F216A46117017211171806C0290684647 +:10E2900000F0D2FF0546022808D0002D06D0012D3F +:10E2A00004D0C648C4493A3004F00BFC69462846FD +:10E2B000FFF766FD2078052101400429D2D1FB211A +:10E2C00008402070072008A90875BD4880780876A6 +:10E2D0006CE66846077001F08DF8002804D0B74856 +:10E2E000B549543004F0EDFBA068406CFDF7EAFD41 +:10E2F000060004D11320B049400104F0E2FBA068FD +:10E30000406CFDF7DFFD070004D1AC48AA495A3044 +:10E3100004F0D7FB08984078C100AA48465007206F +:10E320003070A068406870606868F760B060304620 +:10E3300001F060F8040004D0A0489F49653004F063 +:10E34000C0FB316A2046FFF71BFD2FE668460770C9 +:10E3500001F050F8002804D0984897497A3004F02A +:10E36000B0FB08984778A068406CFDF7ABFD06004D +:10E3700004D151209049C00004F0A3FBA068406C78 +:10E38000FDF7A0FD040004D18C488B49823004F0D5 +:10E3900098FB8C48F900465008182A694260092009 +:10E3A000307068687060A868B060A889B0818548DE +:10E3B0006C3830611030B4617061304601F01AF889 +:10E3C000022804D07D487C49903004F07AFB2F75F8 +:10E3D000ECE57C4B00212033197002216A46117054 +:10E3E00001932979002902D0184601709BE07449F5 +:10E3F00003220C314968FB230A708A7800259208B1 +:10E4000092001A408A70027A1207D20F4A706D4A3F +:10E4100020325560C37ACB70837A13724469537A81 +:10E4200024785B08E4075B00E40F2343537284699C +:10E43000D460FD242340C4692478E407A40F234357 +:10E440005372036A13614D710D71437A5C4A9C07E4 +:10E450000C32A40F1268012C04D19478A407A40FE5 +:10E46000012C1DD09B089B00437293785B0702D45C +:10E47000437A5B0728D5037A13AD5B075B0FDC009B +:10E480005B00E318147864001B19DBB2DC082C5D18 +:10E490005D076D0F06235B1BDC40A3079B0F14E099 +:10E4A000037A54795B065B0F1C404C711379062587 +:10E4B0002B400B71DB002343414C63708B789B082E +:10E4C0009B005B1C8B70D0E700238C78FB252C40D5 +:10E4D000457A6D07ED0FAD002C438C70047A64070C +:10E4E000640F0C705178012908D1017A090705D50C +:10E4F000032108A801750221017614E0022B1ED029 +:10E50000012B21D02F4B00216C3B049AD96751601D +:10E510009160D16019467C310A4610325160417ACF +:10E52000FB2211404172684600F086FE040021D0B3 +:10E53000012C20D02049244804F0C3FA1BE003201A +:10E5400008A908750F76EEE70598000704D5C320E3 +:10E550001949800004F0B5FA1A4C0D211034E01C62 +:10E5600004F06FF9204610304460022008A90875B5 +:10E570000E94D8E7002669462046FFF701FC08A85C +:10E58000007D002802D00DA8F5F7BEF9304617B07F +:10E59000F0BDCB2008498000CCE5F0B5054697B02A +:10E5A0000C460020694608700548064E2F78483E04 +:10E5B000017882680AE0000094E10000090200008E +:10E5C000A0000020FC1900201F0300003B0004F005 +:10E5D0007DFB0BA8820724394A6977778D9AA800BA +:10E5E0002B20694608730CA903A8FDF7A1FC00289D +:10E5F00003D05349534804F064FA53490D9804F08A +:10E600003DF952480160524869680160AA68426059 +:10E6100001910820694608708CE08A0610D5DF2237 +:10E620001140017003202070484810304168A160FB +:10E630004068002802D00020207177E00120FBE72D +:10E64000102256E02B2069460873404903A85C3924 +:10E65000FDF76EFC002804D03A483949293004F00F +:10E6600030FA04201BE02A206946087303A8102210 +:10E670000230696804F088F807A810220230A968FF +:10E6800004F082F8314903A85C39FDF751FC0028F9 +:10E6900004D02C482A493A3004F013FA052020709F +:10E6A000666043E02A79002A02D0012211430170FA +:10E6B00005206946087028798880A868029039E0AA +:10E6C000106B4023018819430180106C6968102287 +:10E6D00004F05AF82AE0FB22114001700620694636 +:10E6E0000870A96868680291019023E0CB0703D005 +:10E6F0000222114301704AE70F2020701720207179 +:10E70000906CA06012E0537A9B0706D0126B44789D +:10E710001388FF3401342343138004221143017012 +:10E7200004E0084806497C3004F0CBF968460078DC +:10E730000028E0D06846F5F7E7F828E701207047A1 +:10E7400094E100004D03000040420F000C1A00202D +:10E75000AC00002070B504780D460646230004F096 +:10E76000B5FA0B1C181C1C1C1C07181C1C181C00C0 +:10E770000021052001F013FDB068007805280CD0B9 +:10E78000FA480022008811468300052001F065FC4C +:10E7900003E00021052001F002FD002D0ED0002035 +:10E7A000287029463046FFF7F8FEF1482978005DC9 +:10E7B000884201D1032070BD022070BD0021304687 +:10E7C000FFF7EBFE002070BD30B5E8494B68497A91 +:10E7D0000A0111460C315C5C032C0CD00446002568 +:10E7E0002034257125725C5CA500AA18641C5C5459 +:10E7F0009850032030BD062030BDF0B504462646B3 +:10E8000020360D463279012008218FB0002A0CD025 +:10E81000012A21D0022A2BD0032A04D12A78052AE2 +:10E8200001D1297000200FB0F0BD01203071606867 +:10E8300000280AD0A0690170616841602169816087 +:10E840006169C160FFF7C0FFEDE70720287020690C +:10E8500068606069A86009E029780729E3D102208F +:10E86000307105202870C248203868600320DAE73C +:10E8700029780529D7D1A08910280AD9103880B263 +:10E88000A081A1681023091803A86A6800F033FE6C +:10E890002DE0102804D0C1B20BAA1020A76809E00F +:10E8A00010232269A16817E0491EC9B2401EC0B2F8 +:10E8B0007B5C13540029F7D100280AD0401EC0B257 +:10E8C00080211154002102E0401EC0B211540028E2 +:10E8D000FAD1626910230BA907A800F00CFE1023DF +:10E8E00007A903A86A6800F006FE0320307160687B +:10E8F000019003A8029005206946087029466846E1 +:10E90000FFF728FF8FE7F0B5044626460D46203670 +:10E91000317901208DB000290BD0012938D002298E +:10E9200005D12978052902D10920287000200DB0D1 +:10E93000F0BD217D6846CA07D20F02738807C10F58 +:10E9400068460174012203A905A800F0CCFD04A9C2 +:10E95000012205AF481D00F0C6FD0722B81CE16882 +:10E9600000F0C1FD07A807220130216900F0BBFDBE +:10E970006068019009A80290102305AAA16800F020 +:10E98000BAFD01203071052168460170294621E059 +:10E9900029780529CBD1062203A8E16900F0A3FD5F +:10E9A00004A806220230A16900F09DFD042106A8FA +:10E9B00000F091FD6068019007A80290102303AA5F +:10E9C000696800F098FD02203071052069460870E2 +:10E9D00029466846FFF7BEFEA9E7F0B5074685B0B1 +:10E9E0000C460020694608703E466248203632795F +:10E9F0008179133801250078130004F067F9180DA8 +:10EA0000FEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EF9E +:10EA1000EEEDECEBEAE9E8E7B968039100291BD0D9 +:10EA2000012269460A7003220A710A224A71396971 +:10EA30000291397900297DD0039A1278002A7AD080 +:10EA40000C2A78D2130004F041F90BF009F0354D8F +:10EA50008498B1F2EEEDF0000020BEE30021062024 +:10EA600001F09DFB3879072866D1424D133D287887 +:10EA7000022802D000287FD101E0002028700398EE +:10EA80000079C11F0A2901D30A249AE16870394824 +:10EA90000722C01F039900F026FD01203071287065 +:10EAA0000220694608703348801F01903869401C75 +:10EAB00002903BE211293DD12E4D133D0228DAD1BF +:10EAC00068686978007A884201D9062479E1039957 +:10EAD00026481022491C303800F005FD032028701C +:10EAE000022046E11129E6D1224C133C0428C2D170 +:10EAF0000520207003991D481022491C203800F081 +:10EB0000F2FC062030717869032101706268516857 +:10EB1000416016492039816021460C31C160C91D10 +:10EB20000161017D537A49084900DB07DB0F194376 +:10EB3000017502E064E34AE387E1D3688361FD2362 +:10EB40001940537A9B07DB0F5B001943017511696C +:10EB500079E10229AFD1002868D005206946087103 +:10EB60000398407848713869029045E3601A0020A4 +:10EB70004C2D0100C700002073E011299BD1F84CF7 +:10EB800006286ED1A0680399406B1022491C00F042 +:10EB9000AAFC0620694608703869029000200871B6 +:10EBA00001466846FFF7D6FD072058E00B299AD1A9 +:10EBB000EB4C07287ED1A0680399C06A0222491C49 +:10EBC00000F091FCA0680822006B17E00EE10AE358 +:10EBD000F3E2D3E2B9E2AEE28EE265E24FE248E26E +:10EBE00028E2FDE1E7E1D0E1C6E1BFE1ADE16DE1A1 +:10EBF0004AE12BE1DCE0BFE0B0E076E00399C91C1C +:10EC000000F071FC0621684601703869029000210D +:10EC100068460171FFF79EFD20461330417949088F +:10EC200049003EE041E01DE001E05CE0E2E2112944 +:10EC300090D1CB4C08283DD1A0680399806B10225D +:10EC4000491C00F050FC06206946087038690290A3 +:10EC50000020087101466846FFF77CFD09202070FE +:10EC6000BDE227E0082989D1BD49092822D10398AE +:10EC700042788868C16B0A700399006C0622891C6F +:10EC800000F031FC062168460170386902900021CD +:10EC900068460171FFF75EFDB14813304179FD22EE +:10ECA0001FE041714FE230717EE01129C0D1AC49C3 +:10ECB0000A2801D0082484E088680399406C102257 +:10ECC000491C00F010FC062168460170386902906A +:10ECD000002168460171FFF73DFDA14813304179DD +:10ECE000FB221140DDE707246BE0217802297DD16A +:10ECF0009B490128FBD162684A6014780846002CC1 +:10ED00005DD106216A46117039690291072111719E +:10ED1000029902240C70CA785207520FCA704B79BC +:10ED20005B075B0F4B718B795B075B0F8B71D207B6 +:10ED300001D18A714A7105460A794078824200D22F +:10ED40006A7087480722133000F0CDFB00202C703A +:10ED5000307101466846FFF7FDFC40E22178042946 +:10ED6000C5D1032871D108227E48616800F0BBFB41 +:10ED7000032030710420E3E121780429B7D1784FD2 +:10ED80000328B4D1774808220830616800F0ABFB53 +:10ED90000420307178684168002907D00321217070 +:10EDA000002121714068A060032531E20320C7E102 +:10EDB000207803289BD1207900281BD00446002C02 +:10EDC00014D0062168460170386902900221684615 +:10EDD0000171029805210170447000216846FFF717 +:10EDE000B9FC012168460170042100E0A2E1017133 +:10EDF000447105E25A49A06849680028486001D179 +:10EE000059484860052030717869032202704A68C9 +:10EE10004260544A8260524A0C32C260D21D026182 +:10EE2000027D4B7A5208DB075200DB0F1A43027552 +:10EE3000CB688361FD231A404B7A9B07DB0F5B0095 +:10EE40001A4302750969C16194E1F2E02178092948 +:10EE500086D14349032891D10420087006206946D1 +:10EE6000087038690290112008710298032101701E +:10EE7000401C1022616800F036FB00216846FFF755 +:10EE800069FC00203071AAE12178092992D1052876 +:10EE900090D13449626820391020401EC0B20B5C0A +:10EEA000145CA34203D000200424307189E70028B9 +:10EEB000F3D107203071786904210170284949682D +:10EEC0004968416027498160103952E120780A2859 +:10EED000BED106216846017038690290112168464A +:10EEE0000171029804210170401C10221D4900F09C +:10EEF000FAFA00216846FFF72DFC194810214078E6 +:10EF00006268091AC9B2101800F0E5FA6068019049 +:10EF100013481330C178C9070FD08179002902D175 +:10EF20004079002809D00820307109E1214668465F +:10EF3000DFE0054601287CD06AE1072069460870B9 +:10EF400000216846FFF706FC4BE120780E289DD192 +:10EF50000348616881604969407808700920A2E629 +:10EF6000B4000020501A00202C2D0100C80701D049 +:10EF70000A20E3E00F2096E620780F2859D1A068F8 +:10EF80003861207938730B20F3E620780428F5D116 +:10EF90006168F84C0822A068C06900F0A4FA0C204F +:10EFA000307178690722B9690270A268D36843603A +:10EFB000D2698260DDE020780D28DFD1ED4D6168F7 +:10EFC000A86802230269806900F095FA0D2030716B +:10EFD000786906210170A9688A68426009695FE062 +:10EFE00020780C28CAD1E34D6168A8686A78006A65 +:10EFF00000F079FA6878AA681021091A126AC9B271 +:10F00000101800F068FA062168460170386902900D +:10F01000112268460271029810220170A968401CF2 +:10F02000096A00F060FA00216846FFF793FB0E20A2 +:10F030005AE0A2E020780F287CD1062069460870AB +:10F04000386902900B200871029C0720C94D20707E +:10F05000A86802228169601C00F045FAA8680822AD +:10F06000C169E01C00F03FFA00216846FFF772FB1F +:10F0700080E7880701D5102060E0132013E6207890 +:10F080000F287AD1A0683861207938731120307147 +:10F09000786906210170B7498968C9684160B64935 +:10F0A0008160B549091D64E020780C2865D1B14D17 +:10F0B0006168A8681022406A00F015FA06216846C7 +:10F0C0000170386902901121684601710298082187 +:10F0D0000170A968401C496A102200F004FA00215E +:10F0E0006846FFF737FB122030710921684601702E +:10F0F0002146FFF72FFB1CE720780F281AD10621A5 +:10F1000068460170386902900821684601710298CA +:10F1100009210170974989680A78D207D20F427095 +:10F1200049680622801C00F0DEF900216846FFF7DE +:10F1300011FBA2E769E0480705D5142030710920CA +:10F1400069460870F2E61620ADE520780F2853D105 +:10F15000A0683861207938731520307178690621EC +:10F160000170844989688A684260096981608249BE +:10F17000891DC160FFF728FBDBE63DE020780C2805 +:10F1800043D161687B4C1022A068806A00F0ABF923 +:10F1900006206946087038690290112008710298AB +:10F1A0000A210170A168401C896A102200F09BF9B5 +:10F1B00000216846FFF7CEFAC5E76E481330407964 +:10F1C00000280ED0C10703D06A480621017006E06E +:10F1D000800701D5082000E00A2066490870002554 +:10F1E00016E017205FE56349002805D00020307144 +:10F1F00008700A206946087068460078002804D024 +:10F2000000216846FFF7A6FA00255A480021017040 +:10F21000284605B0F0BD10B5584BFF245C7258600D +:10F2200019721A80002204E0491EC9B20B010C3386 +:10F23000C2540029F8D110BDF0B5504E0546717A80 +:10F2400001208DB0FF2971D00127727A73681101F6 +:10F250005C180C31595C8900091F64586A70217868 +:10F260000B0003F033FD0B960709272C59818D4ABB +:10F270004F5492002F7075E0214620310A91097990 +:10F280000120002902D001296DD10EE060680190B3 +:10F2900005A802900D21C01C00F01DF9032205A84D +:10F2A000A16800F020F90A984EE02978052974D168 +:10F2B000062156E029462046FFF725FB69E0214656 +:10F2C0002031069109790120002902D0012964D159 +:10F2D0000EE06068019007A802900822E16800F043 +:10F2E00002F9082209A8A16800F0FDF806982BE0B1 +:10F2F0002978052951D10A2133E02946204600F01A +:10F3000005F946E029462046FFF777FA41E029460D +:10F310002046FFF762FB3CE0214620310591097948 +:10F320000120002903D0012937D116E056E060689A +:10F33000019007A802900822A16800F0D4F80821E3 +:10F3400009A800F0C8F805986946077105200870FB +:10F3500029466846FFF7FEF91BE0297805291CD1EC +:10F360000B212970002018E02946204600F014F9EE +:10F370000FE00000B4000020242D0100601A0020DE +:10F380002946204600F038F903E029462046FFF7D9 +:10F39000D5F9002801D001280CD12562717A736853 +:10F3A00009010C315A5C521E1206120E5A5401D039 +:10F3B00003204AE70328FCD0737A726819011D0103 +:10F3C0000D312C46515C7172FF270D3417550C35E9 +:10F3D000545D002C02D0FF2903D173720DB0F0BD33 +:10F3E00021460C010D34145DFF2CF9D109010D31BA +:10F3F0005354F3E770B5A24C0546607A21460346A4 +:10F400004A6811E0010108460C30105C08E0401E1B +:10F41000C0B286008E199659AE4201D1042070BD4B +:10F420000028F4D10D31505CFF28EBD19448002125 +:10F43000007A01E0491CC9B2884204D90E010C3699 +:10F44000965D002EF6D1884201D8052070BD0801D6 +:10F450000D30135461722846FFF7B6F9032806D021 +:10F46000617A626809010D31515C617270BD284694 +:10F470002830FFF7E1FE70BD10B504780123012CA0 +:10F4800014D10C78022C11D30B23137083785B07F3 +:10F490005B0F537002220A708088002805D0830019 +:10F4A00000221146062000F0D8FD0023184610BDAA +:10F4B0000EB50022012105280AD0062807D168468A +:10F4C00001700221017142710021FFF766F80EBD43 +:10F4D00068460170F6E7002202E0491EC9B24254B4 +:10F4E0000029FAD1704703E0521ED2B28B5C8354DC +:10F4F000002AF9D1704730B505E05B1EDBB2CC5C69 +:10F50000D55C6C40C454002BF7D130BD3EB50446E9 +:10F5100020300D4602790121002A02D0012A39D17A +:10F520000EE06168019157490291012101710520A6 +:10F530006946087029466846FFF70CF9014629E03C +:10F540002878052826D169681022A06800F087F87D +:10F550006868C07B000606D54A4AA06810231032AE +:10F560000146FFF7C8FF1022A168E06800F077F8B5 +:10F57000A068C07B000606D5424AE068102310321E +:10F580000146FFF7B8FF07202870A0686860E068B0 +:10F590000021A86008463EBDF0B5044626460F4649 +:10F5A00020363179012089B0002909D0012905D1FF +:10F5B0003978052902D10C203870002009B0F0BD3F +:10F5C000606803AD01900295022203A8A168FFF7CD +:10F5D0008AFF0222A81CE168FFF785FF0C21281D85 +:10F5E000FFF779FF01203071052069460870394620 +:10F5F0006846FFF7AFF8E1E710B5034620331C7902 +:10F600000122002C04D0012C10D0022C25D11EE0A8 +:10F6100001211971C16806220A70406848601948C2 +:10F62000801F8860801CC86008460CE00C780C2C99 +:10F6300013D102221A71C268052313704968516000 +:10F64000806890601046FFF7BFF8024605E0087832 +:10F650000B2802D10D2008700022104610BD10B5F5 +:10F66000002409E00B78521E5B0023430370401C0A +:10F670000B78491CD2B2DC09002AF3D110BD00007E +:10F68000601A00202C2D010070B50D46040012D028 +:10F69000002D10D02101284603F0D3F81022544940 +:10F6A000284603F071F8524801210838018044804F +:10F6B0004560002070BD012070BD70B54C4E002427 +:10F6C0000546083E11E0716820014018817BAA7B45 +:10F6D000914209D1C17BEA7B914205D10C22294696 +:10F6E00003F025F8002806D0641C30888442EADB49 +:10F6F0000020C04370BD204670BD70B50D460600A9 +:10F700000AD0002D08D03A4C083C20886188401C63 +:10F71000884203D9042070BD102070BD3046FFF729 +:10F72000CCFF002801DB0F2070BD2088616800013C +:10F7300040181022314603F027F82088401C208012 +:10F740002870002070BD70B514460D001FD0002C2D +:10F750001DD00021A170022802D0102817D108E086 +:10F76000687829780002084311D00121A170108027 +:10F770000BE02846FFF7A1FF002808DB401CA07023 +:10F78000687B297B000208432080002070BD012097 +:10F7900070BD70B5054614460E000AD000203070CA +:10F7A000A878012807D004D9114908390A8890425D +:10F7B0000BD9012070BD002C04D028782070288837 +:10F7C000000A50700220087010E0002C0CD049682C +:10F7D0000001411810391022204602F0D5FF287888 +:10F7E00020732888000A607310203070002070BDDC +:10F7F000D8000020734909680160002070477149F2 +:10F8000008600020704701216F4A704B002803D028 +:10F81000012805D06E48704791630020187001E000 +:10F82000D1631970002070476A4901200860684858 +:10F83000801C70470422684B6649002805D05A6036 +:10F84000086901221043086108E008694008400087 +:10F8500008619A605C490020C031886000207047D0 +:10F860005C490622002808D0012809D002280DD0C2 +:10F8700003280FD05648401C70470869904302E0A7 +:10F8800008699043801C0861002070470869904314 +:10F89000001DF8E708691043F5E74E494A6A02433C +:10F8A0004A62002070474B494A6A82434A620020FC +:10F8B00070474849496A0160002070474549CA6954 +:10F8C0000243CA61002070474249CA698243CA6143 +:10F8D000002070473F49C96901600020704730B57A +:10F8E0000546002072B601463A4A384C4032002D97 +:10F8F00011D00123012D0CD0022D02D0072062B6B9 +:10F9000030BDA3706478002C01D09363F7E7916356 +:10F91000F5E7A170F9E7A170F9E72F4904208860A5 +:10F9200029490020C03188602849012008702B49EE +:10F930000A688023120A12021A430A6028490860E2 +:10F94000704722480078704770B5EFF31080C50704 +:10F95000ED0F72B61D4C6078401C0006000E607002 +:10F9600003D120A1CC2003F0ACF86078012806D1A7 +:10F97000A078002803D01749012040318863002D6A +:10F9800000D162B670BD70B5EFF31080C507ED0F02 +:10F9900072B60E4C6078002803D112A1DC2003F06F +:10F9A00090F86078401E0006000E607006D1A078C6 +:10F9B000002803D00749002040318863002D00D182 +:10F9C00062B670BD0004004040000040E800002026 +:10F9D00004200000000500400003004000E400E0B7 +:10F9E00000E100E07372635C736F635F706F776553 +:10F9F000722E63008107C90E002808DA0007000F85 +:10FA000008388008B94A80008018C06904E080087E +:10FA1000B74A800080180068C8400006800F704711 +:10FA2000B44948788978884201D3401A02E02122FB +:10FA3000511A0818C0B27047AE4923314878897806 +:10FA4000884201D3401A02E02122511A0818C0B29C +:10FA50007047A849463148788978884201D3401ACE +:10FA600002E02122511A0818C0B27047A04810B510 +:10FA70000C300168FF22120291430122D20311438C +:10FA800001609C49002023314870887023394870F8 +:10FA90008870463148708870974801F0FCFD9648A0 +:10FAA000401C01F0F8FDF2F723FE00F015F910BD3F +:10FAB00020207047B4E770B50C4605460026FFF7D6 +:10FAC000AFFF8C49A04214D30A46203A00232046B7 +:10FAD000641EE4B200280BD08878105C2870887807 +:10FAE0006D1C401CC0B288702128F0D18B70EEE7ED +:10FAF000012600F0F1F8304670BD202070479BE7EA +:10FB000070B50C4605460026FFF796FF794923316C +:10FB1000A04214D30A46203A00232046641EE4B2D1 +:10FB200000280BD08878105C287088786D1C401CE9 +:10FB3000C0B288702128F0D18B70EEE7012600F06A +:10FB4000CBF8304670BD202101700020704710B501 +:10FB50000446FFF77EFF2070002010BD70B50C46F4 +:10FB60000546FFF776FF63494631A04215D30A46A2 +:10FB7000203A00232046641EE4B200280BD0887887 +:10FB8000105C287088786D1C401CC0B288702128D9 +:10FB9000F0D18B70EEE7002400E0584C00F09CF8A8 +:10FBA000204670BD70B50C460546212904D9FF20BA +:10FBB00053A1473002F085FF4C484068103840B2EE +:10FBC000FFF718FFC6B20D20FFF714FFC0B2864240 +:10FBD00007D2FF204AA14D3002F073FF01E0F2F797 +:10FBE000C7FD21462846FFF766FF0028F7D070BD05 +:10FBF000F8B5404E07462336B1787078212200F0E0 +:10FC000060F8354623353B4C00280ED0A17860784B +:10FC1000212200F056F8002814D0A9786878212213 +:10FC200000F04FF800281AD025E032497078C91C3E +:10FC30000F547078401CC0B2707021281BD1002076 +:10FC4000707018E02B49607820390F546078401CA0 +:10FC5000C0B2607021280ED1002060700BE02549F1 +:10FC6000687826310F546878401CC0B2687021282B +:10FC700001D100206870B1787078212200F021F85D +:10FC800000281DD0A1786078212200F01AF8002801 +:10FC900016D0A9786878212200F013F800280FD038 +:10FCA000F2F748FD144801F0FEFC012149038842A7 +:10FCB00003D013A1C12002F004FF0F4801F00BFD97 +:10FCC000F8BD401C884205D0904201D1002901D0E6 +:10FCD000002070470120704710B5074801F0E3FC91 +:10FCE000002801D1F2F715FD10BD000000ED00E085 +:10FCF00000E400E08C1A0020EB0000200720000048 +:10FD00007372635C736F635F72616E642E63000075 +:10FD100010B5284801F0BFFC002803D026A11D2003 +:10FD200002F0CFFE2348401C01F0B5FC002803D0B0 +:10FD300021A1212002F0C5FE10BDF1B5224D6F6852 +:10FD400001261C4801F0AFFC1A4C002803D1002604 +:10FD5000601C01F0C0FC1D4A1D490120506000BF1D +:10FD600000BF00BF00BF00BF00230B604B60009BC3 +:10FD70006B60106000BF00BF00BF00BF00BF08681D +:10FD8000002802D148680028F9D048680028E4D14A +:10FD9000002E04D06F60601C01F085FC07E0601C41 +:10FDA00001F081FC0028D3D1024801F094FC00202E +:10FDB000F8BDC2E7ED0000207372635C736F635F90 +:10FDC0006563622E6300000000E5004000E0004033 +:10FDD00000E1004030B5EFF31081CC07E40F72B6BC +:10FDE0001D4A116910230D461D431561002C00D1D9 +:10FDF00062B61A4DC406E40E0120A0402C680442ED +:10FE00000DD0C8060AD4EFF31080C007C00F72B639 +:10FE1000116999431161002800D162B630BD20BF3D +:10FE200040BF20BFEAE70E4908784A78401CC0B2BC +:10FE3000904200D008707047084A094820BF40BF70 +:10FE400020BF4178037843701368002B02D10378F8 +:10FE50008B42F3D00020704700ED00E000E200E0AC +:10FE6000EF000020FEB5F44C07466068FF213E011C +:10FE700081552178FF2913D00901083141583246B4 +:10FE8000491E083209020192090A805800F0CBF994 +:10FE9000002802D02478254615E06168207888552E +:10FEA0002770FEBDE448426801981158280100906F +:10FEB0000830105800F0B7F9002806D1DE482C466B +:10FEC000416800980D5CFF2DECD1DB4821014068B2 +:10FED00085554754FEBD70B5D74A04460020157AB3 +:10FEE00053680AE00201561C9E5DA64203D10C3203 +:10FEF0009A588A4204D0401CC0B28542F2D8FF20F2 +:10FF000070BDF8B5CC4F3E7801F042FB0146FF2EA4 +:10FF100071D03401254678680835405900F083F9DE +:10FF200002280CD97868405901F025FB01F030FB1C +:10FF300001467868405900F076F902285BD8BE493E +:10FF40004868025D0A70A11C425C002A0CD0521E57 +:10FF5000425441590122D20589180902090A415126 +:10FF60003046FFF77FFF30E0631CC25C0092221D29 +:10FF700094468258002A10D001239B029A420FD93E +:10FF80009205920D43595703DB191B021B0A43517B +:10FF90006346C3589A1A920A09E0FF21C1540AE045 +:10FFA000435952039A181202120A42510022425433 +:10FFB0003046FFF757FFA0480C344168C2680098EC +:10FFC000095980001258009890479B4C2078FF28D0 +:10FFD00011D0000161680830085801F0CCFA01F036 +:10FFE000D7FA01462078626800010830105800F006 +:10FFF0001AF9022886D3F8BDF8B51C4615460E46F8 +:020000040001F9 +:100000000746FF2B03D38DA1D12002F05AFD8A4869 +:10001000FF21C760456004720674017000224270BF +:10002000104604E00201521C401CA954C0B2A04278 +:10003000F8D3F8BD70B5804C06466578207C8542C3 +:1000400003D37EA1E42002F03CFDE068A900465005 +:100050006078401C6070284670BDFFB581B01D46B9 +:10006000FF2401F095FA744F064679780198814291 +:1000700003D872A1F22002F024FD6F480021037A18 +:10008000406810E00A019446521C825CFF2A25D089 +:10009000019FBA4205D162460C328758029A9742B4 +:1000A0001ED0491CC9B28B42ECD8FF2C18D02101BC +:1000B0004A1C019B83540B460C33029AC250039B8B +:1000C0005D4F0022012B0ED00B1DC25001239B025D +:1000D0009D4216D9AA05920D08D008E00C46E0E72B +:1000E000FF2005B0F0BD0B1DC550EFE71A465303C6 +:1000F0009B190E461B0208361B0AAA1A8351920A44 +:1001000009E0002D00D101256B039B191D022D0A6A +:100110000B460833C550891C42543D463E78204664 +:10012000FFF7A0FE2878B04214D0000169680830BB +:10013000085801F020FA01F02BFA29786A680901C1 +:10014000083152580146104600F06DF8022801D2DD +:10015000FFF7D7FE0198C4E770B50C46054601F0DD +:1001600017FA064621462846FFF7B5FEFF2814D0A9 +:10017000314D04012046696808300858314600F0C6 +:1001800052F80121090340186968A41C095D400B5D +:10019000002901D08902081870BD002070BDF3B598 +:1001A00081B00F460198FFF796FEFF282AD0224E15 +:1001B0003578726829460C4604E0844205D025460D +:1001C0002301D45CFF2CF8D11CE0FF2C1AD0A542EF +:1001D0001CD10801105C3070FF2815D000010830D8 +:1001E000105801F0C8F901F0D3F90146307872686F +:1001F00000010830105800F016F8022806D2FFF768 +:1002000080FE03E00020FEBD01F0BDF939460198F3 +:10021000FFF7A2FF22017168FF23541C0B558A5C73 +:100220002B01CA54FEBD401A00020121000AC90573 +:10023000884200D900207047D81A00207372635C8E +:10024000736F635F74696D65722E6300F0B500248F +:100250001C4A01211C4B0803546018601B4B1C6096 +:100260001B4C20601B480469E443E406E61704695C +:10027000761C10252C430461174C6160174D2960D2 +:1002800000E020BF1F68002FFBD0002E03D10769BC +:100290001026B743076190688005906801D5104A21 +:1002A00010436960A160002119600121084A090317 +:1002B0001160F0BD10B50446FFF7C8FF20600020B4 +:1002C00010BD000000C5004080E100E000C100401A +:1002D00080E200E000ED00E000C3004000C000400C +:1002E00000FCFFFF70B51F490A68002A17D00023E1 +:1002F0001D4601244A68521C4A60092A00D34D60F9 +:100300000E792246B2400E6816420AD072B60B68C9 +:1003100093430B6062B649680160002070BD052000 +:1003200070BD5B1C092BE5D30FA1362002F0C9FB81 +:10033000F5E701201049800508607047EFF3108150 +:10034000CA07D20F72B601218140064803681943DB +:100350000160002A00D162B6EBE70248002101608B +:1003600041607047F40000207372635C736F635FD9 +:100370006576742E6300000000E200E00120810732 +:100380000860704701208107486070471048C068C6 +:10039000C00700D0012070470D488068C00700D01A +:1003A000012070470A484069C00700D0012070470B +:1003B0000748C069704706498A69D20306D589692A +:1003C0008907890F814201D10120704700207047C1 +:1003D00000040040F8B5FE4C607A217A88421BD0B8 +:1003E0000126FC4D0027207A215C14200A46424356 +:1003F0005019037C052B10D0062B19D0072B23D0C6 +:10040000437C012B2BD02120F3A1400102F059FBAA +:10041000617A207A8142E6D1F8BD0674207A401CC8 +:100420004007400F2072491CC8B2AA58022109E0B7 +:100430000674207A401C4007400F2072491CC8B245 +:10044000AA5803219047E3E70674207A401C40072E +:10045000400F2072491CC8B2AA580821F2E747741D +:10046000207A401C4007400F2072491CC8B2AA588D +:100470000721E7E770B5DB4D05202871DA48002435 +:1004800044700470183044720472D84801F003F9C3 +:10049000D7480474AC71D748611E41606C70847792 +:1004A000C4772C704477D448022104704470D34838 +:1004B000047528300470491EFAD10120F2F7DAF9E8 +:1004C0000020F2F7D7F90120A870F2F765F8CC48C0 +:1004D000F2F774F8CB4C2070CB48F2F76FF86070ED +:1004E000F2F76CF970BD10B5F2F793F9C54C2078AE +:1004F000F2F782F86078F2F77FF8BA4CE0780028DB +:1005000005D0FFF740FAF1F7A8FE0020E07010BD1B +:1005100070B5B44CA078002805D0FF20AEA1B23051 +:1005200002F0CFFA70BDA079002804D1FF20AAA163 +:10053000953002F0C6FA0125A5700026A671207933 +:10054000042114225043A34AAA4C80180174606805 +:10055000401C04D0481F60600120F2F78BF9002096 +:10056000F2F788F9F2F76CF9F2F773FAF2F7F8FAA2 +:10057000A1480078022804D0032804D1E07F002895 +:1005800001D0A57700E0A677F2F74FFA70BD0346D9 +:1005900090490420142242435218203A127F002A24 +:1005A00004D0401E0006000EF4D1704714224243CE +:1005B00051180A46403AD362012220390A7770471F +:1005C000012805D0032805D1002903D10020704758 +:1005D0000029FBD010B4874C00236377864A00289B +:1005E00090700CD002280AD007291AD20B007B4445 +:1005F0001B79DB189F441505070D0F111300D370ED +:1006000003E01B2000E03A20D0700120607710BC8E +:1006100070475820F8E77720F6E79620F4E7B520F2 +:10062000F2E710BC0020704710B573484078F2F72D +:1006300014FA80B210BD411E1422504310B5654A11 +:100640008418203C032902D8207F002803D162A10E +:100650006E4802F036FA207F012804D001205EA106 +:10066000400202F02EFA0020207710BD70B55E4CDB +:1006700060782178884201D1012500E00025F2F759 +:1006800088F9F2F7EAF961782278914201D10121E3 +:1006900000E00021A942EBD170BDF7B58CB0064651 +:1006A0000D98401EC1B20090029114204143494868 +:1006B0000D1828460195007C2D1D07282BD1444F8D +:1006C00000203C7A797AA14222D03A5D02998A428E +:1006D00007D1002803D040A14D4802F0F2F90120D3 +:1006E00001E0002804D0611C4907490F795C3955A5 +:1006F000641C6407797A640FA142E6D1002807D010 +:10070000787A002802D0787A401E00E007207872BC +:100710000199012008740099324C0D9803290FD8D3 +:10072000142148432B4940182038007F002807D067 +:100730000198007C012807D00E98C07A012807D0C4 +:1007400025A1344802F0BDF90E98C07A012839D1AC +:100750000198204B007C02280FD01D4C607A217A32 +:10076000401C4007400F884203D11BA12A4802F0D9 +:10077000A8F901990120487434E12079029A0146D0 +:10078000904206D0014614277843C018807C9042DE +:10079000F8D12279824208D1217914225143C91813 +:1007A000897C21710121617107E014224243D21832 +:1007B00014277943927CC9188A7414220521504366 +:1007C000C01881740E98007A06283BD226E00000FB +:1007D000D41B0020EC1A00207372635C72656D2ECE +:1007E00063000000001C0020BC1B0020071C002030 +:1007F000C01B0020E01B0020FE000020E81A0020A3 +:1008000003FF0000FC000020D5030100FF010000F1 +:10081000450200004E0200005B02000003007B4422 +:100820001B79DB189F44020C0A08060400200FE025 +:10083000B4200DE073200BE0322009E00A2007E02D +:10084000062005E0FF20F749443002F03AF9002085 +:1008500003900E98C07A02280E9824D0807A2872CD +:100860000E9803990068401A28600E99097A0029A9 +:1008700061D00221401A0002000A28600E98016827 +:10088000406808186860C01D0002000A68600E9881 +:100890000627407AA8720E98007A6872FFF776FDF4 +:1008A00000284AD053E04168007A00282DD0022069 +:1008B00009180398C01D09182079052827D0DA489F +:1008C000039A4078904200D81046801A4218D748C0 +:1008D000921D8446207914235843D54BC018436891 +:1008E00080689B1B801B1B0200021B0A000A9A42A5 +:1008F00004D8CE4A934201D8604508D92079142201 +:100900005043CB4A801880680CE00420D0E7C648EA +:10091000039A4078904200D81046801A8019801DB2 +:100920000002000A286040180002000A68600020E7 +:1009300028726868A7E704219CE7687A032806D232 +:10094000002804D0039838210F1A32200390B649AA +:100950000878012801D003280AD1487803998842F1 +:1009600006D9B449C97F002902D10399401AC71991 +:100970002968AE488B1B69681A02891B0591090218 +:10098000120A090A97421ED8074682421BD8B9426A +:1009900019D82079012205282FD0002001210491A7 +:1009A00021799C46059B14225143A14A89184A6823 +:1009B000921B9A4203D28A68921B62452BD800226E +:1009C0000AAF3A5430E0019905209B4C0874607AD4 +:1009D000217A401C4007400F884203D197A19A48D2 +:1009E00002F06FF8617A02986054607A401C400708 +:1009F000400F607200200FB0F0BD019802230299F1 +:100A000003742379052B00D02379837421716271DB +:100A100001200FB0F0BD01220AAF3A548A7BAF7AB1 +:100A2000BA4201D800220492897C401CC0B2052938 +:100A300003D0049A002AB6D1A1E00498002877D008 +:100A400025790520002704900AA8C05D012827D039 +:100A500004951420454376487F1C2818857CFFB2F6 +:100A6000052DF1D1019802230374714F20790528D7 +:100A700053D025790520049001984068811B1420EB +:100A80006843C0194268921B8A4262D92079A84201 +:100A90004FD1019902980B742279052A42D142E084 +:100AA0002079A8420BD121791420414360480818CD +:100AB000807C2071012060710020207011E004987A +:100AC000052803D15DA1614801F0FBFF28461421F0 +:100AD0004843574914234018827C049858434018CF +:100AE0008274284614214843514906224018027452 +:100AF0005148417A007A491C4907490F814203D184 +:100B00004EA1534801F0DDFF4B48417A4554417AEC +:100B1000491C4907490F41729BE7227901990298C4 +:100B2000052A00D022798A7420710120607123E0A7 +:100B300025E00498052803D140A1464801F0C1FFF3 +:100B4000049814225043C019029981740198857445 +:100B500012E0807C052807D0049505468FD137A187 +:100B60003D4801F0AEFF21E014214D43E919029800 +:100B7000887401990520887401200FB0F0BD019898 +:100B800005212D4C0174607A217A401C4007400FEA +:100B9000884203D129A1314801F093FF617A02987C +:100BA0006054607A401C4007400F607200200FB014 +:100BB000F0BD70B50D460646294900242046891B24 +:100BC000A04103D21DA1274801F07BFF2649002048 +:100BD000491BA04103D219A1244801F072FF244A05 +:100BE00070190021821A8C4101D32249401870BD2E +:100BF000F8B5401EC0B2142148430D494518687B22 +:100C000006283DD203007B441B79DB189F44023643 +:100C100034080604002067E0B4203AE0732038E08E +:100C2000322036E0D8070100FE000020FFFF3F0021 +:100C3000EC1A0020E01B0020D41B00207372635CC0 +:100C400072656D2E63000000A3020000DE0200004A +:100C5000E302000007030000170300001D0300006B +:100C6000FF7F841E290300000020A1072A03000043 +:100C70000080841E00807BE10A200AE0062008E054 +:100C8000FF20FE49443001F01CFF697B0020002951 +:100C90002AD0022140186968002440180C21000263 +:100CA0006956000A002921DBF1F7D7FEF44A06460F +:100CB0000C27EF570021101AA14103D2EF49F14848 +:100CC00001F0FFFEF0490020C91BA04103D2EB490F +:100CD000EE4801F0F6FEEE4AF0190021821A8C412E +:100CE00001D3EC494018F8BD0421D3E7F1F7B5FE74 +:100CF0000C21695600224018E149091AA241F2D29A +:100D00004042F8BDF0B5074683B0E3480E46029076 +:100D100000F0C9FCE14C00282ED0E14D287C0028D1 +:100D200003D0E0A1E24801F0CCFE012028742F732B +:100D3000DB4D30782872707868722A460A3229466C +:100D40007068F1F794FE0A2028560F2804DD1F383A +:100D5000A8722868401C28600021B0686A4600918B +:100D6000117101AA6946F1F782FE6A460420105605 +:100D70000F2846DD012045E060782178401C4007BF +:100D8000400F884203D1C7A1CA4801F09AFE60789B +:100D90000101C94809180F73617809010D183078ED +:100DA0002872707868722A460A3229467068F1F70C +:100DB0005EFE0A2028560F2804DD1F38A872286816 +:100DC000401C28600021B0686A460091117101AA98 +:100DD0006946F1F74CFE6A46042010560F2801DDE3 +:100DE000012000E00020009940186860307BE87224 +:100DF0006078401C4007400F6070029800F06BFC68 +:100E000005E00020009940186860307BE872607847 +:100E10002178884224D0A9480579052D22D0F1F700 +:100E2000B8FD14214D43A64969180A7C042A17D03D +:100E3000032A15D04B6889681B1A091A180209027F +:100E4000A04A000A090A06280AD31346904207D886 +:100E5000994205D860782178884201D0F1F7E5FD04 +:100E600003B0F0BD607821788842F7D103B0F0BDBF +:100E700010B50020F1F7EBFC10BD10B50120F1F723 +:100E8000E6FC10BDF8B5074602281ED08B4C207931 +:100E9000052803D183A18C4801F013FE0020A07027 +:100EA0000125A571207903211422854E5043801914 +:100EB0000174F1F7BFFD3800844F0BD001281FD01B +:100EC00003286FD077A1824838E082480078F1F794 +:100ED00099FBF8BD65700020F1F7CCFC7968481CDF +:100EE00004D0012300221846F1F7FAFC2079217979 +:100EF000401CC0B214225143725801219047F8BDE2 +:100F00000120F1F7B7FC607800280CD07868401C0D +:100F100009D020792179401CC0B214225143725863 +:100F200006219047F8BD387E01280AD0022812D049 +:100F3000032824D0042836D05AA1674801F0C1FD07 +:100F4000F8BD2078002804D000202070F1F777FD4C +:100F5000FD77002024E0E078002804D1FEF7F4FCBF +:100F6000F1F752F9E57020792179401CC0B21422C2 +:100F7000514372580021904700203876F8BD397AE5 +:100F800038680123411A00221846F1F7A9FC20789D +:100F9000002804D000202070F1F751FDFD770220D9 +:100FA0003876F8BD1AE0397F38680123411A0022EB +:100FB0001846F1F795FCE078002804D1FEF7C4FC50 +:100FC000F1F722F9E57020792179401CC0B2142292 +:100FD00051437258002190473D76F8BD2079217920 +:100FE000401CC0B214225143725805219047F8BDED +:100FF00010B5324C2079052803D12AA1374801F0D9 +:1010000060FD20792179401CC0B2142251432C4A42 +:1010100052580421904710BDF0B583B00526F1F772 +:10102000B8FC054629484068401C03D01DA12C4847 +:1010300001F047FD214C21792A480190052956D01D +:101040002179142041431E480918097C04294ED0F7 +:101050002179142251430818007C03287ED001987E +:10106000184902684068521B401B12020002120A13 +:10107000000A062A72D30B468A4235E03C0C010076 +:10108000FF7F841E290300000020A1072A0300001F +:101090000080841E00807BE1071C0020BC1B002018 +:1010A000C01B00207372635C72656D2E63000000CC +:1010B0006E0300005F0300003C1B0020001C0020AA +:1010C000EC1A0020FFFF3F00A2030000E01B0020FD +:1010D000F3030000FC000020E7030000FA03000017 +:1010E0002B040000EC1B002038D8984236D8002092 +:1010F00060702079052808D1F648407F002804D088 +:10110000F548C1784170817801702079052814D0A4 +:10111000207914214843F1494018007C04280CD15F +:1011200026792279012014235A4352181074227907 +:101130005A435118897C21716071E94F7878397868 +:10114000884215D038780101E6480A183978090133 +:101150000818017B2846FFF7A0FA00E071E1387813 +:10116000401C4007400F3870787839788842E9D1C0 +:10117000DD4F387C002806D0397B3A462846FFF7F9 +:101180008CFA00203874052E1BD0142031464143C0 +:10119000D2480818017C012913D10721D34F0174CB +:1011A000787A401C0840397A884203D1D0A1D348CC +:1011B00001F087FC787A3E54787A401C4007400F53 +:1011C0007872207905287DD0607900287BD00020B6 +:1011D0006071217914204143C048BE4F0E18C849A0 +:1011E000B3687268F6688E604B600A60797D00298A +:1011F00010D0022621791422B84851430818407BA8 +:10120000062815D203007B441B79DB189F44040E8B +:101210000C0A08060426EDE700200FE0B4200DE0DC +:1012200073200BE0322009E00A2007E0062005E0E9 +:10123000FF20AFA1443001F044FC00203872797DDA +:10124000022901D001290FD1F96809184A1B12029D +:10125000120A382A08D90320787532390802000AA0 +:10126000F860322038720AE0322808D2E07800288C +:101270000ED1FEF769FBF0F7C7FF012007E0E07829 +:10128000002805D0FEF77FFBF0F7E7FF0020E070B5 +:10129000914A0621507838771278012A01D0032A22 +:1012A00006D1012222703A7A904201D9811A891D11 +:1012B000BA7F002A00D0891C2378002B01D1002A94 +:1012C00061D001E088E098E08C468E490091019958 +:1012D0000B6849685B1B491B09021B02090A1B0AB0 +:1012E00001919C451CD8874DAB4219D8019B0099B0 +:1012F0008B4215D8397A884223D9FB68421A9A1A48 +:101300001202120A101880190002000AFA603860EE +:10131000002914D0032038760006000E3ED144E0A8 +:1013200000202070B877397A002925D0F868401855 +:1013300080190002000A3860022038762EE0012071 +:10134000E9E781420BD9FA68511889190902090A9B +:101350003960002801D00420DDE70220DBE7002A05 +:1013600003D163A1684801F0ACFBF8688019000262 +:10137000000A3860002004E0F96889190902090AA6 +:101380003960387611E0387A00281DD0F9680818DD +:1013900080190002000A386002203876F8680123BC +:1013A000811900221846F1F79BFA2079142148434D +:1013B0004A490C2240188256012300203968F1F76F +:1013C0008FFAF1F7C1FB18E0F86880190002000AF3 +:1013D000386000203876E8E70120F1F74BFA00206A +:1013E000F1F748FAF1F72CFAE078002805D0FEF77B +:1013F000CAFAF0F732FF0020E070364DA87F0028CF +:1014000004D0F1F71CFB0020E877A877687F00285C +:1014100004D03148C178417081780170207800286B +:1014200006D000202C49E8770978002900D12070E7 +:101430002E48417A007A814203D034484078F1F74F +:10144000E1F803B0F0BDF0B5314C0746207983B028 +:10145000052803D126A12F4801F033FB2079142160 +:101460001E4E48438019007C032803D020A12A483F +:1014700001F027FB174D6868401C03D01CA12748CA +:1014800001F01FFB20791421484381190C200856D4 +:1014900000216A4600911171C01901AA6946F1F74D +:1014A000E6FA6A46042010560F2801DD012000E00C +:1014B000002000994018296840180102090A696053 +:1014C0006078002804D0012300221846F1F708FABA +:1014D00003B0F0BDE01B0020FE000020EC1A00204D +:1014E000BC1B00203C1B0020C01B0020D41B002084 +:1014F0007372635C72656D2E630000005C04000013 +:10150000EC1B0020FFFF3F00AE040000FC000020A9 +:10151000001C00200B0500000C0500000D0500005C +:10152000F8B51D4D0A1A00242346551BA34106D3C6 +:10153000194E431A254600279E1BBD4101D2104675 +:10154000F8BD164E0025B21AA54103D2721C101A1E +:101550004018F8BD114D0022EB1AA24104D26A1CBA +:10156000511A08184042F8BD53200DA1000101F0A6 +:10157000A8FA0020F8BD10B5014601230022022080 +:10158000F1F7AEF910BD10B50220F1F773F910BDF7 +:1015900010B5F1F7FEF910BD0020A107FF7F841EF2 +:1015A0007372635C72656D2E6300000010B50146B6 +:1015B00020220A4801F0E8F808490020C8770846C8 +:1015C00010BD0749012048610648074A0168914259 +:1015D00001D100210160704770477047081C00204E +:1015E0000005004004010020EFBEADDE064A107089 +:1015F0005170704704481C2201784171427001709B +:101600007047704770477047080100207047704767 +:1016100070477047704770477047704730B5034652 +:10162000002002460DE09C5C2546303D0A2D02D389 +:101630000020C04330BD0A25684330382018521CB2 +:10164000D2B28A42EFD330BD70B50D46144608E0E1 +:101650000A2101F013F92A193031203A641ED1779A +:10166000E4B2002CF4D170BD10B5002310E0040AE0 +:1016700000020443A0B2CC5C44402006000F60404E +:101680000407240C44402006C00C60405B1C9BB245 +:101690009342ECD310BD002101700846704701460B +:1016A000002008707047EFF31081C907C90F72B6A8 +:1016B0000278012A01D0012200E0002201230370F8 +:1016C000002900D162B6002A01D000207047012015 +:1016D00040037047E7E7EFF31081C907C90F72B6FF +:1016E00000220270002900D162B600207047F2E7A4 +:1016F0000348004703480449024A034B704700006F +:10170000312B0100481C0020481C002010B5203857 +:101710000C46030001F0DAFA331B1F23272C313764 +:101720003C41474D5054585C606D71656974787CDC +:101730008084888C9094989C9FA2A6AAAEB2B8BCD4 +:10174000C0C5CACFE9F0F3D3D7E0DBE4F8002068E6 +:10175000FFF7A1FFD6E02068FFF7A5FFD2E02068E1 +:10176000FFF7B9FFCEE0207840B200F0F3F9C9E00E +:10177000207840B200F011FAC4E02078616840B2ED +:1017800000F024FABEE0207840B200F034FAB9E06C +:10179000207840B200F03FFAB4E02078217940B2DE +:1017A00000F04AFAAEE02078616840B200F074FAC6 +:1017B000A8E000F080FAA5E0206800F084FAA1E03B +:1017C000207800F099FA9DE02068FEF7BCF999E0D6 +:1017D0002068FEF7BCF995E021792068FEF7BEF994 +:1017E00090E02068FEF706F88CE02068FEF707F826 +:1017F00088E02078FEF707F884E0FEF715F881E02E +:101800002078FEF717F87DE02078FEF729F879E0D8 +:101810002068FEF742F875E02068FEF744F871E0B2 +:101820002068FEF746F86DE02068FEF747F869E0AB +:101830002068FEF749F865E02068FEF74BF861E0A4 +:101840002068FEF74CF85DE00846EEF77FFC59E0B3 +:10185000F0F7EDFC56E0F0F71AFD53E02068F0F7E2 +:1018600022FD4FE0206800F079FA4BE0206800F09C +:101870007BFA47E0206800F07CFA43E02078A26819 +:10188000616800F07BFA3DE0207800F083FA39E0EF +:10189000207800F08BFA35E02078616800F093FA48 +:1018A00030E02078616800F09AFA2BE02179207806 +:1018B00000F0ACFB26E02068FEF73FFA22E020684B +:1018C000FEF710FD1EE02068FEF7F4FC1AE020464B +:1018D00007C800F078FC15E0206800F0C0FC11E0BB +:1018E0006168206800F0E2FC0CE0206800F04EFE29 +:1018F00008E009E003E0FFE700F061FE02E0206895 +:1019000000F079FE206010BD0120086010BD0000CD +:1019100010B572B600F0E4F800280BD0EEF7C0FC6A +:10192000FEF7E1FD00F039FB72490020C8628862D1 +:101930007149086062B6002010BDF3B50025012092 +:101940000007C06A81B0C0430006000E0AD16B4890 +:101950000168491C05D000686949884202D069487D +:10196000FEBD012572B600F0BBF8002801D062B6BA +:1019700088E0EEF701FCEEF797FC634C634A002128 +:101980002368CB40DB0720D00346CB40DB0718D1D0 +:101990004BB2002B07DA1E07360F083EB608B6001A +:1019A000B618F66904E09E08594FB600F619366875 +:1019B0009B07DB0EDE4033069B0F012B05D0032B6C +:1019C00003D062B64F48401EFEBD491C2029D7D324 +:1019D000019C01204F49230001F078F914222424AE +:1019E0002424242424240B0D1012142016181A1C4D +:1019F0001E2F002400E00124C86314E00224FBE74A +:101A00000324F9E70424F7E70824F5E70924F3E7BA +:101A10000A24F1E70B24EFE70C24EDE70524EBE7BC +:101A2000072400E00624D06901210002000AC9074A +:101A30000843D061002D04D009E062B60120000304 +:101A4000FEBD2C4D3448E862EEF72EFCA8622A4910 +:101A500032480860324902980860EEF725FC2146BA +:101A600000F082FAFEF706FD00F04CFC00F0FEFAF2 +:101A70000198EEF7E3FB040062B603D0FFF748FFDE +:101A80002046FEBD0020FEBD10B5044600F028F83B +:101A9000002800D001202070002010BD21491848E6 +:101AA00008600020704710B50C46102808D0112897 +:101AB0000BD012280CD013280ED00120086010BDC6 +:101AC00061682068FFF739FF08E0FFF721FF05E0B4 +:101AD0002068FFF7D9FF01E0FFF7E0FF206010BDAD +:101AE00005480E490068884201D101207047002056 +:101AF00070470000000500400401002000100010A5 +:101B0000004001000210000000E100E000ED00E0F4 +:101B100000E400E04000004000200000EFBEADDE29 +:101B200010010020000000208107C90E002808DAFB +:101B30000007000F08388008814A80008018C069BB +:101B400004E080087F4A800080180068C8400006D2 +:101B5000800F704710B5044600F0DBF8002813D062 +:101B60002046FFF7E1FFC0B200F0E1F800280DD0F9 +:101B70007549E2060B78D20E01209040002B08D068 +:101B80004A681043486006E0704810BD6F48401C2A +:101B900010BD6F490860002010BD10B5044600F06C +:101BA000B8F800280BD06849E2060B78D20E012065 +:101BB0009040002B05D04A6882434A6004E06348A5 +:101BC00010BD634980310860002010BD70B50D461E +:101BD000044600F09EF800280BD05E480068E2063C +:101BE000D20E01219140084000D001202860002041 +:101BF00070BD564870BD10B5044600F08AF8002844 +:101C000007D0E106C90E0120884052490860002033 +:101C100010BD4E4810BD10B5044600F07AF80028FB +:101C200008D0E106C90E012088404A498031086089 +:101C3000002010BD454810BD70B50D46044600F0AB +:101C400068F8002819D0284600F071F8002816D04E +:101C5000A007C20EFF209040A907090E9140002C5A +:101C600010DA2207120F083A9308354A9B009B1896 +:101C7000DA6982430A43DA610CE0344870BD3348C4 +:101C8000401C70BDA3082F4A9B009B181A68824312 +:101C90000A431A60002070BD70B50C46054600F07E +:101CA00038F8002805D02846FFF73EFF20700020B6 +:101CB00070BD264870BDBFF34F8F21492648C860CC +:101CC000BFF34F8FFEE770B51F4C0546217801200A +:101CD00000290ED1207072B600F06EF91C4E8036CD +:101CE00031688143616000F067F9C043306062B6DB +:101CF00000202870002070BD13490A78002A06D001 +:101D0000002804D1124A48681060002008700020A2 +:101D1000704710B50446202805DA00F04DF901217E +:101D2000A140084201D0002010BD012010BD0128B3 +:101D300003D0032801D00020704701207047000025 +:101D400000ED00E000E400E01401002001200000AC +:101D500000E100E000E200E00400FA05364909680D +:101D6000C9B20160002070473349C0B2486000200A +:101D700070473149C0B2886000207047082801D3FD +:101D80002E4870472C4BC0001033C01801604260D1 +:101D900000207047022802D32848401C7047284979 +:101DA000C00040180121016000207047022802D3C2 +:101DB0002248401C70472249C000091D40180121DB +:101DC000016000207047022802D31C48401C704765 +:101DD0001C4A80008018C9B20160002070470228A8 +:101DE00002D31648401C7047164A800080180068CD +:101DF000C0B208600020704710B5FF200E49C043F4 +:101E000088600D4B082210330021D000C0180160FB +:101E10004160521C102AF8D30A4B00208200D218CD +:101E2000022801D3116002E01468E4B21460401C7F +:101E30000428F3D310BD000000F501400820000085 +:101E400000F0014000F80140F8B504468007002585 +:101E50000126002804DA5A48C563C6630220844379 +:101E6000E00404D55748C563C6638014844360000A +:101E700003D55548456080058443E00504D55348A3 +:101E8000C563C66380158443A00404D55048C56368 +:101E9000C6634014844360042704C00FF90F8842CE +:101EA00003D04CA1612000F00CFEB80F0AD04E49BF +:101EB000CD634E48C563C563CE63C663C663032066 +:101EC0008003844320050AD5494FFD632F20EEF798 +:101ED0006BF9FE632F20EEF767F9F8148443002CAA +:101EE00003DAFFF789FF640064084248044203D024 +:101EF00038A1902000F0E5FDF8BDF0B500210A46BC +:101F0000FF230446CC40E4072AD04CB2E606F60E86 +:101F10000125B540384E3560384E3560002C11DA59 +:101F200025072D0F083DAE08354DB6007619F56929 +:101F3000A407E70E1C46BC40A5431446BC402543FD +:101F4000F5610DE0A6082F4DB60076193568A40797 +:101F5000E70E1C46BC40A5431446BC4025433560F3 +:101F6000491C2029CDD3F0BD70B5274C0D4620600B +:101F7000FFF76AFF2068FFF7C0FF2846F0F720FA56 +:101F8000FDF7C6FEFDF772FDFFF736FFFDF7C5FC56 +:101F9000F0F702FB00F06AF870BD10B51A4C20682B +:101FA000FFF752FF2068FFF7A8FFFFF725FFF0F7C4 +:101FB0008CFA0020206010BD1348006870470000B4 +:101FC000C01F0040C0CF004000E50140C08F00406E +:101FD000C0DF00407372635C736F635F636F6E6634 +:101FE00069672E6300000000C0EF0040C0FF0040A2 +:101FF000C0BF0040FEFF0FFC80E100E080E200E097 +:1020000000ED00E000E400E01C01002070B50024B9 +:1020100002460D4620462146002A1ED0012A04D041 +:10202000022A04D0032A1ED103E0012002E002208C +:1020300013E003202B0000F049FE07160507090BEB +:102040000D0F1600012108E0022106E0032104E043 +:10205000042102E0052100E00621FEF7B1FA002884 +:1020600001D0204670BD0724FBE700009B490020FB +:10207000087088709A490870704770B5974C0E4682 +:102080006178884203D097A15A2000F01AFD0325F9 +:10209000330000F01BFE0953063030535353534AAC +:1020A00053002078022803D08EA15E2000F009FDA5 +:1020B0002570A078022802D0012804D014E0A0687E +:1020C00000F004FB10E000250BE0E0680168A06868 +:1020D00000F00DFBA068001DA060E068001D6D1CF5 +:1020E000E06020698542F0D30020A070FEF710FA6E +:1020F0000420207070BD2078022803D079A17620BA +:1021000000F0DFFC60687649401C6060032801D85D +:102110004D7003E0062806D80220487070496078A8 +:10212000FEF7F0FD70BD032003E0A0780028FAD18F +:102130000220FEF703F900F0C7F870BD69A19E20E8 +:1021400000F0BFFC70BD70B50546644C00206060B7 +:102150002078012803D063A1A52000F0B2FC6049DB +:10216000022008738D6003224A7020706078FEF7A9 +:10217000C9FD70BD10B5594CA078002802D1207857 +:10218000002801D0112010BD5A48FEF700FA6070F7 +:102190006078002803D001202070002010BD0320AB +:1021A00010BD10B50124020B64040121524BA04262 +:1021B00002D29140186802E0203A586891400840E5 +:1021C00000D0012010BDF8B50E46910005464F190C +:1021D00014463F1F009100F09CFA00998002891973 +:1021E000091FB14201D2012200E00022002C03D0DD +:1021F000FF2101318C4201D90920F8BD3F498D42B0 +:1022000019D3AF4217D3854205D2874203D228465D +:102210003043800701D01020F8BD8E420BD3002A36 +:1022200009D12846FFF7BDFF002804D13846FFF743 +:10223000B8FF002801D00F20F8BDFFF79BFF002852 +:10224000FAD126480121C66085600461817020466C +:10225000312148431430FFF776FF0020F8BD10B558 +:1022600004462648800A84420BD300F052FAA0426A +:1022700001D8102010BDA0020446FFF792FF0028ED +:1022800001D00F2010BDFFF775FF0028FAD11348C9 +:102290000221846081701A48FFF755FF002010BDAD +:1022A0001648010B01208840401E704700B50B46C0 +:1022B0000246FFF7F5FF104201D00F2000BD0E4887 +:1022C00002604360002000BD10B5044C6078FEF74A +:1022D000B2F900202070A07010BD00002001002085 +:1022E000281C00207372635C736F635F666C61739C +:1022F000682E63007B2001000006004000400100C2 +:1023000010540000E349002048700870887048604D +:10231000E1490873704710B5E048826A81158A4325 +:10232000DC498B691A438262826A0223C9699A4333 +:102330000A438262FEF7ECF810BD002814D0417801 +:10234000002901D001290ED18168D54A6439914212 +:1023500009D24068D349884205D8CE494978012935 +:1023600003D1002801D0002070470120704770B5CC +:102370000446FEF782FD0068002803D0CAA1802031 +:1023800000F09FFB0126C34D002C06D020780028CA +:102390002BD0012827D0022801D0EE7023E0287826 +:1023A000002820D16068FFF7C8FF0028F5D06068DA +:1023B0000078002800D00220B74E30706068806836 +:1023C0009630B06060684168E868FEF7F2FB7060C4 +:1023D000606803244078002808D07470AE49A8785B +:1023E000FEF790FC6C70FFF796FF70BD02207070D6 +:1023F000F4E7F8B5A74C0D46A178884203D0AAA10E +:10240000BF2000F05EFB284600270526A24D0300F2 +:1024100000F05CFC09061135587F8997B8A2B80016 +:102420006078032806D06078022803D09EA1C320DC +:1024300000F047FBF8BD6078032806D060780228DA +:1024400003D099A1C72000F03CFB04206070E77026 +:102450002078002802D0FEF75BF8F8BDA86896380F +:10246000FEF7F1FF6868E0608C48816A82151140D0 +:10247000A161806A02210840E06100205CE0607890 +:10248000032806D06078022803D087A1E22000F05C +:1024900018FB2078002802D000F0EFF8F8BD607833 +:1024A000032802D02069410020E004202DE07A4971 +:1024B000A078FEF727FCF8BD0420FDF73FFF0120C0 +:1024C0006070F8BD6078032807D06078022804D0D7 +:1024D000FF2075A1043000F0F4FA20780028DBD149 +:1024E0006078032810D06868A06076492161A068F0 +:1024F000FEF75FFB686069686069FFF711F868497B +:1025000063318842D8DCD2E70520FDF717FF6670FB +:10251000F8BD6078042804D0FF2063A1263000F0C5 +:10252000D0FA022008E06078042804D0FF205EA1E1 +:102530002B3000F0C6FA012061688847FFF717FFCB +:10254000F8BD6078042804D0FF2057A1303000F097 +:10255000B8FAFFF7E0FEF8BD6078042804D0FF2049 +:1025600051A1353000F0ADFA2078002894D1E07800 +:10257000002805D00620FDF7E1FE6670E770F8BD83 +:102580000720C2E7FF2048A14B3051E770B5050096 +:1025900005D0404C6078002803D0112070BD102079 +:1025A00070BD4948FDF7F3FFA070A078002804D063 +:1025B000656001206070002070BD032070BD10B503 +:1025C00034480178002901D0112010BD417800293C +:1025D0000BD0417805290AD04178012907D0012183 +:1025E00001704078052802D003E00F2010BD00F0F4 +:1025F00044F8002010BD70B5264C064660780528CA +:1026000004D06078012801D00F2070BD002E25D0A5 +:102610003046FFF792FE002822D060781E4D012838 +:1026200020D07168E068FEF7C4FA6860B068963040 +:10263000A8603078002800D0032028707078002827 +:1026400017D0032068706078052814D002206070CD +:102650001149A078FEF756FB002070BD102070BD18 +:10266000072070BDFEF702F86061A0601549216186 +:10267000D9E70220E6E70320E9E710B5054CA0788A +:10268000FDF7D9FF0820FDF759FE0020607020708B +:1026900010BD000034010020381C0020000500405F +:1026A0003D860100FF1FA1077372635C736F635F58 +:1026B000726164696F5F74696D65736C6F742E63AA +:1026C0000000000024080000F3230100134A022147 +:1026D000516013490B68002BFCD0906008680028FB +:1026E000FCD00020506008680028FCD0704710B56E +:1026F0000A4B01225A600A4A1468002CFCD001607F +:1027000010680028FCD00020586010680028FCD019 +:1027100010BD0120000740697047000000E501403E +:1027200000E40140704770477047704770470346A8 +:1027300010B50B439B070FD1042A0DD308C810C94D +:10274000121FA342F8D018BA21BA884201D9012039 +:1027500010BD0020C04310BD002A03D0D30703D012 +:10276000521C07E0002010BD03780C78401C491C67 +:102770001B1B07D103780C78401C491C1B1B01D183 +:10278000921EF1D1184610BDF8B5042A2CD3830748 +:1027900012D00B78491C0370401C521E83070BD0CB +:1027A0000B78491C0370401C521E830704D00B7821 +:1027B000491C0370401C521E8B079B0F05D0C91A81 +:1027C000DF002023DE1B08C90AE0EDF7FDFCF8BDA1 +:1027D0001D4608C9FD401C46B4402C4310C0121FC2 +:1027E000042AF5D2F308C91A521EF0D40B78491CFA +:1027F0000370401C521EEAD40B78491C0370401C25 +:10280000521EE4D409780170F8BD01E004C0091F2C +:102810000429FBD28B0701D50280801CC90700D098 +:102820000270704700290BD0C30702D00270401C11 +:10283000491E022904D3830702D50280801C891E09 +:10284000E3E70022EEE70022DFE70378C2781946CB +:10285000437812061B0219438378C0781B0419437E +:1028600011430902090A000608437047020A08706A +:102870004A70020C8A70020ECA7070470022030967 +:102880008B4273D3030A8B4258D3030B8B423CD346 +:10289000030C8B4221D312E003460B437FD400226A +:1028A00043088B4274D303098B425FD3030A8B42E4 +:1028B00044D3030B8B4228D3030C8B420DD3FF224E +:1028C000090212BA030C8B4202D31212090265D01C +:1028D000030B8B4219D300E0090AC30B8B4201D3CF +:1028E000CB03C01A5241830B8B4201D38B03C01A16 +:1028F0005241430B8B4201D34B03C01A5241030B8D +:102900008B4201D30B03C01A5241C30A8B4201D33D +:10291000CB02C01A5241830A8B4201D38B02C01AE8 +:102920005241430A8B4201D34B02C01A5241030A5F +:102930008B4201D30B02C01A5241CDD2C3098B4244 +:1029400001D3CB01C01A524183098B4201D38B01C1 +:10295000C01A524143098B4201D34B01C01A524164 +:1029600003098B4201D30B01C01A5241C3088B42A9 +:1029700001D3CB00C01A524183088B4201D38B0094 +:10298000C01A524143088B4201D34B00C01A524136 +:10299000411A00D201465241104670475DE0CA0F0D +:1029A00000D04942031000D34042534000229C46CD +:1029B00003098B422DD3030A8B4212D3FC228901D7 +:1029C00012BA030A8B420CD3890192118B4208D3AD +:1029D000890192118B4204D389013AD0921100E00F +:1029E0008909C3098B4201D3CB01C01A5241830923 +:1029F0008B4201D38B01C01A524143098B4201D350 +:102A00004B01C01A524103098B4201D30B01C01A7A +:102A10005241C3088B4201D3CB00C01A52418308F4 +:102A20008B4201D38B00C01A5241D9D243088B424A +:102A300001D34B00C01A5241411A00D201466346ED +:102A400052415B10104601D34042002B00D5494251 +:102A5000704763465B1000D3404201B50020C0467A +:102A6000C04602BD704770477047704710B500F010 +:102A700077F810BD30B58C180278401C13071B0F77 +:102A800001D10378401C120906D10278401C03E0F2 +:102A90000578401C0D70491C5B1EF9D101E00B70DC +:102AA000491C521EFBD1A142E6D3002030BD0000DC +:102AB00001231B68134B1860134B1960134B1A60EA +:102AC0007047134A134B13607246053AF0E7114AF8 +:102AD0000F4B1B689A420ED10D4B002018600198D5 +:102AE0000D4B04B598470CBC9E46024602980099CF +:102AF0000A4B1B68184706980599094B1B68DB6849 +:102B0000184700005C0100206001002064010020E3 +:102B100054010020EFBEADDEAD1501001001002014 +:102B2000000000200B4A12680B4B9A420AD1004762 +:102B3000084A1268084B9A4204D101B5FDF773F9AF +:102B400003BC8E4605490968EFF305808000014407 +:102B50000968084704010020EFBEADDE0000002038 +:102B60001C481D497047FFF7FBFFEDF7E7FA00BD72 +:102B700001200007C06AC0B2FF2804D117481849D5 +:102B80000968884202D0174817490160174A136044 +:102B90005B68184720BFFDE7154B1B680F4999423A +:102BA00002D018688842F5D004D1124B18680B493E +:102BB0008842EFD080F308880F49884204DD0F482F +:102BC000026802210A4302600D4880470D48804791 +:102BD0000D480047481C0020481C0020FFFFFFFF55 +:102BE000001000102C050040040000000000002030 +:102BF00014100010004001000020002024050040B7 +:102C0000C3150100712B0100B12A01001248704563 +:102C100002D1EFF3098101E0EFF3088188690238FE +:102C20000078102812DB20280EDB0C4A12680C4BAF +:102C30009A4203D1602804DB0A4A10470220086048 +:102C40007047094A10470000084A1047084A1268AE +:102C50002C32126810470000FDFFFFFF0401002026 +:102C6000EFBEADDEAD0200000D170100A71A010096 +:102C7000000000200A480B4908470B48094908474B +:102C80000A48084908470A480649084709480549C3 +:102C9000084709480349084708480249084700000F +:102CA000E1230000252B0100412B0000EB2900004F +:102CB000992900004D270000A72A000043260000A4 +:102CC00003B40148019001BD0500002030B47446F2 +:102CD000641E2578641CAB4200D21D46635D5B0018 +:102CE000E31830BC1847000002490020C8612039B1 +:102CF00008727047A003002000020206FFFFFFFFDA +:102D00000000FFFF0102040810204080555555D6F1 +:102D1000BE898E00F401FA00960064004B00320078 +:102D20001E0014000100030000000100000000006C +:102D3000000000000000000000000000870000000C +:102D4000000000000000000000000000000002037E +:102D5000040500000E0F0000882D01000400002073 +:102D60001000000004010000982D01001400002054 +:102D700054010000742A0100C02D010068010020E8 +:102D8000E01A0000200100000249022208681042F7 +:102D9000FCD0704700E200E0A1074E56FF9900CD3D +:102DA00029023501022B013601000100D83720FB32 +:102DB000349B5F8074800010027001E4B52A01002A +:020000041000EA +:1010000000400100FFFFFFFFFFFFFFFFFFFFFFFFAB +:041010004900FFFF95 +:04000005000000C136 +:00000001FF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,58 @@ +/* mbed Microcontroller Library + * Copyright (c) 2013 Nordic Semiconductor + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define STDIO_UART_TX TX_PIN_NUMBER +#define STDIO_UART_RX RX_PIN_NUMBER +#define STDIO_UART UART_0 + +typedef enum { + UART_0 = (int)NRF_UART0_BASE +} UARTName; + + +typedef enum { + SPI_0 = (int)NRF_SPI0_BASE, + SPI_1 = (int)NRF_SPI1_BASE, + SPIS = (int)NRF_SPIS1_BASE +} SPIName; + +typedef enum { + PWM_1 = 0, + PWM_2 +} PWMName; + +typedef enum { + I2C_0 = (int)NRF_TWI0_BASE, + I2C_1 = (int)NRF_TWI1_BASE +} I2CName; + +typedef enum { + ADC0_0 = (int)NRF_ADC_BASE +} ADCName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,153 @@ +/* mbed Microcontroller Library + * Copyright (c) 2013 Nordic Semiconductor + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 3 + +typedef enum { + p0 = 0, + p1 = 1, + p2 = 2, + p3 = 3, + p4 = 4, + p5 = 5, + p6 = 6, + p7 = 7, + p8 = 8, + p9 = 9, + p10 = 10, + p11 = 11, + p12 = 12, + p13 = 13, + p14 = 14, + p15 = 15, + p16 = 16, + p17 = 17, + p18 = 18, + p19 = 19, + p20 = 20, + p21 = 21, + p22 = 22, + p23 = 23, + p24 = 24, + p25 = 25, + p26 = 26, + p27 = 27, + p28 = 28, + p29 = 29, + p30 = 30, +// p31=31, + + P0_0 = p0, + P0_1 = p1, + P0_2 = p2, + P0_3 = p3, + P0_4 = p4, + P0_5 = p5, + P0_6 = p6, + P0_7 = p7, + + P0_8 = p8, + P0_9 = p9, + P0_10 = p10, + P0_11 = p11, + P0_12 = p12, + P0_13 = p13, + P0_14 = p14, + P0_15 = p15, + + P0_16 = p16, + P0_17 = p17, + P0_18 = p18, + P0_19 = p19, + P0_20 = p20, + P0_21 = p21, + P0_22 = p22, + P0_23 = p23, + + P0_24 = p24, + P0_25 = p25, + P0_26 = p26, + P0_27 = p27, + P0_28 = p28, + P0_29 = p29, + P0_30 = p30, + + LED1 = p18, + LED2 = p19, + LED3 = p18, + LED4 = p19, + + BUTTON1 = p16, + BUTTON2 = p17, + + RX_PIN_NUMBER = p11, + TX_PIN_NUMBER = p9, + CTS_PIN_NUMBER = p10, + RTS_PIN_NUMBER = p8, + + // mBed interface Pins + USBTX = TX_PIN_NUMBER, + USBRX = RX_PIN_NUMBER, + + SPI_PSELMOSI0 = p20, + SPI_PSELMISO0 = p22, + SPI_PSELSS0 = p24, + SPI_PSELSCK0 = p25, + + SPI_PSELMOSI1 = p12, + SPI_PSELMISO1 = p13, + SPI_PSELSS1 = p14, + SPI_PSELSCK1 = p15, + + SPIS_PSELMOSI = p12, + SPIS_PSELMISO = p13, + SPIS_PSELSS = p14, + SPIS_PSELSCK = p15, + + I2C_SDA0 = p22, + I2C_SCL0 = p20, + + I2C_SDA1 = p13, + I2C_SCL1 = p15, + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullNone = 0, + PullDown = 1, + PullUp = 3, + PullDefault = PullUp +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,30 @@ +/* mbed Microcontroller Library + * Copyright (c) 2013 Nordic Semiconductor + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0 //GPIO pins 0-31 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,57 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 0 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 0 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 0 + +#define DEVICE_ERROR_PATTERN 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NRF51822/TARGET_NORDIC/TARGET_NRF51822/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,72 @@ +/* mbed Microcontroller Library + * Copyright (c) 2013 Nordic Semiconductor + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct serial_s { + NRF_UART_Type *uart; + int index; +}; + +struct spi_s { + NRF_SPI_Type *spi; + NRF_SPIS_Type *spis; +}; + +struct port_s { + __IO uint32_t *reg_cnf; + __IO uint32_t *reg_out; + __I uint32_t *reg_in; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + PWMName pwm; + PinName pin; +}; + +struct i2c_s { + NRF_TWI_Type *i2c; + PinName sda; + PinName scl; + int freq; +}; + +struct analogin_s { + ADCName adc; +}; + +struct gpio_irq_s { + uint32_t ch; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_NRF51822/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_NRF51822/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_NRF51822/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_NRF51822/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_NRF51822/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_NRF51822/TOOLCHAIN_ARM_STD/system_nrf51822.o has changed
--- a/TARGET_NRF51822/ble.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,302 +0,0 @@ -/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ -/** - @addtogroup BLE_COMMON BLE SoftDevice Common - @{ - @defgroup ble_api Events, type definitions and API calls - @{ - - @brief Module independent events, type definitions and API calls for the S110 SoftDevice. - - */ - -#ifndef BLE_H__ -#define BLE_H__ - -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_gap.h" -#include "ble_l2cap.h" -#include "ble_gatt.h" -#include "ble_gattc.h" -#include "ble_gatts.h" - -/** - * @brief Common API SVC numbers. - */ -enum BLE_COMMON_SVCS -{ - SD_BLE_EVT_GET = BLE_SVC_BASE, /**< Get an event from the pending events queue. */ - SD_BLE_TX_BUFFER_COUNT_GET, /**< Get the total number of available application transmission buffers from the stack. */ - SD_BLE_UUID_VS_ADD, /**< Add a Vendor Specific UUID. */ - SD_BLE_UUID_DECODE, /**< Decode UUID bytes. */ - SD_BLE_UUID_ENCODE, /**< Encode UUID bytes. */ - SD_BLE_VERSION_GET, /**< Get the local version information (company id, LMP Version, LMP Subversion). */ - SD_BLE_USER_MEM_REPLY, /**< User Memory Reply. */ -}; - -/** @brief Required pointer alignment for BLE Events. -*/ -#define BLE_EVTS_PTR_ALIGNMENT 4 - -/** @defgroup BLE_USER_MEM_TYPES User Memory Types - * @{ */ -#define BLE_USER_MEM_TYPE_INVALID 0x00 /**< Invalid User Memory Types. */ -#define BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES 0x01 /**< User Memory for GATTS queued writes. */ -/** @} */ - -/** @brief Maximum number of Vendor Specific UUIDs. -*/ -#define BLE_UUID_VS_MAX_COUNT 10 - -/** - * @brief BLE Module Independent Event IDs. - */ -enum BLE_COMMON_EVTS -{ - BLE_EVT_TX_COMPLETE = BLE_EVT_BASE, /**< Transmission Complete. */ - BLE_EVT_USER_MEM_REQUEST, /**< User Memory request. */ - BLE_EVT_USER_MEM_RELEASE /**< User Memory release. */ -}; - -/**@brief User Memory Block. */ -typedef struct -{ - uint8_t* p_mem; /**< Pointer to the start of the user memory block. */ - uint16_t len; /**< Length in bytes of the user memory block. */ -} ble_user_mem_block_t; - -/** - * @brief TX complete event. - */ -typedef struct -{ - uint8_t count; /**< Number of packets transmitted. */ -} ble_evt_tx_complete_t; - -/**@brief Event structure for BLE_EVT_USER_MEM_REQUEST. */ -typedef struct -{ - uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ -} ble_evt_user_mem_request_t; - -/**@brief Event structure for BLE_EVT_USER_MEM_RELEASE. */ -typedef struct -{ - uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ - ble_user_mem_block_t mem_block; /**< User memory block */ -} ble_evt_user_mem_release_t; - - -/**@brief Event structure for events not associated with a specific function module. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which this event occured. */ - union - { - ble_evt_tx_complete_t tx_complete; /**< Transmission Complete. */ - ble_evt_user_mem_request_t user_mem_request; /**< User Memory Request Event Parameters. */ - ble_evt_user_mem_release_t user_mem_release; /**< User Memory Release Event Parameters. */ - } params; -} ble_common_evt_t; - -/**@brief BLE Event header. */ -typedef struct -{ - uint16_t evt_id; /**< Value from a BLE_<module>_EVT series. */ - uint16_t evt_len; /**< Length in octets excluding this header. */ -} ble_evt_hdr_t; - -/**@brief Common BLE Event type, wrapping the module specific event reports. */ -typedef struct -{ - ble_evt_hdr_t header; /**< Event header. */ - union - { - ble_common_evt_t common_evt; /**< Common Event, evt_id in BLE_EVT_* series. */ - ble_gap_evt_t gap_evt; /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */ - ble_l2cap_evt_t l2cap_evt; /**< L2CAP originated event, evt_id in BLE_L2CAP_EVT* series. */ - ble_gattc_evt_t gattc_evt; /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */ - ble_gatts_evt_t gatts_evt; /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */ - } evt; -} ble_evt_t; - - -/** - * @brief Version Information. - */ -typedef struct -{ - uint8_t version_number; /**< LMP Version number for BT 4.0 spec is 6 (https://www.bluetooth.org/technical/assignednumbers/link_layer.htm). */ - uint16_t company_id; /**< Company ID, Nordic Semiconductor's company ID is 89 (0x0059) (https://www.bluetooth.org/apps/content/Default.aspx?doc_id=49708). */ - uint16_t subversion_number; /**< LMP Sub Version number corresponds to the SoftDevice Config ID. */ -} ble_version_t; - - -/**@brief Get an event from the pending events queue. - * - * @param[in] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. This buffer <b>must be 4-byte aligned in memory</b>. - * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length. - * - * @details This call allows the application to pull a BLE event from the BLE stack. The application is signalled that an event is - * available from the BLE Stack by the triggering of the SD_EVT_IRQn interrupt (mapped to IRQ 22). - * The application is free to choose whether to call this function from thread mode (main context) or directly from the Interrupt Service Routine - * that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher priority than the application, this function should be called - * in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the stack. - * Failure to do so could potentially leave events in the internal queue without the application being aware of this fact. - * Sizing the p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to be copied into - * application memory. If the buffer provided is not large enough to fit the entire contents of the event, @ref NRF_ERROR_DATA_SIZE will be returned - * and the application can then call again with a larger buffer size. - * Please note that because of the variable length nature of some events, sizeof(ble_evt_t) will not always be large enough to fit certain events, - * and so it is the application's responsability to provide an amount of memory large enough so that the relevant event is copied in full. - * The application may "peek" the event length by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return. - * - * @note The pointer supplied must be aligned to the extend defined by @ref BLE_EVTS_PTR_ALIGNMENT - * - * @return @ref NRF_SUCCESS Event pulled and stored into the supplied buffer. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @return @ref NRF_ERROR_NOT_FOUND No events ready to be pulled. - * @return @ref NRF_ERROR_DATA_SIZE Event ready but could not fit into the supplied buffer. - */ -SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t* p_dest, uint16_t *p_len)); - - -/**@brief Get the total number of available application transmission buffers in the BLE stack. - * - * @details This call allows the application to obtain the total number of - * transmission buffers available for application data. Please note that - * this does not give the number of free buffers, but rather the total amount of them. - * The application has two options to handle its own application transmission buffers: - * - Use a simple arithmetic calculation: at boot time the application should use this function - * to find out the total amount of buffers available to it and store it in a variable. - * Every time a packet that consumes an application buffer is sent using any of the - * exposed functions in this BLE API, the application should decrement that variable. - * Conversely, whenever a @ref BLE_EVT_TX_COMPLETE event is received by the application - * it should retrieve the count field in such event and add that number to the same - * variable storing the number of available packets. - * This mechanism allows the application to be aware at any time of the number of - * application packets available in the BLE stack's internal buffers, and therefore - * it can know with certainty whether it is possible to send more data or it has to - * wait for a @ref BLE_EVT_TX_COMPLETE event before it proceeds. - * - Choose to simply not keep track of available buffers at all, and instead handle the - * @ref BLE_ERROR_NO_TX_BUFFERS error by queueing the packet to be transmitted and - * try again as soon as a @ref BLE_EVT_TX_COMPLETE event arrives. - * - * The API functions that <b>may</b> consume an application buffer depending on - * the parameters supplied to them can be found below: - * - * - @ref sd_ble_gattc_write (write witout response only) - * - @ref sd_ble_gatts_hvx (notifications only) - * - @ref sd_ble_l2cap_tx (all packets) - * - * @param[out] p_count Pointer to a uint8_t which will contain the number of application transmission buffers upon - * successful return. - * - * @return @ref NRF_SUCCESS Number of application transmission buffers retrieved successfully. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_TX_BUFFER_COUNT_GET, uint32_t, sd_ble_tx_buffer_count_get(uint8_t* p_count)); - - -/**@brief Add a Vendor Specific UUID. - * - * @details This call enables the application to add a vendor specific UUID to the BLE stack's table, - * for later use all other modules and APIs. This then allows the application to use the shorter, - * 24-bit @ref ble_uuid_t format when dealing with both 16-bit and 128-bit UUIDs without having to - * check for lengths and having split code paths. The way that this is accomplished is by extending the - * grouping mechanism that the Bluetooth SIG standard base UUID uses for all other 128-bit UUIDs. The - * type field in the @ref ble_uuid_t structure is an index (relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN) - * to the table populated by multiple calls to this function, and the uuid field in the same structure - * contains the 2 bytes at indices 12 and 13. The number of possible 128-bit UUIDs available to the - * application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536, - * although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array. - * - * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by - * the 16-bit uuid field in @ref ble_uuid_t. - * - * - * @param[in] p_vs_uuid Pointer to a 16-octet (128-bit) little endian Vendor Specific UUID disregarding - * bytes 12 and 13. - * @param[out] p_uuid_type Pointer where the type field in @ref ble_uuid_t corresponding to this UUID will be stored. - * - * @return @ref NRF_SUCCESS Successfully added the Vendor Specific UUID. - * @return @ref NRF_ERROR_INVALID_ADDR If p_vs_uuid or p_uuid_type is NULL or invalid. - * @return @ref NRF_ERROR_NO_MEM If there are no more free slots for VS UUIDs. - * @return @ref NRF_ERROR_FORBIDDEN If p_vs_uuid has already been added to the VS UUID table. - */ -SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const * const p_vs_uuid, uint8_t * const p_uuid_type)); - - -/** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure. - * - * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared - * to the corresponding ones in each entry of the table of vendor specific UUIDs pouplated with @ref sd_ble_uuid_vs_add - * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index - * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type. - * - * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE. - * - * @param[in] uuid_le_len Length in bytes of the buffer pointed to by p_uuid_le (must be 2 or 16 bytes). - * @param[in] p_uuid_le Pointer pointing to little endian raw UUID bytes. - * @param[in,out] p_uuid Pointer to a @ref ble_uuid_t structure to be filled in. - * - * @return @ref NRF_SUCCESS Successfully decoded into the @ref ble_uuid_t structure. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_LENGTH Invalid UUID length. - * @return @ref NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs. - */ -SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const * const p_uuid_le, ble_uuid_t * const p_uuid)); - - -/** @brief Encode a @ref ble_uuid_t structure into little endian raw UUID bytes (16-bit or 128-bit). - * - * @note The pointer to the destination buffer p_uuid_le may be NULL, in which case only the validitiy and size of p_uuid is computed. - * - * @param[in] p_uuid Pointer to a @ref ble_uuid_t structure that will be encoded into bytes. - * @param[out] p_uuid_le_len Pointer to a uint8_t that will be filled with the encoded length (2 or 16 bytes). - * @param[out] p_uuid_le Pointer to a buffer where the little endian raw UUID bytes (2 or 16) will be stored. - * - * @return @ref NRF_SUCCESS Successfully encoded into the buffer. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid UUID type. - */ -SVCALL(SD_BLE_UUID_ENCODE, uint32_t, sd_ble_uuid_encode(ble_uuid_t const * const p_uuid, uint8_t * const p_uuid_le_len, uint8_t * const p_uuid_le)); - - -/**@brief Get Version Information. - * - * @details This call allows the application to get the BLE stack version information. - * - * @param[in] p_version Pointer to ble_version_t structure to be filled in. - * - * @return @ref NRF_SUCCESS Version information stored successfully. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_BUSY The stack is busy (typically doing a locally-initiated disconnection procedure). - */ -SVCALL(SD_BLE_VERSION_GET, uint32_t, sd_ble_version_get(ble_version_t * p_version)); - - -/**@brief Provide a user memory block. - * - * @note This call can only be used as a response to a @ref BLE_EVT_USER_MEM_REQUEST event issued to the application. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_block Pointer to a user memory block structure. - * - * @return @ref NRF_SUCCESS Successfully queued a response to the peer. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_STATE No execute write request pending. - */ -SVCALL(SD_BLE_USER_MEM_REPLY, uint32_t, sd_ble_user_mem_reply(uint16_t conn_handle, ble_user_mem_block_t *p_block)); - -#endif /* BLE_H__ */ - -/** - @} - @} -*/
--- a/TARGET_NRF51822/ble_err.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ - /** - @addtogroup BLE_COMMON - @{ - @addtogroup nrf_error - @{ - @ingroup BLE_COMMON - @} - - @defgroup ble_err General error codes - @{ - - @brief General error code definitions for the BLE API. - - @ingroup BLE_COMMON -*/ -#ifndef NRF_BLE_ERR_H__ -#define NRF_BLE_ERR_H__ - -#include "nrf_error.h" - -/* @defgroup BLE_ERRORS Error Codes - * @{ */ -#define BLE_ERROR_INVALID_CONN_HANDLE (NRF_ERROR_STK_BASE_NUM+0x001) /**< Invalid connection handle. */ -#define BLE_ERROR_INVALID_ATTR_HANDLE (NRF_ERROR_STK_BASE_NUM+0x002) /**< Invalid attribute handle. */ -#define BLE_ERROR_NO_TX_BUFFERS (NRF_ERROR_STK_BASE_NUM+0x003) /**< Buffer capacity exceeded. */ -/** @} */ - - -/** @defgroup BLE_ERROR_SUBRANGES Module specific error code subranges - * @brief Assignment of subranges for module specific error codes. - * @note For specific error codes, see ble_<module>.h or ble_error_<module>.h. - * @{ */ -#define NRF_L2CAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x100) /**< L2CAP specific errors. */ -#define NRF_GAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x200) /**< GAP specific errors. */ -#define NRF_GATTC_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x300) /**< GATT client specific errors. */ -#define NRF_GATTS_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x400) /**< GATT server specific errors. */ -/** @} */ - -#endif - - -/** - @} - @} -*/
--- a/TARGET_NRF51822/ble_gap.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,895 +0,0 @@ -/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ -/** - @addtogroup BLE_GAP Generic Access Profile (GAP) - @{ - @brief Definitions and prototypes for the GAP interface. - */ - -#ifndef BLE_GAP_H__ -#define BLE_GAP_H__ - -#include "ble_types.h" -#include "ble_ranges.h" -#include "nrf_svc.h" - -/** - * @brief GAP API SVC numbers. - */ -enum BLE_GAP_SVCS -{ - SD_BLE_GAP_ADDRESS_SET = BLE_GAP_SVC_BASE, /**< Set own Bluetooth Address. */ - SD_BLE_GAP_ADDRESS_GET, /**< Get own Bluetooth Address. */ - SD_BLE_GAP_ADV_DATA_SET, /**< Set Advertisement Data. */ - SD_BLE_GAP_ADV_START, /**< Start Advertising. */ - SD_BLE_GAP_ADV_STOP, /**< Stop Advertising. */ - SD_BLE_GAP_CONN_PARAM_UPDATE, /**< Connection Parameter Update. */ - SD_BLE_GAP_DISCONNECT, /**< Disconnect. */ - SD_BLE_GAP_TX_POWER_SET, /**< Set TX Power. */ - SD_BLE_GAP_APPEARANCE_SET, /**< Set Appearance. */ - SD_BLE_GAP_APPEARANCE_GET, /**< Get Appearance. */ - SD_BLE_GAP_PPCP_SET, /**< Set PPCP. */ - SD_BLE_GAP_PPCP_GET, /**< Get PPCP. */ - SD_BLE_GAP_DEVICE_NAME_SET, /**< Set Device Name. */ - SD_BLE_GAP_DEVICE_NAME_GET, /**< Get Device Name. */ - SD_BLE_GAP_AUTHENTICATE, /**< Initiate Pairing/Bonding. */ - SD_BLE_GAP_SEC_PARAMS_REPLY, /**< Reply with Security Parameters. */ - SD_BLE_GAP_AUTH_KEY_REPLY, /**< Reply with an authentication key. */ - SD_BLE_GAP_SEC_INFO_REPLY, /**< Reply with Security Information. */ - SD_BLE_GAP_CONN_SEC_GET, /**< Obtain connection security level. */ - SD_BLE_GAP_RSSI_START, /**< Start reporting of changes in RSSI. */ - SD_BLE_GAP_RSSI_STOP, /**< Stop reporting of changes in RSSI. */ -}; - - -/** @addtogroup BLE_GAP_DEFINES Defines - * @{ */ - -/** @defgroup BLE_ERRORS_GAP SVC return values specific to GAP - * @{ */ -#define BLE_ERROR_GAP_UUID_LIST_MISMATCH (NRF_GAP_ERR_BASE + 0x000) /**< UUID list does not contain an integral number of UUIDs. */ -#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST (NRF_GAP_ERR_BASE + 0x001) /**< Use of Whitelist not permitted with discoverable advertising. */ -#define BLE_ERROR_GAP_INVALID_BLE_ADDR (NRF_GAP_ERR_BASE + 0x002) /**< The upper two bits of the address do not correspond to the specified address type. */ -/** @} */ - - -/** @defgroup BLE_GAP_ROLES GAP Roles - * @note Not explicitly used in peripheral API, but will be relevant for central API. - * @{ */ -#define BLE_GAP_ROLE_INVALID 0x0 /**< Invalid Role. */ -#define BLE_GAP_ROLE_PERIPH 0x1 /**< Peripheral Role. */ -#define BLE_GAP_ROLE_CENTRAL 0x2 /**< Central Role. */ -/** @} */ - - -/** @defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources - * @{ */ -#define BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT 0x00 /**< Advertisement timeout. */ -#define BLE_GAP_TIMEOUT_SRC_SECURITY_REQUEST 0x01 /**< Security request timeout. */ -/** @} */ - - -/** @defgroup BLE_GAP_ADDR_TYPES GAP Address types - * @{ */ -#define BLE_GAP_ADDR_TYPE_PUBLIC 0x00 /**< Public address. */ -#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC 0x01 /**< Random Static address. */ -#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE 0x02 /**< Private Resolvable address. */ -#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Private Non-Resolvable address. */ -/** @} */ - - -/** @brief BLE address length. */ -#define BLE_GAP_ADDR_LEN 6 - - -/** @defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format - * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm - * @{ */ -#define BLE_GAP_AD_TYPE_FLAGS 0x01 /**< Flags for discoverability. */ -#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**< Partial list of 16 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**< Complete list of 16 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**< Partial list of 32 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**< Complete list of 32 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**< Partial list of 128 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**< Complete list of 128 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**< Short local device name. */ -#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**< Complete local device name. */ -#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**< Transmit power level. */ -#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**< Class of device. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**< Simple Pairing Hash C. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**< Simple Pairing Randomizer R. */ -#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**< Security Manager TK Value. */ -#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**< Security Manager Out Of Band Flags. */ -#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**< Slave Connection Interval Range. */ -#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**< List of 16-bit Service Solicitation UUIDs. */ -#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**< List of 128-bit Service Solicitation UUIDs. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**< Service Data. */ -#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**< Public Target Address. */ -#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**< Random Target Address. */ -#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**< Appearance. */ -#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /**< Manufacturer Specific Data. */ -/** @} */ - - -/** @defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags - * @{ */ -#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE (0x01) /**< LE Limited Discoverable Mode. */ -#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE (0x02) /**< LE General Discoverable Mode. */ -#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED (0x04) /**< BR/EDR not supported. */ -#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER (0x08) /**< Simultaneous LE and BR/EDR, Controller. */ -#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST (0x10) /**< Simultaneous LE and BR/EDR, Host. */ -#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE Limited Discoverable Mode, BR/EDR not supported. */ -#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE General Discoverable Mode, BR/EDR not supported. */ -/** @} */ - - -/** @defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min - * @{ */ -#define BLE_GAP_ADV_INTERVAL_MIN 0x0020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */ -#define BLE_GAP_ADV_NONCON_INTERVAL_MIN 0x00A0 /**< Minimum Advertising interval in 625 us units for non connectable mode, i.e. 100 ms. */ -#define BLE_GAP_ADV_INTERVAL_MAX 0x4000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. */ - /** @} */ - - -/** @brief Maximum size of advertising data in octets. */ -#define BLE_GAP_ADV_MAX_SIZE 31 - - -/** @defgroup BLE_GAP_ADV_TYPES GAP Advertising types - * @{ */ -#define BLE_GAP_ADV_TYPE_ADV_IND 0x00 /**< Connectable undirected. */ -#define BLE_GAP_ADV_TYPE_ADV_DIRECT_IND 0x01 /**< Connectable directed. */ -#define BLE_GAP_ADV_TYPE_ADV_SCAN_IND 0x02 /**< Scannable undirected. */ -#define BLE_GAP_ADV_TYPE_ADV_NONCONN_IND 0x03 /**< Non connectable undirected. */ -/** @} */ - - -/** @defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies - * @{ */ -#define BLE_GAP_ADV_FP_ANY 0x00 /**< Allow scan requests and connect requests from any device. */ -#define BLE_GAP_ADV_FP_FILTER_SCANREQ 0x01 /**< Filter scan requests with whitelist. */ -#define BLE_GAP_ADV_FP_FILTER_CONNREQ 0x02 /**< Filter connect requests with whitelist. */ -#define BLE_GAP_ADV_FP_FILTER_BOTH 0x03 /**< Filter both scan and connect requests with whitelist. */ -/** @} */ - - -/** @defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values - * @{ */ -#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX 180 /**< Maximum advertising time in limited discoverable mode (TGAP(lim_adv_timeout) = 180s in spec (Addendum 2)). */ -#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED 0 /**< Unlimited advertising in general discoverable mode. */ -/** @} */ - - -/** @defgroup BLE_GAP_DISC_MODES GAP Discovery modes - * @{ */ -#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE 0x00 /**< Not discoverable discovery Mode. */ -#define BLE_GAP_DISC_MODE_LIMITED 0x01 /**< Limited Discovery Mode. */ -#define BLE_GAP_DISC_MODE_GENERAL 0x02 /**< General Discovery Mode. */ -/** @} */ - -/** @defgroup BLE_GAP_IO_CAPS GAP IO Capabilities - * @{ */ -#define BLE_GAP_IO_CAPS_DISPLAY_ONLY 0x00 /**< Display Only. */ -#define BLE_GAP_IO_CAPS_DISPLAY_YESNO 0x01 /**< Display and Yes/No entry. */ -#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY 0x02 /**< Keyboard Only. */ -#define BLE_GAP_IO_CAPS_NONE 0x03 /**< No I/O capabilities. */ -#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY 0x04 /**< Keyboard and Display. */ -/** @} */ - - -/** @defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types - * @{ */ -#define BLE_GAP_AUTH_KEY_TYPE_NONE 0x00 /**< No key (may be used to reject). */ -#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY 0x01 /**< 6-digit Passkey. */ -#define BLE_GAP_AUTH_KEY_TYPE_OOB 0x02 /**< Out Of Band data. */ -/** @} */ - -/** @defgroup BLE_GAP_SEC_STATUS GAP Security status - * @{ */ -#define BLE_GAP_SEC_STATUS_SUCCESS 0x00 /**< Successful parameters. */ -#define BLE_GAP_SEC_STATUS_TIMEOUT 0x01 /**< Procedure timed out. */ -#define BLE_GAP_SEC_STATUS_PDU_INVALID 0x02 /**< Invalid PDU received. */ -#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED 0x81 /**< Passkey entry failed (user cancelled or other). */ -#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE 0x82 /**< Out of Band Key not available. */ -#define BLE_GAP_SEC_STATUS_AUTH_REQ 0x83 /**< Authentication requirements not met. */ -#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE 0x84 /**< Confirm value failed. */ -#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP 0x85 /**< Pairing not supported. */ -#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE 0x86 /**< Encryption key size. */ -#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED 0x87 /**< Unsupported SMP command. */ -#define BLE_GAP_SEC_STATUS_UNSPECIFIED 0x88 /**< Unspecified reason. */ -#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS 0x89 /**< Too little time elapsed since last attempt. */ -#define BLE_GAP_SEC_STATUS_INVALID_PARAMS 0x8A /**< Invalid parameters. */ -/** @} */ - -/** @defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources - * @{ */ -#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL 0x00 /**< Local failure. */ -#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE 0x01 /**< Remote failure. */ -/** @} */ - -/** @defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits - * @{ */ -#define BLE_GAP_CP_MIN_CONN_INTVL_NONE 0xFFFF /**< No new minimum connction interval specified in connect parameters. */ -#define BLE_GAP_CP_MIN_CONN_INTVL_MIN 0x0006 /**< Lowest mimimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ -#define BLE_GAP_CP_MIN_CONN_INTVL_MAX 0x0C80 /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_NONE 0xFFFF /**< No new maximum connction interval specified in connect parameters. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_MIN 0x0006 /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_MAX 0x0C80 /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ -#define BLE_GAP_CP_SLAVE_LATENCY_MAX 0x03E8 /**< Highest slave latency permitted, in connection events. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE 0xFFFF /**< No new supervision timeout specified in connect parameters. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN 0x000A /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX 0x0C80 /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */ -/** @} */ - - -/**@brief GAP device name maximum length. */ -#define BLE_GAP_DEVNAME_MAX_LEN 31 - - -/** @defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters - * - * See @ref ble_gap_conn_sec_mode_t. - * @{ */ -/** @brief Set sec_mode pointed to by ptr to have no access rights.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr) do {(ptr)->sm = 0; (ptr)->lv = 0;} while(0) -/** @brief Set sec_mode pointed to by ptr to require no protection, open link.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0) -/** @brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0) -/** @brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0) -/** @brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0) -/** @brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0) -/** @} */ - - -/**@brief GAP Security Key Length. */ -#define BLE_GAP_SEC_KEY_LEN 16 - -/**@brief Maximum amount of addresses in a whitelist. */ -#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8) - -/**@brief Maximum amount of IRKs in a whitelist. - * @note The number of IRKs is limited to 8, even if the hardware supports more. - */ -#define BLE_GAP_WHITELIST_IRK_MAX_COUNT (8) - -/** @defgroup GAP_SEC_MODES GAP Security Modes - * @{ */ -#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */ - -/** @} */ - - -/** @} */ - -/**@brief Bluetooth Low Energy address. */ -typedef struct -{ - uint8_t addr_type; /**< See @ref BLE_GAP_ADDR_TYPES. */ - uint8_t addr[BLE_GAP_ADDR_LEN]; /**< 48-bit address, LSB format. */ -} ble_gap_addr_t; - - -/**@brief GAP connection parameters. - * - * @note When ble_conn_params_t is received in an event, both min_conn_interval and - * max_conn_interval will be equal to the connection interval set by the central. - */ -typedef struct -{ - uint16_t min_conn_interval; /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t max_conn_interval; /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t slave_latency; /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t conn_sup_timeout; /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/ -} ble_gap_conn_params_t; - - -/**@brief GAP link requirements. - * - * See Bluetooth Core specification, Volume 3 Part C 10.2 for details. - * - * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n - * Security Mode 1 Level 1: No security is needed (aka open link).\n - * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n - * Security Mode 1 Level 3: MITM protected encrypted link required.\n - * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n - * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n - */ -typedef struct -{ - uint8_t sm : 4; /**< Security Mode (1 or 2), 0 for no permissions at all. */ - uint8_t lv : 4; /**< Level (1, 2 or 3), 0 for no permissions at all. */ - -} ble_gap_conn_sec_mode_t; - - - -/**@brief GAP connection security status.*/ -typedef struct -{ - ble_gap_conn_sec_mode_t sec_mode; /**< Currently active security mode for this connection.*/ - uint8_t encr_key_size; /**< Length of currently active encryption key, 7 to 16 octets.*/ -} ble_gap_conn_sec_t; - - - -/**@brief Identity Resolving Key. */ -typedef struct -{ - uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Array containing IRK. */ -} ble_gap_irk_t; - - -/**@brief Whitelist structure. */ -typedef struct -{ - ble_gap_addr_t ** pp_addrs; /**< Pointer to array of device address pointers, pointing to addresses to be used in whitelist. NULL if none are given. */ - uint8_t addr_count; /**< Count of device addresses in array, up to @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. */ - ble_gap_irk_t ** pp_irks; /**< Pointer to array of Identity Resolving Key (IRK) pointers, each pointing to an IRK in the whitelist. NULL if none are given. */ - uint8_t irk_count; /**< Count of IRKs in array, up to @ref BLE_GAP_WHITELIST_IRK_MAX_COUNT. */ -} ble_gap_whitelist_t; - - -/**@brief GAP advertising parameters.*/ -typedef struct -{ - uint8_t type; /**< See @ref BLE_GAP_ADV_TYPES. */ - ble_gap_addr_t* p_peer_addr; /**< For BLE_GAP_CONN_MODE_DIRECTED mode only, known peer address. */ - uint8_t fp; /**< Filter Policy, see @ref BLE_GAP_ADV_FILTER_POLICIES. */ - ble_gap_whitelist_t * p_whitelist; /**< Pointer to whitelist, NULL if none is given. */ - uint16_t interval; /**< Advertising interval between 0x0020 and 0x4000 in 0.625 ms units (20ms to 10.24s), see @ref BLE_GAP_ADV_INTERVALS. This parameter must be set to 0 if type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND. */ - uint16_t timeout; /**< Advertising timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. See also @ref BLE_GAP_ADV_TIMEOUT_VALUES. This parameter must be set to 0 if type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND. */ -} ble_gap_adv_params_t; - - -/**@brief GAP scanning parameters. */ -typedef struct -{ - uint8_t filter; /**< Filter based on discovery mode, see @ref BLE_GAP_DISC_MODES. */ - uint8_t active : 1; /**< If 1, perform active scanning (scan requests). */ - uint8_t selective : 1; /**< If 1, ignore unknown devices (non whitelisted). */ - uint16_t interval; /**< Scan interval between 0x0020 and 0x4000 in 0.625ms units (20ms to 10.24s). */ - uint16_t window; /**< Scan window between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */ - uint16_t timeout; /**< Scan timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. */ -} ble_gap_scan_params_t; - - -/**@brief GAP security parameters. */ -typedef struct -{ - uint16_t timeout; /**< Timeout for SMP transactions or Security Request in seconds, see @ref sd_ble_gap_authenticate and @ref sd_ble_gap_sec_params_reply for more information. */ - uint8_t bond : 1; /**< Perform bonding. */ - uint8_t mitm : 1; /**< Man In The Middle protection required. */ - uint8_t io_caps : 3; /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */ - uint8_t oob : 1; /**< Out Of Band data available. */ - uint8_t min_key_size; /**< Minimum encryption key size in octets between 7 and 16. */ - uint8_t max_key_size; /**< Maximum encryption key size in octets between min_key_size and 16. */ -} ble_gap_sec_params_t; - - -/**@brief GAP Encryption Information. */ -typedef struct -{ - uint16_t div; /**< Encryption Diversifier. */ - uint8_t ltk[BLE_GAP_SEC_KEY_LEN]; /**< Long Term Key. */ - uint8_t auth : 1; /**< Authenticated Key. */ - uint8_t ltk_len : 7; /**< LTK length in octets. */ -} ble_gap_enc_info_t; - - -/**@brief GAP Master Identification. */ -typedef struct -{ - uint16_t ediv; /**< Encrypted Diversifier. */ - uint8_t rand[8]; /**< Random Number. */ -} ble_gap_master_id_t; - - -/**@brief GAP Identity Information. */ -typedef struct -{ - ble_gap_addr_t addr; /**< Bluetooth address to which this key applies. */ - uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Identity Resolution Key. */ -} ble_gap_id_info_t; - - -/**@brief GAP Signing Information. */ -typedef struct -{ - uint8_t csrk[BLE_GAP_SEC_KEY_LEN]; /* Connection Signature Resolving Key. */ -} ble_gap_sign_info_t; - - - -/** - * @brief GAP Event IDs. - * Those IDs uniquely identify an event coming from the stack to the application. - */ -enum BLE_GAP_EVTS -{ - BLE_GAP_EVT_CONNECTED = BLE_GAP_EVT_BASE, /**< Connection established. */ - BLE_GAP_EVT_DISCONNECTED, /**< Disconnected from peer. */ - BLE_GAP_EVT_CONN_PARAM_UPDATE, /**< Connection Parameters updated. */ - BLE_GAP_EVT_SEC_PARAMS_REQUEST, /**< Request to provide security parameters. */ - BLE_GAP_EVT_SEC_INFO_REQUEST, /**< Request to provide security information. */ - BLE_GAP_EVT_PASSKEY_DISPLAY, /**< Request to display a passkey to the user. */ - BLE_GAP_EVT_AUTH_KEY_REQUEST, /**< Request to provide an authentication key. */ - BLE_GAP_EVT_AUTH_STATUS, /**< Authentication procedure completed with status. */ - BLE_GAP_EVT_CONN_SEC_UPDATE, /**< Connection security updated. */ - BLE_GAP_EVT_TIMEOUT, /**< Timeout expired. */ - BLE_GAP_EVT_RSSI_CHANGED, /**< Signal strength measurement report. */ -}; - - -/** @brief Event data for connected event. */ -typedef struct -{ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ - uint8_t irk_match :1; /**< If 1, peer device's address resolved using an IRK. */ - uint8_t irk_match_idx :7; /**< Index in IRK list where the address was matched. */ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ -} ble_gap_evt_connected_t; - - -/** @brief Event data for disconnected event. */ -typedef struct -{ - uint8_t reason; /**< HCI error code. */ -} ble_gap_evt_disconnected_t; - - -/** @brief Event data for connection parameter update event. */ -typedef struct -{ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ -} ble_gap_evt_conn_param_update_t; - - -/** @brief Event data for security parameters request event. */ -typedef struct -{ - ble_gap_sec_params_t peer_params; /**< Initiator Security Parameters. */ -} ble_gap_evt_sec_params_request_t; - - -/** @brief Event data for securito info request event. */ -typedef struct -{ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ - uint16_t div; /**< Encryption diversifier for LTK lookup. */ - uint8_t enc_info : 1; /**< If 1, Encryption Information required. */ - uint8_t id_info : 1; /**< If 1, Identity Information required. */ - uint8_t sign_info : 1; /**< If 1, Signing Information required. */ -} ble_gap_evt_sec_info_request_t; - - -/** @brief Event data for passkey display event. */ -typedef struct -{ - uint8_t passkey[6]; /**< 6-digit passkey in ASCII ('0'-'9' digits only). */ -} ble_gap_evt_passkey_display_t; - - -/** @brief Event data for authentication key request event. */ -typedef struct -{ - uint8_t key_type; /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */ -} ble_gap_evt_auth_key_request_t; - - -/** @brief Security levels supported. - * @note See Bluetooth Specification Version 4.0 Volume 3, Chapter 10. -*/ -typedef struct -{ - uint8_t lv1 : 1; /**< If 1: Level 1 is supported. */ - uint8_t lv2 : 1; /**< If 1: Level 2 is supported. */ - uint8_t lv3 : 1; /**< If 1: Level 3 is supported. */ -} ble_gap_sec_levels_t; - - -/** @brief Keys that have been exchanged. */ -typedef struct -{ - uint8_t ltk : 1; /**< Long Term Key. */ - uint8_t ediv_rand : 1; /**< Encrypted Diversifier and Random value. */ - uint8_t irk : 1; /**< Identity Resolving Key. */ - uint8_t address : 1; /**< Public or static random address. */ - uint8_t csrk : 1; /**< Connection Signature Resolving Key. */ -} ble_gap_sec_keys_t; - - -/** @brief Event data for authentication status event. */ -typedef struct -{ - uint8_t auth_status; /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */ - uint8_t error_src; /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */ - ble_gap_sec_levels_t sm1_levels; /**< Levels supported in Security Mode 1. */ - ble_gap_sec_levels_t sm2_levels; /**< Levels supported in Security Mode 2. */ - ble_gap_sec_keys_t periph_kex; /**< Bitmap stating which keys were exchanged (distributed) by the peripheral. */ - ble_gap_sec_keys_t central_kex; /**< Bitmap stating which keys were exchanged (distributed) by the central. */ - struct periph_keys_t - { - ble_gap_enc_info_t enc_info; /**< Peripheral's Encryption information. */ - } periph_keys; /**< Actual keys distributed from the Peripheral to the Central. */ - struct central_keys_t - { - ble_gap_irk_t irk; /**< Central's IRK. */ - ble_gap_addr_t id_info; /**< Central's Identity Info. */ - } central_keys; /**< Actual keys distributed from the Central to the Peripheral. */ -} ble_gap_evt_auth_status_t; - - -/** @brief Event data for connection security update event. */ -typedef struct -{ - ble_gap_conn_sec_t conn_sec; /**< Connection security level. */ -} ble_gap_evt_conn_sec_update_t; - - -/** @brief Event data for timeout event. */ -typedef struct -{ - uint8_t src; /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */ -} ble_gap_evt_timeout_t; - - -/** @brief Event data for advertisement report event. */ -typedef struct -{ - int8_t rssi; /**< Received Signal Strength Indication in dBm. */ -} ble_gap_evt_rssi_changed_t; - - - -/**@brief GAP event callback event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occured. */ - union /**< union alternative identified by evt_id in enclosing struct. */ - { - ble_gap_evt_connected_t connected; /**< Connected Event Parameters. */ - ble_gap_evt_disconnected_t disconnected; /**< Disconnected Event Parameters. */ - ble_gap_evt_conn_param_update_t conn_param_update; /**< Connection Parameter Update Parameters. */ - ble_gap_evt_sec_params_request_t sec_params_request; /**< Security Parameters Request Event Parameters. */ - ble_gap_evt_sec_info_request_t sec_info_request; /**< Security Information Request Event Parameters. */ - ble_gap_evt_passkey_display_t passkey_display; /**< Passkey Display Event Parameters. */ - ble_gap_evt_auth_key_request_t auth_key_request; /**< Authentication Key Request Event Parameters. */ - ble_gap_evt_auth_status_t auth_status; /**< Authentication Status Event Parameters. */ - ble_gap_evt_conn_sec_update_t conn_sec_update; /**< Connection Security Update Event Parameters. */ - ble_gap_evt_timeout_t timeout; /**< Timeout Event Parameters. */ - ble_gap_evt_rssi_changed_t rssi_changed; /**< RSSI Event parameters. */ - } params; - -} ble_gap_evt_t; - - -/**@brief Set local Bluetooth address. - * - * @param[in] p_addr Pointer to address structure. - * - * @return @ref NRF_SUCCESS Address successfully set. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address. - * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry. - */ -SVCALL(SD_BLE_GAP_ADDRESS_SET, uint32_t, sd_ble_gap_address_set(ble_gap_addr_t const * const p_addr)); - - -/**@brief Get local Bluetooth address. - * - * @param[out] p_addr Pointer to address structure. - * - * @return @ref NRF_SUCCESS Address successfully retrieved. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GAP_ADDRESS_GET, uint32_t, sd_ble_gap_address_get(ble_gap_addr_t * const p_addr)); - - -/**@brief Set, clear or update advertisement and scan response data. - * - * @note The format of the advertisement data will be checked by this call to ensure interoperability. - * Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and - * duplicating the local name in the advertisement data and scan response data. - * - * @note: To clear the advertisement data and set it to a 0-length packet, simply provide a valid pointer (p_data/p_sr_data) with its corresponding - * length (dlen/srdlen) set to 0. - * - * @note: The call will fail if p_data and p_sr_data are both NULL since this would have no effect. - * - * @param[in] p_data Raw data to be placed in advertisement packet. If NULL, no changes are made to the current advertisement packet data. - * @param[in] dlen Data length for p_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_data is NULL, can be 0 if p_data is not NULL. - * @param[in] p_sr_data Raw data to be placed in scan response packet. If NULL, no changes are made to the current scan response packet data. - * @param[in] srdlen Data length for p_sr_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_sr_data is NULL, can be 0 if p_data is not NULL. - * - * @return @ref NRF_SUCCESS Advertisement data successfully updated or cleared. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied. - * @return @ref NRF_ERROR_INVALID_DATA Invalid data type(s) supplied, check the advertising data format specification. - * @return @ref NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied. - * @return @ref BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied. - * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry. - */ -SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const * const p_data, uint8_t dlen, uint8_t const * const p_sr_data, uint8_t srdlen)); - - -/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). - * - * @param[in] p_adv_params Pointer to advertising parameters structure. - * - * @return @ref NRF_SUCCESS The BLE stack has started advertising. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check the accepted ranges and limits. - * @return @ref BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Bluetooth address supplied. - * @return @ref BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible. - */ -SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(ble_gap_adv_params_t const * const p_adv_params)); - - -/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). - * - * @return @ref NRF_SUCCESS The BLE stack has stopped advertising. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in advertising state). - */ -SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(void)); - - -/**@brief Update connection parameters. - * - * @details In the central role this will initiate a Link Layer connection parameter update procedure, - * otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for - * the central to perform the procedure. In both cases, and regardless of success or failure, the application - * will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event. - * - * @note If both a connection supervision timeout and a maximum connection interval are specified, then the following constraint - * applies: (conn_sup_timeout * 8) >= (max_conn_interval * (slave_latency + 1)) - * - * @param[in] conn_handle Connection handle. - * @param[in] p_conn_params Pointer to desired connection parameters. If NULL is provided on a peripheral role, - * the parameters in the PPCP characteristic of the GAP service will be used instead. - * - * @return @ref NRF_SUCCESS The Connection Update procedure has been started successfully. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @return @ref NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, process pending events and retry. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const * const p_conn_params)); - - -/**@brief Disconnect (GAP Link Termination). - * - * @details This call initiates the disconnection procedure, and its completion will be communicated to the application - * with a BLE_GAP_EVT_DISCONNECTED event. - * - * @param[in] conn_handle Connection handle. - * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are BTLE_REMOTE_USER_TERMINATED_CONNECTION and BTLE_CONN_INTERVAL_UNACCEPTABLE). - * - * @return @ref NRF_SUCCESS The disconnection procedure has been started successfully. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation (disconnection is already in progress or not connected at all). - */ -SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code)); - - -/**@brief Set the radio's transmit power. - * - * @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -30, -20, -16, -12, -8, -4, 0, and 4 dBm). - * - * @note -40 dBm will not actually give -40 dBm, but will instead be remapped to -30 dBm. - * - * @return @ref NRF_SUCCESS Successfully changed the transmit power. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry. - */ -SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(int8_t tx_power)); - - -/**@brief Set GAP Appearance value. - * - * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES. - * - * @return @ref NRF_SUCCESS Appearance value set successfully. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - */ -SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance)); - - -/**@brief Get GAP Appearance value. - * - * @param[out] p_appearance Appearance (16-bit), see @ref BLE_APPEARANCES. - * - * @return @ref NRF_SUCCESS Appearance value retrieved successfully. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t * const p_appearance)); - - -/**@brief Set GAP Peripheral Preferred Connection Parameters. - * - * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters. - * - * @return @ref NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - */ -SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const * const p_conn_params)); - - -/**@brief Get GAP Peripheral Preferred Connection Parameters. - * - * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored. - * - * @return @ref NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t * const p_conn_params)); - - -/**@brief Set GAP device name. - * - * @param[in] p_write_perm Write permissions for the Device Name characteristic see @ref ble_gap_conn_sec_mode_t. - * @param[in] p_dev_name Pointer to a UTF-8 encoded, <b>non NULL-terminated</b> string. - * @param[in] len Length of the UTF-8, <b>non NULL-terminated</b> string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN). - * - * @return @ref NRF_SUCCESS GAP device name and permissions set successfully. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - */ -SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const * const p_write_perm, uint8_t const * const p_dev_name, uint16_t len)); - - -/**@brief Get GAP device name. - * - * @param[in] p_dev_name Pointer to an empty buffer where the UTF-8 <b>non NULL-terminated</b> string will be placed. Set to NULL to obtain the complete device name length. - * @param[in,out] p_len Length of the buffer pointed by p_dev_name, complete device name length on output. - * - * @note If the device name is longer than the size of the supplied buffer, - * p_len will return the complete device name length, - * and not the number of bytes actually returned in p_dev_name. - * The application may use this information to allocate a suitable buffer size. - * - * @return @ref NRF_SUCCESS GAP device name retrieved successfully. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - */ -SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t * const p_dev_name, uint16_t * const p_len)); - - -/**@brief Initiate GAP Authentication procedure. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing procedure. - * - * @details In the central role, this function will send an SMP Pairing Request, otherwise in the peripheral role, an SMP Security Request will be sent. - * In the peripheral role, only the timeout, bond and mitm fields of @ref ble_gap_sec_params_t are used. - * - * @note The GAP Authentication procedure may be triggered by the central without calling this function when accessing a secure service. - * @note Calling this function may result in the following events depending on the outcome and parameters: @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, - * @ref BLE_GAP_EVT_SEC_INFO_REQUEST, @ref BLE_GAP_EVT_AUTH_KEY_REQUEST, @ref BLE_GAP_EVT_AUTH_STATUS. - * @note The timeout parameter in @ref ble_gap_sec_params_t is interpreted here as the Security Request timeout - * - * - * @return @ref NRF_SUCCESS Successfully initiated authentication procedure. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const * const p_sec_params)); - - -/**@brief Reply with GAP security parameters. - * - * @param[in] conn_handle Connection handle. - * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS. - * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * @note The timeout parameter in @ref ble_gap_sec_params_t is interpreted here as the SMP procedure timeout, and must be 30 seconds. The function will fail - * if the application supplies a different value. - * - * @return @ref NRF_SUCCESS Successfully accepted security parameter from the application. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const * const p_sec_params)); - - -/**@brief Reply with an authentication key. - * - * @param[in] conn_handle Connection handle. - * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES. - * @param[in] key If key type is BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL. - * If key type is BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination). - * If key type is BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in Little Endian format. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @return @ref NRF_SUCCESS Authentication key successfully set. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const * const key)); - - -/**@brief Reply with GAP security information. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available. - * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * @note Data signing is not implemented yet. p_sign_info must therefore be NULL. - * - * @return @ref NRF_SUCCESS Successfully accepted security information. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry. - */ -SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const * const p_enc_info, ble_gap_sign_info_t const * const p_sign_info)); - - -/**@brief Get the current connection security. - * - * @param[in] conn_handle Connection handle. - * @param[out] p_conn_sec Pointer to a @ref ble_gap_conn_sec_t structure to be filled in. - * - * @return @ref NRF_SUCCESS Current connection security successfully retrieved. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t * const p_conn_sec)); - - -/**@brief Start reporting the received signal strength to the application. - * - * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called. - * - * @param[in] conn_handle Connection handle. - * - * @return @ref NRF_SUCCESS Successfully activated RSSI reporting. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle)); - - -/**@brief Stop reporting the received singnal strength. - * - * An RSSI change detected before the call but not yet received by the application - * may be reported after @ref sd_ble_gap_rssi_stop has been called. - * - * @param[in] conn_handle Connection handle. - * - * @return @ref NRF_SUCCESS Successfully deactivated RSSI reporting. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle)); - -#endif // BLE_GAP_H__ - -/** - @} -*/
--- a/TARGET_NRF51822/ble_gatt.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ - /** - @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common - @{ - @brief Common definitions and prototypes for the GATT interfaces. - */ - -#ifndef BLE_GATT_H__ -#define BLE_GATT_H__ - -#include "ble_types.h" -#include "ble_ranges.h" - - -/** @addtogroup BLE_GATT_DEFINES Defines - * @{ */ - -/** @brief Default MTU size. */ -#define GATT_MTU_SIZE_DEFAULT 23 - -/** @brief Only the default MTU size of 23 is currently supported. */ -#define GATT_RX_MTU 23 - - -/**@brief Invalid Attribute Handle. */ -#define BLE_GATT_HANDLE_INVALID 0x0000 - -/** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources - * @{ */ -#define BLE_GATT_TIMEOUT_SRC_PROTOCOL 0x00 /**< ATT Protocol timeout. */ -/** @} */ - -/** @defgroup BLE_GATT_WRITE_OPS GATT Write operations - * @{ */ -#define BLE_GATT_OP_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATT_OP_WRITE_REQ 0x01 /**< Write Request. */ -#define BLE_GATT_OP_WRITE_CMD 0x02 /**< Write Command. */ -#define BLE_GATT_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ -#define BLE_GATT_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ -#define BLE_GATT_OP_EXEC_WRITE_REQ 0x05 /**< Execute Write Request. */ -/** @} */ - -/** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags - * @{ */ -#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00 -#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE 0x01 -/** @} */ - -/** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations - * @{ */ -#define BLE_GATT_HVX_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATT_HVX_NOTIFICATION 0x01 /**< Handle Value Notification. */ -#define BLE_GATT_HVX_INDICATION 0x02 /**< Handle Value Indication. */ -/** @} */ - -/** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes - * @{ */ -#define BLE_GATT_STATUS_SUCCESS 0x0000 /**< Success. */ -#define BLE_GATT_STATUS_UNKNOWN 0x0001 /**< Unknown or not applicable status. */ -#define BLE_GATT_STATUS_ATTERR_INVALID 0x0100 /**< ATT Error: Invalid Error Code. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE 0x0101 /**< ATT Error: Invalid Attribute Handle. */ -#define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED 0x0102 /**< ATT Error: Read not permitted. */ -#define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED 0x0103 /**< ATT Error: Write not permitted. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_PDU 0x0104 /**< ATT Error: Used in ATT as Invalid PDU. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION 0x0105 /**< ATT Error: Authenticated link required. */ -#define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED 0x0106 /**< ATT Error: Used in ATT as Request Not Supported. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET 0x0107 /**< ATT Error: Offset specified was past the end of the attribute. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION 0x0108 /**< ATT Error: Used in ATT as Insufficient Authorisation. */ -#define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL 0x0109 /**< ATT Error: Used in ATT as Prepare Queue Full. */ -#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND 0x010A /**< ATT Error: Used in ATT as Attribute not found. */ -#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG 0x010B /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE 0x010C /**< ATT Error: Encryption key size used is insufficient. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH 0x010D /**< ATT Error: Invalid value size. */ -#define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR 0x010E /**< ATT Error: Very unlikely error. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION 0x010F /**< ATT Error: Encrypted link required. */ -#define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE 0x0110 /**< ATT Error: Attribute type is not a supported grouping attribute. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES 0x0111 /**< ATT Error: Encrypted link required. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN 0x0112 /**< ATT Error: Reserved for Future Use range #1 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END 0x017F /**< ATT Error: Reserved for Future Use range #1 end. */ -#define BLE_GATT_STATUS_ATTERR_APP_BEGIN 0x0180 /**< ATT Error: Application range begin. */ -#define BLE_GATT_STATUS_ATTERR_APP_END 0x019F /**< ATT Error: Application range end. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN 0x01A0 /**< ATT Error: Reserved for Future Use range #2 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END 0x01DF /**< ATT Error: Reserved for Future Use range #2 end. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN 0x01E0 /**< ATT Error: Reserved for Future Use range #3 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END 0x01FC /**< ATT Error: Reserved for Future Use range #3 end. */ -#define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR 0x01FD /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */ -#define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG 0x01FE /**< ATT Common Profile and Service Error: Procedure Already in Progress. */ -#define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE 0x01FF /**< ATT Common Profile and Service Error: Out Of Range. */ -/** @} */ - - -/** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats - * @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml - * @{ */ -#define BLE_GATT_CPF_FORMAT_RFU 0x00 /**< Reserved For Future Use. */ -#define BLE_GATT_CPF_FORMAT_BOOLEAN 0x01 /**< Boolean. */ -#define BLE_GATT_CPF_FORMAT_2BIT 0x02 /**< Unsigned 2-bit integer. */ -#define BLE_GATT_CPF_FORMAT_NIBBLE 0x03 /**< Unsigned 4-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT8 0x04 /**< Unsigned 8-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT12 0x05 /**< Unsigned 12-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT16 0x06 /**< Unsigned 16-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT24 0x07 /**< Unsigned 24-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT32 0x08 /**< Unsigned 32-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT48 0x09 /**< Unsigned 48-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT64 0x0A /**< Unsigned 64-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT128 0x0B /**< Unsigned 128-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT8 0x0C /**< Signed 2-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT12 0x0D /**< Signed 12-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT16 0x0E /**< Signed 16-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT24 0x0F /**< Signed 24-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT32 0x10 /**< Signed 32-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT48 0x11 /**< Signed 48-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT64 0x12 /**< Signed 64-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT128 0x13 /**< Signed 128-bit integer. */ -#define BLE_GATT_CPF_FORMAT_FLOAT32 0x14 /**< IEEE-754 32-bit floating point. */ -#define BLE_GATT_CPF_FORMAT_FLOAT64 0x15 /**< IEEE-754 64-bit floating point. */ -#define BLE_GATT_CPF_FORMAT_SFLOAT 0x16 /**< IEEE-11073 16-bit SFLOAT. */ -#define BLE_GATT_CPF_FORMAT_FLOAT 0x17 /**< IEEE-11073 32-bit FLOAT. */ -#define BLE_GATT_CPF_FORMAT_DUINT16 0x18 /**< IEEE-20601 format. */ -#define BLE_GATT_CPF_FORMAT_UTF8S 0x19 /**< UTF-8 string. */ -#define BLE_GATT_CPF_FORMAT_UTF16S 0x1A /**< UTF-16 string. */ -#define BLE_GATT_CPF_FORMAT_STRUCT 0x1B /**< Opaque Structure. */ -/** @} */ - -/** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces - * @{ - */ -#define BLE_GATT_CPF_NAMESPACE_BTSIG 0x01 -#define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000 -/** @} */ - -/** @} */ - -/**@brief GATT Characteristic Properties. */ -typedef struct -{ - /* Standard properties */ - uint8_t broadcast :1; /**< Broadcasting of value permitted. */ - uint8_t read :1; /**< Reading value permitted. */ - uint8_t write_wo_resp :1; /**< Writing value with Write Command permitted. */ - uint8_t write :1; /**< Writing value with Write Request permitted. */ - uint8_t notify :1; /**< Notications of value permitted. */ - uint8_t indicate :1; /**< Indications of value permitted. */ - uint8_t auth_signed_wr :1; /**< Writing value with Signed Write Command permitted. */ -} ble_gatt_char_props_t; - -/**@brief GATT Characteristic Extended Properties. */ -typedef struct -{ - /* Extended properties */ - uint8_t reliable_wr :1; /**< Writing value with Queued Write Request permitted. */ - uint8_t wr_aux :1; /**< Writing the Characteristic User Description permitted. */ -} ble_gatt_char_ext_props_t; - -#endif // BLE_GATT_H__ - -/** - @} - @} -*/
--- a/TARGET_NRF51822/ble_gattc.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,395 +0,0 @@ -/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ -/** - @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client - @{ - @brief Definitions and prototypes for the GATT Client interface. - */ - -#ifndef BLE_GATTC_H__ -#define BLE_GATTC_H__ - -#include "ble_gatt.h" -#include "ble_types.h" -#include "ble_ranges.h" -#include "nrf_svc.h" - - -/**@brief GATTC API SVC numbers. */ -enum BLE_GATTC_SVCS -{ - SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */ - SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, /**< Relationship Discovery. */ - SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, /**< Characteristic Discovery. */ - SD_BLE_GATTC_DESCRIPTORS_DISCOVER, /**< Characteristic Descriptor Discovery. */ - SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, /**< Read Characteristic Value by UUID. */ - SD_BLE_GATTC_READ, /**< Generic read. */ - SD_BLE_GATTC_CHAR_VALUES_READ, /**< Read multiple Characteristic Values. */ - SD_BLE_GATTC_WRITE, /**< Generic write. */ - SD_BLE_GATTC_HV_CONFIRM /**< Handle Value Confirmation. */ -}; - -/** @addtogroup BLE_GATTC_DEFINES Defines - * @{ */ - -/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC - * @{ */ -#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED (NRF_GATTC_ERR_BASE + 0x000) -/** @} */ - -/**@brief Last Attribute Handle. */ -#define BLE_GATTC_HANDLE_END 0xFFFF - -/** @} */ - -/**@brief Operation Handle Range. */ -typedef struct -{ - uint16_t start_handle; /**< Start Handle. */ - uint16_t end_handle; /**< End Handle. */ -} ble_gattc_handle_range_t; - - -/**@brief GATT service. */ -typedef struct -{ - ble_uuid_t uuid; /**< Service UUID. */ - ble_gattc_handle_range_t handle_range; /**< Service Handle Range. */ -} ble_gattc_service_t; - - -/**@brief GATT include. */ -typedef struct -{ - uint16_t handle; /**< Include Handle. */ - ble_gattc_service_t included_srvc; /**< Handle of the included service. */ -} ble_gattc_include_t; - - -/**@brief GATT characteristic. */ -typedef struct -{ - ble_uuid_t uuid; /**< Characteristic UUID. */ - ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ - uint8_t char_ext_props : 1; /**< Extended properties present. */ - uint16_t handle_decl; /**< Handle of the Characteristic Declaration. */ - uint16_t handle_value; /**< Handle of the Characteristic Value. */ -} ble_gattc_char_t; - - -/**@brief GATT descriptor. */ -typedef struct -{ - uint16_t handle; /**< Descriptor Handle. */ - ble_uuid_t uuid; /**< Descriptor UUID. */ -} ble_gattc_desc_t; - - -/**@brief Write Parameters. */ -typedef struct -{ - uint8_t write_op; /**< Write Operation to be performed, see BLE_GATT_WRITE_OPS. */ - uint16_t handle; /**< Handle to the attribute to be written. */ - uint16_t offset; /**< Offset in bytes. */ - uint16_t len; /**< Length of data in bytes. */ - uint8_t* p_value; /**< Pointer to the value data. */ - uint8_t flags; /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */ -} ble_gattc_write_params_t; - - -/** - * @brief GATT Client Event IDs. - */ -enum BLE_GATTC_EVTS -{ - BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE, /**< Primary Service Discovery Response event. */ - BLE_GATTC_EVT_REL_DISC_RSP, /**< Relationship Discovery Response event. */ - BLE_GATTC_EVT_CHAR_DISC_RSP, /**< Characteristic Discovery Response event. */ - BLE_GATTC_EVT_DESC_DISC_RSP, /**< Descriptor Discovery Response event. */ - BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP, /**< Read By UUID Response event. */ - BLE_GATTC_EVT_READ_RSP, /**< Read Response event. */ - BLE_GATTC_EVT_CHAR_VALS_READ_RSP, /**< Read multiple Response event. */ - BLE_GATTC_EVT_WRITE_RSP, /**< Write Response event. */ - BLE_GATTC_EVT_HVX, /**< Handle Value Notification or Indication event. */ - BLE_GATTC_EVT_TIMEOUT /**< Timeout event. */ -}; - -/**@brief Event structure for BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Service count. */ - ble_gattc_service_t services[1]; /**< Service data, variable length. */ -} ble_gattc_evt_prim_srvc_disc_rsp_t; - -/**@brief Event structure for BLE_GATTC_EVT_REL_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Include count. */ - ble_gattc_include_t includes[1]; /**< Include data, variable length. */ -} ble_gattc_evt_rel_disc_rsp_t; - -/**@brief Event structure for BLE_GATTC_EVT_CHAR_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Characteristic count. */ - ble_gattc_char_t chars[1]; /**< Characteristic data, variable length. */ -} ble_gattc_evt_char_disc_rsp_t; - -/**@brief Event structure for BLE_GATTC_EVT_DESC_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Descriptor count. */ - ble_gattc_desc_t descs[1]; /**< Descriptor data, variable length. */ -} ble_gattc_evt_desc_disc_rsp_t; - -/**@brief GATT read by UUID handle value pair. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint8_t *p_value; /**< Pointer to value, variable length (length available as value_len in ble_gattc_evt_read_by_uuid_rsp_t). - Please note that this pointer is absolute to the memory provided by the user when retrieving the event, - so it will effectively point to a location inside the handle_value array. */ -} ble_gattc_handle_value_t; - -/**@brief Event structure for BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */ -typedef struct -{ - uint16_t count; /**< Handle-Value Pair Count. */ - uint16_t value_len; /**< Length of the value in Handle-Value(s) list. */ - ble_gattc_handle_value_t handle_value[1]; /**< Handle-Value(s) list, variable length. */ -} ble_gattc_evt_char_val_by_uuid_read_rsp_t; - -/**@brief Event structure for BLE_GATTC_EVT_READ_RSP. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint16_t offset; /**< Offset of the attribute data. */ - uint16_t len; /**< Attribute data length. */ - uint8_t data[1]; /**< Attribute data, variable length. */ -} ble_gattc_evt_read_rsp_t; - -/**@brief Event structure for BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */ -typedef struct -{ - uint16_t len; /**< Concatenated Attribute values length. */ - uint8_t values[1]; /**< Attribute values, variable length. */ -} ble_gattc_evt_char_vals_read_rsp_t; - -/**@brief Event structure for BLE_GATTC_EVT_WRITE_RSP. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint8_t write_op; /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */ - uint16_t offset; /**< Data Offset. */ - uint16_t len; /**< Data length. */ - uint8_t data[1]; /**< Data, variable length. */ -} ble_gattc_evt_write_rsp_t; - -/**@brief Event structure for BLE_GATTC_EVT_HVX. */ -typedef struct -{ - uint16_t handle; /**< Handle to which the HVx operation applies. */ - uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ - uint16_t len; /**< Attribute data length. */ - uint8_t data[1]; /**< Attribute data, variable length. */ -} ble_gattc_evt_hvx_t; - -/**@brief Event structure for BLE_GATTC_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ -} ble_gattc_evt_timeout_t; - -/**@brief GATTC event type. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occured. */ - uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ - uint16_t error_handle; /**< In case of error: The handle causing the error. In all other cases BLE_GATT_HANDLE_INVALID. */ - union - { - ble_gattc_evt_prim_srvc_disc_rsp_t prim_srvc_disc_rsp; /**< Primary Service Discovery Response Event Parameters. */ - ble_gattc_evt_rel_disc_rsp_t rel_disc_rsp; /**< Relationship Discovery Response Event Parameters. */ - ble_gattc_evt_char_disc_rsp_t char_disc_rsp; /**< Characteristic Discovery Response Event Parameters. */ - ble_gattc_evt_desc_disc_rsp_t desc_disc_rsp; /**< Descriptor Discovery Response Event Parameters. */ - ble_gattc_evt_char_val_by_uuid_read_rsp_t char_val_by_uuid_read_rsp; /**< Characteristic Value Read by UUID Response Event Parameters. */ - ble_gattc_evt_read_rsp_t read_rsp; /**< Read Response Event Parameters. */ - ble_gattc_evt_char_vals_read_rsp_t char_vals_read_rsp; /**< Characteristic Values Read Response Event Parameters. */ - ble_gattc_evt_write_rsp_t write_rsp; /**< Write Response Event Parameters. */ - ble_gattc_evt_hvx_t hvx; /**< Handle Value Notification/Indication Event Parameters. */ - ble_gattc_evt_timeout_t timeout; /**< Timeout Event Parameters. */ - } params; /**< Event Parameters. @note Only valid if @ref gatt_status == BLE_GATT_STATUS_SUCCESS. */ -} ble_gattc_evt_t; - - -/**@brief Initiate or continue a GATT Primary Service Discovery procedure. - * - * @details This function initiates a Primary Service discovery, starting from the supplied handle. - * If the last service has not been reached, this must be called again with an updated start handle value to continue the search. - * - * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with - * type BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] start_handle Handle to start searching from. - * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned. - * - * @return @ref NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_BUSY Client procedure already in progress. - */ -SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const * const p_srvc_uuid)); - - -/**@brief Initiate or continue a GATT Relationship Discovery procedure. - * - * @details This function initiates the Find Included Services sub-procedure. If the last included service has not been reached, - * this must be called again with an updated handle range to continue the search. - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. - * - * @return @ref NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_BUSY Client procedure already in progress. - */ -SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range)); - - -/**@brief Initiate or continue a GATT Characteristic Discovery procedure. - * - * @details This function initiates a Characteristic discovery procedure. If the last Characteristic has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with - * type BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. - * - * @return @ref NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_BUSY Client procedure already in progress. - */ -SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range)); - - -/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure. - * - * @details This function initiates the Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on. - * - * @return @ref NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_BUSY Client procedure already in progress. - */ -SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range)); - - -/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure. - * - * @details This function initiates the Read using Characteristic UUID procedure. If the last Characteristic has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_uuid Pointer to a Characteristic value UUID to read. - * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on. - * - * @return @ref NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_BUSY Client procedure already in progress. - */ -SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const * const p_uuid, ble_gattc_handle_range_t const * const p_handle_range)); - - -/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure. - * - * @details This function initiates a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor - * to be read is longer than GATT_MTU - 1, this function must be called multiple times with appropriate offset to read the - * complete value. - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] handle The handle of the attribute to be read. - * @param[in] offset Offset into the attribute value to be read. - * - * @return @ref NRF_SUCCESS Successfully started or resumed the Read (Long) procedure. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_BUSY Client procedure already in progress. - */ -SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset)); - - -/**@brief Initiate a GATT Read Multiple Characteristic Values procedure. - * - * @details This function initiates a GATT Read Multiple Characteristic Values procedure. - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read. - * @param[in] handle_count The number of handles in p_handles. - * - * @return @ref NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_BUSY Client procedure already in progress. - */ -SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const * const p_handles, uint16_t handle_count)); - - -/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure. - * - * @details This function can perform all write procedures described in GATT. - * - * @note It is important to note that a write without response will <b>consume an application buffer</b>, and will therefore - * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. A write on the other hand will use the - * standard client internal buffer and thus will only generate a @ref BLE_GATTC_EVT_WRITE_RSP event as soon as the write response - * has been received from the peer. Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details. - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_write_params A pointer to a write parameters structure. - * - * @return @ref NRF_SUCCESS Successfully started the Write procedure. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @return @ref NRF_ERROR_BUSY Procedure already in progress. - * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers left. - */ -SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const * const p_write_params)); - - -/**@brief Send a Handle Value Confirmation to the GATT Server. - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] handle The handle of the attribute in the indication. - * - * @return @ref NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_STATE No Indication pending to be confirmed. - * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle. - * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers left. - */ -SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle)); - - -#endif /* BLE_GATTC_H__ */ - -/** - @} - @} -*/
--- a/TARGET_NRF51822/ble_gatts.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,547 +0,0 @@ -/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ -/** - @addtogroup BLE_GATTS Generic Attribute Profile (GATT) Server - @{ - @brief Definitions and prototypes for the GATTS interface. - */ - -#ifndef BLE_GATTS_H__ -#define BLE_GATTS_H__ - -#include "ble_types.h" -#include "ble_ranges.h" -#include "ble_l2cap.h" -#include "ble_gap.h" -#include "ble_gatt.h" -#include "nrf_svc.h" - - -/** - * @brief GATTS API SVC numbers. - */ -enum BLE_GATTS_SVCS -{ - SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */ - SD_BLE_GATTS_INCLUDE_ADD, /**< Add an included service. */ - SD_BLE_GATTS_CHARACTERISTIC_ADD, /**< Add a characteristic. */ - SD_BLE_GATTS_DESCRIPTOR_ADD, /**< Add a generic attribute. */ - SD_BLE_GATTS_VALUE_SET, /**< Set an attribute value. */ - SD_BLE_GATTS_VALUE_GET, /**< Get an attribute value. */ - SD_BLE_GATTS_HVX, /**< Handle Value Notification or Indication. */ - SD_BLE_GATTS_SERVICE_CHANGED, /**< Perform a Service Changed Indication to one or more peers. */ - SD_BLE_GATTS_RW_AUTHORIZE_REPLY, /**< Reply to an authorization request for a read or write operation on one or more attributes. */ - SD_BLE_GATTS_SYS_ATTR_SET, /**< Set the persistent system attributes for a connection. */ - SD_BLE_GATTS_SYS_ATTR_GET, /**< Get updated persistent system attributes after terminating a connection. */ -}; - - -/** @addtogroup BLE_GATTS_DEFINES Defines - * @{ */ - -/** @brief Only the default MTU size of 23 is currently supported. */ -#define GATT_RX_MTU 23 - -/** @defgroup BLE_ERRORS_GATTS SVC return values specific to GATTS - * @{ */ -#define BLE_ERROR_GATTS_INVALID_ATTR_TYPE (NRF_GATTS_ERR_BASE + 0x000) /**< Invalid attribute type. */ -#define BLE_ERROR_GATTS_SYS_ATTR_MISSING (NRF_GATTS_ERR_BASE + 0x001) /**< System Attributes missing. */ -/** @} */ - -/** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths - * @{ */ -#define BLE_GATTS_FIX_ATTR_LEN_MAX (510) /**< Maximum length for fixed length Attribute Values. */ -#define BLE_GATTS_VAR_ATTR_LEN_MAX (512) /**< Maximum length for variable length Attribute Values. */ -/** @} */ - -/** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types - * @{ */ -#define BLE_GATTS_SRVC_TYPE_INVALID 0x00 /**< Invalid Service Type. */ -#define BLE_GATTS_SRVC_TYPE_PRIMARY 0x01 /**< Primary Service. */ -#define BLE_GATTS_SRVC_TYPE_SECONDARY 0x02 /**< Secondary Type. */ -/** @} */ - - -/** @defgroup BLE_GATTS_ATTR_TYPES GATT Server Attribute Types - * @{ */ -#define BLE_GATTS_ATTR_TYPE_INVALID 0x00 /**< Invalid Attribute Type. */ -#define BLE_GATTS_ATTR_TYPE_PRIM_SRVC_DECL 0x01 /**< Primary Service Declaration. */ -#define BLE_GATTS_ATTR_TYPE_SEC_SRVC_DECL 0x02 /**< Secondary Service Declaration. */ -#define BLE_GATTS_ATTR_TYPE_INC_DECL 0x03 /**< Include Declaration. */ -#define BLE_GATTS_ATTR_TYPE_CHAR_DECL 0x04 /**< Characteristic Declaration. */ -#define BLE_GATTS_ATTR_TYPE_CHAR_VAL 0x05 /**< Characteristic Value. */ -#define BLE_GATTS_ATTR_TYPE_DESC 0x06 /**< Descriptor. */ -#define BLE_GATTS_ATTR_TYPE_OTHER 0x07 /**< Other, non-GATT specific type. */ -/** @} */ - - -/** @defgroup BLE_GATTS_OPS GATT Server Operations - * @{ */ -#define BLE_GATTS_OP_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATTS_OP_WRITE_REQ 0x01 /**< Write Request. */ -#define BLE_GATTS_OP_WRITE_CMD 0x02 /**< Write Command. */ -#define BLE_GATTS_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ -#define BLE_GATTS_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ -#define BLE_GATTS_OP_EXEC_WRITE_REQ_CANCEL 0x05 /**< Execute Write Request: Cancel all prepared writes. */ -#define BLE_GATTS_OP_EXEC_WRITE_REQ_NOW 0x06 /**< Execute Write Request: Immediately execute all prepared writes. */ -/** @} */ - -/** @defgroup BLE_GATTS_VLOCS GATT Value Locations - * @{ */ -#define BLE_GATTS_VLOC_INVALID 0x00 /**< Invalid Location. */ -#define BLE_GATTS_VLOC_STACK 0x01 /**< Attribute Value is located in stack memory, no user memory is required. */ -#define BLE_GATTS_VLOC_USER 0x02 /**< Attribute Value is located in user memory. This requires the user to maintain a valid buffer through the lifetime of the attribute, since the stack - will read and write directly to the memory using the pointer provided in the APIs. There are no alignment requirements for the buffer. */ -/** @} */ - -/** @defgroup BLE_GATTS_AUTHORIZE_TYPES GATT Server Authorization Types - * @{ */ -#define BLE_GATTS_AUTHORIZE_TYPE_INVALID 0x00 /**< Invalid Type. */ -#define BLE_GATTS_AUTHORIZE_TYPE_READ 0x01 /**< Authorize a Read Operation. */ -#define BLE_GATTS_AUTHORIZE_TYPE_WRITE 0x02 /**< Authorize a Write Request Operation. */ -/** @} */ - - -/** @} */ - -/**@brief Attribute metadata. */ -typedef struct -{ - ble_gap_conn_sec_mode_t read_perm; /**< Read permissions. */ - ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ - uint8_t vlen :1; /**< Variable length attribute. */ - uint8_t vloc :2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ - uint8_t rd_auth :1; /**< Read Authorization and value will be requested from the application on every read operation. */ - uint8_t wr_auth :1; /**< Write Authorization will be requested from the application on every Write Request operation (but not Write Command). */ -} ble_gatts_attr_md_t; - - -/**@brief GATT Attribute. */ -typedef struct -{ - ble_uuid_t* p_uuid; /**< Pointer to the attribute UUID. */ - ble_gatts_attr_md_t* p_attr_md; /**< Pointer to the attribute metadata structure. */ - uint16_t init_len; /**< Initial attribute value length in bytes. */ - uint16_t init_offs; /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */ - uint16_t max_len; /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */ - uint8_t* p_value; /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer - that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. - The stack may access that memory directly without the application's knowledge. */ -} ble_gatts_attr_t; - - -/**@brief GATT Attribute Context. */ -typedef struct -{ - ble_uuid_t srvc_uuid; /**< Service UUID. */ - ble_uuid_t char_uuid; /**< Characteristic UUID if applicable (BLE_UUID_TYPE_UNKNOWN if N/A). */ - ble_uuid_t desc_uuid; /**< Descriptor UUID if applicable (BLE_UUID_TYPE_UNKNOWN if N/A). */ - uint16_t srvc_handle; /**< Service Handle. */ - uint16_t value_handle; /**< Characteristic Handle if applicable (BLE_GATT_HANDLE_INVALID if N/A). */ - uint8_t type; /**< Attribute Type, see @ref BLE_GATTS_ATTR_TYPES. */ -} ble_gatts_attr_context_t; - - -/**@brief GATT Characteristic Presentation Format. */ -typedef struct -{ - uint8_t format; /**< Format of the value, see @ref BLE_GATT_CPF_FORMATS. */ - int8_t exponent; /**< Exponent for integer data types. */ - uint16_t unit; /**< UUID from Bluetooth Assigned Numbers. */ - uint8_t name_space; /**< Namespace from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ - uint16_t desc; /**< Namespace description from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ -} ble_gatts_char_pf_t; - - -/**@brief GATT Characteristic metadata. */ -typedef struct -{ - ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ - ble_gatt_char_ext_props_t char_ext_props; /**< Characteristic Extended Properties. */ - uint8_t* p_char_user_desc; /**< Pointer to a UTF-8, NULL if the descriptor is not required. */ - uint16_t char_user_desc_max_size; /**< The maximum size in bytes of the user description descriptor. */ - uint16_t char_user_desc_size; /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ - ble_gatts_char_pf_t* p_char_pf; /**< Pointer to a presentation format structure or NULL if the descriptor is not required. */ - ble_gatts_attr_md_t* p_user_desc_md; /**< Attribute metadata for the User Description descriptor, or NULL for default values. */ - ble_gatts_attr_md_t* p_cccd_md; /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */ - ble_gatts_attr_md_t* p_sccd_md; /**< Attribute metadata for the Server Characteristic Configuration Descriptor, or NULL for default values. */ -} ble_gatts_char_md_t; - - -/**@brief GATT Characteristic Definition Handles. */ -typedef struct -{ - uint16_t value_handle; /**< Handle to the characteristic value. */ - uint16_t user_desc_handle; /**< Handle to the User Description descriptor, or BLE_GATT_HANDLE_INVALID if not present. */ - uint16_t cccd_handle; /**< Handle to the Client Characteristic Configuration Descriptor, or BLE_GATT_HANDLE_INVALID if not present. */ - uint16_t sccd_handle; /**< Handle to the Server Characteristic Configuration Descriptor, or BLE_GATT_HANDLE_INVALID if not present. */ -} ble_gatts_char_handles_t; - - -/**@brief GATT HVx parameters. */ -typedef struct -{ - uint16_t handle; /**< Characteristic Value Handle. */ - uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ - uint16_t offset; /**< Offset within the attribute value. */ - uint16_t* p_len; /**< Length in bytes to be written, length in bytes written after successful return. */ - uint8_t* p_data; /**< Actual data content, use NULL to use the current attribute value. */ -} ble_gatts_hvx_params_t; - -/**@brief GATT Read Authorization parameters. */ -typedef struct -{ - uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ - uint8_t update : 1; /**< If set, data supplied in p_data will be used in the ATT response. */ - uint16_t offset; /**< Offset of the attribute value being updated. */ - uint16_t len; /**< Length in bytes of the value in p_data pointer, see @ref BLE_GATTS_ATTR_LENS_MAX. */ - uint8_t* p_data; /**< Pointer to new value used to update the attribute value. */ -} ble_gatts_read_authorize_params_t; - -/**@brief GATT Write Authorisation parameters. */ -typedef struct -{ - uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ -} ble_gatts_write_authorize_params_t; - -/**@brief GATT Read or Write Authorize Reply parameters. */ -typedef struct -{ - uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ - union { - ble_gatts_read_authorize_params_t read; /**< Read authorization parameters. */ - ble_gatts_write_authorize_params_t write; /**< Write authorization parameters. */ - } params; -} ble_gatts_rw_authorize_reply_params_t; - - -/** - * @brief GATT Server Event IDs. - */ -enum BLE_GATTS_EVTS -{ - BLE_GATTS_EVT_WRITE = BLE_GATTS_EVT_BASE, /**< Write operation performed. */ - BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST, /**< Read/Write Authorization request. */ - BLE_GATTS_EVT_SYS_ATTR_MISSING, /**< A persistent system attribute access is pending, awaiting a sd_ble_gatts_sys_attr_set(). */ - BLE_GATTS_EVT_HVC, /**< Handle Value Confirmation. */ - BLE_GATTS_EVT_SC_CONFIRM, /**< Service Changed Confirmation. */ - BLE_GATTS_EVT_TIMEOUT /**< Timeout. */ -}; - - -/**@brief Event structure for BLE_GATTS_EVT_WRITE. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint8_t op; /**< Type of write operation, see @ref BLE_GATTS_OPS. */ - ble_gatts_attr_context_t context; /**< Attribute Context. */ - uint16_t offset; /**< Offset for the write operation. */ - uint16_t len; /**< Length of the incoming data. */ - uint8_t data[1]; /**< Incoming data, variable length. */ -} ble_gatts_evt_write_t; - -/**@brief Event structure for authorize read request. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - ble_gatts_attr_context_t context; /**< Attribute Context. */ - uint16_t offset; /**< Offset for the read operation. */ -} ble_gatts_evt_read_t; - -/**@brief Event structure for BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST. */ -typedef struct -{ - uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ - union { - ble_gatts_evt_read_t read; /**< Attribute Read Parameters. */ - ble_gatts_evt_write_t write; /**< Attribute Write Parameters. */ - } request; -} ble_gatts_evt_rw_authorize_request_t; - -/**@brief Event structure for BLE_GATTS_EVT_SYS_ATTR_MISSING. */ -typedef struct -{ - uint8_t hint; -} ble_gatts_evt_sys_attr_missing_t; - - -/**@brief Event structure for BLE_GATTS_EVT_HVC. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ -} ble_gatts_evt_hvc_t; - -/**@brief Event structure for BLE_GATTS_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ -} ble_gatts_evt_timeout_t; - - -/**@brief GATT Server event callback event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occurred. */ - union - { - ble_gatts_evt_write_t write; /**< Write Event Parameters. */ - ble_gatts_evt_rw_authorize_request_t authorize_request; /**< Read or Write Authorize Request Parameters. */ - ble_gatts_evt_sys_attr_missing_t sys_attr_missing; /**< System attributes missing. */ - ble_gatts_evt_hvc_t hvc; /**< Handle Value Confirmation Event Parameters. */ - ble_gatts_evt_timeout_t timeout; /**< Timeout Event. */ - } params; -} ble_gatts_evt_t; - - -/**@brief Add a service declaration to the local server ATT table. - * - * @param[in] type Toggles between primary and secondary services, see @ref BLE_GATTS_SRVC_TYPES. - * @param[in] p_uuid Pointer to service UUID. - * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @note Secondary Services are only relevant in the context of the entity that references them, it is therefore forbidden to - * add a secondary service declaration that is not referenced by another service later in the ATT table. - * - * @return @ref NRF_SUCCESS Successfully added a service declaration. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, Vendor Specific UUIDs need to be present in the table. - * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type, ble_uuid_t const*const p_uuid, uint16_t *const p_handle)); - - -/**@brief Add an include declaration to the local server ATT table. - * - * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential addition is supported at this time). - * - * @note The included service must already be present in the ATT table prior to this call. - * - * @param[in] service_handle Handle of the service where the included service is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] inc_srvc_handle Handle of the included service. - * @param[out] p_include_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @return @ref NRF_SUCCESS Successfully added an include declaration. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, handle values need to match previously added services. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, self inclusions are not allowed. - * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @return @ref NRF_ERROR_NOT_FOUND Attribute not found. - */ -SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t *const p_include_handle)); - - -/**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the local server ATT table. - * - * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential addition is supported at this time). - * - * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writeable auxiliaries bits, - * readable (no security) and writeable (selectable) CCCDs and SCCDs and valid presentation format values. - * - * @note If no metadata is provided for the optional descriptors, their permissions will be derived from the characteristic permissions. - * - * @param[in] service_handle Handle of the service where the characteristic is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] p_char_md Characteristic metadata. - * @param[in] p_attr_char_value Pointer to the attribute structure corresponding to the characteristic value. - * @param[out] p_handles Pointer to the structure where the assigned handles will be stored. - * - * @return @ref NRF_SUCCESS Successfully added a characteristic. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, service handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required. - * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - */ -SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_add(uint16_t service_handle, ble_gatts_char_md_t const*const p_char_md, ble_gatts_attr_t const*const p_attr_char_value, ble_gatts_char_handles_t *const p_handles)); - - -/**@brief Add a descriptor to the local server ATT table. - * - * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential addition is supported at this time). - * - * @param[in] char_handle Handle of the characteristic where the descriptor is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] p_attr Pointer to the attribute structure. - * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @return @ref NRF_SUCCESS Successfully added a descriptor. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, characteristic handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, a characteristic context is required. - * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - */ -SVCALL(SD_BLE_GATTS_DESCRIPTOR_ADD, uint32_t, sd_ble_gatts_descriptor_add(uint16_t char_handle, ble_gatts_attr_t const * const p_attr, uint16_t* const p_handle)); - -/**@brief Set the value of a given attribute. - * - * @param[in] handle Attribute handle. - * @param[in] offset Offset in bytes to write from. - * @param[in,out] p_len Length in bytes to be written, length in bytes written after successful return. - * @param[in] p_value Pointer to a buffer (at least len bytes long) containing the desired attribute value. - * - * @return @ref NRF_SUCCESS Successfully set the value of the attribute. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_NOT_FOUND Attribute not found. - * @return @ref NRF_ERROR_FORBIDDEN Forbidden handle supplied, certain attributes are not modifiable by the application. - * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - */ -SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t handle, uint16_t offset, uint16_t* const p_len, uint8_t const * const p_value)); - -/**@brief Get the value of a given attribute. - * - * @param[in] handle Attribute handle. - * @param[in] offset Offset in bytes to read from. - * @param[in,out] p_len Length in bytes to be read, total length of attribute value (in bytes, starting from offset) after successful return. - * @param[in,out] p_data Pointer to a buffer (at least len bytes long) where to store the attribute value. Set to NULL to obtain the complete length of attribute value. - * - * @note If the attribute value is longer than the size of the supplied buffer, - * p_len will return the total attribute value length (excluding offset), - * and not the number of bytes actually returned in p_data. - * The application may use this information to allocate a suitable buffer size. - * - * @return @ref NRF_SUCCESS Successfully retrieved the value of the attribute. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_NOT_FOUND Attribute not found. - */ -SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t handle, uint16_t offset, uint16_t *const p_len, uint8_t* const p_data)); - -/**@brief Notify or Indicate an attribute value. - * - * @details This function checks for the relevant Client Characteristic Configuration descriptor value to verify that the relevant operation - * (notification or indication) has been enabled by the client. It is also able to update the attribute value before issuing the PDU, so that - * the application can atomically perform a value update and a server initiated transaction with a single API call. - * If the application chooses to indicate an attribute value, a @ref BLE_GATTS_EVT_HVC will be sent up as soon as the confirmation arrives from - * the peer. - * - * @note The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. - * When receiveing the error codes @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and - * @ref BLE_ERROR_NO_TX_BUFFERS the ATT table has been updated. - * The caller can check whether the value has been updated by looking at the contents of *(p_hvx_params->p_len). - * - * @note It is important to note that a notification will <b>consume an application buffer</b>, and will therefore - * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. An indication on the other hand will use the - * standard server internal buffer and thus will only generate a @ref BLE_GATTS_EVT_HVC event as soon as the confirmation - * has been received from the peer. Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_hvx_params Pointer to an HVx parameters structure. If the p_data member contains a non-NULL pointer the attribute value will be updated with - * the contents pointed by it before sending the notification or indication. - * - * @return @ref NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate. - * @return @ref BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated. - * @return @ref NRF_ERROR_NOT_FOUND Attribute not found. - * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, notifications or indications must be enabled in the CCCD. - * @return @ref NRF_ERROR_BUSY Procedure already in progress. - * @return @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers to send the data, applies only to notifications. - */ -SVCALL(SD_BLE_GATTS_HVX, uint32_t, sd_ble_gatts_hvx(uint16_t conn_handle, ble_gatts_hvx_params_t const*const p_hvx_params)); - -/**@brief Indicate the Service Changed attribute value. - * - * @details This call will send a Handle Value Indication to one or more peers connected to inform them that the attribute - * table layout has changed. As soon as the peer has confirmed the indication, a @ref BLE_GATTS_EVT_SC_CONFIRM event will - * be issued. - * - * @note Some of the restrictions and limitations that apply to @ref sd_ble_gatts_hvx also apply here. - * - * @param[in] conn_handle Connection handle. - * @param[in] start_handle Start of affected attribute handle range. - * @param[in] end_handle End of affected attribute handle range. - * - * @return @ref NRF_SUCCESS Successfully queued the Service Changed indication for transmission. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied, handles must be in the range populated by the application. - * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, notifications or indications must be enabled in the CCCD. - * @return @ref NRF_ERROR_BUSY Procedure already in progress. - * @return @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - */ -SVCALL(SD_BLE_GATTS_SERVICE_CHANGED, uint32_t, sd_ble_gatts_service_changed(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle)); - -/**@brief Respond to a Read/Write authorization request. - * - * @note This call should only be used as a response to a @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event issued to the application. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_rw_authorize_reply_params Pointer to a structure with the attribute provided by the application. - * - * @return @ref NRF_SUCCESS Successfully queued a response to the peer, and in the case of a write operation, ATT table updated. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_STATE No authorization request pending. - * @return @ref NRF_ERROR_INVALID_PARAM Authorization op invalid, - * or for Read Authorization reply: requested handles not replied with, - * or for Write Authorization reply: handle supplied does not match requested handle. - */ -SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_reply(uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const*const p_rw_authorize_reply_params)); - - -/**@brief Update persistent system attribute information. - * - * @details Supply to the stack information about persistent system attributes. - * This call is legal in the connected state only, and is usually - * made immediately after a connection is established and the bond identified. - * usually as a response to a BLE_GATTS_EVT_SYS_ATTR_MISSING. - * - * p_sysattrs may point directly to the application's stored copy of the struct. - * If the pointer is NULL, the system attribute info is initialized, assuming that - * the application does not have any previously saved data for this bond. - * - * @note The state of persistent system attributes is reset upon connection and then remembered for its duration. - * - * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially. - * This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or - * reset the SoftDevice to return to a known state. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_sys_attr_data Pointer to a saved copy of system attributes supplied to the stack, or NULL. - * @param[in] len Size of data pointed by p_sys_attr_data, in octets. - * - * @return @ref NRF_SUCCESS Successfully set the system attribute information. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get. - * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const*const p_sys_attr_data, uint16_t len)); - - -/**@brief Retrieve persistent system attribute information from the stack. - * - * @details This call is used to retrieve information about values to be stored perisistently by the application - * after a connection has been terminated. When a new connection is made to the same bond, the values - * should be restored using @ref sd_ble_gatts_sys_attr_set. - * The data should be read before any new advertising is started, or any new connection established. The connection handle for - * the previous now defunct connection will remain valid until a new one is created to allow this API call to refer to it. - * - * @param[in] conn_handle Connection handle of the recently terminated connection. - * @param[in] p_sys_attr_data Pointer to a buffer where updated information about system attributes will be filled in. NULL can be provided to - * obtain the length of the data - * @param[in,out] p_len Size of application buffer if p_sys_attr_data is not NULL. Unconditially updated to actual length of system attribute data. - * - * @return @ref NRF_SUCCESS Successfully retrieved the system attribute information. - * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer. - */ -SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t * const p_sys_attr_data, uint16_t* const p_len)); - - -#endif // BLE_GATTS_H__ - -/** - @} -*/
--- a/TARGET_NRF51822/ble_hci.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -/* - Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. - - The information contained herein is confidential property of Nordic Semiconductor. The use, - copying, transfer or disclosure of such information is prohibited except by express written - agreement with Nordic Semiconductor. - */ -/** - @addtogroup BLE_COMMON - @{ -*/ - - -#ifndef BLE_HCI_H__ -#define BLE_HCI_H__ - -/** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes - * @{ */ - -#define BLE_HCI_STATUS_CODE_SUCCESS 0x00 -#define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND 0x01 -#define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER 0x02 -/*0x03 Hardware Failure -0x04 Page Timeout -*/ -#define BLE_HCI_AUTHENTICATION_FAILURE 0x05 -#define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING 0x06 -#define BLE_HCI_MEMORY_CAPACITY_EXCEEDED 0x07 -#define BLE_HCI_CONNECTION_TIMEOUT 0x08 -/*0x09 Connection Limit Exceeded -0x0A Synchronous Connection Limit To A Device Exceeded -0x0B ACL Connection Already Exists*/ -#define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED 0x0C -/*0x0D Connection Rejected due to Limited Resources -0x0E Connection Rejected Due To Security Reasons -0x0F Connection Rejected due to Unacceptable BD_ADDR -0x10 Connection Accept Timeout Exceeded -0x11 Unsupported Feature or Parameter Value*/ -#define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12 -#define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION 0x13 -#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14 -#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF 0x15 -#define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION 0x16 -/* -0x17 Repeated Attempts -0x18 Pairing Not Allowed -0x19 Unknown LMP PDU -*/ -#define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A -/* -0x1B SCO Offset Rejected -0x1C SCO Interval Rejected -0x1D SCO Air Mode Rejected*/ -#define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS 0x1E -#define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR 0x1F -/*0x20 Unsupported LMP Parameter Value -0x21 Role Change Not Allowed -*/ -#define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT 0x22 -/*0x23 LMP Error Transaction Collision*/ -#define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED 0x24 -/*0x25 Encryption Mode Not Acceptable -0x26 Link Key Can Not be Changed -0x27 Requested QoS Not Supported -*/ -#define BLE_HCI_INSTANT_PASSED 0x28 -#define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED 0x29 -#define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION 0x2A -/* -0x2B Reserved -0x2C QoS Unacceptable Parameter -0x2D QoS Rejected -0x2E Channel Classification Not Supported -0x2F Insufficient Security -0x30 Parameter Out Of Mandatory Range -0x31 Reserved -0x32 Role Switch Pending -0x33 Reserved -0x34 Reserved Slot Violation -0x35 Role Switch Failed -0x36 Extended Inquiry Response Too Large -0x37 Secure Simple Pairing Not Supported By Host. -0x38 Host Busy - Pairing -0x39 Connection Rejected due to No Suitable Channel Found*/ -#define BLE_HCI_CONTROLLER_BUSY 0x3A -#define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE 0x3B -#define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT 0x3C -#define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE 0x3D -#define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED 0x3E - -/** @} */ - - -#endif // BLE_HCI_H__ - -/** @} */
--- a/TARGET_NRF51822/ble_l2cap.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ -/** - @addtogroup BLE_L2CAP Logical Link Control and Adaptation Protocol (L2CAP) - @{ - @brief Definitions and prototypes for the L2CAP interface. - */ - -#ifndef BLE_L2CAP_H__ -#define BLE_L2CAP_H__ - -#include "ble_types.h" -#include "ble_ranges.h" -#include "ble_err.h" -#include "nrf_svc.h" - -/**@brief L2CAP API SVC numbers. */ -enum BLE_L2CAP_SVCS -{ - SD_BLE_L2CAP_CID_REGISTER = BLE_L2CAP_SVC_BASE, /**< Register a CID. */ - SD_BLE_L2CAP_CID_UNREGISTER, /**< Unregister a CID. */ - SD_BLE_L2CAP_TX /**< Transmit a packet. */ -}; - -/**@addtogroup BLE_L2CAP_DEFINES Defines - * @{ */ - -/**@defgroup BLE_ERRORS_L2CAP SVC return values specific to L2CAP - * @{ */ -#define BLE_ERROR_L2CAP_CID_IN_USE (NRF_L2CAP_ERR_BASE + 0x000) /**< CID already in use. */ -/** @} */ - -/**@brief Default L2CAP MTU. */ -#define BLE_L2CAP_MTU_DEF (23) - -/**@brief Invalid Channel Identifier. */ -#define BLE_L2CAP_CID_INVALID (0x0000) - -/**@brief Dynamic Channel Identifier base. */ -#define BLE_L2CAP_CID_DYN_BASE (0x0040) - -/**@brief Maximum amount of dynamic CIDs. */ -#define BLE_L2CAP_CID_DYN_MAX (8) - -/** @} */ - -/**@brief Packet header format for L2CAP transmission. */ -typedef struct -{ - uint16_t len; /**< Length of valid info in data member. */ - uint16_t cid; /**< Channel ID on which packet is transmitted. */ -} ble_l2cap_header_t; - -/**@brief L2CAP Event IDs. */ -enum BLE_L2CAP_EVTS -{ - BLE_L2CAP_EVT_RX = BLE_L2CAP_EVT_BASE /**< L2CAP packet received. */ -}; - - -/**@brief L2CAP Received packet event report. */ -typedef struct -{ - ble_l2cap_header_t header; /** L2CAP packet header. */ - uint8_t data[1]; /**< Packet data, variable length. */ -} ble_l2cap_evt_rx_t; - - -/**@brief L2CAP event callback event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occured. */ - union - { - ble_l2cap_evt_rx_t rx; /**< RX Event parameters. */ - } params; -} ble_l2cap_evt_t; - - -/**@brief Register a CID with L2CAP. - * - * @details This registers a higher protocol layer with the L2CAP multiplexer, and is requried prior to all operations on the CID. - * - * @param[in] cid L2CAP CID. - * - * @return @ref NRF_SUCCESS Successfully registered a CID with the L2CAP layer. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CID must be above @ref BLE_L2CAP_CID_DYN_BASE. - * @return @ref BLE_ERROR_L2CAP_CID_IN_USE L2CAP CID already in use. - * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_L2CAP_CID_REGISTER, uint32_t, sd_ble_l2cap_cid_register(uint16_t cid)); - -/**@brief Unregister a CID with L2CAP. - * - * @details This unregisters a previously registerd higher protocol layer with the L2CAP multiplexer. - * - * @param[in] cid L2CAP CID. - * - * @return @ref NRF_SUCCESS Successfully unregistered the CID. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @return @ref NRF_ERROR_NOT_FOUND CID not previously registered. - */ -SVCALL(SD_BLE_L2CAP_CID_UNREGISTER, uint32_t, sd_ble_l2cap_cid_unregister(uint16_t cid)); - -/**@brief Transmit an L2CAP packet. - * - * @note It is important to note that a call to this function will <b>consume an application buffer</b>, and will therefore - * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. - * Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details. - * - * @param[in] conn_handle Connection Handle. - * @param[in] p_header Pointer to a packet header containing length and CID. - * @param[in] p_data Pointer to the data to be transmitted. - * - * @return @ref NRF_SUCCESS Successfully queued an L2CAP packet for transmission. - * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CIDs must be registered beforehand with @ref sd_ble_l2cap_cid_register. - * @return @ref NRF_ERROR_NOT_FOUND CID not found. - * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @return @ref BLE_ERROR_NO_TX_BUFFERS Not enough application buffers available. - * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, see @ref BLE_L2CAP_MTU_DEF. - */ -SVCALL(SD_BLE_L2CAP_TX, uint32_t, sd_ble_l2cap_tx(uint16_t conn_handle, ble_l2cap_header_t const * const p_header, uint8_t const * const p_data)); - - -#endif // BLE_L2CAP_H__ - -/** - @} -*/
--- a/TARGET_NRF51822/ble_ranges.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* - Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. - - The information contained herein is confidential property of Nordic Semiconductor. The use, - copying, transfer or disclosure of such information is prohibited except by express written - agreement with Nordic Semiconductor. - */ -/** - @addtogroup BLE_COMMON - @{ - @defgroup ble_ranges Module specific SVC and event number subranges - @{ - - @brief Definition of SVC and event number subranges for each API module. - - @note - SVCs and event numbers are split into subranges for each API module. - Each module receives its entire allocated range of SVC calls, whether implemented or not, - but return BLE_ERROR_NOT_SUPPORTED for unimplemented or undefined calls in its range. - - Note that the symbols BLE_<module>_SVC_LAST is the end of the allocated SVC range, - rather than the last SVC function call actually defined and implemented. - - Specific SVC and event values are defined in each module's ble_<module>.h file, - which defines names of each individual SVC code based on the range start value. -*/ - -#ifndef BLE_RANGES_H__ -#define BLE_RANGES_H__ - -#define BLE_SVC_BASE 0x60 -#define BLE_SVC_LAST 0x6B /* Total: 12. */ - -#define BLE_RESERVED_SVC_BASE 0x6C -#define BLE_RESERVED_SVC_LAST 0x6F /* Total: 4. */ - -#define BLE_GAP_SVC_BASE 0x70 -#define BLE_GAP_SVC_LAST 0x8F /* Total: 32. */ - -#define BLE_GATTC_SVC_BASE 0x90 -#define BLE_GATTC_SVC_LAST 0x9F /* Total: 16. */ - -#define BLE_GATTS_SVC_BASE 0xA0 -#define BLE_GATTS_SVC_LAST 0xAF /* Total: 16. */ - -#define BLE_L2CAP_SVC_BASE 0xB0 -#define BLE_L2CAP_SVC_LAST 0xBF /* Total: 16. */ - - -#define BLE_EVT_INVALID 0x00 - -#define BLE_EVT_BASE 0x01 -#define BLE_EVT_LAST 0x0F /* Total: 15. */ - -#define BLE_GAP_EVT_BASE 0x10 -#define BLE_GAP_EVT_LAST 0x2F /* Total: 32. */ - -#define BLE_GATTC_EVT_BASE 0x30 -#define BLE_GATTC_EVT_LAST 0x4F /* Total: 32. */ - -#define BLE_GATTS_EVT_BASE 0x50 -#define BLE_GATTS_EVT_LAST 0x6F /* Total: 32. */ - -#define BLE_L2CAP_EVT_BASE 0x70 -#define BLE_L2CAP_EVT_LAST 0x8F /* Total: 32. */ - -#endif /* BLE_RANGES_H__ */ - -/** - @} - @} -*/
--- a/TARGET_NRF51822/ble_types.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ -/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ -/** - @addtogroup BLE_COMMON - @{ - @defgroup ble_types Common types and macro definitions - @{ - - @brief Common types and macro definitions for the S110 SoftDevice. - */ - -#ifndef BLE_TYPES_H__ -#define BLE_TYPES_H__ - -#include <stdint.h> - -/** @addtogroup BLE_COMMON_DEFINES Defines - * @{ */ - -/** @defgroup BLE_CONN_HANDLES BLE Connection Handles - * @{ */ -#define BLE_CONN_HANDLE_INVALID 0xFFFF /**< Invalid Connection Handle. */ -#define BLE_CONN_HANDLE_ALL 0xFFFE /**< Applies to all Connection Handles. */ -/** @} */ - - -/** @defgroup BLE_UUID_VALUES Assigned Values for BLE UUIDs - * @{ */ -/* Generic UUIDs, applicable to all services */ -#define BLE_UUID_UNKNOWN 0x0000 /**< Reserved UUID. */ -#define BLE_UUID_SERVICE_PRIMARY 0x2800 /**< Primary Service. */ -#define BLE_UUID_SERVICE_SECONDARY 0x2801 /**< Secondary Service. */ -#define BLE_UUID_SERVICE_INCLUDE 0x2802 /**< Include. */ -#define BLE_UUID_CHARACTERISTIC 0x2803 /**< Characteristic. */ -#define BLE_UUID_DESCRIPTOR_CHAR_EXT_PROP 0x2900 /**< Characteristic Extended Properties Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_USER_DESC 0x2901 /**< Characteristic User Description Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG 0x2902 /**< Client Characteristic Configuration Descriptor. */ -#define BLE_UUID_DESCRIPTOR_SERVER_CHAR_CONFIG 0x2903 /**< Server Characteristic Configuration Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_PRESENTATION_FORMAT 0x2904 /**< Characteristic Presentation Format Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_AGGREGATE_FORMAT 0x2905 /**< Characteristic Aggregate Format Descriptor. */ -/* GATT specific UUIDs */ -#define BLE_UUID_GATT 0x1801 /**< Generic Attribute Profile. */ -#define BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED 0x2A05 /**< Service Changed Characteristic. */ -/* GAP specific UUIDs */ -#define BLE_UUID_GAP 0x1800 /**< Generic Access Profile. */ -#define BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME 0x2A00 /**< Device Name Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_APPEARANCE 0x2A01 /**< Appearance Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_PPF 0x2A02 /**< Peripheral Privacy Flag Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_RECONN_ADDR 0x2A03 /**< Reconnection Address Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_PPCP 0x2A04 /**< Peripheral Preferred Connection Parameters Characteristic. */ -/** @} */ - - -/** @defgroup BLE_UUID_TYPES Types of UUID - * @{ */ -#define BLE_UUID_TYPE_UNKNOWN 0x00 /**< Invalid UUID type. */ -#define BLE_UUID_TYPE_BLE 0x01 /**< Bluetooth SIG UUID (16-bit). */ -#define BLE_UUID_TYPE_VENDOR_BEGIN 0x02 /**< Vendor UUID types start at this index (128-bit). */ -/** @} */ - - -/** @defgroup BLE_APPEARANCES Bluetooth Appearance values - * @note Retrieved from http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml - * @{ */ -#define BLE_APPEARANCE_UNKNOWN 0 /**< Unknown. */ -#define BLE_APPEARANCE_GENERIC_PHONE 64 /**< Generic Phone. */ -#define BLE_APPEARANCE_GENERIC_COMPUTER 128 /**< Generic Computer. */ -#define BLE_APPEARANCE_GENERIC_WATCH 192 /**< Generic Watch. */ -#define BLE_APPEARANCE_WATCH_SPORTS_WATCH 193 /**< Watch: Sports Watch. */ -#define BLE_APPEARANCE_GENERIC_CLOCK 256 /**< Generic Clock. */ -#define BLE_APPEARANCE_GENERIC_DISPLAY 320 /**< Generic Display. */ -#define BLE_APPEARANCE_GENERIC_REMOTE_CONTROL 384 /**< Generic Remote Control. */ -#define BLE_APPEARANCE_GENERIC_EYE_GLASSES 448 /**< Generic Eye-glasses. */ -#define BLE_APPEARANCE_GENERIC_TAG 512 /**< Generic Tag. */ -#define BLE_APPEARANCE_GENERIC_KEYRING 576 /**< Generic Keyring. */ -#define BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 640 /**< Generic Media Player. */ -#define BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 704 /**< Generic Barcode Scanner. */ -#define BLE_APPEARANCE_GENERIC_THERMOMETER 768 /**< Generic Thermometer. */ -#define BLE_APPEARANCE_THERMOMETER_EAR 769 /**< Thermometer: Ear. */ -#define BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR 832 /**< Generic Heart rate Sensor. */ -#define BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT 833 /**< Heart Rate Sensor: Heart Rate Belt. */ -#define BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 896 /**< Generic Blood Pressure. */ -#define BLE_APPEARANCE_BLOOD_PRESSURE_ARM 897 /**< Blood Pressure: Arm. */ -#define BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 898 /**< Blood Pressure: Wrist. */ -#define BLE_APPEARANCE_GENERIC_HID 960 /**< Human Interface Device (HID). */ -#define BLE_APPEARANCE_HID_KEYBOARD 961 /**< Keyboard (HID Subtype). */ -#define BLE_APPEARANCE_HID_MOUSE 962 /**< Mouse (HID Subtype). */ -#define BLE_APPEARANCE_HID_JOYSTICK 963 /**< Joystiq (HID Subtype). */ -#define BLE_APPEARANCE_HID_GAMEPAD 964 /**< Gamepad (HID Subtype). */ -#define BLE_APPEARANCE_HID_DIGITIZERSUBTYPE 965 /**< Digitizer Tablet (HID Subtype). */ -#define BLE_APPEARANCE_HID_CARD_READER 966 /**< Card Reader (HID Subtype). */ -#define BLE_APPEARANCE_HID_DIGITAL_PEN 967 /**< Digital Pen (HID Subtype). */ -#define BLE_APPEARANCE_HID_BARCODE 968 /**< Barcode Scanner (HID Subtype). */ -#define BLE_APPEARANCE_GENERIC_GLUCOSE_METER 1024 /**< Generic Glucose Meter. */ -#define BLE_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR 1088 /**< Generic Running Walking Sensor. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE 1089 /**< Running Walking Sensor: In-Shoe. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE 1090 /**< Running Walking Sensor: On-Shoe. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP 1091 /**< Running Walking Sensor: On-Hip. */ -#define BLE_APPEARANCE_GENERIC_CYCLING 1152 /**< Generic Cycling. */ -#define BLE_APPEARANCE_CYCLING_CYCLING_COMPUTER 1153 /**< Cycling: Cycling Computer. */ -#define BLE_APPEARANCE_CYCLING_SPEED_SENSOR 1154 /**< Cycling: Speed Sensor. */ -#define BLE_APPEARANCE_CYCLING_CADENCE_SENSOR 1155 /**< Cycling: Cadence Sensor. */ -#define BLE_APPEARANCE_CYCLING_POWER_SENSOR 1156 /**< Cycling: Power Sensor. */ -#define BLE_APPEARANCE_CYCLING_SPEED_CADENCE_SENSOR 1157 /**< Cycling: Speed and Cadence Sensor. */ -/** @} */ - -/** @brief Set .type and .uuid fields of ble_uuid_struct to specified uuid value. */ -#define BLE_UUID_BLE_ASSIGN(instance, value) do {\ - instance.type = BLE_UUID_TYPE_BLE; \ - instance.uuid = value;} while(0) - -/** @brief Copy type and uuid members from src to dst ble_uuid_t pointer. Both pointers must be valid/non-null. */ -#define BLE_UUID_COPY_PTR(dst, src) do {\ - (dst)->type = (src)->type; \ - (dst)->uuid = (src)->uuid;} while(0) - -/** @brief Copy type and uuid members from src to dst ble_uuid_t struct. */ -#define BLE_UUID_COPY_INST(dst, src) do {\ - (dst).type = (src).type; \ - (dst).uuid = (src).uuid;} while(0) - -/** @brief Compare for equality both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ -#define BLE_UUID_EQ(p_uuid1, p_uuid2) \ - (((p_uuid1)->type == (p_uuid2)->type) && ((p_uuid1)->uuid == (p_uuid2)->uuid)) - -/** @brief Compare for difference both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ -#define BLE_UUID_NEQ(p_uuid1, p_uuid2) \ - (((p_uuid1)->type != (p_uuid2)->type) || ((p_uuid1)->uuid != (p_uuid2)->uuid)) - -/** @} */ - -/** @brief 128 bit UUID values. */ -typedef struct -{ - unsigned char uuid128[16]; -} ble_uuid128_t; - -/** @brief Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs. */ -typedef struct -{ - uint16_t uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */ - uint8_t type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */ -} ble_uuid_t; - - - -#endif /* BLE_TYPES_H__ */ - -/** - @} - @} -*/
--- a/TARGET_NRF51822/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 0 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 0 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 0 - -#define DEVICE_RTC 0 - -#define DEVICE_ETHERNET 0 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 0 - -#define DEVICE_ERROR_PATTERN 1 - -#include "objects.h" - -#endif
--- a/TARGET_NRF51822/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NRF51822/nrf_error.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ - /** - @defgroup nrf_error SoftDevice Global Error Codes - @{ - - @brief Global Error definitions -*/ - -/* Header guard */ -#ifndef NRF_ERROR_H__ -#define NRF_ERROR_H__ - -/** @defgroup NRF_ERRORS_BASE Error Codes Base number definitions - * @{ */ -#define NRF_ERROR_BASE_NUM (0x0) ///< Global error base -#define NRF_ERROR_SDM_BASE_NUM (0x1000) ///< SDM error base -#define NRF_ERROR_SOC_BASE_NUM (0x2000) ///< SoC error base -#define NRF_ERROR_STK_BASE_NUM (0x3000) ///< STK error base -/** @} */ - -#define NRF_SUCCESS (NRF_ERROR_BASE_NUM + 0) ///< Successful command -#define NRF_ERROR_SVC_HANDLER_MISSING (NRF_ERROR_BASE_NUM + 1) ///< SVC handler is missing -#define NRF_ERROR_SOFTDEVICE_NOT_ENABLED (NRF_ERROR_BASE_NUM + 2) ///< SoftDevice has not been enabled -#define NRF_ERROR_INTERNAL (NRF_ERROR_BASE_NUM + 3) ///< Internal Error -#define NRF_ERROR_NO_MEM (NRF_ERROR_BASE_NUM + 4) ///< No Memory for operation -#define NRF_ERROR_NOT_FOUND (NRF_ERROR_BASE_NUM + 5) ///< Not found -#define NRF_ERROR_NOT_SUPPORTED (NRF_ERROR_BASE_NUM + 6) ///< Not supported -#define NRF_ERROR_INVALID_PARAM (NRF_ERROR_BASE_NUM + 7) ///< Invalid Parameter -#define NRF_ERROR_INVALID_STATE (NRF_ERROR_BASE_NUM + 8) ///< Invalid state, operation disallowed in this state -#define NRF_ERROR_INVALID_LENGTH (NRF_ERROR_BASE_NUM + 9) ///< Invalid Length -#define NRF_ERROR_INVALID_FLAGS (NRF_ERROR_BASE_NUM + 10) ///< Invalid Flags -#define NRF_ERROR_INVALID_DATA (NRF_ERROR_BASE_NUM + 11) ///< Invalid Data -#define NRF_ERROR_DATA_SIZE (NRF_ERROR_BASE_NUM + 12) ///< Data size exceeds limit -#define NRF_ERROR_TIMEOUT (NRF_ERROR_BASE_NUM + 13) ///< Operation timed out -#define NRF_ERROR_NULL (NRF_ERROR_BASE_NUM + 14) ///< Null Pointer -#define NRF_ERROR_FORBIDDEN (NRF_ERROR_BASE_NUM + 15) ///< Forbidden Operation -#define NRF_ERROR_INVALID_ADDR (NRF_ERROR_BASE_NUM + 16) ///< Bad Memory Address -#define NRF_ERROR_BUSY (NRF_ERROR_BASE_NUM + 17) ///< Busy - -#endif // NRF_ERROR_H__ - -/** - @} -*/
--- a/TARGET_NRF51822/nrf_error_sdm.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ - /** - @addtogroup nrf_sdm_api - @{ - @defgroup nrf_sdm_error SoftDevice Manager Error Codes - @{ - - @brief Error definitions for the SDM API -*/ - -/* Header guard */ -#ifndef NRF_ERROR_SDM_H__ -#define NRF_ERROR_SDM_H__ - -#include "nrf_error.h" - -#define NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN (NRF_ERROR_SDM_BASE_NUM + 0) ///< Unknown lfclk source -#define NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION (NRF_ERROR_SDM_BASE_NUM + 1) ///< Incorrect interrupt configuration (can be caused by using illegal priority levels, or having enabled SoftDevice interrupts) -#define NRF_ERROR_SDM_INCORRECT_CLENR0 (NRF_ERROR_SDM_BASE_NUM + 2) ///< Incorrect CLENR0 (can be caused by erronous SoftDevice flashing) - -#endif // NRF_ERROR_SDM_H__ - -/** - @} - @} -*/
--- a/TARGET_NRF51822/nrf_error_soc.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ - /** - @addtogroup nrf_soc_api - @{ - @defgroup nrf_soc_error SoC Library Error Codes - @{ - - @brief Error definitions for the SoC library - -*/ - -/* Header guard */ -#ifndef NRF_ERROR_SOC_H__ -#define NRF_ERROR_SOC_H__ - -#include "nrf_error.h" - -/* Mutex Errors */ -#define NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN (NRF_ERROR_SOC_BASE_NUM + 0) ///< Mutex already taken - -/* NVIC errors */ -#define NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE (NRF_ERROR_SOC_BASE_NUM + 1) ///< NVIC interrupt not available -#define NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED (NRF_ERROR_SOC_BASE_NUM + 2) ///< NVIC interrupt priority not allowed -#define NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 3) ///< NVIC should not return - -/* Power errors */ -#define NRF_ERROR_SOC_POWER_MODE_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 4) ///< Power mode unknown -#define NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 5) ///< Power POF threshold unknown -#define NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 6) ///< Power off should not return - -/* Rand errors */ -#define NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES (NRF_ERROR_SOC_BASE_NUM + 7) ///< RAND not enough values - -/* PPI errors */ -#define NRF_ERROR_SOC_PPI_INVALID_CHANNEL (NRF_ERROR_SOC_BASE_NUM + 8) ///< Invalid PPI Channel -#define NRF_ERROR_SOC_PPI_INVALID_GROUP (NRF_ERROR_SOC_BASE_NUM + 9) ///< Invalid PPI Group - -#endif // NRF_ERROR_SOC_H__ -/** - @} - @} -*/
--- a/TARGET_NRF51822/nrf_sdm.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,163 +0,0 @@ -/* - * Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ -/** - @defgroup nrf_sdm_api SoftDevice Manager API - @{ - - @brief APIs for SoftDevice management. - -*/ - -/* Header guard */ -#ifndef NRF_SDM_H__ -#define NRF_SDM_H__ - -#include "nrf_svc.h" -#include "nrf51.h" -#include "nrf_soc.h" -#include "nrf_error_sdm.h" - -/** @addtogroup NRF_SDM_DEFINES Defines - * @{ */ - -/**@brief SoftDevice Manager SVC Base number. */ -#define SDM_SVC_BASE 0x10 - -/** @} */ - -/** @addtogroup NRF_SDM_ENUMS Enumerations - * @{ */ - -/**@brief nRF SoftDevice Manager API SVC numbers. */ -enum NRF_SD_SVCS -{ - SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */ - SD_SOFTDEVICE_DISABLE, /**< ::sd_softdevice_disable */ - SD_SOFTDEVICE_IS_ENABLED, /**< ::sd_softdevice_is_enabled */ - SD_SOFTDEVICE_FORWARD_TO_APPLICATION,/**< ::sd_softdevice_forward_to_application */ - SVC_SDM_LAST /**< Placeholder for last SDM SVC */ -}; - -/**@brief Possible lfclk oscillator sources. */ -enum NRF_CLOCK_LFCLKSRCS -{ - NRF_CLOCK_LFCLKSRC_SYNTH_250_PPM, /**< LFCLK Synthesized from HFCLK. */ - NRF_CLOCK_LFCLKSRC_XTAL_500_PPM, /**< LFCLK crystal oscillator 500 PPM accuracy. */ - NRF_CLOCK_LFCLKSRC_XTAL_250_PPM, /**< LFCLK crystal oscillator 250 PPM accuracy. */ - NRF_CLOCK_LFCLKSRC_XTAL_150_PPM, /**< LFCLK crystal oscillator 150 PPM accuracy. */ - NRF_CLOCK_LFCLKSRC_XTAL_100_PPM, /**< LFCLK crystal oscillator 100 PPM accuracy. */ - NRF_CLOCK_LFCLKSRC_XTAL_75_PPM, /**< LFCLK crystal oscillator 75 PPM accuracy. */ - NRF_CLOCK_LFCLKSRC_XTAL_50_PPM, /**< LFCLK crystal oscillator 50 PPM accuracy. */ - NRF_CLOCK_LFCLKSRC_XTAL_30_PPM, /**< LFCLK crystal oscillator 30 PPM accuracy. */ - NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, /**< LFCLK crystal oscillator 20 PPM accuracy. */ - NRF_CLOCK_LFCLKSRC_RC_250_PPM_250MS_CALIBRATION, /**< LFCLK RC oscillator, 250ms calibration interval.*/ - NRF_CLOCK_LFCLKSRC_RC_250_PPM_500MS_CALIBRATION, /**< LFCLK RC oscillator, 500ms calibration interval.*/ - NRF_CLOCK_LFCLKSRC_RC_250_PPM_1000MS_CALIBRATION, /**< LFCLK RC oscillator, 1000ms calibration interval.*/ - NRF_CLOCK_LFCLKSRC_RC_250_PPM_2000MS_CALIBRATION, /**< LFCLK RC oscillator, 2000ms calibration interval.*/ - NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION, /**< LFCLK RC oscillator, 4000ms calibration interval.*/ - NRF_CLOCK_LFCLKSRC_RC_250_PPM_8000MS_CALIBRATION, /**< LFCLK RC oscillator, 8000ms calibration interval.*/ -}; - -/** @} */ - -/** @addtogroup NRF_SDM_TYPES Types - * @{ */ - -/**@brief Type representing lfclk oscillator source. */ -typedef uint32_t nrf_clock_lfclksrc_t; - - -/**@brief SoftDevice Assertion Handler type. - * - * When an unexpected error occurs within the SoftDevice it will call the SoftDevice assertion handler callback. - * The protocol stack will be in an undefined state when this happens and the only way to recover will be to - * perform a reset, using e.g. CMSIS NVIC_SystemReset(). - * - * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the SoftDevice assert callback. - * - * @param[in] pc The program counter of the failed assert. - * @param[in] line_number Line number where the assert failed. - * @param[in] file_name File name where the assert failed. - */ -typedef void (*softdevice_assertion_handler_t)(uint32_t pc, uint16_t line_number, const uint8_t * p_file_name); - -/** @} */ - -/** @addtogroup NRF_SDM_FUNCTIONS Functions - * @{ */ - -/**@brief Enables the SoftDevice and by extension the protocol stack. - * - * Idempotent function to enable the SoftDevice. - * - * @note Some care must be taken if a low frequency clock source is already running when calling this function: - * If the LF clock has a different source then the one currently running, it will be stopped. Then, the new - * clock source will be started. - * - * @note This function has no effect when returning with an error. - * - * @post If return code is ::NRF_SUCCESS - * - SoC library and protocol stack APIs are made available - * - A portion of RAM will be unavailable (see relevant SDS documentation) - * - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation) - * - Interrupts will not arrive from protected peripherals or interrupts - * - nrf_nvic_ functions must be used instead of CMSIS NVIC_ functions for reliable usage of the softdevice. - * - Interrupt latency may be affected by the SoftDevice (see relevant SDS documentation) - * - Chosen low frequency clock source will be running - * - * @param clock_source Low frequency clock source and accuracy. (Note: In the case of XTAL source, the PPM accuracy of the chosen clock source must be greater than or equal to the actual characteristics of your XTAL clock). - * @param assertion_handler Callback for SoftDevice assertions. - * - * @retval ::NRF_SUCCESS - * @retval ::NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION SoftDeviceinterrupt is already enabled, or an enabled interrupt has an illegal priority level - * @retval ::NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN Unknown low frequency clock source selected - */ -SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lfclksrc_t clock_source, softdevice_assertion_handler_t assertion_handler)); - -/**@brief Disables the SoftDevice and by extension the protocol stack. - * - * Idempotent function to disable the SoftDevice. - * - * @post SoC library and protocol stack APIs are made unavailable. - * @post All interrupts that was protected by the SoftDevice will be disabled and initialized to priority 0 (highest). - * @post All peripherals used by the SoftDevice will be reset to default values. - * @post All of RAM become available. - * @post All interrupts are forwarded to the application. - * @post LFCLK source chosen in ::sd_softdevice_enable will be left running. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void)); - -/**@brief Check if the SoftDevice is enabled. - * - * @param[out] p_softdevice_enabled If the SoftDevice is enabled: 1 else 0. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled)); - -/**@brief Start forwarding interrupts to application. - * - * This function is only intended to be called when a bootloader is enabled is used. - * The bootloader should call this right before it starts the application. - * It is recommended that all interrupt sources are off when this is called, - * or you could end up having interrupts in the application being executed before main() of the application. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_FORWARD_TO_APPLICATION, uint32_t, sd_softdevice_forward_to_application(void)); - -/** @} */ - -#endif // NRF_SDM_H__ - -/** - @} -*/
--- a/TARGET_NRF51822/nrf_soc.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,777 +0,0 @@ -/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ - -/** - @defgroup nrf_soc_api SoC Library API - @{ - - @brief APIs for the SoC library. - -*/ - -#ifndef NRF_SOC_H__ -#define NRF_SOC_H__ - -#include <stdint.h> -#include <stdbool.h> -#include "nrf_svc.h" -#include "nrf51.h" -#include "nrf51_bitfields.h" -#include "nrf_error_soc.h" - -/** @addtogroup NRF_SOC_DEFINES Defines - * @{ */ - -/**@brief The number of the lowest SVC number reserved for the SoC library. */ -#define SOC_SVC_BASE 0x20 - -/**@brief Guranteed time for application to process radio inactive notification. */ -#define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US (62) - -#define SOC_ECB_KEY_LENGTH (16) /**< ECB key length. */ -#define SOC_ECB_CLEARTEXT_LENGTH (16) /**< ECB cleartext length. */ -#define SOC_ECB_CIPHERTEXT_LENGTH (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */ - -#define SD_EVT_IRQn (SWI2_IRQn) /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */ -#define SD_EVT_IRQHandler (SWI2_IRQHandler) /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. */ -#define RADIO_NOTIFICATION_IRQn (SWI1_IRQn) /**< The radio notification IRQ number. */ -#define RADIO_NOTIFICATION_IRQHandler (SWI1_IRQHandler) /**< The radio notification IRQ handler. */ - -/** @} */ - -/** @addtogroup NRF_SOC_TYPES Types - * @{ */ - -/**@brief The SVC numbers used by the SVC functions in the SoC library. */ -enum NRF_SOC_SVCS -{ - SD_MUTEX_NEW = SOC_SVC_BASE, - SD_MUTEX_ACQUIRE, - SD_MUTEX_RELEASE, - SD_NVIC_ENABLEIRQ, - SD_NVIC_DISABLEIRQ, - SD_NVIC_GETPENDINGIRQ, - SD_NVIC_SETPENDINGIRQ, - SD_NVIC_CLEARPENDINGIRQ, - SD_NVIC_SETPRIORITY, - SD_NVIC_GETPRIORITY, - SD_NVIC_SYSTEMRESET, - SD_NVIC_CRITICAL_REGION_ENTER, - SD_NVIC_CRITICAL_REGION_EXIT, - SD_RAND_APPLICATION_POOL_CAPACITY, - SD_RAND_APPLICATION_BYTES_AVAILABLE, - SD_RAND_APPLICATION_GET_VECTOR, - SD_POWER_MODE_SET, - SD_POWER_SYSTEM_OFF, - SD_POWER_RESET_REASON_GET, - SD_POWER_RESET_REASON_CLR, - SD_POWER_POF_ENABLE, - SD_POWER_POF_THRESHOLD_SET, - SD_POWER_RAMON_SET, - SD_POWER_RAMON_CLR, - SD_POWER_RAMON_GET, - SD_POWER_GPREGRET_SET, - SD_POWER_GPREGRET_CLR, - SD_POWER_GPREGRET_GET, - SD_POWER_DCDC_MODE_SET, - SD_APP_EVT_WAIT, - SD_CLOCK_HFCLK_REQUEST, - SD_CLOCK_HFCLK_RELEASE, - SD_CLOCK_HFCLK_IS_RUNNING, - SD_PPI_CHANNEL_ENABLE_GET, - SD_PPI_CHANNEL_ENABLE_SET, - SD_PPI_CHANNEL_ENABLE_CLR, - SD_PPI_CHANNEL_ASSIGN, - SD_PPI_GROUP_TASK_ENABLE, - SD_PPI_GROUP_TASK_DISABLE, - SD_PPI_GROUP_ASSIGN, - SD_PPI_GROUP_GET, - SD_RADIO_NOTIFICATION_CFG_SET, - SD_ECB_BLOCK_ENCRYPT, - SD_RESERVED1, - SD_RESERVED2, - SD_RESERVED3, - SD_EVT_GET, - SD_TEMP_GET, - SD_FLASH_ERASE_PAGE, - SD_FLASH_WRITE, - SD_FLASH_PROTECT, - SVC_SOC_LAST -}; - -/**@brief Possible values of a ::nrf_mutex_t. */ -enum NRF_MUTEX_VALUES -{ - NRF_MUTEX_FREE, - NRF_MUTEX_TAKEN -}; - -/**@brief Possible values of ::nrf_app_irq_priority_t. */ -enum NRF_APP_PRIORITIES -{ - NRF_APP_PRIORITY_HIGH = 1, - NRF_APP_PRIORITY_LOW = 3 -}; - -/**@brief Possible values of ::nrf_power_mode_t. */ -enum NRF_POWER_MODES -{ - NRF_POWER_MODE_CONSTLAT, /**< Constant latency mode. See power management in the reference manual. */ - NRF_POWER_MODE_LOWPWR /**< Low power mode. See power management in the reference manual. */ -}; - - -/**@brief Possible values of ::nrf_power_failure_threshold_t */ -enum NRF_POWER_THRESHOLDS -{ - NRF_POWER_THRESHOLD_V21, /**< 2.1 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V23, /**< 2.3 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V25, /**< 2.5 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V27 /**< 2.7 Volts power failure threshold. */ -}; - - -/**@brief Possible values of ::nrf_power_dcdc_mode_t. */ -enum NRF_POWER_DCDC_MODES -{ - NRF_POWER_DCDC_MODE_OFF, /**< The DCDC is always off. */ - NRF_POWER_DCDC_MODE_ON, /**< The DCDC is always on. */ - NRF_POWER_DCDC_MODE_AUTOMATIC /**< The DCDC is automatically managed. */ -}; - -/**@brief Possible values of ::nrf_radio_notification_distance_t. */ -enum NRF_RADIO_NOTIFICATION_DISTANCES -{ - NRF_RADIO_NOTIFICATION_DISTANCE_NONE = 0, /**< The event does not have a notification. */ - NRF_RADIO_NOTIFICATION_DISTANCE_800US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_1740US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_2680US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_3620US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_4560US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_5500US /**< The distance from the active notification to start of radio activity. */ -}; - - -/**@brief Possible values of ::nrf_radio_notification_type_t. */ -enum NRF_RADIO_NOTIFICATION_TYPES -{ - NRF_RADIO_NOTIFICATION_TYPE_NONE = 0, /**< The event does not have a radio notification signal. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE, /**< Using interrupt for notification when the radio will be enabled. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE, /**< Using interrupt for notification when the radio has been disabled. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH, /**< Using interrupt for notification both when the radio will be enabled and disabled. */ -}; - -/**@brief SoC Events. */ -enum NRF_SOC_EVTS -{ - NRF_EVT_HFCLKSTARTED, /**< Event indicating that the HFCLK has started. */ - NRF_EVT_POWER_FAILURE_WARNING, /**< Event indicating that a power failure warning has occurred. */ - NRF_EVT_FLASH_OPERATION_SUCCESS, /**< Event indicating that the ongoing flash operation has completed successfully. */ - NRF_EVT_FLASH_OPERATION_ERROR, /**< Event indicating that the ongoing flash operation has timed out with an error. */ - NRF_EVT_RESERVED1, - NRF_EVT_RESERVED2, - NRF_EVT_RESERVED3, - NRF_EVT_RESERVED4, - NRF_EVT_RESERVED5, - NRF_EVT_NUMBER_OF_EVTS -}; - -/** @} */ - -/** @addtogroup NRF_SOC_TYPES Types - * @{ */ - -/**@brief Represents a mutex for use with the nrf_mutex functions. - * @note Accessing the value directly is not safe, use the mutex functions! - */ -typedef volatile uint8_t nrf_mutex_t; - -/**@brief The interrupt priorities available to the application while the softdevice is active. */ -typedef uint8_t nrf_app_irq_priority_t; - -/**@brief Represents a power mode, used in power mode functions */ -typedef uint8_t nrf_power_mode_t; - -/**@brief Represents a power failure threshold value. */ -typedef uint8_t nrf_power_failure_threshold_t; - -/**@brief Represents a DCDC mode value. */ -typedef uint32_t nrf_power_dcdc_mode_t; - -/**@brief Radio notification distances. */ -typedef uint8_t nrf_radio_notification_distance_t; - -/**@brief Radio notification types. */ -typedef uint8_t nrf_radio_notification_type_t; - - -/**@brief AES ECB data structure */ -typedef struct -{ - uint8_t key[SOC_ECB_KEY_LENGTH]; /**< Encryption key. */ - uint8_t cleartext[SOC_ECB_CLEARTEXT_LENGTH]; /**< Clear Text data. */ - uint8_t ciphertext[SOC_ECB_CIPHERTEXT_LENGTH]; /**< Cipher Text data. */ -} nrf_ecb_hal_data_t; - -/** @} */ - -/** @addtogroup NRF_SOC_FUNCTIONS Functions - * @{ */ - -/**@brief Initialize a mutex. - * - * @param[in] p_mutex Pointer to the mutex to initialize. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_MUTEX_NEW, uint32_t, sd_mutex_new(nrf_mutex_t * p_mutex)); - -/**@brief Attempt to acquire a mutex. - * - * @param[in] p_mutex Pointer to the mutex to acquire. - * - * @retval ::NRF_SUCCESS The mutex was successfully acquired. - * @retval ::NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN The mutex could not be acquired. - */ -SVCALL(SD_MUTEX_ACQUIRE, uint32_t, sd_mutex_acquire(nrf_mutex_t * p_mutex)); - -/**@brief Release a mutex. - * - * @param[in] p_mutex Pointer to the mutex to release. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_MUTEX_RELEASE, uint32_t, sd_mutex_release(nrf_mutex_t * p_mutex)); - -/**@brief Enable External Interrupt. - * @note Corresponds to NVIC_EnableIRQ in CMSIS. - * - * @pre{IRQn is valid and not reserved by the stack} - * - * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt was enabled. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application. - */ -SVCALL(SD_NVIC_ENABLEIRQ, uint32_t, sd_nvic_EnableIRQ(IRQn_Type IRQn)); - -/**@brief Disable External Interrupt. - * @note Corresponds to NVIC_DisableIRQ in CMSIS. - * - * @pre{IRQn is valid and not reserved by the stack} - * - * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS - * - * @retval ::NRF_SUCCESS The interrupt was disabled. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. - */ -SVCALL(SD_NVIC_DISABLEIRQ, uint32_t, sd_nvic_DisableIRQ(IRQn_Type IRQn)); - -/**@brief Get Pending Interrupt. - * @note Corresponds to NVIC_GetPendingIRQ in CMSIS. - * - * @pre{IRQn is valid and not reserved by the stack} - * - * @param[in] IRQn See the NVIC_GetPendingIRQ documentation in CMSIS. - * @param[out] p_pending_irq Return value from NVIC_GetPendingIRQ. - * - * @retval ::NRF_SUCCESS The interrupt is available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -SVCALL(SD_NVIC_GETPENDINGIRQ, uint32_t, sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq)); - -/**@brief Set Pending Interrupt. - * @note Corresponds to NVIC_SetPendingIRQ in CMSIS. - * - * @pre{IRQn is valid and not reserved by the stack} - * - * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt is set pending. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -SVCALL(SD_NVIC_SETPENDINGIRQ, uint32_t, sd_nvic_SetPendingIRQ(IRQn_Type IRQn)); - -/**@brief Clear Pending Interrupt. - * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS. - * - * @pre{IRQn is valid and not reserved by the stack} - * - * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt pending flag is cleared. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -SVCALL(SD_NVIC_CLEARPENDINGIRQ, uint32_t, sd_nvic_ClearPendingIRQ(IRQn_Type IRQn)); - -/**@brief Set Interrupt Priority. - * @note Corresponds to NVIC_SetPriority in CMSIS. - * - * @pre{IRQn is valid and not reserved by the stack} - * @pre{priority is valid and not reserved by the stack} - * - * @param[in] IRQn See the NVIC_SetPriority documentation in CMSIS. - * @param[in] priority A valid IRQ priority for use by the application. - * - * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application. - */ -SVCALL(SD_NVIC_SETPRIORITY, uint32_t, sd_nvic_SetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t priority)); - -/**@brief Get Interrupt Priority. - * @note Corresponds to NVIC_GetPriority in CMSIS. - * - * @pre{IRQn is valid and not reserved by the stack} - * - * @param[in] IRQn See the NVIC_GetPriority documentation in CMSIS. - * @param[out] p_priority Return value from NVIC_GetPriority. - * - * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application. - */ -SVCALL(SD_NVIC_GETPRIORITY, uint32_t, sd_nvic_GetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t * p_priority)); - -/**@brief System Reset. - * @note Corresponds to NVIC_SystemReset in CMSIS. - * - * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN - */ -SVCALL(SD_NVIC_SYSTEMRESET, uint32_t, sd_nvic_SystemReset(void)); - -/**@brief Enters critical region. - * - * @post Application interrupts will be disabled. - * @sa sd_nvic_critical_region_exit - * - * @param[out] p_is_nested_critical_region 1: If in a nested critical region. - * 0: Otherwise. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_NVIC_CRITICAL_REGION_ENTER, uint32_t, sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region)); - -/**@brief Exit critical region. - * - * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter. - * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. - * - * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_NVIC_CRITICAL_REGION_EXIT, uint32_t, sd_nvic_critical_region_exit(uint8_t is_nested_critical_region)); - -/**@brief Query the capacity of the application random pool. - * - * @param[out] p_pool_capacity The capacity of the pool. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RAND_APPLICATION_POOL_CAPACITY, uint32_t, sd_rand_application_pool_capacity_get(uint8_t * p_pool_capacity)); - -/**@brief Get number of random bytes available to the application. - * - * @param[out] p_bytes_available The number of bytes currently available in the pool. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE, uint32_t, sd_rand_application_bytes_available_get(uint8_t * p_bytes_available)); - -/**@brief Get random bytes from the application pool. - - @param[out] p_buff Pointer to unit8_t buffer for storing the bytes. - @param[in] length Number of bytes to take from pool and place in p_buff. - - @retval ::NRF_SUCCESS The requested bytes were written to p_buff. - @retval ::NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES No bytes were written to the buffer, because there were not enough bytes available. -*/ -SVCALL(SD_RAND_APPLICATION_GET_VECTOR, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length)); - -/**@brief Gets the reset reason register. - * - * @param[out] p_reset_reason Contents of the NRF_POWER->RESETREAS register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason)); - -/**@brief Clears the bits of the reset reason register. - * - * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk)); - -/**@brief Sets the power mode when in CPU sleep. - * - * @param[in] power_mode The power mode to use when in CPU sleep. @sa sd_app_evt_wait - * - * @retval ::NRF_SUCCESS The power mode was set. - * @retval ::NRF_ERROR_SOC_POWER_MODE_UNKNOWN The power mode was unknown. - */ -SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(nrf_power_mode_t power_mode)); - -/**@brief Puts the chip in System OFF mode. - * - * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN - */ -SVCALL(SD_POWER_SYSTEM_OFF, uint32_t, sd_power_system_off(void)); - -/**@brief Enables or disables the power-fail comparator. - * - * Enabling this will give a softdevice event (NRF_EVT_POWER_FAILURE_WARNING) when the power failure warning occurs. - * The event can be retrieved with sd_evt_get(); - * - * @param[in] pof_enable True if the power-fail comparator should be enabled, false if it should be disabled. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_POF_ENABLE, uint32_t, sd_power_pof_enable(uint8_t pof_enable)); - -/**@brief Sets the power-fail threshold value. - * - * @param[in] threshold The power-fail threshold value to use. - * - * @retval ::NRF_SUCCESS The power failure threshold was set. - * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown. - */ -SVCALL(SD_POWER_POF_THRESHOLD_SET, uint32_t, sd_power_pof_threshold_set(nrf_power_failure_threshold_t threshold)); - -/**@brief Sets bits in the NRF_POWER->RAMON register. - * - * @param[in] ramon Contains the bits needed to be set in the NRF_POWER->RAMON register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAMON_SET, uint32_t, sd_power_ramon_set(uint32_t ramon)); - -/** @brief Clears bits in the NRF_POWER->RAMON register. - * - * @param ramon Contains the bits needed to be cleared in the NRF_POWER->RAMON register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAMON_CLR, uint32_t, sd_power_ramon_clr(uint32_t ramon)); - -/**@brief Get contents of NRF_POWER->RAMON register, indicates power status of ram blocks. - * - * @param[out] p_ramon Content of NRF_POWER->RAMON register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAMON_GET, uint32_t, sd_power_ramon_get(uint32_t * p_ramon)); - -/**@brief Set bits in the NRF_POWER->GPREGRET register. - * - * @param[in] gpregret_msk Bits to be set in the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_SET, uint32_t, sd_power_gpregret_set(uint32_t gpregret_msk)); - -/**@brief Clear bits in the NRF_POWER->GPREGRET register. - * - * @param[in] gpregret_msk Bits to be clear in the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_CLR, uint32_t, sd_power_gpregret_clr(uint32_t gpregret_msk)); - -/**@brief Get contents of the NRF_POWER->GPREGRET register. - * - * @param[out] p_gpregret Contents of the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_GET, uint32_t, sd_power_gpregret_get(uint32_t *p_gpregret)); - -/**@brief Sets the DCDC mode. - * - * Depending on the internal state of the SoftDevice, the mode change may not happen immediately. - * The DCDC mode switch will be blocked when occurring in close proximity to radio transmissions. When - * the radio transmission is done, the last mode will be used. - * - * @param[in] dcdc_mode The mode of the DCDC. - * - * @retval ::NRF_SUCCESS - * @retval ::NRF_ERROR_INVALID_PARAM The DCDC mode is invalid. - */ -SVCALL(SD_POWER_DCDC_MODE_SET, uint32_t, sd_power_dcdc_mode_set(nrf_power_dcdc_mode_t dcdc_mode)); - -/**@brief Request the high frequency crystal oscillator. - * - * Will start the high frequency crystal oscillator, the startup time of the crystal varies - * and the ::sd_clock_hfclk_is_running function can be polled to check if it has started. - * - * @see sd_clock_hfclk_is_running - * @see sd_clock_hfclk_release - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_REQUEST, uint32_t, sd_clock_hfclk_request(void)); - -/**@brief Releases the high frequency crystal oscillator. - * - * Will stop the high frequency crystal oscillator, this happens immediately. - * - * @see sd_clock_hfclk_is_running - * @see sd_clock_hfclk_request - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void)); - -/**@brief Checks if the high frequency crystal oscillator is running. - * - * @see sd_clock_hfclk_request - * @see sd_clock_hfclk_release - * - * @param[out] p_is_running 1 if the external crystal oscillator is running, 0 if not. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running)); - -/**@brief Waits for an application event. - * - * An application event is either an application interrupt or a pended interrupt when the - * interrupt is disabled. When the interrupt is enabled it will be taken immediately since - * this function will wait in thread mode, then the execution will return in the application's - * main thread. When an interrupt is disabled and gets pended it will return to the application's - * thread main. The application must ensure that the pended flag is cleared using - * ::sd_nvic_ClearPendingIRQ in order to sleep using this function. This is only necessary for - * disabled interrupts, as the interrupt handler will clear the pending flag automatically for - * enabled interrupts. - * - * In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M0 - * System Control Register (SCR). @sa CMSIS_SCB - * - * @note If an application interrupt has happened since the last time sd_app_evt_wait was - * called this function will return immediately and not go to sleep. This is to avoid race - * conditions that can occur when a flag is updated in the interrupt handler and processed - * in the main loop. - * - * @post An application interrupt has happened or a interrupt pending flag is set. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_APP_EVT_WAIT, uint32_t, sd_app_evt_wait(void)); - -/**@brief Get PPI channel enable register contents. - * - * @param[out] p_channel_enable The contents of the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_GET, uint32_t, sd_ppi_channel_enable_get(uint32_t * p_channel_enable)); - -/**@brief Set PPI channel enable register. - * - * @param[in] channel_enable_set_msk Mask containing the bits to set in the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_SET, uint32_t, sd_ppi_channel_enable_set(uint32_t channel_enable_set_msk)); - -/**@brief Clear PPI channel enable register. - * - * @param[in] channel_enable_clr_msk Mask containing the bits to clear in the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_CLR, uint32_t, sd_ppi_channel_enable_clr(uint32_t channel_enable_clr_msk)); - -/**@brief Assign endpoints to a PPI channel. - * - * @param[in] channel_num Number of the PPI channel to assign. - * @param[in] evt_endpoint Event endpoint of the PPI channel. - * @param[in] task_endpoint Task endpoint of the PPI channel. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_CHANNEL The channel number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ASSIGN, uint32_t, sd_ppi_channel_assign(uint8_t channel_num, const volatile void * evt_endpoint, const volatile void * task_endpoint)); - -/**@brief Task to enable a channel group. - * - * @param[in] group_num Number of the channel group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_TASK_ENABLE, uint32_t, sd_ppi_group_task_enable(uint8_t group_num)); - -/**@brief Task to disable a channel group. - * - * @param[in] group_num Number of the PPI group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_TASK_DISABLE, uint32_t, sd_ppi_group_task_disable(uint8_t group_num)); - -/**@brief Assign PPI channels to a channel group. - * - * @param[in] group_num Number of the channel group. - * @param[in] channel_msk Mask of the channels to assign to the group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_ASSIGN, uint32_t, sd_ppi_group_assign(uint8_t group_num, uint32_t channel_msk)); - -/**@brief Gets the PPI channels of a channel group. - * - * @param[in] group_num Number of the channel group. - * @param[out] p_channel_msk Mask of the channels assigned to the group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t * p_channel_msk)); - -/**@brief Configures the Radio Notification signal. - * - * @note - * - The notification signal latency depends on the interrupt priority settings of SWI used - * for notification signal. - * - In the period between the ACTIVE signal and the start of the Radio Event, the SoftDevice - * will interrupt the application to do Radio Event preparation. - * - Using the Radio Notification feature may limit the bandwidth, as the SoftDevice may have - * to shorten the connection events to have time for the Radio Notification signals. - * - * @param[in] type Type of notification signal. - * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE shall be used to turn off radio - * notification. Using @ref NRF_RADIO_NOTIFICATION_DISTANCE_NONE is - * recommended (but not required) to be used with - * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE. - * - * @param[in] distance Distance between the notification signal and start of radio activity. - * This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or - * @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used. - * - * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RADIO_NOTIFICATION_CFG_SET, uint32_t, sd_radio_notification_cfg_set(nrf_radio_notification_type_t type, nrf_radio_notification_distance_t distance)); - -/**@brief Encrypts a block according to the specified parameters. - * - * 128-bit AES encryption. - * - * @param[in, out] p_ecb_data Pointer to the ECB parameters' struct (two input - * parameters and one output parameter). - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t * p_ecb_data)); - -/**@brief Gets any pending events generated by the SoC API. - * - * The application should keep calling this function to get events, until ::NRF_ERROR_NOT_FOUND is returned. - * - * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending. - * - * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter. - * @retval ::NRF_ERROR_NOT_FOUND No pending events. - */ -SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id)); - -/**@brief Get the temperature measured on the chip - * - * This function will block until the temperature measurement is done. - * It takes around 50us from call to return. - * - * @note Pan #28 in PAN-028 v 1.6 "Negative measured values are not represented correctly" is corrected by this function. - * - * @param[out] p_temp Result of temperature measurement. Die temperature in 0.25 degrees celsius. - * - * @retval ::NRF_SUCCESS A temperature measurement was done, and the temperature was written to temp - */ -SVCALL(SD_TEMP_GET, uint32_t, sd_temp_get(int32_t * p_temp)); - -/**@brief Flash Write - * - * Commands to write a buffer to flash - * - * This call initiates the flash access command, and its completion will be communicated to the - * application with exactly one of the following events: - * - NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. - * - NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. - * - * @note - * - This call takes control over the radio and the CPU during flash erase and write to make sure that - * they will not interfere with the flash access. This means that all interrupts will be blocked - * for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual - * and the command parameters). - * - * - * @param[in] p_dst Pointer to start of flash location to be written. - * @param[in] p_src Pointer to buffer with data to be written - * @param[in] size Number of 32-bit words to write. Maximum size is 256 32bit words. - * - * @retval ::NRF_ERROR_INVALID_ADDR Tried to write to a non existing flash address, or p_dst or p_src was unaligned. - * @retval ::NRF_ERROR_BUSY The previous command has not yet completed. - * @retval ::NRF_ERROR_INVALID_LENGTH Size was 0, or more than 256 words. - * @retval ::NRF_ERROR_FORBIDDEN Tried to write to or read from protected location. - * @retval ::NRF_SUCCESS The command was accepted. - */ -SVCALL(SD_FLASH_WRITE, uint32_t, sd_flash_write(uint32_t * const p_dst, uint32_t const * const p_src, uint32_t size)); - - -/**@brief Flash Erase page - * - * Commands to erase a flash page - * - * This call initiates the flash access command, and its completion will be communicated to the - * application with exactly one of the following events: - * - NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. - * - NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. - * - * @note - * - This call takes control over the radio and the CPU during flash erase and write to make sure that - * they will not interfere with the flash access. This means that all interrupts will be blocked - * for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual - * and the command parameters). - * - * - * @param[in] page_number Pagenumber of the page to erase - * @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. - * @retval ::NRF_ERROR_INVALID_ADDR Tried to erase to a non existing flash page. - * @retval ::NRF_ERROR_BUSY The previous command has not yet completed. - * @retval ::NRF_ERROR_FORBIDDEN Tried to erase a protected page. - * @retval ::NRF_SUCCESS The command was accepted. - */ -SVCALL(SD_FLASH_ERASE_PAGE, uint32_t, sd_flash_page_erase(uint32_t page_number)); - - -/**@brief Flash Protection set - * - * Commands to set the flash protection registers PROTENSETx - * - * @note To read the values in PROTENSETx you can read them directly. They are only write-protected. - * - * @param[in] protenset0 Value to be written to PROTENSET0 - * @param[in] protenset1 Value to be written to PROTENSET1 - * - * @retval ::NRF_ERROR_FORBIDDEN Tried to protect the SoftDevice - * @retval ::NRF_SUCCESS Values successfully written to PROTENSETx - */ -SVCALL(SD_FLASH_PROTECT, uint32_t, sd_flash_protect(uint32_t protenset0, uint32_t protenset1)); - - -/** @} */ - -#endif // NRF_SOC_H__ - -/** - @} - */
--- a/TARGET_NRF51822/nrf_svc.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -#ifndef NRF_SVC__ -#define NRF_SVC__ - -#ifdef SVCALL_AS_NORMAL_FUNCTION -#define SVCALL(number, return_type, signature) return_type signature -#else - -#ifndef SVCALL -#if defined (__CC_ARM) -#define SVCALL(number, return_type, signature) return_type __svc(number) signature -#elif defined (__GNUC__) -#define SVCALL(number, return_type, signature) \ - _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \ - _Pragma("GCC diagnostic ignored \"-Wunused-function\"") \ - __attribute__((naked)) static return_type signature \ - { \ - __asm( \ - "svc %0\n" \ - "bx r14" : : "I" (number) : "r0" \ - ); \ - } -#elif defined (__ICCARM__) -#define PRAGMA(x) _Pragma(#x) -#define SVCALL(number, return_type, signature) \ -PRAGMA(swi_number = number) \ - __swi return_type signature; -#else -#define SVCALL(number, return_type, signature) return_type signature -#endif -#endif // SVCALL - -#endif // SVCALL_AS_NORMAL_FUNCTION -#endif // NRF_SVC__
--- a/TARGET_NRF51822/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2013 Nordic Semiconductor - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct serial_s { - NRF_UART_Type *uart; - int index; -}; - -struct spi_s { - NRF_SPI_Type *spi; - NRF_SPIS_Type *spis; -}; - -struct port_s { - __IO uint32_t *reg_cnf; - __IO uint32_t *reg_out; - __I uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - PWMName pwm; - PinName pin; -}; - -struct i2c_s { - NRF_TWI_Type *i2c; - PinName sda; - PinName scl; - int freq; -}; - -struct analogin_s { - ADCName adc; -}; - -struct gpio_irq_s { - uint32_t ch; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NRF51822/s110_nrf51822_6.0.0_softdevice.hex Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4835 +0,0 @@ -:020000040000FA -:10000000481C0020992B0100F1160100CF2A0100A5 -:1000100000000000000000000000000000000000E0 -:100020000000000000000000000000000D2C010096 -:100030000000000000000000F1160100F1160100B0 -:10004000752C01007B2C0100F1160100F116010056 -:10005000F1160100F1160100F1160100F116010080 -:10006000812C0100F1160100F1160100872C01001E -:10007000F11601008D2C0100B9020000FF81000083 -:10008000F1160100F1160100F1160100F116010050 -:10009000F1160100F1160100F1160100F116010040 -:1000A000932C0100992C0100F1160100F1160100BA -:1000B000F1160100F1160100F1160100F116010020 -:1000C00000F002F812F04FFD0CA030C808382418D8 -:1000D0002D18A246671EAB4654465D46AC4201D180 -:1000E00012F041FD7E460F3E0FCCB646012633424C -:1000F00000D0FB1AA246AB46334318475C2C0100E4 -:100100008C2C0100103A02D378C878C1FAD8520773 -:1001100001D330C830C101D504680C6070470000BD -:100120000023002400250026103A01D378C1FBD813 -:10013000520700D330C100D50B6070471FB5C046D1 -:10014000C04612F093FC04B00FB41FBD826902498F -:100150008161024810447047610100000100000005 -:1001600001B41EB400B50FF067FE01B401988646D5 -:1001700001BC01B01EBD0000F0B4404649465246E5 -:100180005B460FB402A0013001B50648004700BF2E -:1001900001BC86460FBC8046894692469B46F0BC11 -:1001A00070470000C1000000401E00BF00BF00BF3C -:1001B00000BF00BF00BF00BF00BF00BF00BF00BF47 -:1001C00000BFF1D17047000070B505460C461646D9 -:1001D00002E00FCC0FC5103E102EFAD2082E02D32B -:1001E00003CC03C5083E042E07D301CC01C5361F3E -:1001F00003E021782970641C6D1C761EF9D270BD55 -:100200008307FF22DB0E9A408907090E99400028D8 -:100210000BDA0007000F0838830828489B001B18DA -:10022000D86990430843D8617047830824489B00ED -:100230001B181868904308431860704710B50446AF -:1002400000210120FFF7DCFF00211820FFF7D8FF75 -:1002500000210B20FFF7D4FF02211920FFF7D0FF68 -:1002600002210D20FFF7CCFF02210E20FFF7C8FF6F -:1002700002210F20FFF7C4FF0221C81FFFF7C0FFB4 -:1002800003211620FFF7BCFF03211520FFF7B8FF5D -:10029000204600F019F8002010BD49210180704768 -:1002A00010B500F04FF810BD0648704710B500F0CB -:1002B0004AF810BD704770477047000000ED00E03D -:1002C00000E400E003F900C330B50546384C95B0B2 -:1002D00006202070A01CFFF7E0FF5920A0803548C1 -:1002E00061880069344A80B2D269344B120C98425A -:1002F00004D18A4208D032A1B42003E0884203D05E -:100300002FA1B72012F0DDFB334802F057F9044665 -:10031000072000F0D7F92146254800F015FA6D1E98 -:10032000072D0AD8302168460170857001F0CCF99C -:10033000002802D009A800F065FC204601F0BBFAB5 -:1003400015B030BD704710B50C46014660390B2919 -:1003500003D8214601F01CFF06E001466C39032951 -:1003600004D8214601F047FF206010BD01467039D6 -:100370001F2903D8214600F03FF8F5E701469039E0 -:100380000F2903D8214600F0C1F8EDE70146A03956 -:100390000F2903D8214600F029F9E5E70146B039D5 -:1003A0000F2903D8214600F006F9DDE70120DBE73D -:1003B000140000200010001040000010FFFF00009B -:1003C0007372635C636F72655F66756E6374696F89 -:1003D0006E732E63000000006D1C000070477047B4 -:1003E00070477047704770477047704710B50128D5 -:1003F00001D100F0CEF910BD10B57038030012F035 -:1004000065FC150C10141C20232A31363B3F434752 -:100410004E535A626A72797E8300086803F0FDFBCE -:1004200010BD086803F050FC10BD0C790B7B8A6886 -:100430000868214603F06EFC10BD086803F0E8FC74 -:1004400010BD03F0BAF910BD08884A6880B21146A1 -:1004500003F06CFE10BD0A790888114680B203F0E3 -:10046000BCFE10BD087840B203F0C7FE10BD08887E -:1004700080B203F0E3FE10BD086803F0F2FE10BD89 -:10048000086803F00AFF10BD086803F036FF10BDCE -:10049000088982B209C9194603F061FF10BD05C978 -:1004A000114603F0B0FF10BD08884A6880B21146BB -:1004B00003F0CEFF10BD0B7908888A6880B2194618 -:1004C00004F010F810BD0B7908888A6880B21946CC -:1004D00004F0B9F810BD08884B688A6880B21946E4 -:1004E00004F0FAF810BD08884A6880B2114604F09A -:1004F00045F910BD088880B204F05EF910BD088887 -:1005000080B204F07CF910BD012010BD10B5903808 -:10051000030012F0DBFB09060F161D242C363F46A4 -:100520004E0088888A6883B20888194680B204F031 -:1005300030FD10BD08884A6880B2114604F086FD7F -:1005400010BD08884A6880B2114604F0C9FD10BD8C -:1005500008884A6880B2114604F0FFFD10BD088883 -:100560004B688A6880B2194604F030FE10BD0889D5 -:1005700082B2888883B20888194680B204F065FE8A -:1005800010BD08894B6882B20888194680B204F011 -:100590009AFE10BD08884A6880B2114604F0CAFE6F -:1005A00010BD888882B20888114680B204F05EFFD0 -:1005B00010BD012010BD10B5B02805D0B12808D05D -:1005C000B2280BD0012010BD088880B205F042FA95 -:1005D00010BD088880B205F06DFA10BD08884B6820 -:1005E0008A6880B2194605F076FA10BD10B5A038B9 -:1005F000030012F06BFB0B070E172028323C434D13 -:10060000545D65004B6808788A68194606F090FDCD -:1006100010BD88888A6883B20888194680B206F0BF -:100620009CFD10BD08884C68CB688A6880B2214662 -:1006300006F0A3FD10BD08884B688A6880B2194691 -:1006400006F0BDFD10BD8888CB6884B208888A6832 -:1006500080B2214606F0DDFD10BD8888CB6884B2EB -:1006600008888A6880B2214606F0E3FD10BD08883C -:100670004A6880B2114606F00BFE10BD088982B2AE -:10068000888883B20888194680B206F00BFE10BD38 -:1006900008884A6880B2114606F024FE10BD088919 -:1006A0004B6882B20888194680B206F0A1FE10BDE0 -:1006B00008884B688A6880B2194606F05EFF10BD54 -:1006C000012010BD10B507F09BF80FF0CFF907F02F -:1006D00049FD0FF01DFB07F0B3FD07F0D1FC10BD85 -:1006E0001CB50446002069460870204608F020FD2D -:1006F0006946204608F0DEFB002803D1FBA1B120AB -:1007000012F0DFF901A9204608F033FB002803D1DD -:10071000F6A1B62012F0D5F9684600781CBD70B578 -:10072000F74D002428462C7620308471C47112F0D5 -:10073000DBFA284640380470203084738474847651 -:100740002C74AC7070BDEAE710B50C46ED49828898 -:100750008A8042884A800078087008460A38847087 -:1007600008F0DDFAFFF7DBFF204609F01FFDE44A41 -:10077000E0321146383908461446813808F04AFDFF -:100780002146E0480AF0FDFF08F0C9FC12F0ACFA7F -:1007900010BD10B50120FFF721FE10BDF8B509F01E -:1007A0004CF9D84DD64C0A3D022802D0207C0028B6 -:1007B0007CD0207E0026102819D1A078002803D0F4 -:1007C000CAA1D14812F07DF9CD48E838817A89076D -:1007D0000DD50146267160398989E180C17A21727F -:1007E00081896181C089A0810120A0702676C44FD3 -:1007F000203FB87C002859D1C4486946808908F058 -:1008000059FB002805D06946687809784018687057 -:1008100004E0C520B5A1C00012F053F9207C0028E7 -:1008200038D0BA488189FF300930406D80898142D3 -:1008300004D0B548ADA1223012F043F9B348808905 -:1008400008F0DEFB002804D1AF48A8A1283012F040 -:1008500038F908F04CFC00281CD0AC488089FFF720 -:100860003FFF697840186870A5484038416D2031D5 -:100870000A7C012A0DD1A54A3E779289C287487C1D -:1008800020700120B876207E102801D0282800D1C1 -:10089000267626746978002908D09C488289FF3022 -:1008A0000930C28601870120B8746E7009F0BAF869 -:1008B000002805D1207C002802D0A87801F0A2FEF3 -:1008C000F8BDF8B50F460446FFF768FF8C4D403D74 -:1008D00028788B4E002813D0002F10D1307E0028AE -:1008E00004D0FF2081A1BE3012F0EBF82C22A91C0D -:1008F000204611F049FF0E202070002028708FE064 -:100900007F4D203DA87B002818D0002FF7D1307EE6 -:10091000102808D0282806D0002804D0FF2073A172 -:10092000CA3012F0CEF80120E070E87BA070287C7D -:1009300060700F2020700020A87371E00121204614 -:1009400008F00EFC002807D0307C002851D1394631 -:10095000204608F005FCF8BDA97C69480C380090D9 -:1009600068480A38002913D00178052910D2002FD1 -:1009700056D1491C0170002666700D2020700120A0 -:1009800028750622A01C009911F0FEFEAE7447E007 -:100990005C4800210A380170B078002814D0002F7C -:1009A0003ED1307E002803D050A1594812F089F87A -:1009B000002565700120524920700A22091DA01CE3 -:1009C00011F0E2FEB5702BE0394620460AF046FEF3 -:1009D000002825D1A87C002805D0002F20D1494827 -:1009E0000A380178C5E7A87E002802D0307C0028AC -:1009F00001D00020F8BD002F12D1307E002804D095 -:100A00008D203AA1800012F05CF8002666700A2062 -:100A10003B4920700622091FA01C11F0B5FEAE76DE -:100A20000120F8BD10B53648017E002908D1007CB0 -:100A3000012805D001210020FFF743FF002801D045 -:100A4000072010BD012010BD10B5012409F0F8FBEE -:100A50000443FFF7E7FF044308F062FB014621432C -:100A6000084610BDF8B51D4614460E4608F0A1F91B -:100A7000002807D0684608F0A7F9002803D0002C0A -:100A800007D101E00120F8BD992018A1800012F0E3 -:100A900018F808F045F9A04204D21D4813A15830B7 -:100AA00012F00FF8009807F0B9FD3146009807F0F2 -:100AB000C7FDE2B22946009807F07EFF08F096F9DC -:100AC000002804D19D2009A1800011F0FAFF08F050 -:100AD00029FB0E4800244030C17B002902D0C4739A -:100AE00009F080FC0948C480CCE700007372635CA5 -:100AF0006C6C5F6374726C2E73302E6300000000A8 -:100B0000E0020020240000200B06000098010020D5 -:100B10000D02000010B50179002907D001290AD083 -:100B2000F749FE2011F0CDFF002010BD831D428843 -:100B30000488022103E042880488831D01212046A5 -:100B4000FFF790FF10BDF8B51F4615460E46044648 -:100B500008F073FF022803D0EA48007C00281FD069 -:100B6000E9488089208008F04BFA002803D1E44945 -:100B7000E64811F0A6FF0524684608F04CFA002864 -:100B80000ED0009807F094FD3070022809D001289B -:100B900007D008F080FA641E2406240EECD1002051 -:100BA000F8BD3946009807F01FFF2880002804D1BF -:100BB000D648D349123011F084FF08F06CFA0028AF -:100BC00004D1AF20CE49800011F07BFF0120F8BD99 -:100BD00038B50446831D821C6946FFF7B4FF002820 -:100BE0000DD00020607168460078012808D00228E6 -:100BF00006D0FF20C249203011F063FF012038BD2C -:100C00002071FBE700215CE670B5BE4C0546403C18 -:100C10002078002803D1BB48007E002803D0B849C3 -:100C2000BB4811F04EFF287808F093FB28780AF0B3 -:100C3000EEFE00202071012060713921E1702070EA -:100C400070BD70B5AF4D0446403D2878002803D1F3 -:100C5000AC48007E002804D0AD48A949183811F0EE -:100C600030FFA94E2188B089884203D108F0E5FE03 -:100C7000022807D002202871012068713821E9700C -:100C8000287070BD7F2070769F48E1782030C17356 -:100C9000A17881730020EEE710B59A4C403C207893 -:100CA000002807D19748007E002803D108F0C5FE30 -:100CB000032804D161209249C00011F002FF91493C -:100CC00000202031C8712071012060713A21E1704B -:100CD000207010BD70B58B4C0646403C2078002833 -:100CE00007D18848007E002803D108F0A6FE03281B -:100CF00004D186488249783011F0E3FE814D2035D9 -:100D0000E87908280CD2E87910220001001968302F -:100D1000314600F09FFDE879401CE871002000E0BA -:100D200007202071012060713B21E170207070BDAF -:100D3000F8B5744C0546403C2078002803D1714832 -:100D4000007E002804D072486D49443811F0B9FE85 -:100D5000A878002801D0012804D1A888FF21F53106 -:100D6000884204D96A4866493E3811F0AAFE664EA8 -:100D70002988B089884203D108F05FFE022807D095 -:100D800002202071012060713621E1702070F8BDD1 -:100D90005D48002720308772A988B185012131760E -:100DA000A978012900D00021817257484030C07BCA -:100DB000002801D009F016FB2771E3E770B5514C0C -:100DC0000546403C2078002807D14E48007E002888 -:100DD00003D108F032FE002804D04D484849673856 -:100DE00011F06FFE287809F02EFA00202071012002 -:100DF00060713021E170207070BD70B5414C0546C6 -:100E0000403C2078002803D13E48007E002804D0D2 -:100E10003F483B490D3011F054FE287800280BD094 -:100E2000012809D0022807D06878402804D3384820 -:100E30003349143011F045FE284608F0F6FD00282D -:100E400001D0002000E00C202071012060713421CD -:100E5000E170207070BD70B52A4C0546403C20788A -:100E6000002807D12748007E002803D108F0E5FDBF -:100E7000002804D0264822495C3811F022FE297847 -:100E8000002914D00A2912D0142910D01E290ED0FE -:100E900028290CD032290AD04B2908D0642906D041 -:100EA000FF2904D01A481649503811F00AFE284686 -:100EB00009F028FA00202071012060713321E170CF -:100EC000207070BD70B50F4C0546403C207800285E -:100ED00003D10C4A107E002804D00D48084975380B -:100EE00011F0EFFD062229460A4811F04DFC0020C2 -:100EF0002071012060713221E170207070BD00000E -:100F0000EC0A0000E002002098010020A30200008B -:100F1000910500001D00002070B5F84C05462078B2 -:100F2000002804D120464030007E002803D0F44938 -:100F3000F44811F0C6FD00216956042914D0002997 -:100F400012D0081D10D0001D0ED0001D0CD0001DA9 -:100F50000AD0001D08D00A3006D0283104D0A120C4 -:100F6000E749C00011F0ADFDE74829780170012084 -:100F700060713121E1702070C0E710B5DF4C20783E -:100F8000002804D120464030007E002804D067208D -:100F9000DB49000111F095FD07F0C2FEE08007F08B -:100FA00087FF207200202071012060710521E1700F -:100FB000207010BDF8B5D14C07462034A07B2546E3 -:100FC0002035002805D1287E002802D1A8780028E5 -:100FD00004D0CC48CA492A3811F073FD08F02DFD21 -:100FE0001026022822D1C9483988808988421DD11B -:100FF000C249483908460A7F6038807A002A03D0FF -:1010000080070CD40C200CE0800708D40620087759 -:10101000BE484030C07B002801D009F0E3F92E76AD -:101020000020E07326740120A073F8BD0220F8E7C9 -:1010300010B5B24C2078002804D120464030007E04 -:10104000002804D0AF48AE493C3811F03AFD0020EA -:1010500020710E20A0700F20E070FF20A0710020F2 -:10106000C0432081AA480178A1728188A18140886B -:10107000E08101206071207010BD10B59F4C207878 -:10108000002804D120464030007E002804D0DB2018 -:101090009B49800011F015FD0821A01D0EF082FD76 -:1010A00000202071012060712B21E170207010BDA3 -:1010B00070B5924D04462878002804D12846403067 -:1010C000007E002804D0B7208D49C00011F0F9FC43 -:1010D0008E4810222146303800F0BCFB8B4810228D -:1010E000A118203800F0B6FB884830380EF061FEB9 -:1010F0008649102210392C46A81D00F0ABFB0020B9 -:1011000020710E20A0702A20E070012060712070F4 -:10111000F4E6F8B5794C05462034A07B2646203607 -:10112000002802D1307E002804D076487449DC388B -:1011300011F0C7FCA978052912D0132910D0142961 -:101140000ED015290CD01A290AD0292908D03D29FA -:1011500006D03B2904D06B486949D43811F0B1FC62 -:1011600028886C49884204D966486549CB3811F013 -:10117000A8FC08F062FC0C212827022809D163484A -:101180002A888089904215D15C484838027E002A1E -:1011900001D0E17310E0A97841760121017637761C -:1011A0000020E07359484030C07B002804D009F08B -:1011B00019F901E00220E07327740120A073F8BD43 -:1011C00070B54E4C05462078002804D122464032A6 -:1011D000107E002804D083204949C00011F071FC22 -:1011E0004648294660300622054611F0CDFA012016 -:1011F000A8710021217160711721E17020707DE6D6 -:10120000F0B5414F85B0403F3D7A06463B480078F7 -:10121000002804D13846A038007E002803D0384981 -:101220003D4811F04EFC3078002806D0012804D04B -:101230000D203349800111F044FC082D39D2324889 -:1012400020380190C469307800282CD0012804D0BF -:1012500031482B490F3011F034FC29460831012068 -:10126000884004430120A84020430090B179234CDA -:1012700008027279690009191043FF310131888130 -:10128000B01C11F0E2FA717800020843A9000919B4 -:10129000C031C862387A401C387201990098C86120 -:1012A0000020207108E0294608310120884084434D -:1012B000D8E7124807210171012110480B22417122 -:1012C000C270017005B0F0BD10B50C4C207800283C -:1012D00004D120464030007E002804D00E48084942 -:1012E0000E3811F0EEFB11F0FFFC00202071012000 -:1012F00060710A21E170207010BD0000A002002082 -:10130000EC0A000006050000C00300209801002040 -:1013100024000020FF0E00003F03000010B508F07D -:101320000AFF002803D0FC49FC4811F0CAFB07F073 -:10133000F5FE07F0D8FC0AF016FA002804D0F748AA -:10134000F5490E3011F0BDFB07F039FF002804D03D -:10135000F248F149123011F0B4FB11F0C5FCF0482D -:1013600000240470FFF7DBF9EE480121047141719C -:101370000222C2700170BFE770B5EA4D04462878BA -:10138000002804D128464030007E002804D0EF20F9 -:10139000E149800011F095FB20781F2801D8601CDE -:1013A00004D1DE48DC49DE3011F08BFB00202871CF -:1013B0002078611C07F0BCFF012068712021E970D2 -:1013C00028709BE5F8B5D74C054620782646403670 -:1013D00000280CD1307E002809D108F02EFB00280F -:1013E00002D1307C002807D0287800280ED0CB48C6 -:1013F000C949EB3011F065FB2878012806D0002898 -:1014000004D0C648C449F03011F05BFB0120607184 -:1014100028780027C44D01280BD0002008F074FE66 -:10142000002844D00C2020711B20E0700120207087 -:10143000F8BD0C20207107F003FF0028F4D0BA4853 -:1014400002210C300EF037FB002806D00F21A889AE -:10145000090211F013FAA98100E0AF8101220321F2 -:10146000B14807F0E9FAB04808F051F8A88907F048 -:1014700059FC002803D1A849AC4811F022FBA889E7 -:10148000002107F053FE002804D0A848A249001DFF -:1014900011F017FB317F708B08F0D9FE002804D0C3 -:1014A000A2489D49083011F00CFB2771BCE7277159 -:1014B000307C0028B8D1A889FFF712F9B4E770B5DD -:1014C000984D04462878002804D128464030007EF4 -:1014D000002804D0954890493B3811F0F2FA207862 -:1014E0001F2801D8601C04D190488B493A3811F06C -:1014F000E8FA002028712078611C07F02DFF0120F8 -:1015000068711A21E9702870F8E4F8B5854D044631 -:1015100028780C272E464036002806D1307E002839 -:1015200003D108F08AFA032804D16F207A49C00059 -:1015300011F0C7FA6079002801D001282FD1A079D5 -:10154000002801D001282AD1A07B002805D001283D -:1015500003D0022801D0032821D1607B40071ED090 -:10156000618801208003814202D82288824201D909 -:1015700020790CE02079002804D0022805D0032827 -:1015800003D004E0202904D209E0A02A01D20128D6 -:1015900005D12088884207D92079012804D06348E2 -:1015A0005D495F3811F08DFA20887083207930779B -:1015B0006079002802D0012803D00CE05C4A0021A9 -:1015C00005E0584A60329079002804D00121204675 -:1015D00007F03AFE074601202F7168711821E97063 -:1015E0002870F8BD70B54F4C05462078002804D10E -:1015F00020464030007E002804D04C484649B63092 -:1016000011F05FFA08F019FA0C2102280ED14648B1 -:101610002A8883899A4219D10246C032137F002B4F -:1016200004D1807E0E2803D00F2801D0217103E061 -:1016300005201077002020710E20A0702E20E07071 -:101640002888E08001206071207057E40220F2E7D2 -:1016500070B5344C05462078002804D1204640302F -:10166000007E002804D031482B498A3011F029FA35 -:1016700008F0E3F90C2102280ED12B482A8883892F -:101680009A421FD10646C036327F002A04D1807E9E -:101690000E2803D00F2801D0217109E02148102223 -:1016A000A91C1E3811F070F804203077002020713A -:1016B0000E20A0702D20E0702888E080012060714D -:1016C00020701BE40220F2E710B501780B0011F046 -:1016D000FDFA3C90904590906590909090484B908A -:1016E00090905E619090909090904F3590393D90A1 -:1016F00090909041909090909090905390575B90E4 -:101700001F319078686C7074907C90878B84809087 -:10171000801CFFF79DFF6AE0EC0A0000DF0200007A -:10172000C0030020A002002098010020E90300006F -:101730001D000020801CFFF755FF58E0801CFFF7BC -:10174000E4FE54E0801CFFF7BAFE50E0801CFFF777 -:1017500039FE4CE0801CFFF70FFE48E0FFF7DEFD8E -:1017600045E0FFF7B1FD42E0801CFFF749FD3EE098 -:10177000801CFFF725FD3AE0801CFFF7CAFC36E02D -:10178000801CFFF795FC32E0FFF777FC2FE0FFF7B6 -:101790004FFC2CE0801CFFF70DFC28E0FFF7EDFB71 -:1017A00025E0801CFFF7B8FB21E0801CFFF78AFBD7 -:1017B0001DE0801CFFF74FFB19E0801CFFF71DFBAD -:1017C00015E0801CFFF7FAFA11E0801CFFF7B0FA71 -:1017D0000DE0801CFFF77EFA09E0FFF75DFA06E0F6 -:1017E000801CFFF72EFA02E0801CFFF70DFA0120A3 -:1017F00082E5002080E510B51D491E4811F061F911 -:101800007AE570B51D4A012411461B4D4031030095 -:1018100011F05CFA05191C1C04191C00012200219E -:10182000154807F009F91548002148380177417734 -:10183000C03808F068FD002804D00E480C49D330A9 -:1018400011F03FF964E40C74556561E46D200849BA -:101850000001F5E730B5134606E0CC18203CE47FE4 -:10186000D51A44555B1EDBB2002BF6D130BD00000B -:10187000EC0A0000CA05000098010020A002002028 -:1018800010B5030011F022FA070805080B0B0E0E25 -:10189000110003F0FAFF10BD01F0BAFF10BD0BF00C -:1018A0009BFF10BD0DF004FE10BDFF20F8A17D30A0 -:1018B00011F007F910BD7FB5F94AFA4C51689268EA -:1018C0000192009120700823F74A1946F7480EF05C -:1018D00093FB0025F6480EF0ADFB6D1CEDB2072D15 -:1018E000F8D3F1490320803140020BF0C7FF0028F4 -:1018F00003D0E7A1912011F0E4F81E220221ED4867 -:101900000AF077FBEB481E22032110300BF0EBF8B6 -:10191000E8480722342174300AF0C4FAE5484C2123 -:10192000283010F090FFE3496A46743108464C387D -:101930004164FF317B31816401211172039002F017 -:1019400016F902A80CF0CCFA002803D0D0A1A520EB -:1019500011F0B7F8D54802222421A8380AF0A2FADB -:10196000D24802222C215C380AF09CFAD2490B2082 -:101970000DF08AFE002803D0C5A1B22011F0A1F815 -:1019800003F070FF03F076F904F0D6FD6B46CB4A06 -:101990000821CBA002F04BF8002803D0BCA1B9204D -:1019A00011F08FF8012005F0C8F8002803D0B8A185 -:1019B000BB2011F086F87921C900C44810F043FF1C -:1019C000C249B74A0020135C0D18401CC0B2EB702E -:1019D0000428F8D3002060606070A0707FBD70B5EF -:1019E000BB4E0546706A94B00C46401C04D1B06AE8 -:1019F000C0430004000C0BD0306AC007C00F287031 -:101A0000706A10F033FFB06A2071000A607113E051 -:101A10002B206946087009A968460AF089FA00284F -:101A200003D09BA1DF2011F04CF801202870062282 -:101A30000AA9204610F0A8FE2878002815D0607961 -:101A4000C0210843607117206946087000A806226B -:101A50002146023010F098FE09A968460AF068FA9B -:101A6000002816D08AA1F42011E0322069460870BF -:101A700000A806222146023010F086FE09A9684619 -:101A80000AF056FA002804D0FF2081A1013011F09D -:101A900018F814B070BDF0B58D4C0646206895B0AE -:101AA0000D463746401C0837002808D16068401CA6 -:101AB00005D1A068401C02D1E068401C11D020680C -:101AC000314610F0D3FE6068311D10F0CFFEA068E3 -:101AD000394610F0CBFEE06831460C3110F0C6FEFE -:101AE00025E02B206946087009A968460AF020FA0B -:101AF000002804D0FF2066A1203010F0E2FF082269 -:101B00000AA9304610F040FE2B206946087009A94A -:101B100068460AF00DFA002804D0FF205CA12730A7 -:101B200010F0CFFF08220AA9384610F02DFE2069D8 -:101B30002E46401C0836002808D16069401C05D19B -:101B4000A069401C02D1E069401C12D020692946DE -:101B500010F08CFE6069291D10F088FEA0693146E6 -:101B600010F084FEE06929460C3110F07FFE15B0BC -:101B7000F0BD2B246846047009A90AF0D9F90028A1 -:101B800004D0FF2042A1453010F09BFF082209AF8E -:101B90000AA9284610F0F8FD6846047009A90AF061 -:101BA000C7F9002804D0FF2039A14C3010F089FF7C -:101BB0000822391D304610F0E7FDD8E710B50021A6 -:101BC00008460EF0ECFA002101200EF0E8FA0021A0 -:101BD00002200EF0E4FA002103200EF0E0FA0021CA -:101BE00004200EF0DCFA002105200EF0D8FA10BD1A -:101BF00010B5364CA0780A2804D3FF2024A19630D3 -:101C000010F05FFF20786021484300190830002160 -:101C100001704178E722C908C900C91C1140417010 -:101C2000204A0121517010BD70B51E4C607800280B -:101C30000ED0264800250178491CC9B201700A2936 -:101C400000D105708178491C81700EF072FB6570BF -:101C500070BD70B5134C05466068002804D0FF20A5 -:101C60000BA1BF3010F02DFF656070BD70B50D4E3B -:101C7000164DFFF7BDFF7168044600292AD0602287 -:101C8000FEF7A2FAFFF7D0FF00207060F1E7000036 -:101C90007372635C686F73745F636F72652E630049 -:101CA000F82C01002C000020C40300206C1100203F -:101CB00081180000440A0020141000203412000093 -:101CC0006E52463531383232000000004C0C002094 -:101CD000800000102879002852D0FE480AF0F2F85F -:101CE0006060002804D1FF20FB49DD3010F0E9FEE0 -:101CF00060680AF045F9002810D0204601F0A5F8E8 -:101D00006078010707D5C008C000401C60702879C2 -:101D1000401E287126E0EF48616829E0ED486168BF -:101D20000AF0D9F8687900282AD0EA484C380AF035 -:101D3000C9F86060002803D1E749E84810F0C1FE07 -:101D400060680AF021F9002815D0204603F0DCFD78 -:101D50006078010709D5C008C000801C60706879F0 -:101D6000401E6871FFF760FF83E7DA4861684C380E -:101D70000AF0B1F87DE7D74861684C380AF0ABF853 -:101D800070BDF7B505460078002700090C463E46B1 -:101D9000062804D0D148D049223010F092FE287A8B -:101DA00000280ED0012814D0CC48CB49433010F085 -:101DB00088FE0298002C068001D0278066800020D3 -:101DC000FEBD02270926002C0ED0A889A080A87B82 -:101DD00008E003271426002C06D02869E060A88AB2 -:101DE0002082287B2072E4E702980680E7E770B53E -:101DF0000E4600211C4619801546030010F066FFB0 -:101E00000723050B1711231D2300224629463046C0 -:101E100003F046FD70BD22462946304601F09BFA8C -:101E200070BD22462946304604F081FA70BD224634 -:101E30002946304602F052FF70BD22462946304600 -:101E4000FFF79FFF70BD4D20A349C00010F039FE81 -:101E5000032070BD01469F4810B54C380AF03BF88E -:101E60009F494879401CC0B24871012803D19D4860 -:101E7000007800F0C7FB10BDF8B505460720400705 -:101E80000F460A18012189038A4209D2002D02D087 -:101E90002818884204D2E81C80088000A84201D09B -:101EA0001020F8BD8E488178002911D03988009122 -:101EB0004178602251430C18083420783B460007D3 -:101EC000000F00222146FFF792FF060004D015E024 -:101ED000002038800520F8BD002D13D039880098E7 -:101EE000814201D90C260DE020783B460007000F07 -:101EF0002A462146FFF77BFF060005D00C2E01D0B5 -:101F0000002038803046F8BD754D6878401CC0B25E -:101F100068700A2801D100206870A878401EA87057 -:101F200061784807400F022810D00128EAD169489B -:101F3000616809F0D0FF2879401CC0B228710128DF -:101F4000E0D16848007800F05DFBDBE7C806D9D433 -:101F50006068FFF77FFFD5E770B504466248164614 -:101F60000D46814204D15D485B49DB3010F0A9FD8C -:101F7000012E05D059485849EB3010F0A2FD70BD34 -:101F80005848012181706620207000202072A581B0 -:101F9000A17370BD70B516460D46040001D1FFF760 -:101FA00027FE662101700121017229680161A9885B -:101FB00081820673002C01D1FFF736FE70BD072128 -:101FC0004907012241189203914201D31020704722 -:101FD0000721017000207047052210B5920390423E -:101FE0000ED301239B04C21A404B9A4208D3404BA4 -:101FF000984205D2072252078A18DB139A4201D36E -:10200000102010BD0DF079FB10BD052310B59B030A -:1020100099420ED301239B04344CCB1AA34208D31C -:10202000334B994205D2E3020124D318A403A342FF -:1020300001D3102010BD022803D0102801D00920A0 -:1020400010BD0DF080FB0028FAD0052010BD70B542 -:1020500005239B03984212D301239B04234CC31AEC -:10206000A3420CD3224B984209D2E4020D19DB1390 -:102070009D4204D2002A04D014199C4201D310209E -:1020800070BD0DF086FB0028FAD0072070BD10B59A -:1020900004460720400701212018890394B0884294 -:1020A00002D3102014B010BD01F0ADFD002801D006 -:1020B0001120F7E70F2008A9087369460BA809F05B -:1020C00037FF0028EED16846007A207068464089C4 -:1020D00060800FE010110020901C0000FF01000044 -:1020E0004C0C00202C000020FFFF00000000FC1F13 -:1020F0000040002068468089A0800020D2E710B50B -:1021000094B0044601F07FFD002801D01120C9E7FA -:10211000002C01D00720C5E7392168460170002155 -:10212000817009A909F004FF002803D01549164859 -:1021300010F0C7FC0020B5E770B5144C0846A17834 -:10214000002913D000280FD0072252070123851839 -:102150009B039D4203D20568AA189A4201D310201E -:1021600070BD8288002A03D0012903D0082070BDE9 -:10217000092070BD04F042FA0028FAD10021A170B4 -:1021800070BD0000901C0000790300002C000020AE -:1021900010B56038030010F099FD07050A0E131AF8 -:1021A00021252C0005C91146FFF766FE10BD086801 -:1021B000FFF705FF10BD05C91146FFF70DFF10BD64 -:1021C0004B6808788A681946FFF71FFF10BD4B68F7 -:1021D0008A6808681946FFF73AFF10BD0868FFF7DC -:1021E00056FF10BD08884A6880B21146FFF7A4FF69 -:1021F00010BD012010BD10B56C2801D0012010BD0C -:102200000878FFF77CFF10BD10B5EFF31080C4070E -:10221000E40F72B6D6484178491C417040780128D5 -:1022200001D10EF0ABF8002C00D162B610BD70B534 -:10223000CF4CE07800280AD10125E570FFF7E4FFD4 -:102240000EF0A4F8002804D000200EF077F800204B -:1022500070BDC84865714560F9E770B5EFF310804F -:10226000C507ED0F72B6C24C6078002803D1C2A139 -:102270008F2010F026FC6078401E60706078002887 -:1022800001D10EF07FF8002D00D162B670BD10B5FF -:10229000B748C178002904D000214171C170FFF70F -:1022A000DCFF002010BD10B504460EF06FF8B049F9 -:1022B000C978084000D001202060002010BDF8B58A -:1022C0000246AB4C0026A6710820042101251027E8 -:1022D000130010F0FBFC0D080A0C0E101214161E51 -:1022E000262123252800257122E0022001E021710A -:1022F0001EE020711CE027711AE02020F9E701267A -:1023000016E0FFF781FF0EF041F80028FBD002260F -:102310000EE02171A5710BE02771FBE7202000E0A2 -:1023200040202071F6E7FF2093A17E3010F0C9FB1A -:102330000EF038F8002809D00EF03AF8B04205D176 -:1023400030460EF038F80028FAD024E0012080074B -:10235000C5608D4A002151608C4A9661854B0222EE -:102360005A6085608A4803690569DB43DB06DB1731 -:102370005B1C10273D430561834D00E020BF6F6863 -:10238000002FFBD0002B03D1076910239F43076167 -:10239000784882606960A07900280CD00DF0F6FFC3 -:1023A00005460DF053FF7B4A002D02D0A260E0608D -:1023B00001E0E260A060002E01D100F0B1F8F8BDAC -:1023C00010B504460DF0E8FF002805D0684901204B -:1023D000C8704A78521C4A702046FFF770FF10BD43 -:1023E000F8B5694FB8680025012802D1BD600DF02D -:1023F000A5FF7868012800D17D60386801265C4C13 -:10240000012814D13D606079002803D000200DF030 -:1024100095FF65712078002809D00DF0B7FF0028DE -:1024200005D05948C038866300060661A670386931 -:1024300001282CD13D6100F068F801208007466139 -:10244000A079002815D00DF0A1FF00900DF0FEFE40 -:102450000099002901D0E16800E0A168411A022931 -:1024600001DA8A1C13DC0099002901D0E06000E049 -:10247000A060FFF7C9FE0DF089FF002806D0424892 -:10248000C038866300060661A67000E02670F86812 -:10249000012819D100F039F800F037F800F035F8CC -:1024A000A078002804D1FF2033A1053010F009FBEB -:1024B000FD60A5702570FFF7D0FE0DF042FA0028F0 -:1024C00002D03148C038C663F8BD10B5284CE0785A -:1024D000002801D10DF056FF01208107886100F02E -:1024E00014F8A07800280BD0274CE068002803D10E -:1024F0000DF061FF0028F8D10020E06000F005F841 -:1025000000201C49C043886010BD08B550206946B2 -:1025100008806A461088411E11800028F9D108BD44 -:10252000F8B5144819278760174900200860C8606B -:102530000DF02CFFBD0701240D4E002805D01248D8 -:10254000C03884632C61B47000E03470FFF75CFE27 -:10255000084847600D4930798863FFF7D6FFAC61C2 -:10256000FFF7D3FF0849002008616C61F8BD000047 -:1025700034000020000300407372635C736F635F7C -:10258000636C6F636B2E6300000100400005004028 -:1025900000ED00E0FFFFFF7F01203F49400608609B -:1025A0003E4908603E490A68FF231B029A43831292 -:1025B0001A430A60384980390860704710B50246EE -:1025C0000420384904E0C3005B181B79002B0AD0B3 -:1025D0000346401EC0B2002BF5D133A1432010F0BA -:1025E00070FAFF2010BDC300CA50002259184A716A -:1025F0008A7101220A7110BD2A4A0021C000801888 -:102600000171704710B50446042803D326A1522057 -:1026100010F057FA2348E1000C182079012803D064 -:1026200021A1532010F04DFA6079A179401CC0B26D -:10263000814200D060710120174940068031086056 -:1026400010BD70B5164800680004800F022803D042 -:1026500015A1692010F035FA124E194C0325207887 -:10266000C10088190279012A07D1427983799A42F7 -:1026700003D042798271705880472078401CC0B2E4 -:102680002070042801D30020207028466D1EEDB272 -:102690000028E4D170BD000080E100E080E200E0AD -:1026A00018E400E08C1100207372635C736F635F49 -:1026B0007369676E616C6C696E672E630000000061 -:1026C000440000208107C90E002808DA0007000F27 -:1026D000083880082C4A80008018C06904E080080F -:1026E0002A4A800080180068C8400006800F7047A2 -:1026F00010B50D20FFF7E6FFC4B20420C043FFF77A -:10270000E1FFC0B2844203D021A11A2010F0D9F910 -:1027100010BD0121234A48031060234B00221A6098 -:10272000224A5160224A1060224A11601D498039B4 -:102730000860704701211B4A480310601D4A516020 -:10274000194A002111601A490860704710B51649EE -:102750000868012804D00EA1562010F0B2F910BD6F -:10276000154880680022C0B20A600DF041FA10BD21 -:1027700010B50D4801680029FCD0FFF7E7FF0120E4 -:102780000B494003086010BD00ED00E000E400E0EC -:102790007372635C736F635F68616C5F726E672EE8 -:1027A0006300000080E100E000D1004000D3004061 -:1027B00080E200E000D0004000D5004030B40121AC -:1027C000BB48C9020160CD1005604A030260B948E8 -:1027D00003681B021B0A036004680023240A240206 -:1027E0000460B5480468240A24020460B348012444 -:1027F00044608460B24C23606360A360B14B196095 -:102800001D601A60B04B19601A600121016030BC74 -:10281000704710B40121A648CC0204600A0202608D -:102820000B060360A54841608160A549002008604F -:1028300048608860A34804600260036010BC704771 -:102840000121A048C9020160C91001607047002839 -:1028500005D0012805D0022805D19C4870479C4826 -:1028600070479C48704710B59BA18B2010F029F948 -:10287000002010BD70B500219E4C9F4D9F4A904B8B -:10288000002808D001281DD0022822D092A1B32010 -:1028900010F017F970BD01200004A060A86011605D -:1028A0001960974B42109A60964A9060804A0012D5 -:1028B0001060954801608648016094480160944822 -:1028C000017070BD01204004A060A8605160596093 -:1028D00070BD01208004A060A8609160996070BD07 -:1028E000F8B59446834A844D00240127744E00288D -:1028F00008D0012836D0022844D077A1E82010F073 -:10290000E0F8F8BD891E0902090A01200004906060 -:1029100034606860794A1160012B21D000217C4A23 -:102920007C4B517061463D31DC63DF637A4B5C6008 -:1029300002249C6004241C61734B196073490F606E -:10294000604B891519606F4B58605F48016074488F -:102950007249C16086606A49600348601770F8BDBB -:102960000121DCE701205B4E40046E4F012B04D1B6 -:102970003460506068603960F8BD906034606860B1 -:102980003960F8BD0120514E8004674F012BF4D10E -:10299000EEE766484068704770B5494D28680026E4 -:1029A000544C012806D1A068C00303D501200004BF -:1029B000A0602E606868012809D1A068800306D550 -:1029C00001204004A0606E6001200EF05BFAA86850 -:1029D000012809D1A068400306D501208004A06029 -:1029E000AE6002200EF04EFA70BD10B5484908786E -:1029F000002818D00120424AC0039060414A40009C -:102A000090602B4A001210603F4A00201060304A4C -:102A100010603E4A106008704A78002A02D0487060 -:102A20000EF030FA10BD0320FAE7012040490006FD -:102A300008607047012023490006086070470120A4 -:102A40003B4940050860704701201E494005086069 -:102A5000704730490020C8637047410A354AC005B5 -:102A6000C00D5043801C5143400A0818704710B4F1 -:102A7000314C430B63431B0C5C020C602D4C6343D5 -:102A8000C31A2E485C0258432A4B400D4343E31AB5 -:102A90000124DB0324041B191B1613700A68101889 -:102AA000086010BC704710B50EF0B6FA10BD0000FB -:102AB00080E100E008E400E018E400E000B000403D -:102AC00040B1004080E200E000E100E048B1004099 -:102AD0004081004044B100407372635C72656D5F79 -:102AE00068616C5F6576656E745F74696D65722E82 -:102AF0006300000000B3004040B3004040B5004018 -:102B000000F5014000830040408500400082004005 -:102B100045000020C08F004000850040008000403C -:102B200080F5014044B5004048B5004000B5004084 -:102B300000E200E0093D0000378600006F0C010054 -:102B400010B50EF055FA10BD012001218140064A52 -:102B5000116000BF00200549C8630120C8637047A9 -:102B600000200249C863704780E100E0C01F0040B8 -:102B700070B5FF4D044629680300A03110F0A6F897 -:102B800008053E08080E1D2C3242FAA1D22033E07F -:102B9000887F012832D0F7A1D8202DE001F058FE1F -:102BA00005282BD001F054FE062827D001F050FE56 -:102BB000072823D0EFA1DB201EE001F049FE032807 -:102BC0001CD001F045FE062818D001F041FE072870 -:102BD00014D0E8A1E0200FE0887F05280ED0E5A101 -:102BE000E52009E001F034FE052807D001F030FEB1 -:102BF000062803D0DFA1E8200FF063FF2868A0308B -:102C0000847770BDDBA1EC20F6E7D949C1220968C1 -:102C1000525CD206920F05D1A0318A8A824201D13C -:102C2000887D70470020704770B5044611202070E1 -:102C30000021CF4D61702968C0318978002908D002 -:102C400003290ED0042910D0FF20CAA116300FF09E -:102C500038FF20780009012802D92868807E60703A -:102C600070BD0007000F203002E00007000F303079 -:102C70002070EEE730B50388C249C34C8B4202D0C6 -:102C80009A1FA2421ED242888A4202D0951FA542B4 -:102C900018D2934216D883887D24E400A34211D829 -:102CA000C088884205D0B84D04460A3C2D1FAC426E -:102CB00008D2884208D08A4206D05B1C5A43C00022 -:102CC000824201DD072030BD002030BDFFB500226B -:102CD000099B002802D0994205DC5CE0002902D162 -:102CE000002004B0F0BD0920FBE7845C002C12D06A -:102CF00085186F780D2F4CD010DC3B000FF0E6FFED -:102D00000A421B2A2A303032323A3A42835C002B84 -:102D10003FD1521CD2B28A42F8DBE1E7122F31D008 -:102D200004DC0E2F35D00F2F2CD132E0142F11D010 -:102D3000152F27D116E0022CD5D1AB78039C072B99 -:102D4000237001D25B0701D40A20CAE7029B012449 -:102D50001B7814E0E343DB0708E0012C08D011E006 -:102D60000620BEE70F2523072D075B19002BF4D0A3 -:102D70003046B6E7029B1B789C070AD40224234303 -:102D8000029C2370835C521C9A18D2B28A4204DDE2 -:102D9000A9E70B20A5E7192676028A42A5DB9FE763 -:102DA00005E00278401C002A01D0002070470A4646 -:102DB000491E89B2002AF4D10120704730B56C4D0C -:102DC0000021286887B0C943A0308182002484751F -:102DD000214606200DF0E3F9002105200DF0DFF972 -:102DE000002102200DF0DBF90120FFF7C1FE286869 -:102DF000BF210C54C0300470012069460870684639 -:102E00000BF08FF807B030BD10B5594A94B0126876 -:102E1000A032927F042A0AD028236A461370508079 -:102E2000132906D03B2904D0072014B010BD082078 -:102E3000FBE71171104609A909F07AF8040002D1E4 -:102E40000420FFF795FE2046EFE7F0B59BB00400A5 -:102E500003D148A14D480FF034FE72202070606805 -:102E6000002701780826491F414D0B000FF02EFF67 -:102E70000F096ECBFB6E70F9F8AA6E6E6E6EF7F6E8 -:102E80006E002868A030807F032804D0972039A1E5 -:102E900080000FF016FE002108460DF080F96078E2 -:102EA00010233043607028680146C0314A781A43C5 -:102EB0004A7061688A783C2A45D08E880146012292 -:102EC000A0318A756268D2890A836268128A4A834D -:102ED0006268528A8A838E8261680622C979C173C8 -:102EE0006168103008310FF04FFC0520FFF740FEFD -:102EF0002868C2210F54017FFB2211400177B021C5 -:102F000009584A7A920892004A72C782304602F003 -:102F1000B5FC002804D01D4816A122300FF0D1FDC9 -:102F2000304601F0C7FE002804D04F2011A1C00098 -:102F30000FF0C7FD304603F00FFB002806D0134802 -:102F40000CA1273023E10120FFF712FE1BB0F0BDDA -:102F5000878801F07DFC052820D001F079FC062847 -:102F60001CD001F075FC072818D001F071FC0FE0AF -:102F7000480000207372635C6761705F636F726505 -:102F80002E630000FFFF00007B0C000053020000D6 -:102F9000042803D0FB49FC480FF093FD60783043D0 -:102FA00060702868C030417831434170FFF706FFF8 -:102FB000384602F068FC384601F082FE384603F0DD -:102FC00001FBC3E701F044FC052810D001F040FCF0 -:102FD00006280CD001F03CFC072808D001F038FC92 -:102FE000042804D0E848E74913300FF06AFD606810 -:102FF000807902F000FD0028A8D06178314361702B -:103000006168C880A2E701F023FC052810D001F018 -:103010001FFC06280CD001F01BFC072808D001F08B -:1030200017FC042804D05520D649C0000FF049FDF4 -:103030006078304360706068C1882868A030018380 -:10304000616809894183616849898183002102207F -:103050000DF0A5F82868A030C77777E70CE167E1A5 -:103060006FE070E0FFE701F0F3FB052810D001F0FE -:10307000EFFB06280CD001F0EBFB072808D001F08D -:10308000E7FB042804D0C048BE4935300FF019FDD5 -:103090002868BE21095C042993D0807D40063CD578 -:1030A000606802210C30FFF77BFE002835D0606895 -:1030B0000821001DFFF774FE00282ED02868014665 -:1030C00080310A6B527A920708D1C222125C002A20 -:1030D00008D1C28AD30505D5D20703D1C38A4022BD -:1030E0009343C382C38A80229343C3822D236A46BB -:1030F0001370A030808A5080CB698A694869096A58 -:1031000001AC0DC4049109A9684608F011FF00281C -:10311000A3D09D489B49573039E062682868A421B4 -:1031200092890A5261680822091DA6300FF02CFB13 -:1031300010A806742868A630159014A80AF0F1FEAD -:1031400004E70121817101F083FB052810D001F013 -:103150007FFB06280CD001F07BFB072808D001F08C -:1031600077FB042804D0884886497B300FF0A9FCFF -:103170002868BE21095C0429E2D061688A79002AA6 -:1031800002D08978002905D07F487E49E1300FF0D0 -:1031900098FCDBE6617831436170B0210958497AC7 -:1031A0008907890F01294DD1817D09064AD4017F04 -:1031B000490701D5042100E00321C03081702B2094 -:1031C0006946087009A9684608F0B2FE002804D0D4 -:1031D0006D486C4997300FF074FC69462868098D7A -:1031E00001830E2210A90A7468491591027A0A70A7 -:1031F000024609324A600F320A61521D8A6010325B -:10320000CA60133A4A618A328A61921CCA61423AA0 -:103210000A6210324A6210328A62403A8A63D21FCE -:10322000CA63521C54300A64486414A80CF004F8B1 -:10323000022815D0002813D053485249BF300FF050 -:1032400040FC0DE0817D4906017F490701D504213D -:1032500000E00321C0308170002106200CF09FFFA8 -:103260002868C18A0A0602D440229143C1828AB2E8 -:1032700080218A43C28269E62868A030807F0328C3 -:1032800004D041483F49ED300FF01BFC00210846B7 -:103290000CF085FF60781023304360702868014689 -:1032A000C0314A781A434A7061688A783C2A00D152 -:1032B00049E68E8801460122A0318A756268D2896A -:1032C0000A836268128A4A836268528A8A838E827B -:1032D00061680622C979C1736168103008310FF046 -:1032E00053FA0520FFF744FC2868C2210F54017FE0 -:1032F000FB2211400177C782304602F0BFFA002856 -:1033000004D0E3201F4980000FF0DBFB304601F0C2 -:10331000D1FC002803D01B491D480FF0D2FB3046DA -:1033200003F01AF90028A6D019481649801C2EE788 -:1033300060783043607009E600290BD0888015481A -:103340000068A030028BCA80028B0A81428B4A81BE -:10335000808B88817047F7B5064600780C460027B9 -:10336000010982B03D4601296FD00A4800680090EB -:10337000C03002296AD0072910D00A2967D0014934 -:103380000548DAE1742F0000860200000C120020CC -:103390008F030000480000201105000071680A78C2 -:1033A000521F13000FF092FC0F09B054B0B02F5B06 -:1033B0005B47B0B0B0B0656FB0008A783C2A1BD0D4 -:1033C00010271625002C7DD08888A0807068A21D4B -:1033D000C08920827068C089E0817068008A60823C -:1033E0007068408AA082716808460831C07901F08F -:1033F00034FA0020607375E019270725002CE2D00D -:103400000021A17171E011270725002CDBD08988EC -:103410000091A1807168F7228979A17141781140EA -:103420004170009802F030FA009801F04DFC0098CD -:1034300003F0D6F8ACE101270925002CC3D0888819 -:10344000A080706880792072A2E160E09DE178E060 -:10345000888812270E252146FFF76EFF98E118276E -:103460000825002CAFD08888A080A01DFFF7DCFBCA -:103470008EE11A270725002CA5D04888A080706807 -:103480000079A07184E18A783C2A32D01027162571 -:10349000002C98D08888A0807068C08920827068CD -:1034A000C089E0817068008A60827068408AA0826A -:1034B0007168607B497D40084000C907C90F084317 -:1034C000607300E036E17168C007497DC00F4908AC -:1034D0004900084360737168A21D08460831C0792D -:1034E00001F0BBF9FB480068C0304178EF22114081 -:1034F00031E119270725002C88D00021A1714278DD -:10350000EF210A40427043E1F349F44815E1307A73 -:10351000012803D0F148F04917300EE112270E259B -:1035200070892146FFF708FF002C87D0707840078C -:10353000400F032888D1E7480068C0304178FB225B -:10354000D5E7E4490968A031002C01D08A8AA2801D -:10355000327A921E13000FF0B9FB073B4651EEDBA7 -:103560006B05EE0013270C25002C85D0F1688978B7 -:103570008907890F0129217A27D04908490021723A -:10358000FD221140F268E32392785207D20F5200D5 -:10359000114321720022E2801940F3681B785B0717 -:1035A000DB0E19432172DF231940F3685B78DB07D8 -:1035B0009B0E194321726272F1680122C978A172CF -:1035C00001781143F722114016E001221143D6E79A -:1035D00015270C25002C8FD0F06806220068A11D4D -:1035E0000EF032F8D4E016270725002C84D0317B6A -:1035F000A1710178082219E00170C9E01427122591 -:10360000002C92D000980099C07BA21D103101F0CF -:1036100024F9B089E081207C01210843F921084088 -:103620002074AC480068C030017802221143E3E7FF -:1036300017273825002C7DD03221A01D0FF001F96D -:103640000020A071207A03210843A24A2072116849 -:10365000FB260B7F30405B07DB0F9B00184320727B -:10366000B0204058407A800751D0A07A8A7D400827 -:10367000D2074000D20F1043FD221040A0728B7D74 -:1036800030409B07DB0F9B00184308231843EF23B0 -:103690001840A0728A7DE07AD206D20F30409200A4 -:1036A0001043E072F72210408A7DD206D20FD2007A -:1036B0001043E072088BA0812046102264310E3046 -:1036C0000FF062F88349A07F0968C0078A7EC00FA7 -:1036D00052001043A0770A7F400852074000D20FE3 -:1036E0001043A077084644304DC820344DC4303CC8 -:1036F0003D20405C224630323E3101F0AEF8754844 -:1037000000688030006B417A8908890041723FE08F -:10371000327B022A14D017273825002C2ED0012AFC -:103720001BD0032A1BD0042A1CD0052A1AD06A49B0 -:103730006A4801E022E024E0B1300FF0C2F927E04E -:1037400019270725002C19D0898AA1800121A17190 -:1037500041784908490041701AE0012000E0022048 -:10376000A07106E0707B0007000F8030A071052A71 -:1037700002D00020E0710BE00120FBE704980580F7 -:103780000CE09F205449C000D7E7317A002908D0C7 -:103790000498002C058001D027806580002005B0AA -:1037A000F0BD19270725002CE8D00021C943A180CE -:1037B0000021A1714178FD2299E600B595B001F094 -:1037C00047F8022803D001F043F8032819D11B2140 -:1037D00008A801730021817369460BA808F0A8FBB3 -:1037E000002804D1684640781B2802D0032015B079 -:1037F00000BD002108460CF0D2FC68468078002805 -:1038000001D00820F3E70120FFF7B2F90020EEE72E -:1038100070B500252F4C002807D0022817D0A9200A -:103820002D49C0000FF04DF970BDFFF7C6FF00280D -:10383000FAD1FEF7DDF9222101700572FEF7F4F9E5 -:103840002068C030417802221143417070BDFEF7FC -:10385000CFF912210170012101722168A0318A8AF9 -:103860004281CD77FEF7E0F92068C030417804222C -:10387000EAE770B50D46040004D155201649000151 -:103880000FF01FF92078012804D0134914480FF0D5 -:1038900018F970BDA18813480E4E814209D1E28803 -:1038A000824206D130681321A030808AFFF7ACFA3B -:1038B00070BD814202D1E088002815D01220287006 -:1038C000687808210843687007CC083507C50021CF -:1038D00011E0000048000020742F00003D040000AB -:1038E0006E050000FFFF0000002278231146022031 -:1038F0000CF0B3FB02213068A030C17770BDF748EF -:103900000068C0308078704738B5F44C05460178BF -:1039100020680B00A0300FF0D9F909863506067132 -:1039200013365A758600807F052803D0EC49ED4890 -:103930000FF0C7F820680422017F114301775DE092 -:10394000A98800291ED0808AE74988421AD0A86831 -:10395000002804D1E348E2490F300FF0B2F8A8681C -:1039600006220A38A86000902068AB88A030808AC0 -:10397000042101F0B7FE002804D0DA48D8491430F9 -:103980000FF09FF838BD2979807F02290BD00428D9 -:10399000F8D0284600F072FF20681321A030808AFA -:1039A000FFF732FA38BD062804D0CE48CC491E3085 -:1039B0000FF087F8284600F061FF20680122C03030 -:1039C0004178114341700520FFF7D2F838BD00F06F -:1039D0003FFF052808D000F03BFF042804D0C14871 -:1039E000BF493C300FF06DF80ECDC0480361C26096 -:1039F0008160A2210170FEF72CF938BD284600F045 -:103A00003DFF38BD00F024FF052808D000F020FF5E -:103A1000062804D0B348B2494D300FF052F80720C1 -:103A2000FFF7A6F8EAE7AF48AD495630A8E7FFB57B -:103A300093B00124684603218470C9021D460180A9 -:103A400009F063FF00226946012003F027F80646CB -:103A500009F05FFF002E5CD1684615218470490291 -:103A6000018000271C2101A808970EF0ECFE012020 -:103A70000146103108A801700020014608A84170D5 -:103A80008178F9200140891C214308A8817068468B -:103A9000017902263143017114998185C7851F215F -:103AA000018608A80A9013980D906846099009F0BD -:103AB0002CFF0EAA09A901A802F0D4FD074609F0BF -:103AC00028FF002F02D0384617B0F0BD834F68465C -:103AD0003968008F4880684684708549018008A84D -:103AE0008078F9210840801C4108490008A88170AD -:103AF00068468685068615A80D9009F006FF0EAA71 -:103B000009A901A802F0AEFD064609F002FF002E49 -:103B100001D03046D8E768463968008F88807449FC -:103B200068468470C91C0180298810A801806988B2 -:103B30004180A9888180E988C18008216846818503 -:103B4000018610A80D9009F0E0FE0EAA09A901A8AF -:103B500002F088FD044609F0DCFE002C01D020466E -:103B6000B2E768463968008FC8800020ACE770B5BE -:103B700004465E48C421A8300EF065FE5B48574DF0 -:103B8000A83000212860C943A030818200268675B4 -:103B90000120FEF7EDFF2868BF210E5401460931D0 -:103BA0000830FDF71CFF296808462D311D30FDF750 -:103BB00072FF002C26D02868B0210C501E21A18154 -:103BC000217A8F2211401031217201461831216172 -:103BD00009396161491CA1610839E161491C21620F -:103BE0009B31616287392160103161601339E16274 -:103BF000091F21637E3121643039616310318430C3 -:103C0000A163E06370BD35480068A030807F042860 -:103C100001D0002070470120704730B504460520D0 -:103C2000800395B0844208D3012080043149201AD2 -:103C3000884202D33048844202D3102015B030BDF0 -:103C400026490868A030807F012801D00820F5E7C8 -:103C5000FFF7D9FF002801D01120EFE70D68012000 -:103C600028722278002A08D024491720012A0AD075 -:103C7000022A1FD0032A25D121E03220694608708C -:103C80000020287205E0A2799209032A1AD1694618 -:103C9000087000A80622611C02300EF075FD28464F -:103CA0000622611C09300EF06FFD09A9684608F074 -:103CB0003FF9C3E7A2799209012A03D1E7E7A27984 -:103CC0009209E4D00846B9E707214907012210B557 -:103CD00041189203914213D3102010BD48000020D8 -:103CE000742F000085050000FFFF0000AC110020CC -:103CF000012A00000000FC1F0040002002320000EA -:103D0000F949024609680B7A0931184600F0A5FD09 -:103D10000020E2E7FFB599B005460020694608712A -:103D2000087208A9087408751E461446052001216A -:103D300080038904ED4AEE4B002D06D085420DD359 -:103D40006F1A97420AD39D4208D2002C09D08442B0 -:103D500004D3601A904201D39C4202D310201DB0BC -:103D6000F0BD2846204318D01F270CAB01AA0097AE -:103D700028461A99FEF7AAFF0028F0D10DAB02AA37 -:103D8000314620460097FEF7A1FF0028E7D168469C -:103D9000007AC10703D00A20E1E70720DFE78007A8 -:103DA00005D568460079800701D50B20D7E7FFF7D6 -:103DB0002AFF002801D01120D1E703AF002D0FD03A -:103DC0001A20694608731A9888732946F81C1A9AAB -:103DD0000EF0DAFC0EA903A808F0AAF80028BED15C -:103DE000002C0ED02021684601738673324621468E -:103DF000F81C0EF0C9FC0EA903A808F099F80028D9 -:103E0000ADD1B94908A80968007C08700020A6E770 -:103E1000F0B5044695B0002014900520800384423C -:103E200075D301208004B14F201AB8426FD3B04837 -:103E300084426CD2207801280CD105216068890366 -:103E4000884264D301218904411AB9425FD3A84949 -:103E500088425CD200F0FCFC022809D000F0F8FC9B -:103E6000032805D0A048BE210068095C012902D0C2 -:103E7000082015B0F0BDC121095CCA06920F03D11C -:103E80008A0701D4490701D51120F2E721780129D9 -:103E900015D0228A974D1346203BAB4272D202299D -:103EA00001D0032901D1A02A6CD3012907D00278BF -:103EB000D20704D0628A002A64D0B42A62D80029CA -:103EC00006D0012908D0022904D003295AD110E0D4 -:103ED000002512E0022510E061680125097800291B -:103EE0000BD0012907D0022905D0032903D082482D -:103EF000BFE7032501E001211491217A002907D0B1 -:103F0000012907D0022907D003293BD106E037E079 -:103F1000002604E0012602E0022600E00326002D30 -:103F200001D0022D3FD1002E3DD0E168002929D0DB -:103F30000A79002A27D0082A24D80B7B9C46082B14 -:103F400020D8002A0CD005230A689B039A4217D375 -:103F500001239B04D31ABB4212D3654B9A420FD262 -:103F60006246002A13D0896805229203914207D342 -:103F7000012292048A1ABA4202D35D4A914206D3C0 -:103F8000102076E75EE00B7B002B5BD0D5E7017855 -:103F9000890702D05848401E6BE7022D03D1022E3C -:103FA00050D0032E4ED0182269460A70228A4A80C9 -:103FB000228A8A808D71007A0127002802D0012888 -:103FC0007ED102E00020C87100E0CF711498087221 -:103FD000217802A80130012922D006210EF031FCFF -:103FE00007216846C173067409A907F0A1FF0028DC -:103FF000C7D10A206946087009A9684607F098FFEA -:104000000028BED13A206946087009A9684607F021 -:104010008FFF0028B5D1002D08D0022D06D04AE030 -:1040200061680622491C0EF0AFFBD9E7002E42D092 -:10403000002623E00168B00009580978002903D060 -:10404000012905D0072014E700216A46917001E09C -:1040500069468F70E16806220968095800A8491C62 -:1040600003300EF091FB0B206946087009A96846E1 -:1040700007F05EFF002884D1761CF6B2E068017973 -:10408000B142D7D8002612E08068B100415800A89C -:10409000102202300EF078FB3B206946087009A917 -:1040A000684607F045FF0028CDD1761CF6B2E068DF -:1040B000017BB142E8D81B2168460170877000E09F -:1040C0002EE009A907F034FF0028BCD108A84079E8 -:1040D0001B2825D1002D15D0012D0FD0022D21D068 -:1040E000032D12D11EE00000480000200000FC1F3C -:1040F00000400020E13F0000023200000320FEF7F4 -:1041000037FD11E00320FEF733FD608A00280BD055 -:1041100000228300114610460BF09FFF002803D0B9 -:104120000320A6E60220EEE70020A2E670B586B0E6 -:104130000C0006460CD00520800384424BD301209E -:104140008004FD49201A884245D3FC48844242D26B -:10415000FB4DBF212868095C022903D0C03040789C -:10416000400702D5112006B070BD002C04D02046B7 -:10417000FEF780FD0028F6D13046FEF746FD012807 -:1041800003D0022823D0EF48EDE721001BD10820FF -:1041900069468882286801ABC08805AA002103F01F -:1041A00048F80028DFD16846808A082801D003201B -:1041B000D9E7684681888181C188C18101890182EE -:1041C0004189418203A9304601F0E5FBCBE7002C91 -:1041D00001D00620C7E71020C5E770B50C4605469C -:1041E000FEF713FD012803D0022801D0D54870BD89 -:1041F00021462846FEF708FE70BD00B50146143082 -:1042000095B0192801D2880707D008461E3004D07F -:104210000A3002D0072015B000BDFFF7F4FC0028DB -:1042200001D01120F7E7C648312200684170684686 -:104230000270817009A907F07BFEECE701B582B03E -:10424000022069460880BE4802AB00686A46808842 -:10425000002102F073FE69460988022900D003207C -:104260000EBD38B502216A46118007214907012297 -:1042700041189203914201D3102038BDB049034642 -:1042800009686A468C880021204602F0D2FF694600 -:1042900009880229F1D0032038BD3EB50446082024 -:1042A0006946088005208003844208D301208004E9 -:1042B000A149201A884202D3A048844201D3102089 -:1042C0003EBD2046FEF7D6FC0028F9D1208869467D -:1042D00088806088C880A0880881E08848819848E4 -:1042E00001AB00686A46C088002102F027FE6946DB -:1042F00009880829E4D003203EBD1FB504460820E4 -:104300006946888105208003844208D30120800407 -:104310008949201A884202D38848844202D3102057 -:1043200004B0DAE486486B46006803AAC08800211E -:1043300002F07FFF0028F3D169468989082901D05E -:104340000320EDE769460988218069464988618034 -:1043500069468988A1806946C988E180E0E7FEB5A1 -:1043600005460520800317460E46814208D30121E9 -:104370008904714A731A934202D3704B9E4201D34F -:104380001020FEBD1F2F01D90C20FEBD6C4C8542B4 -:104390002AD3681A904227D39D4225D2206801A9CA -:1043A000408802F07DFD0028EFD1287869464871E9 -:1043B000206801A9408802F056FD0028E5D1694631 -:1043C0000090087802210843694608704979090776 -:1043D00003D0082108436946087020686946408870 -:1043E00002F0EBFC0028D0D169460F8120683346EB -:1043F000408802AA002102F0A1FD69460989B9425C -:10440000C3D00320FEBD38B50C4607210122490761 -:104410009203002802D04318934202D261189142BD -:1044200001D3102038BD21886A461180002801D0B0 -:1044300000290BD04249034609684D8800212846CF -:1044400002F0F7FE69460988218038BD0C2038BD8E -:1044500010B50C460521890386B08C4208D3012192 -:104460008904354A611A914202D334498C4202D3FD -:10447000102006B031E432490968A031897F05294E -:1044800001D00820F5E7FEF7C0FB012803D0022881 -:1044900026D02C48EDE720881E2801D20720E8E727 -:1044A0000620FEF765FB052168460170007981084A -:1044B000A0788900C007C00F014368460171FB2046 -:1044C0000140A0788007C00F800001436846017159 -:1044D0002188C18009F025FD0028CAD00320C8E743 -:1044E0000620C6E770B586B014460D46FEF78DFB74 -:1044F000012803D0022801D0124834E6104EC02112 -:104500003068095CC90706D0BE21095C042902D0C5 -:10451000002D02D05AE0082025E6052189038C42AF -:1045200008D301218904044A611A914202D3034944 -:104530008C4209D3102016E60000FC1F004000202A -:104540004800002001300000A178C906490F042965 -:104550000CD8E178072909D3102907D822798A4293 -:1045600004D3102A02D822881E2A01D00720FAE597 -:104570008030026BF7239172026B2179D172026B4A -:10458000117A1940A3789B06DB0FDB0019431172E7 -:10459000026B21889181026BA378517ADB0789082D -:1045A0008900DB0F19435172FB231940A378026B7A -:1045B0009B07DB0F9B0019435172006BA278017AB5 -:1045C000D206C908C900520F114301720B20694677 -:1045D0000870852D25D008DC002D1AD0812D1AD029 -:1045E000822D1AD0832D08D119E0862D1BD0882D5D -:1045F0001BD0892D1BD08A2D1BD00B2008710520C4 -:10460000FEF7B6FA684609F08CFC002813D00320A8 -:10461000A9E50020F2E70120F0E70220EEE7032001 -:10462000ECE70520EAE70620E8E70820E6E70920AE -:10463000E4E70A20E2E73068C03001784908490021 -:10464000017000208FE570B5924E0D46316886B03E -:10465000C03109781446090701D4082083E5FEF724 -:10466000D4FA012803D0022801D08B487BE5002D25 -:1046700013D005208003844208D301208004874999 -:10468000201A884202D38648844201D310206AE56A -:10469000012D0BD0022D02D106E0002C01D0072005 -:1046A00061E50020029005E0022000E0012069465B -:1046B00008710294032069460870684609F031FCCD -:1046C000002801D003204EE53068F722C030017881 -:1046D00011400170002046E570B594B014460E46B6 -:1046E000FEF793FA012804D0022802D06A4814B0D9 -:1046F00070BD684D2868C0300078800701D408205C -:10470000F5E7002C01D00720F1E7FFF77CFA00283D -:1047100001D01120EBE7002E1DD02D21684601703D -:104720002C68B420015B684641801022B11C01A8AE -:104730000EF02AF8207FFB210840B17CC907490F01 -:1047400008432077B07CFF214008A076E08A8231C0 -:104750000843E08207E02E21684601702868A030F7 -:10476000818A6846418009A9684607F0E1FB29680B -:10477000FD23C0310A781A400A70B8E710B50C461C -:10478000FEF743FA012803D0022801D0424810BDA9 -:1047900005208003844208D3012080043F49201A69 -:1047A000884202D33E48844201D3102010BD2046E7 -:1047B000FEF73AFA002010BD10B594B00446FEF79B -:1047C00024FA012804D0022802D0334814B010BDC6 -:1047D00030480068A030807F04280ED03820694619 -:1047E00008704C8001200871487109A9684607F0DB -:1047F0009FFB0028EAD00B20E8E70020E6E710B591 -:1048000094B00446FEF701FA012803D0022801D033 -:104810002148DBE71F480068A030807F04280BD0C8 -:104820003820694608704C8000200871487109A939 -:10483000684607F07DFBC9E70020C7E71548006818 -:10484000A030807F052801D30120704700207047E9 -:1048500010480068A030807F704708B513460028D4 -:1048600006D010A00068009048796A468009105C64 -:1048700018700622581C0DF087FF08BD10B50446BD -:10488000FDF7B6F9A22101700ECC08300EC0FDF77D -:10489000CBF910BD48000020013000000000FC1FD3 -:1048A000004000200302FF01FFB581B001980E46D1 -:1048B000C078174610360E37022809D0032840D09A -:1048C00005287DD0F2A1F7480EF0FBF805B0F0BD49 -:1048D000CC890A2060430E30188031230A98002AC0 -:1048E0000380F3D04868008890800020D080108139 -:1048F000097B9481891FCDB21AE0308871683880B5 -:1049000048780A7800021043F880C8788A78000254 -:1049100010433881BA1C091D28460AF014FF002DE7 -:1049200001D0002802D000203871788008360A377C -:104930002046641EA4B20028DFD101990020C8706F -:10494000C4E7CC890A2060430E30188032230A98CD -:10495000002A0380BAD04868002500889080D5805E -:104960001581087B401FC0B20090948142E07168BD -:1049700032880878FA803A79C30752085200DB0F70 -:104980001A43FD231A408307DB0F5B001A43FB2306 -:104990001A404307DB0F9B001A43F7231A40030713 -:1049A000DB0FDB001A43EF231A40C306DB0F1B01AA -:1049B0001A43DF231A408306DB0F5B011A4300E032 -:1049C00020E0BF231A404306DB0F9B011A433A71D4 -:1049D000C00978718A784B781002184338813A46BA -:1049E000C91C00980AF0AFFE002801D0BD703D80C0 -:1049F00008360A372046641EA4B20028B7D10198B1 -:104A0000C57063E7087BCC89801E85B228460830D4 -:104A100060431030188034230A98002A03808FD016 -:104A200048681746008890800020D08010819481CB -:104A30001037E000D581C0190CE03088388000982C -:104A400078602A46716800980DF09EFE009808363E -:104A50000837401900902046641EA4B20028ECD10B -:104A60006BE7FFB50546C07881B00C460A9E03008F -:104A70000EF02CF90BA3071733414F6D8F9D9D9DB1 -:104A8000A300207B1746082806D0032804D08548B9 -:104A90007FA153300EF015F804990E2008803020C5 -:104AA0000CE0207B1746042804D07E4878A17030A3 -:104AB0000EF007F804990E20088031203080002F76 -:104AC00044D060680088B880607AFF300130F88098 -:104AD000E08938810020B88137E0207B1746042820 -:104AE00004D070486AA18C300DF0EBFF04990E20C1 -:104AF00008803220E2E7207B1746022804D069486C -:104B000063A1A8300DF0DDFF04990E20088033204A -:104B1000D4E7207B1746042804D062485CA1C33048 -:104B20000DF0CFFF04981021018034203080002F39 -:104B30000CD060680088B880607AFF300130F8805F -:104B4000E08938810020B881F881E870BEE6207BDA -:104B50001746052806D0062804D052484CA1E0305C -:104B60000DF0AFFF04981221018035203080002F16 -:104B7000ECD060680088B880607AFF300130F8803F -:104B8000E0893881E089B88100203882A988F981DC -:104B9000DBE7207B1746072804D042483CA1F730CA -:104BA0000DF08FFF04990E200880362086E70096CE -:104BB0002846049B00F02BFD88E635A13A480DF00D -:104BC00080FF83E670B5054600780C460826030092 -:104BD0000EF07CF8124C3434241C380A0A0A0A0AF3 -:104BE0000A0A0A0A0A0A0A4C6878002804D02E48E1 -:104BF00027A12C300DF065FF002C03D12A4824A1F9 -:104C00002D3008E060783043607020E0002CF9D14E -:104C100025481FA135300DF054FFF3E7002904D0DB -:104C200021481BA13D300DF04CFFFCF7E1FF04468D -:104C3000407830436070FCF7F7FF08E01A4814A191 -:104C4000473002E0184812A14C300DF03AFF002C1A -:104C50000AD06078000707D593202070204658229C -:104C600029460830FBF7B0FA002070BD0E4808A1B5 -:104C70005030EAE710B500200C4C0D490346C20045 -:104C80008C525218401C0006D370000EF7D010BD95 -:104C90007372635C67617474635F636F72652E63C4 -:104CA000000000005A020000B2030000FFFF0000F5 -:104CB0004C000020FD4908800120887000207047CA -:104CC000FA4900208870704710B50021F748C943A1 -:104CD00001800021C17007F065F9D8E7F7B584B00D -:104CE0000546002768460781878068680C4600886B -:104CF00000F0EAFB0646287A032805D0002E03D1EF -:104D0000EB49EC480DF0DDFE287A2146C01E123139 -:104D1000009103000DF0DAFF0FF1F0EF3D09AA4614 -:104D20005C6D34B3CCF28B8BEF00F078012803D0AC -:104D3000DF49AD200DF0C5FEA8896946C0000E30E0 -:104D4000888030200881002C22D068680188A180EA -:104D5000E7802781A989A18100200DE0C100B279F7 -:104D600009190A74B288CA8182005219D3894B8208 -:104D7000128A401C8A8280B2A1898142EED8D6E094 -:104D800002A8009001AB22462946304600F0CAFB3B -:104D9000F0E002A8009001AB22462946304600F020 -:104DA00003FCE7E0F07806281AD0FF20C049223043 -:104DB00014E068680188A180E7802781A989A18122 -:104DC000B188E181E9892182EA89296900982BE08B -:104DD000F078062804D0FF20B5493C300DF071FE74 -:104DE000E88969461230888035200881002CE0D19E -:104DF000C0E0F078072804D0FF20AD4956300DF010 -:104E000060FEA88969460E30888036200881002C13 -:104E1000BED068680188A180E7802781A989A18127 -:104E20002046AA890E3029690DF0AEFC7FE0E889A2 -:104E30006946123080B2382288800A81002C78D0EE -:104E400068680188A180E7802781A989A181287AE3 -:104E5000102809D00221A173E9892182EA892969F0 -:104E600000980DF091FC85E00121F4E702A8009084 -:104E700001AB224629463046FFF716FD7AE0F0786E -:104E8000082803D08A498C480DF01BFE142069467F -:104E9000888037200881002C6CD068680188A18048 -:104EA000E7802781A989A18167820120A0733EE064 -:104EB000F078092804D080487D4917300DF001FEB4 -:104EC000288A69461430888037200881002C51D008 -:104ED00068680188A180E78004212781A173A989DE -:104EE000A181E9892182298A618220462A8A143097 -:104EF000696999E702E038E01CE024E0F0780A28CC -:104F000004D06D486A4932300DF0DBFD142069464B -:104F1000888037200881002C2CD068680188A18007 -:104F2000E78027810521A173A78127826782F77017 -:104F300020E017E002A8009001AB22462946304647 -:104F4000FFF78FFD16E00D206946392288800A811F -:104F5000002C07D00120E08054480188A1802781DF -:104F6000277307E00699088010E0524850493C300A -:104F70000DF0A7FD6846069980880880002C05D0B2 -:104F8000684600892080684680886080002007B0DD -:104F9000F0BDF7B594B015460F46149800F09FFA8F -:104FA00004000AD0032000F087FB022802D2E07838 -:104FB000002804D0112017B0F0BD4048FBE71720AF -:104FC000694601260883002D0FD003216846017130 -:104FD0001021018210A80246059004A928460AF073 -:104FE000D8FB00280DD00720E5E7082168460171AD -:104FF00000210781C943418105218673C90281814E -:105000000CE0A878A0712888A080684605218673E6 -:10501000C902818100210781C943418109AA023265 -:1050200006A901A806F0F7FF002802D000F06AFAEE -:10503000C1E707A800906846038B04220321149857 -:1050400000F050FB0028B6D1E670B4E770B592B01E -:105050000D0006460ED000F042FA04000CD00320EA -:1050600000F02AFB022802D2E078002806D01120A6 -:1050700012B070BD1020FBE71048F9E71721684611 -:10508000818004210172298881816988C18101217F -:1050900081740B4901820AAA023201A902A806F012 -:1050A000BAFF00280ED000F02DFAE1E74C000020F6 -:1050B000904C00003B04000063020000013000003F -:1050C0000228000008A80090684683880422032173 -:1050D000304600F007FB0028CAD10221E170C7E783 -:1050E00070B592B00D0006460DD000F0F8F904003E -:1050F0000BD0032000F0E0FA022802D2E07800286A -:1051000005D01120B4E71020B2E7FA48B0E7172124 -:105110006846818004210172298881816988C18162 -:1051200001218174F44901820AAA023201A902A86C -:1051300006F071FF002802D000F0E4F998E708A813 -:1051400000906846838804220321304600F0CAFAA2 -:1051500000288DD10321E1708AE770B592B00D006F -:1051600006460DD000F0BBF904000BD0032000F080 -:10517000A3FA022802D2E078002805D0112077E7B0 -:10518000102075E7DB4873E7022168460172298821 -:1051900081816988C181172181800AAA023201A90F -:1051A00002A806F038FF002802D000F0ABF95FE754 -:1051B00008A800906846838804220321304600F046 -:1051C00091FA0028DBD10421E17051E7F0B591B0EC -:1051D00015000E4607460ED000F081F904000CD0F1 -:1051E000032000F069FA022802D2E078002806D0F5 -:1051F000112011B0F0BD1020FBE7BE48F9E71721E0 -:105200006846818004210172298881816988C18171 -:10521000B1788174318801820AAA023201A902A8F8 -:1052200006F0F9FE002802D000F06CF9E1E708A8CA -:1052300000906846838804220321384600F052FA21 -:105240000028D6D10521E170D3E7F7B592B0154615 -:105250000E46129800F043F904000AD0032000F033 -:105260002BFA022802D2E078002804D0112015B0D1 -:10527000F0BDA048FBE70627002D12D06846077254 -:105280008681C581A5801720694688800AAA0232D6 -:1052900001A902A806F0BFFE002807D000F032F9ED -:1052A000E5E70521684601728681EBE708A80090D2 -:1052B0006846838804220321129800F013FA00281C -:1052C000D5D1E770D3E7F7B592B016460D000ED0F2 -:1052D000129800F004F904000BD0032000F0ECF960 -:1052E000022802D2E078002805D01120BFE7102064 -:1052F000BDE78048BBE7072768460772868117210C -:10530000049581800AAA023201A902A806F083FE50 -:10531000002802D000F0F6F8A9E708A80090684637 -:10532000838804220321129800F0DCF900289ED122 -:10533000E7709CE7F3B5172091B00C46002915D013 -:1053400021780B000DF0C2FC062B05051A041C2B5E -:105350001520C01EE28880B2002A02D0A368002B6C -:1053600004D0824204D90C2013B0F0BD1020FBE71A -:10537000042905D0A088002811D101E00620F3E718 -:10538000119800F0ACF805000BD02078092701280F -:105390001AD0022807D0042824D0052835D00720A9 -:1053A000E2E75448E0E76846077161880181E188D7 -:1053B0004181A06808260390304600F07DF9072857 -:1053C00029D34C48801CCFE70C21684601716188C5 -:1053D0000181E1884181A06803900EE0E87800280F -:1053E00011D118E00D216846017161880181A18801 -:1053F0004181E1888181A06804900326304600F055 -:105400005BF90228EAD31120AEE70E21684601714C -:10541000217B0172F1E717216846018309AA023254 -:1054200006A901A806F0F7FD002802D000F06AF8EE -:105430009AE707A800906846038B0422314611982A -:1054400000F050F900288FD12178012907D00229D6 -:105450008AD0042905D0052905D0032084E7082136 -:1054600002E0EF7080E70A21E9707DE730B591B086 -:105470000C46054600F033F8002808D0032000F061 -:105480001BF9022805D31B48801C11B030BD1948F8 -:10549000FBE70F216846017104811721018309AAE6 -:1054A000023206A901A806F0B6FD002802D000F0DD -:1054B00029F8EAE707A800906846038B0422032135 -:1054C000284600F00FF9E0E70C49884205D00C4966 -:1054D0000988814201D10A4870470020704710B501 -:1054E000FFF7F2FF002802D08178C90700D1002021 -:1054F00010BD00000130000003280000FFFF000085 -:105500004C000020002806D0012805D0052805D031 -:10551000062805D0032070471120704708207047E7 -:105520005C487047FFB583B003980C9EC0781D4659 -:1055300014460F46012803D05749D2200DF0C1FA76 -:10554000F889C0000E30288030203080387B001F62 -:10555000C0B20190002C26D078680088A08000207E -:10556000E0802081F889A081002616E0F00005196E -:10557000C01900902A4641690E3201980AF0E3F8FA -:10558000002802D000202874E8810098761C008A48 -:1055900068820098B6B2408AA882A089B042E5D855 -:1055A00003990020C870F2E4F8B50646C0781F469B -:1055B00014460D46042804D0FF20374903300DF06F -:1055C00080FAA889062148430E3038803321069896 -:1055D000002C01801AD068680088A0800020E0803C -:1055E0002081A989A18103460CE019460622514376 -:1055F0004A190919D789CF81977C8F74128A5B1C4D -:105600000A829BB2A1899942EFD8F070F8BD70B5BB -:1056100014460546142204981A8037220280002C72 -:1056200018D0486800260088A080487AFF300130F2 -:10563000E080C8892081C889A0816682E87808282E -:1056400009D0092811D00A2819D0134913480DF0A0 -:1056500038FAEE7070BD087B0C2804D00F480E4954 -:105660000C380DF02EFA012012E0087B0D2804D032 -:105670000A48094908380DF024FA042008E0087B9C -:105680000E2804D005480449001F0DF01AFA052021 -:10569000A073DEE702300000904C000081030000A0 -:1056A00001460020FA4A02E0401C082803D24300C9 -:1056B000D35A8B42F8D1704730B50446F44A0020E3 -:1056C000163A117953790AE05518AD79A54201D1FE -:1056D000401CC0B2491CC9B2102900D100218B4224 -:1056E000F2D130BDFFB5EA4881B0163841790A9C45 -:1056F000491CCDB21E46102D00D10025E4481638B5 -:105700000079A84202D1042005B0F0BD0820FFF7BF -:10571000D3FF0746072804D9FF20DEA1A5300DF0EE -:10572000D0F90298082801D1072F17D001982080BE -:10573000301D6080002060712071E6800398208118 -:10574000204606F019FC00280AD0D14802991638E4 -:105750004379821D995445710020D5E7D248D3E79B -:10576000FF20CCA1B7300DF0ACF90320CCE7F0B5A9 -:105770008DB0044600256846057116468C46062005 -:10578000FFF79AFF00281CD121780127C8070028BD -:1057900001D0132917D9684687766178C17602212E -:1057A0008183C58304A8009070680C2300880522BB -:1057B0000621FFF797FF002803D0B6A185200DF042 -:1057C00080F90DB0F0BDB24816380278002AF8D042 -:1057D000427863789A42F4D1012918D0132919D15B -:1057E0006146062916D10570002101200AF0D7FC78 -:1057F00068460771706801886846C1800021C94306 -:105800000181607922790102114368461AE06146FC -:10581000062908D0684600790028D2D0314601A870 -:10582000FEF727F8CDE70570002101200AF0B7FC4C -:105830006846077160792279010211436846018147 -:105840000021C9434181E9E7914810B5002116388C -:1058500001704A1E428041700171417101200AF0BD -:105860009EFC10BD10B5FFF7EFFF002088490246EF -:105870004300401CCA520828FAD310BD8449163987 -:10588000488000207047DFE770470EB50121684669 -:10589000017086498180C1800021FDF7EAFF0EBDBD -:1058A000F7B505460078002700090C463E4601285A -:1058B00004D0FF2077A168300DF003F9287A022880 -:1058C0000CD0FF2073A17E300DF0FBF80298002C65 -:1058D000068001D0278066800020FEBDEA897027FF -:1058E00010460A3086B2002C0BD068680088A08071 -:1058F000A8892081E28020460A3029690CF044FF03 -:10590000E4E702980680E7E7F0B543680246D979F4 -:105910009C79090221435C7A1E7A25025C88981DD5 -:105920003543241F87B0A1421DD11B79022B1AD108 -:10593000042D1AD0052D2AD0062D1AD0402D12D3B1 -:10594000061D0F4614462846FFF7AAFE08280AD06F -:105950001120207002202072A581E78126616078E5 -:1059600008210843607007B0F0BD001D00F0E1F8A9 -:10597000F9E7041D0D46FEF761FF0028F3D006216C -:10598000684601700194057208F0CBFAEBE7001D40 -:10599000FFF7EDFEE7E710B53D4C8AB0163C2278E4 -:1059A000012A26D012236A46937363789B1CD37313 -:1059B000082313820B8853824B8893828B88D3826F -:1059C000C988118301A900910C2305220721FFF743 -:1059D00089FE00280BD10022F023114601200AF095 -:1059E0003CFB012020706078801C607000200AB0B1 -:1059F00010BD1120FBE7F0B5254C0027163C87B001 -:105A00000646A51D1FE060792179884204D1112046 -:105A100020A140010DF055F82079405D042804D004 -:105A2000082808D17F1CFFB205E0072069460870EE -:105A3000684608F076FA2079401CC0B22071102820 -:105A400001D1002020713046761EF6B20028DAD14E -:105A5000384688E710B50446402801D2072010BD1B -:105A6000FFF71EFE082802D03120000210BD0021E1 -:105A7000074802E0491C082903D24A00825A002A3A -:105A8000F8D1082914D049004452002010BD00006C -:105A90002E1300207372635C6C326361705F636FFE -:105AA00072652E630000000003300000FFFF00005D -:105AB0000420EBE700B5402801D2072000BDFFF726 -:105AC000EFFD082805D000213B4A4000115208464E -:105AD00000BD052000BDF0B58BB016460C00074692 -:105AE00007D0002E05D06188402904D207200BB0D2 -:105AF000F0BD1020FBE72088002801D0172801D92D -:105B00000C20F4E70846FFF7CBFD08280FD02588C6 -:105B100003A82A46314602300CF036FE01A8009058 -:105B200062882B4608213846FFF7DCFDDFE70520B9 -:105B3000DDE7F0B50E46074601468BB01446012559 -:105B4000304606F0E5FB08281DD10020694608858F -:105B50000120FFF7B1FD002802D117206946088512 -:105B600003AB02330AAA39463046009406F0E3FF3D -:105B700000280AD0022819D0032804D0FF200F499A -:105B800002300CF09EFF2846B1E76846038D002BDB -:105B9000F9D001A800906068042200880121FFF775 -:105BA000A1FD0028EFD00549EC20EAE76078002548 -:105BB000102108436070E6E72E130020945A00007D -:105BC000002803D08178012939D101E010207047E5 -:105BD0000188FA4A881A914233D01BDCF84A881AA5 -:105BE00091422ED00BDC00292BD00320C002081AD2 -:105BF00027D0012825D001210903401A07E00128F8 -:105C00001FD002281DD0FF281BD0FF3801380028E4 -:105C100015D116E0FF220132811A904211D008DC22 -:105C200001280ED002280CD0FE280AD0FF2806D169 -:105C300007E0012905D0022903D0032901D0002063 -:105C400070470F20704700B50A2821D008DC0300F8 -:105C50000DF03CF80A1C2024241A24282224261A99 -:105C6000102819D008DC0B2816D00C2814D00D28C9 -:105C70001AD00F2808D111E011280FD0822807D0A0 -:105C800084280DD085280DD0032000BD002000BD44 -:105C9000052000BDCB4800BD072000BD0F2000BD82 -:105CA000042000BD062000BD0C2000BD70B50029F9 -:105CB0000BD0CB1FFA3B81241E46CDB2112B1BD239 -:105CC000012805D0022806D009E0002010701DE050 -:105CD000FF20043001E0FF200330814218D0330060 -:105CE0000CF0F4FF111613131613161613161616CE -:105CF00013131313161316000846FF3881381F2894 -:105D000003D9FF39FE39022902D81570002070BD71 -:105D10001470072070BD00B503000CF0D7FF060417 -:105D200006040C080A0C002000BD112000BD07204D -:105D300000BD082000BD032000BD00780207120F3F -:105D400004D0012A05D0022A0AD10EE0000907D1A9 -:105D500008E00009012805D0022803D0032801D05B -:105D60000720704708700020704706207047002801 -:105D700007D0012807D0022807D0032807D0072022 -:105D80007047002004E0112002E0212000E03120D3 -:105D900008700020704738B50C4605004FD06946A2 -:105DA000FFF7CBFF002822D12088032189028843F6 -:105DB000694609788907090D084320806946681CEF -:105DC000FFF7BBFF002812D1218803200003814385 -:105DD000684600788007800C01432180A87840073E -:105DE000820F2020012A03D0022A03D0072038BDC9 -:105DF000814300E00143218088B20105890F08D06A -:105E0000012189038843A9780907C90F8903084339 -:105E1000208080B28104890F0AD0A9784004C90685 -:105E2000C90F400CC903084320808004800F02D1B1 -:105E30002088400403D5208840210843208000208A -:105E400038BD70B504460020088015466068FFF72D -:105E5000A2FF002815D12189A089814210D861684C -:105E6000594E8978C90707D0711E884208D8314633 -:105E70000CF004FD298009E0FF21FF31884201D99F -:105E80000C2070BDFF30FF300330288060688078C0 -:105E9000C007A08903D031460CF0F0FC03E0FF30CE -:105EA000FF30033081B22980206881784748017330 -:105EB00020684649008820394885002070BD10B50B -:105EC000137804785B08E4075B00E40F2343137046 -:105ED000FD2423400478A407E40F640023431370D7 -:105EE000FB24234004786407E40FA40023431370C9 -:105EF000F724234004782407E40FE40023431370BD -:105F0000EF2423400478E406E40F240123431370B4 -:105F1000DF2423400478A406E40F640123431370B4 -:105F20000078BF244006C00F234080010343137054 -:105F3000002906D00878C10701D1800701D50120CA -:105F400000E00020C0015906490E0843107010BD42 -:105F500030B50A8803239B0204889A4323059D0FCA -:105F600002D1A3049C0F01D09B0F00E001239B02F0 -:105F70001A4303230A801B039A4303889804840F5F -:105F800002D11805830F01D0800F00E0012000032B -:105F900002430A8030BDF3B591B00D0018D01198BE -:105FA000002818D0122128460CF04BFC01A9012032 -:105FB00007F0A8FD00242646374677E002290000B6 -:105FC00001280000023000000102000060130020E0 -:105FD000102013B0F0BD0720FBE76846007C0128C5 -:105FE0000BD16846C1890520C002081A0AD00128D1 -:105FF0000AD002280CD003280CD0042C0ED0052C7B -:106000000FD10DE0012400E002246846868908E0F3 -:10601000032406E068460424878902E0052400E0A2 -:10602000062468468189119881423FD12C74002E44 -:106030003AD00BA800900CAB10220021304607F09C -:10604000F3FD002820D16846808D2A46C0B20CA9F5 -:1060500009F079FB002817D1AE81002F24D00BA8BE -:10606000009006AB13220021384607F0DDFD002822 -:106070000AD16846808D06A9C01E0331C0B22A1D10 -:1060800009F061FB002801D00320A2E76846817E69 -:10609000427E08021043E881062C05D16846007C48 -:1060A000A8726846C0892881002092E701A807F0FD -:1060B00031FD002891D0FFF7C6FD8AE7002804D003 -:1060C000012903D0022904D003207047F949C98D62 -:1060D00002E0F8494031C988814201D1002070476F -:1060E0000720704730B5F34C0025608B91B0C00B92 -:1060F0002ED1216900292BD0207B800728D40122B2 -:1061000068460271027200224272228B8281A28A48 -:10611000828204911721018309AA0023023206A971 -:1061200001A807F0BBF8002803D0FFF7F4FD11B079 -:1061300030BD207B02210843207307A800906946E8 -:106140000B8B208804220121FFF7CCFA05460BE0D7 -:10615000FBF74EFD842101700921017218341ECC19 -:106160000C301EC0FBF760FD2846E0E710B5D14CAF -:10617000034621690020002909D02146012210315F -:106180001846FBF707FF00202061A0820120217B39 -:10619000F9221140217310BD70B50C4605461C2133 -:1061A00020460CF04EFB00202080002D08D0012D51 -:1061B00004D0C1A1C5480CF084FC70BD062000E0ED -:1061C0000520A07070BD10B507F090FA10BDFEB5A7 -:1061D0000546007800260C46374603000CF076FD95 -:1061E0000C91070C1D962F462F46486C89916868C4 -:1061F0000A38FBF72FFE89E0002904D0B348AEA18E -:106200001B300CF05EFCFBF7F3FC044640780821E1 -:1062100008436070FBF708FD78E0002C04D1BB2038 -:10622000A5A180000CF04DFC284601F05BFA002887 -:106230006CD06078082108436070022666E0E88828 -:10624000694608800190002C04D1A0489AA12F3003 -:106250000CF037FC287807281CD10198C00B19D006 -:10626000944800218171A988818012E003264DE0C5 -:10627000002C04D1C52090A180000CF022FC8D4898 -:10628000017B89070BD50069002802D0E888C00B84 -:106290003CD00226607808210843607036E0291D52 -:1062A0008EC918308EC02838018802260122204667 -:1062B000FBF752FE0127EDE7002C04D183487EA1B5 -:1062C00064300CF0FEFB7B480821007B4007C00FC8 -:1062D0004600607808436070002E17D128790128A5 -:1062E00002D16879002811D02046FFF73FFF07460A -:1062F0000CE0002CCED10D206FA180010CF0E1FB51 -:10630000C8E772486CA17A300CF0DBFB002C0CD093 -:106310006078000709D5002F07D18420207020461F -:10632000582229460830F9F74FFF3046FEBDF7B531 -:10633000027A88B00C46054620460C30049006923E -:1063400016300027921E02903E460A31594813002B -:106350000CF0BCFC0ADF06E62AE62AE66A98C6E6E6 -:106360004288002A02D052270726DDE051271E2648 -:10637000002C7DD06A684F481288A2800122A27149 -:106380008079C0004019C089FFF705FE002877D149 -:1063900048488179C9004919C98921818079C0009B -:1063A0004019408AA083BFE0688A009006980728B9 -:1063B00017D1E889C00B14D000985127223086B23B -:1063C000002C55D0A8890499FFF7E5FD002857D186 -:1063D00068680088A0800220A071A889208101201F -:1063E00041E000985027203086B2002C40D0A88988 -:1063F000FFF7D1FD002843D168680088A080A889F4 -:10640000E080287A07280AD002202072288AA083F8 -:106410000098E083204669692030009A01E001205D -:10642000F3E70CF0B1F97FE0698A00910169002976 -:1064300002D0E989C90B22D00099512722318EB2AE -:1064400000218171A9898180002C5FD00088A08003 -:10645000A8890499FFF79FFD002811D10220A0719F -:10646000A88920810420A072288AE083009801E096 -:106470004CE005E020846969009A0298D1E7032086 -:106480000BB0F0BD007B400702D55127222601E06A -:1064900050272026002C39D06868502F0088A08013 -:1064A00016D00220A0712146287B0831FFF774FE28 -:1064B0003AE00000401300207372635C67617474FB -:1064C000735F636F72652E6300000000CB020000F3 -:1064D000287BA11DFFF760FE0020FFF747FE23E0A9 -:1064E000A9890089884207D154270626002C0DD09F -:1064F00068680088A08017E053270826002C05D084 -:1065000068680088A080A889E0800DE00A9806806D -:1065100010E055270726002CF8D00020A07103E0DA -:10652000FD49FE480CF0CDFA0A98002C068001D0F7 -:10653000278066800020A3E7F948002101722038F7 -:10654000418081718180027BF923520852001A40F8 -:10655000027301618182704770B5F14C86B0203CB6 -:10656000208000206080A071A0806946012007F093 -:10657000C9FA102608E00199088802461207D20FCE -:10658000B043120110430880684607F0C3FA0500C3 -:10659000F1D02069002804D0E048DF4931300CF008 -:1065A00090FA207B800704D5DC48DB4932300CF0C0 -:1065B00088FA822D04D02846FFF745FB06B070BD4F -:1065C0000020FBE7D64810B52038017B012211439B -:1065D0000173002141808171818006F05BFA10BD5A -:1065E00010B5CF4C0020C043203C20800020FFF796 -:1065F000BDFD207B40084000207310BD70B5C84D24 -:106600000446203D287B800704D5C448C249493050 -:106610000CF057FA287BC00706D12888C149884268 -:1066200002D02869002801D0082070BD002C08D0B5 -:10663000A088162801D2092070BD20682861A08892 -:10664000A882FFF74FFD70BD10B50C4607F04BFA5E -:10665000002803D0B049B4480CF033FA2046FFF7C5 -:10666000F2FA10BDF0B5AE4D0446203591B00020D1 -:10667000089068820E462882E8812946E8804039E1 -:106680000886694608830885088688838882A44826 -:106690000E90007A1746012808D0022806D0032859 -:1066A00004D0042802D0082011B0F0BD05239B03BC -:1066B0009C421CD3012080049C49221A8A4216D392 -:1066C0009B4A944213D29E4211D3331A8B420ED36B -:1066D00096420CD26268002A16D005239B039A4288 -:1066E00005D3101A884202D39148824201D3102068 -:1066F000DAE760892189884203D801225202914257 -:1067000001D90C20D0E7089010AA0CA93046FFF759 -:1067100098FB0028C8D106A92069FFF73CFB002898 -:10672000C2D1206900280CD0607880070028684614 -:10673000008B03DA8004800F56D002E08004800FC3 -:1067400052D105A96069FFF726FB0028ACD160692A -:10675000002808D06846808A0105890F012943D1A5 -:106760008004800F40D007A9A069FFF714FB002820 -:106770009AD16846008B800636D46846808A8006A7 -:1067800032D46846808B81062ED4A169002906D0B8 -:106790000105890F012927D18004800F24D0E068EA -:1067A000002804D0007800281ED01C281CD25C4A87 -:1067B000611C123220460992FFF781FB0321002061 -:1067C0008902884301218902411868460D9101859B -:1067D0000121817457490182514A0FA9153230684D -:1067E00008F0D7FF002801D007205DE708A8007F48 -:1067F0004B49C01CC2B26A7100201031FF320090B8 -:106800000190FF3203460291039003320AA904A8C3 -:1068100007F004F9002827D141482038008E0B905A -:106820003F4833893830326901461239029100936A -:106830000192039010A90A8873890CA9306807F0A7 -:10684000EDF801007AD13648E98811308170090AE3 -:10685000C1700026009631386A79008E3146099B56 -:1068600007F05BF8002802D0FFF7EDF91CE70E985F -:10687000807CC00928D068460D990185012181746A -:10688000292109020182AE81287B61784008C9076D -:106890004000C90F08432873FD2108406178204A51 -:1068A0008907C90F4900084328732A32901C022126 -:1068B000029200910190002303961F4A0AA904A89E -:1068C00007F0ACF80100BDD1606800283FD0206916 -:1068D00000280DD106A90CA8FFF73AFB60788007C5 -:1068E00006D46946088B0321090388436946088357 -:1068F0000120694688740F48FE3008820E492089BD -:10690000891E0BF0BBFF62680548089B2E3003967A -:1069100000930192029012E0B8640000220400008B -:1069200060130020FFFF0000260600000000FC1F8F -:1069300000400020032800000302000086E00A4611 -:10694000002306A904A807F069F801007ED1207889 -:10695000C10601D480062BD56846068460690028EC -:106960000DD105A90CA8FFF7F3FA6846818A032028 -:1069700080028143012080020918684681826946AD -:10698000888A482108436946888201208874F8482B -:106990000882F84908AA022001920291009000237F -:1069A0000396F54A05A904A807F038F8010062D15A -:1069B0002078C0072DD068460684A06900280DD134 -:1069C00007A90CA8FFF7C4FA6846808B0321890247 -:1069D0008843012189024118684681836846818B7A -:1069E000402001436846818301218174E04908AA5F -:1069F000491C0182DF480221801C01920091029013 -:106A000000230396DC4A07A904A807F007F8010051 -:106A100031D1E068002832D068460D990185012106 -:106A20008174D349891C0182E16808A80A78027040 -:106A300049784170E068418868464184E06801799E -:106A400008A80171E068C18808A800E013E041715E -:106A5000090A8171C7480722001D08A90092019107 -:106A60000290412200230396D2000AA904A806F04E -:106A7000D5FF010003D00B98FFF7E6FD14E60321D4 -:106A80000E98002F017207D0E8883880E889788056 -:106A9000288AB880688AF880002005E6F0B50124CD -:106AA0008BB016460F46012802D002281BD104E005 -:106AB000684605218474C90202E06846AF498474BF -:106AC0000182002F11D00321002089028843012177 -:106AD000890241186846018506AA05A9384608F0CA -:106AE00058FE002803D00720CAE41020C8E4A14DB6 -:106AF000B878303D287338882F46203F78856A461D -:106B0000127D0020294606AB00920E310193FF3220 -:106B1000029103900346FF3203320AA904A806F04B -:106B20007DFF002802D0FFF78EF8A9E4002E01D0E7 -:106B3000F88D30802C720020A2E470B592B0064629 -:106B4000012508A885708E496846018406F0DDFE9F -:106B5000002208A90120FFF7A1FF044606F0D9FE94 -:106B6000002C02D0204612B070BD0024002E3ED072 -:106B70001C2168460BF067FE68460178202001431F -:106B80006846017008A885707E49684601841194A2 -:106B90000794817FF9200140891C68468177002095 -:106BA0000146684601770020014668464177042186 -:106BB0008185C485018607A80A9011A80D9008A8B0 -:106BC000099006F0A2FE0EAA09A96846FFF74AFD41 -:106BD000054606F09EFE002D01D02846C3E7654815 -:106BE0006946098F503801816946898F4181614822 -:106BF000303804720020B6E7F7B55E4E9CB0002135 -:106C0000303E0091317A012904D0022902D00820B7 -:106C10001FB0F0BD57495039CA8D824201D00620BD -:106C2000F6E71D98824201D10720F1E75348012180 -:106C300010AA9176401C1083002003239B02024679 -:106C40009A438B02D31810AA93846A4691844E49C2 -:106C5000D18410AA9077908317AA0A926A469185E8 -:106C60000C9009A806F075FF00242546274604A9C4 -:106C700009A806F071FF002810D0822877D1002CD7 -:106C80006AD0002D68D010A80481458100240475C5 -:106C900018A8807812AD012860D077E06846807D22 -:106CA000002F1FD0012853D16846818A3348401CE9 -:106CB000814219D114A800906846408A0EAB102278 -:106CC000002106F0B1FF002874D110A8008A042822 -:106CD00001D0062849D16846018F1D98814237D1DD -:106CE0000F2095E7012833D16846808A0521C90223 -:106CF000884202D0491C88422AD11E485038C18D92 -:106D00006846408A814201D1012700E00027002C1B -:106D100001D0002D0DD01D99884219D114A90091E0 -:106D200004460EAB1022002106F07EFF002841D160 -:106D300001E0009D0CE010A8008A022801D0102874 -:106D400013D1C0B218AA0EA908F0FDFC00280CD17E -:106D50006846408A00908AE7052059E72A1D15A950 -:106D600018A808F016FD002810D0032050E721E0F5 -:106D700002290000901300200302000001280000F7 -:106D800001180000052A0000FFFF000010A8007D88 -:106D90000023001DC2B210A802751E98029019A906 -:106DA00001950394009216A806F038FE002801D140 -:106DB00002213172FEF747FF2AE73EB50B46401E1F -:106DC00084B201AA00211846FFF779F806F09DFD6C -:106DD00002A8009001AB01220021204606F09DFD93 -:106DE000044606F096FD68460089012803D0FE4956 -:106DF000FE480BF066FE2046FEF725FF3EBDF0B5CF -:106E0000FB4E0446307A89B00F46032804D004288C -:106E100002D0082009B0F0BD04AA06A92046FFF759 -:106E200010F80500F6D1F24823893830226901466E -:106E30001039029100930192039069460A8A63898E -:106E400006A9206806F0EAFD002802D0FEF7FBFE46 -:106E5000E0E7002F03D0E648203000893880042086 -:106E600030722846D6E738B50C00054608D0002217 -:106E7000694606F033FF002804D0FEF7E4FE38BD73 -:106E8000102038BD69462046FEF785FF0028F8D15E -:106E9000A0786946C207D20F284606F03AFFECE711 -:106EA0003EB50C0008D002AA694606F017FF00287C -:106EB00004D0FEF7C8FE3EBD10203EBD0321204693 -:106EC0000BF0BFFC6846008801A90005800FFEF7A3 -:106ED0004EFF00280BD16846007920706846008874 -:106EE00001A98004800FFEF742FF002801D0032093 -:106EF0003EBD684600796070A278EF200240684687 -:106F00000088C10B09010A43F7210A404104C90F57 -:106F1000C9000A43A270F9210A40800601D5012068 -:106F200000E00220400069460243097A5008400010 -:106F3000C907C90F0843A07000203EBDFEB51D461D -:106F400014000E46074615D0002D13D006F0DDFCC8 -:106F500001A8009022882B463146384606F0DDFC19 -:106F6000054668468088208006F0D3FC2846FEF758 -:106F70006AFEFEBD1020FEBDF0B50C46002199B0A2 -:106F80000746684681850D46002C11D0E068002830 -:106F900006D0A06800280BD002886B469A85018035 -:106FA000A078012806D0022804D0072019B0F0BD2F -:106FB0001020FBE72088002807D0401E80B201A9DE -:106FC00006F0A0FD002842D136E08A48EEE7694687 -:106FD0008A8921888A420BD26846007C00250128D4 -:106FE0002CD16846C0898449884227D1012525E0F3 -:106FF0008A4203D1002D2FD06D1C01E0022D02D05A -:10700000032D1BD31FE06946097C012916D169466F -:10701000794BCA895B1ED11A9A421DD005DC77488C -:10702000101A19D0012809D116E0012914D0FF390E -:10703000013903D1032506E00D26B60201A806F0AA -:1070400069FD0028C3D0822804D0002806D0FEF7AE -:10705000FAFDABE7022DFAD13046A7E7E068002839 -:1070600013D006F052FC0BA800906A46A188208835 -:10707000928DE36806F051FC054606F04AFC002DAF -:1070800019D16846A168808D088002980078C006F2 -:1070900001D55B488AE706F038FC0EA800906846E8 -:1070A00080890CAB0222002106F0BEFD054606F0E9 -:1070B00030FC002D01D02846C9E76846008F022821 -:1070C00001D0032072E7A078012808A8007C03D033 -:1070D00080070ED4082069E7C007FBD00820FEF720 -:1070E000EBFA072802D34348401C5FE7082502203B -:1070F00001E00225032069460876218868468183DD -:107100001721818611AA002302320DA906A806F0D4 -:10711000C5F8002802D0FEF7FEFD47E70FA8009053 -:107120006846838E042229463846FEF7DBFA3DE79F -:1071300070B5064615460C460846FEF741FD002888 -:107140000AD106F0E2FB2A4621463046FFF7A6FCAC -:10715000044606F0DEFB204670BD70B514460D46B1 -:10716000064606F0D2FB224629463046FFF744FD8C -:10717000044606F0CEFB204670BD70B51E46144690 -:107180000D001AD0002C18D06168002915D00121FB -:10719000FEF794FF00280FD12068FEF711FD0028AC -:1071A0000AD106F0B2FB324621462846FFF75AFACA -:1071B000044606F0AEFB204670BD102070BD70B5D1 -:1071C00015460C0023D00221FEF778FF00281DD1C0 -:1071D0002068FEF7F5FC002818D106F096FB29463A -:1071E0002046FFF70CFE0DE0B86400003C060000EE -:1071F0006013002002300000032800000028000077 -:1072000001340000044606F084FB204670BD1020C7 -:1072100070BDF8B51C4615460E46074600F01FFA2D -:10722000002805D123462A4631463846FFF786FE18 -:10723000F8BDFFB583B01E4615000F460FD006F00F -:1072400064FB01A800900023F74A3946039806F032 -:10725000EBFC044606F05DFB002C03D014E010208C -:1072600007B0F0BD002E0CD006F04FFB00200090C0 -:107270002A8833463946039806F0D6FC044606F0C1 -:1072800048FB6846808828802046FEF7DCFCE7E75C -:10729000002906D0E54B0A885B899A4201D8E44868 -:1072A000704769E610B586B004236C46A382DF4BB5 -:1072B0005C898C4201D2914202D9DD4806B010BDF2 -:1072C0006C462182628200210091019119892180FE -:1072D0000221A17005A9029104A903916946FFF753 -:1072E0004BFEEBE7F0B591B00D4681206946087181 -:1072F00005F002FC0646002D08D02878CB4C01286A -:1073000006D0022828D0072011B0F0BD1020FBE7DE -:10731000A98801AAFEF7CAFC0028F5D1B00734D528 -:1073200068460079002820D1A879C0071DD006F052 -:10733000ECFA002000906A892989A088EB6806F0A1 -:10734000ECFA6946087106F0E4FA69460879002803 -:107350000BD0FEF778FCD7E7A98801AAFEF7A6FCB8 -:107360000028D1D1342006420FD001216846017295 -:10737000017301794173F00609D5A188684601823D -:10738000A18A01832069059004E00820BCE7A08859 -:1073900069460882FAF72CFC05461720694688835F -:1073A0000AAA2B46023207A902A805F077FF074672 -:1073B0006878000701D5FAF737FC002F03D038466C -:1073C000FEF7A9FCA0E7F00603D5207B06210843C1 -:1073D0002073B00602D50020FEF7C8FE08A8009072 -:1073E00069468B8B208804220121FEF77BF98BE70D -:1073F000F0B5002695B014460D4600290FD0022C9A -:107400004FD3A71EBAB288480AF02EF929191039AD -:10741000CA7B8B7B11021943884242D1BCB201A9BD -:10742000012006F06FFB7AE0029F3888010776D5CD -:10743000002D41D0A9190691CA788B78361D11020A -:10744000B6B219438919A1422BD869468A8906998F -:107450004B7809781B020B439A4222D1C00623D5F0 -:1074600006F053FA07A800900698AB19C178807807 -:107470000A0206990243487809780002084300216D -:1074800006F04BFA009006F044FA009800283ED12E -:107490000698C178827808026946898B1043884231 -:1074A00002D00B2015B0F0BD0698C1788278080292 -:1074B0001043801986B22EE0C0062CD5002007AA02 -:1074C00001461154401C80B21028FAD306F01DFA70 -:1074D00006A800906846002380891022194606F00D -:1074E000A3FB0090002803D006F013FA00980EE0EA -:1074F0000BA86946009088890A8B07AB002106F02B -:107500000CFA009006F005FA0098002803D0FEF768 -:107510009AFBC7E703E0388810218843388001A828 -:1075200006F0F8FA002800D17EE7404D698800296E -:1075300021D0012268460276027700244477018434 -:10754000172181850EAA234602320BA906A805F051 -:10755000A5FE002802D0FEF7DEFBA3E70CA80090F2 -:1075600069468B8D288804220121FEF7BBF800288C -:1075700098D16C8096E7002094E7F0B5002487B09E -:1075800015460E46002A04D002A9012006F0BAFAD8 -:1075900040E0102064E60398007800073AD506F032 -:1075A000B4F901A8009068460023008A1E4A1946D3 -:1075B00006F03AFB074606F0ACF9002F23D1002E67 -:1075C00023D068468088298820183719001D8142F9 -:1075D00036D36946098A3970090A797069468988FB -:1075E000B970090AF97006F090F901A8694600908F -:1075F000088A8A883B1D002106F016FB074606F024 -:1076000088F9002F01D003202AE6684680882018D8 -:10761000001D84B202A806F07DFA0028BBD08228A3 -:1076200008D0FEF710FB1BE6FFFF00004013002010 -:1076300002300000002E0ED02988A01C814201D209 -:107640000C200DE62246314639480AF00DF8311972 -:107650000870000A4870A41C2C80002000E600B5C9 -:1076600085B06946FEF797FC00280AD16846007C81 -:1076700003000BF02BFB08052F2F2F2F08080531D7 -:10768000032005B000BD68468078012807D1684610 -:1076900000880321C902401A1CD001281AD068466C -:1076A0008079012806D16846808815214902401A50 -:1076B00005280FD96846807A012811D168460189CA -:1076C00029200002081A05D0022803D0032801D07F -:1076D000042805D10F20D4E7164917480BF0F1F91B -:1076E0000020CEE738B5154A0021518003791AE011 -:1076F000CC002418A46800946C462488250707D57C -:10770000E50605D5D90008182038C08B508006E062 -:10771000640406D59171C9000818C08890800120C2 -:1077200038BD491CC9B28B42E2D8002038BD0000E8 -:10773000FFFF0000B8640000330200004013002087 -:10774000F8B50125F84902260E603F27F7493F02A8 -:107750008F60F7490022CA63CD63F649C96A0907F9 -:107760000ED4F4494031CB6AF34A53620B6B9362F7 -:107770004B6BD3628B6B1363C96BD3051943516396 -:10778000EE49EF4CC969002829D001282BD0FF20F1 -:10779000ECA16E300BF095F9EE48A063FF200430A9 -:1077A00060632563EC49032008602061E44996206A -:1077B00040314860DD48E94940304163E649FC39E1 -:1077C0000163E649091FC163E349F0398163D74882 -:1077D0004760E34910204860E2480660F8BDE2488F -:1077E0006061E24804E0E148E0306061DF48801F0A -:1077F0000143A161D0E70120D0494006C86170472C -:1078000010B5CE4C0020A070214660702031487029 -:1078100008746061A072A06209F02AFBA061204692 -:10782000343009F038FF002804D0FF20C5A13A30D9 -:107830000BF047F901204006E0610020FFF780FFD0 -:1078400010BDBE49012008707047BC490020087077 -:10785000704770477047BA4940310028086802D025 -:107860000122104301E0400840000860704770B5F5 -:107870000C46B24D01460622E81C0AF085FF6C72E8 -:1078800070BDAE48203040787047AC4A917050705F -:10789000704770B50D460446082904D9FF20A9A1F8 -:1078A000CB300BF00EF90022B14809E0910063588B -:1078B00009180B6053001B191B8C0B62521CD2B2AF -:1078C000AA42F3D3206BAA494031086070BD0B2354 -:1078D000DB4310B5C21A9A4998421FD008DC1C320B -:1078E00022D00A2A20D0142A1CD0182A08D117E046 -:1078F000083011D004280DD0082809D00C2805D054 -:10790000FF2090A1F7300BF0DCF810BD04200CE054 -:1079100000200AE0FC2008E0F82006E0F42004E063 -:10792000F02002E0EC2000E0D820C86010BD8348C1 -:107930002030007B704710B5814CC17861620AF03D -:1079400084FF0002E06110BD252808D0262808D059 -:10795000272808D041000A2807D8091D06E002217F -:1079600005E01A2103E0502101E0891DC9B2744AE3 -:107970009160734940314861704770494861704770 -:1079800070B56E4DA87200F028FBA87AC0073CD0F5 -:10799000714C2068800703D46AA176480BF091F8F7 -:1079A000A87A010619D5800707D5724865A1801C01 -:1079B0000BF087F8A87A00060FD55C4E2878403681 -:1079C000012811D0002804D0A3205EA180000BF074 -:1079D00078F869487061A8693061A87A800714D581 -:1079E0002068C00708D102E06348001FF2E7A52025 -:1079F00054A180000BF065F8A87A4007206801D5F3 -:107A0000042100E008210843206070BD70B5012406 -:107A10004A4D002807D0012818D002281AD055480E -:107A200048A145380BE000F0D8FA53482978001FE8 -:107A3000012907D0002907D04E4842A158380BF041 -:107A400040F870BD046070BD446070BD8120FFF7D8 -:107A500097FF70BD00F0C1FA6869002804D145485D -:107A600038A150380BF02DF86969A86A40184349CD -:107A7000C8602E484249403001623F490C314162A2 -:107A80002A49001548603F4884602C48203004741F -:107A900070BDF8B50C2069460870314C6068C006AE -:107AA000C50F1026A66034480021FC300161324B1E -:107AB00001221B1F1A610BE000BF00BF00BF00BF07 -:107AC00000BF00BF00BF00BF6B461A78521E1A707D -:107AD0006A461278002A02D00269002AECD00161BD -:107AE00068460078002804D1224816A131380AF0EF -:107AF000E8FF002D00D06660F8BD10490020C86185 -:107B0000704710B50AF0A1FE00020D49000AC863D3 -:107B100010BD054902200860704703490220086033 -:107B2000104908607047000080E100E000F5014066 -:107B3000C01F004080000010001700409C13002070 -:107B4000001500407372635C68616C5F7263732E32 -:107B5000630000005B06000000120040448000400B -:107B60000013004080E200E006010200250003004F -:107B7000001600407B0200000410004040850040D9 -:107B80004C81004000050040FB4902200860C9E725 -:107B9000FA490870C6E710B5F94809F084FD0028D5 -:107BA00004D02B20F74900010AF08BFF10BD10B55F -:107BB000F34809F090FD10BDF3494860B2E7F04981 -:107BC00010B53439F14B0022C8605A60896A081830 -:107BD000EF49486000F008FA10BDE94810B5C2212D -:107BE0003438C160E94A00215160806AE849C230F6 -:107BF000486000F0F9F910BDE64900208861C861CD -:107C0000DF493439C860E24948608BE7DC4900202D -:107C10003439886286E73F20DE49000240398860B7 -:107C200080E7D748DA493438806AFE30886079E7DF -:107C3000D7490020886075E7D74801681022914332 -:107C40000160D649012088616CE7D5490020C861F0 -:107C5000D148016810221143016063E700B5FFF7C6 -:107C6000EBFFC74900203439087400BD00B5FFF7A9 -:107C7000ECFFC34901203439087400BDC849CA6902 -:107C8000012A01D000204DE7BF4A403292685206D7 -:107C9000520E524202700020C861012042E7F8B53E -:107CA000BF4C2069012806D00021B548343800783F -:107CB000012802D004E04021F7E7E268012A04D05D -:107CC00000220A43012802D004E02022F9E761687B -:107CD000012905D000211143B24A002802D007E053 -:107CE0001021F8E71368012B02D1E368012B04D0BF -:107CF00000230B43002802D007E00823F9E71168AE -:107D0000002902D1E168012905D000221A439F4EC3 -:107D1000002802D004E00422F8E77168012904D0A9 -:107D200000211143002802D004E00221F9E7606835 -:107D3000012829D000259C480D4301680906090E39 -:107D400002D06169012900D000218D4F143F3973A1 -:107D500000680006000E02D0A069012800D00020B3 -:107D600078738B488068002803D000F0ABFA0128B4 -:107D700000D00020B8730021E16021616160616181 -:107D8000A16171602846F8BD0125D4E77C48012136 -:107D90001438C173C6E6F8B5794E0127143E307C1D -:107DA0000025002827D07C4C206800902560FFF734 -:107DB00070FE009820607A48C560056145604561A5 -:107DC000856174490015403988607848856030467F -:107DD000203801787148012909D0002909D0694962 -:107DE00073480AF06EFE0AF06BFF3574F8BD076049 -:107DF000F9E74760F7E7FFF752FF04460020F0730A -:107E0000634842685E4D343D6A620068A862297822 -:107E1000002909D1A978002906D05B4B5B681B7843 -:107E20000B406978994309D000213170E10707D0F0 -:107E3000104602F031FC0121A86A08E03770F5E72E -:107E4000A10601D5022102E0A10702D5002102F01E -:107E500030FC4D4F796806220931E81C0AF067FCB6 -:107E6000002807D1687A79680978C909884201D160 -:107E7000012000E000207070204600F0BBF83F4871 -:107E8000C2270078002815D0012828D002283BD02E -:107E900003285AD03B4947480AF013FE287C0028A3 -:107EA00004D02878002865D0FFF7C6FE287800287F -:107EB00061D08BE0A00701D501F001FC200703D5BC -:107EC0000120EF6001F034FC600703D50020EF6073 -:107ED00001F02EFCA006E1D501F09EFBDEE7A00735 -:107EE00001D503F08BFE200703D50120EF6003F0DE -:107EF00005FE600703D50020EF6003F0FFFDA0063C -:107F0000CCD503F087FDC9E7A00703D5BF20044007 -:107F100009F07EFB200705D5BF2004400120EF605B -:107F200009F075FB600705D5BF2004400020EF6015 -:107F300009F06DFBA00603D5BF20044009F066FBE5 -:107F40006006ABD509F065FBA8E7A00701D509F0ED -:107F500063FB200703D50120EF6009F05CFB60079D -:107F600003D50020EF6009F056FBA00696D509F076 -:107F700051FB93E720E022E000E100E05400002004 -:107F8000D0130020447B00000015004040810040D9 -:107F90004085004040F501400012004000100040C4 -:107FA0000011004000140040401600400005004051 -:107FB0006F0300009F040000FFF747FE76E7E868C4 -:107FC000002803D0A96A091826484160F07B0028E0 -:107FD00000D10BE70AF074FEF8BD234903200860C6 -:107FE0002249002008619DE520482149C1612149BD -:107FF000816197E570B50546FFF7EFFF1E4CA17A4A -:10800000080701D568071CD41C4AC80605D5507B53 -:10801000002802D0907B002813D0880602D5107863 -:1080200000280ED1480602D55078002809D000203B -:108030008A070026002A07DA4A0704D5012222709F -:1080400002E00120F4E72670CA0709D0AA0705D488 -:10805000890705D5002803D0A80601D4FFF719FD2C -:10806000A67270BD408500400012004040F50140FE -:1080700010100040448100409C130020BC130020DD -:108080002E48002101704170704770B506461446B5 -:108090000D46012000F072F828490120284B087095 -:1080A0009E60DC601D6170BDF8B50446012000F0E3 -:1080B00065F822490120087021494C6021490026B9 -:1080C0004E601121204D8902A960204F002C0AD05A -:1080D000012C03D01EA140200AF0F3FC3E601120C9 -:1080E00080026860F8BD386001208002F9E710B5B1 -:1080F0001248017800290ED01121134A890291609B -:1081000010494A680021002A03D0154A12684270BB -:1081100000E041700170002000F030F810BD074809 -:108120000178002907D007484068002802D00C4891 -:108130000068C0B2704740787047000055000020CA -:1081400000F5004000F1004000F5014000F2004061 -:108150007372635C68616C5F63636D2E6300000023 -:1081600000F4004001202949C0030860284900208C -:1081700008701120274980028860704770B5244D2F -:1081800004462878A04207D0002C05D0002803D050 -:1081900021A14D200AF095FC2878A04210D00020A3 -:1081A00022492C70002C23D01A4A214D214B8032B9 -:1081B000012C06D0022C13D017A16A200AF081FCF2 -:1081C00070BD0860022008604D6112481A494030B5 -:1081D00001624362081D10601648001D506070BDAA -:1081E0000860032008604D6114481060536070BD42 -:1081F00008600860112007498002886070BD10B5D2 -:1082000005A173200AF05DFC10BD000080E100E0D4 -:108210005700002000F501407372635C68616C5F79 -:1082200063636D5F6161722E6300000000F50040C2 -:10823000D413002000F000400011004048810040AD -:10824000364800210170417010218170704770B56F -:10825000064614460D460220FFF790FF01202F49E5 -:108260002F4A0870E41E14619660556070BD10B509 -:108270000220FFF783FF29490120087029480021C7 -:1082800001604160816028490014486010BD10B54C -:10829000224C2078002811D00120234980038860D7 -:1082A00000F02EF80021002804D0012060701F4843 -:1082B000006801E061701020A07021700020FFF7BD -:1082C0005DFF10BD10B515480178002905D000F0FC -:1082D00017F8002800D0012010BD407810BD10B55F -:1082E0000E480178002909D000F00AF8002803D0D0 -:1082F0000E480068C0B210BD102010BD807810BDBF -:1083000008480168002905D04168002902D080682A -:10831000002801D00020704701207047580000203D -:1083200000F5004000F1004000F5014000F400407D -:1083300010B528210AF085FA10BD40788006800E1D -:10834000704740788006800EC01C70472820704718 -:1083500070B5054600780A0700090001120F1043A6 -:1083600028700B000AF0B2FC070507050705090590 -:108370000B00062408E00C2406E0222404E000247C -:10838000FEA158200AF09DFB6878800980012043F7 -:10839000687070BD00780007000F704710B50622A6 -:1083A000C01C0AF0F1F910BD0B4610B5C11C062225 -:1083B00018460AF0E9F910BD10B5062209300AF096 -:1083C000E3F910BD0B46014610B5062209311846E7 -:1083D0000AF0DAF910BD0278BF23C9071A40490E26 -:1083E0000A430270704700784006C00F7047027859 -:1083F0005206520EC9010A43027070470078C00944 -:10840000704770B50C460546C11C2046062209304F -:108410000AF0BAF920784006400E20702978490603 -:10842000C90FC9010843207070BD70B515460E46CE -:1084300004461F2A03D9D1A1A9200AF042FB2046F5 -:108440002A46314609300AF09FF96078AD1D80094F -:108450008001A906890E0843607070BD70B505469D -:1084600040780E468406A40E062C03D2C3A1B92080 -:108470000AF027FBA41FE4B21F2C00D91F242946B1 -:108480002246093130460AF07FF9204670BD70B5AA -:1084900015460E4604461F2A03D9B8A1CD200AF07E -:1084A00010FB20462A46314609300AF06DF9607803 -:1084B000AD1D80098001A906890E0843607070BD5A -:1084C00070B5044640780E468506AD0E062D03D2E3 -:1084D000AAA1DE200AF0F5FAAD1FEDB21F2D03D9D7 -:1084E000A6A1E2200AF0EDFA21462A4609313046DB -:1084F0000AF04AF9284670BD10B504220F300AF080 -:1085000043F910BD0B46014610B504220F31184641 -:108510000AF03AF910BD10B5032213300AF034F90D -:1085200010BD0B46014610B50322133118460AF060 -:108530002BF910BD4176090A81767047817E427E13 -:10854000080210437047C176090A01777047017F1E -:10855000C27E0802104370474177090A817770474D -:10856000817F427F080210437047C175090A017676 -:108570007047017EC27D08021043704781757047C5 -:10858000807D704720300279C90652095201C90E18 -:108590000A430271704720300079C006C00E704750 -:1085A00020300279D206D20E49010A430271704787 -:1085B000203000794009704710B505221F300AF0BD -:1085C000E3F810BD0B46014610B505221F311846D1 -:1085D0000AF0DAF810BD30B5411C837E0A46190254 -:1085E000D37D447E927D1B0221431343674D827DE0 -:1085F0008C1FAC4210D8002A0ED0082A0CD88A4210 -:108600000AD28B4208D8817F427F08021043A91DFD -:10861000884201D8012030BD002030BD00210A462B -:108620004254491C2229FBDB70474078C006C00E2B -:1086300070474078C006C00EC01C704722207047AB -:1086400010B502788B07920892009B0F1A430270B4 -:108650004278520952014270012908D0022906D0FD -:10866000032905D0FF2045A1A3300AF02AFA10BD46 -:1086700001210A43427010BD10B502788B079208A1 -:1086800092009B0F1A4302704278520952014270C5 -:10869000012908D0022906D0032905D0FF2037A1DF -:1086A000BD300AF00EFA10BD01210A43427010BD20 -:1086B00000788007800F70470278FB23C9071A40B3 -:1086C000490F0A430270704700784007C00F704797 -:1086D0000278F723C9071A40090F0A43027070474E -:1086E00000780007C00F70470278EF23C9071A40CF -:1086F000C90E0A43027070470078C006C00F704769 -:1087000070B50546C1700B000AF0E0FA0E080A0CBD -:108710000E1012120C14141212160C180C2413E062 -:10872000082411E002240FE017240DE00D240BE0D3 -:10873000012409E0092407E0062405E0452000247F -:108740000EA1C0000AF0BDF968784009400120433D -:10875000687070BDC078704770B5044640780E46AA -:10876000C506ED0E1B2D03D904A109480AF0A9F98D -:108770006019C01C042231460CE000007372635C77 -:10878000756C5F7064752E63000000007A0C000049 -:108790003A02000009F0F8FF70BD70B50446407859 -:1087A0000E46C506ED0E1B2D03D9A049A0480AF0C0 -:1087B00088F96119C91C0422304609F0E5FF70BD33 -:1087C000C171090A01727047017AC2790802104327 -:1087D00070474172090A81727047817A427A0802B1 -:1087E00010437047C172090A01737047017BC27A56 -:1087F0000802104370474171090A817170478179FD -:108800004279080210437047017170470079704740 -:108810004173090A81737047817B427B08021043D0 -:10882000704730B5411C037A0A46C47919022143C6 -:10883000537914791B0223437E4D00798C1FAC427F -:1088400010D800280ED008280CD888420AD28B42B3 -:1088500008D8D07A917A00020843A91D884201D82D -:10886000012030BD002030BD10B50522001D09F0EB -:108870008BFF10BD0B4610B5011D0522184609F0EF -:1088800083FF10BD4172090A81727047817A427A72 -:10889000080210437047017170470079704710B5A6 -:1088A0000822001D09F070FF10BD0B4610B5011D18 -:1088B0000822184609F068FF10BD0A78027349784B -:1088C00041737047027B0A70407B4870704710B557 -:1088D00008220E3009F058FF10BD0B46014610B5B6 -:1088E00008220E31184609F04FFF10BD10B50422C2 -:1088F000163009F049FF10BD0B46014610B50422A1 -:108900001631184609F040FF10BD10B50822001DB1 -:1089100009F03AFF10BD0B4610B5011D082218469C -:1089200009F032FF10BD10B504220C3009F02CFF05 -:1089300010BD0B46014610B504220C31184609F053 -:1089400023FF10BD017170474171090A81717047A1 -:10895000C171090A017270470079704781794279C3 -:10896000080210437047017AC27908021043704729 -:108970000171704700797047017170470079704745 -:1089800010B50822001D09F0FFFE10BD0B4610B502 -:10899000011D0822184609F0F7FE10BD10B5082287 -:1089A000001D09F0F1FE10BD0B4610B5011D082297 -:1089B000184609F0E9FE10BD70B515460E4604468E -:1089C0001B2A04D93720194900010AF07AF82A46EF -:1089D0003146E01C09F0D8FE6078E9064009400104 -:1089E000C90E0843607070BD70B5054640780E46EC -:1089F000C406E40E1B2C04D9DF200C4980000AF0C9 -:108A000060F82246E91C304609F0BEFE204670BDE3 -:108A10004078C006C00E1B2801D8012070470020F6 -:108A2000704710B5222209F0AFFE10BD7C87000010 -:108A3000430200007A0C0000FEB50F4601460646D0 -:108A40000546C031203640350446032F04D0002FA0 -:108A50002BD0012F29D049E000206080A080E08049 -:108A600020816081A082E082E873A074E074A07627 -:108A7000E076A073E0732074607430740123AB73EC -:108A80006882E88208762146A883603108702883CE -:108A90002873687320776077B072B0730872487279 -:108AA00088720A7488746883FEBD00206882E88238 -:108AB000012F50D0E08B0090608C0190C000009995 -:108AC00009F0DCFE401C80B2A882009919224143C3 -:108AD0009202914201DD401EA8827D200002009991 -:108AE00009F0CCFE401CE883002F01D0022FDBD11F -:108AF000307AC006C00E30720020E872221824219D -:108B00008B5C4032D9075B08DE07C90FF60F71187E -:108B10005B08DE07F60F71185B08DE07F60F7118A9 -:108B20005B08DE07F60F71185B08DE07F60F711899 -:108B30005B08DE07F60F71185B0859189171EA7A25 -:108B4000401C5118C0B2E9720528D7D3002FABD111 -:108B500000202874FEBD4A7F2046E030022A12D051 -:108B6000097F022913D050A1722009F0AAFF012029 -:108B700000900190E08B698B4843009909F08CFECE -:108B8000688301989AE7818800910089F1E7018A5A -:108B90000091808AEDE770B504464034E67A0546D8 -:108BA000002E68D0252E66D8002964D03C20405D78 -:108BB000227B48431018252109F060FE08462173E6 -:108BC0004207C908520F3C4B691820319A5C097959 -:108BD0008A4367D0314609F051FE491CCAB20020D1 -:108BE00006E0002804D0291840314979511ACAB248 -:108BF000291846235B5C93423AD320310979C94353 -:108C0000CB07DB17D21A521E1206120E34D08B0776 -:108C1000DB17D21A521E1206120E2FD04B07DB178B -:108C2000D21A521E1206120E2BD00B07DB17D21AC5 -:108C3000521E1206120E27D0CB06DB17D21A521E76 -:108C40001206120E23D08B06DB17D21A521E120602 -:108C5000120E1FD04B06DB17D21A521E1206120E2E -:108C60001BD00906C917511A491E0A06120E17D041 -:108C7000401C0528B5DB70BDC00013E0C000401CDF -:108C800010E0C000801C0DE0C000C01C0AE0C00065 -:108C9000001D07E0C000401D04E0C000801D01E091 -:108CA000C000C01D607370BD7372635C6C6C5F75D7 -:108CB00074696C2E63000000042D010010B5FF489C -:108CC0000021017041708170C17041718171C17169 -:108CD000083008F0E0FC002804D0FF20F8A1843020 -:108CE00009F0EFFE10BD10B5F44900204872081DD0 -:108CF00008F0D1FC002804D0FF20F1A1C33009F016 -:108D0000E0FEFFF7DBFFF148FFF788FC0021EF48AA -:108D1000FFF7EAFC0121ED48FFF792FC10BDE2E706 -:108D20001B207047E5494A7A002A01D0002070478D -:108D3000488101204872704710B5E0494A7A002AFC -:108D400002D04989814201D0002010BDDB48001DBE -:108D500008F0A9FC002804D0FF20D9A1B43009F004 -:108D6000B0FED648001D08F0B6FCFFF7A7FF0120B3 -:108D700010BD70B5D14C0025627A002A02D06289FC -:108D8000824201D00D700DE0227863789A4203D3BD -:108D900022786378D21A04E062782378D21A1023FA -:108DA0009A1A0A70FFF7C8FF002801D065720120E7 -:108DB00070BDC2494A7A002A04D04989814201D152 -:108DC0000120704700207047BC490A784B78521C3C -:108DD0001207120F9A4207D0097822225143BC4A47 -:108DE000891801600120704700207047B34801785E -:108DF0004278491C0907090F914206D00178491CA5 -:108E00000907090F01700120704700207047AB4926 -:108E10004A7A002A04D04989814201D10120704751 -:108E200000207047A5490A784B789A4207D04978C4 -:108E300022225143A64A8918016001207047002070 -:108E4000704710B59D4C20786178884216D06078C4 -:108E5000401C0007000F6070201D08F024FC002853 -:108E600004D0E078401CE070012010BDA078401CC8 -:108E7000A0709248001D08F02EFCF5E7002010BD00 -:108E80008E4801784078814201D10120704700204E -:108E900070478A4801784278914202D3017840783D -:108EA00003E041780078081A1021081AC0B2704710 -:108EB0000F20704770B5814C0D46617A002916D09D -:108EC0006189814213D100262E70201D08F0EBFB32 -:108ED000002805D1A0782870A670201D08F0FBFBA3 -:108EE0002878E17840182870E670012070BD0020D5 -:108EF00070BD76490160704770494A7A002A04D0F3 -:108F00004989814201D101207047002070476B4997 -:108F10004979002901D0002070476E490160012085 -:108F2000704766484179002901D00020704701212F -:108F300041710846704761494A7A002A04D049893C -:108F4000814201D101207047002070475B49497977 -:108F5000012901D0002070475E490160012070475F -:108F600056484179012901D0002070470021417104 -:108F70000120704751484079012801D001207047F5 -:108F8000002070474D494A7A002A04D0498981421D -:108F900001D1012070470020704770B5474C05464D -:108FA000A0790721401C09F069FCE079814208D0D2 -:108FB000A0792221484347492231401828600120E6 -:108FC00070BD002070BD10B53C4C0721A079401C3D -:108FD00009F054FCE079814207D0A0790721401CB8 -:108FE00009F04CFCA171012010BD002010BD3348D8 -:108FF0008179C079814201D10120704700207047FA -:109000002E494A7A002A04D04989814201D101209F -:1090100070470020704710B504462848083008F013 -:1090200042FB002815D125498879CA7990420CD095 -:10903000C8792221484327492231401820601F481F -:10904000083008F048FB012010BD1C48083008F02B -:1090500042FB002010BD10B504461848083008F047 -:1090600022FB002815D115498879CA7990420CD085 -:10907000C8792221484317492231401820600F48FF -:10908000083008F028FB012010BD0C48083008F01B -:1090900022FB002010BD094810B5083008F003FB82 -:1090A000002822D1054CA079E17988421AD0E079D4 -:1090B0000721401C09F0E2FBE1710DE05C0000209B -:1090C0007372635C646D5F712E6300002F17002064 -:1090D000FF1300201F1600202046083008F0FBFA7E -:1090E000012010BD0C4808F0F6FA002010BD0A4817 -:1090F00008388179C079814201D101207047002070 -:109100007047054808388179C079814201D1012032 -:1091100070470020704700006400002070477047CF -:10912000FF2070477047704700207047002070474D -:1091300000207047002070470020704700207047D3 -:1091400000207047002070470020704701207047C2 -:1091500000207047002070470020704700207047B3 -:10916000F8B5FA4D0446A87F002600280CD0002947 -:1091700023D1667010202070E87FA0702846203030 -:109180000078E070AE7718E0287A012801D000203E -:10919000F8BD002911D16670EC49687A01270A31BF -:1091A000002801D0132000E0052020701422A01C0C -:1091B00009F0EAFAA7716E722E720120F8BDF8B5B7 -:1091C000E3480078002802D00C273846F8BD002775 -:1091D000DE4D3C46203DAF74EF742F7528466F730B -:1091E0002038DA4E47737771687D002804D0FEF787 -:1091F0001FFDFFF74CF86C7534727472B477D34866 -:109200002430FFF795F8D1484C30FFF791F8D0485B -:109210004470DAE710B5CE4C00232370CB4C203CD1 -:109220006375CA4B01241C71603B583307C3FFF7B9 -:10923000C6FF002803D0C7A1FF2009F042FC10BDE3 -:10924000C2482038807C7047F8B5C04D0646407B48 -:10925000203DE873BD4837791346AF73B27B827106 -:109260000446603C217006221946601C09F08CFA05 -:10927000B07960730622F11DE01D09F085FA687B64 -:109280000126002800D0EE74B0484038407B00280A -:1092900000D02E75002F09D0012F09D0022F24D025 -:1092A000032F43D0FF20ABA14B3013E000211DE082 -:1092B000A64801212430FFF74BF8A448E11D2430D3 -:1092C000FFF77AF8607B002807D0012807D0FF203D -:1092D000A0A1413009F0F5FB0CE0002100E00121E4 -:1092E0009A482430FFF783F804E006219748243099 -:1092F000FFF72EF89548611C2430FFF74FF893488C -:1093000021782430FFF767F8904804214C30FFF7AC -:109310001FF88E48611C4C30FFF740F88B482178CD -:109320004C30FFF758F8AE740020F8BD0221DDE79D -:1093300070B50446854D0020203D287528462246FC -:10934000323809F021FA2846203844730120287564 -:1093500070BD7E490871704710B57C4C0022203CDE -:10936000E274607302462046123809F00DFA0120BB -:10937000E07410BDF8B500F02DFB744C0025203CC6 -:10938000607D002804D0FEF753FCFEF780FF657572 -:109390006F4E3570FEF70BFCA07B012804D0002136 -:1093A000084601F02DF9F8BD0021022001F028F94E -:1093B000664C207A0127002809D0A07F0028F2D12E -:1093C0000520E077204620300570A777F8BD70783B -:1093D0000028FBD05D4906226039487BE073C91D37 -:1093E0000846693009F0D0F93C20A07227727570E8 -:1093F000F8BD10B5554C203CE17B207CCA0701D05C -:10940000C2070BD08A070FD582070DD42620FEF79E -:109410009BFA207C02210843207410BD2520FEF712 -:1094200093FA207C0121F6E74907F6D54007F4D4EA -:109430002720FEF789FA207C0421ECE770B5444828 -:109440000078002861D1414C203CA07C00285CD0F1 -:10945000FEF7A1FB0026267466743046FEF798FBE3 -:109460000020FEF76DF93F48FEF765FA2546403DBE -:10947000296E8857FEF72BFA3A48C01EFEF741FBCB -:10948000FEF7BAFBFFF7B5FFFEF7DBF9FEF77CFB53 -:109490000120FEF7BBFA0F210520FEF7F6F9297827 -:1094A000681CFEF7E4F9A07B01280AD0E07C0028C4 -:1094B00007D0214612390846627B5630FEF7B5FFC9 -:1094C000E674207D002808D0204840380146427BC1 -:1094D00012398C30FEF7DBFF2675E86D0178002924 -:1094E00003D00178001DFEF7D4F9A86D017800299A -:1094F00007D00178154A401C7732FEF7A8FE0120FC -:109500006075FEF754FB002070BD0C2070BD104943 -:109510004860704770B50546FEF76EFB002D06D01B -:109520000020FEF72DFAFEF78CF9FFF762FF074CDB -:10953000203C607C002819D0A07B012803D105A124 -:10954000094809F0BEFAFFF715FF70BDB4170020F7 -:10955000680000207372635C6C6C5F6164762E63DC -:10956000000000000F2D0100CF0300000126002D98 -:1095700004D00220FEF74AFAFE484671FD48243026 -:10958000FEF71AFB012008F03CF8FEF762F9A07B19 -:1095900000280ED001280CD002280AD003280AD0B7 -:1095A000F549F64809F08DFAE07B217C884306D026 -:1095B00009E0032000E00120FEF7E2F9F4E7A07BD8 -:1095C000012803D06674EE480670BEE700202074C0 -:1095D000F9E710B5FEF7DFFAE948007800280ED168 -:1095E000E4482038807C002809D00020FFF792FF53 -:1095F000F6F7F9FEDF480079012806D007E000F011 -:10960000E9F9FEF7D4FA0C2010BD09F059FB00204F -:1096100010BDDB494870704770B500F0AFFE002800 -:1096200019D0FF202D30FEF7A8F9D54E3078D14C57 -:10963000012813D0022801D003282ED0CE49D148CA -:1096400009F03FFA3078002807D0F6F7CCFE2079F1 -:1096500001282CD030E0FFF78DFE76E7C54D203D88 -:10966000A87B032819D0FEF7B8FA687D002803D03C -:10967000FEF7FDFDFEF7D5FABE487430FEF79CFA02 -:10968000012007F0BFFFA87B01280BD0A1796F2034 -:10969000012906D0032904D004E00120FFF73AFF96 -:1096A000D0E77F20FEF76CF902203070CAE76079BE -:1096B000002801D1FEF76AFB0020607145E770B514 -:1096C000AC4C203C607D002803D0FEF7B1FAFEF7D9 -:1096D000DEFD00F053FE00281CD0A94D287802289A -:1096E00004D0A848A4492B3009F0EBF9A07B01284D -:1096F00013D0FF202D30FEF740F90120FFF70AFFBD -:109700002878002808D0F6F76EFE9A4C20790128B8 -:1097100006D00AE0FFF72EFE17E799208000EAE75F -:109720006079002801D1FEF731FB002060710CE761 -:10973000F8B50446FEF7FBF80546FEF7C3FD012821 -:1097400000D0002000908E480078022804D08D4878 -:109750008949673009F0B5F9864E203E707D0028B2 -:1097600003D0FEF765FAFEF792FDFEF745FA814851 -:109770007430FEF70FFE21007E4C07464DD0FEF7F9 -:1097800080F80028FAD03B0009F0A0FA06474747C6 -:1097900004471D47B07B0128F0D00098054304D151 -:1097A000A079002801D0022837D172484C30FEF74A -:1097B00003FA012007F025FF0120FEF7E1F87048C9 -:1097C00003210170F5E06B4F74373846D438F978CF -:1097D000C27991421BD13979027A914217D17979B4 -:1097E000427A914213D1B979827A91420FD1F979B3 -:1097F000C27A91420BD1397A027B914207D13978F2 -:10980000407B4906C90F814201D1012100E00021BE -:10981000B07B012802D0002803D0C3E0002908D182 -:10982000C0E00098054304D1A079002801D00128A8 -:109830007ED150487430FEF7CEFE002878D0504DCF -:109840004C49686804228331323008F09DFF387833 -:109850003E214006C20F68680A540622F91C3F30B8 -:1098600008F092FF4349686803228731363008F0D8 -:109870008BFF6868BA7D39210A543E4974310A7EEB -:10988000CB7D12021A4342878A7E4B7E12021A4314 -:10989000C2830A7FCB7E110219430184354974319A -:1098A0008A7F4B7F1102194341843249052293314B -:1098B000243008F069FF2F486D68943001792F46F5 -:1098C000C906C90E20373977007940097877207AA0 -:1098D000002810D0A07F002858D1607A002801D03D -:1098E000132000E005202349E07700202031087094 -:1098F0000120A0774AE01F48717D1030002925D053 -:109900000021A172A989A181B97FE17329460622AC -:109910003F3108F039FFE88BE082288C2083688C87 -:109920006083787F2077607F00994008400000E0E6 -:1099300038E008436077FEF7D2FC617F4000C9073A -:10994000C90F01436177012060721EE00021A172FE -:10995000A989A181B97FE173294606223F3108F028 -:1099600013FFE88BE082288C2083688C6083787FEB -:10997000207709E0B417002054950000ED030000A3 -:10998000680000206B02000001202072194D0020A9 -:10999000287000F01FF8FEF70AF90120696800F04E -:1099A0002FFE06E0FF202D30FDF7E7FF0120FFF737 -:1099B000B1FD1048007800280BD0F6F714FD20798F -:1099C000012804D16079002801D1FEF7DFF90020D9 -:1099D0006071F8BD10B5FEF719F9FEF70DF9FEF745 -:1099E00058F80020FDF7CCFFFEF715F9FEF795F8C3 -:1099F00010BD0000680000208107C90E002808DAA9 -:109A00000007000F08388008F94A80008018C069F4 -:109A100004E08008F74A800080180068C84000060B -:109A2000800F7047F448C07D7047F44800780028E4 -:109A300001D00020704701207047F048007870473F -:109A400010B5EE4A1378EC4CA47DA34202D007F087 -:109A500059F910BD1078032803D1E8490120891D68 -:109A6000887000F04AFE10BD38B5E44DE24CAD1DE3 -:109A7000687801281ED00121684606F041F8684642 -:109A80000078DF49000208F0F9FE68684118606854 -:109A900007F08FF86060DB48A060A18A00200029F1 -:109AA00010D06070032121702073A07ED249FFF78F -:109AB000C7FF38BD7D21C900606807F07AF8606093 -:109AC000D148E9E70121A18202216170EAE7FFB5EF -:109AD000C94C85B01C3461680191A1680391C749E4 -:109AE0001E46891E4A6807995388C91A89B202918D -:109AF000002E04D025463C3521464C3102E0BE4DB7 -:109B0000114664310091BC4F03213C372970002875 -:109B100018D0BA49891E4968403101287ED00228F0 -:109B20005CD003287BD0B9A1BC4808F0CAFF2878D4 -:109B3000002E75D0032804D0B848B4A1093008F02D -:109B4000C0FF35E1A068002804D1B448AFA1663851 -:109B500008F0B7FFA948B149801E40686031408FC6 -:109B600048434018069900F0CEFDE061A348AB4998 -:109B7000801E40686031C08B4843069900F0C3FDE9 -:109B80009E492062891E4B68A44A598FA0686032A2 -:109B9000514386464118E069A04A091A4C3A89188F -:109BA0008C462033E1629D4A597E60325143411810 -:109BB0000818FF3016306062A06261467046081ACD -:109BC000FF38974935388842B1D29649884204D245 -:109BD00092488EA1593808F074FFD0E0508F8F4A18 -:109BE0002169603250430818069900F08CFDE0614D -:109BF00082488A49801E40686031C08B484306997C -:109C000000F081FD2062A068002804D183487FA174 -:109C1000513808F056FF7948801E02E02FE05EE0E0 -:109C2000C1E040685621095A7F4B0029418F2269C3 -:109C30001DD059435118E269891AE1626269E168ED -:109C4000794B5143E26989183922125C5A438A18C8 -:109C50005118FF3114316162C08B216A5843411A97 -:109C600072480818A062A168E06A401A81E059436E -:109C70005118E269891A6268D3398918DDE7C88A00 -:109C8000002802D0A068002804D164485FA13938B8 -:109C900008F017FF59486449801E4068C28B4A4348 -:109CA000216A8E46511AE1628C4656226369125A25 -:109CB000E168D21A5943E3692030CB187146514309 -:109CC000407E594A5918504308184018FF30143044 -:109CD0006062564861466044A062A06848E0D08B4C -:109CE000514A5043226A801A029A5043E062C88A5D -:109CF000002805D0002E19D0B87D002816D0A1E08C -:109D0000002E02D0B87D0028F6D10198002802D09C -:109D10000398002804D141483CA1213808F0D1FE25 -:109D20000198E16AD3380818E06207E0019800283A -:109D300004D08D2035A1C00008F0C3FE2F48801E3E -:109D400042685620815A02980818216A4843400008 -:109D5000FF3014306062D08B334A5043411A33488D -:109D60000818A0622448C07D00280BD0E16A03983F -:109D7000081AFF382A492338884200D3D7E6022040 -:109D80002870D4E606F072FC01461B48006907F013 -:109D9000C7FBE16A081AFF3821491E388842EDD214 -:109DA000012009B0F0BD032802D1144907204870F2 -:109DB0001148E16A006906F0FCFE6860A16A606A09 -:109DC000884202D90098016001E00099086000987B -:109DD000174900680818A8600848801E40688188F4 -:109DE0000798081A00B2002824DD022023E00000B2 -:109DF00000ED00E000E400E05018002072000020B8 -:109E000010270000F82A0000B78913007372635C02 -:109E10006C6C5F6C6D2E73302E630000820400004A -:109E20004707000082020000E204000061FCFFFF1F -:109E3000EF160000002068702E73002E04D0B87D4D -:109E4000002801D00220ACE701204640BE76F7484A -:109E5000807E2946FFF7F4FD0020A2E7F8B5F3481D -:109E60003C30807EF14FF24D3C461C3400280CD033 -:109E70006968208F4988884207D17878002804D102 -:109E8000A920EC49C00008F01CFE06F0EFFB0146DB -:109E9000386907F045FB00F044FC6968228F4B8865 -:109EA0001E18B24202DB521C228702E0401C181826 -:109EB0002087208F0A89904201D1401C2087B88AD0 -:109EC000032802D2401CB88201E0208F8880084617 -:109ED0004030828A408A4988101A401E401886B253 -:109EE00017E028786B6841002033D3485B7F415AE4 -:109EF0005B00C05A081881B2207E0023FFF7E7FDFF -:109F0000002811D0012810D00B20CA49C00108F048 -:109F1000D8FD228FB01A00B20028E2DA6868082162 -:109F20002030417400F0A7FDF8BD208F401C208731 -:109F3000EFE770B5BD4C00261C3466600120A660BA -:109F400000F0C9FBBA481F21801C41700078B74D52 -:109F5000030008F0BBFE044545033745B3482670AF -:109F60003C30807EB24E002806D106F07FFB216C8B -:109F700007F0D6FA002811DC7068228F41888A42E7 -:109F800004D10289511A4181428003E0511A418172 -:109F9000218F41806868206428610BE0A18E706881 -:109FA0004288891A4181A18E4180216C69602961B2 -:109FB000E16C4166706801F0FFFB00280DD09D49FF -:109FC0009E4808E068682861FFF738FA002804D046 -:109FD0009A489849401D08F074FDF6F704FA70BDE0 -:109FE000964894490C30F6E7F8B505468F4A0120AB -:109FF0003C3290758D4C17466576213F00260B004C -:10A0000008F064FE09061D2E4E2B69691C64690068 -:10A0100020768748801C0078022807D0384607F051 -:10A0200042FB002803D1A07EA84200D12676207EE4 -:10A03000002803D1FFF77DFF00F0A0FBF8BD207ED4 -:10A04000002806D006F064FA6676384607F043FB2F -:10A0500001E000F075FB2676F8BDFDF79CFEF8BD2B -:10A060007348801C017802290ED0A17E0078A94295 -:10A070000DD0002804D0FF206E497B3008F021FD70 -:10A08000284606F0D8FAF8BDFFF7E8FEF8BD032829 -:10A0900003D0FF206749813015E0FFF7E5FCF8BDEC -:10A0A000A07EA84204D0FF206249873008F009FD55 -:10A0B0005F48801C01780229E6D000780328ECD0A4 -:10A0C000FF205C498E3008F0FCFCE6E7284606F0ED -:10A0D000B2FA6676F8BDFF2056499D3008F0F1FCD3 -:10A0E000F8BD524988755248801C00E020BF0278B4 -:10A0F0008B7D9A42FAD00078002803D000200022FD -:10A100008A7570470120FAE710B500280BD00128A6 -:10A1100005D04A484749853808F0D3FC09E00320B8 -:10A12000FFF7DFFF01E000F049FB002801D000202D -:10A1300010BD0C2010BDF8B5FF273D4D1F24D037B2 -:10A14000AD1C2E78330008F0C1FD040811030C117A -:10A150000220FFF7C6FF002801D000240FE00C24E6 -:10A160000AE00120FFF7D0FF044603E031493846FA -:10A1700008F0A7FC002C02D02878B042E1D1287862 -:10A18000002804D0FF202B49D53008F09AFC27493D -:10A1900000201C3108761C39887501226A70244A17 -:10A1A00008325070C87508612046F8BD70B5044685 -:10A1B0000120FFF721FCC5B20B20FFF71DFCC0B248 -:10A1C000854204D0FF201B49A73008F07AFC01200B -:10A1D000FFF712FCC5B21820FFF70EFCC0B2854293 -:10A1E00004D0FF201349A83008F06BFC0420C043C2 -:10A1F000FFF702FCC5B21920FFF7FEFBC0B2854293 -:10A2000004D0FF200B49A93008F05BFC08484470DB -:10A2100006481B3007F03FFA05490020891C0870EA -:10A2200002498875FFF787FF70BD000050180020B5 -:10A23000700000200C9E0000142D0100220300007D -:10A24000F74840787047F649891E08707047F3B5A3 -:10A2500081B006F0E9F9F349884200D20846FF30A0 -:10A260009930EF4D87B22878002801D00C20FEBD30 -:10A27000ED4806F08CF9ED4CA076E9490320087012 -:10A2800000268D1DAE70A07E002804D19720E849DD -:10A29000800008F016FC0298012827D0E5490198B3 -:10A2A00048436860012028700146684605F028FC94 -:10A2B00068460078E049000208F0E0FA0D4606F032 -:10A2C000D5F9791906F075FC6060DC48A0600320C0 -:10A2D0002070022060702673A07ED449FFF7B0FB87 -:10A2E000CF48A682072141700020FEBD06F0BEF9CE -:10A2F000394606F05EFC6060D148A0602E700120F7 -:10A300006870E4E7704770B5C5490A78002A01D043 -:10A310000C2089E702220A70C14CC44DA41E1C35D2 -:10A320006060287E002804D0C248C1494E3008F041 -:10A33000C8FB207800234100C248425A616820319E -:10A34000497F4900405A101881B21A461846FFF753 -:10A35000BEFB002804D0B748B549503008F0B1FB27 -:10A36000002068610121E8602976B049888262682E -:10A370005188491E51802887A88655E770B5A8489E -:10A380000124801D4078A94D002813D028461C3098 -:10A390008168AD48814202D8AA7D032A00D10024F9 -:10A3A000814207D9A87D032801D0012000E00020C8 -:10A3B000FFF72FF9A87D032800D10024204633E7BA -:10A3C0009A481C300178491C0170026B81689142E7 -:10A3D00004D8007E012801D001207047002070477A -:10A3E0000020704770B5914C1C34207E032849D161 -:10A3F0000021204620308175894DAD1E68684030AF -:10A40000007C00283ED106F031F988490A690146EE -:10A41000104607F085F8002834DD00F082F96968FD -:10A42000401C4A888018A0860889A28E904229D9AB -:10A430004888088140318A8A498A511A491E081879 -:10A4400086B21AE0287841007E48425A6968203175 -:10A45000497F4900405A1018A28E81B2207E012304 -:10A46000FFF735FB00280DD001280CD0022809D0B9 -:10A470006C486F49C43808F024FBA08E301A00B233 -:10A480000028DFDAD0E6A08E401CA086F5E7F8B5FC -:10A49000664C634F00251C34BF1E012819D00720CD -:10A4A000B91C487006F034F8604E304675761B30A3 -:10A4B00007F011F97878F8F7A5F8B5827868314691 -:10A4C0004088208701203C318875002000F003F986 -:10A4D000F8BD267E52495B48891E0A7853004A68B7 -:10A4E00011462031032E18D0267E022E21D0267E42 -:10A4F000012ED7D1497FC35A4900405A12891818F2 -:10A5000081B200230120FFF7E2FA0028CAD04548B3 -:10A510004749213808F0D5FAC4E76561E560497F0D -:10A52000C35A4900405A1289181881B200230320E7 -:10A53000E9E75626B65A6661497FC35A4900405A30 -:10A540001289181881B200230220FFF7C0FA0121F6 -:10A550002176DAE7F8B5324E0021B61D7078334C1B -:10A560000D46002801D075701AE03078002809D017 -:10A570000121684605F0C4FA684600782E490002B9 -:10A5800008F07CF970684118606806F012FB6060A2 -:10A59000257302206070607E2449FFF751FAA5827E -:10A5A00005F0B6FF214865761B3007F094F81C488B -:10A5B000801E4078F8F726F8002000F08CF8F8BDEF -:10A5C00010B5030008F082FB060A0E0406130916F4 -:10A5D000012000E0002000F037F910BD0120FFF756 -:10A5E00056FF10BD114903201C31087610BD00F044 -:10A5F0003DF910BD0B480E498E3008F062FA10BDCF -:10A6000070B50A4D002821D0054EB61D012828D06E -:10A61000022837D003480649AD3008F052FA03E665 -:10A6200072000020F6050000E99F0000501800208D -:10A630000C9E00007102000010270000F82A0000A4 -:10A64000B7891300142D01002E841300FFF782FF39 -:10A65000A97D9448002901D01F2100E00721417005 -:10A66000E2E5002490487470047600F046F8032078 -:10A67000F7F7C7F805F04CFF8B486C76401E07F0E3 -:10A680002AF8D1E5FFF766FF0120B07000F035F839 -:10A690000420F7F7B6F8C7E582490978022907D1FF -:10A6A00081490A78002A03D148600A6B10180863B0 -:10A6B000704710B57C4A00290BD0012906D0022929 -:10A6C00006D07A497A4808F0FCF910BD401E00E037 -:10A6D000401F906010BD744910B51C39C875002822 -:10A6E00005D0F5F781FE0220F5F778FE10BDF5F7ED -:10A6F0007CFE0120F5F77AFE10BD6A48002101704A -:10A7000001214170704710B504460020002907D090 -:10A71000684808F0B3F80146204608F0AFF8401C3E -:10A7200010BD10B500280AD05E49634A891E4968E9 -:10A73000C98B51435C4A126A891A08F09FF810BD10 -:10A7400010B558480078030008F0C0FA0414140348 -:10A750000A1401F035F900280BD05449574806E097 -:10A76000FEF737FF002804D054485049001D08F078 -:10A77000A8F910BD51484D490B30F8E710B505F068 -:10A7800053FF4849891E4968CA8B4B494A43464989 -:10A790000B6AD21AD33AFF2332330A63984202D2A9 -:10A7A0004748101802E0101A464A801808634648C5 -:10A7B0000A6B824200D81046086310BDF0B53A4CCF -:10A7C000032685B01C3CA67520461B30009001E096 -:10A7D00020BF009806F067FF0028F9D10025A57575 -:10A7E00030480178032903D0007800281DD021E0EB -:10A7F000A07E002803D12D49344808F062F9A77ED5 -:10A80000684606710221417105F030FF0290FF2079 -:10A81000F5300390012168460174A57601A93846F8 -:10A8200006F070FAFFF769FF0CE01E48801D817882 -:10A83000012906D00024009806F04DFF204605B0FF -:10A84000F0BD85700124F6E710B5002803D0002084 -:10A85000FFF71DFE04E01348801E4078F7F7D2FE94 -:10A86000FFF74BFF0020F6F7CCFF10BD10B50E4AE6 -:10A87000114B106AD0600B48801E4068C18B594351 -:10A8800011610146E0314B8843870C7839231C5411 -:10A890008B88C383CB880384098941840220107686 -:10A8A00010BD0000720000206C1800200C9E0000FB -:10A8B000C306000040420F00E20400004303000012 -:10A8C000A5F8FFFFD6F9FFFF1612000029020000CD -:10A8D000F8B5FEF7DEFA0646FEF74CFBF94D0746E3 -:10A8E0006879F94C002809D0012823D0022826D005 -:10A8F00003282ED0FF20F5A1BC3033E0F2481430FD -:10A90000FEF724FB002801D003200FE0EE481430AE -:10A91000FEF788FA002804D020696030007A002809 -:10A9200006D0E9481430FEF7E4FA012068711BE014 -:10A930000220FBE7E4481430FEF7DBFA14E0E248BB -:10A940001430FEF76FFA00280ED1FF20DFA1AE30E1 -:10A9500008E0DD481430FEF7F9FA002804D1FF20A2 -:10A96000DAA1B63008F0ADF86169F7220878104036 -:10A970000870AA79D207120F1043FB22104008700A -:10A98000EA79D207520F104308706B79EF22022B3D -:10A9900004D0012B07D0032B07D00CE0012E06D8E2 -:10A9A000002F04D007E07F1E3E43002E03D010404E -:10A9B0001022104300E010400870287C002811D0BD -:10A9C000687901280ED0BF484A38FDF7F5F8BD492F -:10A9D00020694A3978306269FDF757FB0020FDF79E -:10A9E00063FB04E00846FDF7E7F8FDF780FB6069CC -:10A9F0000078C00606D4A0690078C00602D4E079C9 -:10AA0000002802D0A079002801D0012000E0032016 -:10AA1000FCF7B6FF0320207001202071F8BDAA4882 -:10AA200010B51830FEF7B9FAA74C002802D0002064 -:10AA3000607004E001206070A2484A38A061A1481B -:10AA4000407C002802D06078002805D0A069FDF77E -:10AA5000B3F8FDF74CFB10BD9A484A38FDF7ACF847 -:10AA6000984A20694A3AA030A169FDF70EFB0120FF -:10AA7000FDF71AFB10BD10B5934900220869302379 -:10AA80008276C27601221A544030007C002803D01E -:10AA90000A700021022001E000210320FFF790FD51 -:10AAA00010BD70B5884C6079C20620460169084621 -:10AAB0004030002A01DA002202E0C28A4B89D21813 -:10AAC0000B46C282C0331A7E002A03D0428B4D89C6 -:10AAD00052194283627A002A03D03D2001F0A3F884 -:10AAE00052E08A7E032A4FD0227A002A13D05007E0 -:10AAF00001D4D00601D51E2036E0100701D53D2037 -:10AB000032E0D00705D1900703D470A1734807F055 -:10AB1000D8FF2A2028E060310978002905D0818BF0 -:10AB20004A1C8283C28B91420FD2597F062902D0E0 -:10AB3000197F062905D1018B4A1C0283C28B9142E1 -:10AB400003D2428B818A8A4201D322200CE0827B8D -:10AB5000408A002A0FD006280FD35A48C07B01280C -:10AB600001D03E2000E0082001F05DF82069807EE1 -:10AB7000032809D001E08842F5D20120207000218D -:10AB80000846FFF71DFD70BDFFF775FF70BD10B5DE -:10AB90004C494D48CA7B002A2BD0012A29D0022AD1 -:10ABA00027D0032A04D049A14D4807F08AFF10BDE1 -:10ABB000897B02290FD007291BD00069014640314B -:10ABC0008A8A498A511A891E89B2032900D303212E -:10ABD000028951180BE00069014640314A8A032A74 -:10ABE00001D2018903E04288898A5118491C818079 -:10ABF00010BD0069F5E700B5030008F067F806042A -:10AC0000070B0F12121700290ED00FE0491E022960 -:10AC10000AD90BE0491F012906D907E0072903D00B -:10AC200004E00A390C2901D8012000BD002000BD34 -:10AC3000FEB5054624481430FEF769F9002804D112 -:10AC40003D2022A1400107F03CFF1F4C6069FDF749 -:10AC5000E5FC03216069FDF70FFD6069EF220178D3 -:10AC6000114001702946FDF74BFD002601272B00FE -:10AC700008F02CF80E5D5D085D1D6161155D4D5D90 -:10AC8000613D385D20697121095C002901D00621F0 -:10AC900001E0C030417E6069FDF7FDFD4BE0A06939 -:10ACA000FDF758FD01466069FDF766FE43E0216946 -:10ACB0006069D031FDF729FE216960699531FDF7A2 -:10ACC00032FE38E006190020800000207372635CB9 -:10ACD0006C6C5F736C6176652E630000610200002E -:10ACE0006F08000006216069FDF742FE23E0E0687E -:10ACF00001786069FDF726FEE06881886069FDF7EC -:10AD000023FEE06841886069FDF722FE13E00096AB -:10AD1000019620696030007C002803D069460878DD -:10AD20003843087069466069FDF738FE03E0FA4968 -:10AD3000FA4807F0C6FEFEF7F4F8002804D1F748F9 -:10AD4000F549801D07F0BDFE0C2D07D0072D04D05E -:10AD500020695C210E5260300770FEBD20694030D2 -:10AD60000683FEBDF0B5EE4CDC2021698DB0405C61 -:10AD7000042809D0052834D16031487A002829D028 -:10AD800001204874022026E01022EA31684600F0D3 -:10AD90007AFF21691022C83104A800F074FF6846C8 -:10ADA00005F007F8216908AA6CCA0F46CB67783707 -:10ADB0008A670846FE608030BD60074620376CC752 -:10ADC0000023036343630120A0310876D54948740A -:10ADD000052000E00D20FFF72BFF21690020C03186 -:10ADE00008770DB0F0BDF8B5CD481430FEF78FF8F8 -:10ADF000002842D0CA4C207A00283ED12069002584 -:10AE0000C030007EC74E00280BD0B17B0120FFF779 -:10AE1000F2FE002805D1B17B0420FFF7ECFE0028EC -:10AE200006D020690127C030407F062807D00CE0FB -:10AE300020695A210D526030457402202FE0B17B09 -:10AE40000420FFF7D8FE002810D0B07B030007F0E5 -:10AE50003DFF173F3F3F3F1E3F3F3F3D3F203F3FAE -:10AE60003F292C3F3F3F3F3F3F2F3F0020696A2152 -:10AE7000095CC90702D0C0304577F8BD0C20FFF748 -:10AE8000D7FE20696030817A39438172F8BD07208E -:10AE900005E0FEF7ACF80028F8D075740B20FFF73A -:10AEA000C7FEF8BD00F0FEFEF8BDFFF75BFFF8BD82 -:10AEB0002069002180308160C160057437740620EC -:10AEC000FFF7B6FE206960300570F8BD0920E6E79F -:10AED00000F0B2FEF8BD70B5924DA87B072831D1C5 -:10AEE0008F4CDE2220694188125A491C914229D197 -:10AEF000217A002926D10146E0318B88C28B93420A -:10AF000007D1CA88068CB24203D10A89468CB24264 -:10AF10000AD0844A8689283A9680D380CB881381C8 -:10AF2000098951810121117001221146FDF784FD2B -:10AF300000210420FFF744FB21690020C03148773D -:10AF4000A873E87370BD70B5764CA07B162803D04B -:10AF50007149754807F0B5FD7148002102697148D3 -:10AF60006032117211702838067C0B250123002EE7 -:10AF700006D0027B002A12D14573817303730EE061 -:10AF8000567A002E06D051722288828281740C2259 -:10AF9000027404E022888282817483750574A1732F -:10AFA00070BDF8B55E4DA879800723D5287A0028B2 -:10AFB00020D15C4C0120A17BFFF71DFE002819D198 -:10AFC00068690026C0780127030007F07FFE0E594C -:10AFD0005908592E3B4F0A591459205245590220FD -:10AFE00021E0A07B042804D04F484B49333807F0B8 -:10AFF00068FDA673F8BDA07B082804D04A484649DE -:10B000002D3807F05EFD286960300670F1E7A07BFF -:10B010000A2804D015204049800107F052FD286914 -:10B02000603007720B20A073F8BDA07B0E2804D0FF -:10B030003D4839491F3807F044FD286960300772E0 -:10B040000F20F0E7A07B0F2804D03748324918388A -:10B0500007F037FD1120E6E7A07B0F2804D0324827 -:10B060002D49123807F02DFD1320DCE7FFF76BFFA9 -:10B07000F8BD2869C030417F0629F9D14677F8BD6F -:10B0800029482549813007F01CFDF8BD10B5254C35 -:10B090000020A17BFFF7AFFD002804D1204801224A -:10B0A000017A114301720420A07310BD10B51C4C2D -:10B0B000DD212069095C002903D0217A0122114396 -:10B0C00021726030807A800715D4A069FDF744FCB6 -:10B0D00021696031C872A069FDF740FC21696031C7 -:10B0E0008881A069FDF73FFC216902226031C88197 -:10B0F000887A10438872206900220146C0310B7F94 -:10B10000062B13D06A231B5CDB0703D106234B7786 -:10B110004030028310BD0000CCAC0000E40700000A -:10B120008000002006190020660500000A77F1E77C -:10B13000F8B5FE48817B0020FFF75DFDFC4C012641 -:10B14000002807D120696030407A002802D1207A97 -:10B1500030432072216900255C204552602046540E -:10B16000C831A069FDF7B9FB2169A0699131FDF7EC -:10B17000C3FB2169042208469131B93007F004FB72 -:10B18000EA482838017C0827002906D0017B0029DD -:10B1900012D14773857306730EE0216905468989CC -:10B1A0004182E249A0691439FDF77FFBDF49A069BC -:10B1B0000C39FDF787FB2F74DC480E218173F8BD35 -:10B1C00070B5DA4D0020A97BFFF715FDD84C00289B -:10B1D00003D1207A012108432072A069FDF721FBE9 -:10B1E00000280ED0A069FDF717FB2169DE2250521E -:10B1F000498800F0A2FD002806D0282000F013FDA9 -:10B2000070BDFFF743FF70BDA069FDF7FFFA21692C -:10B21000E0310870A069FDF7F2FA2169E031488059 -:10B22000A069FDF7D1FA2169E0318880A069FDF7B6 -:10B23000D4FA2169E031C880A069FDF7D7FA216905 -:10B24000E03108810720A87370BDF8B5B84CA0792B -:10B25000C0076ED0207A00286BD1B44D0120A97BA5 -:10B26000FFF7C9FC002853D1A0690027C17802224A -:10B2700001260B0007F02AFD0D161308354A4A383F -:10B280004C474A1929444A00FDF707FB2169DA2295 -:10B290005054AE735C20475260310E7038E000F0BD -:10B2A00057FD35E0FFF78CFF32E0A97B0020FFF768 -:10B2B000A2FC002802D1207A3043207220695C2150 -:10B2C0000F52603006700A2018E0A87B0B2802D0CD -:10B2D000207A104320722F742069603046720C204F -:10B2E0000CE0FFF725FF13E0A87B112802D0207A9D -:10B2F000104320722069603007701620A87307E0A1 -:10B30000FFF7D4FE04E000F0F0FC01E0FFF7BEFE22 -:10B31000FDF759FE002803D18649874807F0D1FB85 -:10B32000206900238030016B426B491C5A41426303 -:10B330000163F8BDF8B57D4F787C002802D1387CD8 -:10B34000002801D0FCF7D3FEFCF760FCFCF754FCAE -:10B350000020FCF715FBFCF79CFBFCF75CFCFCF702 -:10B36000DCFBFCF724FCF87B01260025704C002850 -:10B370000FD16079C10705D00220F87320694030F1 -:10B38000857302E0800717D5FE7300210120FFF7C7 -:10B3900017F9F87B012802D0022808D00CE0607968 -:10B3A000C00709D00220F8732069403085736079A6 -:10B3B000000701D50320F87300F0EEFCFFF713FD42 -:10B3C0002079002801D03D8102E03889401C388175 -:10B3D0006079C007206904D072210D544030458245 -:10B3E00003E04030418A491C4182E079002806D0C0 -:10B3F00021696031887C022806D8401C8874206945 -:10B400006030807C022804D93D817D8120696030D4 -:10B410008574B97B0020FFF7EEFB002802D1B87BD2 -:10B4200006284BD120690146C0310A7F062A45D043 -:10B43000497F062942D03D49C97B03293ED160306E -:10B44000807C00283AD1FDF71BFD002836D0FDF79F -:10B4500091FD002832D02169C88801282ED90A46DA -:10B460004032D673908A578A831E9F4201DB0120A7 -:10B4700002E0C01B401E80B22C4B0F8C1B89BB42CC -:10B4800001D3012302E0FB1A5B1C9BB2984200D956 -:10B490001846012800D1D5732A22525C002A11D007 -:10B4A000224A898D52898A4201D3012102E0891AF8 -:10B4B000491C89B2884205D9084603E02169012068 -:10B4C0004031CD7321694A8810180881FFF75FFB6E -:10B4D0002069122215490C3007F056F9FFF7E1FAFE -:10B4E000FEF77EFF002808D010482838817F002909 -:10B4F00003D121698989018486770D481830FDF7C9 -:10B50000AAFD00280FD0A06900788007800F0128CD -:10B5100009D0022807D0FDF7BEFD002803D1054958 -:10B52000064807F0CEFA2069403009E006190020ED -:10B5300080000020CCAC0000DF040000720300009B -:10B540000574F8BD70B5FE4C607900283DD0FD4D06 -:10B55000022811D1FDF775FC002804D17320FA49A7 -:10B56000000107F0AEFA2A69002380329068D168A2 -:10B57000401C5941D16090600026667120790128F5 -:10B5800004D12671A87910210843A871E078012818 -:10B5900016D1E670A87908210843A871FDF7E0FCF0 -:10B5A000002804D1E920E849C00007F08AFA296997 -:10B5B000002380318A68C868521C58418A60C8607C -:10B5C000A079012802D00120A07170BDA67170BDC4 -:10B5D000F8B5DC4CDA4DA269002710780421830706 -:10B5E0009B0FE8790126012B11D0022B0FD0032BE2 -:10B5F00001D0207A2FE06178002905D1AE70A179C1 -:10B600003143A17122E0EF71F8BDEE71F8BD5278BF -:10B61000D3061BD060780028F8D1D006C00E1B28B6 -:10B6200017D8607908436071FDF7CDFC002803D17D -:10B63000C549C64807F045FA206900238030026BEF -:10B64000416B521C594102634163E8790128DCD106 -:10B65000D9E7207A102108432072F8BD70B5B84DA3 -:10B660000446283D287B002600280AD0002976D1F0 -:10B67000667010202070687BA070A87BE0702E732D -:10B680006DE02878002810D0002968D16670072066 -:10B69000207005E02E700A22A91CA01C07F074F887 -:10B6A00028780028F6D1A67059E0287C002839D0E7 -:10B6B000002954D1297CA3480B0007F007FB0D2E6D -:10B6C0002E2E2E2E2E2E2E112E2E22082E0066709D -:10B6D0000C212170A97CA17000698089A0801AE0EA -:10B6E00008216670217000690A468089944960804B -:10B6F0001439201D07F048F891484A38C08FA081BE -:10B7000009E066700B212170A97CA1700069808915 -:10B71000A080A87DA0712E7421E08B498C4807F091 -:10B72000D0F91CE0AA7F86480838002A08D00029F2 -:10B7300015D166701121217000886080AE770EE00F -:10B740007F4A083A9378002B0BD0002907D1667006 -:10B750001221217081886180C088A08096700120AC -:10B7600070BD002070BD77480078012801D00C2002 -:10B770007047734900202839087008730874887767 -:10B78000704770B56F4C064620780D46002804D0EF -:10B790006F486D493F3007F094F90120E660E07290 -:10B7A000E5612070FFF7DFFF002804D09320664991 -:10B7B000000107F086F970BDF8B5624C21780129C7 -:10B7C00002D12178012901D00C20F8BD014605469F -:10B7D000206112220C315A4806F0D6FF012740356D -:10B7E0002F74574D2888FDF712FB002827D0288892 -:10B7F000FDF7C8FB002822D02888FDF77DFB002834 -:10B800001DD02888FDF797FB002818D0FCF7C3F956 -:10B8100020690026C088002824D04A481430FDF74B -:10B8200076FB00281ED02069C030007E002819D089 -:10B83000A97B0120FFF7DFF9002802D012E01220D7 -:10B84000F8BDA97B0420FFF7D6F900280AD12169A9 -:10B850005A20465260314E740220FFF7E9F9206900 -:10B860004030C67320694189491E8AB229898918E6 -:10B870002981297B002902D06E812E7302E069891B -:10B8800089186981014640314B8A9B184B82C388D5 -:10B89000012B01D85B1CC380002A01D072221654F0 -:10B8A000AA7B032A16D0C97B002915D02989008CD0 -:10B8B000814211D2FDF7E4FA00280DD020692A2137 -:10B8C000095C00290BD06989808D814207D3A6705D -:10B8D000E7700CE0A7700AE0A670E67007E06889E0 -:10B8E0000021401C6881A7700520FEF769FE2069D1 -:10B8F0004F210E54A178002930D12030807A0028C1 -:10B9000000D06E810120FBF71BFF20693630FCF769 -:10B91000F8F820693230FCF70EF8E169002008568B -:10B92000FBF7D5FF0120FCF733F9FBF78EFFFCF79F -:10B930002BF90120FCF76AF82069406E0AE000004C -:10B940000619002080000020CCAC00007B0700001E -:10B95000E7080000FCF733F9FFF761F8A87B05283A -:10B9600001D0062816D12069DE224188125A891A90 -:10B9700009B200290EDB01460522E0312430F4F73C -:10B9800023FC012202212069FDF756F82069C0300E -:10B990004677AE7320694189FDF7FDF82069403094 -:10B9A000407BFBF7D1FF6671E671A6712672A67225 -:10B9B0006672267102202070FCF7F9F80020F8BDAD -:10B9C00010B5FE4C2078022801D00C2010BDFCF7E9 -:10B9D000E2F8A078002802D0FFF7ACFC15E000F0F8 -:10B9E0001AF920692030807B012809D0FCF736F94C -:10B9F000FBF730FFF4F7F7FCE07A012803D004E00E -:10BA0000FCF734F9F4E707F05BF9002010BDEB49CF -:10BA1000C872704710B5E94C2078032803D0E84974 -:10BA2000E84807F04EF8E84801218278002A06D05D -:10BA3000002282700171A27904231A43A271626903 -:10BA40001378DB439B0707D1C378002B04D1C17067 -:10BA5000A07902210843A0711078C00606D4A0691D -:10BA60000078C00602D4E07900280CD06078002865 -:10BA700009D1A079002806D1FEF7A2FC002802D047 -:10BA8000207A002802D0FFF755FC03E0FEF7C7FF3D -:10BA900000F0C1F82078012806D0F4F7A4FCE07A81 -:10BAA000012801D1FCF772F910BD38B5C34C2069EB -:10BAB0002030807B012820D1A07A00281DD1684643 -:10BAC000FCF7DCF8002818D021692F20405C012801 -:10BAD00010D1BD4A0D236D460020D356285683420F -:10BAE00008D050738989283A918411462031887191 -:10BAF00001208870A07A401CA07238BD70B5AF4C90 -:10BB000006462078042804D0AE48AD49553006F0EA -:10BB1000D8FF607910210843AB4D6071002E47D0EB -:10BB2000FCF7FDFA61780126084300280ED1687CF5 -:10BB300000280BD0A0694178C90607D00078E979C0 -:10BB40000007C00F884201D1667247E0E078002804 -:10BB500009D0A0694178C90605D10078C00602D491 -:10BB6000FFF7A3FF3AE0FFF7A0FFA069A9790078EB -:10BB70004007C00F884205D0FFF7E4FC6079082138 -:10BB800008436071A069E97900780007C00F884216 -:10BB900001D1FFF71DFD6079304360710020E07135 -:10BBA000A079000702D5A87B022817D0207A13E0DD -:10BBB000022108436071E079401CC0B2E0710128A5 -:10BBC0000CD8687C00280CD07F484A384078C106E1 -:10BBD000C90E052905D2C006002802D0FFF7AAFB2E -:10BBE00001E0FEF775FE2078012806D0F4F7FBFB94 -:10BBF000E07A012801D1FCF7C9F870BD10B56F4893 -:10BC00000078042804D06F486D49B73006F059FF1A -:10BC1000FFF790FB10BD10B50720FBF7B1FE674999 -:10BC20000420087010BD6549312209695054664AE4 -:10BC3000032090738876704710B5604C2069C0303F -:10BC4000007F00281ED06048817B0020FEF7D3FFD4 -:10BC5000002817D02069DC21095C0B0007F036F8BA -:10BC6000071212121212120512006030807AC007F9 -:10BC700008D10C20FEF7DCFF206901226030817AB8 -:10BC80001143817210BD10B5002A0AD0002306E0CE -:10BC9000D41A6418203CE47FC4545B1CDBB293428A -:10BCA000F6D310BD10B503F02AFF0C281CD3434C6B -:10BCB00008212069D03003F023FF002806D0206936 -:10BCC0000421953003F01CFF002803D13C493F4874 -:10BCD00006F0F7FE2169042208469531BD3006F0D2 -:10BCE00053FD0420FEF7A4FF10BD7CB5364E0020A6 -:10BCF000B17BFEF780FF0125304C002802D1207A6D -:10BD0000284320726946A069FCF74EFE6846007819 -:10BD10000021C207D20F684602702069002A02D0B3 -:10BD20006030057401E06030017420695C221152BA -:10BD3000603005700820B0737CBD401A244900B201 -:10BD4000884201DC002801DC012070470020704798 -:10BD500070B51D4D0020A97BFEF74DFF174C002844 -:10BD600003D1207A012108432072A069FCF78EFDDF -:10BD70002169DE2250524988FFF7DFFF002803D0F7 -:10BD80002820FFF750FF70BD2169A069E031FCF762 -:10BD900071FD0520A87370BD70B500F054F8074C14 -:10BDA000094D6079400716D5A97B0520FEF723FFD2 -:10BDB000002810D0207A082108430BE080000020E2 -:10BDC000CCAC00001D0A000006190020640600002B -:10BDD000FE7F00002072FFF738FA00F012F8FFF73C -:10BDE000E0F8A079C00609D5A87B030006F06EFF35 -:10BDF00006060606060604060620A873FFF76BF87B -:10BE000070BD10B525488179490714D5017A0029FC -:10BE100011D12349897B0B0006F058FF080D050D51 -:10BE20000D0D0E0D100D0069002260210A54C03066 -:10BE3000807EFFF7F8FE10BD012100E002210069BD -:10BE4000C030417710BD10B51448817909071DD560 -:10BE5000017A00291AD1124A947B230006F036FF9A -:10BE60001416160B1616161616161616161616167F -:10BE7000161616161716006960300170407C0028EF -:10BE800001D0062000E01620FFF7CDFE10BD0069AE -:10BE9000603001720170917310BD000080000020BD -:10BEA0000619002010B5031D03600020521E04E097 -:10BEB0005C181C60401C2346C0B29042F8DB002096 -:10BEC000186010BD01460A680020002A02D0104602 -:10BED00012680A60704702680A60016070470000DB -:10BEE00000B51A2822D00ADC030006F0EFFE0D117F -:10BEF0001F131F1F191915171F1F1F1B1F002A288B -:10BF000014DD3A38030006F0E1FE030F11091100B9 -:10BF1000002000BD1E4800BD042000BD0D2000BD56 -:10BF20000F2000BD082000BD112000BD032000BD72 -:10BF300010B50C46F5F7C8FB00281AD02046F4F7D8 -:10BF400061FE002812D020780E280BD00F2809D0CF -:10BF5000022807D0032805D00EA1772006F0B1FDF6 -:10BF6000002010BDA078FFF7BBFF10BD09A17D2008 -:10BF7000F4E708A18320F1E710B5F4F7CBFD10BD7D -:10BF800010B5F4F73FFE10BD10B5F4F721FE10BD5B -:10BF9000013000007372635C686F73745F6863697B -:10BFA0002E630000F0B597B00021032004F0F7F8ED -:10BFB0000025FE4E022775807574347C12E0F0680F -:10BFC000E1004018818800290CD0858069460F70F7 -:10BFD0004D7001680291808869468880002168461A -:10BFE000F8F7F0FD2046641EE4B20028E7D117B050 -:10BFF000F0BDEE4BD86019741A80D3E7EB49EC4BD7 -:10C000004A8800201A4200D00120497C002901D032 -:10C01000082108437047F7B504460E460078012111 -:10C02000E34A8140521C114098B0E04A0091518887 -:10C03000E04B994205D0009B002B05D0DC4B194208 -:10C0400002D001201BB0F0BD009BD84A194351809B -:10C050001A9D002D11D00020287022781A980027F0 -:10C06000401C130006F032FE10EF0D152137555D10 -:10C070006A39AFAB85B3EEEDECEF0B28EDD00420C1 -:10C08000E0E702212970A1880170090A41700320AC -:10C0900093E004212970A1880170090A4170E188A8 -:10C0A0008170090AC170052087E006212970A188E6 -:10C0B0000170090A4170E1888170090AC170218903 -:10C0C0000171090A4171A289E81D216906F05CFB32 -:10C0D000A089C01D71E0082129702178082901D1AB -:10C0E00010212970A1880170090A4170E1888170CE -:10C0F000090AC1700520308020466A1D01A9083058 -:10C1000003F047FB00287DD1694630880979401843 -:10C1100053E00A212970A1880170090A41700320A7 -:10C120000AE00C212970A1880170090A4170E18898 -:10C130008170090AC170052030809DE0A088844686 -:10C140004000401C81B2308888425BD3052959D316 -:10C150000E202870002008E0A36842009B5A521964 -:10C1600053701B0A401C937080B26045F4D3318039 -:10C17000B6E08E49487C002873D0401E4874C868D9 -:10C1800021790822C9004518A9882868401808386C -:10C19000A16806F0F9FA0221684601710021417197 -:10C1A00028680390A98868460181002101A8F8F752 -:10C1B00009FD0020A880002E00D0308090E0297872 -:10C1C000802211432970297840221143297029784F -:10C1D0008909890112312970A1880170090A417009 -:10C1E000E288E81CA16806F0CFFAE088C01C308025 -:10C1F0002878410640D5C00972D0012168460171F6 -:10C20000002100E02BE041713188ED1C091D018106 -:10C210001A980390E08840190490001D634D059022 -:10C22000297C68460176002101A8F8F7CBFC074677 -:10C2300030880C303080022F06D0002F50D060E0C4 -:10C240003CE032E01CE059E06946097EE868CA003B -:10C2500080182A7C914202D28188002902D00427CA -:10C260004FE02EE0697C491C69741A99016031889D -:10C2700081800020308044E04C48A188C1802FE0BC -:10C2800029788909890116312970A1880170090A64 -:10C290004170E1888170090AC1702289681DE168D6 -:10C2A00006F072FA2089401D46E72878800980014F -:10C2B000183028702079687002207EE73B480A0415 -:10C2C00001D405271DE00289A3889A4201D00627E0 -:10C2D00017E01E222A70012249043280490C418055 -:10C2E000009800280DD0314D002228881146830087 -:10C2F000032003F0B2FE2078287107E00020308090 -:10C3000003272A48009942888A434280384699E6A2 -:10C31000F7B59AB002000C4606D0172A04D8234875 -:10C32000244B4088984202D107201DB0F0BD2378ED -:10C330005D0601D4DB0901D00820F6E700236D4635 -:10C340002B706B701D462378611C9F06931E1893FB -:10C35000531E19939BB2169302AB1793134BBF0E48 -:10C36000DE883B0006F0B2FC208511F15EF16BF136 -:10C37000A3F1C6F1F2F1FBF1EEF1EDF1ECF1F1F127 -:10C38000EBF1EAF1E9F1E8F185F1052A71D1042236 -:10C3900069460A7005490A7969460A71E178A37805 -:10C3A0000A021A436946CA80227905E0181900205A -:10C3B000FE710000FFFF00004A7061788906890E57 -:10C3C0000C2923D009DC891E0B0006F07FFC091321 -:10C3D00052155219521B521D520012291CD004DC56 -:10C3E0000E2915D01029D1D114E0162916D01829FC -:10C3F000CCD115E0800700E04007002839DA2AE1B7 -:10C400000007FAE7C006F8E78006F6E74006F4E71B -:10C410000006F2E7C005F0E7C004EEE78004ECE7B1 -:10C420004004EAE7800724D5032AAFD105206A46F5 -:10C430001070487809780002084390800BE14007AB -:10C44000F1D5062A15D31898617880B2012902D057 -:10C4500002299BD101E0022700E01027062269464D -:10C460000A7000228A8001AEA11C0236BA1C179203 -:10C4700018E0B6E04A780B7812021A433280801E28 -:10C48000891C1890B21C1691384603F05CF9169975 -:10C4900018986B469A88C919C01BB61D521C9A8001 -:10C4A000179A80B28242E5D900289CD1D3E00007D8 -:10C4B000B9D51998694682B2072008700020888093 -:10C4C000601C891D11E0437806781B0233430B8002 -:10C4D000C37886781B0233434B806E46121FB388A5 -:10C4E000001D091D5B1C92B2B380042AEBD2002A06 -:10C4F00077D1B0E0C00674D5022A72D3189808210B -:10C5000082B2684601700021C18063780371A01C6B -:10C5100017990EE04678077836023E430E80861C57 -:10C520004E606F46D21AFE88C0180831761C92B24F -:10C53000FE809342EED9DAE76FE076E065E051E005 -:10C5400046E01EE014E00AE000E0A0E0800648D5E6 -:10C5500009206A46107096801698D0800FE0400639 -:10C560003FD50A22684602708680169AC28006E08D -:10C57000000636D50B206A461070169890800291FE -:10C5800069E0C0052DD5022A7FD318980C2182B20C -:10C59000684601700021C18063780371A01C17995F -:10C5A00013E04678077836023E430E80C6788778D7 -:10C5B00036023E434E80061D4E606F46D21AFE88FC -:10C5C000C0180831761C92B2FE809342E9D98EE7FA -:10C5D000C0045AD5012A58D10D21684601708680C1 -:10C5E00039E052E0800450D5052A4ED30E23684628 -:10C5F00003708680C8788B78010219436846C18031 -:10C60000521F0281601D039025E040043DD5012AA0 -:10C610003BD10F20694608701DE0030435D44B78E8 -:10C620000E781B023343244E3381032A2DD31B2F54 -:10C6300027D011236E46337001261F4BF60330437B -:10C64000588048780B780102194368468180D21ED1 -:10C65000C280E01C029020788006800E1B280AD041 -:10C660001D2808D00021032003F099FD12484188BD -:10C67000C90BC903418068461C99F8F7A3FA2846FC -:10C6800053E610206B461870DBE70725F7E708250F -:10C69000F5E700B50022D243074997B04A80032846 -:10C6A00007D1032268460270097901710021F8F769 -:10C6B00089FA17B000BD000018190020FFB589B035 -:10C6C0000020019009981027FE4C1E4615460828A8 -:10C6D00006D0E06901F05EF8002809D03770BEE0AE -:10C6E000288809213843108013980227017016E02A -:10C6F000E169012088710521E269C9029180E1693F -:10C700008872E169F0480881E1690020887328880F -:10C7100020210843288011211398042701701398C1 -:10C720000225801C0290307806900A203070E5487F -:10C730001830049001F00DFA0020059020462C30AE -:10C7400003906DE00998102808D1022D06D00199B8 -:10C750000298A28D401A8270110AC170E08D0A9968 -:10C76000884202D901F0D5F806E0884204D1069843 -:10C77000002801D030701CE00298E18D0170090A98 -:10C78000417012980088401BC01B82B2FF20C01B62 -:10C79000904200D2024607A8009002980021C319D7 -:10C7A000E08D01F041FA3070002805D0C0B2832836 -:10C7B00058D0E08D20833EE00598002804D0206CFE -:10C7C00000790A282CD336E06846808BC119C9B29B -:10C7D0000191022D0DD01399019A4978914202D10D -:10C7E000228F824208D00191206C0178032908D061 -:10C7F00023E0084613994870206C0178042906D07C -:10C8000007E000790A2818D20120059008E0E18DA0 -:10C81000818002990198081802900198281885B221 -:10C820000399049801F098F9002804D1129800881F -:10C83000401BB84286DA022D0DD00998102806D187 -:10C8400002990198A28D081A8270110AC17012987B -:10C85000058000203070206C0078032802D0002072 -:10C860000DB0F0BD0220FBE7F8B5964A0026126D28 -:10C87000002A2ED0401F934D84B24035E88A2346CB -:10C880000833AF8AC318BB4222D88B784F781B027B -:10C8900010183B4303701B0A43700B79CF781A02C0 -:10C8A0003A438270120AC2700471220A427122460F -:10C8B000491D801D05F068FFE88AA41D001980B29B -:10C8C0008049E882096D002208180270427000E079 -:10C8D00009263046F8BD30B57A4B028840339B8A32 -:10C8E000934213D9774B1C6DA3185C781D782402F2 -:10C8F0002C430BD05C791D7924022C436404640C16 -:10C90000A41D1219028000200B6030BD822030BDB2 -:10C91000F0B585B0074600266846068155E00198C7 -:10C92000417802780D0215434179027908021043DB -:10C9300000044AD43D8003A8002301220090520243 -:10C940001946284601F070F9040044D1684601896F -:10C9500001820198417902790902114343780278F2 -:10C960001C021443AC421CD10A041AD44A0401210B -:10C97000520C89030A430096C1788078090201436A -:10C980000023204600F0C9FF040010D10199487926 -:10C990000A79000210430122D20310430871000AF1 -:10C9A000487101A904A8FFF796FF0400D1D00199AE -:10C9B00000964878097800020843694600238A896E -:10C9C000194600F0AAFF822C05D101A902A8FFF7A1 -:10C9D00082FF0400A3D06846068109E001994879E6 -:10C9E0000A79000210434004400C0871000A4871A3 -:10C9F00001A902A8FFF76FFF0028EFD0822C02D018 -:10CA0000204605B0F0BD0020FBE7F7B584B0144622 -:10CA10000646002700F079FF2A480025006D00280F -:10CA20002FD0059801282CD12046FFF771FF070071 -:10CA300027D1002E29D06846058118E00199487851 -:10CA40000978000208432080019B009558791979E4 -:10CA50000202D8780A4301029F78587839431F7838 -:10CA600000029B1D384300F058FF002805D101A9A2 -:10CA700002A8FFF730FF0028E0D0822800D1002074 -:10CA80000746002E01D00F48056500F042FF3846EA -:10CA900007B0F0BDF0B597B00021042003F07FFB94 -:10CAA000084F00243D467C8040356C73AC73287B76 -:10CAB000B96CC00008380E18B08800280DD00120CD -:10CAC000694603E02C190020012800000870306836 -:10CAD000019000216846F9F77AFBB4803C65AC828E -:10CAE000EC8217B0F0BDFE4B9864184640300173DD -:10CAF0001A803838D861CDE7F949002049880A07FB -:10CB000000D501200A06120F01D002221043CA05E7 -:10CB100001D5042210438A0501D51022104349058E -:10CB200001D520210843EE494031497B002901D03D -:10CB3000082108437047FFB5A7B00400289816469F -:10CB40001B9022D00178E6484D0642882292024688 -:10CB500040320092002D14DB8A06920E1E2A0ED05F -:10CB6000229A5205520E10D13288172A0DD3009AFC -:10CB7000927B002A09D1DB4D229AAA4205D0CA092C -:10CB800006D08A06920E122A02D003202BB0F0BDE6 -:10CB9000D348826C0098007B2590C000083810189C -:10CBA0001F9048060CD40098407B002808D00099BC -:10CBB00088731F99289808601F9884800220E5E7F1 -:10CBC000002718A90F7069460F72C54902AA0A64A6 -:10CBD000309A4A6410A90F850F861B981D4600786D -:10CBE00020908106BE4B601F24901A462C32219261 -:10CBF0002898DA691833890E1E93401C0B0006F042 -:10CC000065F81FFDFD11FD1AFD90FDFCFDFBFDFA11 -:10CC1000FDF9FDFCFDF8FDFDFDF7FDF6FDFDFDFD5B -:10CC2000FDF5FD00032C7BD10320287017226A70CC -:10CC30000022AA70E0E2052CF5D1417802780902C1 -:10CC40001143A74B10AA19831185C278807812026C -:10CC500002435A8300297DD091427BD80021184697 -:10CC600081720181491E01841E9800F072FF052027 -:10CC70002870A81C1D900220009021991E9800F099 -:10CC80006BFF002803D047E018A90870F0E2944831 -:10CC90002030807C012803D002206870102002E040 -:10CCA00001206870022022908D48303023900022AD -:10CCB00020A9239802F06DFD00282AD120A8007831 -:10CCC0002299814225D132880099801C511A8142D3 -:10CCD0001FDB83481D99C08D0870000A48701D989D -:10CCE00020A9801C1D9000981D9A801C00902398FC -:10CCF00002F04FFD20A909781D9840181D9000985A -:10CD0000401880B2009021991E9800F025FF00285D -:10CD1000CDD0009802288DD10A2018A908706CE2A5 -:10CD20006DE0072C6BD341780378090219436C4BF3 -:10CD30008446198310AB1985C37880781B02184389 -:10CD4000674B0029588305D0814203D8012118463A -:10CD5000817200E0A4E061464B7909791B020B4324 -:10CD6000038100218173104600F014FD00280FD1CB -:10CD70005B480121C26991710522C369D2029A8080 -:10CD8000C2699172C26958491181C06900218173D9 -:10CD90005349E01F08841B98C01D48621E9800F08C -:10CDA000D8FE07202870681C009001201D904C4878 -:10CDB0000021C18530E01D98012815D04848C1697F -:10CDC000897901292FD000981038C17B807B090216 -:10CDD000014300980170090A41700098801C00907E -:10CDE0001D98801C80B21D903D4809E013E2BEE111 -:10CDF0007AE1D8E00DE2A0E080E03BE01EE2B6E0A0 -:10CE0000C18D00980170090A41700098801C009043 -:10CE10001D98801C80B21D9021991E9800F09CFEE8 -:10CE2000002802D006E0818DD3E731881D98081ACA -:10CE30000428C0DA1D98012800D16DE72848C1698F -:10CE40008979012903D0828D26498A4205D1818DB5 -:10CE500000980170090A417009E000981038C17B00 -:10CE6000827B0802009910430870000A48701D98E0 -:10CE7000801CC1E1072C01D0152C78D141780378B2 -:10CE800009021943164B198310AB1985C3788078B2 -:10CE90001B02034312480029438301D0994201D960 -:10CEA0000120F1E60E480121817200210181817388 -:10CEB000052C07D024981B99C0B2491D02F043FCF1 -:10CEC0000028BAD100200649C04308841B98009668 -:10CED0000195007818AB8006800E1CAA002105E0A1 -:10CEE0002C190020FFFF000001280000FFF7E6FBDF -:10CEF0000746FE4810A9008B08857EE1032CBCD1B3 -:10CF0000402210A90A86417802780802F7491043A6 -:10CF1000088310A9088520A9009131886B1C491E3F -:10CF20008AB2002100F080FE18A90870002830D1D4 -:10CF30000B20287020A8008833E0052C9DD180218B -:10CF400010AB1986014640780B780202E7481A4375 -:10CF50000283CB7889781B021943E44B104619846D -:10CF600010AB1A85E24A914202D307208CE697E083 -:10CF70003F23DE4A9B021943118421AA0092328882 -:10CF80006B1C521E92B200F04FFE18A908700028C8 -:10CF900003D08328B1D102272FE10D20287020A8CB -:10CFA0008088401C28E120990C22C9095143C91CE2 -:10CFB0001E91A14204D92098400671D500201BE1A2 -:10CFC000417800780902014310A801851B98007878 -:10CFD00042062898C01C1D90002A62DA05206A4685 -:10CFE00010721B980078C00944D00822684602726B -:10CFF0008181A01A87B268468782289806901E9879 -:10D00000201A81B26846C1811D980490401805F02D -:10D010001CFC079006982599C0190890491E08A87D -:10D02000017102A83099F9F7D2F807460021684645 -:10D030000172002F1BD0022F18D1009808A9007B85 -:10D040000979401E884210DDA848289A836CC900DF -:10D050005A50816C08A80079C000001D0C5200983D -:10D060000099407B401C4873C7E00527EAE0062092 -:10D0700069460872002000901E980021201A209016 -:10D0800082B21B9B10A8DB1C008D00F046FC014601 -:10D0900018A80170002268460272832903D003E0B9 -:10D0A00093E00720E4E702271B98007840060ED59E -:10D0B0008E484188C90506D510AA018B128D914270 -:10D0C00001D100214162002018A9087094E0FF21DD -:10D0D000013110A80186018D8448018320990184C3 -:10D0E0001D994162132085E0052C6ED341780378A9 -:10D0F0000A021A4310A90A859446092269460A724F -:10D100000021009101222499D20311438AB2C178EF -:10D11000807809021B9B01435B1D604600F0FDFB0C -:10D1200018A90870002269460A720122520210A949 -:10D130000A86832802D0002805D099E06B48098D23 -:10D14000018302277EE06948006D002807D0204651 -:10D150001B99FFF789FB18A9087000284DD12B46B1 -:10D16000324620461B9900F024FB074645E01B98F9 -:10D17000022C4078009064D1002801D0012860D1B1 -:10D180000A2168460172009901731AAA00200099C9 -:10D19000FFF73BFC0146684641730021817302A8FA -:10D1A0003099F9F714F80746002168460172012109 -:10D1B000890210A80186022F08D04C48006C8079A3 -:10D1C000002807D018A9087020E04BE047490098D4 -:10D1D000088337E0002F03D0812018A9087031E0C0 -:10D1E0001AAA01200099FFF710FC18A9087000285E -:10D1F00003D119202870012030806846007A002869 -:10D2000004D002A83099F8F7E2FF0746002F2BD090 -:10D2100018E0062038E522993448090711D5012C79 -:10D220000FD10B2269460A72C08888810021042030 -:10D2300002F0B5FF082010A90886BFE62098400636 -:10D2400010D50327294810AA4188128E1143418026 -:10D250005005400E04D01F99289808601F988480BC -:10D26000384693E404200FE518A8007800280ED073 -:10D27000012028701B980078687010A8008DA87095 -:10D28000000AE87018A80078287105203080174837 -:10D2900010AA4188128E91434180E1E7FFB506460E -:10D2A0009FB000201B903178012088401149124A1C -:10D2B000084010A908860D494988914203D00028EA -:10D2C00004D0080702D5012023B0F0BD219D00271E -:10D2D0002F7020983C46018810A8018418A8077177 -:10D2E00000F013FB6846077202A907E02C19002022 -:10D2F0000102000009F80000FFFF0000FA48016485 -:10D3000001464031826C1A91097BC90008395718CF -:10D3100022994164307801282AD0022809D00328B4 -:10D3200079D12878800980011D302870EE48B188B5 -:10D33000C1803078022804D12878800980011B3010 -:10D34000287001A8009010A8008CEB1CC01E82B2AF -:10D35000B088002100F068FC0028E1D1B188697034 -:10D36000090AA9706946888810A9C01C08842DE1A3 -:10D37000717918A801713079012802D00228CFD123 -:10D38000E6E0D9487F2340881B010246184010ABD5 -:10D390001886802840D006DC102810D020280ED017 -:10D3A00040280AD120E0FF38013859D0FF38013831 -:10D3B0006AD0FF38FF3802387ED0052491E0D006CD -:10D3C00001D5082000E010201B9004206946087257 -:10D3D0000020888118A800900195318919AB1CAAFA -:10D3E0001B98FFF76BF977E0BF4B3289188B8242AD -:10D3F0004FD10A221B92002973D101A9009110A9D3 -:10D40000098C6B1C491E8AB2002100F00DFC18A982 -:10D4100008710B2017E0F6E0B34B3289188B82427B -:10D4200037D10C221B9200295BD101A9009110A9D0 -:10D43000098C491E8AB21946098C6B1C00F0F4FB5A -:10D4400018A908710D2028706946888810A9401C09 -:10D450000884042069460872A348008B888140E054 -:10D46000A14A3389108B834213D112231B930029C5 -:10D4700037D1536A002B05D00091128C00F04DFA81 -:10D4800018A9087113205EE097483289038B9A42ED -:10D4900001D00424E7E016221B92026D002A09D174 -:10D4A000F268002A06D002651A98328A82821A9A95 -:10D4B0000020D082002900E02FE012D1B88839681E -:10D4C000FFF7D2F918A9087100280AD1B8882B46AD -:10D4D00018AA396800F06DF90446022818D0042C07 -:10D4E00016D0B88800280FD06846007A002804D0EB -:10D4F00002A82299F8F76BFE0446012069460872DB -:10D50000386803900020B880002C5FD0052C7BD0B9 -:10D510006846007A032873D0A5E018201B900029E4 -:10D5200005D071483189018300210165D9E76E4832 -:10D530000246017E18320120FFF767FA18A9087128 -:10D540000028CED119202870012010A90884C8E72E -:10D550001A98407B002856D0307AC0001358001D1E -:10D560000193105A1D9000291AD100F0D2F906201B -:10D5700069460872002000901D980F3882B2019809 -:10D580008178437808021843019B0021DB1C00F0DE -:10D59000C4F918A90871002269460A72832830D09C -:10D5A000002118A8017110A80184012168460172A8 -:10D5B000019803901A981A99407B401E48731A9854 -:10D5C000807B002802D01A99401E887310A8008E14 -:10D5D0007F21090102468A431DD04348002200886A -:10D5E00011468300042002F038FD3F483178017174 -:10D5F00010A94088098E08433B4948800FE003E0AA -:10D600002BE002242FE00524374810AA4188128E0F -:10D610009143418027E034494A8882434A806846E2 -:10D62000007A002805D03048416C02A8F8F7CFFDF9 -:10D63000044618A80079002815D01B9868700120AE -:10D6400028702948008BA870000AE87018A8007993 -:10D650002871052110A8018405E02348416C02A827 -:10D66000F8F7B5FD044600F054F91F48408840051E -:10D67000400E20D11A98807B00281CD1B888002841 -:10D6800019D0209910AA098811842299009139682B -:10D6900018AA219BFFF74FFA044602280BD001205D -:10D6A000694608723868039002A82299F8F78FFD3E -:10D6B00004460020B88010A8018C209801802046E4 -:10D6C00002E600B50022D243074997B04A800428F9 -:10D6D00007D1022268460270097901710021F8F72A -:10D6E00076FD17B000BD00002C19002010B5394C94 -:10D6F00003780022216C012B02D0022B44D126E0BA -:10D700000B78002B01D0042B03D10A71226C03216A -:10D710001170216C83880A79D200921D8B52216C82 -:10D720000A79D20008328918C2880A80216C0389DC -:10D730000A79D2000A328B524289206C0179C900E1 -:10D740000C314252216C0879401C087120E00A74A7 -:10D75000226C81889180216CC288CA80226C0189E8 -:10D760001181226C41895181216CC068C860616C53 -:10D77000206CF8F72CFD0146022807D0206C007CB5 -:10D78000002802D1002903D0812010BD832010BDC4 -:10D79000002010BD8178012909D100880521C90226 -:10D7A000884202D0491C884201D1002070470520E0 -:10D7B000704710B51488844201D2052010BD17248B -:10D7C0001C701080421E491C581C04F0DDFF002014 -:10D7D00010BD00002C19002010B50446FEF759FFBB -:10D7E0002046FFF76EFF10BD10B58B78002B11D0CF -:10D7F00082789A4207D10B88002B0BD003E0091DD9 -:10D800008B78002B08D08B789A42F8D103880C884B -:10D81000A342F4D1002010BD812010BD10B5002915 -:10D8200002D001290DD102E00088000501E0008846 -:10D830008004800F07D001281CD0022809D00328BB -:10D8400010D0812010BD002901D0032010BD02207E -:10D8500010BDF6F754F803280CD004280AD000288D -:10D8600006D009E0F6F74BF8042803D0022803D0CD -:10D87000052010BD002010BD0F2010BDF3B5C81C41 -:10D8800080080E46800081B0B04201D08620FEBDE7 -:10D89000FE4C354626600198A08000202081E08063 -:10D8A00014E0B807A978800D0843F94904F0E6FFB1 -:10D8B000E088401CE080B80607D42089401880B278 -:10D8C00020810199081A8019A8600C352F887807E3 -:10D8D000E7D40020A072FEBDEC480C22C18800896C -:10D8E0005143081880B2704770B51346E74A45188F -:10D8F0009488AC4201D2842070BD126810180A4688 -:10D90000194604F041FF002070BDE04901208872F3 -:10D910007047DE49002088727047FFB589B09704D0 -:10D920000E460546BF0C029200F017FA040021D003 -:10D93000002069460873D548807A012812D0012159 -:10D940002046FFF76BFF002815D12078400609D547 -:10D950000221684601730582218841828682C7823E -:10D960000C9806900298000407D500273E46012532 -:10D9700001970CE001200DB0F0BD2078A178800760 -:10D98000800D0843C249019004F078FF0D460298CB -:10D9900040040AD50198A84207D12088E178800583 -:10D9A000800F00020843B04201D3AE4201D90720E4 -:10D9B000E1E7B81980B20290A84201D90D20DAE758 -:10D9C0006846007B002804D003A8F8F7FCFB002879 -:10D9D000D1D10198A8420BD12088032109028843A4 -:10D9E00002998905890F0902084320800298E07096 -:10D9F0001298002800D007800C9800280CD02078BE -:10DA0000000609D4A0683A4680190C9904F0BCFEBF -:10DA100020881021884320800020ACE7FFB59B4D73 -:10DA200081B00E46E8882F680C21009048433C18CE -:10DA30009749039804F022FF0A462889E11B84468F -:10DA40000C314018318880B28B0601D5002300E0EC -:10DA500013461818AB8880B2834202D8842005B0E0 -:10DA6000F0BD0098894D401C80B2E88021800D995E -:10DA7000002900D00C600399A170E2702188039DF9 -:10DA80008908AD058900AD0F294303252D02A9435F -:10DA90009505AD0F2D0229430425294321800C99BA -:10DAA000002900D0088001998978A171019909881D -:10DAB000A1803178890601D50B9905E0734962444C -:10DAC00092B20A81991AC919A16000212173327892 -:10DAD000920601D50020C2E700910B9B0A9A049997 -:10DAE000FFF71BFFBBE710B5044600F036F900282E -:10DAF00006D06649641ECC8000210170084610BD26 -:10DB0000012010BD002803D0401E0880002070476F -:10DB10000120704710B55D490288CB889A4201D335 -:10DB2000822010BD0B680C21514359180B88CC780A -:10DB30009B059B0F1B02234341608C7904738C88E7 -:10DB40004481C3818968521C0161028002810020E6 -:10DB500010BD012101827047FEB505460020C0437B -:10DB6000088068680F468178684681706868018817 -:10DB70006846018000218171288A2C88A04200D348 -:10DB800004462C8234E0288A401C2882301D6968B3 -:10DB9000FFF72AFE002829D139883E48814201D169 -:10DBA000601E38806888A04227D33088F1788005CD -:10DBB000800F0002084302906946301DFFF714FEF3 -:10DBC000002813D12989334881421AD000213046D8 -:10DBD000FFF724FE002809D12A890298824205D144 -:10DBE000E968B06804F0A3FD00280AD0641CA4B260 -:10DBF000204600F0B2F80600C5D1641E2C828220B7 -:10DC0000FEBD7C80B079B871B088B880308838812A -:10DC100030788007810DB078014379810298B8810E -:10DC2000B06838610020FEBDFFB585B014460F46D0 -:10DC3000059800F092F8050037D01448BE05807AA8 -:10DC4000B60D012815D000212846FFF7E7FD002872 -:10DC500029D1287840060CD5012168460170059924 -:10DC600081802988C18006814481F8F7ACFA0028B8 -:10DC700019D12888AA788107890D11438005800F62 -:10DC8000EA7800021043BE4211D005E0841900205A -:10DC900001020000FFFF0000374A914207D3611ED6 -:10DCA000814204DD0B2009B0F0BD0120FBE7864274 -:10DCB00001D90720F7E7801B82B2A24200D9224691 -:10DCC0000E98002800D002800898002804D0A86888 -:10DCD0008119089804F058FD0020E4E770B5144657 -:10DCE0000D4600F03AF800280DD001882980002C5C -:10DCF0000DD0017880788907890D01431E48814243 -:10DD000003D2012002E0012070BD0020207000201D -:10DD100070BD70B516460D4600F01FF804000DD01A -:10DD20002D882580FF2E16D0A807A178800D0843E6 -:10DD3000114904F0A3FD002E06D101E0012070BDC1 -:10DD4000FF31FF31033189B2A170A8088000890535 -:10DD5000890F08432080002070BD0849CA8882428C -:10DD600007D3002805D00C22096850430C38081846 -:10DD70007047002070470000010200008419002055 -:10DD8000F0B585B00E4605460020694608707078EB -:10DD9000FE49C00003900C58FD4F002D0ED0022DFF -:10DDA00073D0002C72D02078801E030004F08EFF08 -:10DDB00009837F7F7F83797F77727F00002C03D177 -:10DDC000F4A16B2004F07DFE2078801E030004F097 -:10DDD0007DFF09065E5E5E19365E50545E00307847 -:10DDE000062803D0EBA1762004F06BFEB8687168BA -:10DDF000806A032204F0C8FC0120694608700028EC -:10DE000035D1CEE730780C2803D0E2A1812004F090 -:10DE100058FEE0680078002806D0B8687168C06BCA -:10DE2000102204F0B1FC28E0B8681021406B04F027 -:10DE300008FDB868C16A406B0A787168F1E730780C -:10DE40000D2803D0D3A1942004F03BFE04206946A2 -:10DE5000087071684878097800020843B9684A6A0E -:10DE60005178127809021143484069468880084673 -:10DE700008E0C8A1AF2004F024FE6846007800281E -:10DE80008FD06846F5F740FD8BE727E01CE0C1A185 -:10DE9000B420F0E7B8686169406CFEF71CF8A1692E -:10DEA00000E0E168B868406CFEF715F803E0B9A13E -:10DEB000E32004F006FEB8682146406CFEF70BF83C -:10DEC000B24A039900205050022D07D0002D05D0F2 -:10DED000012D03D0AFA1EF2004F0F3FD05B0F0BD9C -:10DEE00010B501780124012902D0022910D112E0D5 -:10DEF0004268A748002182600170A4486C38C1665E -:10DF0000016741678167928902214C3001F083F9F2 -:10DF10000024204610BDFF209EA11C3004F0D1FD3E -:10DF2000F7E7F0B505469EA103C997B01491139089 -:10DF3000002108A8017595482A781030944C049067 -:10DF40002078012605903746A068130004F0BEFE35 -:10DF50000CEE073098EFF5EBEAE9E8E8E7EE217020 -:10DF60000124FF2655360D4610A80570457001F0B6 -:10DF700063F90746012803D086A1304604F0A1FDCD -:10DF800010A93846FFF7FCFE2046641EE4B20028C4 -:10DF9000EAD10A20694608706846029501F02AFA1B -:10DFA000002803D0FF207BA15E3066E00026E6E279 -:10DFB000006B0078C0072ED06846077001F01AFA8F -:10DFC000002804D0FF2073A1713004F07AFDA0680E -:10DFD000406CFDF777FF050004D1FF206DA1743080 -:10DFE00004F06FFD08984078C1006848455006204D -:10DFF0002870A068016869600069A8606448C01C56 -:10E00000E860284601F0F6F9022804D0FF2061A15B -:10E010007E3004F056FDA068006B00784007C5D53F -:10E020006846077001F0E6F9002804D0FF2059A1E6 -:10E03000863004F046FDA068406CFDF743FF050004 -:10E0400004D1FF2053A1893004F03BFD08984078AB -:10E05000C1004E48455006202870A06801686960DC -:10E060000069A8604A48401DE860284601F0C2F9EE -:10E0700002289BD0FF2047A1933004F022FD95E7B2 -:10E08000A8680028684632D001712879012833D069 -:10E09000022804D0FF203FA1AD3004F012FD3B4820 -:10E0A00010221030A96804F06FFB38481030014688 -:10E0B000103148602078C1062DD5EF21084020702E -:10E0C000032069460870314810300290684601F01C -:10E0D000B3F80446022808D0002C06D0012C04D046 -:10E0E000FF202CA1BE3004F0ECFC69462AE1077148 -:10E0F000264820304160DDE7244A04986C3AD16715 -:10E1000041608160C1600621A86803F087FA1F4959 -:10E1100010310860C9E720210843207046E758E124 -:10E1200014E1D6E0A3E046E007E000E031E2FF20A2 -:10E1300018A1E73004F0C5FC21E2172269460A72F3 -:10E140000F7089788A08297992008907890F0A4314 -:10E1500069468A70FB210A4029794907C90F89005D -:10E160000A4369468A70EA888A80826C02A96846F6 -:10E1700001F082F9002804D0FF2006A1F73004F056 -:10E18000A0FC052108A8017568460DE0FC190020D7 -:10E19000A00000207372635C736D2E6300000000AA -:10E1A00004411A8800A48000017A0187A068002633 -:10E1B000806C0F90E7E16846077001F01BF90028BA -:10E1C00003D0FD49FD4804F07CFCA068406CFDF7DD -:10E1D00079FE060004D18320F749800004F071FC29 -:10E1E000A068406CFDF76EFE070004D1F348F249C9 -:10E1F000801D04F066FCF2488068406CFDF762FE0A -:10E20000040004D1ED48EC49093004F05AFC0898A8 -:10E210004078C100EB4846500A203070287A3071AF -:10E220006868E74DB060A868806C30611720307373 -:10E2300077613046B46101F0DDF80446022808D069 -:10E24000002C06D0012C04D01120DB49400104F041 -:10E2500038FC2046316AFFF793FD297805220A40F1 -:10E26000042A00D0A2E6FB22114029702AE0059979 -:10E270004908490021708A071CD5FD2211402170F0 -:10E280000F216A46117017211171806C0290684647 -:10E2900000F0D2FF0546022808D0002D06D0012D3F -:10E2A00004D0C648C4493A3004F00BFC69462846FD -:10E2B000FFF766FD2078052101400429D2D1FB211A -:10E2C00008402070072008A90875BD4880780876A6 -:10E2D0006CE66846077001F08DF8002804D0B74856 -:10E2E000B549543004F0EDFBA068406CFDF7EAFD41 -:10E2F000060004D11320B049400104F0E2FBA068FD -:10E30000406CFDF7DFFD070004D1AC48AA495A3044 -:10E3100004F0D7FB08984078C100AA48465007206F -:10E320003070A068406870606868F760B060304620 -:10E3300001F060F8040004D0A0489F49653004F063 -:10E34000C0FB316A2046FFF71BFD2FE668460770C9 -:10E3500001F050F8002804D0984897497A3004F02A -:10E36000B0FB08984778A068406CFDF7ABFD06004D -:10E3700004D151209049C00004F0A3FBA068406C78 -:10E38000FDF7A0FD040004D18C488B49823004F0D5 -:10E3900098FB8C48F900465008182A694260092009 -:10E3A000307068687060A868B060A889B0818548DE -:10E3B0006C3830611030B4617061304601F01AF889 -:10E3C000022804D07D487C49903004F07AFB2F75F8 -:10E3D000ECE57C4B00212033197002216A46117054 -:10E3E00001932979002902D0184601709BE07449F5 -:10E3F00003220C314968FB230A708A7800259208B1 -:10E4000092001A408A70027A1207D20F4A706D4A3F -:10E4100020325560C37ACB70837A13724469537A81 -:10E4200024785B08E4075B00E40F2343537284699C -:10E43000D460FD242340C4692478E407A40F234357 -:10E440005372036A13614D710D71437A5C4A9C07E4 -:10E450000C32A40F1268012C04D19478A407A40FE5 -:10E46000012C1DD09B089B00437293785B0702D45C -:10E47000437A5B0728D5037A13AD5B075B0FDC009B -:10E480005B00E318147864001B19DBB2DC082C5D18 -:10E490005D076D0F06235B1BDC40A3079B0F14E099 -:10E4A000037A54795B065B0F1C404C711379062587 -:10E4B0002B400B71DB002343414C63708B789B082E -:10E4C0009B005B1C8B70D0E700238C78FB252C40D5 -:10E4D000457A6D07ED0FAD002C438C70047A64070C -:10E4E000640F0C705178012908D1017A090705D50C -:10E4F000032108A801750221017614E0022B1ED029 -:10E50000012B21D02F4B00216C3B049AD96751601D -:10E510009160D16019467C310A4610325160417ACF -:10E52000FB2211404172684600F086FE040021D0B3 -:10E53000012C20D02049244804F0C3FA1BE003201A -:10E5400008A908750F76EEE70598000704D5C320E3 -:10E550001949800004F0B5FA1A4C0D211034E01C62 -:10E5600004F06FF9204610304460022008A90875B5 -:10E570000E94D8E7002669462046FFF701FC08A85C -:10E58000007D002802D00DA8F5F7BEF9304617B07F -:10E59000F0BDCB2008498000CCE5F0B5054697B02A -:10E5A0000C460020694608700548064E2F78483E04 -:10E5B000017882680AE0000094E10000090200008E -:10E5C000A0000020FC1900201F0300003B0004F005 -:10E5D0007DFB0BA8820724394A6977778D9AA800BA -:10E5E0002B20694608730CA903A8FDF7A1FC00289D -:10E5F00003D05349534804F064FA53490D9804F08A -:10E600003DF952480160524869680160AA68426059 -:10E6100001910820694608708CE08A0610D5DF2237 -:10E620001140017003202070484810304168A160FB -:10E630004068002802D00020207177E00120FBE72D -:10E64000102256E02B2069460873404903A85C3924 -:10E65000FDF76EFC002804D03A483949293004F00F -:10E6600030FA04201BE02A206946087303A8102210 -:10E670000230696804F088F807A810220230A968FF -:10E6800004F082F8314903A85C39FDF751FC0028F9 -:10E6900004D02C482A493A3004F013FA052020709F -:10E6A000666043E02A79002A02D0012211430170FA -:10E6B00005206946087028798880A868029039E0AA -:10E6C000106B4023018819430180106C6968102287 -:10E6D00004F05AF82AE0FB22114001700620694636 -:10E6E0000870A96868680291019023E0CB0703D005 -:10E6F0000222114301704AE70F2020701720207179 -:10E70000906CA06012E0537A9B0706D0126B44789D -:10E710001388FF3401342343138004221143017012 -:10E7200004E0084806497C3004F0CBF968460078DC -:10E730000028E0D06846F5F7E7F828E701207047A1 -:10E7400094E100004D03000040420F000C1A00202D -:10E75000AC00002070B504780D460646230004F096 -:10E76000B5FA0B1C181C1C1C1C07181C1C181C00C0 -:10E770000021052001F013FDB068007805280CD0B9 -:10E78000FA480022008811468300052001F065FC4C -:10E7900003E00021052001F002FD002D0ED0002035 -:10E7A000287029463046FFF7F8FEF1482978005DC9 -:10E7B000884201D1032070BD022070BD0021304687 -:10E7C000FFF7EBFE002070BD30B5E8494B68497A91 -:10E7D0000A0111460C315C5C032C0CD00446002568 -:10E7E0002034257125725C5CA500AA18641C5C5459 -:10E7F0009850032030BD062030BDF0B504462646B3 -:10E8000020360D463279012008218FB0002A0CD025 -:10E81000012A21D0022A2BD0032A04D12A78052AE2 -:10E8200001D1297000200FB0F0BD01203071606867 -:10E8300000280AD0A0690170616841602169816087 -:10E840006169C160FFF7C0FFEDE70720287020690C -:10E8500068606069A86009E029780729E3D102208F -:10E86000307105202870C248203868600320DAE73C -:10E8700029780529D7D1A08910280AD9103880B263 -:10E88000A081A1681023091803A86A6800F033FE6C -:10E890002DE0102804D0C1B20BAA1020A76809E00F -:10E8A00010232269A16817E0491EC9B2401EC0B2F8 -:10E8B0007B5C13540029F7D100280AD0401EC0B257 -:10E8C00080211154002102E0401EC0B211540028E2 -:10E8D000FAD1626910230BA907A800F00CFE1023DF -:10E8E00007A903A86A6800F006FE0320307160687B -:10E8F000019003A8029005206946087029466846E1 -:10E90000FFF728FF8FE7F0B5044626460D46203670 -:10E91000317901208DB000290BD0012938D002298E -:10E9200005D12978052902D10920287000200DB0D1 -:10E93000F0BD217D6846CA07D20F02738807C10F58 -:10E9400068460174012203A905A800F0CCFD04A9C2 -:10E95000012205AF481D00F0C6FD0722B81CE16882 -:10E9600000F0C1FD07A807220130216900F0BBFDBE -:10E970006068019009A80290102305AAA16800F020 -:10E98000BAFD01203071052168460170294621E059 -:10E9900029780529CBD1062203A8E16900F0A3FD5F -:10E9A00004A806220230A16900F09DFD042106A8FA -:10E9B00000F091FD6068019007A80290102303AA5F -:10E9C000696800F098FD02203071052069460870E2 -:10E9D00029466846FFF7BEFEA9E7F0B5074685B0B1 -:10E9E0000C460020694608703E466248203632795F -:10E9F0008179133801250078130004F067F9180DA8 -:10EA0000FEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EF9E -:10EA1000EEEDECEBEAE9E8E7B968039100291BD0D9 -:10EA2000012269460A7003220A710A224A71396971 -:10EA30000291397900297DD0039A1278002A7AD080 -:10EA40000C2A78D2130004F041F90BF009F0354D8F -:10EA50008498B1F2EEEDF0000020BEE30021062024 -:10EA600001F09DFB3879072866D1424D133D287887 -:10EA7000022802D000287FD101E0002028700398EE -:10EA80000079C11F0A2901D30A249AE16870394824 -:10EA90000722C01F039900F026FD01203071287065 -:10EAA0000220694608703348801F01903869401C75 -:10EAB00002903BE211293DD12E4D133D0228DAD1BF -:10EAC00068686978007A884201D9062479E1039957 -:10EAD00026481022491C303800F005FD032028701C -:10EAE000022046E11129E6D1224C133C0428C2D170 -:10EAF0000520207003991D481022491C203800F081 -:10EB0000F2FC062030717869032101706268516857 -:10EB1000416016492039816021460C31C160C91D10 -:10EB20000161017D537A49084900DB07DB0F194376 -:10EB3000017502E064E34AE387E1D3688361FD2362 -:10EB40001940537A9B07DB0F5B001943017511696C -:10EB500079E10229AFD1002868D005206946087103 -:10EB60000398407848713869029045E3601A0020A4 -:10EB70004C2D0100C700002073E011299BD1F84CF7 -:10EB800006286ED1A0680399406B1022491C00F042 -:10EB9000AAFC0620694608703869029000200871B6 -:10EBA00001466846FFF7D6FD072058E00B299AD1A9 -:10EBB000EB4C07287ED1A0680399C06A0222491C49 -:10EBC00000F091FCA0680822006B17E00EE10AE358 -:10EBD000F3E2D3E2B9E2AEE28EE265E24FE248E26E -:10EBE00028E2FDE1E7E1D0E1C6E1BFE1ADE16DE1A1 -:10EBF0004AE12BE1DCE0BFE0B0E076E00399C91C1C -:10EC000000F071FC0621684601703869029000210D -:10EC100068460171FFF79EFD20461330417949088F -:10EC200049003EE041E01DE001E05CE0E2E2112944 -:10EC300090D1CB4C08283DD1A0680399806B10225D -:10EC4000491C00F050FC06206946087038690290A3 -:10EC50000020087101466846FFF77CFD09202070FE -:10EC6000BDE227E0082989D1BD49092822D10398AE -:10EC700042788868C16B0A700399006C0622891C6F -:10EC800000F031FC062168460170386902900021CD -:10EC900068460171FFF75EFDB14813304179FD22EE -:10ECA0001FE041714FE230717EE01129C0D1AC49C3 -:10ECB0000A2801D0082484E088680399406C102257 -:10ECC000491C00F010FC062168460170386902906A -:10ECD000002168460171FFF73DFDA14813304179DD -:10ECE000FB221140DDE707246BE0217802297DD16A -:10ECF0009B490128FBD162684A6014780846002CC1 -:10ED00005DD106216A46117039690291072111719E -:10ED1000029902240C70CA785207520FCA704B79BC -:10ED20005B075B0F4B718B795B075B0F8B71D207B6 -:10ED300001D18A714A7105460A794078824200D22F -:10ED40006A7087480722133000F0CDFB00202C703A -:10ED5000307101466846FFF7FDFC40E22178042946 -:10ED6000C5D1032871D108227E48616800F0BBFB41 -:10ED7000032030710420E3E121780429B7D1784FD2 -:10ED80000328B4D1774808220830616800F0ABFB53 -:10ED90000420307178684168002907D00321217070 -:10EDA000002121714068A060032531E20320C7E102 -:10EDB000207803289BD1207900281BD00446002C02 -:10EDC00014D0062168460170386902900221684615 -:10EDD0000171029805210170447000216846FFF717 -:10EDE000B9FC012168460170042100E0A2E1017133 -:10EDF000447105E25A49A06849680028486001D179 -:10EE000059484860052030717869032202704A68C9 -:10EE10004260544A8260524A0C32C260D21D026182 -:10EE2000027D4B7A5208DB075200DB0F1A43027552 -:10EE3000CB688361FD231A404B7A9B07DB0F5B0095 -:10EE40001A4302750969C16194E1F2E02178092948 -:10EE500086D14349032891D10420087006206946D1 -:10EE6000087038690290112008710298032101701E -:10EE7000401C1022616800F036FB00216846FFF755 -:10EE800069FC00203071AAE12178092992D1052876 -:10EE900090D13449626820391020401EC0B20B5C0A -:10EEA000145CA34203D000200424307189E70028B9 -:10EEB000F3D107203071786904210170284949682D -:10EEC0004968416027498160103952E120780A2859 -:10EED000BED106216846017038690290112168464A -:10EEE0000171029804210170401C10221D4900F09C -:10EEF000FAFA00216846FFF72DFC194810214078E6 -:10EF00006268091AC9B2101800F0E5FA6068019049 -:10EF100013481330C178C9070FD08179002902D175 -:10EF20004079002809D00820307109E1214668465F -:10EF3000DFE0054601287CD06AE1072069460870B9 -:10EF400000216846FFF706FC4BE120780E289DD192 -:10EF50000348616881604969407808700920A2E629 -:10EF6000B4000020501A00202C2D0100C80701D049 -:10EF70000A20E3E00F2096E620780F2859D1A068F8 -:10EF80003861207938730B20F3E620780428F5D116 -:10EF90006168F84C0822A068C06900F0A4FA0C204F -:10EFA000307178690722B9690270A268D36843603A -:10EFB000D2698260DDE020780D28DFD1ED4D6168F7 -:10EFC000A86802230269806900F095FA0D2030716B -:10EFD000786906210170A9688A68426009695FE062 -:10EFE00020780C28CAD1E34D6168A8686A78006A65 -:10EFF00000F079FA6878AA681021091A126AC9B271 -:10F00000101800F068FA062168460170386902900D -:10F01000112268460271029810220170A968401CF2 -:10F02000096A00F060FA00216846FFF793FB0E20A2 -:10F030005AE0A2E020780F287CD1062069460870AB -:10F04000386902900B200871029C0720C94D20707E -:10F05000A86802228169601C00F045FAA8680822AD -:10F06000C169E01C00F03FFA00216846FFF772FB1F -:10F0700080E7880701D5102060E0132013E6207890 -:10F080000F287AD1A0683861207938731120307147 -:10F09000786906210170B7498968C9684160B64935 -:10F0A0008160B549091D64E020780C2865D1B14D17 -:10F0B0006168A8681022406A00F015FA06216846C7 -:10F0C0000170386902901121684601710298082187 -:10F0D0000170A968401C496A102200F004FA00215E -:10F0E0006846FFF737FB122030710921684601702E -:10F0F0002146FFF72FFB1CE720780F281AD10621A5 -:10F1000068460170386902900821684601710298CA -:10F1100009210170974989680A78D207D20F427095 -:10F1200049680622801C00F0DEF900216846FFF7DE -:10F1300011FBA2E769E0480705D5142030710920CA -:10F1400069460870F2E61620ADE520780F2853D105 -:10F15000A0683861207938731520307178690621EC -:10F160000170844989688A684260096981608249BE -:10F17000891DC160FFF728FBDBE63DE020780C2805 -:10F1800043D161687B4C1022A068806A00F0ABF923 -:10F1900006206946087038690290112008710298AB -:10F1A0000A210170A168401C896A102200F09BF9B5 -:10F1B00000216846FFF7CEFAC5E76E481330407964 -:10F1C00000280ED0C10703D06A480621017006E06E -:10F1D000800701D5082000E00A2066490870002554 -:10F1E00016E017205FE56349002805D00020307144 -:10F1F00008700A206946087068460078002804D024 -:10F2000000216846FFF7A6FA00255A480021017040 -:10F21000284605B0F0BD10B5584BFF245C7258600D -:10F2200019721A80002204E0491EC9B20B010C3386 -:10F23000C2540029F8D110BDF0B5504E0546717A80 -:10F2400001208DB0FF2971D00127727A73681101F6 -:10F250005C180C31595C8900091F64586A70217868 -:10F260000B0003F033FD0B960709272C59818D4ABB -:10F270004F5492002F7075E0214620310A91097990 -:10F280000120002902D001296DD10EE060680190B3 -:10F2900005A802900D21C01C00F01DF9032205A84D -:10F2A000A16800F020F90A984EE02978052974D168 -:10F2B000062156E029462046FFF725FB69E0214656 -:10F2C0002031069109790120002902D0012964D159 -:10F2D0000EE06068019007A802900822E16800F043 -:10F2E00002F9082209A8A16800F0FDF806982BE0B1 -:10F2F0002978052951D10A2133E02946204600F01A -:10F3000005F946E029462046FFF777FA41E029460D -:10F310002046FFF762FB3CE0214620310591097948 -:10F320000120002903D0012937D116E056E060689A -:10F33000019007A802900822A16800F0D4F80821E3 -:10F3400009A800F0C8F805986946077105200870FB -:10F3500029466846FFF7FEF91BE0297805291CD1EC -:10F360000B212970002018E02946204600F014F9EE -:10F370000FE00000B4000020242D0100601A0020DE -:10F380002946204600F038F903E029462046FFF7D9 -:10F39000D5F9002801D001280CD12562717A736853 -:10F3A00009010C315A5C521E1206120E5A5401D039 -:10F3B00003204AE70328FCD0737A726819011D0103 -:10F3C0000D312C46515C7172FF270D3417550C35E9 -:10F3D000545D002C02D0FF2903D173720DB0F0BD33 -:10F3E00021460C010D34145DFF2CF9D109010D31BA -:10F3F0005354F3E770B5A24C0546607A21460346A4 -:10F400004A6811E0010108460C30105C08E0401E1B -:10F41000C0B286008E199659AE4201D1042070BD4B -:10F420000028F4D10D31505CFF28EBD19448002125 -:10F43000007A01E0491CC9B2884204D90E010C3699 -:10F44000965D002EF6D1884201D8052070BD0801D6 -:10F450000D30135461722846FFF7B6F9032806D021 -:10F46000617A626809010D31515C617270BD284694 -:10F470002830FFF7E1FE70BD10B504780123012CA0 -:10F4800014D10C78022C11D30B23137083785B07F3 -:10F490005B0F537002220A708088002805D0830019 -:10F4A00000221146062000F0D8FD0023184610BDAA -:10F4B0000EB50022012105280AD0062807D168468A -:10F4C00001700221017142710021FFF766F80EBD43 -:10F4D00068460170F6E7002202E0491EC9B24254B4 -:10F4E0000029FAD1704703E0521ED2B28B5C8354DC -:10F4F000002AF9D1704730B505E05B1EDBB2CC5C69 -:10F50000D55C6C40C454002BF7D130BD3EB50446E9 -:10F5100020300D4602790121002A02D0012A39D17A -:10F520000EE06168019157490291012101710520A6 -:10F530006946087029466846FFF70CF9014629E03C -:10F540002878052826D169681022A06800F087F87D -:10F550006868C07B000606D54A4AA06810231032AE -:10F560000146FFF7C8FF1022A168E06800F077F8B5 -:10F57000A068C07B000606D5424AE068102310321E -:10F580000146FFF7B8FF07202870A0686860E068B0 -:10F590000021A86008463EBDF0B5044626460F4649 -:10F5A00020363179012089B0002909D0012905D1FF -:10F5B0003978052902D10C203870002009B0F0BD3F -:10F5C000606803AD01900295022203A8A168FFF7CD -:10F5D0008AFF0222A81CE168FFF785FF0C21281D85 -:10F5E000FFF779FF01203071052069460870394620 -:10F5F0006846FFF7AFF8E1E710B5034620331C7902 -:10F600000122002C04D0012C10D0022C25D11EE0A8 -:10F6100001211971C16806220A70406848601948C2 -:10F62000801F8860801CC86008460CE00C780C2C99 -:10F6300013D102221A71C268052313704968516000 -:10F64000806890601046FFF7BFF8024605E0087832 -:10F650000B2802D10D2008700022104610BD10B5F5 -:10F66000002409E00B78521E5B0023430370401C0A -:10F670000B78491CD2B2DC09002AF3D110BD00007E -:10F68000601A00202C2D010070B50D46040012D028 -:10F69000002D10D02101284603F0D3F81022544940 -:10F6A000284603F071F8524801210838018044804F -:10F6B0004560002070BD012070BD70B54C4E002427 -:10F6C0000546083E11E0716820014018817BAA7B45 -:10F6D000914209D1C17BEA7B914205D10C22294696 -:10F6E00003F025F8002806D0641C30888442EADB49 -:10F6F0000020C04370BD204670BD70B50D460600A9 -:10F700000AD0002D08D03A4C083C20886188401C63 -:10F71000884203D9042070BD102070BD3046FFF729 -:10F72000CCFF002801DB0F2070BD2088616800013C -:10F7300040181022314603F027F82088401C208012 -:10F740002870002070BD70B514460D001FD0002C2D -:10F750001DD00021A170022802D0102817D108E086 -:10F76000687829780002084311D00121A170108027 -:10F770000BE02846FFF7A1FF002808DB401CA07023 -:10F78000687B297B000208432080002070BD012097 -:10F7900070BD70B5054614460E000AD000203070CA -:10F7A000A878012807D004D9114908390A8890425D -:10F7B0000BD9012070BD002C04D028782070288837 -:10F7C000000A50700220087010E0002C0CD049682C -:10F7D0000001411810391022204602F0D5FF287888 -:10F7E00020732888000A607310203070002070BDDC -:10F7F000D8000020734909680160002070477149F2 -:10F8000008600020704701216F4A704B002803D028 -:10F81000012805D06E48704791630020187001E000 -:10F82000D1631970002070476A4901200860684858 -:10F83000801C70470422684B6649002805D05A6036 -:10F84000086901221043086108E008694008400087 -:10F8500008619A605C490020C031886000207047D0 -:10F860005C490622002808D0012809D002280DD0C2 -:10F8700003280FD05648401C70470869904302E0A7 -:10F8800008699043801C0861002070470869904314 -:10F89000001DF8E708691043F5E74E494A6A02433C -:10F8A0004A62002070474B494A6A82434A620020FC -:10F8B00070474849496A0160002070474549CA6954 -:10F8C0000243CA61002070474249CA698243CA6143 -:10F8D000002070473F49C96901600020704730B57A -:10F8E0000546002072B601463A4A384C4032002D97 -:10F8F00011D00123012D0CD0022D02D0072062B6B9 -:10F9000030BDA3706478002C01D09363F7E7916356 -:10F91000F5E7A170F9E7A170F9E72F4904208860A5 -:10F9200029490020C03188602849012008702B49EE -:10F930000A688023120A12021A430A6028490860E2 -:10F94000704722480078704770B5EFF31080C50704 -:10F95000ED0F72B61D4C6078401C0006000E607002 -:10F9600003D120A1CC2003F0ACF86078012806D1A7 -:10F97000A078002803D01749012040318863002D6A -:10F9800000D162B670BD70B5EFF31080C507ED0F02 -:10F9900072B60E4C6078002803D112A1DC2003F06F -:10F9A00090F86078401E0006000E607006D1A078C6 -:10F9B000002803D00749002040318863002D00D182 -:10F9C00062B670BD0004004040000040E800002026 -:10F9D00004200000000500400003004000E400E0B7 -:10F9E00000E100E07372635C736F635F706F776553 -:10F9F000722E63008107C90E002808DA0007000F85 -:10FA000008388008B94A80008018C06904E080087E -:10FA1000B74A800080180068C8400006800F704711 -:10FA2000B44948788978884201D3401A02E02122FB -:10FA3000511A0818C0B27047AE4923314878897806 -:10FA4000884201D3401A02E02122511A0818C0B29C -:10FA50007047A849463148788978884201D3401ACE -:10FA600002E02122511A0818C0B27047A04810B510 -:10FA70000C300168FF22120291430122D20311438C -:10FA800001609C49002023314870887023394870F8 -:10FA90008870463148708870974801F0FCFD9648A0 -:10FAA000401C01F0F8FDF2F723FE00F015F910BD3F -:10FAB00020207047B4E770B50C4605460026FFF7D6 -:10FAC000AFFF8C49A04214D30A46203A00232046B7 -:10FAD000641EE4B200280BD08878105C2870887807 -:10FAE0006D1C401CC0B288702128F0D18B70EEE7ED -:10FAF000012600F0F1F8304670BD202070479BE7EA -:10FB000070B50C4605460026FFF796FF794923316C -:10FB1000A04214D30A46203A00232046641EE4B2D1 -:10FB200000280BD08878105C287088786D1C401CE9 -:10FB3000C0B288702128F0D18B70EEE7012600F06A -:10FB4000CBF8304670BD202101700020704710B501 -:10FB50000446FFF77EFF2070002010BD70B50C46F4 -:10FB60000546FFF776FF63494631A04215D30A46A2 -:10FB7000203A00232046641EE4B200280BD0887887 -:10FB8000105C287088786D1C401CC0B288702128D9 -:10FB9000F0D18B70EEE7002400E0584C00F09CF8A8 -:10FBA000204670BD70B50C460546212904D9FF20BA -:10FBB00053A1473002F085FF4C484068103840B2EE -:10FBC000FFF718FFC6B20D20FFF714FFC0B2864240 -:10FBD00007D2FF204AA14D3002F073FF01E0F2F797 -:10FBE000C7FD21462846FFF766FF0028F7D070BD05 -:10FBF000F8B5404E07462336B1787078212200F0E0 -:10FC000060F8354623353B4C00280ED0A17860784B -:10FC1000212200F056F8002814D0A9786878212213 -:10FC200000F04FF800281AD025E032497078C91C3E -:10FC30000F547078401CC0B2707021281BD1002076 -:10FC4000707018E02B49607820390F546078401CA0 -:10FC5000C0B2607021280ED1002060700BE02549F1 -:10FC6000687826310F546878401CC0B2687021282B -:10FC700001D100206870B1787078212200F021F85D -:10FC800000281DD0A1786078212200F01AF8002801 -:10FC900016D0A9786878212200F013F800280FD038 -:10FCA000F2F748FD144801F0FEFC012149038842A7 -:10FCB00003D013A1C12002F004FF0F4801F00BFD97 -:10FCC000F8BD401C884205D0904201D1002901D0E6 -:10FCD000002070470120704710B5074801F0E3FC91 -:10FCE000002801D1F2F715FD10BD000000ED00E085 -:10FCF00000E400E08C1A0020EB0000200720000048 -:10FD00007372635C736F635F72616E642E63000075 -:10FD100010B5284801F0BFFC002803D026A11D2003 -:10FD200002F0CFFE2348401C01F0B5FC002803D0B0 -:10FD300021A1212002F0C5FE10BDF1B5224D6F6852 -:10FD400001261C4801F0AFFC1A4C002803D1002604 -:10FD5000601C01F0C0FC1D4A1D490120506000BF1D -:10FD600000BF00BF00BF00BF00230B604B60009BC3 -:10FD70006B60106000BF00BF00BF00BF00BF08681D -:10FD8000002802D148680028F9D048680028E4D14A -:10FD9000002E04D06F60601C01F085FC07E0601C41 -:10FDA00001F081FC0028D3D1024801F094FC00202E -:10FDB000F8BDC2E7ED0000207372635C736F635F90 -:10FDC0006563622E6300000000E5004000E0004033 -:10FDD00000E1004030B5EFF31081CC07E40F72B6BC -:10FDE0001D4A116910230D461D431561002C00D1D9 -:10FDF00062B61A4DC406E40E0120A0402C680442ED -:10FE00000DD0C8060AD4EFF31080C007C00F72B639 -:10FE1000116999431161002800D162B630BD20BF3D -:10FE200040BF20BFEAE70E4908784A78401CC0B2BC -:10FE3000904200D008707047084A094820BF40BF70 -:10FE400020BF4178037843701368002B02D10378F8 -:10FE50008B42F3D00020704700ED00E000E200E0AC -:10FE6000EF000020FEB5F44C07466068FF213E011C -:10FE700081552178FF2913D00901083141583246B4 -:10FE8000491E083209020192090A805800F0CBF994 -:10FE9000002802D02478254615E06168207888552E -:10FEA0002770FEBDE448426801981158280100906F -:10FEB0000830105800F0B7F9002806D1DE482C466B -:10FEC000416800980D5CFF2DECD1DB4821014068B2 -:10FED00085554754FEBD70B5D74A04460020157AB3 -:10FEE00053680AE00201561C9E5DA64203D10C3203 -:10FEF0009A588A4204D0401CC0B28542F2D8FF20F2 -:10FF000070BDF8B5CC4F3E7801F042FB0146FF2EA4 -:10FF100071D03401254678680835405900F083F9DE -:10FF200002280CD97868405901F025FB01F030FB1C -:10FF300001467868405900F076F902285BD8BE493E -:10FF40004868025D0A70A11C425C002A0CD0521E57 -:10FF5000425441590122D20589180902090A415126 -:10FF60003046FFF77FFF30E0631CC25C0092221D29 -:10FF700094468258002A10D001239B029A420FD93E -:10FF80009205920D43595703DB191B021B0A43517B -:10FF90006346C3589A1A920A09E0FF21C1540AE045 -:10FFA000435952039A181202120A42510022425433 -:10FFB0003046FFF757FFA0480C344168C2680098EC -:10FFC000095980001258009890479B4C2078FF28D0 -:10FFD00011D0000161680830085801F0CCFA01F036 -:10FFE000D7FA01462078626800010830105800F006 -:10FFF0001AF9022886D3F8BDF8B51C4615460E46F8 -:020000040001F9 -:100000000746FF2B03D38DA1D12002F05AFD8A4869 -:10001000FF21C760456004720674017000224270BF -:10002000104604E00201521C401CA954C0B2A04278 -:10003000F8D3F8BD70B5804C06466578207C8542C3 -:1000400003D37EA1E42002F03CFDE068A900465005 -:100050006078401C6070284670BDFFB581B01D46B9 -:10006000FF2401F095FA744F064679780198814291 -:1000700003D872A1F22002F024FD6F480021037A18 -:10008000406810E00A019446521C825CFF2A25D089 -:10009000019FBA4205D162460C328758029A9742B4 -:1000A0001ED0491CC9B28B42ECD8FF2C18D02101BC -:1000B0004A1C019B83540B460C33029AC250039B8B -:1000C0005D4F0022012B0ED00B1DC25001239B025D -:1000D0009D4216D9AA05920D08D008E00C46E0E72B -:1000E000FF2005B0F0BD0B1DC550EFE71A465303C6 -:1000F0009B190E461B0208361B0AAA1A8351920A44 -:1001000009E0002D00D101256B039B191D022D0A6A -:100110000B460833C550891C42543D463E78204664 -:10012000FFF7A0FE2878B04214D0000169680830BB -:10013000085801F020FA01F02BFA29786A680901C1 -:10014000083152580146104600F06DF8022801D2DD -:10015000FFF7D7FE0198C4E770B50C46054601F0DD -:1001600017FA064621462846FFF7B5FEFF2814D0A9 -:10017000314D04012046696808300858314600F0C6 -:1001800052F80121090340186968A41C095D400B5D -:10019000002901D08902081870BD002070BDF3B598 -:1001A00081B00F460198FFF796FEFF282AD0224E15 -:1001B0003578726829460C4604E0844205D025460D -:1001C0002301D45CFF2CF8D11CE0FF2C1AD0A542EF -:1001D0001CD10801105C3070FF2815D000010830D8 -:1001E000105801F0C8F901F0D3F90146307872686F -:1001F00000010830105800F016F8022806D2FFF768 -:1002000080FE03E00020FEBD01F0BDF939460198F3 -:10021000FFF7A2FF22017168FF23541C0B558A5C73 -:100220002B01CA54FEBD401A00020121000AC90573 -:10023000884200D900207047D81A00207372635C8E -:10024000736F635F74696D65722E6300F0B500248F -:100250001C4A01211C4B0803546018601B4B1C6096 -:100260001B4C20601B480469E443E406E61704695C -:10027000761C10252C430461174C6160174D2960D2 -:1002800000E020BF1F68002FFBD0002E03D10769BC -:100290001026B743076190688005906801D5104A21 -:1002A00010436960A160002119600121084A090317 -:1002B0001160F0BD10B50446FFF7C8FF20600020B4 -:1002C00010BD000000C5004080E100E000C100401A -:1002D00080E200E000ED00E000C3004000C000400C -:1002E00000FCFFFF70B51F490A68002A17D00023E1 -:1002F0001D4601244A68521C4A60092A00D34D60F9 -:100300000E792246B2400E6816420AD072B60B68C9 -:1003100093430B6062B649680160002070BD052000 -:1003200070BD5B1C092BE5D30FA1362002F0C9FB81 -:10033000F5E701201049800508607047EFF3108150 -:10034000CA07D20F72B601218140064803681943DB -:100350000160002A00D162B6EBE70248002101608B -:1003600041607047F40000207372635C736F635FD9 -:100370006576742E6300000000E200E00120810732 -:100380000860704701208107486070471048C068C6 -:10039000C00700D0012070470D488068C00700D01A -:1003A000012070470A484069C00700D0012070470B -:1003B0000748C069704706498A69D20306D589692A -:1003C0008907890F814201D10120704700207047C1 -:1003D00000040040F8B5FE4C607A217A88421BD0B8 -:1003E0000126FC4D0027207A215C14200A46424356 -:1003F0005019037C052B10D0062B19D0072B23D0C6 -:10040000437C012B2BD02120F3A1400102F059FBAA -:10041000617A207A8142E6D1F8BD0674207A401CC8 -:100420004007400F2072491CC8B2AA58022109E0B7 -:100430000674207A401C4007400F2072491CC8B245 -:10044000AA5803219047E3E70674207A401C40072E -:10045000400F2072491CC8B2AA580821F2E747741D -:10046000207A401C4007400F2072491CC8B2AA588D -:100470000721E7E770B5DB4D05202871DA48002435 -:1004800044700470183044720472D84801F003F9C3 -:10049000D7480474AC71D748611E41606C70847792 -:1004A000C4772C704477D448022104704470D34838 -:1004B000047528300470491EFAD10120F2F7DAF9E8 -:1004C0000020F2F7D7F90120A870F2F765F8CC48C0 -:1004D000F2F774F8CB4C2070CB48F2F76FF86070ED -:1004E000F2F76CF970BD10B5F2F793F9C54C2078AE -:1004F000F2F782F86078F2F77FF8BA4CE0780028DB -:1005000005D0FFF740FAF1F7A8FE0020E07010BD1B -:1005100070B5B44CA078002805D0FF20AEA1B23051 -:1005200002F0CFFA70BDA079002804D1FF20AAA163 -:10053000953002F0C6FA0125A5700026A671207933 -:10054000042114225043A34AAA4C80180174606805 -:10055000401C04D0481F60600120F2F78BF9002096 -:10056000F2F788F9F2F76CF9F2F773FAF2F7F8FAA2 -:10057000A1480078022804D0032804D1E07F002895 -:1005800001D0A57700E0A677F2F74FFA70BD0346D9 -:1005900090490420142242435218203A127F002A24 -:1005A00004D0401E0006000EF4D1704714224243CE -:1005B00051180A46403AD362012220390A7770471F -:1005C000012805D0032805D1002903D10020704758 -:1005D0000029FBD010B4874C00236377864A00289B -:1005E00090700CD002280AD007291AD20B007B4445 -:1005F0001B79DB189F441505070D0F111300D370ED -:1006000003E01B2000E03A20D0700120607710BC8E -:1006100070475820F8E77720F6E79620F4E7B520F2 -:10062000F2E710BC0020704710B573484078F2F72D -:1006300014FA80B210BD411E1422504310B5654A11 -:100640008418203C032902D8207F002803D162A10E -:100650006E4802F036FA207F012804D001205EA106 -:10066000400202F02EFA0020207710BD70B55E4CDB -:1006700060782178884201D1012500E00025F2F759 -:1006800088F9F2F7EAF961782278914201D10121E3 -:1006900000E00021A942EBD170BDF7B58CB0064651 -:1006A0000D98401EC1B20090029114204143494868 -:1006B0000D1828460195007C2D1D07282BD1444F8D -:1006C00000203C7A797AA14222D03A5D02998A428E -:1006D00007D1002803D040A14D4802F0F2F90120D3 -:1006E00001E0002804D0611C4907490F795C3955A5 -:1006F000641C6407797A640FA142E6D1002807D010 -:10070000787A002802D0787A401E00E007207872BC -:100710000199012008740099324C0D9803290FD8D3 -:10072000142148432B4940182038007F002807D067 -:100730000198007C012807D00E98C07A012807D0C4 -:1007400025A1344802F0BDF90E98C07A012839D1AC -:100750000198204B007C02280FD01D4C607A217A32 -:10076000401C4007400F884203D11BA12A4802F0D9 -:10077000A8F901990120487434E12079029A0146D0 -:10078000904206D0014614277843C018807C9042DE -:10079000F8D12279824208D1217914225143C91813 -:1007A000897C21710121617107E014224243D21832 -:1007B00014277943927CC9188A7414220521504366 -:1007C000C01881740E98007A06283BD226E00000FB -:1007D000D41B0020EC1A00207372635C72656D2ECE -:1007E00063000000001C0020BC1B0020071C002030 -:1007F000C01B0020E01B0020FE000020E81A0020A3 -:1008000003FF0000FC000020D5030100FF010000F1 -:10081000450200004E0200005B02000003007B4422 -:100820001B79DB189F44020C0A08060400200FE025 -:10083000B4200DE073200BE0322009E00A2007E02D -:10084000062005E0FF20F749443002F03AF9002085 -:1008500003900E98C07A02280E9824D0807A2872CD -:100860000E9803990068401A28600E99097A0029A9 -:1008700061D00221401A0002000A28600E98016827 -:10088000406808186860C01D0002000A68600E9881 -:100890000627407AA8720E98007A6872FFF776FDF4 -:1008A00000284AD053E04168007A00282DD0022069 -:1008B00009180398C01D09182079052827D0DA489F -:1008C000039A4078904200D81046801A4218D748C0 -:1008D000921D8446207914235843D54BC018436891 -:1008E00080689B1B801B1B0200021B0A000A9A42A5 -:1008F00004D8CE4A934201D8604508D92079142201 -:100900005043CB4A801880680CE00420D0E7C648EA -:10091000039A4078904200D81046801A8019801DB2 -:100920000002000A286040180002000A68600020E7 -:1009300028726868A7E704219CE7687A032806D232 -:10094000002804D0039838210F1A32200390B649AA -:100950000878012801D003280AD1487803998842F1 -:1009600006D9B449C97F002902D10399401AC71991 -:100970002968AE488B1B69681A02891B0591090218 -:10098000120A090A97421ED8074682421BD8B9426A -:1009900019D82079012205282FD0002001210491A7 -:1009A00021799C46059B14225143A14A89184A6823 -:1009B000921B9A4203D28A68921B62452BD800226E -:1009C0000AAF3A5430E0019905209B4C0874607AD4 -:1009D000217A401C4007400F884203D197A19A48D2 -:1009E00002F06FF8617A02986054607A401C400708 -:1009F000400F607200200FB0F0BD019802230299F1 -:100A000003742379052B00D02379837421716271DB -:100A100001200FB0F0BD01220AAF3A548A7BAF7AB1 -:100A2000BA4201D800220492897C401CC0B2052938 -:100A300003D0049A002AB6D1A1E00498002877D008 -:100A400025790520002704900AA8C05D012827D039 -:100A500004951420454376487F1C2818857CFFB2F6 -:100A6000052DF1D1019802230374714F20790528D7 -:100A700053D025790520049001984068811B1420EB -:100A80006843C0194268921B8A4262D92079A84201 -:100A90004FD1019902980B742279052A42D142E084 -:100AA0002079A8420BD121791420414360480818CD -:100AB000807C2071012060710020207011E004987A -:100AC000052803D15DA1614801F0FBFF28461421F0 -:100AD0004843574914234018827C049858434018CF -:100AE0008274284614214843514906224018027452 -:100AF0005148417A007A491C4907490F814203D184 -:100B00004EA1534801F0DDFF4B48417A4554417AEC -:100B1000491C4907490F41729BE7227901990298C4 -:100B2000052A00D022798A7420710120607123E0A7 -:100B300025E00498052803D140A1464801F0C1FFF3 -:100B4000049814225043C019029981740198857445 -:100B500012E0807C052807D0049505468FD137A187 -:100B60003D4801F0AEFF21E014214D43E919029800 -:100B7000887401990520887401200FB0F0BD019898 -:100B800005212D4C0174607A217A401C4007400FEA -:100B9000884203D129A1314801F093FF617A02987C -:100BA0006054607A401C4007400F607200200FB014 -:100BB000F0BD70B50D460646294900242046891B24 -:100BC000A04103D21DA1274801F07BFF2649002048 -:100BD000491BA04103D219A1244801F072FF244A05 -:100BE00070190021821A8C4101D32249401870BD2E -:100BF000F8B5401EC0B2142148430D494518687B22 -:100C000006283DD203007B441B79DB189F44023643 -:100C100034080604002067E0B4203AE0732038E08E -:100C2000322036E0D8070100FE000020FFFF3F0021 -:100C3000EC1A0020E01B0020D41B00207372635CC0 -:100C400072656D2E63000000A3020000DE0200004A -:100C5000E302000007030000170300001D0300006B -:100C6000FF7F841E290300000020A1072A03000043 -:100C70000080841E00807BE10A200AE0062008E054 -:100C8000FF20FE49443001F01CFF697B0020002951 -:100C90002AD0022140186968002440180C21000263 -:100CA0006956000A002921DBF1F7D7FEF44A06460F -:100CB0000C27EF570021101AA14103D2EF49F14848 -:100CC00001F0FFFEF0490020C91BA04103D2EB490F -:100CD000EE4801F0F6FEEE4AF0190021821A8C412E -:100CE00001D3EC494018F8BD0421D3E7F1F7B5FE74 -:100CF0000C21695600224018E149091AA241F2D29A -:100D00004042F8BDF0B5074683B0E3480E46029076 -:100D100000F0C9FCE14C00282ED0E14D287C0028D1 -:100D200003D0E0A1E24801F0CCFE012028742F732B -:100D3000DB4D30782872707868722A460A3229466C -:100D40007068F1F794FE0A2028560F2804DD1F383A -:100D5000A8722868401C28600021B0686A4600918B -:100D6000117101AA6946F1F782FE6A460420105605 -:100D70000F2846DD012045E060782178401C4007BF -:100D8000400F884203D1C7A1CA4801F09AFE60789B -:100D90000101C94809180F73617809010D183078ED -:100DA0002872707868722A460A3229467068F1F70C -:100DB0005EFE0A2028560F2804DD1F38A872286816 -:100DC000401C28600021B0686A460091117101AA98 -:100DD0006946F1F74CFE6A46042010560F2801DDE3 -:100DE000012000E00020009940186860307BE87224 -:100DF0006078401C4007400F6070029800F06BFC68 -:100E000005E00020009940186860307BE872607847 -:100E10002178884224D0A9480579052D22D0F1F700 -:100E2000B8FD14214D43A64969180A7C042A17D03D -:100E3000032A15D04B6889681B1A091A180209027F -:100E4000A04A000A090A06280AD31346904207D886 -:100E5000994205D860782178884201D0F1F7E5FD04 -:100E600003B0F0BD607821788842F7D103B0F0BDBF -:100E700010B50020F1F7EBFC10BD10B50120F1F723 -:100E8000E6FC10BDF8B5074602281ED08B4C207931 -:100E9000052803D183A18C4801F013FE0020A07027 -:100EA0000125A571207903211422854E5043801914 -:100EB0000174F1F7BFFD3800844F0BD001281FD01B -:100EC00003286FD077A1824838E082480078F1F794 -:100ED00099FBF8BD65700020F1F7CCFC7968481CDF -:100EE00004D0012300221846F1F7FAFC2079217979 -:100EF000401CC0B214225143725801219047F8BDE2 -:100F00000120F1F7B7FC607800280CD07868401C0D -:100F100009D020792179401CC0B214225143725863 -:100F200006219047F8BD387E01280AD0022812D049 -:100F3000032824D0042836D05AA1674801F0C1FD07 -:100F4000F8BD2078002804D000202070F1F777FD4C -:100F5000FD77002024E0E078002804D1FEF7F4FCBF -:100F6000F1F752F9E57020792179401CC0B21422C2 -:100F7000514372580021904700203876F8BD397AE5 -:100F800038680123411A00221846F1F7A9FC20789D -:100F9000002804D000202070F1F751FDFD770220D9 -:100FA0003876F8BD1AE0397F38680123411A0022EB -:100FB0001846F1F795FCE078002804D1FEF7C4FC50 -:100FC000F1F722F9E57020792179401CC0B2142292 -:100FD00051437258002190473D76F8BD2079217920 -:100FE000401CC0B214225143725805219047F8BDED -:100FF00010B5324C2079052803D12AA1374801F0D9 -:1010000060FD20792179401CC0B2142251432C4A42 -:1010100052580421904710BDF0B583B00526F1F772 -:10102000B8FC054629484068401C03D01DA12C4847 -:1010300001F047FD214C21792A480190052956D01D -:101040002179142041431E480918097C04294ED0F7 -:101050002179142251430818007C03287ED001987E -:10106000184902684068521B401B12020002120A13 -:10107000000A062A72D30B468A4235E03C0C010076 -:10108000FF7F841E290300000020A1072A0300001F -:101090000080841E00807BE1071C0020BC1B002018 -:1010A000C01B00207372635C72656D2E63000000CC -:1010B0006E0300005F0300003C1B0020001C0020AA -:1010C000EC1A0020FFFF3F00A2030000E01B0020FD -:1010D000F3030000FC000020E7030000FA03000017 -:1010E0002B040000EC1B002038D8984236D8002092 -:1010F00060702079052808D1F648407F002804D088 -:10110000F548C1784170817801702079052814D0A4 -:10111000207914214843F1494018007C04280CD15F -:1011200026792279012014235A4352181074227907 -:101130005A435118897C21716071E94F7878397868 -:10114000884215D038780101E6480A183978090133 -:101150000818017B2846FFF7A0FA00E071E1387813 -:10116000401C4007400F3870787839788842E9D1C0 -:10117000DD4F387C002806D0397B3A462846FFF7F9 -:101180008CFA00203874052E1BD0142031464143C0 -:10119000D2480818017C012913D10721D34F0174CB -:1011A000787A401C0840397A884203D1D0A1D348CC -:1011B00001F087FC787A3E54787A401C4007400F53 -:1011C0007872207905287DD0607900287BD00020B6 -:1011D0006071217914204143C048BE4F0E18C849A0 -:1011E000B3687268F6688E604B600A60797D00298A -:1011F00010D0022621791422B84851430818407BA8 -:10120000062815D203007B441B79DB189F44040E8B -:101210000C0A08060426EDE700200FE0B4200DE0DC -:1012200073200BE0322009E00A2007E0062005E0E9 -:10123000FF20AFA1443001F044FC00203872797DDA -:10124000022901D001290FD1F96809184A1B12029D -:10125000120A382A08D90320787532390802000AA0 -:10126000F860322038720AE0322808D2E07800288C -:101270000ED1FEF769FBF0F7C7FF012007E0E07829 -:10128000002805D0FEF77FFBF0F7E7FF0020E070B5 -:10129000914A0621507838771278012A01D0032A22 -:1012A00006D1012222703A7A904201D9811A891D11 -:1012B000BA7F002A00D0891C2378002B01D1002A94 -:1012C00061D001E088E098E08C468E490091019958 -:1012D0000B6849685B1B491B09021B02090A1B0AB0 -:1012E00001919C451CD8874DAB4219D8019B0099B0 -:1012F0008B4215D8397A884223D9FB68421A9A1A48 -:101300001202120A101880190002000AFA603860EE -:10131000002914D0032038760006000E3ED144E0A8 -:1013200000202070B877397A002925D0F868401855 -:1013300080190002000A3860022038762EE0012071 -:10134000E9E781420BD9FA68511889190902090A9B -:101350003960002801D00420DDE70220DBE7002A05 -:1013600003D163A1684801F0ACFBF8688019000262 -:10137000000A3860002004E0F96889190902090AA6 -:101380003960387611E0387A00281DD0F9680818DD -:1013900080190002000A386002203876F8680123BC -:1013A000811900221846F1F79BFA2079142148434D -:1013B0004A490C2240188256012300203968F1F76F -:1013C0008FFAF1F7C1FB18E0F86880190002000AF3 -:1013D000386000203876E8E70120F1F74BFA00206A -:1013E000F1F748FAF1F72CFAE078002805D0FEF77B -:1013F000CAFAF0F732FF0020E070364DA87F0028CF -:1014000004D0F1F71CFB0020E877A877687F00285C -:1014100004D03148C178417081780170207800286B -:1014200006D000202C49E8770978002900D12070E7 -:101430002E48417A007A814203D034484078F1F74F -:10144000E1F803B0F0BDF0B5314C0746207983B028 -:10145000052803D126A12F4801F033FB2079142160 -:101460001E4E48438019007C032803D020A12A483F -:1014700001F027FB174D6868401C03D01CA12748CA -:1014800001F01FFB20791421484381190C200856D4 -:1014900000216A4600911171C01901AA6946F1F74D -:1014A000E6FA6A46042010560F2801DD012000E00C -:1014B000002000994018296840180102090A696053 -:1014C0006078002804D0012300221846F1F708FABA -:1014D00003B0F0BDE01B0020FE000020EC1A00204D -:1014E000BC1B00203C1B0020C01B0020D41B002084 -:1014F0007372635C72656D2E630000005C04000013 -:10150000EC1B0020FFFF3F00AE040000FC000020A9 -:10151000001C00200B0500000C0500000D0500005C -:10152000F8B51D4D0A1A00242346551BA34106D3C6 -:10153000194E431A254600279E1BBD4101D2104675 -:10154000F8BD164E0025B21AA54103D2721C101A1E -:101550004018F8BD114D0022EB1AA24104D26A1CBA -:10156000511A08184042F8BD53200DA1000101F0A6 -:10157000A8FA0020F8BD10B5014601230022022080 -:10158000F1F7AEF910BD10B50220F1F773F910BDF7 -:1015900010B5F1F7FEF910BD0020A107FF7F841EF2 -:1015A0007372635C72656D2E6300000010B50146B6 -:1015B00020220A4801F0E8F808490020C8770846C8 -:1015C00010BD0749012048610648074A0168914259 -:1015D00001D100210160704770477047081C00204E -:1015E0000005004004010020EFBEADDE064A107089 -:1015F0005170704704481C2201784171427001709B -:101600007047704770477047080100207047704767 -:1016100070477047704770477047704730B5034652 -:10162000002002460DE09C5C2546303D0A2D02D389 -:101630000020C04330BD0A25684330382018521CB2 -:10164000D2B28A42EFD330BD70B50D46144608E0E1 -:101650000A2101F013F92A193031203A641ED1779A -:10166000E4B2002CF4D170BD10B5002310E0040AE0 -:1016700000020443A0B2CC5C44402006000F60404E -:101680000407240C44402006C00C60405B1C9BB245 -:101690009342ECD310BD002101700846704701460B -:1016A000002008707047EFF31081C907C90F72B6A8 -:1016B0000278012A01D0012200E0002201230370F8 -:1016C000002900D162B6002A01D000207047012015 -:1016D00040037047E7E7EFF31081C907C90F72B6FF -:1016E00000220270002900D162B600207047F2E7A4 -:1016F0000348004703480449024A034B704700006F -:10170000312B0100481C0020481C002010B5203857 -:101710000C46030001F0DAFA331B1F23272C313764 -:101720003C41474D5054585C606D71656974787CDC -:101730008084888C9094989C9FA2A6AAAEB2B8BCD4 -:10174000C0C5CACFE9F0F3D3D7E0DBE4F8002068E6 -:10175000FFF7A1FFD6E02068FFF7A5FFD2E02068E1 -:10176000FFF7B9FFCEE0207840B200F0F3F9C9E00E -:10177000207840B200F011FAC4E02078616840B2ED -:1017800000F024FABEE0207840B200F034FAB9E06C -:10179000207840B200F03FFAB4E02078217940B2DE -:1017A00000F04AFAAEE02078616840B200F074FAC6 -:1017B000A8E000F080FAA5E0206800F084FAA1E03B -:1017C000207800F099FA9DE02068FEF7BCF999E0D6 -:1017D0002068FEF7BCF995E021792068FEF7BEF994 -:1017E00090E02068FEF706F88CE02068FEF707F826 -:1017F00088E02078FEF707F884E0FEF715F881E02E -:101800002078FEF717F87DE02078FEF729F879E0D8 -:101810002068FEF742F875E02068FEF744F871E0B2 -:101820002068FEF746F86DE02068FEF747F869E0AB -:101830002068FEF749F865E02068FEF74BF861E0A4 -:101840002068FEF74CF85DE00846EEF77FFC59E0B3 -:10185000F0F7EDFC56E0F0F71AFD53E02068F0F7E2 -:1018600022FD4FE0206800F079FA4BE0206800F09C -:101870007BFA47E0206800F07CFA43E02078A26819 -:10188000616800F07BFA3DE0207800F083FA39E0EF -:10189000207800F08BFA35E02078616800F093FA48 -:1018A00030E02078616800F09AFA2BE02179207806 -:1018B00000F0ACFB26E02068FEF73FFA22E020684B -:1018C000FEF710FD1EE02068FEF7F4FC1AE020464B -:1018D00007C800F078FC15E0206800F0C0FC11E0BB -:1018E0006168206800F0E2FC0CE0206800F04EFE29 -:1018F00008E009E003E0FFE700F061FE02E0206895 -:1019000000F079FE206010BD0120086010BD0000CD -:1019100010B572B600F0E4F800280BD0EEF7C0FC6A -:10192000FEF7E1FD00F039FB72490020C8628862D1 -:101930007149086062B6002010BDF3B50025012092 -:101940000007C06A81B0C0430006000E0AD16B4890 -:101950000168491C05D000686949884202D069487D -:10196000FEBD012572B600F0BBF8002801D062B6BA -:1019700088E0EEF701FCEEF797FC634C634A002128 -:101980002368CB40DB0720D00346CB40DB0718D1D0 -:101990004BB2002B07DA1E07360F083EB608B6001A -:1019A000B618F66904E09E08594FB600F619366875 -:1019B0009B07DB0EDE4033069B0F012B05D0032B6C -:1019C00003D062B64F48401EFEBD491C2029D7D324 -:1019D000019C01204F49230001F078F914222424AE -:1019E0002424242424240B0D1012142016181A1C4D -:1019F0001E2F002400E00124C86314E00224FBE74A -:101A00000324F9E70424F7E70824F5E70924F3E7BA -:101A10000A24F1E70B24EFE70C24EDE70524EBE7BC -:101A2000072400E00624D06901210002000AC9074A -:101A30000843D061002D04D009E062B60120000304 -:101A4000FEBD2C4D3448E862EEF72EFCA8622A4910 -:101A500032480860324902980860EEF725FC2146BA -:101A600000F082FAFEF706FD00F04CFC00F0FEFAF2 -:101A70000198EEF7E3FB040062B603D0FFF748FFDE -:101A80002046FEBD0020FEBD10B5044600F028F83B -:101A9000002800D001202070002010BD21491848E6 -:101AA00008600020704710B50C46102808D0112897 -:101AB0000BD012280CD013280ED00120086010BDC6 -:101AC00061682068FFF739FF08E0FFF721FF05E0B4 -:101AD0002068FFF7D9FF01E0FFF7E0FF206010BDAD -:101AE00005480E490068884201D101207047002056 -:101AF00070470000000500400401002000100010A5 -:101B0000004001000210000000E100E000ED00E0F4 -:101B100000E400E04000004000200000EFBEADDE29 -:101B200010010020000000208107C90E002808DAFB -:101B30000007000F08388008814A80008018C069BB -:101B400004E080087F4A800080180068C8400006D2 -:101B5000800F704710B5044600F0DBF8002813D062 -:101B60002046FFF7E1FFC0B200F0E1F800280DD0F9 -:101B70007549E2060B78D20E01209040002B08D068 -:101B80004A681043486006E0704810BD6F48401C2A -:101B900010BD6F490860002010BD10B5044600F06C -:101BA000B8F800280BD06849E2060B78D20E012065 -:101BB0009040002B05D04A6882434A6004E06348A5 -:101BC00010BD634980310860002010BD70B50D461E -:101BD000044600F09EF800280BD05E480068E2063C -:101BE000D20E01219140084000D001202860002041 -:101BF00070BD564870BD10B5044600F08AF8002844 -:101C000007D0E106C90E0120884052490860002033 -:101C100010BD4E4810BD10B5044600F07AF80028FB -:101C200008D0E106C90E012088404A498031086089 -:101C3000002010BD454810BD70B50D46044600F0AB -:101C400068F8002819D0284600F071F8002816D04E -:101C5000A007C20EFF209040A907090E9140002C5A -:101C600010DA2207120F083A9308354A9B009B1896 -:101C7000DA6982430A43DA610CE0344870BD3348C4 -:101C8000401C70BDA3082F4A9B009B181A68824312 -:101C90000A431A60002070BD70B50C46054600F07E -:101CA00038F8002805D02846FFF73EFF20700020B6 -:101CB00070BD264870BDBFF34F8F21492648C860CC -:101CC000BFF34F8FFEE770B51F4C0546217801200A -:101CD00000290ED1207072B600F06EF91C4E8036CD -:101CE00031688143616000F067F9C043306062B6DB -:101CF00000202870002070BD13490A78002A06D001 -:101D0000002804D1124A48681060002008700020A2 -:101D1000704710B50446202805DA00F04DF901217E -:101D2000A140084201D0002010BD012010BD0128B3 -:101D300003D0032801D00020704701207047000025 -:101D400000ED00E000E400E01401002001200000AC -:101D500000E100E000E200E00400FA05364909680D -:101D6000C9B20160002070473349C0B2486000200A -:101D700070473149C0B2886000207047082801D3FD -:101D80002E4870472C4BC0001033C01801604260D1 -:101D900000207047022802D32848401C7047284979 -:101DA000C00040180121016000207047022802D3C2 -:101DB0002248401C70472249C000091D40180121DB -:101DC000016000207047022802D31C48401C704765 -:101DD0001C4A80008018C9B20160002070470228A8 -:101DE00002D31648401C7047164A800080180068CD -:101DF000C0B208600020704710B5FF200E49C043F4 -:101E000088600D4B082210330021D000C0180160FB -:101E10004160521C102AF8D30A4B00208200D218CD -:101E2000022801D3116002E01468E4B21460401C7F -:101E30000428F3D310BD000000F501400820000085 -:101E400000F0014000F80140F8B504468007002585 -:101E50000126002804DA5A48C563C6630220844379 -:101E6000E00404D55748C563C6638014844360000A -:101E700003D55548456080058443E00504D55348A3 -:101E8000C563C66380158443A00404D55048C56368 -:101E9000C6634014844360042704C00FF90F8842CE -:101EA00003D04CA1612000F00CFEB80F0AD04E49BF -:101EB000CD634E48C563C563CE63C663C663032066 -:101EC0008003844320050AD5494FFD632F20EEF798 -:101ED0006BF9FE632F20EEF767F9F8148443002CAA -:101EE00003DAFFF789FF640064084248044203D024 -:101EF00038A1902000F0E5FDF8BDF0B500210A46BC -:101F0000FF230446CC40E4072AD04CB2E606F60E86 -:101F10000125B540384E3560384E3560002C11DA59 -:101F200025072D0F083DAE08354DB6007619F56929 -:101F3000A407E70E1C46BC40A5431446BC402543FD -:101F4000F5610DE0A6082F4DB60076193568A40797 -:101F5000E70E1C46BC40A5431446BC4025433560F3 -:101F6000491C2029CDD3F0BD70B5274C0D4620600B -:101F7000FFF76AFF2068FFF7C0FF2846F0F720FA56 -:101F8000FDF7C6FEFDF772FDFFF736FFFDF7C5FC56 -:101F9000F0F702FB00F06AF870BD10B51A4C20682B -:101FA000FFF752FF2068FFF7A8FFFFF725FFF0F7C4 -:101FB0008CFA0020206010BD1348006870470000B4 -:101FC000C01F0040C0CF004000E50140C08F00406E -:101FD000C0DF00407372635C736F635F636F6E6634 -:101FE00069672E6300000000C0EF0040C0FF0040A2 -:101FF000C0BF0040FEFF0FFC80E100E080E200E097 -:1020000000ED00E000E400E01C01002070B50024B9 -:1020100002460D4620462146002A1ED0012A04D041 -:10202000022A04D0032A1ED103E0012002E002208C -:1020300013E003202B0000F049FE07160507090BEB -:102040000D0F1600012108E0022106E0032104E043 -:10205000042102E0052100E00621FEF7B1FA002884 -:1020600001D0204670BD0724FBE700009B490020FB -:10207000087088709A490870704770B5974C0E4682 -:102080006178884203D097A15A2000F01AFD0325F9 -:10209000330000F01BFE0953063030535353534AAC -:1020A00053002078022803D08EA15E2000F009FDA5 -:1020B0002570A078022802D0012804D014E0A0687E -:1020C00000F004FB10E000250BE0E0680168A06868 -:1020D00000F00DFBA068001DA060E068001D6D1CF5 -:1020E000E06020698542F0D30020A070FEF710FA6E -:1020F0000420207070BD2078022803D079A17620BA -:1021000000F0DFFC60687649401C6060032801D85D -:102110004D7003E0062806D80220487070496078A8 -:10212000FEF7F0FD70BD032003E0A0780028FAD18F -:102130000220FEF703F900F0C7F870BD69A19E20E8 -:1021400000F0BFFC70BD70B50546644C00206060B7 -:102150002078012803D063A1A52000F0B2FC6049DB -:10216000022008738D6003224A7020706078FEF7A9 -:10217000C9FD70BD10B5594CA078002802D1207857 -:10218000002801D0112010BD5A48FEF700FA6070F7 -:102190006078002803D001202070002010BD0320AB -:1021A00010BD10B50124020B64040121524BA04262 -:1021B00002D29140186802E0203A586891400840E5 -:1021C00000D0012010BDF8B50E46910005464F190C -:1021D00014463F1F009100F09CFA00998002891973 -:1021E000091FB14201D2012200E00022002C03D0DD -:1021F000FF2101318C4201D90920F8BD3F498D42B0 -:1022000019D3AF4217D3854205D2874203D228465D -:102210003043800701D01020F8BD8E420BD3002A36 -:1022200009D12846FFF7BDFF002804D13846FFF743 -:10223000B8FF002801D00F20F8BDFFF79BFF002852 -:10224000FAD126480121C66085600461817020466C -:10225000312148431430FFF776FF0020F8BD10B558 -:1022600004462648800A84420BD300F052FAA0426A -:1022700001D8102010BDA0020446FFF792FF0028ED -:1022800001D00F2010BDFFF775FF0028FAD11348C9 -:102290000221846081701A48FFF755FF002010BDAD -:1022A0001648010B01208840401E704700B50B46C0 -:1022B0000246FFF7F5FF104201D00F2000BD0E4887 -:1022C00002604360002000BD10B5044C6078FEF74A -:1022D000B2F900202070A07010BD00002001002085 -:1022E000281C00207372635C736F635F666C61739C -:1022F000682E63007B2001000006004000400100C2 -:1023000010540000E349002048700870887048604D -:10231000E1490873704710B5E048826A81158A4325 -:10232000DC498B691A438262826A0223C9699A4333 -:102330000A438262FEF7ECF810BD002814D0417801 -:10234000002901D001290ED18168D54A6439914212 -:1023500009D24068D349884205D8CE494978012935 -:1023600003D1002801D0002070470120704770B5CC -:102370000446FEF782FD0068002803D0CAA1802031 -:1023800000F09FFB0126C34D002C06D020780028CA -:102390002BD0012827D0022801D0EE7023E0287826 -:1023A000002820D16068FFF7C8FF0028F5D06068DA -:1023B0000078002800D00220B74E30706068806836 -:1023C0009630B06060684168E868FEF7F2FB7060C4 -:1023D000606803244078002808D07470AE49A8785B -:1023E000FEF790FC6C70FFF796FF70BD02207070D6 -:1023F000F4E7F8B5A74C0D46A178884203D0AAA10E -:10240000BF2000F05EFB284600270526A24D0300F2 -:1024100000F05CFC09061135587F8997B8A2B80016 -:102420006078032806D06078022803D09EA1C320DC -:1024300000F047FBF8BD6078032806D060780228DA -:1024400003D099A1C72000F03CFB04206070E77026 -:102450002078002802D0FEF75BF8F8BDA86896380F -:10246000FEF7F1FF6868E0608C48816A82151140D0 -:10247000A161806A02210840E06100205CE0607890 -:10248000032806D06078022803D087A1E22000F05C -:1024900018FB2078002802D000F0EFF8F8BD607833 -:1024A000032802D02069410020E004202DE07A4971 -:1024B000A078FEF727FCF8BD0420FDF73FFF0120C0 -:1024C0006070F8BD6078032807D06078022804D0D7 -:1024D000FF2075A1043000F0F4FA20780028DBD149 -:1024E0006078032810D06868A06076492161A068F0 -:1024F000FEF75FFB686069686069FFF711F868497B -:1025000063318842D8DCD2E70520FDF717FF6670FB -:10251000F8BD6078042804D0FF2063A1263000F0C5 -:10252000D0FA022008E06078042804D0FF205EA1E1 -:102530002B3000F0C6FA012061688847FFF717FFCB -:10254000F8BD6078042804D0FF2057A1303000F097 -:10255000B8FAFFF7E0FEF8BD6078042804D0FF2049 -:1025600051A1353000F0ADFA2078002894D1E07800 -:10257000002805D00620FDF7E1FE6670E770F8BD83 -:102580000720C2E7FF2048A14B3051E770B5050096 -:1025900005D0404C6078002803D0112070BD102079 -:1025A00070BD4948FDF7F3FFA070A078002804D063 -:1025B000656001206070002070BD032070BD10B503 -:1025C00034480178002901D0112010BD417800293C -:1025D0000BD0417805290AD04178012907D0012183 -:1025E00001704078052802D003E00F2010BD00F0F4 -:1025F00044F8002010BD70B5264C064660780528CA -:1026000004D06078012801D00F2070BD002E25D0A5 -:102610003046FFF792FE002822D060781E4D012838 -:1026200020D07168E068FEF7C4FA6860B068963040 -:10263000A8603078002800D0032028707078002827 -:1026400017D0032068706078052814D002206070CD -:102650001149A078FEF756FB002070BD102070BD18 -:10266000072070BDFEF702F86061A0601549216186 -:10267000D9E70220E6E70320E9E710B5054CA0788A -:10268000FDF7D9FF0820FDF759FE0020607020708B -:1026900010BD000034010020381C0020000500405F -:1026A0003D860100FF1FA1077372635C736F635F58 -:1026B000726164696F5F74696D65736C6F742E63AA -:1026C0000000000024080000F3230100134A022147 -:1026D000516013490B68002BFCD0906008680028FB -:1026E000FCD00020506008680028FCD0704710B56E -:1026F0000A4B01225A600A4A1468002CFCD001607F -:1027000010680028FCD00020586010680028FCD019 -:1027100010BD0120000740697047000000E501403E -:1027200000E40140704770477047704770470346A8 -:1027300010B50B439B070FD1042A0DD308C810C94D -:10274000121FA342F8D018BA21BA884201D9012039 -:1027500010BD0020C04310BD002A03D0D30703D012 -:10276000521C07E0002010BD03780C78401C491C67 -:102770001B1B07D103780C78401C491C1B1B01D183 -:10278000921EF1D1184610BDF8B5042A2CD3830748 -:1027900012D00B78491C0370401C521E83070BD0CB -:1027A0000B78491C0370401C521E830704D00B7821 -:1027B000491C0370401C521E8B079B0F05D0C91A81 -:1027C000DF002023DE1B08C90AE0EDF7FDFCF8BDA1 -:1027D0001D4608C9FD401C46B4402C4310C0121FC2 -:1027E000042AF5D2F308C91A521EF0D40B78491CFA -:1027F0000370401C521EEAD40B78491C0370401C25 -:10280000521EE4D409780170F8BD01E004C0091F2C -:102810000429FBD28B0701D50280801CC90700D098 -:102820000270704700290BD0C30702D00270401C11 -:10283000491E022904D3830702D50280801C891E09 -:10284000E3E70022EEE70022DFE70378C2781946CB -:10285000437812061B0219438378C0781B0419437E -:1028600011430902090A000608437047020A08706A -:102870004A70020C8A70020ECA7070470022030967 -:102880008B4273D3030A8B4258D3030B8B423CD346 -:10289000030C8B4221D312E003460B437FD400226A -:1028A00043088B4274D303098B425FD3030A8B42E4 -:1028B00044D3030B8B4228D3030C8B420DD3FF224E -:1028C000090212BA030C8B4202D31212090265D01C -:1028D000030B8B4219D300E0090AC30B8B4201D3CF -:1028E000CB03C01A5241830B8B4201D38B03C01A16 -:1028F0005241430B8B4201D34B03C01A5241030B8D -:102900008B4201D30B03C01A5241C30A8B4201D33D -:10291000CB02C01A5241830A8B4201D38B02C01AE8 -:102920005241430A8B4201D34B02C01A5241030A5F -:102930008B4201D30B02C01A5241CDD2C3098B4244 -:1029400001D3CB01C01A524183098B4201D38B01C1 -:10295000C01A524143098B4201D34B01C01A524164 -:1029600003098B4201D30B01C01A5241C3088B42A9 -:1029700001D3CB00C01A524183088B4201D38B0094 -:10298000C01A524143088B4201D34B00C01A524136 -:10299000411A00D201465241104670475DE0CA0F0D -:1029A00000D04942031000D34042534000229C46CD -:1029B00003098B422DD3030A8B4212D3FC228901D7 -:1029C00012BA030A8B420CD3890192118B4208D3AD -:1029D000890192118B4204D389013AD0921100E00F -:1029E0008909C3098B4201D3CB01C01A5241830923 -:1029F0008B4201D38B01C01A524143098B4201D350 -:102A00004B01C01A524103098B4201D30B01C01A7A -:102A10005241C3088B4201D3CB00C01A52418308F4 -:102A20008B4201D38B00C01A5241D9D243088B424A -:102A300001D34B00C01A5241411A00D201466346ED -:102A400052415B10104601D34042002B00D5494251 -:102A5000704763465B1000D3404201B50020C0467A -:102A6000C04602BD704770477047704710B500F010 -:102A700077F810BD30B58C180278401C13071B0F77 -:102A800001D10378401C120906D10278401C03E0F2 -:102A90000578401C0D70491C5B1EF9D101E00B70DC -:102AA000491C521EFBD1A142E6D3002030BD0000DC -:102AB00001231B68134B1860134B1960134B1A60EA -:102AC0007047134A134B13607246053AF0E7114AF8 -:102AD0000F4B1B689A420ED10D4B002018600198D5 -:102AE0000D4B04B598470CBC9E46024602980099CF -:102AF0000A4B1B68184706980599094B1B68DB6849 -:102B0000184700005C0100206001002064010020E3 -:102B100054010020EFBEADDEAD1501001001002014 -:102B2000000000200B4A12680B4B9A420AD1004762 -:102B3000084A1268084B9A4204D101B5FDF773F9AF -:102B400003BC8E4605490968EFF305808000014407 -:102B50000968084704010020EFBEADDE0000002038 -:102B60001C481D497047FFF7FBFFEDF7E7FA00BD72 -:102B700001200007C06AC0B2FF2804D117481849D5 -:102B80000968884202D0174817490160174A136044 -:102B90005B68184720BFFDE7154B1B680F4999423A -:102BA00002D018688842F5D004D1124B18680B493E -:102BB0008842EFD080F308880F49884204DD0F482F -:102BC000026802210A4302600D4880470D48804791 -:102BD0000D480047481C0020481C0020FFFFFFFF55 -:102BE000001000102C050040040000000000002030 -:102BF00014100010004001000020002024050040B7 -:102C0000C3150100712B0100B12A01001248704563 -:102C100002D1EFF3098101E0EFF3088188690238FE -:102C20000078102812DB20280EDB0C4A12680C4BAF -:102C30009A4203D1602804DB0A4A10470220086048 -:102C40007047094A10470000084A1047084A1268AE -:102C50002C32126810470000FDFFFFFF0401002026 -:102C6000EFBEADDEAD0200000D170100A71A010096 -:102C7000000000200A480B4908470B48094908474B -:102C80000A48084908470A480649084709480549C3 -:102C9000084709480349084708480249084700000F -:102CA000E1230000252B0100412B0000EB2900004F -:102CB000992900004D270000A72A000043260000A4 -:102CC00003B40148019001BD0500002030B47446F2 -:102CD000641E2578641CAB4200D21D46635D5B0018 -:102CE000E31830BC1847000002490020C8612039B1 -:102CF00008727047A003002000020206FFFFFFFFDA -:102D00000000FFFF0102040810204080555555D6F1 -:102D1000BE898E00F401FA00960064004B00320078 -:102D20001E0014000100030000000100000000006C -:102D3000000000000000000000000000870000000C -:102D4000000000000000000000000000000002037E -:102D5000040500000E0F0000882D01000400002073 -:102D60001000000004010000982D01001400002054 -:102D700054010000742A0100C02D010068010020E8 -:102D8000E01A0000200100000249022208681042F7 -:102D9000FCD0704700E200E0A1074E56FF9900CD3D -:102DA00029023501022B013601000100D83720FB32 -:102DB000349B5F8074800010027001E4B52A01002A -:020000041000EA -:1010000000400100FFFFFFFFFFFFFFFFFFFFFFFFAB -:041010004900FFFF95 -:04000005000000C136 -:00000001FF
--- a/TARGET_NRF51822/softdevice_assert.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. - * - * The information contained herein is confidential property of Nordic Semiconductor. The use, - * copying, transfer or disclosure of such information is prohibited except by express written - * agreement with Nordic Semiconductor. - * - */ - -/** @brief Utilities for verifying program logic - */ - -#ifndef SOFTDEVICE_ASSERT_H_ -#define SOFTDEVICE_ASSERT_H_ - -#include <stdint.h> - -/** @brief This function handles assertions. - * - * - * @note - * This function is called when an assertion has triggered. - * - * - * @param line_num The line number where the assertion is called - * @param file_name Pointer to the file name - */ -void assert_softdevice_callback(uint16_t line_num, const uint8_t *file_name); - - -/*lint -emacro(506, ASSERT) */ /* Suppress "Constant value Boolean */ -/*lint -emacro(774, ASSERT) */ /* Suppress "Boolean within 'if' always evaluates to True" */ \ -/** @brief Check intended for production code - * - * Check passes if "expr" evaluates to true. */ -#define ASSERT(expr) \ -if (expr) \ -{ \ -} \ -else \ -{ \ - assert_softdevice_callback((uint16_t)__LINE__, (uint8_t *)__FILE__); \ - /*lint -unreachable */ \ -} - -#endif /* SOFTDEVICE_ASSERT_H_ */
--- a/TARGET_NUCLEO_F030R8/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - ADC_1 = (int)ADC1_BASE, - ADC_2 = (int)ADC_BASE -} ADCName; - -typedef enum { - DAC_1 = (int)DAC_BASE -} DACName; - -typedef enum { - UART_1 = (int)USART1_BASE, - UART_2 = (int)USART2_BASE -} UARTName; - -#define STDIO_UART_TX PA_2 -#define STDIO_UART_RX PA_3 -#define STDIO_UART UART_2 - -typedef enum { - SPI_1 = (int)SPI1_BASE, - SPI_2 = (int)SPI2_BASE -} SPIName; - -typedef enum { - I2C_1 = (int)I2C1_BASE, - I2C_2 = (int)I2C2_BASE -} I2CName; - -typedef enum { - TIM_3 = (int)TIM3_BASE, - TIM_14 = (int)TIM14_BASE, - TIM_16 = (int)TIM16_BASE -} PWMName; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F030R8/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// MODE (see GPIOMode_TypeDef structure) -// OTYPE (see GPIOOType_TypeDef structure) -// PUPD (see GPIOPuPd_TypeDef structure) -// AFNUM (see AF_mapping constant table, 0xFF is not used) -#define STM_PIN_DATA(MODE, OTYPE, PUPD, AFNUM) (((AFNUM)<<8)|((PUPD)<<4)|((OTYPE)<<2)|((MODE)<<0)) -#define STM_PIN_MODE(X) (((X)>>0) & 0x3) -#define STM_PIN_OTYPE(X) (((X)>>2) & 0x1) -#define STM_PIN_PUPD(X) (((X)>>4) & 0x3) -#define STM_PIN_AFNUM(X) (((X)>>8) & 0xF) - -// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H) -// Low nibble = pin number -#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF) -#define STM_PIN(X) ((uint32_t)(X) & 0xF) - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -typedef enum { - PA_0 = 0x00, - PA_1 = 0x01, - PA_2 = 0x02, - PA_3 = 0x03, - PA_4 = 0x04, - PA_5 = 0x05, - PA_6 = 0x06, - PA_7 = 0x07, - PA_8 = 0x08, - PA_9 = 0x09, - PA_10 = 0x0A, - PA_11 = 0x0B, - PA_12 = 0x0C, - PA_13 = 0x0D, - PA_14 = 0x0E, - PA_15 = 0x0F, - - PB_0 = 0x10, - PB_1 = 0x11, - PB_2 = 0x12, - PB_3 = 0x13, - PB_4 = 0x14, - PB_5 = 0x15, - PB_6 = 0x16, - PB_7 = 0x17, - PB_8 = 0x18, - PB_9 = 0x19, - PB_10 = 0x1A, - PB_11 = 0x1B, - PB_12 = 0x1C, - PB_13 = 0x1D, - PB_14 = 0x1E, - PB_15 = 0x1F, - - PC_0 = 0x20, - PC_1 = 0x21, - PC_2 = 0x22, - PC_3 = 0x23, - PC_4 = 0x24, - PC_5 = 0x25, - PC_6 = 0x26, - PC_7 = 0x27, - PC_8 = 0x28, - PC_9 = 0x29, - PC_10 = 0x2A, - PC_11 = 0x2B, - PC_12 = 0x2C, - PC_13 = 0x2D, - PC_14 = 0x2E, - PC_15 = 0x2F, - - PD_2 = 0x32, - - PF_0 = 0x50, - PF_1 = 0x51, - PF_4 = 0x54, - PF_5 = 0x55, - PF_6 = 0x56, - PF_7 = 0x57, - - - // Arduino connector namings - A0 = PA_0, - A1 = PA_1, - A2 = PA_4, - A3 = PB_0, - A4 = PC_1, - A5 = PC_0, - D0 = PA_3, - D1 = PA_2, - D2 = PA_10, - D3 = PB_3, - D4 = PB_5, - D5 = PB_4, - D6 = PB_10, - D7 = PA_8, - D8 = PA_9, - D9 = PC_7, - D10 = PB_6, - D11 = PA_7, - D12 = PA_6, - D13 = PA_5, - D14 = PB_9, - D15 = PB_8, - - // Generic signals namings - LED1 = PA_5, - LED2 = PA_5, - LED3 = PA_5, - LED4 = PA_5, - USER_BUTTON = PC_13, - USBTX = PA_2, - USBRX = PA_3, - I2C_SCL = PB_8, - I2C_SDA = PB_9, - SPI_MOSI = PA_7, - SPI_MISO = PA_6, - SPI_SCK = PA_5, - SPI_CS = PB_6, - PWM_OUT = PB_3, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -typedef enum { - PullNone = 0, - PullUp = 1, - PullDown = 2, - OpenDrain = 3, - PullDefault = PullNone -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F030R8/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PortA = 0, - PortB = 1, - PortC = 2, - PortD = 3, - PortF = 5 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F030R8/TARGET_STM/TARGET_NUCLEO_F030R8/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,77 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + ADC_1 = (int)ADC1_BASE, + ADC_2 = (int)ADC_BASE +} ADCName; + +typedef enum { + DAC_1 = (int)DAC_BASE +} DACName; + +typedef enum { + UART_1 = (int)USART1_BASE, + UART_2 = (int)USART2_BASE +} UARTName; + +#define STDIO_UART_TX PA_2 +#define STDIO_UART_RX PA_3 +#define STDIO_UART UART_2 + +typedef enum { + SPI_1 = (int)SPI1_BASE, + SPI_2 = (int)SPI2_BASE +} SPIName; + +typedef enum { + I2C_1 = (int)I2C1_BASE, + I2C_2 = (int)I2C2_BASE +} I2CName; + +typedef enum { + TIM_3 = (int)TIM3_BASE, + TIM_14 = (int)TIM14_BASE, + TIM_16 = (int)TIM16_BASE +} PWMName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F030R8/TARGET_STM/TARGET_NUCLEO_F030R8/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,179 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// MODE (see GPIOMode_TypeDef structure) +// OTYPE (see GPIOOType_TypeDef structure) +// PUPD (see GPIOPuPd_TypeDef structure) +// AFNUM (see AF_mapping constant table, 0xFF is not used) +#define STM_PIN_DATA(MODE, OTYPE, PUPD, AFNUM) (((AFNUM)<<8)|((PUPD)<<4)|((OTYPE)<<2)|((MODE)<<0)) +#define STM_PIN_MODE(X) (((X)>>0) & 0x3) +#define STM_PIN_OTYPE(X) (((X)>>2) & 0x1) +#define STM_PIN_PUPD(X) (((X)>>4) & 0x3) +#define STM_PIN_AFNUM(X) (((X)>>8) & 0xF) + +// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H) +// Low nibble = pin number +#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF) +#define STM_PIN(X) ((uint32_t)(X) & 0xF) + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +typedef enum { + PA_0 = 0x00, + PA_1 = 0x01, + PA_2 = 0x02, + PA_3 = 0x03, + PA_4 = 0x04, + PA_5 = 0x05, + PA_6 = 0x06, + PA_7 = 0x07, + PA_8 = 0x08, + PA_9 = 0x09, + PA_10 = 0x0A, + PA_11 = 0x0B, + PA_12 = 0x0C, + PA_13 = 0x0D, + PA_14 = 0x0E, + PA_15 = 0x0F, + + PB_0 = 0x10, + PB_1 = 0x11, + PB_2 = 0x12, + PB_3 = 0x13, + PB_4 = 0x14, + PB_5 = 0x15, + PB_6 = 0x16, + PB_7 = 0x17, + PB_8 = 0x18, + PB_9 = 0x19, + PB_10 = 0x1A, + PB_11 = 0x1B, + PB_12 = 0x1C, + PB_13 = 0x1D, + PB_14 = 0x1E, + PB_15 = 0x1F, + + PC_0 = 0x20, + PC_1 = 0x21, + PC_2 = 0x22, + PC_3 = 0x23, + PC_4 = 0x24, + PC_5 = 0x25, + PC_6 = 0x26, + PC_7 = 0x27, + PC_8 = 0x28, + PC_9 = 0x29, + PC_10 = 0x2A, + PC_11 = 0x2B, + PC_12 = 0x2C, + PC_13 = 0x2D, + PC_14 = 0x2E, + PC_15 = 0x2F, + + PD_2 = 0x32, + + PF_0 = 0x50, + PF_1 = 0x51, + PF_4 = 0x54, + PF_5 = 0x55, + PF_6 = 0x56, + PF_7 = 0x57, + + + // Arduino connector namings + A0 = PA_0, + A1 = PA_1, + A2 = PA_4, + A3 = PB_0, + A4 = PC_1, + A5 = PC_0, + D0 = PA_3, + D1 = PA_2, + D2 = PA_10, + D3 = PB_3, + D4 = PB_5, + D5 = PB_4, + D6 = PB_10, + D7 = PA_8, + D8 = PA_9, + D9 = PC_7, + D10 = PB_6, + D11 = PA_7, + D12 = PA_6, + D13 = PA_5, + D14 = PB_9, + D15 = PB_8, + + // Generic signals namings + LED1 = PA_5, + LED2 = PA_5, + LED3 = PA_5, + LED4 = PA_5, + USER_BUTTON = PC_13, + SERIAL_TX = PA_2, + SERIAL_RX = PA_3, + USBTX = PA_2, + USBRX = PA_3, + I2C_SCL = PB_8, + I2C_SDA = PB_9, + SPI_MOSI = PA_7, + SPI_MISO = PA_6, + SPI_SCK = PA_5, + SPI_CS = PB_6, + PWM_OUT = PB_3, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullNone = 0, + PullUp = 1, + PullDown = 2, + OpenDrain = 3, + PullDefault = PullNone +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F030R8/TARGET_STM/TARGET_NUCLEO_F030R8/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PortA = 0, + PortB = 1, + PortC = 2, + PortD = 3, + PortF = 5 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F030R8/TARGET_STM/TARGET_NUCLEO_F030R8/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,70 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 // Not present on this device + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 0 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 0 + +#define DEVICE_RTC 1 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SLEEP 1 + +//======================================= + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +//#define DEVICE_ERROR_RED 0 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F030R8/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,67 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + __IO uint16_t *reg_in; + __IO uint32_t *reg_set; + __IO uint16_t *reg_clr; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) { + *obj->reg_set = obj->mask; + } + else { + *obj->reg_clr = obj->mask; + } +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F030R8/TARGET_STM/TARGET_NUCLEO_F030R8/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,102 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + IRQn_Type irq_n; + uint32_t irq_index; + uint32_t event; +}; + +struct port_s { + PortName port; + uint32_t mask; + PinDirection direction; + __IO uint16_t *reg_in; + __IO uint16_t *reg_out; +}; + +struct analogin_s { + ADCName adc; + PinName pin; +}; + +struct dac_s { + DACName dac; + PinName channel; +}; + +struct serial_s { + UARTName uart; + int index; // Used by irq + uint32_t baudrate; + uint32_t databits; + uint32_t stopbits; + uint32_t parity; +}; + +struct spi_s { + SPIName spi; + uint32_t bits; + uint32_t cpol; + uint32_t cpha; + uint32_t mode; + uint32_t nss; + uint32_t br_presc; +}; + +struct i2c_s { + I2CName i2c; +}; + +struct pwmout_s { + PWMName pwm; + PinName pin; + uint32_t period; + uint32_t pulse; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_adc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_can.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_cec.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_comp.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_crc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_crs.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_dac.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_dbgmcu.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_dma.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_exti.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_flash.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_gpio.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_i2c.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_iwdg.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_misc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_pwr.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_rcc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_rtc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_spi.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_syscfg.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_tim.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_usart.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/stm32f0xx_wwdg.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/system_stm32f0xx.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_adc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_can.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_cec.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_comp.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_crc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_crs.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_dac.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_dbgmcu.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_dma.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_exti.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_flash.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_gpio.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_i2c.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_iwdg.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_misc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_pwr.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_rcc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_rtc.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_spi.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_syscfg.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_tim.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_usart.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/stm32f0xx_wwdg.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_STD/system_stm32f0xx.o has changed
--- a/TARGET_NUCLEO_F030R8/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 0 // Not present on this device - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 0 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 0 - -#define DEVICE_RTC 1 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SLEEP 1 - -//======================================= - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 24 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -//#define DEVICE_ERROR_RED 0 - -#include "objects.h" - -#endif
--- a/TARGET_NUCLEO_F030R8/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - __IO uint16_t *reg_in; - __IO uint32_t *reg_set; - __IO uint16_t *reg_clr; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) { - *obj->reg_set = obj->mask; - } - else { - *obj->reg_clr = obj->mask; - } -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F030R8/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - IRQn_Type irq_n; - uint32_t irq_index; - uint32_t event; -}; - -struct port_s { - PortName port; - uint32_t mask; - PinDirection direction; - __IO uint16_t *reg_in; - __IO uint16_t *reg_out; -}; - -struct analogin_s { - ADCName adc; - PinName pin; -}; - -struct dac_s { - DACName dac; - PinName channel; -}; - -struct serial_s { - UARTName uart; - int index; // Used by irq - uint32_t baudrate; - uint32_t databits; - uint32_t stopbits; - uint32_t parity; -}; - -struct spi_s { - SPIName spi; - uint32_t bits; - uint32_t cpol; - uint32_t cpha; - uint32_t mode; - uint32_t nss; - uint32_t br_presc; -}; - -struct i2c_s { - I2CName i2c; -}; - -struct pwmout_s { - PWMName pwm; - PinName pin; - uint32_t period; - uint32_t pulse; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F103RB/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - ADC_1 = (int)ADC1_BASE, - ADC_2 = (int)ADC2_BASE -} ADCName; - -typedef enum { - UART_1 = (int)USART1_BASE, - UART_2 = (int)USART2_BASE -} UARTName; - -#define STDIO_UART_TX PA_2 -#define STDIO_UART_RX PA_3 -#define STDIO_UART UART_2 - -typedef enum { - SPI_1 = (int)SPI1_BASE, - SPI_2 = (int)SPI2_BASE -} SPIName; - -typedef enum { - I2C_1 = (int)I2C1_BASE, - I2C_2 = (int)I2C2_BASE -} I2CName; - -typedef enum { - PWM_2 = (int)TIM2_BASE, - PWM_3 = (int)TIM3_BASE, - PWM_4 = (int)TIM4_BASE -} PWMName; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F103RB/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// MODE (see GPIOMode_TypeDef structure) -// AFNUM (see AF_mapping constant table) -#define STM_PIN_DATA(MODE, AFNUM) (((MODE) << 8) | (AFNUM)) -#define STM_PIN_MODE(X) ((X) >> 8) -#define STM_PIN_AFNUM(X) ((X) & 0xFF) - -// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H) -// Low nibble = pin number -#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF) -#define STM_PIN(X) ((uint32_t)(X) & 0xF) - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -typedef enum { - PA_0 = 0x00, - PA_1 = 0x01, - PA_2 = 0x02, - PA_3 = 0x03, - PA_4 = 0x04, - PA_5 = 0x05, - PA_6 = 0x06, - PA_7 = 0x07, - PA_8 = 0x08, - PA_9 = 0x09, - PA_10 = 0x0A, - PA_11 = 0x0B, - PA_12 = 0x0C, - PA_13 = 0x0D, - PA_14 = 0x0E, - PA_15 = 0x0F, - - PB_0 = 0x10, - PB_1 = 0x11, - PB_2 = 0x12, - PB_3 = 0x13, - PB_4 = 0x14, - PB_5 = 0x15, - PB_6 = 0x16, - PB_7 = 0x17, - PB_8 = 0x18, - PB_9 = 0x19, - PB_10 = 0x1A, - PB_11 = 0x1B, - PB_12 = 0x1C, - PB_13 = 0x1D, - PB_14 = 0x1E, - PB_15 = 0x1F, - - PC_0 = 0x20, - PC_1 = 0x21, - PC_2 = 0x22, - PC_3 = 0x23, - PC_4 = 0x24, - PC_5 = 0x25, - PC_6 = 0x26, - PC_7 = 0x27, - PC_8 = 0x28, - PC_9 = 0x29, - PC_10 = 0x2A, - PC_11 = 0x2B, - PC_12 = 0x2C, - PC_13 = 0x2D, - PC_14 = 0x2E, - PC_15 = 0x2F, - - PD_0 = 0x30, - PD_1 = 0x31, - PD_2 = 0x32, - - // Arduino connector namings - A0 = PA_0, - A1 = PA_1, - A2 = PA_4, - A3 = PB_0, - A4 = PC_1, - A5 = PC_0, - D0 = PA_3, - D1 = PA_2, - D2 = PA_10, - D3 = PB_3, - D4 = PB_5, - D5 = PB_4, - D6 = PB_10, - D7 = PA_8, - D8 = PA_9, - D9 = PC_7, - D10 = PB_6, - D11 = PA_7, - D12 = PA_6, - D13 = PA_5, - D14 = PB_9, - D15 = PB_8, - - // Generic signals namings - LED1 = PA_5, - LED2 = PA_5, - LED3 = PA_5, - LED4 = PA_5, - USER_BUTTON = PC_13, - USBTX = PA_2, - USBRX = PA_3, - I2C_SCL = PB_8, - I2C_SDA = PB_9, - SPI_MOSI = PA_7, - SPI_MISO = PA_6, - SPI_SCK = PA_5, - SPI_CS = PB_6, - PWM_OUT = PB_3, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -typedef enum { - PullNone = 0, - PullUp = 1, - PullDown = 2, - OpenDrain = 3, - PullDefault = PullNone -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F103RB/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PortA = 0, - PortB = 1, - PortC = 2, - PortD = 3, - PortE = 4 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F103RB/TARGET_STM/TARGET_NUCLEO_F103RB/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,73 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + ADC_1 = (int)ADC1_BASE, + ADC_2 = (int)ADC2_BASE +} ADCName; + +typedef enum { + UART_1 = (int)USART1_BASE, + UART_2 = (int)USART2_BASE +} UARTName; + +#define STDIO_UART_TX PA_2 +#define STDIO_UART_RX PA_3 +#define STDIO_UART UART_2 + +typedef enum { + SPI_1 = (int)SPI1_BASE, + SPI_2 = (int)SPI2_BASE +} SPIName; + +typedef enum { + I2C_1 = (int)I2C1_BASE, + I2C_2 = (int)I2C2_BASE +} I2CName; + +typedef enum { + PWM_2 = (int)TIM2_BASE, + PWM_3 = (int)TIM3_BASE, + PWM_4 = (int)TIM4_BASE +} PWMName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F103RB/TARGET_STM/TARGET_NUCLEO_F103RB/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,169 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// MODE (see GPIOMode_TypeDef structure) +// AFNUM (see AF_mapping constant table) +#define STM_PIN_DATA(MODE, AFNUM) (((MODE) << 8) | (AFNUM)) +#define STM_PIN_MODE(X) ((X) >> 8) +#define STM_PIN_AFNUM(X) ((X) & 0xFF) + +// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H) +// Low nibble = pin number +#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF) +#define STM_PIN(X) ((uint32_t)(X) & 0xF) + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +typedef enum { + PA_0 = 0x00, + PA_1 = 0x01, + PA_2 = 0x02, + PA_3 = 0x03, + PA_4 = 0x04, + PA_5 = 0x05, + PA_6 = 0x06, + PA_7 = 0x07, + PA_8 = 0x08, + PA_9 = 0x09, + PA_10 = 0x0A, + PA_11 = 0x0B, + PA_12 = 0x0C, + PA_13 = 0x0D, + PA_14 = 0x0E, + PA_15 = 0x0F, + + PB_0 = 0x10, + PB_1 = 0x11, + PB_2 = 0x12, + PB_3 = 0x13, + PB_4 = 0x14, + PB_5 = 0x15, + PB_6 = 0x16, + PB_7 = 0x17, + PB_8 = 0x18, + PB_9 = 0x19, + PB_10 = 0x1A, + PB_11 = 0x1B, + PB_12 = 0x1C, + PB_13 = 0x1D, + PB_14 = 0x1E, + PB_15 = 0x1F, + + PC_0 = 0x20, + PC_1 = 0x21, + PC_2 = 0x22, + PC_3 = 0x23, + PC_4 = 0x24, + PC_5 = 0x25, + PC_6 = 0x26, + PC_7 = 0x27, + PC_8 = 0x28, + PC_9 = 0x29, + PC_10 = 0x2A, + PC_11 = 0x2B, + PC_12 = 0x2C, + PC_13 = 0x2D, + PC_14 = 0x2E, + PC_15 = 0x2F, + + PD_0 = 0x30, + PD_1 = 0x31, + PD_2 = 0x32, + + // Arduino connector namings + A0 = PA_0, + A1 = PA_1, + A2 = PA_4, + A3 = PB_0, + A4 = PC_1, + A5 = PC_0, + D0 = PA_3, + D1 = PA_2, + D2 = PA_10, + D3 = PB_3, + D4 = PB_5, + D5 = PB_4, + D6 = PB_10, + D7 = PA_8, + D8 = PA_9, + D9 = PC_7, + D10 = PB_6, + D11 = PA_7, + D12 = PA_6, + D13 = PA_5, + D14 = PB_9, + D15 = PB_8, + + // Generic signals namings + LED1 = PA_5, + LED2 = PA_5, + LED3 = PA_5, + LED4 = PA_5, + USER_BUTTON = PC_13, + SERIAL_TX = PA_2, + SERIAL_RX = PA_3, + USBTX = PA_2, + USBRX = PA_3, + I2C_SCL = PB_8, + I2C_SDA = PB_9, + SPI_MOSI = PA_7, + SPI_MISO = PA_6, + SPI_SCK = PA_5, + SPI_CS = PB_6, + PWM_OUT = PB_3, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullNone = 0, + PullUp = 1, + PullDown = 2, + OpenDrain = 3, + PullDefault = PullNone +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F103RB/TARGET_STM/TARGET_NUCLEO_F103RB/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PortA = 0, + PortB = 1, + PortC = 2, + PortD = 3, + PortE = 4 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F103RB/TARGET_STM/TARGET_NUCLEO_F103RB/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,70 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 0 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 0 + +#define DEVICE_RTC 1 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SLEEP 1 + +//======================================= + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +//#define DEVICE_ERROR_RED 0 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F103RB/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,67 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + __IO uint32_t *reg_in; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) { + *obj->reg_set = obj->mask; + } + else { + *obj->reg_clr = obj->mask; + } +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F103RB/TARGET_STM/TARGET_NUCLEO_F103RB/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,97 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + IRQn_Type irq_n; + uint32_t irq_index; + uint32_t event; +}; + +struct port_s { + PortName port; + uint32_t mask; + PinDirection direction; + __IO uint32_t *reg_in; + __IO uint32_t *reg_out; +}; + +struct analogin_s { + ADCName adc; + PinName pin; +}; + +struct serial_s { + UARTName uart; + int index; // Used by irq + uint32_t baudrate; + uint32_t databits; + uint32_t stopbits; + uint32_t parity; +}; + +struct spi_s { + SPIName spi; + uint32_t bits; + uint32_t cpol; + uint32_t cpha; + uint32_t mode; + uint32_t nss; + uint32_t br_presc; +}; + +struct i2c_s { + I2CName i2c; +}; + +struct pwmout_s { + PWMName pwm; + PinName pin; + uint32_t period; + uint32_t pulse; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/mbed_overrides.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/misc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_adc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_bkp.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_can.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_cec.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_crc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_dac.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_dbgmcu.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_dma.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_exti.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_flash.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_fsmc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_gpio.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_i2c.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_iwdg.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_pwr.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_rcc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_rtc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_sdio.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_spi.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_tim.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_usart.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/stm32f10x_wwdg.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/system_stm32f10x.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/mbed_overrides.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/misc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_adc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_bkp.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_can.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_cec.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_crc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_dac.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_dbgmcu.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_dma.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_exti.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_flash.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_fsmc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_gpio.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_i2c.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_iwdg.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_pwr.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_rcc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_rtc.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_sdio.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_spi.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_tim.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_usart.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/stm32f10x_wwdg.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_STD/system_stm32f10x.o has changed
--- a/TARGET_NUCLEO_F103RB/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 0 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 0 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 0 - -#define DEVICE_RTC 1 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SLEEP 1 - -//======================================= - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 24 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -//#define DEVICE_ERROR_RED 0 - -#include "objects.h" - -#endif
--- a/TARGET_NUCLEO_F103RB/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - __IO uint32_t *reg_in; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) { - *obj->reg_set = obj->mask; - } - else { - *obj->reg_clr = obj->mask; - } -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F103RB/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - IRQn_Type irq_n; - uint32_t irq_index; - uint32_t event; -}; - -struct port_s { - PortName port; - uint32_t mask; - PinDirection direction; - __IO uint32_t *reg_in; - __IO uint32_t *reg_out; -}; - -struct analogin_s { - ADCName adc; - PinName pin; -}; - -struct serial_s { - UARTName uart; - int index; // Used by irq - uint32_t baudrate; - uint32_t databits; - uint32_t stopbits; - uint32_t parity; -}; - -struct spi_s { - SPIName spi; - uint32_t bits; - uint32_t cpol; - uint32_t cpha; - uint32_t mode; - uint32_t nss; - uint32_t br_presc; -}; - -struct i2c_s { - I2CName i2c; -}; - -struct pwmout_s { - PWMName pwm; - PinName pin; - uint32_t period; - uint32_t pulse; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/TARGET_STM/TARGET_NUCLEO_F302R8/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,79 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + ADC_1 = (int)ADC1_BASE +} ADCName; + +typedef enum { + DAC_1 = (int)DAC_BASE +} DACName; + +typedef enum { + UART_1 = (int)USART1_BASE, + UART_2 = (int)USART2_BASE, + UART_3 = (int)USART3_BASE +} UARTName; + +#define STDIO_UART_TX PA_2 +#define STDIO_UART_RX PA_3 +#define STDIO_UART UART_2 + +typedef enum { + SPI_2 = (int)SPI2_BASE, + SPI_3 = (int)SPI3_BASE +} SPIName; + +typedef enum { + I2C_1 = (int)I2C1_BASE, + I2C_2 = (int)I2C2_BASE, + I2C_3 = (int)I2C3_BASE +} I2CName; + +typedef enum { + PWM_1 = (int)TIM1_BASE, + PWM_15 = (int)TIM15_BASE, + PWM_16 = (int)TIM16_BASE, + PWM_17 = (int)TIM17_BASE +} PWMName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/TARGET_STM/TARGET_NUCLEO_F302R8/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,174 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// MODE (see GPIOMode_TypeDef structure) +// OTYPE (see GPIOOType_TypeDef structure) +// PUPD (see GPIOPuPd_TypeDef structure) +// AFNUM (see AF_mapping constant table, 0xFF is not used) +#define STM_PIN_DATA(MODE, OTYPE, PUPD, AFNUM) (((AFNUM)<<8)|((PUPD)<<4)|((OTYPE)<<2)|((MODE)<<0)) +#define STM_PIN_MODE(X) (((X)>>0) & 0x3) +#define STM_PIN_OTYPE(X) (((X)>>2) & 0x1) +#define STM_PIN_PUPD(X) (((X)>>4) & 0x3) +#define STM_PIN_AFNUM(X) (((X)>>8) & 0xF) + +// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H) +// Low nibble = pin number +#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF) +#define STM_PIN(X) ((uint32_t)(X) & 0xF) + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +typedef enum { + PA_0 = 0x00, + PA_1 = 0x01, + PA_2 = 0x02, + PA_3 = 0x03, + PA_4 = 0x04, + PA_5 = 0x05, + PA_6 = 0x06, + PA_7 = 0x07, + PA_8 = 0x08, + PA_9 = 0x09, + PA_10 = 0x0A, + PA_11 = 0x0B, + PA_12 = 0x0C, + PA_13 = 0x0D, + PA_14 = 0x0E, + PA_15 = 0x0F, + + PB_0 = 0x10, + PB_1 = 0x11, + PB_2 = 0x12, + PB_3 = 0x13, + PB_4 = 0x14, + PB_5 = 0x15, + PB_6 = 0x16, + PB_7 = 0x17, + PB_8 = 0x18, + PB_9 = 0x19, + PB_10 = 0x1A, + PB_11 = 0x1B, + PB_12 = 0x1C, + PB_13 = 0x1D, + PB_14 = 0x1E, + PB_15 = 0x1F, + + PC_0 = 0x20, + PC_1 = 0x21, + PC_2 = 0x22, + PC_3 = 0x23, + PC_4 = 0x24, + PC_5 = 0x25, + PC_6 = 0x26, + PC_7 = 0x27, + PC_8 = 0x28, + PC_9 = 0x29, + PC_10 = 0x2A, + PC_11 = 0x2B, + PC_12 = 0x2C, + PC_13 = 0x2D, + PC_14 = 0x2E, + PC_15 = 0x2F, + + PD_2 = 0x32, + + PF_0 = 0x50, + PF_1 = 0x51, + + // Arduino connector namings + A0 = PA_0, + A1 = PA_1, + A2 = PA_4, + A3 = PB_0, + A4 = PC_1, + A5 = PC_0, + D0 = PA_3, + D1 = PA_2, + D2 = PA_10, + D3 = PB_3, + D4 = PB_5, + D5 = PB_4, + D6 = PB_10, + D7 = PA_8, + D8 = PA_9, + D9 = PC_7, + D10 = PB_6, + D11 = PB_15, + D12 = PB_14, + D13 = PB_13, + D14 = PB_9, + D15 = PB_8, + + // Generic signals namings + LED1 = PA_5, + LED2 = PA_5, + LED3 = PA_5, + LED4 = PA_5, + USER_BUTTON = PC_13, + SERIAL_TX = PA_2, + SERIAL_RX = PA_3, + USBTX = PA_2, + USBRX = PA_3, + I2C_SCL = PB_8, + I2C_SDA = PB_9, + SPI_MOSI = PB_15, + SPI_MISO = PB_14, + SPI_SCK = PB_13, + SPI_CS = PB_6, + PWM_OUT = PB_4, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullNone = 0, + PullUp = 1, + PullDown = 2, + OpenDrain = 3, + PullDefault = PullNone +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/TARGET_STM/TARGET_NUCLEO_F302R8/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PortA = 0, + PortB = 1, + PortC = 2, + PortD = 3, + PortF = 5 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/TARGET_STM/TARGET_NUCLEO_F302R8/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,71 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 0 // Not yet supported + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 0 // Not yet supported + +#define DEVICE_RTC 1 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SLEEP 1 + +//======================================= + +#define DEVICE_SEMIHOST 0 + +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_RED 0 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/TARGET_STM/TARGET_NUCLEO_F302R8/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,66 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + __IO uint16_t *reg_in; + __IO uint32_t *reg_set; + __IO uint16_t *reg_clr; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) { + *obj->reg_set = obj->mask; + } else { + *obj->reg_clr = obj->mask; + } +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/TARGET_STM/TARGET_NUCLEO_F302R8/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,102 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + IRQn_Type irq_n; + uint32_t irq_index; + uint32_t event; +}; + +struct port_s { + PortName port; + uint32_t mask; + PinDirection direction; + __IO uint16_t *reg_in; + __IO uint16_t *reg_out; +}; + +struct analogin_s { + ADCName adc; + PinName pin; +}; + +struct dac_s { + DACName dac; + PinName channel; +}; + +struct serial_s { + UARTName uart; + int index; // Used by irq + uint32_t baudrate; + uint32_t databits; + uint32_t stopbits; + uint32_t parity; +}; + +struct spi_s { + SPIName spi; + uint32_t bits; + uint32_t cpol; + uint32_t cpha; + uint32_t mode; + uint32_t nss; + uint32_t br_presc; +}; + +struct i2c_s { + I2CName i2c; +}; + +struct pwmout_s { + PWMName pwm; + PinName pin; + uint32_t period; + uint32_t pulse; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/mbed_overrides.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/startup_stm32f302x8.o has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f302x8.sct Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,45 @@ +; Scatter-Loading Description File +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Copyright (c) 2014, STMicroelectronics +; All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions are met: +; +; 1. Redistributions of source code must retain the above copyright notice, +; this list of conditions and the following disclaimer. +; 2. Redistributions in binary form must reproduce the above copyright notice, +; this list of conditions and the following disclaimer in the documentation +; and/or other materials provided with the distribution. +; 3. Neither the name of STMicroelectronics nor the names of its contributors +; may be used to endorse or promote products derived from this software +; without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; STM32F302R8: 64KB FLASH + 16KB SRAM +LR_IROM1 0x08000000 0x10000 { ; load region size_region + + ER_IROM1 0x08000000 0x10000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + + ; 98 vectors (16 core + 82 peripheral) * 4 bytes = 392 bytes to reserve (0x188) + RW_IRAM1 (0x20000000+0x188) (0x4000-0x188) { ; RW data + .ANY (+RW +ZI) + } + +} +
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_adc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_can.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_comp.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_crc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_dac.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_dbgmcu.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_dma.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_exti.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_flash.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_gpio.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_hrtim.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_i2c.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_iwdg.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_misc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_opamp.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_pwr.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_rcc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_rtc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_spi.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_syscfg.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_tim.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_usart.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f30x_wwdg.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/system_stm32f30x.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/mbed_overrides.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/startup_stm32f302x8.o has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f302x8.sct Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,45 @@ +; Scatter-Loading Description File +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Copyright (c) 2014, STMicroelectronics +; All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions are met: +; +; 1. Redistributions of source code must retain the above copyright notice, +; this list of conditions and the following disclaimer. +; 2. Redistributions in binary form must reproduce the above copyright notice, +; this list of conditions and the following disclaimer in the documentation +; and/or other materials provided with the distribution. +; 3. Neither the name of STMicroelectronics nor the names of its contributors +; may be used to endorse or promote products derived from this software +; without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; STM32F302R8: 64KB FLASH + 16KB SRAM +LR_IROM1 0x08000000 0x10000 { ; load region size_region + + ER_IROM1 0x08000000 0x10000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + + ; 98 vectors (16 core + 82 peripheral) * 4 bytes = 392 bytes to reserve (0x188) + RW_IRAM1 (0x20000000+0x188) (0x4000-0x188) { ; RW data + .ANY (+RW +ZI) + } + +} +
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_adc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_can.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_comp.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_crc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_dac.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_dbgmcu.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_dma.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_exti.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_flash.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_gpio.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_hrtim.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_i2c.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_iwdg.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_misc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_opamp.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_pwr.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_rcc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_rtc.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_spi.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_syscfg.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_tim.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_usart.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f30x_wwdg.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/system_stm32f30x.o has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/cmsis.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,38 @@ +/* mbed Microcontroller Library + * A generic CMSIS include header + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ + +#ifndef MBED_CMSIS_H +#define MBED_CMSIS_H + +#include "stm32f30x.h" +#include "cmsis_nvic.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/cmsis_nvic.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,55 @@ +/* mbed Microcontroller Library + * CMSIS-style functionality to support dynamic vectors + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ + +#ifndef MBED_CMSIS_NVIC_H +#define MBED_CMSIS_NVIC_H + +// STM32F302R8 +// CORE: 16 vectors (= 64 bytes from 0x00 to 0x3F) +// MCU Peripherals: 82 vectors (= 328 bytes from 0x40 to ...) +// Total: 392 bytes to be reserved in RAM (see scatter file) +#define NVIC_NUM_VECTORS (16 + 82) +#define NVIC_USER_IRQ_OFFSET 16 + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector); +uint32_t NVIC_GetVector(IRQn_Type IRQn); + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/core_cm0.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,682 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM0_H_GENERIC +#define __CORE_CM0_H_GENERIC + +/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.<br> + Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br> + Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.<br> + Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \ingroup Cortex_M0 + @{ + */ + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16) | \ + __CM0_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x00) /*!< Cortex-M Core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + #define __STATIC_INLINE static __inline + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + #define __STATIC_INLINE static inline + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + #define __STATIC_INLINE static inline + +#endif + +/** __FPU_USED indicates whether an FPU is used or not. This core does not support an FPU at all +*/ +#define __FPU_USED 0 + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif +#endif + +#include <stdint.h> /* standard types definitions */ +#include <core_cmInstr.h> /* Core Instruction Access */ +#include <core_cmFunc.h> /* Core Function Access */ + +#endif /* __CORE_CM0_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0_H_DEPENDANT +#define __CORE_CM0_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0_REV + #define __CM0_REV 0x0000 + #warning "__CM0_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + <strong>IO Type Qualifiers</strong> are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/*@} end of group Cortex_M0 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[1]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31]; + __IO uint32_t ICER[1]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31]; + __IO uint32_t ISPR[1]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31]; + __IO uint32_t ICPR[1]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31]; + uint32_t RESERVED4[64]; + __IO uint32_t IP[8]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IO uint32_t SHP[2]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) + are only accessible over DAP and not via processor. Therefore + they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Cortex-M0 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +/* Interrupt Priorities are WORD accessible only under ARMv6M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( (((uint32_t)(IRQn) ) & 0x03) * 8 ) +#define _SHP_IDX(IRQn) ( ((((uint32_t)(IRQn) & 0x0F)-8) >> 2) ) +#define _IP_IDX(IRQn) ( ((uint32_t)(IRQn) >> 2) ) + + +/** \brief Enable External Interrupt + + The function enables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Disable External Interrupt + + The function disables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Get Pending Interrupt + + The function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + */ +__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); +} + + +/** \brief Set Pending Interrupt + + The function sets the pending bit of an external interrupt. + + \param [in] IRQn Interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Clear Pending Interrupt + + The function clears the pending bit of an external interrupt. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Set Interrupt Priority + + The function sets the priority of an interrupt. + + \note The priority cannot be set for every core interrupt. + + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + */ +__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } + else { + NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } +} + + +/** \brief Get Interrupt Priority + + The function reads the priority of an interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented + priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M0 system interrupts */ + else { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief System Reset + + The function initiates a system reset request to reset the MCU. + */ +__STATIC_INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + The function initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + + \param [in] ticks Number of ticks between two interrupts. + + \return 0 Function succeeded. + \return 1 Function failed. + + \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the + function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = ticks - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#endif /* __CORE_CM0_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/core_cm0plus.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,793 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_H_GENERIC + +/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.<br> + Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br> + Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.<br> + Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \ingroup Cortex-M0+ + @{ + */ + +/* CMSIS CM0P definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16) | \ + __CM0PLUS_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x00) /*!< Cortex-M Core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + #define __STATIC_INLINE static __inline + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + #define __STATIC_INLINE static inline + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + #define __STATIC_INLINE static inline + +#endif + +/** __FPU_USED indicates whether an FPU is used or not. This core does not support an FPU at all +*/ +#define __FPU_USED 0 + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif +#endif + +#include <stdint.h> /* standard types definitions */ +#include <core_cmInstr.h> /* Core Instruction Access */ +#include <core_cmFunc.h> /* Core Function Access */ + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000 + #warning "__CM0PLUS_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0 + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0 + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + <strong>IO Type Qualifiers</strong> are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/*@} end of group Cortex-M0+ */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[1]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31]; + __IO uint32_t ICER[1]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31]; + __IO uint32_t ISPR[1]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31]; + __IO uint32_t ICPR[1]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31]; + uint32_t RESERVED4[64]; + __IO uint32_t IP[8]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if (__VTOR_PRESENT == 1) + __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IO uint32_t SHP[2]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if (__VTOR_PRESENT == 1) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if (__MPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 8 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18 /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17 /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16 /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) + are only accessible over DAP and not via processor. Therefore + they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Cortex-M0+ Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +/* Interrupt Priorities are WORD accessible only under ARMv6M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( (((uint32_t)(IRQn) ) & 0x03) * 8 ) +#define _SHP_IDX(IRQn) ( ((((uint32_t)(IRQn) & 0x0F)-8) >> 2) ) +#define _IP_IDX(IRQn) ( ((uint32_t)(IRQn) >> 2) ) + + +/** \brief Enable External Interrupt + + The function enables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Disable External Interrupt + + The function disables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Get Pending Interrupt + + The function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + */ +__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); +} + + +/** \brief Set Pending Interrupt + + The function sets the pending bit of an external interrupt. + + \param [in] IRQn Interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Clear Pending Interrupt + + The function clears the pending bit of an external interrupt. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Set Interrupt Priority + + The function sets the priority of an interrupt. + + \note The priority cannot be set for every core interrupt. + + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + */ +__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } + else { + NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } +} + + +/** \brief Get Interrupt Priority + + The function reads the priority of an interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented + priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M0 system interrupts */ + else { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief System Reset + + The function initiates a system reset request to reset the MCU. + */ +__STATIC_INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + The function initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + + \param [in] ticks Number of ticks between two interrupts. + + \return 0 Function succeeded. + \return 1 Function failed. + + \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the + function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = ticks - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#endif /* __CORE_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/core_cm3.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1627 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_H_GENERIC + +/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.<br> + Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br> + Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.<br> + Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \ingroup Cortex_M3 + @{ + */ + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x03) /*!< Cortex-M Core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + #define __STATIC_INLINE static __inline + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + #define __STATIC_INLINE static inline + +#elif defined ( __TMS470__ ) + #define __ASM __asm /*!< asm keyword for TI CCS Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + #define __STATIC_INLINE static inline + +#endif + +/** __FPU_USED indicates whether an FPU is used or not. This core does not support an FPU at all +*/ +#define __FPU_USED 0 + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TMS470__ ) + #if defined __TI__VFP_SUPPORT____ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif +#endif + +#include <stdint.h> /* standard types definitions */ +#include <core_cmInstr.h> /* Core Instruction Access */ +#include <core_cmFunc.h> /* Core Function Access */ + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200 + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0 + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 4 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + <strong>IO Type Qualifiers</strong> are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/*@} end of group Cortex_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24]; + __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24]; + __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24]; + __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24]; + __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56]; + __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644]; + __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5]; + __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#if (__CM3_REV < 0x0201) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Registers Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* SCB Hard Fault Status Registers Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) + __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __O union + { + __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864]; + __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15]; + __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15]; + __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29]; + __O uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __I uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IO uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43]; + __O uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __I uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6]; + __I uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __I uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __I uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __I uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __I uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __I uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __I uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __I uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __I uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __I uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __I uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __I uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IO uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IO uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IO uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IO uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IO uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IO uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __I uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IO uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IO uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IO uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1]; + __IO uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IO uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IO uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1]; + __IO uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IO uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IO uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1]; + __IO uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IO uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IO uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28 /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27 /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26 /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25 /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24 /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22 /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21 /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20 /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19 /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18 /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17 /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16 /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12 /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10 /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9 /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5 /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1 /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0 /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL << DWT_CTRL_CYCCNTENA_Pos) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0 /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL << DWT_CPICNT_CPICNT_Pos) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0 /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL << DWT_EXCCNT_EXCCNT_Pos) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0 /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0 /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL << DWT_LSUCNT_LSUCNT_Pos) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0 /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0 /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL << DWT_MASK_MASK_Pos) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24 /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16 /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12 /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10 /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9 /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8 /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7 /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5 /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0 /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL << DWT_FUNCTION_FUNCTION_Pos) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IO uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IO uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2]; + __IO uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55]; + __IO uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131]; + __I uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IO uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __I uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759]; + __I uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ + __I uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __I uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1]; + __I uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __I uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IO uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39]; + __IO uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IO uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8]; + __I uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __I uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0 /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL << TPI_ACPR_PRESCALER_Pos) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0 /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL << TPI_SPPR_TXMODE_Pos) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3 /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2 /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1 /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0 /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL << TPI_FFSR_FlInProg_Pos) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8 /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1 /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0 /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL << TPI_TRIGGER_TRIGGER_Pos) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29 /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27 /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26 /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24 /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16 /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8 /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0 /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL << TPI_FIFO0_ETM0_Pos) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY_Pos 0 /*!< TPI ITATBCTR2: ATREADY Position */ +#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL << TPI_ITATBCTR2_ATREADY_Pos) /*!< TPI ITATBCTR2: ATREADY Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29 /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27 /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26 /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24 /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16 /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8 /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0 /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL << TPI_FIFO1_ITM0_Pos) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY_Pos 0 /*!< TPI ITATBCTR0: ATREADY Position */ +#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL << TPI_ITATBCTR0_ATREADY_Pos) /*!< TPI ITATBCTR0: ATREADY Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0 /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x1UL << TPI_ITCTRL_Mode_Pos) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11 /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10 /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9 /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6 /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5 /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0 /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL << TPI_DEVID_NrTraceInput_Pos) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 0 /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL << TPI_DEVTYPE_SubType_Pos) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 4 /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if (__MPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18 /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17 /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16 /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Cortex-M3 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +/** \brief Set Priority Grouping + + The function sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** \brief Get Priority Grouping + + The function reads the priority grouping field from the NVIC Interrupt Controller. + + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void) +{ + return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ +} + + +/** \brief Enable External Interrupt + + The function enables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ +} + + +/** \brief Disable External Interrupt + + The function disables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + + +/** \brief Get Pending Interrupt + + The function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + */ +__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + + +/** \brief Set Pending Interrupt + + The function sets the pending bit of an external interrupt. + + \param [in] IRQn Interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + + +/** \brief Clear Pending Interrupt + + The function clears the pending bit of an external interrupt. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Get Active Interrupt + + The function reads the active register in NVIC and returns the active bit. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + */ +__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ +} + + +/** \brief Set Interrupt Priority + + The function sets the priority of an interrupt. + + \note The priority cannot be set for every core interrupt. + + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + */ +__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ + else { + NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ +} + + +/** \brief Get Interrupt Priority + + The function reads the priority of an interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented + priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ + else { + return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief Encode Priority + + The function encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set. + + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + return ( + ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | + ((SubPriority & ((1 << (SubPriorityBits )) - 1))) + ); +} + + +/** \brief Decode Priority + + The function decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); + *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); +} + + +/** \brief System Reset + + The function initiates a system reset request to reset the MCU. + */ +__STATIC_INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + The function initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + + \param [in] ticks Number of ticks between two interrupts. + + \return 0 Function succeeded. + \return 1 Function failed. + + \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the + function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = ticks - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** \brief ITM Send Character + + The function transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + + \param [in] ch Character to transmit. + + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if ((ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ + (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0].u32 == 0); + ITM->PORT[0].u8 = (uint8_t) ch; + } + return (ch); +} + + +/** \brief ITM Receive Character + + The function inputs a character via the external variable \ref ITM_RxBuffer. + + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) { + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** \brief ITM Check Character + + The function checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) { + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { + return (0); /* no character available */ + } else { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/core_cm4.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1772 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +/** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.<br> + Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br> + Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.<br> + Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \ingroup Cortex_M4 + @{ + */ + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x04) /*!< Cortex-M Core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + #define __STATIC_INLINE static __inline + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + #define __STATIC_INLINE static inline + +#elif defined ( __TMS470__ ) + #define __ASM __asm /*!< asm keyword for TI CCS Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + #define __STATIC_INLINE static inline + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + #define __STATIC_INLINE static inline + +#endif + +/** __FPU_USED indicates whether an FPU is used or not. For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __TMS470__ ) + #if defined __TI_VFP_SUPPORT__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif +#endif + +#include <stdint.h> /* standard types definitions */ +#include <core_cmInstr.h> /* Core Instruction Access */ +#include <core_cmFunc.h> /* Core Function Access */ +#include <core_cm4_simd.h> /* Compiler specific SIMD Intrinsics */ + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000 + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0 + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0 + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 4 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + <strong>IO Type Qualifiers</strong> are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24]; + __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24]; + __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24]; + __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24]; + __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56]; + __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644]; + __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5]; + __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Registers Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* SCB Hard Fault Status Registers Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9 /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8 /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __O union + { + __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864]; + __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15]; + __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15]; + __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29]; + __O uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __I uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IO uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43]; + __O uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __I uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6]; + __I uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __I uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __I uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __I uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __I uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __I uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __I uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __I uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __I uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __I uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __I uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __I uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IO uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IO uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IO uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IO uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IO uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IO uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __I uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IO uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IO uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IO uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1]; + __IO uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IO uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IO uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1]; + __IO uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IO uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IO uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1]; + __IO uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IO uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IO uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28 /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27 /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26 /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25 /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24 /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22 /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21 /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20 /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19 /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18 /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17 /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16 /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12 /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10 /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9 /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5 /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1 /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0 /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL << DWT_CTRL_CYCCNTENA_Pos) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0 /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL << DWT_CPICNT_CPICNT_Pos) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0 /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL << DWT_EXCCNT_EXCCNT_Pos) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0 /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0 /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL << DWT_LSUCNT_LSUCNT_Pos) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0 /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0 /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL << DWT_MASK_MASK_Pos) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24 /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16 /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12 /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10 /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9 /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8 /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7 /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5 /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0 /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL << DWT_FUNCTION_FUNCTION_Pos) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IO uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IO uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2]; + __IO uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55]; + __IO uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131]; + __I uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IO uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __I uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759]; + __I uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ + __I uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __I uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1]; + __I uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __I uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IO uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39]; + __IO uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IO uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8]; + __I uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __I uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0 /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL << TPI_ACPR_PRESCALER_Pos) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0 /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL << TPI_SPPR_TXMODE_Pos) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3 /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2 /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1 /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0 /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL << TPI_FFSR_FlInProg_Pos) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8 /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1 /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0 /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL << TPI_TRIGGER_TRIGGER_Pos) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29 /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27 /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26 /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24 /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16 /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8 /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0 /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL << TPI_FIFO0_ETM0_Pos) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY_Pos 0 /*!< TPI ITATBCTR2: ATREADY Position */ +#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL << TPI_ITATBCTR2_ATREADY_Pos) /*!< TPI ITATBCTR2: ATREADY Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29 /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27 /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26 /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24 /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16 /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8 /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0 /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL << TPI_FIFO1_ITM0_Pos) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY_Pos 0 /*!< TPI ITATBCTR0: ATREADY Position */ +#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL << TPI_ITATBCTR0_ATREADY_Pos) /*!< TPI ITATBCTR0: ATREADY Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0 /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x1UL << TPI_ITCTRL_Mode_Pos) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11 /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10 /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9 /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6 /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5 /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0 /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL << TPI_DEVID_NrTraceInput_Pos) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 0 /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL << TPI_DEVTYPE_SubType_Pos) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 4 /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if (__MPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18 /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17 /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16 /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if (__FPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __IO uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IO uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IO uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __I uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __I uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register */ +#define FPU_FPCCR_ASPEN_Pos 31 /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30 /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8 /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6 /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5 /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4 /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3 /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1 /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0 /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL << FPU_FPCCR_LSPACT_Pos) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register */ +#define FPU_FPCAR_ADDRESS_Pos 3 /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register */ +#define FPU_FPDSCR_AHP_Pos 26 /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25 /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24 /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22 /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28 /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24 /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20 /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16 /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12 /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8 /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4 /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0 /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28 /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24 /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4 /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0 /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL << FPU_MVFR1_FtZ_mode_Pos) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ +#endif + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Cortex-M4 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#if (__FPU_PRESENT == 1) + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +/** \brief Set Priority Grouping + + The function sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** \brief Get Priority Grouping + + The function reads the priority grouping field from the NVIC Interrupt Controller. + + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void) +{ + return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ +} + + +/** \brief Enable External Interrupt + + The function enables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ +/* NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); enable interrupt */ + NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */ +} + + +/** \brief Disable External Interrupt + + The function disables a device-specific interrupt in the NVIC interrupt controller. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + + +/** \brief Get Pending Interrupt + + The function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + */ +__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + + +/** \brief Set Pending Interrupt + + The function sets the pending bit of an external interrupt. + + \param [in] IRQn Interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + + +/** \brief Clear Pending Interrupt + + The function clears the pending bit of an external interrupt. + + \param [in] IRQn External interrupt number. Value cannot be negative. + */ +__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Get Active Interrupt + + The function reads the active register in NVIC and returns the active bit. + + \param [in] IRQn Interrupt number. + + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + */ +__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ +} + + +/** \brief Set Interrupt Priority + + The function sets the priority of an interrupt. + + \note The priority cannot be set for every core interrupt. + + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + */ +__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ + else { + NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ +} + + +/** \brief Get Interrupt Priority + + The function reads the priority of an interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented + priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ + else { + return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief Encode Priority + + The function encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set. + + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + return ( + ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | + ((SubPriority & ((1 << (SubPriorityBits )) - 1))) + ); +} + + +/** \brief Decode Priority + + The function decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); + *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); +} + + +/** \brief System Reset + + The function initiates a system reset request to reset the MCU. + */ +__STATIC_INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + The function initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + + \param [in] ticks Number of ticks between two interrupts. + + \return 0 Function succeeded. + \return 1 Function failed. + + \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the + function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = ticks - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** \brief ITM Send Character + + The function transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + + \param [in] ch Character to transmit. + + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if ((ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ + (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0].u32 == 0); + ITM->PORT[0].u8 = (uint8_t) ch; + } + return (ch); +} + + +/** \brief ITM Receive Character + + The function inputs a character via the external variable \ref ITM_RxBuffer. + + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) { + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** \brief ITM Check Character + + The function checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) { + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { + return (0); /* no character available */ + } else { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/core_cm4_simd.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,673 @@ +/**************************************************************************//** + * @file core_cm4_simd.h + * @brief CMSIS Cortex-M4 SIMD Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM4_SIMD_H +#define __CORE_CM4_SIMD_H + + +/******************************************************************************* + * Hardware Abstraction Layer + ******************************************************************************/ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ + ((int64_t)(ARG3) << 32) ) >> 32)) + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +#include <cmsis_iar.h> + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ +/* TI CCS specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +#include <cmsis_ccs.h> + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SMLALD(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +#define __SMLALDX(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SMLSLD(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +#define __SMLSLDX(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ +/* TASKING carm specific functions */ + + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +/* not yet supported */ +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + +#endif + +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CORE_CM4_SIMD_H */ + +#ifdef __cplusplus +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/core_cmFunc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,636 @@ +/**************************************************************************//** + * @file core_cmFunc.h + * @brief CMSIS Cortex-M Core Function Access Header File + * @version V3.20 + * @date 25. February 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#ifndef __CORE_CMFUNC_H +#define __CORE_CMFUNC_H + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#if (__ARMCC_VERSION < 400677) + #error "Please use ARM Compiler Toolchain V4.0.677 or later!" +#endif + +/* intrinsic void __enable_irq(); */ +/* intrinsic void __disable_irq(); */ + +/** \brief Get Control Register + + This function returns the content of the Control Register. + + \return Control Register value + */ +__STATIC_INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + + +/** \brief Set Control Register + + This function writes the given value to the Control Register. + + \param [in] control Control Register value to set + */ +__STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + + +/** \brief Get IPSR Register + + This function returns the content of the IPSR Register. + + \return IPSR Register value + */ +__STATIC_INLINE uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __ASM("ipsr"); + return(__regIPSR); +} + + +/** \brief Get APSR Register + + This function returns the content of the APSR Register. + + \return APSR Register value + */ +__STATIC_INLINE uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __ASM("apsr"); + return(__regAPSR); +} + + +/** \brief Get xPSR Register + + This function returns the content of the xPSR Register. + + \return xPSR Register value + */ +__STATIC_INLINE uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __ASM("xpsr"); + return(__regXPSR); +} + + +/** \brief Get Process Stack Pointer + + This function returns the current value of the Process Stack Pointer (PSP). + + \return PSP Register value + */ +__STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + return(__regProcessStackPointer); +} + + +/** \brief Set Process Stack Pointer + + This function assigns the given value to the Process Stack Pointer (PSP). + + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + __regProcessStackPointer = topOfProcStack; +} + + +/** \brief Get Main Stack Pointer + + This function returns the current value of the Main Stack Pointer (MSP). + + \return MSP Register value + */ +__STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + return(__regMainStackPointer); +} + + +/** \brief Set Main Stack Pointer + + This function assigns the given value to the Main Stack Pointer (MSP). + + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + __regMainStackPointer = topOfMainStack; +} + + +/** \brief Get Priority Mask + + This function returns the current state of the priority mask bit from the Priority Mask Register. + + \return Priority Mask value + */ +__STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + + +/** \brief Set Priority Mask + + This function assigns the given value to the Priority Mask Register. + + \param [in] priMask Priority Mask + */ +__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + + +#if (__CORTEX_M >= 0x03) + +/** \brief Enable FIQ + + This function enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq + + +/** \brief Disable FIQ + + This function disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq + + +/** \brief Get Base Priority + + This function returns the current value of the Base Priority register. + + \return Base Priority register value + */ +__STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + + +/** \brief Set Base Priority + + This function assigns the given value to the Base Priority register. + + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xff); +} + + +/** \brief Get Fault Mask + + This function returns the current value of the Fault Mask register. + + \return Fault Mask register value + */ +__STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + + +/** \brief Set Fault Mask + + This function assigns the given value to the Fault Mask register. + + \param [in] faultMask Fault Mask value to set + */ +__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & (uint32_t)1); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + +#if (__CORTEX_M == 0x04) + +/** \brief Get FPSCR + + This function returns the current value of the Floating Point Status/Control register. + + \return Floating Point Status/Control register value + */ +__STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#else + return(0); +#endif +} + + +/** \brief Set FPSCR + + This function assigns the given value to the Floating Point Status/Control register. + + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#endif +} + +#endif /* (__CORTEX_M == 0x04) */ + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#include <cmsis_iar.h> + + +#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ +/* TI CCS specific functions */ + +#include <cmsis_ccs.h> + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/** \brief Enable IRQ Interrupts + + This function enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** \brief Disable IRQ Interrupts + + This function disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** \brief Get Control Register + + This function returns the content of the Control Register. + + \return Control Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +/** \brief Set Control Register + + This function writes the given value to the Control Register. + + \param [in] control Control Register value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +/** \brief Get IPSR Register + + This function returns the content of the IPSR Register. + + \return IPSR Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** \brief Get APSR Register + + This function returns the content of the APSR Register. + + \return APSR Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** \brief Get xPSR Register + + This function returns the content of the xPSR Register. + + \return xPSR Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** \brief Get Process Stack Pointer + + This function returns the current value of the Process Stack Pointer (PSP). + + \return PSP Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t result; + + __ASM volatile ("MRS %0, psp\n" : "=r" (result) ); + return(result); +} + + +/** \brief Set Process Stack Pointer + + This function assigns the given value to the Process Stack Pointer (PSP). + + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) : "sp"); +} + + +/** \brief Get Main Stack Pointer + + This function returns the current value of the Main Stack Pointer (MSP). + + \return MSP Register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t result; + + __ASM volatile ("MRS %0, msp\n" : "=r" (result) ); + return(result); +} + + +/** \brief Set Main Stack Pointer + + This function assigns the given value to the Main Stack Pointer (MSP). + + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) : "sp"); +} + + +/** \brief Get Priority Mask + + This function returns the current state of the priority mask bit from the Priority Mask Register. + + \return Priority Mask value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +/** \brief Set Priority Mask + + This function assigns the given value to the Priority Mask Register. + + \param [in] priMask Priority Mask + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (__CORTEX_M >= 0x03) + +/** \brief Enable FIQ + + This function enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** \brief Disable FIQ + + This function disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** \brief Get Base Priority + + This function returns the current value of the Base Priority register. + + \return Base Priority register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); + return(result); +} + + +/** \brief Set Base Priority + + This function assigns the given value to the Base Priority register. + + \param [in] basePri Base Priority value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (value) : "memory"); +} + + +/** \brief Get Fault Mask + + This function returns the current value of the Fault Mask register. + + \return Fault Mask register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +/** \brief Set Fault Mask + + This function assigns the given value to the Fault Mask register. + + \param [in] faultMask Fault Mask value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + +#if (__CORTEX_M == 0x04) + +/** \brief Get FPSCR + + This function returns the current value of the Floating Point Status/Control register. + + \return Floating Point Status/Control register value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + uint32_t result; + + /* Empty asm statement works as a scheduling barrier */ + __ASM volatile (""); + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + __ASM volatile (""); + return(result); +#else + return(0); +#endif +} + + +/** \brief Set FPSCR + + This function assigns the given value to the Floating Point Status/Control register. + + \param [in] fpscr Floating Point Status/Control value to set + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + /* Empty asm statement works as a scheduling barrier */ + __ASM volatile (""); + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc"); + __ASM volatile (""); +#endif +} + +#endif /* (__CORTEX_M == 0x04) */ + + +#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all instrinsics, + * Including the CMSIS ones. + */ + +#endif + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +#endif /* __CORE_CMFUNC_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/core_cmInstr.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,688 @@ +/**************************************************************************//** + * @file core_cmInstr.h + * @brief CMSIS Cortex-M Core Instruction Access Header File + * @version V3.20 + * @date 05. March 2013 + * + * @note + * + ******************************************************************************/ +/* Copyright (c) 2009 - 2013 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + +#ifndef __CORE_CMINSTR_H +#define __CORE_CMINSTR_H + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#if (__ARMCC_VERSION < 400677) + #error "Please use ARM Compiler Toolchain V4.0.677 or later!" +#endif + + +/** \brief No Operation + + No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __nop + + +/** \brief Wait For Interrupt + + Wait For Interrupt is a hint instruction that suspends execution + until one of a number of events occurs. + */ +#define __WFI __wfi + + +/** \brief Wait For Event + + Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __wfe + + +/** \brief Send Event + + Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __sev + + +/** \brief Instruction Synchronization Barrier + + Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or + memory, after the instruction has been completed. + */ +#define __ISB() __isb(0xF) + + +/** \brief Data Synchronization Barrier + + This function acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __dsb(0xF) + + +/** \brief Data Memory Barrier + + This function ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __dmb(0xF) + + +/** \brief Reverse byte order (32 bit) + + This function reverses the byte order in integer value. + + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV __rev + + +/** \brief Reverse byte order (16 bit) + + This function reverses the byte order in two unsigned short values. + + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} +#endif + +/** \brief Reverse byte order in signed short value + + This function reverses the byte order in a signed short value with sign extension to integer. + + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value) +{ + revsh r0, r0 + bx lr +} +#endif + + +/** \brief Rotate Right in unsigned value (32 bit) + + This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + + \param [in] value Value to rotate + \param [in] value Number of Bits to rotate + \return Rotated value + */ +#define __ROR __ror + + +/** \brief Breakpoint + + This function causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __breakpoint(value) + + +#if (__CORTEX_M >= 0x03) + +/** \brief Reverse bit order of value + + This function reverses the bit order of the given value. + + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __rbit + + +/** \brief LDR Exclusive (8 bit) + + This function performs a exclusive LDR command for 8 bit value. + + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) + + +/** \brief LDR Exclusive (16 bit) + + This function performs a exclusive LDR command for 16 bit values. + + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) + + +/** \brief LDR Exclusive (32 bit) + + This function performs a exclusive LDR command for 32 bit values. + + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) + + +/** \brief STR Exclusive (8 bit) + + This function performs a exclusive STR command for 8 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB(value, ptr) __strex(value, ptr) + + +/** \brief STR Exclusive (16 bit) + + This function performs a exclusive STR command for 16 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH(value, ptr) __strex(value, ptr) + + +/** \brief STR Exclusive (32 bit) + + This function performs a exclusive STR command for 32 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW(value, ptr) __strex(value, ptr) + + +/** \brief Remove the exclusive lock + + This function removes the exclusive lock which is created by LDREX. + + */ +#define __CLREX __clrex + + +/** \brief Signed Saturate + + This function saturates a signed value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + + +/** \brief Unsigned Saturate + + This function saturates an unsigned value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + + +/** \brief Count leading zeros + + This function counts the number of leading zeros of a data value. + + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + +#endif /* (__CORTEX_M >= 0x03) */ + + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#include <cmsis_iar.h> + + +#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/ +/* TI CCS specific functions */ + +#include <cmsis_ccs.h> + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constrant "l" + * Otherwise, use general registers, specified by constrant "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** \brief No Operation + + No Operation does nothing. This instruction can be used for code alignment purposes. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void) +{ + __ASM volatile ("nop"); +} + + +/** \brief Wait For Interrupt + + Wait For Interrupt is a hint instruction that suspends execution + until one of a number of events occurs. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void) +{ + __ASM volatile ("wfi"); +} + + +/** \brief Wait For Event + + Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void) +{ + __ASM volatile ("wfe"); +} + + +/** \brief Send Event + + Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void) +{ + __ASM volatile ("sev"); +} + + +/** \brief Instruction Synchronization Barrier + + Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or + memory, after the instruction has been completed. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void) +{ + __ASM volatile ("isb"); +} + + +/** \brief Data Synchronization Barrier + + This function acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void) +{ + __ASM volatile ("dsb"); +} + + +/** \brief Data Memory Barrier + + This function ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void) +{ + __ASM volatile ("dmb"); +} + + +/** \brief Reverse byte order (32 bit) + + This function reverses the byte order in integer value. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +#endif +} + + +/** \brief Reverse byte order (16 bit) + + This function reverses the byte order in two unsigned short values. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** \brief Reverse byte order in signed short value + + This function reverses the byte order in a signed short value with sign extension to integer. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (short)__builtin_bswap16(value); +#else + uint32_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +#endif +} + + +/** \brief Rotate Right in unsigned value (32 bit) + + This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + + \param [in] value Value to rotate + \param [in] value Number of Bits to rotate + \return Rotated value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + return (op1 >> op2) | (op1 << (32 - op2)); +} + + +/** \brief Breakpoint + + This function causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +#if (__CORTEX_M >= 0x03) + +/** \brief Reverse bit order of value + + This function reverses the bit order of the given value. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + + +/** \brief LDR Exclusive (8 bit) + + This function performs a exclusive LDR command for 8 bit value. + + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return(result); +} + + +/** \brief LDR Exclusive (16 bit) + + This function performs a exclusive LDR command for 16 bit values. + + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return(result); +} + + +/** \brief LDR Exclusive (32 bit) + + This function performs a exclusive LDR command for 32 bit values. + + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** \brief STR Exclusive (8 bit) + + This function performs a exclusive STR command for 8 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** \brief STR Exclusive (16 bit) + + This function performs a exclusive STR command for 16 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** \brief STR Exclusive (32 bit) + + This function performs a exclusive STR command for 32 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** \brief Remove the exclusive lock + + This function removes the exclusive lock which is created by LDREX. + + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + + +/** \brief Signed Saturate + + This function saturates a signed value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** \brief Unsigned Saturate + + This function saturates an unsigned value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** \brief Count leading zeros + + This function counts the number of leading zeros of a data value. + + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + + + +#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + +#endif + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + +#endif /* __CORE_CMINSTR_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,7705 @@ +/** + ****************************************************************************** + * @file stm32f30x.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief CMSIS Cortex-M4 Device Peripheral Access Layer Header File. + * This file contains all the peripheral registers definitions, bits + * definitions and memory mapping for STM32F30x devices. + * + * The file is the unique include file that the application programmer + * is using in the C source code, usually in main.c. This file contains: + * - Configuration section that allows to select: + * - The device used in the target application + * - To use or not the peripherals drivers in application code(i.e. + * code will be based on direct access to peripherals registers + * rather than drivers API), this option is controlled by + * "#define USE_STDPERIPH_DRIVER" + * - To change few application-specific parameters such as the HSE + * crystal frequency + * - Data structures and the address mapping for all peripherals + * - Peripheral registers declarations and bits definition + * - Macros to access peripheral registers hardware + * + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f30x + * @{ + */ + +#ifndef __STM32F30x_H +#define __STM32F30x_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Library_configuration_section + * @{ + */ + +/* Uncomment the line below according to the target STM32 device used in your + application + */ + +#if !defined (STM32F303xC) && !defined (STM32F334x8) && !defined (STM32F303x8) && !defined (STM32F301x8) && !defined (STM32F302x8) + /* #define STM32F303xC */ /*!< STM32F303CB, STM32F303CC, STM32F303RB, STM32F303RC, STM32F303VB and STM32F303VC Devices */ + /* #define STM32F334x8 */ /*!< STM32F334C4, STM32F334C6, STM32F334C8, STM32F334R4, STM32F334R6 and STM32F334R8 Devices */ +#define STM32F302x8 /*!< STM32F302K4, STM32F302K6, STM32F302K8, STM32F302C4, STM32F302C6, STM32F302C8, + STM32F302R4, STM32F302R6 and STM32F302R8 Devices */ +#endif + +/* Tip: To avoid modifying this file each time you need to switch between these + devices, you can define the device in your toolchain compiler preprocessor. + */ + +/* Old STM32F30X definition, maintained for legacy purpose */ +#if defined(STM32F30X) + #define STM32F303xC +#endif /* STM32F30X */ + +#if !defined (STM32F303xC) && !defined (STM32F334x8) && !defined (STM32F302x8) + #error "Please select first the target STM32F30X device used in your application (in stm32f30x.h file)" +#endif + +#if !defined (USE_STDPERIPH_DRIVER) +/** + * @brief Comment the line below if you will not use the peripherals drivers. + In this case, these drivers will not be included and the application code will + be based on direct access to peripherals registers + */ +#define USE_STDPERIPH_DRIVER +#endif /* USE_STDPERIPH_DRIVER */ + +/** + * @brief In the following line adjust the value of External High Speed oscillator (HSE) + used in your application + + Tip: To avoid modifying this file each time you need to use different HSE, you + can define the HSE value in your toolchain compiler preprocessor. + */ +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External xtal in Hz */ +#endif /* HSE_VALUE */ + +/** + * @brief In the following line adjust the External High Speed oscillator (HSE) Startup + Timeout value + */ +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint16_t)0x5000) /*!< Time out for HSE start up */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief In the following line adjust the Internal High Speed oscillator (HSI) Startup + Timeout value + */ +#if !defined (HSI_STARTUP_TIMEOUT) + #define HSI_STARTUP_TIMEOUT ((uint16_t)0x5000) /*!< Time out for HSI start up */ +#endif /* HSI_STARTUP_TIMEOUT */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)8000000) +#endif /* HSI_VALUE */ /*!< Value of the Internal High Speed oscillator in Hz. + The real value may vary depending on the variations + in voltage and temperature. */ +#if !defined (LSI_VALUE) + #define LSI_VALUE ((uint32_t)40000) +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature. */ +#if !defined (LSE_VALUE) + #define LSE_VALUE ((uint32_t)32768) /*!< Value of the External Low Speed oscillator in Hz */ +#endif /* LSE_VALUE */ + + +/** + * @brief STM32F30x Standard Peripherals Library version number V1.1.0 + */ +#define __STM32F30X_STDPERIPH_VERSION_MAIN (0x01) /*!< [31:24] main version */ +#define __STM32F30X_STDPERIPH_VERSION_SUB1 (0x01) /*!< [23:16] sub1 version */ +#define __STM32F30X_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */ +#define __STM32F30X_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32F30X_STDPERIPH_VERSION ( (__STM32F30X_STDPERIPH_VERSION_MAIN << 24)\ + |(__STM32F30X_STDPERIPH_VERSION_SUB1 << 16)\ + |(__STM32F30X_STDPERIPH_VERSION_SUB2 << 8)\ + |(__STM32F30X_STDPERIPH_VERSION_RC)) + +/** + * @} + */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ +#define __CM4_REV 0x0001 /*!< Core revision r0p1 */ +#define __MPU_PRESENT 1 /*!< STM32F30X provide an MPU */ +#define __NVIC_PRIO_BITS 4 /*!< STM32F30X uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __FPU_PRESENT 1 /*!< STM32F30X provide an FPU */ + + +/** + * @brief STM32F30X Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +typedef enum IRQn +{ +/****** Cortex-M4 Processor Exceptions Numbers ****************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M4 System Tick Interrupt */ +/****** STM32 specific Interrupt Numbers **********************************************************************/ +#ifdef STM32F303xC + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMPER_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI lines 17, 19 & 20 */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_TS_IRQn = 8, /*!< EXTI Line2 Interrupt and Touch Sense Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 Interrupt */ + ADC1_2_IRQn = 18, /*!< ADC1 & ADC2 Interrupts */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break and TIM15 Interrupts */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update and TIM16 Interrupts */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation and TIM17 Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Wakeup Interrupt */ + TIM8_BRK_IRQn = 43, /*!< TIM8 Break Interrupt */ + TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&2 underrun error interrupts */ + TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ + ADC4_IRQn = 61, /*!< ADC4 global Interrupt */ + COMP1_2_3_IRQn = 64, /*!< COMP1, COMP2 and COMP3 global Interrupt */ + COMP4_5_6_IRQn = 65, /*!< COMP5, COMP6 and COMP4 global Interrupt */ + COMP7_IRQn = 66, /*!< COMP7 global Interrupt */ + USB_HP_IRQn = 74, /*!< USB High Priority global Interrupt remap */ + USB_LP_IRQn = 75, /*!< USB Low Priority global Interrupt remap */ + USBWakeUp_RMP_IRQn = 76, /*!< USB Wakeup Interrupt remap */ + FPU_IRQn = 81 /*!< Floating point Interrupt */ +#endif /* STM32F303xC */ +#ifdef STM32F334x8 + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMPER_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI lines 17, 19 & 20 */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_TS_IRQn = 8, /*!< EXTI Line2 Interrupt and Touch Sense Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 Interrupt */ + ADC1_2_IRQn = 18, /*!< ADC1 & ADC2 Interrupts */ + CAN1_TX_IRQn = 19, /*!< CAN1 TX Interrupts */ + CAN1_RX0_IRQn = 20, /*!< CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break and TIM15 Interrupts */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update and TIM16 Interrupts */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation and TIM17 Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */ + TIM6_DAC1_IRQn = 54, /*!< TIM6 global and DAC1 underrun error interrupts */ + TIM7_DAC2_IRQn = 55, /*!< TIM7 global and DAC2 underrun error Interrupt */ + COMP2_IRQn = 64, /*!< COMP2 global Interrupt */ + COMP4_6_IRQn = 65, /*!< COMP6 and COMP4 global Interrupt */ + HRTIM1_Master_IRQn = 67, /*!< HRTIM Master Timer global Interrupts */ + HRTIM1_TIMA_IRQn = 68, /*!< HRTIM Timer A global Interrupt */ + HRTIM1_TIMB_IRQn = 69, /*!< HRTIM Timer B global Interrupt */ + HRTIM1_TIMC_IRQn = 70, /*!< HRTIM Timer C global Interrupt */ + HRTIM1_TIMD_IRQn = 71, /*!< HRTIM Timer D global Interrupt */ + HRTIM1_TIME_IRQn = 72, /*!< HRTIM Timer E global Interrupt */ + HRTIM1_FLT_IRQn = 73, /*!< HRTIM Fault global Interrupt */ + FPU_IRQn = 81 /*!< Floating point Interrupt */ +#endif /* STM32F334x8 */ +#ifdef STM32F302x8 + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMPER_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI lines 20 */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_TS_IRQn = 8, /*!< EXTI Line2 Interrupt and Touch Sense Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 Interrupt */ + ADC1_IRQn = 18, /*!< ADC1 Interrupts */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break and TIM15 Interrupts */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update and TIM16 Interrupts */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation and TIM17 Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Wakeup Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&2 underrun error interrupts */ + COMP2_IRQn = 64, /*!< COMP2 global Interrupt */ + COMP4_6_IRQn = 65, /*!< COMP5, COMP6 and COMP4 global Interrupt */ + COMP7_IRQn = 66, /*!< COMP7 global Interrupt */ + I2C3_EV_IRQn = 72, /*!< I2C3 Event Interrupt */ + I2C3_ER_IRQn = 73, /*!< I2C3 Error Interrupt */ + USB_HP_IRQn = 74, /*!< USB High Priority global Interrupt remap */ + USB_LP_IRQn = 75, /*!< USB Low Priority global Interrupt remap */ + USBWakeUp_RMP_IRQn = 76, /*!< USB Wakeup Interrupt remap */ + FPU_IRQn = 81 /*!< Floating point Interrupt */ +#endif /* STM32F302x8 */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm4.h" /* Cortex-M4 processor and core peripherals */ +#include "system_stm32f30x.h" /* STM32F30x System Header */ +#include <stdint.h> + +/** @addtogroup Exported_types + * @{ + */ +/*!< STM32F10x Standard Peripheral Library old types (maintained for legacy purpose) */ +typedef int32_t s32; +typedef int16_t s16; +typedef int8_t s8; + +typedef const int32_t sc32; /*!< Read Only */ +typedef const int16_t sc16; /*!< Read Only */ +typedef const int8_t sc8; /*!< Read Only */ + +typedef __IO int32_t vs32; +typedef __IO int16_t vs16; +typedef __IO int8_t vs8; + +typedef __I int32_t vsc32; /*!< Read Only */ +typedef __I int16_t vsc16; /*!< Read Only */ +typedef __I int8_t vsc8; /*!< Read Only */ + +typedef uint32_t u32; +typedef uint16_t u16; +typedef uint8_t u8; + +typedef const uint32_t uc32; /*!< Read Only */ +typedef const uint16_t uc16; /*!< Read Only */ +typedef const uint8_t uc8; /*!< Read Only */ + +typedef __IO uint32_t vu32; +typedef __IO uint16_t vu16; +typedef __IO uint8_t vu8; + +typedef __I uint32_t vuc32; /*!< Read Only */ +typedef __I uint16_t vuc16; /*!< Read Only */ +typedef __I uint8_t vuc8; /*!< Read Only */ + +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 {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; + +/** + * @} + */ + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< ADC Interrupt and Status Register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< ADC Interrupt Enable Register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< ADC control register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< ADC Configuration register, Address offset: 0x0C */ + uint32_t RESERVED0; /*!< Reserved, 0x010 */ + __IO uint32_t SMPR1; /*!< ADC sample time register 1, Address offset: 0x14 */ + __IO uint32_t SMPR2; /*!< ADC sample time register 2, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved, 0x01C */ + __IO uint32_t TR1; /*!< ADC watchdog threshold register 1, Address offset: 0x20 */ + __IO uint32_t TR2; /*!< ADC watchdog threshold register 2, Address offset: 0x24 */ + __IO uint32_t TR3; /*!< ADC watchdog threshold register 3, Address offset: 0x28 */ + uint32_t RESERVED2; /*!< Reserved, 0x02C */ + __IO uint32_t SQR1; /*!< ADC regular sequence register 1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC regular sequence register 2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC regular sequence register 3, Address offset: 0x38 */ + __IO uint32_t SQR4; /*!< ADC regular sequence register 4, Address offset: 0x3C */ + __IO uint32_t DR; /*!< ADC regular data register, Address offset: 0x40 */ + uint32_t RESERVED3; /*!< Reserved, 0x044 */ + uint32_t RESERVED4; /*!< Reserved, 0x048 */ + __IO uint32_t JSQR; /*!< ADC injected sequence register, Address offset: 0x4C */ + uint32_t RESERVED5[4]; /*!< Reserved, 0x050 - 0x05C */ + __IO uint32_t OFR1; /*!< ADC offset register 1, Address offset: 0x60 */ + __IO uint32_t OFR2; /*!< ADC offset register 2, Address offset: 0x64 */ + __IO uint32_t OFR3; /*!< ADC offset register 3, Address offset: 0x68 */ + __IO uint32_t OFR4; /*!< ADC offset register 4, Address offset: 0x6C */ + uint32_t RESERVED6[4]; /*!< Reserved, 0x070 - 0x07C */ + __IO uint32_t JDR1; /*!< ADC injected data register 1, Address offset: 0x80 */ + __IO uint32_t JDR2; /*!< ADC injected data register 2, Address offset: 0x84 */ + __IO uint32_t JDR3; /*!< ADC injected data register 3, Address offset: 0x88 */ + __IO uint32_t JDR4; /*!< ADC injected data register 4, Address offset: 0x8C */ + uint32_t RESERVED7[4]; /*!< Reserved, 0x090 - 0x09C */ + __IO uint32_t AWD2CR; /*!< ADC Analog Watchdog 2 Configuration Register, Address offset: 0xA0 */ + __IO uint32_t AWD3CR; /*!< ADC Analog Watchdog 3 Configuration Register, Address offset: 0xA4 */ + uint32_t RESERVED8; /*!< Reserved, 0x0A8 */ + uint32_t RESERVED9; /*!< Reserved, 0x0AC */ + __IO uint32_t DIFSEL; /*!< ADC Differential Mode Selection Register, Address offset: 0xB0 */ + __IO uint32_t CALFACT; /*!< ADC Calibration Factors, Address offset: 0xB4 */ + +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC Common status register, Address offset: ADC1/3 base address + 0x300 */ + uint32_t RESERVED; /*!< Reserved, ADC1/3 base address + 0x304 */ + __IO uint32_t CCR; /*!< ADC common control register, Address offset: ADC1/3 base address + 0x308 */ + __IO uint32_t CDR; /*!< ADC common regular data register for dual + modes, Address offset: ADC1/3 base address + 0x30A */ +} ADC_Common_TypeDef; + + +/** + * @brief Controller Area Network TxMailBox + */ +typedef struct +{ + __IO uint32_t TIR; /*!< CAN TX mailbox identifier register */ + __IO uint32_t TDTR; /*!< CAN mailbox data length control and time stamp register */ + __IO uint32_t TDLR; /*!< CAN mailbox data low register */ + __IO uint32_t TDHR; /*!< CAN mailbox data high register */ +} CAN_TxMailBox_TypeDef; + +/** + * @brief Controller Area Network FIFOMailBox + */ +typedef struct +{ + __IO uint32_t RIR; /*!< CAN receive FIFO mailbox identifier register */ + __IO uint32_t RDTR; /*!< CAN receive FIFO mailbox data length control and time stamp register */ + __IO uint32_t RDLR; /*!< CAN receive FIFO mailbox data low register */ + __IO uint32_t RDHR; /*!< CAN receive FIFO mailbox data high register */ +} CAN_FIFOMailBox_TypeDef; + +/** + * @brief Controller Area Network FilterRegister + */ +typedef struct +{ + __IO uint32_t FR1; /*!< CAN Filter bank register 1 */ + __IO uint32_t FR2; /*!< CAN Filter bank register 1 */ +} CAN_FilterRegister_TypeDef; + +/** + * @brief Controller Area Network + */ +typedef struct +{ + __IO uint32_t MCR; /*!< CAN master control register, Address offset: 0x00 */ + __IO uint32_t MSR; /*!< CAN master status register, Address offset: 0x04 */ + __IO uint32_t TSR; /*!< CAN transmit status register, Address offset: 0x08 */ + __IO uint32_t RF0R; /*!< CAN receive FIFO 0 register, Address offset: 0x0C */ + __IO uint32_t RF1R; /*!< CAN receive FIFO 1 register, Address offset: 0x10 */ + __IO uint32_t IER; /*!< CAN interrupt enable register, Address offset: 0x14 */ + __IO uint32_t ESR; /*!< CAN error status register, Address offset: 0x18 */ + __IO uint32_t BTR; /*!< CAN bit timing register, Address offset: 0x1C */ + uint32_t RESERVED0[88]; /*!< Reserved, 0x020 - 0x17F */ + CAN_TxMailBox_TypeDef sTxMailBox[3]; /*!< CAN Tx MailBox, Address offset: 0x180 - 0x1AC */ + CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; /*!< CAN FIFO MailBox, Address offset: 0x1B0 - 0x1CC */ + uint32_t RESERVED1[12]; /*!< Reserved, 0x1D0 - 0x1FF */ + __IO uint32_t FMR; /*!< CAN filter master register, Address offset: 0x200 */ + __IO uint32_t FM1R; /*!< CAN filter mode register, Address offset: 0x204 */ + uint32_t RESERVED2; /*!< Reserved, 0x208 */ + __IO uint32_t FS1R; /*!< CAN filter scale register, Address offset: 0x20C */ + uint32_t RESERVED3; /*!< Reserved, 0x210 */ + __IO uint32_t FFA1R; /*!< CAN filter FIFO assignment register, Address offset: 0x214 */ + uint32_t RESERVED4; /*!< Reserved, 0x218 */ + __IO uint32_t FA1R; /*!< CAN filter activation register, Address offset: 0x21C */ + uint32_t RESERVED5[8]; /*!< Reserved, 0x220-0x23F */ + CAN_FilterRegister_TypeDef sFilterRegister[28]; /*!< CAN Filter Register, Address offset: 0x240-0x31C */ +} CAN_TypeDef; + + +/** + * @brief Analog Comparators + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< Comparator control Status register, Address offset: 0x00 */ +} COMP_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint8_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + uint8_t RESERVED0; /*!< Reserved, 0x05 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED2; /*!< Reserved, 0x0C */ + __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ + __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZ; /*!< Debug MCU APB1 freeze register, Address offset: 0x08 */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x0C */ +}DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt clear flag register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR; /*!< EXTI Interrupt mask register, Address offset: 0x00 */ + __IO uint32_t EMR; /*!< EXTI Event mask register, Address offset: 0x04 */ + __IO uint32_t RTSR; /*!< EXTI Rising trigger selection register, Address offset: 0x08 */ + __IO uint32_t FTSR; /*!< EXTI Falling trigger selection register, Address offset: 0x0C */ + __IO uint32_t SWIER; /*!< EXTI Software interrupt event register, Address offset: 0x10 */ + __IO uint32_t PR; /*!< EXTI Pending register, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved, 0x18 */ + uint32_t RESERVED2; /*!< Reserved, 0x1C */ + __IO uint32_t IMR2; /*!< EXTI Interrupt mask register, Address offset: 0x20 */ + __IO uint32_t EMR2; /*!< EXTI Event mask register, Address offset: 0x24 */ + __IO uint32_t RTSR2; /*!< EXTI Rising trigger selection register, Address offset: 0x28 */ + __IO uint32_t FTSR2; /*!< EXTI Falling trigger selection register, Address offset: 0x2C */ + __IO uint32_t SWIER2; /*!< EXTI Software interrupt event register, Address offset: 0x30 */ + __IO uint32_t PR2; /*!< EXTI Pending register, Address offset: 0x34 */ +}EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */ + __IO uint32_t KEYR; /*!< FLASH key register, Address offset: 0x04 */ + __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< FLASH status register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< FLASH control register, Address offset: 0x10 */ + __IO uint32_t AR; /*!< FLASH address register, Address offset: 0x14 */ + uint32_t RESERVED; /*!< Reserved, 0x18 */ + __IO uint32_t OBR; /*!< FLASH Option byte register, Address offset: 0x1C */ + __IO uint32_t WRPR; /*!< FLASH Write register, Address offset: 0x20 */ + +} FLASH_TypeDef; + +/** + * @brief Option Bytes Registers + */ +typedef struct +{ + __IO uint16_t RDP; /*!<FLASH option byte Read protection, Address offset: 0x00 */ + __IO uint16_t USER; /*!<FLASH option byte user options, Address offset: 0x02 */ + uint16_t RESERVED0; /*!< Reserved, 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t WRP0; /*!<FLASH option byte write protection 0, Address offset: 0x08 */ + __IO uint16_t WRP1; /*!<FLASH option byte write protection 1, Address offset: 0x0C */ + __IO uint16_t WRP2; /*!<FLASH option byte write protection 2, Address offset: 0x10 */ + __IO uint16_t WRP3; /*!<FLASH option byte write protection 3, Address offset: 0x12 */ +} OB_TypeDef; + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint16_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + uint16_t RESERVED0; /*!< Reserved, 0x06 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint16_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + uint16_t RESERVED1; /*!< Reserved, 0x12 */ + __IO uint16_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + uint16_t RESERVED2; /*!< Reserved, 0x16 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset registerBSRR, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function low register, Address offset: 0x20-0x24 */ + __IO uint16_t BRR; /*!< GPIO bit reset register, Address offset: 0x28 */ + uint16_t RESERVED3; /*!< Reserved, 0x2A */ +}GPIO_TypeDef; + +/** + * @brief High resolution Timer (HRTIM) + */ +/* HRTIM master definition */ +typedef struct +{ + __IO uint32_t MCR; /*!< HRTIM Master Timer control register, Address offset: 0x00 */ + __IO uint32_t MISR; /*!< HRTIM Master Timer interrupt status register, Address offset: 0x04 */ + __IO uint32_t MICR; /*!< HRTIM Master Timer interupt clear register, Address offset: 0x08 */ + __IO uint32_t MDIER; /*!< HRTIM Master Timer DMA/interrupt enable register Address offset: 0x0C */ + __IO uint32_t MCNTR; /*!< HRTIM Master Timer counter register, Address offset: 0x10 */ + __IO uint32_t MPER; /*!< HRTIM Master Timer period register, Address offset: 0x14 */ + __IO uint32_t MREP; /*!< HRTIM Master Timer repetition register, Address offset: 0x18 */ + __IO uint32_t MCMP1R; /*!< HRTIM Master Timer compare 1 register, Address offset: 0x1C */ + uint32_t RESERVED0; /*!< Reserved, 0x20 */ + __IO uint32_t MCMP2R; /*!< HRTIM Master Timer compare 2 register, Address offset: 0x24 */ + __IO uint32_t MCMP3R; /*!< HRTIM Master Timer compare 3 register, Address offset: 0x28 */ + __IO uint32_t MCMP4R; /*!< HRTIM Master Timer compare 4 register, Address offset: 0x2C */ +}HRTIM_Master_TypeDef; + +/* HRTIM slave definition */ +typedef struct +{ + __IO uint32_t TIMxCR; /*!< HRTIM Timerx control register, Address offset: 0x00 */ + __IO uint32_t TIMxISR; /*!< HRTIM Timerx interrupt status register, Address offset: 0x04 */ + __IO uint32_t TIMxICR; /*!< HRTIM Timerx interrupt clear register, Address offset: 0x08 */ + __IO uint32_t TIMxDIER; /*!< HRTIM Timerx DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t CNTxR; /*!< HRTIM Timerx counter register, Address offset: 0x10 */ + __IO uint32_t PERxR; /*!< HRTIM Timerx period register, Address offset: 0x14 */ + __IO uint32_t REPxR; /*!< HRTIM Timerx repetition register, Address offset: 0x18 */ + __IO uint32_t CMP1xR; /*!< HRTIM Timerx compare 1 register, Address offset: 0x1C */ + __IO uint32_t CMP1CxR; /*!< HRTIM Timerx compare 1 compound register, Address offset: 0x20 */ + __IO uint32_t CMP2xR; /*!< HRTIM Timerx compare 2 register, Address offset: 0x24 */ + __IO uint32_t CMP3xR; /*!< HRTIM Timerx compare 3 register, Address offset: 0x28 */ + __IO uint32_t CMP4xR; /*!< HRTIM Timerx compare 4 register, Address offset: 0x2C */ + __IO uint32_t CPT1xR; /*!< HRTIM Timerx capture 1 register, Address offset: 0x30 */ + __IO uint32_t CPT2xR; /*!< HRTIM Timerx capture 2 register, Address offset: 0x34 */ + __IO uint32_t DTxR; /*!< HRTIM Timerx dead time register, Address offset: 0x38 */ + __IO uint32_t SETx1R; /*!< HRTIM Timerx output 1 set register, Address offset: 0x3C */ + __IO uint32_t RSTx1R; /*!< HRTIM Timerx output 1 reset register, Address offset: 0x40 */ + __IO uint32_t SETx2R; /*!< HRTIM Timerx output 2 set register, Address offset: 0x44 */ + __IO uint32_t RSTx2R; /*!< HRTIM Timerx output 2 reset register, Address offset: 0x48 */ + __IO uint32_t EEFxR1; /*!< HRTIM Timerx external event filtering 1 register, Address offset: 0x4C */ + __IO uint32_t EEFxR2; /*!< HRTIM Timerx external event filtering 2 register, Address offset: 0x50 */ + __IO uint32_t RSTxR; /*!< HRTIM Timerx Reset register, Address offset: 0x54 */ + __IO uint32_t CHPxR; /*!< HRTIM Timerx Chopper register, Address offset: 0x58 */ + __IO uint32_t CPT1xCR; /*!< HRTIM Timerx Capture 1 register, Address offset: 0x5C */ + __IO uint32_t CPT2xCR; /*!< HRTIM Timerx Capture 2 register, Address offset: 0x60 */ + __IO uint32_t OUTxR; /*!< HRTIM Timerx Output register, Address offset: 0x64 */ + __IO uint32_t FLTxR; /*!< HRTIM Timerx Fault register, Address offset: 0x68 */ + uint32_t RESERVED0[5];/*!< Reserved, */ +}HRTIM_Timerx_TypeDef; + +/* HRTIM common register definition */ +typedef struct +{ + __IO uint32_t CR1; /*!< HRTIM control register1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< HRTIM control register2, Address offset: 0x04 */ + __IO uint32_t ISR; /*!< HRTIM interrupt status register, Address offset: 0x08 */ + __IO uint32_t ICR; /*!< HRTIM interrupt clear register, Address offset: 0x0C */ + __IO uint32_t IER; /*!< HRTIM interrupt enable register, Address offset: 0x10 */ + __IO uint32_t OENR; /*!< HRTIM Output enable register, Address offset: 0x14 */ + __IO uint32_t DISR; /*!< HRTIM Output disable register, Address offset: 0x18 */ + __IO uint32_t ODSR; /*!< HRTIM Output disable status register, Address offset: 0x1C */ + __IO uint32_t BMCR; /*!< HRTIM Burst mode control register, Address offset: 0x20 */ + __IO uint32_t BMTRGR; /*!< HRTIM Busrt mode trigger register, Address offset: 0x24 */ + __IO uint32_t BMCMPR; /*!< HRTIM Burst mode compare register, Address offset: 0x28 */ + __IO uint32_t BMPER; /*!< HRTIM Burst mode period register, Address offset: 0x2C */ + __IO uint32_t EECR1; /*!< HRTIM Timer external event control register1, Address offset: 0x30 */ + __IO uint32_t EECR2; /*!< HRTIM Timer external event control register2, Address offset: 0x34 */ + __IO uint32_t EECR3; /*!< HRTIM Timer external event control register3, Address offset: 0x38 */ + __IO uint32_t ADC1R; /*!< HRTIM ADC Trigger 1 register, Address offset: 0x3C */ + __IO uint32_t ADC2R; /*!< HRTIM ADC Trigger 2 register, Address offset: 0x40 */ + __IO uint32_t ADC3R; /*!< HRTIM ADC Trigger 3 register, Address offset: 0x44 */ + __IO uint32_t ADC4R; /*!< HRTIM ADC Trigger 4 register, Address offset: 0x48 */ + __IO uint32_t DLLCR; /*!< HRTIM DLL control register, Address offset: 0x4C */ + __IO uint32_t FLTINxR1; /*!< HRTIM Fault input register1, Address offset: 0x50 */ + __IO uint32_t FLTINxR2; /*!< HRTIM Fault input register2, Address offset: 0x54 */ + __IO uint32_t BDMUPDR; /*!< HRTIM Burst DMA Master Timer update register, Address offset: 0x58 */ + __IO uint32_t BDTAUPR; /*!< HRTIM Burst DMA Timerx update register, Address offset: 0x5C */ + __IO uint32_t BDTBUPR; /*!< HRTIM Burst DMA Timerx update register, Address offset: 0x60 */ + __IO uint32_t BDTCUPR; /*!< HRTIM Burst DMA Timerx update register, Address offset: 0x64 */ + __IO uint32_t BDTDUPR; /*!< HRTIM Burst DMA Timerx update register, Address offset: 0x68 */ + __IO uint32_t BDTEUPR; /*!< HRTIM Burst DMA Timerx update register, Address offset: 0x6C */ + __IO uint32_t BDMADR; /*!< HRTIM Burst DMA Master Data register, Address offset: 0x70 */ +}HRTIM_Common_TypeDef; + +/* HRTIM register definition */ +typedef struct { + HRTIM_Master_TypeDef HRTIM_MASTER; + uint32_t RESERVED0[20]; + HRTIM_Timerx_TypeDef HRTIM_TIMERx[5]; + uint32_t RESERVED1[32]; + HRTIM_Common_TypeDef HRTIM_COMMON; +}HRTIM_TypeDef; + +/** + * @brief Operational Amplifier (OPAMP) + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control and status register, Address offset: 0x00 */ +} OPAMP_TypeDef; + + +/** + * @brief System configuration controller + */ + +typedef struct +{ + __IO uint32_t CFGR1; /*!< SYSCFG configuration register 1, Address offset: 0x00 */ + __IO uint32_t RCR; /*!< SYSCFG CCM SRAM protection register, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x14-0x08 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x18 */ + __IO uint32_t RESERVED0; /*!< Reserved, 0x1C */ + __IO uint32_t RESERVED1; /*!< Reserved, 0x20 */ + __IO uint32_t RESERVED2; /*!< Reserved, 0x24 */ + __IO uint32_t RESERVED4; /*!< Reserved, 0x28 */ + __IO uint32_t RESERVED5; /*!< Reserved, 0x2C */ + __IO uint32_t RESERVED6; /*!< Reserved, 0x30 */ + __IO uint32_t RESERVED7; /*!< Reserved, 0x34 */ + __IO uint32_t RESERVED8; /*!< Reserved, 0x38 */ + __IO uint32_t RESERVED9; /*!< Reserved, 0x3C */ + __IO uint32_t RESERVED10; /*!< Reserved, 0x40 */ + __IO uint32_t RESERVED11; /*!< Reserved, 0x44 */ + __IO uint32_t RESERVED12; /*!< Reserved, 0x48 */ + __IO uint32_t RESERVED13; /*!< Reserved, 0x4C */ + __IO uint32_t CFGR3; /*!< SYSCFG configuration register 3, Address offset: 0x50 */ +} SYSCFG_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */ + __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */ + __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */ + __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */ + __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */ + __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */ + __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */ + __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */ +}I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< PWR power control register, Address offset: 0x00 */ + __IO uint32_t CSR; /*!< PWR power control/status register, Address offset: 0x04 */ +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x04 */ + __IO uint32_t CIR; /*!< RCC clock interrupt register, Address offset: 0x08 */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x0C */ + __IO uint32_t APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x10 */ + __IO uint32_t AHBENR; /*!< RCC AHB peripheral clock register, Address offset: 0x14 */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x18 */ + __IO uint32_t APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x1C */ + __IO uint32_t BDCR; /*!< RCC Backup domain control register, Address offset: 0x20 */ + __IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x24 */ + __IO uint32_t AHBRSTR; /*!< RCC AHB peripheral reset register, Address offset: 0x28 */ + __IO uint32_t CFGR2; /*!< RCC clock configuration register 2, Address offset: 0x2C */ + __IO uint32_t CFGR3; /*!< RCC clock configuration register 3, Address offset: 0x30 */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ + +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< RTC initialization and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + uint32_t RESERVED0; /*!< Reserved, 0x18 */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x1C */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x3C */ + __IO uint32_t TAFCR; /*!< RTC tamper and alternate function configuration register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x48 */ + uint32_t RESERVED7; /*!< Reserved, 0x4C */ + __IO uint32_t BKP0R; /*!< RTC backup register 0, Address offset: 0x50 */ + __IO uint32_t BKP1R; /*!< RTC backup register 1, Address offset: 0x54 */ + __IO uint32_t BKP2R; /*!< RTC backup register 2, Address offset: 0x58 */ + __IO uint32_t BKP3R; /*!< RTC backup register 3, Address offset: 0x5C */ + __IO uint32_t BKP4R; /*!< RTC backup register 4, Address offset: 0x60 */ + __IO uint32_t BKP5R; /*!< RTC backup register 5, Address offset: 0x64 */ + __IO uint32_t BKP6R; /*!< RTC backup register 6, Address offset: 0x68 */ + __IO uint32_t BKP7R; /*!< RTC backup register 7, Address offset: 0x6C */ + __IO uint32_t BKP8R; /*!< RTC backup register 8, Address offset: 0x70 */ + __IO uint32_t BKP9R; /*!< RTC backup register 9, Address offset: 0x74 */ + __IO uint32_t BKP10R; /*!< RTC backup register 10, Address offset: 0x78 */ + __IO uint32_t BKP11R; /*!< RTC backup register 11, Address offset: 0x7C */ + __IO uint32_t BKP12R; /*!< RTC backup register 12, Address offset: 0x80 */ + __IO uint32_t BKP13R; /*!< RTC backup register 13, Address offset: 0x84 */ + __IO uint32_t BKP14R; /*!< RTC backup register 14, Address offset: 0x88 */ + __IO uint32_t BKP15R; /*!< RTC backup register 15, Address offset: 0x8C */ +} RTC_TypeDef; + + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint16_t CR1; /*!< SPI Control register 1 (not used in I2S mode), Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint16_t CR2; /*!< SPI Control register 2, Address offset: 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t SR; /*!< SPI Status register, Address offset: 0x08 */ + uint16_t RESERVED2; /*!< Reserved, 0x0A */ + __IO uint16_t DR; /*!< SPI data register, Address offset: 0x0C */ + uint16_t RESERVED3; /*!< Reserved, 0x0E */ + __IO uint16_t CRCPR; /*!< SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10 */ + uint16_t RESERVED4; /*!< Reserved, 0x12 */ + __IO uint16_t RXCRCR; /*!< SPI Rx CRC register (not used in I2S mode), Address offset: 0x14 */ + uint16_t RESERVED5; /*!< Reserved, 0x16 */ + __IO uint16_t TXCRCR; /*!< SPI Tx CRC register (not used in I2S mode), Address offset: 0x18 */ + uint16_t RESERVED6; /*!< Reserved, 0x1A */ + __IO uint16_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + uint16_t RESERVED7; /*!< Reserved, 0x1E */ + __IO uint16_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ + uint16_t RESERVED8; /*!< Reserved, 0x22 */ +} SPI_TypeDef; + +/** + * @brief TIM + */ +typedef struct +{ + __IO uint16_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint16_t PSC; /*!< TIM prescaler, Address offset: 0x28 */ + uint16_t RESERVED9; /*!< Reserved, 0x2A */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint16_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + uint16_t RESERVED10; /*!< Reserved, 0x32 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint16_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + uint16_t RESERVED12; /*!< Reserved, 0x4A */ + __IO uint16_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + uint16_t RESERVED13; /*!< Reserved, 0x4E */ + __IO uint16_t OR; /*!< TIM option register, Address offset: 0x50 */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x54 */ + __IO uint32_t CCR5; /*!< TIM capture/compare register5, Address offset: 0x58 */ + __IO uint32_t CCR6; /*!< TIM capture/compare register 4, Address offset: 0x5C */ +} TIM_TypeDef; + + +/** + * @brief Touch Sensing Controller (TSC) + */ +typedef struct +{ + __IO uint32_t CR; /*!< TSC control register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< TSC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t ICR; /*!< TSC interrupt clear register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< TSC interrupt status register, Address offset: 0x0C */ + __IO uint32_t IOHCR; /*!< TSC I/O hysteresis control register, Address offset: 0x10 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t IOASCR; /*!< TSC I/O analog switch control register, Address offset: 0x18 */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t IOSCR; /*!< TSC I/O sampling control register, Address offset: 0x20 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x24 */ + __IO uint32_t IOCCR; /*!< TSC I/O channel control register, Address offset: 0x28 */ + uint32_t RESERVED4; /*!< Reserved, Address offset: 0x2C */ + __IO uint32_t IOGCSR; /*!< TSC I/O group control status register, Address offset: 0x30 */ + __IO uint32_t IOGXCR[8]; /*!< TSC I/O group x counter register, Address offset: 0x34-50 */ +} TSC_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */ + __IO uint16_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */ + uint16_t RESERVED1; /*!< Reserved, 0x0E */ + __IO uint16_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + uint16_t RESERVED2; /*!< Reserved, 0x12 */ + __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */ + __IO uint16_t RQR; /*!< USART Request register, Address offset: 0x18 */ + uint16_t RESERVED3; /*!< Reserved, 0x1A */ + __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */ + __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */ + __IO uint16_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + uint16_t RESERVED4; /*!< Reserved, 0x26 */ + __IO uint16_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ + uint16_t RESERVED5; /*!< Reserved, 0x2A */ +} USART_TypeDef; + +/** + * @brief Window WATCHDOG + */ +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + + +/** @addtogroup Peripheral_memory_map + * @{ + */ + +#define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */ +#define SRAM_BASE ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */ +#define PERIPH_BASE ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */ + +#define SRAM_BB_BASE ((uint32_t)0x22000000) /*!< SRAM base address in the bit-band region */ +#define PERIPH_BB_BASE ((uint32_t)0x42000000) /*!< Peripheral base address in the bit-band region */ + + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000) +#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000) +#define AHB2PERIPH_BASE (PERIPH_BASE + 0x08000000) +#define AHB3PERIPH_BASE (PERIPH_BASE + 0x10000000) + +/*!< APB1 peripherals */ +#define TIM2_BASE (APB1PERIPH_BASE + 0x00000000) +#define TIM3_BASE (APB1PERIPH_BASE + 0x00000400) +#define TIM4_BASE (APB1PERIPH_BASE + 0x00000800) +#define TIM6_BASE (APB1PERIPH_BASE + 0x00001000) +#define TIM7_BASE (APB1PERIPH_BASE + 0x00001400) +#define RTC_BASE (APB1PERIPH_BASE + 0x00002800) +#define WWDG_BASE (APB1PERIPH_BASE + 0x00002C00) +#define IWDG_BASE (APB1PERIPH_BASE + 0x00003000) +#define I2S2ext_BASE (APB1PERIPH_BASE + 0x00003400) +#define SPI2_BASE (APB1PERIPH_BASE + 0x00003800) +#define SPI3_BASE (APB1PERIPH_BASE + 0x00003C00) +#define I2S3ext_BASE (APB1PERIPH_BASE + 0x00004000) +#define USART2_BASE (APB1PERIPH_BASE + 0x00004400) +#define USART3_BASE (APB1PERIPH_BASE + 0x00004800) +#define UART4_BASE (APB1PERIPH_BASE + 0x00004C00) +#define UART5_BASE (APB1PERIPH_BASE + 0x00005000) +#define I2C1_BASE (APB1PERIPH_BASE + 0x00005400) +#define I2C2_BASE (APB1PERIPH_BASE + 0x00005800) +#define CAN1_BASE (APB1PERIPH_BASE + 0x00006400) +#define PWR_BASE (APB1PERIPH_BASE + 0x00007000) +#define DAC1_BASE (APB1PERIPH_BASE + 0x00007400) +#define I2C3_BASE (APB1PERIPH_BASE + 0x00007800) +#define DAC2_BASE (APB1PERIPH_BASE + 0x00009800) +#define DAC_BASE DAC1_BASE + +/*!< APB2 peripherals */ +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x00000000) +#define COMP_BASE (APB2PERIPH_BASE + 0x0000001C) +#define COMP1_BASE (APB2PERIPH_BASE + 0x0000001C) +#define COMP2_BASE (APB2PERIPH_BASE + 0x00000020) +#define COMP3_BASE (APB2PERIPH_BASE + 0x00000024) +#define COMP4_BASE (APB2PERIPH_BASE + 0x00000028) +#define COMP5_BASE (APB2PERIPH_BASE + 0x0000002C) +#define COMP6_BASE (APB2PERIPH_BASE + 0x00000030) +#define COMP7_BASE (APB2PERIPH_BASE + 0x00000034) +#define OPAMP_BASE (APB2PERIPH_BASE + 0x00000038) +#define OPAMP1_BASE (APB2PERIPH_BASE + 0x00000038) +#define OPAMP2_BASE (APB2PERIPH_BASE + 0x0000003C) +#define OPAMP3_BASE (APB2PERIPH_BASE + 0x00000040) +#define OPAMP4_BASE (APB2PERIPH_BASE + 0x00000044) +#define EXTI_BASE (APB2PERIPH_BASE + 0x00000400) +#define TIM1_BASE (APB2PERIPH_BASE + 0x00002C00) +#define SPI1_BASE (APB2PERIPH_BASE + 0x00003000) +#define TIM8_BASE (APB2PERIPH_BASE + 0x00003400) +#define USART1_BASE (APB2PERIPH_BASE + 0x00003800) +#define TIM15_BASE (APB2PERIPH_BASE + 0x00004000) +#define TIM16_BASE (APB2PERIPH_BASE + 0x00004400) +#define TIM17_BASE (APB2PERIPH_BASE + 0x00004800) +#define HRTIM1_BASE (APB2PERIPH_BASE + 0x00007400) +#define HRTIM1_TIMA_BASE (HRTIM1_BASE + 0x00000080) +#define HRTIM1_TIMB_BASE (HRTIM1_BASE + 0x00000100) +#define HRTIM1_TIMC_BASE (HRTIM1_BASE + 0x00000180) +#define HRTIM1_TIMD_BASE (HRTIM1_BASE + 0x00000200) +#define HRTIM1_TIME_BASE (HRTIM1_BASE + 0x00000280) +#define HRTIM1_COMMON_BASE (HRTIM1_BASE + 0x00000380) + +/*!< AHB1 peripherals */ +#define DMA1_BASE (AHB1PERIPH_BASE + 0x00000000) +#define DMA1_Channel1_BASE (AHB1PERIPH_BASE + 0x00000008) +#define DMA1_Channel2_BASE (AHB1PERIPH_BASE + 0x0000001C) +#define DMA1_Channel3_BASE (AHB1PERIPH_BASE + 0x00000030) +#define DMA1_Channel4_BASE (AHB1PERIPH_BASE + 0x00000044) +#define DMA1_Channel5_BASE (AHB1PERIPH_BASE + 0x00000058) +#define DMA1_Channel6_BASE (AHB1PERIPH_BASE + 0x0000006C) +#define DMA1_Channel7_BASE (AHB1PERIPH_BASE + 0x00000080) +#define DMA2_BASE (AHB1PERIPH_BASE + 0x00000400) +#define DMA2_Channel1_BASE (AHB1PERIPH_BASE + 0x00000408) +#define DMA2_Channel2_BASE (AHB1PERIPH_BASE + 0x0000041C) +#define DMA2_Channel3_BASE (AHB1PERIPH_BASE + 0x00000430) +#define DMA2_Channel4_BASE (AHB1PERIPH_BASE + 0x00000444) +#define DMA2_Channel5_BASE (AHB1PERIPH_BASE + 0x00000458) +#define RCC_BASE (AHB1PERIPH_BASE + 0x00001000) +#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x00002000) /*!< Flash registers base address */ +#define OB_BASE ((uint32_t)0x1FFFF800) /*!< Flash Option Bytes base address */ +#define CRC_BASE (AHB1PERIPH_BASE + 0x00003000) +#define TSC_BASE (AHB1PERIPH_BASE + 0x00004000) + +/*!< AHB2 peripherals */ +#define GPIOA_BASE (AHB2PERIPH_BASE + 0x0000) +#define GPIOB_BASE (AHB2PERIPH_BASE + 0x0400) +#define GPIOC_BASE (AHB2PERIPH_BASE + 0x0800) +#define GPIOD_BASE (AHB2PERIPH_BASE + 0x0C00) +#define GPIOE_BASE (AHB2PERIPH_BASE + 0x1000) +#define GPIOF_BASE (AHB2PERIPH_BASE + 0x1400) + +/*!< AHB3 peripherals */ +#define ADC1_BASE (AHB3PERIPH_BASE + 0x0000) +#define ADC2_BASE (AHB3PERIPH_BASE + 0x0100) +#define ADC1_2_BASE (AHB3PERIPH_BASE + 0x0300) +#define ADC3_BASE (AHB3PERIPH_BASE + 0x0400) +#define ADC4_BASE (AHB3PERIPH_BASE + 0x0500) +#define ADC3_4_BASE (AHB3PERIPH_BASE + 0x0700) + +#define DBGMCU_BASE ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */ +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#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 RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define I2S2ext ((SPI_TypeDef *) I2S2ext_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define I2S3ext ((SPI_TypeDef *) I2S3ext_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define I2C3 ((I2C_TypeDef *) I2C3_BASE) +#define CAN1 ((CAN_TypeDef *) CAN1_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC1 ((DAC_TypeDef *) DAC1_BASE) +#define DAC2 ((DAC_TypeDef *) DAC2_BASE) +#define DAC DAC1 +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define COMP ((COMP_TypeDef *) COMP_BASE) +#define COMP1 ((COMP_TypeDef *) COMP1_BASE) +#define COMP2 ((COMP_TypeDef *) COMP2_BASE) +#define COMP3 ((COMP_TypeDef *) COMP3_BASE) +#define COMP4 ((COMP_TypeDef *) COMP4_BASE) +#define COMP5 ((COMP_TypeDef *) COMP5_BASE) +#define COMP6 ((COMP_TypeDef *) COMP6_BASE) +#define COMP7 ((COMP_TypeDef *) COMP7_BASE) +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define OPAMP1 ((OPAMP_TypeDef *) OPAMP1_BASE) +#define OPAMP2 ((OPAMP_TypeDef *) OPAMP2_BASE) +#define OPAMP3 ((OPAMP_TypeDef *) OPAMP3_BASE) +#define OPAMP4 ((OPAMP_TypeDef *) OPAMP4_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define HRTIM1 ((HRTIM_TypeDef *) HRTIM1_BASE) +#define HRTIM1_TIMA ((HRTIM_TIM_TypeDef *) HRTIM1_TIMA_BASE) +#define HRTIM1_TIMB ((HRTIM_TIM_TypeDef *) HRTIM1_TIMB_BASE) +#define HRTIM1_TIMC ((HRTIM_TIM_TypeDef *) HRTIM1_TIMC_BASE) +#define HRTIM1_TIMD ((HRTIM_TIM_TypeDef *) HRTIM1_TIMD_BASE) +#define HRTIM1_TIME ((HRTIM_TIM_TypeDef *) HRTIM1_TIME_BASE) +#define HRTIM1_COMMON ((HRTIM_Common_TypeDef *) HRTIM1_COMMON_BASE) +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define OB ((OB_TypeDef *) OB_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define TSC ((TSC_TypeDef *) TSC_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define ADC3 ((ADC_TypeDef *) ADC3_BASE) +#define ADC4 ((ADC_TypeDef *) ADC4_BASE) +#define ADC1_2 ((ADC_Common_TypeDef *) ADC1_2_BASE) +#define ADC3_4 ((ADC_Common_TypeDef *) ADC3_4_BASE) +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* High Resolution Timer (HRTIM) */ +/* */ +/******************************************************************************/ +/******************** Master Timer control register ***************************/ +#define HRTIM_MCR_CK_PSC ((uint32_t)0x00000007) /*!< Prescaler mask */ +#define HRTIM_MCR_CK_PSC_0 ((uint32_t)0x00000001) /*!< Prescaler bit 0 */ +#define HRTIM_MCR_CK_PSC_1 ((uint32_t)0x00000002) /*!< Prescaler bit 1 */ +#define HRTIM_MCR_CK_PSC_2 ((uint32_t)0x00000004) /*!< Prescaler bit 2 */ + +#define HRTIM_MCR_CONT ((uint32_t)0x00000008) /*!< Continuous mode */ +#define HRTIM_MCR_RETRIG ((uint32_t)0x00000010) /*!< Rettrigreable mode */ +#define HRTIM_MCR_HALF ((uint32_t)0x00000020) /*!< Half mode */ + +#define HRTIM_MCR_SYNC_IN ((uint32_t)0x00000300) /*!< Synchronization input master */ +#define HRTIM_MCR_SYNC_IN_0 ((uint32_t)0x00000100) /*!< Synchronization input bit 0 */ +#define HRTIM_MCR_SYNC_IN_1 ((uint32_t)0x00000200) /*!< Synchronization input bit 1 */ +#define HRTIM_MCR_SYNCRSTM ((uint32_t)0x00000400) /*!< Synchronization reset master */ +#define HRTIM_MCR_SYNCSTRTM ((uint32_t)0x00000800) /*!< Synchronization start master */ +#define HRTIM_MCR_SYNC_OUT ((uint32_t)0x00003000) /*!< Synchronization output master */ +#define HRTIM_MCR_SYNC_OUT_0 ((uint32_t)0x00001000) /*!< Synchronization output bit 0 */ +#define HRTIM_MCR_SYNC_OUT_1 ((uint32_t)0x00002000) /*!< Synchronization output bit 1 */ +#define HRTIM_MCR_SYNC_SRC ((uint32_t)0x0000C000) /*!< Synchronization source */ +#define HRTIM_MCR_SYNC_SRC_0 ((uint32_t)0x00004000) /*!< Synchronization source bit 0 */ +#define HRTIM_MCR_SYNC_SRC_1 ((uint32_t)0x00008000) /*!< Synchronization source bit 1 */ + +#define HRTIM_MCR_MCEN ((uint32_t)0x00010000) /*!< Master counter enable */ +#define HRTIM_MCR_TACEN ((uint32_t)0x00020000) /*!< Timer A counter enable */ +#define HRTIM_MCR_TBCEN ((uint32_t)0x00040000) /*!< Timer B counter enable */ +#define HRTIM_MCR_TCCEN ((uint32_t)0x00080000) /*!< Timer C counter enable */ +#define HRTIM_MCR_TDCEN ((uint32_t)0x00100000) /*!< Timer D counter enable */ +#define HRTIM_MCR_TECEN ((uint32_t)0x00200000) /*!< Timer E counter enable */ + +#define HRTIM_MCR_DACSYNC ((uint32_t)0x06000000) /*!< DAC synchronization mask */ +#define HRTIM_MCR_DACSYNC_0 ((uint32_t)0x02000000) /*!< DAC synchronization bit 0 */ +#define HRTIM_MCR_DACSYNC_1 ((uint32_t)0x04000000) /*!< DAC synchronization bit 1 */ + +#define HRTIM_MCR_PREEN ((uint32_t)0x08000000) /*!< Master preload enable */ +#define HRTIM_MCR_MREPU ((uint32_t)0x20000000) /*!< Master repetition update */ + +#define HRTIM_MCR_BRSTDMA ((uint32_t)0xC0000000) /*!< Burst DMA update */ +#define HRTIM_MCR_BRSTDMA_0 ((uint32_t)0x40000000) /*!< Burst DMA update bit 0*/ +#define HRTIM_MCR_BRSTDMA_1 ((uint32_t)0x80000000) /*!< Burst DMA update bit 1 */ + +/******************** Master Timer Interrupt status register ******************/ +#define HRTIM_MISR_MCMP1 ((uint32_t)0x00000001) /*!< Master compare 1 interrupt flag */ +#define HRTIM_MISR_MCMP2 ((uint32_t)0x00000002) /*!< Master compare 2 interrupt flag */ +#define HRTIM_MISR_MCMP3 ((uint32_t)0x00000004) /*!< Master compare 3 interrupt flag */ +#define HRTIM_MISR_MCMP4 ((uint32_t)0x00000008) /*!< Master compare 4 interrupt flag */ +#define HRTIM_MISR_MREP ((uint32_t)0x00000010) /*!< Master Repetition interrupt flag */ +#define HRTIM_MISR_SYNC ((uint32_t)0x00000020) /*!< Synchronization input interrupt flag */ +#define HRTIM_MISR_MUPD ((uint32_t)0x00000040) /*!< Master update interrupt flag */ + +/******************** Master Timer Interrupt clear register *******************/ +#define HRTIM_MICR_MCMP1 ((uint32_t)0x00000001) /*!< Master compare 1 interrupt flag clear */ +#define HRTIM_MICR_MCMP2 ((uint32_t)0x00000002) /*!< Master compare 2 interrupt flag clear */ +#define HRTIM_MICR_MCMP3 ((uint32_t)0x00000004) /*!< Master compare 3 interrupt flag clear */ +#define HRTIM_MICR_MCMP4 ((uint32_t)0x00000008) /*!< Master compare 4 interrupt flag clear */ +#define HRTIM_MICR_MREP ((uint32_t)0x00000010) /*!< Master Repetition interrupt flag clear */ +#define HRTIM_MICR_SYNC ((uint32_t)0x00000020) /*!< Synchronization input interrupt flag clear */ +#define HRTIM_MICR_MUPD ((uint32_t)0x00000040) /*!< Master update interrupt flag clear */ + +/******************** Master Timer DMA/Interrupt enable register **************/ +#define HRTIM_MDIER_MCMP1IE ((uint32_t)0x00000001) /*!< Master compare 1 interrupt enable */ +#define HRTIM_MDIER_MCMP2IE ((uint32_t)0x00000002) /*!< Master compare 2 interrupt enable */ +#define HRTIM_MDIER_MCMP3IE ((uint32_t)0x00000004) /*!< Master compare 3 interrupt enable */ +#define HRTIM_MDIER_MCMP4IE ((uint32_t)0x00000008) /*!< Master compare 4 interrupt enable */ +#define HRTIM_MDIER_MREPIE ((uint32_t)0x00000010) /*!< Master Repetition interrupt enable */ +#define HRTIM_MDIER_SYNCIE ((uint32_t)0x00000020) /*!< Synchronization input interrupt enable */ +#define HRTIM_MDIER_MUPDIE ((uint32_t)0x00000040) /*!< Master update interrupt enable */ + +#define HRTIM_MDIER_MCMP1DE ((uint32_t)0x00010000) /*!< Master compare 1 DMA enable */ +#define HRTIM_MDIER_MCMP2DE ((uint32_t)0x00020000) /*!< Master compare 2 DMA enable */ +#define HRTIM_MDIER_MCMP3DE ((uint32_t)0x00040000) /*!< Master compare 3 DMA enable */ +#define HRTIM_MDIER_MCMP4DE ((uint32_t)0x00080000) /*!< Master compare 4 DMA enable */ +#define HRTIM_MDIER_MREPDE ((uint32_t)0x00100000) /*!< Master Repetition DMA enable */ +#define HRTIM_MDIER_SYNCDE ((uint32_t)0x00200000) /*!< Synchronization input DMA enable */ +#define HRTIM_MDIER_MUPDDE ((uint32_t)0x00400000) /*!< Master update DMA enable */ + +/******************* Bit definition for HRTIM_MCNTR register ****************/ +#define HRTIM_MCNTR_MCNTR ((uint32_t)0xFFFFFFFF) /*!<Counter Value */ + +/******************* Bit definition for HRTIM_MPER register *****************/ +#define HRTIM_MPER_MPER ((uint32_t)0xFFFFFFFF) /*!< Period Value */ + +/******************* Bit definition for HRTIM_MREP register *****************/ +#define HRTIM_MREP_MREP ((uint32_t)0xFFFFFFFF) /*!<Repetition Value */ + +/******************* Bit definition for HRTIM_MCMP1R register *****************/ +#define HRTIM_MCMP1R_MCMP1R ((uint32_t)0xFFFFFFFF) /*!<Compare Value */ + +/******************* Bit definition for HRTIM_MCMP2R register *****************/ +#define HRTIM_MCMP1R_MCMP2R ((uint32_t)0xFFFFFFFF) /*!<Compare Value */ + +/******************* Bit definition for HRTIM_MCMP3R register *****************/ +#define HRTIM_MCMP1R_MCMP3R ((uint32_t)0xFFFFFFFF) /*!<Compare Value */ + +/******************* Bit definition for HRTIM_MCMP4R register *****************/ +#define HRTIM_MCMP1R_MCMP4R ((uint32_t)0xFFFFFFFF) /*!<Compare Value */ + +/******************** Slave control register **********************************/ +#define HRTIM_TIMCR_CK_PSC ((uint32_t)0x00000007) /*!< Slave prescaler mask*/ +#define HRTIM_TIMCR_CK_PSC_0 ((uint32_t)0x00000001) /*!< prescaler bit 0 */ +#define HRTIM_TIMCR_CK_PSC_1 ((uint32_t)0x00000002) /*!< prescaler bit 1 */ +#define HRTIM_TIMCR_CK_PSC_2 ((uint32_t)0x00000004) /*!< prescaler bit 2 */ + +#define HRTIM_TIMCR_CONT ((uint32_t)0x00000008) /*!< Slave continuous mode */ +#define HRTIM_TIMCR_RETRIG ((uint32_t)0x00000010) /*!< Slave Retrigreable mode */ +#define HRTIM_TIMCR_HALF ((uint32_t)0x00000020) /*!< Slave Half mode */ +#define HRTIM_TIMCR_PSHPLL ((uint32_t)0x00000040) /*!< Slave push-pull mode */ + +#define HRTIM_TIMCR_SYNCRST ((uint32_t)0x00000400) /*!< Slave synchronization resets */ +#define HRTIM_TIMCR_SYNCSTRT ((uint32_t)0x00000800) /*!< Slave synchronization starts */ + +#define HRTIM_TIMCR_DELCMP2 ((uint32_t)0x00003000) /*!< Slave delayed comparator 2 mode mask */ +#define HRTIM_TIMCR_DELCMP2_0 ((uint32_t)0x00001000) /*!< Slave delayed comparator 2 bit 0 */ +#define HRTIM_TIMCR_DELCMP2_1 ((uint32_t)0x00002000) /*!< Slave delayed comparator 2 bit 1 */ +#define HRTIM_TIMCR_DELCMP4 ((uint32_t)0x0000C000) /*!< Slave delayed comparator 4 mode mask */ +#define HRTIM_TIMCR_DELCMP4_0 ((uint32_t)0x00004000) /*!< Slave delayed comparator 4 bit 0 */ +#define HRTIM_TIMCR_DELCMP4_1 ((uint32_t)0x00008000) /*!< Slave delayed comparator 4 bit 1 */ + +#define HRTIM_TIMCR_TREPU ((uint32_t)0x00020000) /*!< Slave repetition update */ +#define HRTIM_TIMCR_TRSTU ((uint32_t)0x00040000) /*!< Slave reset update */ +#define HRTIM_TIMCR_TAU ((uint32_t)0x00080000) /*!< Slave Timer A update reserved for TIM A */ +#define HRTIM_TIMCR_TBU ((uint32_t)0x00100000) /*!< Slave Timer B update reserved for TIM B */ +#define HRTIM_TIMCR_TCU ((uint32_t)0x00200000) /*!< Slave Timer C update reserved for TIM C */ +#define HRTIM_TIMCR_TDU ((uint32_t)0x00400000) /*!< Slave Timer D update reserved for TIM D */ +#define HRTIM_TIMCR_TEU ((uint32_t)0x00800000) /*!< Slave Timer E update reserved for TIM E */ +#define HRTIM_TIMCR_MSTU ((uint32_t)0x01000000) /*!< Master Update */ + +#define HRTIM_TIMCR_DACSYNC ((uint32_t)0x06000000) /*!< DAC synchronization mask */ +#define HRTIM_TIMCR_DACSYNC_0 ((uint32_t)0x02000000) /*!< DAC synchronization bit 0 */ +#define HRTIM_TIMCR_DACSYNC_1 ((uint32_t)0x04000000) /*!< DAC synchronization bit 1 */ +#define HRTIM_TIMCR_PREEN ((uint32_t)0x08000000) /*!< Slave preload enable */ + +#define HRTIM_TIMCR_UPDGAT ((uint32_t)0xF0000000) /*!< Slave update gating mask */ +#define HRTIM_TIMCR_UPDGAT_0 ((uint32_t)0x10000000) /*!< Update gating bit 0 */ +#define HRTIM_TIMCR_UPDGAT_1 ((uint32_t)0x20000000) /*!< Update gating bit 1 */ +#define HRTIM_TIMCR_UPDGAT_2 ((uint32_t)0x40000000) /*!< Update gating bit 2 */ +#define HRTIM_TIMCR_UPDGAT_3 ((uint32_t)0x80000000) /*!< Update gating bit 3 */ + +/******************** Slave Interrupt status register **************************/ +#define HRTIM_TIMISR_CMP1 ((uint32_t)0x00000001) /*!< Slave compare 1 interrupt flag */ +#define HRTIM_TIMISR_CMP2 ((uint32_t)0x00000002) /*!< Slave compare 2 interrupt flag */ +#define HRTIM_TIMISR_CMP3 ((uint32_t)0x00000004) /*!< Slave compare 3 interrupt flag */ +#define HRTIM_TIMISR_CMP4 ((uint32_t)0x00000008) /*!< Slave compare 4 interrupt flag */ +#define HRTIM_TIMISR_REP ((uint32_t)0x00000010) /*!< Slave repetition interrupt flag */ +#define HRTIM_TIMISR_UPD ((uint32_t)0x00000040) /*!< Slave update interrupt flag */ +#define HRTIM_TIMISR_CPT1 ((uint32_t)0x00000080) /*!< Slave capture 1 interrupt flag */ +#define HRTIM_TIMISR_CPT2 ((uint32_t)0x00000100) /*!< Slave capture 2 interrupt flag */ +#define HRTIM_TIMISR_SET1 ((uint32_t)0x00000200) /*!< Slave output 1 set interrupt flag */ +#define HRTIM_TIMISR_RST1 ((uint32_t)0x00000400) /*!< Slave output 1 reset interrupt flag */ +#define HRTIM_TIMISR_SET2 ((uint32_t)0x00000800) /*!< Slave output 2 set interrupt flag */ +#define HRTIM_TIMISR_RST2 ((uint32_t)0x00001000) /*!< Slave output 2 reset interrupt flag */ +#define HRTIM_TIMISR_RST ((uint32_t)0x00002000) /*!< Slave reset interrupt flag */ +#define HRTIM_TIMISR_DLYPRT ((uint32_t)0x00004000) /*!< Slave output 1 delay protection interrupt flag */ +#define HRTIM_TIMISR_CPPSTAT ((uint32_t)0x00010000) /*!< Slave current push-pull flag */ +#define HRTIM_TIMISR_IPPSTAT ((uint32_t)0x00020000) /*!< Slave idle push-pull flag */ +#define HRTIM_TIMISR_O1STAT ((uint32_t)0x00040000) /*!< Slave output 1 state flag */ +#define HRTIM_TIMISR_O2STAT ((uint32_t)0x00080000) /*!< Slave output 2 state flag */ +#define HRTIM_TIMISR_O1CPY ((uint32_t)0x00100000) /*!< Slave output 1 copy flag */ +#define HRTIM_TIMISR_O2CPY ((uint32_t)0x00200000) /*!< Slave output 2 copy flag */ + +/******************** Slave Interrupt clear register **************************/ +#define HRTIM_TIMICR_CMP1C ((uint32_t)0x00000001) /*!< Slave compare 1 clear flag */ +#define HRTIM_TIMICR_CMP2C ((uint32_t)0x00000002) /*!< Slave compare 2 clear flag */ +#define HRTIM_TIMICR_CMP3C ((uint32_t)0x00000004) /*!< Slave compare 3 clear flag */ +#define HRTIM_TIMICR_CMP4C ((uint32_t)0x00000008) /*!< Slave compare 4 clear flag */ +#define HRTIM_TIMICR_REPC ((uint32_t)0x00000010) /*!< Slave repetition clear flag */ +#define HRTIM_TIMICR_UPDC ((uint32_t)0x00000040) /*!< Slave update clear flag */ +#define HRTIM_TIMICR_CPT1C ((uint32_t)0x00000080) /*!< Slave capture 1 clear flag */ +#define HRTIM_TIMICR_CPT2C ((uint32_t)0x00000100) /*!< Slave capture 2 clear flag */ +#define HRTIM_TIMICR_SET1C ((uint32_t)0x00000200) /*!< Slave output 1 set clear flag */ +#define HRTIM_TIMICR_RST1C ((uint32_t)0x00000400) /*!< Slave output 1 reset clear flag */ +#define HRTIM_TIMICR_SET2C ((uint32_t)0x00000800) /*!< Slave output 2 set clear flag */ +#define HRTIM_TIMICR_RST2C ((uint32_t)0x00001000) /*!< Slave output 2 reset clear flag */ +#define HRTIM_TIMICR_RSTC ((uint32_t)0x00002000) /*!< Slave reset clear flag */ +#define HRTIM_TIMICR_DLYPRT1C ((uint32_t)0x00004000) /*!< Slave output 1 delay protection clear flag */ +#define HRTIM_TIMICR_DLYPRT2C ((uint32_t)0x00008000) /*!< Slave output 2 delay protection clear flag */ + +/******************** Slave DMA/Interrupt enable register *********************/ +#define HRTIM_TIMDIER_CMP1IE ((uint32_t)0x00000001) /*!< Slave compare 1 interrupt enable */ +#define HRTIM_TIMDIER_CMP2IE ((uint32_t)0x00000002) /*!< Slave compare 2 interrupt enable */ +#define HRTIM_TIMDIER_CMP3IE ((uint32_t)0x00000004) /*!< Slave compare 3 interrupt enable */ +#define HRTIM_TIMDIER_CMP4IE ((uint32_t)0x00000008) /*!< Slave compare 4 interrupt enable */ +#define HRTIM_TIMDIER_REPIE ((uint32_t)0x00000010) /*!< Slave repetition interrupt enable */ +#define HRTIM_TIMDIER_UPDIE ((uint32_t)0x00000040) /*!< Slave update interrupt enable */ +#define HRTIM_TIMDIER_CPT1IE ((uint32_t)0x00000080) /*!< Slave capture 1 interrupt enable */ +#define HRTIM_TIMDIER_CPT2IE ((uint32_t)0x00000100) /*!< Slave capture 2 interrupt enable */ +#define HRTIM_TIMDIER_SET1IE ((uint32_t)0x00000200) /*!< Slave output 1 set interrupt enable */ +#define HRTIM_TIMDIER_RST1IE ((uint32_t)0x00000400) /*!< Slave output 1 reset interrupt enable */ +#define HRTIM_TIMDIER_SET2IE ((uint32_t)0x00000800) /*!< Slave output 2 set interrupt enable */ +#define HRTIM_TIMDIER_RST2IE ((uint32_t)0x00001000) /*!< Slave output 2 reset interrupt enable */ +#define HRTIM_TIMDIER_RSTIE ((uint32_t)0x00002000) /*!< Slave reset interrupt enable */ +#define HRTIM_TIMDIER_DLYPRTIE ((uint32_t)0x00004000) /*!< Slave delay protection interrupt enable */ + +#define HRTIM_TIMDIER_CMP1DE ((uint32_t)0x00010000) /*!< Slave compare 1 request enable */ +#define HRTIM_TIMDIER_CMP2DE ((uint32_t)0x00020000) /*!< Slave compare 2 request enable */ +#define HRTIM_TIMDIER_CMP3DE ((uint32_t)0x00040000) /*!< Slave compare 3 request enable */ +#define HRTIM_TIMDIER_CMP4DE ((uint32_t)0x00080000) /*!< Slave compare 4 request enable */ +#define HRTIM_TIMDIER_REPDE ((uint32_t)0x00100000) /*!< Slave repetition request enable */ +#define HRTIM_TIMDIER_UPDDE ((uint32_t)0x00400000) /*!< Slave update request enable */ +#define HRTIM_TIMDIER_CPT1DE ((uint32_t)0x00800000) /*!< Slave capture 1 request enable */ +#define HRTIM_TIMDIER_CPT2DE ((uint32_t)0x01000000) /*!< Slave capture 2 request enable */ +#define HRTIM_TIMDIER_SET1DE ((uint32_t)0x02000000) /*!< Slave output 1 set request enable */ +#define HRTIM_TIMDIER_RST1DE ((uint32_t)0x04000000) /*!< Slave output 1 reset request enable */ +#define HRTIM_TIMDIER_SET2DE ((uint32_t)0x08000000) /*!< Slave output 2 set request enable */ +#define HRTIM_TIMDIER_RST2DE ((uint32_t)0x10000000) /*!< Slave output 2 reset request enable */ +#define HRTIM_TIMDIER_RSTDE ((uint32_t)0x20000000) /*!< Slave reset request enable */ +#define HRTIM_TIMDIER_DLYPRTDE ((uint32_t)0x40000000) /*!< Slave delay protection request enable */ + +/****************** Bit definition for HRTIM_CNTR register ****************/ +#define HRTIM_CNTR_CNTR ((uint32_t)0xFFFFFFFF) /*!< Counter Value */ + +/******************* Bit definition for HRTIM_PER register *****************/ +#define HRTIM_PER_PER ((uint32_t)0xFFFFFFFF) /*!< Period Value */ + +/******************* Bit definition for HRTIM_REP register *****************/ +#define HRTIM_REP_REP ((uint32_t)0xFFFFFFFF) /*!< Repetition Value */ + +/******************* Bit definition for HRTIM_CMP1R register *****************/ +#define HRTIM_CMP1R_CMP1R ((uint32_t)0xFFFFFFFF) /*!< Compare Value */ + +/******************* Bit definition for HRTIM_CMP1CR register *****************/ +#define HRTIM_CMP1CR_CMP1CR ((uint32_t)0xFFFFFFFF) /*!< Compare Value */ + +/******************* Bit definition for HRTIM_CMP2R register *****************/ +#define HRTIM_CMP2R_CMP2R ((uint32_t)0xFFFFFFFF) /*!< Compare Value */ + +/******************* Bit definition for HRTIM_CMP3R register *****************/ +#define HRTIM_CMP3R_CMP3R ((uint32_t)0xFFFFFFFF) /*!< Compare Value */ + +/******************* Bit definition for HRTIM_CMP4R register *****************/ +#define HRTIM_CMP4R_CMP4R ((uint32_t)0xFFFFFFFF) /*!< Compare Value */ + +/******************* Bit definition for HRTIM_CPT1R register ****************/ +#define HRTIM_CPT1R_CPT1R ((uint32_t)0xFFFFFFFF) /*!< Capture Value */ + +/******************* Bit definition for HRTIM_CPT2R register ****************/ +#define HRTIM_CPT2R_CPT2R ((uint32_t)0xFFFFFFFF) /*!< Capture Value */ + +/******************** Bit definition for Slave Deadtime register **************/ +#define HRTIM_DTR_DTR ((uint32_t)0x000001FF) /*!< Dead time rising value */ +#define HRTIM_DTR_DTR_0 ((uint32_t)0x00000001) /*!< Dead time rising bit 0 */ +#define HRTIM_DTR_DTR_1 ((uint32_t)0x00000002) /*!< Dead time rising bit 1 */ +#define HRTIM_DTR_DTR_2 ((uint32_t)0x00000004) /*!< Dead time rising bit 2 */ +#define HRTIM_DTR_DTR_3 ((uint32_t)0x00000008) /*!< Dead time rising bit 3 */ +#define HRTIM_DTR_DTR_4 ((uint32_t)0x00000010) /*!< Dead time rising bit 4 */ +#define HRTIM_DTR_DTR_5 ((uint32_t)0x00000020) /*!< Dead time rising bit 5 */ +#define HRTIM_DTR_DTR_6 ((uint32_t)0x00000040) /*!< Dead time rising bit 6 */ +#define HRTIM_DTR_DTR_7 ((uint32_t)0x00000080) /*!< Dead time rising bit 7 */ +#define HRTIM_DTR_DTR_8 ((uint32_t)0x00000100) /*!< Dead time rising bit 8 */ +#define HRTIM_DTR_SDTR ((uint32_t)0x00000200) /*!< Sign dead time rising value */ +#define HRTIM_DTR_DTPRSC ((uint32_t)0x00001C00) /*!< Dead time prescaler */ +#define HRTIM_DTR_DTPRSC_0 ((uint32_t)0x00000400) /*!< Dead time prescaler bit 0 */ +#define HRTIM_DTR_DTPRSC_1 ((uint32_t)0x00000800) /*!< Dead time prescaler bit 1 */ +#define HRTIM_DTR_DTPRSC_2 ((uint32_t)0x00001000) /*!< Dead time prescaler bit 2 */ +#define HRTIM_DTR_DTRSLK ((uint32_t)0x00004000) /*!< Dead time rising sign lock */ +#define HRTIM_DTR_DTRLK ((uint32_t)0x00008000) /*!< Dead time rising lock */ +#define HRTIM_DTR_DTF ((uint32_t)0x01FF0000) /*!< Dead time falling value */ +#define HRTIM_DTR_DTF_0 ((uint32_t)0x00010000) /*!< Dead time falling bit 0 */ +#define HRTIM_DTR_DTF_1 ((uint32_t)0x00020000) /*!< Dead time falling bit 1 */ +#define HRTIM_DTR_DTF_2 ((uint32_t)0x00040000) /*!< Dead time falling bit 2 */ +#define HRTIM_DTR_DTF_3 ((uint32_t)0x00080000) /*!< Dead time falling bit 3 */ +#define HRTIM_DTR_DTF_4 ((uint32_t)0x00100000) /*!< Dead time falling bit 4 */ +#define HRTIM_DTR_DTF_5 ((uint32_t)0x00200000) /*!< Dead time falling bit 5 */ +#define HRTIM_DTR_DTF_6 ((uint32_t)0x00400000) /*!< Dead time falling bit 6 */ +#define HRTIM_DTR_DTF_7 ((uint32_t)0x00800000) /*!< Dead time falling bit 7 */ +#define HRTIM_DTR_DTF_8 ((uint32_t)0x01000000) /*!< Dead time falling bit 8 */ +#define HRTIM_DTR_SDTF ((uint32_t)0x02000000) /*!< Sign dead time falling value */ +#define HRTIM_DTR_DTFSLK ((uint32_t)0x40000000) /*!< Dead time falling sign lock */ +#define HRTIM_DTR_DTFLK ((uint32_t)0x80000000) /*!< Dead time falling lock */ + +/**** Bit definition for Slave Output 1 set register **************************/ +#define HRTIM_SET1R_SST ((uint32_t)0x00000001) /*!< software set trigger */ +#define HRTIM_SET1R_RESYNC ((uint32_t)0x00000002) /*!< Timer A resynchronization */ +#define HRTIM_SET1R_PER ((uint32_t)0x00000004) /*!< Timer A period */ +#define HRTIM_SET1R_CMP1 ((uint32_t)0x00000008) /*!< Timer A compare 1 */ +#define HRTIM_SET1R_CMP2 ((uint32_t)0x00000010) /*!< Timer A compare 2 */ +#define HRTIM_SET1R_CMP3 ((uint32_t)0x00000020) /*!< Timer A compare 3 */ +#define HRTIM_SET1R_CMP4 ((uint32_t)0x00000040) /*!< Timer A compare 4 */ + +#define HRTIM_SET1R_MSTPER ((uint32_t)0x00000080) /*!< Master period */ +#define HRTIM_SET1R_MSTCMP1 ((uint32_t)0x00000100) /*!< Master compare 1 */ +#define HRTIM_SET1R_MSTCMP2 ((uint32_t)0x00000200) /*!< Master compare 2 */ +#define HRTIM_SET1R_MSTCMP3 ((uint32_t)0x00000400) /*!< Master compare 3 */ +#define HRTIM_SET1R_MSTCMP4 ((uint32_t)0x00000800) /*!< Master compare 4 */ + +#define HRTIM_SET1R_TIMEVNT1 ((uint32_t)0x00001000) /*!< Timer event 1 */ +#define HRTIM_SET1R_TIMEVNT2 ((uint32_t)0x00002000) /*!< Timer event 2 */ +#define HRTIM_SET1R_TIMEVNT3 ((uint32_t)0x00004000) /*!< Timer event 3 */ +#define HRTIM_SET1R_TIMEVNT4 ((uint32_t)0x00008000) /*!< Timer event 4 */ +#define HRTIM_SET1R_TIMEVNT5 ((uint32_t)0x00010000) /*!< Timer event 5 */ +#define HRTIM_SET1R_TIMEVNT6 ((uint32_t)0x00020000) /*!< Timer event 6 */ +#define HRTIM_SET1R_TIMEVNT7 ((uint32_t)0x00040000) /*!< Timer event 7 */ +#define HRTIM_SET1R_TIMEVNT8 ((uint32_t)0x00080000) /*!< Timer event 8 */ +#define HRTIM_SET1R_TIMEVNT9 ((uint32_t)0x00100000) /*!< Timer event 9 */ + +#define HRTIM_SET1R_EXTVNT1 ((uint32_t)0x00200000) /*!< External event 1 */ +#define HRTIM_SET1R_EXTVNT2 ((uint32_t)0x00400000) /*!< External event 2 */ +#define HRTIM_SET1R_EXTVNT3 ((uint32_t)0x00800000) /*!< External event 3 */ +#define HRTIM_SET1R_EXTVNT4 ((uint32_t)0x01000000) /*!< External event 4 */ +#define HRTIM_SET1R_EXTVNT5 ((uint32_t)0x02000000) /*!< External event 5 */ +#define HRTIM_SET1R_EXTVNT6 ((uint32_t)0x04000000) /*!< External event 6 */ +#define HRTIM_SET1R_EXTVNT7 ((uint32_t)0x08000000) /*!< External event 7 */ +#define HRTIM_SET1R_EXTVNT8 ((uint32_t)0x10000000) /*!< External event 8 */ +#define HRTIM_SET1R_EXTVNT9 ((uint32_t)0x20000000) /*!< External event 9 */ +#define HRTIM_SET1R_EXTVNT10 ((uint32_t)0x40000000) /*!< External event 10 */ + +#define HRTIM_SET1R_UPDATE ((uint32_t)0x80000000) /*!< Register update (transfer preload to active) */ + +/**** Bit definition for Slave Output 1 reset register ************************/ +#define HRTIM_RST1R_SRT ((uint32_t)0x00000001) /*!< software reset trigger */ +#define HRTIM_RST1R_RESYNC ((uint32_t)0x00000002) /*!< Timer A resynchronization */ +#define HRTIM_RST1R_PER ((uint32_t)0x00000004) /*!< Timer A period */ +#define HRTIM_RST1R_CMP1 ((uint32_t)0x00000008) /*!< Timer A compare 1 */ +#define HRTIM_RST1R_CMP2 ((uint32_t)0x00000010) /*!< Timer A compare 2 */ +#define HRTIM_RST1R_CMP3 ((uint32_t)0x00000020) /*!< Timer A compare 3 */ +#define HRTIM_RST1R_CMP4 ((uint32_t)0x00000040) /*!< Timer A compare 4 */ + +#define HRTIM_RST1R_MSTPER ((uint32_t)0x00000080) /*!< Master period */ +#define HRTIM_RST1R_MSTCMP1 ((uint32_t)0x00000100) /*!< Master compare 1 */ +#define HRTIM_RST1R_MSTCMP2 ((uint32_t)0x00000200) /*!< Master compare 2 */ +#define HRTIM_RST1R_MSTCMP3 ((uint32_t)0x00000400) /*!< Master compare 3 */ +#define HRTIM_RST1R_MSTCMP4 ((uint32_t)0x00000800) /*!< Master compare 4 */ + +#define HRTIM_RST1R_TIMEVNT1 ((uint32_t)0x00001000) /*!< Timer event 1 */ +#define HRTIM_RST1R_TIMEVNT2 ((uint32_t)0x00002000) /*!< Timer event 2 */ +#define HRTIM_RST1R_TIMEVNT3 ((uint32_t)0x00004000) /*!< Timer event 3 */ +#define HRTIM_RST1R_TIMEVNT4 ((uint32_t)0x00008000) /*!< Timer event 4 */ +#define HRTIM_RST1R_TIMEVNT5 ((uint32_t)0x00010000) /*!< Timer event 5 */ +#define HRTIM_RST1R_TIMEVNT6 ((uint32_t)0x00020000) /*!< Timer event 6 */ +#define HRTIM_RST1R_TIMEVNT7 ((uint32_t)0x00040000) /*!< Timer event 7 */ +#define HRTIM_RST1R_TIMEVNT8 ((uint32_t)0x00080000) /*!< Timer event 8 */ +#define HRTIM_RST1R_TIMEVNT9 ((uint32_t)0x00100000) /*!< Timer event 9 */ + +#define HRTIM_RST1R_EXTVNT1 ((uint32_t)0x00200000) /*!< External event 1 */ +#define HRTIM_RST1R_EXTVNT2 ((uint32_t)0x00400000) /*!< External event 2 */ +#define HRTIM_RST1R_EXTVNT3 ((uint32_t)0x00800000) /*!< External event 3 */ +#define HRTIM_RST1R_EXTVNT4 ((uint32_t)0x01000000) /*!< External event 4 */ +#define HRTIM_RST1R_EXTVNT5 ((uint32_t)0x02000000) /*!< External event 5 */ +#define HRTIM_RST1R_EXTVNT6 ((uint32_t)0x04000000) /*!< External event 6 */ +#define HRTIM_RST1R_EXTVNT7 ((uint32_t)0x08000000) /*!< External event 7 */ +#define HRTIM_RST1R_EXTVNT8 ((uint32_t)0x10000000) /*!< External event 8 */ +#define HRTIM_RST1R_EXTVNT9 ((uint32_t)0x20000000) /*!< External event 9 */ +#define HRTIM_RST1R_EXTVNT10 ((uint32_t)0x40000000) /*!< External event 10 */ + +#define HRTIM_RST1R_UPDATE ((uint32_t)0x80000000) /*!< Register update (transfer preload to active) */ + + +/**** Bit definition for Slave Output 2 set register **************************/ +#define HRTIM_SET2R_SST ((uint32_t)0x00000001) /*!< software set trigger */ +#define HRTIM_SET2R_RESYNC ((uint32_t)0x00000002) /*!< Timer A resynchronization */ +#define HRTIM_SET2R_PER ((uint32_t)0x00000004) /*!< Timer A period */ +#define HRTIM_SET2R_CMP1 ((uint32_t)0x00000008) /*!< Timer A compare 1 */ +#define HRTIM_SET2R_CMP2 ((uint32_t)0x00000010) /*!< Timer A compare 2 */ +#define HRTIM_SET2R_CMP3 ((uint32_t)0x00000020) /*!< Timer A compare 3 */ +#define HRTIM_SET2R_CMP4 ((uint32_t)0x00000040) /*!< Timer A compare 4 */ + +#define HRTIM_SET2R_MSTPER ((uint32_t)0x00000080) /*!< Master period */ +#define HRTIM_SET2R_MSTCMP1 ((uint32_t)0x00000100) /*!< Master compare 1 */ +#define HRTIM_SET2R_MSTCMP2 ((uint32_t)0x00000200) /*!< Master compare 2 */ +#define HRTIM_SET2R_MSTCMP3 ((uint32_t)0x00000400) /*!< Master compare 3 */ +#define HRTIM_SET2R_MSTCMP4 ((uint32_t)0x00000800) /*!< Master compare 4 */ + +#define HRTIM_SET2R_TIMEVNT1 ((uint32_t)0x00001000) /*!< Timer event 1 */ +#define HRTIM_SET2R_TIMEVNT2 ((uint32_t)0x00002000) /*!< Timer event 2 */ +#define HRTIM_SET2R_TIMEVNT3 ((uint32_t)0x00004000) /*!< Timer event 3 */ +#define HRTIM_SET2R_TIMEVNT4 ((uint32_t)0x00008000) /*!< Timer event 4 */ +#define HRTIM_SET2R_TIMEVNT5 ((uint32_t)0x00010000) /*!< Timer event 5 */ +#define HRTIM_SET2R_TIMEVNT6 ((uint32_t)0x00020000) /*!< Timer event 6 */ +#define HRTIM_SET2R_TIMEVNT7 ((uint32_t)0x00040000) /*!< Timer event 7 */ +#define HRTIM_SET2R_TIMEVNT8 ((uint32_t)0x00080000) /*!< Timer event 8 */ +#define HRTIM_SET2R_TIMEVNT9 ((uint32_t)0x00100000) /*!< Timer event 9 */ + +#define HRTIM_SET2R_EXTVNT1 ((uint32_t)0x00200000) /*!< External event 1 */ +#define HRTIM_SET2R_EXTVNT2 ((uint32_t)0x00400000) /*!< External event 2 */ +#define HRTIM_SET2R_EXTVNT3 ((uint32_t)0x00800000) /*!< External event 3 */ +#define HRTIM_SET2R_EXTVNT4 ((uint32_t)0x01000000) /*!< External event 4 */ +#define HRTIM_SET2R_EXTVNT5 ((uint32_t)0x02000000) /*!< External event 5 */ +#define HRTIM_SET2R_EXTVNT6 ((uint32_t)0x04000000) /*!< External event 6 */ +#define HRTIM_SET2R_EXTVNT7 ((uint32_t)0x08000000) /*!< External event 7 */ +#define HRTIM_SET2R_EXTVNT8 ((uint32_t)0x10000000) /*!< External event 8 */ +#define HRTIM_SET2R_EXTVNT9 ((uint32_t)0x20000000) /*!< External event 9 */ +#define HRTIM_SET2R_EXTVNT10 ((uint32_t)0x40000000) /*!< External event 10 */ + +#define HRTIM_SET2R_UPDATE ((uint32_t)0x80000000) /*!< Register update (transfer preload to active) */ + +/**** Bit definition for Slave Output 2 reset register ************************/ +#define HRTIM_RST2R_SRT ((uint32_t)0x00000001) /*!< software reset trigger */ +#define HRTIM_RST2R_RESYNC ((uint32_t)0x00000002) /*!< Timer A resynchronization */ +#define HRTIM_RST2R_PER ((uint32_t)0x00000004) /*!< Timer A period */ +#define HRTIM_RST2R_CMP1 ((uint32_t)0x00000008) /*!< Timer A compare 1 */ +#define HRTIM_RST2R_CMP2 ((uint32_t)0x00000010) /*!< Timer A compare 2 */ +#define HRTIM_RST2R_CMP3 ((uint32_t)0x00000020) /*!< Timer A compare 3 */ +#define HRTIM_RST2R_CMP4 ((uint32_t)0x00000040) /*!< Timer A compare 4 */ + +#define HRTIM_RST2R_MSTPER ((uint32_t)0x00000080) /*!< Master period */ +#define HRTIM_RST2R_MSTCMP1 ((uint32_t)0x00000100) /*!< Master compare 1 */ +#define HRTIM_RST2R_MSTCMP2 ((uint32_t)0x00000200) /*!< Master compare 2 */ +#define HRTIM_RST2R_MSTCMP3 ((uint32_t)0x00000400) /*!< Master compare 3 */ +#define HRTIM_RST2R_MSTCMP4 ((uint32_t)0x00000800) /*!< Master compare 4 */ + +#define HRTIM_RST2R_TIMEVNT1 ((uint32_t)0x00001000) /*!< Timer event 1 */ +#define HRTIM_RST2R_TIMEVNT2 ((uint32_t)0x00002000) /*!< Timer event 2 */ +#define HRTIM_RST2R_TIMEVNT3 ((uint32_t)0x00004000) /*!< Timer event 3 */ +#define HRTIM_RST2R_TIMEVNT4 ((uint32_t)0x00008000) /*!< Timer event 4 */ +#define HRTIM_RST2R_TIMEVNT5 ((uint32_t)0x00010000) /*!< Timer event 5 */ +#define HRTIM_RST2R_TIMEVNT6 ((uint32_t)0x00020000) /*!< Timer event 6 */ +#define HRTIM_RST2R_TIMEVNT7 ((uint32_t)0x00040000) /*!< Timer event 7 */ +#define HRTIM_RST2R_TIMEVNT8 ((uint32_t)0x00080000) /*!< Timer event 8 */ +#define HRTIM_RST2R_TIMEVNT9 ((uint32_t)0x00100000) /*!< Timer event 9 */ + +#define HRTIM_RST2R_EXTVNT1 ((uint32_t)0x00200000) /*!< External event 1 */ +#define HRTIM_RST2R_EXTVNT2 ((uint32_t)0x00400000) /*!< External event 2 */ +#define HRTIM_RST2R_EXTVNT3 ((uint32_t)0x00800000) /*!< External event 3 */ +#define HRTIM_RST2R_EXTVNT4 ((uint32_t)0x01000000) /*!< External event 4 */ +#define HRTIM_RST2R_EXTVNT5 ((uint32_t)0x02000000) /*!< External event 5 */ +#define HRTIM_RST2R_EXTVNT6 ((uint32_t)0x04000000) /*!< External event 6 */ +#define HRTIM_RST2R_EXTVNT7 ((uint32_t)0x08000000) /*!< External event 7 */ +#define HRTIM_RST2R_EXTVNT8 ((uint32_t)0x10000000) /*!< External event 8 */ +#define HRTIM_RST2R_EXTVNT9 ((uint32_t)0x20000000) /*!< External event 9 */ +#define HRTIM_RST2R_EXTVNT10 ((uint32_t)0x40000000) /*!< External event 10 */ + +#define HRTIM_RST2R_UPDATE ((uint32_t)0x80000000) /*!< Register update (transfer preload to active) */ + +/**** Bit definition for Slave external event filtering register 1 ***********/ +#define HRTIM_EEFR1_EE1LTCH ((uint32_t)0x00000001) /*!< External Event 1 latch */ +#define HRTIM_EEFR1_EE1FLTR ((uint32_t)0x0000001E) /*!< External Event 1 filter mask */ +#define HRTIM_EEFR1_EE1FLTR_0 ((uint32_t)0x00000002) /*!< External Event 1 bit 0 */ +#define HRTIM_EEFR1_EE1FLTR_1 ((uint32_t)0x00000004) /*!< External Event 1 bit 1*/ +#define HRTIM_EEFR1_EE1FLTR_2 ((uint32_t)0x00000008) /*!< External Event 1 bit 2 */ +#define HRTIM_EEFR1_EE1FLTR_3 ((uint32_t)0x00000010) /*!< External Event 1 bit 3 */ + +#define HRTIM_EEFR1_EE2LTCH ((uint32_t)0x00000040) /*!< External Event 2 latch */ +#define HRTIM_EEFR1_EE2FLTR ((uint32_t)0x00000780) /*!< External Event 2 filter mask */ +#define HRTIM_EEFR1_EE2FLTR_0 ((uint32_t)0x00000080) /*!< External Event 2 bit 0 */ +#define HRTIM_EEFR1_EE2FLTR_1 ((uint32_t)0x00000100) /*!< External Event 2 bit 1*/ +#define HRTIM_EEFR1_EE2FLTR_2 ((uint32_t)0x00000200) /*!< External Event 2 bit 2 */ +#define HRTIM_EEFR1_EE2FLTR_3 ((uint32_t)0x00000400) /*!< External Event 2 bit 3 */ + +#define HRTIM_EEFR1_EE3LTCH ((uint32_t)0x00001000) /*!< External Event 3 latch */ +#define HRTIM_EEFR1_EE3FLTR ((uint32_t)0x0001E000) /*!< External Event 3 filter mask */ +#define HRTIM_EEFR1_EE3FLTR_0 ((uint32_t)0x00002000) /*!< External Event 3 bit 0 */ +#define HRTIM_EEFR1_EE3FLTR_1 ((uint32_t)0x00004000) /*!< External Event 3 bit 1*/ +#define HRTIM_EEFR1_EE3FLTR_2 ((uint32_t)0x00008000) /*!< External Event 3 bit 2 */ +#define HRTIM_EEFR1_EE3FLTR_3 ((uint32_t)0x00010000) /*!< External Event 3 bit 3 */ + +#define HRTIM_EEFR1_EE4LTCH ((uint32_t)0x00040000) /*!< External Event 4 latch */ +#define HRTIM_EEFR1_EE4FLTR ((uint32_t)0x00780000) /*!< External Event 4 filter mask */ +#define HRTIM_EEFR1_EE4FLTR_0 ((uint32_t)0x00080000) /*!< External Event 4 bit 0 */ +#define HRTIM_EEFR1_EE4FLTR_1 ((uint32_t)0x00100000) /*!< External Event 4 bit 1*/ +#define HRTIM_EEFR1_EE4FLTR_2 ((uint32_t)0x00200000) /*!< External Event 4 bit 2 */ +#define HRTIM_EEFR1_EE4FLTR_3 ((uint32_t)0x00400000) /*!< External Event 4 bit 3 */ + +#define HRTIM_EEFR1_EE5LTCH ((uint32_t)0x01000000) /*!< External Event 5 latch */ +#define HRTIM_EEFR1_EE5FLTR ((uint32_t)0x1E000000) /*!< External Event 5 filter mask */ +#define HRTIM_EEFR1_EE5FLTR_0 ((uint32_t)0x02000000) /*!< External Event 5 bit 0 */ +#define HRTIM_EEFR1_EE5FLTR_1 ((uint32_t)0x04000000) /*!< External Event 5 bit 1*/ +#define HRTIM_EEFR1_EE5FLTR_2 ((uint32_t)0x08000000) /*!< External Event 5 bit 2 */ +#define HRTIM_EEFR1_EE5FLTR_3 ((uint32_t)0x10000000) /*!< External Event 5 bit 3 */ + +/**** Bit definition for Slave external event filtering register 2 ***********/ +#define HRTIM_EEFR2_EE6LTCH ((uint32_t)0x00000001) /*!< External Event 6 latch */ +#define HRTIM_EEFR2_EE6FLTR ((uint32_t)0x0000001E) /*!< External Event 6 filter mask */ +#define HRTIM_EEFR2_EE6FLTR_0 ((uint32_t)0x00000002) /*!< External Event 6 bit 0 */ +#define HRTIM_EEFR2_EE6FLTR_1 ((uint32_t)0x00000004) /*!< External Event 6 bit 1*/ +#define HRTIM_EEFR2_EE6FLTR_2 ((uint32_t)0x00000008) /*!< External Event 6 bit 2 */ +#define HRTIM_EEFR2_EE6FLTR_3 ((uint32_t)0x00000010) /*!< External Event 6 bit 3 */ + +#define HRTIM_EEFR2_EE7LTCH ((uint32_t)0x00000040) /*!< External Event 7 latch */ +#define HRTIM_EEFR2_EE7FLTR ((uint32_t)0x00000780) /*!< External Event 7 filter mask */ +#define HRTIM_EEFR2_EE7FLTR_0 ((uint32_t)0x00000080) /*!< External Event 7 bit 0 */ +#define HRTIM_EEFR2_EE7FLTR_1 ((uint32_t)0x00000100) /*!< External Event 7 bit 1*/ +#define HRTIM_EEFR2_EE7FLTR_2 ((uint32_t)0x00000200) /*!< External Event 7 bit 2 */ +#define HRTIM_EEFR2_EE7FLTR_3 ((uint32_t)0x00000400) /*!< External Event 7 bit 3 */ + +#define HRTIM_EEFR2_EE8LTCH ((uint32_t)0x00001000) /*!< External Event 8 latch */ +#define HRTIM_EEFR2_EE8FLTR ((uint32_t)0x0001E000) /*!< External Event 8 filter mask */ +#define HRTIM_EEFR2_EE8FLTR_0 ((uint32_t)0x00002000) /*!< External Event 8 bit 0 */ +#define HRTIM_EEFR2_EE8FLTR_1 ((uint32_t)0x00004000) /*!< External Event 8 bit 1*/ +#define HRTIM_EEFR2_EE8FLTR_2 ((uint32_t)0x00008000) /*!< External Event 8 bit 2 */ +#define HRTIM_EEFR2_EE8FLTR_3 ((uint32_t)0x00010000) /*!< External Event 8 bit 3 */ + +#define HRTIM_EEFR2_EE9LTCH ((uint32_t)0x00040000) /*!< External Event 9 latch */ +#define HRTIM_EEFR2_EE9FLTR ((uint32_t)0x00780000) /*!< External Event 9 filter mask */ +#define HRTIM_EEFR2_EE9FLTR_0 ((uint32_t)0x00080000) /*!< External Event 9 bit 0 */ +#define HRTIM_EEFR2_EE9FLTR_1 ((uint32_t)0x00100000) /*!< External Event 9 bit 1*/ +#define HRTIM_EEFR2_EE9FLTR_2 ((uint32_t)0x00200000) /*!< External Event 9 bit 2 */ +#define HRTIM_EEFR2_EE9FLTR_3 ((uint32_t)0x00400000) /*!< External Event 9 bit 3 */ + +#define HRTIM_EEFR2_EE10LTCH ((uint32_t)0x01000000) /*!< External Event 10 latch */ +#define HRTIM_EEFR2_EE10FLTR ((uint32_t)0x1E000000) /*!< External Event 10 filter mask */ +#define HRTIM_EEFR2_EE10FLTR_0 ((uint32_t)0x02000000) /*!< External Event 10 bit 0 */ +#define HRTIM_EEFR2_EE10FLTR_1 ((uint32_t)0x04000000) /*!< External Event 10 bit 1*/ +#define HRTIM_EEFR2_EE10FLTR_2 ((uint32_t)0x08000000) /*!< External Event 10 bit 2 */ +#define HRTIM_EEFR2_EE10FLTR_3 ((uint32_t)0x10000000) /*!< External Event 10 bit 3 */ + +/**** Bit definition for Slave Timer reset register ***************************/ +#define HRTIM_RSTR_UPDATE ((uint32_t)0x00000002) /*!< Timer update */ +#define HRTIM_RSTR_CMP2 ((uint32_t)0x00000004) /*!< Timer compare2 */ +#define HRTIM_RSTR_CMP4 ((uint32_t)0x00000008) /*!< Timer compare4 */ + +#define HRTIM_RSTR_MSTPER ((uint32_t)0x00000010) /*!< Master period */ +#define HRTIM_RSTR_MSTCMP1 ((uint32_t)0x00000020) /*!< Master compare1 */ +#define HRTIM_RSTR_MSTCMP2 ((uint32_t)0x00000040) /*!< Master compare2 */ +#define HRTIM_RSTR_MSTCMP3 ((uint32_t)0x00000080) /*!< Master compare3 */ +#define HRTIM_RSTR_MSTCMP4 ((uint32_t)0x00000100) /*!< Master compare4 */ + +#define HRTIM_RSTR_EXTEVNT1 ((uint32_t)0x00000200) /*!< External event 1 */ +#define HRTIM_RSTR_EXTEVNT2 ((uint32_t)0x00000400) /*!< External event 2 */ +#define HRTIM_RSTR_EXTEVNT3 ((uint32_t)0x00000800) /*!< External event 3 */ +#define HRTIM_RSTR_EXTEVNT4 ((uint32_t)0x00001000) /*!< External event 4 */ +#define HRTIM_RSTR_EXTEVNT5 ((uint32_t)0x00002000) /*!< External event 5 */ +#define HRTIM_RSTR_EXTEVNT6 ((uint32_t)0x00004000) /*!< External event 6 */ +#define HRTIM_RSTR_EXTEVNT7 ((uint32_t)0x00008000) /*!< External event 7 */ +#define HRTIM_RSTR_EXTEVNT8 ((uint32_t)0x00010000) /*!< External event 8 */ +#define HRTIM_RSTR_EXTEVNT9 ((uint32_t)0x00020000) /*!< External event 9 */ +#define HRTIM_RSTR_EXTEVNT10 ((uint32_t)0x00040000) /*!< External event 10 */ + +#define HRTIM_RSTR_TIMBCMP1 ((uint32_t)0x00080000) /*!< Timer B compare 1 */ +#define HRTIM_RSTR_TIMBCMP2 ((uint32_t)0x00100000) /*!< Timer B compare 2 */ +#define HRTIM_RSTR_TIMBCMP4 ((uint32_t)0x00200000) /*!< Timer B compare 4 */ + +#define HRTIM_RSTR_TIMCCMP1 ((uint32_t)0x00400000) /*!< Timer C compare 1 */ +#define HRTIM_RSTR_TIMCCMP2 ((uint32_t)0x00800000) /*!< Timer C compare 2 */ +#define HRTIM_RSTR_TIMCCMP4 ((uint32_t)0x01000000) /*!< Timer C compare 4 */ + +#define HRTIM_RSTR_TIMDCMP1 ((uint32_t)0x02000000) /*!< Timer D compare 1 */ +#define HRTIM_RSTR_TIMDCMP2 ((uint32_t)0x04000000) /*!< Timer D compare 2 */ +#define HRTIM_RSTR_TIMDCMP4 ((uint32_t)0x08000000) /*!< Timer D compare 4 */ + +#define HRTIM_RSTR_TIMECMP1 ((uint32_t)0x10000000) /*!< Timer E compare 1 */ +#define HRTIM_RSTR_TIMECMP2 ((uint32_t)0x20000000) /*!< Timer E compare 2 */ +#define HRTIM_RSTR_TIMECMP4 ((uint32_t)0x40000000) /*!< Timer E compare 4 */ + +/**** Bit definition for Slave Timer Chopper register *************************/ +#define HRTIM_CHPR_CARFRQ ((uint32_t)0x0000000F) /*!< Timer carrier frequency value */ +#define HRTIM_CHPR_CARFRQ_0 ((uint32_t)0x00000001) /*!< Timer carrier frequency value bit 0 */ +#define HRTIM_CHPR_CARFRQ_1 ((uint32_t)0x00000002) /*!< Timer carrier frequency value bit 1 */ +#define HRTIM_CHPR_CARFRQ_2 ((uint32_t)0x00000004) /*!< Timer carrier frequency value bit 2 */ +#define HRTIM_CHPR_CARFRQ_3 ((uint32_t)0x00000008) /*!< Timer carrier frequency value bit 3 */ + +#define HRTIM_CHPR_CARDTY ((uint32_t)0x00000070) /*!< Timer chopper duty cycle value */ +#define HRTIM_CHPR_CARDTY_0 ((uint32_t)0x00000010) /*!< Timer chopper duty cycle value bit 0 */ +#define HRTIM_CHPR_CARDTY_1 ((uint32_t)0x00000020) /*!< Timer chopper duty cycle value bit 1 */ +#define HRTIM_CHPR_CARDTY_2 ((uint32_t)0x00000040) /*!< Timer chopper duty cycle value bit 2 */ + +#define HRTIM_CHPR_STRPW ((uint32_t)0x00000780) /*!< Timer start pulse width value */ +#define HRTIM_CHPR_STRPW_0 ((uint32_t)0x00000080) /*!< Timer start pulse width value bit 0 */ +#define HRTIM_CHPR_STRPW_1 ((uint32_t)0x00000100) /*!< Timer start pulse width value bit 1 */ +#define HRTIM_CHPR_STRPW_2 ((uint32_t)0x00000200) /*!< Timer start pulse width value bit 2 */ +#define HRTIM_CHPR_STRPW_3 ((uint32_t)0x00000400) /*!< Timer start pulse width value bit 3 */ + +/**** Bit definition for Slave Timer Capture 1 control register ***************/ +#define HRTIM_CPT1CR_SWCPT ((uint32_t)0x00000001) /*!< Software capture */ +#define HRTIM_CPT1CR_UPDCPT ((uint32_t)0x00000002) /*!< Update capture */ +#define HRTIM_CPT1CR_EXEV1CPT ((uint32_t)0x00000004) /*!< External event 1 capture */ +#define HRTIM_CPT1CR_EXEV2CPT ((uint32_t)0x00000008) /*!< External event 2 capture */ +#define HRTIM_CPT1CR_EXEV3CPT ((uint32_t)0x00000010) /*!< External event 3 capture */ +#define HRTIM_CPT1CR_EXEV4CPT ((uint32_t)0x00000020) /*!< External event 4 capture */ +#define HRTIM_CPT1CR_EXEV5CPT ((uint32_t)0x00000040) /*!< External event 5 capture */ +#define HRTIM_CPT1CR_EXEV6CPT ((uint32_t)0x00000080) /*!< External event 6 capture */ +#define HRTIM_CPT1CR_EXEV7CPT ((uint32_t)0x00000100) /*!< External event 7 capture */ +#define HRTIM_CPT1CR_EXEV8CPT ((uint32_t)0x00000200) /*!< External event 8 capture */ +#define HRTIM_CPT1CR_EXEV9CPT ((uint32_t)0x00000400) /*!< External event 9 capture */ +#define HRTIM_CPT1CR_EXEV10CPT ((uint32_t)0x00000800) /*!< External event 10 capture */ + +#define HRTIM_CPT1CR_TA1SET ((uint32_t)0x00001000) /*!< Timer A output 1 set */ +#define HRTIM_CPT1CR_TA1RST ((uint32_t)0x00002000) /*!< Timer A output 1 reset */ +#define HRTIM_CPT1CR_TA1CMP1 ((uint32_t)0x00004000) /*!< Timer A compare 1 */ +#define HRTIM_CPT1CR_TA1CMP2 ((uint32_t)0x00008000) /*!< Timer A compare 2 */ + +#define HRTIM_CPT1CR_TB1SET ((uint32_t)0x00010000) /*!< Timer B output 1 set */ +#define HRTIM_CPT1CR_TB1RST ((uint32_t)0x00020000) /*!< Timer B output 1 reset */ +#define HRTIM_CPT1CR_TB1CMP1 ((uint32_t)0x00040000) /*!< Timer B compare 1 */ +#define HRTIM_CPT1CR_TB1CMP2 ((uint32_t)0x00080000) /*!< Timer B compare 2 */ + +#define HRTIM_CPT1CR_TC1SET ((uint32_t)0x00100000) /*!< Timer C output 1 set */ +#define HRTIM_CPT1CR_TC1RST ((uint32_t)0x00200000) /*!< Timer C output 1 reset */ +#define HRTIM_CPT1CR_TC1CMP1 ((uint32_t)0x00400000) /*!< Timer C compare 1 */ +#define HRTIM_CPT1CR_TC1CMP2 ((uint32_t)0x00800000) /*!< Timer C compare 2 */ + +#define HRTIM_CPT1CR_TD1SET ((uint32_t)0x01000000) /*!< Timer D output 1 set */ +#define HRTIM_CPT1CR_TD1RST ((uint32_t)0x02000000) /*!< Timer D output 1 reset */ +#define HRTIM_CPT1CR_TD1CMP1 ((uint32_t)0x04000000) /*!< Timer D compare 1 */ +#define HRTIM_CPT1CR_TD1CMP2 ((uint32_t)0x08000000) /*!< Timer D compare 2 */ + +#define HRTIM_CPT1CR_TE1SET ((uint32_t)0x10000000) /*!< Timer E output 1 set */ +#define HRTIM_CPT1CR_TE1RST ((uint32_t)0x20000000) /*!< Timer E output 1 reset */ +#define HRTIM_CPT1CR_TE1CMP1 ((uint32_t)0x40000000) /*!< Timer E compare 1 */ +#define HRTIM_CPT1CR_TE1CMP2 ((uint32_t)0x80000000) /*!< Timer E compare 2 */ + +/**** Bit definition for Slave Timer Capture 2 control register ***************/ +#define HRTIM_CPT2CR_SWCPT ((uint32_t)0x00000001) /*!< Software capture */ +#define HRTIM_CPT2CR_UPDCPT ((uint32_t)0x00000002) /*!< Update capture */ +#define HRTIM_CPT2CR_EXEV1CPT ((uint32_t)0x00000004) /*!< External event 1 capture */ +#define HRTIM_CPT2CR_EXEV2CPT ((uint32_t)0x00000008) /*!< External event 2 capture */ +#define HRTIM_CPT2CR_EXEV3CPT ((uint32_t)0x00000010) /*!< External event 3 capture */ +#define HRTIM_CPT2CR_EXEV4CPT ((uint32_t)0x00000020) /*!< External event 4 capture */ +#define HRTIM_CPT2CR_EXEV5CPT ((uint32_t)0x00000040) /*!< External event 5 capture */ +#define HRTIM_CPT2CR_EXEV6CPT ((uint32_t)0x00000080) /*!< External event 6 capture */ +#define HRTIM_CPT2CR_EXEV7CPT ((uint32_t)0x00000100) /*!< External event 7 capture */ +#define HRTIM_CPT2CR_EXEV8CPT ((uint32_t)0x00000200) /*!< External event 8 capture */ +#define HRTIM_CPT2CR_EXEV9CPT ((uint32_t)0x00000400) /*!< External event 9 capture */ +#define HRTIM_CPT2CR_EXEV10CPT ((uint32_t)0x00000800) /*!< External event 10 capture */ + +#define HRTIM_CPT2CR_TA1SET ((uint32_t)0x00001000) /*!< Timer A output 1 set */ +#define HRTIM_CPT2CR_TA1RST ((uint32_t)0x00002000) /*!< Timer A output 1 reset */ +#define HRTIM_CPT2CR_TA1CMP1 ((uint32_t)0x00004000) /*!< Timer A compare 1 */ +#define HRTIM_CPT2CR_TA1CMP2 ((uint32_t)0x00008000) /*!< Timer A compare 2 */ + +#define HRTIM_CPT2CR_TB1SET ((uint32_t)0x00010000) /*!< Timer B output 1 set */ +#define HRTIM_CPT2CR_TB1RST ((uint32_t)0x00020000) /*!< Timer B output 1 reset */ +#define HRTIM_CPT2CR_TB1CMP1 ((uint32_t)0x00040000) /*!< Timer B compare 1 */ +#define HRTIM_CPT2CR_TB1CMP2 ((uint32_t)0x00080000) /*!< Timer B compare 2 */ + +#define HRTIM_CPT2CR_TC1SET ((uint32_t)0x00100000) /*!< Timer C output 1 set */ +#define HRTIM_CPT2CR_TC1RST ((uint32_t)0x00200000) /*!< Timer C output 1 reset */ +#define HRTIM_CPT2CR_TC1CMP1 ((uint32_t)0x00400000) /*!< Timer C compare 1 */ +#define HRTIM_CPT2CR_TC1CMP2 ((uint32_t)0x00800000) /*!< Timer C compare 2 */ + +#define HRTIM_CPT2CR_TD1SET ((uint32_t)0x01000000) /*!< Timer D output 1 set */ +#define HRTIM_CPT2CR_TD1RST ((uint32_t)0x02000000) /*!< Timer D output 1 reset */ +#define HRTIM_CPT2CR_TD1CMP1 ((uint32_t)0x04000000) /*!< Timer D compare 1 */ +#define HRTIM_CPT2CR_TD1CMP2 ((uint32_t)0x08000000) /*!< Timer D compare 2 */ + +#define HRTIM_CPT2CR_TE1SET ((uint32_t)0x10000000) /*!< Timer E output 1 set */ +#define HRTIM_CPT2CR_TE1RST ((uint32_t)0x20000000) /*!< Timer E output 1 reset */ +#define HRTIM_CPT2CR_TE1CMP1 ((uint32_t)0x40000000) /*!< Timer E compare 1 */ +#define HRTIM_CPT2CR_TE1CMP2 ((uint32_t)0x80000000) /*!< Timer E compare 2 */ + +/**** Bit definition for Slave Timer Output register **************************/ +#define HRTIM_OUTR_POL1 ((uint32_t)0x00000002) /*!< Slave output 1 polarity */ +#define HRTIM_OUTR_IDLM1 ((uint32_t)0x00000004) /*!< Slave output 1 idle mode */ +#define HRTIM_OUTR_IDLES1 ((uint32_t)0x00000008) /*!< Slave output 1 idle state */ +#define HRTIM_OUTR_FAULT1 ((uint32_t)0x00000030) /*!< Slave output 1 fault state */ +#define HRTIM_OUTR_FAULT1_0 ((uint32_t)0x00000010) /*!< Slave output 1 fault state bit 0 */ +#define HRTIM_OUTR_FAULT1_1 ((uint32_t)0x00000020) /*!< Slave output 1 fault state bit 1 */ +#define HRTIM_OUTR_CHP1 ((uint32_t)0x00000040) /*!< Slave output 1 chopper enable */ +#define HRTIM_OUTR_DIDL1 ((uint32_t)0x00000080) /*!< Slave output 1 dead time idle */ + +#define HRTIM_OUTR_DTEN ((uint32_t)0x00000100) /*!< Slave output deadtime enable */ +#define HRTIM_OUTR_DLYPRTEN ((uint32_t)0x00000200) /*!< Slave output delay protection enable */ +#define HRTIM_OUTR_DLYPRT ((uint32_t)0x00001C00) /*!< Slave output delay protection */ +#define HRTIM_OUTR_DLYPRT_0 ((uint32_t)0x00000400) /*!< Slave output delay protection bit 0 */ +#define HRTIM_OUTR_DLYPRT_1 ((uint32_t)0x00000800) /*!< Slave output delay protection bit 1 */ +#define HRTIM_OUTR_DLYPRT_2 ((uint32_t)0x00001000) /*!< Slave output delay protection bit 2 */ + +#define HRTIM_OUTR_POL2 ((uint32_t)0x00020000) /*!< Slave output 2 polarity */ +#define HRTIM_OUTR_IDLM2 ((uint32_t)0x00040000) /*!< Slave output 2 idle mode */ +#define HRTIM_OUTR_IDLES2 ((uint32_t)0x00080000) /*!< Slave output 2 idle state */ +#define HRTIM_OUTR_FAULT2 ((uint32_t)0x00300000) /*!< Slave output 2 fault state */ +#define HRTIM_OUTR_FAULT2_0 ((uint32_t)0x00100000) /*!< Slave output 2 fault state bit 0 */ +#define HRTIM_OUTR_FAULT2_1 ((uint32_t)0x00200000) /*!< Slave output 2 fault state bit 1 */ +#define HRTIM_OUTR_CHP2 ((uint32_t)0x00400000) /*!< Slave output 2 chopper enable */ +#define HRTIM_OUTR_DIDL2 ((uint32_t)0x00800000) /*!< Slave output 2 dead time idle */ + +/**** Bit definition for Slave Timer Fault register ***************************/ +#define HRTIM_FLTR_FLT1EN ((uint32_t)0x00000001) /*!< Fault 1 enable */ +#define HRTIM_FLTR_FLT2EN ((uint32_t)0x00000002) /*!< Fault 2 enable */ +#define HRTIM_FLTR_FLT3EN ((uint32_t)0x00000004) /*!< Fault 3 enable */ +#define HRTIM_FLTR_FLT4EN ((uint32_t)0x00000008) /*!< Fault 4 enable */ +#define HRTIM_FLTR_FLT5EN ((uint32_t)0x00000010) /*!< Fault 5 enable */ +#define HRTIM_FLTR_FLTCLK ((uint32_t)0x80000000) /*!< Fault sources lock */ + +/**** Bit definition for Common HRTIM Timer control register 1 ****************/ +#define HRTIM_CR1_MUDIS ((uint32_t)0x00000001) /*!< Master update disable*/ +#define HRTIM_CR1_TAUDIS ((uint32_t)0x00000002) /*!< Timer A update disable*/ +#define HRTIM_CR1_TBUDIS ((uint32_t)0x00000004) /*!< Timer B update disable*/ +#define HRTIM_CR1_TCUDIS ((uint32_t)0x00000008) /*!< Timer C update disable*/ +#define HRTIM_CR1_TDUDIS ((uint32_t)0x00000010) /*!< Timer D update disable*/ +#define HRTIM_CR1_TEUDIS ((uint32_t)0x00000020) /*!< Timer E update disable*/ +#define HRTIM_CR1_ADC1USRC ((uint32_t)0x00070000) /*!< ADC Trigger 1 update source */ +#define HRTIM_CR1_ADC1USRC_0 ((uint32_t)0x00010000) /*!< ADC Trigger 1 update source bit 0 */ +#define HRTIM_CR1_ADC1USRC_1 ((uint32_t)0x00020000) /*!< ADC Trigger 1 update source bit 1 */ +#define HRTIM_CR1_ADC1USRC_2 ((uint32_t)0x00040000) /*!< ADC Trigger 1 update source bit 2 */ +#define HRTIM_CR1_ADC2USRC ((uint32_t)0x00380000) /*!< ADC Trigger 2 update source */ +#define HRTIM_CR1_ADC2USRC_0 ((uint32_t)0x00080000) /*!< ADC Trigger 2 update source bit 0 */ +#define HRTIM_CR1_ADC2USRC_1 ((uint32_t)0x00100000) /*!< ADC Trigger 2 update source bit 1 */ +#define HRTIM_CR1_ADC2USRC_2 ((uint32_t)0x00200000) /*!< ADC Trigger 2 update source bit 2 */ +#define HRTIM_CR1_ADC3USRC ((uint32_t)0x01C00000) /*!< ADC Trigger 3 update source */ +#define HRTIM_CR1_ADC3USRC_0 ((uint32_t)0x00400000) /*!< ADC Trigger 3 update source bit 0 */ +#define HRTIM_CR1_ADC3USRC_1 ((uint32_t)0x00800000) /*!< ADC Trigger 3 update source bit 1 */ +#define HRTIM_CR1_ADC3USRC_2 ((uint32_t)0x01000000) /*!< ADC Trigger 3 update source bit 2 */ +#define HRTIM_CR1_ADC4USRC ((uint32_t)0x0E000000) /*!< ADC Trigger 4 update source */ +#define HRTIM_CR1_ADC4USRC_0 ((uint32_t)0x02000000) /*!< ADC Trigger 4 update source bit 0 */ +#define HRTIM_CR1_ADC4USRC_1 ((uint32_t)0x04000000) /*!< ADC Trigger 4 update source bit 1 */ +#define HRTIM_CR1_ADC4USRC_2 ((uint32_t)0x0800000) /*!< ADC Trigger 4 update source bit 2 */ + +/**** Bit definition for Common HRTIM Timer control register 2 ****************/ +#define HRTIM_CR2_MSWU ((uint32_t)0x00000001) /*!< Master software update */ +#define HRTIM_CR2_TASWU ((uint32_t)0x00000002) /*!< Timer A software update */ +#define HRTIM_CR2_TBSWU ((uint32_t)0x00000004) /*!< Timer B software update */ +#define HRTIM_CR2_TCSWU ((uint32_t)0x00000008) /*!< Timer C software update */ +#define HRTIM_CR2_TDSWU ((uint32_t)0x00000010) /*!< Timer D software update */ +#define HRTIM_CR2_TESWU ((uint32_t)0x00000020) /*!< Timer E software update */ +#define HRTIM_CR2_MRST ((uint32_t)0x00000100) /*!< Master count software reset */ +#define HRTIM_CR2_TARST ((uint32_t)0x00000200) /*!< Timer A count software reset */ +#define HRTIM_CR2_TBRST ((uint32_t)0x00000400) /*!< Timer B count software reset */ +#define HRTIM_CR2_TCRST ((uint32_t)0x00000800) /*!< Timer C count software reset */ +#define HRTIM_CR2_TDRST ((uint32_t)0x00001000) /*!< Timer D count software reset */ +#define HRTIM_CR2_TERST ((uint32_t)0x00002000) /*!< Timer E count software reset */ + +/**** Bit definition for Common HRTIM Timer interrupt status register *********/ +#define HRTIM_ISR_FLT1 ((uint32_t)0x00000001) /*!< Fault 1 interrupt flag */ +#define HRTIM_ISR_FLT2 ((uint32_t)0x00000002) /*!< Fault 2 interrupt flag */ +#define HRTIM_ISR_FLT3 ((uint32_t)0x00000004) /*!< Fault 3 interrupt flag */ +#define HRTIM_ISR_FLT4 ((uint32_t)0x00000008) /*!< Fault 4 interrupt flag */ +#define HRTIM_ISR_FLT5 ((uint32_t)0x00000010) /*!< Fault 5 interrupt flag */ +#define HRTIM_ISR_SYSFLT ((uint32_t)0x00000020) /*!< System Fault interrupt flag */ +#define HRTIM_ISR_DLLRDY ((uint32_t)0x00010000) /*!< DLL ready interrupt flag */ +#define HRTIM_ISR_BMPER ((uint32_t)0x00020000) /*!< Burst mode period interrupt flag */ + +/**** Bit definition for Common HRTIM Timer interrupt clear register **********/ +#define HRTIM_ICR_FLT1C ((uint32_t)0x00000001) /*!< Fault 1 interrupt flag clear */ +#define HRTIM_ICR_FLT2C ((uint32_t)0x00000002) /*!< Fault 2 interrupt flag clear */ +#define HRTIM_ICR_FLT3C ((uint32_t)0x00000004) /*!< Fault 3 interrupt flag clear */ +#define HRTIM_ICR_FLT4C ((uint32_t)0x00000008) /*!< Fault 4 interrupt flag clear */ +#define HRTIM_ICR_FLT5C ((uint32_t)0x00000010) /*!< Fault 5 interrupt flag clear */ +#define HRTIM_ICR_SYSFLTC ((uint32_t)0x00000020) /*!< System Fault interrupt flag clear */ +#define HRTIM_ICR_DLLRDYC ((uint32_t)0x00010000) /*!< DLL ready interrupt flag clear */ +#define HRTIM_ICR_BMPERC ((uint32_t)0x00020000) /*!< Burst mode period interrupt flag clear */ + +/**** Bit definition for Common HRTIM Timer interrupt enable register *********/ +#define HRTIM_IER_FLT1 ((uint32_t)0x00000001) /*!< Fault 1 interrupt enable */ +#define HRTIM_IER_FLT2 ((uint32_t)0x00000002) /*!< Fault 2 interrupt enable */ +#define HRTIM_IER_FLT3 ((uint32_t)0x00000004) /*!< Fault 3 interrupt enable */ +#define HRTIM_IER_FLT4 ((uint32_t)0x00000008) /*!< Fault 4 interrupt enable */ +#define HRTIM_IER_FLT5 ((uint32_t)0x00000010) /*!< Fault 5 interrupt enable */ +#define HRTIM_IER_SYSFLT ((uint32_t)0x00000020) /*!< System Fault interrupt enable */ +#define HRTIM_IER_DLLRDY ((uint32_t)0x00010000) /*!< DLL ready interrupt enable */ +#define HRTIM_IER_BMPER ((uint32_t)0x00020000) /*!< Burst mode period interrupt enable */ + +/**** Bit definition for Common HRTIM Timer output enable register ************/ +#define HRTIM_OENR_TA1OEN ((uint32_t)0x00000001) /*!< Timer A Output 1 enable */ +#define HRTIM_OENR_TA2OEN ((uint32_t)0x00000002) /*!< Timer A Output 2 enable */ +#define HRTIM_OENR_TB1OEN ((uint32_t)0x00000004) /*!< Timer B Output 1 enable */ +#define HRTIM_OENR_TB2OEN ((uint32_t)0x00000008) /*!< Timer B Output 2 enable */ +#define HRTIM_OENR_TC1OEN ((uint32_t)0x00000010) /*!< Timer C Output 1 enable */ +#define HRTIM_OENR_TC2OEN ((uint32_t)0x00000020) /*!< Timer C Output 2 enable */ +#define HRTIM_OENR_TD1OEN ((uint32_t)0x00000040) /*!< Timer D Output 1 enable */ +#define HRTIM_OENR_TD2OEN ((uint32_t)0x00000080) /*!< Timer D Output 2 enable */ +#define HRTIM_OENR_TE1OEN ((uint32_t)0x00000100) /*!< Timer E Output 1 enable */ +#define HRTIM_OENR_TE2OEN ((uint32_t)0x00000200) /*!< Timer E Output 2 enable */ + +/**** Bit definition for Common HRTIM Timer output disable register ***********/ +#define HRTIM_ODISR_TA1ODIS ((uint32_t)0x00000001) /*!< Timer A Output 1 disable */ +#define HRTIM_ODISR_TA2ODIS ((uint32_t)0x00000002) /*!< Timer A Output 2 disable */ +#define HRTIM_ODISR_TB1ODIS ((uint32_t)0x00000004) /*!< Timer B Output 1 disable */ +#define HRTIM_ODISR_TB2ODIS ((uint32_t)0x00000008) /*!< Timer B Output 2 disable */ +#define HRTIM_ODISR_TC1ODIS ((uint32_t)0x00000010) /*!< Timer C Output 1 disable */ +#define HRTIM_ODISR_TC2ODIS ((uint32_t)0x00000020) /*!< Timer C Output 2 disable */ +#define HRTIM_ODISR_TD1ODIS ((uint32_t)0x00000040) /*!< Timer D Output 1 disable */ +#define HRTIM_ODISR_TD2ODIS ((uint32_t)0x00000080) /*!< Timer D Output 2 disable */ +#define HRTIM_ODISR_TE1ODIS ((uint32_t)0x00000100) /*!< Timer E Output 1 disable */ +#define HRTIM_ODISR_TE2ODIS ((uint32_t)0x00000200) /*!< Timer E Output 2 disable */ + +/**** Bit definition for Common HRTIM Timer output disable status register *****/ +#define HRTIM_ODSR_TA1ODS ((uint32_t)0x00000001) /*!< Timer A Output 1 disable status */ +#define HRTIM_ODSR_TA2ODS ((uint32_t)0x00000002) /*!< Timer A Output 2 disable status */ +#define HRTIM_ODSR_TB1ODS ((uint32_t)0x00000004) /*!< Timer B Output 1 disable status */ +#define HRTIM_ODSR_TB2ODS ((uint32_t)0x00000008) /*!< Timer B Output 2 disable status */ +#define HRTIM_ODSR_TC1ODS ((uint32_t)0x00000010) /*!< Timer C Output 1 disable status */ +#define HRTIM_ODSR_TC2ODS ((uint32_t)0x00000020) /*!< Timer C Output 2 disable status */ +#define HRTIM_ODSR_TD1ODS ((uint32_t)0x00000040) /*!< Timer D Output 1 disable status */ +#define HRTIM_ODSR_TD2ODS ((uint32_t)0x00000080) /*!< Timer D Output 2 disable status */ +#define HRTIM_ODSR_TE1ODS ((uint32_t)0x00000100) /*!< Timer E Output 1 disable status */ +#define HRTIM_ODSR_TE2ODS ((uint32_t)0x00000200) /*!< Timer E Output 2 disable status */ + +/**** Bit definition for Common HRTIM Timer Burst mode control register ********/ +#define HRTIM_BMCR_BME ((uint32_t)0x00000001) /*!< Burst mode enable */ +#define HRTIM_BMCR_BMOM ((uint32_t)0x00000002) /*!< Burst mode operating mode */ +#define HRTIM_BMCR_BMCLK ((uint32_t)0x0000003C) /*!< Burst mode clock source */ +#define HRTIM_BMCR_BMCLK_0 ((uint32_t)0x00000004) /*!< Burst mode clock source bit 0 */ +#define HRTIM_BMCR_BMCLK_1 ((uint32_t)0x00000008) /*!< Burst mode clock source bit 1 */ +#define HRTIM_BMCR_BMCLK_2 ((uint32_t)0x00000010) /*!< Burst mode clock source bit 2 */ +#define HRTIM_BMCR_BMCLK_3 ((uint32_t)0x00000020) /*!< Burst mode clock source bit 3 */ +#define HRTIM_BMCR_BMPSC ((uint32_t)0x000003C0) /*!< Burst mode prescaler */ +#define HRTIM_BMCR_BMPSC_0 ((uint32_t)0x00000040) /*!< Burst mode prescaler bit 0 */ +#define HRTIM_BMCR_BMPSC_1 ((uint32_t)0x00000080) /*!< Burst mode prescaler bit 1 */ +#define HRTIM_BMCR_BMPSC_2 ((uint32_t)0x00000100) /*!< Burst mode prescaler bit 2 */ +#define HRTIM_BMCR_BMPSC_3 ((uint32_t)0x00000200) /*!< Burst mode prescaler bit 3 */ +#define HRTIM_BMCR_BMPREN ((uint32_t)0x00000400) /*!< Burst mode Preload bit */ +#define HRTIM_BMCR_MTBM ((uint32_t)0x00010000) /*!< Master Timer Burst mode */ +#define HRTIM_BMCR_TABM ((uint32_t)0x00020000) /*!< Timer A Burst mode */ +#define HRTIM_BMCR_TBBM ((uint32_t)0x00040000) /*!< Timer B Burst mode */ +#define HRTIM_BMCR_TCBM ((uint32_t)0x00080000) /*!< Timer C Burst mode */ +#define HRTIM_BMCR_TDBM ((uint32_t)0x00100000) /*!< Timer D Burst mode */ +#define HRTIM_BMCR_TEBM ((uint32_t)0x00200000) /*!< Timer E Burst mode */ +#define HRTIM_BMCR_BMSTAT ((uint32_t)0x80000000) /*!< Burst mode status */ + +/**** Bit definition for Common HRTIM Timer Burst mode Trigger register *******/ +#define HRTIM_BMTRGR_SW ((uint32_t)0x00000001) /*!< Software start */ +#define HRTIM_BMTRGR_MSTRST ((uint32_t)0x00000002) /*!< Master reset */ +#define HRTIM_BMTRGR_MSTREP ((uint32_t)0x00000004) /*!< Master repetition */ +#define HRTIM_BMTRGR_MSTCMP1 ((uint32_t)0x00000008) /*!< Master compare 1 */ +#define HRTIM_BMTRGR_MSTCMP2 ((uint32_t)0x00000010) /*!< Master compare 2 */ +#define HRTIM_BMTRGR_MSTCMP3 ((uint32_t)0x00000020) /*!< Master compare 3 */ +#define HRTIM_BMTRGR_MSTCMP4 ((uint32_t)0x00000040) /*!< Master compare 4 */ +#define HRTIM_BMTRGR_TARST ((uint32_t)0x00000080) /*!< Timer A reset */ +#define HRTIM_BMTRGR_TAREP ((uint32_t)0x00000100) /*!< Timer A repetition */ +#define HRTIM_BMTRGR_TACMP1 ((uint32_t)0x00000200) /*!< Timer A compare 1 */ +#define HRTIM_BMTRGR_TACMP2 ((uint32_t)0x00000400) /*!< Timer A compare 2 */ +#define HRTIM_BMTRGR_TBRST ((uint32_t)0x00000800) /*!< Timer B reset */ +#define HRTIM_BMTRGR_TBREP ((uint32_t)0x00001000) /*!< Timer B repetition */ +#define HRTIM_BMTRGR_TBCMP1 ((uint32_t)0x00002000) /*!< Timer B compare 1 */ +#define HRTIM_BMTRGR_TBCMP2 ((uint32_t)0x00004000) /*!< Timer B compare 2 */ +#define HRTIM_BMTRGR_TCRST ((uint32_t)0x00008000) /*!< Timer C reset */ +#define HRTIM_BMTRGR_TCREP ((uint32_t)0x00010000) /*!< Timer C repetition */ +#define HRTIM_BMTRGR_TCCMP1 ((uint32_t)0x00020000) /*!< Timer C compare 1 */ +#define HRTIM_BMTRGR_TCCMP2 ((uint32_t)0x00040000) /*!< Timer C compare 2 */ +#define HRTIM_BMTRGR_TDRST ((uint32_t)0x00080000) /*!< Timer D reset */ +#define HRTIM_BMTRGR_TDREP ((uint32_t)0x00100000) /*!< Timer D repetition */ +#define HRTIM_BMTRGR_TDCMP1 ((uint32_t)0x00200000) /*!< Timer D compare 1 */ +#define HRTIM_BMTRGR_TDCMP2 ((uint32_t)0x00400000) /*!< Timer D compare 2 */ +#define HRTIM_BMTRGR_TERST ((uint32_t)0x00800000) /*!< Timer E reset */ +#define HRTIM_BMTRGR_TEREP ((uint32_t)0x01000000) /*!< Timer E repetition */ +#define HRTIM_BMTRGR_TECMP1 ((uint32_t)0x02000000) /*!< Timer E compare 1 */ +#define HRTIM_BMTRGR_TECMP2 ((uint32_t)0x04000000) /*!< Timer E compare 2 */ +#define HRTIM_BMTRGR_TAEEV7 ((uint32_t)0x08000000) /*!< Timer A period following External Event7 */ +#define HRTIM_BMTRGR_TDEEV8 ((uint32_t)0x10000000) /*!< Timer D period following External Event8 */ +#define HRTIM_BMTRGR_EEV7 ((uint32_t)0x20000000) /*!< External Event 7 */ +#define HRTIM_BMTRGR_EEV8 ((uint32_t)0x40000000) /*!< External Event 8 */ +#define HRTIM_BMTRGR_OCHPEV ((uint32_t)0x80000000) /*!< on-chip Event */ + +/******************* Bit definition for HRTIM_BMCMPR register ***************/ +#define HRTIM_BMCMPR_BMCMPR ((uint32_t)0x0000FFFF) /*!<!<Burst Compare Value */ + +/******************* Bit definition for HRTIM_BMPER register ****************/ +#define HRTIM_BMPER_BMPER ((uint32_t)0x0000FFFF) /*!<!<Burst period Value */ + +/******************* Bit definition for HRTIM_EECR1 register ****************/ +#define HRTIM_EECR1_EE1SRC ((uint32_t)0x00000003) /*!< External event 1 source */ +#define HRTIM_EECR1_EE1SRC_0 ((uint32_t)0x00000001) /*!< External event 1 source bit 0 */ +#define HRTIM_EECR1_EE1SRC_1 ((uint32_t)0x00000002) /*!< External event 1 source bit 1 */ +#define HRTIM_EECR1_EE1POL ((uint32_t)0x00000004) /*!< External event 1 Polarity */ +#define HRTIM_EECR1_EE1SNS ((uint32_t)0x00000018) /*!< External event 1 sensitivity */ +#define HRTIM_EECR1_EE1SNS_0 ((uint32_t)0x00000008) /*!< External event 1 sensitivity bit 0 */ +#define HRTIM_EECR1_EE1SNS_1 ((uint32_t)0x00000010) /*!< External event 1 sensitivity bit 1 */ +#define HRTIM_EECR1_EE1FAST ((uint32_t)0x00000020) /*!< External event 1 Fast mode */ + +#define HRTIM_EECR1_EE2SRC ((uint32_t)0x000000C0) /*!< External event 2 source */ +#define HRTIM_EECR1_EE2SRC_0 ((uint32_t)0x00000040) /*!< External event 2 source bit 0 */ +#define HRTIM_EECR1_EE2SRC_1 ((uint32_t)0x00000080) /*!< External event 2 source bit 1 */ +#define HRTIM_EECR1_EE2POL ((uint32_t)0x00000100) /*!< External event 2 Polarity */ +#define HRTIM_EECR1_EE2SNS ((uint32_t)0x00000600) /*!< External event 2 sensitivity */ +#define HRTIM_EECR1_EE2SNS_0 ((uint32_t)0x00000200) /*!< External event 2 sensitivity bit 0 */ +#define HRTIM_EECR1_EE2SNS_1 ((uint32_t)0x00000400) /*!< External event 2 sensitivity bit 1 */ +#define HRTIM_EECR1_EE2FAST ((uint32_t)0x00000800) /*!< External event 2 Fast mode */ + +#define HRTIM_EECR1_EE3SRC ((uint32_t)0x00003000) /*!< External event 3 source */ +#define HRTIM_EECR1_EE3SRC_0 ((uint32_t)0x00001000) /*!< External event 3 source bit 0 */ +#define HRTIM_EECR1_EE3SRC_1 ((uint32_t)0x00002000) /*!< External event 3 source bit 1 */ +#define HRTIM_EECR1_EE3POL ((uint32_t)0x00004000) /*!< External event 3 Polarity */ +#define HRTIM_EECR1_EE3SNS ((uint32_t)0x00018000) /*!< External event 3 sensitivity */ +#define HRTIM_EECR1_EE3SNS_0 ((uint32_t)0x00008000) /*!< External event 3 sensitivity bit 0 */ +#define HRTIM_EECR1_EE3SNS_1 ((uint32_t)0x00010000) /*!< External event 3 sensitivity bit 1 */ +#define HRTIM_EECR1_EE3FAST ((uint32_t)0x00020000) /*!< External event 3 Fast mode */ + +#define HRTIM_EECR1_EE4SRC ((uint32_t)0x000C0000) /*!< External event 4 source */ +#define HRTIM_EECR1_EE4SRC_0 ((uint32_t)0x00040000) /*!< External event 4 source bit 0 */ +#define HRTIM_EECR1_EE4SRC_1 ((uint32_t)0x00080000) /*!< External event 4 source bit 1 */ +#define HRTIM_EECR1_EE4POL ((uint32_t)0x00100000) /*!< External event 4 Polarity */ +#define HRTIM_EECR1_EE4SNS ((uint32_t)0x00600000) /*!< External event 4 sensitivity */ +#define HRTIM_EECR1_EE4SNS_0 ((uint32_t)0x00200000) /*!< External event 4 sensitivity bit 0 */ +#define HRTIM_EECR1_EE4SNS_1 ((uint32_t)0x00400000) /*!< External event 4 sensitivity bit 1 */ +#define HRTIM_EECR1_EE4FAST ((uint32_t)0x00800000) /*!< External event 4 Fast mode */ + +#define HRTIM_EECR1_EE5SRC ((uint32_t)0x03000000) /*!< External event 5 source */ +#define HRTIM_EECR1_EE5SRC_0 ((uint32_t)0x01000000) /*!< External event 5 source bit 0 */ +#define HRTIM_EECR1_EE5SRC_1 ((uint32_t)0x02000000) /*!< External event 5 source bit 1 */ +#define HRTIM_EECR1_EE5POL ((uint32_t)0x04000000) /*!< External event 5 Polarity */ +#define HRTIM_EECR1_EE5SNS ((uint32_t)0x18000000) /*!< External event 5 sensitivity */ +#define HRTIM_EECR1_EE5SNS_0 ((uint32_t)0x08000000) /*!< External event 5 sensitivity bit 0 */ +#define HRTIM_EECR1_EE5SNS_1 ((uint32_t)0x10000000) /*!< External event 5 sensitivity bit 1 */ +#define HRTIM_EECR1_EE5FAST ((uint32_t)0x20000000) /*!< External event 5 Fast mode */ + +/******************* Bit definition for HRTIM_EECR2 register ****************/ +#define HRTIM_EECR2_EE6SRC ((uint32_t)0x00000003) /*!< External event 6 source */ +#define HRTIM_EECR2_EE6SRC_0 ((uint32_t)0x00000001) /*!< External event 6 source bit 0 */ +#define HRTIM_EECR2_EE6SRC_1 ((uint32_t)0x00000002) /*!< External event 6 source bit 1 */ +#define HRTIM_EECR2_EE6POL ((uint32_t)0x00000004) /*!< External event 6 Polarity */ +#define HRTIM_EECR2_EE6SNS ((uint32_t)0x00000018) /*!< External event 6 sensitivity */ +#define HRTIM_EECR2_EE6SNS_0 ((uint32_t)0x00000008) /*!< External event 6 sensitivity bit 0 */ +#define HRTIM_EECR2_EE6SNS_1 ((uint32_t)0x00000010) /*!< External event 6 sensitivity bit 1 */ + +#define HRTIM_EECR2_EE7SRC ((uint32_t)0x000000C0) /*!< External event 7 source */ +#define HRTIM_EECR2_EE7SRC_0 ((uint32_t)0x00000040) /*!< External event 7 source bit 0 */ +#define HRTIM_EECR2_EE7SRC_1 ((uint32_t)0x00000080) /*!< External event 7 source bit 1 */ +#define HRTIM_EECR2_EE7POL ((uint32_t)0x00000100) /*!< External event 7 Polarity */ +#define HRTIM_EECR2_EE7SNS ((uint32_t)0x00000600) /*!< External event 7 sensitivity */ +#define HRTIM_EECR2_EE7SNS_0 ((uint32_t)0x00000200) /*!< External event 7 sensitivity bit 0 */ +#define HRTIM_EECR2_EE7SNS_1 ((uint32_t)0x00000400) /*!< External event 7 sensitivity bit 1 */ + +#define HRTIM_EECR2_EE8SRC ((uint32_t)0x00003000) /*!< External event 8 source */ +#define HRTIM_EECR2_EE8SRC_0 ((uint32_t)0x00001000) /*!< External event 8 source bit 0 */ +#define HRTIM_EECR2_EE8SRC_1 ((uint32_t)0x00002000) /*!< External event 8 source bit 1 */ +#define HRTIM_EECR2_EE8POL ((uint32_t)0x00004000) /*!< External event 8 Polarity */ +#define HRTIM_EECR2_EE8SNS ((uint32_t)0x00018000) /*!< External event 8 sensitivity */ +#define HRTIM_EECR2_EE8SNS_0 ((uint32_t)0x00008000) /*!< External event 8 sensitivity bit 0 */ +#define HRTIM_EECR2_EE8SNS_1 ((uint32_t)0x00010000) /*!< External event 8 sensitivity bit 1 */ + +#define HRTIM_EECR2_EE9SRC ((uint32_t)0x000C0000) /*!< External event 9 source */ +#define HRTIM_EECR2_EE9SRC_0 ((uint32_t)0x00040000) /*!< External event 9 source bit 0 */ +#define HRTIM_EECR2_EE9SRC_1 ((uint32_t)0x00080000) /*!< External event 9 source bit 1 */ +#define HRTIM_EECR2_EE9POL ((uint32_t)0x00100000) /*!< External event 9 Polarity */ +#define HRTIM_EECR2_EE9SNS ((uint32_t)0x00600000) /*!< External event 9 sensitivity */ +#define HRTIM_EECR2_EE9SNS_0 ((uint32_t)0x00200000) /*!< External event 9 sensitivity bit 0 */ +#define HRTIM_EECR2_EE9SNS_1 ((uint32_t)0x00400000) /*!< External event 9 sensitivity bit 1 */ + +#define HRTIM_EECR2_EE10SRC ((uint32_t)0x03000000) /*!< External event 10 source */ +#define HRTIM_EECR2_EE10SRC_0 ((uint32_t)0x01000000) /*!< External event 10 source bit 0 */ +#define HRTIM_EECR2_EE10SRC_1 ((uint32_t)0x02000000) /*!< External event 10 source bit 1 */ +#define HRTIM_EECR2_EE10POL ((uint32_t)0x04000000) /*!< External event 10 Polarity */ +#define HRTIM_EECR2_EE10SNS ((uint32_t)0x18000000) /*!< External event 10 sensitivity */ +#define HRTIM_EECR2_EE10SNS_0 ((uint32_t)0x08000000) /*!< External event 10 sensitivity bit 0 */ +#define HRTIM_EECR2_EE10SNS_1 ((uint32_t)0x10000000) /*!< External event 10 sensitivity bit 1 */ + +/******************* Bit definition for HRTIM_EECR3 register ****************/ +#define HRTIM_EECR3_EE6F ((uint32_t)0x0000000F) /*!< External event 6 filter */ +#define HRTIM_EECR3_EE6F_0 ((uint32_t)0x00000001) /*!< External event 6 filter bit 0 */ +#define HRTIM_EECR3_EE6F_1 ((uint32_t)0x00000002) /*!< External event 6 filter bit 1 */ +#define HRTIM_EECR3_EE6F_2 ((uint32_t)0x00000004) /*!< External event 6 filter bit 2 */ +#define HRTIM_EECR3_EE6F_3 ((uint32_t)0x00000008) /*!< External event 6 filter bit 3 */ +#define HRTIM_EECR3_EE7F ((uint32_t)0x000003C0) /*!< External event 7 filter */ +#define HRTIM_EECR3_EE7F_0 ((uint32_t)0x00000040) /*!< External event 7 filter bit 0 */ +#define HRTIM_EECR3_EE7F_1 ((uint32_t)0x00000080) /*!< External event 7 filter bit 1 */ +#define HRTIM_EECR3_EE7F_2 ((uint32_t)0x00000100) /*!< External event 7 filter bit 2 */ +#define HRTIM_EECR3_EE7F_3 ((uint32_t)0x00000200) /*!< External event 7 filter bit 3 */ +#define HRTIM_EECR3_EE8F ((uint32_t)0x0000F000) /*!< External event 8 filter */ +#define HRTIM_EECR3_EE8F_0 ((uint32_t)0x00001000) /*!< External event 8 filter bit 0 */ +#define HRTIM_EECR3_EE8F_1 ((uint32_t)0x00002000) /*!< External event 8 filter bit 1 */ +#define HRTIM_EECR3_EE8F_2 ((uint32_t)0x00004000) /*!< External event 8 filter bit 2 */ +#define HRTIM_EECR3_EE8F_3 ((uint32_t)0x00008000) /*!< External event 8 filter bit 3 */ +#define HRTIM_EECR3_EE9F ((uint32_t)0x003C0000) /*!< External event 9 filter */ +#define HRTIM_EECR3_EE9F_0 ((uint32_t)0x00040000) /*!< External event 9 filter bit 0 */ +#define HRTIM_EECR3_EE9F_1 ((uint32_t)0x00080000) /*!< External event 9 filter bit 1 */ +#define HRTIM_EECR3_EE9F_2 ((uint32_t)0x00100000) /*!< External event 9 filter bit 2 */ +#define HRTIM_EECR3_EE9F_3 ((uint32_t)0x00200000) /*!< External event 9 filter bit 3 */ +#define HRTIM_EECR3_EE10F ((uint32_t)0x0F000000) /*!< External event 10 filter */ +#define HRTIM_EECR3_EE10F_0 ((uint32_t)0x01000000) /*!< External event 10 filter bit 0 */ +#define HRTIM_EECR3_EE10F_1 ((uint32_t)0x02000000) /*!< External event 10 filter bit 1 */ +#define HRTIM_EECR3_EE10F_2 ((uint32_t)0x04000000) /*!< External event 10 filter bit 2 */ +#define HRTIM_EECR3_EE10F_3 ((uint32_t)0x08000000) /*!< External event 10 filter bit 3 */ +#define HRTIM_EECR3_EEVSD ((uint32_t)0xC0000000) /*!< External event sampling clock division */ +#define HRTIM_EECR3_EEVSD_0 ((uint32_t)0x40000000) /*!< External event sampling clock division bit 0 */ +#define HRTIM_EECR3_EEVSD_1 ((uint32_t)0x80000000) /*!< External event sampling clock division bit 1 */ + +/******************* Bit definition for HRTIM_ADC1R register ****************/ +#define HRTIM_ADC1R_AD1MC1 ((uint32_t)0x00000001) /*!< ADC Trigger 1 on master compare 1 */ +#define HRTIM_ADC1R_AD1MC2 ((uint32_t)0x00000002) /*!< ADC Trigger 1 on master compare 2 */ +#define HRTIM_ADC1R_AD1MC3 ((uint32_t)0x00000004) /*!< ADC Trigger 1 on master compare 3 */ +#define HRTIM_ADC1R_AD1MC4 ((uint32_t)0x00000008) /*!< ADC Trigger 1 on master compare 4 */ +#define HRTIM_ADC1R_AD1MPER ((uint32_t)0x00000010) /*!< ADC Trigger 1 on master period */ +#define HRTIM_ADC1R_AD1EEV1 ((uint32_t)0x00000020) /*!< ADC Trigger 1 on external event 1 */ +#define HRTIM_ADC1R_AD1EEV2 ((uint32_t)0x00000040) /*!< ADC Trigger 1 on external event 2 */ +#define HRTIM_ADC1R_AD1EEV3 ((uint32_t)0x00000080) /*!< ADC Trigger 1 on external event 3 */ +#define HRTIM_ADC1R_AD1EEV4 ((uint32_t)0x00000100) /*!< ADC Trigger 1 on external event 4 */ +#define HRTIM_ADC1R_AD1EEV5 ((uint32_t)0x00000200) /*!< ADC Trigger 1 on external event 5 */ +#define HRTIM_ADC1R_AD1TAC2 ((uint32_t)0x00000400) /*!< ADC Trigger 1 on Timer A compare 2 */ +#define HRTIM_ADC1R_AD1TAC3 ((uint32_t)0x00000800) /*!< ADC Trigger 1 on Timer A compare 3 */ +#define HRTIM_ADC1R_AD1TAC4 ((uint32_t)0x00001000) /*!< ADC Trigger 1 on Timer A compare 4 */ +#define HRTIM_ADC1R_AD1TAPER ((uint32_t)0x00002000) /*!< ADC Trigger 1 on Timer A period */ +#define HRTIM_ADC1R_AD1TARST ((uint32_t)0x00004000) /*!< ADC Trigger 1 on Timer A reset */ +#define HRTIM_ADC1R_AD1TBC2 ((uint32_t)0x00008000) /*!< ADC Trigger 1 on Timer B compare 2 */ +#define HRTIM_ADC1R_AD1TBC3 ((uint32_t)0x00010000) /*!< ADC Trigger 1 on Timer B compare 3 */ +#define HRTIM_ADC1R_AD1TBC4 ((uint32_t)0x00020000) /*!< ADC Trigger 1 on Timer B compare 4 */ +#define HRTIM_ADC1R_AD1TBPER ((uint32_t)0x00040000) /*!< ADC Trigger 1 on Timer B period */ +#define HRTIM_ADC1R_AD1TBRST ((uint32_t)0x00080000) /*!< ADC Trigger 1 on Timer B reset */ +#define HRTIM_ADC1R_AD1TCC2 ((uint32_t)0x00100000) /*!< ADC Trigger 1 on Timer C compare 2 */ +#define HRTIM_ADC1R_AD1TCC3 ((uint32_t)0x00200000) /*!< ADC Trigger 1 on Timer C compare 3 */ +#define HRTIM_ADC1R_AD1TCC4 ((uint32_t)0x00400000) /*!< ADC Trigger 1 on Timer C compare 4 */ +#define HRTIM_ADC1R_AD1TCPER ((uint32_t)0x00800000) /*!< ADC Trigger 1 on Timer C period */ +#define HRTIM_ADC1R_AD1TDC2 ((uint32_t)0x01000000) /*!< ADC Trigger 1 on Timer D compare 2 */ +#define HRTIM_ADC1R_AD1TDC3 ((uint32_t)0x02000000) /*!< ADC Trigger 1 on Timer D compare 3 */ +#define HRTIM_ADC1R_AD1TDC4 ((uint32_t)0x04000000) /*!< ADC Trigger 1 on Timer D compare 4 */ +#define HRTIM_ADC1R_AD1TDPER ((uint32_t)0x08000000) /*!< ADC Trigger 1 on Timer D period */ +#define HRTIM_ADC1R_AD1TEC2 ((uint32_t)0x10000000) /*!< ADC Trigger 1 on Timer E compare 2 */ +#define HRTIM_ADC1R_AD1TEC3 ((uint32_t)0x20000000) /*!< ADC Trigger 1 on Timer E compare 3 */ +#define HRTIM_ADC1R_AD1TEC4 ((uint32_t)0x40000000) /*!< ADC Trigger 1 on Timer E compare 4 */ +#define HRTIM_ADC1R_AD1TEPER ((uint32_t)0x80000000) /*!< ADC Trigger 1 on Timer E period */ + +/******************* Bit definition for HRTIM_ADC2R register ****************/ +#define HRTIM_ADC2R_AD2MC1 ((uint32_t)0x00000001) /*!< ADC Trigger 2 on master compare 1 */ +#define HRTIM_ADC2R_AD2MC2 ((uint32_t)0x00000002) /*!< ADC Trigger 2 on master compare 2 */ +#define HRTIM_ADC2R_AD2MC3 ((uint32_t)0x00000004) /*!< ADC Trigger 2 on master compare 3 */ +#define HRTIM_ADC2R_AD2MC4 ((uint32_t)0x00000008) /*!< ADC Trigger 2 on master compare 4 */ +#define HRTIM_ADC2R_AD2MPER ((uint32_t)0x00000010) /*!< ADC Trigger 2 on master period */ +#define HRTIM_ADC2R_AD2EEV6 ((uint32_t)0x00000020) /*!< ADC Trigger 2 on external event 6 */ +#define HRTIM_ADC2R_AD2EEV7 ((uint32_t)0x00000040) /*!< ADC Trigger 2 on external event 7 */ +#define HRTIM_ADC2R_AD2EEV8 ((uint32_t)0x00000080) /*!< ADC Trigger 2 on external event 8 */ +#define HRTIM_ADC2R_AD2EEV9 ((uint32_t)0x00000100) /*!< ADC Trigger 2 on external event 9 */ +#define HRTIM_ADC2R_AD2EEV10 ((uint32_t)0x00000200) /*!< ADC Trigger 2 on external event 10 */ +#define HRTIM_ADC2R_AD2TAC2 ((uint32_t)0x00000400) /*!< ADC Trigger 2 on Timer A compare 2 */ +#define HRTIM_ADC2R_AD2TAC3 ((uint32_t)0x00000800) /*!< ADC Trigger 2 on Timer A compare 3 */ +#define HRTIM_ADC2R_AD2TAC4 ((uint32_t)0x00001000) /*!< ADC Trigger 2 on Timer A compare 4*/ +#define HRTIM_ADC2R_AD2TAPER ((uint32_t)0x00002000) /*!< ADC Trigger 2 on Timer A period */ +#define HRTIM_ADC2R_AD2TBC2 ((uint32_t)0x00004000) /*!< ADC Trigger 2 on Timer B compare 2 */ +#define HRTIM_ADC2R_AD2TBC3 ((uint32_t)0x00008000) /*!< ADC Trigger 2 on Timer B compare 3 */ +#define HRTIM_ADC2R_AD2TBC4 ((uint32_t)0x00010000) /*!< ADC Trigger 2 on Timer B compare 4 */ +#define HRTIM_ADC2R_AD2TBPER ((uint32_t)0x00020000) /*!< ADC Trigger 2 on Timer B period */ +#define HRTIM_ADC2R_AD2TCC2 ((uint32_t)0x00040000) /*!< ADC Trigger 2 on Timer C compare 2 */ +#define HRTIM_ADC2R_AD2TCC3 ((uint32_t)0x00080000) /*!< ADC Trigger 2 on Timer C compare 3 */ +#define HRTIM_ADC2R_AD2TCC4 ((uint32_t)0x00100000) /*!< ADC Trigger 2 on Timer C compare 4 */ +#define HRTIM_ADC2R_AD2TCPER ((uint32_t)0x00200000) /*!< ADC Trigger 2 on Timer C period */ +#define HRTIM_ADC2R_AD2TCRST ((uint32_t)0x00400000) /*!< ADC Trigger 2 on Timer C reset */ +#define HRTIM_ADC2R_AD2TDC2 ((uint32_t)0x00800000) /*!< ADC Trigger 2 on Timer D compare 2 */ +#define HRTIM_ADC2R_AD2TDC3 ((uint32_t)0x01000000) /*!< ADC Trigger 2 on Timer D compare 3 */ +#define HRTIM_ADC2R_AD2TDC4 ((uint32_t)0x02000000) /*!< ADC Trigger 2 on Timer D compare 4*/ +#define HRTIM_ADC2R_AD2TDPER ((uint32_t)0x04000000) /*!< ADC Trigger 2 on Timer D period */ +#define HRTIM_ADC2R_AD2TDRST ((uint32_t)0x08000000) /*!< ADC Trigger 2 on Timer D reset */ +#define HRTIM_ADC2R_AD2TEC2 ((uint32_t)0x10000000) /*!< ADC Trigger 2 on Timer E compare 2 */ +#define HRTIM_ADC2R_AD2TEC3 ((uint32_t)0x20000000) /*!< ADC Trigger 2 on Timer E compare 3 */ +#define HRTIM_ADC2R_AD2TEC4 ((uint32_t)0x40000000) /*!< ADC Trigger 2 on Timer E compare 4 */ +#define HRTIM_ADC2R_AD2TERST ((uint32_t)0x80000000) /*!< ADC Trigger 2 on Timer E reset */ + +/******************* Bit definition for HRTIM_ADC3R register ****************/ +#define HRTIM_ADC3R_AD3MC1 ((uint32_t)0x00000001) /*!< ADC Trigger 3 on master compare 1 */ +#define HRTIM_ADC3R_AD3MC2 ((uint32_t)0x00000002) /*!< ADC Trigger 3 on master compare 2 */ +#define HRTIM_ADC3R_AD3MC3 ((uint32_t)0x00000004) /*!< ADC Trigger 3 on master compare 3 */ +#define HRTIM_ADC3R_AD3MC4 ((uint32_t)0x00000008) /*!< ADC Trigger 3 on master compare 4 */ +#define HRTIM_ADC3R_AD3MPER ((uint32_t)0x00000010) /*!< ADC Trigger 3 on master period */ +#define HRTIM_ADC3R_AD3EEV1 ((uint32_t)0x00000020) /*!< ADC Trigger 3 on external event 1 */ +#define HRTIM_ADC3R_AD3EEV2 ((uint32_t)0x00000040) /*!< ADC Trigger 3 on external event 2 */ +#define HRTIM_ADC3R_AD3EEV3 ((uint32_t)0x00000080) /*!< ADC Trigger 3 on external event 3 */ +#define HRTIM_ADC3R_AD3EEV4 ((uint32_t)0x00000100) /*!< ADC Trigger 3 on external event 4 */ +#define HRTIM_ADC3R_AD3EEV5 ((uint32_t)0x00000200) /*!< ADC Trigger 3 on external event 5 */ +#define HRTIM_ADC3R_AD3TAC2 ((uint32_t)0x00000400) /*!< ADC Trigger 3 on Timer A compare 2 */ +#define HRTIM_ADC3R_AD3TAC3 ((uint32_t)0x00000800) /*!< ADC Trigger 3 on Timer A compare 3 */ +#define HRTIM_ADC3R_AD3TAC4 ((uint32_t)0x00001000) /*!< ADC Trigger 3 on Timer A compare 4 */ +#define HRTIM_ADC3R_AD3TAPER ((uint32_t)0x00002000) /*!< ADC Trigger 3 on Timer A period */ +#define HRTIM_ADC3R_AD3TARST ((uint32_t)0x00004000) /*!< ADC Trigger 3 on Timer A reset */ +#define HRTIM_ADC3R_AD3TBC2 ((uint32_t)0x00008000) /*!< ADC Trigger 3 on Timer B compare 2 */ +#define HRTIM_ADC3R_AD3TBC3 ((uint32_t)0x00010000) /*!< ADC Trigger 3 on Timer B compare 3 */ +#define HRTIM_ADC3R_AD3TBC4 ((uint32_t)0x00020000) /*!< ADC Trigger 3 on Timer B compare 4 */ +#define HRTIM_ADC3R_AD3TBPER ((uint32_t)0x00040000) /*!< ADC Trigger 3 on Timer B period */ +#define HRTIM_ADC3R_AD3TBRST ((uint32_t)0x00080000) /*!< ADC Trigger 3 on Timer B reset */ +#define HRTIM_ADC3R_AD3TCC2 ((uint32_t)0x00100000) /*!< ADC Trigger 3 on Timer C compare 2 */ +#define HRTIM_ADC3R_AD3TCC3 ((uint32_t)0x00200000) /*!< ADC Trigger 3 on Timer C compare 3 */ +#define HRTIM_ADC3R_AD3TCC4 ((uint32_t)0x00400000) /*!< ADC Trigger 3 on Timer C compare 4 */ +#define HRTIM_ADC3R_AD3TCPER ((uint32_t)0x00800000) /*!< ADC Trigger 3 on Timer C period */ +#define HRTIM_ADC3R_AD3TDC2 ((uint32_t)0x01000000) /*!< ADC Trigger 3 on Timer D compare 2 */ +#define HRTIM_ADC3R_AD3TDC3 ((uint32_t)0x02000000) /*!< ADC Trigger 3 on Timer D compare 3 */ +#define HRTIM_ADC3R_AD3TDC4 ((uint32_t)0x04000000) /*!< ADC Trigger 3 on Timer D compare 4 */ +#define HRTIM_ADC3R_AD3TDPER ((uint32_t)0x08000000) /*!< ADC Trigger 3 on Timer D period */ +#define HRTIM_ADC3R_AD3TEC2 ((uint32_t)0x10000000) /*!< ADC Trigger 3 on Timer E compare 2 */ +#define HRTIM_ADC3R_AD3TEC3 ((uint32_t)0x20000000) /*!< ADC Trigger 3 on Timer E compare 3 */ +#define HRTIM_ADC3R_AD3TEC4 ((uint32_t)0x40000000) /*!< ADC Trigger 3 on Timer E compare 4 */ +#define HRTIM_ADC3R_AD3TEPER ((uint32_t)0x80000000) /*!< ADC Trigger 3 on Timer E period */ + +/******************* Bit definition for HRTIM_ADC4R register ****************/ +#define HRTIM_ADC4R_AD4MC1 ((uint32_t)0x00000001) /*!< ADC Trigger 4 on master compare 1 */ +#define HRTIM_ADC4R_AD4MC2 ((uint32_t)0x00000002) /*!< ADC Trigger 4 on master compare 2 */ +#define HRTIM_ADC4R_AD4MC3 ((uint32_t)0x00000004) /*!< ADC Trigger 4 on master compare 3 */ +#define HRTIM_ADC4R_AD4MC4 ((uint32_t)0x00000008) /*!< ADC Trigger 4 on master compare 4 */ +#define HRTIM_ADC4R_AD4MPER ((uint32_t)0x00000010) /*!< ADC Trigger 4 on master period */ +#define HRTIM_ADC4R_AD4EEV6 ((uint32_t)0x00000020) /*!< ADC Trigger 4 on external event 6 */ +#define HRTIM_ADC4R_AD4EEV7 ((uint32_t)0x00000040) /*!< ADC Trigger 4 on external event 7 */ +#define HRTIM_ADC4R_AD4EEV8 ((uint32_t)0x00000080) /*!< ADC Trigger 4 on external event 8 */ +#define HRTIM_ADC4R_AD4EEV9 ((uint32_t)0x00000100) /*!< ADC Trigger 4 on external event 9 */ +#define HRTIM_ADC4R_AD4EEV10 ((uint32_t)0x00000200) /*!< ADC Trigger 4 on external event 10 */ +#define HRTIM_ADC4R_AD4TAC2 ((uint32_t)0x00000400) /*!< ADC Trigger 4 on Timer A compare 2 */ +#define HRTIM_ADC4R_AD4TAC3 ((uint32_t)0x00000800) /*!< ADC Trigger 4 on Timer A compare 3 */ +#define HRTIM_ADC4R_AD4TAC4 ((uint32_t)0x00001000) /*!< ADC Trigger 4 on Timer A compare 4*/ +#define HRTIM_ADC4R_AD4TAPER ((uint32_t)0x00002000) /*!< ADC Trigger 4 on Timer A period */ +#define HRTIM_ADC4R_AD4TBC2 ((uint32_t)0x00004000) /*!< ADC Trigger 4 on Timer B compare 2 */ +#define HRTIM_ADC4R_AD4TBC3 ((uint32_t)0x00008000) /*!< ADC Trigger 4 on Timer B compare 3 */ +#define HRTIM_ADC4R_AD4TBC4 ((uint32_t)0x00010000) /*!< ADC Trigger 4 on Timer B compare 4 */ +#define HRTIM_ADC4R_AD4TBPER ((uint32_t)0x00020000) /*!< ADC Trigger 4 on Timer B period */ +#define HRTIM_ADC4R_AD4TCC2 ((uint32_t)0x00040000) /*!< ADC Trigger 4 on Timer C compare 2 */ +#define HRTIM_ADC4R_AD4TCC3 ((uint32_t)0x00080000) /*!< ADC Trigger 4 on Timer C compare 3 */ +#define HRTIM_ADC4R_AD4TCC4 ((uint32_t)0x00100000) /*!< ADC Trigger 4 on Timer C compare 4 */ +#define HRTIM_ADC4R_AD4TCPER ((uint32_t)0x00200000) /*!< ADC Trigger 4 on Timer C period */ +#define HRTIM_ADC4R_AD4TCRST ((uint32_t)0x00400000) /*!< ADC Trigger 4 on Timer C reset */ +#define HRTIM_ADC4R_AD4TDC2 ((uint32_t)0x00800000) /*!< ADC Trigger 4 on Timer D compare 2 */ +#define HRTIM_ADC4R_AD4TDC3 ((uint32_t)0x01000000) /*!< ADC Trigger 4 on Timer D compare 3 */ +#define HRTIM_ADC4R_AD4TDC4 ((uint32_t)0x02000000) /*!< ADC Trigger 4 on Timer D compare 4*/ +#define HRTIM_ADC4R_AD4TDPER ((uint32_t)0x04000000) /*!< ADC Trigger 4 on Timer D period */ +#define HRTIM_ADC4R_AD4TDRST ((uint32_t)0x08000000) /*!< ADC Trigger 4 on Timer D reset */ +#define HRTIM_ADC4R_AD4TEC2 ((uint32_t)0x10000000) /*!< ADC Trigger 4 on Timer E compare 2 */ +#define HRTIM_ADC4R_AD4TEC3 ((uint32_t)0x20000000) /*!< ADC Trigger 4 on Timer E compare 3 */ +#define HRTIM_ADC4R_AD4TEC4 ((uint32_t)0x40000000) /*!< ADC Trigger 4 on Timer E compare 4 */ +#define HRTIM_ADC4R_AD4TERST ((uint32_t)0x80000000) /*!< ADC Trigger 4 on Timer E reset */ + +/******************* Bit definition for HRTIM_DLLCR register ****************/ +#define HRTIM_DLLCR_CAL ((uint32_t)0x00000001) /*!< DLL calibration start */ +#define HRTIM_DLLCR_CALEN ((uint32_t)0x00000002) /*!< DLL calibration enable */ +#define HRTIM_DLLCR_CALRTE ((uint32_t)0x0000000C) /*!< DLL calibration rate */ +#define HRTIM_DLLCR_CALRTE_0 ((uint32_t)0x00000004) /*!< DLL calibration rate bit 0 */ +#define HRTIM_DLLCR_CALRTE_1 ((uint32_t)0x00000008) /*!< DLL calibration rate bit 1 */ + +/******************* Bit definition for HRTIM_FLTINR1 register ***************/ +#define HRTIM_FLTINR1_FLT1E ((uint32_t)0x00000001) /*!< Fault 1 enable */ +#define HRTIM_FLTINR1_FLT1P ((uint32_t)0x00000002) /*!< Fault 1 polarity */ +#define HRTIM_FLTINR1_FLT1SRC ((uint32_t)0x00000004) /*!< Fault 1 source */ +#define HRTIM_FLTINR1_FLT1F ((uint32_t)0x00000078) /*!< Fault 1 filter */ +#define HRTIM_FLTINR1_FLT1F_0 ((uint32_t)0x00000008) /*!< Fault 1 filter bit 0 */ +#define HRTIM_FLTINR1_FLT1F_1 ((uint32_t)0x00000010) /*!< Fault 1 filter bit 1 */ +#define HRTIM_FLTINR1_FLT1F_2 ((uint32_t)0x00000020) /*!< Fault 1 filter bit 2 */ +#define HRTIM_FLTINR1_FLT1F_3 ((uint32_t)0x00000040) /*!< Fault 1 filter bit 3 */ +#define HRTIM_FLTINR1_FLT1LCK ((uint32_t)0x00000080) /*!< Fault 1 lock */ + +#define HRTIM_FLTINR1_FLT2E ((uint32_t)0x00000100) /*!< Fault 2 enable */ +#define HRTIM_FLTINR1_FLT2P ((uint32_t)0x00000200) /*!< Fault 2 polarity */ +#define HRTIM_FLTINR1_FLT2SRC ((uint32_t)0x00000400) /*!< Fault 2 source */ +#define HRTIM_FLTINR1_FLT2F ((uint32_t)0x00007800) /*!< Fault 2 filter */ +#define HRTIM_FLTINR1_FLT2F_0 ((uint32_t)0x00000800) /*!< Fault 2 filter bit 0 */ +#define HRTIM_FLTINR1_FLT2F_1 ((uint32_t)0x00001000) /*!< Fault 2 filter bit 1 */ +#define HRTIM_FLTINR1_FLT2F_2 ((uint32_t)0x00002000) /*!< Fault 2 filter bit 2 */ +#define HRTIM_FLTINR1_FLT2F_3 ((uint32_t)0x00004000) /*!< Fault 2 filter bit 3 */ +#define HRTIM_FLTINR1_FLT2LCK ((uint32_t)0x00008000) /*!< Fault 2 lock */ + +#define HRTIM_FLTINR1_FLT3E ((uint32_t)0x00010000) /*!< Fault 3 enable */ +#define HRTIM_FLTINR1_FLT3P ((uint32_t)0x00020000) /*!< Fault 3 polarity */ +#define HRTIM_FLTINR1_FLT3SRC ((uint32_t)0x00040000) /*!< Fault 3 source */ +#define HRTIM_FLTINR1_FLT3F ((uint32_t)0x00780000) /*!< Fault 3 filter */ +#define HRTIM_FLTINR1_FLT3F_0 ((uint32_t)0x00080000) /*!< Fault 3 filter bit 0 */ +#define HRTIM_FLTINR1_FLT3F_1 ((uint32_t)0x00100000) /*!< Fault 3 filter bit 1 */ +#define HRTIM_FLTINR1_FLT3F_2 ((uint32_t)0x00200000) /*!< Fault 3 filter bit 2 */ +#define HRTIM_FLTINR1_FLT3F_3 ((uint32_t)0x00400000) /*!< Fault 3 filter bit 3 */ +#define HRTIM_FLTINR1_FLT3LCK ((uint32_t)0x00800000) /*!< Fault 3 lock */ + +#define HRTIM_FLTINR1_FLT4E ((uint32_t)0x01000000) /*!< Fault 4 enable */ +#define HRTIM_FLTINR1_FLT4P ((uint32_t)0x02000000) /*!< Fault 4 polarity */ +#define HRTIM_FLTINR1_FLT4SRC ((uint32_t)0x04000000) /*!< Fault 4 source */ +#define HRTIM_FLTINR1_FLT4F ((uint32_t)0x78000000) /*!< Fault 4 filter */ +#define HRTIM_FLTINR1_FLT4F_0 ((uint32_t)0x08000000) /*!< Fault 4 filter bit 0 */ +#define HRTIM_FLTINR1_FLT4F_1 ((uint32_t)0x10000000) /*!< Fault 4 filter bit 1 */ +#define HRTIM_FLTINR1_FLT4F_2 ((uint32_t)0x20000000) /*!< Fault 4 filter bit 2 */ +#define HRTIM_FLTINR1_FLT4F_3 ((uint32_t)0x40000000) /*!< Fault 4 filter bit 3 */ +#define HRTIM_FLTINR1_FLT4LCK ((uint32_t)0x80000000) /*!< Fault 4 lock */ + +/******************* Bit definition for HRTIM_FLTINR2 register ***************/ +#define HRTIM_FLTINR2_FLT5E ((uint32_t)0x00000001) /*!< Fault 5 enable */ +#define HRTIM_FLTINR2_FLT5P ((uint32_t)0x00000002) /*!< Fault 5 polarity */ +#define HRTIM_FLTINR2_FLT5SRC ((uint32_t)0x00000004) /*!< Fault 5 source */ +#define HRTIM_FLTINR2_FLT5F ((uint32_t)0x00000078) /*!< Fault 5 filter */ +#define HRTIM_FLTINR2_FLT5F_0 ((uint32_t)0x00000008) /*!< Fault 5 filter bit 0 */ +#define HRTIM_FLTINR2_FLT5F_1 ((uint32_t)0x00000010) /*!< Fault 5 filter bit 1 */ +#define HRTIM_FLTINR2_FLT5F_2 ((uint32_t)0x00000020) /*!< Fault 5 filter bit 2 */ +#define HRTIM_FLTINR2_FLT5F_3 ((uint32_t)0x00000040) /*!< Fault 5 filter bit 3 */ +#define HRTIM_FLTINR2_FLT5LCK ((uint32_t)0x00000080) /*!< Fault 5 lock */ +#define HRTIM_FLTINR2_FLTSD ((uint32_t)0x03000000) /*!< Fault sampling clock division */ +#define HRTIM_FLTINR2_FLTSD_0 ((uint32_t)0x01000000) /*!< Fault sampling clock division bit 0 */ +#define HRTIM_FLTINR2_FLTSD_1 ((uint32_t)0x02000000) /*!< Fault sampling clock division bit 1 */ + +/******************* Bit definition for HRTIM_BDMUPR register ***************/ +#define HRTIM_BDMUPR_MCR ((uint32_t)0x00000001) /*!< MCR register update enable */ +#define HRTIM_BDMUPR_MICR ((uint32_t)0x00000002) /*!< MICR register update enable */ +#define HRTIM_BDMUPR_MDIER ((uint32_t)0x00000004) /*!< MDIER register update enable */ +#define HRTIM_BDMUPR_MCNT ((uint32_t)0x00000008) /*!< MCNT register update enable */ +#define HRTIM_BDMUPR_MPER ((uint32_t)0x00000010) /*!< MPER register update enable */ +#define HRTIM_BDMUPR_MREP ((uint32_t)0x00000020) /*!< MREP register update enable */ +#define HRTIM_BDMUPR_MCMP1 ((uint32_t)0x00000040) /*!< MCMP1 register update enable */ +#define HRTIM_BDMUPR_MCMP2 ((uint32_t)0x00000080) /*!< MCMP2 register update enable */ +#define HRTIM_BDMUPR_MCMP3 ((uint32_t)0x00000100) /*!< MCMP3 register update enable */ +#define HRTIM_BDMUPR_MCMP4 ((uint32_t)0x00000200) /*!< MPCMP4 register update enable */ + +/******************* Bit definition for HRTIM_BDTUPR register ***************/ +#define HRTIM_BDTUPR_TIMCR ((uint32_t)0x00000001) /*!< TIMCR register update enable */ +#define HRTIM_BDTUPR_TIMICR ((uint32_t)0x00000002) /*!< TIMICR register update enable */ +#define HRTIM_BDTUPR_TIMDIER ((uint32_t)0x00000004) /*!< TIMDIER register update enable */ +#define HRTIM_BDTUPR_TIMCNT ((uint32_t)0x00000008) /*!< TIMCNT register update enable */ +#define HRTIM_BDTUPR_TIMPER ((uint32_t)0x00000010) /*!< TIMPER register update enable */ +#define HRTIM_BDTUPR_TIMREP ((uint32_t)0x00000020) /*!< TIMREP register update enable */ +#define HRTIM_BDTUPR_TIMCMP1 ((uint32_t)0x00000040) /*!< TIMCMP1 register update enable */ +#define HRTIM_BDTUPR_TIMCMP2 ((uint32_t)0x00000080) /*!< TIMCMP2 register update enable */ +#define HRTIM_BDTUPR_TIMCMP3 ((uint32_t)0x00000100) /*!< TIMCMP3 register update enable */ +#define HRTIM_BDTUPR_TIMCMP4 ((uint32_t)0x00000200) /*!< TIMCMP4 register update enable */ +#define HRTIM_BDTUPR_TIMDTR ((uint32_t)0x00000400) /*!< TIMDTR register update enable */ +#define HRTIM_BDTUPR_TIMSET1R ((uint32_t)0x00000800) /*!< TIMSET1R register update enable */ +#define HRTIM_BDTUPR_TIMRST1R ((uint32_t)0x00001000) /*!< TIMRST1R register update enable */ +#define HRTIM_BDTUPR_TIMSET2R ((uint32_t)0x00002000) /*!< TIMSET2R register update enable */ +#define HRTIM_BDTUPR_TIMRST2R ((uint32_t)0x00004000) /*!< TIMRST2R register update enable */ +#define HRTIM_BDTUPR_TIMEEFR1 ((uint32_t)0x00008000) /*!< TIMEEFR1 register update enable */ +#define HRTIM_BDTUPR_TIMEEFR2 ((uint32_t)0x00010000) /*!< TIMEEFR2 register update enable */ +#define HRTIM_BDTUPR_TIMRSTR ((uint32_t)0x00020000) /*!< TIMRSTR register update enable */ +#define HRTIM_BDTUPR_TIMCHPR ((uint32_t)0x00040000) /*!< TIMCHPR register update enable */ +#define HRTIM_BDTUPR_TIMOUTR ((uint32_t)0x00080000) /*!< TIMOUTR register update enable */ +#define HRTIM_BDTUPR_TIMFLTR ((uint32_t)0x00100000) /*!< TIMFLTR register update enable */ + +/******************* Bit definition for HRTIM_BDMADR register ***************/ +#define HRTIM_BDMADR_BDMADR ((uint32_t)0xFFFFFFFF) /*!< Burst DMA Data register */ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter SAR (ADC) */ +/* */ +/******************************************************************************/ +/******************** Bit definition for ADC_ISR register ********************/ +#define ADC_ISR_ADRD ((uint32_t)0x00000001) /*!< ADC Ready (ADRDY) flag */ +#define ADC_ISR_EOSMP ((uint32_t)0x00000002) /*!< ADC End of Sampling flag */ +#define ADC_ISR_EOC ((uint32_t)0x00000004) /*!< ADC End of Regular Conversion flag */ +#define ADC_ISR_EOS ((uint32_t)0x00000008) /*!< ADC End of Regular sequence of Conversions flag */ +#define ADC_ISR_OVR ((uint32_t)0x00000010) /*!< ADC overrun flag */ +#define ADC_ISR_JEOC ((uint32_t)0x00000020) /*!< ADC End of Injected Conversion flag */ +#define ADC_ISR_JEOS ((uint32_t)0x00000040) /*!< ADC End of Injected sequence of Conversions flag */ +#define ADC_ISR_AWD1 ((uint32_t)0x00000080) /*!< ADC Analog watchdog 1 flag */ +#define ADC_ISR_AWD2 ((uint32_t)0x00000100) /*!< ADC Analog watchdog 2 flag */ +#define ADC_ISR_AWD3 ((uint32_t)0x00000200) /*!< ADC Analog watchdog 3 flag */ +#define ADC_ISR_JQOVF ((uint32_t)0x00000400) /*!< ADC Injected Context Queue Overflow flag */ + +/******************** Bit definition for ADC_IER register ********************/ +#define ADC_IER_RDY ((uint32_t)0x00000001) /*!< ADC Ready (ADRDY) interrupt source */ +#define ADC_IER_EOSMP ((uint32_t)0x00000002) /*!< ADC End of Sampling interrupt source */ +#define ADC_IER_EOC ((uint32_t)0x00000004) /*!< ADC End of Regular Conversion interrupt source */ +#define ADC_IER_EOS ((uint32_t)0x00000008) /*!< ADC End of Regular sequence of Conversions interrupt source */ +#define ADC_IER_OVR ((uint32_t)0x00000010) /*!< ADC overrun interrupt source */ +#define ADC_IER_JEOC ((uint32_t)0x00000020) /*!< ADC End of Injected Conversion interrupt source */ +#define ADC_IER_JEOS ((uint32_t)0x00000040) /*!< ADC End of Injected sequence of Conversions interrupt source */ +#define ADC_IER_AWD1 ((uint32_t)0x00000080) /*!< ADC Analog watchdog 1 interrupt source */ +#define ADC_IER_AWD2 ((uint32_t)0x00000100) /*!< ADC Analog watchdog 2 interrupt source */ +#define ADC_IER_AWD3 ((uint32_t)0x00000200) /*!< ADC Analog watchdog 3 interrupt source */ +#define ADC_IER_JQOVF ((uint32_t)0x00000400) /*!< ADC Injected Context Queue Overflow interrupt source */ + +/******************** Bit definition for ADC_CR register ********************/ +#define ADC_CR_ADEN ((uint32_t)0x00000001) /*!< ADC Enable control */ +#define ADC_CR_ADDIS ((uint32_t)0x00000002) /*!< ADC Disable command */ +#define ADC_CR_ADSTART ((uint32_t)0x00000004) /*!< ADC Start of Regular conversion */ +#define ADC_CR_JADSTART ((uint32_t)0x00000008) /*!< ADC Start of injected conversion */ +#define ADC_CR_ADSTP ((uint32_t)0x00000010) /*!< ADC Stop of Regular conversion */ +#define ADC_CR_JADSTP ((uint32_t)0x00000020) /*!< ADC Stop of injected conversion */ +#define ADC_CR_ADVREGEN ((uint32_t)0x30000000) /*!< ADC Voltage regulator Enable */ +#define ADC_CR_ADVREGEN_0 ((uint32_t)0x10000000) /*!< ADC ADVREGEN bit 0 */ +#define ADC_CR_ADVREGEN_1 ((uint32_t)0x20000000) /*!< ADC ADVREGEN bit 1 */ +#define ADC_CR_ADCALDIF ((uint32_t)0x40000000) /*!< ADC Differential Mode for calibration */ +#define ADC_CR_ADCAL ((uint32_t)0x80000000) /*!< ADC Calibration */ + +/******************** Bit definition for ADC_CFGR register ********************/ +#define ADC_CFGR_DMAEN ((uint32_t)0x00000001) /*!< ADC DMA Enable */ +#define ADC_CFGR_DMACFG ((uint32_t)0x00000002) /*!< ADC DMA configuration */ + +#define ADC_CFGR_RES ((uint32_t)0x00000018) /*!< ADC Data resolution */ +#define ADC_CFGR_RES_0 ((uint32_t)0x00000008) /*!< ADC RES bit 0 */ +#define ADC_CFGR_RES_1 ((uint32_t)0x00000010) /*!< ADC RES bit 1 */ + +#define ADC_CFGR_ALIGN ((uint32_t)0x00000020) /*!< ADC Data Alignment */ + +#define ADC_CFGR_EXTSEL ((uint32_t)0x000003C0) /*!< ADC External trigger selection for regular group */ +#define ADC_CFGR_EXTSEL_0 ((uint32_t)0x00000040) /*!< ADC EXTSEL bit 0 */ +#define ADC_CFGR_EXTSEL_1 ((uint32_t)0x00000080) /*!< ADC EXTSEL bit 1 */ +#define ADC_CFGR_EXTSEL_2 ((uint32_t)0x00000100) /*!< ADC EXTSEL bit 2 */ +#define ADC_CFGR_EXTSEL_3 ((uint32_t)0x00000200) /*!< ADC EXTSEL bit 3 */ + +#define ADC_CFGR_EXTEN ((uint32_t)0x00000C00) /*!< ADC External trigger enable and polarity selection for regular channels */ +#define ADC_CFGR_EXTEN_0 ((uint32_t)0x00000400) /*!< ADC EXTEN bit 0 */ +#define ADC_CFGR_EXTEN_1 ((uint32_t)0x00000800) /*!< ADC EXTEN bit 1 */ + +#define ADC_CFGR_OVRMOD ((uint32_t)0x00001000) /*!< ADC overrun mode */ +#define ADC_CFGR_CONT ((uint32_t)0x00002000) /*!< ADC Single/continuous conversion mode for regular conversion */ +#define ADC_CFGR_AUTDLY ((uint32_t)0x00004000) /*!< ADC Delayed conversion mode */ +#define ADC_CFGR_DISCEN ((uint32_t)0x00010000) /*!< ADC Discontinuous mode for regular channels */ + +#define ADC_CFGR_DISCNUM ((uint32_t)0x000E0000) /*!< ADC Discontinuous mode channel count */ +#define ADC_CFGR_DISCNUM_0 ((uint32_t)0x00020000) /*!< ADC DISCNUM bit 0 */ +#define ADC_CFGR_DISCNUM_1 ((uint32_t)0x00040000) /*!< ADC DISCNUM bit 1 */ +#define ADC_CFGR_DISCNUM_2 ((uint32_t)0x00080000) /*!< ADC DISCNUM bit 2 */ + +#define ADC_CFGR_JDISCEN ((uint32_t)0x00100000) /*!< ADC Discontinuous mode on injected channels */ +#define ADC_CFGR_JQM ((uint32_t)0x00200000) /*!< ADC JSQR Queue mode */ +#define ADC_CFGR_AWD1SGL ((uint32_t)0x00400000) /*!< Enable the watchdog 1 on a single channel or on all channels */ +#define ADC_CFGR_AWD1EN ((uint32_t)0x00800000) /*!< ADC Analog watchdog 1 enable on regular Channels */ +#define ADC_CFGR_JAWD1EN ((uint32_t)0x01000000) /*!< ADC Analog watchdog 1 enable on injected Channels */ +#define ADC_CFGR_JAUTO ((uint32_t)0x02000000) /*!< ADC Automatic injected group conversion */ + +#define ADC_CFGR_AWD1CH ((uint32_t)0x7C000000) /*!< ADC Analog watchdog 1 Channel selection */ +#define ADC_CFGR_AWD1CH_0 ((uint32_t)0x04000000) /*!< ADC AWD1CH bit 0 */ +#define ADC_CFGR_AWD1CH_1 ((uint32_t)0x08000000) /*!< ADC AWD1CH bit 1 */ +#define ADC_CFGR_AWD1CH_2 ((uint32_t)0x10000000) /*!< ADC AWD1CH bit 2 */ +#define ADC_CFGR_AWD1CH_3 ((uint32_t)0x20000000) /*!< ADC AWD1CH bit 3 */ +#define ADC_CFGR_AWD1CH_4 ((uint32_t)0x40000000) /*!< ADC AWD1CH bit 4 */ + +/******************** Bit definition for ADC_SMPR1 register ********************/ +#define ADC_SMPR1_SMP0 ((uint32_t)0x00000007) /*!< ADC Channel 0 Sampling time selection */ +#define ADC_SMPR1_SMP0_0 ((uint32_t)0x00000001) /*!< ADC SMP0 bit 0 */ +#define ADC_SMPR1_SMP0_1 ((uint32_t)0x00000002) /*!< ADC SMP0 bit 1 */ +#define ADC_SMPR1_SMP0_2 ((uint32_t)0x00000004) /*!< ADC SMP0 bit 2 */ + +#define ADC_SMPR1_SMP1 ((uint32_t)0x00000038) /*!< ADC Channel 1 Sampling time selection */ +#define ADC_SMPR1_SMP1_0 ((uint32_t)0x00000008) /*!< ADC SMP1 bit 0 */ +#define ADC_SMPR1_SMP1_1 ((uint32_t)0x00000010) /*!< ADC SMP1 bit 1 */ +#define ADC_SMPR1_SMP1_2 ((uint32_t)0x00000020) /*!< ADC SMP1 bit 2 */ + +#define ADC_SMPR1_SMP2 ((uint32_t)0x000001C0) /*!< ADC Channel 2 Sampling time selection */ +#define ADC_SMPR1_SMP2_0 ((uint32_t)0x00000040) /*!< ADC SMP2 bit 0 */ +#define ADC_SMPR1_SMP2_1 ((uint32_t)0x00000080) /*!< ADC SMP2 bit 1 */ +#define ADC_SMPR1_SMP2_2 ((uint32_t)0x00000100) /*!< ADC SMP2 bit 2 */ + +#define ADC_SMPR1_SMP3 ((uint32_t)0x00000E00) /*!< ADC Channel 3 Sampling time selection */ +#define ADC_SMPR1_SMP3_0 ((uint32_t)0x00000200) /*!< ADC SMP3 bit 0 */ +#define ADC_SMPR1_SMP3_1 ((uint32_t)0x00000400) /*!< ADC SMP3 bit 1 */ +#define ADC_SMPR1_SMP3_2 ((uint32_t)0x00000800) /*!< ADC SMP3 bit 2 */ + +#define ADC_SMPR1_SMP4 ((uint32_t)0x00007000) /*!< ADC Channel 4 Sampling time selection */ +#define ADC_SMPR1_SMP4_0 ((uint32_t)0x00001000) /*!< ADC SMP4 bit 0 */ +#define ADC_SMPR1_SMP4_1 ((uint32_t)0x00002000) /*!< ADC SMP4 bit 1 */ +#define ADC_SMPR1_SMP4_2 ((uint32_t)0x00004000) /*!< ADC SMP4 bit 2 */ + +#define ADC_SMPR1_SMP5 ((uint32_t)0x00038000) /*!< ADC Channel 5 Sampling time selection */ +#define ADC_SMPR1_SMP5_0 ((uint32_t)0x00008000) /*!< ADC SMP5 bit 0 */ +#define ADC_SMPR1_SMP5_1 ((uint32_t)0x00010000) /*!< ADC SMP5 bit 1 */ +#define ADC_SMPR1_SMP5_2 ((uint32_t)0x00020000) /*!< ADC SMP5 bit 2 */ + +#define ADC_SMPR1_SMP6 ((uint32_t)0x001C0000) /*!< ADC Channel 6 Sampling time selection */ +#define ADC_SMPR1_SMP6_0 ((uint32_t)0x00040000) /*!< ADC SMP6 bit 0 */ +#define ADC_SMPR1_SMP6_1 ((uint32_t)0x00080000) /*!< ADC SMP6 bit 1 */ +#define ADC_SMPR1_SMP6_2 ((uint32_t)0x00100000) /*!< ADC SMP6 bit 2 */ + +#define ADC_SMPR1_SMP7 ((uint32_t)0x00E00000) /*!< ADC Channel 7 Sampling time selection */ +#define ADC_SMPR1_SMP7_0 ((uint32_t)0x00200000) /*!< ADC SMP7 bit 0 */ +#define ADC_SMPR1_SMP7_1 ((uint32_t)0x00400000) /*!< ADC SMP7 bit 1 */ +#define ADC_SMPR1_SMP7_2 ((uint32_t)0x00800000) /*!< ADC SMP7 bit 2 */ + +#define ADC_SMPR1_SMP8 ((uint32_t)0x07000000) /*!< ADC Channel 8 Sampling time selection */ +#define ADC_SMPR1_SMP8_0 ((uint32_t)0x01000000) /*!< ADC SMP8 bit 0 */ +#define ADC_SMPR1_SMP8_1 ((uint32_t)0x02000000) /*!< ADC SMP8 bit 1 */ +#define ADC_SMPR1_SMP8_2 ((uint32_t)0x04000000) /*!< ADC SMP8 bit 2 */ + +#define ADC_SMPR1_SMP9 ((uint32_t)0x38000000) /*!< ADC Channel 9 Sampling time selection */ +#define ADC_SMPR1_SMP9_0 ((uint32_t)0x08000000) /*!< ADC SMP9 bit 0 */ +#define ADC_SMPR1_SMP9_1 ((uint32_t)0x10000000) /*!< ADC SMP9 bit 1 */ +#define ADC_SMPR1_SMP9_2 ((uint32_t)0x20000000) /*!< ADC SMP9 bit 2 */ + +/******************** Bit definition for ADC_SMPR2 register ********************/ +#define ADC_SMPR2_SMP10 ((uint32_t)0x00000007) /*!< ADC Channel 10 Sampling time selection */ +#define ADC_SMPR2_SMP10_0 ((uint32_t)0x00000001) /*!< ADC SMP10 bit 0 */ +#define ADC_SMPR2_SMP10_1 ((uint32_t)0x00000002) /*!< ADC SMP10 bit 1 */ +#define ADC_SMPR2_SMP10_2 ((uint32_t)0x00000004) /*!< ADC SMP10 bit 2 */ + +#define ADC_SMPR2_SMP11 ((uint32_t)0x00000038) /*!< ADC Channel 11 Sampling time selection */ +#define ADC_SMPR2_SMP11_0 ((uint32_t)0x00000008) /*!< ADC SMP11 bit 0 */ +#define ADC_SMPR2_SMP11_1 ((uint32_t)0x00000010) /*!< ADC SMP11 bit 1 */ +#define ADC_SMPR2_SMP11_2 ((uint32_t)0x00000020) /*!< ADC SMP11 bit 2 */ + +#define ADC_SMPR2_SMP12 ((uint32_t)0x000001C0) /*!< ADC Channel 12 Sampling time selection */ +#define ADC_SMPR2_SMP12_0 ((uint32_t)0x00000040) /*!< ADC SMP12 bit 0 */ +#define ADC_SMPR2_SMP12_1 ((uint32_t)0x00000080) /*!< ADC SMP12 bit 1 */ +#define ADC_SMPR2_SMP12_2 ((uint32_t)0x00000100) /*!< ADC SMP12 bit 2 */ + +#define ADC_SMPR2_SMP13 ((uint32_t)0x00000E00) /*!< ADC Channel 13 Sampling time selection */ +#define ADC_SMPR2_SMP13_0 ((uint32_t)0x00000200) /*!< ADC SMP13 bit 0 */ +#define ADC_SMPR2_SMP13_1 ((uint32_t)0x00000400) /*!< ADC SMP13 bit 1 */ +#define ADC_SMPR2_SMP13_2 ((uint32_t)0x00000800) /*!< ADC SMP13 bit 2 */ + +#define ADC_SMPR2_SMP14 ((uint32_t)0x00007000) /*!< ADC Channel 14 Sampling time selection */ +#define ADC_SMPR2_SMP14_0 ((uint32_t)0x00001000) /*!< ADC SMP14 bit 0 */ +#define ADC_SMPR2_SMP14_1 ((uint32_t)0x00002000) /*!< ADC SMP14 bit 1 */ +#define ADC_SMPR2_SMP14_2 ((uint32_t)0x00004000) /*!< ADC SMP14 bit 2 */ + +#define ADC_SMPR2_SMP15 ((uint32_t)0x00038000) /*!< ADC Channel 15 Sampling time selection */ +#define ADC_SMPR2_SMP15_0 ((uint32_t)0x00008000) /*!< ADC SMP15 bit 0 */ +#define ADC_SMPR2_SMP15_1 ((uint32_t)0x00010000) /*!< ADC SMP15 bit 1 */ +#define ADC_SMPR2_SMP15_2 ((uint32_t)0x00020000) /*!< ADC SMP15 bit 2 */ + +#define ADC_SMPR2_SMP16 ((uint32_t)0x001C0000) /*!< ADC Channel 16 Sampling time selection */ +#define ADC_SMPR2_SMP16_0 ((uint32_t)0x00040000) /*!< ADC SMP16 bit 0 */ +#define ADC_SMPR2_SMP16_1 ((uint32_t)0x00080000) /*!< ADC SMP16 bit 1 */ +#define ADC_SMPR2_SMP16_2 ((uint32_t)0x00100000) /*!< ADC SMP16 bit 2 */ + +#define ADC_SMPR2_SMP17 ((uint32_t)0x00E00000) /*!< ADC Channel 17 Sampling time selection */ +#define ADC_SMPR2_SMP17_0 ((uint32_t)0x00200000) /*!< ADC SMP17 bit 0 */ +#define ADC_SMPR2_SMP17_1 ((uint32_t)0x00400000) /*!< ADC SMP17 bit 1 */ +#define ADC_SMPR2_SMP17_2 ((uint32_t)0x00800000) /*!< ADC SMP17 bit 2 */ + +#define ADC_SMPR2_SMP18 ((uint32_t)0x07000000) /*!< ADC Channel 18 Sampling time selection */ +#define ADC_SMPR2_SMP18_0 ((uint32_t)0x01000000) /*!< ADC SMP18 bit 0 */ +#define ADC_SMPR2_SMP18_1 ((uint32_t)0x02000000) /*!< ADC SMP18 bit 1 */ +#define ADC_SMPR2_SMP18_2 ((uint32_t)0x04000000) /*!< ADC SMP18 bit 2 */ + +/******************** Bit definition for ADC_TR1 register ********************/ +#define ADC_TR1_LT1 ((uint32_t)0x00000FFF) /*!< ADC Analog watchdog 1 lower threshold */ +#define ADC_TR1_LT1_0 ((uint32_t)0x00000001) /*!< ADC LT1 bit 0 */ +#define ADC_TR1_LT1_1 ((uint32_t)0x00000002) /*!< ADC LT1 bit 1 */ +#define ADC_TR1_LT1_2 ((uint32_t)0x00000004) /*!< ADC LT1 bit 2 */ +#define ADC_TR1_LT1_3 ((uint32_t)0x00000008) /*!< ADC LT1 bit 3 */ +#define ADC_TR1_LT1_4 ((uint32_t)0x00000010) /*!< ADC LT1 bit 4 */ +#define ADC_TR1_LT1_5 ((uint32_t)0x00000020) /*!< ADC LT1 bit 5 */ +#define ADC_TR1_LT1_6 ((uint32_t)0x00000040) /*!< ADC LT1 bit 6 */ +#define ADC_TR1_LT1_7 ((uint32_t)0x00000080) /*!< ADC LT1 bit 7 */ +#define ADC_TR1_LT1_8 ((uint32_t)0x00000100) /*!< ADC LT1 bit 8 */ +#define ADC_TR1_LT1_9 ((uint32_t)0x00000200) /*!< ADC LT1 bit 9 */ +#define ADC_TR1_LT1_10 ((uint32_t)0x00000400) /*!< ADC LT1 bit 10 */ +#define ADC_TR1_LT1_11 ((uint32_t)0x00000800) /*!< ADC LT1 bit 11 */ + +#define ADC_TR1_HT1 ((uint32_t)0x0FFF0000) /*!< ADC Analog watchdog 1 higher threshold */ +#define ADC_TR1_HT1_0 ((uint32_t)0x00010000) /*!< ADC HT1 bit 0 */ +#define ADC_TR1_HT1_1 ((uint32_t)0x00020000) /*!< ADC HT1 bit 1 */ +#define ADC_TR1_HT1_2 ((uint32_t)0x00040000) /*!< ADC HT1 bit 2 */ +#define ADC_TR1_HT1_3 ((uint32_t)0x00080000) /*!< ADC HT1 bit 3 */ +#define ADC_TR1_HT1_4 ((uint32_t)0x00100000) /*!< ADC HT1 bit 4 */ +#define ADC_TR1_HT1_5 ((uint32_t)0x00200000) /*!< ADC HT1 bit 5 */ +#define ADC_TR1_HT1_6 ((uint32_t)0x00400000) /*!< ADC HT1 bit 6 */ +#define ADC_TR1_HT1_7 ((uint32_t)0x00800000) /*!< ADC HT1 bit 7 */ +#define ADC_TR1_HT1_8 ((uint32_t)0x01000000) /*!< ADC HT1 bit 8 */ +#define ADC_TR1_HT1_9 ((uint32_t)0x02000000) /*!< ADC HT1 bit 9 */ +#define ADC_TR1_HT1_10 ((uint32_t)0x04000000) /*!< ADC HT1 bit 10 */ +#define ADC_TR1_HT1_11 ((uint32_t)0x08000000) /*!< ADC HT1 bit 11 */ + +/******************** Bit definition for ADC_TR2 register ********************/ +#define ADC_TR2_LT2 ((uint32_t)0x000000FF) /*!< ADC Analog watchdog 2 lower threshold */ +#define ADC_TR2_LT2_0 ((uint32_t)0x00000001) /*!< ADC LT2 bit 0 */ +#define ADC_TR2_LT2_1 ((uint32_t)0x00000002) /*!< ADC LT2 bit 1 */ +#define ADC_TR2_LT2_2 ((uint32_t)0x00000004) /*!< ADC LT2 bit 2 */ +#define ADC_TR2_LT2_3 ((uint32_t)0x00000008) /*!< ADC LT2 bit 3 */ +#define ADC_TR2_LT2_4 ((uint32_t)0x00000010) /*!< ADC LT2 bit 4 */ +#define ADC_TR2_LT2_5 ((uint32_t)0x00000020) /*!< ADC LT2 bit 5 */ +#define ADC_TR2_LT2_6 ((uint32_t)0x00000040) /*!< ADC LT2 bit 6 */ +#define ADC_TR2_LT2_7 ((uint32_t)0x00000080) /*!< ADC LT2 bit 7 */ + +#define ADC_TR2_HT2 ((uint32_t)0x00FF0000) /*!< ADC Analog watchdog 2 higher threshold */ +#define ADC_TR2_HT2_0 ((uint32_t)0x00010000) /*!< ADC HT2 bit 0 */ +#define ADC_TR2_HT2_1 ((uint32_t)0x00020000) /*!< ADC HT2 bit 1 */ +#define ADC_TR2_HT2_2 ((uint32_t)0x00040000) /*!< ADC HT2 bit 2 */ +#define ADC_TR2_HT2_3 ((uint32_t)0x00080000) /*!< ADC HT2 bit 3 */ +#define ADC_TR2_HT2_4 ((uint32_t)0x00100000) /*!< ADC HT2 bit 4 */ +#define ADC_TR2_HT2_5 ((uint32_t)0x00200000) /*!< ADC HT2 bit 5 */ +#define ADC_TR2_HT2_6 ((uint32_t)0x00400000) /*!< ADC HT2 bit 6 */ +#define ADC_TR2_HT2_7 ((uint32_t)0x00800000) /*!< ADC HT2 bit 7 */ + +/******************** Bit definition for ADC_TR3 register ********************/ +#define ADC_TR3_LT3 ((uint32_t)0x000000FF) /*!< ADC Analog watchdog 3 lower threshold */ +#define ADC_TR3_LT3_0 ((uint32_t)0x00000001) /*!< ADC LT3 bit 0 */ +#define ADC_TR3_LT3_1 ((uint32_t)0x00000002) /*!< ADC LT3 bit 1 */ +#define ADC_TR3_LT3_2 ((uint32_t)0x00000004) /*!< ADC LT3 bit 2 */ +#define ADC_TR3_LT3_3 ((uint32_t)0x00000008) /*!< ADC LT3 bit 3 */ +#define ADC_TR3_LT3_4 ((uint32_t)0x00000010) /*!< ADC LT3 bit 4 */ +#define ADC_TR3_LT3_5 ((uint32_t)0x00000020) /*!< ADC LT3 bit 5 */ +#define ADC_TR3_LT3_6 ((uint32_t)0x00000040) /*!< ADC LT3 bit 6 */ +#define ADC_TR3_LT3_7 ((uint32_t)0x00000080) /*!< ADC LT3 bit 7 */ + +#define ADC_TR3_HT3 ((uint32_t)0x00FF0000) /*!< ADC Analog watchdog 3 higher threshold */ +#define ADC_TR3_HT3_0 ((uint32_t)0x00010000) /*!< ADC HT3 bit 0 */ +#define ADC_TR3_HT3_1 ((uint32_t)0x00020000) /*!< ADC HT3 bit 1 */ +#define ADC_TR3_HT3_2 ((uint32_t)0x00040000) /*!< ADC HT3 bit 2 */ +#define ADC_TR3_HT3_3 ((uint32_t)0x00080000) /*!< ADC HT3 bit 3 */ +#define ADC_TR3_HT3_4 ((uint32_t)0x00100000) /*!< ADC HT3 bit 4 */ +#define ADC_TR3_HT3_5 ((uint32_t)0x00200000) /*!< ADC HT3 bit 5 */ +#define ADC_TR3_HT3_6 ((uint32_t)0x00400000) /*!< ADC HT3 bit 6 */ +#define ADC_TR3_HT3_7 ((uint32_t)0x00800000) /*!< ADC HT3 bit 7 */ + +/******************** Bit definition for ADC_SQR1 register ********************/ +#define ADC_SQR1_L ((uint32_t)0x0000000F) /*!< ADC regular channel sequence length */ +#define ADC_SQR1_L_0 ((uint32_t)0x00000001) /*!< ADC L bit 0 */ +#define ADC_SQR1_L_1 ((uint32_t)0x00000002) /*!< ADC L bit 1 */ +#define ADC_SQR1_L_2 ((uint32_t)0x00000004) /*!< ADC L bit 2 */ +#define ADC_SQR1_L_3 ((uint32_t)0x00000008) /*!< ADC L bit 3 */ + +#define ADC_SQR1_SQ1 ((uint32_t)0x000007C0) /*!< ADC 1st conversion in regular sequence */ +#define ADC_SQR1_SQ1_0 ((uint32_t)0x00000040) /*!< ADC SQ1 bit 0 */ +#define ADC_SQR1_SQ1_1 ((uint32_t)0x00000080) /*!< ADC SQ1 bit 1 */ +#define ADC_SQR1_SQ1_2 ((uint32_t)0x00000100) /*!< ADC SQ1 bit 2 */ +#define ADC_SQR1_SQ1_3 ((uint32_t)0x00000200) /*!< ADC SQ1 bit 3 */ +#define ADC_SQR1_SQ1_4 ((uint32_t)0x00000400) /*!< ADC SQ1 bit 4 */ + +#define ADC_SQR1_SQ2 ((uint32_t)0x0001F000) /*!< ADC 2nd conversion in regular sequence */ +#define ADC_SQR1_SQ2_0 ((uint32_t)0x00001000) /*!< ADC SQ2 bit 0 */ +#define ADC_SQR1_SQ2_1 ((uint32_t)0x00002000) /*!< ADC SQ2 bit 1 */ +#define ADC_SQR1_SQ2_2 ((uint32_t)0x00004000) /*!< ADC SQ2 bit 2 */ +#define ADC_SQR1_SQ2_3 ((uint32_t)0x00008000) /*!< ADC SQ2 bit 3 */ +#define ADC_SQR1_SQ2_4 ((uint32_t)0x00010000) /*!< ADC SQ2 bit 4 */ + +#define ADC_SQR1_SQ3 ((uint32_t)0x007C0000) /*!< ADC 3rd conversion in regular sequence */ +#define ADC_SQR1_SQ3_0 ((uint32_t)0x00040000) /*!< ADC SQ3 bit 0 */ +#define ADC_SQR1_SQ3_1 ((uint32_t)0x00080000) /*!< ADC SQ3 bit 1 */ +#define ADC_SQR1_SQ3_2 ((uint32_t)0x00100000) /*!< ADC SQ3 bit 2 */ +#define ADC_SQR1_SQ3_3 ((uint32_t)0x00200000) /*!< ADC SQ3 bit 3 */ +#define ADC_SQR1_SQ3_4 ((uint32_t)0x00400000) /*!< ADC SQ3 bit 4 */ + +#define ADC_SQR1_SQ4 ((uint32_t)0x1F000000) /*!< ADC 4th conversion in regular sequence */ +#define ADC_SQR1_SQ4_0 ((uint32_t)0x01000000) /*!< ADC SQ4 bit 0 */ +#define ADC_SQR1_SQ4_1 ((uint32_t)0x02000000) /*!< ADC SQ4 bit 1 */ +#define ADC_SQR1_SQ4_2 ((uint32_t)0x04000000) /*!< ADC SQ4 bit 2 */ +#define ADC_SQR1_SQ4_3 ((uint32_t)0x08000000) /*!< ADC SQ4 bit 3 */ +#define ADC_SQR1_SQ4_4 ((uint32_t)0x10000000) /*!< ADC SQ4 bit 4 */ + +/******************** Bit definition for ADC_SQR2 register ********************/ +#define ADC_SQR2_SQ5 ((uint32_t)0x0000001F) /*!< ADC 5th conversion in regular sequence */ +#define ADC_SQR2_SQ5_0 ((uint32_t)0x00000001) /*!< ADC SQ5 bit 0 */ +#define ADC_SQR2_SQ5_1 ((uint32_t)0x00000002) /*!< ADC SQ5 bit 1 */ +#define ADC_SQR2_SQ5_2 ((uint32_t)0x00000004) /*!< ADC SQ5 bit 2 */ +#define ADC_SQR2_SQ5_3 ((uint32_t)0x00000008) /*!< ADC SQ5 bit 3 */ +#define ADC_SQR2_SQ5_4 ((uint32_t)0x00000010) /*!< ADC SQ5 bit 4 */ + +#define ADC_SQR2_SQ6 ((uint32_t)0x000007C0) /*!< ADC 6th conversion in regular sequence */ +#define ADC_SQR2_SQ6_0 ((uint32_t)0x00000040) /*!< ADC SQ6 bit 0 */ +#define ADC_SQR2_SQ6_1 ((uint32_t)0x00000080) /*!< ADC SQ6 bit 1 */ +#define ADC_SQR2_SQ6_2 ((uint32_t)0x00000100) /*!< ADC SQ6 bit 2 */ +#define ADC_SQR2_SQ6_3 ((uint32_t)0x00000200) /*!< ADC SQ6 bit 3 */ +#define ADC_SQR2_SQ6_4 ((uint32_t)0x00000400) /*!< ADC SQ6 bit 4 */ + +#define ADC_SQR2_SQ7 ((uint32_t)0x0001F000) /*!< ADC 7th conversion in regular sequence */ +#define ADC_SQR2_SQ7_0 ((uint32_t)0x00001000) /*!< ADC SQ7 bit 0 */ +#define ADC_SQR2_SQ7_1 ((uint32_t)0x00002000) /*!< ADC SQ7 bit 1 */ +#define ADC_SQR2_SQ7_2 ((uint32_t)0x00004000) /*!< ADC SQ7 bit 2 */ +#define ADC_SQR2_SQ7_3 ((uint32_t)0x00008000) /*!< ADC SQ7 bit 3 */ +#define ADC_SQR2_SQ7_4 ((uint32_t)0x00010000) /*!< ADC SQ7 bit 4 */ + +#define ADC_SQR2_SQ8 ((uint32_t)0x007C0000) /*!< ADC 8th conversion in regular sequence */ +#define ADC_SQR2_SQ8_0 ((uint32_t)0x00040000) /*!< ADC SQ8 bit 0 */ +#define ADC_SQR2_SQ8_1 ((uint32_t)0x00080000) /*!< ADC SQ8 bit 1 */ +#define ADC_SQR2_SQ8_2 ((uint32_t)0x00100000) /*!< ADC SQ8 bit 2 */ +#define ADC_SQR2_SQ8_3 ((uint32_t)0x00200000) /*!< ADC SQ8 bit 3 */ +#define ADC_SQR2_SQ8_4 ((uint32_t)0x00400000) /*!< ADC SQ8 bit 4 */ + +#define ADC_SQR2_SQ9 ((uint32_t)0x1F000000) /*!< ADC 9th conversion in regular sequence */ +#define ADC_SQR2_SQ9_0 ((uint32_t)0x01000000) /*!< ADC SQ9 bit 0 */ +#define ADC_SQR2_SQ9_1 ((uint32_t)0x02000000) /*!< ADC SQ9 bit 1 */ +#define ADC_SQR2_SQ9_2 ((uint32_t)0x04000000) /*!< ADC SQ9 bit 2 */ +#define ADC_SQR2_SQ9_3 ((uint32_t)0x08000000) /*!< ADC SQ9 bit 3 */ +#define ADC_SQR2_SQ9_4 ((uint32_t)0x10000000) /*!< ADC SQ9 bit 4 */ + +/******************** Bit definition for ADC_SQR3 register ********************/ +#define ADC_SQR3_SQ10 ((uint32_t)0x0000001F) /*!< ADC 10th conversion in regular sequence */ +#define ADC_SQR3_SQ10_0 ((uint32_t)0x00000001) /*!< ADC SQ10 bit 0 */ +#define ADC_SQR3_SQ10_1 ((uint32_t)0x00000002) /*!< ADC SQ10 bit 1 */ +#define ADC_SQR3_SQ10_2 ((uint32_t)0x00000004) /*!< ADC SQ10 bit 2 */ +#define ADC_SQR3_SQ10_3 ((uint32_t)0x00000008) /*!< ADC SQ10 bit 3 */ +#define ADC_SQR3_SQ10_4 ((uint32_t)0x00000010) /*!< ADC SQ10 bit 4 */ + +#define ADC_SQR3_SQ11 ((uint32_t)0x000007C0) /*!< ADC 11th conversion in regular sequence */ +#define ADC_SQR3_SQ11_0 ((uint32_t)0x00000040) /*!< ADC SQ11 bit 0 */ +#define ADC_SQR3_SQ11_1 ((uint32_t)0x00000080) /*!< ADC SQ11 bit 1 */ +#define ADC_SQR3_SQ11_2 ((uint32_t)0x00000100) /*!< ADC SQ11 bit 2 */ +#define ADC_SQR3_SQ11_3 ((uint32_t)0x00000200) /*!< ADC SQ11 bit 3 */ +#define ADC_SQR3_SQ11_4 ((uint32_t)0x00000400) /*!< ADC SQ11 bit 4 */ + +#define ADC_SQR3_SQ12 ((uint32_t)0x0001F000) /*!< ADC 12th conversion in regular sequence */ +#define ADC_SQR3_SQ12_0 ((uint32_t)0x00001000) /*!< ADC SQ12 bit 0 */ +#define ADC_SQR3_SQ12_1 ((uint32_t)0x00002000) /*!< ADC SQ12 bit 1 */ +#define ADC_SQR3_SQ12_2 ((uint32_t)0x00004000) /*!< ADC SQ12 bit 2 */ +#define ADC_SQR3_SQ12_3 ((uint32_t)0x00008000) /*!< ADC SQ12 bit 3 */ +#define ADC_SQR3_SQ12_4 ((uint32_t)0x00010000) /*!< ADC SQ12 bit 4 */ + +#define ADC_SQR3_SQ13 ((uint32_t)0x007C0000) /*!< ADC 13th conversion in regular sequence */ +#define ADC_SQR3_SQ13_0 ((uint32_t)0x00040000) /*!< ADC SQ13 bit 0 */ +#define ADC_SQR3_SQ13_1 ((uint32_t)0x00080000) /*!< ADC SQ13 bit 1 */ +#define ADC_SQR3_SQ13_2 ((uint32_t)0x00100000) /*!< ADC SQ13 bit 2 */ +#define ADC_SQR3_SQ13_3 ((uint32_t)0x00200000) /*!< ADC SQ13 bit 3 */ +#define ADC_SQR3_SQ13_4 ((uint32_t)0x00400000) /*!< ADC SQ13 bit 4 */ + +#define ADC_SQR3_SQ14 ((uint32_t)0x1F000000) /*!< ADC 14th conversion in regular sequence */ +#define ADC_SQR3_SQ14_0 ((uint32_t)0x01000000) /*!< ADC SQ14 bit 0 */ +#define ADC_SQR3_SQ14_1 ((uint32_t)0x02000000) /*!< ADC SQ14 bit 1 */ +#define ADC_SQR3_SQ14_2 ((uint32_t)0x04000000) /*!< ADC SQ14 bit 2 */ +#define ADC_SQR3_SQ14_3 ((uint32_t)0x08000000) /*!< ADC SQ14 bit 3 */ +#define ADC_SQR3_SQ14_4 ((uint32_t)0x10000000) /*!< ADC SQ14 bit 4 */ + +/******************** Bit definition for ADC_SQR4 register ********************/ +#define ADC_SQR4_SQ15 ((uint32_t)0x0000001F) /*!< ADC 15th conversion in regular sequence */ +#define ADC_SQR4_SQ15_0 ((uint32_t)0x00000001) /*!< ADC SQ15 bit 0 */ +#define ADC_SQR4_SQ15_1 ((uint32_t)0x00000002) /*!< ADC SQ15 bit 1 */ +#define ADC_SQR4_SQ15_2 ((uint32_t)0x00000004) /*!< ADC SQ15 bit 2 */ +#define ADC_SQR4_SQ15_3 ((uint32_t)0x00000008) /*!< ADC SQ15 bit 3 */ +#define ADC_SQR4_SQ15_4 ((uint32_t)0x00000010) /*!< ADC SQ105 bit 4 */ + +#define ADC_SQR4_SQ16 ((uint32_t)0x000007C0) /*!< ADC 16th conversion in regular sequence */ +#define ADC_SQR4_SQ16_0 ((uint32_t)0x00000040) /*!< ADC SQ16 bit 0 */ +#define ADC_SQR4_SQ16_1 ((uint32_t)0x00000080) /*!< ADC SQ16 bit 1 */ +#define ADC_SQR4_SQ16_2 ((uint32_t)0x00000100) /*!< ADC SQ16 bit 2 */ +#define ADC_SQR4_SQ16_3 ((uint32_t)0x00000200) /*!< ADC SQ16 bit 3 */ +#define ADC_SQR4_SQ16_4 ((uint32_t)0x00000400) /*!< ADC SQ16 bit 4 */ + +/* these defines are maintained for legacy purpose */ +#define ADC_SQR3_SQ15 ADC_SQR4_SQ15 /*!< ADC 15th conversion in regular sequence */ +#define ADC_SQR3_SQ15_0 ADC_SQR4_SQ15_0 /*!< ADC SQ15 bit 0 */ +#define ADC_SQR3_SQ15_1 ADC_SQR4_SQ15_1 /*!< ADC SQ15 bit 1 */ +#define ADC_SQR3_SQ15_2 ADC_SQR4_SQ15_2 /*!< ADC SQ15 bit 2 */ +#define ADC_SQR3_SQ15_3 ADC_SQR4_SQ15_3 /*!< ADC SQ15 bit 3 */ +#define ADC_SQR3_SQ15_4 ADC_SQR4_SQ15_4 /*!< ADC SQ105 bit 4 */ + +#define ADC_SQR3_SQ16 ADC_SQR4_SQ16 /*!< ADC 16th conversion in regular sequence */ +#define ADC_SQR3_SQ16_0 ADC_SQR4_SQ16_0 /*!< ADC SQ16 bit 0 */ +#define ADC_SQR3_SQ16_1 ADC_SQR4_SQ16_1 /*!< ADC SQ16 bit 1 */ +#define ADC_SQR3_SQ16_2 ADC_SQR4_SQ16_2 /*!< ADC SQ16 bit 2 */ +#define ADC_SQR3_SQ16_3 ADC_SQR4_SQ16_3 /*!< ADC SQ16 bit 3 */ +#define ADC_SQR3_SQ16_4 ADC_SQR4_SQ16_4 /*!< ADC SQ16 bit 4 */ +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_RDATA ((uint32_t)0x0000FFFF) /*!< ADC regular Data converted */ +#define ADC_DR_RDATA_0 ((uint32_t)0x00000001) /*!< ADC RDATA bit 0 */ +#define ADC_DR_RDATA_1 ((uint32_t)0x00000002) /*!< ADC RDATA bit 1 */ +#define ADC_DR_RDATA_2 ((uint32_t)0x00000004) /*!< ADC RDATA bit 2 */ +#define ADC_DR_RDATA_3 ((uint32_t)0x00000008) /*!< ADC RDATA bit 3 */ +#define ADC_DR_RDATA_4 ((uint32_t)0x00000010) /*!< ADC RDATA bit 4 */ +#define ADC_DR_RDATA_5 ((uint32_t)0x00000020) /*!< ADC RDATA bit 5 */ +#define ADC_DR_RDATA_6 ((uint32_t)0x00000040) /*!< ADC RDATA bit 6 */ +#define ADC_DR_RDATA_7 ((uint32_t)0x00000080) /*!< ADC RDATA bit 7 */ +#define ADC_DR_RDATA_8 ((uint32_t)0x00000100) /*!< ADC RDATA bit 8 */ +#define ADC_DR_RDATA_9 ((uint32_t)0x00000200) /*!< ADC RDATA bit 9 */ +#define ADC_DR_RDATA_10 ((uint32_t)0x00000400) /*!< ADC RDATA bit 10 */ +#define ADC_DR_RDATA_11 ((uint32_t)0x00000800) /*!< ADC RDATA bit 11 */ +#define ADC_DR_RDATA_12 ((uint32_t)0x00001000) /*!< ADC RDATA bit 12 */ +#define ADC_DR_RDATA_13 ((uint32_t)0x00002000) /*!< ADC RDATA bit 13 */ +#define ADC_DR_RDATA_14 ((uint32_t)0x00004000) /*!< ADC RDATA bit 14 */ +#define ADC_DR_RDATA_15 ((uint32_t)0x00008000) /*!< ADC RDATA bit 15 */ + +/******************** Bit definition for ADC_JSQR register ********************/ +#define ADC_JSQR_JL ((uint32_t)0x00000003) /*!< ADC injected channel sequence length */ +#define ADC_JSQR_JL_0 ((uint32_t)0x00000001) /*!< ADC JL bit 0 */ +#define ADC_JSQR_JL_1 ((uint32_t)0x00000002) /*!< ADC JL bit 1 */ + +#define ADC_JSQR_JEXTSEL ((uint32_t)0x0000003C) /*!< ADC external trigger selection for injected group */ +#define ADC_JSQR_JEXTSEL_0 ((uint32_t)0x00000004) /*!< ADC JEXTSEL bit 0 */ +#define ADC_JSQR_JEXTSEL_1 ((uint32_t)0x00000008) /*!< ADC JEXTSEL bit 1 */ +#define ADC_JSQR_JEXTSEL_2 ((uint32_t)0x00000010) /*!< ADC JEXTSEL bit 2 */ +#define ADC_JSQR_JEXTSEL_3 ((uint32_t)0x00000020) /*!< ADC JEXTSEL bit 3 */ + +#define ADC_JSQR_JEXTEN ((uint32_t)0x000000C0) /*!< ADC external trigger enable and polarity selection for injected channels */ +#define ADC_JSQR_JEXTEN_0 ((uint32_t)0x00000040) /*!< ADC JEXTEN bit 0 */ +#define ADC_JSQR_JEXTEN_1 ((uint32_t)0x00000080) /*!< ADC JEXTEN bit 1 */ + +#define ADC_JSQR_JSQ1 ((uint32_t)0x00001F00) /*!< ADC 1st conversion in injected sequence */ +#define ADC_JSQR_JSQ1_0 ((uint32_t)0x00000100) /*!< ADC JSQ1 bit 0 */ +#define ADC_JSQR_JSQ1_1 ((uint32_t)0x00000200) /*!< ADC JSQ1 bit 1 */ +#define ADC_JSQR_JSQ1_2 ((uint32_t)0x00000400) /*!< ADC JSQ1 bit 2 */ +#define ADC_JSQR_JSQ1_3 ((uint32_t)0x00000800) /*!< ADC JSQ1 bit 3 */ +#define ADC_JSQR_JSQ1_4 ((uint32_t)0x00001000) /*!< ADC JSQ1 bit 4 */ + +#define ADC_JSQR_JSQ2 ((uint32_t)0x0007C000) /*!< ADC 2nd conversion in injected sequence */ +#define ADC_JSQR_JSQ2_0 ((uint32_t)0x00004000) /*!< ADC JSQ2 bit 0 */ +#define ADC_JSQR_JSQ2_1 ((uint32_t)0x00008000) /*!< ADC JSQ2 bit 1 */ +#define ADC_JSQR_JSQ2_2 ((uint32_t)0x00010000) /*!< ADC JSQ2 bit 2 */ +#define ADC_JSQR_JSQ2_3 ((uint32_t)0x00020000) /*!< ADC JSQ2 bit 3 */ +#define ADC_JSQR_JSQ2_4 ((uint32_t)0x00040000) /*!< ADC JSQ2 bit 4 */ + +#define ADC_JSQR_JSQ3 ((uint32_t)0x01F00000) /*!< ADC 3rd conversion in injected sequence */ +#define ADC_JSQR_JSQ3_0 ((uint32_t)0x00100000) /*!< ADC JSQ3 bit 0 */ +#define ADC_JSQR_JSQ3_1 ((uint32_t)0x00200000) /*!< ADC JSQ3 bit 1 */ +#define ADC_JSQR_JSQ3_2 ((uint32_t)0x00400000) /*!< ADC JSQ3 bit 2 */ +#define ADC_JSQR_JSQ3_3 ((uint32_t)0x00800000) /*!< ADC JSQ3 bit 3 */ +#define ADC_JSQR_JSQ3_4 ((uint32_t)0x01000000) /*!< ADC JSQ3 bit 4 */ + +#define ADC_JSQR_JSQ4 ((uint32_t)0x7C000000) /*!< ADC 4th conversion in injected sequence */ +#define ADC_JSQR_JSQ4_0 ((uint32_t)0x04000000) /*!< ADC JSQ4 bit 0 */ +#define ADC_JSQR_JSQ4_1 ((uint32_t)0x08000000) /*!< ADC JSQ4 bit 1 */ +#define ADC_JSQR_JSQ4_2 ((uint32_t)0x10000000) /*!< ADC JSQ4 bit 2 */ +#define ADC_JSQR_JSQ4_3 ((uint32_t)0x20000000) /*!< ADC JSQ4 bit 3 */ +#define ADC_JSQR_JSQ4_4 ((uint32_t)0x40000000) /*!< ADC JSQ4 bit 4 */ + +/******************** Bit definition for ADC_OFR1 register ********************/ +#define ADC_OFR1_OFFSET1 ((uint32_t)0x00000FFF) /*!< ADC data offset 1 for channel programmed into bits OFFSET1_CH[4:0] */ +#define ADC_OFR1_OFFSET1_0 ((uint32_t)0x00000001) /*!< ADC OFFSET1 bit 0 */ +#define ADC_OFR1_OFFSET1_1 ((uint32_t)0x00000002) /*!< ADC OFFSET1 bit 1 */ +#define ADC_OFR1_OFFSET1_2 ((uint32_t)0x00000004) /*!< ADC OFFSET1 bit 2 */ +#define ADC_OFR1_OFFSET1_3 ((uint32_t)0x00000008) /*!< ADC OFFSET1 bit 3 */ +#define ADC_OFR1_OFFSET1_4 ((uint32_t)0x00000010) /*!< ADC OFFSET1 bit 4 */ +#define ADC_OFR1_OFFSET1_5 ((uint32_t)0x00000020) /*!< ADC OFFSET1 bit 5 */ +#define ADC_OFR1_OFFSET1_6 ((uint32_t)0x00000040) /*!< ADC OFFSET1 bit 6 */ +#define ADC_OFR1_OFFSET1_7 ((uint32_t)0x00000080) /*!< ADC OFFSET1 bit 7 */ +#define ADC_OFR1_OFFSET1_8 ((uint32_t)0x00000100) /*!< ADC OFFSET1 bit 8 */ +#define ADC_OFR1_OFFSET1_9 ((uint32_t)0x00000200) /*!< ADC OFFSET1 bit 9 */ +#define ADC_OFR1_OFFSET1_10 ((uint32_t)0x00000400) /*!< ADC OFFSET1 bit 10 */ +#define ADC_OFR1_OFFSET1_11 ((uint32_t)0x00000800) /*!< ADC OFFSET1 bit 11 */ + +#define ADC_OFR1_OFFSET1_CH ((uint32_t)0x7C000000) /*!< ADC Channel selection for the data offset 1 */ +#define ADC_OFR1_OFFSET1_CH_0 ((uint32_t)0x04000000) /*!< ADC OFFSET1_CH bit 0 */ +#define ADC_OFR1_OFFSET1_CH_1 ((uint32_t)0x08000000) /*!< ADC OFFSET1_CH bit 1 */ +#define ADC_OFR1_OFFSET1_CH_2 ((uint32_t)0x10000000) /*!< ADC OFFSET1_CH bit 2 */ +#define ADC_OFR1_OFFSET1_CH_3 ((uint32_t)0x20000000) /*!< ADC OFFSET1_CH bit 3 */ +#define ADC_OFR1_OFFSET1_CH_4 ((uint32_t)0x40000000) /*!< ADC OFFSET1_CH bit 4 */ + +#define ADC_OFR1_OFFSET1_EN ((uint32_t)0x80000000) /*!< ADC offset 1 enable */ + +/******************** Bit definition for ADC_OFR2 register ********************/ +#define ADC_OFR2_OFFSET2 ((uint32_t)0x00000FFF) /*!< ADC data offset 2 for channel programmed into bits OFFSET2_CH[4:0] */ +#define ADC_OFR2_OFFSET2_0 ((uint32_t)0x00000001) /*!< ADC OFFSET2 bit 0 */ +#define ADC_OFR2_OFFSET2_1 ((uint32_t)0x00000002) /*!< ADC OFFSET2 bit 1 */ +#define ADC_OFR2_OFFSET2_2 ((uint32_t)0x00000004) /*!< ADC OFFSET2 bit 2 */ +#define ADC_OFR2_OFFSET2_3 ((uint32_t)0x00000008) /*!< ADC OFFSET2 bit 3 */ +#define ADC_OFR2_OFFSET2_4 ((uint32_t)0x00000010) /*!< ADC OFFSET2 bit 4 */ +#define ADC_OFR2_OFFSET2_5 ((uint32_t)0x00000020) /*!< ADC OFFSET2 bit 5 */ +#define ADC_OFR2_OFFSET2_6 ((uint32_t)0x00000040) /*!< ADC OFFSET2 bit 6 */ +#define ADC_OFR2_OFFSET2_7 ((uint32_t)0x00000080) /*!< ADC OFFSET2 bit 7 */ +#define ADC_OFR2_OFFSET2_8 ((uint32_t)0x00000100) /*!< ADC OFFSET2 bit 8 */ +#define ADC_OFR2_OFFSET2_9 ((uint32_t)0x00000200) /*!< ADC OFFSET2 bit 9 */ +#define ADC_OFR2_OFFSET2_10 ((uint32_t)0x00000400) /*!< ADC OFFSET2 bit 10 */ +#define ADC_OFR2_OFFSET2_11 ((uint32_t)0x00000800) /*!< ADC OFFSET2 bit 11 */ + +#define ADC_OFR2_OFFSET2_CH ((uint32_t)0x7C000000) /*!< ADC Channel selection for the data offset 2 */ +#define ADC_OFR2_OFFSET2_CH_0 ((uint32_t)0x04000000) /*!< ADC OFFSET2_CH bit 0 */ +#define ADC_OFR2_OFFSET2_CH_1 ((uint32_t)0x08000000) /*!< ADC OFFSET2_CH bit 1 */ +#define ADC_OFR2_OFFSET2_CH_2 ((uint32_t)0x10000000) /*!< ADC OFFSET2_CH bit 2 */ +#define ADC_OFR2_OFFSET2_CH_3 ((uint32_t)0x20000000) /*!< ADC OFFSET2_CH bit 3 */ +#define ADC_OFR2_OFFSET2_CH_4 ((uint32_t)0x40000000) /*!< ADC OFFSET2_CH bit 4 */ + +#define ADC_OFR2_OFFSET2_EN ((uint32_t)0x80000000) /*!< ADC offset 2 enable */ + +/******************** Bit definition for ADC_OFR3 register ********************/ +#define ADC_OFR3_OFFSET3 ((uint32_t)0x00000FFF) /*!< ADC data offset 3 for channel programmed into bits OFFSET3_CH[4:0] */ +#define ADC_OFR3_OFFSET3_0 ((uint32_t)0x00000001) /*!< ADC OFFSET3 bit 0 */ +#define ADC_OFR3_OFFSET3_1 ((uint32_t)0x00000002) /*!< ADC OFFSET3 bit 1 */ +#define ADC_OFR3_OFFSET3_2 ((uint32_t)0x00000004) /*!< ADC OFFSET3 bit 2 */ +#define ADC_OFR3_OFFSET3_3 ((uint32_t)0x00000008) /*!< ADC OFFSET3 bit 3 */ +#define ADC_OFR3_OFFSET3_4 ((uint32_t)0x00000010) /*!< ADC OFFSET3 bit 4 */ +#define ADC_OFR3_OFFSET3_5 ((uint32_t)0x00000020) /*!< ADC OFFSET3 bit 5 */ +#define ADC_OFR3_OFFSET3_6 ((uint32_t)0x00000040) /*!< ADC OFFSET3 bit 6 */ +#define ADC_OFR3_OFFSET3_7 ((uint32_t)0x00000080) /*!< ADC OFFSET3 bit 7 */ +#define ADC_OFR3_OFFSET3_8 ((uint32_t)0x00000100) /*!< ADC OFFSET3 bit 8 */ +#define ADC_OFR3_OFFSET3_9 ((uint32_t)0x00000200) /*!< ADC OFFSET3 bit 9 */ +#define ADC_OFR3_OFFSET3_10 ((uint32_t)0x00000400) /*!< ADC OFFSET3 bit 10 */ +#define ADC_OFR3_OFFSET3_11 ((uint32_t)0x00000800) /*!< ADC OFFSET3 bit 11 */ + +#define ADC_OFR3_OFFSET3_CH ((uint32_t)0x7C000000) /*!< ADC Channel selection for the data offset 3 */ +#define ADC_OFR3_OFFSET3_CH_0 ((uint32_t)0x04000000) /*!< ADC OFFSET3_CH bit 0 */ +#define ADC_OFR3_OFFSET3_CH_1 ((uint32_t)0x08000000) /*!< ADC OFFSET3_CH bit 1 */ +#define ADC_OFR3_OFFSET3_CH_2 ((uint32_t)0x10000000) /*!< ADC OFFSET3_CH bit 2 */ +#define ADC_OFR3_OFFSET3_CH_3 ((uint32_t)0x20000000) /*!< ADC OFFSET3_CH bit 3 */ +#define ADC_OFR3_OFFSET3_CH_4 ((uint32_t)0x40000000) /*!< ADC OFFSET3_CH bit 4 */ + +#define ADC_OFR3_OFFSET3_EN ((uint32_t)0x80000000) /*!< ADC offset 3 enable */ + +/******************** Bit definition for ADC_OFR4 register ********************/ +#define ADC_OFR4_OFFSET4 ((uint32_t)0x00000FFF) /*!< ADC data offset 4 for channel programmed into bits OFFSET4_CH[4:0] */ +#define ADC_OFR4_OFFSET4_0 ((uint32_t)0x00000001) /*!< ADC OFFSET4 bit 0 */ +#define ADC_OFR4_OFFSET4_1 ((uint32_t)0x00000002) /*!< ADC OFFSET4 bit 1 */ +#define ADC_OFR4_OFFSET4_2 ((uint32_t)0x00000004) /*!< ADC OFFSET4 bit 2 */ +#define ADC_OFR4_OFFSET4_3 ((uint32_t)0x00000008) /*!< ADC OFFSET4 bit 3 */ +#define ADC_OFR4_OFFSET4_4 ((uint32_t)0x00000010) /*!< ADC OFFSET4 bit 4 */ +#define ADC_OFR4_OFFSET4_5 ((uint32_t)0x00000020) /*!< ADC OFFSET4 bit 5 */ +#define ADC_OFR4_OFFSET4_6 ((uint32_t)0x00000040) /*!< ADC OFFSET4 bit 6 */ +#define ADC_OFR4_OFFSET4_7 ((uint32_t)0x00000080) /*!< ADC OFFSET4 bit 7 */ +#define ADC_OFR4_OFFSET4_8 ((uint32_t)0x00000100) /*!< ADC OFFSET4 bit 8 */ +#define ADC_OFR4_OFFSET4_9 ((uint32_t)0x00000200) /*!< ADC OFFSET4 bit 9 */ +#define ADC_OFR4_OFFSET4_10 ((uint32_t)0x00000400) /*!< ADC OFFSET4 bit 10 */ +#define ADC_OFR4_OFFSET4_11 ((uint32_t)0x00000800) /*!< ADC OFFSET4 bit 11 */ + +#define ADC_OFR4_OFFSET4_CH ((uint32_t)0x7C000000) /*!< ADC Channel selection for the data offset 4 */ +#define ADC_OFR4_OFFSET4_CH_0 ((uint32_t)0x04000000) /*!< ADC OFFSET4_CH bit 0 */ +#define ADC_OFR4_OFFSET4_CH_1 ((uint32_t)0x08000000) /*!< ADC OFFSET4_CH bit 1 */ +#define ADC_OFR4_OFFSET4_CH_2 ((uint32_t)0x10000000) /*!< ADC OFFSET4_CH bit 2 */ +#define ADC_OFR4_OFFSET4_CH_3 ((uint32_t)0x20000000) /*!< ADC OFFSET4_CH bit 3 */ +#define ADC_OFR4_OFFSET4_CH_4 ((uint32_t)0x40000000) /*!< ADC OFFSET4_CH bit 4 */ + +#define ADC_OFR4_OFFSET4_EN ((uint32_t)0x80000000) /*!< ADC offset 4 enable */ + +/******************** Bit definition for ADC_JDR1 register ********************/ +#define ADC_JDR1_JDATA ((uint32_t)0x0000FFFF) /*!< ADC Injected DATA */ +#define ADC_JDR1_JDATA_0 ((uint32_t)0x00000001) /*!< ADC JDATA bit 0 */ +#define ADC_JDR1_JDATA_1 ((uint32_t)0x00000002) /*!< ADC JDATA bit 1 */ +#define ADC_JDR1_JDATA_2 ((uint32_t)0x00000004) /*!< ADC JDATA bit 2 */ +#define ADC_JDR1_JDATA_3 ((uint32_t)0x00000008) /*!< ADC JDATA bit 3 */ +#define ADC_JDR1_JDATA_4 ((uint32_t)0x00000010) /*!< ADC JDATA bit 4 */ +#define ADC_JDR1_JDATA_5 ((uint32_t)0x00000020) /*!< ADC JDATA bit 5 */ +#define ADC_JDR1_JDATA_6 ((uint32_t)0x00000040) /*!< ADC JDATA bit 6 */ +#define ADC_JDR1_JDATA_7 ((uint32_t)0x00000080) /*!< ADC JDATA bit 7 */ +#define ADC_JDR1_JDATA_8 ((uint32_t)0x00000100) /*!< ADC JDATA bit 8 */ +#define ADC_JDR1_JDATA_9 ((uint32_t)0x00000200) /*!< ADC JDATA bit 9 */ +#define ADC_JDR1_JDATA_10 ((uint32_t)0x00000400) /*!< ADC JDATA bit 10 */ +#define ADC_JDR1_JDATA_11 ((uint32_t)0x00000800) /*!< ADC JDATA bit 11 */ +#define ADC_JDR1_JDATA_12 ((uint32_t)0x00001000) /*!< ADC JDATA bit 12 */ +#define ADC_JDR1_JDATA_13 ((uint32_t)0x00002000) /*!< ADC JDATA bit 13 */ +#define ADC_JDR1_JDATA_14 ((uint32_t)0x00004000) /*!< ADC JDATA bit 14 */ +#define ADC_JDR1_JDATA_15 ((uint32_t)0x00008000) /*!< ADC JDATA bit 15 */ + +/******************** Bit definition for ADC_JDR2 register ********************/ +#define ADC_JDR2_JDATA ((uint32_t)0x0000FFFF) /*!< ADC Injected DATA */ +#define ADC_JDR2_JDATA_0 ((uint32_t)0x00000001) /*!< ADC JDATA bit 0 */ +#define ADC_JDR2_JDATA_1 ((uint32_t)0x00000002) /*!< ADC JDATA bit 1 */ +#define ADC_JDR2_JDATA_2 ((uint32_t)0x00000004) /*!< ADC JDATA bit 2 */ +#define ADC_JDR2_JDATA_3 ((uint32_t)0x00000008) /*!< ADC JDATA bit 3 */ +#define ADC_JDR2_JDATA_4 ((uint32_t)0x00000010) /*!< ADC JDATA bit 4 */ +#define ADC_JDR2_JDATA_5 ((uint32_t)0x00000020) /*!< ADC JDATA bit 5 */ +#define ADC_JDR2_JDATA_6 ((uint32_t)0x00000040) /*!< ADC JDATA bit 6 */ +#define ADC_JDR2_JDATA_7 ((uint32_t)0x00000080) /*!< ADC JDATA bit 7 */ +#define ADC_JDR2_JDATA_8 ((uint32_t)0x00000100) /*!< ADC JDATA bit 8 */ +#define ADC_JDR2_JDATA_9 ((uint32_t)0x00000200) /*!< ADC JDATA bit 9 */ +#define ADC_JDR2_JDATA_10 ((uint32_t)0x00000400) /*!< ADC JDATA bit 10 */ +#define ADC_JDR2_JDATA_11 ((uint32_t)0x00000800) /*!< ADC JDATA bit 11 */ +#define ADC_JDR2_JDATA_12 ((uint32_t)0x00001000) /*!< ADC JDATA bit 12 */ +#define ADC_JDR2_JDATA_13 ((uint32_t)0x00002000) /*!< ADC JDATA bit 13 */ +#define ADC_JDR2_JDATA_14 ((uint32_t)0x00004000) /*!< ADC JDATA bit 14 */ +#define ADC_JDR2_JDATA_15 ((uint32_t)0x00008000) /*!< ADC JDATA bit 15 */ + +/******************** Bit definition for ADC_JDR3 register ********************/ +#define ADC_JDR3_JDATA ((uint32_t)0x0000FFFF) /*!< ADC Injected DATA */ +#define ADC_JDR3_JDATA_0 ((uint32_t)0x00000001) /*!< ADC JDATA bit 0 */ +#define ADC_JDR3_JDATA_1 ((uint32_t)0x00000002) /*!< ADC JDATA bit 1 */ +#define ADC_JDR3_JDATA_2 ((uint32_t)0x00000004) /*!< ADC JDATA bit 2 */ +#define ADC_JDR3_JDATA_3 ((uint32_t)0x00000008) /*!< ADC JDATA bit 3 */ +#define ADC_JDR3_JDATA_4 ((uint32_t)0x00000010) /*!< ADC JDATA bit 4 */ +#define ADC_JDR3_JDATA_5 ((uint32_t)0x00000020) /*!< ADC JDATA bit 5 */ +#define ADC_JDR3_JDATA_6 ((uint32_t)0x00000040) /*!< ADC JDATA bit 6 */ +#define ADC_JDR3_JDATA_7 ((uint32_t)0x00000080) /*!< ADC JDATA bit 7 */ +#define ADC_JDR3_JDATA_8 ((uint32_t)0x00000100) /*!< ADC JDATA bit 8 */ +#define ADC_JDR3_JDATA_9 ((uint32_t)0x00000200) /*!< ADC JDATA bit 9 */ +#define ADC_JDR3_JDATA_10 ((uint32_t)0x00000400) /*!< ADC JDATA bit 10 */ +#define ADC_JDR3_JDATA_11 ((uint32_t)0x00000800) /*!< ADC JDATA bit 11 */ +#define ADC_JDR3_JDATA_12 ((uint32_t)0x00001000) /*!< ADC JDATA bit 12 */ +#define ADC_JDR3_JDATA_13 ((uint32_t)0x00002000) /*!< ADC JDATA bit 13 */ +#define ADC_JDR3_JDATA_14 ((uint32_t)0x00004000) /*!< ADC JDATA bit 14 */ +#define ADC_JDR3_JDATA_15 ((uint32_t)0x00008000) /*!< ADC JDATA bit 15 */ + +/******************** Bit definition for ADC_JDR4 register ********************/ +#define ADC_JDR4_JDATA ((uint32_t)0x0000FFFF) /*!< ADC Injected DATA */ +#define ADC_JDR4_JDATA_0 ((uint32_t)0x00000001) /*!< ADC JDATA bit 0 */ +#define ADC_JDR4_JDATA_1 ((uint32_t)0x00000002) /*!< ADC JDATA bit 1 */ +#define ADC_JDR4_JDATA_2 ((uint32_t)0x00000004) /*!< ADC JDATA bit 2 */ +#define ADC_JDR4_JDATA_3 ((uint32_t)0x00000008) /*!< ADC JDATA bit 3 */ +#define ADC_JDR4_JDATA_4 ((uint32_t)0x00000010) /*!< ADC JDATA bit 4 */ +#define ADC_JDR4_JDATA_5 ((uint32_t)0x00000020) /*!< ADC JDATA bit 5 */ +#define ADC_JDR4_JDATA_6 ((uint32_t)0x00000040) /*!< ADC JDATA bit 6 */ +#define ADC_JDR4_JDATA_7 ((uint32_t)0x00000080) /*!< ADC JDATA bit 7 */ +#define ADC_JDR4_JDATA_8 ((uint32_t)0x00000100) /*!< ADC JDATA bit 8 */ +#define ADC_JDR4_JDATA_9 ((uint32_t)0x00000200) /*!< ADC JDATA bit 9 */ +#define ADC_JDR4_JDATA_10 ((uint32_t)0x00000400) /*!< ADC JDATA bit 10 */ +#define ADC_JDR4_JDATA_11 ((uint32_t)0x00000800) /*!< ADC JDATA bit 11 */ +#define ADC_JDR4_JDATA_12 ((uint32_t)0x00001000) /*!< ADC JDATA bit 12 */ +#define ADC_JDR4_JDATA_13 ((uint32_t)0x00002000) /*!< ADC JDATA bit 13 */ +#define ADC_JDR4_JDATA_14 ((uint32_t)0x00004000) /*!< ADC JDATA bit 14 */ +#define ADC_JDR4_JDATA_15 ((uint32_t)0x00008000) /*!< ADC JDATA bit 15 */ + +/******************** Bit definition for ADC_AWD2CR register ********************/ +#define ADC_AWD2CR_AWD2CH ((uint32_t)0x0007FFFE) /*!< ADC Analog watchdog 2 channel selection */ +#define ADC_AWD2CR_AWD2CH_0 ((uint32_t)0x00000002) /*!< ADC AWD2CH bit 0 */ +#define ADC_AWD2CR_AWD2CH_1 ((uint32_t)0x00000004) /*!< ADC AWD2CH bit 1 */ +#define ADC_AWD2CR_AWD2CH_2 ((uint32_t)0x00000008) /*!< ADC AWD2CH bit 2 */ +#define ADC_AWD2CR_AWD2CH_3 ((uint32_t)0x00000010) /*!< ADC AWD2CH bit 3 */ +#define ADC_AWD2CR_AWD2CH_4 ((uint32_t)0x00000020) /*!< ADC AWD2CH bit 4 */ +#define ADC_AWD2CR_AWD2CH_5 ((uint32_t)0x00000040) /*!< ADC AWD2CH bit 5 */ +#define ADC_AWD2CR_AWD2CH_6 ((uint32_t)0x00000080) /*!< ADC AWD2CH bit 6 */ +#define ADC_AWD2CR_AWD2CH_7 ((uint32_t)0x00000100) /*!< ADC AWD2CH bit 7 */ +#define ADC_AWD2CR_AWD2CH_8 ((uint32_t)0x00000200) /*!< ADC AWD2CH bit 8 */ +#define ADC_AWD2CR_AWD2CH_9 ((uint32_t)0x00000400) /*!< ADC AWD2CH bit 9 */ +#define ADC_AWD2CR_AWD2CH_10 ((uint32_t)0x00000800) /*!< ADC AWD2CH bit 10 */ +#define ADC_AWD2CR_AWD2CH_11 ((uint32_t)0x00001000) /*!< ADC AWD2CH bit 11 */ +#define ADC_AWD2CR_AWD2CH_12 ((uint32_t)0x00002000) /*!< ADC AWD2CH bit 12 */ +#define ADC_AWD2CR_AWD2CH_13 ((uint32_t)0x00004000) /*!< ADC AWD2CH bit 13 */ +#define ADC_AWD2CR_AWD2CH_14 ((uint32_t)0x00008000) /*!< ADC AWD2CH bit 14 */ +#define ADC_AWD2CR_AWD2CH_15 ((uint32_t)0x00010000) /*!< ADC AWD2CH bit 15 */ +#define ADC_AWD2CR_AWD2CH_16 ((uint32_t)0x00020000) /*!< ADC AWD2CH bit 16 */ +#define ADC_AWD2CR_AWD2CH_17 ((uint32_t)0x00030000) /*!< ADC AWD2CH bit 17 */ + +/******************** Bit definition for ADC_AWD3CR register ********************/ +#define ADC_AWD3CR_AWD3CH ((uint32_t)0x0007FFFE) /*!< ADC Analog watchdog 2 channel selection */ +#define ADC_AWD3CR_AWD3CH_0 ((uint32_t)0x00000002) /*!< ADC AWD3CH bit 0 */ +#define ADC_AWD3CR_AWD3CH_1 ((uint32_t)0x00000004) /*!< ADC AWD3CH bit 1 */ +#define ADC_AWD3CR_AWD3CH_2 ((uint32_t)0x00000008) /*!< ADC AWD3CH bit 2 */ +#define ADC_AWD3CR_AWD3CH_3 ((uint32_t)0x00000010) /*!< ADC AWD3CH bit 3 */ +#define ADC_AWD3CR_AWD3CH_4 ((uint32_t)0x00000020) /*!< ADC AWD3CH bit 4 */ +#define ADC_AWD3CR_AWD3CH_5 ((uint32_t)0x00000040) /*!< ADC AWD3CH bit 5 */ +#define ADC_AWD3CR_AWD3CH_6 ((uint32_t)0x00000080) /*!< ADC AWD3CH bit 6 */ +#define ADC_AWD3CR_AWD3CH_7 ((uint32_t)0x00000100) /*!< ADC AWD3CH bit 7 */ +#define ADC_AWD3CR_AWD3CH_8 ((uint32_t)0x00000200) /*!< ADC AWD3CH bit 8 */ +#define ADC_AWD3CR_AWD3CH_9 ((uint32_t)0x00000400) /*!< ADC AWD3CH bit 9 */ +#define ADC_AWD3CR_AWD3CH_10 ((uint32_t)0x00000800) /*!< ADC AWD3CH bit 10 */ +#define ADC_AWD3CR_AWD3CH_11 ((uint32_t)0x00001000) /*!< ADC AWD3CH bit 11 */ +#define ADC_AWD3CR_AWD3CH_12 ((uint32_t)0x00002000) /*!< ADC AWD3CH bit 12 */ +#define ADC_AWD3CR_AWD3CH_13 ((uint32_t)0x00004000) /*!< ADC AWD3CH bit 13 */ +#define ADC_AWD3CR_AWD3CH_14 ((uint32_t)0x00008000) /*!< ADC AWD3CH bit 14 */ +#define ADC_AWD3CR_AWD3CH_15 ((uint32_t)0x00010000) /*!< ADC AWD3CH bit 15 */ +#define ADC_AWD3CR_AWD3CH_16 ((uint32_t)0x00020000) /*!< ADC AWD3CH bit 16 */ +#define ADC_AWD3CR_AWD3CH_17 ((uint32_t)0x00030000) /*!< ADC AWD3CH bit 17 */ + +/******************** Bit definition for ADC_DIFSEL register ********************/ +#define ADC_DIFSEL_DIFSEL ((uint32_t)0x0007FFFE) /*!< ADC differential modes for channels 1 to 18 */ +#define ADC_DIFSEL_DIFSEL_0 ((uint32_t)0x00000002) /*!< ADC DIFSEL bit 0 */ +#define ADC_DIFSEL_DIFSEL_1 ((uint32_t)0x00000004) /*!< ADC DIFSEL bit 1 */ +#define ADC_DIFSEL_DIFSEL_2 ((uint32_t)0x00000008) /*!< ADC DIFSEL bit 2 */ +#define ADC_DIFSEL_DIFSEL_3 ((uint32_t)0x00000010) /*!< ADC DIFSEL bit 3 */ +#define ADC_DIFSEL_DIFSEL_4 ((uint32_t)0x00000020) /*!< ADC DIFSEL bit 4 */ +#define ADC_DIFSEL_DIFSEL_5 ((uint32_t)0x00000040) /*!< ADC DIFSEL bit 5 */ +#define ADC_DIFSEL_DIFSEL_6 ((uint32_t)0x00000080) /*!< ADC DIFSEL bit 6 */ +#define ADC_DIFSEL_DIFSEL_7 ((uint32_t)0x00000100) /*!< ADC DIFSEL bit 7 */ +#define ADC_DIFSEL_DIFSEL_8 ((uint32_t)0x00000200) /*!< ADC DIFSEL bit 8 */ +#define ADC_DIFSEL_DIFSEL_9 ((uint32_t)0x00000400) /*!< ADC DIFSEL bit 9 */ +#define ADC_DIFSEL_DIFSEL_10 ((uint32_t)0x00000800) /*!< ADC DIFSEL bit 10 */ +#define ADC_DIFSEL_DIFSEL_11 ((uint32_t)0x00001000) /*!< ADC DIFSEL bit 11 */ +#define ADC_DIFSEL_DIFSEL_12 ((uint32_t)0x00002000) /*!< ADC DIFSEL bit 12 */ +#define ADC_DIFSEL_DIFSEL_13 ((uint32_t)0x00004000) /*!< ADC DIFSEL bit 13 */ +#define ADC_DIFSEL_DIFSEL_14 ((uint32_t)0x00008000) /*!< ADC DIFSEL bit 14 */ +#define ADC_DIFSEL_DIFSEL_15 ((uint32_t)0x00010000) /*!< ADC DIFSEL bit 15 */ +#define ADC_DIFSEL_DIFSEL_16 ((uint32_t)0x00020000) /*!< ADC DIFSEL bit 16 */ +#define ADC_DIFSEL_DIFSEL_17 ((uint32_t)0x00030000) /*!< ADC DIFSEL bit 17 */ + +/******************** Bit definition for ADC_CALFACT register ********************/ +#define ADC_CALFACT_CALFACT_S ((uint32_t)0x0000007F) /*!< ADC calibration factors in single-ended mode */ +#define ADC_CALFACT_CALFACT_S_0 ((uint32_t)0x00000001) /*!< ADC CALFACT_S bit 0 */ +#define ADC_CALFACT_CALFACT_S_1 ((uint32_t)0x00000002) /*!< ADC CALFACT_S bit 1 */ +#define ADC_CALFACT_CALFACT_S_2 ((uint32_t)0x00000004) /*!< ADC CALFACT_S bit 2 */ +#define ADC_CALFACT_CALFACT_S_3 ((uint32_t)0x00000008) /*!< ADC CALFACT_S bit 3 */ +#define ADC_CALFACT_CALFACT_S_4 ((uint32_t)0x00000010) /*!< ADC CALFACT_S bit 4 */ +#define ADC_CALFACT_CALFACT_S_5 ((uint32_t)0x00000020) /*!< ADC CALFACT_S bit 5 */ +#define ADC_CALFACT_CALFACT_S_6 ((uint32_t)0x00000040) /*!< ADC CALFACT_S bit 6 */ +#define ADC_CALFACT_CALFACT_D ((uint32_t)0x007F0000) /*!< ADC calibration factors in differential mode */ +#define ADC_CALFACT_CALFACT_D_0 ((uint32_t)0x00010000) /*!< ADC CALFACT_D bit 0 */ +#define ADC_CALFACT_CALFACT_D_1 ((uint32_t)0x00020000) /*!< ADC CALFACT_D bit 1 */ +#define ADC_CALFACT_CALFACT_D_2 ((uint32_t)0x00040000) /*!< ADC CALFACT_D bit 2 */ +#define ADC_CALFACT_CALFACT_D_3 ((uint32_t)0x00080000) /*!< ADC CALFACT_D bit 3 */ +#define ADC_CALFACT_CALFACT_D_4 ((uint32_t)0x00100000) /*!< ADC CALFACT_D bit 4 */ +#define ADC_CALFACT_CALFACT_D_5 ((uint32_t)0x00200000) /*!< ADC CALFACT_D bit 5 */ +#define ADC_CALFACT_CALFACT_D_6 ((uint32_t)0x00400000) /*!< ADC CALFACT_D bit 6 */ + +/************************* ADC Common registers *****************************/ +/******************** Bit definition for ADC12_CSR register ********************/ +#define ADC12_CSR_ADRDY_MST ((uint32_t)0x00000001) /*!< Master ADC ready */ +#define ADC12_CSR_ADRDY_EOSMP_MST ((uint32_t)0x00000002) /*!< End of sampling phase flag of the master ADC */ +#define ADC12_CSR_ADRDY_EOC_MST ((uint32_t)0x00000004) /*!< End of regular conversion of the master ADC */ +#define ADC12_CSR_ADRDY_EOS_MST ((uint32_t)0x00000008) /*!< End of regular sequence flag of the master ADC */ +#define ADC12_CSR_ADRDY_OVR_MST ((uint32_t)0x00000010) /*!< Overrun flag of the master ADC */ +#define ADC12_CSR_ADRDY_JEOC_MST ((uint32_t)0x00000020) /*!< End of injected conversion of the master ADC */ +#define ADC12_CSR_ADRDY_JEOS_MST ((uint32_t)0x00000040) /*!< End of injected sequence flag of the master ADC */ +#define ADC12_CSR_AWD1_MST ((uint32_t)0x00000080) /*!< Analog watchdog 1 flag of the master ADC */ +#define ADC12_CSR_AWD2_MST ((uint32_t)0x00000100) /*!< Analog watchdog 2 flag of the master ADC */ +#define ADC12_CSR_AWD3_MST ((uint32_t)0x00000200) /*!< Analog watchdog 3 flag of the master ADC */ +#define ADC12_CSR_JQOVF_MST ((uint32_t)0x00000400) /*!< Injected context queue overflow flag of the master ADC */ +#define ADC12_CSR_ADRDY_SLV ((uint32_t)0x00010000) /*!< Slave ADC ready */ +#define ADC12_CSR_ADRDY_EOSMP_SLV ((uint32_t)0x00020000) /*!< End of sampling phase flag of the slave ADC */ +#define ADC12_CSR_ADRDY_EOC_SLV ((uint32_t)0x00040000) /*!< End of regular conversion of the slave ADC */ +#define ADC12_CSR_ADRDY_EOS_SLV ((uint32_t)0x00080000) /*!< End of regular sequence flag of the slave ADC */ +#define ADC12_CSR_ADRDY_OVR_SLV ((uint32_t)0x00100000) /*!< Overrun flag of the slave ADC */ +#define ADC12_CSR_ADRDY_JEOC_SLV ((uint32_t)0x00200000) /*!< End of injected conversion of the slave ADC */ +#define ADC12_CSR_ADRDY_JEOS_SLV ((uint32_t)0x00400000) /*!< End of injected sequence flag of the slave ADC */ +#define ADC12_CSR_AWD1_SLV ((uint32_t)0x00800000) /*!< Analog watchdog 1 flag of the slave ADC */ +#define ADC12_CSR_AWD2_SLV ((uint32_t)0x01000000) /*!< Analog watchdog 2 flag of the slave ADC */ +#define ADC12_CSR_AWD3_SLV ((uint32_t)0x02000000) /*!< Analog watchdog 3 flag of the slave ADC */ +#define ADC12_CSR_JQOVF_SLV ((uint32_t)0x04000000) /*!< Injected context queue overflow flag of the slave ADC */ + +/******************** Bit definition for ADC34_CSR register ********************/ +#define ADC34_CSR_ADRDY_MST ((uint32_t)0x00000001) /*!< Master ADC ready */ +#define ADC34_CSR_ADRDY_EOSMP_MST ((uint32_t)0x00000002) /*!< End of sampling phase flag of the master ADC */ +#define ADC34_CSR_ADRDY_EOC_MST ((uint32_t)0x00000004) /*!< End of regular conversion of the master ADC */ +#define ADC34_CSR_ADRDY_EOS_MST ((uint32_t)0x00000008) /*!< End of regular sequence flag of the master ADC */ +#define ADC34_CSR_ADRDY_OVR_MST ((uint32_t)0x00000010) /*!< Overrun flag of the master ADC */ +#define ADC34_CSR_ADRDY_JEOC_MST ((uint32_t)0x00000020) /*!< End of injected conversion of the master ADC */ +#define ADC34_CSR_ADRDY_JEOS_MST ((uint32_t)0x00000040) /*!< End of injected sequence flag of the master ADC */ +#define ADC34_CSR_AWD1_MST ((uint32_t)0x00000080) /*!< Analog watchdog 1 flag of the master ADC */ +#define ADC34_CSR_AWD2_MST ((uint32_t)0x00000100) /*!< Analog watchdog 2 flag of the master ADC */ +#define ADC34_CSR_AWD3_MST ((uint32_t)0x00000200) /*!< Analog watchdog 3 flag of the master ADC */ +#define ADC34_CSR_JQOVF_MST ((uint32_t)0x00000400) /*!< Injected context queue overflow flag of the master ADC */ +#define ADC34_CSR_ADRDY_SLV ((uint32_t)0x00010000) /*!< Slave ADC ready */ +#define ADC34_CSR_ADRDY_EOSMP_SLV ((uint32_t)0x00020000) /*!< End of sampling phase flag of the slave ADC */ +#define ADC34_CSR_ADRDY_EOC_SLV ((uint32_t)0x00040000) /*!< End of regular conversion of the slave ADC */ +#define ADC34_CSR_ADRDY_EOS_SLV ((uint32_t)0x00080000) /*!< End of regular sequence flag of the slave ADC */ +#define ADC12_CSR_ADRDY_OVR_SLV ((uint32_t)0x00100000) /*!< Overrun flag of the slave ADC */ +#define ADC34_CSR_ADRDY_JEOC_SLV ((uint32_t)0x00200000) /*!< End of injected conversion of the slave ADC */ +#define ADC34_CSR_ADRDY_JEOS_SLV ((uint32_t)0x00400000) /*!< End of injected sequence flag of the slave ADC */ +#define ADC34_CSR_AWD1_SLV ((uint32_t)0x00800000) /*!< Analog watchdog 1 flag of the slave ADC */ +#define ADC34_CSR_AWD2_SLV ((uint32_t)0x01000000) /*!< Analog watchdog 2 flag of the slave ADC */ +#define ADC34_CSR_AWD3_SLV ((uint32_t)0x02000000) /*!< Analog watchdog 3 flag of the slave ADC */ +#define ADC34_CSR_JQOVF_SLV ((uint32_t)0x04000000) /*!< Injected context queue overflow flag of the slave ADC */ + +/******************** Bit definition for ADC_CCR register ********************/ +#define ADC12_CCR_MULTI ((uint32_t)0x0000001F) /*!< Multi ADC mode selection */ +#define ADC12_CCR_MULTI_0 ((uint32_t)0x00000001) /*!< MULTI bit 0 */ +#define ADC12_CCR_MULTI_1 ((uint32_t)0x00000002) /*!< MULTI bit 1 */ +#define ADC12_CCR_MULTI_2 ((uint32_t)0x00000004) /*!< MULTI bit 2 */ +#define ADC12_CCR_MULTI_3 ((uint32_t)0x00000008) /*!< MULTI bit 3 */ +#define ADC12_CCR_MULTI_4 ((uint32_t)0x00000010) /*!< MULTI bit 4 */ +#define ADC12_CCR_DELAY ((uint32_t)0x00000F00) /*!< Delay between 2 sampling phases */ +#define ADC12_CCR_DELAY_0 ((uint32_t)0x00000100) /*!< DELAY bit 0 */ +#define ADC12_CCR_DELAY_1 ((uint32_t)0x00000200) /*!< DELAY bit 1 */ +#define ADC12_CCR_DELAY_2 ((uint32_t)0x00000400) /*!< DELAY bit 2 */ +#define ADC12_CCR_DELAY_3 ((uint32_t)0x00000800) /*!< DELAY bit 3 */ +#define ADC12_CCR_DMACFG ((uint32_t)0x00002000) /*!< DMA configuration for multi-ADC mode */ +#define ADC12_CCR_MDMA ((uint32_t)0x0000C000) /*!< DMA mode for multi-ADC mode */ +#define ADC12_CCR_MDMA_0 ((uint32_t)0x00004000) /*!< MDMA bit 0 */ +#define ADC12_CCR_MDMA_1 ((uint32_t)0x00008000) /*!< MDMA bit 1 */ +#define ADC12_CCR_CKMODE ((uint32_t)0x00030000) /*!< ADC clock mode */ +#define ADC12_CCR_CKMODE_0 ((uint32_t)0x00010000) /*!< CKMODE bit 0 */ +#define ADC12_CCR_CKMODE_1 ((uint32_t)0x00020000) /*!< CKMODE bit 1 */ +#define ADC12_CCR_VREFEN ((uint32_t)0x00400000) /*!< VREFINT enable */ +#define ADC12_CCR_TSEN ((uint32_t)0x00800000) /*!< Temperature sensor enable */ +#define ADC12_CCR_VBATEN ((uint32_t)0x01000000) /*!< VBAT enable */ + +/******************** Bit definition for ADC_CCR register ********************/ +#define ADC34_CCR_MULTI ((uint32_t)0x0000001F) /*!< Multi ADC mode selection */ +#define ADC34_CCR_MULTI_0 ((uint32_t)0x00000001) /*!< MULTI bit 0 */ +#define ADC34_CCR_MULTI_1 ((uint32_t)0x00000002) /*!< MULTI bit 1 */ +#define ADC34_CCR_MULTI_2 ((uint32_t)0x00000004) /*!< MULTI bit 2 */ +#define ADC34_CCR_MULTI_3 ((uint32_t)0x00000008) /*!< MULTI bit 3 */ +#define ADC34_CCR_MULTI_4 ((uint32_t)0x00000010) /*!< MULTI bit 4 */ + +#define ADC34_CCR_DELAY ((uint32_t)0x00000F00) /*!< Delay between 2 sampling phases */ +#define ADC34_CCR_DELAY_0 ((uint32_t)0x00000100) /*!< DELAY bit 0 */ +#define ADC34_CCR_DELAY_1 ((uint32_t)0x00000200) /*!< DELAY bit 1 */ +#define ADC34_CCR_DELAY_2 ((uint32_t)0x00000400) /*!< DELAY bit 2 */ +#define ADC34_CCR_DELAY_3 ((uint32_t)0x00000800) /*!< DELAY bit 3 */ + +#define ADC34_CCR_DMACFG ((uint32_t)0x00002000) /*!< DMA configuration for multi-ADC mode */ +#define ADC34_CCR_MDMA ((uint32_t)0x0000C000) /*!< DMA mode for multi-ADC mode */ +#define ADC34_CCR_MDMA_0 ((uint32_t)0x00004000) /*!< MDMA bit 0 */ +#define ADC34_CCR_MDMA_1 ((uint32_t)0x00008000) /*!< MDMA bit 1 */ + +#define ADC34_CCR_CKMODE ((uint32_t)0x00030000) /*!< ADC clock mode */ +#define ADC34_CCR_CKMODE_0 ((uint32_t)0x00010000) /*!< CKMODE bit 0 */ +#define ADC34_CCR_CKMODE_1 ((uint32_t)0x00020000) /*!< CKMODE bit 1 */ + +#define ADC34_CCR_VREFEN ((uint32_t)0x00400000) /*!< VREFINT enable */ + +/******************** Bit definition for ADC_CDR register ********************/ +#define ADC12_CDR_RDATA_MST ((uint32_t)0x0000FFFF) /*!< Regular Data of the master ADC */ +#define ADC12_CDR_RDATA_MST_0 ((uint32_t)0x00000001) /*!< RDATA_MST bit 0 */ +#define ADC12_CDR_RDATA_MST_1 ((uint32_t)0x00000002) /*!< RDATA_MST bit 1 */ +#define ADC12_CDR_RDATA_MST_2 ((uint32_t)0x00000004) /*!< RDATA_MST bit 2 */ +#define ADC12_CDR_RDATA_MST_3 ((uint32_t)0x00000008) /*!< RDATA_MST bit 3 */ +#define ADC12_CDR_RDATA_MST_4 ((uint32_t)0x00000010) /*!< RDATA_MST bit 4 */ +#define ADC12_CDR_RDATA_MST_5 ((uint32_t)0x00000020) /*!< RDATA_MST bit 5 */ +#define ADC12_CDR_RDATA_MST_6 ((uint32_t)0x00000040) /*!< RDATA_MST bit 6 */ +#define ADC12_CDR_RDATA_MST_7 ((uint32_t)0x00000080) /*!< RDATA_MST bit 7 */ +#define ADC12_CDR_RDATA_MST_8 ((uint32_t)0x00000100) /*!< RDATA_MST bit 8 */ +#define ADC12_CDR_RDATA_MST_9 ((uint32_t)0x00000200) /*!< RDATA_MST bit 9 */ +#define ADC12_CDR_RDATA_MST_10 ((uint32_t)0x00000400) /*!< RDATA_MST bit 10 */ +#define ADC12_CDR_RDATA_MST_11 ((uint32_t)0x00000800) /*!< RDATA_MST bit 11 */ +#define ADC12_CDR_RDATA_MST_12 ((uint32_t)0x00001000) /*!< RDATA_MST bit 12 */ +#define ADC12_CDR_RDATA_MST_13 ((uint32_t)0x00002000) /*!< RDATA_MST bit 13 */ +#define ADC12_CDR_RDATA_MST_14 ((uint32_t)0x00004000) /*!< RDATA_MST bit 14 */ +#define ADC12_CDR_RDATA_MST_15 ((uint32_t)0x00008000) /*!< RDATA_MST bit 15 */ + +#define ADC12_CDR_RDATA_SLV ((uint32_t)0xFFFF0000) /*!< Regular Data of the master ADC */ +#define ADC12_CDR_RDATA_SLV_0 ((uint32_t)0x00010000) /*!< RDATA_SLV bit 0 */ +#define ADC12_CDR_RDATA_SLV_1 ((uint32_t)0x00020000) /*!< RDATA_SLV bit 1 */ +#define ADC12_CDR_RDATA_SLV_2 ((uint32_t)0x00040000) /*!< RDATA_SLV bit 2 */ +#define ADC12_CDR_RDATA_SLV_3 ((uint32_t)0x00080000) /*!< RDATA_SLV bit 3 */ +#define ADC12_CDR_RDATA_SLV_4 ((uint32_t)0x00100000) /*!< RDATA_SLV bit 4 */ +#define ADC12_CDR_RDATA_SLV_5 ((uint32_t)0x00200000) /*!< RDATA_SLV bit 5 */ +#define ADC12_CDR_RDATA_SLV_6 ((uint32_t)0x00400000) /*!< RDATA_SLV bit 6 */ +#define ADC12_CDR_RDATA_SLV_7 ((uint32_t)0x00800000) /*!< RDATA_SLV bit 7 */ +#define ADC12_CDR_RDATA_SLV_8 ((uint32_t)0x01000000) /*!< RDATA_SLV bit 8 */ +#define ADC12_CDR_RDATA_SLV_9 ((uint32_t)0x02000000) /*!< RDATA_SLV bit 9 */ +#define ADC12_CDR_RDATA_SLV_10 ((uint32_t)0x04000000) /*!< RDATA_SLV bit 10 */ +#define ADC12_CDR_RDATA_SLV_11 ((uint32_t)0x08000000) /*!< RDATA_SLV bit 11 */ +#define ADC12_CDR_RDATA_SLV_12 ((uint32_t)0x10000000) /*!< RDATA_SLV bit 12 */ +#define ADC12_CDR_RDATA_SLV_13 ((uint32_t)0x20000000) /*!< RDATA_SLV bit 13 */ +#define ADC12_CDR_RDATA_SLV_14 ((uint32_t)0x40000000) /*!< RDATA_SLV bit 14 */ +#define ADC12_CDR_RDATA_SLV_15 ((uint32_t)0x80000000) /*!< RDATA_SLV bit 15 */ + +/******************** Bit definition for ADC_CDR register ********************/ +#define ADC34_CDR_RDATA_MST ((uint32_t)0x0000FFFF) /*!< Regular Data of the master ADC */ +#define ADC34_CDR_RDATA_MST_0 ((uint32_t)0x00000001) /*!< RDATA_MST bit 0 */ +#define ADC34_CDR_RDATA_MST_1 ((uint32_t)0x00000002) /*!< RDATA_MST bit 1 */ +#define ADC34_CDR_RDATA_MST_2 ((uint32_t)0x00000004) /*!< RDATA_MST bit 2 */ +#define ADC34_CDR_RDATA_MST_3 ((uint32_t)0x00000008) /*!< RDATA_MST bit 3 */ +#define ADC34_CDR_RDATA_MST_4 ((uint32_t)0x00000010) /*!< RDATA_MST bit 4 */ +#define ADC34_CDR_RDATA_MST_5 ((uint32_t)0x00000020) /*!< RDATA_MST bit 5 */ +#define ADC34_CDR_RDATA_MST_6 ((uint32_t)0x00000040) /*!< RDATA_MST bit 6 */ +#define ADC34_CDR_RDATA_MST_7 ((uint32_t)0x00000080) /*!< RDATA_MST bit 7 */ +#define ADC34_CDR_RDATA_MST_8 ((uint32_t)0x00000100) /*!< RDATA_MST bit 8 */ +#define ADC34_CDR_RDATA_MST_9 ((uint32_t)0x00000200) /*!< RDATA_MST bit 9 */ +#define ADC34_CDR_RDATA_MST_10 ((uint32_t)0x00000400) /*!< RDATA_MST bit 10 */ +#define ADC34_CDR_RDATA_MST_11 ((uint32_t)0x00000800) /*!< RDATA_MST bit 11 */ +#define ADC34_CDR_RDATA_MST_12 ((uint32_t)0x00001000) /*!< RDATA_MST bit 12 */ +#define ADC34_CDR_RDATA_MST_13 ((uint32_t)0x00002000) /*!< RDATA_MST bit 13 */ +#define ADC34_CDR_RDATA_MST_14 ((uint32_t)0x00004000) /*!< RDATA_MST bit 14 */ +#define ADC34_CDR_RDATA_MST_15 ((uint32_t)0x00008000) /*!< RDATA_MST bit 15 */ + +#define ADC34_CDR_RDATA_SLV ((uint32_t)0xFFFF0000) /*!< Regular Data of the master ADC */ +#define ADC34_CDR_RDATA_SLV_0 ((uint32_t)0x00010000) /*!< RDATA_SLV bit 0 */ +#define ADC34_CDR_RDATA_SLV_1 ((uint32_t)0x00020000) /*!< RDATA_SLV bit 1 */ +#define ADC34_CDR_RDATA_SLV_2 ((uint32_t)0x00040000) /*!< RDATA_SLV bit 2 */ +#define ADC34_CDR_RDATA_SLV_3 ((uint32_t)0x00080000) /*!< RDATA_SLV bit 3 */ +#define ADC34_CDR_RDATA_SLV_4 ((uint32_t)0x00100000) /*!< RDATA_SLV bit 4 */ +#define ADC34_CDR_RDATA_SLV_5 ((uint32_t)0x00200000) /*!< RDATA_SLV bit 5 */ +#define ADC34_CDR_RDATA_SLV_6 ((uint32_t)0x00400000) /*!< RDATA_SLV bit 6 */ +#define ADC34_CDR_RDATA_SLV_7 ((uint32_t)0x00800000) /*!< RDATA_SLV bit 7 */ +#define ADC34_CDR_RDATA_SLV_8 ((uint32_t)0x01000000) /*!< RDATA_SLV bit 8 */ +#define ADC34_CDR_RDATA_SLV_9 ((uint32_t)0x02000000) /*!< RDATA_SLV bit 9 */ +#define ADC34_CDR_RDATA_SLV_10 ((uint32_t)0x04000000) /*!< RDATA_SLV bit 10 */ +#define ADC34_CDR_RDATA_SLV_11 ((uint32_t)0x08000000) /*!< RDATA_SLV bit 11 */ +#define ADC34_CDR_RDATA_SLV_12 ((uint32_t)0x10000000) /*!< RDATA_SLV bit 12 */ +#define ADC34_CDR_RDATA_SLV_13 ((uint32_t)0x20000000) /*!< RDATA_SLV bit 13 */ +#define ADC34_CDR_RDATA_SLV_14 ((uint32_t)0x40000000) /*!< RDATA_SLV bit 14 */ +#define ADC34_CDR_RDATA_SLV_15 ((uint32_t)0x80000000) /*!< RDATA_SLV bit 15 */ + +/******************************************************************************/ +/* */ +/* Analog Comparators (COMP) */ +/* */ +/******************************************************************************/ +/********************** Bit definition for COMP1_CSR register ***************/ +#define COMP1_CSR_COMP1EN ((uint32_t)0x00000001) /*!< COMP1 enable */ +#define COMP1_CSR_COMP1SW1 ((uint32_t)0x00000002) /*!< COMP1 SW1 switch control */ +#define COMP1_CSR_COMP1MODE ((uint32_t)0x0000000C) /*!< COMP1 power mode */ +#define COMP1_CSR_COMP1MODE_0 ((uint32_t)0x00000004) /*!< COMP1 power mode bit 0 */ +#define COMP1_CSR_COMP1MODE_1 ((uint32_t)0x00000008) /*!< COMP1 power mode bit 1 */ +#define COMP1_CSR_COMP1INSEL ((uint32_t)0x00000070) /*!< COMP1 inverting input select */ +#define COMP1_CSR_COMP1INSEL_0 ((uint32_t)0x00000010) /*!< COMP1 inverting input select bit 0 */ +#define COMP1_CSR_COMP1INSEL_1 ((uint32_t)0x00000020) /*!< COMP1 inverting input select bit 1 */ +#define COMP1_CSR_COMP1INSEL_2 ((uint32_t)0x00000040) /*!< COMP1 inverting input select bit 2 */ +#define COMP1_CSR_COMP1NONINSEL ((uint32_t)0x00000080) /*!< COMP1 non inverting input select */ +#define COMP1_CSR_COMP1OUTSEL ((uint32_t)0x00003C00) /*!< COMP1 output select */ +#define COMP1_CSR_COMP1OUTSEL_0 ((uint32_t)0x00000400) /*!< COMP1 output select bit 0 */ +#define COMP1_CSR_COMP1OUTSEL_1 ((uint32_t)0x00000800) /*!< COMP1 output select bit 1 */ +#define COMP1_CSR_COMP1OUTSEL_2 ((uint32_t)0x00001000) /*!< COMP1 output select bit 2 */ +#define COMP1_CSR_COMP1OUTSEL_3 ((uint32_t)0x00002000) /*!< COMP1 output select bit 3 */ +#define COMP1_CSR_COMP1POL ((uint32_t)0x00008000) /*!< COMP1 output polarity */ +#define COMP1_CSR_COMP1HYST ((uint32_t)0x00030000) /*!< COMP1 hysteresis */ +#define COMP1_CSR_COMP1HYST_0 ((uint32_t)0x00010000) /*!< COMP1 hysteresis bit 0 */ +#define COMP1_CSR_COMP1HYST_1 ((uint32_t)0x00020000) /*!< COMP1 hysteresis bit 1 */ +#define COMP1_CSR_COMP1BLANKING ((uint32_t)0x000C0000) /*!< COMP1 blanking */ +#define COMP1_CSR_COMP1BLANKING_0 ((uint32_t)0x00040000) /*!< COMP1 blanking bit 0 */ +#define COMP1_CSR_COMP1BLANKING_1 ((uint32_t)0x00080000) /*!< COMP1 blanking bit 1 */ +#define COMP1_CSR_COMP1BLANKING_2 ((uint32_t)0x00100000) /*!< COMP1 blanking bit 2 */ +#define COMP1_CSR_COMP1OUT ((uint32_t)0x40000000) /*!< COMP1 output level */ +#define COMP1_CSR_COMP1LOCK ((uint32_t)0x80000000) /*!< COMP1 lock */ + +/********************** Bit definition for COMP2_CSR register ***************/ +#define COMP2_CSR_COMP2EN ((uint32_t)0x00000001) /*!< COMP2 enable */ +#define COMP2_CSR_COMP2MODE ((uint32_t)0x0000000C) /*!< COMP2 power mode */ +#define COMP2_CSR_COMP2MODE_0 ((uint32_t)0x00000004) /*!< COMP2 power mode bit 0 */ +#define COMP2_CSR_COMP2MODE_1 ((uint32_t)0x00000008) /*!< COMP2 power mode bit 1 */ +#define COMP2_CSR_COMP2INSEL ((uint32_t)0x00000070) /*!< COMP2 inverting input select */ +#define COMP2_CSR_COMP2INSEL_0 ((uint32_t)0x00000010) /*!< COMP2 inverting input select bit 0 */ +#define COMP2_CSR_COMP2INSEL_1 ((uint32_t)0x00000020) /*!< COMP2 inverting input select bit 1 */ +#define COMP2_CSR_COMP2INSEL_2 ((uint32_t)0x00000040) /*!< COMP2 inverting input select bit 2 */ +#define COMP2_CSR_COMP2NONINSEL ((uint32_t)0x00000080) /*!< COMP2 non inverting input select */ +#define COMP2_CSR_COMP2WNDWEN ((uint32_t)0x00000200) /*!< COMP2 window mode enable */ +#define COMP2_CSR_COMP2OUTSEL ((uint32_t)0x00003C00) /*!< COMP2 output select */ +#define COMP2_CSR_COMP2OUTSEL_0 ((uint32_t)0x00000400) /*!< COMP2 output select bit 0 */ +#define COMP2_CSR_COMP2OUTSEL_1 ((uint32_t)0x00000800) /*!< COMP2 output select bit 1 */ +#define COMP2_CSR_COMP2OUTSEL_2 ((uint32_t)0x00001000) /*!< COMP2 output select bit 2 */ +#define COMP2_CSR_COMP2OUTSEL_3 ((uint32_t)0x00002000) /*!< COMP2 output select bit 3 */ +#define COMP2_CSR_COMP2POL ((uint32_t)0x00008000) /*!< COMP2 output polarity */ +#define COMP2_CSR_COMP2HYST ((uint32_t)0x00030000) /*!< COMP2 hysteresis */ +#define COMP2_CSR_COMP2HYST_0 ((uint32_t)0x00010000) /*!< COMP2 hysteresis bit 0 */ +#define COMP2_CSR_COMP2HYST_1 ((uint32_t)0x00020000) /*!< COMP2 hysteresis bit 1 */ +#define COMP2_CSR_COMP2BLANKING ((uint32_t)0x000C0000) /*!< COMP2 blanking */ +#define COMP2_CSR_COMP2BLANKING_0 ((uint32_t)0x00040000) /*!< COMP2 blanking bit 0 */ +#define COMP2_CSR_COMP2BLANKING_1 ((uint32_t)0x00080000) /*!< COMP2 blanking bit 1 */ +#define COMP2_CSR_COMP2BLANKING_2 ((uint32_t)0x00100000) /*!< COMP2 blanking bit 2 */ +#define COMP2_CSR_COMP2OUT ((uint32_t)0x40000000) /*!< COMP2 output level */ +#define COMP2_CSR_COMP2LOCK ((uint32_t)0x80000000) /*!< COMP2 lock */ + +/********************** Bit definition for COMP3_CSR register ***************/ +#define COMP3_CSR_COMP3EN ((uint32_t)0x00000001) /*!< COMP3 enable */ +#define COMP3_CSR_COMP3MODE ((uint32_t)0x0000000C) /*!< COMP3 power mode */ +#define COMP3_CSR_COMP3MODE_0 ((uint32_t)0x00000004) /*!< COMP3 power mode bit 0 */ +#define COMP3_CSR_COMP3MODE_1 ((uint32_t)0x00000008) /*!< COMP3 power mode bit 1 */ +#define COMP3_CSR_COMP3INSEL ((uint32_t)0x00000070) /*!< COMP3 inverting input select */ +#define COMP3_CSR_COMP3INSEL_0 ((uint32_t)0x00000010) /*!< COMP3 inverting input select bit 0 */ +#define COMP3_CSR_COMP3INSEL_1 ((uint32_t)0x00000020) /*!< COMP3 inverting input select bit 1 */ +#define COMP3_CSR_COMP3INSEL_2 ((uint32_t)0x00000040) /*!< COMP3 inverting input select bit 2 */ +#define COMP3_CSR_COMP3NONINSEL ((uint32_t)0x00000080) /*!< COMP3 non inverting input select */ +#define COMP3_CSR_COMP3OUTSEL ((uint32_t)0x00003C00) /*!< COMP3 output select */ +#define COMP3_CSR_COMP3OUTSEL_0 ((uint32_t)0x00000400) /*!< COMP3 output select bit 0 */ +#define COMP3_CSR_COMP3OUTSEL_1 ((uint32_t)0x00000800) /*!< COMP3 output select bit 1 */ +#define COMP3_CSR_COMP3OUTSEL_2 ((uint32_t)0x00001000) /*!< COMP3 output select bit 2 */ +#define COMP3_CSR_COMP3OUTSEL_3 ((uint32_t)0x00002000) /*!< COMP3 output select bit 3 */ +#define COMP3_CSR_COMP3POL ((uint32_t)0x00008000) /*!< COMP3 output polarity */ +#define COMP3_CSR_COMP3HYST ((uint32_t)0x00030000) /*!< COMP3 hysteresis */ +#define COMP3_CSR_COMP3HYST_0 ((uint32_t)0x00010000) /*!< COMP3 hysteresis bit 0 */ +#define COMP3_CSR_COMP3HYST_1 ((uint32_t)0x00020000) /*!< COMP3 hysteresis bit 1 */ +#define COMP3_CSR_COMP3BLANKING ((uint32_t)0x000C0000) /*!< COMP3 blanking */ +#define COMP3_CSR_COMP3BLANKING_0 ((uint32_t)0x00040000) /*!< COMP3 blanking bit 0 */ +#define COMP3_CSR_COMP3BLANKING_1 ((uint32_t)0x00080000) /*!< COMP3 blanking bit 1 */ +#define COMP3_CSR_COMP3BLANKING_2 ((uint32_t)0x00100000) /*!< COMP3 blanking bit 2 */ +#define COMP3_CSR_COMP3OUT ((uint32_t)0x40000000) /*!< COMP3 output level */ +#define COMP3_CSR_COMP3LOCK ((uint32_t)0x80000000) /*!< COMP3 lock */ + +/********************** Bit definition for COMP4_CSR register ***************/ +#define COMP4_CSR_COMP4EN ((uint32_t)0x00000001) /*!< COMP4 enable */ +#define COMP4_CSR_COMP4MODE ((uint32_t)0x0000000C) /*!< COMP4 power mode */ +#define COMP4_CSR_COMP4MODE_0 ((uint32_t)0x00000004) /*!< COMP4 power mode bit 0 */ +#define COMP4_CSR_COMP4MODE_1 ((uint32_t)0x00000008) /*!< COMP4 power mode bit 1 */ +#define COMP4_CSR_COMP4INSEL ((uint32_t)0x00000070) /*!< COMP4 inverting input select */ +#define COMP4_CSR_COMP4INSEL_0 ((uint32_t)0x00000010) /*!< COMP4 inverting input select bit 0 */ +#define COMP4_CSR_COMP4INSEL_1 ((uint32_t)0x00000020) /*!< COMP4 inverting input select bit 1 */ +#define COMP4_CSR_COMP4INSEL_2 ((uint32_t)0x00000040) /*!< COMP4 inverting input select bit 2 */ +#define COMP4_CSR_COMP4NONINSEL ((uint32_t)0x00000080) /*!< COMP4 non inverting input select */ +#define COMP4_CSR_COMP4WNDWEN ((uint32_t)0x00000200) /*!< COMP4 window mode enable */ +#define COMP4_CSR_COMP4OUTSEL ((uint32_t)0x00003C00) /*!< COMP4 output select */ +#define COMP4_CSR_COMP4OUTSEL_0 ((uint32_t)0x00000400) /*!< COMP4 output select bit 0 */ +#define COMP4_CSR_COMP4OUTSEL_1 ((uint32_t)0x00000800) /*!< COMP4 output select bit 1 */ +#define COMP4_CSR_COMP4OUTSEL_2 ((uint32_t)0x00001000) /*!< COMP4 output select bit 2 */ +#define COMP4_CSR_COMP4OUTSEL_3 ((uint32_t)0x00002000) /*!< COMP4 output select bit 3 */ +#define COMP4_CSR_COMP4POL ((uint32_t)0x00008000) /*!< COMP4 output polarity */ +#define COMP4_CSR_COMP4HYST ((uint32_t)0x00030000) /*!< COMP4 hysteresis */ +#define COMP4_CSR_COMP4HYST_0 ((uint32_t)0x00010000) /*!< COMP4 hysteresis bit 0 */ +#define COMP4_CSR_COMP4HYST_1 ((uint32_t)0x00020000) /*!< COMP4 hysteresis bit 1 */ +#define COMP4_CSR_COMP4BLANKING ((uint32_t)0x000C0000) /*!< COMP4 blanking */ +#define COMP4_CSR_COMP4BLANKING_0 ((uint32_t)0x00040000) /*!< COMP4 blanking bit 0 */ +#define COMP4_CSR_COMP4BLANKING_1 ((uint32_t)0x00080000) /*!< COMP4 blanking bit 1 */ +#define COMP4_CSR_COMP4BLANKING_2 ((uint32_t)0x00100000) /*!< COMP4 blanking bit 2 */ +#define COMP4_CSR_COMP4OUT ((uint32_t)0x40000000) /*!< COMP4 output level */ +#define COMP4_CSR_COMP4LOCK ((uint32_t)0x80000000) /*!< COMP4 lock */ + +/********************** Bit definition for COMP5_CSR register ***************/ +#define COMP5_CSR_COMP5EN ((uint32_t)0x00000001) /*!< COMP5 enable */ +#define COMP5_CSR_COMP5MODE ((uint32_t)0x0000000C) /*!< COMP5 power mode */ +#define COMP5_CSR_COMP5MODE_0 ((uint32_t)0x00000004) /*!< COMP5 power mode bit 0 */ +#define COMP5_CSR_COMP5MODE_1 ((uint32_t)0x00000008) /*!< COMP5 power mode bit 1 */ +#define COMP5_CSR_COMP5INSEL ((uint32_t)0x00000070) /*!< COMP5 inverting input select */ +#define COMP5_CSR_COMP5INSEL_0 ((uint32_t)0x00000010) /*!< COMP5 inverting input select bit 0 */ +#define COMP5_CSR_COMP5INSEL_1 ((uint32_t)0x00000020) /*!< COMP5 inverting input select bit 1 */ +#define COMP5_CSR_COMP5INSEL_2 ((uint32_t)0x00000040) /*!< COMP5 inverting input select bit 2 */ +#define COMP5_CSR_COMP5NONINSEL ((uint32_t)0x00000080) /*!< COMP5 non inverting input select */ +#define COMP5_CSR_COMP5OUTSEL ((uint32_t)0x00003C00) /*!< COMP5 output select */ +#define COMP5_CSR_COMP5OUTSEL_0 ((uint32_t)0x00000400) /*!< COMP5 output select bit 0 */ +#define COMP5_CSR_COMP5OUTSEL_1 ((uint32_t)0x00000800) /*!< COMP5 output select bit 1 */ +#define COMP5_CSR_COMP5OUTSEL_2 ((uint32_t)0x00001000) /*!< COMP5 output select bit 2 */ +#define COMP5_CSR_COMP5OUTSEL_3 ((uint32_t)0x00002000) /*!< COMP5 output select bit 3 */ +#define COMP5_CSR_COMP5POL ((uint32_t)0x00008000) /*!< COMP5 output polarity */ +#define COMP5_CSR_COMP5HYST ((uint32_t)0x00030000) /*!< COMP5 hysteresis */ +#define COMP5_CSR_COMP5HYST_0 ((uint32_t)0x00010000) /*!< COMP5 hysteresis bit 0 */ +#define COMP5_CSR_COMP5HYST_1 ((uint32_t)0x00020000) /*!< COMP5 hysteresis bit 1 */ +#define COMP5_CSR_COMP5BLANKING ((uint32_t)0x000C0000) /*!< COMP5 blanking */ +#define COMP5_CSR_COMP5BLANKING_0 ((uint32_t)0x00040000) /*!< COMP5 blanking bit 0 */ +#define COMP5_CSR_COMP5BLANKING_1 ((uint32_t)0x00080000) /*!< COMP5 blanking bit 1 */ +#define COMP5_CSR_COMP5BLANKING_2 ((uint32_t)0x00100000) /*!< COMP5 blanking bit 2 */ +#define COMP5_CSR_COMP5OUT ((uint32_t)0x40000000) /*!< COMP5 output level */ +#define COMP5_CSR_COMP5LOCK ((uint32_t)0x80000000) /*!< COMP5 lock */ + +/********************** Bit definition for COMP6_CSR register ***************/ +#define COMP6_CSR_COMP6EN ((uint32_t)0x00000001) /*!< COMP6 enable */ +#define COMP6_CSR_COMP6MODE ((uint32_t)0x0000000C) /*!< COMP6 power mode */ +#define COMP6_CSR_COMP6MODE_0 ((uint32_t)0x00000004) /*!< COMP6 power mode bit 0 */ +#define COMP6_CSR_COMP6MODE_1 ((uint32_t)0x00000008) /*!< COMP6 power mode bit 1 */ +#define COMP6_CSR_COMP6INSEL ((uint32_t)0x00000070) /*!< COMP6 inverting input select */ +#define COMP6_CSR_COMP6INSEL_0 ((uint32_t)0x00000010) /*!< COMP6 inverting input select bit 0 */ +#define COMP6_CSR_COMP6INSEL_1 ((uint32_t)0x00000020) /*!< COMP6 inverting input select bit 1 */ +#define COMP6_CSR_COMP6INSEL_2 ((uint32_t)0x00000040) /*!< COMP6 inverting input select bit 2 */ +#define COMP6_CSR_COMP6NONINSEL ((uint32_t)0x00000080) /*!< COMP6 non inverting input select */ +#define COMP6_CSR_COMP6WNDWEN ((uint32_t)0x00000200) /*!< COMP6 window mode enable */ +#define COMP6_CSR_COMP6OUTSEL ((uint32_t)0x00003C00) /*!< COMP6 output select */ +#define COMP6_CSR_COMP6OUTSEL_0 ((uint32_t)0x00000400) /*!< COMP6 output select bit 0 */ +#define COMP6_CSR_COMP6OUTSEL_1 ((uint32_t)0x00000800) /*!< COMP6 output select bit 1 */ +#define COMP6_CSR_COMP6OUTSEL_2 ((uint32_t)0x00001000) /*!< COMP6 output select bit 2 */ +#define COMP6_CSR_COMP6OUTSEL_3 ((uint32_t)0x00002000) /*!< COMP6 output select bit 3 */ +#define COMP6_CSR_COMP6POL ((uint32_t)0x00008000) /*!< COMP6 output polarity */ +#define COMP6_CSR_COMP6HYST ((uint32_t)0x00030000) /*!< COMP6 hysteresis */ +#define COMP6_CSR_COMP6HYST_0 ((uint32_t)0x00010000) /*!< COMP6 hysteresis bit 0 */ +#define COMP6_CSR_COMP6HYST_1 ((uint32_t)0x00020000) /*!< COMP6 hysteresis bit 1 */ +#define COMP6_CSR_COMP6BLANKING ((uint32_t)0x000C0000) /*!< COMP6 blanking */ +#define COMP6_CSR_COMP6BLANKING_0 ((uint32_t)0x00040000) /*!< COMP6 blanking bit 0 */ +#define COMP6_CSR_COMP6BLANKING_1 ((uint32_t)0x00080000) /*!< COMP6 blanking bit 1 */ +#define COMP6_CSR_COMP6BLANKING_2 ((uint32_t)0x00100000) /*!< COMP6 blanking bit 2 */ +#define COMP6_CSR_COMP6OUT ((uint32_t)0x40000000) /*!< COMP6 output level */ +#define COMP6_CSR_COMP6LOCK ((uint32_t)0x80000000) /*!< COMP6 lock */ + +/********************** Bit definition for COMP7_CSR register ***************/ +#define COMP7_CSR_COMP7EN ((uint32_t)0x00000001) /*!< COMP7 enable */ +#define COMP7_CSR_COMP7MODE ((uint32_t)0x0000000C) /*!< COMP7 power mode */ +#define COMP7_CSR_COMP7MODE_0 ((uint32_t)0x00000004) /*!< COMP7 power mode bit 0 */ +#define COMP7_CSR_COMP7MODE_1 ((uint32_t)0x00000008) /*!< COMP7 power mode bit 1 */ +#define COMP7_CSR_COMP7INSEL ((uint32_t)0x00000070) /*!< COMP7 inverting input select */ +#define COMP7_CSR_COMP7INSEL_0 ((uint32_t)0x00000010) /*!< COMP7 inverting input select bit 0 */ +#define COMP7_CSR_COMP7INSEL_1 ((uint32_t)0x00000020) /*!< COMP7 inverting input select bit 1 */ +#define COMP7_CSR_COMP7INSEL_2 ((uint32_t)0x00000040) /*!< COMP7 inverting input select bit 2 */ +#define COMP7_CSR_COMP7NONINSEL ((uint32_t)0x00000080) /*!< COMP7 non inverting input select */ +#define COMP7_CSR_COMP7OUTSEL ((uint32_t)0x00003C00) /*!< COMP7 output select */ +#define COMP7_CSR_COMP7OUTSEL_0 ((uint32_t)0x00000400) /*!< COMP7 output select bit 0 */ +#define COMP7_CSR_COMP7OUTSEL_1 ((uint32_t)0x00000800) /*!< COMP7 output select bit 1 */ +#define COMP7_CSR_COMP7OUTSEL_2 ((uint32_t)0x00001000) /*!< COMP7 output select bit 2 */ +#define COMP7_CSR_COMP7OUTSEL_3 ((uint32_t)0x00002000) /*!< COMP7 output select bit 3 */ +#define COMP7_CSR_COMP7POL ((uint32_t)0x00008000) /*!< COMP7 output polarity */ +#define COMP7_CSR_COMP7HYST ((uint32_t)0x00030000) /*!< COMP7 hysteresis */ +#define COMP7_CSR_COMP7HYST_0 ((uint32_t)0x00010000) /*!< COMP7 hysteresis bit 0 */ +#define COMP7_CSR_COMP7HYST_1 ((uint32_t)0x00020000) /*!< COMP7 hysteresis bit 1 */ +#define COMP7_CSR_COMP7BLANKING ((uint32_t)0x000C0000) /*!< COMP7 blanking */ +#define COMP7_CSR_COMP7BLANKING_0 ((uint32_t)0x00040000) /*!< COMP7 blanking bit 0 */ +#define COMP7_CSR_COMP7BLANKING_1 ((uint32_t)0x00080000) /*!< COMP7 blanking bit 1 */ +#define COMP7_CSR_COMP7BLANKING_2 ((uint32_t)0x00100000) /*!< COMP7 blanking bit 2 */ +#define COMP7_CSR_COMP7OUT ((uint32_t)0x40000000) /*!< COMP7 output level */ +#define COMP7_CSR_COMP7LOCK ((uint32_t)0x80000000) /*!< COMP7 lock */ + +/********************** Bit definition for COMP_CSR register ****************/ +#define COMP_CSR_COMPxEN ((uint32_t)0x00000001) /*!< COMPx enable */ +#define COMP_CSR_COMP1SW1 ((uint32_t)0x00000002) /*!< COMP1 SW1 switch control */ +#define COMP_CSR_COMPxMODE ((uint32_t)0x0000000C) /*!< COMPx power mode */ +#define COMP_CSR_COMPxMODE_0 ((uint32_t)0x00000004) /*!< COMPx power mode bit 0 */ +#define COMP_CSR_COMPxMODE_1 ((uint32_t)0x00000008) /*!< COMPx power mode bit 1 */ +#define COMP_CSR_COMPxINSEL ((uint32_t)0x00000070) /*!< COMPx inverting input select */ +#define COMP_CSR_COMPxINSEL_0 ((uint32_t)0x00000010) /*!< COMPx inverting input select bit 0 */ +#define COMP_CSR_COMPxINSEL_1 ((uint32_t)0x00000020) /*!< COMPx inverting input select bit 1 */ +#define COMP_CSR_COMPxINSEL_2 ((uint32_t)0x00000040) /*!< COMPx inverting input select bit 2 */ +#define COMP_CSR_COMPxNONINSEL ((uint32_t)0x00000080) /*!< COMPx non inverting input select */ +#define COMP_CSR_COMPxWNDWEN ((uint32_t)0x00000200) /*!< COMPx window mode enable */ +#define COMP_CSR_COMPxOUTSEL ((uint32_t)0x00003C00) /*!< COMPx output select */ +#define COMP_CSR_COMPxOUTSEL_0 ((uint32_t)0x00000400) /*!< COMPx output select bit 0 */ +#define COMP_CSR_COMPxOUTSEL_1 ((uint32_t)0x00000800) /*!< COMPx output select bit 1 */ +#define COMP_CSR_COMPxOUTSEL_2 ((uint32_t)0x00001000) /*!< COMPx output select bit 2 */ +#define COMP_CSR_COMPxOUTSEL_3 ((uint32_t)0x00002000) /*!< COMPx output select bit 3 */ +#define COMP_CSR_COMPxPOL ((uint32_t)0x00008000) /*!< COMPx output polarity */ +#define COMP_CSR_COMPxHYST ((uint32_t)0x00030000) /*!< COMPx hysteresis */ +#define COMP_CSR_COMPxHYST_0 ((uint32_t)0x00010000) /*!< COMPx hysteresis bit 0 */ +#define COMP_CSR_COMPxHYST_1 ((uint32_t)0x00020000) /*!< COMPx hysteresis bit 1 */ +#define COMP_CSR_COMPxBLANKING ((uint32_t)0x000C0000) /*!< COMPx blanking */ +#define COMP_CSR_COMPxBLANKING_0 ((uint32_t)0x00040000) /*!< COMPx blanking bit 0 */ +#define COMP_CSR_COMPxBLANKING_1 ((uint32_t)0x00080000) /*!< COMPx blanking bit 1 */ +#define COMP_CSR_COMPxBLANKING_2 ((uint32_t)0x00100000) /*!< COMPx blanking bit 2 */ +#define COMP_CSR_COMPxINSEL_3 ((uint32_t)0x00400000) /*!< COMPx inverting input select bit 3 */ +#define COMP_CSR_COMPxOUT ((uint32_t)0x40000000) /*!< COMPx output level */ +#define COMP_CSR_COMPxLOCK ((uint32_t)0x80000000) /*!< COMPx lock */ + +/******************************************************************************/ +/* */ +/* Operational Amplifier (OPAMP) */ +/* */ +/******************************************************************************/ +/********************* Bit definition for OPAMP1_CSR register ***************/ +#define OPAMP1_CSR_OPAMP1EN ((uint32_t)0x00000001) /*!< OPAMP1 enable */ +#define OPAMP1_CSR_FORCEVP ((uint32_t)0x00000002) /*!< Connect the internal references to the plus input of the OPAMPX */ +#define OPAMP1_CSR_VPSEL ((uint32_t)0x0000000C) /*!< Non inverting input selection */ +#define OPAMP1_CSR_VPSEL_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define OPAMP1_CSR_VPSEL_1 ((uint32_t)0x00000008) /*!< Bit 1 */ +#define OPAMP1_CSR_VMSEL ((uint32_t)0x00000060) /*!< Inverting input selection */ +#define OPAMP1_CSR_VMSEL_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define OPAMP1_CSR_VMSEL_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define OPAMP1_CSR_TCMEN ((uint32_t)0x00000080) /*!< Timer-Controlled Mux mode enable */ +#define OPAMP1_CSR_VMSSEL ((uint32_t)0x00000100) /*!< Inverting input secondary selection */ +#define OPAMP1_CSR_VPSSEL ((uint32_t)0x00000600) /*!< Non inverting input secondary selection */ +#define OPAMP1_CSR_VPSSEL_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define OPAMP1_CSR_VPSSEL_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define OPAMP1_CSR_CALON ((uint32_t)0x00000800) /*!< Calibration mode enable */ +#define OPAMP1_CSR_CALSEL ((uint32_t)0x00003000) /*!< Calibration selection */ +#define OPAMP1_CSR_CALSEL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define OPAMP1_CSR_CALSEL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define OPAMP1_CSR_PGGAIN ((uint32_t)0x0003C000) /*!< Gain in PGA mode */ +#define OPAMP1_CSR_PGGAIN_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define OPAMP1_CSR_PGGAIN_1 ((uint32_t)0x00008000) /*!< Bit 1 */ +#define OPAMP1_CSR_PGGAIN_2 ((uint32_t)0x00010000) /*!< Bit 2 */ +#define OPAMP1_CSR_PGGAIN_3 ((uint32_t)0x00020000) /*!< Bit 3 */ +#define OPAMP1_CSR_USERTRIM ((uint32_t)0x00040000) /*!< User trimming enable */ +#define OPAMP1_CSR_TRIMOFFSETP ((uint32_t)0x00F80000) /*!< Offset trimming value (PMOS) */ +#define OPAMP1_CSR_TRIMOFFSETN ((uint32_t)0x1F000000) /*!< Offset trimming value (NMOS) */ +#define OPAMP1_CSR_TSTREF ((uint32_t)0x20000000) /*!< It enables the switch to put out the internal reference */ +#define OPAMP1_CSR_OUTCAL ((uint32_t)0x40000000) /*!< OPAMP output status flag */ +#define OPAMP1_CSR_LOCK ((uint32_t)0x80000000) /*!< OPAMP lock */ + +/********************* Bit definition for OPAMP2_CSR register ***************/ +#define OPAMP2_CSR_OPAMP2EN ((uint32_t)0x00000001) /*!< OPAMP2 enable */ +#define OPAMP2_CSR_FORCEVP ((uint32_t)0x00000002) /*!< Connect the internal references to the plus input of the OPAMPX */ +#define OPAMP2_CSR_VPSEL ((uint32_t)0x0000000C) /*!< Non inverting input selection */ +#define OPAMP2_CSR_VPSEL_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define OPAMP2_CSR_VPSEL_1 ((uint32_t)0x00000008) /*!< Bit 1 */ +#define OPAMP2_CSR_VMSEL ((uint32_t)0x00000060) /*!< Inverting input selection */ +#define OPAMP2_CSR_VMSEL_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define OPAMP2_CSR_VMSEL_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define OPAMP2_CSR_TCMEN ((uint32_t)0x00000080) /*!< Timer-Controlled Mux mode enable */ +#define OPAMP2_CSR_VMSSEL ((uint32_t)0x00000100) /*!< Inverting input secondary selection */ +#define OPAMP2_CSR_VPSSEL ((uint32_t)0x00000600) /*!< Non inverting input secondary selection */ +#define OPAMP2_CSR_VPSSEL_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define OPAMP2_CSR_VPSSEL_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define OPAMP2_CSR_CALON ((uint32_t)0x00000800) /*!< Calibration mode enable */ +#define OPAMP2_CSR_CALSEL ((uint32_t)0x00003000) /*!< Calibration selection */ +#define OPAMP2_CSR_CALSEL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define OPAMP2_CSR_CALSEL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define OPAMP2_CSR_PGGAIN ((uint32_t)0x0003C000) /*!< Gain in PGA mode */ +#define OPAMP2_CSR_PGGAIN_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define OPAMP2_CSR_PGGAIN_1 ((uint32_t)0x00008000) /*!< Bit 1 */ +#define OPAMP2_CSR_PGGAIN_2 ((uint32_t)0x00010000) /*!< Bit 2 */ +#define OPAMP2_CSR_PGGAIN_3 ((uint32_t)0x00020000) /*!< Bit 3 */ +#define OPAMP2_CSR_USERTRIM ((uint32_t)0x00040000) /*!< User trimming enable */ +#define OPAMP2_CSR_TRIMOFFSETP ((uint32_t)0x00F80000) /*!< Offset trimming value (PMOS) */ +#define OPAMP2_CSR_TRIMOFFSETN ((uint32_t)0x1F000000) /*!< Offset trimming value (NMOS) */ +#define OPAMP2_CSR_TSTREF ((uint32_t)0x20000000) /*!< It enables the switch to put out the internal reference */ +#define OPAMP2_CSR_OUTCAL ((uint32_t)0x40000000) /*!< OPAMP output status flag */ +#define OPAMP2_CSR_LOCK ((uint32_t)0x80000000) /*!< OPAMP lock */ + +/********************* Bit definition for OPAMP3_CSR register ***************/ +#define OPAMP3_CSR_OPAMP3EN ((uint32_t)0x00000001) /*!< OPAMP3 enable */ +#define OPAMP3_CSR_FORCEVP ((uint32_t)0x00000002) /*!< Connect the internal references to the plus input of the OPAMPX */ +#define OPAMP3_CSR_VPSEL ((uint32_t)0x0000000C) /*!< Non inverting input selection */ +#define OPAMP3_CSR_VPSEL_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define OPAMP3_CSR_VPSEL_1 ((uint32_t)0x00000008) /*!< Bit 1 */ +#define OPAMP3_CSR_VMSEL ((uint32_t)0x00000060) /*!< Inverting input selection */ +#define OPAMP3_CSR_VMSEL_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define OPAMP3_CSR_VMSEL_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define OPAMP3_CSR_TCMEN ((uint32_t)0x00000080) /*!< Timer-Controlled Mux mode enable */ +#define OPAMP3_CSR_VMSSEL ((uint32_t)0x00000100) /*!< Inverting input secondary selection */ +#define OPAMP3_CSR_VPSSEL ((uint32_t)0x00000600) /*!< Non inverting input secondary selection */ +#define OPAMP3_CSR_VPSSEL_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define OPAMP3_CSR_VPSSEL_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define OPAMP3_CSR_CALON ((uint32_t)0x00000800) /*!< Calibration mode enable */ +#define OPAMP3_CSR_CALSEL ((uint32_t)0x00003000) /*!< Calibration selection */ +#define OPAMP3_CSR_CALSEL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define OPAMP3_CSR_CALSEL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define OPAMP3_CSR_PGGAIN ((uint32_t)0x0003C000) /*!< Gain in PGA mode */ +#define OPAMP3_CSR_PGGAIN_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define OPAMP3_CSR_PGGAIN_1 ((uint32_t)0x00008000) /*!< Bit 1 */ +#define OPAMP3_CSR_PGGAIN_2 ((uint32_t)0x00010000) /*!< Bit 2 */ +#define OPAMP3_CSR_PGGAIN_3 ((uint32_t)0x00020000) /*!< Bit 3 */ +#define OPAMP3_CSR_USERTRIM ((uint32_t)0x00040000) /*!< User trimming enable */ +#define OPAMP3_CSR_TRIMOFFSETP ((uint32_t)0x00F80000) /*!< Offset trimming value (PMOS) */ +#define OPAMP3_CSR_TRIMOFFSETN ((uint32_t)0x1F000000) /*!< Offset trimming value (NMOS) */ +#define OPAMP3_CSR_TSTREF ((uint32_t)0x20000000) /*!< It enables the switch to put out the internal reference */ +#define OPAMP3_CSR_OUTCAL ((uint32_t)0x40000000) /*!< OPAMP output status flag */ +#define OPAMP3_CSR_LOCK ((uint32_t)0x80000000) /*!< OPAMP lock */ + +/********************* Bit definition for OPAMP4_CSR register ***************/ +#define OPAMP4_CSR_OPAMP4EN ((uint32_t)0x00000001) /*!< OPAMP4 enable */ +#define OPAMP4_CSR_FORCEVP ((uint32_t)0x00000002) /*!< Connect the internal references to the plus input of the OPAMPX */ +#define OPAMP4_CSR_VPSEL ((uint32_t)0x0000000C) /*!< Non inverting input selection */ +#define OPAMP4_CSR_VPSEL_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define OPAMP4_CSR_VPSEL_1 ((uint32_t)0x00000008) /*!< Bit 1 */ +#define OPAMP4_CSR_VMSEL ((uint32_t)0x00000060) /*!< Inverting input selection */ +#define OPAMP4_CSR_VMSEL_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define OPAMP4_CSR_VMSEL_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define OPAMP4_CSR_TCMEN ((uint32_t)0x00000080) /*!< Timer-Controlled Mux mode enable */ +#define OPAMP4_CSR_VMSSEL ((uint32_t)0x00000100) /*!< Inverting input secondary selection */ +#define OPAMP4_CSR_VPSSEL ((uint32_t)0x00000600) /*!< Non inverting input secondary selection */ +#define OPAMP4_CSR_VPSSEL_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define OPAMP4_CSR_VPSSEL_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define OPAMP4_CSR_CALON ((uint32_t)0x00000800) /*!< Calibration mode enable */ +#define OPAMP4_CSR_CALSEL ((uint32_t)0x00003000) /*!< Calibration selection */ +#define OPAMP4_CSR_CALSEL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define OPAMP4_CSR_CALSEL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define OPAMP4_CSR_PGGAIN ((uint32_t)0x0003C000) /*!< Gain in PGA mode */ +#define OPAMP4_CSR_PGGAIN_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define OPAMP4_CSR_PGGAIN_1 ((uint32_t)0x00008000) /*!< Bit 1 */ +#define OPAMP4_CSR_PGGAIN_2 ((uint32_t)0x00010000) /*!< Bit 2 */ +#define OPAMP4_CSR_PGGAIN_3 ((uint32_t)0x00020000) /*!< Bit 3 */ +#define OPAMP4_CSR_USERTRIM ((uint32_t)0x00040000) /*!< User trimming enable */ +#define OPAMP4_CSR_TRIMOFFSETP ((uint32_t)0x00F80000) /*!< Offset trimming value (PMOS) */ +#define OPAMP4_CSR_TRIMOFFSETN ((uint32_t)0x1F000000) /*!< Offset trimming value (NMOS) */ +#define OPAMP4_CSR_TSTREF ((uint32_t)0x20000000) /*!< It enables the switch to put out the internal reference */ +#define OPAMP4_CSR_OUTCAL ((uint32_t)0x40000000) /*!< OPAMP output status flag */ +#define OPAMP4_CSR_LOCK ((uint32_t)0x80000000) /*!< OPAMP lock */ + +/********************* Bit definition for OPAMPx_CSR register ***************/ +#define OPAMP_CSR_OPAMPxEN ((uint32_t)0x00000001) /*!< OPAMP enable */ +#define OPAMP_CSR_FORCEVP ((uint32_t)0x00000002) /*!< Connect the internal references to the plus input of the OPAMPX */ +#define OPAMP_CSR_VPSEL ((uint32_t)0x0000000C) /*!< Non inverting input selection */ +#define OPAMP_CSR_VPSEL_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define OPAMP_CSR_VPSEL_1 ((uint32_t)0x00000008) /*!< Bit 1 */ +#define OPAMP_CSR_VMSEL ((uint32_t)0x00000060) /*!< Inverting input selection */ +#define OPAMP_CSR_VMSEL_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define OPAMP_CSR_VMSEL_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define OPAMP_CSR_TCMEN ((uint32_t)0x00000080) /*!< Timer-Controlled Mux mode enable */ +#define OPAMP_CSR_VMSSEL ((uint32_t)0x00000100) /*!< Inverting input secondary selection */ +#define OPAMP_CSR_VPSSEL ((uint32_t)0x00000600) /*!< Non inverting input secondary selection */ +#define OPAMP_CSR_VPSSEL_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define OPAMP_CSR_VPSSEL_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define OPAMP_CSR_CALON ((uint32_t)0x00000800) /*!< Calibration mode enable */ +#define OPAMP_CSR_CALSEL ((uint32_t)0x00003000) /*!< Calibration selection */ +#define OPAMP_CSR_CALSEL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define OPAMP_CSR_CALSEL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define OPAMP_CSR_PGGAIN ((uint32_t)0x0003C000) /*!< Gain in PGA mode */ +#define OPAMP_CSR_PGGAIN_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define OPAMP_CSR_PGGAIN_1 ((uint32_t)0x00008000) /*!< Bit 1 */ +#define OPAMP_CSR_PGGAIN_2 ((uint32_t)0x00010000) /*!< Bit 2 */ +#define OPAMP_CSR_PGGAIN_3 ((uint32_t)0x00020000) /*!< Bit 3 */ +#define OPAMP_CSR_USERTRIM ((uint32_t)0x00040000) /*!< User trimming enable */ +#define OPAMP_CSR_TRIMOFFSETP ((uint32_t)0x00F80000) /*!< Offset trimming value (PMOS) */ +#define OPAMP_CSR_TRIMOFFSETN ((uint32_t)0x1F000000) /*!< Offset trimming value (NMOS) */ +#define OPAMP_CSR_TSTREF ((uint32_t)0x20000000) /*!< It enables the switch to put out the internal reference */ +#define OPAMP_CSR_OUTCAL ((uint32_t)0x40000000) /*!< OPAMP output status flag */ +#define OPAMP_CSR_LOCK ((uint32_t)0x80000000) /*!< OPAMP lock */ + + +/******************************************************************************/ +/* */ +/* Controller Area Network (CAN ) */ +/* */ +/******************************************************************************/ +/*!<CAN control and status registers */ +/******************* Bit definition for CAN_MCR register ********************/ +#define CAN_MCR_INRQ ((uint16_t)0x0001) /*!<Initialization Request */ +#define CAN_MCR_SLEEP ((uint16_t)0x0002) /*!<Sleep Mode Request */ +#define CAN_MCR_TXFP ((uint16_t)0x0004) /*!<Transmit FIFO Priority */ +#define CAN_MCR_RFLM ((uint16_t)0x0008) /*!<Receive FIFO Locked Mode */ +#define CAN_MCR_NART ((uint16_t)0x0010) /*!<No Automatic Retransmission */ +#define CAN_MCR_AWUM ((uint16_t)0x0020) /*!<Automatic Wakeup Mode */ +#define CAN_MCR_ABOM ((uint16_t)0x0040) /*!<Automatic Bus-Off Management */ +#define CAN_MCR_TTCM ((uint16_t)0x0080) /*!<Time Triggered Communication Mode */ +#define CAN_MCR_RESET ((uint16_t)0x8000) /*!<bxCAN software master reset */ + +/******************* Bit definition for CAN_MSR register ********************/ +#define CAN_MSR_INAK ((uint16_t)0x0001) /*!<Initialization Acknowledge */ +#define CAN_MSR_SLAK ((uint16_t)0x0002) /*!<Sleep Acknowledge */ +#define CAN_MSR_ERRI ((uint16_t)0x0004) /*!<Error Interrupt */ +#define CAN_MSR_WKUI ((uint16_t)0x0008) /*!<Wakeup Interrupt */ +#define CAN_MSR_SLAKI ((uint16_t)0x0010) /*!<Sleep Acknowledge Interrupt */ +#define CAN_MSR_TXM ((uint16_t)0x0100) /*!<Transmit Mode */ +#define CAN_MSR_RXM ((uint16_t)0x0200) /*!<Receive Mode */ +#define CAN_MSR_SAMP ((uint16_t)0x0400) /*!<Last Sample Point */ +#define CAN_MSR_RX ((uint16_t)0x0800) /*!<CAN Rx Signal */ + +/******************* Bit definition for CAN_TSR register ********************/ +#define CAN_TSR_RQCP0 ((uint32_t)0x00000001) /*!<Request Completed Mailbox0 */ +#define CAN_TSR_TXOK0 ((uint32_t)0x00000002) /*!<Transmission OK of Mailbox0 */ +#define CAN_TSR_ALST0 ((uint32_t)0x00000004) /*!<Arbitration Lost for Mailbox0 */ +#define CAN_TSR_TERR0 ((uint32_t)0x00000008) /*!<Transmission Error of Mailbox0 */ +#define CAN_TSR_ABRQ0 ((uint32_t)0x00000080) /*!<Abort Request for Mailbox0 */ +#define CAN_TSR_RQCP1 ((uint32_t)0x00000100) /*!<Request Completed Mailbox1 */ +#define CAN_TSR_TXOK1 ((uint32_t)0x00000200) /*!<Transmission OK of Mailbox1 */ +#define CAN_TSR_ALST1 ((uint32_t)0x00000400) /*!<Arbitration Lost for Mailbox1 */ +#define CAN_TSR_TERR1 ((uint32_t)0x00000800) /*!<Transmission Error of Mailbox1 */ +#define CAN_TSR_ABRQ1 ((uint32_t)0x00008000) /*!<Abort Request for Mailbox 1 */ +#define CAN_TSR_RQCP2 ((uint32_t)0x00010000) /*!<Request Completed Mailbox2 */ +#define CAN_TSR_TXOK2 ((uint32_t)0x00020000) /*!<Transmission OK of Mailbox 2 */ +#define CAN_TSR_ALST2 ((uint32_t)0x00040000) /*!<Arbitration Lost for mailbox 2 */ +#define CAN_TSR_TERR2 ((uint32_t)0x00080000) /*!<Transmission Error of Mailbox 2 */ +#define CAN_TSR_ABRQ2 ((uint32_t)0x00800000) /*!<Abort Request for Mailbox 2 */ +#define CAN_TSR_CODE ((uint32_t)0x03000000) /*!<Mailbox Code */ + +#define CAN_TSR_TME ((uint32_t)0x1C000000) /*!<TME[2:0] bits */ +#define CAN_TSR_TME0 ((uint32_t)0x04000000) /*!<Transmit Mailbox 0 Empty */ +#define CAN_TSR_TME1 ((uint32_t)0x08000000) /*!<Transmit Mailbox 1 Empty */ +#define CAN_TSR_TME2 ((uint32_t)0x10000000) /*!<Transmit Mailbox 2 Empty */ + +#define CAN_TSR_LOW ((uint32_t)0xE0000000) /*!<LOW[2:0] bits */ +#define CAN_TSR_LOW0 ((uint32_t)0x20000000) /*!<Lowest Priority Flag for Mailbox 0 */ +#define CAN_TSR_LOW1 ((uint32_t)0x40000000) /*!<Lowest Priority Flag for Mailbox 1 */ +#define CAN_TSR_LOW2 ((uint32_t)0x80000000) /*!<Lowest Priority Flag for Mailbox 2 */ + +/******************* Bit definition for CAN_RF0R register *******************/ +#define CAN_RF0R_FMP0 ((uint8_t)0x03) /*!<FIFO 0 Message Pending */ +#define CAN_RF0R_FULL0 ((uint8_t)0x08) /*!<FIFO 0 Full */ +#define CAN_RF0R_FOVR0 ((uint8_t)0x10) /*!<FIFO 0 Overrun */ +#define CAN_RF0R_RFOM0 ((uint8_t)0x20) /*!<Release FIFO 0 Output Mailbox */ + +/******************* Bit definition for CAN_RF1R register *******************/ +#define CAN_RF1R_FMP1 ((uint8_t)0x03) /*!<FIFO 1 Message Pending */ +#define CAN_RF1R_FULL1 ((uint8_t)0x08) /*!<FIFO 1 Full */ +#define CAN_RF1R_FOVR1 ((uint8_t)0x10) /*!<FIFO 1 Overrun */ +#define CAN_RF1R_RFOM1 ((uint8_t)0x20) /*!<Release FIFO 1 Output Mailbox */ + +/******************** Bit definition for CAN_IER register *******************/ +#define CAN_IER_TMEIE ((uint32_t)0x00000001) /*!<Transmit Mailbox Empty Interrupt Enable */ +#define CAN_IER_FMPIE0 ((uint32_t)0x00000002) /*!<FIFO Message Pending Interrupt Enable */ +#define CAN_IER_FFIE0 ((uint32_t)0x00000004) /*!<FIFO Full Interrupt Enable */ +#define CAN_IER_FOVIE0 ((uint32_t)0x00000008) /*!<FIFO Overrun Interrupt Enable */ +#define CAN_IER_FMPIE1 ((uint32_t)0x00000010) /*!<FIFO Message Pending Interrupt Enable */ +#define CAN_IER_FFIE1 ((uint32_t)0x00000020) /*!<FIFO Full Interrupt Enable */ +#define CAN_IER_FOVIE1 ((uint32_t)0x00000040) /*!<FIFO Overrun Interrupt Enable */ +#define CAN_IER_EWGIE ((uint32_t)0x00000100) /*!<Error Warning Interrupt Enable */ +#define CAN_IER_EPVIE ((uint32_t)0x00000200) /*!<Error Passive Interrupt Enable */ +#define CAN_IER_BOFIE ((uint32_t)0x00000400) /*!<Bus-Off Interrupt Enable */ +#define CAN_IER_LECIE ((uint32_t)0x00000800) /*!<Last Error Code Interrupt Enable */ +#define CAN_IER_ERRIE ((uint32_t)0x00008000) /*!<Error Interrupt Enable */ +#define CAN_IER_WKUIE ((uint32_t)0x00010000) /*!<Wakeup Interrupt Enable */ +#define CAN_IER_SLKIE ((uint32_t)0x00020000) /*!<Sleep Interrupt Enable */ + +/******************** Bit definition for CAN_ESR register *******************/ +#define CAN_ESR_EWGF ((uint32_t)0x00000001) /*!<Error Warning Flag */ +#define CAN_ESR_EPVF ((uint32_t)0x00000002) /*!<Error Passive Flag */ +#define CAN_ESR_BOFF ((uint32_t)0x00000004) /*!<Bus-Off Flag */ + +#define CAN_ESR_LEC ((uint32_t)0x00000070) /*!<LEC[2:0] bits (Last Error Code) */ +#define CAN_ESR_LEC_0 ((uint32_t)0x00000010) /*!<Bit 0 */ +#define CAN_ESR_LEC_1 ((uint32_t)0x00000020) /*!<Bit 1 */ +#define CAN_ESR_LEC_2 ((uint32_t)0x00000040) /*!<Bit 2 */ + +#define CAN_ESR_TEC ((uint32_t)0x00FF0000) /*!<Least significant byte of the 9-bit Transmit Error Counter */ +#define CAN_ESR_REC ((uint32_t)0xFF000000) /*!<Receive Error Counter */ + +/******************* Bit definition for CAN_BTR register ********************/ +#define CAN_BTR_BRP ((uint32_t)0x000003FF) /*!<Baud Rate Prescaler */ +#define CAN_BTR_TS1 ((uint32_t)0x000F0000) /*!<Time Segment 1 */ +#define CAN_BTR_TS2 ((uint32_t)0x00700000) /*!<Time Segment 2 */ +#define CAN_BTR_SJW ((uint32_t)0x03000000) /*!<Resynchronization Jump Width */ +#define CAN_BTR_LBKM ((uint32_t)0x40000000) /*!<Loop Back Mode (Debug) */ +#define CAN_BTR_SILM ((uint32_t)0x80000000) /*!<Silent Mode */ + +/*!<Mailbox registers */ +/****************** Bit definition for CAN_TI0R register ********************/ +#define CAN_TI0R_TXRQ ((uint32_t)0x00000001) /*!<Transmit Mailbox Request */ +#define CAN_TI0R_RTR ((uint32_t)0x00000002) /*!<Remote Transmission Request */ +#define CAN_TI0R_IDE ((uint32_t)0x00000004) /*!<Identifier Extension */ +#define CAN_TI0R_EXID ((uint32_t)0x001FFFF8) /*!<Extended Identifier */ +#define CAN_TI0R_STID ((uint32_t)0xFFE00000) /*!<Standard Identifier or Extended Identifier */ + +/****************** Bit definition for CAN_TDT0R register *******************/ +#define CAN_TDT0R_DLC ((uint32_t)0x0000000F) /*!<Data Length Code */ +#define CAN_TDT0R_TGT ((uint32_t)0x00000100) /*!<Transmit Global Time */ +#define CAN_TDT0R_TIME ((uint32_t)0xFFFF0000) /*!<Message Time Stamp */ + +/****************** Bit definition for CAN_TDL0R register *******************/ +#define CAN_TDL0R_DATA0 ((uint32_t)0x000000FF) /*!<Data byte 0 */ +#define CAN_TDL0R_DATA1 ((uint32_t)0x0000FF00) /*!<Data byte 1 */ +#define CAN_TDL0R_DATA2 ((uint32_t)0x00FF0000) /*!<Data byte 2 */ +#define CAN_TDL0R_DATA3 ((uint32_t)0xFF000000) /*!<Data byte 3 */ + +/****************** Bit definition for CAN_TDH0R register *******************/ +#define CAN_TDH0R_DATA4 ((uint32_t)0x000000FF) /*!<Data byte 4 */ +#define CAN_TDH0R_DATA5 ((uint32_t)0x0000FF00) /*!<Data byte 5 */ +#define CAN_TDH0R_DATA6 ((uint32_t)0x00FF0000) /*!<Data byte 6 */ +#define CAN_TDH0R_DATA7 ((uint32_t)0xFF000000) /*!<Data byte 7 */ + +/******************* Bit definition for CAN_TI1R register *******************/ +#define CAN_TI1R_TXRQ ((uint32_t)0x00000001) /*!<Transmit Mailbox Request */ +#define CAN_TI1R_RTR ((uint32_t)0x00000002) /*!<Remote Transmission Request */ +#define CAN_TI1R_IDE ((uint32_t)0x00000004) /*!<Identifier Extension */ +#define CAN_TI1R_EXID ((uint32_t)0x001FFFF8) /*!<Extended Identifier */ +#define CAN_TI1R_STID ((uint32_t)0xFFE00000) /*!<Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_TDT1R register ******************/ +#define CAN_TDT1R_DLC ((uint32_t)0x0000000F) /*!<Data Length Code */ +#define CAN_TDT1R_TGT ((uint32_t)0x00000100) /*!<Transmit Global Time */ +#define CAN_TDT1R_TIME ((uint32_t)0xFFFF0000) /*!<Message Time Stamp */ + +/******************* Bit definition for CAN_TDL1R register ******************/ +#define CAN_TDL1R_DATA0 ((uint32_t)0x000000FF) /*!<Data byte 0 */ +#define CAN_TDL1R_DATA1 ((uint32_t)0x0000FF00) /*!<Data byte 1 */ +#define CAN_TDL1R_DATA2 ((uint32_t)0x00FF0000) /*!<Data byte 2 */ +#define CAN_TDL1R_DATA3 ((uint32_t)0xFF000000) /*!<Data byte 3 */ + +/******************* Bit definition for CAN_TDH1R register ******************/ +#define CAN_TDH1R_DATA4 ((uint32_t)0x000000FF) /*!<Data byte 4 */ +#define CAN_TDH1R_DATA5 ((uint32_t)0x0000FF00) /*!<Data byte 5 */ +#define CAN_TDH1R_DATA6 ((uint32_t)0x00FF0000) /*!<Data byte 6 */ +#define CAN_TDH1R_DATA7 ((uint32_t)0xFF000000) /*!<Data byte 7 */ + +/******************* Bit definition for CAN_TI2R register *******************/ +#define CAN_TI2R_TXRQ ((uint32_t)0x00000001) /*!<Transmit Mailbox Request */ +#define CAN_TI2R_RTR ((uint32_t)0x00000002) /*!<Remote Transmission Request */ +#define CAN_TI2R_IDE ((uint32_t)0x00000004) /*!<Identifier Extension */ +#define CAN_TI2R_EXID ((uint32_t)0x001FFFF8) /*!<Extended identifier */ +#define CAN_TI2R_STID ((uint32_t)0xFFE00000) /*!<Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_TDT2R register ******************/ +#define CAN_TDT2R_DLC ((uint32_t)0x0000000F) /*!<Data Length Code */ +#define CAN_TDT2R_TGT ((uint32_t)0x00000100) /*!<Transmit Global Time */ +#define CAN_TDT2R_TIME ((uint32_t)0xFFFF0000) /*!<Message Time Stamp */ + +/******************* Bit definition for CAN_TDL2R register ******************/ +#define CAN_TDL2R_DATA0 ((uint32_t)0x000000FF) /*!<Data byte 0 */ +#define CAN_TDL2R_DATA1 ((uint32_t)0x0000FF00) /*!<Data byte 1 */ +#define CAN_TDL2R_DATA2 ((uint32_t)0x00FF0000) /*!<Data byte 2 */ +#define CAN_TDL2R_DATA3 ((uint32_t)0xFF000000) /*!<Data byte 3 */ + +/******************* Bit definition for CAN_TDH2R register ******************/ +#define CAN_TDH2R_DATA4 ((uint32_t)0x000000FF) /*!<Data byte 4 */ +#define CAN_TDH2R_DATA5 ((uint32_t)0x0000FF00) /*!<Data byte 5 */ +#define CAN_TDH2R_DATA6 ((uint32_t)0x00FF0000) /*!<Data byte 6 */ +#define CAN_TDH2R_DATA7 ((uint32_t)0xFF000000) /*!<Data byte 7 */ + +/******************* Bit definition for CAN_RI0R register *******************/ +#define CAN_RI0R_RTR ((uint32_t)0x00000002) /*!<Remote Transmission Request */ +#define CAN_RI0R_IDE ((uint32_t)0x00000004) /*!<Identifier Extension */ +#define CAN_RI0R_EXID ((uint32_t)0x001FFFF8) /*!<Extended Identifier */ +#define CAN_RI0R_STID ((uint32_t)0xFFE00000) /*!<Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_RDT0R register ******************/ +#define CAN_RDT0R_DLC ((uint32_t)0x0000000F) /*!<Data Length Code */ +#define CAN_RDT0R_FMI ((uint32_t)0x0000FF00) /*!<Filter Match Index */ +#define CAN_RDT0R_TIME ((uint32_t)0xFFFF0000) /*!<Message Time Stamp */ + +/******************* Bit definition for CAN_RDL0R register ******************/ +#define CAN_RDL0R_DATA0 ((uint32_t)0x000000FF) /*!<Data byte 0 */ +#define CAN_RDL0R_DATA1 ((uint32_t)0x0000FF00) /*!<Data byte 1 */ +#define CAN_RDL0R_DATA2 ((uint32_t)0x00FF0000) /*!<Data byte 2 */ +#define CAN_RDL0R_DATA3 ((uint32_t)0xFF000000) /*!<Data byte 3 */ + +/******************* Bit definition for CAN_RDH0R register ******************/ +#define CAN_RDH0R_DATA4 ((uint32_t)0x000000FF) /*!<Data byte 4 */ +#define CAN_RDH0R_DATA5 ((uint32_t)0x0000FF00) /*!<Data byte 5 */ +#define CAN_RDH0R_DATA6 ((uint32_t)0x00FF0000) /*!<Data byte 6 */ +#define CAN_RDH0R_DATA7 ((uint32_t)0xFF000000) /*!<Data byte 7 */ + +/******************* Bit definition for CAN_RI1R register *******************/ +#define CAN_RI1R_RTR ((uint32_t)0x00000002) /*!<Remote Transmission Request */ +#define CAN_RI1R_IDE ((uint32_t)0x00000004) /*!<Identifier Extension */ +#define CAN_RI1R_EXID ((uint32_t)0x001FFFF8) /*!<Extended identifier */ +#define CAN_RI1R_STID ((uint32_t)0xFFE00000) /*!<Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_RDT1R register ******************/ +#define CAN_RDT1R_DLC ((uint32_t)0x0000000F) /*!<Data Length Code */ +#define CAN_RDT1R_FMI ((uint32_t)0x0000FF00) /*!<Filter Match Index */ +#define CAN_RDT1R_TIME ((uint32_t)0xFFFF0000) /*!<Message Time Stamp */ + +/******************* Bit definition for CAN_RDL1R register ******************/ +#define CAN_RDL1R_DATA0 ((uint32_t)0x000000FF) /*!<Data byte 0 */ +#define CAN_RDL1R_DATA1 ((uint32_t)0x0000FF00) /*!<Data byte 1 */ +#define CAN_RDL1R_DATA2 ((uint32_t)0x00FF0000) /*!<Data byte 2 */ +#define CAN_RDL1R_DATA3 ((uint32_t)0xFF000000) /*!<Data byte 3 */ + +/******************* Bit definition for CAN_RDH1R register ******************/ +#define CAN_RDH1R_DATA4 ((uint32_t)0x000000FF) /*!<Data byte 4 */ +#define CAN_RDH1R_DATA5 ((uint32_t)0x0000FF00) /*!<Data byte 5 */ +#define CAN_RDH1R_DATA6 ((uint32_t)0x00FF0000) /*!<Data byte 6 */ +#define CAN_RDH1R_DATA7 ((uint32_t)0xFF000000) /*!<Data byte 7 */ + +/*!<CAN filter registers */ +/******************* Bit definition for CAN_FMR register ********************/ +#define CAN_FMR_FINIT ((uint8_t)0x01) /*!<Filter Init Mode */ + +/******************* Bit definition for CAN_FM1R register *******************/ +#define CAN_FM1R_FBM ((uint16_t)0x3FFF) /*!<Filter Mode */ +#define CAN_FM1R_FBM0 ((uint16_t)0x0001) /*!<Filter Init Mode bit 0 */ +#define CAN_FM1R_FBM1 ((uint16_t)0x0002) /*!<Filter Init Mode bit 1 */ +#define CAN_FM1R_FBM2 ((uint16_t)0x0004) /*!<Filter Init Mode bit 2 */ +#define CAN_FM1R_FBM3 ((uint16_t)0x0008) /*!<Filter Init Mode bit 3 */ +#define CAN_FM1R_FBM4 ((uint16_t)0x0010) /*!<Filter Init Mode bit 4 */ +#define CAN_FM1R_FBM5 ((uint16_t)0x0020) /*!<Filter Init Mode bit 5 */ +#define CAN_FM1R_FBM6 ((uint16_t)0x0040) /*!<Filter Init Mode bit 6 */ +#define CAN_FM1R_FBM7 ((uint16_t)0x0080) /*!<Filter Init Mode bit 7 */ +#define CAN_FM1R_FBM8 ((uint16_t)0x0100) /*!<Filter Init Mode bit 8 */ +#define CAN_FM1R_FBM9 ((uint16_t)0x0200) /*!<Filter Init Mode bit 9 */ +#define CAN_FM1R_FBM10 ((uint16_t)0x0400) /*!<Filter Init Mode bit 10 */ +#define CAN_FM1R_FBM11 ((uint16_t)0x0800) /*!<Filter Init Mode bit 11 */ +#define CAN_FM1R_FBM12 ((uint16_t)0x1000) /*!<Filter Init Mode bit 12 */ +#define CAN_FM1R_FBM13 ((uint16_t)0x2000) /*!<Filter Init Mode bit 13 */ + +/******************* Bit definition for CAN_FS1R register *******************/ +#define CAN_FS1R_FSC ((uint16_t)0x3FFF) /*!<Filter Scale Configuration */ +#define CAN_FS1R_FSC0 ((uint16_t)0x0001) /*!<Filter Scale Configuration bit 0 */ +#define CAN_FS1R_FSC1 ((uint16_t)0x0002) /*!<Filter Scale Configuration bit 1 */ +#define CAN_FS1R_FSC2 ((uint16_t)0x0004) /*!<Filter Scale Configuration bit 2 */ +#define CAN_FS1R_FSC3 ((uint16_t)0x0008) /*!<Filter Scale Configuration bit 3 */ +#define CAN_FS1R_FSC4 ((uint16_t)0x0010) /*!<Filter Scale Configuration bit 4 */ +#define CAN_FS1R_FSC5 ((uint16_t)0x0020) /*!<Filter Scale Configuration bit 5 */ +#define CAN_FS1R_FSC6 ((uint16_t)0x0040) /*!<Filter Scale Configuration bit 6 */ +#define CAN_FS1R_FSC7 ((uint16_t)0x0080) /*!<Filter Scale Configuration bit 7 */ +#define CAN_FS1R_FSC8 ((uint16_t)0x0100) /*!<Filter Scale Configuration bit 8 */ +#define CAN_FS1R_FSC9 ((uint16_t)0x0200) /*!<Filter Scale Configuration bit 9 */ +#define CAN_FS1R_FSC10 ((uint16_t)0x0400) /*!<Filter Scale Configuration bit 10 */ +#define CAN_FS1R_FSC11 ((uint16_t)0x0800) /*!<Filter Scale Configuration bit 11 */ +#define CAN_FS1R_FSC12 ((uint16_t)0x1000) /*!<Filter Scale Configuration bit 12 */ +#define CAN_FS1R_FSC13 ((uint16_t)0x2000) /*!<Filter Scale Configuration bit 13 */ + +/****************** Bit definition for CAN_FFA1R register *******************/ +#define CAN_FFA1R_FFA ((uint16_t)0x3FFF) /*!<Filter FIFO Assignment */ +#define CAN_FFA1R_FFA0 ((uint16_t)0x0001) /*!<Filter FIFO Assignment for Filter 0 */ +#define CAN_FFA1R_FFA1 ((uint16_t)0x0002) /*!<Filter FIFO Assignment for Filter 1 */ +#define CAN_FFA1R_FFA2 ((uint16_t)0x0004) /*!<Filter FIFO Assignment for Filter 2 */ +#define CAN_FFA1R_FFA3 ((uint16_t)0x0008) /*!<Filter FIFO Assignment for Filter 3 */ +#define CAN_FFA1R_FFA4 ((uint16_t)0x0010) /*!<Filter FIFO Assignment for Filter 4 */ +#define CAN_FFA1R_FFA5 ((uint16_t)0x0020) /*!<Filter FIFO Assignment for Filter 5 */ +#define CAN_FFA1R_FFA6 ((uint16_t)0x0040) /*!<Filter FIFO Assignment for Filter 6 */ +#define CAN_FFA1R_FFA7 ((uint16_t)0x0080) /*!<Filter FIFO Assignment for Filter 7 */ +#define CAN_FFA1R_FFA8 ((uint16_t)0x0100) /*!<Filter FIFO Assignment for Filter 8 */ +#define CAN_FFA1R_FFA9 ((uint16_t)0x0200) /*!<Filter FIFO Assignment for Filter 9 */ +#define CAN_FFA1R_FFA10 ((uint16_t)0x0400) /*!<Filter FIFO Assignment for Filter 10 */ +#define CAN_FFA1R_FFA11 ((uint16_t)0x0800) /*!<Filter FIFO Assignment for Filter 11 */ +#define CAN_FFA1R_FFA12 ((uint16_t)0x1000) /*!<Filter FIFO Assignment for Filter 12 */ +#define CAN_FFA1R_FFA13 ((uint16_t)0x2000) /*!<Filter FIFO Assignment for Filter 13 */ + +/******************* Bit definition for CAN_FA1R register *******************/ +#define CAN_FA1R_FACT ((uint16_t)0x3FFF) /*!<Filter Active */ +#define CAN_FA1R_FACT0 ((uint16_t)0x0001) /*!<Filter 0 Active */ +#define CAN_FA1R_FACT1 ((uint16_t)0x0002) /*!<Filter 1 Active */ +#define CAN_FA1R_FACT2 ((uint16_t)0x0004) /*!<Filter 2 Active */ +#define CAN_FA1R_FACT3 ((uint16_t)0x0008) /*!<Filter 3 Active */ +#define CAN_FA1R_FACT4 ((uint16_t)0x0010) /*!<Filter 4 Active */ +#define CAN_FA1R_FACT5 ((uint16_t)0x0020) /*!<Filter 5 Active */ +#define CAN_FA1R_FACT6 ((uint16_t)0x0040) /*!<Filter 6 Active */ +#define CAN_FA1R_FACT7 ((uint16_t)0x0080) /*!<Filter 7 Active */ +#define CAN_FA1R_FACT8 ((uint16_t)0x0100) /*!<Filter 8 Active */ +#define CAN_FA1R_FACT9 ((uint16_t)0x0200) /*!<Filter 9 Active */ +#define CAN_FA1R_FACT10 ((uint16_t)0x0400) /*!<Filter 10 Active */ +#define CAN_FA1R_FACT11 ((uint16_t)0x0800) /*!<Filter 11 Active */ +#define CAN_FA1R_FACT12 ((uint16_t)0x1000) /*!<Filter 12 Active */ +#define CAN_FA1R_FACT13 ((uint16_t)0x2000) /*!<Filter 13 Active */ + +/******************* Bit definition for CAN_F0R1 register *******************/ +#define CAN_F0R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F0R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F0R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F0R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F0R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F0R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F0R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F0R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F0R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F0R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F0R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F0R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F0R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F0R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F0R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F0R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F0R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F0R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F0R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F0R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F0R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F0R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F0R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F0R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F0R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F0R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F0R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F0R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F0R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F0R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F0R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F0R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F1R1 register *******************/ +#define CAN_F1R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F1R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F1R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F1R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F1R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F1R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F1R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F1R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F1R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F1R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F1R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F1R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F1R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F1R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F1R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F1R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F1R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F1R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F1R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F1R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F1R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F1R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F1R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F1R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F1R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F1R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F1R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F1R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F1R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F1R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F1R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F1R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F2R1 register *******************/ +#define CAN_F2R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F2R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F2R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F2R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F2R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F2R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F2R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F2R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F2R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F2R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F2R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F2R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F2R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F2R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F2R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F2R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F2R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F2R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F2R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F2R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F2R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F2R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F2R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F2R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F2R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F2R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F2R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F2R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F2R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F2R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F2R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F2R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F3R1 register *******************/ +#define CAN_F3R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F3R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F3R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F3R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F3R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F3R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F3R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F3R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F3R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F3R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F3R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F3R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F3R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F3R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F3R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F3R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F3R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F3R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F3R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F3R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F3R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F3R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F3R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F3R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F3R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F3R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F3R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F3R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F3R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F3R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F3R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F3R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F4R1 register *******************/ +#define CAN_F4R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F4R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F4R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F4R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F4R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F4R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F4R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F4R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F4R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F4R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F4R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F4R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F4R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F4R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F4R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F4R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F4R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F4R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F4R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F4R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F4R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F4R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F4R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F4R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F4R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F4R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F4R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F4R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F4R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F4R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F4R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F4R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F5R1 register *******************/ +#define CAN_F5R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F5R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F5R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F5R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F5R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F5R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F5R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F5R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F5R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F5R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F5R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F5R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F5R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F5R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F5R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F5R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F5R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F5R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F5R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F5R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F5R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F5R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F5R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F5R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F5R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F5R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F5R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F5R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F5R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F5R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F5R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F5R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F6R1 register *******************/ +#define CAN_F6R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F6R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F6R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F6R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F6R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F6R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F6R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F6R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F6R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F6R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F6R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F6R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F6R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F6R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F6R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F6R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F6R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F6R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F6R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F6R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F6R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F6R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F6R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F6R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F6R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F6R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F6R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F6R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F6R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F6R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F6R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F6R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F7R1 register *******************/ +#define CAN_F7R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F7R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F7R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F7R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F7R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F7R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F7R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F7R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F7R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F7R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F7R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F7R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F7R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F7R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F7R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F7R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F7R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F7R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F7R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F7R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F7R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F7R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F7R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F7R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F7R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F7R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F7R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F7R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F7R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F7R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F7R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F7R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F8R1 register *******************/ +#define CAN_F8R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F8R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F8R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F8R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F8R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F8R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F8R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F8R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F8R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F8R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F8R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F8R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F8R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F8R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F8R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F8R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F8R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F8R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F8R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F8R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F8R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F8R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F8R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F8R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F8R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F8R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F8R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F8R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F8R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F8R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F8R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F8R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F9R1 register *******************/ +#define CAN_F9R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F9R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F9R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F9R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F9R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F9R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F9R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F9R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F9R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F9R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F9R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F9R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F9R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F9R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F9R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F9R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F9R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F9R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F9R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F9R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F9R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F9R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F9R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F9R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F9R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F9R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F9R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F9R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F9R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F9R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F9R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F9R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F10R1 register ******************/ +#define CAN_F10R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F10R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F10R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F10R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F10R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F10R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F10R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F10R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F10R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F10R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F10R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F10R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F10R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F10R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F10R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F10R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F10R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F10R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F10R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F10R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F10R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F10R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F10R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F10R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F10R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F10R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F10R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F10R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F10R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F10R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F10R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F10R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F11R1 register ******************/ +#define CAN_F11R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F11R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F11R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F11R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F11R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F11R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F11R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F11R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F11R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F11R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F11R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F11R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F11R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F11R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F11R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F11R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F11R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F11R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F11R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F11R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F11R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F11R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F11R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F11R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F11R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F11R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F11R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F11R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F11R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F11R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F11R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F11R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F12R1 register ******************/ +#define CAN_F12R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F12R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F12R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F12R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F12R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F12R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F12R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F12R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F12R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F12R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F12R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F12R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F12R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F12R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F12R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F12R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F12R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F12R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F12R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F12R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F12R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F12R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F12R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F12R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F12R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F12R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F12R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F12R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F12R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F12R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F12R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F12R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F13R1 register ******************/ +#define CAN_F13R1_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F13R1_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F13R1_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F13R1_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F13R1_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F13R1_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F13R1_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F13R1_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F13R1_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F13R1_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F13R1_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F13R1_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F13R1_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F13R1_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F13R1_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F13R1_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F13R1_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F13R1_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F13R1_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F13R1_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F13R1_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F13R1_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F13R1_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F13R1_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F13R1_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F13R1_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F13R1_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F13R1_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F13R1_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F13R1_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F13R1_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F13R1_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F0R2 register *******************/ +#define CAN_F0R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F0R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F0R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F0R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F0R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F0R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F0R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F0R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F0R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F0R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F0R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F0R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F0R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F0R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F0R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F0R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F0R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F0R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F0R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F0R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F0R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F0R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F0R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F0R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F0R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F0R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F0R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F0R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F0R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F0R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F0R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F0R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F1R2 register *******************/ +#define CAN_F1R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F1R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F1R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F1R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F1R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F1R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F1R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F1R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F1R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F1R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F1R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F1R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F1R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F1R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F1R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F1R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F1R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F1R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F1R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F1R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F1R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F1R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F1R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F1R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F1R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F1R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F1R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F1R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F1R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F1R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F1R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F1R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F2R2 register *******************/ +#define CAN_F2R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F2R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F2R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F2R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F2R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F2R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F2R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F2R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F2R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F2R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F2R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F2R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F2R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F2R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F2R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F2R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F2R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F2R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F2R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F2R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F2R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F2R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F2R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F2R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F2R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F2R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F2R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F2R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F2R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F2R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F2R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F2R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F3R2 register *******************/ +#define CAN_F3R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F3R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F3R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F3R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F3R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F3R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F3R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F3R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F3R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F3R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F3R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F3R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F3R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F3R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F3R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F3R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F3R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F3R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F3R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F3R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F3R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F3R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F3R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F3R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F3R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F3R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F3R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F3R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F3R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F3R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F3R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F3R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F4R2 register *******************/ +#define CAN_F4R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F4R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F4R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F4R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F4R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F4R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F4R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F4R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F4R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F4R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F4R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F4R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F4R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F4R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F4R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F4R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F4R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F4R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F4R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F4R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F4R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F4R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F4R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F4R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F4R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F4R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F4R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F4R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F4R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F4R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F4R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F4R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F5R2 register *******************/ +#define CAN_F5R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F5R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F5R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F5R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F5R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F5R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F5R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F5R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F5R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F5R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F5R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F5R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F5R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F5R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F5R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F5R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F5R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F5R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F5R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F5R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F5R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F5R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F5R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F5R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F5R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F5R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F5R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F5R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F5R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F5R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F5R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F5R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F6R2 register *******************/ +#define CAN_F6R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F6R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F6R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F6R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F6R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F6R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F6R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F6R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F6R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F6R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F6R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F6R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F6R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F6R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F6R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F6R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F6R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F6R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F6R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F6R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F6R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F6R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F6R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F6R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F6R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F6R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F6R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F6R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F6R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F6R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F6R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F6R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F7R2 register *******************/ +#define CAN_F7R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F7R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F7R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F7R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F7R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F7R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F7R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F7R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F7R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F7R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F7R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F7R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F7R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F7R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F7R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F7R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F7R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F7R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F7R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F7R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F7R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F7R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F7R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F7R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F7R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F7R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F7R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F7R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F7R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F7R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F7R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F7R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F8R2 register *******************/ +#define CAN_F8R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F8R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F8R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F8R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F8R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F8R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F8R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F8R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F8R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F8R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F8R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F8R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F8R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F8R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F8R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F8R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F8R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F8R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F8R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F8R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F8R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F8R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F8R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F8R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F8R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F8R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F8R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F8R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F8R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F8R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F8R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F8R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F9R2 register *******************/ +#define CAN_F9R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F9R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F9R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F9R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F9R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F9R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F9R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F9R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F9R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F9R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F9R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F9R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F9R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F9R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F9R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F9R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F9R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F9R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F9R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F9R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F9R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F9R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F9R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F9R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F9R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F9R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F9R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F9R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F9R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F9R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F9R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F9R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F10R2 register ******************/ +#define CAN_F10R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F10R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F10R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F10R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F10R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F10R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F10R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F10R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F10R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F10R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F10R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F10R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F10R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F10R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F10R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F10R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F10R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F10R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F10R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F10R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F10R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F10R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F10R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F10R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F10R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F10R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F10R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F10R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F10R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F10R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F10R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F10R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F11R2 register ******************/ +#define CAN_F11R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F11R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F11R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F11R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F11R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F11R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F11R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F11R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F11R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F11R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F11R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F11R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F11R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F11R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F11R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F11R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F11R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F11R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F11R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F11R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F11R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F11R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F11R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F11R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F11R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F11R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F11R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F11R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F11R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F11R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F11R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F11R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F12R2 register ******************/ +#define CAN_F12R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F12R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F12R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F12R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F12R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F12R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F12R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F12R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F12R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F12R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F12R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F12R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F12R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F12R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F12R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F12R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F12R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F12R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F12R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F12R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F12R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F12R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F12R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F12R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F12R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F12R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F12R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F12R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F12R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F12R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F12R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F12R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************* Bit definition for CAN_F13R2 register ******************/ +#define CAN_F13R2_FB0 ((uint32_t)0x00000001) /*!<Filter bit 0 */ +#define CAN_F13R2_FB1 ((uint32_t)0x00000002) /*!<Filter bit 1 */ +#define CAN_F13R2_FB2 ((uint32_t)0x00000004) /*!<Filter bit 2 */ +#define CAN_F13R2_FB3 ((uint32_t)0x00000008) /*!<Filter bit 3 */ +#define CAN_F13R2_FB4 ((uint32_t)0x00000010) /*!<Filter bit 4 */ +#define CAN_F13R2_FB5 ((uint32_t)0x00000020) /*!<Filter bit 5 */ +#define CAN_F13R2_FB6 ((uint32_t)0x00000040) /*!<Filter bit 6 */ +#define CAN_F13R2_FB7 ((uint32_t)0x00000080) /*!<Filter bit 7 */ +#define CAN_F13R2_FB8 ((uint32_t)0x00000100) /*!<Filter bit 8 */ +#define CAN_F13R2_FB9 ((uint32_t)0x00000200) /*!<Filter bit 9 */ +#define CAN_F13R2_FB10 ((uint32_t)0x00000400) /*!<Filter bit 10 */ +#define CAN_F13R2_FB11 ((uint32_t)0x00000800) /*!<Filter bit 11 */ +#define CAN_F13R2_FB12 ((uint32_t)0x00001000) /*!<Filter bit 12 */ +#define CAN_F13R2_FB13 ((uint32_t)0x00002000) /*!<Filter bit 13 */ +#define CAN_F13R2_FB14 ((uint32_t)0x00004000) /*!<Filter bit 14 */ +#define CAN_F13R2_FB15 ((uint32_t)0x00008000) /*!<Filter bit 15 */ +#define CAN_F13R2_FB16 ((uint32_t)0x00010000) /*!<Filter bit 16 */ +#define CAN_F13R2_FB17 ((uint32_t)0x00020000) /*!<Filter bit 17 */ +#define CAN_F13R2_FB18 ((uint32_t)0x00040000) /*!<Filter bit 18 */ +#define CAN_F13R2_FB19 ((uint32_t)0x00080000) /*!<Filter bit 19 */ +#define CAN_F13R2_FB20 ((uint32_t)0x00100000) /*!<Filter bit 20 */ +#define CAN_F13R2_FB21 ((uint32_t)0x00200000) /*!<Filter bit 21 */ +#define CAN_F13R2_FB22 ((uint32_t)0x00400000) /*!<Filter bit 22 */ +#define CAN_F13R2_FB23 ((uint32_t)0x00800000) /*!<Filter bit 23 */ +#define CAN_F13R2_FB24 ((uint32_t)0x01000000) /*!<Filter bit 24 */ +#define CAN_F13R2_FB25 ((uint32_t)0x02000000) /*!<Filter bit 25 */ +#define CAN_F13R2_FB26 ((uint32_t)0x04000000) /*!<Filter bit 26 */ +#define CAN_F13R2_FB27 ((uint32_t)0x08000000) /*!<Filter bit 27 */ +#define CAN_F13R2_FB28 ((uint32_t)0x10000000) /*!<Filter bit 28 */ +#define CAN_F13R2_FB29 ((uint32_t)0x20000000) /*!<Filter bit 29 */ +#define CAN_F13R2_FB30 ((uint32_t)0x40000000) /*!<Filter bit 30 */ +#define CAN_F13R2_FB31 ((uint32_t)0x80000000) /*!<Filter bit 31 */ + +/******************************************************************************/ +/* */ +/* CRC calculation unit (CRC) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR ((uint8_t)0xFF) /*!< General-purpose 8-bit data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET ((uint32_t)0x00000001) /*!< RESET the CRC computation unit bit */ +#define CRC_CR_POLSIZE ((uint32_t)0x00000018) /*!< Polynomial size bits */ +#define CRC_CR_POLSIZE_0 ((uint32_t)0x00000008) /*!< Polynomial size bit 0 */ +#define CRC_CR_POLSIZE_1 ((uint32_t)0x00000010) /*!< Polynomial size bit 1 */ +#define CRC_CR_REV_IN ((uint32_t)0x00000060) /*!< REV_IN Reverse Input Data bits */ +#define CRC_CR_REV_IN_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define CRC_CR_REV_IN_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define CRC_CR_REV_OUT ((uint32_t)0x00000080) /*!< REV_OUT Reverse Output Data bits */ + +/******************* Bit definition for CRC_INIT register *******************/ +#define CRC_INIT_INIT ((uint32_t)0xFFFFFFFF) /*!< Initial CRC value bits */ + +/******************* Bit definition for CRC_POL register ********************/ +#define CRC_POL_POL ((uint32_t)0xFFFFFFFF) /*!< Coefficients of the polynomial */ +/******************************************************************************/ +/* */ +/* Digital to Analog Converter (DAC) */ +/* */ +/******************************************************************************/ +/******************** Bit definition for DAC_CR register ********************/ +#define DAC_CR_EN1 ((uint32_t)0x00000001) /*!< DAC channel1 enable */ +#define DAC_CR_BOFF1 ((uint32_t)0x00000002) /*!< DAC channel1 output buffer disable */ +#define DAC_CR_TEN1 ((uint32_t)0x00000004) /*!< DAC channel1 Trigger enable */ + +#define DAC_CR_TSEL1 ((uint32_t)0x00000038) /*!< TSEL1[2:0] (DAC channel1 Trigger selection) */ +#define DAC_CR_TSEL1_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define DAC_CR_TSEL1_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define DAC_CR_TSEL1_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define DAC_CR_WAVE1 ((uint32_t)0x000000C0) /*!< WAVE1[1:0] (DAC channel1 noise/triangle wave generation enable) */ +#define DAC_CR_WAVE1_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define DAC_CR_WAVE1_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +#define DAC_CR_MAMP1 ((uint32_t)0x00000F00) /*!< MAMP1[3:0] (DAC channel1 Mask/Amplitude selector) */ +#define DAC_CR_MAMP1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define DAC_CR_MAMP1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define DAC_CR_MAMP1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define DAC_CR_MAMP1_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define DAC_CR_DMAEN1 ((uint32_t)0x00001000) /*!< DAC channel1 DMA enable */ +#define DAC_CR_EN2 ((uint32_t)0x00010000) /*!< DAC channel2 enable */ +#define DAC_CR_BOFF2 ((uint32_t)0x00020000) /*!< DAC channel2 output buffer disable */ +#define DAC_CR_TEN2 ((uint32_t)0x00040000) /*!< DAC channel2 Trigger enable */ + +#define DAC_CR_TSEL2 ((uint32_t)0x00380000) /*!< TSEL2[2:0] (DAC channel2 Trigger selection) */ +#define DAC_CR_TSEL2_0 ((uint32_t)0x00080000) /*!< Bit 0 */ +#define DAC_CR_TSEL2_1 ((uint32_t)0x00100000) /*!< Bit 1 */ +#define DAC_CR_TSEL2_2 ((uint32_t)0x00200000) /*!< Bit 2 */ + +#define DAC_CR_WAVE2 ((uint32_t)0x00C00000) /*!< WAVE2[1:0] (DAC channel2 noise/triangle wave generation enable) */ +#define DAC_CR_WAVE2_0 ((uint32_t)0x00400000) /*!< Bit 0 */ +#define DAC_CR_WAVE2_1 ((uint32_t)0x00800000) /*!< Bit 1 */ + +#define DAC_CR_MAMP2 ((uint32_t)0x0F000000) /*!< MAMP2[3:0] (DAC channel2 Mask/Amplitude selector) */ +#define DAC_CR_MAMP2_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define DAC_CR_MAMP2_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define DAC_CR_MAMP2_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define DAC_CR_MAMP2_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define DAC_CR_DMAEN2 ((uint32_t)0x10000000) /*!< DAC channel2 DMA enabled */ + +/***************** Bit definition for DAC_SWTRIGR register ******************/ +#define DAC_SWTRIGR_SWTRIG1 ((uint8_t)0x01) /*!< DAC channel1 software trigger */ +#define DAC_SWTRIGR_SWTRIG2 ((uint8_t)0x02) /*!< DAC channel2 software trigger */ + +/***************** Bit definition for DAC_DHR12R1 register ******************/ +#define DAC_DHR12R1_DACC1DHR ((uint16_t)0x0FFF) /*!< DAC channel1 12-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12L1 register ******************/ +#define DAC_DHR12L1_DACC1DHR ((uint16_t)0xFFF0) /*!< DAC channel1 12-bit Left aligned data */ + +/****************** Bit definition for DAC_DHR8R1 register ******************/ +#define DAC_DHR8R1_DACC1DHR ((uint8_t)0xFF) /*!< DAC channel1 8-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12R2 register ******************/ +#define DAC_DHR12R2_DACC2DHR ((uint16_t)0x0FFF) /*!< DAC channel2 12-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12L2 register ******************/ +#define DAC_DHR12L2_DACC2DHR ((uint16_t)0xFFF0) /*!< DAC channel2 12-bit Left aligned data */ + +/****************** Bit definition for DAC_DHR8R2 register ******************/ +#define DAC_DHR8R2_DACC2DHR ((uint8_t)0xFF) /*!< DAC channel2 8-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12RD register ******************/ +#define DAC_DHR12RD_DACC1DHR ((uint32_t)0x00000FFF) /*!< DAC channel1 12-bit Right aligned data */ +#define DAC_DHR12RD_DACC2DHR ((uint32_t)0x0FFF0000) /*!< DAC channel2 12-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12LD register ******************/ +#define DAC_DHR12LD_DACC1DHR ((uint32_t)0x0000FFF0) /*!< DAC channel1 12-bit Left aligned data */ +#define DAC_DHR12LD_DACC2DHR ((uint32_t)0xFFF00000) /*!< DAC channel2 12-bit Left aligned data */ + +/****************** Bit definition for DAC_DHR8RD register ******************/ +#define DAC_DHR8RD_DACC1DHR ((uint16_t)0x00FF) /*!< DAC channel1 8-bit Right aligned data */ +#define DAC_DHR8RD_DACC2DHR ((uint16_t)0xFF00) /*!< DAC channel2 8-bit Right aligned data */ + +/******************* Bit definition for DAC_DOR1 register *******************/ +#define DAC_DOR1_DACC1DOR ((uint16_t)0x0FFF) /*!< DAC channel1 data output */ + +/******************* Bit definition for DAC_DOR2 register *******************/ +#define DAC_DOR2_DACC2DOR ((uint16_t)0x0FFF) /*!< DAC channel2 data output */ + +/******************** Bit definition for DAC_SR register ********************/ +#define DAC_SR_DMAUDR1 ((uint32_t)0x00002000) /*!< DAC channel1 DMA underrun flag */ +#define DAC_SR_DMAUDR2 ((uint32_t)0x20000000) /*!< DAC channel2 DMA underrun flag */ + +/******************************************************************************/ +/* */ +/* Debug MCU (DBGMCU) */ +/* */ +/******************************************************************************/ +/******************** Bit definition for DBGMCU_IDCODE register *************/ +#define DBGMCU_IDCODE_DEV_ID ((uint32_t)0x00000FFF) +#define DBGMCU_IDCODE_REV_ID ((uint32_t)0xFFFF0000) + +/******************** Bit definition for DBGMCU_CR register *****************/ +#define DBGMCU_CR_DBG_SLEEP ((uint32_t)0x00000001) +#define DBGMCU_CR_DBG_STOP ((uint32_t)0x00000002) +#define DBGMCU_CR_DBG_STANDBY ((uint32_t)0x00000004) +#define DBGMCU_CR_TRACE_IOEN ((uint32_t)0x00000020) + +#define DBGMCU_CR_TRACE_MODE ((uint32_t)0x000000C0) +#define DBGMCU_CR_TRACE_MODE_0 ((uint32_t)0x00000040)/*!<Bit 0 */ +#define DBGMCU_CR_TRACE_MODE_1 ((uint32_t)0x00000080)/*!<Bit 1 */ + +/******************** Bit definition for DBGMCU_APB1_FZ register ************/ +#define DBGMCU_APB1_FZ_DBG_TIM2_STOP ((uint32_t)0x00000001) +#define DBGMCU_APB1_FZ_DBG_TIM3_STOP ((uint32_t)0x00000002) +#define DBGMCU_APB1_FZ_DBG_TIM4_STOP ((uint32_t)0x00000004) +#define DBGMCU_APB1_FZ_DBG_TIM6_STOP ((uint32_t)0x00000010) +#define DBGMCU_APB1_FZ_DBG_TIM7_STOP ((uint32_t)0x00000020) +#define DBGMCU_APB1_FZ_DBG_RTC_STOP ((uint32_t)0x00000400) +#define DBGMCU_APB1_FZ_DBG_WWDG_STOP ((uint32_t)0x00000800) +#define DBGMCU_APB1_FZ_DBG_IWDG_STOP ((uint32_t)0x00001000) +#define DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT ((uint32_t)0x00200000) +#define DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT ((uint32_t)0x00400000) +#define DBGMCU_APB1_FZ_DBG_CAN1_STOP ((uint32_t)0x02000000) + +/******************** Bit definition for DBGMCU_APB2_FZ register ************/ +#define DBGMCU_APB2_FZ_DBG_TIM1_STOP ((uint32_t)0x00000001) +#define DBGMCU_APB2_FZ_DBG_TIM8_STOP ((uint32_t)0x00000002) +#define DBGMCU_APB2_FZ_DBG_TIM15_STOP ((uint32_t)0x00000004) +#define DBGMCU_APB2_FZ_DBG_TIM16_STOP ((uint32_t)0x00000008) +#define DBGMCU_APB2_FZ_DBG_TIM17_STOP ((uint32_t)0x00000010) + +/******************************************************************************/ +/* */ +/* DMA Controller (DMA) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for DMA_ISR register ********************/ +#define DMA_ISR_GIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt flag */ +#define DMA_ISR_TCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete flag */ +#define DMA_ISR_HTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer flag */ +#define DMA_ISR_TEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error flag */ +#define DMA_ISR_GIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt flag */ +#define DMA_ISR_TCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete flag */ +#define DMA_ISR_HTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer flag */ +#define DMA_ISR_TEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error flag */ +#define DMA_ISR_GIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt flag */ +#define DMA_ISR_TCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete flag */ +#define DMA_ISR_HTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer flag */ +#define DMA_ISR_TEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error flag */ +#define DMA_ISR_GIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt flag */ +#define DMA_ISR_TCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete flag */ +#define DMA_ISR_HTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer flag */ +#define DMA_ISR_TEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error flag */ +#define DMA_ISR_GIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt flag */ +#define DMA_ISR_TCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete flag */ +#define DMA_ISR_HTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer flag */ +#define DMA_ISR_TEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error flag */ +#define DMA_ISR_GIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt flag */ +#define DMA_ISR_TCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete flag */ +#define DMA_ISR_HTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer flag */ +#define DMA_ISR_TEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error flag */ +#define DMA_ISR_GIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt flag */ +#define DMA_ISR_TCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete flag */ +#define DMA_ISR_HTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer flag */ +#define DMA_ISR_TEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error flag */ + +/******************* Bit definition for DMA_IFCR register *******************/ +#define DMA_IFCR_CGIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt clear */ +#define DMA_IFCR_CTCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete clear */ +#define DMA_IFCR_CHTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer clear */ +#define DMA_IFCR_CTEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error clear */ +#define DMA_IFCR_CGIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt clear */ +#define DMA_IFCR_CTCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete clear */ +#define DMA_IFCR_CHTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer clear */ +#define DMA_IFCR_CTEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error clear */ +#define DMA_IFCR_CGIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt clear */ +#define DMA_IFCR_CTCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete clear */ +#define DMA_IFCR_CHTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer clear */ +#define DMA_IFCR_CTEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error clear */ +#define DMA_IFCR_CGIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt clear */ +#define DMA_IFCR_CTCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete clear */ +#define DMA_IFCR_CHTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer clear */ +#define DMA_IFCR_CTEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error clear */ +#define DMA_IFCR_CGIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt clear */ +#define DMA_IFCR_CTCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete clear */ +#define DMA_IFCR_CHTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer clear */ +#define DMA_IFCR_CTEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error clear */ +#define DMA_IFCR_CGIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt clear */ +#define DMA_IFCR_CTCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete clear */ +#define DMA_IFCR_CHTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer clear */ +#define DMA_IFCR_CTEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error clear */ +#define DMA_IFCR_CGIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt clear */ +#define DMA_IFCR_CTCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete clear */ +#define DMA_IFCR_CHTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer clear */ +#define DMA_IFCR_CTEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error clear */ + +/******************* Bit definition for DMA_CCR register ********************/ +#define DMA_CCR_EN ((uint32_t)0x00000001) /*!< Channel enable */ +#define DMA_CCR_TCIE ((uint32_t)0x00000002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR_HTIE ((uint32_t)0x00000004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR_TEIE ((uint32_t)0x00000008) /*!< Transfer error interrupt enable */ +#define DMA_CCR_DIR ((uint32_t)0x00000010) /*!< Data transfer direction */ +#define DMA_CCR_CIRC ((uint32_t)0x00000020) /*!< Circular mode */ +#define DMA_CCR_PINC ((uint32_t)0x00000040) /*!< Peripheral increment mode */ +#define DMA_CCR_MINC ((uint32_t)0x00000080) /*!< Memory increment mode */ + +#define DMA_CCR_PSIZE ((uint32_t)0x00000300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR_PSIZE_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define DMA_CCR_PSIZE_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +#define DMA_CCR_MSIZE ((uint32_t)0x00000C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR_MSIZE_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define DMA_CCR_MSIZE_1 ((uint32_t)0x00000800) /*!< Bit 1 */ + +#define DMA_CCR_PL ((uint32_t)0x00003000) /*!< PL[1:0] bits(Channel Priority level)*/ +#define DMA_CCR_PL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define DMA_CCR_PL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ + +#define DMA_CCR_MEM2MEM ((uint32_t)0x00004000) /*!< Memory to memory mode */ + +/****************** Bit definition for DMA_CNDTR register *******************/ +#define DMA_CNDTR_NDT ((uint32_t)0x0000FFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CPAR register ********************/ +#define DMA_CPAR_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CMAR register ********************/ +#define DMA_CMAR_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/******************************************************************************/ +/* */ +/* External Interrupt/Event Controller (EXTI) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for EXTI_IMR register *******************/ +#define EXTI_IMR_MR0 ((uint32_t)0x00000001) /*!< Interrupt Mask on line 0 */ +#define EXTI_IMR_MR1 ((uint32_t)0x00000002) /*!< Interrupt Mask on line 1 */ +#define EXTI_IMR_MR2 ((uint32_t)0x00000004) /*!< Interrupt Mask on line 2 */ +#define EXTI_IMR_MR3 ((uint32_t)0x00000008) /*!< Interrupt Mask on line 3 */ +#define EXTI_IMR_MR4 ((uint32_t)0x00000010) /*!< Interrupt Mask on line 4 */ +#define EXTI_IMR_MR5 ((uint32_t)0x00000020) /*!< Interrupt Mask on line 5 */ +#define EXTI_IMR_MR6 ((uint32_t)0x00000040) /*!< Interrupt Mask on line 6 */ +#define EXTI_IMR_MR7 ((uint32_t)0x00000080) /*!< Interrupt Mask on line 7 */ +#define EXTI_IMR_MR8 ((uint32_t)0x00000100) /*!< Interrupt Mask on line 8 */ +#define EXTI_IMR_MR9 ((uint32_t)0x00000200) /*!< Interrupt Mask on line 9 */ +#define EXTI_IMR_MR10 ((uint32_t)0x00000400) /*!< Interrupt Mask on line 10 */ +#define EXTI_IMR_MR11 ((uint32_t)0x00000800) /*!< Interrupt Mask on line 11 */ +#define EXTI_IMR_MR12 ((uint32_t)0x00001000) /*!< Interrupt Mask on line 12 */ +#define EXTI_IMR_MR13 ((uint32_t)0x00002000) /*!< Interrupt Mask on line 13 */ +#define EXTI_IMR_MR14 ((uint32_t)0x00004000) /*!< Interrupt Mask on line 14 */ +#define EXTI_IMR_MR15 ((uint32_t)0x00008000) /*!< Interrupt Mask on line 15 */ +#define EXTI_IMR_MR16 ((uint32_t)0x00010000) /*!< Interrupt Mask on line 16 */ +#define EXTI_IMR_MR17 ((uint32_t)0x00020000) /*!< Interrupt Mask on line 17 */ +#define EXTI_IMR_MR18 ((uint32_t)0x00040000) /*!< Interrupt Mask on line 18 */ +#define EXTI_IMR_MR19 ((uint32_t)0x00080000) /*!< Interrupt Mask on line 19 */ +#define EXTI_IMR_MR20 ((uint32_t)0x00100000) /*!< Interrupt Mask on line 20 */ +#define EXTI_IMR_MR21 ((uint32_t)0x00200000) /*!< Interrupt Mask on line 21 */ +#define EXTI_IMR_MR22 ((uint32_t)0x00400000) /*!< Interrupt Mask on line 22 */ +#define EXTI_IMR_MR23 ((uint32_t)0x00800000) /*!< Interrupt Mask on line 23 */ +#define EXTI_IMR_MR24 ((uint32_t)0x01000000) /*!< Interrupt Mask on line 24 */ +#define EXTI_IMR_MR25 ((uint32_t)0x02000000) /*!< Interrupt Mask on line 25 */ +#define EXTI_IMR_MR26 ((uint32_t)0x04000000) /*!< Interrupt Mask on line 26 */ +#define EXTI_IMR_MR27 ((uint32_t)0x08000000) /*!< Interrupt Mask on line 27 */ +#define EXTI_IMR_MR28 ((uint32_t)0x10000000) /*!< Interrupt Mask on line 28 */ + +/******************* Bit definition for EXTI_EMR register *******************/ +#define EXTI_EMR_MR0 ((uint32_t)0x00000001) /*!< Event Mask on line 0 */ +#define EXTI_EMR_MR1 ((uint32_t)0x00000002) /*!< Event Mask on line 1 */ +#define EXTI_EMR_MR2 ((uint32_t)0x00000004) /*!< Event Mask on line 2 */ +#define EXTI_EMR_MR3 ((uint32_t)0x00000008) /*!< Event Mask on line 3 */ +#define EXTI_EMR_MR4 ((uint32_t)0x00000010) /*!< Event Mask on line 4 */ +#define EXTI_EMR_MR5 ((uint32_t)0x00000020) /*!< Event Mask on line 5 */ +#define EXTI_EMR_MR6 ((uint32_t)0x00000040) /*!< Event Mask on line 6 */ +#define EXTI_EMR_MR7 ((uint32_t)0x00000080) /*!< Event Mask on line 7 */ +#define EXTI_EMR_MR8 ((uint32_t)0x00000100) /*!< Event Mask on line 8 */ +#define EXTI_EMR_MR9 ((uint32_t)0x00000200) /*!< Event Mask on line 9 */ +#define EXTI_EMR_MR10 ((uint32_t)0x00000400) /*!< Event Mask on line 10 */ +#define EXTI_EMR_MR11 ((uint32_t)0x00000800) /*!< Event Mask on line 11 */ +#define EXTI_EMR_MR12 ((uint32_t)0x00001000) /*!< Event Mask on line 12 */ +#define EXTI_EMR_MR13 ((uint32_t)0x00002000) /*!< Event Mask on line 13 */ +#define EXTI_EMR_MR14 ((uint32_t)0x00004000) /*!< Event Mask on line 14 */ +#define EXTI_EMR_MR15 ((uint32_t)0x00008000) /*!< Event Mask on line 15 */ +#define EXTI_EMR_MR16 ((uint32_t)0x00010000) /*!< Event Mask on line 16 */ +#define EXTI_EMR_MR17 ((uint32_t)0x00020000) /*!< Event Mask on line 17 */ +#define EXTI_EMR_MR18 ((uint32_t)0x00040000) /*!< Event Mask on line 18 */ +#define EXTI_EMR_MR19 ((uint32_t)0x00080000) /*!< Event Mask on line 19 */ +#define EXTI_EMR_MR20 ((uint32_t)0x00100000) /*!< Event Mask on line 20 */ +#define EXTI_EMR_MR21 ((uint32_t)0x00200000) /*!< Event Mask on line 21 */ +#define EXTI_EMR_MR22 ((uint32_t)0x00400000) /*!< Event Mask on line 22 */ +#define EXTI_EMR_MR23 ((uint32_t)0x00800000) /*!< Event Mask on line 23 */ +#define EXTI_EMR_MR24 ((uint32_t)0x01000000) /*!< Event Mask on line 24 */ +#define EXTI_EMR_MR25 ((uint32_t)0x02000000) /*!< Event Mask on line 25 */ +#define EXTI_EMR_MR26 ((uint32_t)0x04000000) /*!< Event Mask on line 26 */ +#define EXTI_EMR_MR27 ((uint32_t)0x08000000) /*!< Event Mask on line 27 */ +#define EXTI_EMR_MR28 ((uint32_t)0x10000000) /*!< Event Mask on line 28 */ + +/****************** Bit definition for EXTI_RTSR register *******************/ +#define EXTI_RTSR_TR0 ((uint32_t)0x00000001) /*!< Rising trigger event configuration bit of line 0 */ +#define EXTI_RTSR_TR1 ((uint32_t)0x00000002) /*!< Rising trigger event configuration bit of line 1 */ +#define EXTI_RTSR_TR2 ((uint32_t)0x00000004) /*!< Rising trigger event configuration bit of line 2 */ +#define EXTI_RTSR_TR3 ((uint32_t)0x00000008) /*!< Rising trigger event configuration bit of line 3 */ +#define EXTI_RTSR_TR4 ((uint32_t)0x00000010) /*!< Rising trigger event configuration bit of line 4 */ +#define EXTI_RTSR_TR5 ((uint32_t)0x00000020) /*!< Rising trigger event configuration bit of line 5 */ +#define EXTI_RTSR_TR6 ((uint32_t)0x00000040) /*!< Rising trigger event configuration bit of line 6 */ +#define EXTI_RTSR_TR7 ((uint32_t)0x00000080) /*!< Rising trigger event configuration bit of line 7 */ +#define EXTI_RTSR_TR8 ((uint32_t)0x00000100) /*!< Rising trigger event configuration bit of line 8 */ +#define EXTI_RTSR_TR9 ((uint32_t)0x00000200) /*!< Rising trigger event configuration bit of line 9 */ +#define EXTI_RTSR_TR10 ((uint32_t)0x00000400) /*!< Rising trigger event configuration bit of line 10 */ +#define EXTI_RTSR_TR11 ((uint32_t)0x00000800) /*!< Rising trigger event configuration bit of line 11 */ +#define EXTI_RTSR_TR12 ((uint32_t)0x00001000) /*!< Rising trigger event configuration bit of line 12 */ +#define EXTI_RTSR_TR13 ((uint32_t)0x00002000) /*!< Rising trigger event configuration bit of line 13 */ +#define EXTI_RTSR_TR14 ((uint32_t)0x00004000) /*!< Rising trigger event configuration bit of line 14 */ +#define EXTI_RTSR_TR15 ((uint32_t)0x00008000) /*!< Rising trigger event configuration bit of line 15 */ +#define EXTI_RTSR_TR16 ((uint32_t)0x00010000) /*!< Rising trigger event configuration bit of line 16 */ +#define EXTI_RTSR_TR17 ((uint32_t)0x00020000) /*!< Rising trigger event configuration bit of line 17 */ +#define EXTI_RTSR_TR18 ((uint32_t)0x00040000) /*!< Rising trigger event configuration bit of line 18 */ +#define EXTI_RTSR_TR19 ((uint32_t)0x00080000) /*!< Rising trigger event configuration bit of line 19 */ +#define EXTI_RTSR_TR20 ((uint32_t)0x00100000) /*!< Rising trigger event configuration bit of line 20 */ +#define EXTI_RTSR_TR21 ((uint32_t)0x00200000) /*!< Rising trigger event configuration bit of line 21 */ +#define EXTI_RTSR_TR22 ((uint32_t)0x00400000) /*!< Rising trigger event configuration bit of line 22 */ +#define EXTI_RTSR_TR23 ((uint32_t)0x00800000) /*!< Rising trigger event configuration bit of line 23 */ +#define EXTI_RTSR_TR24 ((uint32_t)0x01000000) /*!< Rising trigger event configuration bit of line 24 */ +#define EXTI_RTSR_TR25 ((uint32_t)0x02000000) /*!< Rising trigger event configuration bit of line 25 */ +#define EXTI_RTSR_TR26 ((uint32_t)0x04000000) /*!< Rising trigger event configuration bit of line 26 */ +#define EXTI_RTSR_TR27 ((uint32_t)0x08000000) /*!< Rising trigger event configuration bit of line 27 */ +#define EXTI_RTSR_TR28 ((uint32_t)0x10000000) /*!< Rising trigger event configuration bit of line 28 */ + +/****************** Bit definition for EXTI_FTSR register *******************/ +#define EXTI_FTSR_TR0 ((uint32_t)0x00000001) /*!< Falling trigger event configuration bit of line 0 */ +#define EXTI_FTSR_TR1 ((uint32_t)0x00000002) /*!< Falling trigger event configuration bit of line 1 */ +#define EXTI_FTSR_TR2 ((uint32_t)0x00000004) /*!< Falling trigger event configuration bit of line 2 */ +#define EXTI_FTSR_TR3 ((uint32_t)0x00000008) /*!< Falling trigger event configuration bit of line 3 */ +#define EXTI_FTSR_TR4 ((uint32_t)0x00000010) /*!< Falling trigger event configuration bit of line 4 */ +#define EXTI_FTSR_TR5 ((uint32_t)0x00000020) /*!< Falling trigger event configuration bit of line 5 */ +#define EXTI_FTSR_TR6 ((uint32_t)0x00000040) /*!< Falling trigger event configuration bit of line 6 */ +#define EXTI_FTSR_TR7 ((uint32_t)0x00000080) /*!< Falling trigger event configuration bit of line 7 */ +#define EXTI_FTSR_TR8 ((uint32_t)0x00000100) /*!< Falling trigger event configuration bit of line 8 */ +#define EXTI_FTSR_TR9 ((uint32_t)0x00000200) /*!< Falling trigger event configuration bit of line 9 */ +#define EXTI_FTSR_TR10 ((uint32_t)0x00000400) /*!< Falling trigger event configuration bit of line 10 */ +#define EXTI_FTSR_TR11 ((uint32_t)0x00000800) /*!< Falling trigger event configuration bit of line 11 */ +#define EXTI_FTSR_TR12 ((uint32_t)0x00001000) /*!< Falling trigger event configuration bit of line 12 */ +#define EXTI_FTSR_TR13 ((uint32_t)0x00002000) /*!< Falling trigger event configuration bit of line 13 */ +#define EXTI_FTSR_TR14 ((uint32_t)0x00004000) /*!< Falling trigger event configuration bit of line 14 */ +#define EXTI_FTSR_TR15 ((uint32_t)0x00008000) /*!< Falling trigger event configuration bit of line 15 */ +#define EXTI_FTSR_TR16 ((uint32_t)0x00010000) /*!< Falling trigger event configuration bit of line 16 */ +#define EXTI_FTSR_TR17 ((uint32_t)0x00020000) /*!< Falling trigger event configuration bit of line 17 */ +#define EXTI_FTSR_TR18 ((uint32_t)0x00040000) /*!< Falling trigger event configuration bit of line 18 */ +#define EXTI_FTSR_TR19 ((uint32_t)0x00080000) /*!< Falling trigger event configuration bit of line 19 */ +#define EXTI_FTSR_TR20 ((uint32_t)0x00100000) /*!< Falling trigger event configuration bit of line 20 */ +#define EXTI_FTSR_TR21 ((uint32_t)0x00200000) /*!< Falling trigger event configuration bit of line 21 */ +#define EXTI_FTSR_TR22 ((uint32_t)0x00400000) /*!< Falling trigger event configuration bit of line 22 */ +#define EXTI_FTSR_TR23 ((uint32_t)0x00800000) /*!< Falling trigger event configuration bit of line 23 */ +#define EXTI_FTSR_TR24 ((uint32_t)0x01000000) /*!< Falling trigger event configuration bit of line 24 */ +#define EXTI_FTSR_TR25 ((uint32_t)0x02000000) /*!< Falling trigger event configuration bit of line 25 */ +#define EXTI_FTSR_TR26 ((uint32_t)0x04000000) /*!< Falling trigger event configuration bit of line 26 */ +#define EXTI_FTSR_TR27 ((uint32_t)0x08000000) /*!< Falling trigger event configuration bit of line 27 */ +#define EXTI_FTSR_TR28 ((uint32_t)0x10000000) /*!< Falling trigger event configuration bit of line 28 */ + +/****************** Bit definition for EXTI_SWIER register ******************/ +#define EXTI_SWIER_SWIER0 ((uint32_t)0x00000001) /*!< Software Interrupt on line 0 */ +#define EXTI_SWIER_SWIER1 ((uint32_t)0x00000002) /*!< Software Interrupt on line 1 */ +#define EXTI_SWIER_SWIER2 ((uint32_t)0x00000004) /*!< Software Interrupt on line 2 */ +#define EXTI_SWIER_SWIER3 ((uint32_t)0x00000008) /*!< Software Interrupt on line 3 */ +#define EXTI_SWIER_SWIER4 ((uint32_t)0x00000010) /*!< Software Interrupt on line 4 */ +#define EXTI_SWIER_SWIER5 ((uint32_t)0x00000020) /*!< Software Interrupt on line 5 */ +#define EXTI_SWIER_SWIER6 ((uint32_t)0x00000040) /*!< Software Interrupt on line 6 */ +#define EXTI_SWIER_SWIER7 ((uint32_t)0x00000080) /*!< Software Interrupt on line 7 */ +#define EXTI_SWIER_SWIER8 ((uint32_t)0x00000100) /*!< Software Interrupt on line 8 */ +#define EXTI_SWIER_SWIER9 ((uint32_t)0x00000200) /*!< Software Interrupt on line 9 */ +#define EXTI_SWIER_SWIER10 ((uint32_t)0x00000400) /*!< Software Interrupt on line 10 */ +#define EXTI_SWIER_SWIER11 ((uint32_t)0x00000800) /*!< Software Interrupt on line 11 */ +#define EXTI_SWIER_SWIER12 ((uint32_t)0x00001000) /*!< Software Interrupt on line 12 */ +#define EXTI_SWIER_SWIER13 ((uint32_t)0x00002000) /*!< Software Interrupt on line 13 */ +#define EXTI_SWIER_SWIER14 ((uint32_t)0x00004000) /*!< Software Interrupt on line 14 */ +#define EXTI_SWIER_SWIER15 ((uint32_t)0x00008000) /*!< Software Interrupt on line 15 */ +#define EXTI_SWIER_SWIER16 ((uint32_t)0x00010000) /*!< Software Interrupt on line 16 */ +#define EXTI_SWIER_SWIER17 ((uint32_t)0x00020000) /*!< Software Interrupt on line 17 */ +#define EXTI_SWIER_SWIER18 ((uint32_t)0x00040000) /*!< Software Interrupt on line 18 */ +#define EXTI_SWIER_SWIER19 ((uint32_t)0x00080000) /*!< Software Interrupt on line 19 */ +#define EXTI_SWIER_SWIER20 ((uint32_t)0x00100000) /*!< Software Interrupt on line 20 */ +#define EXTI_SWIER_SWIER21 ((uint32_t)0x00200000) /*!< Software Interrupt on line 21 */ +#define EXTI_SWIER_SWIER22 ((uint32_t)0x00400000) /*!< Software Interrupt on line 22 */ +#define EXTI_SWIER_SWIER23 ((uint32_t)0x00800000) /*!< Software Interrupt on line 23 */ +#define EXTI_SWIER_SWIER24 ((uint32_t)0x01000000) /*!< Software Interrupt on line 24 */ +#define EXTI_SWIER_SWIER25 ((uint32_t)0x02000000) /*!< Software Interrupt on line 25 */ +#define EXTI_SWIER_SWIER26 ((uint32_t)0x04000000) /*!< Software Interrupt on line 26 */ +#define EXTI_SWIER_SWIER27 ((uint32_t)0x08000000) /*!< Software Interrupt on line 27 */ +#define EXTI_SWIER_SWIER28 ((uint32_t)0x10000000) /*!< Software Interrupt on line 28 */ + +/******************* Bit definition for EXTI_PR register ********************/ +#define EXTI_PR_PR0 ((uint32_t)0x00000001) /*!< Pending bit for line 0 */ +#define EXTI_PR_PR1 ((uint32_t)0x00000002) /*!< Pending bit for line 1 */ +#define EXTI_PR_PR2 ((uint32_t)0x00000004) /*!< Pending bit for line 2 */ +#define EXTI_PR_PR3 ((uint32_t)0x00000008) /*!< Pending bit for line 3 */ +#define EXTI_PR_PR4 ((uint32_t)0x00000010) /*!< Pending bit for line 4 */ +#define EXTI_PR_PR5 ((uint32_t)0x00000020) /*!< Pending bit for line 5 */ +#define EXTI_PR_PR6 ((uint32_t)0x00000040) /*!< Pending bit for line 6 */ +#define EXTI_PR_PR7 ((uint32_t)0x00000080) /*!< Pending bit for line 7 */ +#define EXTI_PR_PR8 ((uint32_t)0x00000100) /*!< Pending bit for line 8 */ +#define EXTI_PR_PR9 ((uint32_t)0x00000200) /*!< Pending bit for line 9 */ +#define EXTI_PR_PR10 ((uint32_t)0x00000400) /*!< Pending bit for line 10 */ +#define EXTI_PR_PR11 ((uint32_t)0x00000800) /*!< Pending bit for line 11 */ +#define EXTI_PR_PR12 ((uint32_t)0x00001000) /*!< Pending bit for line 12 */ +#define EXTI_PR_PR13 ((uint32_t)0x00002000) /*!< Pending bit for line 13 */ +#define EXTI_PR_PR14 ((uint32_t)0x00004000) /*!< Pending bit for line 14 */ +#define EXTI_PR_PR15 ((uint32_t)0x00008000) /*!< Pending bit for line 15 */ +#define EXTI_PR_PR16 ((uint32_t)0x00010000) /*!< Pending bit for line 16 */ +#define EXTI_PR_PR17 ((uint32_t)0x00020000) /*!< Pending bit for line 17 */ +#define EXTI_PR_PR18 ((uint32_t)0x00040000) /*!< Pending bit for line 18 */ +#define EXTI_PR_PR19 ((uint32_t)0x00080000) /*!< Pending bit for line 19 */ +#define EXTI_PR_PR20 ((uint32_t)0x00100000) /*!< Pending bit for line 20 */ +#define EXTI_PR_PR21 ((uint32_t)0x00200000) /*!< Pending bit for line 21 */ +#define EXTI_PR_PR22 ((uint32_t)0x00400000) /*!< Pending bit for line 22 */ +#define EXTI_PR_PR23 ((uint32_t)0x00800000) /*!< Pending bit for line 23 */ +#define EXTI_PR_PR24 ((uint32_t)0x01000000) /*!< Pending bit for line 24 */ +#define EXTI_PR_PR25 ((uint32_t)0x02000000) /*!< Pending bit for line 25 */ +#define EXTI_PR_PR26 ((uint32_t)0x04000000) /*!< Pending bit for line 26 */ +#define EXTI_PR_PR27 ((uint32_t)0x08000000) /*!< Pending bit for line 27 */ +#define EXTI_PR_PR28 ((uint32_t)0x10000000) /*!< Pending bit for line 28 */ + +/******************************************************************************/ +/* */ +/* FLASH */ +/* */ +/******************************************************************************/ +/******************* Bit definition for FLASH_ACR register ******************/ +#define FLASH_ACR_LATENCY ((uint8_t)0x03) /*!< LATENCY[2:0] bits (Latency) */ +#define FLASH_ACR_LATENCY_0 ((uint8_t)0x01) /*!< Bit 0 */ +#define FLASH_ACR_LATENCY_1 ((uint8_t)0x02) /*!< Bit 1 */ + +#define FLASH_ACR_HLFCYA ((uint8_t)0x08) /*!< Flash Half Cycle Access Enable */ +#define FLASH_ACR_PRFTBE ((uint8_t)0x10) /*!< Prefetch Buffer Enable */ +#define FLASH_ACR_PRFTBS ((uint8_t)0x20) + +/****************** Bit definition for FLASH_KEYR register ******************/ +#define FLASH_KEYR_FKEYR ((uint32_t)0xFFFFFFFF) /*!< FPEC Key */ + +#define RDP_KEY ((uint16_t)0x00A5) /*!< RDP Key */ +#define FLASH_KEY1 ((uint32_t)0x45670123) /*!< FPEC Key1 */ +#define FLASH_KEY2 ((uint32_t)0xCDEF89AB) /*!< FPEC Key2 */ + +/***************** Bit definition for FLASH_OPTKEYR register ****************/ +#define FLASH_OPTKEYR_OPTKEYR ((uint32_t)0xFFFFFFFF) /*!< Option Byte Key */ + +#define FLASH_OPTKEY1 FLASH_KEY1 /*!< Option Byte Key1 */ +#define FLASH_OPTKEY2 FLASH_KEY2 /*!< Option Byte Key2 */ + +/****************** Bit definition for FLASH_SR register *******************/ +#define FLASH_SR_BSY ((uint32_t)0x00000001) /*!< Busy */ +#define FLASH_SR_PGERR ((uint32_t)0x00000004) /*!< Programming Error */ +#define FLASH_SR_WRPERR ((uint32_t)0x00000010) /*!< Write Protection Error */ +#define FLASH_SR_EOP ((uint32_t)0x00000020) /*!< End of operation */ + +/******************* Bit definition for FLASH_CR register *******************/ +#define FLASH_CR_PG ((uint32_t)0x00000001) /*!< Programming */ +#define FLASH_CR_PER ((uint32_t)0x00000002) /*!< Page Erase */ +#define FLASH_CR_MER ((uint32_t)0x00000004) /*!< Mass Erase */ +#define FLASH_CR_OPTPG ((uint32_t)0x00000010) /*!< Option Byte Programming */ +#define FLASH_CR_OPTER ((uint32_t)0x00000020) /*!< Option Byte Erase */ +#define FLASH_CR_STRT ((uint32_t)0x00000040) /*!< Start */ +#define FLASH_CR_LOCK ((uint32_t)0x00000080) /*!< Lock */ +#define FLASH_CR_OPTWRE ((uint32_t)0x00000200) /*!< Option Bytes Write Enable */ +#define FLASH_CR_ERRIE ((uint32_t)0x00000400) /*!< Error Interrupt Enable */ +#define FLASH_CR_EOPIE ((uint32_t)0x00001000) /*!< End of operation interrupt enable */ +#define FLASH_CR_OBL_LAUNCH ((uint32_t)0x00002000) /*!< OptionBytes Loader Launch */ + +/******************* Bit definition for FLASH_AR register *******************/ +#define FLASH_AR_FAR ((uint32_t)0xFFFFFFFF) /*!< Flash Address */ + +/****************** Bit definition for FLASH_OBR register *******************/ +#define FLASH_OBR_OPTERR ((uint32_t)0x00000001) /*!< Option Byte Error */ +#define FLASH_OBR_RDPRT1 ((uint32_t)0x00000002) /*!< Read protection Level 1 */ +#define FLASH_OBR_RDPRT2 ((uint32_t)0x00000004) /*!< Read protection Level 2 */ + +#define FLASH_OBR_USER ((uint32_t)0x00003700) /*!< User Option Bytes */ +#define FLASH_OBR_IWDG_SW ((uint32_t)0x00000100) /*!< IWDG SW */ +#define FLASH_OBR_nRST_STOP ((uint32_t)0x00000200) /*!< nRST_STOP */ +#define FLASH_OBR_nRST_STDBY ((uint32_t)0x00000400) /*!< nRST_STDBY */ + +/****************** Bit definition for FLASH_WRPR register ******************/ +#define FLASH_WRPR_WRP ((uint32_t)0xFFFFFFFF) /*!< Write Protect */ + +/*----------------------------------------------------------------------------*/ + +/****************** Bit definition for OB_RDP register **********************/ +#define OB_RDP_RDP ((uint32_t)0x000000FF) /*!< Read protection option byte */ +#define OB_RDP_nRDP ((uint32_t)0x0000FF00) /*!< Read protection complemented option byte */ + +/****************** Bit definition for OB_USER register *********************/ +#define OB_USER_USER ((uint32_t)0x00FF0000) /*!< User option byte */ +#define OB_USER_nUSER ((uint32_t)0xFF000000) /*!< User complemented option byte */ + +/****************** Bit definition for FLASH_WRP0 register ******************/ +#define OB_WRP0_WRP0 ((uint32_t)0x000000FF) /*!< Flash memory write protection option bytes */ +#define OB_WRP0_nWRP0 ((uint32_t)0x0000FF00) /*!< Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRP1 register ******************/ +#define OB_WRP1_WRP1 ((uint32_t)0x00FF0000) /*!< Flash memory write protection option bytes */ +#define OB_WRP1_nWRP1 ((uint32_t)0xFF000000) /*!< Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRP2 register ******************/ +#define OB_WRP2_WRP2 ((uint32_t)0x000000FF) /*!< Flash memory write protection option bytes */ +#define OB_WRP2_nWRP2 ((uint32_t)0x0000FF00) /*!< Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRP3 register ******************/ +#define OB_WRP3_WRP3 ((uint32_t)0x00FF0000) /*!< Flash memory write protection option bytes */ +#define OB_WRP3_nWRP3 ((uint32_t)0xFF000000) /*!< Flash memory write protection complemented option bytes */ +/******************************************************************************/ +/* */ +/* General Purpose I/O (GPIO) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for GPIO_MODER register *****************/ +#define GPIO_MODER_MODER0 ((uint32_t)0x00000003) +#define GPIO_MODER_MODER0_0 ((uint32_t)0x00000001) +#define GPIO_MODER_MODER0_1 ((uint32_t)0x00000002) +#define GPIO_MODER_MODER1 ((uint32_t)0x0000000C) +#define GPIO_MODER_MODER1_0 ((uint32_t)0x00000004) +#define GPIO_MODER_MODER1_1 ((uint32_t)0x00000008) +#define GPIO_MODER_MODER2 ((uint32_t)0x00000030) +#define GPIO_MODER_MODER2_0 ((uint32_t)0x00000010) +#define GPIO_MODER_MODER2_1 ((uint32_t)0x00000020) +#define GPIO_MODER_MODER3 ((uint32_t)0x000000C0) +#define GPIO_MODER_MODER3_0 ((uint32_t)0x00000040) +#define GPIO_MODER_MODER3_1 ((uint32_t)0x00000080) +#define GPIO_MODER_MODER4 ((uint32_t)0x00000300) +#define GPIO_MODER_MODER4_0 ((uint32_t)0x00000100) +#define GPIO_MODER_MODER4_1 ((uint32_t)0x00000200) +#define GPIO_MODER_MODER5 ((uint32_t)0x00000C00) +#define GPIO_MODER_MODER5_0 ((uint32_t)0x00000400) +#define GPIO_MODER_MODER5_1 ((uint32_t)0x00000800) +#define GPIO_MODER_MODER6 ((uint32_t)0x00003000) +#define GPIO_MODER_MODER6_0 ((uint32_t)0x00001000) +#define GPIO_MODER_MODER6_1 ((uint32_t)0x00002000) +#define GPIO_MODER_MODER7 ((uint32_t)0x0000C000) +#define GPIO_MODER_MODER7_0 ((uint32_t)0x00004000) +#define GPIO_MODER_MODER7_1 ((uint32_t)0x00008000) +#define GPIO_MODER_MODER8 ((uint32_t)0x00030000) +#define GPIO_MODER_MODER8_0 ((uint32_t)0x00010000) +#define GPIO_MODER_MODER8_1 ((uint32_t)0x00020000) +#define GPIO_MODER_MODER9 ((uint32_t)0x000C0000) +#define GPIO_MODER_MODER9_0 ((uint32_t)0x00040000) +#define GPIO_MODER_MODER9_1 ((uint32_t)0x00080000) +#define GPIO_MODER_MODER10 ((uint32_t)0x00300000) +#define GPIO_MODER_MODER10_0 ((uint32_t)0x00100000) +#define GPIO_MODER_MODER10_1 ((uint32_t)0x00200000) +#define GPIO_MODER_MODER11 ((uint32_t)0x00C00000) +#define GPIO_MODER_MODER11_0 ((uint32_t)0x00400000) +#define GPIO_MODER_MODER11_1 ((uint32_t)0x00800000) +#define GPIO_MODER_MODER12 ((uint32_t)0x03000000) +#define GPIO_MODER_MODER12_0 ((uint32_t)0x01000000) +#define GPIO_MODER_MODER12_1 ((uint32_t)0x02000000) +#define GPIO_MODER_MODER13 ((uint32_t)0x0C000000) +#define GPIO_MODER_MODER13_0 ((uint32_t)0x04000000) +#define GPIO_MODER_MODER13_1 ((uint32_t)0x08000000) +#define GPIO_MODER_MODER14 ((uint32_t)0x30000000) +#define GPIO_MODER_MODER14_0 ((uint32_t)0x10000000) +#define GPIO_MODER_MODER14_1 ((uint32_t)0x20000000) +#define GPIO_MODER_MODER15 ((uint32_t)0xC0000000) +#define GPIO_MODER_MODER15_0 ((uint32_t)0x40000000) +#define GPIO_MODER_MODER15_1 ((uint32_t)0x80000000) + + +/****************** Bit definition for GPIO_OTYPER register *****************/ +#define GPIO_OTYPER_OT_0 ((uint32_t)0x00000001) +#define GPIO_OTYPER_OT_1 ((uint32_t)0x00000002) +#define GPIO_OTYPER_OT_2 ((uint32_t)0x00000004) +#define GPIO_OTYPER_OT_3 ((uint32_t)0x00000008) +#define GPIO_OTYPER_OT_4 ((uint32_t)0x00000010) +#define GPIO_OTYPER_OT_5 ((uint32_t)0x00000020) +#define GPIO_OTYPER_OT_6 ((uint32_t)0x00000040) +#define GPIO_OTYPER_OT_7 ((uint32_t)0x00000080) +#define GPIO_OTYPER_OT_8 ((uint32_t)0x00000100) +#define GPIO_OTYPER_OT_9 ((uint32_t)0x00000200) +#define GPIO_OTYPER_OT_10 ((uint32_t)0x00000400) +#define GPIO_OTYPER_OT_11 ((uint32_t)0x00000800) +#define GPIO_OTYPER_OT_12 ((uint32_t)0x00001000) +#define GPIO_OTYPER_OT_13 ((uint32_t)0x00002000) +#define GPIO_OTYPER_OT_14 ((uint32_t)0x00004000) +#define GPIO_OTYPER_OT_15 ((uint32_t)0x00008000) + + +/**************** Bit definition for GPIO_OSPEEDR register ******************/ +#define GPIO_OSPEEDER_OSPEEDR0 ((uint32_t)0x00000003) +#define GPIO_OSPEEDER_OSPEEDR0_0 ((uint32_t)0x00000001) +#define GPIO_OSPEEDER_OSPEEDR0_1 ((uint32_t)0x00000002) +#define GPIO_OSPEEDER_OSPEEDR1 ((uint32_t)0x0000000C) +#define GPIO_OSPEEDER_OSPEEDR1_0 ((uint32_t)0x00000004) +#define GPIO_OSPEEDER_OSPEEDR1_1 ((uint32_t)0x00000008) +#define GPIO_OSPEEDER_OSPEEDR2 ((uint32_t)0x00000030) +#define GPIO_OSPEEDER_OSPEEDR2_0 ((uint32_t)0x00000010) +#define GPIO_OSPEEDER_OSPEEDR2_1 ((uint32_t)0x00000020) +#define GPIO_OSPEEDER_OSPEEDR3 ((uint32_t)0x000000C0) +#define GPIO_OSPEEDER_OSPEEDR3_0 ((uint32_t)0x00000040) +#define GPIO_OSPEEDER_OSPEEDR3_1 ((uint32_t)0x00000080) +#define GPIO_OSPEEDER_OSPEEDR4 ((uint32_t)0x00000300) +#define GPIO_OSPEEDER_OSPEEDR4_0 ((uint32_t)0x00000100) +#define GPIO_OSPEEDER_OSPEEDR4_1 ((uint32_t)0x00000200) +#define GPIO_OSPEEDER_OSPEEDR5 ((uint32_t)0x00000C00) +#define GPIO_OSPEEDER_OSPEEDR5_0 ((uint32_t)0x00000400) +#define GPIO_OSPEEDER_OSPEEDR5_1 ((uint32_t)0x00000800) +#define GPIO_OSPEEDER_OSPEEDR6 ((uint32_t)0x00003000) +#define GPIO_OSPEEDER_OSPEEDR6_0 ((uint32_t)0x00001000) +#define GPIO_OSPEEDER_OSPEEDR6_1 ((uint32_t)0x00002000) +#define GPIO_OSPEEDER_OSPEEDR7 ((uint32_t)0x0000C000) +#define GPIO_OSPEEDER_OSPEEDR7_0 ((uint32_t)0x00004000) +#define GPIO_OSPEEDER_OSPEEDR7_1 ((uint32_t)0x00008000) +#define GPIO_OSPEEDER_OSPEEDR8 ((uint32_t)0x00030000) +#define GPIO_OSPEEDER_OSPEEDR8_0 ((uint32_t)0x00010000) +#define GPIO_OSPEEDER_OSPEEDR8_1 ((uint32_t)0x00020000) +#define GPIO_OSPEEDER_OSPEEDR9 ((uint32_t)0x000C0000) +#define GPIO_OSPEEDER_OSPEEDR9_0 ((uint32_t)0x00040000) +#define GPIO_OSPEEDER_OSPEEDR9_1 ((uint32_t)0x00080000) +#define GPIO_OSPEEDER_OSPEEDR10 ((uint32_t)0x00300000) +#define GPIO_OSPEEDER_OSPEEDR10_0 ((uint32_t)0x00100000) +#define GPIO_OSPEEDER_OSPEEDR10_1 ((uint32_t)0x00200000) +#define GPIO_OSPEEDER_OSPEEDR11 ((uint32_t)0x00C00000) +#define GPIO_OSPEEDER_OSPEEDR11_0 ((uint32_t)0x00400000) +#define GPIO_OSPEEDER_OSPEEDR11_1 ((uint32_t)0x00800000) +#define GPIO_OSPEEDER_OSPEEDR12 ((uint32_t)0x03000000) +#define GPIO_OSPEEDER_OSPEEDR12_0 ((uint32_t)0x01000000) +#define GPIO_OSPEEDER_OSPEEDR12_1 ((uint32_t)0x02000000) +#define GPIO_OSPEEDER_OSPEEDR13 ((uint32_t)0x0C000000) +#define GPIO_OSPEEDER_OSPEEDR13_0 ((uint32_t)0x04000000) +#define GPIO_OSPEEDER_OSPEEDR13_1 ((uint32_t)0x08000000) +#define GPIO_OSPEEDER_OSPEEDR14 ((uint32_t)0x30000000) +#define GPIO_OSPEEDER_OSPEEDR14_0 ((uint32_t)0x10000000) +#define GPIO_OSPEEDER_OSPEEDR14_1 ((uint32_t)0x20000000) +#define GPIO_OSPEEDER_OSPEEDR15 ((uint32_t)0xC0000000) +#define GPIO_OSPEEDER_OSPEEDR15_0 ((uint32_t)0x40000000) +#define GPIO_OSPEEDER_OSPEEDR15_1 ((uint32_t)0x80000000) + +/******************* Bit definition for GPIO_PUPDR register ******************/ +#define GPIO_PUPDR_PUPDR0 ((uint32_t)0x00000003) +#define GPIO_PUPDR_PUPDR0_0 ((uint32_t)0x00000001) +#define GPIO_PUPDR_PUPDR0_1 ((uint32_t)0x00000002) +#define GPIO_PUPDR_PUPDR1 ((uint32_t)0x0000000C) +#define GPIO_PUPDR_PUPDR1_0 ((uint32_t)0x00000004) +#define GPIO_PUPDR_PUPDR1_1 ((uint32_t)0x00000008) +#define GPIO_PUPDR_PUPDR2 ((uint32_t)0x00000030) +#define GPIO_PUPDR_PUPDR2_0 ((uint32_t)0x00000010) +#define GPIO_PUPDR_PUPDR2_1 ((uint32_t)0x00000020) +#define GPIO_PUPDR_PUPDR3 ((uint32_t)0x000000C0) +#define GPIO_PUPDR_PUPDR3_0 ((uint32_t)0x00000040) +#define GPIO_PUPDR_PUPDR3_1 ((uint32_t)0x00000080) +#define GPIO_PUPDR_PUPDR4 ((uint32_t)0x00000300) +#define GPIO_PUPDR_PUPDR4_0 ((uint32_t)0x00000100) +#define GPIO_PUPDR_PUPDR4_1 ((uint32_t)0x00000200) +#define GPIO_PUPDR_PUPDR5 ((uint32_t)0x00000C00) +#define GPIO_PUPDR_PUPDR5_0 ((uint32_t)0x00000400) +#define GPIO_PUPDR_PUPDR5_1 ((uint32_t)0x00000800) +#define GPIO_PUPDR_PUPDR6 ((uint32_t)0x00003000) +#define GPIO_PUPDR_PUPDR6_0 ((uint32_t)0x00001000) +#define GPIO_PUPDR_PUPDR6_1 ((uint32_t)0x00002000) +#define GPIO_PUPDR_PUPDR7 ((uint32_t)0x0000C000) +#define GPIO_PUPDR_PUPDR7_0 ((uint32_t)0x00004000) +#define GPIO_PUPDR_PUPDR7_1 ((uint32_t)0x00008000) +#define GPIO_PUPDR_PUPDR8 ((uint32_t)0x00030000) +#define GPIO_PUPDR_PUPDR8_0 ((uint32_t)0x00010000) +#define GPIO_PUPDR_PUPDR8_1 ((uint32_t)0x00020000) +#define GPIO_PUPDR_PUPDR9 ((uint32_t)0x000C0000) +#define GPIO_PUPDR_PUPDR9_0 ((uint32_t)0x00040000) +#define GPIO_PUPDR_PUPDR9_1 ((uint32_t)0x00080000) +#define GPIO_PUPDR_PUPDR10 ((uint32_t)0x00300000) +#define GPIO_PUPDR_PUPDR10_0 ((uint32_t)0x00100000) +#define GPIO_PUPDR_PUPDR10_1 ((uint32_t)0x00200000) +#define GPIO_PUPDR_PUPDR11 ((uint32_t)0x00C00000) +#define GPIO_PUPDR_PUPDR11_0 ((uint32_t)0x00400000) +#define GPIO_PUPDR_PUPDR11_1 ((uint32_t)0x00800000) +#define GPIO_PUPDR_PUPDR12 ((uint32_t)0x03000000) +#define GPIO_PUPDR_PUPDR12_0 ((uint32_t)0x01000000) +#define GPIO_PUPDR_PUPDR12_1 ((uint32_t)0x02000000) +#define GPIO_PUPDR_PUPDR13 ((uint32_t)0x0C000000) +#define GPIO_PUPDR_PUPDR13_0 ((uint32_t)0x04000000) +#define GPIO_PUPDR_PUPDR13_1 ((uint32_t)0x08000000) +#define GPIO_PUPDR_PUPDR14 ((uint32_t)0x30000000) +#define GPIO_PUPDR_PUPDR14_0 ((uint32_t)0x10000000) +#define GPIO_PUPDR_PUPDR14_1 ((uint32_t)0x20000000) +#define GPIO_PUPDR_PUPDR15 ((uint32_t)0xC0000000) +#define GPIO_PUPDR_PUPDR15_0 ((uint32_t)0x40000000) +#define GPIO_PUPDR_PUPDR15_1 ((uint32_t)0x80000000) + +/******************* Bit definition for GPIO_IDR register *******************/ +#define GPIO_IDR_0 ((uint32_t)0x00000001) +#define GPIO_IDR_1 ((uint32_t)0x00000002) +#define GPIO_IDR_2 ((uint32_t)0x00000004) +#define GPIO_IDR_3 ((uint32_t)0x00000008) +#define GPIO_IDR_4 ((uint32_t)0x00000010) +#define GPIO_IDR_5 ((uint32_t)0x00000020) +#define GPIO_IDR_6 ((uint32_t)0x00000040) +#define GPIO_IDR_7 ((uint32_t)0x00000080) +#define GPIO_IDR_8 ((uint32_t)0x00000100) +#define GPIO_IDR_9 ((uint32_t)0x00000200) +#define GPIO_IDR_10 ((uint32_t)0x00000400) +#define GPIO_IDR_11 ((uint32_t)0x00000800) +#define GPIO_IDR_12 ((uint32_t)0x00001000) +#define GPIO_IDR_13 ((uint32_t)0x00002000) +#define GPIO_IDR_14 ((uint32_t)0x00004000) +#define GPIO_IDR_15 ((uint32_t)0x00008000) + +/****************** Bit definition for GPIO_ODR register ********************/ +#define GPIO_ODR_0 ((uint32_t)0x00000001) +#define GPIO_ODR_1 ((uint32_t)0x00000002) +#define GPIO_ODR_2 ((uint32_t)0x00000004) +#define GPIO_ODR_3 ((uint32_t)0x00000008) +#define GPIO_ODR_4 ((uint32_t)0x00000010) +#define GPIO_ODR_5 ((uint32_t)0x00000020) +#define GPIO_ODR_6 ((uint32_t)0x00000040) +#define GPIO_ODR_7 ((uint32_t)0x00000080) +#define GPIO_ODR_8 ((uint32_t)0x00000100) +#define GPIO_ODR_9 ((uint32_t)0x00000200) +#define GPIO_ODR_10 ((uint32_t)0x00000400) +#define GPIO_ODR_11 ((uint32_t)0x00000800) +#define GPIO_ODR_12 ((uint32_t)0x00001000) +#define GPIO_ODR_13 ((uint32_t)0x00002000) +#define GPIO_ODR_14 ((uint32_t)0x00004000) +#define GPIO_ODR_15 ((uint32_t)0x00008000) + +/****************** Bit definition for GPIO_BSRR register ********************/ +#define GPIO_BSRR_BS_0 ((uint32_t)0x00000001) +#define GPIO_BSRR_BS_1 ((uint32_t)0x00000002) +#define GPIO_BSRR_BS_2 ((uint32_t)0x00000004) +#define GPIO_BSRR_BS_3 ((uint32_t)0x00000008) +#define GPIO_BSRR_BS_4 ((uint32_t)0x00000010) +#define GPIO_BSRR_BS_5 ((uint32_t)0x00000020) +#define GPIO_BSRR_BS_6 ((uint32_t)0x00000040) +#define GPIO_BSRR_BS_7 ((uint32_t)0x00000080) +#define GPIO_BSRR_BS_8 ((uint32_t)0x00000100) +#define GPIO_BSRR_BS_9 ((uint32_t)0x00000200) +#define GPIO_BSRR_BS_10 ((uint32_t)0x00000400) +#define GPIO_BSRR_BS_11 ((uint32_t)0x00000800) +#define GPIO_BSRR_BS_12 ((uint32_t)0x00001000) +#define GPIO_BSRR_BS_13 ((uint32_t)0x00002000) +#define GPIO_BSRR_BS_14 ((uint32_t)0x00004000) +#define GPIO_BSRR_BS_15 ((uint32_t)0x00008000) +#define GPIO_BSRR_BR_0 ((uint32_t)0x00010000) +#define GPIO_BSRR_BR_1 ((uint32_t)0x00020000) +#define GPIO_BSRR_BR_2 ((uint32_t)0x00040000) +#define GPIO_BSRR_BR_3 ((uint32_t)0x00080000) +#define GPIO_BSRR_BR_4 ((uint32_t)0x00100000) +#define GPIO_BSRR_BR_5 ((uint32_t)0x00200000) +#define GPIO_BSRR_BR_6 ((uint32_t)0x00400000) +#define GPIO_BSRR_BR_7 ((uint32_t)0x00800000) +#define GPIO_BSRR_BR_8 ((uint32_t)0x01000000) +#define GPIO_BSRR_BR_9 ((uint32_t)0x02000000) +#define GPIO_BSRR_BR_10 ((uint32_t)0x04000000) +#define GPIO_BSRR_BR_11 ((uint32_t)0x08000000) +#define GPIO_BSRR_BR_12 ((uint32_t)0x10000000) +#define GPIO_BSRR_BR_13 ((uint32_t)0x20000000) +#define GPIO_BSRR_BR_14 ((uint32_t)0x40000000) +#define GPIO_BSRR_BR_15 ((uint32_t)0x80000000) + +/****************** Bit definition for GPIO_LCKR register ********************/ +#define GPIO_LCKR_LCK0 ((uint32_t)0x00000001) +#define GPIO_LCKR_LCK1 ((uint32_t)0x00000002) +#define GPIO_LCKR_LCK2 ((uint32_t)0x00000004) +#define GPIO_LCKR_LCK3 ((uint32_t)0x00000008) +#define GPIO_LCKR_LCK4 ((uint32_t)0x00000010) +#define GPIO_LCKR_LCK5 ((uint32_t)0x00000020) +#define GPIO_LCKR_LCK6 ((uint32_t)0x00000040) +#define GPIO_LCKR_LCK7 ((uint32_t)0x00000080) +#define GPIO_LCKR_LCK8 ((uint32_t)0x00000100) +#define GPIO_LCKR_LCK9 ((uint32_t)0x00000200) +#define GPIO_LCKR_LCK10 ((uint32_t)0x00000400) +#define GPIO_LCKR_LCK11 ((uint32_t)0x00000800) +#define GPIO_LCKR_LCK12 ((uint32_t)0x00001000) +#define GPIO_LCKR_LCK13 ((uint32_t)0x00002000) +#define GPIO_LCKR_LCK14 ((uint32_t)0x00004000) +#define GPIO_LCKR_LCK15 ((uint32_t)0x00008000) +#define GPIO_LCKR_LCKK ((uint32_t)0x00010000) + +/****************** Bit definition for GPIO_AFRL register ********************/ +#define GPIO_AFRL_AFRL0 ((uint32_t)0x0000000F) +#define GPIO_AFRL_AFRL1 ((uint32_t)0x000000F0) +#define GPIO_AFRL_AFRL2 ((uint32_t)0x00000F00) +#define GPIO_AFRL_AFRL3 ((uint32_t)0x0000F000) +#define GPIO_AFRL_AFRL4 ((uint32_t)0x000F0000) +#define GPIO_AFRL_AFRL5 ((uint32_t)0x00F00000) +#define GPIO_AFRL_AFRL6 ((uint32_t)0x0F000000) +#define GPIO_AFRL_AFRL7 ((uint32_t)0xF0000000) + +/****************** Bit definition for GPIO_AFRH register ********************/ +#define GPIO_AFRH_AFRH0 ((uint32_t)0x0000000F) +#define GPIO_AFRH_AFRH1 ((uint32_t)0x000000F0) +#define GPIO_AFRH_AFRH2 ((uint32_t)0x00000F00) +#define GPIO_AFRH_AFRH3 ((uint32_t)0x0000F000) +#define GPIO_AFRH_AFRH4 ((uint32_t)0x000F0000) +#define GPIO_AFRH_AFRH5 ((uint32_t)0x00F00000) +#define GPIO_AFRH_AFRH6 ((uint32_t)0x0F000000) +#define GPIO_AFRH_AFRH7 ((uint32_t)0xF0000000) + +/****************** Bit definition for GPIO_BRR register *********************/ +#define GPIO_BRR_BR_0 ((uint32_t)0x00000001) +#define GPIO_BRR_BR_1 ((uint32_t)0x00000002) +#define GPIO_BRR_BR_2 ((uint32_t)0x00000004) +#define GPIO_BRR_BR_3 ((uint32_t)0x00000008) +#define GPIO_BRR_BR_4 ((uint32_t)0x00000010) +#define GPIO_BRR_BR_5 ((uint32_t)0x00000020) +#define GPIO_BRR_BR_6 ((uint32_t)0x00000040) +#define GPIO_BRR_BR_7 ((uint32_t)0x00000080) +#define GPIO_BRR_BR_8 ((uint32_t)0x00000100) +#define GPIO_BRR_BR_9 ((uint32_t)0x00000200) +#define GPIO_BRR_BR_10 ((uint32_t)0x00000400) +#define GPIO_BRR_BR_11 ((uint32_t)0x00000800) +#define GPIO_BRR_BR_12 ((uint32_t)0x00001000) +#define GPIO_BRR_BR_13 ((uint32_t)0x00002000) +#define GPIO_BRR_BR_14 ((uint32_t)0x00004000) +#define GPIO_BRR_BR_15 ((uint32_t)0x00008000) + +/******************************************************************************/ +/* */ +/* Inter-integrated Circuit Interface (I2C) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for I2C_CR1 register *******************/ +#define I2C_CR1_PE ((uint32_t)0x00000001) /*!< Peripheral enable */ +#define I2C_CR1_TXIE ((uint32_t)0x00000002) /*!< TX interrupt enable */ +#define I2C_CR1_RXIE ((uint32_t)0x00000004) /*!< RX interrupt enable */ +#define I2C_CR1_ADDRIE ((uint32_t)0x00000008) /*!< Address match interrupt enable */ +#define I2C_CR1_NACKIE ((uint32_t)0x00000010) /*!< NACK received interrupt enable */ +#define I2C_CR1_STOPIE ((uint32_t)0x00000020) /*!< STOP detection interrupt enable */ +#define I2C_CR1_TCIE ((uint32_t)0x00000040) /*!< Transfer complete interrupt enable */ +#define I2C_CR1_ERRIE ((uint32_t)0x00000080) /*!< Errors interrupt enable */ +#define I2C_CR1_DFN ((uint32_t)0x00000F00) /*!< Digital noise filter */ +#define I2C_CR1_ANFOFF ((uint32_t)0x00001000) /*!< Analog noise filter OFF */ +#define I2C_CR1_SWRST ((uint32_t)0x00002000) /*!< Software reset */ +#define I2C_CR1_TXDMAEN ((uint32_t)0x00004000) /*!< DMA transmission requests enable */ +#define I2C_CR1_RXDMAEN ((uint32_t)0x00008000) /*!< DMA reception requests enable */ +#define I2C_CR1_SBC ((uint32_t)0x00010000) /*!< Slave byte control */ +#define I2C_CR1_NOSTRETCH ((uint32_t)0x00020000) /*!< Clock stretching disable */ +#define I2C_CR1_WUPEN ((uint32_t)0x00040000) /*!< Wakeup from STOP enable */ +#define I2C_CR1_GCEN ((uint32_t)0x00080000) /*!< General call enable */ +#define I2C_CR1_SMBHEN ((uint32_t)0x00100000) /*!< SMBus host address enable */ +#define I2C_CR1_SMBDEN ((uint32_t)0x00200000) /*!< SMBus device default address enable */ +#define I2C_CR1_ALERTEN ((uint32_t)0x00400000) /*!< SMBus alert enable */ +#define I2C_CR1_PECEN ((uint32_t)0x00800000) /*!< PEC enable */ + +/****************** Bit definition for I2C_CR2 register ********************/ +#define I2C_CR2_SADD ((uint32_t)0x000003FF) /*!< Slave address (master mode) */ +#define I2C_CR2_RD_WRN ((uint32_t)0x00000400) /*!< Transfer direction (master mode) */ +#define I2C_CR2_ADD10 ((uint32_t)0x00000800) /*!< 10-bit addressing mode (master mode) */ +#define I2C_CR2_HEAD10R ((uint32_t)0x00001000) /*!< 10-bit address header only read direction (master mode) */ +#define I2C_CR2_START ((uint32_t)0x00002000) /*!< START generation */ +#define I2C_CR2_STOP ((uint32_t)0x00004000) /*!< STOP generation (master mode) */ +#define I2C_CR2_NACK ((uint32_t)0x00008000) /*!< NACK generation (slave mode) */ +#define I2C_CR2_NBYTES ((uint32_t)0x00FF0000) /*!< Number of bytes */ +#define I2C_CR2_RELOAD ((uint32_t)0x01000000) /*!< NBYTES reload mode */ +#define I2C_CR2_AUTOEND ((uint32_t)0x02000000) /*!< Automatic end mode (master mode) */ +#define I2C_CR2_PECBYTE ((uint32_t)0x04000000) /*!< Packet error checking byte */ + +/******************* Bit definition for I2C_OAR1 register ******************/ +#define I2C_OAR1_OA1 ((uint32_t)0x000003FF) /*!< Interface own address 1 */ +#define I2C_OAR1_OA1MODE ((uint32_t)0x00000400) /*!< Own address 1 10-bit mode */ +#define I2C_OAR1_OA1EN ((uint32_t)0x00008000) /*!< Own address 1 enable */ + +/******************* Bit definition for I2C_OAR2 register *******************/ +#define I2C_OAR2_OA2 ((uint32_t)0x000000FE) /*!< Interface own address 2 */ +#define I2C_OAR2_OA2MSK ((uint32_t)0x00000700) /*!< Own address 2 masks */ +#define I2C_OAR2_OA2EN ((uint32_t)0x00008000) /*!< Own address 2 enable */ + +/******************* Bit definition for I2C_TIMINGR register *****************/ +#define I2C_TIMINGR_SCLL ((uint32_t)0x000000FF) /*!< SCL low period (master mode) */ +#define I2C_TIMINGR_SCLH ((uint32_t)0x0000FF00) /*!< SCL high period (master mode) */ +#define I2C_TIMINGR_SDADEL ((uint32_t)0x000F0000) /*!< Data hold time */ +#define I2C_TIMINGR_SCLDEL ((uint32_t)0x00F00000) /*!< Data setup time */ +#define I2C_TIMINGR_PRESC ((uint32_t)0xF0000000) /*!< Timings prescaler */ + +/******************* Bit definition for I2C_TIMEOUTR register *****************/ +#define I2C_TIMEOUTR_TIMEOUTA ((uint32_t)0x00000FFF) /*!< Bus timeout A */ +#define I2C_TIMEOUTR_TIDLE ((uint32_t)0x00001000) /*!< Idle clock timeout detection */ +#define I2C_TIMEOUTR_TIMOUTEN ((uint32_t)0x00008000) /*!< Clock timeout enable */ +#define I2C_TIMEOUTR_TIMEOUTB ((uint32_t)0x0FFF0000) /*!< Bus timeout B*/ +#define I2C_TIMEOUTR_TEXTEN ((uint32_t)0x80000000) /*!< Extended clock timeout enable */ + +/****************** Bit definition for I2C_ISR register *********************/ +#define I2C_ISR_TXE ((uint32_t)0x00000001) /*!< Transmit data register empty */ +#define I2C_ISR_TXIS ((uint32_t)0x00000002) /*!< Transmit interrupt status */ +#define I2C_ISR_RXNE ((uint32_t)0x00000004) /*!< Receive data register not empty */ +#define I2C_ISR_ADDR ((uint32_t)0x00000008) /*!< Address matched (slave mode)*/ +#define I2C_ISR_NACKF ((uint32_t)0x00000010) /*!< NACK received flag */ +#define I2C_ISR_STOPF ((uint32_t)0x00000020) /*!< STOP detection flag */ +#define I2C_ISR_TC ((uint32_t)0x00000040) /*!< Transfer complete (master mode) */ +#define I2C_ISR_TCR ((uint32_t)0x00000080) /*!< Transfer complete reload */ +#define I2C_ISR_BERR ((uint32_t)0x00000100) /*!< Bus error */ +#define I2C_ISR_ARLO ((uint32_t)0x00000200) /*!< Arbitration lost */ +#define I2C_ISR_OVR ((uint32_t)0x00000400) /*!< Overrun/Underrun */ +#define I2C_ISR_PECERR ((uint32_t)0x00000800) /*!< PEC error in reception */ +#define I2C_ISR_TIMEOUT ((uint32_t)0x00001000) /*!< Timeout or Tlow detection flag */ +#define I2C_ISR_ALERT ((uint32_t)0x00002000) /*!< SMBus alert */ +#define I2C_ISR_BUSY ((uint32_t)0x00008000) /*!< Bus busy */ +#define I2C_ISR_DIR ((uint32_t)0x00010000) /*!< Transfer direction (slave mode) */ +#define I2C_ISR_ADDCODE ((uint32_t)0x00FE0000) /*!< Address match code (slave mode) */ + +/****************** Bit definition for I2C_ICR register *********************/ +#define I2C_ICR_ADDRCF ((uint32_t)0x00000008) /*!< Address matched clear flag */ +#define I2C_ICR_NACKCF ((uint32_t)0x00000010) /*!< NACK clear flag */ +#define I2C_ICR_STOPCF ((uint32_t)0x00000020) /*!< STOP detection clear flag */ +#define I2C_ICR_BERRCF ((uint32_t)0x00000100) /*!< Bus error clear flag */ +#define I2C_ICR_ARLOCF ((uint32_t)0x00000200) /*!< Arbitration lost clear flag */ +#define I2C_ICR_OVRCF ((uint32_t)0x00000400) /*!< Overrun/Underrun clear flag */ +#define I2C_ICR_PECCF ((uint32_t)0x00000800) /*!< PAC error clear flag */ +#define I2C_ICR_TIMOUTCF ((uint32_t)0x00001000) /*!< Timeout clear flag */ +#define I2C_ICR_ALERTCF ((uint32_t)0x00002000) /*!< Alert clear flag */ + +/****************** Bit definition for I2C_PECR register ********************/ +#define I2C_PECR_PEC ((uint32_t)0x000000FF) /*!< PEC register */ + +/****************** Bit definition for I2C_RXDR register *********************/ +#define I2C_RXDR_RXDATA ((uint32_t)0x000000FF) /*!< 8-bit receive data */ + +/****************** Bit definition for I2C_TXDR register *********************/ +#define I2C_TXDR_TXDATA ((uint32_t)0x000000FF) /*!< 8-bit transmit data */ + + +/******************************************************************************/ +/* */ +/* Independent WATCHDOG (IWDG) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for IWDG_KR register ********************/ +#define IWDG_KR_KEY ((uint16_t)0xFFFF) /*!< Key value (write only, read 0000h) */ + +/******************* Bit definition for IWDG_PR register ********************/ +#define IWDG_PR_PR ((uint8_t)0x07) /*!< PR[2:0] (Prescaler divider) */ +#define IWDG_PR_PR_0 ((uint8_t)0x01) /*!< Bit 0 */ +#define IWDG_PR_PR_1 ((uint8_t)0x02) /*!< Bit 1 */ +#define IWDG_PR_PR_2 ((uint8_t)0x04) /*!< Bit 2 */ + +/******************* Bit definition for IWDG_RLR register *******************/ +#define IWDG_RLR_RL ((uint16_t)0x0FFF) /*!< Watchdog counter reload value */ + +/******************* Bit definition for IWDG_SR register ********************/ +#define IWDG_SR_PVU ((uint8_t)0x01) /*!< Watchdog prescaler value update */ +#define IWDG_SR_RVU ((uint8_t)0x02) /*!< Watchdog counter reload value update */ +#define IWDG_SR_WVU ((uint8_t)0x04) /*!< Watchdog counter window value update */ + +/******************* Bit definition for IWDG_KR register ********************/ +#define IWDG_WINR_WIN ((uint16_t)0x0FFF) /*!< Watchdog counter window value */ + +/******************************************************************************/ +/* */ +/* Power Control */ +/* */ +/******************************************************************************/ +/******************** Bit definition for PWR_CR register ********************/ +#define PWR_CR_LPSDSR ((uint16_t)0x0001) /*!< Low-power deepsleep/sleep/low power run */ +#define PWR_CR_PDDS ((uint16_t)0x0002) /*!< Power Down Deepsleep */ +#define PWR_CR_CWUF ((uint16_t)0x0004) /*!< Clear Wakeup Flag */ +#define PWR_CR_CSBF ((uint16_t)0x0008) /*!< Clear Standby Flag */ +#define PWR_CR_PVDE ((uint16_t)0x0010) /*!< Power Voltage Detector Enable */ + +#define PWR_CR_PLS ((uint16_t)0x00E0) /*!< PLS[2:0] bits (PVD Level Selection) */ +#define PWR_CR_PLS_0 ((uint16_t)0x0020) /*!< Bit 0 */ +#define PWR_CR_PLS_1 ((uint16_t)0x0040) /*!< Bit 1 */ +#define PWR_CR_PLS_2 ((uint16_t)0x0080) /*!< Bit 2 */ + +/*!< PVD level configuration */ +#define PWR_CR_PLS_LEV0 ((uint16_t)0x0000) /*!< PVD level 0 */ +#define PWR_CR_PLS_LEV1 ((uint16_t)0x0020) /*!< PVD level 1 */ +#define PWR_CR_PLS_LEV2 ((uint16_t)0x0040) /*!< PVD level 2 */ +#define PWR_CR_PLS_LEV3 ((uint16_t)0x0060) /*!< PVD level 3 */ +#define PWR_CR_PLS_LEV4 ((uint16_t)0x0080) /*!< PVD level 4 */ +#define PWR_CR_PLS_LEV5 ((uint16_t)0x00A0) /*!< PVD level 5 */ +#define PWR_CR_PLS_LEV6 ((uint16_t)0x00C0) /*!< PVD level 6 */ +#define PWR_CR_PLS_LEV7 ((uint16_t)0x00E0) /*!< PVD level 7 */ + +#define PWR_CR_DBP ((uint16_t)0x0100) /*!< Disable Backup Domain write protection */ + +/******************* Bit definition for PWR_CSR register ********************/ +#define PWR_CSR_WUF ((uint16_t)0x0001) /*!< Wakeup Flag */ +#define PWR_CSR_SBF ((uint16_t)0x0002) /*!< Standby Flag */ +#define PWR_CSR_PVDO ((uint16_t)0x0004) /*!< PVD Output */ +#define PWR_CSR_VREFINTRDYF ((uint16_t)0x0008) /*!< Internal voltage reference (VREFINT) ready flag */ + +#define PWR_CSR_EWUP1 ((uint16_t)0x0100) /*!< Enable WKUP pin 1 */ +#define PWR_CSR_EWUP2 ((uint16_t)0x0200) /*!< Enable WKUP pin 2 */ +#define PWR_CSR_EWUP3 ((uint16_t)0x0400) /*!< Enable WKUP pin 3 */ + +/******************************************************************************/ +/* */ +/* Reset and Clock Control */ +/* */ +/******************************************************************************/ +/******************** Bit definition for RCC_CR register ********************/ +#define RCC_CR_HSION ((uint32_t)0x00000001) +#define RCC_CR_HSIRDY ((uint32_t)0x00000002) + +#define RCC_CR_HSITRIM ((uint32_t)0x000000F8) +#define RCC_CR_HSITRIM_0 ((uint32_t)0x00000008)/*!<Bit 0 */ +#define RCC_CR_HSITRIM_1 ((uint32_t)0x00000010)/*!<Bit 1 */ +#define RCC_CR_HSITRIM_2 ((uint32_t)0x00000020)/*!<Bit 2 */ +#define RCC_CR_HSITRIM_3 ((uint32_t)0x00000040)/*!<Bit 3 */ +#define RCC_CR_HSITRIM_4 ((uint32_t)0x00000080)/*!<Bit 4 */ + +#define RCC_CR_HSICAL ((uint32_t)0x0000FF00) +#define RCC_CR_HSICAL_0 ((uint32_t)0x00000100)/*!<Bit 0 */ +#define RCC_CR_HSICAL_1 ((uint32_t)0x00000200)/*!<Bit 1 */ +#define RCC_CR_HSICAL_2 ((uint32_t)0x00000400)/*!<Bit 2 */ +#define RCC_CR_HSICAL_3 ((uint32_t)0x00000800)/*!<Bit 3 */ +#define RCC_CR_HSICAL_4 ((uint32_t)0x00001000)/*!<Bit 4 */ +#define RCC_CR_HSICAL_5 ((uint32_t)0x00002000)/*!<Bit 5 */ +#define RCC_CR_HSICAL_6 ((uint32_t)0x00004000)/*!<Bit 6 */ +#define RCC_CR_HSICAL_7 ((uint32_t)0x00008000)/*!<Bit 7 */ + +#define RCC_CR_HSEON ((uint32_t)0x00010000) +#define RCC_CR_HSERDY ((uint32_t)0x00020000) +#define RCC_CR_HSEBYP ((uint32_t)0x00040000) +#define RCC_CR_CSSON ((uint32_t)0x00080000) + +#define RCC_CR_PLLON ((uint32_t)0x01000000) +#define RCC_CR_PLLRDY ((uint32_t)0x02000000) + +/******************** Bit definition for RCC_CFGR register ******************/ +/*!< SW configuration */ +#define RCC_CFGR_SW ((uint32_t)0x00000003) /*!< SW[1:0] bits (System clock Switch) */ +#define RCC_CFGR_SW_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define RCC_CFGR_SW_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + +#define RCC_CFGR_SW_HSI ((uint32_t)0x00000000) /*!< HSI selected as system clock */ +#define RCC_CFGR_SW_HSE ((uint32_t)0x00000001) /*!< HSE selected as system clock */ +#define RCC_CFGR_SW_PLL ((uint32_t)0x00000002) /*!< PLL selected as system clock */ + +/*!< SWS configuration */ +#define RCC_CFGR_SWS ((uint32_t)0x0000000C) /*!< SWS[1:0] bits (System Clock Switch Status) */ +#define RCC_CFGR_SWS_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define RCC_CFGR_SWS_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define RCC_CFGR_SWS_HSI ((uint32_t)0x00000000) /*!< HSI oscillator used as system clock */ +#define RCC_CFGR_SWS_HSE ((uint32_t)0x00000004) /*!< HSE oscillator used as system clock */ +#define RCC_CFGR_SWS_PLL ((uint32_t)0x00000008) /*!< PLL used as system clock */ + +/*!< HPRE configuration */ +#define RCC_CFGR_HPRE ((uint32_t)0x000000F0) /*!< HPRE[3:0] bits (AHB prescaler) */ +#define RCC_CFGR_HPRE_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define RCC_CFGR_HPRE_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define RCC_CFGR_HPRE_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define RCC_CFGR_HPRE_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define RCC_CFGR_HPRE_DIV1 ((uint32_t)0x00000000) /*!< SYSCLK not divided */ +#define RCC_CFGR_HPRE_DIV2 ((uint32_t)0x00000080) /*!< SYSCLK divided by 2 */ +#define RCC_CFGR_HPRE_DIV4 ((uint32_t)0x00000090) /*!< SYSCLK divided by 4 */ +#define RCC_CFGR_HPRE_DIV8 ((uint32_t)0x000000A0) /*!< SYSCLK divided by 8 */ +#define RCC_CFGR_HPRE_DIV16 ((uint32_t)0x000000B0) /*!< SYSCLK divided by 16 */ +#define RCC_CFGR_HPRE_DIV64 ((uint32_t)0x000000C0) /*!< SYSCLK divided by 64 */ +#define RCC_CFGR_HPRE_DIV128 ((uint32_t)0x000000D0) /*!< SYSCLK divided by 128 */ +#define RCC_CFGR_HPRE_DIV256 ((uint32_t)0x000000E0) /*!< SYSCLK divided by 256 */ +#define RCC_CFGR_HPRE_DIV512 ((uint32_t)0x000000F0) /*!< SYSCLK divided by 512 */ + +/*!< PPRE1 configuration */ +#define RCC_CFGR_PPRE1 ((uint32_t)0x00000700) /*!< PRE1[2:0] bits (APB1 prescaler) */ +#define RCC_CFGR_PPRE1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define RCC_CFGR_PPRE1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define RCC_CFGR_PPRE1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ + +#define RCC_CFGR_PPRE1_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ +#define RCC_CFGR_PPRE1_DIV2 ((uint32_t)0x00000400) /*!< HCLK divided by 2 */ +#define RCC_CFGR_PPRE1_DIV4 ((uint32_t)0x00000500) /*!< HCLK divided by 4 */ +#define RCC_CFGR_PPRE1_DIV8 ((uint32_t)0x00000600) /*!< HCLK divided by 8 */ +#define RCC_CFGR_PPRE1_DIV16 ((uint32_t)0x00000700) /*!< HCLK divided by 16 */ + +/*!< PPRE2 configuration */ +#define RCC_CFGR_PPRE2 ((uint32_t)0x00003800) /*!< PRE2[2:0] bits (APB2 prescaler) */ +#define RCC_CFGR_PPRE2_0 ((uint32_t)0x00000800) /*!< Bit 0 */ +#define RCC_CFGR_PPRE2_1 ((uint32_t)0x00001000) /*!< Bit 1 */ +#define RCC_CFGR_PPRE2_2 ((uint32_t)0x00002000) /*!< Bit 2 */ + +#define RCC_CFGR_PPRE2_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ +#define RCC_CFGR_PPRE2_DIV2 ((uint32_t)0x00002000) /*!< HCLK divided by 2 */ +#define RCC_CFGR_PPRE2_DIV4 ((uint32_t)0x00002800) /*!< HCLK divided by 4 */ +#define RCC_CFGR_PPRE2_DIV8 ((uint32_t)0x00003000) /*!< HCLK divided by 8 */ +#define RCC_CFGR_PPRE2_DIV16 ((uint32_t)0x00003800) /*!< HCLK divided by 16 */ + +#define RCC_CFGR_PLLSRC ((uint32_t)0x00010000) /*!< PLL entry clock source */ + +#define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000) /*!< HSE divider for PLL entry */ + +/*!< PLLMUL configuration */ +#define RCC_CFGR_PLLMULL ((uint32_t)0x003C0000) /*!< PLLMUL[3:0] bits (PLL multiplication factor) */ +#define RCC_CFGR_PLLMULL_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define RCC_CFGR_PLLMULL_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define RCC_CFGR_PLLMULL_2 ((uint32_t)0x00100000) /*!< Bit 2 */ +#define RCC_CFGR_PLLMULL_3 ((uint32_t)0x00200000) /*!< Bit 3 */ + +#define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ +#define RCC_CFGR_PLLSRC_PREDIV1 ((uint32_t)0x00010000) /*!< PREDIV1 clock selected as PLL entry clock source */ + +#define RCC_CFGR_PLLXTPRE_PREDIV1 ((uint32_t)0x00000000) /*!< PREDIV1 clock not divided for PLL entry */ +#define RCC_CFGR_PLLXTPRE_PREDIV1_Div2 ((uint32_t)0x00020000) /*!< PREDIV1 clock divided by 2 for PLL entry */ + +#define RCC_CFGR_PLLMULL2 ((uint32_t)0x00000000) /*!< PLL input clock*2 */ +#define RCC_CFGR_PLLMULL3 ((uint32_t)0x00040000) /*!< PLL input clock*3 */ +#define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock*4 */ +#define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock*5 */ +#define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock*6 */ +#define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock*7 */ +#define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock*8 */ +#define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock*9 */ +#define RCC_CFGR_PLLMULL10 ((uint32_t)0x00200000) /*!< PLL input clock10 */ +#define RCC_CFGR_PLLMULL11 ((uint32_t)0x00240000) /*!< PLL input clock*11 */ +#define RCC_CFGR_PLLMULL12 ((uint32_t)0x00280000) /*!< PLL input clock*12 */ +#define RCC_CFGR_PLLMULL13 ((uint32_t)0x002C0000) /*!< PLL input clock*13 */ +#define RCC_CFGR_PLLMULL14 ((uint32_t)0x00300000) /*!< PLL input clock*14 */ +#define RCC_CFGR_PLLMULL15 ((uint32_t)0x00340000) /*!< PLL input clock*15 */ +#define RCC_CFGR_PLLMULL16 ((uint32_t)0x00380000) /*!< PLL input clock*16 */ + +/*!< USB configuration */ +#define RCC_CFGR_USBPRE ((uint32_t)0x00400000) /*!< USB prescaler */ + +/*!< I2S configuration */ +#define RCC_CFGR_I2SSRC ((uint32_t)0x00800000) /*!< I2S external clock source selection */ + +/*!< MCO configuration */ +#define RCC_CFGR_MCO ((uint32_t)0x07000000) /*!< MCO[2:0] bits (Microcontroller Clock Output) */ +#define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ +#define RCC_CFGR_MCO_LSI ((uint32_t)0x02000000) /*!< LSI clock selected as MCO source */ +#define RCC_CFGR_MCO_LSE ((uint32_t)0x03000000) /*!< LSE clock selected as MCO source */ +#define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ +#define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ +#define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ +#define RCC_CFGR_MCO_PLL ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ + +#define RCC_CFGR_MCOF ((uint32_t)0x10000000) /*!< Microcontroller Clock Output Flag */ + +#define RCC_CFGR_MCO_PRE ((uint32_t)0x70000000) /*!< MCO prescaler */ +#define RCC_CFGR_MCO_PRE_1 ((uint32_t)0x00000000) /*!< MCO is divided by 1 */ +#define RCC_CFGR_MCO_PRE_2 ((uint32_t)0x10000000) /*!< MCO is divided by 2 */ +#define RCC_CFGR_MCO_PRE_4 ((uint32_t)0x20000000) /*!< MCO is divided by 4 */ +#define RCC_CFGR_MCO_PRE_8 ((uint32_t)0x30000000) /*!< MCO is divided by 8 */ +#define RCC_CFGR_MCO_PRE_16 ((uint32_t)0x40000000) /*!< MCO is divided by 16 */ +#define RCC_CFGR_MCO_PRE_32 ((uint32_t)0x50000000) /*!< MCO is divided by 32 */ +#define RCC_CFGR_MCO_PRE_64 ((uint32_t)0x60000000) /*!< MCO is divided by 64 */ +#define RCC_CFGR_MCO_PRE_128 ((uint32_t)0x70000000) /*!< MCO is divided by 128 */ + +#define RCC_CFGR_PLLNODIV ((uint32_t)0x80000000) /*!< PLL is not divided to MCO */ + +/********************* Bit definition for RCC_CIR register ********************/ +#define RCC_CIR_LSIRDYF ((uint32_t)0x00000001) /*!< LSI Ready Interrupt flag */ +#define RCC_CIR_LSERDYF ((uint32_t)0x00000002) /*!< LSE Ready Interrupt flag */ +#define RCC_CIR_HSIRDYF ((uint32_t)0x00000004) /*!< HSI Ready Interrupt flag */ +#define RCC_CIR_HSERDYF ((uint32_t)0x00000008) /*!< HSE Ready Interrupt flag */ +#define RCC_CIR_PLLRDYF ((uint32_t)0x00000010) /*!< PLL Ready Interrupt flag */ +#define RCC_CIR_CSSF ((uint32_t)0x00000080) /*!< Clock Security System Interrupt flag */ +#define RCC_CIR_LSIRDYIE ((uint32_t)0x00000100) /*!< LSI Ready Interrupt Enable */ +#define RCC_CIR_LSERDYIE ((uint32_t)0x00000200) /*!< LSE Ready Interrupt Enable */ +#define RCC_CIR_HSIRDYIE ((uint32_t)0x00000400) /*!< HSI Ready Interrupt Enable */ +#define RCC_CIR_HSERDYIE ((uint32_t)0x00000800) /*!< HSE Ready Interrupt Enable */ +#define RCC_CIR_PLLRDYIE ((uint32_t)0x00001000) /*!< PLL Ready Interrupt Enable */ +#define RCC_CIR_LSIRDYC ((uint32_t)0x00010000) /*!< LSI Ready Interrupt Clear */ +#define RCC_CIR_LSERDYC ((uint32_t)0x00020000) /*!< LSE Ready Interrupt Clear */ +#define RCC_CIR_HSIRDYC ((uint32_t)0x00040000) /*!< HSI Ready Interrupt Clear */ +#define RCC_CIR_HSERDYC ((uint32_t)0x00080000) /*!< HSE Ready Interrupt Clear */ +#define RCC_CIR_PLLRDYC ((uint32_t)0x00100000) /*!< PLL Ready Interrupt Clear */ +#define RCC_CIR_CSSC ((uint32_t)0x00800000) /*!< Clock Security System Interrupt Clear */ + +/****************** Bit definition for RCC_APB2RSTR register *****************/ +#define RCC_APB2RSTR_SYSCFGRST ((uint32_t)0x00000001) /*!< SYSCFG reset */ +#define RCC_APB2RSTR_TIM1RST ((uint32_t)0x00000200) /*!< TIM1 reset */ +#define RCC_APB2RSTR_SPI1RST ((uint32_t)0x00001000) /*!< SPI1 reset */ +#define RCC_APB2RSTR_TIM8RST ((uint32_t)0x00000200) /*!< TIM8 reset */ +#define RCC_APB2RSTR_USART1RST ((uint32_t)0x00004000) /*!< USART1 reset */ +#define RCC_APB2RSTR_TIM15RST ((uint32_t)0x00010000) /*!< TIM15 reset */ +#define RCC_APB2RSTR_TIM16RST ((uint32_t)0x00020000) /*!< TIM16 reset */ +#define RCC_APB2RSTR_TIM17RST ((uint32_t)0x00040000) /*!< TIM17 reset */ +#define RCC_APB2RSTR_HRTIM1RST ((uint32_t)0x20000000) /*!< HRTIM1 reset */ + +/****************** Bit definition for RCC_APB1RSTR register ******************/ +#define RCC_APB1RSTR_TIM2RST ((uint32_t)0x00000001) /*!< Timer 2 reset */ +#define RCC_APB1RSTR_TIM3RST ((uint32_t)0x00000002) /*!< Timer 3 reset */ +#define RCC_APB1RSTR_TIM4RST ((uint32_t)0x00000004) /*!< Timer 4 reset */ +#define RCC_APB1RSTR_TIM6RST ((uint32_t)0x00000010) /*!< Timer 6 reset */ +#define RCC_APB1RSTR_TIM7RST ((uint32_t)0x00000020) /*!< Timer 7 reset */ +#define RCC_APB1RSTR_WWDGRST ((uint32_t)0x00000800) /*!< Window Watchdog reset */ +#define RCC_APB1RSTR_SPI2RST ((uint32_t)0x00004000) /*!< SPI2 reset */ +#define RCC_APB1RSTR_SPI3RST ((uint32_t)0x00008000) /*!< SPI3 reset */ +#define RCC_APB1RSTR_USART2RST ((uint32_t)0x00020000) /*!< USART 2 reset */ +#define RCC_APB1RSTR_USART3RST ((uint32_t)0x00040000) /*!< USART 3 reset */ +#define RCC_APB1RSTR_UART4RST ((uint32_t)0x00080000) /*!< UART 4 reset */ +#define RCC_APB1RSTR_UART5RST ((uint32_t)0x00100000) /*!< UART 5 reset */ +#define RCC_APB1RSTR_I2C1RST ((uint32_t)0x00200000) /*!< I2C 1 reset */ +#define RCC_APB1RSTR_I2C2RST ((uint32_t)0x00400000) /*!< I2C 2 reset */ +#define RCC_APB1RSTR_USBRST ((uint32_t)0x00800000) /*!< USB reset */ +#define RCC_APB1RSTR_CAN1RST ((uint32_t)0x02000000) /*!< CAN reset */ +#define RCC_APB1RSTR_PWRRST ((uint32_t)0x10000000) /*!< PWR reset */ +#define RCC_APB1RSTR_DAC1RST ((uint32_t)0x20000000) /*!< DAC 1 reset */ +#define RCC_APB1RSTR_I2C3RST ((uint32_t)0x40000000) /*!< I2C 3 reset */ +#define RCC_APB1RSTR_DAC2RST ((uint32_t)0x04000000) /*!< DAC 2 reset */ +#define RCC_APB1RSTR_DACRST RCC_APB1RSTR_DAC1RST /*!< DAC reset */ + +/****************** Bit definition for RCC_AHBENR register ******************/ +#define RCC_AHBENR_DMA1EN ((uint32_t)0x00000001) /*!< DMA1 clock enable */ +#define RCC_AHBENR_DMA2EN ((uint32_t)0x00000002) /*!< DMA2 clock enable */ +#define RCC_AHBENR_SRAMEN ((uint32_t)0x00000004) /*!< SRAM interface clock enable */ +#define RCC_AHBENR_FLITFEN ((uint32_t)0x00000010) /*!< FLITF clock enable */ +#define RCC_AHBENR_CRCEN ((uint32_t)0x00000040) /*!< CRC clock enable */ +#define RCC_AHBENR_GPIOAEN ((uint32_t)0x00020000) /*!< GPIOA clock enable */ +#define RCC_AHBENR_GPIOBEN ((uint32_t)0x00040000) /*!< GPIOB clock enable */ +#define RCC_AHBENR_GPIOCEN ((uint32_t)0x00080000) /*!< GPIOC clock enable */ +#define RCC_AHBENR_GPIODEN ((uint32_t)0x00100000) /*!< GPIOD clock enable */ +#define RCC_AHBENR_GPIOEEN ((uint32_t)0x00200000) /*!< GPIOE clock enable */ +#define RCC_AHBENR_GPIOFEN ((uint32_t)0x00400000) /*!< GPIOF clock enable */ +#define RCC_AHBENR_TSEN ((uint32_t)0x01000000) /*!< TS clock enable */ +#define RCC_AHBENR_ADC12EN ((uint32_t)0x10000000) /*!< ADC1/ ADC2 clock enable */ +#define RCC_AHBENR_ADC34EN ((uint32_t)0x20000000) /*!< ADC1/ ADC2 clock enable */ + +/***************** Bit definition for RCC_APB2ENR register ******************/ +#define RCC_APB2ENR_SYSCFGEN ((uint32_t)0x00000001) /*!< SYSCFG clock enable */ +#define RCC_APB2ENR_TIM1EN ((uint32_t)0x00000800) /*!< TIM1 clock enable */ +#define RCC_APB2ENR_SPI1EN ((uint32_t)0x00001000) /*!< SPI1 clock enable */ +#define RCC_APB2ENR_TIM8EN ((uint32_t)0x00002000) /*!< TIM8 clock enable */ +#define RCC_APB2ENR_USART1EN ((uint32_t)0x00004000) /*!< USART1 clock enable */ +#define RCC_APB2ENR_TIM15EN ((uint32_t)0x00010000) /*!< TIM15 clock enable */ +#define RCC_APB2ENR_TIM16EN ((uint32_t)0x00020000) /*!< TIM16 clock enable */ +#define RCC_APB2ENR_TIM17EN ((uint32_t)0x00040000) /*!< TIM17 clock enable */ +#define RCC_APB2ENR_HRTIM1 ((uint32_t)0x20000000) /*!< HRTIM1 clock enable */ + +/****************** Bit definition for RCC_APB1ENR register ******************/ +#define RCC_APB1ENR_TIM2EN ((uint32_t)0x00000001) /*!< Timer 2 clock enable */ +#define RCC_APB1ENR_TIM3EN ((uint32_t)0x00000002) /*!< Timer 3 clock enable */ +#define RCC_APB1ENR_TIM4EN ((uint32_t)0x00000004) /*!< Timer 4 clock enable */ +#define RCC_APB1ENR_TIM6EN ((uint32_t)0x00000010) /*!< Timer 6 clock enable */ +#define RCC_APB1ENR_TIM7EN ((uint32_t)0x00000020) /*!< Timer 7 clock enable */ +#define RCC_APB1ENR_WWDGEN ((uint32_t)0x00000800) /*!< Window Watchdog clock enable */ +#define RCC_APB1ENR_SPI2EN ((uint32_t)0x00004000) /*!< SPI2 clock enable */ +#define RCC_APB1ENR_SPI3EN ((uint32_t)0x00008000) /*!< SPI3 clock enable */ +#define RCC_APB1ENR_USART2EN ((uint32_t)0x00020000) /*!< USART 2 clock enable */ +#define RCC_APB1ENR_USART3EN ((uint32_t)0x00040000) /*!< USART 3 clock enable */ +#define RCC_APB1ENR_UART4EN ((uint32_t)0x00080000) /*!< UART 4 clock enable */ +#define RCC_APB1ENR_UART5EN ((uint32_t)0x00100000) /*!< UART 5 clock enable */ +#define RCC_APB1ENR_I2C1EN ((uint32_t)0x00200000) /*!< I2C 1 clock enable */ +#define RCC_APB1ENR_I2C2EN ((uint32_t)0x00400000) /*!< I2C 2 clock enable */ +#define RCC_APB1ENR_USBEN ((uint32_t)0x00800000) /*!< USB clock enable */ +#define RCC_APB1ENR_CAN1EN ((uint32_t)0x02000000) /*!< CAN clock enable */ +#define RCC_APB1ENR_DAC2EN ((uint32_t)0x04000000) /*!< DAC 2 clock enable */ +#define RCC_APB1ENR_PWREN ((uint32_t)0x10000000) /*!< PWR clock enable */ +#define RCC_APB1ENR_DAC1EN ((uint32_t)0x20000000) /*!< DAC clock enable */ +#define RCC_APB1ENR_I2C3EN ((uint32_t)0x40000000) /*!< I2C 3 clock enable */ +#define RCC_APB1ENR_DACEN RCC_APB1ENR_DAC1EN + +/******************** Bit definition for RCC_BDCR register ******************/ +#define RCC_BDCR_LSEON ((uint32_t)0x00000001) /*!< External Low Speed oscillator enable */ +#define RCC_BDCR_LSERDY ((uint32_t)0x00000002) /*!< External Low Speed oscillator Ready */ +#define RCC_BDCR_LSEBYP ((uint32_t)0x00000004) /*!< External Low Speed oscillator Bypass */ + +#define RCC_BDCR_LSEDRV ((uint32_t)0x00000018) /*!< LSEDRV[1:0] bits (LSE Osc. drive capability) */ +#define RCC_BDCR_LSEDRV_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define RCC_BDCR_LSEDRV_1 ((uint32_t)0x00000010) /*!< Bit 1 */ + + +#define RCC_BDCR_RTCSEL ((uint32_t)0x00000300) /*!< RTCSEL[1:0] bits (RTC clock source selection) */ +#define RCC_BDCR_RTCSEL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define RCC_BDCR_RTCSEL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +/*!< RTC configuration */ +#define RCC_BDCR_RTCSEL_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ +#define RCC_BDCR_RTCSEL_LSE ((uint32_t)0x00000100) /*!< LSE oscillator clock used as RTC clock */ +#define RCC_BDCR_RTCSEL_LSI ((uint32_t)0x00000200) /*!< LSI oscillator clock used as RTC clock */ +#define RCC_BDCR_RTCSEL_HSE ((uint32_t)0x00000300) /*!< HSE oscillator clock divided by 32 used as RTC clock */ + +#define RCC_BDCR_RTCEN ((uint32_t)0x00008000) /*!< RTC clock enable */ +#define RCC_BDCR_BDRST ((uint32_t)0x00010000) /*!< Backup domain software reset */ + +/******************** Bit definition for RCC_CSR register *******************/ +#define RCC_CSR_LSION ((uint32_t)0x00000001) /*!< Internal Low Speed oscillator enable */ +#define RCC_CSR_LSIRDY ((uint32_t)0x00000002) /*!< Internal Low Speed oscillator Ready */ +#define RCC_CSR_RMVF ((uint32_t)0x01000000) /*!< Remove reset flag */ +#define RCC_CSR_OBLRSTF ((uint32_t)0x02000000) /*!< OBL reset flag */ +#define RCC_CSR_PINRSTF ((uint32_t)0x04000000) /*!< PIN reset flag */ +#define RCC_CSR_PORRSTF ((uint32_t)0x08000000) /*!< POR/PDR reset flag */ +#define RCC_CSR_SFTRSTF ((uint32_t)0x10000000) /*!< Software Reset flag */ +#define RCC_CSR_IWDGRSTF ((uint32_t)0x20000000) /*!< Independent Watchdog reset flag */ +#define RCC_CSR_WWDGRSTF ((uint32_t)0x40000000) /*!< Window watchdog reset flag */ +#define RCC_CSR_LPWRRSTF ((uint32_t)0x80000000) /*!< Low-Power reset flag */ + +/******************* Bit definition for RCC_AHBRSTR register ****************/ +#define RCC_AHBRSTR_GPIOARST ((uint32_t)0x00020000) /*!< GPIOA reset */ +#define RCC_AHBRSTR_GPIOBRST ((uint32_t)0x00040000) /*!< GPIOB reset */ +#define RCC_AHBRSTR_GPIOCRST ((uint32_t)0x00080000) /*!< GPIOC reset */ +#define RCC_AHBRSTR_GPIODRST ((uint32_t)0x00010000) /*!< GPIOD reset */ +#define RCC_AHBRSTR_GPIOFRST ((uint32_t)0x00040000) /*!< GPIOF reset */ +#define RCC_AHBRSTR_TSRST ((uint32_t)0x00100000) /*!< TS reset */ +#define RCC_AHBRSTR_ADC12RST ((uint32_t)0x01000000) /*!< ADC1 & ADC2 reset */ +#define RCC_AHBRSTR_ADC34RST ((uint32_t)0x02000000) /*!< ADC3 & ADC4 reset */ + +/******************* Bit definition for RCC_CFGR2 register ******************/ +/*!< PREDIV1 configuration */ +#define RCC_CFGR2_PREDIV1 ((uint32_t)0x0000000F) /*!< PREDIV1[3:0] bits */ +#define RCC_CFGR2_PREDIV1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define RCC_CFGR2_PREDIV1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define RCC_CFGR2_PREDIV1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define RCC_CFGR2_PREDIV1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define RCC_CFGR2_PREDIV1_DIV1 ((uint32_t)0x00000000) /*!< PREDIV1 input clock not divided */ +#define RCC_CFGR2_PREDIV1_DIV2 ((uint32_t)0x00000001) /*!< PREDIV1 input clock divided by 2 */ +#define RCC_CFGR2_PREDIV1_DIV3 ((uint32_t)0x00000002) /*!< PREDIV1 input clock divided by 3 */ +#define RCC_CFGR2_PREDIV1_DIV4 ((uint32_t)0x00000003) /*!< PREDIV1 input clock divided by 4 */ +#define RCC_CFGR2_PREDIV1_DIV5 ((uint32_t)0x00000004) /*!< PREDIV1 input clock divided by 5 */ +#define RCC_CFGR2_PREDIV1_DIV6 ((uint32_t)0x00000005) /*!< PREDIV1 input clock divided by 6 */ +#define RCC_CFGR2_PREDIV1_DIV7 ((uint32_t)0x00000006) /*!< PREDIV1 input clock divided by 7 */ +#define RCC_CFGR2_PREDIV1_DIV8 ((uint32_t)0x00000007) /*!< PREDIV1 input clock divided by 8 */ +#define RCC_CFGR2_PREDIV1_DIV9 ((uint32_t)0x00000008) /*!< PREDIV1 input clock divided by 9 */ +#define RCC_CFGR2_PREDIV1_DIV10 ((uint32_t)0x00000009) /*!< PREDIV1 input clock divided by 10 */ +#define RCC_CFGR2_PREDIV1_DIV11 ((uint32_t)0x0000000A) /*!< PREDIV1 input clock divided by 11 */ +#define RCC_CFGR2_PREDIV1_DIV12 ((uint32_t)0x0000000B) /*!< PREDIV1 input clock divided by 12 */ +#define RCC_CFGR2_PREDIV1_DIV13 ((uint32_t)0x0000000C) /*!< PREDIV1 input clock divided by 13 */ +#define RCC_CFGR2_PREDIV1_DIV14 ((uint32_t)0x0000000D) /*!< PREDIV1 input clock divided by 14 */ +#define RCC_CFGR2_PREDIV1_DIV15 ((uint32_t)0x0000000E) /*!< PREDIV1 input clock divided by 15 */ +#define RCC_CFGR2_PREDIV1_DIV16 ((uint32_t)0x0000000F) /*!< PREDIV1 input clock divided by 16 */ + +/*!< ADCPRE12 configuration */ +#define RCC_CFGR2_ADCPRE12 ((uint32_t)0x000001F0) /*!< ADCPRE12[8:4] bits */ +#define RCC_CFGR2_ADCPRE12_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define RCC_CFGR2_ADCPRE12_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define RCC_CFGR2_ADCPRE12_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define RCC_CFGR2_ADCPRE12_3 ((uint32_t)0x00000080) /*!< Bit 3 */ +#define RCC_CFGR2_ADCPRE12_4 ((uint32_t)0x00000100) /*!< Bit 4 */ + +#define RCC_CFGR2_ADCPRE12_NO ((uint32_t)0x00000000) /*!< ADC12 clock disabled, ADC12 can use AHB clock */ +#define RCC_CFGR2_ADCPRE12_DIV1 ((uint32_t)0x00000100) /*!< ADC12 PLL clock divided by 1 */ +#define RCC_CFGR2_ADCPRE12_DIV2 ((uint32_t)0x00000110) /*!< ADC12 PLL clock divided by 2 */ +#define RCC_CFGR2_ADCPRE12_DIV4 ((uint32_t)0x00000120) /*!< ADC12 PLL clock divided by 4 */ +#define RCC_CFGR2_ADCPRE12_DIV6 ((uint32_t)0x00000130) /*!< ADC12 PLL clock divided by 6 */ +#define RCC_CFGR2_ADCPRE12_DIV8 ((uint32_t)0x00000140) /*!< ADC12 PLL clock divided by 8 */ +#define RCC_CFGR2_ADCPRE12_DIV10 ((uint32_t)0x00000150) /*!< ADC12 PLL clock divided by 10 */ +#define RCC_CFGR2_ADCPRE12_DIV12 ((uint32_t)0x00000160) /*!< ADC12 PLL clock divided by 12 */ +#define RCC_CFGR2_ADCPRE12_DIV16 ((uint32_t)0x00000170) /*!< ADC12 PLL clock divided by 16 */ +#define RCC_CFGR2_ADCPRE12_DIV32 ((uint32_t)0x00000180) /*!< ADC12 PLL clock divided by 32 */ +#define RCC_CFGR2_ADCPRE12_DIV64 ((uint32_t)0x00000190) /*!< ADC12 PLL clock divided by 64 */ +#define RCC_CFGR2_ADCPRE12_DIV128 ((uint32_t)0x000001A0) /*!< ADC12 PLL clock divided by 128 */ +#define RCC_CFGR2_ADCPRE12_DIV256 ((uint32_t)0x000001B0) /*!< ADC12 PLL clock divided by 256 */ + +/*!< ADCPRE34 configuration */ +#define RCC_CFGR2_ADCPRE34 ((uint32_t)0x00003E00) /*!< ADCPRE34[13:5] bits */ +#define RCC_CFGR2_ADCPRE34_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define RCC_CFGR2_ADCPRE34_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define RCC_CFGR2_ADCPRE34_2 ((uint32_t)0x00000800) /*!< Bit 2 */ +#define RCC_CFGR2_ADCPRE34_3 ((uint32_t)0x00001000) /*!< Bit 3 */ +#define RCC_CFGR2_ADCPRE34_4 ((uint32_t)0x00002000) /*!< Bit 4 */ + +#define RCC_CFGR2_ADCPRE34_NO ((uint32_t)0x00000000) /*!< ADC34 clock disabled, ADC34 can use AHB clock */ +#define RCC_CFGR2_ADCPRE34_DIV1 ((uint32_t)0x00002000) /*!< ADC34 PLL clock divided by 1 */ +#define RCC_CFGR2_ADCPRE34_DIV2 ((uint32_t)0x00002200) /*!< ADC34 PLL clock divided by 2 */ +#define RCC_CFGR2_ADCPRE34_DIV4 ((uint32_t)0x00002400) /*!< ADC34 PLL clock divided by 4 */ +#define RCC_CFGR2_ADCPRE34_DIV6 ((uint32_t)0x00002600) /*!< ADC34 PLL clock divided by 6 */ +#define RCC_CFGR2_ADCPRE34_DIV8 ((uint32_t)0x00002800) /*!< ADC34 PLL clock divided by 8 */ +#define RCC_CFGR2_ADCPRE34_DIV10 ((uint32_t)0x00002A00) /*!< ADC34 PLL clock divided by 10 */ +#define RCC_CFGR2_ADCPRE34_DIV12 ((uint32_t)0x00002C00) /*!< ADC34 PLL clock divided by 12 */ +#define RCC_CFGR2_ADCPRE34_DIV16 ((uint32_t)0x00002E00) /*!< ADC34 PLL clock divided by 16 */ +#define RCC_CFGR2_ADCPRE34_DIV32 ((uint32_t)0x00003000) /*!< ADC34 PLL clock divided by 32 */ +#define RCC_CFGR2_ADCPRE34_DIV64 ((uint32_t)0x00003200) /*!< ADC34 PLL clock divided by 64 */ +#define RCC_CFGR2_ADCPRE34_DIV128 ((uint32_t)0x00003400) /*!< ADC34 PLL clock divided by 128 */ +#define RCC_CFGR2_ADCPRE34_DIV256 ((uint32_t)0x00003600) /*!< ADC34 PLL clock divided by 256 */ + +/******************* Bit definition for RCC_CFGR3 register ******************/ +#define RCC_CFGR3_USART1SW ((uint32_t)0x00000003) /*!< USART1SW[1:0] bits */ +#define RCC_CFGR3_USART1SW_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define RCC_CFGR3_USART1SW_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + +#define RCC_CFGR3_I2CSW ((uint32_t)0x00000070) /*!< I2CSW bits */ +#define RCC_CFGR3_I2C1SW ((uint32_t)0x00000010) /*!< I2C1SW bits */ +#define RCC_CFGR3_I2C2SW ((uint32_t)0x00000020) /*!< I2C2SW bits */ +#define RCC_CFGR3_I2C3SW ((uint32_t)0x00000040) /*!< I2C3SW bits */ + +#define RCC_CFGR3_TIMSW ((uint32_t)0x00002F00) /*!< TIMSW bits */ +#define RCC_CFGR3_TIM1SW ((uint32_t)0x00000100) /*!< TIM1SW bits */ +#define RCC_CFGR3_TIM8SW ((uint32_t)0x00000200) /*!< TIM8SW bits */ +#define RCC_CFGR3_TIM15SW ((uint32_t)0x00000400) /*!< TIM15SW bits */ +#define RCC_CFGR3_TIM16SW ((uint32_t)0x00000800) /*!< TIM16SW bits */ +#define RCC_CFGR3_TIM17SW ((uint32_t)0x00002000) /*!< TIM17SW bits */ + +#define RCC_CFGR3_HRTIM1SW ((uint32_t)0x00001000) /*!< HRTIM1SW bits */ + +#define RCC_CFGR3_USART2SW ((uint32_t)0x00030000) /*!< USART2SW[1:0] bits */ +#define RCC_CFGR3_USART2SW_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define RCC_CFGR3_USART2SW_1 ((uint32_t)0x00020000) /*!< Bit 1 */ + +#define RCC_CFGR3_USART3SW ((uint32_t)0x000C0000) /*!< USART3SW[1:0] bits */ +#define RCC_CFGR3_USART3SW_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define RCC_CFGR3_USART3SW_1 ((uint32_t)0x00080000) /*!< Bit 1 */ + +#define RCC_CFGR3_UART4SW ((uint32_t)0x00300000) /*!< UART4SW[1:0] bits */ +#define RCC_CFGR3_UART4SW_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define RCC_CFGR3_UART4SW_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +#define RCC_CFGR3_UART5SW ((uint32_t)0x00C00000) /*!< UART5SW[1:0] bits */ +#define RCC_CFGR3_UART5SW_0 ((uint32_t)0x00400000) /*!< Bit 0 */ +#define RCC_CFGR3_UART5SW_1 ((uint32_t)0x00800000) /*!< Bit 1 */ + +/******************************************************************************/ +/* */ +/* Real-Time Clock (RTC) */ +/* */ +/******************************************************************************/ +/******************** Bits definition for RTC_TR register *******************/ +#define RTC_TR_PM ((uint32_t)0x00400000) +#define RTC_TR_HT ((uint32_t)0x00300000) +#define RTC_TR_HT_0 ((uint32_t)0x00100000) +#define RTC_TR_HT_1 ((uint32_t)0x00200000) +#define RTC_TR_HU ((uint32_t)0x000F0000) +#define RTC_TR_HU_0 ((uint32_t)0x00010000) +#define RTC_TR_HU_1 ((uint32_t)0x00020000) +#define RTC_TR_HU_2 ((uint32_t)0x00040000) +#define RTC_TR_HU_3 ((uint32_t)0x00080000) +#define RTC_TR_MNT ((uint32_t)0x00007000) +#define RTC_TR_MNT_0 ((uint32_t)0x00001000) +#define RTC_TR_MNT_1 ((uint32_t)0x00002000) +#define RTC_TR_MNT_2 ((uint32_t)0x00004000) +#define RTC_TR_MNU ((uint32_t)0x00000F00) +#define RTC_TR_MNU_0 ((uint32_t)0x00000100) +#define RTC_TR_MNU_1 ((uint32_t)0x00000200) +#define RTC_TR_MNU_2 ((uint32_t)0x00000400) +#define RTC_TR_MNU_3 ((uint32_t)0x00000800) +#define RTC_TR_ST ((uint32_t)0x00000070) +#define RTC_TR_ST_0 ((uint32_t)0x00000010) +#define RTC_TR_ST_1 ((uint32_t)0x00000020) +#define RTC_TR_ST_2 ((uint32_t)0x00000040) +#define RTC_TR_SU ((uint32_t)0x0000000F) +#define RTC_TR_SU_0 ((uint32_t)0x00000001) +#define RTC_TR_SU_1 ((uint32_t)0x00000002) +#define RTC_TR_SU_2 ((uint32_t)0x00000004) +#define RTC_TR_SU_3 ((uint32_t)0x00000008) + +/******************** Bits definition for RTC_DR register *******************/ +#define RTC_DR_YT ((uint32_t)0x00F00000) +#define RTC_DR_YT_0 ((uint32_t)0x00100000) +#define RTC_DR_YT_1 ((uint32_t)0x00200000) +#define RTC_DR_YT_2 ((uint32_t)0x00400000) +#define RTC_DR_YT_3 ((uint32_t)0x00800000) +#define RTC_DR_YU ((uint32_t)0x000F0000) +#define RTC_DR_YU_0 ((uint32_t)0x00010000) +#define RTC_DR_YU_1 ((uint32_t)0x00020000) +#define RTC_DR_YU_2 ((uint32_t)0x00040000) +#define RTC_DR_YU_3 ((uint32_t)0x00080000) +#define RTC_DR_WDU ((uint32_t)0x0000E000) +#define RTC_DR_WDU_0 ((uint32_t)0x00002000) +#define RTC_DR_WDU_1 ((uint32_t)0x00004000) +#define RTC_DR_WDU_2 ((uint32_t)0x00008000) +#define RTC_DR_MT ((uint32_t)0x00001000) +#define RTC_DR_MU ((uint32_t)0x00000F00) +#define RTC_DR_MU_0 ((uint32_t)0x00000100) +#define RTC_DR_MU_1 ((uint32_t)0x00000200) +#define RTC_DR_MU_2 ((uint32_t)0x00000400) +#define RTC_DR_MU_3 ((uint32_t)0x00000800) +#define RTC_DR_DT ((uint32_t)0x00000030) +#define RTC_DR_DT_0 ((uint32_t)0x00000010) +#define RTC_DR_DT_1 ((uint32_t)0x00000020) +#define RTC_DR_DU ((uint32_t)0x0000000F) +#define RTC_DR_DU_0 ((uint32_t)0x00000001) +#define RTC_DR_DU_1 ((uint32_t)0x00000002) +#define RTC_DR_DU_2 ((uint32_t)0x00000004) +#define RTC_DR_DU_3 ((uint32_t)0x00000008) + +/******************** Bits definition for RTC_CR register *******************/ +#define RTC_CR_COE ((uint32_t)0x00800000) +#define RTC_CR_OSEL ((uint32_t)0x00600000) +#define RTC_CR_OSEL_0 ((uint32_t)0x00200000) +#define RTC_CR_OSEL_1 ((uint32_t)0x00400000) +#define RTC_CR_POL ((uint32_t)0x00100000) +#define RTC_CR_COSEL ((uint32_t)0x00080000) +#define RTC_CR_BCK ((uint32_t)0x00040000) +#define RTC_CR_SUB1H ((uint32_t)0x00020000) +#define RTC_CR_ADD1H ((uint32_t)0x00010000) +#define RTC_CR_TSIE ((uint32_t)0x00008000) +#define RTC_CR_WUTIE ((uint32_t)0x00004000) +#define RTC_CR_ALRBIE ((uint32_t)0x00002000) +#define RTC_CR_ALRAIE ((uint32_t)0x00001000) +#define RTC_CR_TSE ((uint32_t)0x00000800) +#define RTC_CR_WUTE ((uint32_t)0x00000400) +#define RTC_CR_ALRBE ((uint32_t)0x00000200) +#define RTC_CR_ALRAE ((uint32_t)0x00000100) +#define RTC_CR_FMT ((uint32_t)0x00000040) +#define RTC_CR_BYPSHAD ((uint32_t)0x00000020) +#define RTC_CR_REFCKON ((uint32_t)0x00000010) +#define RTC_CR_TSEDGE ((uint32_t)0x00000008) +#define RTC_CR_WUCKSEL ((uint32_t)0x00000007) +#define RTC_CR_WUCKSEL_0 ((uint32_t)0x00000001) +#define RTC_CR_WUCKSEL_1 ((uint32_t)0x00000002) +#define RTC_CR_WUCKSEL_2 ((uint32_t)0x00000004) + +/******************** Bits definition for RTC_ISR register ******************/ +#define RTC_ISR_RECALPF ((uint32_t)0x00010000) +#define RTC_ISR_TAMP3F ((uint32_t)0x00008000) +#define RTC_ISR_TAMP2F ((uint32_t)0x00004000) +#define RTC_ISR_TAMP1F ((uint32_t)0x00002000) +#define RTC_ISR_TSOVF ((uint32_t)0x00001000) +#define RTC_ISR_TSF ((uint32_t)0x00000800) +#define RTC_ISR_WUTF ((uint32_t)0x00000400) +#define RTC_ISR_ALRBF ((uint32_t)0x00000200) +#define RTC_ISR_ALRAF ((uint32_t)0x00000100) +#define RTC_ISR_INIT ((uint32_t)0x00000080) +#define RTC_ISR_INITF ((uint32_t)0x00000040) +#define RTC_ISR_RSF ((uint32_t)0x00000020) +#define RTC_ISR_INITS ((uint32_t)0x00000010) +#define RTC_ISR_SHPF ((uint32_t)0x00000008) +#define RTC_ISR_WUTWF ((uint32_t)0x00000004) +#define RTC_ISR_ALRBWF ((uint32_t)0x00000002) +#define RTC_ISR_ALRAWF ((uint32_t)0x00000001) + +/******************** Bits definition for RTC_PRER register *****************/ +#define RTC_PRER_PREDIV_A ((uint32_t)0x007F0000) +#define RTC_PRER_PREDIV_S ((uint32_t)0x00007FFF) + +/******************** Bits definition for RTC_WUTR register *****************/ +#define RTC_WUTR_WUT ((uint32_t)0x0000FFFF) + +/******************** Bits definition for RTC_ALRMAR register ***************/ +#define RTC_ALRMAR_MSK4 ((uint32_t)0x80000000) +#define RTC_ALRMAR_WDSEL ((uint32_t)0x40000000) +#define RTC_ALRMAR_DT ((uint32_t)0x30000000) +#define RTC_ALRMAR_DT_0 ((uint32_t)0x10000000) +#define RTC_ALRMAR_DT_1 ((uint32_t)0x20000000) +#define RTC_ALRMAR_DU ((uint32_t)0x0F000000) +#define RTC_ALRMAR_DU_0 ((uint32_t)0x01000000) +#define RTC_ALRMAR_DU_1 ((uint32_t)0x02000000) +#define RTC_ALRMAR_DU_2 ((uint32_t)0x04000000) +#define RTC_ALRMAR_DU_3 ((uint32_t)0x08000000) +#define RTC_ALRMAR_MSK3 ((uint32_t)0x00800000) +#define RTC_ALRMAR_PM ((uint32_t)0x00400000) +#define RTC_ALRMAR_HT ((uint32_t)0x00300000) +#define RTC_ALRMAR_HT_0 ((uint32_t)0x00100000) +#define RTC_ALRMAR_HT_1 ((uint32_t)0x00200000) +#define RTC_ALRMAR_HU ((uint32_t)0x000F0000) +#define RTC_ALRMAR_HU_0 ((uint32_t)0x00010000) +#define RTC_ALRMAR_HU_1 ((uint32_t)0x00020000) +#define RTC_ALRMAR_HU_2 ((uint32_t)0x00040000) +#define RTC_ALRMAR_HU_3 ((uint32_t)0x00080000) +#define RTC_ALRMAR_MSK2 ((uint32_t)0x00008000) +#define RTC_ALRMAR_MNT ((uint32_t)0x00007000) +#define RTC_ALRMAR_MNT_0 ((uint32_t)0x00001000) +#define RTC_ALRMAR_MNT_1 ((uint32_t)0x00002000) +#define RTC_ALRMAR_MNT_2 ((uint32_t)0x00004000) +#define RTC_ALRMAR_MNU ((uint32_t)0x00000F00) +#define RTC_ALRMAR_MNU_0 ((uint32_t)0x00000100) +#define RTC_ALRMAR_MNU_1 ((uint32_t)0x00000200) +#define RTC_ALRMAR_MNU_2 ((uint32_t)0x00000400) +#define RTC_ALRMAR_MNU_3 ((uint32_t)0x00000800) +#define RTC_ALRMAR_MSK1 ((uint32_t)0x00000080) +#define RTC_ALRMAR_ST ((uint32_t)0x00000070) +#define RTC_ALRMAR_ST_0 ((uint32_t)0x00000010) +#define RTC_ALRMAR_ST_1 ((uint32_t)0x00000020) +#define RTC_ALRMAR_ST_2 ((uint32_t)0x00000040) +#define RTC_ALRMAR_SU ((uint32_t)0x0000000F) +#define RTC_ALRMAR_SU_0 ((uint32_t)0x00000001) +#define RTC_ALRMAR_SU_1 ((uint32_t)0x00000002) +#define RTC_ALRMAR_SU_2 ((uint32_t)0x00000004) +#define RTC_ALRMAR_SU_3 ((uint32_t)0x00000008) + +/******************** Bits definition for RTC_ALRMBR register ***************/ +#define RTC_ALRMBR_MSK4 ((uint32_t)0x80000000) +#define RTC_ALRMBR_WDSEL ((uint32_t)0x40000000) +#define RTC_ALRMBR_DT ((uint32_t)0x30000000) +#define RTC_ALRMBR_DT_0 ((uint32_t)0x10000000) +#define RTC_ALRMBR_DT_1 ((uint32_t)0x20000000) +#define RTC_ALRMBR_DU ((uint32_t)0x0F000000) +#define RTC_ALRMBR_DU_0 ((uint32_t)0x01000000) +#define RTC_ALRMBR_DU_1 ((uint32_t)0x02000000) +#define RTC_ALRMBR_DU_2 ((uint32_t)0x04000000) +#define RTC_ALRMBR_DU_3 ((uint32_t)0x08000000) +#define RTC_ALRMBR_MSK3 ((uint32_t)0x00800000) +#define RTC_ALRMBR_PM ((uint32_t)0x00400000) +#define RTC_ALRMBR_HT ((uint32_t)0x00300000) +#define RTC_ALRMBR_HT_0 ((uint32_t)0x00100000) +#define RTC_ALRMBR_HT_1 ((uint32_t)0x00200000) +#define RTC_ALRMBR_HU ((uint32_t)0x000F0000) +#define RTC_ALRMBR_HU_0 ((uint32_t)0x00010000) +#define RTC_ALRMBR_HU_1 ((uint32_t)0x00020000) +#define RTC_ALRMBR_HU_2 ((uint32_t)0x00040000) +#define RTC_ALRMBR_HU_3 ((uint32_t)0x00080000) +#define RTC_ALRMBR_MSK2 ((uint32_t)0x00008000) +#define RTC_ALRMBR_MNT ((uint32_t)0x00007000) +#define RTC_ALRMBR_MNT_0 ((uint32_t)0x00001000) +#define RTC_ALRMBR_MNT_1 ((uint32_t)0x00002000) +#define RTC_ALRMBR_MNT_2 ((uint32_t)0x00004000) +#define RTC_ALRMBR_MNU ((uint32_t)0x00000F00) +#define RTC_ALRMBR_MNU_0 ((uint32_t)0x00000100) +#define RTC_ALRMBR_MNU_1 ((uint32_t)0x00000200) +#define RTC_ALRMBR_MNU_2 ((uint32_t)0x00000400) +#define RTC_ALRMBR_MNU_3 ((uint32_t)0x00000800) +#define RTC_ALRMBR_MSK1 ((uint32_t)0x00000080) +#define RTC_ALRMBR_ST ((uint32_t)0x00000070) +#define RTC_ALRMBR_ST_0 ((uint32_t)0x00000010) +#define RTC_ALRMBR_ST_1 ((uint32_t)0x00000020) +#define RTC_ALRMBR_ST_2 ((uint32_t)0x00000040) +#define RTC_ALRMBR_SU ((uint32_t)0x0000000F) +#define RTC_ALRMBR_SU_0 ((uint32_t)0x00000001) +#define RTC_ALRMBR_SU_1 ((uint32_t)0x00000002) +#define RTC_ALRMBR_SU_2 ((uint32_t)0x00000004) +#define RTC_ALRMBR_SU_3 ((uint32_t)0x00000008) + +/******************** Bits definition for RTC_WPR register ******************/ +#define RTC_WPR_KEY ((uint32_t)0x000000FF) + +/******************** Bits definition for RTC_SSR register ******************/ +#define RTC_SSR_SS ((uint32_t)0x0000FFFF) + +/******************** Bits definition for RTC_SHIFTR register ***************/ +#define RTC_SHIFTR_SUBFS ((uint32_t)0x00007FFF) +#define RTC_SHIFTR_ADD1S ((uint32_t)0x80000000) + +/******************** Bits definition for RTC_TSTR register *****************/ +#define RTC_TSTR_PM ((uint32_t)0x00400000) +#define RTC_TSTR_HT ((uint32_t)0x00300000) +#define RTC_TSTR_HT_0 ((uint32_t)0x00100000) +#define RTC_TSTR_HT_1 ((uint32_t)0x00200000) +#define RTC_TSTR_HU ((uint32_t)0x000F0000) +#define RTC_TSTR_HU_0 ((uint32_t)0x00010000) +#define RTC_TSTR_HU_1 ((uint32_t)0x00020000) +#define RTC_TSTR_HU_2 ((uint32_t)0x00040000) +#define RTC_TSTR_HU_3 ((uint32_t)0x00080000) +#define RTC_TSTR_MNT ((uint32_t)0x00007000) +#define RTC_TSTR_MNT_0 ((uint32_t)0x00001000) +#define RTC_TSTR_MNT_1 ((uint32_t)0x00002000) +#define RTC_TSTR_MNT_2 ((uint32_t)0x00004000) +#define RTC_TSTR_MNU ((uint32_t)0x00000F00) +#define RTC_TSTR_MNU_0 ((uint32_t)0x00000100) +#define RTC_TSTR_MNU_1 ((uint32_t)0x00000200) +#define RTC_TSTR_MNU_2 ((uint32_t)0x00000400) +#define RTC_TSTR_MNU_3 ((uint32_t)0x00000800) +#define RTC_TSTR_ST ((uint32_t)0x00000070) +#define RTC_TSTR_ST_0 ((uint32_t)0x00000010) +#define RTC_TSTR_ST_1 ((uint32_t)0x00000020) +#define RTC_TSTR_ST_2 ((uint32_t)0x00000040) +#define RTC_TSTR_SU ((uint32_t)0x0000000F) +#define RTC_TSTR_SU_0 ((uint32_t)0x00000001) +#define RTC_TSTR_SU_1 ((uint32_t)0x00000002) +#define RTC_TSTR_SU_2 ((uint32_t)0x00000004) +#define RTC_TSTR_SU_3 ((uint32_t)0x00000008) + +/******************** Bits definition for RTC_TSDR register *****************/ +#define RTC_TSDR_WDU ((uint32_t)0x0000E000) +#define RTC_TSDR_WDU_0 ((uint32_t)0x00002000) +#define RTC_TSDR_WDU_1 ((uint32_t)0x00004000) +#define RTC_TSDR_WDU_2 ((uint32_t)0x00008000) +#define RTC_TSDR_MT ((uint32_t)0x00001000) +#define RTC_TSDR_MU ((uint32_t)0x00000F00) +#define RTC_TSDR_MU_0 ((uint32_t)0x00000100) +#define RTC_TSDR_MU_1 ((uint32_t)0x00000200) +#define RTC_TSDR_MU_2 ((uint32_t)0x00000400) +#define RTC_TSDR_MU_3 ((uint32_t)0x00000800) +#define RTC_TSDR_DT ((uint32_t)0x00000030) +#define RTC_TSDR_DT_0 ((uint32_t)0x00000010) +#define RTC_TSDR_DT_1 ((uint32_t)0x00000020) +#define RTC_TSDR_DU ((uint32_t)0x0000000F) +#define RTC_TSDR_DU_0 ((uint32_t)0x00000001) +#define RTC_TSDR_DU_1 ((uint32_t)0x00000002) +#define RTC_TSDR_DU_2 ((uint32_t)0x00000004) +#define RTC_TSDR_DU_3 ((uint32_t)0x00000008) + +/******************** Bits definition for RTC_TSSSR register ****************/ +#define RTC_TSSSR_SS ((uint32_t)0x0000FFFF) + +/******************** Bits definition for RTC_CAL register *****************/ +#define RTC_CALR_CALP ((uint32_t)0x00008000) +#define RTC_CALR_CALW8 ((uint32_t)0x00004000) +#define RTC_CALR_CALW16 ((uint32_t)0x00002000) +#define RTC_CALR_CALM ((uint32_t)0x000001FF) +#define RTC_CALR_CALM_0 ((uint32_t)0x00000001) +#define RTC_CALR_CALM_1 ((uint32_t)0x00000002) +#define RTC_CALR_CALM_2 ((uint32_t)0x00000004) +#define RTC_CALR_CALM_3 ((uint32_t)0x00000008) +#define RTC_CALR_CALM_4 ((uint32_t)0x00000010) +#define RTC_CALR_CALM_5 ((uint32_t)0x00000020) +#define RTC_CALR_CALM_6 ((uint32_t)0x00000040) +#define RTC_CALR_CALM_7 ((uint32_t)0x00000080) +#define RTC_CALR_CALM_8 ((uint32_t)0x00000100) + +/******************** Bits definition for RTC_TAFCR register ****************/ +#define RTC_TAFCR_ALARMOUTTYPE ((uint32_t)0x00040000) +#define RTC_TAFCR_TAMPPUDIS ((uint32_t)0x00008000) +#define RTC_TAFCR_TAMPPRCH ((uint32_t)0x00006000) +#define RTC_TAFCR_TAMPPRCH_0 ((uint32_t)0x00002000) +#define RTC_TAFCR_TAMPPRCH_1 ((uint32_t)0x00004000) +#define RTC_TAFCR_TAMPFLT ((uint32_t)0x00001800) +#define RTC_TAFCR_TAMPFLT_0 ((uint32_t)0x00000800) +#define RTC_TAFCR_TAMPFLT_1 ((uint32_t)0x00001000) +#define RTC_TAFCR_TAMPFREQ ((uint32_t)0x00000700) +#define RTC_TAFCR_TAMPFREQ_0 ((uint32_t)0x00000100) +#define RTC_TAFCR_TAMPFREQ_1 ((uint32_t)0x00000200) +#define RTC_TAFCR_TAMPFREQ_2 ((uint32_t)0x00000400) +#define RTC_TAFCR_TAMPTS ((uint32_t)0x00000080) +#define RTC_TAFCR_TAMP3TRG ((uint32_t)0x00000040) +#define RTC_TAFCR_TAMP3E ((uint32_t)0x00000020) +#define RTC_TAFCR_TAMP2TRG ((uint32_t)0x00000010) +#define RTC_TAFCR_TAMP2E ((uint32_t)0x00000008) +#define RTC_TAFCR_TAMPIE ((uint32_t)0x00000004) +#define RTC_TAFCR_TAMP1TRG ((uint32_t)0x00000002) +#define RTC_TAFCR_TAMP1E ((uint32_t)0x00000001) + +/******************** Bits definition for RTC_ALRMASSR register *************/ +#define RTC_ALRMASSR_MASKSS ((uint32_t)0x0F000000) +#define RTC_ALRMASSR_MASKSS_0 ((uint32_t)0x01000000) +#define RTC_ALRMASSR_MASKSS_1 ((uint32_t)0x02000000) +#define RTC_ALRMASSR_MASKSS_2 ((uint32_t)0x04000000) +#define RTC_ALRMASSR_MASKSS_3 ((uint32_t)0x08000000) +#define RTC_ALRMASSR_SS ((uint32_t)0x00007FFF) + +/******************** Bits definition for RTC_ALRMBSSR register *************/ +#define RTC_ALRMBSSR_MASKSS ((uint32_t)0x0F000000) +#define RTC_ALRMBSSR_MASKSS_0 ((uint32_t)0x01000000) +#define RTC_ALRMBSSR_MASKSS_1 ((uint32_t)0x02000000) +#define RTC_ALRMBSSR_MASKSS_2 ((uint32_t)0x04000000) +#define RTC_ALRMBSSR_MASKSS_3 ((uint32_t)0x08000000) +#define RTC_ALRMBSSR_SS ((uint32_t)0x00007FFF) + +/******************** Bits definition for RTC_BKP0R register ****************/ +#define RTC_BKP0R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP1R register ****************/ +#define RTC_BKP1R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP2R register ****************/ +#define RTC_BKP2R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP3R register ****************/ +#define RTC_BKP3R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP4R register ****************/ +#define RTC_BKP4R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP5R register ****************/ +#define RTC_BKP5R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP6R register ****************/ +#define RTC_BKP6R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP7R register ****************/ +#define RTC_BKP7R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP8R register ****************/ +#define RTC_BKP8R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP9R register ****************/ +#define RTC_BKP9R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP10R register ***************/ +#define RTC_BKP10R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP11R register ***************/ +#define RTC_BKP11R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP12R register ***************/ +#define RTC_BKP12R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP13R register ***************/ +#define RTC_BKP13R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP14R register ***************/ +#define RTC_BKP14R ((uint32_t)0xFFFFFFFF) + +/******************** Bits definition for RTC_BKP15R register ***************/ +#define RTC_BKP15R ((uint32_t)0xFFFFFFFF) + +/******************************************************************************/ +/* */ +/* Serial Peripheral Interface (SPI) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for SPI_CR1 register ********************/ +#define SPI_CR1_CPHA ((uint16_t)0x0001) /*!< Clock Phase */ +#define SPI_CR1_CPOL ((uint16_t)0x0002) /*!< Clock Polarity */ +#define SPI_CR1_MSTR ((uint16_t)0x0004) /*!< Master Selection */ + +#define SPI_CR1_BR ((uint16_t)0x0038) /*!< BR[2:0] bits (Baud Rate Control) */ +#define SPI_CR1_BR_0 ((uint16_t)0x0008) /*!< Bit 0 */ +#define SPI_CR1_BR_1 ((uint16_t)0x0010) /*!< Bit 1 */ +#define SPI_CR1_BR_2 ((uint16_t)0x0020) /*!< Bit 2 */ + +#define SPI_CR1_SPE ((uint16_t)0x0040) /*!< SPI Enable */ +#define SPI_CR1_LSBFIRST ((uint16_t)0x0080) /*!< Frame Format */ +#define SPI_CR1_SSI ((uint16_t)0x0100) /*!< Internal slave select */ +#define SPI_CR1_SSM ((uint16_t)0x0200) /*!< Software slave management */ +#define SPI_CR1_RXONLY ((uint16_t)0x0400) /*!< Receive only */ +#define SPI_CR1_CRCL ((uint16_t)0x0800) /*!< CRC Length */ +#define SPI_CR1_CRCNEXT ((uint16_t)0x1000) /*!< Transmit CRC next */ +#define SPI_CR1_CRCEN ((uint16_t)0x2000) /*!< Hardware CRC calculation enable */ +#define SPI_CR1_BIDIOE ((uint16_t)0x4000) /*!< Output enable in bidirectional mode */ +#define SPI_CR1_BIDIMODE ((uint16_t)0x8000) /*!< Bidirectional data mode enable */ + +/******************* Bit definition for SPI_CR2 register ********************/ +#define SPI_CR2_RXDMAEN ((uint16_t)0x0001) /*!< Rx Buffer DMA Enable */ +#define SPI_CR2_TXDMAEN ((uint16_t)0x0002) /*!< Tx Buffer DMA Enable */ +#define SPI_CR2_SSOE ((uint16_t)0x0004) /*!< SS Output Enable */ +#define SPI_CR2_NSSP ((uint16_t)0x0008) /*!< NSS pulse management Enable */ +#define SPI_CR2_FRF ((uint16_t)0x0010) /*!< Frame Format Enable */ +#define SPI_CR2_ERRIE ((uint16_t)0x0020) /*!< Error Interrupt Enable */ +#define SPI_CR2_RXNEIE ((uint16_t)0x0040) /*!< RX buffer Not Empty Interrupt Enable */ +#define SPI_CR2_TXEIE ((uint16_t)0x0080) /*!< Tx buffer Empty Interrupt Enable */ + +#define SPI_CR2_DS ((uint16_t)0x0F00) /*!< DS[3:0] Data Size */ +#define SPI_CR2_DS_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define SPI_CR2_DS_1 ((uint16_t)0x0200) /*!< Bit 1 */ +#define SPI_CR2_DS_2 ((uint16_t)0x0400) /*!< Bit 2 */ +#define SPI_CR2_DS_3 ((uint16_t)0x0800) /*!< Bit 3 */ + +#define SPI_CR2_FRXTH ((uint16_t)0x1000) /*!< FIFO reception Threshold */ +#define SPI_CR2_LDMARX ((uint16_t)0x2000) /*!< Last DMA transfer for reception */ +#define SPI_CR2_LDMATX ((uint16_t)0x4000) /*!< Last DMA transfer for transmission */ + +/******************** Bit definition for SPI_SR register ********************/ +#define SPI_SR_RXNE ((uint16_t)0x0001) /*!< Receive buffer Not Empty */ +#define SPI_SR_TXE ((uint16_t)0x0002) /*!< Transmit buffer Empty */ +#define SPI_SR_CRCERR ((uint16_t)0x0010) /*!< CRC Error flag */ +#define SPI_SR_MODF ((uint16_t)0x0020) /*!< Mode fault */ +#define SPI_SR_OVR ((uint16_t)0x0040) /*!< Overrun flag */ +#define SPI_SR_BSY ((uint16_t)0x0080) /*!< Busy flag */ +#define SPI_SR_FRE ((uint16_t)0x0100) /*!< TI frame format error */ +#define SPI_SR_FRLVL ((uint16_t)0x0600) /*!< FIFO Reception Level */ +#define SPI_SR_FRLVL_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define SPI_SR_FRLVL_1 ((uint16_t)0x0400) /*!< Bit 1 */ +#define SPI_SR_FTLVL ((uint16_t)0x1800) /*!< FIFO Transmission Level */ +#define SPI_SR_FTLVL_0 ((uint16_t)0x0800) /*!< Bit 0 */ +#define SPI_SR_FTLVL_1 ((uint16_t)0x1000) /*!< Bit 1 */ + +/******************** Bit definition for SPI_DR register ********************/ +#define SPI_DR_DR ((uint16_t)0xFFFF) /*!< Data Register */ + +/******************* Bit definition for SPI_CRCPR register ******************/ +#define SPI_CRCPR_CRCPOLY ((uint16_t)0xFFFF) /*!< CRC polynomial register */ + +/****************** Bit definition for SPI_RXCRCR register ******************/ +#define SPI_RXCRCR_RXCRC ((uint16_t)0xFFFF) /*!< Rx CRC Register */ + +/****************** Bit definition for SPI_TXCRCR register ******************/ +#define SPI_TXCRCR_TXCRC ((uint16_t)0xFFFF) /*!< Tx CRC Register */ + +/****************** Bit definition for SPI_I2SCFGR register *****************/ +#define SPI_I2SCFGR_CHLEN ((uint16_t)0x0001) /*!<Channel length (number of bits per audio channel) */ + +#define SPI_I2SCFGR_DATLEN ((uint16_t)0x0006) /*!<DATLEN[1:0] bits (Data length to be transferred) */ +#define SPI_I2SCFGR_DATLEN_0 ((uint16_t)0x0002) /*!<Bit 0 */ +#define SPI_I2SCFGR_DATLEN_1 ((uint16_t)0x0004) /*!<Bit 1 */ + +#define SPI_I2SCFGR_CKPOL ((uint16_t)0x0008) /*!<steady state clock polarity */ + +#define SPI_I2SCFGR_I2SSTD ((uint16_t)0x0030) /*!<I2SSTD[1:0] bits (I2S standard selection) */ +#define SPI_I2SCFGR_I2SSTD_0 ((uint16_t)0x0010) /*!<Bit 0 */ +#define SPI_I2SCFGR_I2SSTD_1 ((uint16_t)0x0020) /*!<Bit 1 */ + +#define SPI_I2SCFGR_PCMSYNC ((uint16_t)0x0080) /*!<PCM frame synchronization */ + +#define SPI_I2SCFGR_I2SCFG ((uint16_t)0x0300) /*!<I2SCFG[1:0] bits (I2S configuration mode) */ +#define SPI_I2SCFGR_I2SCFG_0 ((uint16_t)0x0100) /*!<Bit 0 */ +#define SPI_I2SCFGR_I2SCFG_1 ((uint16_t)0x0200) /*!<Bit 1 */ + +#define SPI_I2SCFGR_I2SE ((uint16_t)0x0400) /*!<I2S Enable */ +#define SPI_I2SCFGR_I2SMOD ((uint16_t)0x0800) /*!<I2S mode selection */ + +/****************** Bit definition for SPI_I2SPR register *******************/ +#define SPI_I2SPR_I2SDIV ((uint16_t)0x00FF) /*!<I2S Linear prescaler */ +#define SPI_I2SPR_ODD ((uint16_t)0x0100) /*!<Odd factor for the prescaler */ +#define SPI_I2SPR_MCKOE ((uint16_t)0x0200) /*!<Master Clock Output Enable */ + +/******************************************************************************/ +/* */ +/* System Configuration(SYSCFG) */ +/* */ +/******************************************************************************/ +/***************** Bit definition for SYSCFG_CFGR1 register *****************/ +#define SYSCFG_CFGR1_MEM_MODE ((uint32_t)0x00000003) /*!< SYSCFG_Memory Remap Config */ +#define SYSCFG_CFGR1_MEM_MODE_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define SYSCFG_CFGR1_MEM_MODE_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define SYSCFG_CFGR1_USB_IT_RMP ((uint32_t)0x00000020) /*!< USB interrupt remap */ +#define SYSCFG_CFGR1_TIM1_ITR3_RMP ((uint32_t)0x00000040) /*!< Timer 1 ITR3 selection */ +#define SYSCFG_CFGR1_DAC1_TRIG1_RMP ((uint32_t)0x00000080) /*!< DAC1 Trigger1 remap */ +#define SYSCFG_CFGR1_ADC24_DMA_RMP ((uint32_t)0x00000100) /*!< ADC2 and ADC4 DMA remap */ +#define SYSCFG_CFGR1_TIM16_DMA_RMP ((uint32_t)0x00000800) /*!< Timer 16 DMA remap */ +#define SYSCFG_CFGR1_TIM17_DMA_RMP ((uint32_t)0x00001000) /*!< Timer 17 DMA remap */ +#define SYSCFG_CFGR1_TIM6DAC1Ch1_DMA_RMP ((uint32_t)0x00002000) /*!< Timer 6 / DAC1 CH1 DMA remap */ +#define SYSCFG_CFGR1_TIM7DAC1Ch2_DMA_RMP ((uint32_t)0x00004000) /*!< Timer 7 / DAC1 CH2 DMA remap */ +#define SYSCFG_CFGR1_DAC2Ch1_DMA_RMP ((uint32_t)0x00008000) /*!< DAC2 CH1 DMA remap */ +#define SYSCFG_CFGR1_I2C_PB6_FMP ((uint32_t)0x00010000) /*!< I2C PB6 Fast mode plus */ +#define SYSCFG_CFGR1_I2C_PB7_FMP ((uint32_t)0x00020000) /*!< I2C PB7 Fast mode plus */ +#define SYSCFG_CFGR1_I2C_PB8_FMP ((uint32_t)0x00040000) /*!< I2C PB8 Fast mode plus */ +#define SYSCFG_CFGR1_I2C_PB9_FMP ((uint32_t)0x00080000) /*!< I2C PB9 Fast mode plus */ +#define SYSCFG_CFGR1_I2C1_FMP ((uint32_t)0x00100000) /*!< I2C1 Fast mode plus */ +#define SYSCFG_CFGR1_I2C2_FMP ((uint32_t)0x00200000) /*!< I2C2 Fast mode plus */ +#define SYSCFG_CFGR1_ENCODER_MODE ((uint32_t)0x00C00000) /*!< Encoder Mode */ +#define SYSCFG_CFGR1_ENCODER_MODE_0 ((uint32_t)0x00400000) /*!< Encoder Mode 0 */ +#define SYSCFG_CFGR1_ENCODER_MODE_1 ((uint32_t)0x00800000) /*!< Encoder Mode 1 */ +#define SYSCFG_CFGR1_FPU_IE ((uint32_t)0xFC000000) /*!< Floating Point Unit Interrupt Enable */ +#define SYSCFG_CFGR1_FPU_IE_0 ((uint32_t)0x04000000) /*!< Floating Point Unit Interrupt Enable 0 */ +#define SYSCFG_CFGR1_FPU_IE_1 ((uint32_t)0x08000000) /*!< Floating Point Unit Interrupt Enable 1 */ +#define SYSCFG_CFGR1_FPU_IE_2 ((uint32_t)0x10000000) /*!< Floating Point Unit Interrupt Enable 2 */ +#define SYSCFG_CFGR1_FPU_IE_3 ((uint32_t)0x20000000) /*!< Floating Point Unit Interrupt Enable 3 */ +#define SYSCFG_CFGR1_FPU_IE_4 ((uint32_t)0x40000000) /*!< Floating Point Unit Interrupt Enable 4 */ +#define SYSCFG_CFGR1_FPU_IE_5 ((uint32_t)0x80000000) /*!< Floating Point Unit Interrupt Enable 5 */ +#define SYSCFG_CFGR1_DAC_TRIG_RMP SYSCFG_CFGR1_DAC1_TRIG1_RMP /*!< Old define maintained for legacy purpose */ +#define SYSCFG_CFGR1_TIM6DAC1 SYSCFG_CFGR1_TIM6DAC1Ch1_DMA_RMP /*!< Old define maintained for legacy purpose */ +#define SYSCFG_CFGR1_TIM7DAC2 SYSCFG_CFGR1_TIM7DAC1Ch2_DMA_RMP /*!< Old define maintained for legacy purpose */ +/***************** Bit definition for SYSCFG_RCR register *******************/ +#define SYSCFG_RCR_PAGE0 ((uint32_t)0x00000001) /*!< ICODE SRAM Write protection page 0 */ +#define SYSCFG_RCR_PAGE1 ((uint32_t)0x00000002) /*!< ICODE SRAM Write protection page 1 */ +#define SYSCFG_RCR_PAGE2 ((uint32_t)0x00000004) /*!< ICODE SRAM Write protection page 2 */ +#define SYSCFG_RCR_PAGE3 ((uint32_t)0x00000008) /*!< ICODE SRAM Write protection page 3 */ +#define SYSCFG_RCR_PAGE4 ((uint32_t)0x00000010) /*!< ICODE SRAM Write protection page 4 */ +#define SYSCFG_RCR_PAGE5 ((uint32_t)0x00000020) /*!< ICODE SRAM Write protection page 5 */ +#define SYSCFG_RCR_PAGE6 ((uint32_t)0x00000040) /*!< ICODE SRAM Write protection page 6 */ +#define SYSCFG_RCR_PAGE7 ((uint32_t)0x00000080) /*!< ICODE SRAM Write protection page 7 */ + +/***************** Bit definition for SYSCFG_EXTICR1 register ***************/ +#define SYSCFG_EXTICR1_EXTI0 ((uint16_t)0x000F) /*!< EXTI 0 configuration */ +#define SYSCFG_EXTICR1_EXTI1 ((uint16_t)0x00F0) /*!< EXTI 1 configuration */ +#define SYSCFG_EXTICR1_EXTI2 ((uint16_t)0x0F00) /*!< EXTI 2 configuration */ +#define SYSCFG_EXTICR1_EXTI3 ((uint16_t)0xF000) /*!< EXTI 3 configuration */ + +/** + * @brief EXTI0 configuration + */ +#define SYSCFG_EXTICR1_EXTI0_PA ((uint16_t)0x0000) /*!< PA[0] pin */ +#define SYSCFG_EXTICR1_EXTI0_PB ((uint16_t)0x0001) /*!< PB[0] pin */ +#define SYSCFG_EXTICR1_EXTI0_PC ((uint16_t)0x0002) /*!< PC[0] pin */ +#define SYSCFG_EXTICR1_EXTI0_PD ((uint16_t)0x0003) /*!< PD[0] pin */ +#define SYSCFG_EXTICR1_EXTI0_PE ((uint16_t)0x0004) /*!< PE[0] pin */ +#define SYSCFG_EXTICR1_EXTI0_PF ((uint16_t)0x0005) /*!< PF[0] pin */ + +/** + * @brief EXTI1 configuration + */ +#define SYSCFG_EXTICR1_EXTI1_PA ((uint16_t)0x0000) /*!< PA[1] pin */ +#define SYSCFG_EXTICR1_EXTI1_PB ((uint16_t)0x0010) /*!< PB[1] pin */ +#define SYSCFG_EXTICR1_EXTI1_PC ((uint16_t)0x0020) /*!< PC[1] pin */ +#define SYSCFG_EXTICR1_EXTI1_PD ((uint16_t)0x0030) /*!< PD[1] pin */ +#define SYSCFG_EXTICR1_EXTI1_PE ((uint16_t)0x0040) /*!< PE[1] pin */ +#define SYSCFG_EXTICR1_EXTI1_PF ((uint16_t)0x0050) /*!< PF[1] pin */ + +/** + * @brief EXTI2 configuration + */ +#define SYSCFG_EXTICR1_EXTI2_PA ((uint16_t)0x0000) /*!< PA[2] pin */ +#define SYSCFG_EXTICR1_EXTI2_PB ((uint16_t)0x0100) /*!< PB[2] pin */ +#define SYSCFG_EXTICR1_EXTI2_PC ((uint16_t)0x0200) /*!< PC[2] pin */ +#define SYSCFG_EXTICR1_EXTI2_PD ((uint16_t)0x0300) /*!< PD[2] pin */ +#define SYSCFG_EXTICR1_EXTI2_PE ((uint16_t)0x0400) /*!< PE[2] pin */ +#define SYSCFG_EXTICR1_EXTI2_PF ((uint16_t)0x0500) /*!< PF[2] pin */ + +/** + * @brief EXTI3 configuration + */ +#define SYSCFG_EXTICR1_EXTI3_PA ((uint16_t)0x0000) /*!< PA[3] pin */ +#define SYSCFG_EXTICR1_EXTI3_PB ((uint16_t)0x1000) /*!< PB[3] pin */ +#define SYSCFG_EXTICR1_EXTI3_PC ((uint16_t)0x2000) /*!< PC[3] pin */ +#define SYSCFG_EXTICR1_EXTI3_PD ((uint16_t)0x3000) /*!< PD[3] pin */ +#define SYSCFG_EXTICR1_EXTI3_PE ((uint16_t)0x4000) /*!< PE[3] pin */ + +/***************** Bit definition for SYSCFG_EXTICR2 register ***************/ +#define SYSCFG_EXTIRCR_EXTI4 ((uint16_t)0x000F) /*!< EXTI 4 configuration */ +#define SYSCFG_EXTIRCR_EXTI5 ((uint16_t)0x00F0) /*!< EXTI 5 configuration */ +#define SYSCFG_EXTIRCR_EXTI6 ((uint16_t)0x0F00) /*!< EXTI 6 configuration */ +#define SYSCFG_EXTIRCR_EXTI7 ((uint16_t)0xF000) /*!< EXTI 7 configuration */ + +/** + * @brief EXTI4 configuration + */ +#define SYSCFG_EXTIRCR_EXTI4_PA ((uint16_t)0x0000) /*!< PA[4] pin */ +#define SYSCFG_EXTIRCR_EXTI4_PB ((uint16_t)0x0001) /*!< PB[4] pin */ +#define SYSCFG_EXTIRCR_EXTI4_PC ((uint16_t)0x0002) /*!< PC[4] pin */ +#define SYSCFG_EXTIRCR_EXTI4_PD ((uint16_t)0x0003) /*!< PD[4] pin */ +#define SYSCFG_EXTIRCR_EXTI4_PE ((uint16_t)0x0004) /*!< PE[4] pin */ +#define SYSCFG_EXTIRCR_EXTI4_PF ((uint16_t)0x0005) /*!< PF[4] pin */ + +/** + * @brief EXTI5 configuration + */ +#define SYSCFG_EXTIRCR_EXTI5_PA ((uint16_t)0x0000) /*!< PA[5] pin */ +#define SYSCFG_EXTIRCR_EXTI5_PB ((uint16_t)0x0010) /*!< PB[5] pin */ +#define SYSCFG_EXTIRCR_EXTI5_PC ((uint16_t)0x0020) /*!< PC[5] pin */ +#define SYSCFG_EXTIRCR_EXTI5_PD ((uint16_t)0x0030) /*!< PD[5] pin */ +#define SYSCFG_EXTIRCR_EXTI5_PE ((uint16_t)0x0040) /*!< PE[5] pin */ +#define SYSCFG_EXTIRCR_EXTI5_PF ((uint16_t)0x0050) /*!< PF[5] pin */ + +/** + * @brief EXTI6 configuration + */ +#define SYSCFG_EXTIRCR_EXTI6_PA ((uint16_t)0x0000) /*!< PA[6] pin */ +#define SYSCFG_EXTIRCR_EXTI6_PB ((uint16_t)0x0100) /*!< PB[6] pin */ +#define SYSCFG_EXTIRCR_EXTI6_PC ((uint16_t)0x0200) /*!< PC[6] pin */ +#define SYSCFG_EXTIRCR_EXTI6_PD ((uint16_t)0x0300) /*!< PD[6] pin */ +#define SYSCFG_EXTIRCR_EXTI6_PE ((uint16_t)0x0400) /*!< PE[6] pin */ +#define SYSCFG_EXTIRCR_EXTI6_PF ((uint16_t)0x0500) /*!< PF[6] pin */ + +/** + * @brief EXTI7 configuration + */ +#define SYSCFG_EXTIRCR_EXTI7_PA ((uint16_t)0x0000) /*!< PA[7] pin */ +#define SYSCFG_EXTIRCR_EXTI7_PB ((uint16_t)0x1000) /*!< PB[7] pin */ +#define SYSCFG_EXTIRCR_EXTI7_PC ((uint16_t)0x2000) /*!< PC[7] pin */ +#define SYSCFG_EXTIRCR_EXTI7_PD ((uint16_t)0x3000) /*!< PD[7] pin */ +#define SYSCFG_EXTIRCR_EXTI7_PE ((uint16_t)0x4000) /*!< PE[7] pin */ + +/***************** Bit definition for SYSCFG_EXTICR3 register ***************/ +#define SYSCFG_EXTICR3_EXTI8 ((uint16_t)0x000F) /*!< EXTI 8 configuration */ +#define SYSCFG_EXTICR3_EXTI9 ((uint16_t)0x00F0) /*!< EXTI 9 configuration */ +#define SYSCFG_EXTICR3_EXTI10 ((uint16_t)0x0F00) /*!< EXTI 10 configuration */ +#define SYSCFG_EXTICR3_EXTI11 ((uint16_t)0xF000) /*!< EXTI 11 configuration */ + +/** + * @brief EXTI8 configuration + */ +#define SYSCFG_EXTICR3_EXTI8_PA ((uint16_t)0x0000) /*!< PA[8] pin */ +#define SYSCFG_EXTICR3_EXTI8_PB ((uint16_t)0x0001) /*!< PB[8] pin */ +#define SYSCFG_EXTICR3_EXTI8_PC ((uint16_t)0x0002) /*!< PC[8] pin */ +#define SYSCFG_EXTICR3_EXTI8_PD ((uint16_t)0x0003) /*!< PD[8] pin */ +#define SYSCFG_EXTICR3_EXTI8_PE ((uint16_t)0x0004) /*!< PE[8] pin */ + +/** + * @brief EXTI9 configuration + */ +#define SYSCFG_EXTICR3_EXTI9_PA ((uint16_t)0x0000) /*!< PA[9] pin */ +#define SYSCFG_EXTICR3_EXTI9_PB ((uint16_t)0x0010) /*!< PB[9] pin */ +#define SYSCFG_EXTICR3_EXTI9_PC ((uint16_t)0x0020) /*!< PC[9] pin */ +#define SYSCFG_EXTICR3_EXTI9_PD ((uint16_t)0x0030) /*!< PD[9] pin */ +#define SYSCFG_EXTICR3_EXTI9_PE ((uint16_t)0x0040) /*!< PE[9] pin */ +#define SYSCFG_EXTICR3_EXTI9_PF ((uint16_t)0x0050) /*!< PF[9] pin */ + +/** + * @brief EXTI10 configuration + */ +#define SYSCFG_EXTICR3_EXTI10_PA ((uint16_t)0x0000) /*!< PA[10] pin */ +#define SYSCFG_EXTICR3_EXTI10_PB ((uint16_t)0x0100) /*!< PB[10] pin */ +#define SYSCFG_EXTICR3_EXTI10_PC ((uint16_t)0x0200) /*!< PC[10] pin */ +#define SYSCFG_EXTICR3_EXTI10_PD ((uint16_t)0x0300) /*!< PD[10] pin */ +#define SYSCFG_EXTICR3_EXTI10_PE ((uint16_t)0x0400) /*!< PE[10] pin */ +#define SYSCFG_EXTICR3_EXTI10_PF ((uint16_t)0x0500) /*!< PF[10] pin */ + +/** + * @brief EXTI11 configuration + */ +#define SYSCFG_EXTICR3_EXTI11_PA ((uint16_t)0x0000) /*!< PA[11] pin */ +#define SYSCFG_EXTICR3_EXTI11_PB ((uint16_t)0x1000) /*!< PB[11] pin */ +#define SYSCFG_EXTICR3_EXTI11_PC ((uint16_t)0x2000) /*!< PC[11] pin */ +#define SYSCFG_EXTICR3_EXTI11_PD ((uint16_t)0x3000) /*!< PD[11] pin */ +#define SYSCFG_EXTICR3_EXTI11_PE ((uint16_t)0x4000) /*!< PE[11] pin */ + +/***************** Bit definition for SYSCFG_EXTICR4 register *****************/ +#define SYSCFG_EXTICR4_EXTI12 ((uint16_t)0x000F) /*!< EXTI 12 configuration */ +#define SYSCFG_EXTICR4_EXTI13 ((uint16_t)0x00F0) /*!< EXTI 13 configuration */ +#define SYSCFG_EXTICR4_EXTI14 ((uint16_t)0x0F00) /*!< EXTI 14 configuration */ +#define SYSCFG_EXTICR4_EXTI15 ((uint16_t)0xF000) /*!< EXTI 15 configuration */ + +/** + * @brief EXTI12 configuration + */ +#define SYSCFG_EXTICR4_EXTI12_PA ((uint16_t)0x0000) /*!< PA[12] pin */ +#define SYSCFG_EXTICR4_EXTI12_PB ((uint16_t)0x0001) /*!< PB[12] pin */ +#define SYSCFG_EXTICR4_EXTI12_PC ((uint16_t)0x0002) /*!< PC[12] pin */ +#define SYSCFG_EXTICR4_EXTI12_PD ((uint16_t)0x0003) /*!< PD[12] pin */ +#define SYSCFG_EXTICR4_EXTI12_PE ((uint16_t)0x0004) /*!< PE[12] pin */ + +/** + * @brief EXTI13 configuration + */ +#define SYSCFG_EXTICR4_EXTI13_PA ((uint16_t)0x0000) /*!< PA[13] pin */ +#define SYSCFG_EXTICR4_EXTI13_PB ((uint16_t)0x0010) /*!< PB[13] pin */ +#define SYSCFG_EXTICR4_EXTI13_PC ((uint16_t)0x0020) /*!< PC[13] pin */ +#define SYSCFG_EXTICR4_EXTI13_PD ((uint16_t)0x0030) /*!< PD[13] pin */ +#define SYSCFG_EXTICR4_EXTI13_PE ((uint16_t)0x0040) /*!< PE[13] pin */ + +/** + * @brief EXTI14 configuration + */ +#define SYSCFG_EXTICR4_EXTI14_PA ((uint16_t)0x0000) /*!< PA[14] pin */ +#define SYSCFG_EXTICR4_EXTI14_PB ((uint16_t)0x0100) /*!< PB[14] pin */ +#define SYSCFG_EXTICR4_EXTI14_PC ((uint16_t)0x0200) /*!< PC[14] pin */ +#define SYSCFG_EXTICR4_EXTI14_PD ((uint16_t)0x0300) /*!< PD[14] pin */ +#define SYSCFG_EXTICR4_EXTI14_PE ((uint16_t)0x0400) /*!< PE[14] pin */ + +/** + * @brief EXTI15 configuration + */ +#define SYSCFG_EXTICR4_EXTI15_PA ((uint16_t)0x0000) /*!< PA[15] pin */ +#define SYSCFG_EXTICR4_EXTI15_PB ((uint16_t)0x1000) /*!< PB[15] pin */ +#define SYSCFG_EXTICR4_EXTI15_PC ((uint16_t)0x2000) /*!< PC[15] pin */ +#define SYSCFG_EXTICR4_EXTI15_PD ((uint16_t)0x3000) /*!< PD[15] pin */ +#define SYSCFG_EXTICR4_EXTI15_PE ((uint16_t)0x4000) /*!< PE[15] pin */ + +/***************** Bit definition for SYSCFG_CFGR2 register *****************/ +#define SYSCFG_CFGR2_LOCKUP_LOCK ((uint32_t)0x00000001) /*!< Enables and locks the PVD connection with Timer1/8/15/16/17 Break Input and also the PVD_EN and PVDSEL[2:0] bits of the Power Control Interface */ +#define SYSCFG_CFGR2_SRAM_PARITY_LOCK ((uint32_t)0x00000002) /*!< Enables and locks the SRAM_PARITY error signal with Break Input of TIMER1/8/15/16/17 */ +#define SYSCFG_CFGR2_PVD_LOCK ((uint32_t)0x00000004) /*!< Enables and locks the LOCKUP (Hardfault) output of CortexM4 with Break Input of TIMER1/8/15/16/17 */ +#define SYSCFG_CFGR2_BYP_ADDR_PAR ((uint32_t)0x00000010) /*!< Disables the address parity check on RAM */ +#define SYSCFG_CFGR2_SRAM_PE ((uint32_t)0x00000100) /*!< SRAM Parity error flag */ + +/***************** Bit definition for SYSCFG_CFGR3 register *****************/ +#define SYSCFG_CFGR3_SPI1_RX_DMA_RMP ((uint32_t)0x00000003) /*!< SPI1 RX DMA remap */ +#define SYSCFG_CFGR3_SPI1_RX_DMA_RMP_0 ((uint32_t)0x00000001) /*!< SPI1 RX DMA remap bit 0 */ +#define SYSCFG_CFGR3_SPI1_RX_DMA_RMP_1 ((uint32_t)0x00000002) /*!< SPI1 RX DMA remap bit 1 */ +#define SYSCFG_CFGR3_SPI1_TX_DMA_RMP ((uint32_t)0x0000000C) /*!< SPI1 TX DMA remap */ +#define SYSCFG_CFGR3_SPI1_TX_DMA_RMP_0 ((uint32_t)0x00000004) /*!< SPI1 TX DMA remap bit 0 */ +#define SYSCFG_CFGR3_SPI1_TX_DMA_RMP_1 ((uint32_t)0x00000008) /*!< SPI1 TX DMA remap bit 1 */ +#define SYSCFG_CFGR3_I2C1_RX_DMA_RMP ((uint32_t)0x00000030) /*!< I2C1 RX DMA remap */ +#define SYSCFG_CFGR3_I2C1_RX_DMA_RMP_0 ((uint32_t)0x00000010) /*!< I2C1 RX DMA remap bit 0 */ +#define SYSCFG_CFGR3_I2C1_RX_DMA_RMP_1 ((uint32_t)0x00000020) /*!< I2C1 RX DMA remap bit 1 */ +#define SYSCFG_CFGR3_I2C1_TX_DMA_RMP ((uint32_t)0x000000C0) /*!< I2C1 RX DMA remap */ +#define SYSCFG_CFGR3_I2C1_TX_DMA_RMP_0 ((uint32_t)0x00000040) /*!< I2C1 TX DMA remap bit 0 */ +#define SYSCFG_CFGR3_I2C1_TX_DMA_RMP_1 ((uint32_t)0x00000080) /*!< I2C1 TX DMA remap bit 1 */ +#define SYSCFG_CFGR3_ADC2_DMA_RMP ((uint32_t)0x00000300) /*!< ADC2 DMA remap */ +#define SYSCFG_CFGR3_ADC2_DMA_RMP_0 ((uint32_t)0x00000100) /*!< ADC2 DMA remap bit 0 */ +#define SYSCFG_CFGR3_ADC2_DMA_RMP_1 ((uint32_t)0x00000200) /*!< ADC2 DMA remap bit 1 */ +#define SYSCFG_CFGR3_DAC1_TRG3_RMP ((uint32_t)0x00010000) /*!< DAC1 TRG3 remap */ +#define SYSCFG_CFGR3_DAC1_TRG5_RMP ((uint32_t)0x00020000) /*!< DAC1 TRG5 remap */ + +/******************************************************************************/ +/* */ +/* TIM */ +/* */ +/******************************************************************************/ +/******************* Bit definition for TIM_CR1 register ********************/ +#define TIM_CR1_CEN ((uint16_t)0x0001) /*!<Counter enable */ +#define TIM_CR1_UDIS ((uint16_t)0x0002) /*!<Update disable */ +#define TIM_CR1_URS ((uint16_t)0x0004) /*!<Update request source */ +#define TIM_CR1_OPM ((uint16_t)0x0008) /*!<One pulse mode */ +#define TIM_CR1_DIR ((uint16_t)0x0010) /*!<Direction */ + +#define TIM_CR1_CMS ((uint16_t)0x0060) /*!<CMS[1:0] bits (Center-aligned mode selection) */ +#define TIM_CR1_CMS_0 ((uint16_t)0x0020) /*!<Bit 0 */ +#define TIM_CR1_CMS_1 ((uint16_t)0x0040) /*!<Bit 1 */ + +#define TIM_CR1_ARPE ((uint16_t)0x0080) /*!<Auto-reload preload enable */ + +#define TIM_CR1_CKD ((uint16_t)0x0300) /*!<CKD[1:0] bits (clock division) */ +#define TIM_CR1_CKD_0 ((uint16_t)0x0100) /*!<Bit 0 */ +#define TIM_CR1_CKD_1 ((uint16_t)0x0200) /*!<Bit 1 */ + +#define TIM_CR1_UIFREMAP ((uint16_t)0x0800) /*!<Update interrupt flag remap */ + +/******************* Bit definition for TIM_CR2 register ********************/ +#define TIM_CR2_CCPC ((uint32_t)0x00000001) /*!<Capture/Compare Preloaded Control */ +#define TIM_CR2_CCUS ((uint32_t)0x00000004) /*!<Capture/Compare Control Update Selection */ +#define TIM_CR2_CCDS ((uint32_t)0x00000008) /*!<Capture/Compare DMA Selection */ + +#define TIM_CR2_MMS ((uint32_t)0x00000070) /*!<MMS[2:0] bits (Master Mode Selection) */ +#define TIM_CR2_MMS_0 ((uint32_t)0x00000010) /*!<Bit 0 */ +#define TIM_CR2_MMS_1 ((uint32_t)0x00000020) /*!<Bit 1 */ +#define TIM_CR2_MMS_2 ((uint32_t)0x00000040) /*!<Bit 2 */ + +#define TIM_CR2_TI1S ((uint32_t)0x00000080) /*!<TI1 Selection */ +#define TIM_CR2_OIS1 ((uint32_t)0x00000100) /*!<Output Idle state 1 (OC1 output) */ +#define TIM_CR2_OIS1N ((uint32_t)0x00000200) /*!<Output Idle state 1 (OC1N output) */ +#define TIM_CR2_OIS2 ((uint32_t)0x00000400) /*!<Output Idle state 2 (OC2 output) */ +#define TIM_CR2_OIS2N ((uint32_t)0x00000800) /*!<Output Idle state 2 (OC2N output) */ +#define TIM_CR2_OIS3 ((uint32_t)0x00001000) /*!<Output Idle state 3 (OC3 output) */ +#define TIM_CR2_OIS3N ((uint32_t)0x00002000) /*!<Output Idle state 3 (OC3N output) */ +#define TIM_CR2_OIS4 ((uint32_t)0x00004000) /*!<Output Idle state 4 (OC4 output) */ +#define TIM_CR2_OIS5 ((uint32_t)0x00010000) /*!<Output Idle state 4 (OC4 output) */ +#define TIM_CR2_OIS6 ((uint32_t)0x00020000) /*!<Output Idle state 4 (OC4 output) */ + +#define TIM_CR2_MMS2 ((uint32_t)0x00F00000) /*!<MMS[2:0] bits (Master Mode Selection) */ +#define TIM_CR2_MMS2_0 ((uint32_t)0x00100000) /*!<Bit 0 */ +#define TIM_CR2_MMS2_1 ((uint32_t)0x00200000) /*!<Bit 1 */ +#define TIM_CR2_MMS2_2 ((uint32_t)0x00400000) /*!<Bit 2 */ +#define TIM_CR2_MMS2_3 ((uint32_t)0x00800000) /*!<Bit 2 */ + +/******************* Bit definition for TIM_SMCR register *******************/ +#define TIM_SMCR_SMS ((uint32_t)0x00010007) /*!<SMS[2:0] bits (Slave mode selection) */ +#define TIM_SMCR_SMS_0 ((uint32_t)0x00000001) /*!<Bit 0 */ +#define TIM_SMCR_SMS_1 ((uint32_t)0x00000002) /*!<Bit 1 */ +#define TIM_SMCR_SMS_2 ((uint32_t)0x00000004) /*!<Bit 2 */ +#define TIM_SMCR_SMS_3 ((uint32_t)0x00010000) /*!<Bit 3 */ + +#define TIM_SMCR_OCCS ((uint32_t)0x00000008) /*!< OCREF clear selection */ + +#define TIM_SMCR_TS ((uint32_t)0x00000070) /*!<TS[2:0] bits (Trigger selection) */ +#define TIM_SMCR_TS_0 ((uint32_t)0x00000010) /*!<Bit 0 */ +#define TIM_SMCR_TS_1 ((uint32_t)0x00000020) /*!<Bit 1 */ +#define TIM_SMCR_TS_2 ((uint32_t)0x00000040) /*!<Bit 2 */ + +#define TIM_SMCR_MSM ((uint32_t)0x00000080) /*!<Master/slave mode */ + +#define TIM_SMCR_ETF ((uint32_t)0x00000F00) /*!<ETF[3:0] bits (External trigger filter) */ +#define TIM_SMCR_ETF_0 ((uint32_t)0x00000100) /*!<Bit 0 */ +#define TIM_SMCR_ETF_1 ((uint32_t)0x00000200) /*!<Bit 1 */ +#define TIM_SMCR_ETF_2 ((uint32_t)0x00000400) /*!<Bit 2 */ +#define TIM_SMCR_ETF_3 ((uint32_t)0x00000800) /*!<Bit 3 */ + +#define TIM_SMCR_ETPS ((uint32_t)0x00003000) /*!<ETPS[1:0] bits (External trigger prescaler) */ +#define TIM_SMCR_ETPS_0 ((uint32_t)0x00001000) /*!<Bit 0 */ +#define TIM_SMCR_ETPS_1 ((uint32_t)0x00002000) /*!<Bit 1 */ + +#define TIM_SMCR_ECE ((uint32_t)0x00004000) /*!<External clock enable */ +#define TIM_SMCR_ETP ((uint32_t)0x00008000) /*!<External trigger polarity */ + +/******************* Bit definition for TIM_DIER register *******************/ +#define TIM_DIER_UIE ((uint16_t)0x0001) /*!<Update interrupt enable */ +#define TIM_DIER_CC1IE ((uint16_t)0x0002) /*!<Capture/Compare 1 interrupt enable */ +#define TIM_DIER_CC2IE ((uint16_t)0x0004) /*!<Capture/Compare 2 interrupt enable */ +#define TIM_DIER_CC3IE ((uint16_t)0x0008) /*!<Capture/Compare 3 interrupt enable */ +#define TIM_DIER_CC4IE ((uint16_t)0x0010) /*!<Capture/Compare 4 interrupt enable */ +#define TIM_DIER_COMIE ((uint16_t)0x0020) /*!<COM interrupt enable */ +#define TIM_DIER_TIE ((uint16_t)0x0040) /*!<Trigger interrupt enable */ +#define TIM_DIER_BIE ((uint16_t)0x0080) /*!<Break interrupt enable */ +#define TIM_DIER_UDE ((uint16_t)0x0100) /*!<Update DMA request enable */ +#define TIM_DIER_CC1DE ((uint16_t)0x0200) /*!<Capture/Compare 1 DMA request enable */ +#define TIM_DIER_CC2DE ((uint16_t)0x0400) /*!<Capture/Compare 2 DMA request enable */ +#define TIM_DIER_CC3DE ((uint16_t)0x0800) /*!<Capture/Compare 3 DMA request enable */ +#define TIM_DIER_CC4DE ((uint16_t)0x1000) /*!<Capture/Compare 4 DMA request enable */ +#define TIM_DIER_COMDE ((uint16_t)0x2000) /*!<COM DMA request enable */ +#define TIM_DIER_TDE ((uint16_t)0x4000) /*!<Trigger DMA request enable */ + +/******************** Bit definition for TIM_SR register ********************/ +#define TIM_SR_UIF ((uint32_t)0x00000001) /*!<Update interrupt Flag */ +#define TIM_SR_CC1IF ((uint32_t)0x00000002) /*!<Capture/Compare 1 interrupt Flag */ +#define TIM_SR_CC2IF ((uint32_t)0x00000004) /*!<Capture/Compare 2 interrupt Flag */ +#define TIM_SR_CC3IF ((uint32_t)0x00000008) /*!<Capture/Compare 3 interrupt Flag */ +#define TIM_SR_CC4IF ((uint32_t)0x00000010) /*!<Capture/Compare 4 interrupt Flag */ +#define TIM_SR_COMIF ((uint32_t)0x00000020) /*!<COM interrupt Flag */ +#define TIM_SR_TIF ((uint32_t)0x00000040) /*!<Trigger interrupt Flag */ +#define TIM_SR_BIF ((uint32_t)0x00000080) /*!<Break interrupt Flag */ +#define TIM_SR_B2IF ((uint32_t)0x00000100) /*!<Break2 interrupt Flag */ +#define TIM_SR_CC1OF ((uint32_t)0x00000200) /*!<Capture/Compare 1 Over capture Flag */ +#define TIM_SR_CC2OF ((uint32_t)0x00000400) /*!<Capture/Compare 2 Over capture Flag */ +#define TIM_SR_CC3OF ((uint32_t)0x00000800) /*!<Capture/Compare 3 Over capture Flag */ +#define TIM_SR_CC4OF ((uint32_t)0x00001000) /*!<Capture/Compare 4 Over capture Flag */ +#define TIM_SR_CC5IF ((uint32_t)0x00010000) /*!<Capture/Compare 5 interrupt Flag */ +#define TIM_SR_CC6IF ((uint32_t)0x00020000) /*!<Capture/Compare 6 interrupt Flag */ + + +/******************* Bit definition for TIM_EGR register ********************/ +#define TIM_EGR_UG ((uint16_t)0x0001) /*!<Update Generation */ +#define TIM_EGR_CC1G ((uint16_t)0x0002) /*!<Capture/Compare 1 Generation */ +#define TIM_EGR_CC2G ((uint16_t)0x0004) /*!<Capture/Compare 2 Generation */ +#define TIM_EGR_CC3G ((uint16_t)0x0008) /*!<Capture/Compare 3 Generation */ +#define TIM_EGR_CC4G ((uint16_t)0x0010) /*!<Capture/Compare 4 Generation */ +#define TIM_EGR_COMG ((uint16_t)0x0020) /*!<Capture/Compare Control Update Generation */ +#define TIM_EGR_TG ((uint16_t)0x0040) /*!<Trigger Generation */ +#define TIM_EGR_BG ((uint16_t)0x0080) /*!<Break Generation */ +#define TIM_EGR_B2G ((uint16_t)0x0100) /*!<Break Generation */ + + +/****************** Bit definition for TIM_CCMR1 register *******************/ +#define TIM_CCMR1_CC1S ((uint32_t)0x00000003) /*!<CC1S[1:0] bits (Capture/Compare 1 Selection) */ +#define TIM_CCMR1_CC1S_0 ((uint32_t)0x00000001) /*!<Bit 0 */ +#define TIM_CCMR1_CC1S_1 ((uint32_t)0x00000002) /*!<Bit 1 */ + +#define TIM_CCMR1_OC1FE ((uint32_t)0x00000004) /*!<Output Compare 1 Fast enable */ +#define TIM_CCMR1_OC1PE ((uint32_t)0x00000008) /*!<Output Compare 1 Preload enable */ + +#define TIM_CCMR1_OC1M ((uint32_t)0x00010070) /*!<OC1M[2:0] bits (Output Compare 1 Mode) */ +#define TIM_CCMR1_OC1M_0 ((uint32_t)0x00000010) /*!<Bit 0 */ +#define TIM_CCMR1_OC1M_1 ((uint32_t)0x00000020) /*!<Bit 1 */ +#define TIM_CCMR1_OC1M_2 ((uint32_t)0x00000040) /*!<Bit 2 */ +#define TIM_CCMR1_OC1M_3 ((uint32_t)0x00010000) /*!<Bit 3 */ + +#define TIM_CCMR1_OC1CE ((uint32_t)0x00000080) /*!<Output Compare 1Clear Enable */ + +#define TIM_CCMR1_CC2S ((uint32_t)0x00000300) /*!<CC2S[1:0] bits (Capture/Compare 2 Selection) */ +#define TIM_CCMR1_CC2S_0 ((uint32_t)0x00000100) /*!<Bit 0 */ +#define TIM_CCMR1_CC2S_1 ((uint32_t)0x00000200) /*!<Bit 1 */ + +#define TIM_CCMR1_OC2FE ((uint32_t)0x00000400) /*!<Output Compare 2 Fast enable */ +#define TIM_CCMR1_OC2PE ((uint32_t)0x00000800) /*!<Output Compare 2 Preload enable */ + +#define TIM_CCMR1_OC2M ((uint32_t)0x01007000) /*!<OC2M[2:0] bits (Output Compare 2 Mode) */ +#define TIM_CCMR1_OC2M_0 ((uint32_t)0x00001000) /*!<Bit 0 */ +#define TIM_CCMR1_OC2M_1 ((uint32_t)0x00002000) /*!<Bit 1 */ +#define TIM_CCMR1_OC2M_2 ((uint32_t)0x00004000) /*!<Bit 2 */ +#define TIM_CCMR1_OC2M_3 ((uint32_t)0x01000000) /*!<Bit 3 */ + +#define TIM_CCMR1_OC2CE ((uint32_t)0x00008000) /*!<Output Compare 2 Clear Enable */ + +/*----------------------------------------------------------------------------*/ + +#define TIM_CCMR1_IC1PSC ((uint32_t)0x0000000C) /*!<IC1PSC[1:0] bits (Input Capture 1 Prescaler) */ +#define TIM_CCMR1_IC1PSC_0 ((uint32_t)0x00000004) /*!<Bit 0 */ +#define TIM_CCMR1_IC1PSC_1 ((uint32_t)0x00000008) /*!<Bit 1 */ + +#define TIM_CCMR1_IC1F ((uint32_t)0x000000F0) /*!<IC1F[3:0] bits (Input Capture 1 Filter) */ +#define TIM_CCMR1_IC1F_0 ((uint32_t)0x00000010) /*!<Bit 0 */ +#define TIM_CCMR1_IC1F_1 ((uint32_t)0x00000020) /*!<Bit 1 */ +#define TIM_CCMR1_IC1F_2 ((uint32_t)0x00000040) /*!<Bit 2 */ +#define TIM_CCMR1_IC1F_3 ((uint32_t)0x00000080) /*!<Bit 3 */ + +#define TIM_CCMR1_IC2PSC ((uint32_t)0x00000C00) /*!<IC2PSC[1:0] bits (Input Capture 2 Prescaler) */ +#define TIM_CCMR1_IC2PSC_0 ((uint32_t)0x00000400) /*!<Bit 0 */ +#define TIM_CCMR1_IC2PSC_1 ((uint32_t)0x00000800) /*!<Bit 1 */ + +#define TIM_CCMR1_IC2F ((uint32_t)0x0000F000) /*!<IC2F[3:0] bits (Input Capture 2 Filter) */ +#define TIM_CCMR1_IC2F_0 ((uint32_t)0x00001000) /*!<Bit 0 */ +#define TIM_CCMR1_IC2F_1 ((uint32_t)0x00002000) /*!<Bit 1 */ +#define TIM_CCMR1_IC2F_2 ((uint32_t)0x00004000) /*!<Bit 2 */ +#define TIM_CCMR1_IC2F_3 ((uint32_t)0x00008000) /*!<Bit 3 */ + +/****************** Bit definition for TIM_CCMR2 register *******************/ +#define TIM_CCMR2_CC3S ((uint32_t)0x00000003) /*!<CC3S[1:0] bits (Capture/Compare 3 Selection) */ +#define TIM_CCMR2_CC3S_0 ((uint32_t)0x00000001) /*!<Bit 0 */ +#define TIM_CCMR2_CC3S_1 ((uint32_t)0x00000002) /*!<Bit 1 */ + +#define TIM_CCMR2_OC3FE ((uint32_t)0x00000004) /*!<Output Compare 3 Fast enable */ +#define TIM_CCMR2_OC3PE ((uint32_t)0x00000008) /*!<Output Compare 3 Preload enable */ + +#define TIM_CCMR2_OC3M ((uint32_t)0x00000070) /*!<OC3M[2:0] bits (Output Compare 3 Mode) */ +#define TIM_CCMR2_OC3M_0 ((uint32_t)0x00000010) /*!<Bit 0 */ +#define TIM_CCMR2_OC3M_1 ((uint32_t)0x00000020) /*!<Bit 1 */ +#define TIM_CCMR2_OC3M_2 ((uint32_t)0x00000040) /*!<Bit 2 */ +#define TIM_CCMR2_OC3M_3 ((uint32_t)0x00010000) /*!<Bit 3 */ + +#define TIM_CCMR2_OC3CE ((uint32_t)0x00000080) /*!<Output Compare 3 Clear Enable */ + +#define TIM_CCMR2_CC4S ((uint32_t)0x00000300) /*!<CC4S[1:0] bits (Capture/Compare 4 Selection) */ +#define TIM_CCMR2_CC4S_0 ((uint32_t)0x00000100) /*!<Bit 0 */ +#define TIM_CCMR2_CC4S_1 ((uint32_t)0x00000200) /*!<Bit 1 */ + +#define TIM_CCMR2_OC4FE ((uint32_t)0x00000400) /*!<Output Compare 4 Fast enable */ +#define TIM_CCMR2_OC4PE ((uint32_t)0x00000800) /*!<Output Compare 4 Preload enable */ + +#define TIM_CCMR2_OC4M ((uint32_t)0x00007000) /*!<OC4M[2:0] bits (Output Compare 4 Mode) */ +#define TIM_CCMR2_OC4M_0 ((uint32_t)0x00001000) /*!<Bit 0 */ +#define TIM_CCMR2_OC4M_1 ((uint32_t)0x00002000) /*!<Bit 1 */ +#define TIM_CCMR2_OC4M_2 ((uint32_t)0x00004000) /*!<Bit 2 */ +#define TIM_CCMR2_OC4M_3 ((uint32_t)0x00100000) /*!<Bit 3 */ + +#define TIM_CCMR2_OC4CE ((uint32_t)0x00008000) /*!<Output Compare 4 Clear Enable */ + +/*----------------------------------------------------------------------------*/ + +#define TIM_CCMR2_IC3PSC ((uint16_t)0x0000000C) /*!<IC3PSC[1:0] bits (Input Capture 3 Prescaler) */ +#define TIM_CCMR2_IC3PSC_0 ((uint16_t)0x00000004) /*!<Bit 0 */ +#define TIM_CCMR2_IC3PSC_1 ((uint16_t)0x00000008) /*!<Bit 1 */ + +#define TIM_CCMR2_IC3F ((uint16_t)0x000000F0) /*!<IC3F[3:0] bits (Input Capture 3 Filter) */ +#define TIM_CCMR2_IC3F_0 ((uint16_t)0x00000010) /*!<Bit 0 */ +#define TIM_CCMR2_IC3F_1 ((uint16_t)0x00000020) /*!<Bit 1 */ +#define TIM_CCMR2_IC3F_2 ((uint16_t)0x00000040) /*!<Bit 2 */ +#define TIM_CCMR2_IC3F_3 ((uint16_t)0x00000080) /*!<Bit 3 */ + +#define TIM_CCMR2_IC4PSC ((uint16_t)0x00000C00) /*!<IC4PSC[1:0] bits (Input Capture 4 Prescaler) */ +#define TIM_CCMR2_IC4PSC_0 ((uint16_t)0x00000400) /*!<Bit 0 */ +#define TIM_CCMR2_IC4PSC_1 ((uint16_t)0x00000800) /*!<Bit 1 */ + +#define TIM_CCMR2_IC4F ((uint16_t)0x0000F000) /*!<IC4F[3:0] bits (Input Capture 4 Filter) */ +#define TIM_CCMR2_IC4F_0 ((uint16_t)0x00001000) /*!<Bit 0 */ +#define TIM_CCMR2_IC4F_1 ((uint16_t)0x00002000) /*!<Bit 1 */ +#define TIM_CCMR2_IC4F_2 ((uint16_t)0x00004000) /*!<Bit 2 */ +#define TIM_CCMR2_IC4F_3 ((uint16_t)0x00008000) /*!<Bit 3 */ + +/******************* Bit definition for TIM_CCER register *******************/ +#define TIM_CCER_CC1E ((uint32_t)0x00000001) /*!<Capture/Compare 1 output enable */ +#define TIM_CCER_CC1P ((uint32_t)0x00000002) /*!<Capture/Compare 1 output Polarity */ +#define TIM_CCER_CC1NE ((uint32_t)0x00000004) /*!<Capture/Compare 1 Complementary output enable */ +#define TIM_CCER_CC1NP ((uint32_t)0x00000008) /*!<Capture/Compare 1 Complementary output Polarity */ +#define TIM_CCER_CC2E ((uint32_t)0x00000010) /*!<Capture/Compare 2 output enable */ +#define TIM_CCER_CC2P ((uint32_t)0x00000020) /*!<Capture/Compare 2 output Polarity */ +#define TIM_CCER_CC2NE ((uint32_t)0x00000040) /*!<Capture/Compare 2 Complementary output enable */ +#define TIM_CCER_CC2NP ((uint32_t)0x00000080) /*!<Capture/Compare 2 Complementary output Polarity */ +#define TIM_CCER_CC3E ((uint32_t)0x00000100) /*!<Capture/Compare 3 output enable */ +#define TIM_CCER_CC3P ((uint32_t)0x00000200) /*!<Capture/Compare 3 output Polarity */ +#define TIM_CCER_CC3NE ((uint32_t)0x00000400) /*!<Capture/Compare 3 Complementary output enable */ +#define TIM_CCER_CC3NP ((uint32_t)0x00000800) /*!<Capture/Compare 3 Complementary output Polarity */ +#define TIM_CCER_CC4E ((uint32_t)0x00001000) /*!<Capture/Compare 4 output enable */ +#define TIM_CCER_CC4P ((uint32_t)0x00002000) /*!<Capture/Compare 4 output Polarity */ +#define TIM_CCER_CC4NP ((uint32_t)0x00008000) /*!<Capture/Compare 4 Complementary output Polarity */ +#define TIM_CCER_CC5E ((uint32_t)0x00010000) /*!<Capture/Compare 5 output enable */ +#define TIM_CCER_CC5P ((uint32_t)0x00020000) /*!<Capture/Compare 5 output Polarity */ +#define TIM_CCER_CC6E ((uint32_t)0x00100000) /*!<Capture/Compare 6 output enable */ +#define TIM_CCER_CC6P ((uint32_t)0x00200000) /*!<Capture/Compare 6 output Polarity */ +/******************* Bit definition for TIM_CNT register ********************/ +#define TIM_CNT_CNT ((uint32_t)0xFFFFFFFF) /*!<Counter Value */ +#define TIM_CNT_UIFCPY ((uint32_t)0x80000000) /*!<Update interrupt flag copy */ +/******************* Bit definition for TIM_PSC register ********************/ +#define TIM_PSC_PSC ((uint16_t)0xFFFF) /*!<Prescaler Value */ + +/******************* Bit definition for TIM_ARR register ********************/ +#define TIM_ARR_ARR ((uint32_t)0xFFFFFFFF) /*!<actual auto-reload Value */ + +/******************* Bit definition for TIM_RCR register ********************/ +#define TIM_RCR_REP ((uint8_t)0xFF) /*!<Repetition Counter Value */ + +/******************* Bit definition for TIM_CCR1 register *******************/ +#define TIM_CCR1_CCR1 ((uint16_t)0xFFFF) /*!<Capture/Compare 1 Value */ + +/******************* Bit definition for TIM_CCR2 register *******************/ +#define TIM_CCR2_CCR2 ((uint16_t)0xFFFF) /*!<Capture/Compare 2 Value */ + +/******************* Bit definition for TIM_CCR3 register *******************/ +#define TIM_CCR3_CCR3 ((uint16_t)0xFFFF) /*!<Capture/Compare 3 Value */ + +/******************* Bit definition for TIM_CCR4 register *******************/ +#define TIM_CCR4_CCR4 ((uint16_t)0xFFFF) /*!<Capture/Compare 4 Value */ + +/******************* Bit definition for TIM_CCR5 register *******************/ +#define TIM_CCR5_CCR5 ((uint32_t)0xFFFFFFFF) /*!<Capture/Compare 5 Value */ +#define TIM_CCR5_GC5C1 ((uint32_t)0x20000000) /*!<Group Channel 5 and Channel 1 */ +#define TIM_CCR5_GC5C2 ((uint32_t)0x40000000) /*!<Group Channel 5 and Channel 2 */ +#define TIM_CCR5_GC5C3 ((uint32_t)0x80000000) /*!<Group Channel 5 and Channel 3 */ + +/******************* Bit definition for TIM_CCR6 register *******************/ +#define TIM_CCR6_CCR6 ((uint16_t)0xFFFF) /*!<Capture/Compare 6 Value */ + +/******************* Bit definition for TIM_BDTR register *******************/ +#define TIM_BDTR_DTG ((uint32_t)0x000000FF) /*!<DTG[0:7] bits (Dead-Time Generator set-up) */ +#define TIM_BDTR_DTG_0 ((uint32_t)0x00000001) /*!<Bit 0 */ +#define TIM_BDTR_DTG_1 ((uint32_t)0x00000002) /*!<Bit 1 */ +#define TIM_BDTR_DTG_2 ((uint32_t)0x00000004) /*!<Bit 2 */ +#define TIM_BDTR_DTG_3 ((uint32_t)0x00000008) /*!<Bit 3 */ +#define TIM_BDTR_DTG_4 ((uint32_t)0x00000010) /*!<Bit 4 */ +#define TIM_BDTR_DTG_5 ((uint32_t)0x00000020) /*!<Bit 5 */ +#define TIM_BDTR_DTG_6 ((uint32_t)0x00000040) /*!<Bit 6 */ +#define TIM_BDTR_DTG_7 ((uint32_t)0x00000080) /*!<Bit 7 */ + +#define TIM_BDTR_LOCK ((uint32_t)0x00000300) /*!<LOCK[1:0] bits (Lock Configuration) */ +#define TIM_BDTR_LOCK_0 ((uint32_t)0x00000100) /*!<Bit 0 */ +#define TIM_BDTR_LOCK_1 ((uint32_t)0x00000200) /*!<Bit 1 */ + +#define TIM_BDTR_OSSI ((uint32_t)0x00000400) /*!<Off-State Selection for Idle mode */ +#define TIM_BDTR_OSSR ((uint32_t)0x00000800) /*!<Off-State Selection for Run mode */ +#define TIM_BDTR_BKE ((uint32_t)0x00001000) /*!<Break enable for Break1 */ +#define TIM_BDTR_BKP ((uint32_t)0x00002000) /*!<Break Polarity for Break1 */ +#define TIM_BDTR_AOE ((uint32_t)0x00004000) /*!<Automatic Output enable */ +#define TIM_BDTR_MOE ((uint32_t)0x00008000) /*!<Main Output enable */ + +#define TIM_BDTR_BKF ((uint32_t)0x000F0000) /*!<Break Filter for Break1 */ +#define TIM_BDTR_BK2F ((uint32_t)0x00F00000) /*!<Break Filter for Break2 */ + +#define TIM_BDTR_BK2E ((uint32_t)0x01000000) /*!<Break enable for Break2 */ +#define TIM_BDTR_BK2P ((uint32_t)0x02000000) /*!<Break Polarity for Break2 */ + +/******************* Bit definition for TIM_DCR register ********************/ +#define TIM_DCR_DBA ((uint16_t)0x001F) /*!<DBA[4:0] bits (DMA Base Address) */ +#define TIM_DCR_DBA_0 ((uint16_t)0x0001) /*!<Bit 0 */ +#define TIM_DCR_DBA_1 ((uint16_t)0x0002) /*!<Bit 1 */ +#define TIM_DCR_DBA_2 ((uint16_t)0x0004) /*!<Bit 2 */ +#define TIM_DCR_DBA_3 ((uint16_t)0x0008) /*!<Bit 3 */ +#define TIM_DCR_DBA_4 ((uint16_t)0x0010) /*!<Bit 4 */ + +#define TIM_DCR_DBL ((uint16_t)0x1F00) /*!<DBL[4:0] bits (DMA Burst Length) */ +#define TIM_DCR_DBL_0 ((uint16_t)0x0100) /*!<Bit 0 */ +#define TIM_DCR_DBL_1 ((uint16_t)0x0200) /*!<Bit 1 */ +#define TIM_DCR_DBL_2 ((uint16_t)0x0400) /*!<Bit 2 */ +#define TIM_DCR_DBL_3 ((uint16_t)0x0800) /*!<Bit 3 */ +#define TIM_DCR_DBL_4 ((uint16_t)0x1000) /*!<Bit 4 */ + +/******************* Bit definition for TIM_DMAR register *******************/ +#define TIM_DMAR_DMAB ((uint16_t)0xFFFF) /*!<DMA register for burst accesses */ + +/******************* Bit definition for TIM16_OR register *********************/ +#define TIM16_OR_TI1_RMP ((uint16_t)0x00C0) /*!<TI1_RMP[1:0] bits (TIM16 Input 1 remap) */ +#define TIM16_OR_TI1_RMP_0 ((uint16_t)0x0040) /*!<Bit 0 */ +#define TIM16_OR_TI1_RMP_1 ((uint16_t)0x0080) /*!<Bit 1 */ + +/******************* Bit definition for TIM1_OR register *********************/ +#define TIM1_OR_ETR_RMP ((uint16_t)0x000F) /*!<ETR_RMP[3:0] bits (TIM1 ETR remap) */ +#define TIM1_OR_ETR_RMP_0 ((uint16_t)0x0001) /*!<Bit 0 */ +#define TIM1_OR_ETR_RMP_1 ((uint16_t)0x0002) /*!<Bit 1 */ +#define TIM1_OR_ETR_RMP_2 ((uint16_t)0x0004) /*!<Bit 2 */ +#define TIM1_OR_ETR_RMP_3 ((uint16_t)0x0008) /*!<Bit 3 */ + +/******************* Bit definition for TIM8_OR register *********************/ +#define TIM8_OR_ETR_RMP ((uint16_t)0x000F) /*!<ETR_RMP[3:0] bits (TIM8 ETR remap) */ +#define TIM8_OR_ETR_RMP_0 ((uint16_t)0x0001) /*!<Bit 0 */ +#define TIM8_OR_ETR_RMP_1 ((uint16_t)0x0002) /*!<Bit 1 */ +#define TIM8_OR_ETR_RMP_2 ((uint16_t)0x0004) /*!<Bit 2 */ +#define TIM8_OR_ETR_RMP_3 ((uint16_t)0x0008) /*!<Bit 3 */ + +/****************** Bit definition for TIM_CCMR3 register *******************/ +#define TIM_CCMR3_OC5FE ((uint32_t)0x00000004) /*!<Output Compare 5 Fast enable */ +#define TIM_CCMR3_OC5PE ((uint32_t)0x00000008) /*!<Output Compare 5 Preload enable */ + +#define TIM_CCMR3_OC5M ((uint32_t)0x00000070) /*!<OC5M[2:0] bits (Output Compare 5 Mode) */ +#define TIM_CCMR3_OC5M_0 ((uint32_t)0x00000010) /*!<Bit 0 */ +#define TIM_CCMR3_OC5M_1 ((uint32_t)0x00000020) /*!<Bit 1 */ +#define TIM_CCMR3_OC5M_2 ((uint32_t)0x00000040) /*!<Bit 2 */ +#define TIM_CCMR3_OC5M_3 ((uint32_t)0x00010000) /*!<Bit 3 */ + +#define TIM_CCMR3_OC5CE ((uint32_t)0x00000080) /*!<Output Compare 5 Clear Enable */ + +#define TIM_CCMR3_OC6FE ((uint32_t)0x00000400) /*!<Output Compare 4 Fast enable */ +#define TIM_CCMR3_OC6PE ((uint32_t)0x00000800) /*!<Output Compare 4 Preload enable */ + +#define TIM_CCMR3_OC6M ((uint32_t)0x00007000) /*!<OC4M[2:0] bits (Output Compare 4 Mode) */ +#define TIM_CCMR3_OC6M_0 ((uint32_t)0x00001000) /*!<Bit 0 */ +#define TIM_CCMR3_OC6M_1 ((uint32_t)0x00002000) /*!<Bit 1 */ +#define TIM_CCMR3_OC6M_2 ((uint32_t)0x00004000) /*!<Bit 2 */ +#define TIM_CCMR3_OC6M_3 ((uint32_t)0x00100000) /*!<Bit 3 */ + +#define TIM_CCMR3_OC6CE ((uint32_t)0x00008000) /*!<Output Compare 4 Clear Enable */ + +/******************************************************************************/ +/* */ +/* Universal Synchronous Asynchronous Receiver Transmitter (USART) */ +/* */ +/******************************************************************************/ +/****************** Bit definition for USART_CR1 register *******************/ +#define USART_CR1_UE ((uint32_t)0x00000001) /*!< USART Enable */ +#define USART_CR1_UESM ((uint32_t)0x00000002) /*!< USART Enable in STOP Mode */ +#define USART_CR1_RE ((uint32_t)0x00000004) /*!< Receiver Enable */ +#define USART_CR1_TE ((uint32_t)0x00000008) /*!< Transmitter Enable */ +#define USART_CR1_IDLEIE ((uint32_t)0x00000010) /*!< IDLE Interrupt Enable */ +#define USART_CR1_RXNEIE ((uint32_t)0x00000020) /*!< RXNE Interrupt Enable */ +#define USART_CR1_TCIE ((uint32_t)0x00000040) /*!< Transmission Complete Interrupt Enable */ +#define USART_CR1_TXEIE ((uint32_t)0x00000080) /*!< TXE Interrupt Enable */ +#define USART_CR1_PEIE ((uint32_t)0x00000100) /*!< PE Interrupt Enable */ +#define USART_CR1_PS ((uint32_t)0x00000200) /*!< Parity Selection */ +#define USART_CR1_PCE ((uint32_t)0x00000400) /*!< Parity Control Enable */ +#define USART_CR1_WAKE ((uint32_t)0x00000800) /*!< Receiver Wakeup method */ +#define USART_CR1_M ((uint32_t)0x00001000) /*!< Word length */ +#define USART_CR1_MME ((uint32_t)0x00002000) /*!< Mute Mode Enable */ +#define USART_CR1_CMIE ((uint32_t)0x00004000) /*!< Character match interrupt enable */ +#define USART_CR1_OVER8 ((uint32_t)0x00008000) /*!< Oversampling by 8-bit or 16-bit mode */ +#define USART_CR1_DEDT ((uint32_t)0x001F0000) /*!< DEDT[4:0] bits (Driver Enable Deassertion Time) */ +#define USART_CR1_DEDT_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define USART_CR1_DEDT_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define USART_CR1_DEDT_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define USART_CR1_DEDT_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define USART_CR1_DEDT_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define USART_CR1_DEAT ((uint32_t)0x03E00000) /*!< DEAT[4:0] bits (Driver Enable Assertion Time) */ +#define USART_CR1_DEAT_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define USART_CR1_DEAT_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define USART_CR1_DEAT_2 ((uint32_t)0x00800000) /*!< Bit 2 */ +#define USART_CR1_DEAT_3 ((uint32_t)0x01000000) /*!< Bit 3 */ +#define USART_CR1_DEAT_4 ((uint32_t)0x02000000) /*!< Bit 4 */ +#define USART_CR1_RTOIE ((uint32_t)0x04000000) /*!< Receive Time Out interrupt enable */ +#define USART_CR1_EOBIE ((uint32_t)0x08000000) /*!< End of Block interrupt enable */ + +/****************** Bit definition for USART_CR2 register *******************/ +#define USART_CR2_ADDM7 ((uint32_t)0x00000010) /*!< 7-bit or 4-bit Address Detection */ +#define USART_CR2_LBDL ((uint32_t)0x00000020) /*!< LIN Break Detection Length */ +#define USART_CR2_LBDIE ((uint32_t)0x00000040) /*!< LIN Break Detection Interrupt Enable */ +#define USART_CR2_LBCL ((uint32_t)0x00000100) /*!< Last Bit Clock pulse */ +#define USART_CR2_CPHA ((uint32_t)0x00000200) /*!< Clock Phase */ +#define USART_CR2_CPOL ((uint32_t)0x00000400) /*!< Clock Polarity */ +#define USART_CR2_CLKEN ((uint32_t)0x00000800) /*!< Clock Enable */ +#define USART_CR2_STOP ((uint32_t)0x00003000) /*!< STOP[1:0] bits (STOP bits) */ +#define USART_CR2_STOP_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define USART_CR2_STOP_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define USART_CR2_LINEN ((uint32_t)0x00004000) /*!< LIN mode enable */ +#define USART_CR2_SWAP ((uint32_t)0x00008000) /*!< SWAP TX/RX pins */ +#define USART_CR2_RXINV ((uint32_t)0x00010000) /*!< RX pin active level inversion */ +#define USART_CR2_TXINV ((uint32_t)0x00020000) /*!< TX pin active level inversion */ +#define USART_CR2_DATAINV ((uint32_t)0x00040000) /*!< Binary data inversion */ +#define USART_CR2_MSBFIRST ((uint32_t)0x00080000) /*!< Most Significant Bit First */ +#define USART_CR2_ABREN ((uint32_t)0x00100000) /*!< Auto Baud-Rate Enable*/ +#define USART_CR2_ABRMODE ((uint32_t)0x00600000) /*!< ABRMOD[1:0] bits (Auto Baud-Rate Mode) */ +#define USART_CR2_ABRMODE_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define USART_CR2_ABRMODE_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define USART_CR2_RTOEN ((uint32_t)0x00800000) /*!< Receiver Time-Out enable */ +#define USART_CR2_ADD ((uint32_t)0xFF000000) /*!< Address of the USART node */ + +/****************** Bit definition for USART_CR3 register *******************/ +#define USART_CR3_EIE ((uint32_t)0x00000001) /*!< Error Interrupt Enable */ +#define USART_CR3_IREN ((uint32_t)0x00000002) /*!< IrDA mode Enable */ +#define USART_CR3_IRLP ((uint32_t)0x00000004) /*!< IrDA Low-Power */ +#define USART_CR3_HDSEL ((uint32_t)0x00000008) /*!< Half-Duplex Selection */ +#define USART_CR3_NACK ((uint32_t)0x00000010) /*!< SmartCard NACK enable */ +#define USART_CR3_SCEN ((uint32_t)0x00000020) /*!< SmartCard mode enable */ +#define USART_CR3_DMAR ((uint32_t)0x00000040) /*!< DMA Enable Receiver */ +#define USART_CR3_DMAT ((uint32_t)0x00000080) /*!< DMA Enable Transmitter */ +#define USART_CR3_RTSE ((uint32_t)0x00000100) /*!< RTS Enable */ +#define USART_CR3_CTSE ((uint32_t)0x00000200) /*!< CTS Enable */ +#define USART_CR3_CTSIE ((uint32_t)0x00000400) /*!< CTS Interrupt Enable */ +#define USART_CR3_ONEBIT ((uint32_t)0x00000800) /*!< One sample bit method enable */ +#define USART_CR3_OVRDIS ((uint32_t)0x00001000) /*!< Overrun Disable */ +#define USART_CR3_DDRE ((uint32_t)0x00002000) /*!< DMA Disable on Reception Error */ +#define USART_CR3_DEM ((uint32_t)0x00004000) /*!< Driver Enable Mode */ +#define USART_CR3_DEP ((uint32_t)0x00008000) /*!< Driver Enable Polarity Selection */ +#define USART_CR3_SCARCNT ((uint32_t)0x000E0000) /*!< SCARCNT[2:0] bits (SmartCard Auto-Retry Count) */ +#define USART_CR3_SCARCNT_0 ((uint32_t)0x00020000) /*!< Bit 0 */ +#define USART_CR3_SCARCNT_1 ((uint32_t)0x00040000) /*!< Bit 1 */ +#define USART_CR3_SCARCNT_2 ((uint32_t)0x00080000) /*!< Bit 2 */ +#define USART_CR3_WUS ((uint32_t)0x00300000) /*!< WUS[1:0] bits (Wake UP Interrupt Flag Selection) */ +#define USART_CR3_WUS_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define USART_CR3_WUS_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define USART_CR3_WUFIE ((uint32_t)0x00400000) /*!< Wake Up Interrupt Enable */ + +/****************** Bit definition for USART_BRR register *******************/ +#define USART_BRR_DIV_FRACTION ((uint16_t)0x000F) /*!< Fraction of USARTDIV */ +#define USART_BRR_DIV_MANTISSA ((uint16_t)0xFFF0) /*!< Mantissa of USARTDIV */ + +/****************** Bit definition for USART_GTPR register ******************/ +#define USART_GTPR_PSC ((uint16_t)0x00FF) /*!< PSC[7:0] bits (Prescaler value) */ +#define USART_GTPR_GT ((uint16_t)0xFF00) /*!< GT[7:0] bits (Guard time value) */ + + +/******************* Bit definition for USART_RTOR register *****************/ +#define USART_RTOR_RTO ((uint32_t)0x00FFFFFF) /*!< Receiver Time Out Value */ +#define USART_RTOR_BLEN ((uint32_t)0xFF000000) /*!< Block Length */ + +/******************* Bit definition for USART_RQR register ******************/ +#define USART_RQR_ABRRQ ((uint16_t)0x0001) /*!< Auto-Baud Rate Request */ +#define USART_RQR_SBKRQ ((uint16_t)0x0002) /*!< Send Break Request */ +#define USART_RQR_MMRQ ((uint16_t)0x0004) /*!< Mute Mode Request */ +#define USART_RQR_RXFRQ ((uint16_t)0x0008) /*!< Receive Data flush Request */ +#define USART_RQR_TXFRQ ((uint16_t)0x0010) /*!< Transmit data flush Request */ + +/******************* Bit definition for USART_ISR register ******************/ +#define USART_ISR_PE ((uint32_t)0x00000001) /*!< Parity Error */ +#define USART_ISR_FE ((uint32_t)0x00000002) /*!< Framing Error */ +#define USART_ISR_NE ((uint32_t)0x00000004) /*!< Noise detected Flag */ +#define USART_ISR_ORE ((uint32_t)0x00000008) /*!< OverRun Error */ +#define USART_ISR_IDLE ((uint32_t)0x00000010) /*!< IDLE line detected */ +#define USART_ISR_RXNE ((uint32_t)0x00000020) /*!< Read Data Register Not Empty */ +#define USART_ISR_TC ((uint32_t)0x00000040) /*!< Transmission Complete */ +#define USART_ISR_TXE ((uint32_t)0x00000080) /*!< Transmit Data Register Empty */ +#define USART_ISR_LBD ((uint32_t)0x00000100) /*!< LIN Break Detection Flag */ +#define USART_ISR_CTSIF ((uint32_t)0x00000200) /*!< CTS interrupt flag */ +#define USART_ISR_CTS ((uint32_t)0x00000400) /*!< CTS flag */ +#define USART_ISR_RTOF ((uint32_t)0x00000800) /*!< Receiver Time Out */ +#define USART_ISR_EOBF ((uint32_t)0x00001000) /*!< End Of Block Flag */ +#define USART_ISR_ABRE ((uint32_t)0x00004000) /*!< Auto-Baud Rate Error */ +#define USART_ISR_ABRF ((uint32_t)0x00008000) /*!< Auto-Baud Rate Flag */ +#define USART_ISR_BUSY ((uint32_t)0x00010000) /*!< Busy Flag */ +#define USART_ISR_CMF ((uint32_t)0x00020000) /*!< Character Match Flag */ +#define USART_ISR_SBKF ((uint32_t)0x00040000) /*!< Send Break Flag */ +#define USART_ISR_RWU ((uint32_t)0x00080000) /*!< Receive Wake Up from mute mode Flag */ +#define USART_ISR_WUF ((uint32_t)0x00100000) /*!< Wake Up from stop mode Flag */ +#define USART_ISR_TEACK ((uint32_t)0x00200000) /*!< Transmit Enable Acknowledge Flag */ +#define USART_ISR_REACK ((uint32_t)0x00400000) /*!< Receive Enable Acknowledge Flag */ + +/******************* Bit definition for USART_ICR register ******************/ +#define USART_ICR_PECF ((uint32_t)0x00000001) /*!< Parity Error Clear Flag */ +#define USART_ICR_FECF ((uint32_t)0x00000002) /*!< Framing Error Clear Flag */ +#define USART_ICR_NCF ((uint32_t)0x00000004) /*!< Noise detected Clear Flag */ +#define USART_ICR_ORECF ((uint32_t)0x00000008) /*!< OverRun Error Clear Flag */ +#define USART_ICR_IDLECF ((uint32_t)0x00000010) /*!< IDLE line detected Clear Flag */ +#define USART_ICR_TCCF ((uint32_t)0x00000040) /*!< Transmission Complete Clear Flag */ +#define USART_ICR_LBDCF ((uint32_t)0x00000100) /*!< LIN Break Detection Clear Flag */ +#define USART_ICR_CTSCF ((uint32_t)0x00000200) /*!< CTS Interrupt Clear Flag */ +#define USART_ICR_RTOCF ((uint32_t)0x00000800) /*!< Receiver Time Out Clear Flag */ +#define USART_ICR_EOBCF ((uint32_t)0x00001000) /*!< End Of Block Clear Flag */ +#define USART_ICR_CMCF ((uint32_t)0x00020000) /*!< Character Match Clear Flag */ +#define USART_ICR_WUCF ((uint32_t)0x00100000) /*!< Wake Up from stop mode Clear Flag */ + +/******************* Bit definition for USART_RDR register ******************/ +#define USART_RDR_RDR ((uint16_t)0x01FF) /*!< RDR[8:0] bits (Receive Data value) */ + +/******************* Bit definition for USART_TDR register ******************/ +#define USART_TDR_TDR ((uint16_t)0x01FF) /*!< TDR[8:0] bits (Transmit Data value) */ + +/******************************************************************************/ +/* */ +/* Window WATCHDOG */ +/* */ +/******************************************************************************/ +/******************* Bit definition for WWDG_CR register ********************/ +#define WWDG_CR_T ((uint8_t)0x7F) /*!<T[6:0] bits (7-Bit counter (MSB to LSB)) */ +#define WWDG_CR_T0 ((uint8_t)0x01) /*!<Bit 0 */ +#define WWDG_CR_T1 ((uint8_t)0x02) /*!<Bit 1 */ +#define WWDG_CR_T2 ((uint8_t)0x04) /*!<Bit 2 */ +#define WWDG_CR_T3 ((uint8_t)0x08) /*!<Bit 3 */ +#define WWDG_CR_T4 ((uint8_t)0x10) /*!<Bit 4 */ +#define WWDG_CR_T5 ((uint8_t)0x20) /*!<Bit 5 */ +#define WWDG_CR_T6 ((uint8_t)0x40) /*!<Bit 6 */ + +#define WWDG_CR_WDGA ((uint8_t)0x80) /*!<Activation bit */ + +/******************* Bit definition for WWDG_CFR register *******************/ +#define WWDG_CFR_W ((uint16_t)0x007F) /*!<W[6:0] bits (7-bit window value) */ +#define WWDG_CFR_W0 ((uint16_t)0x0001) /*!<Bit 0 */ +#define WWDG_CFR_W1 ((uint16_t)0x0002) /*!<Bit 1 */ +#define WWDG_CFR_W2 ((uint16_t)0x0004) /*!<Bit 2 */ +#define WWDG_CFR_W3 ((uint16_t)0x0008) /*!<Bit 3 */ +#define WWDG_CFR_W4 ((uint16_t)0x0010) /*!<Bit 4 */ +#define WWDG_CFR_W5 ((uint16_t)0x0020) /*!<Bit 5 */ +#define WWDG_CFR_W6 ((uint16_t)0x0040) /*!<Bit 6 */ + +#define WWDG_CFR_WDGTB ((uint16_t)0x0180) /*!<WDGTB[1:0] bits (Timer Base) */ +#define WWDG_CFR_WDGTB0 ((uint16_t)0x0080) /*!<Bit 0 */ +#define WWDG_CFR_WDGTB1 ((uint16_t)0x0100) /*!<Bit 1 */ + +#define WWDG_CFR_EWI ((uint16_t)0x0200) /*!<Early Wakeup Interrupt */ + +/******************* Bit definition for WWDG_SR register ********************/ +#define WWDG_SR_EWIF ((uint8_t)0x01) /*!<Early Wakeup Interrupt Flag */ + +/** + * @} + */ + + /** + * @} + */ + +#ifdef USE_STDPERIPH_DRIVER + #include "stm32f30x_conf.h" +#endif /*!< USE_STDPERIPH_DRIVER */ + +/** @addtogroup Exported_macro + * @{ + */ + +#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, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __STM32F30x_H */ + +/** + * @} + */ + + /** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_adc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,830 @@ +/** + ****************************************************************************** + * @file stm32f30x_adc.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the ADC firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_ADC_H +#define __STM32F30x_ADC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup ADC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief ADC Init structure definition + */ +typedef struct +{ + + uint32_t ADC_ContinuousConvMode; /*!< Specifies whether the conversion is performed in + Continuous or Single mode. + This parameter can be set to ENABLE or DISABLE. */ + uint32_t ADC_Resolution; /*!< Configures the ADC resolution. + This parameter can be a value of @ref ADC_resolution */ + uint32_t ADC_ExternalTrigConvEvent; /*!< Defines the external trigger used to start the analog + to digital conversion of regular channels. This parameter + can be a value of @ref ADC_external_trigger_sources_for_regular_channels_conversion */ + uint32_t ADC_ExternalTrigEventEdge; /*!< Select the external trigger edge and enable the trigger of a regular group. + This parameter can be a value of + @ref ADC_external_trigger_edge_for_regular_channels_conversion */ + uint32_t ADC_DataAlign; /*!< Specifies whether the ADC data alignment is left or right. + This parameter can be a value of @ref ADC_data_align */ + uint32_t ADC_OverrunMode; /*!< Specifies the way data overrun are managed. + This parameter can be set to ENABLE or DISABLE. */ + uint32_t ADC_AutoInjMode; /*!< Enable/disable automatic injected group conversion after + regular group conversion. + This parameter can be set to ENABLE or DISABLE. */ + uint8_t ADC_NbrOfRegChannel; /*!< Specifies the number of ADC channels that will be converted + using the sequencer for regular channel group. + This parameter must range from 1 to 16. */ +}ADC_InitTypeDef; + +/** + * @} + */ +/** + * @brief ADC Init structure definition + */ +typedef struct +{ + + uint32_t ADC_ExternalTrigInjecConvEvent; /*!< Defines the external trigger used to start the analog + to digital conversion of injected channels. This parameter + can be a value of @ref ADC_external_trigger_sources_for_Injected_channels_conversion */ + uint32_t ADC_ExternalTrigInjecEventEdge; /*!< Select the external trigger edge and enable the trigger of an injected group. + This parameter can be a value of + @ref ADC_external_trigger_edge_for_Injected_channels_conversion */ + uint8_t ADC_NbrOfInjecChannel; /*!< Specifies the number of ADC channels that will be converted + using the sequencer for injected channel group. + This parameter must range from 1 to 4. */ + uint32_t ADC_InjecSequence1; + uint32_t ADC_InjecSequence2; + uint32_t ADC_InjecSequence3; + uint32_t ADC_InjecSequence4; +}ADC_InjectedInitTypeDef; + +/** + * @} + */ +typedef struct +{ + uint32_t ADC_Mode; /*!< Configures the ADC to operate in + independent or multi mode. + This parameter can be a value of @ref ADC_mode */ + uint32_t ADC_Clock; /*!< Select the clock of the ADC. The clock is common for both master + and slave ADCs. + This parameter can be a value of @ref ADC_Clock */ + uint32_t ADC_DMAAccessMode; /*!< Configures the Direct memory access mode for multi ADC mode. + This parameter can be a value of + @ref ADC_Direct_memory_access_mode_for_multi_mode */ + uint32_t ADC_DMAMode; /*!< Configures the DMA mode for ADC. + This parameter can be a value of @ref ADC_DMA_Mode_definition */ + uint8_t ADC_TwoSamplingDelay; /*!< Configures the Delay between 2 sampling phases. + This parameter can be a value between 0x0 and 0xF */ + +}ADC_CommonInitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup ADC_Exported_Constants + * @{ + */ + +#define IS_ADC_ALL_PERIPH(PERIPH) (((PERIPH) == ADC1) || \ + ((PERIPH) == ADC2) || \ + ((PERIPH) == ADC3) || \ + ((PERIPH) == ADC4)) + +#define IS_ADC_DMA_PERIPH(PERIPH) (((PERIPH) == ADC1) || \ + ((PERIPH) == ADC2) || \ + ((PERIPH) == ADC3) || \ + ((PERIPH) == ADC4)) + +/** @defgroup ADC_ContinuousConvMode + * @{ + */ +#define ADC_ContinuousConvMode_Enable ((uint32_t)0x00002000) /*!< ADC continuous conversion mode enable */ +#define ADC_ContinuousConvMode_Disable ((uint32_t)0x00000000) /*!< ADC continuous conversion mode disable */ +#define IS_ADC_CONVMODE(MODE) (((MODE) == ADC_ContinuousConvMode_Enable) || \ + ((MODE) == ADC_ContinuousConvMode_Disable)) +/** + * @} + */ +/** @defgroup ADC_OverunMode + * @{ + */ +#define ADC_OverrunMode_Enable ((uint32_t)0x00001000) /*!< ADC Overrun Mode enable */ +#define ADC_OverrunMode_Disable ((uint32_t)0x00000000) /*!< ADC Overrun Mode disable */ +#define IS_ADC_OVRUNMODE(MODE) (((MODE) == ADC_OverrunMode_Enable) || \ + ((MODE) == ADC_OverrunMode_Disable)) +/** + * @} + */ +/** @defgroup ADC_AutoInjecMode + * @{ + */ +#define ADC_AutoInjec_Enable ((uint32_t)0x02000000) /*!< ADC Auto injected Mode enable */ +#define ADC_AutoInjec_Disable ((uint32_t)0x00000000) /*!< ADC Auto injected Mode disable */ +#define IS_ADC_AUTOINJECMODE(MODE) (((MODE) == ADC_AutoInjec_Enable) || \ + ((MODE) == ADC_AutoInjec_Disable)) +/** + * @} + */ +/** @defgroup ADC_resolution + * @{ + */ +#define ADC_Resolution_12b ((uint32_t)0x00000000) /*!< ADC 12-bit resolution */ +#define ADC_Resolution_10b ((uint32_t)0x00000008) /*!< ADC 10-bit resolution */ +#define ADC_Resolution_8b ((uint32_t)0x00000010) /*!< ADC 8-bit resolution */ +#define ADC_Resolution_6b ((uint32_t)0x00000018) /*!< ADC 6-bit resolution */ +#define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_Resolution_12b) || \ + ((RESOLUTION) == ADC_Resolution_10b) || \ + ((RESOLUTION) == ADC_Resolution_8b) || \ + ((RESOLUTION) == ADC_Resolution_6b)) + +/** + * @} + */ + + +/** @defgroup ADC_external_trigger_edge_for_regular_channels_conversion + * @{ + */ +#define ADC_ExternalTrigEventEdge_None ((uint16_t)0x0000) /*!< ADC No external trigger for regular conversion */ +#define ADC_ExternalTrigEventEdge_RisingEdge ((uint16_t)0x0400) /*!< ADC external trigger rising edge for regular conversion */ +#define ADC_ExternalTrigEventEdge_FallingEdge ((uint16_t)0x0800) /*!< ADC ADC external trigger falling edge for regular conversion */ +#define ADC_ExternalTrigEventEdge_BothEdge ((uint16_t)0x0C00) /*!< ADC ADC external trigger both edges for regular conversion */ + +#define IS_EXTERNALTRIG_EDGE(EDGE) (((EDGE) == ADC_ExternalTrigEventEdge_None) || \ + ((EDGE) == ADC_ExternalTrigEventEdge_RisingEdge) || \ + ((EDGE) == ADC_ExternalTrigEventEdge_FallingEdge) || \ + ((EDGE) == ADC_ExternalTrigEventEdge_BothEdge)) + +/** + * @} + */ + +/** @defgroup ADC_external_trigger_edge_for_Injected_channels_conversion + * @{ + */ +#define ADC_ExternalTrigInjecEventEdge_None ((uint16_t)0x0000) /*!< ADC No external trigger for regular conversion */ +#define ADC_ExternalTrigInjecEventEdge_RisingEdge ((uint16_t)0x0040) /*!< ADC external trigger rising edge for injected conversion */ +#define ADC_ExternalTrigInjecEventEdge_FallingEdge ((uint16_t)0x0080) /*!< ADC external trigger falling edge for injected conversion */ +#define ADC_ExternalTrigInjecEventEdge_BothEdge ((uint16_t)0x00C0) /*!< ADC external trigger both edges for injected conversion */ + +#define IS_EXTERNALTRIGINJ_EDGE(EDGE) (((EDGE) == ADC_ExternalTrigInjecEventEdge_None) || \ + ((EDGE) == ADC_ExternalTrigInjecEventEdge_RisingEdge) || \ + ((EDGE) == ADC_ExternalTrigInjecEventEdge_FallingEdge) || \ + ((EDGE) == ADC_ExternalTrigInjecEventEdge_BothEdge)) + +/** @defgroup ADC_external_trigger_sources_for_regular_channels_conversion + * @{ + */ +#define ADC_ExternalTrigConvEvent_0 ((uint16_t)0x0000) /*!< ADC external trigger event 0 */ +#define ADC_ExternalTrigConvEvent_1 ((uint16_t)0x0040) /*!< ADC external trigger event 1 */ +#define ADC_ExternalTrigConvEvent_2 ((uint16_t)0x0080) /*!< ADC external trigger event 2 */ +#define ADC_ExternalTrigConvEvent_3 ((uint16_t)0x00C0) /*!< ADC external trigger event 3 */ +#define ADC_ExternalTrigConvEvent_4 ((uint16_t)0x0100) /*!< ADC external trigger event 4 */ +#define ADC_ExternalTrigConvEvent_5 ((uint16_t)0x0140) /*!< ADC external trigger event 5 */ +#define ADC_ExternalTrigConvEvent_6 ((uint16_t)0x0180) /*!< ADC external trigger event 6 */ +#define ADC_ExternalTrigConvEvent_7 ((uint16_t)0x01C0) /*!< ADC external trigger event 7 */ +#define ADC_ExternalTrigConvEvent_8 ((uint16_t)0x0200) /*!< ADC external trigger event 8 */ +#define ADC_ExternalTrigConvEvent_9 ((uint16_t)0x0240) /*!< ADC external trigger event 9 */ +#define ADC_ExternalTrigConvEvent_10 ((uint16_t)0x0280) /*!< ADC external trigger event 10 */ +#define ADC_ExternalTrigConvEvent_11 ((uint16_t)0x02C0) /*!< ADC external trigger event 11 */ +#define ADC_ExternalTrigConvEvent_12 ((uint16_t)0x0300) /*!< ADC external trigger event 12 */ +#define ADC_ExternalTrigConvEvent_13 ((uint16_t)0x0340) /*!< ADC external trigger event 13 */ +#define ADC_ExternalTrigConvEvent_14 ((uint16_t)0x0380) /*!< ADC external trigger event 14 */ +#define ADC_ExternalTrigConvEvent_15 ((uint16_t)0x03C0) /*!< ADC external trigger event 15 */ + +#define IS_ADC_EXT_TRIG(REGTRIG) (((REGTRIG) == ADC_ExternalTrigConvEvent_0) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_1) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_2) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_3) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_4) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_5) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_6) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_7) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_8) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_9) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_10) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_11) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_12) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_13) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_14) || \ + ((REGTRIG) == ADC_ExternalTrigConvEvent_15)) + +/** + * @} + */ + +/** @defgroup ADC_external_trigger_sources_for_Injected_channels_conversion + * @{ + */ + +#define ADC_ExternalTrigInjecConvEvent_0 ((uint16_t)0x0000) /*!< ADC external trigger for injected conversion event 0 */ +#define ADC_ExternalTrigInjecConvEvent_1 ((uint16_t)0x0004) /*!< ADC external trigger for injected conversion event 1 */ +#define ADC_ExternalTrigInjecConvEvent_2 ((uint16_t)0x0008) /*!< ADC external trigger for injected conversion event 2 */ +#define ADC_ExternalTrigInjecConvEvent_3 ((uint16_t)0x000C) /*!< ADC external trigger for injected conversion event 3 */ +#define ADC_ExternalTrigInjecConvEvent_4 ((uint16_t)0x0010) /*!< ADC external trigger for injected conversion event 4 */ +#define ADC_ExternalTrigInjecConvEvent_5 ((uint16_t)0x0014) /*!< ADC external trigger for injected conversion event 5 */ +#define ADC_ExternalTrigInjecConvEvent_6 ((uint16_t)0x0018) /*!< ADC external trigger for injected conversion event 6 */ +#define ADC_ExternalTrigInjecConvEvent_7 ((uint16_t)0x001C) /*!< ADC external trigger for injected conversion event 7 */ +#define ADC_ExternalTrigInjecConvEvent_8 ((uint16_t)0x0020) /*!< ADC external trigger for injected conversion event 8 */ +#define ADC_ExternalTrigInjecConvEvent_9 ((uint16_t)0x0024) /*!< ADC external trigger for injected conversion event 9 */ +#define ADC_ExternalTrigInjecConvEvent_10 ((uint16_t)0x0028) /*!< ADC external trigger for injected conversion event 10 */ +#define ADC_ExternalTrigInjecConvEvent_11 ((uint16_t)0x002C) /*!< ADC external trigger for injected conversion event 11 */ +#define ADC_ExternalTrigInjecConvEvent_12 ((uint16_t)0x0030) /*!< ADC external trigger for injected conversion event 12 */ +#define ADC_ExternalTrigInjecConvEvent_13 ((uint16_t)0x0034) /*!< ADC external trigger for injected conversion event 13 */ +#define ADC_ExternalTrigInjecConvEvent_14 ((uint16_t)0x0038) /*!< ADC external trigger for injected conversion event 14 */ +#define ADC_ExternalTrigInjecConvEvent_15 ((uint16_t)0x003C) /*!< ADC external trigger for injected conversion event 15 */ + +#define IS_ADC_EXT_INJEC_TRIG(INJTRIG) (((INJTRIG) == ADC_ExternalTrigInjecConvEvent_0) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_1) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_2) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_3) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_4) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_5) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_6) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_7) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_8) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_9) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_10) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_11) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_12) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_13) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_14) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConvEvent_15)) +/** + * @} + */ +/** @defgroup ADC_data_align + * @{ + */ + +#define ADC_DataAlign_Right ((uint32_t)0x00000000) /*!< ADC Data alignment right */ +#define ADC_DataAlign_Left ((uint32_t)0x00000020) /*!< ADC Data alignment left */ +#define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DataAlign_Right) || \ + ((ALIGN) == ADC_DataAlign_Left)) +/** + * @} + */ + +/** @defgroup ADC_channels + * @{ + */ + +#define ADC_Channel_1 ((uint8_t)0x01) /*!< ADC Channel 1 */ +#define ADC_Channel_2 ((uint8_t)0x02) /*!< ADC Channel 2 */ +#define ADC_Channel_3 ((uint8_t)0x03) /*!< ADC Channel 3 */ +#define ADC_Channel_4 ((uint8_t)0x04) /*!< ADC Channel 4 */ +#define ADC_Channel_5 ((uint8_t)0x05) /*!< ADC Channel 5 */ +#define ADC_Channel_6 ((uint8_t)0x06) /*!< ADC Channel 6 */ +#define ADC_Channel_7 ((uint8_t)0x07) /*!< ADC Channel 7 */ +#define ADC_Channel_8 ((uint8_t)0x08) /*!< ADC Channel 8 */ +#define ADC_Channel_9 ((uint8_t)0x09) /*!< ADC Channel 9 */ +#define ADC_Channel_10 ((uint8_t)0x0A) /*!< ADC Channel 10 */ +#define ADC_Channel_11 ((uint8_t)0x0B) /*!< ADC Channel 11 */ +#define ADC_Channel_12 ((uint8_t)0x0C) /*!< ADC Channel 12 */ +#define ADC_Channel_13 ((uint8_t)0x0D) /*!< ADC Channel 13 */ +#define ADC_Channel_14 ((uint8_t)0x0E) /*!< ADC Channel 14 */ +#define ADC_Channel_15 ((uint8_t)0x0F) /*!< ADC Channel 15 */ +#define ADC_Channel_16 ((uint8_t)0x10) /*!< ADC Channel 16 */ +#define ADC_Channel_17 ((uint8_t)0x11) /*!< ADC Channel 17 */ +#define ADC_Channel_18 ((uint8_t)0x12) /*!< ADC Channel 18 */ + +#define ADC_Channel_TempSensor ((uint8_t)ADC_Channel_16) +#define ADC_Channel_Vrefint ((uint8_t)ADC_Channel_18) +#define ADC_Channel_Vbat ((uint8_t)ADC_Channel_17) + +#define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_Channel_1) || \ + ((CHANNEL) == ADC_Channel_2) || \ + ((CHANNEL) == ADC_Channel_3) || \ + ((CHANNEL) == ADC_Channel_4) || \ + ((CHANNEL) == ADC_Channel_5) || \ + ((CHANNEL) == ADC_Channel_6) || \ + ((CHANNEL) == ADC_Channel_7) || \ + ((CHANNEL) == ADC_Channel_8) || \ + ((CHANNEL) == ADC_Channel_9) || \ + ((CHANNEL) == ADC_Channel_10) || \ + ((CHANNEL) == ADC_Channel_11) || \ + ((CHANNEL) == ADC_Channel_12) || \ + ((CHANNEL) == ADC_Channel_13) || \ + ((CHANNEL) == ADC_Channel_14) || \ + ((CHANNEL) == ADC_Channel_15) || \ + ((CHANNEL) == ADC_Channel_16) || \ + ((CHANNEL) == ADC_Channel_17) || \ + ((CHANNEL) == ADC_Channel_18)) +#define IS_ADC_DIFFCHANNEL(CHANNEL) (((CHANNEL) == ADC_Channel_1) || \ + ((CHANNEL) == ADC_Channel_2) || \ + ((CHANNEL) == ADC_Channel_3) || \ + ((CHANNEL) == ADC_Channel_4) || \ + ((CHANNEL) == ADC_Channel_5) || \ + ((CHANNEL) == ADC_Channel_6) || \ + ((CHANNEL) == ADC_Channel_7) || \ + ((CHANNEL) == ADC_Channel_8) || \ + ((CHANNEL) == ADC_Channel_9) || \ + ((CHANNEL) == ADC_Channel_10) || \ + ((CHANNEL) == ADC_Channel_11) || \ + ((CHANNEL) == ADC_Channel_12) || \ + ((CHANNEL) == ADC_Channel_13) || \ + ((CHANNEL) == ADC_Channel_14)) +/** + * @} + */ + +/** @defgroup ADC_mode + * @{ + */ +#define ADC_Mode_Independent ((uint32_t)0x00000000) /*!< ADC independent mode */ +#define ADC_Mode_CombRegSimulInjSimul ((uint32_t)0x00000001) /*!< ADC multi ADC mode: Combined Regular simultaneous injected simultaneous mode */ +#define ADC_Mode_CombRegSimulAltTrig ((uint32_t)0x00000002) /*!< ADC multi ADC mode: Combined Regular simultaneous Alternate trigger mode */ +#define ADC_Mode_InjSimul ((uint32_t)0x00000005) /*!< ADC multi ADC mode: Injected simultaneous mode */ +#define ADC_Mode_RegSimul ((uint32_t)0x00000006) /*!< ADC multi ADC mode: Regular simultaneous mode */ +#define ADC_Mode_Interleave ((uint32_t)0x00000007) /*!< ADC multi ADC mode: Interleave mode */ +#define ADC_Mode_AltTrig ((uint32_t)0x00000009) /*!< ADC multi ADC mode: Alternate Trigger mode */ + +#define IS_ADC_MODE(MODE) (((MODE) == ADC_Mode_Independent) || \ + ((MODE) == ADC_Mode_CombRegSimulInjSimul) || \ + ((MODE) == ADC_Mode_CombRegSimulAltTrig) || \ + ((MODE) == ADC_Mode_InjSimul) || \ + ((MODE) == ADC_Mode_RegSimul) || \ + ((MODE) == ADC_Mode_Interleave) || \ + ((MODE) == ADC_Mode_AltTrig)) + +/** + * @} + */ + +/** @defgroup ADC_Clock + * @{ + */ +#define ADC_Clock_AsynClkMode ((uint32_t)0x00000000) /*!< ADC Asynchronous clock mode */ +#define ADC_Clock_SynClkModeDiv1 ((uint32_t)0x00010000) /*!< Synchronous clock mode divided by 1 */ +#define ADC_Clock_SynClkModeDiv2 ((uint32_t)0x00020000) /*!< Synchronous clock mode divided by 2 */ +#define ADC_Clock_SynClkModeDiv4 ((uint32_t)0x00030000) /*!< Synchronous clock mode divided by 4 */ +#define IS_ADC_CLOCKMODE(CLOCK) (((CLOCK) == ADC_Clock_AsynClkMode) ||\ + ((CLOCK) == ADC_Clock_SynClkModeDiv1) ||\ + ((CLOCK) == ADC_Clock_SynClkModeDiv2)||\ + ((CLOCK) == ADC_Clock_SynClkModeDiv4)) +/** + * @} + */ +/** @defgroup ADC_Direct_memory_access_mode_for_multi_mode + * @{ + */ +#define ADC_DMAAccessMode_Disabled ((uint32_t)0x00000000) /*!< DMA mode disabled */ +#define ADC_DMAAccessMode_1 ((uint32_t)0x00008000) /*!< DMA mode enabled for 12 and 10-bit resolution (6 bit) */ +#define ADC_DMAAccessMode_2 ((uint32_t)0x0000C000) /*!< DMA mode enabled for 8 and 6-bit resolution (8bit) */ +#define IS_ADC_DMA_ACCESS_MODE(MODE) (((MODE) == ADC_DMAAccessMode_Disabled) || \ + ((MODE) == ADC_DMAAccessMode_1) || \ + ((MODE) == ADC_DMAAccessMode_2)) + +/** + * @} + */ +/** @defgroup ADC_sampling_time + * @{ + */ + +#define ADC_SampleTime_1Cycles5 ((uint8_t)0x00) /*!< ADC sampling time 1.5 cycle */ +#define ADC_SampleTime_2Cycles5 ((uint8_t)0x01) /*!< ADC sampling time 2.5 cycles */ +#define ADC_SampleTime_4Cycles5 ((uint8_t)0x02) /*!< ADC sampling time 4.5 cycles */ +#define ADC_SampleTime_7Cycles5 ((uint8_t)0x03) /*!< ADC sampling time 7.5 cycles */ +#define ADC_SampleTime_19Cycles5 ((uint8_t)0x04) /*!< ADC sampling time 19.5 cycles */ +#define ADC_SampleTime_61Cycles5 ((uint8_t)0x05) /*!< ADC sampling time 61.5 cycles */ +#define ADC_SampleTime_181Cycles5 ((uint8_t)0x06) /*!< ADC sampling time 181.5 cycles */ +#define ADC_SampleTime_601Cycles5 ((uint8_t)0x07) /*!< ADC sampling time 601.5 cycles */ +#define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SampleTime_1Cycles5) || \ + ((TIME) == ADC_SampleTime_2Cycles5) || \ + ((TIME) == ADC_SampleTime_4Cycles5) || \ + ((TIME) == ADC_SampleTime_7Cycles5) || \ + ((TIME) == ADC_SampleTime_19Cycles5) || \ + ((TIME) == ADC_SampleTime_61Cycles5) || \ + ((TIME) == ADC_SampleTime_181Cycles5) || \ + ((TIME) == ADC_SampleTime_601Cycles5)) +/** + * @} + */ + +/** @defgroup ADC_injected_Channel_selection + * @{ + */ + +#define ADC_InjectedChannel_1 ADC_Channel_1 /*!< ADC Injected channel 1 */ +#define ADC_InjectedChannel_2 ADC_Channel_2 /*!< ADC Injected channel 2 */ +#define ADC_InjectedChannel_3 ADC_Channel_3 /*!< ADC Injected channel 3 */ +#define ADC_InjectedChannel_4 ADC_Channel_4 /*!< ADC Injected channel 4 */ +#define ADC_InjectedChannel_5 ADC_Channel_5 /*!< ADC Injected channel 5 */ +#define ADC_InjectedChannel_6 ADC_Channel_6 /*!< ADC Injected channel 6 */ +#define ADC_InjectedChannel_7 ADC_Channel_7 /*!< ADC Injected channel 7 */ +#define ADC_InjectedChannel_8 ADC_Channel_8 /*!< ADC Injected channel 8 */ +#define ADC_InjectedChannel_9 ADC_Channel_9 /*!< ADC Injected channel 9 */ +#define ADC_InjectedChannel_10 ADC_Channel_10 /*!< ADC Injected channel 10 */ +#define ADC_InjectedChannel_11 ADC_Channel_11 /*!< ADC Injected channel 11 */ +#define ADC_InjectedChannel_12 ADC_Channel_12 /*!< ADC Injected channel 12 */ +#define ADC_InjectedChannel_13 ADC_Channel_13 /*!< ADC Injected channel 13 */ +#define ADC_InjectedChannel_14 ADC_Channel_14 /*!< ADC Injected channel 14 */ +#define ADC_InjectedChannel_15 ADC_Channel_15 /*!< ADC Injected channel 15 */ +#define ADC_InjectedChannel_16 ADC_Channel_16 /*!< ADC Injected channel 16 */ +#define ADC_InjectedChannel_17 ADC_Channel_17 /*!< ADC Injected channel 17 */ +#define ADC_InjectedChannel_18 ADC_Channel_18 /*!< ADC Injected channel 18 */ + +#define IS_ADC_INJECTED_CHANNEL(CHANNEL) (((CHANNEL) == ADC_InjectedChannel_1) || \ + ((CHANNEL) == ADC_InjectedChannel_2) || \ + ((CHANNEL) == ADC_InjectedChannel_3) || \ + ((CHANNEL) == ADC_InjectedChannel_4) ||\ + ((CHANNEL) == ADC_InjectedChannel_5) ||\ + ((CHANNEL) == ADC_InjectedChannel_6) ||\ + ((CHANNEL) == ADC_InjectedChannel_7) ||\ + ((CHANNEL) == ADC_InjectedChannel_8) ||\ + ((CHANNEL) == ADC_InjectedChannel_9) ||\ + ((CHANNEL) == ADC_InjectedChannel_10) ||\ + ((CHANNEL) == ADC_InjectedChannel_11) ||\ + ((CHANNEL) == ADC_InjectedChannel_12) ||\ + ((CHANNEL) == ADC_InjectedChannel_13) ||\ + ((CHANNEL) == ADC_InjectedChannel_14) ||\ + ((CHANNEL) == ADC_InjectedChannel_15) ||\ + ((CHANNEL) == ADC_InjectedChannel_16) ||\ + ((CHANNEL) == ADC_InjectedChannel_17) ||\ + ((CHANNEL) == ADC_InjectedChannel_18)) +/** + * @} + */ + +/** @defgroup ADC_injected_Sequence_selection + * @{ + */ + +#define ADC_InjectedSequence_1 ADC_Channel_1 /*!< ADC Injected sequence 1 */ +#define ADC_InjectedSequence_2 ADC_Channel_2 /*!< ADC Injected sequence 2 */ +#define ADC_InjectedSequence_3 ADC_Channel_3 /*!< ADC Injected sequence 3 */ +#define ADC_InjectedSequence_4 ADC_Channel_4 /*!< ADC Injected sequence 4 */ +#define IS_ADC_INJECTED_SEQUENCE(SEQUENCE) (((SEQUENCE) == ADC_InjectedSequence_1) || \ + ((SEQUENCE) == ADC_InjectedSequence_2) || \ + ((SEQUENCE) == ADC_InjectedSequence_3) || \ + ((SEQUENCE) == ADC_InjectedSequence_4)) +/** + * @} + */ + +/** @defgroup ADC_analog_watchdog_selection + * @{ + */ + +#define ADC_AnalogWatchdog_SingleRegEnable ((uint32_t)0x00C00000) /*!< ADC Analog watchdog single regular mode */ +#define ADC_AnalogWatchdog_SingleInjecEnable ((uint32_t)0x01400000) /*!< ADC Analog watchdog single injected mode */ +#define ADC_AnalogWatchdog_SingleRegOrInjecEnable ((uint32_t)0x01C00000) /*!< ADC Analog watchdog single regular or injected mode */ +#define ADC_AnalogWatchdog_AllRegEnable ((uint32_t)0x00800000) /*!< ADC Analog watchdog all regular mode */ +#define ADC_AnalogWatchdog_AllInjecEnable ((uint32_t)0x01000000) /*!< ADC Analog watchdog all injected mode */ +#define ADC_AnalogWatchdog_AllRegAllInjecEnable ((uint32_t)0x01800000) /*!< ADC Analog watchdog all regular and all injected mode */ +#define ADC_AnalogWatchdog_None ((uint32_t)0x00000000) /*!< ADC Analog watchdog off */ + +#define IS_ADC_ANALOG_WATCHDOG(WATCHDOG) (((WATCHDOG) == ADC_AnalogWatchdog_SingleRegEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_SingleInjecEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_SingleRegOrInjecEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_AllRegEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_AllInjecEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_AllRegAllInjecEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_None)) +/** + * @} + */ + +/** @defgroup ADC_Calibration_Mode_definition + * @{ + */ +#define ADC_CalibrationMode_Single ((uint32_t)0x00000000) /*!< ADC Calibration for single ended channel */ +#define ADC_CalibrationMode_Differential ((uint32_t)0x40000000) /*!< ADC Calibration for differential channel */ + +#define IS_ADC_CALIBRATION_MODE(MODE) (((MODE) == ADC_CalibrationMode_Single) ||((MODE) == ADC_CalibrationMode_Differential)) + +/** + * @} + */ + +/** @defgroup ADC_DMA_Mode_definition + * @{ + */ +#define ADC_DMAMode_OneShot ((uint32_t)0x00000000) /*!< ADC DMA Oneshot mode */ +#define ADC_DMAMode_Circular ((uint32_t)0x00000002) /*!< ADC DMA circular mode */ + +#define IS_ADC_DMA_MODE(MODE) (((MODE) == ADC_DMAMode_OneShot) || ((MODE) == ADC_DMAMode_Circular)) +/** + * @} + */ + +/** @defgroup ADC_interrupts_definition + * @{ + */ + +#define ADC_IT_RDY ((uint16_t)0x0001) /*!< ADC Ready (ADRDY) interrupt source */ +#define ADC_IT_EOSMP ((uint16_t)0x0002) /*!< ADC End of Sampling interrupt source */ +#define ADC_IT_EOC ((uint16_t)0x0004) /*!< ADC End of Regular Conversion interrupt source */ +#define ADC_IT_EOS ((uint16_t)0x0008) /*!< ADC End of Regular sequence of Conversions interrupt source */ +#define ADC_IT_OVR ((uint16_t)0x0010) /*!< ADC overrun interrupt source */ +#define ADC_IT_JEOC ((uint16_t)0x0020) /*!< ADC End of Injected Conversion interrupt source */ +#define ADC_IT_JEOS ((uint16_t)0x0040) /*!< ADC End of Injected sequence of Conversions interrupt source */ +#define ADC_IT_AWD1 ((uint16_t)0x0080) /*!< ADC Analog watchdog 1 interrupt source */ +#define ADC_IT_AWD2 ((uint16_t)0x0100) /*!< ADC Analog watchdog 2 interrupt source */ +#define ADC_IT_AWD3 ((uint16_t)0x0200) /*!< ADC Analog watchdog 3 interrupt source */ +#define ADC_IT_JQOVF ((uint16_t)0x0400) /*!< ADC Injected Context Queue Overflow interrupt source */ + + +#define IS_ADC_IT(IT) ((((IT) & (uint16_t)0xF800) == 0x0000) && ((IT) != 0x0000)) + +#define IS_ADC_GET_IT(IT) (((IT) == ADC_IT_RDY) || ((IT) == ADC_IT_EOSMP) || \ + ((IT) == ADC_IT_EOC) || ((IT) == ADC_IT_EOS) || \ + ((IT) == ADC_IT_OVR) || ((IT) == ADC_IT_EOS) || \ + ((IT) == ADC_IT_JEOS) || ((IT) == ADC_IT_AWD1) || \ + ((IT) == ADC_IT_AWD2) || ((IT) == ADC_IT_AWD3) || \ + ((IT) == ADC_IT_JQOVF)) +/** + * @} + */ + +/** @defgroup ADC_flags_definition + * @{ + */ + +#define ADC_FLAG_RDY ((uint16_t)0x0001) /*!< ADC Ready (ADRDY) flag */ +#define ADC_FLAG_EOSMP ((uint16_t)0x0002) /*!< ADC End of Sampling flag */ +#define ADC_FLAG_EOC ((uint16_t)0x0004) /*!< ADC End of Regular Conversion flag */ +#define ADC_FLAG_EOS ((uint16_t)0x0008) /*!< ADC End of Regular sequence of Conversions flag */ +#define ADC_FLAG_OVR ((uint16_t)0x0010) /*!< ADC overrun flag */ +#define ADC_FLAG_JEOC ((uint16_t)0x0020) /*!< ADC End of Injected Conversion flag */ +#define ADC_FLAG_JEOS ((uint16_t)0x0040) /*!< ADC End of Injected sequence of Conversions flag */ +#define ADC_FLAG_AWD1 ((uint16_t)0x0080) /*!< ADC Analog watchdog 1 flag */ +#define ADC_FLAG_AWD2 ((uint16_t)0x0100) /*!< ADC Analog watchdog 2 flag */ +#define ADC_FLAG_AWD3 ((uint16_t)0x0200) /*!< ADC Analog watchdog 3 flag */ +#define ADC_FLAG_JQOVF ((uint16_t)0x0400) /*!< ADC Injected Context Queue Overflow flag */ + +#define IS_ADC_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0xF800) == 0x0000) && ((FLAG) != 0x0000)) +#define IS_ADC_GET_FLAG(FLAG) (((FLAG) == ADC_FLAG_RDY) || ((FLAG) == ADC_FLAG_EOSMP) || \ + ((FLAG) == ADC_FLAG_EOC) || ((FLAG) == ADC_FLAG_EOS) || \ + ((FLAG) == ADC_FLAG_OVR) || ((FLAG) == ADC_FLAG_JEOC) || \ + ((FLAG) == ADC_FLAG_JEOS) || ((FLAG) == ADC_FLAG_AWD1) || \ + ((FLAG) == ADC_FLAG_AWD2) || ((FLAG) == ADC_FLAG_AWD3) || \ + ((FLAG) == ADC_FLAG_JQOVF)) +/** + * @} + */ + +/** @defgroup ADC_Common_flags_definition + * @{ + */ + +#define ADC_FLAG_MSTRDY ((uint32_t)0x00000001) /*!< ADC Master Ready (ADRDY) flag */ +#define ADC_FLAG_MSTEOSMP ((uint32_t)0x00000002) /*!< ADC Master End of Sampling flag */ +#define ADC_FLAG_MSTEOC ((uint32_t)0x00000004) /*!< ADC Master End of Regular Conversion flag */ +#define ADC_FLAG_MSTEOS ((uint32_t)0x00000008) /*!< ADC Master End of Regular sequence of Conversions flag */ +#define ADC_FLAG_MSTOVR ((uint32_t)0x00000010) /*!< ADC Master overrun flag */ +#define ADC_FLAG_MSTJEOC ((uint32_t)0x00000020) /*!< ADC Master End of Injected Conversion flag */ +#define ADC_FLAG_MSTJEOS ((uint32_t)0x00000040) /*!< ADC Master End of Injected sequence of Conversions flag */ +#define ADC_FLAG_MSTAWD1 ((uint32_t)0x00000080) /*!< ADC Master Analog watchdog 1 flag */ +#define ADC_FLAG_MSTAWD2 ((uint32_t)0x00000100) /*!< ADC Master Analog watchdog 2 flag */ +#define ADC_FLAG_MSTAWD3 ((uint32_t)0x00000200) /*!< ADC Master Analog watchdog 3 flag */ +#define ADC_FLAG_MSTJQOVF ((uint32_t)0x00000400) /*!< ADC Master Injected Context Queue Overflow flag */ + +#define ADC_FLAG_SLVRDY ((uint32_t)0x00010000) /*!< ADC Slave Ready (ADRDY) flag */ +#define ADC_FLAG_SLVEOSMP ((uint32_t)0x00020000) /*!< ADC Slave End of Sampling flag */ +#define ADC_FLAG_SLVEOC ((uint32_t)0x00040000) /*!< ADC Slave End of Regular Conversion flag */ +#define ADC_FLAG_SLVEOS ((uint32_t)0x00080000) /*!< ADC Slave End of Regular sequence of Conversions flag */ +#define ADC_FLAG_SLVOVR ((uint32_t)0x00100000) /*!< ADC Slave overrun flag */ +#define ADC_FLAG_SLVJEOC ((uint32_t)0x00200000) /*!< ADC Slave End of Injected Conversion flag */ +#define ADC_FLAG_SLVJEOS ((uint32_t)0x00400000) /*!< ADC Slave End of Injected sequence of Conversions flag */ +#define ADC_FLAG_SLVAWD1 ((uint32_t)0x00800000) /*!< ADC Slave Analog watchdog 1 flag */ +#define ADC_FLAG_SLVAWD2 ((uint32_t)0x01000000) /*!< ADC Slave Analog watchdog 2 flag */ +#define ADC_FLAG_SLVAWD3 ((uint32_t)0x02000000) /*!< ADC Slave Analog watchdog 3 flag */ +#define ADC_FLAG_SLVJQOVF ((uint32_t)0x04000000) /*!< ADC Slave Injected Context Queue Overflow flag */ + +#define IS_ADC_CLEAR_COMMONFLAG(FLAG) ((((FLAG) & (uint32_t)0xF800F800) == 0x0000) && ((FLAG) != 0x00000000)) +#define IS_ADC_GET_COMMONFLAG(FLAG) (((FLAG) == ADC_FLAG_MSTRDY) || ((FLAG) == ADC_FLAG_MSTEOSMP) || \ + ((FLAG) == ADC_FLAG_MSTEOC) || ((FLAG) == ADC_FLAG_MSTEOS) || \ + ((FLAG) == ADC_FLAG_MSTOVR) || ((FLAG) == ADC_FLAG_MSTEOS) || \ + ((FLAG) == ADC_FLAG_MSTJEOS) || ((FLAG) == ADC_FLAG_MSTAWD1) || \ + ((FLAG) == ADC_FLAG_MSTAWD2) || ((FLAG) == ADC_FLAG_MSTAWD3) || \ + ((FLAG) == ADC_FLAG_MSTJQOVF) || \ + ((FLAG) == ADC_FLAG_SLVRDY) || ((FLAG) == ADC_FLAG_SLVEOSMP) || \ + ((FLAG) == ADC_FLAG_SLVEOC) || ((FLAG) == ADC_FLAG_SLVEOS) || \ + ((FLAG) == ADC_FLAG_SLVOVR) || ((FLAG) == ADC_FLAG_SLVEOS) || \ + ((FLAG) == ADC_FLAG_SLVJEOS) || ((FLAG) == ADC_FLAG_SLVAWD1) || \ + ((FLAG) == ADC_FLAG_SLVAWD2) || ((FLAG) == ADC_FLAG_SLVAWD3) || \ + ((FLAG) == ADC_FLAG_SLVJQOVF)) +/** + * @} + */ + +/** @defgroup ADC_thresholds + * @{ + */ + +#define IS_ADC_THRESHOLD(THRESHOLD) ((THRESHOLD) <= 0xFFF) + +/** + * @} + */ + +/** @defgroup ADC_injected_offset + * @{ + */ + +#define IS_ADC_OFFSET(OFFSET) ((OFFSET) <= 0xFFF) + +/** + * @} + */ + +/** @defgroup ADC_injected_length + * @{ + */ + +#define IS_ADC_INJECTED_LENGTH(LENGTH) (((LENGTH) >= 0x1) && ((LENGTH) <= 0x4)) + +/** + * @} + */ + + +/** @defgroup ADC_regular_length + * @{ + */ + +#define IS_ADC_REGULAR_LENGTH(LENGTH) (((LENGTH) >= 0x1) && ((LENGTH) <= 0x10)) +/** + * @} + */ + +/** @defgroup ADC_regular_discontinuous_mode_number + * @{ + */ + +#define IS_ADC_REGULAR_DISC_NUMBER(NUMBER) (((NUMBER) >= 0x1) && ((NUMBER) <= 0x8)) + +/** + * @} + */ + +/** @defgroup ADC_two_sampling_delay_number + * @{ + */ +#define IS_ADC_TWOSAMPLING_DELAY(DELAY) (((DELAY) <= 0xF)) + +/** + * @} + */ +/** + * @} + */ + + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Function used to set the ADC configuration to the default reset state *****/ +void ADC_DeInit(ADC_TypeDef* ADCx); + +/* Initialization and Configuration functions *********************************/ +void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct); +void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct); +void ADC_InjectedInit(ADC_TypeDef* ADCx, ADC_InjectedInitTypeDef* ADC_InjectedInitStruct); +void ADC_InjectedStructInit(ADC_InjectedInitTypeDef* ADC_InjectedInitStruct); +void ADC_CommonInit(ADC_TypeDef* ADCx, ADC_CommonInitTypeDef* ADC_CommonInitStruct); +void ADC_CommonStructInit(ADC_CommonInitTypeDef* ADC_CommonInitStruct); + +void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_StartCalibration(ADC_TypeDef* ADCx); +uint32_t ADC_GetCalibrationValue(ADC_TypeDef* ADCx); +void ADC_SetCalibrationValue(ADC_TypeDef* ADCx, uint32_t ADC_Calibration); +void ADC_SelectCalibrationMode(ADC_TypeDef* ADCx, uint32_t ADC_CalibrationMode); +FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx); +void ADC_DisableCmd(ADC_TypeDef* ADCx); +FlagStatus ADC_GetDisableCmdStatus(ADC_TypeDef* ADCx); +void ADC_VoltageRegulatorCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_SelectDifferentialMode(ADC_TypeDef* ADCx, uint8_t ADC_Channel, FunctionalState NewState); +void ADC_SelectQueueOfContextMode(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_AutoDelayCmd(ADC_TypeDef* ADCx, FunctionalState NewState); + +/* Analog Watchdog configuration functions ************************************/ +void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog); +void ADC_AnalogWatchdog1ThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold); +void ADC_AnalogWatchdog2ThresholdsConfig(ADC_TypeDef* ADCx, uint8_t HighThreshold, uint8_t LowThreshold); +void ADC_AnalogWatchdog3ThresholdsConfig(ADC_TypeDef* ADCx, uint8_t HighThreshold, uint8_t LowThreshold); +void ADC_AnalogWatchdog1SingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel); +void ADC_AnalogWatchdog2SingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel); +void ADC_AnalogWatchdog3SingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel); + +/* Temperature Sensor, Vrefint and Vbat management function */ +void ADC_TempSensorCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_VrefintCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_VbatCmd(ADC_TypeDef* ADCx, FunctionalState NewState); + +/* Channels Configuration functions ***********************************/ +void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime); +void ADC_RegularChannelSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t SequencerLength); +void ADC_ExternalTriggerConfig(ADC_TypeDef* ADCx, uint16_t ADC_ExternalTrigConvEvent, uint16_t ADC_ExternalTrigEventEdge); + +void ADC_StartConversion(ADC_TypeDef* ADCx); +FlagStatus ADC_GetStartConversionStatus(ADC_TypeDef* ADCx); +void ADC_StopConversion(ADC_TypeDef* ADCx); +void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number); +void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx); +uint32_t ADC_GetDualModeConversionValue(ADC_TypeDef* ADCx); + +void ADC_SetChannelOffset1(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint16_t Offset); +void ADC_SetChannelOffset2(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint16_t Offset); +void ADC_SetChannelOffset3(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint16_t Offset); +void ADC_SetChannelOffset4(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint16_t Offset); + +void ADC_ChannelOffset1Cmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_ChannelOffset2Cmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_ChannelOffset3Cmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_ChannelOffset4Cmd(ADC_TypeDef* ADCx, FunctionalState NewState); + +/* Regular Channels DMA Configuration functions *******************************/ +void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_DMAConfig(ADC_TypeDef* ADCx, uint32_t ADC_DMAMode); + +/* Injected channels Configuration functions **********************************/ +void ADC_InjectedChannelSampleTimeConfig(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint8_t ADC_SampleTime); +void ADC_StartInjectedConversion(ADC_TypeDef* ADCx); +FlagStatus ADC_GetStartInjectedConversionStatus(ADC_TypeDef* ADCx); +void ADC_StopInjectedConversion(ADC_TypeDef* ADCx); +void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel); + +/* ADC Dual Modes Configuration functions *************************************/ +FlagStatus ADC_GetCommonFlagStatus(ADC_TypeDef* ADCx, uint32_t ADC_FLAG); +void ADC_ClearCommonFlag(ADC_TypeDef* ADCx, uint32_t ADC_FLAG); + +/* Interrupts and flags management functions **********************************/ +void ADC_ITConfig(ADC_TypeDef* ADCx, uint32_t ADC_IT, FunctionalState NewState); +FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint32_t ADC_FLAG); +void ADC_ClearFlag(ADC_TypeDef* ADCx, uint32_t ADC_FLAG); +ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint32_t ADC_IT); +void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint32_t ADC_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_ADC_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_can.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,653 @@ +/** + ****************************************************************************** + * @file stm32f30x_can.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the CAN firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_CAN_H +#define __STM32F30x_CAN_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup CAN + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +#define IS_CAN_ALL_PERIPH(PERIPH) (((PERIPH) == CAN1)) + +/** + * @brief CAN init structure definition + */ +typedef struct +{ + uint16_t CAN_Prescaler; /*!< Specifies the length of a time quantum. + It ranges from 1 to 1024. */ + + uint8_t CAN_Mode; /*!< Specifies the CAN operating mode. + This parameter can be a value of @ref CAN_operating_mode */ + + uint8_t CAN_SJW; /*!< Specifies the maximum number of time quanta + the CAN hardware is allowed to lengthen or + shorten a bit to perform resynchronization. + This parameter can be a value of @ref CAN_synchronisation_jump_width */ + + uint8_t CAN_BS1; /*!< Specifies the number of time quanta in Bit + Segment 1. This parameter can be a value of + @ref CAN_time_quantum_in_bit_segment_1 */ + + uint8_t CAN_BS2; /*!< Specifies the number of time quanta in Bit Segment 2. + This parameter can be a value of @ref CAN_time_quantum_in_bit_segment_2 */ + + FunctionalState CAN_TTCM; /*!< Enable or disable the time triggered communication mode. + This parameter can be set either to ENABLE or DISABLE. */ + + FunctionalState CAN_ABOM; /*!< Enable or disable the automatic bus-off management. + This parameter can be set either to ENABLE or DISABLE. */ + + FunctionalState CAN_AWUM; /*!< Enable or disable the automatic wake-up mode. + This parameter can be set either to ENABLE or DISABLE. */ + + FunctionalState CAN_NART; /*!< Enable or disable the non-automatic retransmission mode. + This parameter can be set either to ENABLE or DISABLE. */ + + FunctionalState CAN_RFLM; /*!< Enable or disable the Receive FIFO Locked mode. + This parameter can be set either to ENABLE or DISABLE. */ + + FunctionalState CAN_TXFP; /*!< Enable or disable the transmit FIFO priority. + This parameter can be set either to ENABLE or DISABLE. */ +} CAN_InitTypeDef; + +/** + * @brief CAN filter init structure definition + */ +typedef struct +{ + uint16_t CAN_FilterIdHigh; /*!< Specifies the filter identification number (MSBs for a 32-bit + configuration, first one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterIdLow; /*!< Specifies the filter identification number (LSBs for a 32-bit + configuration, second one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterMaskIdHigh; /*!< Specifies the filter mask number or identification number, + according to the mode (MSBs for a 32-bit configuration, + first one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterMaskIdLow; /*!< Specifies the filter mask number or identification number, + according to the mode (LSBs for a 32-bit configuration, + second one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterFIFOAssignment; /*!< Specifies the FIFO (0 or 1) which will be assigned to the filter. + This parameter can be a value of @ref CAN_filter_FIFO */ + + uint8_t CAN_FilterNumber; /*!< Specifies the filter which will be initialized. It ranges from 0 to 13. */ + + uint8_t CAN_FilterMode; /*!< Specifies the filter mode to be initialized. + This parameter can be a value of @ref CAN_filter_mode */ + + uint8_t CAN_FilterScale; /*!< Specifies the filter scale. + This parameter can be a value of @ref CAN_filter_scale */ + + FunctionalState CAN_FilterActivation; /*!< Enable or disable the filter. + This parameter can be set either to ENABLE or DISABLE. */ +} CAN_FilterInitTypeDef; + +/** + * @brief CAN Tx message structure definition + */ +typedef struct +{ + uint32_t StdId; /*!< Specifies the standard identifier. + This parameter can be a value between 0 to 0x7FF. */ + + uint32_t ExtId; /*!< Specifies the extended identifier. + This parameter can be a value between 0 to 0x1FFFFFFF. */ + + uint8_t IDE; /*!< Specifies the type of identifier for the message that + will be transmitted. This parameter can be a value + of @ref CAN_identifier_type */ + + uint8_t RTR; /*!< Specifies the type of frame for the message that will + be transmitted. This parameter can be a value of + @ref CAN_remote_transmission_request */ + + uint8_t DLC; /*!< Specifies the length of the frame that will be + transmitted. This parameter can be a value between + 0 to 8 */ + + uint8_t Data[8]; /*!< Contains the data to be transmitted. It ranges from 0 + to 0xFF. */ +} CanTxMsg; + +/** + * @brief CAN Rx message structure definition + */ +typedef struct +{ + uint32_t StdId; /*!< Specifies the standard identifier. + This parameter can be a value between 0 to 0x7FF. */ + + uint32_t ExtId; /*!< Specifies the extended identifier. + This parameter can be a value between 0 to 0x1FFFFFFF. */ + + uint8_t IDE; /*!< Specifies the type of identifier for the message that + will be received. This parameter can be a value of + @ref CAN_identifier_type */ + + uint8_t RTR; /*!< Specifies the type of frame for the received message. + This parameter can be a value of + @ref CAN_remote_transmission_request */ + + uint8_t DLC; /*!< Specifies the length of the frame that will be received. + This parameter can be a value between 0 to 8 */ + + uint8_t Data[8]; /*!< Contains the data to be received. It ranges from 0 to + 0xFF. */ + + uint8_t FMI; /*!< Specifies the index of the filter the message stored in + the mailbox passes through. This parameter can be a + value between 0 to 0xFF */ +} CanRxMsg; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup CAN_Exported_Constants + * @{ + */ + +/** @defgroup CAN_InitStatus + * @{ + */ + +#define CAN_InitStatus_Failed ((uint8_t)0x00) /*!< CAN initialization failed */ +#define CAN_InitStatus_Success ((uint8_t)0x01) /*!< CAN initialization OK */ + + +/* Legacy defines */ +#define CANINITFAILED CAN_InitStatus_Failed +#define CANINITOK CAN_InitStatus_Success +/** + * @} + */ + +/** @defgroup CAN_operating_mode + * @{ + */ + +#define CAN_Mode_Normal ((uint8_t)0x00) /*!< normal mode */ +#define CAN_Mode_LoopBack ((uint8_t)0x01) /*!< loopback mode */ +#define CAN_Mode_Silent ((uint8_t)0x02) /*!< silent mode */ +#define CAN_Mode_Silent_LoopBack ((uint8_t)0x03) /*!< loopback combined with silent mode */ + +#define IS_CAN_MODE(MODE) (((MODE) == CAN_Mode_Normal) || \ + ((MODE) == CAN_Mode_LoopBack)|| \ + ((MODE) == CAN_Mode_Silent) || \ + ((MODE) == CAN_Mode_Silent_LoopBack)) +/** + * @} + */ + + + /** + * @defgroup CAN_operating_mode + * @{ + */ +#define CAN_OperatingMode_Initialization ((uint8_t)0x00) /*!< Initialization mode */ +#define CAN_OperatingMode_Normal ((uint8_t)0x01) /*!< Normal mode */ +#define CAN_OperatingMode_Sleep ((uint8_t)0x02) /*!< sleep mode */ + + +#define IS_CAN_OPERATING_MODE(MODE) (((MODE) == CAN_OperatingMode_Initialization) ||\ + ((MODE) == CAN_OperatingMode_Normal)|| \ + ((MODE) == CAN_OperatingMode_Sleep)) +/** + * @} + */ + +/** + * @defgroup CAN_operating_mode_status + * @{ + */ + +#define CAN_ModeStatus_Failed ((uint8_t)0x00) /*!< CAN entering the specific mode failed */ +#define CAN_ModeStatus_Success ((uint8_t)!CAN_ModeStatus_Failed) /*!< CAN entering the specific mode Succeed */ +/** + * @} + */ + +/** @defgroup CAN_synchronisation_jump_width + * @{ + */ +#define CAN_SJW_1tq ((uint8_t)0x00) /*!< 1 time quantum */ +#define CAN_SJW_2tq ((uint8_t)0x01) /*!< 2 time quantum */ +#define CAN_SJW_3tq ((uint8_t)0x02) /*!< 3 time quantum */ +#define CAN_SJW_4tq ((uint8_t)0x03) /*!< 4 time quantum */ + +#define IS_CAN_SJW(SJW) (((SJW) == CAN_SJW_1tq) || ((SJW) == CAN_SJW_2tq)|| \ + ((SJW) == CAN_SJW_3tq) || ((SJW) == CAN_SJW_4tq)) +/** + * @} + */ + +/** @defgroup CAN_time_quantum_in_bit_segment_1 + * @{ + */ +#define CAN_BS1_1tq ((uint8_t)0x00) /*!< 1 time quantum */ +#define CAN_BS1_2tq ((uint8_t)0x01) /*!< 2 time quantum */ +#define CAN_BS1_3tq ((uint8_t)0x02) /*!< 3 time quantum */ +#define CAN_BS1_4tq ((uint8_t)0x03) /*!< 4 time quantum */ +#define CAN_BS1_5tq ((uint8_t)0x04) /*!< 5 time quantum */ +#define CAN_BS1_6tq ((uint8_t)0x05) /*!< 6 time quantum */ +#define CAN_BS1_7tq ((uint8_t)0x06) /*!< 7 time quantum */ +#define CAN_BS1_8tq ((uint8_t)0x07) /*!< 8 time quantum */ +#define CAN_BS1_9tq ((uint8_t)0x08) /*!< 9 time quantum */ +#define CAN_BS1_10tq ((uint8_t)0x09) /*!< 10 time quantum */ +#define CAN_BS1_11tq ((uint8_t)0x0A) /*!< 11 time quantum */ +#define CAN_BS1_12tq ((uint8_t)0x0B) /*!< 12 time quantum */ +#define CAN_BS1_13tq ((uint8_t)0x0C) /*!< 13 time quantum */ +#define CAN_BS1_14tq ((uint8_t)0x0D) /*!< 14 time quantum */ +#define CAN_BS1_15tq ((uint8_t)0x0E) /*!< 15 time quantum */ +#define CAN_BS1_16tq ((uint8_t)0x0F) /*!< 16 time quantum */ + +#define IS_CAN_BS1(BS1) ((BS1) <= CAN_BS1_16tq) +/** + * @} + */ + +/** @defgroup CAN_time_quantum_in_bit_segment_2 + * @{ + */ +#define CAN_BS2_1tq ((uint8_t)0x00) /*!< 1 time quantum */ +#define CAN_BS2_2tq ((uint8_t)0x01) /*!< 2 time quantum */ +#define CAN_BS2_3tq ((uint8_t)0x02) /*!< 3 time quantum */ +#define CAN_BS2_4tq ((uint8_t)0x03) /*!< 4 time quantum */ +#define CAN_BS2_5tq ((uint8_t)0x04) /*!< 5 time quantum */ +#define CAN_BS2_6tq ((uint8_t)0x05) /*!< 6 time quantum */ +#define CAN_BS2_7tq ((uint8_t)0x06) /*!< 7 time quantum */ +#define CAN_BS2_8tq ((uint8_t)0x07) /*!< 8 time quantum */ + +#define IS_CAN_BS2(BS2) ((BS2) <= CAN_BS2_8tq) +/** + * @} + */ + +/** @defgroup CAN_clock_prescaler + * @{ + */ +#define IS_CAN_PRESCALER(PRESCALER) (((PRESCALER) >= 1) && ((PRESCALER) <= 1024)) +/** + * @} + */ + +/** @defgroup CAN_filter_number + * @{ + */ +#define IS_CAN_FILTER_NUMBER(NUMBER) ((NUMBER) <= 27) +/** + * @} + */ + +/** @defgroup CAN_filter_mode + * @{ + */ +#define CAN_FilterMode_IdMask ((uint8_t)0x00) /*!< identifier/mask mode */ +#define CAN_FilterMode_IdList ((uint8_t)0x01) /*!< identifier list mode */ + +#define IS_CAN_FILTER_MODE(MODE) (((MODE) == CAN_FilterMode_IdMask) || \ + ((MODE) == CAN_FilterMode_IdList)) +/** + * @} + */ + +/** @defgroup CAN_filter_scale + * @{ + */ +#define CAN_FilterScale_16bit ((uint8_t)0x00) /*!< Two 16-bit filters */ +#define CAN_FilterScale_32bit ((uint8_t)0x01) /*!< One 32-bit filter */ + +#define IS_CAN_FILTER_SCALE(SCALE) (((SCALE) == CAN_FilterScale_16bit) || \ + ((SCALE) == CAN_FilterScale_32bit)) +/** + * @} + */ + +/** @defgroup CAN_filter_FIFO + * @{ + */ +#define CAN_Filter_FIFO0 ((uint8_t)0x00) /*!< Filter FIFO 0 assignment for filter x */ +#define CAN_Filter_FIFO1 ((uint8_t)0x01) /*!< Filter FIFO 1 assignment for filter x */ +#define IS_CAN_FILTER_FIFO(FIFO) (((FIFO) == CAN_FilterFIFO0) || \ + ((FIFO) == CAN_FilterFIFO1)) + +/* Legacy defines */ +#define CAN_FilterFIFO0 CAN_Filter_FIFO0 +#define CAN_FilterFIFO1 CAN_Filter_FIFO1 +/** + * @} + */ + +/** @defgroup CAN_Start_bank_filter_for_slave_CAN + * @{ + */ +#define IS_CAN_BANKNUMBER(BANKNUMBER) (((BANKNUMBER) >= 1) && ((BANKNUMBER) <= 27)) +/** + * @} + */ + +/** @defgroup CAN_Tx + * @{ + */ +#define IS_CAN_TRANSMITMAILBOX(TRANSMITMAILBOX) ((TRANSMITMAILBOX) <= ((uint8_t)0x02)) +#define IS_CAN_STDID(STDID) ((STDID) <= ((uint32_t)0x7FF)) +#define IS_CAN_EXTID(EXTID) ((EXTID) <= ((uint32_t)0x1FFFFFFF)) +#define IS_CAN_DLC(DLC) ((DLC) <= ((uint8_t)0x08)) +/** + * @} + */ + +/** @defgroup CAN_identifier_type + * @{ + */ +#define CAN_Id_Standard ((uint32_t)0x00000000) /*!< Standard Id */ +#define CAN_Id_Extended ((uint32_t)0x00000004) /*!< Extended Id */ +#define IS_CAN_IDTYPE(IDTYPE) (((IDTYPE) == CAN_Id_Standard) || \ + ((IDTYPE) == CAN_Id_Extended)) + +/* Legacy defines */ +#define CAN_ID_STD CAN_Id_Standard +#define CAN_ID_EXT CAN_Id_Extended +/** + * @} + */ + +/** @defgroup CAN_remote_transmission_request + * @{ + */ +#define CAN_RTR_Data ((uint32_t)0x00000000) /*!< Data frame */ +#define CAN_RTR_Remote ((uint32_t)0x00000002) /*!< Remote frame */ +#define IS_CAN_RTR(RTR) (((RTR) == CAN_RTR_Data) || ((RTR) == CAN_RTR_Remote)) + +/* Legacy defines */ +#define CAN_RTR_DATA CAN_RTR_Data +#define CAN_RTR_REMOTE CAN_RTR_Remote +/** + * @} + */ + +/** @defgroup CAN_transmit_constants + * @{ + */ +#define CAN_TxStatus_Failed ((uint8_t)0x00)/*!< CAN transmission failed */ +#define CAN_TxStatus_Ok ((uint8_t)0x01) /*!< CAN transmission succeeded */ +#define CAN_TxStatus_Pending ((uint8_t)0x02) /*!< CAN transmission pending */ +#define CAN_TxStatus_NoMailBox ((uint8_t)0x04) /*!< CAN cell did not provide + an empty mailbox */ +/* Legacy defines */ +#define CANTXFAILED CAN_TxStatus_Failed +#define CANTXOK CAN_TxStatus_Ok +#define CANTXPENDING CAN_TxStatus_Pending +#define CAN_NO_MB CAN_TxStatus_NoMailBox +/** + * @} + */ + +/** @defgroup CAN_receive_FIFO_number_constants + * @{ + */ +#define CAN_FIFO0 ((uint8_t)0x00) /*!< CAN FIFO 0 used to receive */ +#define CAN_FIFO1 ((uint8_t)0x01) /*!< CAN FIFO 1 used to receive */ + +#define IS_CAN_FIFO(FIFO) (((FIFO) == CAN_FIFO0) || ((FIFO) == CAN_FIFO1)) +/** + * @} + */ + +/** @defgroup CAN_sleep_constants + * @{ + */ +#define CAN_Sleep_Failed ((uint8_t)0x00) /*!< CAN did not enter the sleep mode */ +#define CAN_Sleep_Ok ((uint8_t)0x01) /*!< CAN entered the sleep mode */ + +/* Legacy defines */ +#define CANSLEEPFAILED CAN_Sleep_Failed +#define CANSLEEPOK CAN_Sleep_Ok +/** + * @} + */ + +/** @defgroup CAN_wake_up_constants + * @{ + */ +#define CAN_WakeUp_Failed ((uint8_t)0x00) /*!< CAN did not leave the sleep mode */ +#define CAN_WakeUp_Ok ((uint8_t)0x01) /*!< CAN leaved the sleep mode */ + +/* Legacy defines */ +#define CANWAKEUPFAILED CAN_WakeUp_Failed +#define CANWAKEUPOK CAN_WakeUp_Ok +/** + * @} + */ + +/** + * @defgroup CAN_Error_Code_constants + * @{ + */ +#define CAN_ErrorCode_NoErr ((uint8_t)0x00) /*!< No Error */ +#define CAN_ErrorCode_StuffErr ((uint8_t)0x10) /*!< Stuff Error */ +#define CAN_ErrorCode_FormErr ((uint8_t)0x20) /*!< Form Error */ +#define CAN_ErrorCode_ACKErr ((uint8_t)0x30) /*!< Acknowledgment Error */ +#define CAN_ErrorCode_BitRecessiveErr ((uint8_t)0x40) /*!< Bit Recessive Error */ +#define CAN_ErrorCode_BitDominantErr ((uint8_t)0x50) /*!< Bit Dominant Error */ +#define CAN_ErrorCode_CRCErr ((uint8_t)0x60) /*!< CRC Error */ +#define CAN_ErrorCode_SoftwareSetErr ((uint8_t)0x70) /*!< Software Set Error */ +/** + * @} + */ + +/** @defgroup CAN_flags + * @{ + */ +/* If the flag is 0x3XXXXXXX, it means that it can be used with CAN_GetFlagStatus() + and CAN_ClearFlag() functions. */ +/* If the flag is 0x1XXXXXXX, it means that it can only be used with + CAN_GetFlagStatus() function. */ + +/* Transmit Flags */ +#define CAN_FLAG_RQCP0 ((uint32_t)0x38000001) /*!< Request MailBox0 Flag */ +#define CAN_FLAG_RQCP1 ((uint32_t)0x38000100) /*!< Request MailBox1 Flag */ +#define CAN_FLAG_RQCP2 ((uint32_t)0x38010000) /*!< Request MailBox2 Flag */ + +/* Receive Flags */ +#define CAN_FLAG_FMP0 ((uint32_t)0x12000003) /*!< FIFO 0 Message Pending Flag */ +#define CAN_FLAG_FF0 ((uint32_t)0x32000008) /*!< FIFO 0 Full Flag */ +#define CAN_FLAG_FOV0 ((uint32_t)0x32000010) /*!< FIFO 0 Overrun Flag */ +#define CAN_FLAG_FMP1 ((uint32_t)0x14000003) /*!< FIFO 1 Message Pending Flag */ +#define CAN_FLAG_FF1 ((uint32_t)0x34000008) /*!< FIFO 1 Full Flag */ +#define CAN_FLAG_FOV1 ((uint32_t)0x34000010) /*!< FIFO 1 Overrun Flag */ + +/* Operating Mode Flags */ +#define CAN_FLAG_WKU ((uint32_t)0x31000008) /*!< Wake up Flag */ +#define CAN_FLAG_SLAK ((uint32_t)0x31000012) /*!< Sleep acknowledge Flag */ +/* @note When SLAK interrupt is disabled (SLKIE=0), no polling on SLAKI is possible. + In this case the SLAK bit can be polled.*/ + +/* Error Flags */ +#define CAN_FLAG_EWG ((uint32_t)0x10F00001) /*!< Error Warning Flag */ +#define CAN_FLAG_EPV ((uint32_t)0x10F00002) /*!< Error Passive Flag */ +#define CAN_FLAG_BOF ((uint32_t)0x10F00004) /*!< Bus-Off Flag */ +#define CAN_FLAG_LEC ((uint32_t)0x30F00070) /*!< Last error code Flag */ + +#define IS_CAN_GET_FLAG(FLAG) (((FLAG) == CAN_FLAG_LEC) || ((FLAG) == CAN_FLAG_BOF) || \ + ((FLAG) == CAN_FLAG_EPV) || ((FLAG) == CAN_FLAG_EWG) || \ + ((FLAG) == CAN_FLAG_WKU) || ((FLAG) == CAN_FLAG_FOV0) || \ + ((FLAG) == CAN_FLAG_FF0) || ((FLAG) == CAN_FLAG_FMP0) || \ + ((FLAG) == CAN_FLAG_FOV1) || ((FLAG) == CAN_FLAG_FF1) || \ + ((FLAG) == CAN_FLAG_FMP1) || ((FLAG) == CAN_FLAG_RQCP2) || \ + ((FLAG) == CAN_FLAG_RQCP1)|| ((FLAG) == CAN_FLAG_RQCP0) || \ + ((FLAG) == CAN_FLAG_SLAK )) + +#define IS_CAN_CLEAR_FLAG(FLAG)(((FLAG) == CAN_FLAG_LEC) || ((FLAG) == CAN_FLAG_RQCP2) || \ + ((FLAG) == CAN_FLAG_RQCP1) || ((FLAG) == CAN_FLAG_RQCP0) || \ + ((FLAG) == CAN_FLAG_FF0) || ((FLAG) == CAN_FLAG_FOV0) ||\ + ((FLAG) == CAN_FLAG_FF1) || ((FLAG) == CAN_FLAG_FOV1) || \ + ((FLAG) == CAN_FLAG_WKU) || ((FLAG) == CAN_FLAG_SLAK)) +/** + * @} + */ + + +/** @defgroup CAN_interrupts + * @{ + */ +#define CAN_IT_TME ((uint32_t)0x00000001) /*!< Transmit mailbox empty Interrupt*/ + +/* Receive Interrupts */ +#define CAN_IT_FMP0 ((uint32_t)0x00000002) /*!< FIFO 0 message pending Interrupt*/ +#define CAN_IT_FF0 ((uint32_t)0x00000004) /*!< FIFO 0 full Interrupt*/ +#define CAN_IT_FOV0 ((uint32_t)0x00000008) /*!< FIFO 0 overrun Interrupt*/ +#define CAN_IT_FMP1 ((uint32_t)0x00000010) /*!< FIFO 1 message pending Interrupt*/ +#define CAN_IT_FF1 ((uint32_t)0x00000020) /*!< FIFO 1 full Interrupt*/ +#define CAN_IT_FOV1 ((uint32_t)0x00000040) /*!< FIFO 1 overrun Interrupt*/ + +/* Operating Mode Interrupts */ +#define CAN_IT_WKU ((uint32_t)0x00010000) /*!< Wake-up Interrupt*/ +#define CAN_IT_SLK ((uint32_t)0x00020000) /*!< Sleep acknowledge Interrupt*/ + +/* Error Interrupts */ +#define CAN_IT_EWG ((uint32_t)0x00000100) /*!< Error warning Interrupt*/ +#define CAN_IT_EPV ((uint32_t)0x00000200) /*!< Error passive Interrupt*/ +#define CAN_IT_BOF ((uint32_t)0x00000400) /*!< Bus-off Interrupt*/ +#define CAN_IT_LEC ((uint32_t)0x00000800) /*!< Last error code Interrupt*/ +#define CAN_IT_ERR ((uint32_t)0x00008000) /*!< Error Interrupt*/ + +/* Flags named as Interrupts : kept only for FW compatibility */ +#define CAN_IT_RQCP0 CAN_IT_TME +#define CAN_IT_RQCP1 CAN_IT_TME +#define CAN_IT_RQCP2 CAN_IT_TME + + +#define IS_CAN_IT(IT) (((IT) == CAN_IT_TME) || ((IT) == CAN_IT_FMP0) ||\ + ((IT) == CAN_IT_FF0) || ((IT) == CAN_IT_FOV0) ||\ + ((IT) == CAN_IT_FMP1) || ((IT) == CAN_IT_FF1) ||\ + ((IT) == CAN_IT_FOV1) || ((IT) == CAN_IT_EWG) ||\ + ((IT) == CAN_IT_EPV) || ((IT) == CAN_IT_BOF) ||\ + ((IT) == CAN_IT_LEC) || ((IT) == CAN_IT_ERR) ||\ + ((IT) == CAN_IT_WKU) || ((IT) == CAN_IT_SLK)) + +#define IS_CAN_CLEAR_IT(IT) (((IT) == CAN_IT_TME) || ((IT) == CAN_IT_FF0) ||\ + ((IT) == CAN_IT_FOV0)|| ((IT) == CAN_IT_FF1) ||\ + ((IT) == CAN_IT_FOV1)|| ((IT) == CAN_IT_EWG) ||\ + ((IT) == CAN_IT_EPV) || ((IT) == CAN_IT_BOF) ||\ + ((IT) == CAN_IT_LEC) || ((IT) == CAN_IT_ERR) ||\ + ((IT) == CAN_IT_WKU) || ((IT) == CAN_IT_SLK)) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/* Function used to set the CAN configuration to the default reset state *****/ +void CAN_DeInit(CAN_TypeDef* CANx); + +/* Initialization and Configuration functions *********************************/ +uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct); +void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct); +void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct); +void CAN_SlaveStartBank(uint8_t CAN_BankNumber); +void CAN_DBGFreeze(CAN_TypeDef* CANx, FunctionalState NewState); +void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState); + +/* CAN Frames Transmission functions ******************************************/ +uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage); +uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox); +void CAN_CancelTransmit(CAN_TypeDef* CANx, uint8_t Mailbox); + +/* CAN Frames Reception functions *********************************************/ +void CAN_Receive(CAN_TypeDef* CANx, uint8_t FIFONumber, CanRxMsg* RxMessage); +void CAN_FIFORelease(CAN_TypeDef* CANx, uint8_t FIFONumber); +uint8_t CAN_MessagePending(CAN_TypeDef* CANx, uint8_t FIFONumber); + +/* Operation modes functions **************************************************/ +uint8_t CAN_OperatingModeRequest(CAN_TypeDef* CANx, uint8_t CAN_OperatingMode); +uint8_t CAN_Sleep(CAN_TypeDef* CANx); +uint8_t CAN_WakeUp(CAN_TypeDef* CANx); + +/* CAN Bus Error management functions *****************************************/ +uint8_t CAN_GetLastErrorCode(CAN_TypeDef* CANx); +uint8_t CAN_GetReceiveErrorCounter(CAN_TypeDef* CANx); +uint8_t CAN_GetLSBTransmitErrorCounter(CAN_TypeDef* CANx); + +/* Interrupts and flags management functions **********************************/ +void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState); +FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_FLAG); +void CAN_ClearFlag(CAN_TypeDef* CANx, uint32_t CAN_FLAG); +ITStatus CAN_GetITStatus(CAN_TypeDef* CANx, uint32_t CAN_IT); +void CAN_ClearITPendingBit(CAN_TypeDef* CANx, uint32_t CAN_IT); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_CAN_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_comp.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,436 @@ +/** + ****************************************************************************** + * @file stm32f30x_comp.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the COMP firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_COMP_H +#define __STM32F30x_COMP_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup COMP + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief COMP Init structure definition + */ + +typedef struct +{ + + uint32_t COMP_InvertingInput; /*!< Selects the inverting input of the comparator. + This parameter can be a value of @ref COMP_InvertingInput */ + + uint32_t COMP_NonInvertingInput; /*!< Selects the non inverting input of the comparator. + This parameter can be a value of @ref COMP_NonInvertingInput */ + + uint32_t COMP_Output; /*!< Selects the output redirection of the comparator. + This parameter can be a value of @ref COMP_Output */ + + uint32_t COMP_BlankingSrce; /*!< Selects the output blanking source of the comparator. + This parameter can be a value of @ref COMP_BlankingSrce */ + + uint32_t COMP_OutputPol; /*!< Selects the output polarity of the comparator. + This parameter can be a value of @ref COMP_OutputPoloarity */ + + uint32_t COMP_Hysteresis; /*!< Selects the hysteresis voltage of the comparator. + This parameter can be a value of @ref COMP_Hysteresis */ + + uint32_t COMP_Mode; /*!< Selects the operating mode of the comparator + and allows to adjust the speed/consumption. + This parameter can be a value of @ref COMP_Mode */ +}COMP_InitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup COMP_Exported_Constants + * @{ + */ + +/** @defgroup COMP_Selection + * @{ + */ + +#define COMP_Selection_COMP1 ((uint32_t)0x00000000) /*!< COMP1 Selection */ +#define COMP_Selection_COMP2 ((uint32_t)0x00000004) /*!< COMP2 Selection */ +#define COMP_Selection_COMP3 ((uint32_t)0x00000008) /*!< COMP3 Selection */ +#define COMP_Selection_COMP4 ((uint32_t)0x0000000C) /*!< COMP4 Selection */ +#define COMP_Selection_COMP5 ((uint32_t)0x00000010) /*!< COMP5 Selection */ +#define COMP_Selection_COMP6 ((uint32_t)0x00000014) /*!< COMP6 Selection */ +#define COMP_Selection_COMP7 ((uint32_t)0x00000018) /*!< COMP7 Selection */ + +#define IS_COMP_ALL_PERIPH(PERIPH) (((PERIPH) == COMP_Selection_COMP1) || \ + ((PERIPH) == COMP_Selection_COMP2) || \ + ((PERIPH) == COMP_Selection_COMP3) || \ + ((PERIPH) == COMP_Selection_COMP4) || \ + ((PERIPH) == COMP_Selection_COMP5) || \ + ((PERIPH) == COMP_Selection_COMP6) || \ + ((PERIPH) == COMP_Selection_COMP7)) + +/** + * @} + */ + +/** @defgroup COMP_InvertingInput + * @{ + */ + +#define COMP_InvertingInput_1_4VREFINT ((uint32_t)0x00000000) /*!< 1/4 VREFINT connected to comparator inverting input */ +#define COMP_InvertingInput_1_2VREFINT COMP_CSR_COMPxINSEL_0 /*!< 1/2 VREFINT connected to comparator inverting input */ +#define COMP_InvertingInput_3_4VREFINT COMP_CSR_COMPxINSEL_1 /*!< 3/4 VREFINT connected to comparator inverting input */ +#define COMP_InvertingInput_VREFINT ((uint32_t)0x00000030) /*!< VREFINT connected to comparator inverting input */ +#define COMP_InvertingInput_DAC1OUT1 COMP_CSR_COMPxINSEL_2 /*!< DAC1_OUT1 (PA4) connected to comparator inverting input */ +#define COMP_InvertingInput_DAC1OUT2 ((uint32_t)0x00000050) /*!< DAC1_OUT2 (PA5) connected to comparator inverting input */ + +#define COMP_InvertingInput_IO1 ((uint32_t)0x00000060) /*!< I/O1 (PA0 for COMP1, PA2 for COMP2, PD15 for COMP3, + PE8 for COMP4, PD13 for COMP5, PD10 for COMP6, + PC0 for COMP7) connected to comparator inverting input */ + +#define COMP_InvertingInput_IO2 COMP_CSR_COMPxINSEL /*!< I/O2 (PB12 for COMP3, PB2 for COMP4, PB10 for COMP5, + PB15 for COMP6) connected to comparator inverting input */ + +#define COMP_InvertingInput_DAC2OUT1 COMP_CSR_COMPxINSEL_3 /*!< DAC2_OUT1 (PA6) connected to comparator inverting input */ + +#define IS_COMP_INVERTING_INPUT(INPUT) (((INPUT) == COMP_InvertingInput_1_4VREFINT) || \ + ((INPUT) == COMP_InvertingInput_1_2VREFINT) || \ + ((INPUT) == COMP_InvertingInput_3_4VREFINT) || \ + ((INPUT) == COMP_InvertingInput_VREFINT) || \ + ((INPUT) == COMP_InvertingInput_DAC1OUT1) || \ + ((INPUT) == COMP_InvertingInput_DAC1OUT2) || \ + ((INPUT) == COMP_InvertingInput_IO1) || \ + ((INPUT) == COMP_InvertingInput_IO2) || \ + ((INPUT) == COMP_InvertingInput_DAC2OUT1)) +/** + * @} + */ + +/** @defgroup COMP_NonInvertingInput + * @{ + */ + +#define COMP_NonInvertingInput_IO1 ((uint32_t)0x00000000) /*!< I/O1 (PA1 for COMP1, PA7 for COMP2, PB14 for COMP3, + PB0 for COMP4, PD12 for COMP5, PD11 for COMP6, + PA0 for COMP7) connected to comparator non inverting input */ + +#define COMP_NonInvertingInput_IO2 COMP_CSR_COMPxNONINSEL /*!< I/O2 (PA3 for COMP2, PD14 for COMP3, PE7 for COMP4, PB13 for COMP5, + PB11 for COMP6, PC1 for COMP7) connected to comparator non inverting input */ + +#define IS_COMP_NONINVERTING_INPUT(INPUT) (((INPUT) == COMP_NonInvertingInput_IO1) || \ + ((INPUT) == COMP_NonInvertingInput_IO2)) +/** + * @} + */ + +/** @defgroup COMP_Output + * @{ + */ + +#define COMP_Output_None ((uint32_t)0x00000000) /*!< COMP output isn't connected to other peripherals */ + +/* Output Redirection common for all comparators COMP1...COMP7 */ +#define COMP_Output_TIM1BKIN COMP_CSR_COMPxOUTSEL_0 /*!< COMP output connected to TIM1 Break Input (BKIN) */ +#define COMP_Output_TIM1BKIN2 ((uint32_t)0x00000800) /*!< COMP output connected to TIM1 Break Input 2 (BKIN2) */ +#define COMP_Output_TIM8BKIN ((uint32_t)0x00000C00) /*!< COMP output connected to TIM8 Break Input (BKIN) */ +#define COMP_Output_TIM8BKIN2 ((uint32_t)0x00001000) /*!< COMP output connected to TIM8 Break Input 2 (BKIN2) */ +#define COMP_Output_TIM1BKIN2_TIM8BKIN2 ((uint32_t)0x00001400) /*!< COMP output connected to TIM1 Break Input 2 and TIM8 Break Input 2 */ + +/* Output Redirection common for COMP1 and COMP2 */ +#define COMP_Output_TIM1OCREFCLR ((uint32_t)0x00001800) /*!< COMP output connected to TIM1 OCREF Clear */ +#define COMP_Output_TIM1IC1 ((uint32_t)0x00001C00) /*!< COMP output connected to TIM1 Input Capture 1 */ +#define COMP_Output_TIM2IC4 ((uint32_t)0x00002000) /*!< COMP output connected to TIM2 Input Capture 4 */ +#define COMP_Output_TIM2OCREFCLR ((uint32_t)0x00002400) /*!< COMP output connected to TIM2 OCREF Clear */ +#define COMP_Output_TIM3IC1 ((uint32_t)0x00002800) /*!< COMP output connected to TIM3 Input Capture 1 */ +#define COMP_Output_TIM3OCREFCLR ((uint32_t)0x00002C00) /*!< COMP output connected to TIM3 OCREF Clear */ + +/* Output Redirection specific to COMP2 */ +#define COMP_Output_HRTIM1_FLT6 ((uint32_t)0x00003000) /*!< COMP output connected to HRTIM1 FLT6 */ +#define COMP_Output_HRTIM1_EE1_2 ((uint32_t)0x00003400) /*!< COMP output connected to HRTIM1 EE1_2*/ +#define COMP_Output_HRTIM1_EE6_2 ((uint32_t)0x00003800) /*!< COMP output connected to HRTIM1 EE6_2 */ + +/* Output Redirection specific to COMP3 */ +#define COMP_Output_TIM4IC1 ((uint32_t)0x00001C00) /*!< COMP output connected to TIM4 Input Capture 1 */ +#define COMP_Output_TIM3IC2 ((uint32_t)0x00002000) /*!< COMP output connected to TIM3 Input Capture 2 */ +#define COMP_Output_TIM15IC1 ((uint32_t)0x00002800) /*!< COMP output connected to TIM15 Input Capture 1 */ +#define COMP_Output_TIM15BKIN ((uint32_t)0x00002C00) /*!< COMP output connected to TIM15 Break Input (BKIN) */ + +/* Output Redirection specific to COMP4 */ +#define COMP_Output_TIM3IC3 ((uint32_t)0x00001800) /*!< COMP output connected to TIM3 Input Capture 3 */ +#define COMP_Output_TIM8OCREFCLR ((uint32_t)0x00001C00) /*!< COMP output connected to TIM8 OCREF Clear */ +#define COMP_Output_TIM15IC2 ((uint32_t)0x00002000) /*!< COMP output connected to TIM15 Input Capture 2 */ +#define COMP_Output_TIM4IC2 ((uint32_t)0x00002400) /*!< COMP output connected to TIM4 Input Capture 2 */ +#define COMP_Output_TIM15OCREFCLR ((uint32_t)0x00002800) /*!< COMP output connected to TIM15 OCREF Clear */ + +#define COMP_Output_HRTIM1_FLT7 ((uint32_t)0x00003000) /*!< COMP output connected to HRTIM1 FLT7 */ +#define COMP_Output_HRTIM1_EE2_2 ((uint32_t)0x00003400) /*!< COMP output connected to HRTIM1 EE2_2*/ +#define COMP_Output_HRTIM1_EE7_2 ((uint32_t)0x00003800) /*!< COMP output connected to HRTIM1 EE7_2 */ + +/* Output Redirection specific to COMP5 */ +#define COMP_Output_TIM2IC1 ((uint32_t)0x00001800) /*!< COMP output connected to TIM2 Input Capture 1 */ +#define COMP_Output_TIM17IC1 ((uint32_t)0x00002000) /*!< COMP output connected to TIM17 Input Capture 1 */ +#define COMP_Output_TIM4IC3 ((uint32_t)0x00002400) /*!< COMP output connected to TIM4 Input Capture 3 */ +#define COMP_Output_TIM16BKIN ((uint32_t)0x00002800) /*!< COMP output connected to TIM16 Break Input (BKIN) */ + +/* Output Redirection specific to COMP6 */ +#define COMP_Output_TIM2IC2 ((uint32_t)0x00001800) /*!< COMP output connected to TIM2 Input Capture 2 */ +#define COMP_Output_COMP6TIM2OCREFCLR ((uint32_t)0x00002000) /*!< COMP output connected to TIM2 OCREF Clear */ +#define COMP_Output_TIM16OCREFCLR ((uint32_t)0x00002400) /*!< COMP output connected to TIM16 OCREF Clear */ +#define COMP_Output_TIM16IC1 ((uint32_t)0x00002800) /*!< COMP output connected to TIM16 Input Capture 1 */ +#define COMP_Output_TIM4IC4 ((uint32_t)0x00002C00) /*!< COMP output connected to TIM4 Input Capture 4 */ + +#define COMP_Output_HRTIM1_FLT8 ((uint32_t)0x00003000) /*!< COMP output connected to HRTIM1 FLT8 */ +#define COMP_Output_HRTIM1_EE3_2 ((uint32_t)0x00003400) /*!< COMP output connected to HRTIM1 EE3_2*/ +#define COMP_Output_HRTIM1_EE8_2 ((uint32_t)0x00003800) /*!< COMP output connected to HRTIM1 EE8_2 */ + +/* Output Redirection specific to COMP7 */ +#define COMP_Output_TIM2IC3 ((uint32_t)0x00002000) /*!< COMP output connected to TIM2 Input Capture 3 */ +#define COMP_Output_TIM1IC2 ((uint32_t)0x00002400) /*!< COMP output connected to TIM1 Input Capture 2 */ +#define COMP_Output_TIM17OCREFCLR ((uint32_t)0x00002800) /*!< COMP output connected to TIM16 OCREF Clear */ +#define COMP_Output_TIM17BKIN ((uint32_t)0x00002C00) /*!< COMP output connected to TIM16 Break Input (BKIN) */ + +#define IS_COMP_OUTPUT(OUTPUT) (((OUTPUT) == COMP_Output_None) || \ + ((OUTPUT) == COMP_Output_TIM1BKIN) || \ + ((OUTPUT) == COMP_Output_TIM1IC1) || \ + ((OUTPUT) == COMP_Output_TIM1OCREFCLR) || \ + ((OUTPUT) == COMP_Output_TIM2IC4) || \ + ((OUTPUT) == COMP_Output_TIM2OCREFCLR) || \ + ((OUTPUT) == COMP_Output_COMP6TIM2OCREFCLR) || \ + ((OUTPUT) == COMP_Output_TIM3IC1) || \ + ((OUTPUT) == COMP_Output_TIM3OCREFCLR) || \ + ((OUTPUT) == COMP_Output_TIM8BKIN) || \ + ((OUTPUT) == COMP_Output_TIM1BKIN2) || \ + ((OUTPUT) == COMP_Output_TIM8BKIN2) || \ + ((OUTPUT) == COMP_Output_TIM2OCREFCLR) || \ + ((OUTPUT) == COMP_Output_TIM1BKIN2_TIM8BKIN2) || \ + ((OUTPUT) == COMP_Output_TIM3IC2) || \ + ((OUTPUT) == COMP_Output_TIM4IC1) || \ + ((OUTPUT) == COMP_Output_TIM15IC1) || \ + ((OUTPUT) == COMP_Output_TIM15BKIN) || \ + ((OUTPUT) == COMP_Output_TIM8OCREFCLR) || \ + ((OUTPUT) == COMP_Output_TIM3IC3) || \ + ((OUTPUT) == COMP_Output_TIM4IC1) || \ + ((OUTPUT) == COMP_Output_TIM15IC1) || \ + ((OUTPUT) == COMP_Output_TIM2IC1) || \ + ((OUTPUT) == COMP_Output_TIM4IC3) || \ + ((OUTPUT) == COMP_Output_TIM16BKIN) || \ + ((OUTPUT) == COMP_Output_TIM17IC1) || \ + ((OUTPUT) == COMP_Output_TIM2IC2) || \ + ((OUTPUT) == COMP_Output_TIM16IC1) || \ + ((OUTPUT) == COMP_Output_TIM4IC4) || \ + ((OUTPUT) == COMP_Output_TIM16OCREFCLR) || \ + ((OUTPUT) == COMP_Output_TIM2IC3) || \ + ((OUTPUT) == COMP_Output_TIM1IC2) || \ + ((OUTPUT) == COMP_Output_TIM17BKIN) || \ + ((OUTPUT) == COMP_Output_TIM17OCREFCLR) || \ + ((OUTPUT) == COMP_Output_HRTIM1_FLT6) || \ + ((OUTPUT) == COMP_Output_HRTIM1_EE1_2) || \ + ((OUTPUT) == COMP_Output_HRTIM1_EE6_2) || \ + ((OUTPUT) == COMP_Output_HRTIM1_FLT7) || \ + ((OUTPUT) == COMP_Output_HRTIM1_EE2_2) || \ + ((OUTPUT) == COMP_Output_HRTIM1_EE7_2) || \ + ((OUTPUT) == COMP_Output_HRTIM1_FLT8) || \ + ((OUTPUT) == COMP_Output_HRTIM1_EE3_2) || \ + ((OUTPUT) == COMP_Output_HRTIM1_EE8_2)) + +/** + * @} + */ + +/** @defgroup COMP_BlankingSrce + * @{ + */ + +/* No blanking source can be selected for all comparators */ +#define COMP_BlankingSrce_None ((uint32_t)0x00000000) /*!< No blanking source */ + +/* Blanking source common for COMP1, COMP2, COMP3 and COMP7 */ +#define COMP_BlankingSrce_TIM1OC5 COMP_CSR_COMPxBLANKING_0 /*!< TIM1 OC5 selected as blanking source for compartor */ + +/* Blanking source common for COMP1 and COMP2 */ +#define COMP_BlankingSrce_TIM2OC3 COMP_CSR_COMPxBLANKING_1 /*!< TIM2 OC5 selected as blanking source for compartor */ + +/* Blanking source common for COMP1, COMP2 and COMP5 */ +#define COMP_BlankingSrce_TIM3OC3 ((uint32_t)0x000C0000) /*!< TIM2 OC3 selected as blanking source for compartor */ + +/* Blanking source common for COMP3 and COMP6 */ +#define COMP_BlankingSrce_TIM2OC4 ((uint32_t)0x000C0000) /*!< TIM2 OC4 selected as blanking source for compartor */ + +/* Blanking source common for COMP4, COMP5, COMP6 and COMP7 */ +#define COMP_BlankingSrce_TIM8OC5 COMP_CSR_COMPxBLANKING_1 /*!< TIM8 OC5 selected as blanking source for compartor */ + +/* Blanking source for COMP4 */ +#define COMP_BlankingSrce_TIM3OC4 COMP_CSR_COMPxBLANKING_0 /*!< TIM3 OC4 selected as blanking source for compartor */ +#define COMP_BlankingSrce_TIM15OC1 ((uint32_t)0x000C0000) /*!< TIM15 OC1 selected as blanking source for compartor */ + +/* Blanking source common for COMP6 and COMP7 */ +#define COMP_BlankingSrce_TIM15OC2 COMP_CSR_COMPxBLANKING_2 /*!< TIM15 OC2 selected as blanking source for compartor */ + +#define IS_COMP_BLANKING_SOURCE(SOURCE) (((SOURCE) == COMP_BlankingSrce_None) || \ + ((SOURCE) == COMP_BlankingSrce_TIM1OC5) || \ + ((SOURCE) == COMP_BlankingSrce_TIM2OC3) || \ + ((SOURCE) == COMP_BlankingSrce_TIM3OC3) || \ + ((SOURCE) == COMP_BlankingSrce_TIM2OC4) || \ + ((SOURCE) == COMP_BlankingSrce_TIM8OC5) || \ + ((SOURCE) == COMP_BlankingSrce_TIM3OC4) || \ + ((SOURCE) == COMP_BlankingSrce_TIM15OC1) || \ + ((SOURCE) == COMP_BlankingSrce_TIM15OC2)) +/** + * @} + */ + +/** @defgroup COMP_OutputPoloarity + * @{ + */ +#define COMP_OutputPol_NonInverted ((uint32_t)0x00000000) /*!< COMP output on GPIO isn't inverted */ +#define COMP_OutputPol_Inverted COMP_CSR_COMPxPOL /*!< COMP output on GPIO is inverted */ + +#define IS_COMP_OUTPUT_POL(POL) (((POL) == COMP_OutputPol_NonInverted) || \ + ((POL) == COMP_OutputPol_Inverted)) + +/** + * @} + */ + +/** @defgroup COMP_Hysteresis + * @{ + */ +/* Please refer to the electrical characteristics in the device datasheet for + the hysteresis level */ +#define COMP_Hysteresis_No 0x00000000 /*!< No hysteresis */ +#define COMP_Hysteresis_Low COMP_CSR_COMPxHYST_0 /*!< Hysteresis level low */ +#define COMP_Hysteresis_Medium COMP_CSR_COMPxHYST_1 /*!< Hysteresis level medium */ +#define COMP_Hysteresis_High COMP_CSR_COMPxHYST /*!< Hysteresis level high */ + +#define IS_COMP_HYSTERESIS(HYSTERESIS) (((HYSTERESIS) == COMP_Hysteresis_No) || \ + ((HYSTERESIS) == COMP_Hysteresis_Low) || \ + ((HYSTERESIS) == COMP_Hysteresis_Medium) || \ + ((HYSTERESIS) == COMP_Hysteresis_High)) +/** + * @} + */ + +/** @defgroup COMP_Mode + * @{ + */ +/* Please refer to the electrical characteristics in the device datasheet for + the power consumption values */ +#define COMP_Mode_HighSpeed 0x00000000 /*!< High Speed */ +#define COMP_Mode_MediumSpeed COMP_CSR_COMPxMODE_0 /*!< Medium Speed */ +#define COMP_Mode_LowPower COMP_CSR_COMPxMODE_1 /*!< Low power mode */ +#define COMP_Mode_UltraLowPower COMP_CSR_COMPxMODE /*!< Ultra-low power mode */ + +#define IS_COMP_MODE(MODE) (((MODE) == COMP_Mode_UltraLowPower) || \ + ((MODE) == COMP_Mode_LowPower) || \ + ((MODE) == COMP_Mode_MediumSpeed) || \ + ((MODE) == COMP_Mode_HighSpeed)) +/** + * @} + */ + +/** @defgroup COMP_OutputLevel + * @{ + */ +/* When output polarity is not inverted, comparator output is high when + the non-inverting input is at a higher voltage than the inverting input */ +#define COMP_OutputLevel_High COMP_CSR_COMPxOUT +/* When output polarity is not inverted, comparator output is low when + the non-inverting input is at a lower voltage than the inverting input*/ +#define COMP_OutputLevel_Low ((uint32_t)0x00000000) + +/** + * @} + */ + +/** @defgroup COMP_WindowMode + * @{ + */ +#define IS_COMP_WINDOW(WINDOW) (((WINDOW) == COMP_Selection_COMP2) || \ + ((WINDOW) == COMP_Selection_COMP4) || \ + ((WINDOW) == COMP_Selection_COMP6)) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Function used to set the COMP configuration to the default reset state ****/ +void COMP_DeInit(uint32_t COMP_Selection); + +/* Initialization and Configuration functions *********************************/ +void COMP_Init(uint32_t COMP_Selection, COMP_InitTypeDef* COMP_InitStruct); +void COMP_StructInit(COMP_InitTypeDef* COMP_InitStruct); +void COMP_Cmd(uint32_t COMP_Selection, FunctionalState NewState); +void COMP_SwitchCmd(uint32_t COMP_Selection, FunctionalState NewState); +uint32_t COMP_GetOutputLevel(uint32_t COMP_Selection); + +/* Window mode control function ***********************************************/ +void COMP_WindowCmd(uint32_t COMP_Selection, FunctionalState NewState); + +/* COMP configuration locking function ****************************************/ +void COMP_LockConfig(uint32_t COMP_Selection); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_COMP_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_conf.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,94 @@ +/** + ****************************************************************************** + * @file stm32f30x_conf.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief Library configuration file. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30X_CONF_H +#define __STM32F30X_CONF_H + + +/* Includes ------------------------------------------------------------------*/ +/* Comment the line below to disable peripheral header file inclusion */ +#include "stm32f30x_adc.h" +#include "stm32f30x_can.h" +#include "stm32f30x_crc.h" +#include "stm32f30x_comp.h" +#include "stm32f30x_dac.h" +#include "stm32f30x_dbgmcu.h" +#include "stm32f30x_dma.h" +#include "stm32f30x_exti.h" +#include "stm32f30x_flash.h" +#include "stm32f30x_gpio.h" +#include "stm32f30x_hrtim.h" +#include "stm32f30x_syscfg.h" +#include "stm32f30x_i2c.h" +#include "stm32f30x_iwdg.h" +#include "stm32f30x_opamp.h" +#include "stm32f30x_pwr.h" +#include "stm32f30x_rcc.h" +#include "stm32f30x_rtc.h" +#include "stm32f30x_spi.h" +#include "stm32f30x_tim.h" +#include "stm32f30x_usart.h" +#include "stm32f30x_wwdg.h" +#include "stm32f30x_misc.h" /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Uncomment the line below to expanse the "assert_param" macro in the + Standard Peripheral Library drivers code */ +/* #define USE_FULL_ASSERT 1 */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT + +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function which reports + * the name of the source file and the source line number of the call + * that failed. If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0) +#endif /* USE_FULL_ASSERT */ + +#endif /* __STM32F30X_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_crc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,131 @@ +/** + ****************************************************************************** + * @file stm32f30x_crc.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the CRC firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_CRC_H +#define __STM32F30x_CRC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/*!< Includes ----------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup CRC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup CRC_ReverseInputData + * @{ + */ +#define CRC_ReverseInputData_No ((uint32_t)0x00000000) /*!< No reverse operation of Input Data */ +#define CRC_ReverseInputData_8bits CRC_CR_REV_IN_0 /*!< Reverse operation of Input Data on 8 bits */ +#define CRC_ReverseInputData_16bits CRC_CR_REV_IN_1 /*!< Reverse operation of Input Data on 16 bits */ +#define CRC_ReverseInputData_32bits CRC_CR_REV_IN /*!< Reverse operation of Input Data on 32 bits */ + +#define IS_CRC_REVERSE_INPUT_DATA(DATA) (((DATA) == CRC_ReverseInputData_No) || \ + ((DATA) == CRC_ReverseInputData_8bits) || \ + ((DATA) == CRC_ReverseInputData_16bits) || \ + ((DATA) == CRC_ReverseInputData_32bits)) + +/** + * @} + */ + +/** @defgroup CRC_PolynomialSize + * @{ + */ +#define CRC_PolSize_7 CRC_CR_POLSIZE /*!< 7-bit polynomial for CRC calculation */ +#define CRC_PolSize_8 CRC_CR_POLSIZE_1 /*!< 8-bit polynomial for CRC calculation */ +#define CRC_PolSize_16 CRC_CR_POLSIZE_0 /*!< 16-bit polynomial for CRC calculation */ +#define CRC_PolSize_32 ((uint32_t)0x00000000)/*!< 32-bit polynomial for CRC calculation */ + +#define IS_CRC_POL_SIZE(SIZE) (((SIZE) == CRC_PolSize_7) || \ + ((SIZE) == CRC_PolSize_8) || \ + ((SIZE) == CRC_PolSize_16) || \ + ((SIZE) == CRC_PolSize_32)) + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* Configuration of the CRC computation unit **********************************/ +void CRC_DeInit(void); +void CRC_ResetDR(void); +void CRC_PolynomialSizeSelect(uint32_t CRC_PolSize); +void CRC_ReverseInputDataSelect(uint32_t CRC_ReverseInputData); +void CRC_ReverseOutputDataCmd(FunctionalState NewState); +void CRC_SetInitRegister(uint32_t CRC_InitValue); +void CRC_SetPolynomial(uint32_t CRC_Pol); + +/* CRC computation ************************************************************/ +uint32_t CRC_CalcCRC(uint32_t CRC_Data); +uint32_t CRC_CalcCRC16bits(uint16_t CRC_Data); +uint32_t CRC_CalcCRC8bits(uint8_t CRC_Data); +uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength); +uint32_t CRC_GetCRC(void); + +/* Independent register (IDR) access (write/read) *****************************/ +void CRC_SetIDRegister(uint8_t CRC_IDValue); +uint8_t CRC_GetIDRegister(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_CRC_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_dac.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,332 @@ +/** + ****************************************************************************** + * @file stm32f30x_dac.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the DAC firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_DAC_H +#define __STM32F30x_DAC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup DAC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +#define DAC_CR_DMAUDRIE ((uint32_t)0x00002000) /*!< DAC channel DMA underrun interrupt enable */ + +/** + * @brief DAC Init structure definition + */ + +typedef struct +{ + uint32_t DAC_Trigger; /*!< Specifies the external trigger for the selected DAC channel. + This parameter can be a value of @ref DAC_trigger_selection */ + + uint32_t DAC_WaveGeneration; /*!< Specifies whether DAC channel noise waves or triangle waves + are generated, or whether no wave is generated. + This parameter can be a value of @ref DAC_wave_generation */ + + uint32_t DAC_LFSRUnmask_TriangleAmplitude; /*!< Specifies the LFSR mask for noise wave generation or + the maximum amplitude triangle generation for the DAC channel. + This parameter can be a value of @ref DAC_lfsrunmask_triangleamplitude */ + + uint32_t DAC_Buffer_Switch; /*!< Specifies whether the DAC channel output buffer is enabled or disabled or + the DAC channel output switch is enabled or disabled. + This parameter can be a value of @ref DAC_buffer_switch */ +}DAC_InitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup DAC_Exported_Constants + * @{ + */ + +#define IS_DAC_ALL_PERIPH(PERIPH) (((PERIPH) == DAC1) || \ + ((PERIPH) == DAC2)) + +#define IS_DAC_LIST1_PERIPH(PERIPH) (((PERIPH) == DAC1)) + +/** @defgroup DAC_trigger_selection + * @{ + */ + +#define DAC_Trigger_None ((uint32_t)0x00000000) /*!< Conversion is automatic once the DAC1_DHRxxxx register + has been loaded, and not by external trigger */ +#define DAC_Trigger_T6_TRGO ((uint32_t)0x00000004) /*!< TIM6 TRGO selected as external conversion trigger for DAC1/2 channel1/2 */ +#define DAC_Trigger_T3_TRGO ((uint32_t)0x0000000C) /*!< TIM3 TRGO selected as external conversion trigger for DAC1/2 channel1/2 */ +#define DAC_Trigger_T8_TRGO ((uint32_t)0x0000000C) /*!< TIM8 TRGO selected as external conversion trigger for DAC1 channel1/2 */ +#define DAC_Trigger_T7_TRGO ((uint32_t)0x00000014) /*!< TIM7 TRGO selected as external conversion trigger for DAC1/2 channel1/2 */ +#define DAC_Trigger_T15_TRGO ((uint32_t)0x0000001C) /*!< TIM15 TRGO selected as external conversion trigger for DAC1/2 channel1/2 */ +#define DAC_Trigger_HRTIM1_DACTRG1 ((uint32_t)0x0000001C) /*!< HRTIM1 DACTRG1 selected as external conversion trigger for DAC1 channel1/2 */ +#define DAC_Trigger_T2_TRGO ((uint32_t)0x00000024) /*!< TIM2 TRGO selected as external conversion trigger for DAC1/2 channel1/2 */ +#define DAC_Trigger_T4_TRGO ((uint32_t)0x0000002C) /*!< TIM4 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_HRTIM1_DACTRG2 ((uint32_t)0x0000002C) /*!< HRTIM1 DACTRG2 selected as external conversion trigger for DAC1 channel1/2 */ +#define DAC_Trigger_HRTIM1_DACTRG3 ((uint32_t)0x0000002C) /*!< HRTIM1 DACTRG3 selected as external conversion trigger for DAC2 channel1 */ +#define DAC_Trigger_Ext_IT9 ((uint32_t)0x00000034) /*!< EXTI Line9 event selected as external conversion trigger for DAC1/2 channel1/2 */ +#define DAC_Trigger_Software ((uint32_t)0x0000003C) /*!< Conversion started by software trigger for DAC1/2 channel1/2 */ + +#define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_Trigger_None) || \ + ((TRIGGER) == DAC_Trigger_T6_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T3_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T8_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T7_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T15_TRGO) || \ + ((TRIGGER) == DAC_Trigger_HRTIM1_DACTRG1)|| \ + ((TRIGGER) == DAC_Trigger_T2_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T4_TRGO) || \ + ((TRIGGER) == DAC_Trigger_HRTIM1_DACTRG2)|| \ + ((TRIGGER) == DAC_Trigger_HRTIM1_DACTRG3)|| \ + ((TRIGGER) == DAC_Trigger_Ext_IT9) || \ + ((TRIGGER) == DAC_Trigger_Software)) + +/** + * @} + */ + +/** @defgroup DAC_wave_generation + * @{ + */ + +#define DAC_WaveGeneration_None ((uint32_t)0x00000000) +#define DAC_WaveGeneration_Noise ((uint32_t)0x00000040) +#define DAC_WaveGeneration_Triangle ((uint32_t)0x00000080) + +#define IS_DAC_GENERATE_WAVE(WAVE) (((WAVE) == DAC_WaveGeneration_None) || \ + ((WAVE) == DAC_WaveGeneration_Noise) || \ + ((WAVE) == DAC_WaveGeneration_Triangle)) +/** + * @} + */ + +/** @defgroup DAC_lfsrunmask_triangleamplitude + * @{ + */ + +#define DAC_LFSRUnmask_Bit0 ((uint32_t)0x00000000) /*!< Unmask DAC channel LFSR bit0 for noise wave generation */ +#define DAC_LFSRUnmask_Bits1_0 ((uint32_t)0x00000100) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits2_0 ((uint32_t)0x00000200) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits3_0 ((uint32_t)0x00000300) /*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits4_0 ((uint32_t)0x00000400) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits5_0 ((uint32_t)0x00000500) /*!< Unmask DAC channel LFSR bit[5:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits6_0 ((uint32_t)0x00000600) /*!< Unmask DAC channel LFSR bit[6:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits7_0 ((uint32_t)0x00000700) /*!< Unmask DAC channel LFSR bit[7:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits8_0 ((uint32_t)0x00000800) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits9_0 ((uint32_t)0x00000900) /*!< Unmask DAC channel LFSR bit[9:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits10_0 ((uint32_t)0x00000A00) /*!< Unmask DAC channel LFSR bit[10:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits11_0 ((uint32_t)0x00000B00) /*!< Unmask DAC channel LFSR bit[11:0] for noise wave generation */ +#define DAC_TriangleAmplitude_1 ((uint32_t)0x00000000) /*!< Select max triangle amplitude of 1 */ +#define DAC_TriangleAmplitude_3 ((uint32_t)0x00000100) /*!< Select max triangle amplitude of 3 */ +#define DAC_TriangleAmplitude_7 ((uint32_t)0x00000200) /*!< Select max triangle amplitude of 7 */ +#define DAC_TriangleAmplitude_15 ((uint32_t)0x00000300) /*!< Select max triangle amplitude of 15 */ +#define DAC_TriangleAmplitude_31 ((uint32_t)0x00000400) /*!< Select max triangle amplitude of 31 */ +#define DAC_TriangleAmplitude_63 ((uint32_t)0x00000500) /*!< Select max triangle amplitude of 63 */ +#define DAC_TriangleAmplitude_127 ((uint32_t)0x00000600) /*!< Select max triangle amplitude of 127 */ +#define DAC_TriangleAmplitude_255 ((uint32_t)0x00000700) /*!< Select max triangle amplitude of 255 */ +#define DAC_TriangleAmplitude_511 ((uint32_t)0x00000800) /*!< Select max triangle amplitude of 511 */ +#define DAC_TriangleAmplitude_1023 ((uint32_t)0x00000900) /*!< Select max triangle amplitude of 1023 */ +#define DAC_TriangleAmplitude_2047 ((uint32_t)0x00000A00) /*!< Select max triangle amplitude of 2047 */ +#define DAC_TriangleAmplitude_4095 ((uint32_t)0x00000B00) /*!< Select max triangle amplitude of 4095 */ + +#define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUnmask_Bit0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits1_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits2_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits3_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits4_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits5_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits6_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits7_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits8_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits9_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits10_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits11_0) || \ + ((VALUE) == DAC_TriangleAmplitude_1) || \ + ((VALUE) == DAC_TriangleAmplitude_3) || \ + ((VALUE) == DAC_TriangleAmplitude_7) || \ + ((VALUE) == DAC_TriangleAmplitude_15) || \ + ((VALUE) == DAC_TriangleAmplitude_31) || \ + ((VALUE) == DAC_TriangleAmplitude_63) || \ + ((VALUE) == DAC_TriangleAmplitude_127) || \ + ((VALUE) == DAC_TriangleAmplitude_255) || \ + ((VALUE) == DAC_TriangleAmplitude_511) || \ + ((VALUE) == DAC_TriangleAmplitude_1023) || \ + ((VALUE) == DAC_TriangleAmplitude_2047) || \ + ((VALUE) == DAC_TriangleAmplitude_4095)) +/** + * @} + */ + +/** @defgroup DAC_buffer_switch + * @{ + */ + +#define DAC_BufferSwitch_Disable ((uint32_t)0x00000000) +#define DAC_BufferSwitch_Enable ((uint32_t)0x00000002) + +#define IS_DAC_BUFFER_SWITCH_STATE(STATE) (((STATE) == DAC_BufferSwitch_Enable) || \ + ((STATE) == DAC_BufferSwitch_Disable)) +/** + * @} + */ + +/** @defgroup DAC_Channel_selection + * @{ + */ +#define DAC_Channel_1 ((uint32_t)0x00000000) +#define DAC_Channel_2 ((uint32_t)0x00000010) + +#define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_Channel_1) || \ + ((CHANNEL) == DAC_Channel_2)) +/** + * @} + */ + +/** @defgroup DAC_data_alignement + * @{ + */ + +#define DAC_Align_12b_R ((uint32_t)0x00000000) +#define DAC_Align_12b_L ((uint32_t)0x00000004) +#define DAC_Align_8b_R ((uint32_t)0x00000008) + +#define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_Align_12b_R) || \ + ((ALIGN) == DAC_Align_12b_L) || \ + ((ALIGN) == DAC_Align_8b_R)) +/** + * @} + */ + +/** @defgroup DAC_wave_generation + * @{ + */ + +#define DAC_Wave_Noise ((uint32_t)0x00000040) +#define DAC_Wave_Triangle ((uint32_t)0x00000080) + +#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_Wave_Noise) || \ + ((WAVE) == DAC_Wave_Triangle)) +/** + * @} + */ + +/** @defgroup DAC_data + * @{ + */ + +#define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0) +/** + * @} + */ + +/** @defgroup DAC_interrupts_definition + * @{ + */ +#define DAC_IT_DMAUDR ((uint32_t)0x00002000) +#define IS_DAC_IT(IT) (((IT) == DAC_IT_DMAUDR)) + +/** + * @} + */ + +/** @defgroup DAC_flags_definition + * @{ + */ + +#define DAC_FLAG_DMAUDR ((uint32_t)0x00002000) +#define IS_DAC_FLAG(FLAG) (((FLAG) == DAC_FLAG_DMAUDR)) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/* Function used to set the DAC configuration to the default reset state *****/ +void DAC_DeInit(DAC_TypeDef* DACx); + +/* DAC channels configuration: trigger, output buffer, data format functions */ +void DAC_Init(DAC_TypeDef* DACx, uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct); +void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct); +void DAC_Cmd(DAC_TypeDef* DACx, uint32_t DAC_Channel, FunctionalState NewState); +void DAC_SoftwareTriggerCmd(DAC_TypeDef* DACx, uint32_t DAC_Channel, FunctionalState NewState); +void DAC_DualSoftwareTriggerCmd(DAC_TypeDef* DACx, FunctionalState NewState); +void DAC_WaveGenerationCmd(DAC_TypeDef* DACx, uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState); +void DAC_SetChannel1Data(DAC_TypeDef* DACx, uint32_t DAC_Align, uint16_t Data); +void DAC_SetChannel2Data(DAC_TypeDef* DACx, uint32_t DAC_Align, uint16_t Data); +void DAC_SetDualChannelData(DAC_TypeDef* DACx, uint32_t DAC_Align, uint16_t Data2, uint16_t Data1); +uint16_t DAC_GetDataOutputValue(DAC_TypeDef* DACx, uint32_t DAC_Channel); + +/* DMA management functions ***************************************************/ +void DAC_DMACmd(DAC_TypeDef* DACx, uint32_t DAC_Channel, FunctionalState NewState); + +/* Interrupts and flags management functions **********************************/ +void DAC_ITConfig(DAC_TypeDef* DACx, uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState); +FlagStatus DAC_GetFlagStatus(DAC_TypeDef* DACx, uint32_t DAC_Channel, uint32_t DAC_FLAG); +void DAC_ClearFlag(DAC_TypeDef* DACx, uint32_t DAC_Channel, uint32_t DAC_FLAG); +ITStatus DAC_GetITStatus(DAC_TypeDef* DACx, uint32_t DAC_Channel, uint32_t DAC_IT); +void DAC_ClearITPendingBit(DAC_TypeDef* DACx, uint32_t DAC_Channel, uint32_t DAC_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_DAC_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_dbgmcu.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,118 @@ +/** + ****************************************************************************** + * @file stm32f30x_dbgmcu.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the DBGMCU firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_DBGMCU_H +#define __STM32F30x_DBGMCU_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup DBGMCU + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup DBGMCU_Exported_Constants + * @{ + */ +#define DBGMCU_SLEEP ((uint32_t)0x00000001) +#define DBGMCU_STOP ((uint32_t)0x00000002) +#define DBGMCU_STANDBY ((uint32_t)0x00000004) +#define IS_DBGMCU_PERIPH(PERIPH) ((((PERIPH) & 0xFFFFFFF8) == 0x00) && ((PERIPH) != 0x00)) + +#define DBGMCU_TIM2_STOP ((uint32_t)0x00000001) +#define DBGMCU_TIM3_STOP ((uint32_t)0x00000002) +#define DBGMCU_TIM4_STOP ((uint32_t)0x00000004) +#define DBGMCU_TIM6_STOP ((uint32_t)0x00000010) +#define DBGMCU_TIM7_STOP ((uint32_t)0x00000020) +#define DBGMCU_RTC_STOP ((uint32_t)0x00000400) +#define DBGMCU_WWDG_STOP ((uint32_t)0x00000800) +#define DBGMCU_IWDG_STOP ((uint32_t)0x00001000) +#define DBGMCU_I2C1_SMBUS_TIMEOUT ((uint32_t)0x00200000) +#define DBGMCU_I2C2_SMBUS_TIMEOUT ((uint32_t)0x00400000) +#define DBGMCU_CAN1_STOP ((uint32_t)0x02000000) + +#define IS_DBGMCU_APB1PERIPH(PERIPH) ((((PERIPH) & 0xFD9FE3C8) == 0x00) && ((PERIPH) != 0x00)) + +#define DBGMCU_TIM1_STOP ((uint32_t)0x00000001) +#define DBGMCU_TIM8_STOP ((uint32_t)0x00000002) +#define DBGMCU_TIM15_STOP ((uint32_t)0x00000004) +#define DBGMCU_TIM16_STOP ((uint32_t)0x00000008) +#define DBGMCU_TIM17_STOP ((uint32_t)0x00000010) +#define IS_DBGMCU_APB2PERIPH(PERIPH) ((((PERIPH) & 0xFFFFFFE0) == 0x00) && ((PERIPH) != 0x00)) + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/* Device and Revision ID management functions ********************************/ +uint32_t DBGMCU_GetREVID(void); +uint32_t DBGMCU_GetDEVID(void); + +/* Peripherals Configuration functions ****************************************/ +void DBGMCU_Config(uint32_t DBGMCU_Periph, FunctionalState NewState); +void DBGMCU_APB1PeriphConfig(uint32_t DBGMCU_Periph, FunctionalState NewState); +void DBGMCU_APB2PeriphConfig(uint32_t DBGMCU_Periph, FunctionalState NewState); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_DBGMCU_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_dma.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,446 @@ +/** + ****************************************************************************** + * @file stm32f30x_dma.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the DMA firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_DMA_H +#define __STM32F30x_DMA_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup DMA + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief DMA Init structures definition + */ +typedef struct +{ + uint32_t DMA_PeripheralBaseAddr; /*!< Specifies the peripheral base address for DMAy Channelx. */ + + uint32_t DMA_MemoryBaseAddr; /*!< Specifies the memory base address for DMAy Channelx. */ + + uint32_t DMA_DIR; /*!< Specifies if the peripheral is the source or destination. + This parameter can be a value of @ref DMA_data_transfer_direction */ + + uint16_t DMA_BufferSize; /*!< Specifies the buffer size, in data unit, of the specified Channel. + The data unit is equal to the configuration set in DMA_PeripheralDataSize + or DMA_MemoryDataSize members depending in the transfer direction. */ + + uint32_t DMA_PeripheralInc; /*!< Specifies whether the Peripheral address register is incremented or not. + This parameter can be a value of @ref DMA_peripheral_incremented_mode */ + + uint32_t DMA_MemoryInc; /*!< Specifies whether the memory address register is incremented or not. + This parameter can be a value of @ref DMA_memory_incremented_mode */ + + uint32_t DMA_PeripheralDataSize; /*!< Specifies the Peripheral data width. + This parameter can be a value of @ref DMA_peripheral_data_size */ + + uint32_t DMA_MemoryDataSize; /*!< Specifies the Memory data width. + This parameter can be a value of @ref DMA_memory_data_size */ + + uint32_t DMA_Mode; /*!< Specifies the operation mode of the DMAy Channelx. + This parameter can be a value of @ref DMA_circular_normal_mode + @note: The circular buffer mode cannot be used if the memory-to-memory + data transfer is configured on the selected Channel */ + + uint32_t DMA_Priority; /*!< Specifies the software priority for the DMAy Channelx. + This parameter can be a value of @ref DMA_priority_level */ + + uint32_t DMA_M2M; /*!< Specifies if the DMAy Channelx will be used in memory-to-memory transfer. + This parameter can be a value of @ref DMA_memory_to_memory */ +}DMA_InitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup DMA_Exported_Constants + * @{ + */ + +#define IS_DMA_ALL_PERIPH(PERIPH) (((PERIPH) == DMA1_Channel1) || \ + ((PERIPH) == DMA1_Channel2) || \ + ((PERIPH) == DMA1_Channel3) || \ + ((PERIPH) == DMA1_Channel4) || \ + ((PERIPH) == DMA1_Channel5) || \ + ((PERIPH) == DMA1_Channel6) || \ + ((PERIPH) == DMA1_Channel7) || \ + ((PERIPH) == DMA2_Channel1) || \ + ((PERIPH) == DMA2_Channel2) || \ + ((PERIPH) == DMA2_Channel3) || \ + ((PERIPH) == DMA2_Channel4) || \ + ((PERIPH) == DMA2_Channel5)) + +/** @defgroup DMA_data_transfer_direction + * @{ + */ + +#define DMA_DIR_PeripheralSRC ((uint32_t)0x00000000) +#define DMA_DIR_PeripheralDST DMA_CCR_DIR + +#define IS_DMA_DIR(DIR) (((DIR) == DMA_DIR_PeripheralSRC) || \ + ((DIR) == DMA_DIR_PeripheralDST)) +/** + * @} + */ + + +/** @defgroup DMA_peripheral_incremented_mode + * @{ + */ + +#define DMA_PeripheralInc_Disable ((uint32_t)0x00000000) +#define DMA_PeripheralInc_Enable DMA_CCR_PINC + +#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PeripheralInc_Disable) || \ + ((STATE) == DMA_PeripheralInc_Enable)) +/** + * @} + */ + +/** @defgroup DMA_memory_incremented_mode + * @{ + */ + +#define DMA_MemoryInc_Disable ((uint32_t)0x00000000) +#define DMA_MemoryInc_Enable DMA_CCR_MINC + +#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MemoryInc_Disable) || \ + ((STATE) == DMA_MemoryInc_Enable)) +/** + * @} + */ + +/** @defgroup DMA_peripheral_data_size + * @{ + */ + +#define DMA_PeripheralDataSize_Byte ((uint32_t)0x00000000) +#define DMA_PeripheralDataSize_HalfWord DMA_CCR_PSIZE_0 +#define DMA_PeripheralDataSize_Word DMA_CCR_PSIZE_1 + +#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PeripheralDataSize_Byte) || \ + ((SIZE) == DMA_PeripheralDataSize_HalfWord) || \ + ((SIZE) == DMA_PeripheralDataSize_Word)) +/** + * @} + */ + +/** @defgroup DMA_memory_data_size + * @{ + */ + +#define DMA_MemoryDataSize_Byte ((uint32_t)0x00000000) +#define DMA_MemoryDataSize_HalfWord DMA_CCR_MSIZE_0 +#define DMA_MemoryDataSize_Word DMA_CCR_MSIZE_1 + +#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MemoryDataSize_Byte) || \ + ((SIZE) == DMA_MemoryDataSize_HalfWord) || \ + ((SIZE) == DMA_MemoryDataSize_Word)) +/** + * @} + */ + +/** @defgroup DMA_circular_normal_mode + * @{ + */ + +#define DMA_Mode_Normal ((uint32_t)0x00000000) +#define DMA_Mode_Circular DMA_CCR_CIRC + +#define IS_DMA_MODE(MODE) (((MODE) == DMA_Mode_Normal) || ((MODE) == DMA_Mode_Circular)) +/** + * @} + */ + +/** @defgroup DMA_priority_level + * @{ + */ + +#define DMA_Priority_VeryHigh DMA_CCR_PL +#define DMA_Priority_High DMA_CCR_PL_1 +#define DMA_Priority_Medium DMA_CCR_PL_0 +#define DMA_Priority_Low ((uint32_t)0x00000000) + +#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_Priority_VeryHigh) || \ + ((PRIORITY) == DMA_Priority_High) || \ + ((PRIORITY) == DMA_Priority_Medium) || \ + ((PRIORITY) == DMA_Priority_Low)) +/** + * @} + */ + +/** @defgroup DMA_memory_to_memory + * @{ + */ + +#define DMA_M2M_Disable ((uint32_t)0x00000000) +#define DMA_M2M_Enable DMA_CCR_MEM2MEM + +#define IS_DMA_M2M_STATE(STATE) (((STATE) == DMA_M2M_Disable) || ((STATE) == DMA_M2M_Enable)) + +/** + * @} + */ + +/** @defgroup DMA_interrupts_definition + * @{ + */ + +#define DMA_IT_TC ((uint32_t)0x00000002) +#define DMA_IT_HT ((uint32_t)0x00000004) +#define DMA_IT_TE ((uint32_t)0x00000008) +#define IS_DMA_CONFIG_IT(IT) ((((IT) & 0xFFFFFFF1) == 0x00) && ((IT) != 0x00)) + +#define DMA1_IT_GL1 ((uint32_t)0x00000001) +#define DMA1_IT_TC1 ((uint32_t)0x00000002) +#define DMA1_IT_HT1 ((uint32_t)0x00000004) +#define DMA1_IT_TE1 ((uint32_t)0x00000008) +#define DMA1_IT_GL2 ((uint32_t)0x00000010) +#define DMA1_IT_TC2 ((uint32_t)0x00000020) +#define DMA1_IT_HT2 ((uint32_t)0x00000040) +#define DMA1_IT_TE2 ((uint32_t)0x00000080) +#define DMA1_IT_GL3 ((uint32_t)0x00000100) +#define DMA1_IT_TC3 ((uint32_t)0x00000200) +#define DMA1_IT_HT3 ((uint32_t)0x00000400) +#define DMA1_IT_TE3 ((uint32_t)0x00000800) +#define DMA1_IT_GL4 ((uint32_t)0x00001000) +#define DMA1_IT_TC4 ((uint32_t)0x00002000) +#define DMA1_IT_HT4 ((uint32_t)0x00004000) +#define DMA1_IT_TE4 ((uint32_t)0x00008000) +#define DMA1_IT_GL5 ((uint32_t)0x00010000) +#define DMA1_IT_TC5 ((uint32_t)0x00020000) +#define DMA1_IT_HT5 ((uint32_t)0x00040000) +#define DMA1_IT_TE5 ((uint32_t)0x00080000) +#define DMA1_IT_GL6 ((uint32_t)0x00100000) +#define DMA1_IT_TC6 ((uint32_t)0x00200000) +#define DMA1_IT_HT6 ((uint32_t)0x00400000) +#define DMA1_IT_TE6 ((uint32_t)0x00800000) +#define DMA1_IT_GL7 ((uint32_t)0x01000000) +#define DMA1_IT_TC7 ((uint32_t)0x02000000) +#define DMA1_IT_HT7 ((uint32_t)0x04000000) +#define DMA1_IT_TE7 ((uint32_t)0x08000000) + +#define DMA2_IT_GL1 ((uint32_t)0x10000001) +#define DMA2_IT_TC1 ((uint32_t)0x10000002) +#define DMA2_IT_HT1 ((uint32_t)0x10000004) +#define DMA2_IT_TE1 ((uint32_t)0x10000008) +#define DMA2_IT_GL2 ((uint32_t)0x10000010) +#define DMA2_IT_TC2 ((uint32_t)0x10000020) +#define DMA2_IT_HT2 ((uint32_t)0x10000040) +#define DMA2_IT_TE2 ((uint32_t)0x10000080) +#define DMA2_IT_GL3 ((uint32_t)0x10000100) +#define DMA2_IT_TC3 ((uint32_t)0x10000200) +#define DMA2_IT_HT3 ((uint32_t)0x10000400) +#define DMA2_IT_TE3 ((uint32_t)0x10000800) +#define DMA2_IT_GL4 ((uint32_t)0x10001000) +#define DMA2_IT_TC4 ((uint32_t)0x10002000) +#define DMA2_IT_HT4 ((uint32_t)0x10004000) +#define DMA2_IT_TE4 ((uint32_t)0x10008000) +#define DMA2_IT_GL5 ((uint32_t)0x10010000) +#define DMA2_IT_TC5 ((uint32_t)0x10020000) +#define DMA2_IT_HT5 ((uint32_t)0x10040000) +#define DMA2_IT_TE5 ((uint32_t)0x10080000) + +#define IS_DMA_CLEAR_IT(IT) (((((IT) & 0xF0000000) == 0x00) || (((IT) & 0xEFF00000) == 0x00)) && ((IT) != 0x00)) + +#define IS_DMA_GET_IT(IT) (((IT) == DMA1_IT_GL1) || ((IT) == DMA1_IT_TC1) || \ + ((IT) == DMA1_IT_HT1) || ((IT) == DMA1_IT_TE1) || \ + ((IT) == DMA1_IT_GL2) || ((IT) == DMA1_IT_TC2) || \ + ((IT) == DMA1_IT_HT2) || ((IT) == DMA1_IT_TE2) || \ + ((IT) == DMA1_IT_GL3) || ((IT) == DMA1_IT_TC3) || \ + ((IT) == DMA1_IT_HT3) || ((IT) == DMA1_IT_TE3) || \ + ((IT) == DMA1_IT_GL4) || ((IT) == DMA1_IT_TC4) || \ + ((IT) == DMA1_IT_HT4) || ((IT) == DMA1_IT_TE4) || \ + ((IT) == DMA1_IT_GL5) || ((IT) == DMA1_IT_TC5) || \ + ((IT) == DMA1_IT_HT5) || ((IT) == DMA1_IT_TE5) || \ + ((IT) == DMA1_IT_GL6) || ((IT) == DMA1_IT_TC6) || \ + ((IT) == DMA1_IT_HT6) || ((IT) == DMA1_IT_TE6) || \ + ((IT) == DMA1_IT_GL7) || ((IT) == DMA1_IT_TC7) || \ + ((IT) == DMA1_IT_HT7) || ((IT) == DMA1_IT_TE7) || \ + ((IT) == DMA2_IT_GL1) || ((IT) == DMA2_IT_TC1) || \ + ((IT) == DMA2_IT_HT1) || ((IT) == DMA2_IT_TE1) || \ + ((IT) == DMA2_IT_GL2) || ((IT) == DMA2_IT_TC2) || \ + ((IT) == DMA2_IT_HT2) || ((IT) == DMA2_IT_TE2) || \ + ((IT) == DMA2_IT_GL3) || ((IT) == DMA2_IT_TC3) || \ + ((IT) == DMA2_IT_HT3) || ((IT) == DMA2_IT_TE3) || \ + ((IT) == DMA2_IT_GL4) || ((IT) == DMA2_IT_TC4) || \ + ((IT) == DMA2_IT_HT4) || ((IT) == DMA2_IT_TE4) || \ + ((IT) == DMA2_IT_GL5) || ((IT) == DMA2_IT_TC5) || \ + ((IT) == DMA2_IT_HT5) || ((IT) == DMA2_IT_TE5)) + +/** + * @} + */ + +/** @defgroup DMA_flags_definition + * @{ + */ + +#define DMA1_FLAG_GL1 ((uint32_t)0x00000001) +#define DMA1_FLAG_TC1 ((uint32_t)0x00000002) +#define DMA1_FLAG_HT1 ((uint32_t)0x00000004) +#define DMA1_FLAG_TE1 ((uint32_t)0x00000008) +#define DMA1_FLAG_GL2 ((uint32_t)0x00000010) +#define DMA1_FLAG_TC2 ((uint32_t)0x00000020) +#define DMA1_FLAG_HT2 ((uint32_t)0x00000040) +#define DMA1_FLAG_TE2 ((uint32_t)0x00000080) +#define DMA1_FLAG_GL3 ((uint32_t)0x00000100) +#define DMA1_FLAG_TC3 ((uint32_t)0x00000200) +#define DMA1_FLAG_HT3 ((uint32_t)0x00000400) +#define DMA1_FLAG_TE3 ((uint32_t)0x00000800) +#define DMA1_FLAG_GL4 ((uint32_t)0x00001000) +#define DMA1_FLAG_TC4 ((uint32_t)0x00002000) +#define DMA1_FLAG_HT4 ((uint32_t)0x00004000) +#define DMA1_FLAG_TE4 ((uint32_t)0x00008000) +#define DMA1_FLAG_GL5 ((uint32_t)0x00010000) +#define DMA1_FLAG_TC5 ((uint32_t)0x00020000) +#define DMA1_FLAG_HT5 ((uint32_t)0x00040000) +#define DMA1_FLAG_TE5 ((uint32_t)0x00080000) +#define DMA1_FLAG_GL6 ((uint32_t)0x00100000) +#define DMA1_FLAG_TC6 ((uint32_t)0x00200000) +#define DMA1_FLAG_HT6 ((uint32_t)0x00400000) +#define DMA1_FLAG_TE6 ((uint32_t)0x00800000) +#define DMA1_FLAG_GL7 ((uint32_t)0x01000000) +#define DMA1_FLAG_TC7 ((uint32_t)0x02000000) +#define DMA1_FLAG_HT7 ((uint32_t)0x04000000) +#define DMA1_FLAG_TE7 ((uint32_t)0x08000000) + +#define DMA2_FLAG_GL1 ((uint32_t)0x10000001) +#define DMA2_FLAG_TC1 ((uint32_t)0x10000002) +#define DMA2_FLAG_HT1 ((uint32_t)0x10000004) +#define DMA2_FLAG_TE1 ((uint32_t)0x10000008) +#define DMA2_FLAG_GL2 ((uint32_t)0x10000010) +#define DMA2_FLAG_TC2 ((uint32_t)0x10000020) +#define DMA2_FLAG_HT2 ((uint32_t)0x10000040) +#define DMA2_FLAG_TE2 ((uint32_t)0x10000080) +#define DMA2_FLAG_GL3 ((uint32_t)0x10000100) +#define DMA2_FLAG_TC3 ((uint32_t)0x10000200) +#define DMA2_FLAG_HT3 ((uint32_t)0x10000400) +#define DMA2_FLAG_TE3 ((uint32_t)0x10000800) +#define DMA2_FLAG_GL4 ((uint32_t)0x10001000) +#define DMA2_FLAG_TC4 ((uint32_t)0x10002000) +#define DMA2_FLAG_HT4 ((uint32_t)0x10004000) +#define DMA2_FLAG_TE4 ((uint32_t)0x10008000) +#define DMA2_FLAG_GL5 ((uint32_t)0x10010000) +#define DMA2_FLAG_TC5 ((uint32_t)0x10020000) +#define DMA2_FLAG_HT5 ((uint32_t)0x10040000) +#define DMA2_FLAG_TE5 ((uint32_t)0x10080000) + +#define IS_DMA_CLEAR_FLAG(FLAG) (((((FLAG) & 0xF0000000) == 0x00) || (((FLAG) & 0xEFF00000) == 0x00)) && ((FLAG) != 0x00)) + +#define IS_DMA_GET_FLAG(FLAG) (((FLAG) == DMA1_FLAG_GL1) || ((FLAG) == DMA1_FLAG_TC1) || \ + ((FLAG) == DMA1_FLAG_HT1) || ((FLAG) == DMA1_FLAG_TE1) || \ + ((FLAG) == DMA1_FLAG_GL2) || ((FLAG) == DMA1_FLAG_TC2) || \ + ((FLAG) == DMA1_FLAG_HT2) || ((FLAG) == DMA1_FLAG_TE2) || \ + ((FLAG) == DMA1_FLAG_GL3) || ((FLAG) == DMA1_FLAG_TC3) || \ + ((FLAG) == DMA1_FLAG_HT3) || ((FLAG) == DMA1_FLAG_TE3) || \ + ((FLAG) == DMA1_FLAG_GL4) || ((FLAG) == DMA1_FLAG_TC4) || \ + ((FLAG) == DMA1_FLAG_HT4) || ((FLAG) == DMA1_FLAG_TE4) || \ + ((FLAG) == DMA1_FLAG_GL5) || ((FLAG) == DMA1_FLAG_TC5) || \ + ((FLAG) == DMA1_FLAG_HT5) || ((FLAG) == DMA1_FLAG_TE5) || \ + ((FLAG) == DMA1_FLAG_GL6) || ((FLAG) == DMA1_FLAG_TC6) || \ + ((FLAG) == DMA1_FLAG_HT6) || ((FLAG) == DMA1_FLAG_TE6) || \ + ((FLAG) == DMA1_FLAG_GL7) || ((FLAG) == DMA1_FLAG_TC7) || \ + ((FLAG) == DMA1_FLAG_HT7) || ((FLAG) == DMA1_FLAG_TE7) || \ + ((FLAG) == DMA2_FLAG_GL1) || ((FLAG) == DMA2_FLAG_TC1) || \ + ((FLAG) == DMA2_FLAG_HT1) || ((FLAG) == DMA2_FLAG_TE1) || \ + ((FLAG) == DMA2_FLAG_GL2) || ((FLAG) == DMA2_FLAG_TC2) || \ + ((FLAG) == DMA2_FLAG_HT2) || ((FLAG) == DMA2_FLAG_TE2) || \ + ((FLAG) == DMA2_FLAG_GL3) || ((FLAG) == DMA2_FLAG_TC3) || \ + ((FLAG) == DMA2_FLAG_HT3) || ((FLAG) == DMA2_FLAG_TE3) || \ + ((FLAG) == DMA2_FLAG_GL4) || ((FLAG) == DMA2_FLAG_TC4) || \ + ((FLAG) == DMA2_FLAG_HT4) || ((FLAG) == DMA2_FLAG_TE4) || \ + ((FLAG) == DMA2_FLAG_GL5) || ((FLAG) == DMA2_FLAG_TC5) || \ + ((FLAG) == DMA2_FLAG_HT5) || ((FLAG) == DMA2_FLAG_TE5)) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Function used to set the DMA configuration to the default reset state ******/ +void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx); + +/* Initialization and Configuration functions *********************************/ +void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct); +void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct); +void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState); + +/* Data Counter functions******************************************************/ +void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber); +uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx); + +/* Interrupts and flags management functions **********************************/ +void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState); +FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG); +void DMA_ClearFlag(uint32_t DMAy_FLAG); +ITStatus DMA_GetITStatus(uint32_t DMAy_IT); +void DMA_ClearITPendingBit(uint32_t DMAy_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_DMA_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_exti.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,244 @@ +/** + ****************************************************************************** + * @file stm32f30x_exti.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the EXTI + * firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_EXTI_H +#define __STM32F30x_EXTI_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup EXTI + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief EXTI mode enumeration + */ + +typedef enum +{ + EXTI_Mode_Interrupt = 0x00, + EXTI_Mode_Event = 0x04 +}EXTIMode_TypeDef; + +#define IS_EXTI_MODE(MODE) (((MODE) == EXTI_Mode_Interrupt) || ((MODE) == EXTI_Mode_Event)) + +/** + * @brief EXTI Trigger enumeration + */ + +typedef enum +{ + EXTI_Trigger_Rising = 0x08, + EXTI_Trigger_Falling = 0x0C, + EXTI_Trigger_Rising_Falling = 0x10 +}EXTITrigger_TypeDef; + +#define IS_EXTI_TRIGGER(TRIGGER) (((TRIGGER) == EXTI_Trigger_Rising) || \ + ((TRIGGER) == EXTI_Trigger_Falling) || \ + ((TRIGGER) == EXTI_Trigger_Rising_Falling)) +/** + * @brief EXTI Init Structure definition + */ + +typedef struct +{ + uint32_t EXTI_Line; /*!< Specifies the EXTI lines to be enabled or disabled. + This parameter can be any combination of @ref EXTI_Lines */ + + EXTIMode_TypeDef EXTI_Mode; /*!< Specifies the mode for the EXTI lines. + This parameter can be a value of @ref EXTIMode_TypeDef */ + + EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. + This parameter can be a value of @ref EXTITrigger_TypeDef */ + + FunctionalState EXTI_LineCmd; /*!< Specifies the new state of the selected EXTI lines. + This parameter can be set either to ENABLE or DISABLE */ +}EXTI_InitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup EXTI_Exported_Constants + * @{ + */ +/** @defgroup EXTI_Lines + * @{ + */ + +#define EXTI_Line0 ((uint32_t)0x00) /*!< External interrupt line 0 */ +#define EXTI_Line1 ((uint32_t)0x01) /*!< External interrupt line 1 */ +#define EXTI_Line2 ((uint32_t)0x02) /*!< External interrupt line 2 */ +#define EXTI_Line3 ((uint32_t)0x03) /*!< External interrupt line 3 */ +#define EXTI_Line4 ((uint32_t)0x04) /*!< External interrupt line 4 */ +#define EXTI_Line5 ((uint32_t)0x05) /*!< External interrupt line 5 */ +#define EXTI_Line6 ((uint32_t)0x06) /*!< External interrupt line 6 */ +#define EXTI_Line7 ((uint32_t)0x07) /*!< External interrupt line 7 */ +#define EXTI_Line8 ((uint32_t)0x08) /*!< External interrupt line 8 */ +#define EXTI_Line9 ((uint32_t)0x09) /*!< External interrupt line 9 */ +#define EXTI_Line10 ((uint32_t)0x0A) /*!< External interrupt line 10 */ +#define EXTI_Line11 ((uint32_t)0x0B) /*!< External interrupt line 11 */ +#define EXTI_Line12 ((uint32_t)0x0C) /*!< External interrupt line 12 */ +#define EXTI_Line13 ((uint32_t)0x0D) /*!< External interrupt line 13 */ +#define EXTI_Line14 ((uint32_t)0x0E) /*!< External interrupt line 14 */ +#define EXTI_Line15 ((uint32_t)0x0F) /*!< External interrupt line 15 */ +#define EXTI_Line16 ((uint32_t)0x10) /*!< External interrupt line 16 + Connected to the PVD Output */ +#define EXTI_Line17 ((uint32_t)0x11) /*!< Internal interrupt line 17 + Connected to the RTC Alarm + event */ +#define EXTI_Line18 ((uint32_t)0x12) /*!< Internal interrupt line 18 + Connected to the USB Device + Wakeup from suspend event */ +#define EXTI_Line19 ((uint32_t)0x13) /*!< Internal interrupt line 19 + Connected to the RTC Tamper + and Time Stamp events */ +#define EXTI_Line20 ((uint32_t)0x14) /*!< Internal interrupt line 20 + Connected to the RTC wakeup + event */ +#define EXTI_Line21 ((uint32_t)0x15) /*!< Internal interrupt line 21 + Connected to the Comparator 1 + event */ +#define EXTI_Line22 ((uint32_t)0x16) /*!< Internal interrupt line 22 + Connected to the Comparator 2 + event */ +#define EXTI_Line23 ((uint32_t)0x17) /*!< Internal interrupt line 23 + Connected to the I2C1 wakeup + event */ +#define EXTI_Line24 ((uint32_t)0x18) /*!< Internal interrupt line 24 + Connected to the I2C2 wakeup + event */ +#define EXTI_Line25 ((uint32_t)0x19) /*!< Internal interrupt line 25 + Connected to the USART1 wakeup + event */ +#define EXTI_Line26 ((uint32_t)0x1A) /*!< Internal interrupt line 26 + Connected to the USART2 wakeup + event */ +#define EXTI_Line27 ((uint32_t)0x1B) /*!< Internal interrupt line 27 + reserved */ +#define EXTI_Line28 ((uint32_t)0x1C) /*!< Internal interrupt line 28 + Connected to the USART3 wakeup + event */ +#define EXTI_Line29 ((uint32_t)0x1D) /*!< Internal interrupt line 29 + Connected to the Comparator 3 + event */ +#define EXTI_Line30 ((uint32_t)0x1E) /*!< Internal interrupt line 30 + Connected to the Comparator 4 + event */ +#define EXTI_Line31 ((uint32_t)0x1F) /*!< Internal interrupt line 31 + Connected to the Comparator 5 + event */ +#define EXTI_Line32 ((uint32_t)0x20) /*!< Internal interrupt line 32 + Connected to the Comparator 6 + event */ +#define EXTI_Line33 ((uint32_t)0x21) /*!< Internal interrupt line 33 + Connected to the Comparator 7 + event */ +#define EXTI_Line34 ((uint32_t)0x22) /*!< Internal interrupt line 34 + Connected to the USART4 wakeup + event */ +#define EXTI_Line35 ((uint32_t)0x23) /*!< Internal interrupt line 35 + Connected to the USART5 wakeup + event */ + +#define IS_EXTI_LINE_ALL(LINE) ((LINE) <= 0x23) +#define IS_EXTI_LINE_EXT(LINE) (((LINE) <= 0x16) || (((LINE) == EXTI_Line29) || ((LINE) == EXTI_Line30) || \ + ((LINE) == EXTI_Line31) || ((LINE) == EXTI_Line32) || ((LINE) == EXTI_Line33))) + +#define IS_GET_EXTI_LINE(LINE) (((LINE) == EXTI_Line0) || ((LINE) == EXTI_Line1) || \ + ((LINE) == EXTI_Line2) || ((LINE) == EXTI_Line3) || \ + ((LINE) == EXTI_Line4) || ((LINE) == EXTI_Line5) || \ + ((LINE) == EXTI_Line6) || ((LINE) == EXTI_Line7) || \ + ((LINE) == EXTI_Line8) || ((LINE) == EXTI_Line9) || \ + ((LINE) == EXTI_Line10) || ((LINE) == EXTI_Line11) || \ + ((LINE) == EXTI_Line12) || ((LINE) == EXTI_Line13) || \ + ((LINE) == EXTI_Line14) || ((LINE) == EXTI_Line15) || \ + ((LINE) == EXTI_Line16) || ((LINE) == EXTI_Line17) || \ + ((LINE) == EXTI_Line18) || ((LINE) == EXTI_Line19) || \ + ((LINE) == EXTI_Line20) || ((LINE) == EXTI_Line21) || \ + ((LINE) == EXTI_Line22) || ((LINE) == EXTI_Line29) || \ + ((LINE) == EXTI_Line30) || ((LINE) == EXTI_Line31) || \ + ((LINE) == EXTI_Line32) || ((LINE) == EXTI_Line33)) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* Function used to set the EXTI configuration to the default reset state *****/ +void EXTI_DeInit(void); + +/* Initialization and Configuration functions *********************************/ +void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); +void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct); +void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line); + +/* Interrupts and flags management functions **********************************/ +FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line); +void EXTI_ClearFlag(uint32_t EXTI_Line); +ITStatus EXTI_GetITStatus(uint32_t EXTI_Line); +void EXTI_ClearITPendingBit(uint32_t EXTI_Line); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_EXTI_H */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_flash.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,339 @@ +/** + ****************************************************************************** + * @file stm32f30x_flash.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the FLASH + * firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_FLASH_H +#define __STM32F30x_FLASH_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup FLASH + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** + * @brief FLASH Status + */ +typedef enum +{ + FLASH_BUSY = 1, + FLASH_ERROR_WRP, + FLASH_ERROR_PROGRAM, + FLASH_COMPLETE, + FLASH_TIMEOUT +}FLASH_Status; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup FLASH_Exported_Constants + * @{ + */ + +/** @defgroup Flash_Latency + * @{ + */ +#define FLASH_Latency_0 ((uint8_t)0x0000) /*!< FLASH Zero Latency cycle */ +#define FLASH_Latency_1 FLASH_ACR_LATENCY_0 /*!< FLASH One Latency cycle */ +#define FLASH_Latency_2 FLASH_ACR_LATENCY_1 /*!< FLASH Two Latency cycles */ + +#define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_Latency_0) || \ + ((LATENCY) == FLASH_Latency_1) || \ + ((LATENCY) == FLASH_Latency_2)) +/** + * @} + */ + +/** @defgroup FLASH_Interrupts + * @{ + */ + +#define FLASH_IT_EOP FLASH_CR_EOPIE /*!< End of programming interrupt source */ +#define FLASH_IT_ERR FLASH_CR_ERRIE /*!< Error interrupt source */ +#define IS_FLASH_IT(IT) ((((IT) & (uint32_t)0xFFFFEBFF) == 0x00000000) && (((IT) != 0x00000000))) +/** + * @} + */ +/** @defgroup FLASH_Address + * @{ + */ + +#define IS_FLASH_PROGRAM_ADDRESS(ADDRESS) (((ADDRESS) >= 0x08000000) && ((ADDRESS) <= 0x0803FFFF)) + +/** + * @} + */ + +/** @defgroup FLASH_OB_DATA_ADDRESS + * @{ + */ +#define IS_OB_DATA_ADDRESS(ADDRESS) (((ADDRESS) == 0x1FFFF804) || ((ADDRESS) == 0x1FFFF806)) + +/** + * @} + */ + +/** @defgroup Option_Bytes_Write_Protection + * @{ + */ + +#define OB_WRP_Pages0to1 ((uint32_t)0x00000001) /* Write protection of page 0 to 1 */ +#define OB_WRP_Pages2to3 ((uint32_t)0x00000002) /* Write protection of page 2 to 3 */ +#define OB_WRP_Pages4to5 ((uint32_t)0x00000004) /* Write protection of page 4 to 5 */ +#define OB_WRP_Pages6to7 ((uint32_t)0x00000008) /* Write protection of page 6 to 7 */ +#define OB_WRP_Pages8to9 ((uint32_t)0x00000010) /* Write protection of page 8 to 9 */ +#define OB_WRP_Pages10to11 ((uint32_t)0x00000020) /* Write protection of page 10 to 11 */ +#define OB_WRP_Pages12to13 ((uint32_t)0x00000040) /* Write protection of page 12 to 13 */ +#define OB_WRP_Pages14to15 ((uint32_t)0x00000080) /* Write protection of page 14 to 15 */ +#define OB_WRP_Pages16to17 ((uint32_t)0x00000100) /* Write protection of page 16 to 17 */ +#define OB_WRP_Pages18to19 ((uint32_t)0x00000200) /* Write protection of page 18 to 19 */ +#define OB_WRP_Pages20to21 ((uint32_t)0x00000400) /* Write protection of page 20 to 21 */ +#define OB_WRP_Pages22to23 ((uint32_t)0x00000800) /* Write protection of page 22 to 23 */ +#define OB_WRP_Pages24to25 ((uint32_t)0x00001000) /* Write protection of page 24 to 25 */ +#define OB_WRP_Pages26to27 ((uint32_t)0x00002000) /* Write protection of page 26 to 27 */ +#define OB_WRP_Pages28to29 ((uint32_t)0x00004000) /* Write protection of page 28 to 29 */ +#define OB_WRP_Pages30to31 ((uint32_t)0x00008000) /* Write protection of page 30 to 31 */ +#define OB_WRP_Pages32to33 ((uint32_t)0x00010000) /* Write protection of page 32 to 33 */ +#define OB_WRP_Pages34to35 ((uint32_t)0x00020000) /* Write protection of page 34 to 35 */ +#define OB_WRP_Pages36to37 ((uint32_t)0x00040000) /* Write protection of page 36 to 37 */ +#define OB_WRP_Pages38to39 ((uint32_t)0x00080000) /* Write protection of page 38 to 39 */ +#define OB_WRP_Pages40to41 ((uint32_t)0x00100000) /* Write protection of page 40 to 41 */ +#define OB_WRP_Pages42to43 ((uint32_t)0x00200000) /* Write protection of page 42 to 43 */ +#define OB_WRP_Pages44to45 ((uint32_t)0x00400000) /* Write protection of page 44 to 45 */ +#define OB_WRP_Pages46to47 ((uint32_t)0x00800000) /* Write protection of page 46 to 47 */ +#define OB_WRP_Pages48to49 ((uint32_t)0x01000000) /* Write protection of page 48 to 49 */ +#define OB_WRP_Pages50to51 ((uint32_t)0x02000000) /* Write protection of page 50 to 51 */ +#define OB_WRP_Pages52to53 ((uint32_t)0x04000000) /* Write protection of page 52 to 53 */ +#define OB_WRP_Pages54to55 ((uint32_t)0x08000000) /* Write protection of page 54 to 55 */ +#define OB_WRP_Pages56to57 ((uint32_t)0x10000000) /* Write protection of page 56 to 57 */ +#define OB_WRP_Pages58to59 ((uint32_t)0x20000000) /* Write protection of page 58 to 59 */ +#define OB_WRP_Pages60to61 ((uint32_t)0x40000000) /* Write protection of page 60 to 61 */ +#define OB_WRP_Pages62to127 ((uint32_t)0x80000000) /* Write protection of page 62 to 127 */ + +#define OB_WRP_AllPages ((uint32_t)0xFFFFFFFF) /*!< Write protection of all Sectors */ + +#define IS_OB_WRP(PAGE) (((PAGE) != 0x0000000)) + +/** + * @} + */ + +/** @defgroup Option_Bytes_Read_Protection + * @{ + */ + +/** + * @brief Read Protection Level + */ +#define OB_RDP_Level_0 ((uint8_t)0xAA) +#define OB_RDP_Level_1 ((uint8_t)0xBB) +/*#define OB_RDP_Level_2 ((uint8_t)0xCC)*/ /* Warning: When enabling read protection level 2 + it's no more possible to go back to level 1 or 0 */ + +#define IS_OB_RDP(LEVEL) (((LEVEL) == OB_RDP_Level_0)||\ + ((LEVEL) == OB_RDP_Level_1))/*||\ + ((LEVEL) == OB_RDP_Level_2))*/ +/** + * @} + */ + +/** @defgroup Option_Bytes_IWatchdog + * @{ + */ + +#define OB_IWDG_SW ((uint8_t)0x01) /*!< Software IWDG selected */ +#define OB_IWDG_HW ((uint8_t)0x00) /*!< Hardware IWDG selected */ +#define IS_OB_IWDG_SOURCE(SOURCE) (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW)) + +/** + * @} + */ + +/** @defgroup Option_Bytes_nRST_STOP + * @{ + */ + +#define OB_STOP_NoRST ((uint8_t)0x02) /*!< No reset generated when entering in STOP */ +#define OB_STOP_RST ((uint8_t)0x00) /*!< Reset generated when entering in STOP */ +#define IS_OB_STOP_SOURCE(SOURCE) (((SOURCE) == OB_STOP_NoRST) || ((SOURCE) == OB_STOP_RST)) + +/** + * @} + */ + +/** @defgroup Option_Bytes_nRST_STDBY + * @{ + */ + +#define OB_STDBY_NoRST ((uint8_t)0x04) /*!< No reset generated when entering in STANDBY */ +#define OB_STDBY_RST ((uint8_t)0x00) /*!< Reset generated when entering in STANDBY */ +#define IS_OB_STDBY_SOURCE(SOURCE) (((SOURCE) == OB_STDBY_NoRST) || ((SOURCE) == OB_STDBY_RST)) + +/** + * @} + */ +/** @defgroup Option_Bytes_BOOT1 + * @{ + */ + +#define OB_BOOT1_RESET ((uint8_t)0x00) /*!< BOOT1 Reset */ +#define OB_BOOT1_SET ((uint8_t)0x10) /*!< BOOT1 Set */ +#define IS_OB_BOOT1(BOOT1) (((BOOT1) == OB_BOOT1_RESET) || ((BOOT1) == OB_BOOT1_SET)) + +/** + * @} + */ +/** @defgroup Option_Bytes_VDDA_Analog_Monitoring + * @{ + */ + +#define OB_VDDA_ANALOG_ON ((uint8_t)0x20) /*!< Analog monitoring on VDDA Power source ON */ +#define OB_VDDA_ANALOG_OFF ((uint8_t)0x00) /*!< Analog monitoring on VDDA Power source OFF */ + +#define IS_OB_VDDA_ANALOG(ANALOG) (((ANALOG) == OB_VDDA_ANALOG_ON) || ((ANALOG) == OB_VDDA_ANALOG_OFF)) + +/** + * @} + */ + +/** @defgroup FLASH_Option_Bytes_SRAM_Parity_Enable + * @{ + */ + +#define OB_SRAM_PARITY_SET ((uint8_t)0x00) /*!< SRAM parity enable Set */ +#define OB_SRAM_PARITY_RESET ((uint8_t)0x40) /*!< SRAM parity enable reset */ + +#define IS_OB_SRAM_PARITY(PARITY) (((PARITY) == OB_SRAM_PARITY_SET) || ((PARITY) == OB_SRAM_PARITY_RESET)) + +/** + * @} + */ + +/** @defgroup FLASH_Flags + * @{ + */ + +#define FLASH_FLAG_BSY FLASH_SR_BSY /*!< FLASH Busy flag */ +#define FLASH_FLAG_PGERR FLASH_SR_PGERR /*!< FLASH Programming error flag */ +#define FLASH_FLAG_WRPERR FLASH_SR_WRPERR /*!< FLASH Write protected error flag */ +#define FLASH_FLAG_EOP FLASH_SR_EOP /*!< FLASH End of Programming flag */ + +#define IS_FLASH_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFFFFCB) == 0x00000000) && ((FLAG) != 0x00000000)) + +#define IS_FLASH_GET_FLAG(FLAG) (((FLAG) == FLASH_FLAG_BSY) || ((FLAG) == FLASH_FLAG_PGERR) || \ + ((FLAG) == FLASH_FLAG_WRPERR) || ((FLAG) == FLASH_FLAG_EOP)) +/** + * @} + */ +/** @defgroup Timeout_definition + * @{ + */ +#define FLASH_ER_PRG_TIMEOUT ((uint32_t)0x000B0000) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/* FLASH Interface configuration functions ************************************/ +void FLASH_SetLatency(uint32_t FLASH_Latency); +void FLASH_HalfCycleAccessCmd(FunctionalState NewState); +void FLASH_PrefetchBufferCmd(FunctionalState NewState); + +/* FLASH Memory Programming functions *****************************************/ +void FLASH_Unlock(void); +void FLASH_Lock(void); +FLASH_Status FLASH_ErasePage(uint32_t Page_Address); +FLASH_Status FLASH_EraseAllPages(void); +FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data); +FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data); + +/* Option Bytes Programming functions *****************************************/ +void FLASH_OB_Unlock(void); +void FLASH_OB_Lock(void); +void FLASH_OB_Launch(void); +FLASH_Status FLASH_OB_Erase(void); +FLASH_Status FLASH_OB_EnableWRP(uint32_t OB_WRP); +FLASH_Status FLASH_OB_RDPConfig(uint8_t OB_RDP); +FLASH_Status FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY); +FLASH_Status FLASH_OB_BOOTConfig(uint8_t OB_BOOT1); +FLASH_Status FLASH_OB_VDDAConfig(uint8_t OB_VDDA_ANALOG); +FLASH_Status FLASH_OB_SRAMParityConfig(uint8_t OB_SRAM_Parity); +FLASH_Status FLASH_OB_WriteUser(uint8_t OB_USER); +FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data); +uint8_t FLASH_OB_GetUser(void); +uint32_t FLASH_OB_GetWRP(void); +FlagStatus FLASH_OB_GetRDP(void); + +/* Interrupts and flags management functions **********************************/ +void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState); +FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG); +void FLASH_ClearFlag(uint32_t FLASH_FLAG); +FLASH_Status FLASH_GetStatus(void); +FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_FLASH_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_gpio.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,410 @@ +/** + ****************************************************************************** + * @file stm32f30x_gpio.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the GPIO + * firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_GPIO_H +#define __STM32F30x_GPIO_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup GPIO + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \ + ((PERIPH) == GPIOB) || \ + ((PERIPH) == GPIOC) || \ + ((PERIPH) == GPIOD) || \ + ((PERIPH) == GPIOE) || \ + ((PERIPH) == GPIOF)) + +#define IS_GPIO_LIST_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \ + ((PERIPH) == GPIOB) || \ + ((PERIPH) == GPIOD)) +/** @defgroup Configuration_Mode_enumeration + * @{ + */ +typedef enum +{ + GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode */ + GPIO_Mode_OUT = 0x01, /*!< GPIO Output Mode */ + GPIO_Mode_AF = 0x02, /*!< GPIO Alternate function Mode */ + GPIO_Mode_AN = 0x03 /*!< GPIO Analog In/Out Mode */ +}GPIOMode_TypeDef; + +#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)|| ((MODE) == GPIO_Mode_OUT) || \ + ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN)) +/** + * @} + */ + +/** @defgroup Output_type_enumeration + * @{ + */ +typedef enum +{ + GPIO_OType_PP = 0x00, + GPIO_OType_OD = 0x01 +}GPIOOType_TypeDef; + +#define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD)) + +/** + * @} + */ + +/** @defgroup Output_Maximum_frequency_enumeration + * @{ + */ +typedef enum +{ + GPIO_Speed_Level_1 = 0x01, /*!< Fast Speed */ + GPIO_Speed_Level_2 = 0x02, /*!< Meduim Speed */ + GPIO_Speed_Level_3 = 0x03 /*!< High Speed */ +}GPIOSpeed_TypeDef; + +#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_Level_1) || ((SPEED) == GPIO_Speed_Level_2) || \ + ((SPEED) == GPIO_Speed_Level_3)) +/** + * @} + */ + +/** @defgroup Configuration_Pull-Up_Pull-Down_enumeration + * @{ + */ +typedef enum +{ + GPIO_PuPd_NOPULL = 0x00, + GPIO_PuPd_UP = 0x01, + GPIO_PuPd_DOWN = 0x02 +}GPIOPuPd_TypeDef; + +#define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \ + ((PUPD) == GPIO_PuPd_DOWN)) +/** + * @} + */ + +/** @defgroup Bit_SET_and_Bit_RESET_enumeration + * @{ + */ +typedef enum +{ + Bit_RESET = 0, + Bit_SET +}BitAction; + +#define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET)) +/** + * @} + */ + +/** + * @brief GPIO Init structure definition + */ +typedef struct +{ + uint32_t GPIO_Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_pins_define */ + + GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIOMode_TypeDef */ + + GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIOSpeed_TypeDef */ + + GPIOOType_TypeDef GPIO_OType; /*!< Specifies the operating output type for the selected pins. + This parameter can be a value of @ref GPIOOType_TypeDef */ + + GPIOPuPd_TypeDef GPIO_PuPd; /*!< Specifies the operating Pull-up/Pull down for the selected pins. + This parameter can be a value of @ref GPIOPuPd_TypeDef */ +}GPIO_InitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup GPIO_Exported_Constants + * @{ + */ + +/** @defgroup GPIO_pins_define + * @{ + */ +#define GPIO_Pin_0 ((uint16_t)0x0001) /*!< Pin 0 selected */ +#define GPIO_Pin_1 ((uint16_t)0x0002) /*!< Pin 1 selected */ +#define GPIO_Pin_2 ((uint16_t)0x0004) /*!< Pin 2 selected */ +#define GPIO_Pin_3 ((uint16_t)0x0008) /*!< Pin 3 selected */ +#define GPIO_Pin_4 ((uint16_t)0x0010) /*!< Pin 4 selected */ +#define GPIO_Pin_5 ((uint16_t)0x0020) /*!< Pin 5 selected */ +#define GPIO_Pin_6 ((uint16_t)0x0040) /*!< Pin 6 selected */ +#define GPIO_Pin_7 ((uint16_t)0x0080) /*!< Pin 7 selected */ +#define GPIO_Pin_8 ((uint16_t)0x0100) /*!< Pin 8 selected */ +#define GPIO_Pin_9 ((uint16_t)0x0200) /*!< Pin 9 selected */ +#define GPIO_Pin_10 ((uint16_t)0x0400) /*!< Pin 10 selected */ +#define GPIO_Pin_11 ((uint16_t)0x0800) /*!< Pin 11 selected */ +#define GPIO_Pin_12 ((uint16_t)0x1000) /*!< Pin 12 selected */ +#define GPIO_Pin_13 ((uint16_t)0x2000) /*!< Pin 13 selected */ +#define GPIO_Pin_14 ((uint16_t)0x4000) /*!< Pin 14 selected */ +#define GPIO_Pin_15 ((uint16_t)0x8000) /*!< Pin 15 selected */ +#define GPIO_Pin_All ((uint16_t)0xFFFF) /*!< All pins selected */ + +#define IS_GPIO_PIN(PIN) ((PIN) != (uint16_t)0x00) + +#define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \ + ((PIN) == GPIO_Pin_1) || \ + ((PIN) == GPIO_Pin_2) || \ + ((PIN) == GPIO_Pin_3) || \ + ((PIN) == GPIO_Pin_4) || \ + ((PIN) == GPIO_Pin_5) || \ + ((PIN) == GPIO_Pin_6) || \ + ((PIN) == GPIO_Pin_7) || \ + ((PIN) == GPIO_Pin_8) || \ + ((PIN) == GPIO_Pin_9) || \ + ((PIN) == GPIO_Pin_10) || \ + ((PIN) == GPIO_Pin_11) || \ + ((PIN) == GPIO_Pin_12) || \ + ((PIN) == GPIO_Pin_13) || \ + ((PIN) == GPIO_Pin_14) || \ + ((PIN) == GPIO_Pin_15)) + +/** + * @} + */ + +/** @defgroup GPIO_Pin_sources + * @{ + */ +#define GPIO_PinSource0 ((uint8_t)0x00) +#define GPIO_PinSource1 ((uint8_t)0x01) +#define GPIO_PinSource2 ((uint8_t)0x02) +#define GPIO_PinSource3 ((uint8_t)0x03) +#define GPIO_PinSource4 ((uint8_t)0x04) +#define GPIO_PinSource5 ((uint8_t)0x05) +#define GPIO_PinSource6 ((uint8_t)0x06) +#define GPIO_PinSource7 ((uint8_t)0x07) +#define GPIO_PinSource8 ((uint8_t)0x08) +#define GPIO_PinSource9 ((uint8_t)0x09) +#define GPIO_PinSource10 ((uint8_t)0x0A) +#define GPIO_PinSource11 ((uint8_t)0x0B) +#define GPIO_PinSource12 ((uint8_t)0x0C) +#define GPIO_PinSource13 ((uint8_t)0x0D) +#define GPIO_PinSource14 ((uint8_t)0x0E) +#define GPIO_PinSource15 ((uint8_t)0x0F) + +#define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \ + ((PINSOURCE) == GPIO_PinSource1) || \ + ((PINSOURCE) == GPIO_PinSource2) || \ + ((PINSOURCE) == GPIO_PinSource3) || \ + ((PINSOURCE) == GPIO_PinSource4) || \ + ((PINSOURCE) == GPIO_PinSource5) || \ + ((PINSOURCE) == GPIO_PinSource6) || \ + ((PINSOURCE) == GPIO_PinSource7) || \ + ((PINSOURCE) == GPIO_PinSource8) || \ + ((PINSOURCE) == GPIO_PinSource9) || \ + ((PINSOURCE) == GPIO_PinSource10) || \ + ((PINSOURCE) == GPIO_PinSource11) || \ + ((PINSOURCE) == GPIO_PinSource12) || \ + ((PINSOURCE) == GPIO_PinSource13) || \ + ((PINSOURCE) == GPIO_PinSource14) || \ + ((PINSOURCE) == GPIO_PinSource15)) +/** + * @} + */ + +/** @defgroup GPIO_Alternate_function_selection_define + * @{ + */ + +/** + * @brief AF 0 selection + */ +#define GPIO_AF_0 ((uint8_t)0x00) /* JTCK-SWCLK, JTDI, JTDO/TRACESW0, JTMS-SWDAT, + MCO, NJTRST, TRACED, TRACECK */ +/** + * @brief AF 1 selection + */ +#define GPIO_AF_1 ((uint8_t)0x01) /* OUT, TIM2, TIM15, TIM16, TIM17 */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF_2 ((uint8_t)0x02) /* COMP1_OUT, TIM1, TIM2, TIM3, TIM4, TIM8, TIM15, TIM16 */ + +/** + * @brief AF 3 selection + */ +#define GPIO_AF_3 ((uint8_t)0x03) /* COMP7_OUT, TIM8, TIM15, Touch, HRTIM1 */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF_4 ((uint8_t)0x04) /* I2C1, I2C2, TIM1, TIM8, TIM16, TIM17 */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF_5 ((uint8_t)0x05) /* IR_OUT, I2S2, I2S3, SPI1, SPI2, TIM8, USART4, USART5 */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF_6 ((uint8_t)0x06) /* IR_OUT, I2S2, I2S3, SPI2, SPI3, TIM1, TIM8 */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF_7 ((uint8_t)0x07) /* AOP2_OUT, CAN, COMP3_OUT, COMP5_OUT, COMP6_OUT, + USART1, USART2, USART3 */ + +/** + * @brief AF 8 selection + */ +#define GPIO_AF_8 ((uint8_t)0x08) /* COMP1_OUT, COMP2_OUT, COMP3_OUT, COMP4_OUT, + COMP5_OUT, COMP6_OUT */ + +/** + * @brief AF 9 selection + */ +#define GPIO_AF_9 ((uint8_t)0x09) /* AOP4_OUT, CAN, TIM1, TIM8, TIM15 */ + +/** + * @brief AF 10 selection + */ +#define GPIO_AF_10 ((uint8_t)0x0A) /* AOP1_OUT, AOP3_OUT, TIM2, TIM3, TIM4, TIM8, TIM17 */ + +/** + * @brief AF 11 selection + */ +#define GPIO_AF_11 ((uint8_t)0x0B) /* TIM1, TIM8 */ + +/** + * @brief AF 12 selection + */ +#define GPIO_AF_12 ((uint8_t)0x0C) /* TIM1, HRTIM1 */ + +/** + * @brief AF 13 selection + */ +#define GPIO_AF_13 ((uint8_t)0x0D) /* HRTIM1, AOP2_OUT */ + +/** + * @brief AF 14 selection + */ +#define GPIO_AF_14 ((uint8_t)0x0E) /* USBDM, USBDP */ + +/** + * @brief AF 15 selection + */ +#define GPIO_AF_15 ((uint8_t)0x0F) /* OUT */ + +#define IS_GPIO_AF(AF) (((AF) == GPIO_AF_0)||((AF) == GPIO_AF_1)||\ + ((AF) == GPIO_AF_2)||((AF) == GPIO_AF_3)||\ + ((AF) == GPIO_AF_4)||((AF) == GPIO_AF_5)||\ + ((AF) == GPIO_AF_6)||((AF) == GPIO_AF_7)||\ + ((AF) == GPIO_AF_8)||((AF) == GPIO_AF_9)||\ + ((AF) == GPIO_AF_10)||((AF) == GPIO_AF_11)||\ + ((AF) == GPIO_AF_12)||((AF) == GPIO_AF_13)||\ + ((AF) == GPIO_AF_14)||((AF) == GPIO_AF_15)) + +/** + * @} + */ + +/** @defgroup GPIO_Speed_Legacy + * @{ + */ + +#define GPIO_Speed_10MHz GPIO_Speed_Level_1 /*!< Fast Speed:10MHz */ +#define GPIO_Speed_2MHz GPIO_Speed_Level_2 /*!< Medium Speed:2MHz */ +#define GPIO_Speed_50MHz GPIO_Speed_Level_3 /*!< High Speed:50MHz */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* Function used to set the GPIO configuration to the default reset state *****/ +void GPIO_DeInit(GPIO_TypeDef* GPIOx); + +/* Initialization and Configuration functions *********************************/ +void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); +void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); +void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); + +/* GPIO Read and Write functions **********************************************/ +uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); +uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); +void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); +void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); + +/* GPIO Alternate functions configuration functions ***************************/ +void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_GPIO_H */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_hrtim.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,2723 @@ +/** + ****************************************************************************** + * @file stm32f30x_hrtim.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the HRTIM firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_HRTIM_H +#define __STM32F30x_HRTIM_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup ADC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief HRTIM Configuration Structure definition - Time base related parameters + */ +typedef struct +{ + uint32_t Period; /*!< Specifies the timer period + The period value must be above 3 periods of the fHRTIM clock. + Maximum value is = 0xFFDF */ + uint32_t RepetitionCounter; /*!< Specifies the timer repetition period + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF. */ + uint32_t PrescalerRatio; /*!< Specifies the timer clock prescaler ratio. + This parameter can be any value of @ref HRTIM_PrescalerRatio */ + uint32_t Mode; /*!< Specifies the counter operating mode + This parameter can be any value of @ref HRTIM_Mode */ +} HRTIM_BaseInitTypeDef; +/** + * @brief Waveform mode initialization parameters definition + */ +typedef struct { + uint32_t HalfModeEnable; /*!< Specifies whether or not half mode is enabled + This parameter can be a combination of @ref HRTIM_HalfModeEnable */ + uint32_t StartOnSync; /*!< Specifies whether or not timer is reset by a rising edge on the synchronization input (when enabled) + This parameter can be a combination of @ref HRTIM_StartOnSyncInputEvent */ + uint32_t ResetOnSync; /*!< Specifies whether or not timer is reset by a rising edge on the synchronization input (when enabled) + This parameter can be a combination of @ref HRTIM_ResetOnSyncInputEvent */ + uint32_t DACSynchro; /*!< Indicates whether or not the a DAC synchronization event is generated + This parameter can be any value of @ref HRTIM_DACSynchronization */ + uint32_t PreloadEnable; /*!< Specifies whether or not register preload is enabled + This parameter can be a combination of @ref HRTIM_RegisterPreloadEnable */ + uint32_t UpdateGating; /*!< Specifies how the update occurs with respect to a burst DMA transaction or + update enable inputs (Slave timers only) + This parameter can be any value of @ref HRTIM_UpdateGating */ + uint32_t BurstMode; /*!< Specifies how the timer behaves during a burst mode operation + This parameter can be a combination of @ref HRTIM_TimerBurstMode */ + uint32_t RepetitionUpdate; /*!< Specifies whether or not registers update is triggered by the repetition event + This parameter can be a combination of @ref HRTIM_TimerRepetitionUpdate */ +} HRTIM_TimerInitTypeDef; + +/** + * @brief Basic output compare mode configuration definition + */ +typedef struct { + uint32_t Mode; /*!< Specifies the output compare mode (toggle, active, inactive) + This parameter can be a combination of @ref HRTIM_BasicOCMode */ + uint32_t Pulse; /*!< Specifies the compare value to be loaded into the Compare Register. + The compare value must be above or equal to 3 periods of the fHRTIM clock */ + uint32_t Polarity; /*!< Specifies the output polarity + This parameter can be any value of @ref HRTIM_Output_Polarity */ + uint32_t IdleState; /*!< Specifies whether the output level is active or inactive when in IDLE state + This parameter can be any value of @ref HRTIM_OutputIDLEState */ +} HRTIM_BasicOCChannelCfgTypeDef; + +/** + * @brief Basic PWM output mode configuration definition + */ +typedef struct { + uint32_t Pulse; /*!< Specifies the compare value to be loaded into the Compare Register. + The compare value must be above or equal to 3 periods of the fHRTIM clock */ + uint32_t Polarity; /*!< Specifies the output polarity + This parameter can be any value of @ref HRTIM_OutputPolarity */ + uint32_t IdleState; /*!< Specifies whether the output level is active or inactive when in IDLE state + This parameter can be any value of @ref HRTIM_OutputIDLEState */ +} HRTIM_BasicPWMChannelCfgTypeDef; + +/** + * @brief Basic capture mode configuration definition + */ +typedef struct { + uint32_t CaptureUnit; /*!< Specifies the external event Channel + This parameter can be any 'EEVx' value of @ref HRTIM_CaptureUnit */ + uint32_t Event; /*!< Specifies the external event triggering the capture + This parameter can be any 'EEVx' value of @ref HRTIM_ExternalEventChannels */ + uint32_t EventPolarity; /*!< Specifies the polarity of the external event (in case of level sensitivity) + This parameter can be a value of @ref HRTIM_ExternalEventPolarity */ + uint32_t EventSensitivity; /*!< Specifies the sensitivity of the external event + This parameter can be a value of @ref HRTIM_ExternalEventSensitivity */ + uint32_t EventFilter; /*!< Defines the frequency used to sample the External Event and the length of the digital filter + This parameter can be a value of @ref HRTIM_ExternalEventFilter */ +} HRTIM_BasicCaptureChannelCfgTypeDef; + +/** + * @brief Basic One Pulse mode configuration definition + */ +typedef struct { + uint32_t Pulse; /*!< Specifies the compare value to be loaded into the Compare Register. + The compare value must be above or equal to 3 periods of the fHRTIM clock */ + uint32_t OutputPolarity; /*!< Specifies the output polarity + This parameter can be any value of @ref HRTIM_Output_Polarity */ + uint32_t OutputIdleState; /*!< Specifies whether the output level is active or inactive when in IDLE state + This parameter can be any value of @ref HRTIM_Output_IDLE_State */ + uint32_t Event; /*!< Specifies the external event triggering the pulse generation + This parameter can be any 'EEVx' value of @ref HRTIM_Capture_Unit_Trigger */ + uint32_t EventPolarity; /*!< Specifies the polarity of the external event (in case of level sensitivity) + This parameter can be a value of @ref HRTIM_ExternalEventPolarity */ + uint32_t EventSensitivity; /*!< Specifies the sensitivity of the external event + This parameter can be a value of @ref HRTIM_ExternalEventSensitivity */ + uint32_t EventFilter; /*!< Defines the frequency used to sample the External Event and the length of the digital filter + This parameter can be a value of @ref HRTIM_ExternalEventFilter */ +} HRTIM_BasicOnePulseChannelCfgTypeDef; + +/** + * @brief Timer configuration definition + */ +typedef struct { + uint32_t PushPull; /*!< Specifies whether or not the push-pull mode is enabled + This parameter can be a value of @ref HRTIM_TimerPushPullMode */ + uint32_t FaultEnable; /*!< Specifies which fault channels are enabled for the timer + This parameter can be a combination of @ref HRTIM_TimerFaultEnabling */ + uint32_t FaultLock; /*!< Specifies whether or not fault enabling status is write protected + This parameter can be a value of @ref HRTIM_TimerFaultLock */ + uint32_t DeadTimeInsertion; /*!< Specifies whether or not dead time insertion is enabled for the timer + This parameter can be a value of @ref HRTIM_TimerDeadtimeInsertion */ + uint32_t DelayedProtectionMode; /*!< Specifies the delayed protection mode + This parameter can be a value of @ref HRTIM_TimerDelayedProtectionMode */ + uint32_t UpdateTrigger; /*!< Specifies source(s) triggering the timer registers update + This parameter can be a combination of @ref HRTIM_TimerUpdateTrigger */ + uint32_t ResetTrigger; /*!< Specifies source(s) triggering the timer counter reset + This parameter can be a combination of @ref HRTIM_TimerResetTrigger */ + uint32_t ResetUpdate; /*!< Specifies whether or not registers update is triggered when the timer counter is reset + This parameter can be a combination of @ref HRTIM_TimerResetUpdate */ +} HRTIM_TimerCfgTypeDef; + +/** + * @brief Compare unit configuration definition + */ +typedef struct { + uint32_t CompareValue; /*!< Specifies the compare value of the timer compare unit + the minimum value must be greater than or equal to 3 periods of the fHRTIM clock + the maximum value must be less than or equal to 0xFFFF - 1 periods of the fHRTIM clock */ + uint32_t AutoDelayedMode; /*!< Specifies the auto delayed mode for compare unit 2 or 4 + This parameter can be a value of @ref HRTIM_CompareUnitAutoDelayedMode */ + uint32_t AutoDelayedTimeout; /*!< Specifies compare value for timing unit 1 or 3 when auto delayed mode with time out is selected + CompareValue + AutoDelayedTimeout must be less than 0xFFFF */ +} HRTIM_CompareCfgTypeDef; + +/** + * @brief Capture unit configuration definition + */ +typedef struct { + uint32_t Trigger; /*!< Specifies source(s) triggering the capture + This parameter can be a combination of @ref HRTIM_CaptureUnitTrigger */ +} HRTIM_CaptureCfgTypeDef; + +/** + * @brief Output configuration definition + */ +typedef struct { + uint32_t Polarity; /*!< Specifies the output polarity + This parameter can be any value of @ref HRTIM_Output_Polarity */ + uint32_t SetSource; /*!< Specifies the event(s) transitioning the output from its inactive level to its active level + This parameter can be any value of @ref HRTIM_OutputSetSource */ + uint32_t ResetSource; /*!< Specifies the event(s) transitioning the output from its active level to its inactive level + This parameter can be any value of @ref HRTIM_OutputResetSource */ + uint32_t IdleMode; /*!< Specifies whether or not the output is affected by a burst mode operation + This parameter can be any value of @ref HRTIM_OutputIdleMode */ + uint32_t IdleState; /*!< Specifies whether the output level is active or inactive when in IDLE state + This parameter can be any value of @ref HRTIM_OutputIDLEState */ + uint32_t FaultState; /*!< Specifies whether the output level is active or inactive when in FAULT state + This parameter can be any value of @ref HRTIM_OutputFAULTState */ + uint32_t ChopperModeEnable; /*!< Indicates whether or not the chopper mode is enabled + This parameter can be any value of @ref HRTIM_OutputChopperModeEnable */ + uint32_t BurstModeEntryDelayed; /* !<Indicates whether or not deadtime is inserted when entering the IDLE state + during a burst mode operation + This parameters can be any value of @ref HRTIM_OutputBurstModeEntryDelayed */ +} HRTIM_OutputCfgTypeDef; + +/** + * @brief External event filtering in timing units configuration definition + */ +typedef struct { + uint32_t Filter; /*!< Specifies the type of event filtering within the timing unit + This parameter can be a value of @ref HRTIM_TimerExternalEventFilter */ + uint32_t Latch; /*!< Specifies whether or not the signal is latched + This parameter can be a value of @ref HRTIM_TimerExternalEventLatch */ +} HRTIM_TimerEventFilteringCfgTypeDef; + +/** + * @brief Dead time feature configuration definition + */ +typedef struct { + uint32_t Prescaler; /*!< Specifies the Deadtime Prescaler + This parameter can be a number between 0x0 and = 0x7 */ + uint32_t RisingValue; /*!< Specifies the Deadtime following a rising edge + This parameter can be a number between 0x0 and 0xFF */ + uint32_t RisingSign; /*!< Specifies whether the deadtime is positive or negative on rising edge + This parameter can be a value of @ref HRTIM_DeadtimeRisingSign */ + uint32_t RisingLock; /*!< Specifies whether or not deadtime rising settings (value and sign) are write protected + This parameter can be a value of @ref HRTIM_DeadtimeRisingLock */ + uint32_t RisingSignLock; /*!< Specifies whether or not deadtime rising sign is write protected + This parameter can be a value of @ref HRTIM_DeadtimeRisingSignLock */ + uint32_t FallingValue; /*!< Specifies the Deadtime following a falling edge + This parameter can be a number between 0x0 and 0xFF */ + uint32_t FallingSign; /*!< Specifies whether the deadtime is positive or negative on falling edge + This parameter can be a value of @ref HRTIM_DeadtimeFallingSign */ + uint32_t FallingLock; /*!< Specifies whether or not deadtime falling settings (value and sign) are write protected + This parameter can be a value of @ref HRTIM_DeadtimeFallingLock */ + uint32_t FallingSignLock; /*!< Specifies whether or not deadtime falling sign is write protected + This parameter can be a value of @ref HRTIM_DeadtimeFallingSignLock */ +} HRTIM_DeadTimeCfgTypeDef; + +/** + * @brief Chopper mode configuration definition + */ +typedef struct { + uint32_t CarrierFreq; /*!< Specifies the Timer carrier frequency value. + This parameter can be a value between 0 and 0xF */ + uint32_t DutyCycle; /*!< Specifies the Timer chopper duty cycle value. + This parameter can be a value between 0 and 0x7 */ + uint32_t StartPulse; /*!< Specifies the Timer pulse width value. + This parameter can be a value between 0 and 0xF */ +} HRTIM_ChopperModeCfgTypeDef; + +/** + * @brief Master synchronization configuration definition + */ +typedef struct { + uint32_t SyncInputSource; /*!< Specifies the external synchronization input source + This parameter can be a value of @ref HRTIM_SynchronizationInputSource */ + uint32_t SyncOutputSource; /*!< Specifies the source and event to be sent on the external synchronization outputs + This parameter can be a value of @ref HRTIM_SynchronizationOutputSource */ + uint32_t SyncOutputPolarity; /*!< Specifies the conditioning of the event to be sent on the external synchronization outputs + This parameter can be a value of @ref HRTIM_SynchronizationOutputPolarity */ +} HRTIM_SynchroCfgTypeDef; + +/** + * @brief External event channel configuration definition + */ +typedef struct { + uint32_t Source; /*!< Identifies the source of the external event + This parameter can be a value of @ref HRTIM_ExternalEventSources */ + uint32_t Polarity; /*!< Specifies the polarity of the external event (in case of level sensitivity) + This parameter can be a value of @ref HRTIM_ExternalEventPolarity */ + uint32_t Sensitivity; /*!< Specifies the sensitivity of the external event + This parameter can be a value of @ref HRTIM_ExternalEventSensitivity */ + uint32_t Filter; /*!< Defines the frequency used to sample the External Event and the length of the digital filter + This parameter can be a value of @ref HRTIM_ExternalEventFilter */ + uint32_t FastMode; /*!< Indicates whether or not low latency mode is enabled for the external event + This parameter can be a value of @ref HRTIM_ExternalEventFastMode */ +} HRTIM_EventCfgTypeDef; + +/** + * @brief Fault channel configuration definition + */ +typedef struct { + uint32_t Source; /*!< Identifies the source of the fault + This parameter can be a value of @ref HRTIM_FaultSources */ + uint32_t Polarity; /*!< Specifies the polarity of the fault event + This parameter can be a value of @ref HRTIM_FaultPolarity */ + uint32_t Filter; /*!< Defines the frequency used to sample the Fault input and the length of the digital filter + This parameter can be a value of @ref HRTIM_FaultFilter */ + uint32_t Lock; /*!< Indicates whether or not fault programming bits are write protected + This parameter can be a value of @ref HRTIM_FaultLock */ +} HRTIM_FaultCfgTypeDef; + +/** + * @brief Burst mode configuration definition + */ +typedef struct { + uint32_t Mode; /*!< Specifies the burst mode operating mode + This parameter can be a value of @ref HRTIM_BurstModeOperatingMode */ + uint32_t ClockSource; /*!< Specifies the burst mode clock source + This parameter can be a value of @ref HRTIM_BurstModeClockSource */ + uint32_t Prescaler; /*!< Specifies the burst mode prescaler + This parameter can be a value of @ref HRTIM_BurstModePrescaler */ + uint32_t PreloadEnable; /*!< Specifies whether or not preload is enabled for burst mode related registers (HRTIM_BMCMPR and HRTIM_BMPER) + This parameter can be a combination of @ref HRTIM_BurstModeRegisterPreloadEnable */ + uint32_t Trigger; /*!< Specifies the event(s) triggering the burst operation + This parameter can be a combination of @ref HRTIM_BurstModeTrigger */ + uint32_t IdleDuration; /*!< Specifies number of periods during which the selected timers are in idle state + This parameter can be a number between 0x0 and 0xFFFF */ + uint32_t Period; /*!< Specifies burst mode repetition period + This parameter can be a number between 0x1 and 0xFFFF */ +} HRTIM_BurstModeCfgTypeDef; + +/** + * @brief ADC trigger configuration definition + */ +typedef struct { + uint32_t UpdateSource; /*!< Specifies the ADC trigger update source + This parameter can be a combination of @ref HRTIM_ADCTriggerUpdateSource */ + uint32_t Trigger; /*!< Specifies the event(s) triggering the ADC conversion + This parameter can be a combination of @ref HRTIM_ADCTriggerEvent */ +} HRTIM_ADCTriggerCfgTypeDef; + + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup HRTIM_Exported_Constants + * @{ + */ + +/** @defgroup HRTIM_TimerIndex + * @{ + * @brief Constants defining the timer indexes + */ +#define HRTIM_TIMERINDEX_TIMER_A (uint32_t)0x0 /*!< Index associated to timer A */ +#define HRTIM_TIMERINDEX_TIMER_B (uint32_t)0x1 /*!< Index associated to timer B */ +#define HRTIM_TIMERINDEX_TIMER_C (uint32_t)0x2 /*!< Index associated to timer C */ +#define HRTIM_TIMERINDEX_TIMER_D (uint32_t)0x3 /*!< Index associated to timer D */ +#define HRTIM_TIMERINDEX_TIMER_E (uint32_t)0x4 /*!< Index associated to timer E */ +#define HRTIM_TIMERINDEX_MASTER (uint32_t)0x5 /*!< Index associated to master timer */ +#define HRTIM_COMMONINDEX (uint32_t)0x6 /*!< Index associated to Common space */ + +#define IS_HRTIM_TIMERINDEX(TIMERINDEX)\ + (((TIMERINDEX) == HRTIM_TIMERINDEX_MASTER) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_A) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_B) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_C) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_D) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_E)) + +#define IS_HRTIM_TIMING_UNIT(TIMERINDEX)\ + (((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_A) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_B) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_C) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_D) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_E)) +/** + * @} + */ + +/** @defgroup HRTIM_TimerIdentifier + * @{ + * @brief Constants defining timer identifiers + */ +#define HRTIM_TIMERID_MASTER (HRTIM_MCR_MCEN) /*!< Master identifier*/ +#define HRTIM_TIMERID_TIMER_A (HRTIM_MCR_TACEN) /*!< Timer A identifier */ +#define HRTIM_TIMERID_TIMER_B (HRTIM_MCR_TBCEN) /*!< Timer B identifier */ +#define HRTIM_TIMERID_TIMER_C (HRTIM_MCR_TCCEN) /*!< Timer C identifier */ +#define HRTIM_TIMERID_TIMER_D (HRTIM_MCR_TDCEN) /*!< Timer D identifier */ +#define HRTIM_TIMERID_TIMER_E (HRTIM_MCR_TECEN) /*!< Timer E identifier */ + +#define IS_HRTIM_TIMERID(TIMERID)\ + (((TIMERID) == HRTIM_TIMERID_MASTER) || \ + ((TIMERID) == HRTIM_TIMERID_TIMER_A) || \ + ((TIMERID) == HRTIM_TIMERID_TIMER_B) || \ + ((TIMERID) == HRTIM_TIMERID_TIMER_C) || \ + ((TIMERID) == HRTIM_TIMERID_TIMER_D) || \ + ((TIMERID) == HRTIM_TIMERID_TIMER_E)) +/** + * @} + */ + +/** @defgroup HRTIM_CompareUnit + * @{ + * @brief Constants defining compare unit identifiers + */ +#define HRTIM_COMPAREUNIT_1 (uint32_t)0x00000001 /*!< Compare unit 1 identifier */ +#define HRTIM_COMPAREUNIT_2 (uint32_t)0x00000002 /*!< Compare unit 2 identifier */ +#define HRTIM_COMPAREUNIT_3 (uint32_t)0x00000004 /*!< Compare unit 3 identifier */ +#define HRTIM_COMPAREUNIT_4 (uint32_t)0x00000008 /*!< Compare unit 4 identifier */ + +#define IS_HRTIM_COMPAREUNIT(COMPAREUNIT)\ + (((COMPAREUNIT) == HRTIM_COMPAREUNIT_1) || \ + ((COMPAREUNIT) == HRTIM_COMPAREUNIT_2) || \ + ((COMPAREUNIT) == HRTIM_COMPAREUNIT_3) || \ + ((COMPAREUNIT) == HRTIM_COMPAREUNIT_4)) + /** + * @} + */ + +/** @defgroup HRTIM_CaptureUnit + * @{ + * @brief Constants defining capture unit identifiers + */ +#define HRTIM_CAPTUREUNIT_1 (uint32_t)0x00000001 /*!< Capture unit 1 identifier */ +#define HRTIM_CAPTUREUNIT_2 (uint32_t)0x00000002 /*!< Capture unit 2 identifier */ + +#define IS_HRTIM_CAPTUREUNIT(CAPTUREUNIT)\ + (((CAPTUREUNIT) == HRTIM_CAPTUREUNIT_1) || \ + ((CAPTUREUNIT) == HRTIM_CAPTUREUNIT_2)) +/** + * @} + */ + +/** @defgroup HRTIM_TimerOutput + * @{ + * @brief Constants defining timer output identifiers + */ +#define HRTIM_OUTPUT_TA1 (uint32_t)0x00000001 /*!< Timer A - Ouput 1 identifier */ +#define HRTIM_OUTPUT_TA2 (uint32_t)0x00000002 /*!< Timer A - Ouput 2 identifier */ +#define HRTIM_OUTPUT_TB1 (uint32_t)0x00000004 /*!< Timer B - Ouput 1 identifier */ +#define HRTIM_OUTPUT_TB2 (uint32_t)0x00000008 /*!< Timer B - Ouput 2 identifier */ +#define HRTIM_OUTPUT_TC1 (uint32_t)0x00000010 /*!< Timer C - Ouput 1 identifier */ +#define HRTIM_OUTPUT_TC2 (uint32_t)0x00000020 /*!< Timer C - Ouput 2 identifier */ +#define HRTIM_OUTPUT_TD1 (uint32_t)0x00000040 /*!< Timer D - Ouput 1 identifier */ +#define HRTIM_OUTPUT_TD2 (uint32_t)0x00000080 /*!< Timer D - Ouput 2 identifier */ +#define HRTIM_OUTPUT_TE1 (uint32_t)0x00000100 /*!< Timer E - Ouput 1 identifier */ +#define HRTIM_OUTPUT_TE2 (uint32_t)0x00000200 /*!< Timer E - Ouput 2 identifier */ + +#define IS_HRTIM_OUTPUT(OUTPUT)\ + (((OUTPUT) == HRTIM_OUTPUT_TA1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TA2) || \ + ((OUTPUT) == HRTIM_OUTPUT_TB1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TB2) || \ + ((OUTPUT) == HRTIM_OUTPUT_TC1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TC2) || \ + ((OUTPUT) == HRTIM_OUTPUT_TD1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TD2) || \ + ((OUTPUT) == HRTIM_OUTPUT_TE1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TE2)) + +#define IS_HRTIM_TIMER_OUTPUT(TIMER, OUTPUT)\ + ((((TIMER) == HRTIM_TIMERINDEX_TIMER_A) && \ + (((OUTPUT) == HRTIM_OUTPUT_TA1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TA2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_B) && \ + (((OUTPUT) == HRTIM_OUTPUT_TB1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TB2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_C) && \ + (((OUTPUT) == HRTIM_OUTPUT_TC1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TC2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_D) && \ + (((OUTPUT) == HRTIM_OUTPUT_TD1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TD2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_E) && \ + (((OUTPUT) == HRTIM_OUTPUT_TE1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TE2)))) +/** + * @} + */ + +/** @defgroup HRTIM_ADCTrigger + * @{ + * @brief Constants defining ADC triggers identifiers + */ +#define HRTIM_ADCTRIGGER_1 (uint32_t)0x00000001 /*!< ADC trigger 1 identifier */ +#define HRTIM_ADCTRIGGER_2 (uint32_t)0x00000002 /*!< ADC trigger 1 identifier */ +#define HRTIM_ADCTRIGGER_3 (uint32_t)0x00000004 /*!< ADC trigger 1 identifier */ +#define HRTIM_ADCTRIGGER_4 (uint32_t)0x00000008 /*!< ADC trigger 1 identifier */ + +#define IS_HRTIM_ADCTRIGGER(ADCTRIGGER)\ + (((ADCTRIGGER) == HRTIM_ADCTRIGGER_1) || \ + ((ADCTRIGGER) == HRTIM_ADCTRIGGER_2) || \ + ((ADCTRIGGER) == HRTIM_ADCTRIGGER_3) || \ + ((ADCTRIGGER) == HRTIM_ADCTRIGGER_4)) +/** + * @} + */ + +/** @defgroup HRTIM_ExternalEventChannels + * @{ + * @brief Constants defining external event channel identifiers + */ +#define HRTIM_EVENT_NONE ((uint32_t)0x00000000) /*!< Undefined event channel */ +#define HRTIM_EVENT_1 ((uint32_t)0x00000001) /*!< External event channel 1 identifier */ +#define HRTIM_EVENT_2 ((uint32_t)0x00000002) /*!< External event channel 2 identifier */ +#define HRTIM_EVENT_3 ((uint32_t)0x00000004) /*!< External event channel 3 identifier */ +#define HRTIM_EVENT_4 ((uint32_t)0x00000008) /*!< External event channel 4 identifier */ +#define HRTIM_EVENT_5 ((uint32_t)0x00000010) /*!< External event channel 5 identifier */ +#define HRTIM_EVENT_6 ((uint32_t)0x00000020) /*!< External event channel 6 identifier */ +#define HRTIM_EVENT_7 ((uint32_t)0x00000040) /*!< External event channel 7 identifier */ +#define HRTIM_EVENT_8 ((uint32_t)0x00000080) /*!< External event channel 8 identifier */ +#define HRTIM_EVENT_9 ((uint32_t)0x00000100) /*!< External event channel 9 identifier */ +#define HRTIM_EVENT_10 ((uint32_t)0x00000200) /*!< External event channel 10 identifier */ + +#define IS_HRTIM_EVENT(EVENT)\ + (((EVENT) == HRTIM_EVENT_1) || \ + ((EVENT) == HRTIM_EVENT_2) || \ + ((EVENT) == HRTIM_EVENT_3) || \ + ((EVENT) == HRTIM_EVENT_4) || \ + ((EVENT) == HRTIM_EVENT_5) || \ + ((EVENT) == HRTIM_EVENT_6) || \ + ((EVENT) == HRTIM_EVENT_7) || \ + ((EVENT) == HRTIM_EVENT_8) || \ + ((EVENT) == HRTIM_EVENT_9) || \ + ((EVENT) == HRTIM_EVENT_10)) +/** + * @} + */ + +/** @defgroup HRTIM_FaultChannel + * @{ + * @brief Constants defining fault channel identifiers + */ +#define HRTIM_FAULT_1 ((uint32_t)0x01) /*!< Fault channel 1 identifier */ +#define HRTIM_FAULT_2 ((uint32_t)0x02) /*!< Fault channel 2 identifier */ +#define HRTIM_FAULT_3 ((uint32_t)0x04) /*!< Fault channel 3 identifier */ +#define HRTIM_FAULT_4 ((uint32_t)0x08) /*!< Fault channel 4 identifier */ +#define HRTIM_FAULT_5 ((uint32_t)0x10) /*!< Fault channel 5 identifier */ + +#define IS_HRTIM_FAULT(FAULT)\ + (((FAULT) == HRTIM_FAULT_1) || \ + ((FAULT) == HRTIM_FAULT_2) || \ + ((FAULT) == HRTIM_FAULT_3) || \ + ((FAULT) == HRTIM_FAULT_4) || \ + ((FAULT) == HRTIM_FAULT_5)) +/** + * @} + */ + + + /** @defgroup HRTIM_PrescalerRatio + * @{ + * @brief Constants defining timer high-resolution clock prescaler ratio. + */ +#define HRTIM_PRESCALERRATIO_MUL32 ((uint32_t)0x00000000) /*!< fHRCK: 4.608 GHz - Resolution: 217 ps - Min PWM frequency: 70.3 kHz (fHRTIM=144MHz) */ +#define HRTIM_PRESCALERRATIO_MUL16 ((uint32_t)0x00000001) /*!< fHRCK: 2.304 GHz - Resolution: 434 ps - Min PWM frequency: 35.1 KHz (fHRTIM=144MHz) */ +#define HRTIM_PRESCALERRATIO_MUL8 ((uint32_t)0x00000002) /*!< fHRCK: 1.152 GHz - Resolution: 868 ps - Min PWM frequency: 17.6 kHz (fHRTIM=144MHz) */ +#define HRTIM_PRESCALERRATIO_MUL4 ((uint32_t)0x00000003) /*!< fHRCK: 576 MHz - Resolution: 1.73 ns - Min PWM frequency: 8.8 kHz (fHRTIM=144MHz) */ +#define HRTIM_PRESCALERRATIO_MUL2 ((uint32_t)0x00000004) /*!< fHRCK: 288 MHz - Resolution: 3.47 ns - Min PWM frequency: 4.4 kHz (fHRTIM=144MHz) */ +#define HRTIM_PRESCALERRATIO_DIV1 ((uint32_t)0x00000005) /*!< fHRCK: 144 MHz - Resolution: 6.95 ns - Min PWM frequency: 2.2 kHz (fHRTIM=144MHz) */ +#define HRTIM_PRESCALERRATIO_DIV2 ((uint32_t)0x00000006) /*!< fHRCK: 72 MHz - Resolution: 13.88 ns- Min PWM frequency: 1.1 kHz (fHRTIM=144MHz) */ +#define HRTIM_PRESCALERRATIO_DIV4 ((uint32_t)0x00000007) /*!< fHRCK: 36 MHz - Resolution: 27.7 ns- Min PWM frequency: 550Hz (fHRTIM=144MHz) */ + +#define IS_HRTIM_PRESCALERRATIO(PRESCALERRATIO)\ + (((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_MUL32) || \ + ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_MUL16) || \ + ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_MUL8) || \ + ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_MUL4) || \ + ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_MUL2) || \ + ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_DIV1) || \ + ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_DIV2) || \ + ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_DIV4)) +/** + * @} + */ + +/** @defgroup HRTIM_Mode + * @{ + * @brief Constants defining timer counter operating mode. + */ +#define HRTIM_MODE_CONTINOUS ((uint32_t)0x00000008) /*!< The timer operates in continuous (free-running) mode */ +#define HRTIM_MODE_SINGLESHOT ((uint32_t)0x00000000) /*!< The timer operates in non retriggerable single-shot mode */ +#define HRTIM_MODE_SINGLESHOT_RETRIGGERABLE ((uint32_t)0x00000010) /*!< The timer operates in retriggerable single-shot mode */ + +#define IS_HRTIM_MODE(MODE)\ + (((MODE) == HRTIM_MODE_CONTINOUS) || \ + ((MODE) == HRTIM_MODE_SINGLESHOT) || \ + ((MODE) == HRTIM_MODE_SINGLESHOT_RETRIGGERABLE)) + +#define IS_HRTIM_MODE_ONEPULSE(MODE)\ + (((MODE) == HRTIM_MODE_SINGLESHOT) || \ + ((MODE) == HRTIM_MODE_SINGLESHOT_RETRIGGERABLE)) + +/** + * @} + */ + +/** @defgroup HRTIM_HalfModeEnable + * @{ + * @brief Constants defining half mode enabling status. + */ +#define HRTIM_HALFMODE_DISABLED ((uint32_t)0x00000000) /*!< Half mode is disabled */ +#define HRTIM_HALFMODE_ENABLED ((uint32_t)0x00000020) /*!< Half mode is enabled */ + +#define IS_HRTIM_HALFMODE(HALFMODE)\ + (((HALFMODE) == HRTIM_HALFMODE_DISABLED) || \ + ((HALFMODE) == HRTIM_HALFMODE_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_StartOnSyncInputEvent + * @{ + * @brief Constants defining the timer behavior following the synchronization event + */ +#define HRTIM_SYNCSTART_DISABLED ((uint32_t)0x00000000) /*!< Synchronization input event has effect on the timer */ +#define HRTIM_SYNCSTART_ENABLED (HRTIM_MCR_SYNCSTRTM) /*!< Synchronization input event starts the timer */ + +#define IS_HRTIM_SYNCSTART(SYNCSTART)\ + (((SYNCSTART) == HRTIM_SYNCSTART_DISABLED) || \ + ((SYNCSTART) == HRTIM_SYNCSTART_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_ResetOnSyncInputEvent + * @{ + * @brief Constants defining the timer behavior following the synchronization event + */ +#define HRTIM_SYNCRESET_DISABLED ((uint32_t)0x00000000) /*!< Synchronization input event has effect on the timer */ +#define HRTIM_SYNCRESET_ENABLED (HRTIM_MCR_SYNCRSTM) /*!< Synchronization input event resets the timer */ + +#define IS_HRTIM_SYNCRESET(SYNCRESET)\ + (((SYNCRESET) == HRTIM_SYNCRESET_DISABLED) || \ + ((SYNCRESET) == HRTIM_SYNCRESET_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_DACSynchronization + * @{ + * @brief Constants defining on which output the DAC synchronization event is sent + */ +#define HRTIM_DACSYNC_NONE (uint32_t)0x00000000 /*!< No DAC synchronization event generated */ +#define HRTIM_DACSYNC_DACTRIGOUT_1 (HRTIM_MCR_DACSYNC_0) /*!< DAC synchronization event generated on DACTrigOut1 output upon timer update */ +#define HRTIM_DACSYNC_DACTRIGOUT_2 (HRTIM_MCR_DACSYNC_1) /*!< DAC synchronization event generated on DACTrigOut2 output upon timer update */ +#define HRTIM_DACSYNC_DACTRIGOUT_3 (HRTIM_MCR_DACSYNC_1 | HRTIM_MCR_DACSYNC_0) /*!< DAC update generated on DACTrigOut3 output upon timer update */ + +#define IS_HRTIM_DACSYNC(DACSYNC)\ + (((DACSYNC) == HRTIM_DACSYNC_NONE) || \ + ((DACSYNC) == HRTIM_DACSYNC_DACTRIGOUT_1) || \ + ((DACSYNC) == HRTIM_DACSYNC_DACTRIGOUT_2) || \ + ((DACSYNC) == HRTIM_DACSYNC_DACTRIGOUT_3)) +/** + * @} + */ + +/** @defgroup HRTIM_RegisterPreloadEnable + * @{ + * @brief Constants defining whether a write access into a preloadable + * register is done into the active or the preload register. + */ +#define HRTIM_PRELOAD_DISABLED ((uint32_t)0x00000000) /*!< Preload disabled: the write access is directly done into the active register */ +#define HRTIM_PRELOAD_ENABLED (HRTIM_MCR_PREEN) /*!< Preload enabled: the write access is done into the preload register */ + +#define IS_HRTIM_PRELOAD(PRELOAD)\ + (((PRELOAD) == HRTIM_PRELOAD_DISABLED) || \ + ((PRELOAD) == HRTIM_PRELOAD_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_UpdateGating + * @{ + * @brief Constants defining how the update occurs relatively to the burst DMA + * transaction and the external update request on update enable inputs 1 to 3. + */ +#define HRTIM_UPDATEGATING_INDEPENDENT (uint32_t)0x00000000 /*!< Update done independently from the DMA burst transfer completion */ +#define HRTIM_UPDATEGATING_DMABURST (HRTIM_TIMCR_UPDGAT_0) /*!< Update done when the DMA burst transfer is completed */ +#define HRTIM_UPDATEGATING_DMABURST_UPDATE (HRTIM_TIMCR_UPDGAT_1) /*!< Update done on timer roll-over following a DMA burst transfer completion*/ +#define HRTIM_UPDATEGATING_UPDEN1 (HRTIM_TIMCR_UPDGAT_1 | HRTIM_TIMCR_UPDGAT_0) /*!< Slave timer only - Update done on a rising edge of HRTIM update enable input 1 */ +#define HRTIM_UPDATEGATING_UPDEN2 (HRTIM_TIMCR_UPDGAT_2) /*!< Slave timer only - Update done on a rising edge of HRTIM update enable input 2 */ +#define HRTIM_UPDATEGATING_UPDEN3 (HRTIM_TIMCR_UPDGAT_2 | HRTIM_TIMCR_UPDGAT_0) /*!< Slave timer only - Update done on a rising edge of HRTIM update enable input 3 */ +#define HRTIM_UPDATEGATING_UPDEN1_UPDATE (HRTIM_TIMCR_UPDGAT_2 | HRTIM_TIMCR_UPDGAT_1) /*!< Slave timer only - Update done on the update event following a rising edge of HRTIM update enable input 1 */ +#define HRTIM_UPDATEGATING_UPDEN2_UPDATE (HRTIM_TIMCR_UPDGAT_2 | HRTIM_TIMCR_UPDGAT_1 | HRTIM_TIMCR_UPDGAT_0) /*!< Slave timer only - Update done on the update event following a rising edge of HRTIM update enable input 2 */ +#define HRTIM_UPDATEGATING_UPDEN3_UPDATE (HRTIM_TIMCR_UPDGAT_3) /*!< Slave timer only - Update done on the update event following a rising edge of HRTIM update enable input 3 */ + +#define IS_HRTIM_UPDATEGATING_MASTER(UPDATEGATING)\ + (((UPDATEGATING) == HRTIM_UPDATEGATING_INDEPENDENT) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST_UPDATE)) + +#define IS_HRTIM_UPDATEGATING_TIM(UPDATEGATING)\ + (((UPDATEGATING) == HRTIM_UPDATEGATING_INDEPENDENT) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST_UPDATE) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN1) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN2) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN3) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN1_UPDATE) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN2_UPDATE) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN3_UPDATE)) +/** + * @} + */ + +/** @defgroup HRTIM_TimerBurstMode + * @{ + * @brief Constants defining how the timer behaves during a burst + mode operation. + */ +#define HRTIM_TIMERBURSTMODE_MAINTAINCLOCK (uint32_t)0x000000 /*!< Timer counter clock is maintained and the timer operates normally */ +#define HRTIM_TIMERBURSTMODE_RESETCOUNTER (HRTIM_BMCR_MTBM) /*!< Timer counter clock is stopped and the counter is reset */ + +#define IS_HRTIM_TIMERBURSTMODE(TIMERBURSTMODE) \ + (((TIMERBURSTMODE) == HRTIM_TIMERBURSTMODE_MAINTAINCLOCK) || \ + ((TIMERBURSTMODE) == HRTIM_TIMERBURSTMODE_RESETCOUNTER)) +/** + * @} + */ + +/** @defgroup HRTIM_TimerRepetitionUpdate + * @{ + * @brief Constants defining whether registers are updated when the timer + * repetition period is completed (either due to roll-over or + * reset events) + */ +#define HRTIM_UPDATEONREPETITION_DISABLED (uint32_t)0x00000000 /*!< Update on repetition disabled */ +#define HRTIM_UPDATEONREPETITION_ENABLED (HRTIM_MCR_MREPU) /*!< Update on repetition enabled */ + +#define IS_HRTIM_UPDATEONREPETITION(UPDATEONREPETITION) \ + (((UPDATEONREPETITION) == HRTIM_UPDATEONREPETITION_DISABLED) || \ + ((UPDATEONREPETITION) == HRTIM_UPDATEONREPETITION_ENABLED)) +/** + * @} + */ + + +/** @defgroup HRTIM_TimerPushPullMode + * @{ + * @brief Constants defining whether or not the push-pull mode is enabled for + * a timer. + */ +#define HRTIM_TIMPUSHPULLMODE_DISABLED ((uint32_t)0x00000000) /*!< Push-Pull mode disabled */ +#define HRTIM_TIMPUSHPULLMODE_ENABLED ((uint32_t)HRTIM_TIMCR_PSHPLL) /*!< Push-Pull mode enabled */ + +#define IS_HRTIM_TIMPUSHPULLMODE(TIMPUSHPULLMODE)\ + (((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_DISABLED) || \ + ((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_TimerFaultEnabling + * @{ + * @brief Constants defining whether a faut channel is enabled for a timer + */ +#define HRTIM_TIMFAULTENABLE_NONE (uint32_t)0x00000000 /*!< No fault enabled */ +#define HRTIM_TIMFAULTENABLE_FAULT1 (HRTIM_FLTR_FLT1EN) /*!< Fault 1 enabled */ +#define HRTIM_TIMFAULTENABLE_FAULT2 (HRTIM_FLTR_FLT2EN) /*!< Fault 2 enabled */ +#define HRTIM_TIMFAULTENABLE_FAULT3 (HRTIM_FLTR_FLT3EN) /*!< Fault 3 enabled */ +#define HRTIM_TIMFAULTENABLE_FAULT4 (HRTIM_FLTR_FLT4EN) /*!< Fault 4 enabled */ +#define HRTIM_TIMFAULTENABLE_FAULT5 (HRTIM_FLTR_FLT5EN) /*!< Fault 5 enabled */ + +#define IS_HRTIM_TIMFAULTENABLE(TIMFAULTENABLE) (((TIMFAULTENABLE) & 0xFFFFFFE0) == 0x00000000) + +/** + * @} + */ + +/** @defgroup HRTIM_TimerFaultLock + * @{ + * @brief Constants defining whether or not fault enabling bits are write + * protected for a timer + */ +#define HRTIM_TIMFAULTLOCK_READWRITE ((uint32_t)0x00000000) /*!< Timer fault enabling bits are read/write */ +#define HRTIM_TIMFAULTLOCK_READONLY (HRTIM_FLTR_FLTCLK) /*!< Timer fault enabling bits are read only */ + +#define IS_HRTIM_TIMFAULTLOCK(TIMFAULTLOCK)\ + (((TIMFAULTLOCK) == HRTIM_TIMFAULTLOCK_READWRITE) || \ + ((TIMFAULTLOCK) == HRTIM_TIMFAULTLOCK_READONLY)) +/** + * @} + */ + +/** @defgroup HRTIM_TimerDeadtimeInsertion + * @{ + * @brief Constants defining whether or not fault the dead time insertion + * feature is enabled for a timer + */ +#define HRTIM_TIMDEADTIMEINSERTION_DISABLED ((uint32_t)0x00000000) /*!< Output 1 and output 2 signals are independent */ +#define HRTIM_TIMDEADTIMEINSERTION_ENABLED HRTIM_OUTR_DTEN /*!< Deadtime is inserted between output 1 and output 2 */ + +#define IS_HRTIM_TIMDEADTIMEINSERTION(TIMDEADTIMEINSERTION)\ + (((TIMDEADTIMEINSERTION) == HRTIM_TIMDEADTIMEINSERTION_DISABLED) || \ + ((TIMDEADTIMEINSERTION) == HRTIM_TIMDEADTIMEINSERTION_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_TimerDelayedProtectionMode + * @{ + * @brief Constants defining all possible delayed protection modes + * for a timer. Also define the source and outputs on which the delayed + * protection schemes are applied + */ +#define HRTIM_TIMDELAYEDPROTECTION_DISABLED ((uint32_t)0x00000000) /*!< No action */ +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_EEV68 (HRTIM_OUTR_DLYPRTEN) /*!< Output 1 delayed Idle on external Event 6 or 8 */ +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_EEV68 (HRTIM_OUTR_DLYPRT_0 | HRTIM_OUTR_DLYPRTEN) /*!< Output 2 delayed Idle on external Event 6 or 8 */ +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV68 (HRTIM_OUTR_DLYPRT_1 | HRTIM_OUTR_DLYPRTEN) /*!< Output 1 and output 2 delayed Idle on external Event 6 or 8 */ +#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV68 (HRTIM_OUTR_DLYPRT_1 | HRTIM_OUTR_DLYPRT_0 | HRTIM_OUTR_DLYPRTEN) /*!< Balanced Idle on external Event 6 or 8 */ +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_DEEV79 (HRTIM_OUTR_DLYPRT_2 | HRTIM_OUTR_DLYPRTEN) /*!< Output 1 delayed Idle on external Event 7 or 9 */ +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_DEEV79 (HRTIM_OUTR_DLYPRT_2 | HRTIM_OUTR_DLYPRT_0 | HRTIM_OUTR_DLYPRTEN) /*!< Output 2 delayed Idle on external Event 7 or 9 */ +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV79 (HRTIM_OUTR_DLYPRT_2 | HRTIM_OUTR_DLYPRT_1 | HRTIM_OUTR_DLYPRTEN) /*!< Output 1 and output2 delayed Idle on external Event 7 or 9 */ +#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV79 (HRTIM_OUTR_DLYPRT_2 | HRTIM_OUTR_DLYPRT_1 | HRTIM_OUTR_DLYPRT_0 | HRTIM_OUTR_DLYPRTEN) /*!< Balanced Idle on external Event 7 or 9 */ + +#define IS_HRTIM_TIMDELAYEDPROTECTION(TIMDELAYEDPROTECTION)\ + (((TIMDELAYEDPROTECTION) == HRTIM_TIMDELAYEDPROTECTION_DISABLED) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_EEV68) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_EEV68) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV68) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV68) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_DEEV79) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_DEEV79) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV79) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV79)) +/** + * @} + */ + +/** @defgroup HRTIM_TimerUpdateTrigger + * @{ + * @brief Constants defining whether the registers update is done synchronously + * with any other timer or master update + */ +#define HRTIM_TIMUPDATETRIGGER_NONE (uint32_t)0x00000000 /*!< Register update is disabled */ +#define HRTIM_TIMUPDATETRIGGER_MASTER (HRTIM_TIMCR_MSTU) /*!< Register update is triggered by the master timer update */ +#define HRTIM_TIMUPDATETRIGGER_TIMER_A (HRTIM_TIMCR_TAU) /*!< Register update is triggered by the timer A update */ +#define HRTIM_TIMUPDATETRIGGER_TIMER_B (HRTIM_TIMCR_TBU) /*!< Register update is triggered by the timer B update */ +#define HRTIM_TIMUPDATETRIGGER_TIMER_C (HRTIM_TIMCR_TCU) /*!< Register update is triggered by the timer C update*/ +#define HRTIM_TIMUPDATETRIGGER_TIMER_D (HRTIM_TIMCR_TDU) /*!< Register update is triggered by the timer D update */ +#define HRTIM_TIMUPDATETRIGGER_TIMER_E (HRTIM_TIMCR_TEU) /*!< Register update is triggered by the timer E update */ + +#define IS_HRTIM_TIMUPDATETRIGGER(TIMUPDATETRIGGER) (((TIMUPDATETRIGGER) & 0xFE07FFFF) == 0x00000000) +/** + * @} + */ + +/** @defgroup HRTIM_TimerResetTrigger + * @{ + * @brief Constants defining the events that can be selected to trigger the reset + * of the timer counter + */ +#define HRTIM_TIMRESETTRIGGER_NONE (uint32_t)0x00000000 /*!< No counter reset trigger */ +#define HRTIM_TIMRESETTRIGGER_UPDATE (HRTIM_RSTR_UPDATE) /*!< The timer counter is reset upon update event */ +#define HRTIM_TIMRESETTRIGGER_CMP2 (HRTIM_RSTR_CMP2) /*!< The timer counter is reset upon Timer Compare 2 event */ +#define HRTIM_TIMRESETTRIGGER_CMP4 (HRTIM_RSTR_CMP4) /*!< The timer counter is reset upon Timer Compare 4 event */ +#define HRTIM_TIMRESETTRIGGER_MASTER_PER (HRTIM_RSTR_MSTPER) /*!< The timer counter is reset upon master timer period event */ +#define HRTIM_TIMRESETTRIGGER_MASTER_CMP1 (HRTIM_RSTR_MSTCMP1) /*!< The timer counter is reset upon master timer Compare 1 event */ +#define HRTIM_TIMRESETTRIGGER_MASTER_CMP2 (HRTIM_RSTR_MSTCMP2) /*!< The timer counter is reset upon master timer Compare 2 event */ +#define HRTIM_TIMRESETTRIGGER_MASTER_CMP3 (HRTIM_RSTR_MSTCMP3) /*!< The timer counter is reset upon master timer Compare 3 event */ +#define HRTIM_TIMRESETTRIGGER_MASTER_CMP4 (HRTIM_RSTR_MSTCMP4) /*!< The timer counter is reset upon master timer Compare 4 event */ +#define HRTIM_TIMRESETTRIGGER_EEV_1 (HRTIM_RSTR_EXTEVNT1) /*!< The timer counter is reset upon external event 1 */ +#define HRTIM_TIMRESETTRIGGER_EEV_2 (HRTIM_RSTR_EXTEVNT2) /*!< The timer counter is reset upon external event 2 */ +#define HRTIM_TIMRESETTRIGGER_EEV_3 (HRTIM_RSTR_EXTEVNT3) /*!< The timer counter is reset upon external event 3 */ +#define HRTIM_TIMRESETTRIGGER_EEV_4 (HRTIM_RSTR_EXTEVNT4) /*!< The timer counter is reset upon external event 4 */ +#define HRTIM_TIMRESETTRIGGER_EEV_5 (HRTIM_RSTR_EXTEVNT5) /*!< The timer counter is reset upon external event 5 */ +#define HRTIM_TIMRESETTRIGGER_EEV_6 (HRTIM_RSTR_EXTEVNT6) /*!< The timer counter is reset upon external event 6 */ +#define HRTIM_TIMRESETTRIGGER_EEV_7 (HRTIM_RSTR_EXTEVNT7) /*!< The timer counter is reset upon external event 7 */ +#define HRTIM_TIMRESETTRIGGER_EEV_8 (HRTIM_RSTR_EXTEVNT8) /*!< The timer counter is reset upon external event 8 */ +#define HRTIM_TIMRESETTRIGGER_EEV_9 (HRTIM_RSTR_EXTEVNT9) /*!< The timer counter is reset upon external event 9 */ +#define HRTIM_TIMRESETTRIGGER_EEV_10 (HRTIM_RSTR_EXTEVNT10) /*!< The timer counter is reset upon external event 10 */ +#define HRTIM_TIMRESETTRIGGER_OTHER1_CMP1 (HRTIM_RSTR_TIMBCMP1) /*!< The timer counter is reset upon other timer Compare 1 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER1_CMP2 (HRTIM_RSTR_TIMBCMP2) /*!< The timer counter is reset upon other timer Compare 2 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER1_CMP4 (HRTIM_RSTR_TIMBCMP4) /*!< The timer counter is reset upon other timer Compare 4 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER2_CMP1 (HRTIM_RSTR_TIMCCMP1) /*!< The timer counter is reset upon other timer Compare 1 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER2_CMP2 (HRTIM_RSTR_TIMCCMP2) /*!< The timer counter is reset upon other timer Compare 2 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER2_CMP4 (HRTIM_RSTR_TIMCCMP4) /*!< The timer counter is reset upon other timer Compare 4 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER3_CMP1 (HRTIM_RSTR_TIMDCMP1) /*!< The timer counter is reset upon other timer Compare 1 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER3_CMP2 (HRTIM_RSTR_TIMDCMP2) /*!< The timer counter is reset upon other timer Compare 2 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER3_CMP4 (HRTIM_RSTR_TIMDCMP4) /*!< The timer counter is reset upon other timer Compare 4 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER4_CMP1 (HRTIM_RSTR_TIMECMP1) /*!< The timer counter is reset upon other timer Compare 1 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER4_CMP2 (HRTIM_RSTR_TIMECMP2) /*!< The timer counter is reset upon other timer Compare 2 event */ +#define HRTIM_TIMRESETTRIGGER_OTHER4_CMP4 (HRTIM_RSTR_TIMECMP4) /*!< The timer counter is reset upon other timer Compare 4 event */ + +#define IS_HRTIM_TIMRESETTRIGGER(TIMRESETTRIGGER) (((TIMRESETTRIGGER) & 0x800000001) == 0x00000000) + +/** + * @} + */ + +/** @defgroup HRTIM_TimerResetUpdate + * @{ + * @brief Constants defining whether the register are updated upon Timerx + * counter reset or rollover to 0 after reaching the period value + * in continuous mode + */ +#define HRTIM_TIMUPDATEONRESET_DISABLED (uint32_t)0x00000000 /*!< Update by timer x reset / rollover disabled */ +#define HRTIM_TIMUPDATEONRESET_ENABLED (HRTIM_TIMCR_TRSTU) /*!< Update by timer x reset / rollover enabled */ + +#define IS_HRTIM_TIMUPDATEONRESET(TIMUPDATEONRESET) \ + (((TIMUPDATEONRESET) == HRTIM_TIMUPDATEONRESET_DISABLED) || \ + ((TIMUPDATEONRESET) == HRTIM_TIMUPDATEONRESET_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_CompareUnitAutoDelayedMode + * @{ + * @brief Constants defining whether the compare register is behaving in + * regular mode (compare match issued as soon as counter equal compare), + * or in auto-delayed mode + */ +#define HRTIM_AUTODELAYEDMODE_REGULAR ((uint32_t)0x00000000) /*!< standard compare mode */ +#define HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT (HRTIM_TIMCR_DELCMP2_0) /*!< Compare event generated only if a capture has occured */ +#define HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1 (HRTIM_TIMCR_DELCMP2_1) /*!< Compare event generated if a capture has occurred or after a Compare 1 match (timeout if capture event is missing) */ +#define HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3 (HRTIM_TIMCR_DELCMP2_1 | HRTIM_TIMCR_DELCMP2_0) /*!< Compare event generated if a capture has occurred or after a Compare 3 match (timeout if capture event is missing) */ + +#define IS_HRTIM_AUTODELAYEDMODE(AUTODELAYEDMODE)\ + (((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3)) + +/* Auto delayed mode is only available for compare units 2 and 4 */ +#define IS_HRTIM_COMPAREUNIT_AUTODELAYEDMODE(COMPAREUNIT, AUTODELAYEDMODE) \ + ((((COMPAREUNIT) == HRTIM_COMPAREUNIT_1) && \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR)) \ + || \ + (((COMPAREUNIT) == HRTIM_COMPAREUNIT_2) && \ + (((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3))) \ + || \ + (((COMPAREUNIT) == HRTIM_COMPAREUNIT_3) && \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR)) \ + || \ + (((COMPAREUNIT) == HRTIM_COMPAREUNIT_4) && \ + (((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3)))) +/** + * @} + */ + +/** @defgroup HRTIM_BasicOCMode + * @{ + * @brief Constants defining the behavior of the output signal when the timer + operates in basic output compare mode + */ +#define HRTIM_BASICOCMODE_TOGGLE ((uint32_t)0x00000001) /*!< Output toggles when the timer counter reaches the compare value */ +#define HRTIM_BASICOCMODE_INACTIVE ((uint32_t)0x00000002) /*!< Output forced to active level when the timer counter reaches the compare value */ +#define HRTIM_BASICOCMODE_ACTIVE ((uint32_t)0x00000003) /*!< Output forced to inactive level when the timer counter reaches the compare value */ + +#define IS_HRTIM_BASICOCMODE(BASICOCMODE)\ + (((BASICOCMODE) == HRTIM_BASICOCMODE_TOGGLE) || \ + ((BASICOCMODE) == HRTIM_BASICOCMODE_INACTIVE) || \ + ((BASICOCMODE) == HRTIM_BASICOCMODE_ACTIVE)) +/** + * @} + */ + +/** @defgroup HRTIM_OutputPolarity + * @{ + * @brief Constants defining the polarity of a timer output + */ +#define HRTIM_OUTPUTPOLARITY_HIGH ((uint32_t)0x00000000) /*!< Output is active HIGH */ +#define HRTIM_OUTPUTPOLARITY_LOW (HRTIM_OUTR_POL1) /*!< Output is active LOW */ + +#define IS_HRTIM_OUTPUTPOLARITY(OUTPUTPOLARITY)\ + (((OUTPUTPOLARITY) == HRTIM_OUTPUTPOLARITY_HIGH) || \ + ((OUTPUTPOLARITY) == HRTIM_OUTPUTPOLARITY_LOW)) +/** + * @} + */ + +/** @defgroup HRTIM_OutputSetSource + * @{ + * @brief Constants defining the events that can be selected to configure the + * set crossbar of a timer output + */ +#define HRTIM_OUTPUTSET_NONE (uint32_t)0x00000000 /*!< Reset the output set crossbar */ +#define HRTIM_OUTPUTSET_RESYNC (HRTIM_SET1R_RESYNC) /*!< Timer reset event coming solely from software or SYNC input forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMPER (HRTIM_SET1R_PER) /*!< Timer period event forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMCMP1 (HRTIM_SET1R_CMP1) /*!< Timer compare 1 event forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMCMP2 (HRTIM_SET1R_CMP2) /*!< Timer compare 2 event forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMCMP3 (HRTIM_SET1R_CMP3) /*!< Timer compare 3 event forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMCMP4 (HRTIM_SET1R_CMP4) /*!< Timer compare 4 event forces the output to its active state */ +#define HRTIM_OUTPUTSET_MASTERPER (HRTIM_SET1R_MSTPER) /*!< The master timer period event forces the output to its active state */ +#define HRTIM_OUTPUTSET_MASTERCMP1 (HRTIM_SET1R_MSTCMP1) /*!< Master Timer compare 1 event forces the output to its active state */ +#define HRTIM_OUTPUTSET_MASTERCMP2 (HRTIM_SET1R_MSTCMP2) /*!< Master Timer compare 2 event forces the output to its active state */ +#define HRTIM_OUTPUTSET_MASTERCMP3 (HRTIM_SET1R_MSTCMP3) /*!< Master Timer compare 3 event forces the output to its active state */ +#define HRTIM_OUTPUTSET_MASTERCMP4 (HRTIM_SET1R_MSTCMP4) /*!< Master Timer compare 4 event forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMEV_1 (HRTIM_SET1R_TIMEVNT1) /*!< Timer event 1 forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMEV_2 (HRTIM_SET1R_TIMEVNT2) /*!< Timer event 2 forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMEV_3 (HRTIM_SET1R_TIMEVNT3) /*!< Timer event 3 forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMEV_4 (HRTIM_SET1R_TIMEVNT4) /*!< Timer event 4 forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMEV_5 (HRTIM_SET1R_TIMEVNT5) /*!< Timer event 5 forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMEV_6 (HRTIM_SET1R_TIMEVNT6) /*!< Timer event 6 forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMEV_7 (HRTIM_SET1R_TIMEVNT7) /*!< Timer event 7 forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMEV_8 (HRTIM_SET1R_TIMEVNT8) /*!< Timer event 8 forces the output to its active state */ +#define HRTIM_OUTPUTSET_TIMEV_9 (HRTIM_SET1R_TIMEVNT9) /*!< Timer event 9 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_1 (HRTIM_SET1R_EXTVNT1) /*!< External event 1 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_2 (HRTIM_SET1R_EXTVNT2) /*!< External event 2 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_3 (HRTIM_SET1R_EXTVNT3) /*!< External event 3 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_4 (HRTIM_SET1R_EXTVNT4) /*!< External event 4 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_5 (HRTIM_SET1R_EXTVNT5) /*!< External event 5 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_6 (HRTIM_SET1R_EXTVNT6) /*!< External event 6 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_7 (HRTIM_SET1R_EXTVNT7) /*!< External event 7 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_8 (HRTIM_SET1R_EXTVNT8) /*!< External event 8 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_9 (HRTIM_SET1R_EXTVNT9) /*!< External event 9 forces the output to its active state */ +#define HRTIM_OUTPUTSET_EEV_10 (HRTIM_SET1R_EXTVNT10) /*!< External event 10 forces the output to its active state */ +#define HRTIM_OUTPUTSET_UPDATE (HRTIM_SET1R_UPDATE) /*!< Timer register update event forces the output to its active state */ + +#define IS_HRTIM_OUTPUTSET(OUTPUTSET)\ + (((OUTPUTSET) == HRTIM_OUTPUTSET_NONE) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_RESYNC) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMPER) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP1) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP2) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP3) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP4) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERPER) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP1) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP2) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP3) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP4) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_1) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_2) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_3) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_4) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_5) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_6) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_7) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_8) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_9) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_1) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_2) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_3) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_4) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_5) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_6) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_7) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_8) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_9) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_10) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_UPDATE)) +/** + * @} + */ + +/** @defgroup HRTIM_OutputResetSource + * @{ + * @brief Constants defining the events that can be selected to configure the + * set crossbar of a timer output + */ +#define HRTIM_OUTPUTRESET_NONE (uint32_t)0x00000000 /*!< Reset the output reset crossbar */ +#define HRTIM_OUTPUTRESET_RESYNC (HRTIM_RST1R_RESYNC) /*!< Timer reset event coming solely from software or SYNC input forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMPER (HRTIM_RST1R_PER) /*!< Timer period event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMCMP1 (HRTIM_RST1R_CMP1) /*!< Timer compare 1 event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMCMP2 (HRTIM_RST1R_CMP2) /*!< Timer compare 2 event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMCMP3 (HRTIM_RST1R_CMP3) /*!< Timer compare 3 event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMCMP4 (HRTIM_RST1R_CMP4) /*!< Timer compare 4 event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_MASTERPER (HRTIM_RST1R_MSTPER) /*!< The master timer period event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_MASTERCMP1 (HRTIM_RST1R_MSTCMP1) /*!< Master Timer compare 1 event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_MASTERCMP2 (HRTIM_RST1R_MSTCMP2) /*!< Master Timer compare 2 event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_MASTERCMP3 (HRTIM_RST1R_MSTCMP3) /*!< Master Timer compare 3 event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_MASTERCMP4 (HRTIM_RST1R_MSTCMP4) /*!< Master Timer compare 4 event forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMEV_1 (HRTIM_RST1R_TIMEVNT1) /*!< Timer event 1 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMEV_2 (HRTIM_RST1R_TIMEVNT2) /*!< Timer event 2 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMEV_3 (HRTIM_RST1R_TIMEVNT3) /*!< Timer event 3 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMEV_4 (HRTIM_RST1R_TIMEVNT4) /*!< Timer event 4 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMEV_5 (HRTIM_RST1R_TIMEVNT5) /*!< Timer event 5 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMEV_6 (HRTIM_RST1R_TIMEVNT6) /*!< Timer event 6 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMEV_7 (HRTIM_RST1R_TIMEVNT7) /*!< Timer event 7 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMEV_8 (HRTIM_RST1R_TIMEVNT8) /*!< Timer event 8 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_TIMEV_9 (HRTIM_RST1R_TIMEVNT9) /*!< Timer event 9 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_1 (HRTIM_RST1R_EXTVNT1) /*!< External event 1 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_2 (HRTIM_RST1R_EXTVNT2) /*!< External event 2 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_3 (HRTIM_RST1R_EXTVNT3) /*!< External event 3 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_4 (HRTIM_RST1R_EXTVNT4) /*!< External event 4 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_5 (HRTIM_RST1R_EXTVNT5) /*!< External event 5 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_6 (HRTIM_RST1R_EXTVNT6) /*!< External event 6 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_7 (HRTIM_RST1R_EXTVNT7) /*!< External event 7 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_8 (HRTIM_RST1R_EXTVNT8) /*!< External event 8 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_9 (HRTIM_RST1R_EXTVNT9) /*!< External event 9 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_EEV_10 (HRTIM_RST1R_EXTVNT10) /*!< External event 10 forces the output to its inactive state */ +#define HRTIM_OUTPUTRESET_UPDATE (HRTIM_RST1R_UPDATE) /*!< Timer register update event forces the output to its inactive state */ + +#define IS_HRTIM_OUTPUTRESET(OUTPUTRESET)\ + (((OUTPUTRESET) == HRTIM_OUTPUTRESET_NONE) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_RESYNC) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMPER) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP1) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP2) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP3) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP4) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERPER) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP1) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP2) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP3) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP4) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_1) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_2) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_3) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_4) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_5) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_6) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_7) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_8) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_9) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_1) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_2) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_3) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_4) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_5) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_6) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_7) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_8) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_9) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_10) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_UPDATE)) +/** + * @} + */ + +/** @defgroup HRTIM_OutputIdleMode + * @{ + * @brief Constants defining whether or not the timer output transition to its + IDLE state when burst mode is entered + */ +#define HRTIM_OUTPUTIDLEMODE_NONE (uint32_t)0x00000000 /*!< The output is not affected by the burst mode operation */ +#define HRTIM_OUTPUTIDLEMODE_IDLE (HRTIM_OUTR_IDLM1) /*!< The output is in idle state when requested by the burst mode controller */ + +#define IS_HRTIM_OUTPUTIDLEMODE(OUTPUTIDLEMODE)\ + (((OUTPUTIDLEMODE) == HRTIM_OUTPUTIDLEMODE_NONE) || \ + ((OUTPUTIDLEMODE) == HRTIM_OUTPUTIDLEMODE_IDLE)) + /** + * @} + */ + +/** @defgroup HRTIM_OutputIDLEState + * @{ + * @brief Constants defining the IDLE state of a timer output + */ +#define HRTIM_OUTPUTIDLESTATE_INACTIVE (uint32_t)0x00000000 /*!< Output at inactive level when in IDLE state */ +#define HRTIM_OUTPUTIDLESTATE_ACTIVE (HRTIM_OUTR_IDLES1) /*!< Output at active level when in IDLE state */ + +#define IS_HRTIM_OUTPUTIDLESTATE(OUTPUTIDLESTATE)\ + (((OUTPUTIDLESTATE) == HRTIM_OUTPUTIDLESTATE_INACTIVE) || \ + ((OUTPUTIDLESTATE) == HRTIM_OUTPUTIDLESTATE_ACTIVE)) +/** + * @} + */ + +/** @defgroup HRTIM_OutputFAULTState + * @{ + * @brief Constants defining the FAULT state of a timer output + */ +#define HRTIM_OUTPUTFAULTSTATE_NONE (uint32_t)0x00000000 /*!< The output is not affected by the fault input */ +#define HRTIM_OUTPUTFAULTSTATE_ACTIVE (HRTIM_OUTR_FAULT1_0) /*!< Output at active level when in FAULT state */ +#define HRTIM_OUTPUTFAULTSTATE_INACTIVE (HRTIM_OUTR_FAULT1_1) /*!< Output at inactive level when in FAULT state */ +#define HRTIM_OUTPUTFAULTSTATE_HIGHZ (HRTIM_OUTR_FAULT1_1 | HRTIM_OUTR_FAULT1_0) /*!< Output is tri-stated when in FAULT state */ + +#define IS_HRTIM_OUTPUTFAULTSTATE(OUTPUTFAULTSTATE)\ + (((OUTPUTFAULTSTATE) == HRTIM_OUTPUTFAULTSTATE_NONE) || \ + ((OUTPUTFAULTSTATE) == HRTIM_OUTPUTFAULTSTATE_ACTIVE) || \ + ((OUTPUTFAULTSTATE) == HRTIM_OUTPUTFAULTSTATE_INACTIVE) || \ + ((OUTPUTFAULTSTATE) == HRTIM_OUTPUTFAULTSTATE_HIGHZ)) +/** + * @} + */ + +/** @defgroup HRTIM_OutputChopperModeEnable + * @{ + * @brief Constants defining whether or not chopper mode is enabled for a timer + output + */ +#define HRTIM_OUTPUTCHOPPERMODE_DISABLED (uint32_t)0x00000000 /*!< The output is not affected by the fault input */ +#define HRTIM_OUTPUTCHOPPERMODE_ENABLED (HRTIM_OUTR_CHP1) /*!< Output at active level when in FAULT state */ + +#define IS_HRTIM_OUTPUTCHOPPERMODE(OUTPUTCHOPPERMODE)\ + (((OUTPUTCHOPPERMODE) == HRTIM_OUTPUTCHOPPERMODE_DISABLED) || \ + ((OUTPUTCHOPPERMODE) == HRTIM_OUTPUTCHOPPERMODE_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_OutputBurstModeEntryDelayed + * @{ + * @brief Constants defining the idle mode entry is delayed by forcing a + deadtime insertion before switching the outputs to their idle state + */ +#define HRTIM_OUTPUTBURSTMODEENTRY_REGULAR (uint32_t)0x00000000 /*!< The programmed Idle state is applied immediately to the Output */ +#define HRTIM_OUTPUTBURSTMODEENTRY_DELAYED (HRTIM_OUTR_DIDL1) /*!< Deadtime is inserted on output before entering the idle mode */ + +#define IS_HRTIM_OUTPUTBURSTMODEENTRY(OUTPUTBURSTMODEENTRY)\ + (((OUTPUTBURSTMODEENTRY) == HRTIM_OUTPUTBURSTMODEENTRY_REGULAR) || \ + ((OUTPUTBURSTMODEENTRY) == HRTIM_OUTPUTBURSTMODEENTRY_DELAYED)) +/** + * @} + */ + +/** @defgroup HRTIM_CaptureUnitTrigger + * @{ + * @brief Constants defining the events that can be selected to trigger the + * capture of the timing unit counter + */ +#define HRTIM_CAPTURETRIGGER_NONE (uint32_t)0x00000000 /*!< Capture trigger is disabled */ +#define HRTIM_CAPTURETRIGGER_UPDATE (HRTIM_CPT1CR_UPDCPT) /*!< The update event triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_1 (HRTIM_CPT1CR_EXEV1CPT) /*!< The External event 1 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_2 (HRTIM_CPT1CR_EXEV2CPT) /*!< The External event 2 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_3 (HRTIM_CPT1CR_EXEV3CPT) /*!< The External event 3 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_4 (HRTIM_CPT1CR_EXEV4CPT) /*!< The External event 4 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_5 (HRTIM_CPT1CR_EXEV5CPT) /*!< The External event 5 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_6 (HRTIM_CPT1CR_EXEV6CPT) /*!< The External event 6 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_7 (HRTIM_CPT1CR_EXEV7CPT) /*!< The External event 7 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_8 (HRTIM_CPT1CR_EXEV8CPT) /*!< The External event 8 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_9 (HRTIM_CPT1CR_EXEV9CPT) /*!< The External event 9 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_EEV_10 (HRTIM_CPT1CR_EXEV10CPT) /*!< The External event 10 triggers the Capture */ +#define HRTIM_CAPTURETRIGGER_TA1_SET (HRTIM_CPT1CR_TA1SET) /*!< Capture is triggered by TA1 output inactive to active transition */ +#define HRTIM_CAPTURETRIGGER_TA1_RESET (HRTIM_CPT1CR_TA1RST) /*!< Capture is triggered by TA1 output active to inactive transition */ +#define HRTIM_CAPTURETRIGGER_TIMERA_CMP1 (HRTIM_CPT1CR_TA1CMP1) /*!< Timer A Compare 1 triggers Capture */ +#define HRTIM_CAPTURETRIGGER_TIMERA_CMP2 (HRTIM_CPT1CR_TA1CMP2) /*!< Timer A Compare 2 triggers Capture */ +#define HRTIM_CAPTURETRIGGER_TB1_SET (HRTIM_CPT1CR_TB1SET) /*!< Capture is triggered by TB1 output inactive to active transition */ +#define HRTIM_CAPTURETRIGGER_TB1_RESET (HRTIM_CPT1CR_TB1RST) /*!< Capture is triggered by TB1 output active to inactive transition */ +#define HRTIM_CAPTURETRIGGER_TIMERB_CMP1 (HRTIM_CPT1CR_TB1CMP1) /*!< Timer B Compare 1 triggers Capture */ +#define HRTIM_CAPTURETRIGGER_TIMERB_CMP2 (HRTIM_CPT1CR_TB1CMP2) /*!< Timer B Compare 2 triggers Capture */ +#define HRTIM_CAPTURETRIGGER_TC1_SET (HRTIM_CPT1CR_TC1SET) /*!< Capture is triggered by TC1 output inactive to active transition */ +#define HRTIM_CAPTURETRIGGER_TC1_RESET (HRTIM_CPT1CR_TC1RST) /*!< Capture is triggered by TC1 output active to inactive transition */ +#define HRTIM_CAPTURETRIGGER_TIMERC_CMP1 (HRTIM_CPT1CR_TC1CMP1) /*!< Timer C Compare 1 triggers Capture */ +#define HRTIM_CAPTURETRIGGER_TIMERC_CMP2 (HRTIM_CPT1CR_TC1CMP2) /*!< Timer C Compare 2 triggers Capture */ +#define HRTIM_CAPTURETRIGGER_TD1_SET (HRTIM_CPT1CR_TD1SET) /*!< Capture is triggered by TD1 output inactive to active transition */ +#define HRTIM_CAPTURETRIGGER_TD1_RESET (HRTIM_CPT1CR_TD1RST) /*!< Capture is triggered by TD1 output active to inactive transition */ +#define HRTIM_CAPTURETRIGGER_TIMERD_CMP1 (HRTIM_CPT1CR_TD1CMP1) /*!< Timer D Compare 1 triggers Capture */ +#define HRTIM_CAPTURETRIGGER_TIMERD_CMP2 (HRTIM_CPT1CR_TD1CMP2) /*!< Timer D Compare 2 triggers Capture */ +#define HRTIM_CAPTURETRIGGER_TE1_SET (HRTIM_CPT1CR_TE1SET) /*!< Capture is triggered by TE1 output inactive to active transition */ +#define HRTIM_CAPTURETRIGGER_TE1_RESET (HRTIM_CPT1CR_TE1RST) /*!< Capture is triggered by TE1 output active to inactive transition */ +#define HRTIM_CAPTURETRIGGER_TIMERE_CMP1 (HRTIM_CPT1CR_TE1CMP1) /*!< Timer E Compare 1 triggers Capture */ +#define HRTIM_CAPTURETRIGGER_TIMERE_CMP2 (HRTIM_CPT1CR_TE1CMP2) /*!< Timer E Compare 2 triggers Capture */ + +#define IS_HRTIM_TIMER_CAPTURETRIGGER(TIMER, CAPTURETRIGGER) \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_NONE) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_UPDATE) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_3) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_4) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_5) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_6) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_7) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_8) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_9) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_10) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_A) && \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_B) && \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_C) && \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_D) && \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_E) && \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP2)))) +/** + * @} + */ + +/** @defgroup HRTIM_TimerExternalEventFilter + * @{ + * @brief Constants defining the event filtering applied to external events + * by a timer + */ +#define HRTIM_TIMEVENTFILTER_NONE (0x00000000) +#define HRTIM_TIMEVENTFILTER_BLANKINGCMP1 (HRTIM_EEFR1_EE1FLTR_0) /*!< Blanking from counter reset/roll-over to Compare 1 */ +#define HRTIM_TIMEVENTFILTER_BLANKINGCMP2 (HRTIM_EEFR1_EE1FLTR_1) /*!< Blanking from counter reset/roll-over to Compare 2 */ +#define HRTIM_TIMEVENTFILTER_BLANKINGCMP3 (HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0) /*!< Blanking from counter reset/roll-over to Compare 3 */ +#define HRTIM_TIMEVENTFILTER_BLANKINGCMP4 (HRTIM_EEFR1_EE1FLTR_2) /*!< Blanking from counter reset/roll-over to Compare 4 */ +#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR1 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0) /*!< Blanking from another timing unit: TIMFLTR1 source */ +#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR2 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1) /*!< Blanking from another timing unit: TIMFLTR2 source */ +#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR3 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0) /*!< Blanking from another timing unit: TIMFLTR3 source */ +#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR4 (HRTIM_EEFR1_EE1FLTR_3) /*!< Blanking from another timing unit: TIMFLTR4 source */ +#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR5 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_0) /*!< Blanking from another timing unit: TIMFLTR5 source */ +#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR6 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1) /*!< Blanking from another timing unit: TIMFLTR6 source */ +#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR7 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0) /*!< Blanking from another timing unit: TIMFLTR7 source */ +#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR8 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2) /*!< Blanking from another timing unit: TIMFLTR8 source */ +#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP2 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0) /*!< Windowing from counter reset/roll-over to Compare 2 */ +#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP3 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1) /*!< Windowing from counter reset/roll-over to Compare 3 */ +#define HRTIM_TIMEVENTFILTER_WINDOWINGTIM (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0) /*!< Windowing from another timing unit: TIMWIN source */ + +#define IS_HRTIM_TIMEVENTFILTER(TIMEVENTFILTER)\ + (((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_NONE) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP1) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP2) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP3) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP4) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR1) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR2) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR3) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR4) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR5) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR6) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR7) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR8) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_WINDOWINGCMP2) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_WINDOWINGCMP3) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_WINDOWINGTIM)) +/** + * @} + */ + +/** @defgroup HRTIM_TimerExternalEventLatch + * @{ + * @brief Constants defining whether or not the external event is + * memorized (latched) and generated as soon as the blanking period + * is completed or the window ends + */ +#define HRTIM_TIMEVENTLATCH_DISABLED ((uint32_t)0x00000000) /*!< Event is ignored if it happens during a blank, or passed through during a window */ +#define HRTIM_TIMEVENTLATCH_ENABLED HRTIM_EEFR1_EE1LTCH /*!< Event 1 is latched and delayed till the end of the blanking or windowing period */ /*!< Blanking from counter reset/roll-over to Compare 1 */ + +#define IS_HRTIM_TIMEVENTLATCH(TIMEVENTLATCH)\ + (((TIMEVENTLATCH) == HRTIM_TIMEVENTLATCH_DISABLED) || \ + ((TIMEVENTLATCH) == HRTIM_TIMEVENTLATCH_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_DeadtimeRisingSign + * @{ + * @brief Constants defining whether the deadtime is positive or negative + * (overlapping signal) on rising edge + */ +#define HRTIM_TIMDEADTIME_RISINGSIGN_POSITIVE ((uint32_t)0x00000000) /*!< Positive deadtime on rising edge */ +#define HRTIM_TIMDEADTIME_RISINGSIGN_NEGATIVE (HRTIM_DTR_SDTR) /*!< Negative deadtime on rising edge */ + +#define IS_HRTIM_TIMDEADTIME_RISINGSIGN(RISINGSIGN)\ + (((RISINGSIGN) == HRTIM_TIMDEADTIME_RISINGSIGN_POSITIVE) || \ + ((RISINGSIGN) == HRTIM_TIMDEADTIME_RISINGSIGN_NEGATIVE)) +/** + * @} + */ + +/** @defgroup HRTIM_DeadtimeRisingLock + * @{ + * @brief Constants defining whether or not the deadtime (rising sign and + * value) is write protected + */ +#define HRTIM_TIMDEADTIME_RISINGLOCK_WRITE ((uint32_t)0x00000000) /*!< Deadtime rising value and sign is writable */ +#define HRTIM_TIMDEADTIME_RISINGLOCK_READONLY (HRTIM_DTR_DTRLK) /*!< Deadtime rising value and sign is read-only */ + +#define IS_HRTIM_TIMDEADTIME_RISINGLOCK(RISINGLOCK)\ + (((RISINGLOCK) == HRTIM_TIMDEADTIME_RISINGLOCK_WRITE) || \ + ((RISINGLOCK) == HRTIM_TIMDEADTIME_RISINGLOCK_READONLY)) +/** + * @} + */ + +/** @defgroup HRTIM_DeadtimeRisingSignLock + * @{ + * @brief Constants defining whether or not the deadtime rising sign is write + * protected + */ +#define HRTIM_TIMDEADTIME_RISINGSIGNLOCK_WRITE ((uint32_t)0x00000000) /*!< Deadtime rising sign is writable */ +#define HRTIM_TIMDEADTIME_RISINGSIGNLOCK_READONLY (HRTIM_DTR_DTRSLK) /*!< Deadtime rising sign is read-only */ + +#define IS_HRTIM_TIMDEADTIME_RISINGSIGNLOCK(RISINGSIGNLOCK)\ + (((RISINGSIGNLOCK) == HRTIM_TIMDEADTIME_RISINGSIGNLOCK_WRITE) || \ + ((RISINGSIGNLOCK) == HRTIM_TIMDEADTIME_RISINGSIGNLOCK_READONLY)) +/** + * @} + */ + +/** @defgroup HRTIM_DeadtimeFallingSign + * @{ + * @brief Constants defining whether the deadtime is positive or negative + * (overlapping signal) on falling edge + */ +#define HRTIM_TIMDEADTIME_FALLINGSIGN_POSITIVE ((uint32_t)0x00000000) /*!< Positive deadtime on falling edge */ +#define HRTIM_TIMDEADTIME_FALLINGSIGN_NEGATIVE (HRTIM_DTR_SDTF) /*!< Negative deadtime on falling edge */ + +#define IS_HRTIM_TIMDEADTIME_FALLINGSIGN(FALLINGSIGN)\ + (((FALLINGSIGN) == HRTIM_TIMDEADTIME_FALLINGSIGN_POSITIVE) || \ + ((FALLINGSIGN) == HRTIM_TIMDEADTIME_FALLINGSIGN_NEGATIVE)) +/** + * @} + */ + +/** @defgroup HRTIM_DeadtimeFallingLock + * @{ + * @brief Constants defining whether or not the deadtime (falling sign and + * value) is write protected + */ +#define HRTIM_TIMDEADTIME_FALLINGLOCK_WRITE ((uint32_t)0x00000000) /*!< Deadtime falling value and sign is writable */ +#define HRTIM_TIMDEADTIME_FALLINGLOCK_READONLY (HRTIM_DTR_DTFLK) /*!< Deadtime falling value and sign is read-only */ + +#define IS_HRTIM_TIMDEADTIME_FALLINGLOCK(FALLINGLOCK)\ + (((FALLINGLOCK) == HRTIM_TIMDEADTIME_FALLINGLOCK_WRITE) || \ + ((FALLINGLOCK) == HRTIM_TIMDEADTIME_FALLINGLOCK_READONLY)) +/** + * @} + */ + +/** @defgroup HRTIM_DeadtimeFallingSignLock + * @{ + * @brief Constants defining whether or not the deadtime falling sign is write + * protected + */ +#define HRTIM_TIMDEADTIME_FALLINGSIGNLOCK_WRITE ((uint32_t)0x00000000) /*!< Deadtime falling sign is writable */ +#define HRTIM_TIMDEADTIME_FALLINGSIGNLOCK_READONLY (HRTIM_DTR_DTFSLK) /*!< Deadtime falling sign is read-only */ + +#define IS_HRTIM_TIMDEADTIME_FALLINGSIGNLOCK(FALLINGSIGNLOCK)\ + (((FALLINGSIGNLOCK) == HRTIM_TIMDEADTIME_FALLINGSIGNLOCK_WRITE) || \ + ((FALLINGSIGNLOCK) == HRTIM_TIMDEADTIME_FALLINGSIGNLOCK_READONLY)) +/** + * @} + */ + +/** @defgroup HRTIM_SynchronizationInputSource + * @{ + * @brief Constants defining defining the synchronization input source + */ +#define HRTIM_SYNCINPUTSOURCE_NONE (uint32_t)0x00000000 /*!< disabled. HRTIM is not synchronized and runs in standalone mode */ +#define HRTIM_SYNCINPUTSOURCE_INTERNALEVENT HRTIM_MCR_SYNC_IN_1 /*!< The HRTIM is synchronized with the on-chip timer */ +#define HRTIM_SYNCINPUTSOURCE_EXTERNALEVENT (HRTIM_MCR_SYNC_IN_1 | HRTIM_MCR_SYNC_IN_0) /*!< A positive pulse on SYNCIN input triggers the HRTIM */ + +#define IS_HRTIM_SYNCINPUTSOURCE(SYNCINPUTSOURCE)\ + (((SYNCINPUTSOURCE) == HRTIM_SYNCINPUTSOURCE_NONE) || \ + ((SYNCINPUTSOURCE) == HRTIM_SYNCINPUTSOURCE_INTERNALEVENT) || \ + ((SYNCINPUTSOURCE) == HRTIM_SYNCINPUTSOURCE_EXTERNALEVENT)) +/** + * @} + */ + +/** @defgroup HRTIM_SynchronizationOutputSource + * @{ + * @brief Constants defining the source and event to be sent on the + * synchronization outputs + */ +#define HRTIM_SYNCOUTPUTSOURCE_MASTER_START (uint32_t)0x00000000 /*!< A pulse is sent on the SYNCOUT output (16x fHRTIM clock cycles) upon master timer start event */ +#define HRTIM_SYNCOUTPUTSOURCE_MASTER_CMP1 (HRTIM_MCR_SYNC_SRC_0) /*!< A pulse is sent on the SYNCOUT output (16x fHRTIM clock cycles) upon master timer compare 1 event*/ +#define HRTIM_SYNCOUTPUTSOURCE_TIMA_START (HRTIM_MCR_SYNC_SRC_1) /*!< A pulse is sent on the SYNCOUT output (16x fHRTIM clock cycles) upon timer A start or reset events */ +#define HRTIM_SYNCOUTPUTSOURCE_TIMA_CMP1 (HRTIM_MCR_SYNC_SRC_1 | HRTIM_MCR_SYNC_SRC_0) /*!< A pulse is sent on the SYNCOUT output (16x fHRTIM clock cycles) upon timer A compare 1 event */ + +#define IS_HRTIM_SYNCOUTPUTSOURCE(SYNCOUTPUTSOURCE)\ + (((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_MASTER_START) || \ + ((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_MASTER_CMP1) || \ + ((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_TIMA_START) || \ + ((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_TIMA_CMP1)) +/** + * @} + */ + +/** @defgroup HRTIM_SynchronizationOutputPolarity + * @{ + * @brief Constants defining the routing and conditioning of the synchronization output event + */ +#define HRTIM_SYNCOUTPUTPOLARITY_NONE (uint32_t)0x00000000 /*!< Synchronization output event is disabled */ +#define HRTIM_SYNCOUTPUTPOLARITY_POSITIVE (HRTIM_MCR_SYNC_OUT_0) /*!< Positive pulse on SCOUT output (16x fHRTIM clock cycles) */ +#define HRTIM_SYNCOUTPUTPOLARITY_NEGATIVE (HRTIM_MCR_SYNC_OUT_1 | HRTIM_MCR_SYNC_OUT_0) /*!< Positive pulse on SCOUT output (16x fHRTIM clock cycles) */ + +#define IS_HRTIM_SYNCOUTPUTPOLARITY(SYNCOUTPUTPOLARITY)\ + (((SYNCOUTPUTPOLARITY) == HRTIM_SYNCOUTPUTPOLARITY_NONE) || \ + ((SYNCOUTPUTPOLARITY) == HRTIM_SYNCOUTPUTPOLARITY_POSITIVE) || \ + ((SYNCOUTPUTPOLARITY) == HRTIM_SYNCOUTPUTPOLARITY_NEGATIVE)) +/** + * @} + */ + +/** @defgroup HRTIM_ExternalEventSources + * @{ + * @brief Constants defining available sources associated to external events + */ +#define HRTIM_EVENTSRC_1 ((uint32_t)0x00000000) /*!< External event source 1 */ +#define HRTIM_EVENTSRC_2 (HRTIM_EECR1_EE1SRC_0) /*!< External event source 2 */ +#define HRTIM_EVENTSRC_3 (HRTIM_EECR1_EE1SRC_1) /*!< External event source 3 */ +#define HRTIM_EVENTSRC_4 (HRTIM_EECR1_EE1SRC_1 | HRTIM_EECR1_EE1SRC_0) /*!< External event source 4 */ + +#define IS_HRTIM_EVENTSRC(EVENTSRC)\ + (((EVENTSRC) == HRTIM_EVENTSRC_1) || \ + ((EVENTSRC) == HRTIM_EVENTSRC_2) || \ + ((EVENTSRC) == HRTIM_EVENTSRC_3) || \ + ((EVENTSRC) == HRTIM_EVENTSRC_4)) +/** + * @} + */ + +/** @defgroup HRTIM_ExternalEventPolarity + * @{ + * @brief Constants defining the polarity of an external event + */ +#define HRTIM_EVENTPOLARITY_HIGH ((uint32_t)0x00000000) /*!< External event is active high */ +#define HRTIM_EVENTPOLARITY_LOW (HRTIM_EECR1_EE1POL) /*!< External event is active low */ + +#define IS_HRTIM_EVENTPOLARITY(EVENTPOLARITY)\ + (((EVENTPOLARITY) == HRTIM_EVENTPOLARITY_HIGH) || \ + ((EVENTPOLARITY) == HRTIM_EVENTPOLARITY_LOW)) +/** + * @} + */ + +/** @defgroup HRTIM_ExternalEventSensitivity + * @{ + * @brief Constants defining the sensitivity (level-sensitive or edge-sensitive) + * of an external event + */ +#define HRTIM_EVENTSENSITIVITY_LEVEL ((uint32_t)0x00000000) /*!< External event is active on level */ +#define HRTIM_EVENTSENSITIVITY_RISINGEDGE (HRTIM_EECR1_EE1SNS_0) /*!< External event is active on Rising edge */ +#define HRTIM_EVENTSENSITIVITY_FALLINGEDGE (HRTIM_EECR1_EE1SNS_1) /*!< External event is active on Falling edge */ +#define HRTIM_EVENTSENSITIVITY_BOTHEDGES (HRTIM_EECR1_EE1SNS_1 | HRTIM_EECR1_EE1SNS_0) /*!< External event is active on Rising and Falling edges */ + +#define IS_HRTIM_EVENTSENSITIVITY(EVENTSENSITIVITY)\ + (((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_LEVEL) || \ + ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_RISINGEDGE) || \ + ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_FALLINGEDGE) || \ + ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_BOTHEDGES)) +/** + * @} + */ + +/** @defgroup HRTIM_ExternalEventFastMode + * @{ + * @brief Constants defining whether or not an external event is programmed in + fast mode + */ +#define HRTIM_EVENTFASTMODE_DISABLE ((uint32_t)0x00000000) /*!< External Event is acting asynchronously on outputs (low latency mode) */ +#define HRTIM_EVENTFASTMODE_ENABLE (HRTIM_EECR1_EE1FAST) /*!< External Event is re-synchronized by the HRTIM logic before acting on outputs */ + +#define IS_HRTIM_EVENTFASTMODE(EVENTFASTMODE)\ + (((EVENTFASTMODE) == HRTIM_EVENTFASTMODE_ENABLE) || \ + ((EVENTFASTMODE) == HRTIM_EVENTFASTMODE_DISABLE)) + +#define IS_HRTIM_FASTMODE_AVAILABLE(EVENT)\ + (((EVENT) == HRTIM_EVENT_1) || \ + ((EVENT) == HRTIM_EVENT_2) || \ + ((EVENT) == HRTIM_EVENT_3) || \ + ((EVENT) == HRTIM_EVENT_4) || \ + ((EVENT) == HRTIM_EVENT_5)) +/** + * @} + */ + +/** @defgroup HRTIM_ExternalEventFilter + * @{ + * @brief Constants defining the frequency used to sample an external event 6 + * input and the length (N) of the digital filter applied + */ +#define HRTIM_EVENTFILTER_NONE ((uint32_t)0x00000000) /*!< Filter disabled */ +#define HRTIM_EVENTFILTER_1 (HRTIM_EECR3_EE6F_0) /*!< fSAMPLING= fHRTIM, N=2 */ +#define HRTIM_EVENTFILTER_2 (HRTIM_EECR3_EE6F_1) /*!< fSAMPLING= fHRTIM, N=4 */ +#define HRTIM_EVENTFILTER_3 (HRTIM_EECR3_EE6F_1 | HRTIM_EECR3_EE6F_0) /*!< fSAMPLING= fHRTIM, N=8 */ +#define HRTIM_EVENTFILTER_4 (HRTIM_EECR3_EE6F_2) /*!< fSAMPLING= fEEVS/2, N=6 */ +#define HRTIM_EVENTFILTER_5 (HRTIM_EECR3_EE6F_2 | HRTIM_EECR3_EE6F_0) /*!< fSAMPLING= fEEVS/2, N=8 */ +#define HRTIM_EVENTFILTER_6 (HRTIM_EECR3_EE6F_2 | HRTIM_EECR3_EE6F_1) /*!< fSAMPLING= fEEVS/4, N=6 */ +#define HRTIM_EVENTFILTER_7 (HRTIM_EECR3_EE6F_2 | HRTIM_EECR3_EE6F_1 | HRTIM_EECR3_EE6F_0) /*!< fSAMPLING= fEEVS/4, N=8 */ +#define HRTIM_EVENTFILTER_8 (HRTIM_EECR3_EE6F_3) /*!< fSAMPLING= fEEVS/8, N=6 */ +#define HRTIM_EVENTFILTER_9 (HRTIM_EECR3_EE6F_3 | HRTIM_EECR3_EE6F_0) /*!< fSAMPLING= fEEVS/8, N=8 */ +#define HRTIM_EVENTFILTER_10 (HRTIM_EECR3_EE6F_3 | HRTIM_EECR3_EE6F_1) /*!< fSAMPLING= fEEVS/16, N=5 */ +#define HRTIM_EVENTFILTER_11 (HRTIM_EECR3_EE6F_3 | HRTIM_EECR3_EE6F_1 | HRTIM_EECR3_EE6F_0) /*!< fSAMPLING= fEEVS/16, N=6 */ +#define HRTIM_EVENTFILTER_12 (HRTIM_EECR3_EE6F_3 | HRTIM_EECR3_EE6F_2) /*!< fSAMPLING= fEEVS/16, N=8 */ +#define HRTIM_EVENTFILTER_13 (HRTIM_EECR3_EE6F_3 | HRTIM_EECR3_EE6F_2 | HRTIM_EECR3_EE6F_0) /*!< fSAMPLING= fEEVS/32, N=5 */ +#define HRTIM_EVENTFILTER_14 (HRTIM_EECR3_EE6F_3 | HRTIM_EECR3_EE6F_2 | HRTIM_EECR3_EE6F_1) /*!< fSAMPLING= fEEVS/32, N=6 */ +#define HRTIM_EVENTFILTER_15 (HRTIM_EECR3_EE6F_3 | HRTIM_EECR3_EE6F_2 | HRTIM_EECR3_EE6F_1 | HRTIM_EECR3_EE6F_0) /*!< fSAMPLING= fEEVS/32, N=8 */ + +#define IS_HRTIM_EVENTFILTER(EVENTFILTER)\ + (((EVENTFILTER) == HRTIM_EVENTFILTER_NONE) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_1) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_2) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_3) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_4) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_5) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_6) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_7) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_8) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_9) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_10) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_11) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_12) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_13) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_14) || \ + ((EVENTFILTER) == HRTIM_EVENTFILTER_15)) +/** + * @} + */ + +/** @defgroup HRTIM_ ExternalEventPrescaler + * @{ + * @brief Constants defining division ratio between the timer clock frequency + * fHRTIM) and the external event signal sampling clock (fEEVS) + * used by the digital filters + */ +#define HRTIM_EVENTPRESCALER_DIV1 ((uint32_t)0x00000000) /*!< fEEVS=fHRTIM */ +#define HRTIM_EVENTPRESCALER_DIV2 (HRTIM_EECR3_EEVSD_0) /*!< fEEVS=fHRTIM / 2 */ +#define HRTIM_EVENTPRESCALER_DIV4 (HRTIM_EECR3_EEVSD_1) /*!< fEEVS=fHRTIM / 4 */ +#define HRTIM_EVENTPRESCALER_DIV8 (HRTIM_EECR3_EEVSD_1 | HRTIM_EECR3_EEVSD_0) /*!< fEEVS=fHRTIM / 8 */ + +#define IS_HRTIM_EVENTPRESCALER(EVENTPRESCALER)\ + (((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV1) || \ + ((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV2) || \ + ((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV4) || \ + ((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV8)) +/** + * @} + */ + +/** @defgroup HRTIM_FaultSources + * @{ + * @brief Constants defining whether a faults is be triggered by any external + * or internal fault source + */ +#define HRTIM_FAULTSOURCE_DIGITALINPUT ((uint32_t)0x00000000) /*!< Fault input is FLT input pin */ +#define HRTIM_FAULTSOURCE_INTERNAL (HRTIM_FLTINR1_FLT1SRC) /*!< Fault input is FLT_Int signal (e.g. internal comparator) */ + + +#define IS_HRTIM_FAULTSOURCE(FAULTSOURCE)\ + (((FAULTSOURCE) == HRTIM_FAULTSOURCE_DIGITALINPUT) || \ + ((FAULTSOURCE) == HRTIM_FAULTSOURCE_INTERNAL)) +/** + * @} + */ + +/** @defgroup HRTIM_FaultPolarity + * @{ + * @brief Constants defining the polarity of a fault event + */ +#define HRTIM_FAULTPOLARITY_LOW ((uint32_t)0x00000000) /*!< Fault input is active low */ +#define HRTIM_FAULTPOLARITY_HIGH (HRTIM_FLTINR1_FLT1P) /*!< Fault input is active high */ + +#define IS_HRTIM_FAULTPOLARITY(HRTIM_FAULTPOLARITY)\ + (((HRTIM_FAULTPOLARITY) == HRTIM_FAULTPOLARITY_LOW) || \ + ((HRTIM_FAULTPOLARITY) == HRTIM_FAULTPOLARITY_HIGH)) +/** + * @} + */ + +/** @defgroup HRTIM_FaultFilter + * @{ + * @ brief Constants defining the frequency used to sample the fault input and + * the length (N) of the digital filter applied + */ +#define HRTIM_FAULTFILTER_NONE ((uint32_t)0x00000000) /*!< Filter disabled */ +#define HRTIM_FAULTFILTER_1 (HRTIM_FLTINR1_FLT1F_0) /*!< fSAMPLING= fHRTIM, N=2 */ +#define HRTIM_FAULTFILTER_2 (HRTIM_FLTINR1_FLT1F_1) /*!< fSAMPLING= fHRTIM, N=4 */ +#define HRTIM_FAULTFILTER_3 (HRTIM_FLTINR1_FLT1F_1 | HRTIM_FLTINR1_FLT1F_0) /*!< fSAMPLING= fHRTIM, N=8 */ +#define HRTIM_FAULTFILTER_4 (HRTIM_FLTINR1_FLT1F_2) /*!< fSAMPLING= fFLTS/2, N=6 */ +#define HRTIM_FAULTFILTER_5 (HRTIM_FLTINR1_FLT1F_2 | HRTIM_FLTINR1_FLT1F_0) /*!< fSAMPLING= fFLTS/2, N=8 */ +#define HRTIM_FAULTFILTER_6 (HRTIM_FLTINR1_FLT1F_2 | HRTIM_FLTINR1_FLT1F_1) /*!< fSAMPLING= fFLTS/4, N=6 */ +#define HRTIM_FAULTFILTER_7 (HRTIM_FLTINR1_FLT1F_2 | HRTIM_FLTINR1_FLT1F_1 | HRTIM_FLTINR1_FLT1F_0) /*!< fSAMPLING= fFLTS/4, N=8 */ +#define HRTIM_FAULTFILTER_8 (HRTIM_FLTINR1_FLT1F_3) /*!< fSAMPLING= fFLTS/8, N=6 */ +#define HRTIM_FAULTFILTER_9 (HRTIM_FLTINR1_FLT1F_3 | HRTIM_FLTINR1_FLT1F_0) /*!< fSAMPLING= fFLTS/8, N=8 */ +#define HRTIM_FAULTFILTER_10 (HRTIM_FLTINR1_FLT1F_3 | HRTIM_FLTINR1_FLT1F_1) /*!< fSAMPLING= fFLTS/16, N=5 */ +#define HRTIM_FAULTFILTER_11 (HRTIM_FLTINR1_FLT1F_3 | HRTIM_FLTINR1_FLT1F_1 | HRTIM_FLTINR1_FLT1F_0) /*!< fSAMPLING= fFLTS/16, N=6 */ +#define HRTIM_FAULTFILTER_12 (HRTIM_FLTINR1_FLT1F_3 | HRTIM_FLTINR1_FLT1F_2) /*!< fSAMPLING= fFLTS/16, N=8 */ +#define HRTIM_FAULTFILTER_13 (HRTIM_FLTINR1_FLT1F_3 | HRTIM_FLTINR1_FLT1F_2 | HRTIM_FLTINR1_FLT1F_0) /*!< fSAMPLING= fFLTS/32, N=5 */ +#define HRTIM_FAULTFILTER_14 (HRTIM_FLTINR1_FLT1F_3 | HRTIM_FLTINR1_FLT1F_2 | HRTIM_FLTINR1_FLT1F_1) /*!< fSAMPLING= fFLTS/32, N=6 */ +#define HRTIM_FAULTFILTER_15 (HRTIM_FLTINR1_FLT1F_3 | HRTIM_FLTINR1_FLT1F_2 | HRTIM_FLTINR1_FLT1F_1 | HRTIM_FLTINR1_FLT1F_0) /*!< fSAMPLING= fFLTS/32, N=8 */ + +#define IS_HRTIM_FAULTFILTER(FAULTFILTER)\ + (((FAULTFILTER) == HRTIM_FAULTFILTER_NONE) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_1) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_2) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_3) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_4) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_5) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_6) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_7) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_8) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_9) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_10) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_11) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_12) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_13) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_14) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_15)) +/** + * @} + */ + +/** @defgroup HRTIM_FaultLock + * @{ + * @brief Constants defining whether or not the fault programming bits are + write protected + */ +#define HRTIM_FAULTLOCK_READWRITE ((uint32_t)0x00000000) /*!< Fault settings bits are read/write */ +#define HRTIM_FAULTLOCK_READONLY (HRTIM_FLTINR1_FLT1LCK) /*!< Fault settings bits are read only */ + +#define IS_HRTIM_FAULTLOCK(FAULTLOCK)\ + (((FAULTLOCK) == HRTIM_FAULTLOCK_READWRITE) || \ + ((FAULTLOCK) == HRTIM_FAULTLOCK_READONLY)) +/** + * @} + */ + +/** @defgroup HRTIM_ExternalFaultPrescaler + * @{ + * @brief Constants defining the division ratio between the timer clock + * frequency (fHRTIM) and the fault signal sampling clock (fFLTS) used + * by the digital filters. + */ +#define HRTIM_FAULTPRESCALER_DIV1 ((uint32_t)0x00000000) /*!< fFLTS=fHRTIM */ +#define HRTIM_FAULTPRESCALER_DIV2 (HRTIM_FLTINR2_FLTSD_0) /*!< fFLTS=fHRTIM / 2 */ +#define HRTIM_FAULTPRESCALER_DIV4 (HRTIM_FLTINR2_FLTSD_1) /*!< fFLTS=fHRTIM / 4 */ +#define HRTIM_FAULTPRESCALER_DIV8 (HRTIM_FLTINR2_FLTSD_1 | HRTIM_FLTINR2_FLTSD_0) /*!< fFLTS=fHRTIM / 8 */ + +#define IS_HRTIM_FAULTPRESCALER(FAULTPRESCALER)\ + (((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV1) || \ + ((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV2) || \ + ((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV4) || \ + ((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV8)) +/** + * @} + */ + +/** @defgroup HRTIM_BurstModeOperatingmode + * @{ + * @brief Constants defining if the burst mode is entered once or if it is + * continuously operating + */ +#define HRTIM_BURSTMODE_SINGLESHOT ((uint32_t)0x00000000) /*!< Burst mode operates in single shot mode */ +#define HRTIM_BURSTMODE_CONTINOUS (HRTIM_BMCR_BMOM) /*!< Burst mode operates in continuous mode */ + +#define IS_HRTIM_BURSTMODE(BURSTMODE)\ + (((BURSTMODE) == HRTIM_BURSTMODE_SINGLESHOT) || \ + ((BURSTMODE) == HRTIM_BURSTMODE_CONTINOUS)) +/** + * @} + */ + +/** @defgroup HRTIM_BurstModeClockSource + * @{ + * @brief Constants defining the clock source for the burst mode counter + */ +#define HRTIM_BURSTMODECLOCKSOURCE_MASTER ((uint32_t)0x00000000) /*!< Master timer counter reset/roll-over is used as clock source for the burst mode counter */ +#define HRTIM_BURSTMODECLOCKSOURCE_TIMER_A (HRTIM_BMCR_BMCLK_0) /*!< Timer A counter reset/roll-over is used as clock source for the burst mode counter */ +#define HRTIM_BURSTMODECLOCKSOURCE_TIMER_B (HRTIM_BMCR_BMCLK_1) /*!< Timer B counter reset/roll-over is used as clock source for the burst mode counter */ +#define HRTIM_BURSTMODECLOCKSOURCE_TIMER_C (HRTIM_BMCR_BMCLK_1 | HRTIM_BMCR_BMCLK_0) /*!< Timer C counter reset/roll-over is used as clock source for the burst mode counter */ +#define HRTIM_BURSTMODECLOCKSOURCE_TIMER_D (HRTIM_BMCR_BMCLK_2) /*!< Timer D counter reset/roll-over is used as clock source for the burst mode counter */ +#define HRTIM_BURSTMODECLOCKSOURCE_TIMER_E (HRTIM_BMCR_BMCLK_2 | HRTIM_BMCR_BMCLK_0) /*!< Timer E counter reset/roll-over is used as clock source for the burst mode counter */ +#define HRTIM_BURSTMODECLOCKSOURCE_ONCHIPEV_1 (HRTIM_BMCR_BMCLK_2 | HRTIM_BMCR_BMCLK_1) /*!< On-chip Event 1 (BMClk[1]), acting as a burst mode counter clock */ +#define HRTIM_BURSTMODECLOCKSOURCE_ONCHIPEV_2 (HRTIM_BMCR_BMCLK_2 | HRTIM_BMCR_BMCLK_1 | HRTIM_BMCR_BMCLK_0) /*!< On-chip Event 2 (BMClk[2]), acting as a burst mode counter clock */ +#define HRTIM_BURSTMODECLOCKSOURCE_ONCHIPEV_3 (HRTIM_BMCR_BMCLK_3) /*!< On-chip Event 3 (BMClk[3]), acting as a burst mode counter clock */ +#define HRTIM_BURSTMODECLOCKSOURCE_ONCHIPEV_4 (HRTIM_BMCR_BMCLK_3 | HRTIM_BMCR_BMCLK_0) /*!< On-chip Event 4 (BMClk[4]), acting as a burst mode counter clock */ +#define HRTIM_BURSTMODECLOCKSOURCE_FHRTIM (HRTIM_BMCR_BMCLK_3 | HRTIM_BMCR_BMCLK_1) /*!< Prescaled fHRTIM clock is used as clock source for the burst mode counter */ + +#define IS_HRTIM_BURSTMODECLOCKSOURCE(BURSTMODECLOCKSOURCE)\ + (((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_MASTER) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_A) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_B) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_C) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_D) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_E) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_ONCHIPEV_1) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_ONCHIPEV_2) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_ONCHIPEV_3) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_ONCHIPEV_4) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_FHRTIM)) +/** + * @} + */ + +/** @defgroup HRTIM_BurstModePrescaler + * @{ + * @brief Constants defining the prescaling ratio of the fHRTIM clock + * for the burst mode controller + */ +#define HRTIM_BURSTMODEPRESCALER_DIV1 ((uint32_t)0x00000000) /*!< fBRST = fHRTIM */ +#define HRTIM_BURSTMODEPRESCALER_DIV2 (HRTIM_BMCR_BMPSC_0) /*!< fBRST = fHRTIM/2 */ +#define HRTIM_BURSTMODEPRESCALER_DIV4 (HRTIM_BMCR_BMPSC_1) /*!< fBRST = fHRTIM/4 */ +#define HRTIM_BURSTMODEPRESCALER_DIV8 (HRTIM_BMCR_BMPSC_1 | HRTIM_BMCR_BMPSC_0) /*!< fBRST = fHRTIM/8 */ +#define HRTIM_BURSTMODEPRESCALER_DIV16 (HRTIM_BMCR_BMPSC_2) /*!< fBRST = fHRTIM/16 */ +#define HRTIM_BURSTMODEPRESCALER_DIV32 (HRTIM_BMCR_BMPSC_2 | HRTIM_BMCR_BMPSC_0) /*!< fBRST = fHRTIM/32 */ +#define HRTIM_BURSTMODEPRESCALER_DIV64 (HRTIM_BMCR_BMPSC_2 | HRTIM_BMCR_BMPSC_1) /*!< fBRST = fHRTIM/64 */ +#define HRTIM_BURSTMODEPRESCALER_DIV128 (HRTIM_BMCR_BMPSC_2 | HRTIM_BMCR_BMPSC_1 | HRTIM_BMCR_BMPSC_0) /*!< fBRST = fHRTIM/128 */ +#define HRTIM_BURSTMODEPRESCALER_DIV256 (HRTIM_BMCR_BMPSC_3) /*!< fBRST = fHRTIM/256 */ +#define HRTIM_BURSTMODEPRESCALER_DIV512 (HRTIM_BMCR_BMPSC_3 | HRTIM_BMCR_BMPSC_0) /*!< fBRST = fHRTIM/512 */ +#define HRTIM_BURSTMODEPRESCALER_DIV1024 (HRTIM_BMCR_BMPSC_3 | HRTIM_BMCR_BMPSC_1) /*!< fBRST = fHRTIM/1024 */ +#define HRTIM_BURSTMODEPRESCALER_DIV2048 (HRTIM_BMCR_BMPSC_3 | HRTIM_BMCR_BMPSC_1 | HRTIM_BMCR_BMPSC_0) /*!< fBRST = fHRTIM/2048*/ +#define HRTIM_BURSTMODEPRESCALER_DIV4096 (HRTIM_BMCR_BMPSC_3 | HRTIM_BMCR_BMPSC_2) /*!< fBRST = fHRTIM/4096 */ +#define HRTIM_BURSTMODEPRESCALER_DIV8192 (HRTIM_BMCR_BMPSC_3 | HRTIM_BMCR_BMPSC_2 | HRTIM_BMCR_BMPSC_0) /*!< fBRST = fHRTIM/8192 */ +#define HRTIM_BURSTMODEPRESCALER_DIV16384 (HRTIM_BMCR_BMPSC_3 | HRTIM_BMCR_BMPSC_2 | HRTIM_BMCR_BMPSC_1) /*!< fBRST = fHRTIM/16384 */ +#define HRTIM_BURSTMODEPRESCALER_DIV32768 (HRTIM_BMCR_BMPSC_3 | HRTIM_BMCR_BMPSC_2 | HRTIM_BMCR_BMPSC_1 | HRTIM_BMCR_BMPSC_0) /*!< fBRST = fHRTIM/32768 */ + +#define IS_HRTIM_HRTIM_BURSTMODEPRESCALER(BURSTMODEPRESCALER)\ + (((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV1) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV2) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV4) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV8) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV16) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV32) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV64) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV128) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV256) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV512) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV1024) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV2048) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV4096) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV8192) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV16384) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV32768)) +/** + * @} + */ + +/** @defgroup HRTIM_BurstModeRegisterPreloadEnable + * @{ + * @brief Constants defining whether or not burst mode registers preload + mechanism is enabled, i.e. a write access into a preloadable register + (HRTIM_BMCMPR, HRTIM_BMPER) is done into the active or the preload register + */ +#define HRIM_BURSTMODEPRELOAD_DISABLED ((uint32_t)0x00000000) /*!< Preload disabled: the write access is directly done into active registers */ +#define HRIM_BURSTMODEPRELOAD_ENABLED (HRTIM_BMCR_BMPREN) /*!< Preload enabled: the write access is done into preload registers */ + +#define IS_HRTIM_BURSTMODEPRELOAD(BURSTMODEPRELOAD)\ + (((BURSTMODEPRELOAD) == HRIM_BURSTMODEPRELOAD_DISABLED) || \ + ((BURSTMODEPRELOAD) == HRIM_BURSTMODEPRELOAD_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_BurstModeTrigger + * @{ + * @brief Constants defining the events that can be used tor trig the burst + * mode operation + */ +#define HRTIM_BURSTMODETRIGGER_SOFTWARE (uint32_t)0x00000000 /*!< Software trigger */ +#define HRTIM_BURSTMODETRIGGER_MASTER_RESET (HRTIM_BMTRGR_MSTRST) /*!< Master reset */ +#define HRTIM_BURSTMODETRIGGER_MASTER_REPETITION (HRTIM_BMTRGR_MSTREP) /*!< Master repetition */ +#define HRTIM_BURSTMODETRIGGER_MASTER_CMP1 (HRTIM_BMTRGR_MSTCMP1) /*!< Master compare 1 */ +#define HRTIM_BURSTMODETRIGGER_MASTER_CMP2 (HRTIM_BMTRGR_MSTCMP2) /*!< Master compare 2 */ +#define HRTIM_BURSTMODETRIGGER_MASTER_CMP3 (HRTIM_BMTRGR_MSTCMP3) /*!< Master compare 3 */ +#define HRTIM_BURSTMODETRIGGER_MASTER_CMP4 (HRTIM_BMTRGR_MSTCMP4) /*!< Master compare 4 */ +#define HRTIM_BURSTMODETRIGGER_TIMERA_RESET (HRTIM_BMTRGR_TARST) /*!< Timer A reset */ +#define HRTIM_BURSTMODETRIGGER_TIMERA_REPETITION (HRTIM_BMTRGR_TAREP) /*!< Timer A repetition */ +#define HRTIM_BURSTMODETRIGGER_TIMERA_CMP1 (HRTIM_BMTRGR_TACMP1) /*!< Timer A compare 1 */ +#define HRTIM_BURSTMODETRIGGER_TIMERA_CMP2 (HRTIM_BMTRGR_TACMP2) /*!< Timer A compare 2 */ +#define HRTIM_BURSTMODETRIGGER_TIMERB_RESET (HRTIM_BMTRGR_TBRST) /*!< Timer B reset */ +#define HRTIM_BURSTMODETRIGGER_TIMERB_REPETITION (HRTIM_BMTRGR_TBREP) /*!< Timer B repetition */ +#define HRTIM_BURSTMODETRIGGER_TIMERB_CMP1 (HRTIM_BMTRGR_TBCMP1) /*!< Timer B compare 1 */ +#define HRTIM_BURSTMODETRIGGER_TIMERB_CMP2 (HRTIM_BMTRGR_TBCMP2) /*!< Timer B compare 2 */ +#define HRTIM_BURSTMODETRIGGER_TIMERC_RESET (HRTIM_BMTRGR_TCRST) /*!< Timer C reset */ +#define HRTIM_BURSTMODETRIGGER_TIMERC_REPETITION (HRTIM_BMTRGR_TCREP) /*!< Timer C repetition */ +#define HRTIM_BURSTMODETRIGGER_TIMERC_CMP1 (HRTIM_BMTRGR_TCCMP1) /*!< Timer C compare 1 */ +#define HRTIM_BURSTMODETRIGGER_TIMERC_CMP2 (HRTIM_BMTRGR_TCCMP2) /*!< Timer C compare 2 */ +#define HRTIM_BURSTMODETRIGGER_TIMERD_RESET (HRTIM_BMTRGR_TDRST) /*!< Timer D reset */ +#define HRTIM_BURSTMODETRIGGER_TIMERD_REPETITION (HRTIM_BMTRGR_TDREP) /*!< Timer D repetition */ +#define HRTIM_BURSTMODETRIGGER_TIMERD_CMP1 (HRTIM_BMTRGR_TDCMP1) /*!< Timer D compare 1 */ +#define HRTIM_BURSTMODETRIGGER_TIMERD_CMP2 (HRTIM_BMTRGR_TDCMP2) /*!< Timer D compare 2 */ +#define HRTIM_BURSTMODETRIGGER_TIMERE_RESET (HRTIM_BMTRGR_TERST) /*!< Timer E reset */ +#define HRTIM_BURSTMODETRIGGER_TIMERE_REPETITION (HRTIM_BMTRGR_TEREP) /*!< Timer E repetition */ +#define HRTIM_BURSTMODETRIGGER_TIMERE_CMP1 (HRTIM_BMTRGR_TECMP1) /*!< Timer E compare 1 */ +#define HRTIM_BURSTMODETRIGGER_TIMERE_CMP2 (HRTIM_BMTRGR_TECMP2) /*!< Timer E compare 2 */ +#define HRTIM_BURSTMODETRIGGER_TIMERA_EVENT7 (HRTIM_BMTRGR_TAEEV7) /*!< Timer A period following External Event 7 */ +#define HRTIM_BURSTMODETRIGGER_TIMERD_EVENT8 (HRTIM_BMTRGR_TDEEV8) /*!< Timer D period following External Event 8 */ +#define HRTIM_BURSTMODETRIGGER_EVENT_7 (HRTIM_BMTRGR_EEV7) /*!< External Event 7 */ +#define HRTIM_BURSTMODETRIGGER_EVENT_8 (HRTIM_BMTRGR_EEV8) /*!< External Event 8 */ +#define HRTIM_BURSTMODETRIGGER_EVENT_ONCHIP (HRTIM_BMTRGR_OCHPEV) /*!< On-chip Event */ + +#define IS_HRTIM_BURSTMODETRIGGER(BURSTMODETRIGGER)\ + (((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_NONE) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP3) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP4) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_EVENT7) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_EVENT8) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_EVENT_7) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_EVENT_8) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_EVENT_ONCHIP)) +/** + * @} + */ + +/** @defgroup HRTIM_ADCTriggerUpdateSource + * @{ + * @brief constants defining the source triggering the update of the + HRTIM_ADCxR register (transfer from preload to active register). + */ +#define HRTIM_ADCTRIGGERUPDATE_MASTER (uint32_t)0x00000000 /*!< Master timer */ +#define HRTIM_ADCTRIGGERUPDATE_TIMER_A (HRTIM_CR1_ADC1USRC_0) /*!< Timer A */ +#define HRTIM_ADCTRIGGERUPDATE_TIMER_B (HRTIM_CR1_ADC1USRC_1) /*!< Timer B */ +#define HRTIM_ADCTRIGGERUPDATE_TIMER_C (HRTIM_CR1_ADC1USRC_1 | HRTIM_CR1_ADC1USRC_0) /*!< Timer C */ +#define HRTIM_ADCTRIGGERUPDATE_TIMER_D (HRTIM_CR1_ADC1USRC_2) /*!< Timer D */ +#define HRTIM_ADCTRIGGERUPDATE_TIMER_E (HRTIM_CR1_ADC1USRC_2 | HRTIM_CR1_ADC1USRC_0) /*!< Timer E */ + +#define IS_HRTIM_ADCTRIGGERUPDATE(ADCTRIGGERUPDATE)\ + (((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_MASTER) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_A) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_B) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_C) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_D) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_E)) +/** + * @} + */ + +/** @defgroup HRTIM_ADCTriggerEvent + * @{ + * @brief constants defining the events triggering ADC conversion. + * HRTIM_ADCTRIGGEREVENT13_*: ADC Triggers 1 and 3 + * HRTIM_ADCTRIGGEREVENT24_*: ADC Triggers 2 and 4 + */ +#define HRTIM_ADCTRIGGEREVENT13_NONE (uint32_t)0x00000000 /*!< No ADC trigger event */ +#define HRTIM_ADCTRIGGEREVENT13_MASTER_CMP1 (HRTIM_ADC1R_AD1MC1) /*!< ADC Trigger on master compare 1 */ +#define HRTIM_ADCTRIGGEREVENT13_MASTER_CMP2 (HRTIM_ADC1R_AD1MC2) /*!< ADC Trigger on master compare 2 */ +#define HRTIM_ADCTRIGGEREVENT13_MASTER_CMP3 (HRTIM_ADC1R_AD1MC3) /*!< ADC Trigger on master compare 3 */ +#define HRTIM_ADCTRIGGEREVENT13_MASTER_CMP4 (HRTIM_ADC1R_AD1MC4) /*!< ADC Trigger on master compare 4 */ +#define HRTIM_ADCTRIGGEREVENT13_MASTER_PERIOD (HRTIM_ADC1R_AD1MPER) /*!< ADC Trigger on master period */ +#define HRTIM_ADCTRIGGEREVENT13_EVENT_1 (HRTIM_ADC1R_AD1EEV1) /*!< ADC Trigger on external event 1 */ +#define HRTIM_ADCTRIGGEREVENT13_EVENT_2 (HRTIM_ADC1R_AD1EEV2) /*!< ADC Trigger on external event 2 */ +#define HRTIM_ADCTRIGGEREVENT13_EVENT_3 (HRTIM_ADC1R_AD1EEV3) /*!< ADC Trigger on external event 3 */ +#define HRTIM_ADCTRIGGEREVENT13_EVENT_4 (HRTIM_ADC1R_AD1EEV4) /*!< ADC Trigger on external event 4 */ +#define HRTIM_ADCTRIGGEREVENT13_EVENT_5 (HRTIM_ADC1R_AD1EEV5) /*!< ADC Trigger on external event 5 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERA_CMP2 (HRTIM_ADC1R_AD1TAC2) /*!< ADC Trigger on Timer A compare 2 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERA_CMP3 (HRTIM_ADC1R_AD1TAC3) /*!< ADC Trigger on Timer A compare 3 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERA_CMP4 (HRTIM_ADC1R_AD1TAC4) /*!< ADC Trigger on Timer A compare 4 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERA_PERIOD (HRTIM_ADC1R_AD1TAPER) /*!< ADC Trigger on Timer A period */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERA_RESET (HRTIM_ADC1R_AD1TARST) /*!< ADC Trigger on Timer A reset */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERB_CMP2 (HRTIM_ADC1R_AD1TBC2) /*!< ADC Trigger on Timer B compare 2 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERB_CMP3 (HRTIM_ADC1R_AD1TBC3) /*!< ADC Trigger on Timer B compare 3 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERB_CMP4 (HRTIM_ADC1R_AD1TBC4) /*!< ADC Trigger on Timer B compare 4 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERB_PERIOD (HRTIM_ADC1R_AD1TBPER) /*!< ADC Trigger on Timer B period */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERB_RESET (HRTIM_ADC1R_AD1TBRST) /*!< ADC Trigger on Timer B reset */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERC_CMP2 (HRTIM_ADC1R_AD1TCC2) /*!< ADC Trigger on Timer C compare 2 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERC_CMP3 (HRTIM_ADC1R_AD1TCC3) /*!< ADC Trigger on Timer C compare 3 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERC_CMP4 (HRTIM_ADC1R_AD1TCC4) /*!< ADC Trigger on Timer C compare 4 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERC_PERIOD (HRTIM_ADC1R_AD1TCPER) /*!< ADC Trigger on Timer C period */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERD_CMP2 (HRTIM_ADC1R_AD1TDC2) /*!< ADC Trigger on Timer D compare 2 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERD_CMP3 (HRTIM_ADC1R_AD1TDC3) /*!< ADC Trigger on Timer D compare 3 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERD_CMP4 (HRTIM_ADC1R_AD1TDC4) /*!< ADC Trigger on Timer D compare 4 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERD_PERIOD (HRTIM_ADC1R_AD1TDPER) /*!< ADC Trigger on Timer D period */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERE_CMP2 (HRTIM_ADC1R_AD1TEC2) /*!< ADC Trigger on Timer E compare 2 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERE_CMP3 (HRTIM_ADC1R_AD1TEC3) /*!< ADC Trigger on Timer E compare 3 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERE_CMP4 (HRTIM_ADC1R_AD1TEC4) /*!< ADC Trigger on Timer E compare 4 */ +#define HRTIM_ADCTRIGGEREVENT13_TIMERE_PERIOD (HRTIM_ADC1R_AD1TEPER) /*!< ADC Trigger on Timer E period */ + +#define HRTIM_ADCTRIGGEREVENT24_NONE (uint32_t)0x00000000 /*!< No ADC trigger event */ +#define HRTIM_ADCTRIGGEREVENT24_MASTER_CMP1 (HRTIM_ADC2R_AD2MC1) /*!< ADC Trigger on master compare 1 */ +#define HRTIM_ADCTRIGGEREVENT24_MASTER_CMP2 (HRTIM_ADC2R_AD2MC2) /*!< ADC Trigger on master compare 2 */ +#define HRTIM_ADCTRIGGEREVENT24_MASTER_CMP3 (HRTIM_ADC2R_AD2MC3) /*!< ADC Trigger on master compare 3 */ +#define HRTIM_ADCTRIGGEREVENT24_MASTER_CMP4 (HRTIM_ADC2R_AD2MC4) /*!< ADC Trigger on master compare 4 */ +#define HRTIM_ADCTRIGGEREVENT24_MASTER_PERIOD (HRTIM_ADC2R_AD2MPER) /*!< ADC Trigger on master period */ +#define HRTIM_ADCTRIGGEREVENT24_EVENT_6 (HRTIM_ADC2R_AD2EEV6) /*!< ADC Trigger on external event 6 */ +#define HRTIM_ADCTRIGGEREVENT24_EVENT_7 (HRTIM_ADC2R_AD2EEV7) /*!< ADC Trigger on external event 7 */ +#define HRTIM_ADCTRIGGEREVENT24_EVENT_8 (HRTIM_ADC2R_AD2EEV8) /*!< ADC Trigger on external event 8 */ +#define HRTIM_ADCTRIGGEREVENT24_EVENT_9 (HRTIM_ADC2R_AD2EEV9) /*!< ADC Trigger on external event 9 */ +#define HRTIM_ADCTRIGGEREVENT24_EVENT_10 (HRTIM_ADC2R_AD2EEV10) /*!< ADC Trigger on external event 10 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERA_CMP2 (HRTIM_ADC2R_AD2TAC2) /*!< ADC Trigger on Timer A compare 2 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERA_CMP3 (HRTIM_ADC2R_AD2TAC3) /*!< ADC Trigger on Timer A compare 3 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERA_CMP4 (HRTIM_ADC2R_AD2TAC4) /*!< ADC Trigger on Timer A compare 4 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERA_PERIOD (HRTIM_ADC2R_AD2TAPER) /*!< ADC Trigger on Timer A period */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERB_CMP2 (HRTIM_ADC2R_AD2TBC2) /*!< ADC Trigger on Timer B compare 2 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERB_CMP3 (HRTIM_ADC2R_AD2TBC3) /*!< ADC Trigger on Timer B compare 3 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERB_CMP4 (HRTIM_ADC2R_AD2TBC4) /*!< ADC Trigger on Timer B compare 4 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERB_PERIOD (HRTIM_ADC2R_AD2TBPER) /*!< ADC Trigger on Timer B period */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERC_CMP2 (HRTIM_ADC2R_AD2TCC2) /*!< ADC Trigger on Timer C compare 2 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERC_CMP3 (HRTIM_ADC2R_AD2TCC3) /*!< ADC Trigger on Timer C compare 3 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERC_CMP4 (HRTIM_ADC2R_AD2TCC4) /*!< ADC Trigger on Timer C compare 4 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERC_PERIOD (HRTIM_ADC2R_AD2TCPER) /*!< ADC Trigger on Timer C period */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERC_RESET (HRTIM_ADC2R_AD2TCRST) /*!< ADC Trigger on Timer C reset */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERD_CMP2 (HRTIM_ADC2R_AD2TDC2) /*!< ADC Trigger on Timer D compare 2 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERD_CMP3 (HRTIM_ADC2R_AD2TDC3) /*!< ADC Trigger on Timer D compare 3 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERD_CMP4 (HRTIM_ADC2R_AD2TDC4) /*!< ADC Trigger on Timer D compare 4 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERD_PERIOD (HRTIM_ADC2R_AD2TDPER) /*!< ADC Trigger on Timer D period */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERD_RESET (HRTIM_ADC2R_AD2TDRST) /*!< ADC Trigger on Timer D reset */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERE_CMP2 (HRTIM_ADC2R_AD2TEC2) /*!< ADC Trigger on Timer E compare 2 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERE_CMP3 (HRTIM_ADC2R_AD2TEC3) /*!< ADC Trigger on Timer E compare 3 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERE_CMP4 (HRTIM_ADC2R_AD2TEC4) /*!< ADC Trigger on Timer E compare 4 */ +#define HRTIM_ADCTRIGGEREVENT24_TIMERE_RESET (HRTIM_ADC2R_AD2TERST) /*!< ADC Trigger on Timer E reset */ + +/** + * @} + */ + +/** @defgroup HRTIM_DLLCalibrationRate + * @{ + * @brief Constants defining the DLL calibration periods (in micro seconds) + */ + +#define HRTIM_CALIBRATIONRATE_7300 (uint32_t)0x00000000 /*!< 1048576 * tHRTIM (7.3 ms) */ +#define HRTIM_CALIBRATIONRATE_910 (HRTIM_DLLCR_CALRTE_0) /*!< 131072 * tHRTIM (910 µs) */ +#define HRTIM_CALIBRATIONRATE_114 (HRTIM_DLLCR_CALRTE_1) /*!< 131072 * tHRTIM (910 µs) */ +#define HRTIM_CALIBRATIONRATE_14 (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0) /*!< 131072 * tHRTIM (910 µs) */ + +#define IS_HRTIM_CALIBRATIONRATE(CALIBRATIONRATE)\ + (((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_7300) || \ + ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_910) || \ + ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_114) || \ + ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_14)) +/** + * @} + */ + +/** @defgroup HRTIM_BurstDMARegistersUpdate + * @{ + * @brief Constants defining the registers that can be written during a burst + * DMA operation + */ +#define HRTIM_BURSTDMA_NONE (uint32_t)0x00000000 /*!< No register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_CR (HRTIM_BDTUPR_TIMCR) /*!< MCR or TIMxCR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_ICR (HRTIM_BDTUPR_TIMICR) /*!< MICR or TIMxICR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_DIER (HRTIM_BDTUPR_TIMDIER) /*!< MDIER or TIMxDIER register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_CNT (HRTIM_BDTUPR_TIMCNT) /*!< MCNTR or CNTxCR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_PER (HRTIM_BDTUPR_TIMPER) /*!< MPER or PERxR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_REP (HRTIM_BDTUPR_TIMREP) /*!< MREPR or REPxR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_CMP1 (HRTIM_BDTUPR_TIMCMP1) /*!< MCMP1R or CMP1xR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_CMP2 (HRTIM_BDTUPR_TIMCMP2) /*!< MCMP2R or CMP2xR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_CMP3 (HRTIM_BDTUPR_TIMCMP3) /*!< MCMP3R or CMP3xR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_CMP4 (HRTIM_BDTUPR_TIMCMP4) /*!< MCMP4R or CMP4xR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_DTR (HRTIM_BDTUPR_TIMDTR) /*!< TDxR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_SET1R (HRTIM_BDTUPR_TIMSET1R) /*!< SET1R register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_RST1R (HRTIM_BDTUPR_TIMRST1R) /*!< RST1R register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_SET2R (HRTIM_BDTUPR_TIMSET2R) /*!< SET2R register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_RST2R (HRTIM_BDTUPR_TIMRST2R) /*!< RST1R register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_EEFR1 (HRTIM_BDTUPR_TIMEEFR1) /*!< EEFxR1 register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_EEFR2 (HRTIM_BDTUPR_TIMEEFR2) /*!< EEFxR2 register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_RSTR (HRTIM_BDTUPR_TIMRSTR) /*!< RSTxR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_CHPR (HRTIM_BDTUPR_TIMCHPR) /*!< CHPxR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_OUTR (HRTIM_BDTUPR_TIMOUTR) /*!< OUTxR register is updated by Burst DMA accesses */ +#define HRTIM_BURSTDMA_FLTR (HRTIM_BDTUPR_TIMFLTR) /*!< FLTxR register is updated by Burst DMA accesses */ + +#define IS_HRTIM_TIMER_BURSTDMA(TIMER, BURSTDMA) \ + ((((TIMER) == HRTIM_TIMERINDEX_MASTER) && (((BURSTDMA) & 0xFFFFFC000) == 0x00000000)) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_A) && (((BURSTDMA) & 0xFFE00000) == 0x00000000)) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_B) && (((BURSTDMA) & 0xFFE00000) == 0x00000000)) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_C) && (((BURSTDMA) & 0xFFE00000) == 0x00000000)) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_D) && (((BURSTDMA) & 0xFFE00000) == 0x00000000)) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_E) && (((BURSTDMA) & 0xFFE00000) == 0x00000000))) +/** + * @} + */ + +/** @defgroup HRTIM_BursttModeControl + * @{ + * @brief Constants used to enable or disable the burst mode controller + */ +#define HRTIM_BURSTMODECTL_DISABLED (uint32_t)0x00000000 /*!< Burst mode disabled */ +#define HRTIM_BURSTMODECTL_ENABLED (HRTIM_BMCR_BME) /*!< Burst mode enabled */ + +#define IS_HRTIM_BURSTMODECTL(BURSTMODECTL)\ + (((BURSTMODECTL) == HRTIM_BURSTMODECTL_DISABLED) || \ + ((BURSTMODECTL) == HRTIM_BURSTMODECTL_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_FaultModeControl + * @{ + * @brief Constants used to enable or disable the Fault mode + */ +#define HRTIM_FAULT_DISABLED (uint32_t)0x00000000 /*!< Fault mode disabled */ +#define HRTIM_FAULT_ENABLED (HRTIM_FLTINR1_FLT1E) /*!< Fault mode enabled */ + +#define IS_HRTIM_FAULTCTL(FAULTCTL)\ + (((FAULTCTL) == HRTIM_FAULT_DISABLED) || \ + ((FAULTCTL) == HRTIM_FAULT_ENABLED)) +/** + * @} + */ + +/** @defgroup HRTIM_SoftwareTimerUpdate + * @{ + * @brief Constants used to force timer registers update + */ +#define HRTIM_TIMERUPDATE_MASTER (HRTIM_CR2_MSWU) /*!< Forces an immediate transfer from the preload to the active register in the master timer */ +#define HRTIM_TIMERUPDATE_A (HRTIM_CR2_TASWU) /*!< Forces an immediate transfer from the preload to the active register in the timer A */ +#define HRTIM_TIMERUPDATE_B (HRTIM_CR2_TBSWU) /*!< Forces an immediate transfer from the preload to the active register in the timer B */ +#define HRTIM_TIMERUPDATE_C (HRTIM_CR2_TCSWU) /*!< Forces an immediate transfer from the preload to the active register in the timer C */ +#define HRTIM_TIMERUPDATE_D (HRTIM_CR2_TDSWU) /*!< Forces an immediate transfer from the preload to the active register in the timer D */ +#define HRTIM_TIMERUPDATE_E (HRTIM_CR2_TESWU) /*!< Forces an immediate transfer from the preload to the active register in the timer E */ + +#define IS_HRTIM_TIMERUPDATE(TIMERUPDATE) (((TIMERUPDATE) & 0xFFFFFFC0) == 0x00000000) +/** + * @} + */ + +/** @defgroup HRTIM_SoftwareTimerReset + * @{ + * @brief Constants used to force timer counter reset + */ +#define HRTIM_TIMERRESET_MASTER (HRTIM_CR2_MRST) /*!< Resets the master timer counter */ +#define HRTIM_TIMERRESET_A (HRTIM_CR2_TARST) /*!< Resets the timer A counter */ +#define HRTIM_TIMERRESET_B (HRTIM_CR2_TBRST) /*!< Resets the timer B counter */ +#define HRTIM_TIMERRESET_C (HRTIM_CR2_TCRST) /*!< Resets the timer C counter */ +#define HRTIM_TIMERRESET_D (HRTIM_CR2_TDRST) /*!< Resets the timer D counter */ +#define HRTIM_TIMERRESET_E (HRTIM_CR2_TERST) /*!< Resets the timer E counter */ + +#define IS_HRTIM_TIMERRESET(TIMERRESET) (((TIMERRESET) & 0xFFFFC0FF) == 0x00000000) +/** + * @} + */ + +/** @defgroup HRTIM_OutputLevel + * @{ + * @brief Constants defining the level of a timer output + */ +#define HRTIM_OUTPUTLEVEL_ACTIVE (uint32_t)0x00000001 /*!< Forces the output to its active state */ +#define HRTIM_OUTPUTLEVEL_INACTIVE (uint32_t)0x00000002 /*!< Forces the output to its inactive state */ + +#define IS_HRTIM_OUTPUTLEVEL(OUTPUTLEVEL)\ + (((OUTPUTLEVEL) == HRTIM_OUTPUTLEVEL_ACTIVE) || \ + ((OUTPUTLEVEL) == HRTIM_OUTPUTLEVEL_INACTIVE)) +/** + * @} + */ + +/** @defgroup HRTIM_OutputState + * @{ + * @brief Constants defining the state of a timer output + */ +#define HRTIM_OUTPUTSTATE_IDLE (uint32_t)0x00000001 /*!< Main operating mode, where the output can take the active or + inactive level as programmed in the crossbar unit */ +#define HRTIM_OUTPUTSTATE_RUN (uint32_t)0x00000002 /*!< Default operating state (e.g. after an HRTIM reset, when the + outputs are disabled by software or during a burst mode operation */ +#define HRTIM_OUTPUTSTATE_FAULT (uint32_t)0x00000003 /*!< Safety state, entered in case of a shut-down request on + FAULTx inputs */ +/** + * @} + */ + +/** @defgroup HRTIM_BurstModeStatus + * @{ + * @brief Constants defining the operating state of the burst mode controller + */ +#define HRTIM_BURSTMODESTATUS_NORMAL (uint32_t) 0x00000000 /*!< Normal operation */ +#define HRTIM_BURSTMODESTATUS_ONGOING (HRTIM_BMCR_BMSTAT) /*!< Burst operation on-going */ +/** + * @} + */ + +/** @defgroup HRTIM_CurrentPushPullStatus + * @{ + * @brief Constants defining on which output the signal is currently applied + * in push-pull mode + */ +#define HRTIM_PUSHPULL_CURRENTSTATUS_OUTPUT1 (uint32_t) 0x00000000 /*!< Signal applied on output 1 and output 2 forced inactive */ +#define HRTIM_PUSHPULL_CURRENTSTATUS_OUTPUT2 (HRTIM_TIMISR_CPPSTAT) /*!< Signal applied on output 2 and output 1 forced inactive */ +/** + * @} + */ + +/** @defgroup HRTIM_IdlePushPullStatus + * @{ + * @brief Constants defining on which output the signal was applied, in + * push-pull mode balanced fault mode or delayed idle mode, when the + * protection was triggered + */ +#define HRTIM_PUSHPULL_IDLESTATUS_OUTPUT1 (uint32_t) 0x00000000 /*!< Protection occurred when the output 1 was active and output 2 forced inactive */ +#define HRTIM_PUSHPULL_IDLESTATUS_OUTPUT2 (HRTIM_TIMISR_IPPSTAT) /*!< Protection occurred when the output 2 was active and output 1 forced inactive */ +/** + * @} + */ + +/** @defgroup HRTIM_CommonInterrupt + * @{ + */ +#define HRTIM_IT_FLT1 HRTIM_ISR_FLT1 /*!< Fault 1 interrupt flag */ +#define HRTIM_IT_FLT2 HRTIM_ISR_FLT2 /*!< Fault 2 interrupt flag */ +#define HRTIM_IT_FLT3 HRTIM_ISR_FLT3 /*!< Fault 3 interrupt flag */ +#define HRTIM_IT_FLT4 HRTIM_ISR_FLT4 /*!< Fault 4 interrupt flag */ +#define HRTIM_IT_FLT5 HRTIM_ISR_FLT5 /*!< Fault 5 interrupt flag */ +#define HRTIM_IT_SYSFLT HRTIM_ISR_SYSFLT /*!< System Fault interrupt flag */ +#define HRTIM_IT_DLLRDY HRTIM_ISR_DLLRDY /*!< DLL ready interrupt flag */ +#define HRTIM_IT_BMPER HRTIM_ISR_BMPER /*!< Burst mode period interrupt flag */ + +#define IS_HRTIM_IT(IT)\ + (((IT) == HRTIM_ISR_FLT1) || \ + ((IT) == HRTIM_ISR_FLT2) || \ + ((IT) == HRTIM_ISR_FLT3) || \ + ((IT) == HRTIM_ISR_FLT4) || \ + ((IT) == HRTIM_ISR_FLT5) || \ + ((IT) == HRTIM_ISR_SYSFLT) || \ + ((IT) == HRTIM_ISR_DLLRDY) || \ + ((IT) == HRTIM_ISR_BMPER)) +/** + * @} + */ + +/** @defgroup HRTIM_MasterInterrupt + * @{ + */ +#define HRTIM_MASTER_IT_MCMP1 HRTIM_MDIER_MCMP1IE /*!< Master compare 1 interrupt flag */ +#define HRTIM_MASTER_IT_MCMP2 HRTIM_MDIER_MCMP2IE /*!< Master compare 2 interrupt flag */ +#define HRTIM_MASTER_IT_MCMP3 HRTIM_MDIER_MCMP3IE /*!< Master compare 3 interrupt flag */ +#define HRTIM_MASTER_IT_MCMP4 HRTIM_MDIER_MCMP4IE /*!< Master compare 4 interrupt flag */ +#define HRTIM_MASTER_IT_MREP HRTIM_MDIER_MREPIE /*!< Master Repetition interrupt flag */ +#define HRTIM_MASTER_IT_SYNC HRTIM_MDIER_SYNCIE /*!< Synchronization input interrupt flag */ +#define HRTIM_MASTER_IT_MUPD HRTIM_MDIER_MUPDIE /*!< Master update interrupt flag */ + +#define IS_HRTIM_MASTER_IT(IT)\ + (((IT) == HRTIM_MDIER_MCMP1IE) || \ + ((IT) == HRTIM_MDIER_MCMP2IE) || \ + ((IT) == HRTIM_MDIER_MCMP3IE) || \ + ((IT) == HRTIM_MDIER_MCMP4IE) || \ + ((IT) == HRTIM_MDIER_MREPIE) || \ + ((IT) == HRTIM_MDIER_SYNCIE) || \ + ((IT) == HRTIM_MDIER_MUPDIE)) + +/** @defgroup HRTIM_MasterFlag + * @{ + */ +#define HRTIM_MASTER_FLAG_MCMP1 HRTIM_MISR_MCMP1 /*!< Master compare 1 interrupt flag */ +#define HRTIM_MASTER_FLAG_MCMP2 HRTIM_MISR_MCMP2 /*!< Master compare 2 interrupt flag */ +#define HRTIM_MASTER_FLAG_MCMP3 HRTIM_MISR_MCMP3 /*!< Master compare 3 interrupt flag */ +#define HRTIM_MASTER_FLAG_MCMP4 HRTIM_MISR_MCMP4 /*!< Master compare 4 interrupt flag */ +#define HRTIM_MASTER_FLAG_MREP HRTIM_MISR_MREP /*!< Master Repetition interrupt flag */ +#define HRTIM_MASTER_FLAG_SYNC HRTIM_MISR_SYNC /*!< Synchronization input interrupt flag */ +#define HRTIM_MASTER_FLAG_MUPD HRTIM_MISR_MUPD /*!< Master update interrupt flag */ + +#define IS_HRTIM_MASTER_FLAG(FLAG)\ + (((FLAG) == HRTIM_MISR_MCMP1) || \ + ((FLAG) == HRTIM_MISR_MCMP2) || \ + ((FLAG) == HRTIM_MISR_MCMP3) || \ + ((FLAG) == HRTIM_MISR_MCMP4) || \ + ((FLAG) == HRTIM_MISR_MREP) || \ + ((FLAG) == HRTIM_MISR_SYNC) || \ + ((FLAG) == HRTIM_MISR_MUPD)) +/** + * @} + */ + +/** @defgroup HRTIM_TimingUnitInterrupt + * @{ + */ +#define HRTIM_TIM_IT_CMP1 HRTIM_TIMDIER_CMP1IE /*!< Timer compare 1 interrupt flag */ +#define HRTIM_TIM_IT_CMP2 HRTIM_TIMDIER_CMP2IE /*!< Timer compare 2 interrupt flag */ +#define HRTIM_TIM_IT_CMP3 HRTIM_TIMDIER_CMP3IE /*!< Timer compare 3 interrupt flag */ +#define HRTIM_TIM_IT_CMP4 HRTIM_TIMDIER_CMP4IE /*!< Timer compare 4 interrupt flag */ +#define HRTIM_TIM_IT_REP HRTIM_TIMDIER_REPIE /*!< Timer repetition interrupt flag */ +#define HRTIM_TIM_IT_UPD HRTIM_TIMDIER_UPDIE /*!< Timer update interrupt flag */ +#define HRTIM_TIM_IT_CPT1 HRTIM_TIMDIER_CPT1IE /*!< Timer capture 1 interrupt flag */ +#define HRTIM_TIM_IT_CPT2 HRTIM_TIMDIER_CPT2IE /*!< Timer capture 2 interrupt flag */ +#define HRTIM_TIM_IT_SET1 HRTIM_TIMDIER_SET1IE /*!< Timer output 1 set interrupt flag */ +#define HRTIM_TIM_IT_RST1 HRTIM_TIMDIER_RST1IE /*!< Timer output 1 reset interrupt flag */ +#define HRTIM_TIM_IT_SET2 HRTIM_TIMDIER_SET2IE /*!< Timer output 2 set interrupt flag */ +#define HRTIM_TIM_IT_RST2 HRTIM_TIMDIER_RST2IE /*!< Timer output 2 reset interrupt flag */ +#define HRTIM_TIM_IT_RST HRTIM_TIMDIER_RSTIE /*!< Timer reset interrupt flag */ +#define HRTIM_TIM_IT_DLYPRT HRTIM_TIMDIER_DLYPRT1IE /*!< Timer delay protection interrupt flag */ + +#define IS_HRTIM_TIM_IT(IT)\ + (((IT) == HRTIM_TIMDIER_CMP1IE) || \ + ((IT) == HRTIM_TIMDIER_CMP2IE) || \ + ((IT) == HRTIM_TIMDIER_CMP3IE) || \ + ((IT) == HRTIM_TIMDIER_CMP4IE) || \ + ((IT) == HRTIM_TIMDIER_REPIE) || \ + ((IT) == HRTIM_TIMDIER_UPDIE) || \ + ((IT) == HRTIM_TIMDIER_CPT1IE) || \ + ((IT) == HRTIM_TIMDIER_CPT2IE) || \ + ((IT) == HRTIM_TIMDIER_SET1IE) || \ + ((IT) == HRTIM_TIMDIER_RST1IE) || \ + ((IT) == HRTIM_TIMDIER_SET2IE) || \ + ((IT) == HRTIM_TIMDIER_RST2IE) || \ + ((IT) == HRTIM_TIMDIER_RSTIE) || \ + ((IT) == HRTIM_TIMDIER_DLYPRTIE)) + +/** + * @} + */ + +/** @defgroup HRTIM_TimingUnitFlag + * @{ + */ +#define HRTIM_TIM_FLAG_CMP1 HRTIM_TIMISR_CMP1 /*!< Timer compare 1 interrupt flag */ +#define HRTIM_TIM_FLAG_CMP2 HRTIM_TIMISR_CMP2 /*!< Timer compare 2 interrupt flag */ +#define HRTIM_TIM_FLAG_CMP3 HRTIM_TIMISR_CMP3 /*!< Timer compare 3 interrupt flag */ +#define HRTIM_TIM_FLAG_CMP4 HRTIM_TIMISR_CMP4 /*!< Timer compare 4 interrupt flag */ +#define HRTIM_TIM_FLAG_REP HRTIM_TIMISR_REP /*!< Timer repetition interrupt flag */ +#define HRTIM_TIM_FLAG_UPD HRTIM_TIMISR_UPD /*!< Timer update interrupt flag */ +#define HRTIM_TIM_FLAG_CPT1 HRTIM_TIMISR_CPT1 /*!< Timer capture 1 interrupt flag */ +#define HRTIM_TIM_FLAG_CPT2 HRTIM_TIMISR_CPT2 /*!< Timer capture 2 interrupt flag */ +#define HRTIM_TIM_FLAG_SET1 HRTIM_TIMISR_SET1 /*!< Timer output 1 set interrupt flag */ +#define HRTIM_TIM_FLAG_RST1 HRTIM_TIMISR_RST1 /*!< Timer output 1 reset interrupt flag */ +#define HRTIM_TIM_FLAG_SET2 HRTIM_TIMISR_SET2 /*!< Timer output 2 set interrupt flag */ +#define HRTIM_TIM_FLAG_RST2 HRTIM_TIMISR_RST2 /*!< Timer output 2 reset interrupt flag */ +#define HRTIM_TIM_FLAG_RST HRTIM_TIMDIER_RSTIE /*!< Timer reset interrupt flag */ +#define HRTIM_TIM_FLAG_DLYPRT1 HRTIM_TIMISR_DLYPRT /*!< Timer delay protection interrupt flag */ + +#define IS_HRTIM_TIM_FLAG(FLAG)\ + (((FLAG) == HRTIM_TIM_FLAG_CMP1) || \ + ((FLAG) == HRTIM_TIM_FLAG_CMP2) || \ + ((FLAG) == HRTIM_TIM_FLAG_CMP3) || \ + ((FLAG) == HRTIM_TIM_FLAG_CMP4) || \ + ((FLAG) == HRTIM_TIM_FLAG_REP) || \ + ((FLAG) == HRTIM_TIM_FLAG_UPD) || \ + ((FLAG) == HRTIM_TIM_FLAG_CPT1) || \ + ((FLAG) == HRTIM_TIM_FLAG_CPT2) || \ + ((FLAG) == HRTIM_TIM_FLAG_SET1) || \ + ((FLAG) == HRTIM_TIM_FLAG_RST1) || \ + ((FLAG) == HRTIM_TIM_FLAG_SET2) || \ + ((FLAG) == HRTIM_TIM_FLAG_RST2) || \ + ((FLAG) == HRTIM_TIM_FLAG_RST) || \ + ((FLAG) == HRTIM_TIM_FLAG_DLYPRT1)) + +/** + * @} + */ + +/** @defgroup HRTIM_MasterDMARequest + * @{ + */ +#define HRTIM_MASTER_DMA_MCMP1 HRTIM_MDIER_MCMP1DE /*!< Master compare 1 DMA request flag */ +#define HRTIM_MASTER_DMA_MCMP2 HRTIM_MDIER_MCMP2DE /*!< Master compare 2 DMA request flag */ +#define HRTIM_MASTER_DMA_MCMP3 HRTIM_MDIER_MCMP3DE /*!< Master compare 3 DMA request flag */ +#define HRTIM_MASTER_DMA_MCMP4 HRTIM_MDIER_MCMP4DE /*!< Master compare 4 DMA request flag */ +#define HRTIM_MASTER_DMA_MREP HRTIM_MDIER_MREPDE /*!< Master Repetition DMA request flag */ +#define HRTIM_MASTER_DMA_SYNC HRTIM_MDIER_SYNCDE /*!< Synchronization input DMA request flag */ +#define HRTIM_MASTER_DMA_MUPD HRTIM_MDIER_MUPDDE /*!< Master update DMA request flag */ + +#define IS_HRTIM_MASTER_DMA(DMA)\ + (((DMA) == HRTIM_MDIER_MCMP1DE) || \ + ((DMA) == HRTIM_MDIER_MCMP2DE) || \ + ((DMA) == HRTIM_MDIER_MCMP3DE) || \ + ((DMA) == HRTIM_MDIER_MCMP4DE) || \ + ((DMA) == HRTIM_MDIER_MREPDE) || \ + ((DMA) == HRTIM_MDIER_SYNCDE) || \ + ((DMA) == HRTIM_MDIER_MUPDDE)) +/** + * @} + */ + +/** @defgroup HRTIM_TimingUnitDMARequest + * @{ + */ +#define HRTIM_TIM_DMA_CMP1 HRTIM_TIMDIER_CMP1DE /*!< Timer compare 1 interrupt flag */ +#define HRTIM_TIM_DMA_CMP2 HRTIM_TIMDIER_CMP2DE /*!< Timer compare 2 interrupt flag */ +#define HRTIM_TIM_DMA_CMP3 HRTIM_TIMDIER_CMP3DE /*!< Timer compare 3 interrupt flag */ +#define HRTIM_TIM_DMA_CMP4 HRTIM_TIMDIER_CMP4DE /*!< Timer compare 4 interrupt flag */ +#define HRTIM_TIM_DMA_REP HRTIM_TIMDIER_REPDE /*!< Timer repetition interrupt flag */ +#define HRTIM_TIM_DMA_UPD HRTIM_TIMDIER_UPDDE /*!< Timer update interrupt flag */ +#define HRTIM_TIM_DMA_CPT1 HRTIM_TIMDIER_CPT1DE /*!< Timer capture 1 interrupt flag */ +#define HRTIM_TIM_DMA_CPT2 HRTIM_TIMDIER_CPT2DE /*!< Timer capture 2 interrupt flag */ +#define HRTIM_TIM_DMA_SET1 HRTIM_TIMDIER_SET1DE /*!< Timer output 1 set interrupt flag */ +#define HRTIM_TIM_DMA_RST1 HRTIM_TIMDIER_RST1DE /*!< Timer output 1 reset interrupt flag */ +#define HRTIM_TIM_DMA_SET2 HRTIM_TIMDIER_SET2DE /*!< Timer output 2 set interrupt flag */ +#define HRTIM_TIM_DMA_RST2 HRTIM_TIMDIER_RST2DE /*!< Timer output 2 reset interrupt flag */ +#define HRTIM_TIM_DMA_RST HRTIM_TIMDIER_RSTDE /*!< Timer reset interrupt flag */ +#define HRTIM_TIM_DMA_DLYPRT HRTIM_TIMDIER_DLYPRTDE /*!< Timer delay protection interrupt flag */ + +#define IS_HRTIM_TIM_DMA(DMA)\ + (((DMA) == HRTIM_TIMDIER_CMP1DE) || \ + ((DMA) == HRTIM_TIMDIER_CMP2DE) || \ + ((DMA) == HRTIM_TIMDIER_CMP3DE) || \ + ((DMA) == HRTIM_TIMDIER_CMP4DE) || \ + ((DMA) == HRTIM_TIMDIER_REPDE) || \ + ((DMA) == HRTIM_TIMDIER_UPDDE) || \ + ((DMA) == HRTIM_TIMDIER_CPT1DE) || \ + ((DMA) == HRTIM_TIMDIER_CPT2DE) || \ + ((DMA) == HRTIM_TIMDIER_SET1DE) || \ + ((DMA) == HRTIM_TIMDIER_RST1DE) || \ + ((DMA) == HRTIM_TIMDIER_SET2DE) || \ + ((DMA) == HRTIM_TIMDIER_RST2DE) || \ + ((DMA) == HRTIM_TIMDIER_RSTDE) || \ + ((DMA) == HRTIM_TIMDIER_DLYPRTDE)) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup HRTIM_Instancedefinition + * @{ + */ +#define IS_HRTIM_INSTANCE(INSTANCE) (INSTANCE) == HRTIM1) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + + +/** @brief Enables or disables the timer counter(s) + * @param __HANDLE__: specifies the HRTIM Handle. + * @param __TIMERS__: timersto enable/disable + * This parameter can be any combinations of the following values: + * @arg HRTIM_TIMERID_MASTER: Master timer identifier + * @arg HRTIM_TIMERID_TIMER_A: Timer A identifier + * @arg HRTIM_TIMERID_TIMER_B: Timer B identifier + * @arg HRTIM_TIMERID_TIMER_C: Timer C identifier + * @arg HRTIM_TIMERID_TIMER_D: Timer D identifier + * @arg HRTIM_TIMERID_TIMER_E: Timer E identifier + * @retval None + */ +#define __HRTIM_ENABLE(__HANDLE__, __TIMERS__) ((__HANDLE__)->HRTIM_MASTER.MCR |= (__TIMERS__)) + +/* The counter of a timing unit is disabled only if all the timer outputs */ +/* are disabled and no capture is configured */ +#define HRTIM_TAOEN_MASK (HRTIM_OENR_TA2OEN | HRTIM_OENR_TA1OEN) +#define HRTIM_TBOEN_MASK (HRTIM_OENR_TB2OEN | HRTIM_OENR_TB1OEN) +#define HRTIM_TCOEN_MASK (HRTIM_OENR_TC2OEN | HRTIM_OENR_TC1OEN) +#define HRTIM_TDOEN_MASK (HRTIM_OENR_TD2OEN | HRTIM_OENR_TD1OEN) +#define HRTIM_TEOEN_MASK (HRTIM_OENR_TE2OEN | HRTIM_OENR_TE1OEN) +#define __HRTIM_DISABLE(__HANDLE__, __TIMERS__)\ + do {\ + if (((__TIMERS__) & HRTIM_TIMERID_MASTER) == HRTIM_TIMERID_MASTER)\ + {\ + ((__HANDLE__)->HRTIM_MASTER.MCR &= ~HRTIM_TIMERID_MASTER);\ + }\ + if (((__TIMERS__) & HRTIM_TIMERID_TIMER_A) == HRTIM_TIMERID_TIMER_A)\ + {\ + if (((__HANDLE__)->HRTIM_COMMON.OENR & HRTIM_TAOEN_MASK) == RESET)\ + {\ + ((__HANDLE__)->HRTIM_MASTER.MCR &= ~HRTIM_TIMERID_TIMER_A);\ + }\ + }\ + if (((__TIMERS__) & HRTIM_TIMERID_TIMER_B) == HRTIM_TIMERID_TIMER_B)\ + {\ + if (((__HANDLE__)->HRTIM_COMMON.OENR & HRTIM_TBOEN_MASK) == RESET)\ + {\ + ((__HANDLE__)->HRTIM_MASTER.MCR &= ~HRTIM_TIMERID_TIMER_B);\ + }\ + }\ + if (((__TIMERS__) & HRTIM_TIMERID_TIMER_C) == HRTIM_TIMERID_TIMER_C)\ + {\ + if (((__HANDLE__)->HRTIM_COMMON.OENR & HRTIM_TCOEN_MASK) == RESET)\ + {\ + ((__HANDLE__)->HRTIM_MASTER.MCR &= ~HRTIM_TIMERID_TIMER_C);\ + }\ + }\ + if (((__TIMERS__) & HRTIM_TIMERID_TIMER_D) == HRTIM_TIMERID_TIMER_D)\ + {\ + if (((__HANDLE__)->HRTIM_COMMON.OENR & HRTIM_TDOEN_MASK) == RESET)\ + {\ + ((__HANDLE__)->HRTIM_MASTER.MCR &= ~HRTIM_TIMERID_TIMER_D);\ + }\ + }\ + if (((__TIMERS__) & HRTIM_TIMERID_TIMER_E) == HRTIM_TIMERID_TIMER_E)\ + {\ + if (((__HANDLE__)->HRTIM_COMMON.OENR & HRTIM_TEOEN_MASK) == RESET)\ + {\ + ((__HANDLE__)->HRTIM_MASTER.MCR &= ~HRTIM_TIMERID_TIMER_E);\ + }\ + }\ + } while(0) + +/* Exported functions --------------------------------------------------------*/ + +/* Simple time base related functions *****************************************/ +void HRTIM_SimpleBase_Init(HRTIM_TypeDef* HRTIMx, uint32_t TimerIdx, HRTIM_BaseInitTypeDef* HRTIM_BaseInitStruct); + +void HRTIM_DeInit(HRTIM_TypeDef* HRTIMx); + +void HRTIM_SimpleBaseStart(HRTIM_TypeDef *hrtim, uint32_t TimerIdx); +void HRTIM_SimpleBaseStop(HRTIM_TypeDef *hrtim, uint32_t TimerIdx); + +/* Simple output compare related functions ************************************/ +void HRTIM_SimpleOC_Init(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, HRTIM_BaseInitTypeDef* HRTIM_BaseInitStruct); + +void HRTIM_SimpleOCChannelConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t OCChannel, + HRTIM_BasicOCChannelCfgTypeDef* pBasicOCChannelCfg); + +void HRTIM_SimpleOCStart(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t OCChannel); +void HRTIM_SimpleOCStop(HRTIM_TypeDef * HRTIMx, + uint32_t TimerIdx, + uint32_t OCChannel); +/* Simple PWM output related functions ****************************************/ +void HRTIM_SimplePWM_Init(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, HRTIM_BaseInitTypeDef* HRTIM_BaseInitStruct); + +void HRTIM_SimplePWMChannelConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t PWMChannel, + HRTIM_BasicPWMChannelCfgTypeDef* pBasicPWMChannelCfg); + +void HRTIM_SimplePWMStart(HRTIM_TypeDef * HRTIMx, + uint32_t TimerIdx, + uint32_t PWMChannel); +void HRTIM_SimplePWMStop(HRTIM_TypeDef * HRTIMx, + uint32_t TimerIdx, + uint32_t PWMChannel); +/* Simple capture related functions *******************************************/ +void HRTIM_SimpleCapture_Init(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, HRTIM_BaseInitTypeDef* HRTIM_BaseInitStruct); + +void HRTIM_SimpleCaptureChannelConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t CaptureChannel, + HRTIM_BasicCaptureChannelCfgTypeDef* pBasicCaptureChannelCfg); + +void HRTIM_SimpleCaptureStart(HRTIM_TypeDef * HRTIMx, + uint32_t TimerIdx, + uint32_t CaptureChannel); +void HRTIM_SimpleCaptureStop(HRTIM_TypeDef * HRTIMx, + uint32_t TimerIdx, + uint32_t CaptureChannel); +/* SImple one pulse related functions *****************************************/ +void HRTIM_SimpleOnePulse_Init(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, HRTIM_BaseInitTypeDef* HRTIM_BaseInitStruct); + +void HRTIM_SimpleOnePulseChannelConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t OnePulseChannel, + HRTIM_BasicOnePulseChannelCfgTypeDef* pBasicOnePulseChannelCfg); + +void HRTIM_SimpleOnePulseStart(HRTIM_TypeDef * HRTIMx, + uint32_t TimerIdx, + uint32_t OnePulseChannel); +void HRTIM_SimpleOnePulseStop(HRTIM_TypeDef * HRTIM_, + uint32_t TimerIdx, + uint32_t OnePulseChannel); +/* Waveform related functions *************************************************/ +void HRTIM_Waveform_Init(HRTIM_TypeDef * HRTIMx, + uint32_t TimerIdx, + HRTIM_BaseInitTypeDef* HRTIM_BaseInitStruct, + HRTIM_TimerInitTypeDef* HRTIM_TimerInitStruct); + +void HRTIM_WaveformTimerConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + HRTIM_TimerCfgTypeDef * HRTIM_TimerCfgStruct); + +void HRTIM_WaveformCompareConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t CompareUnit, + HRTIM_CompareCfgTypeDef* pCompareCfg); + +void HRTIM_MasterSetCompare(HRTIM_TypeDef * HRTIMx, + uint32_t CompareUnit, + uint32_t Compare); +void HRTIM_WaveformCaptureConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t CaptureUnit, + HRTIM_CaptureCfgTypeDef* pCaptureCfg); + +void HRTIM_WaveformOuputConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t Output, + HRTIM_OutputCfgTypeDef * pOutputCfg); + +void HRTIM_TimerEventFilteringConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t Event, + HRTIM_TimerEventFilteringCfgTypeDef * pTimerEventFilteringCfg); + +void HRTIM_DeadTimeConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + HRTIM_DeadTimeCfgTypeDef* pDeadTimeCfg); + +void HRTIM_ChopperModeConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + HRTIM_ChopperModeCfgTypeDef* pChopperModeCfg); + +void HRTIM_BurstDMAConfig(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t RegistersToUpdate); + +void HRTIM_SynchronizationConfig(HRTIM_TypeDef *HRTIMx, + HRTIM_SynchroCfgTypeDef * pSynchroCfg); + +void HRTIM_BurstModeConfig(HRTIM_TypeDef *hrtim, + HRTIM_BurstModeCfgTypeDef* pBurstModeCfg); + +void HRTIM_EventConfig(HRTIM_TypeDef *hrtim, + uint32_t Event, + HRTIM_EventCfgTypeDef* pEventCfg); + +void HRTIM_EventPrescalerConfig(HRTIM_TypeDef *hrtim, + uint32_t Prescaler); + +void HRTIM_FaultConfig(HRTIM_TypeDef *hrtim, + HRTIM_FaultCfgTypeDef* pFaultCfg, + uint32_t Fault); + +void HRTIM_FaultPrescalerConfig(HRTIM_TypeDef *hrtim, + uint32_t Prescaler); +void HRTIM_FaultModeCtl(HRTIM_TypeDef * HRTIMx, uint32_t Fault, uint32_t Enable); + +void HRTIM_ADCTriggerConfig(HRTIM_TypeDef *hrtim, + uint32_t ADCTrigger, + HRTIM_ADCTriggerCfgTypeDef* pADCTriggerCfg); + +void HRTIM_WaveformCounterStart(HRTIM_TypeDef *hrtim, + uint32_t TimersToStart); + +void HRTIM_WaveformCounterStop(HRTIM_TypeDef *hrtim, + uint32_t TimersToStop); + +void HRTIM_WaveformOutputStart(HRTIM_TypeDef *hrtim, + uint32_t OuputsToStart); +void HRTIM_WaveformOutputStop(HRTIM_TypeDef * HRTIM_, + uint32_t OuputsToStop); + +void HRTIM_DLLCalibrationStart(HRTIM_TypeDef *hrtim, + uint32_t CalibrationRate); + +/* Interrupt/flags and DMA management */ +void HRTIM_ITConfig(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_TIM_IT, FunctionalState NewState); +void HRTIM_ITCommonConfig(HRTIM_TypeDef * HRTIMx, uint32_t HRTIM_CommonIT, FunctionalState NewState); + +void HRTIM_ClearFlag(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG); +void HRTIM_ClearCommonFlag(HRTIM_TypeDef * HRTIMx, uint32_t HRTIM_CommonFLAG); + +void HRTIM_ClearITPendingBit(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_IT); +void HRTIM_ClearCommonITPendingBit(HRTIM_TypeDef * HRTIMx, uint32_t HRTIM_CommonIT); + +FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG); +FlagStatus HRTIM_GetCommonFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t HRTIM_CommonFLAG); + +ITStatus HRTIM_GetITStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_IT); +ITStatus HRTIM_GetCommonITStatus(HRTIM_TypeDef * HRTIMx, uint32_t HRTIM_CommonIT); + + +void HRTIM_DMACmd(HRTIM_TypeDef* HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_DMA, FunctionalState NewState); + +void HRTIM_BurstModeCtl(HRTIM_TypeDef *hrtim, + uint32_t Enable); + +void HRTIM_SoftwareCapture(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t CaptureUnit); + +void HRTIM_SoftwareUpdate(HRTIM_TypeDef *hrtim, + uint32_t TimersToUpdate); + +void HRTIM_SoftwareReset(HRTIM_TypeDef *hrtim, + uint32_t TimersToReset); + + +uint32_t HRTIM_GetCapturedValue(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t CaptureUnit); + +void HRTIM_WaveformOutputConfig(HRTIM_TypeDef * HRTIM_, + uint32_t TimerIdx, + uint32_t Output, + HRTIM_OutputCfgTypeDef * pOutputCfg); + +void HRTIM_WaveformSetOutputLevel(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t Output, + uint32_t OutputLevel); + +uint32_t HRTIM_WaveformGetOutputLevel(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t Output); + +uint32_t HRTIM_WaveformGetOutputState(HRTIM_TypeDef * hhrtim, + uint32_t TimerIdx, + uint32_t Output); + +uint32_t HRTIM_GetDelayedProtectionStatus(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx, + uint32_t Output); + +uint32_t HRTIM_GetBurstStatus(HRTIM_TypeDef *hrtim); + +uint32_t HRTIM_GetCurrentPushPullStatus(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx); + +uint32_t HRTIM_GetIdlePushPullStatus(HRTIM_TypeDef *hrtim, + uint32_t TimerIdx); +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_HRTIM_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_i2c.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,487 @@ +/** + ****************************************************************************** + * @file stm32f30x_i2c.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the I2C firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_I2C_H +#define __STM32F30x_I2C_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup I2C + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief I2C Init structure definition + */ + +typedef struct +{ + uint32_t I2C_Timing; /*!< Specifies the I2C_TIMINGR_register value. + This parameter calculated by referring to I2C initialization + section in Reference manual*/ + + uint32_t I2C_AnalogFilter; /*!< Enables or disables analog noise filter. + This parameter can be a value of @ref I2C_Analog_Filter */ + + uint32_t I2C_DigitalFilter; /*!< Configures the digital noise filter. + This parameter can be a number between 0x00 and 0x0F */ + + uint32_t I2C_Mode; /*!< Specifies the I2C mode. + This parameter can be a value of @ref I2C_mode */ + + uint32_t I2C_OwnAddress1; /*!< Specifies the device own address 1. + This parameter can be a 7-bit or 10-bit address */ + + uint32_t I2C_Ack; /*!< Enables or disables the acknowledgement. + This parameter can be a value of @ref I2C_acknowledgement */ + + uint32_t I2C_AcknowledgedAddress; /*!< Specifies if 7-bit or 10-bit address is acknowledged. + This parameter can be a value of @ref I2C_acknowledged_address */ +}I2C_InitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + + +/** @defgroup I2C_Exported_Constants + * @{ + */ + +#define IS_I2C_ALL_PERIPH(PERIPH) (((PERIPH) == I2C1) || \ + ((PERIPH) == I2C2)) + +/** @defgroup I2C_Analog_Filter + * @{ + */ + +#define I2C_AnalogFilter_Enable ((uint32_t)0x00000000) +#define I2C_AnalogFilter_Disable I2C_CR1_ANFOFF + +#define IS_I2C_ANALOG_FILTER(FILTER) (((FILTER) == I2C_AnalogFilter_Enable) || \ + ((FILTER) == I2C_AnalogFilter_Disable)) +/** + * @} + */ + +/** @defgroup I2C_Digital_Filter + * @{ + */ + +#define IS_I2C_DIGITAL_FILTER(FILTER) ((FILTER) <= 0x0000000F) +/** + * @} + */ + +/** @defgroup I2C_mode + * @{ + */ + +#define I2C_Mode_I2C ((uint32_t)0x00000000) +#define I2C_Mode_SMBusDevice I2C_CR1_SMBDEN +#define I2C_Mode_SMBusHost I2C_CR1_SMBHEN + +#define IS_I2C_MODE(MODE) (((MODE) == I2C_Mode_I2C) || \ + ((MODE) == I2C_Mode_SMBusDevice) || \ + ((MODE) == I2C_Mode_SMBusHost)) +/** + * @} + */ + +/** @defgroup I2C_acknowledgement + * @{ + */ + +#define I2C_Ack_Enable ((uint32_t)0x00000000) +#define I2C_Ack_Disable I2C_CR2_NACK + +#define IS_I2C_ACK(ACK) (((ACK) == I2C_Ack_Enable) || \ + ((ACK) == I2C_Ack_Disable)) +/** + * @} + */ + +/** @defgroup I2C_acknowledged_address + * @{ + */ + +#define I2C_AcknowledgedAddress_7bit ((uint32_t)0x00000000) +#define I2C_AcknowledgedAddress_10bit I2C_OAR1_OA1MODE + +#define IS_I2C_ACKNOWLEDGE_ADDRESS(ADDRESS) (((ADDRESS) == I2C_AcknowledgedAddress_7bit) || \ + ((ADDRESS) == I2C_AcknowledgedAddress_10bit)) +/** + * @} + */ + +/** @defgroup I2C_own_address1 + * @{ + */ + +#define IS_I2C_OWN_ADDRESS1(ADDRESS1) ((ADDRESS1) <= (uint32_t)0x000003FF) +/** + * @} + */ + +/** @defgroup I2C_transfer_direction + * @{ + */ + +#define I2C_Direction_Transmitter ((uint16_t)0x0000) +#define I2C_Direction_Receiver ((uint16_t)0x0400) + +#define IS_I2C_DIRECTION(DIRECTION) (((DIRECTION) == I2C_Direction_Transmitter) || \ + ((DIRECTION) == I2C_Direction_Receiver)) +/** + * @} + */ + +/** @defgroup I2C_DMA_transfer_requests + * @{ + */ + +#define I2C_DMAReq_Tx I2C_CR1_TXDMAEN +#define I2C_DMAReq_Rx I2C_CR1_RXDMAEN + +#define IS_I2C_DMA_REQ(REQ) ((((REQ) & (uint32_t)0xFFFF3FFF) == 0x00) && ((REQ) != 0x00)) +/** + * @} + */ + +/** @defgroup I2C_slave_address + * @{ + */ + +#define IS_I2C_SLAVE_ADDRESS(ADDRESS) ((ADDRESS) <= (uint16_t)0x03FF) +/** + * @} + */ + + +/** @defgroup I2C_own_address2 + * @{ + */ + +#define IS_I2C_OWN_ADDRESS2(ADDRESS2) ((ADDRESS2) <= (uint16_t)0x00FF) + +/** + * @} + */ + +/** @defgroup I2C_own_address2_mask + * @{ + */ + +#define I2C_OA2_NoMask ((uint8_t)0x00) +#define I2C_OA2_Mask01 ((uint8_t)0x01) +#define I2C_OA2_Mask02 ((uint8_t)0x02) +#define I2C_OA2_Mask03 ((uint8_t)0x03) +#define I2C_OA2_Mask04 ((uint8_t)0x04) +#define I2C_OA2_Mask05 ((uint8_t)0x05) +#define I2C_OA2_Mask06 ((uint8_t)0x06) +#define I2C_OA2_Mask07 ((uint8_t)0x07) + +#define IS_I2C_OWN_ADDRESS2_MASK(MASK) (((MASK) == I2C_OA2_NoMask) || \ + ((MASK) == I2C_OA2_Mask01) || \ + ((MASK) == I2C_OA2_Mask02) || \ + ((MASK) == I2C_OA2_Mask03) || \ + ((MASK) == I2C_OA2_Mask04) || \ + ((MASK) == I2C_OA2_Mask05) || \ + ((MASK) == I2C_OA2_Mask06) || \ + ((MASK) == I2C_OA2_Mask07)) + +/** + * @} + */ + +/** @defgroup I2C_timeout + * @{ + */ + +#define IS_I2C_TIMEOUT(TIMEOUT) ((TIMEOUT) <= (uint16_t)0x0FFF) + +/** + * @} + */ + +/** @defgroup I2C_registers + * @{ + */ + +#define I2C_Register_CR1 ((uint8_t)0x00) +#define I2C_Register_CR2 ((uint8_t)0x04) +#define I2C_Register_OAR1 ((uint8_t)0x08) +#define I2C_Register_OAR2 ((uint8_t)0x0C) +#define I2C_Register_TIMINGR ((uint8_t)0x10) +#define I2C_Register_TIMEOUTR ((uint8_t)0x14) +#define I2C_Register_ISR ((uint8_t)0x18) +#define I2C_Register_ICR ((uint8_t)0x1C) +#define I2C_Register_PECR ((uint8_t)0x20) +#define I2C_Register_RXDR ((uint8_t)0x24) +#define I2C_Register_TXDR ((uint8_t)0x28) + +#define IS_I2C_REGISTER(REGISTER) (((REGISTER) == I2C_Register_CR1) || \ + ((REGISTER) == I2C_Register_CR2) || \ + ((REGISTER) == I2C_Register_OAR1) || \ + ((REGISTER) == I2C_Register_OAR2) || \ + ((REGISTER) == I2C_Register_TIMINGR) || \ + ((REGISTER) == I2C_Register_TIMEOUTR) || \ + ((REGISTER) == I2C_Register_ISR) || \ + ((REGISTER) == I2C_Register_ICR) || \ + ((REGISTER) == I2C_Register_PECR) || \ + ((REGISTER) == I2C_Register_RXDR) || \ + ((REGISTER) == I2C_Register_TXDR)) +/** + * @} + */ + +/** @defgroup I2C_interrupts_definition + * @{ + */ + +#define I2C_IT_ERRI I2C_CR1_ERRIE +#define I2C_IT_TCI I2C_CR1_TCIE +#define I2C_IT_STOPI I2C_CR1_STOPIE +#define I2C_IT_NACKI I2C_CR1_NACKIE +#define I2C_IT_ADDRI I2C_CR1_ADDRIE +#define I2C_IT_RXI I2C_CR1_RXIE +#define I2C_IT_TXI I2C_CR1_TXIE + +#define IS_I2C_CONFIG_IT(IT) ((((IT) & (uint32_t)0xFFFFFF01) == 0x00) && ((IT) != 0x00)) + +/** + * @} + */ + +/** @defgroup I2C_flags_definition + * @{ + */ + +#define I2C_FLAG_TXE I2C_ISR_TXE +#define I2C_FLAG_TXIS I2C_ISR_TXIS +#define I2C_FLAG_RXNE I2C_ISR_RXNE +#define I2C_FLAG_ADDR I2C_ISR_ADDR +#define I2C_FLAG_NACKF I2C_ISR_NACKF +#define I2C_FLAG_STOPF I2C_ISR_STOPF +#define I2C_FLAG_TC I2C_ISR_TC +#define I2C_FLAG_TCR I2C_ISR_TCR +#define I2C_FLAG_BERR I2C_ISR_BERR +#define I2C_FLAG_ARLO I2C_ISR_ARLO +#define I2C_FLAG_OVR I2C_ISR_OVR +#define I2C_FLAG_PECERR I2C_ISR_PECERR +#define I2C_FLAG_TIMEOUT I2C_ISR_TIMEOUT +#define I2C_FLAG_ALERT I2C_ISR_ALERT +#define I2C_FLAG_BUSY I2C_ISR_BUSY + +#define IS_I2C_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFF4000) == 0x00) && ((FLAG) != 0x00)) + +#define IS_I2C_GET_FLAG(FLAG) (((FLAG) == I2C_FLAG_TXE) || ((FLAG) == I2C_FLAG_TXIS) || \ + ((FLAG) == I2C_FLAG_RXNE) || ((FLAG) == I2C_FLAG_ADDR) || \ + ((FLAG) == I2C_FLAG_NACKF) || ((FLAG) == I2C_FLAG_STOPF) || \ + ((FLAG) == I2C_FLAG_TC) || ((FLAG) == I2C_FLAG_TCR) || \ + ((FLAG) == I2C_FLAG_BERR) || ((FLAG) == I2C_FLAG_ARLO) || \ + ((FLAG) == I2C_FLAG_OVR) || ((FLAG) == I2C_FLAG_PECERR) || \ + ((FLAG) == I2C_FLAG_TIMEOUT) || ((FLAG) == I2C_FLAG_ALERT) || \ + ((FLAG) == I2C_FLAG_BUSY)) + +/** + * @} + */ + + +/** @defgroup I2C_interrupts_definition + * @{ + */ + +#define I2C_IT_TXIS I2C_ISR_TXIS +#define I2C_IT_RXNE I2C_ISR_RXNE +#define I2C_IT_ADDR I2C_ISR_ADDR +#define I2C_IT_NACKF I2C_ISR_NACKF +#define I2C_IT_STOPF I2C_ISR_STOPF +#define I2C_IT_TC I2C_ISR_TC +#define I2C_IT_TCR I2C_ISR_TCR +#define I2C_IT_BERR I2C_ISR_BERR +#define I2C_IT_ARLO I2C_ISR_ARLO +#define I2C_IT_OVR I2C_ISR_OVR +#define I2C_IT_PECERR I2C_ISR_PECERR +#define I2C_IT_TIMEOUT I2C_ISR_TIMEOUT +#define I2C_IT_ALERT I2C_ISR_ALERT + +#define IS_I2C_CLEAR_IT(IT) ((((IT) & (uint32_t)0xFFFFC001) == 0x00) && ((IT) != 0x00)) + +#define IS_I2C_GET_IT(IT) (((IT) == I2C_IT_TXIS) || ((IT) == I2C_IT_RXNE) || \ + ((IT) == I2C_IT_ADDR) || ((IT) == I2C_IT_NACKF) || \ + ((IT) == I2C_IT_STOPF) || ((IT) == I2C_IT_TC) || \ + ((IT) == I2C_IT_TCR) || ((IT) == I2C_IT_BERR) || \ + ((IT) == I2C_IT_ARLO) || ((IT) == I2C_IT_OVR) || \ + ((IT) == I2C_IT_PECERR) || ((IT) == I2C_IT_TIMEOUT) || \ + ((IT) == I2C_IT_ALERT)) + + +/** + * @} + */ + +/** @defgroup I2C_ReloadEndMode_definition + * @{ + */ + +#define I2C_Reload_Mode I2C_CR2_RELOAD +#define I2C_AutoEnd_Mode I2C_CR2_AUTOEND +#define I2C_SoftEnd_Mode ((uint32_t)0x00000000) + + +#define IS_RELOAD_END_MODE(MODE) (((MODE) == I2C_Reload_Mode) || \ + ((MODE) == I2C_AutoEnd_Mode) || \ + ((MODE) == I2C_SoftEnd_Mode)) + + +/** + * @} + */ + +/** @defgroup I2C_StartStopMode_definition + * @{ + */ + +#define I2C_No_StartStop ((uint32_t)0x00000000) +#define I2C_Generate_Stop I2C_CR2_STOP +#define I2C_Generate_Start_Read (uint32_t)(I2C_CR2_START | I2C_CR2_RD_WRN) +#define I2C_Generate_Start_Write I2C_CR2_START + + +#define IS_START_STOP_MODE(MODE) (((MODE) == I2C_Generate_Stop) || \ + ((MODE) == I2C_Generate_Start_Read) || \ + ((MODE) == I2C_Generate_Start_Write) || \ + ((MODE) == I2C_No_StartStop)) + + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + + +/* Initialization and Configuration functions *********************************/ +void I2C_DeInit(I2C_TypeDef* I2Cx); +void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct); +void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct); +void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx); +void I2C_ITConfig(I2C_TypeDef* I2Cx, uint32_t I2C_IT, FunctionalState NewState); +void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_StopModeCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, uint16_t Address, uint8_t Mask); +void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_SlaveByteControlCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_SlaveAddressConfig(I2C_TypeDef* I2Cx, uint16_t Address); +void I2C_10BitAddressingModeCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); + +/* Communications handling functions ******************************************/ +void I2C_AutoEndCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_ReloadCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_NumberOfBytesConfig(I2C_TypeDef* I2Cx, uint8_t Number_Bytes); +void I2C_MasterRequestConfig(I2C_TypeDef* I2Cx, uint16_t I2C_Direction); +void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_10BitAddressHeaderCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState); +uint8_t I2C_GetAddressMatched(I2C_TypeDef* I2Cx); +uint16_t I2C_GetTransferDirection(I2C_TypeDef* I2Cx); +void I2C_TransferHandling(I2C_TypeDef* I2Cx, uint16_t Address, uint8_t Number_Bytes, uint32_t ReloadEndMode, uint32_t StartStopMode); + +/* SMBUS management functions ************************************************/ +void I2C_SMBusAlertCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_ClockTimeoutCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_ExtendedClockTimeoutCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_IdleClockTimeoutCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_TimeoutAConfig(I2C_TypeDef* I2Cx, uint16_t Timeout); +void I2C_TimeoutBConfig(I2C_TypeDef* I2Cx, uint16_t Timeout); +void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_PECRequestCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +uint8_t I2C_GetPEC(I2C_TypeDef* I2Cx); + +/* I2C registers management functions *****************************************/ +uint32_t I2C_ReadRegister(I2C_TypeDef* I2Cx, uint8_t I2C_Register); + +/* Data transfers management functions ****************************************/ +void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data); +uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx); + +/* DMA transfers management functions *****************************************/ +void I2C_DMACmd(I2C_TypeDef* I2Cx, uint32_t I2C_DMAReq, FunctionalState NewState); + +/* Interrupts and flags management functions **********************************/ +FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG); +void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG); +ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT); +void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT); + + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_I2C_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_iwdg.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,163 @@ +/** + ****************************************************************************** + * @file stm32f30x_iwdg.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the IWDG + * firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_IWDG_H +#define __STM32F30x_IWDG_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup IWDG + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup IWDG_Exported_Constants + * @{ + */ + +/** @defgroup IWDG_WriteAccess + * @{ + */ + +#define IWDG_WriteAccess_Enable ((uint16_t)0x5555) +#define IWDG_WriteAccess_Disable ((uint16_t)0x0000) +#define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \ + ((ACCESS) == IWDG_WriteAccess_Disable)) +/** + * @} + */ + +/** @defgroup IWDG_prescaler + * @{ + */ + +#define IWDG_Prescaler_4 ((uint8_t)0x00) +#define IWDG_Prescaler_8 ((uint8_t)0x01) +#define IWDG_Prescaler_16 ((uint8_t)0x02) +#define IWDG_Prescaler_32 ((uint8_t)0x03) +#define IWDG_Prescaler_64 ((uint8_t)0x04) +#define IWDG_Prescaler_128 ((uint8_t)0x05) +#define IWDG_Prescaler_256 ((uint8_t)0x06) +#define IS_IWDG_PRESCALER(PRESCALER) (((PRESCALER) == IWDG_Prescaler_4) || \ + ((PRESCALER) == IWDG_Prescaler_8) || \ + ((PRESCALER) == IWDG_Prescaler_16) || \ + ((PRESCALER) == IWDG_Prescaler_32) || \ + ((PRESCALER) == IWDG_Prescaler_64) || \ + ((PRESCALER) == IWDG_Prescaler_128)|| \ + ((PRESCALER) == IWDG_Prescaler_256)) +/** + * @} + */ + +/** @defgroup IWDG_Flag + * @{ + */ + +#define IWDG_FLAG_PVU ((uint16_t)0x0001) +#define IWDG_FLAG_RVU ((uint16_t)0x0002) +#define IWDG_FLAG_WVU ((uint16_t)0x0002) +#define IS_IWDG_FLAG(FLAG) (((FLAG) == IWDG_FLAG_PVU) || ((FLAG) == IWDG_FLAG_RVU) || \ + ((FLAG) == IWDG_FLAG_WVU)) +/** + * @} + */ + +/** @defgroup IWDG_Reload_Value + * @{ + */ +#define IS_IWDG_RELOAD(RELOAD) ((RELOAD) <= 0xFFF) + +/** + * @} + */ + +/** @defgroup IWDG_CounterWindow_Value + * @{ + */ +#define IS_IWDG_WINDOW_VALUE(VALUE) ((VALUE) <= 0xFFF) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/* Prescaler and Counter configuration functions ******************************/ +void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess); +void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); +void IWDG_SetReload(uint16_t Reload); +void IWDG_ReloadCounter(void); +void IWDG_SetWindowValue(uint16_t WindowValue); + +/* IWDG activation function ***************************************************/ +void IWDG_Enable(void); + +/* Flag management function ***************************************************/ +FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_IWDG_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_misc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,214 @@ +/** + ****************************************************************************** + * @file stm32f30x_misc.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the miscellaneous + * firmware library functions (add-on to CMSIS functions). + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_MISC_H +#define __STM32F30x_MISC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup MISC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief NVIC Init Structure definition + */ + +typedef struct +{ + uint8_t NVIC_IRQChannel; /*!< Specifies the IRQ channel to be enabled or disabled. + This parameter can be a value of @ref IRQn_Type (For + the complete STM32 Devices IRQ Channels list, please + refer to stm32f30x.h file) */ + + uint8_t NVIC_IRQChannelPreemptionPriority; /*!< Specifies the pre-emption priority for the IRQ channel + specified in NVIC_IRQChannel. This parameter can be a value + between 0 and 15. + A lower priority value indicates a higher priority */ + + + uint8_t NVIC_IRQChannelSubPriority; /*!< Specifies the subpriority level for the IRQ channel specified + in NVIC_IRQChannel. This parameter can be a value + between 0 and 15. + A lower priority value indicates a higher priority */ + + FunctionalState NVIC_IRQChannelCmd; /*!< Specifies whether the IRQ channel defined in NVIC_IRQChannel + will be enabled or disabled. + This parameter can be set either to ENABLE or DISABLE */ +} NVIC_InitTypeDef; + +/** + * +@verbatim + The table below gives the allowed values of the pre-emption priority and subpriority according + to the Priority Grouping configuration performed by NVIC_PriorityGroupConfig function + ============================================================================================================================ + NVIC_PriorityGroup | NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority | Description + ============================================================================================================================ + NVIC_PriorityGroup_0 | 0 | 0-15 | 0 bits for pre-emption priority + | | | 4 bits for subpriority + ---------------------------------------------------------------------------------------------------------------------------- + NVIC_PriorityGroup_1 | 0-1 | 0-7 | 1 bits for pre-emption priority + | | | 3 bits for subpriority + ---------------------------------------------------------------------------------------------------------------------------- + NVIC_PriorityGroup_2 | 0-3 | 0-3 | 2 bits for pre-emption priority + | | | 2 bits for subpriority + ---------------------------------------------------------------------------------------------------------------------------- + NVIC_PriorityGroup_3 | 0-7 | 0-1 | 3 bits for pre-emption priority + | | | 1 bits for subpriority + ---------------------------------------------------------------------------------------------------------------------------- + NVIC_PriorityGroup_4 | 0-15 | 0 | 4 bits for pre-emption priority + | | | 0 bits for subpriority + ============================================================================================================================ +@endverbatim +*/ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup MISC_Exported_Constants + * @{ + */ + +/** @defgroup MISC_Vector_Table_Base + * @{ + */ + +#define NVIC_VectTab_RAM ((uint32_t)0x20000000) +#define NVIC_VectTab_FLASH ((uint32_t)0x08000000) +#define IS_NVIC_VECTTAB(VECTTAB) (((VECTTAB) == NVIC_VectTab_RAM) || \ + ((VECTTAB) == NVIC_VectTab_FLASH)) +/** + * @} + */ + +/** @defgroup MISC_System_Low_Power + * @{ + */ + +#define NVIC_LP_SEVONPEND ((uint8_t)0x10) +#define NVIC_LP_SLEEPDEEP ((uint8_t)0x04) +#define NVIC_LP_SLEEPONEXIT ((uint8_t)0x02) +#define IS_NVIC_LP(LP) (((LP) == NVIC_LP_SEVONPEND) || \ + ((LP) == NVIC_LP_SLEEPDEEP) || \ + ((LP) == NVIC_LP_SLEEPONEXIT)) +/** + * @} + */ + +/** @defgroup MISC_Preemption_Priority_Group + * @{ + */ + +#define NVIC_PriorityGroup_0 ((uint32_t)0x700) /*!< 0 bits for pre-emption priority + 4 bits for subpriority */ +#define NVIC_PriorityGroup_1 ((uint32_t)0x600) /*!< 1 bits for pre-emption priority + 3 bits for subpriority */ +#define NVIC_PriorityGroup_2 ((uint32_t)0x500) /*!< 2 bits for pre-emption priority + 2 bits for subpriority */ +#define NVIC_PriorityGroup_3 ((uint32_t)0x400) /*!< 3 bits for pre-emption priority + 1 bits for subpriority */ +#define NVIC_PriorityGroup_4 ((uint32_t)0x300) /*!< 4 bits for pre-emption priority + 0 bits for subpriority */ + +#define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PriorityGroup_0) || \ + ((GROUP) == NVIC_PriorityGroup_1) || \ + ((GROUP) == NVIC_PriorityGroup_2) || \ + ((GROUP) == NVIC_PriorityGroup_3) || \ + ((GROUP) == NVIC_PriorityGroup_4)) + +#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY) ((PRIORITY) < 0x10) + +#define IS_NVIC_SUB_PRIORITY(PRIORITY) ((PRIORITY) < 0x10) + +#define IS_NVIC_OFFSET(OFFSET) ((OFFSET) < 0x000FFFFF) + +/** + * @} + */ + +/** @defgroup MISC_SysTick_clock_source + */ + +#define SysTick_CLKSource_HCLK_Div8 ((uint32_t)0xFFFFFFFB) +#define SysTick_CLKSource_HCLK ((uint32_t)0x00000004) +#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SysTick_CLKSource_HCLK) || \ + ((SOURCE) == SysTick_CLKSource_HCLK_Div8)) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup); +void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct); +void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset); +void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState); +void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_MISC_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_opamp.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,287 @@ +/** + ****************************************************************************** + * @file stm32f30x_opamp.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the operational + * amplifiers (OPAMP) firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_OPAMP_H +#define __STM32F30x_OPAMP_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup OPAMP + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief OPAMP Init structure definition + */ + +typedef struct +{ + + uint32_t OPAMP_InvertingInput; /*!< Selects the inverting input of the operational amplifier. + This parameter can be a value of @ref OPAMP_InvertingInput */ + + uint32_t OPAMP_NonInvertingInput; /*!< Selects the non inverting input of the operational amplifier. + This parameter can be a value of @ref OPAMP_NonInvertingInput */ + +}OPAMP_InitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup OPAMP_Exported_Constants + * @{ + */ + +/** @defgroup OPAMP_Selection + * @{ + */ + +#define OPAMP_Selection_OPAMP1 ((uint32_t)0x00000000) /*!< OPAMP1 Selection */ +#define OPAMP_Selection_OPAMP2 ((uint32_t)0x00000004) /*!< OPAMP2 Selection */ +#define OPAMP_Selection_OPAMP3 ((uint32_t)0x00000008) /*!< OPAMP3 Selection */ +#define OPAMP_Selection_OPAMP4 ((uint32_t)0x0000000C) /*!< OPAMP4 Selection */ + +#define IS_OPAMP_ALL_PERIPH(PERIPH) (((PERIPH) == OPAMP_Selection_OPAMP1) || \ + ((PERIPH) == OPAMP_Selection_OPAMP2) || \ + ((PERIPH) == OPAMP_Selection_OPAMP3) || \ + ((PERIPH) == OPAMP_Selection_OPAMP4)) + +/** + * @} + */ + +/** @defgroup OPAMP_InvertingInput + * @{ + */ + +#define OPAMP_InvertingInput_IO1 ((uint32_t)0x00000000) /*!< IO1 (PC5 for OPAMP1 and OPAMP2, PB10 for OPAMP3 and OPAMP4) + connected to OPAMPx inverting input */ +#define OPAMP_InvertingInput_IO2 OPAMP_CSR_VMSEL_0 /*!< IO2 (PA3 for OPAMP1, PA5 for OPAMP2, PB2 for OPAMP3, PD8 for OPAMP4) + connected to OPAMPx inverting input */ +#define OPAMP_InvertingInput_PGA OPAMP_CSR_VMSEL_1 /*!< Resistor feedback output connected to OPAMPx inverting input (PGA mode) */ +#define OPAMP_InvertingInput_Vout OPAMP_CSR_VMSEL /*!< Vout connected to OPAMPx inverting input (follower mode) */ + +#define IS_OPAMP_INVERTING_INPUT(INPUT) (((INPUT) == OPAMP_InvertingInput_IO1) || \ + ((INPUT) == OPAMP_InvertingInput_IO2) || \ + ((INPUT) == OPAMP_InvertingInput_PGA) || \ + ((INPUT) == OPAMP_InvertingInput_Vout)) +/** + * @} + */ + +/** @defgroup OPAMP_NonInvertingInput + * @{ + */ + +#define OPAMP_NonInvertingInput_IO1 ((uint32_t)0x00000000) /*!< IO1 (PA7 for OPAMP1, PD14 for OPAMP2, PB13 for OPAMP3, PD11 for OPAMP4) + connected to OPAMPx non inverting input */ +#define OPAMP_NonInvertingInput_IO2 OPAMP_CSR_VPSEL_0 /*!< IO2 (PA5 for OPAMP1, PB14 for OPAMP2, PA5 for OPAMP3, PB11 for OPAMP4) + connected to OPAMPx non inverting input */ +#define OPAMP_NonInvertingInput_IO3 OPAMP_CSR_VPSEL_1 /*!< IO3 (PA3 for OPAMP1, PB0 for OPAMP2, PA1 for OPAMP3, PA4 for OPAMP4) + connected to OPAMPx non inverting input */ +#define OPAMP_NonInvertingInput_IO4 OPAMP_CSR_VPSEL /*!< IO4 (PA1 for OPAMP1, PA7 for OPAMP2, PB0 for OPAMP3, PB13 for OPAMP4) + connected to OPAMPx non inverting input */ + +#define IS_OPAMP_NONINVERTING_INPUT(INPUT) (((INPUT) == OPAMP_NonInvertingInput_IO1) || \ + ((INPUT) == OPAMP_NonInvertingInput_IO2) || \ + ((INPUT) == OPAMP_NonInvertingInput_IO3) || \ + ((INPUT) == OPAMP_NonInvertingInput_IO4)) +/** + * @} + */ + +/** @defgroup OPAMP_PGAGain_Config + * @{ + */ + +#define OPAMP_OPAMP_PGAGain_2 ((uint32_t)0x00000000) +#define OPAMP_OPAMP_PGAGain_4 OPAMP_CSR_PGGAIN_0 +#define OPAMP_OPAMP_PGAGain_8 OPAMP_CSR_PGGAIN_1 +#define OPAMP_OPAMP_PGAGain_16 ((uint32_t)0x0000C000) + +#define IS_OPAMP_PGAGAIN(GAIN) (((GAIN) == OPAMP_OPAMP_PGAGain_2) || \ + ((GAIN) == OPAMP_OPAMP_PGAGain_4) || \ + ((GAIN) == OPAMP_OPAMP_PGAGain_8) || \ + ((GAIN) == OPAMP_OPAMP_PGAGain_16)) +/** + * @} + */ + +/** @defgroup OPAMP_PGAConnect_Config + * @{ + */ + +#define OPAMP_PGAConnect_No ((uint32_t)0x00000000) +#define OPAMP_PGAConnect_IO1 OPAMP_CSR_PGGAIN_3 +#define OPAMP_PGAConnect_IO2 ((uint32_t)0x00030000) + +#define IS_OPAMP_PGACONNECT(CONNECT) (((CONNECT) == OPAMP_PGAConnect_No) || \ + ((CONNECT) == OPAMP_PGAConnect_IO1) || \ + ((CONNECT) == OPAMP_PGAConnect_IO2)) +/** + * @} + */ + +/** @defgroup OPAMP_SecondaryInvertingInput + * @{ + */ + +#define IS_OPAMP_SECONDARY_INVINPUT(INVINPUT) (((INVINPUT) == OPAMP_InvertingInput_IO1) || \ + ((INVINPUT) == OPAMP_InvertingInput_IO2)) +/** + * @} + */ + +/** @defgroup OPAMP_Input + * @{ + */ + +#define OPAMP_Input_Inverting ((uint32_t)0x00000018) /*!< Inverting input */ +#define OPAMP_Input_NonInverting ((uint32_t)0x00000013) /*!< Non inverting input */ + +#define IS_OPAMP_INPUT(INPUT) (((INPUT) == OPAMP_Input_Inverting) || \ + ((INPUT) == OPAMP_Input_NonInverting)) + +/** + * @} + */ + +/** @defgroup OPAMP_Vref + * @{ + */ + +#define OPAMP_Vref_3VDDA ((uint32_t)0x00000000) /*!< OPMAP Vref = 3.3% VDDA */ +#define OPAMP_Vref_10VDDA OPAMP_CSR_CALSEL_0 /*!< OPMAP Vref = 10% VDDA */ +#define OPAMP_Vref_50VDDA OPAMP_CSR_CALSEL_1 /*!< OPMAP Vref = 50% VDDA */ +#define OPAMP_Vref_90VDDA OPAMP_CSR_CALSEL /*!< OPMAP Vref = 90% VDDA */ + +#define IS_OPAMP_VREF(VREF) (((VREF) == OPAMP_Vref_3VDDA) || \ + ((VREF) == OPAMP_Vref_10VDDA) || \ + ((VREF) == OPAMP_Vref_50VDDA) || \ + ((VREF) == OPAMP_Vref_90VDDA)) + +/** + * @} + */ + +/** @defgroup OPAMP_Trimming + */ + +#define OPAMP_Trimming_Factory ((uint32_t)0x00000000) /*!< Factory trimming */ +#define OPAMP_Trimming_User OPAMP_CSR_USERTRIM /*!< User trimming */ + +#define IS_OPAMP_TRIMMING(TRIMMING) (((TRIMMING) == OPAMP_Trimming_Factory) || \ + ((TRIMMING) == OPAMP_Trimming_User)) + +/** + * @} + */ + +/** @defgroup OPAMP_TrimValue + * @{ + */ + +#define IS_OPAMP_TRIMMINGVALUE(VALUE) ((VALUE) <= 0x0000001F) /*!< Trimming value */ + +/** + * @} + */ + +/** @defgroup OPAMP_OutputLevel + * @{ + */ + +#define OPAMP_OutputLevel_High OPAMP_CSR_OUTCAL +#define OPAMP_OutputLevel_Low ((uint32_t)0x00000000) + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Function used to set the OPAMP configuration to the default reset state ***/ +void OPAMP_DeInit(uint32_t OPAMP_Selection); + +/* Initialization and Configuration functions *********************************/ +void OPAMP_Init(uint32_t OPAMP_Selection, OPAMP_InitTypeDef* OPAMP_InitStruct); +void OPAMP_StructInit(OPAMP_InitTypeDef* OPAMP_InitStruct); +void OPAMP_PGAConfig(uint32_t OPAMP_Selection, uint32_t OPAMP_PGAGain, uint32_t OPAMP_PGAConnect); +void OPAMP_VrefConfig(uint32_t OPAMP_Selection, uint32_t OPAMP_Vref); +void OPAMP_VrefConnectADCCmd(uint32_t OPAMP_Selection, FunctionalState NewState); +void OPAMP_TimerControlledMuxConfig(uint32_t OPAMP_Selection, OPAMP_InitTypeDef* OPAMP_InitStruct); +void OPAMP_TimerControlledMuxCmd(uint32_t OPAMP_Selection, FunctionalState NewState); +void OPAMP_Cmd(uint32_t OPAMP_Selection, FunctionalState NewState); +uint32_t OPAMP_GetOutputLevel(uint32_t OPAMP_Selection); + +/* Calibration functions ******************************************************/ +void OPAMP_VrefConnectNonInvertingInput(uint32_t OPAMP_Selection, FunctionalState NewState); +void OPAMP_OffsetTrimModeSelect(uint32_t OPAMP_Selection, uint32_t OPAMP_Trimming); +void OPAMP_OffsetTrimConfig(uint32_t OPAMP_Selection, uint32_t OPAMP_Input, uint32_t OPAMP_TrimValue); +void OPAMP_StartCalibration(uint32_t OPAMP_Selection, FunctionalState NewState); + +/* OPAMP configuration locking function ***************************************/ +void OPAMP_LockConfig(uint32_t OPAMP_Selection); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_OPAMP_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_pwr.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,197 @@ +/** + ****************************************************************************** + * @file stm32f30x_pwr.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the PWR firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_PWR_H +#define __STM32F30x_PWR_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup PWR + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup PWR_Exported_Constants + * @{ + */ + +/** @defgroup PWR_PVD_detection_level + * @{ + */ + +#define PWR_PVDLevel_0 PWR_CR_PLS_LEV0 +#define PWR_PVDLevel_1 PWR_CR_PLS_LEV1 +#define PWR_PVDLevel_2 PWR_CR_PLS_LEV2 +#define PWR_PVDLevel_3 PWR_CR_PLS_LEV3 +#define PWR_PVDLevel_4 PWR_CR_PLS_LEV4 +#define PWR_PVDLevel_5 PWR_CR_PLS_LEV5 +#define PWR_PVDLevel_6 PWR_CR_PLS_LEV6 +#define PWR_PVDLevel_7 PWR_CR_PLS_LEV7 + +#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLevel_0) || ((LEVEL) == PWR_PVDLevel_1)|| \ + ((LEVEL) == PWR_PVDLevel_2) || ((LEVEL) == PWR_PVDLevel_3)|| \ + ((LEVEL) == PWR_PVDLevel_4) || ((LEVEL) == PWR_PVDLevel_5)|| \ + ((LEVEL) == PWR_PVDLevel_6) || ((LEVEL) == PWR_PVDLevel_7)) +/** + * @} + */ + +/** @defgroup PWR_WakeUp_Pins + * @{ + */ + +#define PWR_WakeUpPin_1 PWR_CSR_EWUP1 +#define PWR_WakeUpPin_2 PWR_CSR_EWUP2 +#define PWR_WakeUpPin_3 PWR_CSR_EWUP3 +#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WakeUpPin_1) || \ + ((PIN) == PWR_WakeUpPin_2) || \ + ((PIN) == PWR_WakeUpPin_3)) +/** + * @} + */ + + +/** @defgroup PWR_Regulator_state_is_Sleep_STOP_mode + * @{ + */ + +#define PWR_Regulator_ON ((uint32_t)0x00000000) +#define PWR_Regulator_LowPower PWR_CR_LPSDSR +#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_Regulator_ON) || \ + ((REGULATOR) == PWR_Regulator_LowPower)) +/** + * @} + */ + +/** @defgroup PWR_SLEEP_mode_entry + * @{ + */ + +#define PWR_SLEEPEntry_WFI ((uint8_t)0x01) +#define PWR_SLEEPEntry_WFE ((uint8_t)0x02) +#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPEntry_WFI) || ((ENTRY) == PWR_SLEEPEntry_WFE)) + +/** + * @} + */ + +/** @defgroup PWR_STOP_mode_entry + * @{ + */ + +#define PWR_STOPEntry_WFI ((uint8_t)0x01) +#define PWR_STOPEntry_WFE ((uint8_t)0x02) +#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPEntry_WFI) || ((ENTRY) == PWR_STOPEntry_WFE)) + +/** + * @} + */ + +/** @defgroup PWR_Flag + * @{ + */ + +#define PWR_FLAG_WU PWR_CSR_WUF +#define PWR_FLAG_SB PWR_CSR_SBF +#define PWR_FLAG_PVDO PWR_CSR_PVDO +#define PWR_FLAG_VREFINTRDY PWR_CSR_VREFINTRDYF + +#define IS_PWR_GET_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB) || \ + ((FLAG) == PWR_FLAG_PVDO) || ((FLAG) == PWR_FLAG_VREFINTRDY)) + +#define IS_PWR_CLEAR_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB)) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Function used to set the PWR configuration to the default reset state ******/ +void PWR_DeInit(void); + +/* Backup Domain Access function **********************************************/ +void PWR_BackupAccessCmd(FunctionalState NewState); + +/* PVD configuration functions ************************************************/ +void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel); +void PWR_PVDCmd(FunctionalState NewState); + +/* WakeUp pins configuration functions ****************************************/ +void PWR_WakeUpPinCmd(uint32_t PWR_WakeUpPin, FunctionalState NewState); + +/* Low Power modes configuration functions ************************************/ +void PWR_EnterSleepMode(uint8_t PWR_SLEEPEntry); +void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry); +void PWR_EnterSTANDBYMode(void); + +/* Flags management functions *************************************************/ +FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG); +void PWR_ClearFlag(uint32_t PWR_FLAG); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_PWR_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_rcc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,709 @@ +/** + ****************************************************************************** + * @file stm32f30x_rcc.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the RCC + * firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_RCC_H +#define __STM32F30x_RCC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup RCC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +typedef struct +{ + uint32_t SYSCLK_Frequency; + uint32_t HCLK_Frequency; + uint32_t PCLK1_Frequency; + uint32_t PCLK2_Frequency; + uint32_t ADC12CLK_Frequency; + uint32_t ADC34CLK_Frequency; + uint32_t I2C1CLK_Frequency; + uint32_t I2C2CLK_Frequency; + uint32_t I2C3CLK_Frequency; + uint32_t TIM1CLK_Frequency; + uint32_t HRTIM1CLK_Frequency; + uint32_t TIM8CLK_Frequency; + uint32_t USART1CLK_Frequency; + uint32_t USART2CLK_Frequency; + uint32_t USART3CLK_Frequency; + uint32_t UART4CLK_Frequency; + uint32_t UART5CLK_Frequency; + uint32_t TIM15CLK_Frequency; + uint32_t TIM16CLK_Frequency; + uint32_t TIM17CLK_Frequency; +}RCC_ClocksTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup RCC_Exported_Constants + * @{ + */ + +/** @defgroup RCC_HSE_configuration + * @{ + */ + +#define RCC_HSE_OFF ((uint8_t)0x00) +#define RCC_HSE_ON ((uint8_t)0x01) +#define RCC_HSE_Bypass ((uint8_t)0x05) +#define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_OFF) || ((HSE) == RCC_HSE_ON) || \ + ((HSE) == RCC_HSE_Bypass)) + +/** + * @} + */ + +/** @defgroup RCC_PLL_Clock_Source + * @{ + */ + +#define RCC_PLLSource_HSI_Div2 RCC_CFGR_PLLSRC_HSI_Div2 +#define RCC_PLLSource_PREDIV1 RCC_CFGR_PLLSRC_PREDIV1 + +#define IS_RCC_PLL_SOURCE(SOURCE) (((SOURCE) == RCC_PLLSource_HSI_Div2) || \ + ((SOURCE) == RCC_PLLSource_PREDIV1)) +/** + * @} + */ + +/** @defgroup RCC_PLL_Multiplication_Factor + * @{ + */ + +#define RCC_PLLMul_2 RCC_CFGR_PLLMULL2 +#define RCC_PLLMul_3 RCC_CFGR_PLLMULL3 +#define RCC_PLLMul_4 RCC_CFGR_PLLMULL4 +#define RCC_PLLMul_5 RCC_CFGR_PLLMULL5 +#define RCC_PLLMul_6 RCC_CFGR_PLLMULL6 +#define RCC_PLLMul_7 RCC_CFGR_PLLMULL7 +#define RCC_PLLMul_8 RCC_CFGR_PLLMULL8 +#define RCC_PLLMul_9 RCC_CFGR_PLLMULL9 +#define RCC_PLLMul_10 RCC_CFGR_PLLMULL10 +#define RCC_PLLMul_11 RCC_CFGR_PLLMULL11 +#define RCC_PLLMul_12 RCC_CFGR_PLLMULL12 +#define RCC_PLLMul_13 RCC_CFGR_PLLMULL13 +#define RCC_PLLMul_14 RCC_CFGR_PLLMULL14 +#define RCC_PLLMul_15 RCC_CFGR_PLLMULL15 +#define RCC_PLLMul_16 RCC_CFGR_PLLMULL16 +#define IS_RCC_PLL_MUL(MUL) (((MUL) == RCC_PLLMul_2) || ((MUL) == RCC_PLLMul_3) || \ + ((MUL) == RCC_PLLMul_4) || ((MUL) == RCC_PLLMul_5) || \ + ((MUL) == RCC_PLLMul_6) || ((MUL) == RCC_PLLMul_7) || \ + ((MUL) == RCC_PLLMul_8) || ((MUL) == RCC_PLLMul_9) || \ + ((MUL) == RCC_PLLMul_10) || ((MUL) == RCC_PLLMul_11) || \ + ((MUL) == RCC_PLLMul_12) || ((MUL) == RCC_PLLMul_13) || \ + ((MUL) == RCC_PLLMul_14) || ((MUL) == RCC_PLLMul_15) || \ + ((MUL) == RCC_PLLMul_16)) +/** + * @} + */ + +/** @defgroup RCC_PREDIV1_division_factor + * @{ + */ +#define RCC_PREDIV1_Div1 RCC_CFGR2_PREDIV1_DIV1 +#define RCC_PREDIV1_Div2 RCC_CFGR2_PREDIV1_DIV2 +#define RCC_PREDIV1_Div3 RCC_CFGR2_PREDIV1_DIV3 +#define RCC_PREDIV1_Div4 RCC_CFGR2_PREDIV1_DIV4 +#define RCC_PREDIV1_Div5 RCC_CFGR2_PREDIV1_DIV5 +#define RCC_PREDIV1_Div6 RCC_CFGR2_PREDIV1_DIV6 +#define RCC_PREDIV1_Div7 RCC_CFGR2_PREDIV1_DIV7 +#define RCC_PREDIV1_Div8 RCC_CFGR2_PREDIV1_DIV8 +#define RCC_PREDIV1_Div9 RCC_CFGR2_PREDIV1_DIV9 +#define RCC_PREDIV1_Div10 RCC_CFGR2_PREDIV1_DIV10 +#define RCC_PREDIV1_Div11 RCC_CFGR2_PREDIV1_DIV11 +#define RCC_PREDIV1_Div12 RCC_CFGR2_PREDIV1_DIV12 +#define RCC_PREDIV1_Div13 RCC_CFGR2_PREDIV1_DIV13 +#define RCC_PREDIV1_Div14 RCC_CFGR2_PREDIV1_DIV14 +#define RCC_PREDIV1_Div15 RCC_CFGR2_PREDIV1_DIV15 +#define RCC_PREDIV1_Div16 RCC_CFGR2_PREDIV1_DIV16 + +#define IS_RCC_PREDIV1(PREDIV1) (((PREDIV1) == RCC_PREDIV1_Div1) || ((PREDIV1) == RCC_PREDIV1_Div2) || \ + ((PREDIV1) == RCC_PREDIV1_Div3) || ((PREDIV1) == RCC_PREDIV1_Div4) || \ + ((PREDIV1) == RCC_PREDIV1_Div5) || ((PREDIV1) == RCC_PREDIV1_Div6) || \ + ((PREDIV1) == RCC_PREDIV1_Div7) || ((PREDIV1) == RCC_PREDIV1_Div8) || \ + ((PREDIV1) == RCC_PREDIV1_Div9) || ((PREDIV1) == RCC_PREDIV1_Div10) || \ + ((PREDIV1) == RCC_PREDIV1_Div11) || ((PREDIV1) == RCC_PREDIV1_Div12) || \ + ((PREDIV1) == RCC_PREDIV1_Div13) || ((PREDIV1) == RCC_PREDIV1_Div14) || \ + ((PREDIV1) == RCC_PREDIV1_Div15) || ((PREDIV1) == RCC_PREDIV1_Div16)) +/** + * @} + */ + +/** @defgroup RCC_System_Clock_Source + * @{ + */ + +#define RCC_SYSCLKSource_HSI RCC_CFGR_SW_HSI +#define RCC_SYSCLKSource_HSE RCC_CFGR_SW_HSE +#define RCC_SYSCLKSource_PLLCLK RCC_CFGR_SW_PLL +#define IS_RCC_SYSCLK_SOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSource_HSI) || \ + ((SOURCE) == RCC_SYSCLKSource_HSE) || \ + ((SOURCE) == RCC_SYSCLKSource_PLLCLK)) +/** + * @} + */ + +/** @defgroup RCC_AHB_Clock_Source + * @{ + */ + +#define RCC_SYSCLK_Div1 RCC_CFGR_HPRE_DIV1 +#define RCC_SYSCLK_Div2 RCC_CFGR_HPRE_DIV2 +#define RCC_SYSCLK_Div4 RCC_CFGR_HPRE_DIV4 +#define RCC_SYSCLK_Div8 RCC_CFGR_HPRE_DIV8 +#define RCC_SYSCLK_Div16 RCC_CFGR_HPRE_DIV16 +#define RCC_SYSCLK_Div64 RCC_CFGR_HPRE_DIV64 +#define RCC_SYSCLK_Div128 RCC_CFGR_HPRE_DIV128 +#define RCC_SYSCLK_Div256 RCC_CFGR_HPRE_DIV256 +#define RCC_SYSCLK_Div512 RCC_CFGR_HPRE_DIV512 +#define IS_RCC_HCLK(HCLK) (((HCLK) == RCC_SYSCLK_Div1) || ((HCLK) == RCC_SYSCLK_Div2) || \ + ((HCLK) == RCC_SYSCLK_Div4) || ((HCLK) == RCC_SYSCLK_Div8) || \ + ((HCLK) == RCC_SYSCLK_Div16) || ((HCLK) == RCC_SYSCLK_Div64) || \ + ((HCLK) == RCC_SYSCLK_Div128) || ((HCLK) == RCC_SYSCLK_Div256) || \ + ((HCLK) == RCC_SYSCLK_Div512)) +/** + * @} + */ + +/** @defgroup RCC_APB1_APB2_clock_source + * @{ + */ + +#define RCC_HCLK_Div1 ((uint32_t)0x00000000) +#define RCC_HCLK_Div2 ((uint32_t)0x00000400) +#define RCC_HCLK_Div4 ((uint32_t)0x00000500) +#define RCC_HCLK_Div8 ((uint32_t)0x00000600) +#define RCC_HCLK_Div16 ((uint32_t)0x00000700) +#define IS_RCC_PCLK(PCLK) (((PCLK) == RCC_HCLK_Div1) || ((PCLK) == RCC_HCLK_Div2) || \ + ((PCLK) == RCC_HCLK_Div4) || ((PCLK) == RCC_HCLK_Div8) || \ + ((PCLK) == RCC_HCLK_Div16)) +/** + * @} + */ + +/** @defgroup RCC_ADC_clock_source + * @{ + */ + +/* ADC1 & ADC2 */ +#define RCC_ADC12PLLCLK_OFF ((uint32_t)0x00000000) +#define RCC_ADC12PLLCLK_Div1 ((uint32_t)0x00000100) +#define RCC_ADC12PLLCLK_Div2 ((uint32_t)0x00000110) +#define RCC_ADC12PLLCLK_Div4 ((uint32_t)0x00000120) +#define RCC_ADC12PLLCLK_Div6 ((uint32_t)0x00000130) +#define RCC_ADC12PLLCLK_Div8 ((uint32_t)0x00000140) +#define RCC_ADC12PLLCLK_Div10 ((uint32_t)0x00000150) +#define RCC_ADC12PLLCLK_Div12 ((uint32_t)0x00000160) +#define RCC_ADC12PLLCLK_Div16 ((uint32_t)0x00000170) +#define RCC_ADC12PLLCLK_Div32 ((uint32_t)0x00000180) +#define RCC_ADC12PLLCLK_Div64 ((uint32_t)0x00000190) +#define RCC_ADC12PLLCLK_Div128 ((uint32_t)0x000001A0) +#define RCC_ADC12PLLCLK_Div256 ((uint32_t)0x000001B0) + +/* ADC3 & ADC4 */ +#define RCC_ADC34PLLCLK_OFF ((uint32_t)0x10000000) +#define RCC_ADC34PLLCLK_Div1 ((uint32_t)0x10002000) +#define RCC_ADC34PLLCLK_Div2 ((uint32_t)0x10002200) +#define RCC_ADC34PLLCLK_Div4 ((uint32_t)0x10002400) +#define RCC_ADC34PLLCLK_Div6 ((uint32_t)0x10002600) +#define RCC_ADC34PLLCLK_Div8 ((uint32_t)0x10002800) +#define RCC_ADC34PLLCLK_Div10 ((uint32_t)0x10002A00) +#define RCC_ADC34PLLCLK_Div12 ((uint32_t)0x10002C00) +#define RCC_ADC34PLLCLK_Div16 ((uint32_t)0x10002E00) +#define RCC_ADC34PLLCLK_Div32 ((uint32_t)0x10003000) +#define RCC_ADC34PLLCLK_Div64 ((uint32_t)0x10003200) +#define RCC_ADC34PLLCLK_Div128 ((uint32_t)0x10003400) +#define RCC_ADC34PLLCLK_Div256 ((uint32_t)0x10003600) + +#define IS_RCC_ADCCLK(ADCCLK) (((ADCCLK) == RCC_ADC12PLLCLK_OFF) || ((ADCCLK) == RCC_ADC12PLLCLK_Div1) || \ + ((ADCCLK) == RCC_ADC12PLLCLK_Div2) || ((ADCCLK) == RCC_ADC12PLLCLK_Div4) || \ + ((ADCCLK) == RCC_ADC12PLLCLK_Div6) || ((ADCCLK) == RCC_ADC12PLLCLK_Div8) || \ + ((ADCCLK) == RCC_ADC12PLLCLK_Div10) || ((ADCCLK) == RCC_ADC12PLLCLK_Div12) || \ + ((ADCCLK) == RCC_ADC12PLLCLK_Div16) || ((ADCCLK) == RCC_ADC12PLLCLK_Div32) || \ + ((ADCCLK) == RCC_ADC12PLLCLK_Div64) || ((ADCCLK) == RCC_ADC12PLLCLK_Div128) || \ + ((ADCCLK) == RCC_ADC12PLLCLK_Div256) || ((ADCCLK) == RCC_ADC34PLLCLK_OFF) || \ + ((ADCCLK) == RCC_ADC34PLLCLK_Div1) || ((ADCCLK) == RCC_ADC34PLLCLK_Div2) || \ + ((ADCCLK) == RCC_ADC34PLLCLK_Div4) || ((ADCCLK) == RCC_ADC34PLLCLK_Div6) || \ + ((ADCCLK) == RCC_ADC34PLLCLK_Div8) || ((ADCCLK) == RCC_ADC34PLLCLK_Div10) || \ + ((ADCCLK) == RCC_ADC34PLLCLK_Div12) || ((ADCCLK) == RCC_ADC34PLLCLK_Div16) || \ + ((ADCCLK) == RCC_ADC34PLLCLK_Div32) || ((ADCCLK) == RCC_ADC34PLLCLK_Div64) || \ + ((ADCCLK) == RCC_ADC34PLLCLK_Div128) || ((ADCCLK) == RCC_ADC34PLLCLK_Div256)) + +/** + * @} + */ + +/** @defgroup RCC_TIM_clock_source + * @{ + */ + +#define RCC_TIM1CLK_HCLK ((uint32_t)0x00000000) +#define RCC_TIM1CLK_PLLCLK RCC_CFGR3_TIM1SW + +#define RCC_TIM8CLK_HCLK ((uint32_t)0x10000000) +#define RCC_TIM8CLK_PLLCLK ((uint32_t)0x10000200) + +#define RCC_TIM15CLK_HCLK ((uint32_t)0x20000000) +#define RCC_TIM15CLK_PLLCLK ((uint32_t)0x20000400) + +#define RCC_TIM16CLK_HCLK ((uint32_t)0x30000000) +#define RCC_TIM16CLK_PLLCLK ((uint32_t)0x30000800) + +#define RCC_TIM17CLK_HCLK ((uint32_t)0x40000000) +#define RCC_TIM17CLK_PLLCLK ((uint32_t)0x40002000) + +#define IS_RCC_TIMCLK(TIMCLK) (((TIMCLK) == RCC_TIM1CLK_HCLK) || ((TIMCLK) == RCC_TIM1CLK_PLLCLK) || \ + ((TIMCLK) == RCC_TIM8CLK_HCLK) || ((TIMCLK) == RCC_TIM8CLK_PLLCLK) || \ + ((TIMCLK) == RCC_TIM15CLK_HCLK) || ((TIMCLK) == RCC_TIM15CLK_PLLCLK) || \ + ((TIMCLK) == RCC_TIM16CLK_HCLK) || ((TIMCLK) == RCC_TIM16CLK_PLLCLK) || \ + ((TIMCLK) == RCC_TIM17CLK_HCLK) || ((TIMCLK) == RCC_TIM17CLK_PLLCLK)) + +/** + * @} + */ + +/** @defgroup RCC_HRTIM_clock_source + * @{ + */ + +#define RCC_HRTIM1CLK_HCLK ((uint32_t)0x00000000) +#define RCC_HRTIM1CLK_PLLCLK RCC_CFGR3_HRTIM1SW + +#define IS_RCC_HRTIMCLK(HRTIMCLK) (((HRTIMCLK) == RCC_HRTIM1CLK_HCLK) || ((HRTIMCLK) == RCC_HRTIM1CLK_PLLCLK)) + +/** + * @} + */ + +/** @defgroup RCC_I2C_clock_source + * @{ + */ + +#define RCC_I2C1CLK_HSI ((uint32_t)0x00000000) +#define RCC_I2C1CLK_SYSCLK RCC_CFGR3_I2C1SW + +#define RCC_I2C2CLK_HSI ((uint32_t)0x10000000) +#define RCC_I2C2CLK_SYSCLK ((uint32_t)0x10000020) + +#define RCC_I2C3CLK_HSI ((uint32_t)0x20000000) +#define RCC_I2C3CLK_SYSCLK ((uint32_t)0x20000040) + +#define IS_RCC_I2CCLK(I2CCLK) (((I2CCLK) == RCC_I2C1CLK_HSI) || ((I2CCLK) == RCC_I2C1CLK_SYSCLK) || \ + ((I2CCLK) == RCC_I2C2CLK_HSI) || ((I2CCLK) == RCC_I2C2CLK_SYSCLK) || \ + ((I2CCLK) == RCC_I2C3CLK_HSI) || ((I2CCLK) == RCC_I2C3CLK_SYSCLK)) + +/** + * @} + */ + +/** @defgroup RCC_USART_clock_source + * @{ + */ + +#define RCC_USART1CLK_PCLK ((uint32_t)0x10000000) +#define RCC_USART1CLK_SYSCLK ((uint32_t)0x10000001) +#define RCC_USART1CLK_LSE ((uint32_t)0x10000002) +#define RCC_USART1CLK_HSI ((uint32_t)0x10000003) + +#define RCC_USART2CLK_PCLK ((uint32_t)0x20000000) +#define RCC_USART2CLK_SYSCLK ((uint32_t)0x20010000) +#define RCC_USART2CLK_LSE ((uint32_t)0x20020000) +#define RCC_USART2CLK_HSI ((uint32_t)0x20030000) + +#define RCC_USART3CLK_PCLK ((uint32_t)0x30000000) +#define RCC_USART3CLK_SYSCLK ((uint32_t)0x30040000) +#define RCC_USART3CLK_LSE ((uint32_t)0x30080000) +#define RCC_USART3CLK_HSI ((uint32_t)0x300C0000) + +#define RCC_UART4CLK_PCLK ((uint32_t)0x40000000) +#define RCC_UART4CLK_SYSCLK ((uint32_t)0x40100000) +#define RCC_UART4CLK_LSE ((uint32_t)0x40200000) +#define RCC_UART4CLK_HSI ((uint32_t)0x40300000) + +#define RCC_UART5CLK_PCLK ((uint32_t)0x50000000) +#define RCC_UART5CLK_SYSCLK ((uint32_t)0x50400000) +#define RCC_UART5CLK_LSE ((uint32_t)0x50800000) +#define RCC_UART5CLK_HSI ((uint32_t)0x50C00000) + +#define IS_RCC_USARTCLK(USARTCLK) (((USARTCLK) == RCC_USART1CLK_PCLK) || ((USARTCLK) == RCC_USART1CLK_SYSCLK) || \ + ((USARTCLK) == RCC_USART1CLK_LSE) || ((USARTCLK) == RCC_USART1CLK_HSI) ||\ + ((USARTCLK) == RCC_USART2CLK_PCLK) || ((USARTCLK) == RCC_USART2CLK_SYSCLK) || \ + ((USARTCLK) == RCC_USART2CLK_LSE) || ((USARTCLK) == RCC_USART2CLK_HSI) || \ + ((USARTCLK) == RCC_USART3CLK_PCLK) || ((USARTCLK) == RCC_USART3CLK_SYSCLK) || \ + ((USARTCLK) == RCC_USART3CLK_LSE) || ((USARTCLK) == RCC_USART3CLK_HSI) || \ + ((USARTCLK) == RCC_UART4CLK_PCLK) || ((USARTCLK) == RCC_UART4CLK_SYSCLK) || \ + ((USARTCLK) == RCC_UART4CLK_LSE) || ((USARTCLK) == RCC_UART4CLK_HSI) || \ + ((USARTCLK) == RCC_UART5CLK_PCLK) || ((USARTCLK) == RCC_UART5CLK_SYSCLK) || \ + ((USARTCLK) == RCC_UART5CLK_LSE) || ((USARTCLK) == RCC_UART5CLK_HSI)) + +/** + * @} + */ + +/** @defgroup RCC_Interrupt_Source + * @{ + */ + +#define RCC_IT_LSIRDY ((uint8_t)0x01) +#define RCC_IT_LSERDY ((uint8_t)0x02) +#define RCC_IT_HSIRDY ((uint8_t)0x04) +#define RCC_IT_HSERDY ((uint8_t)0x08) +#define RCC_IT_PLLRDY ((uint8_t)0x10) +#define RCC_IT_CSS ((uint8_t)0x80) + +#define IS_RCC_IT(IT) ((((IT) & (uint8_t)0xC0) == 0x00) && ((IT) != 0x00)) + +#define IS_RCC_GET_IT(IT) (((IT) == RCC_IT_LSIRDY) || ((IT) == RCC_IT_LSERDY) || \ + ((IT) == RCC_IT_HSIRDY) || ((IT) == RCC_IT_HSERDY) || \ + ((IT) == RCC_IT_PLLRDY) || ((IT) == RCC_IT_CSS)) + + +#define IS_RCC_CLEAR_IT(IT) ((((IT) & (uint8_t)0x40) == 0x00) && ((IT) != 0x00)) + +/** + * @} + */ + +/** @defgroup RCC_LSE_configuration + * @{ + */ + +#define RCC_LSE_OFF ((uint32_t)0x00000000) +#define RCC_LSE_ON RCC_BDCR_LSEON +#define RCC_LSE_Bypass ((uint32_t)(RCC_BDCR_LSEON | RCC_BDCR_LSEBYP)) +#define IS_RCC_LSE(LSE) (((LSE) == RCC_LSE_OFF) || ((LSE) == RCC_LSE_ON) || \ + ((LSE) == RCC_LSE_Bypass)) +/** + * @} + */ + +/** @defgroup RCC_RTC_Clock_Source + * @{ + */ + +#define RCC_RTCCLKSource_LSE RCC_BDCR_RTCSEL_LSE +#define RCC_RTCCLKSource_LSI RCC_BDCR_RTCSEL_LSI +#define RCC_RTCCLKSource_HSE_Div32 RCC_BDCR_RTCSEL_HSE + +#define IS_RCC_RTCCLK_SOURCE(SOURCE) (((SOURCE) == RCC_RTCCLKSource_LSE) || \ + ((SOURCE) == RCC_RTCCLKSource_LSI) || \ + ((SOURCE) == RCC_RTCCLKSource_HSE_Div32)) +/** + * @} + */ + +/** @defgroup RCC_I2S_Clock_Source + * @{ + */ +#define RCC_I2S2CLKSource_SYSCLK ((uint8_t)0x00) +#define RCC_I2S2CLKSource_Ext ((uint8_t)0x01) + +#define IS_RCC_I2SCLK_SOURCE(SOURCE) (((SOURCE) == RCC_I2S2CLKSource_SYSCLK) || ((SOURCE) == RCC_I2S2CLKSource_Ext)) + +/** @defgroup RCC_LSE_Drive_Configuration + * @{ + */ + +#define RCC_LSEDrive_Low ((uint32_t)0x00000000) +#define RCC_LSEDrive_MediumLow RCC_BDCR_LSEDRV_0 +#define RCC_LSEDrive_MediumHigh RCC_BDCR_LSEDRV_1 +#define RCC_LSEDrive_High RCC_BDCR_LSEDRV +#define IS_RCC_LSE_DRIVE(DRIVE) (((DRIVE) == RCC_LSEDrive_Low) || ((DRIVE) == RCC_LSEDrive_MediumLow) || \ + ((DRIVE) == RCC_LSEDrive_MediumHigh) || ((DRIVE) == RCC_LSEDrive_High)) +/** + * @} + */ + +/** @defgroup RCC_AHB_Peripherals + * @{ + */ + +#define RCC_AHBPeriph_ADC34 RCC_AHBENR_ADC34EN +#define RCC_AHBPeriph_ADC12 RCC_AHBENR_ADC12EN +#define RCC_AHBPeriph_GPIOA RCC_AHBENR_GPIOAEN +#define RCC_AHBPeriph_GPIOB RCC_AHBENR_GPIOBEN +#define RCC_AHBPeriph_GPIOC RCC_AHBENR_GPIOCEN +#define RCC_AHBPeriph_GPIOD RCC_AHBENR_GPIODEN +#define RCC_AHBPeriph_GPIOE RCC_AHBENR_GPIOEEN +#define RCC_AHBPeriph_GPIOF RCC_AHBENR_GPIOFEN +#define RCC_AHBPeriph_TS RCC_AHBENR_TSEN +#define RCC_AHBPeriph_CRC RCC_AHBENR_CRCEN +#define RCC_AHBPeriph_FLITF RCC_AHBENR_FLITFEN +#define RCC_AHBPeriph_SRAM RCC_AHBENR_SRAMEN +#define RCC_AHBPeriph_DMA2 RCC_AHBENR_DMA2EN +#define RCC_AHBPeriph_DMA1 RCC_AHBENR_DMA1EN + +#define IS_RCC_AHB_PERIPH(PERIPH) ((((PERIPH) & 0xCE81FFA8) == 0x00) && ((PERIPH) != 0x00)) +#define IS_RCC_AHB_RST_PERIPH(PERIPH) ((((PERIPH) & 0xCE81FFFF) == 0x00) && ((PERIPH) != 0x00)) + +/** + * @} + */ + +/** @defgroup RCC_APB2_Peripherals + * @{ + */ + +#define RCC_APB2Periph_SYSCFG RCC_APB2ENR_SYSCFGEN +#define RCC_APB2Periph_TIM1 RCC_APB2ENR_TIM1EN +#define RCC_APB2Periph_SPI1 RCC_APB2ENR_SPI1EN +#define RCC_APB2Periph_TIM8 RCC_APB2ENR_TIM8EN +#define RCC_APB2Periph_USART1 RCC_APB2ENR_USART1EN +#define RCC_APB2Periph_TIM15 RCC_APB2ENR_TIM15EN +#define RCC_APB2Periph_TIM16 RCC_APB2ENR_TIM16EN +#define RCC_APB2Periph_TIM17 RCC_APB2ENR_TIM17EN +#define RCC_APB2Periph_HRTIM1 RCC_APB2ENR_HRTIM1 + +#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xDFF887FE) == 0x00) && ((PERIPH) != 0x00)) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Peripherals + * @{ + */ +#define RCC_APB1Periph_TIM2 RCC_APB1ENR_TIM2EN +#define RCC_APB1Periph_TIM3 RCC_APB1ENR_TIM3EN +#define RCC_APB1Periph_TIM4 RCC_APB1ENR_TIM4EN +#define RCC_APB1Periph_TIM6 RCC_APB1ENR_TIM6EN +#define RCC_APB1Periph_TIM7 RCC_APB1ENR_TIM7EN +#define RCC_APB1Periph_WWDG RCC_APB1ENR_WWDGEN +#define RCC_APB1Periph_SPI2 RCC_APB1ENR_SPI2EN +#define RCC_APB1Periph_SPI3 RCC_APB1ENR_SPI3EN +#define RCC_APB1Periph_USART2 RCC_APB1ENR_USART2EN +#define RCC_APB1Periph_USART3 RCC_APB1ENR_USART3EN +#define RCC_APB1Periph_UART4 RCC_APB1ENR_UART4EN +#define RCC_APB1Periph_UART5 RCC_APB1ENR_UART5EN +#define RCC_APB1Periph_I2C1 RCC_APB1ENR_I2C1EN +#define RCC_APB1Periph_I2C2 RCC_APB1ENR_I2C2EN +#define RCC_APB1Periph_USB RCC_APB1ENR_USBEN +#define RCC_APB1Periph_CAN1 RCC_APB1ENR_CAN1EN +#define RCC_APB1Periph_PWR RCC_APB1ENR_PWREN +#define RCC_APB1Periph_DAC1 RCC_APB1ENR_DAC1EN +#define RCC_APB1Periph_I2C3 RCC_APB1ENR_I2C3EN +#define RCC_APB1Periph_DAC2 RCC_APB1ENR_DAC2EN +#define RCC_APB1Periph_DAC RCC_APB1Periph_DAC1 + + +#define IS_RCC_APB1_PERIPH(PERIPH) ((((PERIPH) & 0x890137C8) == 0x00) && ((PERIPH) != 0x00)) +/** + * @} + */ + +/** @defgroup RCC_MCO_Clock_Source + * @{ + */ + +#define RCC_MCOSource_NoClock ((uint8_t)0x00) +#define RCC_MCOSource_LSI ((uint8_t)0x02) +#define RCC_MCOSource_LSE ((uint8_t)0x03) +#define RCC_MCOSource_SYSCLK ((uint8_t)0x04) +#define RCC_MCOSource_HSI ((uint8_t)0x05) +#define RCC_MCOSource_HSE ((uint8_t)0x06) +#define RCC_MCOSource_PLLCLK_Div2 ((uint8_t)0x07) + +#define IS_RCC_MCO_SOURCE(SOURCE) (((SOURCE) == RCC_MCOSource_NoClock) ||((SOURCE) == RCC_MCOSource_SYSCLK) ||\ + ((SOURCE) == RCC_MCOSource_HSI) || ((SOURCE) == RCC_MCOSource_HSE) || \ + ((SOURCE) == RCC_MCOSource_LSI) || ((SOURCE) == RCC_MCOSource_LSE) || \ + ((SOURCE) == RCC_MCOSource_PLLCLK_Div2)) +/** + * @} + */ + +/** @defgroup RCC_MCOPrescaler + * @{ + */ + +#define RCC_MCOPrescaler_1 RCC_CFGR_MCO_PRE_1 +#define RCC_MCOPrescaler_2 RCC_CFGR_MCO_PRE_2 +#define RCC_MCOPrescaler_4 RCC_CFGR_MCO_PRE_4 +#define RCC_MCOPrescaler_8 RCC_CFGR_MCO_PRE_8 +#define RCC_MCOPrescaler_16 RCC_CFGR_MCO_PRE_16 +#define RCC_MCOPrescaler_32 RCC_CFGR_MCO_PRE_32 +#define RCC_MCOPrescaler_64 RCC_CFGR_MCO_PRE_64 +#define RCC_MCOPrescaler_128 RCC_CFGR_MCO_PRE_128 + +#define IS_RCC_MCO_PRESCALER(PRESCALER) (((PRESCALER) == RCC_MCOPrescaler_1) || \ + ((PRESCALER) == RCC_MCOPrescaler_2) || \ + ((PRESCALER) == RCC_MCOPrescaler_4) || \ + ((PRESCALER) == RCC_MCOPrescaler_8) || \ + ((PRESCALER) == RCC_MCOPrescaler_16) || \ + ((PRESCALER) == RCC_MCOPrescaler_32) || \ + ((PRESCALER) == RCC_MCOPrescaler_64) || \ + ((PRESCALER) == RCC_MCOPrescaler_128)) +/** + * @} + */ + +/** @defgroup RCC_USB_Device_clock_source + * @{ + */ + +#define RCC_USBCLKSource_PLLCLK_1Div5 ((uint8_t)0x00) +#define RCC_USBCLKSource_PLLCLK_Div1 ((uint8_t)0x01) + +#define IS_RCC_USBCLK_SOURCE(SOURCE) (((SOURCE) == RCC_USBCLKSource_PLLCLK_1Div5) || \ + ((SOURCE) == RCC_USBCLKSource_PLLCLK_Div1)) +/** + * @} + */ + +/** @defgroup RCC_Flag + * @{ + */ +#define RCC_FLAG_HSIRDY ((uint8_t)0x01) +#define RCC_FLAG_HSERDY ((uint8_t)0x11) +#define RCC_FLAG_PLLRDY ((uint8_t)0x19) +#define RCC_FLAG_MCOF ((uint8_t)0x9C) +#define RCC_FLAG_LSERDY ((uint8_t)0x21) +#define RCC_FLAG_LSIRDY ((uint8_t)0x41) +#define RCC_FLAG_OBLRST ((uint8_t)0x59) +#define RCC_FLAG_PINRST ((uint8_t)0x5A) +#define RCC_FLAG_PORRST ((uint8_t)0x5B) +#define RCC_FLAG_SFTRST ((uint8_t)0x5C) +#define RCC_FLAG_IWDGRST ((uint8_t)0x5D) +#define RCC_FLAG_WWDGRST ((uint8_t)0x5E) +#define RCC_FLAG_LPWRRST ((uint8_t)0x5F) + +#define IS_RCC_FLAG(FLAG) (((FLAG) == RCC_FLAG_HSIRDY) || ((FLAG) == RCC_FLAG_HSERDY) || \ + ((FLAG) == RCC_FLAG_PLLRDY) || ((FLAG) == RCC_FLAG_LSERDY) || \ + ((FLAG) == RCC_FLAG_LSIRDY) || ((FLAG) == RCC_FLAG_OBLRST) || \ + ((FLAG) == RCC_FLAG_PINRST) || ((FLAG) == RCC_FLAG_PORRST) || \ + ((FLAG) == RCC_FLAG_SFTRST) || ((FLAG) == RCC_FLAG_IWDGRST)|| \ + ((FLAG) == RCC_FLAG_WWDGRST)|| ((FLAG) == RCC_FLAG_LPWRRST)|| \ + ((FLAG) == RCC_FLAG_MCOF)) + +#define IS_RCC_HSI_CALIBRATION_VALUE(VALUE) ((VALUE) <= 0x1F) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Function used to set the RCC clock configuration to the default reset state */ +void RCC_DeInit(void); + +/* Internal/external clocks, PLL, CSS and MCO configuration functions *********/ +void RCC_HSEConfig(uint8_t RCC_HSE); +ErrorStatus RCC_WaitForHSEStartUp(void); +void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue); +void RCC_HSICmd(FunctionalState NewState); +void RCC_LSEConfig(uint32_t RCC_LSE); +void RCC_LSEDriveConfig(uint32_t RCC_LSEDrive); +void RCC_LSICmd(FunctionalState NewState); +void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul); +void RCC_PLLCmd(FunctionalState NewState); +void RCC_PREDIV1Config(uint32_t RCC_PREDIV1_Div); +void RCC_ClockSecuritySystemCmd(FunctionalState NewState); +#ifdef STM32F303xC + void RCC_MCOConfig(uint8_t RCC_MCOSource); +#else + void RCC_MCOConfig(uint8_t RCC_MCOSource,uint32_t RCC_MCOPrescaler); +#endif /* STM32F303xC */ + +/* System, AHB and APB busses clocks configuration functions ******************/ +void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource); +uint8_t RCC_GetSYSCLKSource(void); +void RCC_HCLKConfig(uint32_t RCC_SYSCLK); +void RCC_PCLK1Config(uint32_t RCC_HCLK); +void RCC_PCLK2Config(uint32_t RCC_HCLK); +void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks); + +/* Peripheral clocks configuration functions **********************************/ +void RCC_ADCCLKConfig(uint32_t RCC_PLLCLK); +void RCC_I2CCLKConfig(uint32_t RCC_I2CCLK); +void RCC_TIMCLKConfig(uint32_t RCC_TIMCLK); +void RCC_HRTIM1CLKConfig(uint32_t RCC_HRTIMCLK); +void RCC_I2SCLKConfig(uint32_t RCC_I2SCLKSource); +void RCC_USARTCLKConfig(uint32_t RCC_USARTCLK); +void RCC_USBCLKConfig(uint32_t RCC_USBCLKSource); + +void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource); +void RCC_RTCCLKCmd(FunctionalState NewState); +void RCC_BackupResetCmd(FunctionalState NewState); + +void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); +void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); +void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState); + +void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); +void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); +void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState); + +/* Interrupts and flags management functions **********************************/ +void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState); +FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG); +void RCC_ClearFlag(void); +ITStatus RCC_GetITStatus(uint8_t RCC_IT); +void RCC_ClearITPendingBit(uint8_t RCC_IT); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_RCC_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_rtc.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,862 @@ +/** + ****************************************************************************** + * @file stm32f30x_rtc.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the RTC firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_RTC_H +#define __STM32F30x_RTC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup RTC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief RTC Init structures definition + */ +typedef struct +{ + uint32_t RTC_HourFormat; /*!< Specifies the RTC Hour Format. + This parameter can be a value of @ref RTC_Hour_Formats */ + + uint32_t RTC_AsynchPrediv; /*!< Specifies the RTC Asynchronous Predivider value. + This parameter must be set to a value lower than 0x7F */ + + uint32_t RTC_SynchPrediv; /*!< Specifies the RTC Synchronous Predivider value. + This parameter must be set to a value lower than 0x1FFF */ +}RTC_InitTypeDef; + +/** + * @brief RTC Time structure definition + */ +typedef struct +{ + uint8_t RTC_Hours; /*!< Specifies the RTC Time Hour. + This parameter must be set to a value in the 0-12 range + if the RTC_HourFormat_12 is selected or 0-23 range if + the RTC_HourFormat_24 is selected. */ + + uint8_t RTC_Minutes; /*!< Specifies the RTC Time Minutes. + This parameter must be set to a value in the 0-59 range. */ + + uint8_t RTC_Seconds; /*!< Specifies the RTC Time Seconds. + This parameter must be set to a value in the 0-59 range. */ + + uint8_t RTC_H12; /*!< Specifies the RTC AM/PM Time. + This parameter can be a value of @ref RTC_AM_PM_Definitions */ +}RTC_TimeTypeDef; + +/** + * @brief RTC Date structure definition + */ +typedef struct +{ + uint8_t RTC_WeekDay; /*!< Specifies the RTC Date WeekDay. + This parameter can be a value of @ref RTC_WeekDay_Definitions */ + + uint8_t RTC_Month; /*!< Specifies the RTC Date Month (in BCD format). + This parameter can be a value of @ref RTC_Month_Date_Definitions */ + + uint8_t RTC_Date; /*!< Specifies the RTC Date. + This parameter must be set to a value in the 1-31 range. */ + + uint8_t RTC_Year; /*!< Specifies the RTC Date Year. + This parameter must be set to a value in the 0-99 range. */ +}RTC_DateTypeDef; + +/** + * @brief RTC Alarm structure definition + */ +typedef struct +{ + RTC_TimeTypeDef RTC_AlarmTime; /*!< Specifies the RTC Alarm Time members. */ + + uint32_t RTC_AlarmMask; /*!< Specifies the RTC Alarm Masks. + This parameter can be a value of @ref RTC_AlarmMask_Definitions */ + + uint32_t RTC_AlarmDateWeekDaySel; /*!< Specifies the RTC Alarm is on Date or WeekDay. + This parameter can be a value of @ref RTC_AlarmDateWeekDay_Definitions */ + + uint8_t RTC_AlarmDateWeekDay; /*!< Specifies the RTC Alarm Date/WeekDay. + If the Alarm Date is selected, this parameter + must be set to a value in the 1-31 range. + If the Alarm WeekDay is selected, this + parameter can be a value of @ref RTC_WeekDay_Definitions */ +}RTC_AlarmTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup RTC_Exported_Constants + * @{ + */ + + +/** @defgroup RTC_Hour_Formats + * @{ + */ +#define RTC_HourFormat_24 ((uint32_t)0x00000000) +#define RTC_HourFormat_12 ((uint32_t)0x00000040) +#define IS_RTC_HOUR_FORMAT(FORMAT) (((FORMAT) == RTC_HourFormat_12) || \ + ((FORMAT) == RTC_HourFormat_24)) +/** + * @} + */ + +/** @defgroup RTC_Asynchronous_Predivider + * @{ + */ +#define IS_RTC_ASYNCH_PREDIV(PREDIV) ((PREDIV) <= 0x7F) + +/** + * @} + */ + + +/** @defgroup RTC_Synchronous_Predivider + * @{ + */ +#define IS_RTC_SYNCH_PREDIV(PREDIV) ((PREDIV) <= 0x7FFF) + +/** + * @} + */ + +/** @defgroup RTC_Time_Definitions + * @{ + */ +#define IS_RTC_HOUR12(HOUR) (((HOUR) > 0) && ((HOUR) <= 12)) +#define IS_RTC_HOUR24(HOUR) ((HOUR) <= 23) +#define IS_RTC_MINUTES(MINUTES) ((MINUTES) <= 59) +#define IS_RTC_SECONDS(SECONDS) ((SECONDS) <= 59) + +/** + * @} + */ + +/** @defgroup RTC_AM_PM_Definitions + * @{ + */ +#define RTC_H12_AM ((uint8_t)0x00) +#define RTC_H12_PM ((uint8_t)0x40) +#define IS_RTC_H12(PM) (((PM) == RTC_H12_AM) || ((PM) == RTC_H12_PM)) + +/** + * @} + */ + +/** @defgroup RTC_Year_Date_Definitions + * @{ + */ +#define IS_RTC_YEAR(YEAR) ((YEAR) <= 99) + +/** + * @} + */ + +/** @defgroup RTC_Month_Date_Definitions + * @{ + */ + +/* Coded in BCD format */ +#define RTC_Month_January ((uint8_t)0x01) +#define RTC_Month_February ((uint8_t)0x02) +#define RTC_Month_March ((uint8_t)0x03) +#define RTC_Month_April ((uint8_t)0x04) +#define RTC_Month_May ((uint8_t)0x05) +#define RTC_Month_June ((uint8_t)0x06) +#define RTC_Month_July ((uint8_t)0x07) +#define RTC_Month_August ((uint8_t)0x08) +#define RTC_Month_September ((uint8_t)0x09) +#define RTC_Month_October ((uint8_t)0x10) +#define RTC_Month_November ((uint8_t)0x11) +#define RTC_Month_December ((uint8_t)0x12) +#define IS_RTC_MONTH(MONTH) (((MONTH) >= 1) && ((MONTH) <= 12)) +#define IS_RTC_DATE(DATE) (((DATE) >= 1) && ((DATE) <= 31)) + +/** + * @} + */ + +/** @defgroup RTC_WeekDay_Definitions + * @{ + */ + +#define RTC_Weekday_Monday ((uint8_t)0x01) +#define RTC_Weekday_Tuesday ((uint8_t)0x02) +#define RTC_Weekday_Wednesday ((uint8_t)0x03) +#define RTC_Weekday_Thursday ((uint8_t)0x04) +#define RTC_Weekday_Friday ((uint8_t)0x05) +#define RTC_Weekday_Saturday ((uint8_t)0x06) +#define RTC_Weekday_Sunday ((uint8_t)0x07) +#define IS_RTC_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_Weekday_Monday) || \ + ((WEEKDAY) == RTC_Weekday_Tuesday) || \ + ((WEEKDAY) == RTC_Weekday_Wednesday) || \ + ((WEEKDAY) == RTC_Weekday_Thursday) || \ + ((WEEKDAY) == RTC_Weekday_Friday) || \ + ((WEEKDAY) == RTC_Weekday_Saturday) || \ + ((WEEKDAY) == RTC_Weekday_Sunday)) +/** + * @} + */ + + +/** @defgroup RTC_Alarm_Definitions + * @{ + */ +#define IS_RTC_ALARM_DATE_WEEKDAY_DATE(DATE) (((DATE) > 0) && ((DATE) <= 31)) +#define IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_Weekday_Monday) || \ + ((WEEKDAY) == RTC_Weekday_Tuesday) || \ + ((WEEKDAY) == RTC_Weekday_Wednesday) || \ + ((WEEKDAY) == RTC_Weekday_Thursday) || \ + ((WEEKDAY) == RTC_Weekday_Friday) || \ + ((WEEKDAY) == RTC_Weekday_Saturday) || \ + ((WEEKDAY) == RTC_Weekday_Sunday)) + +/** + * @} + */ + + +/** @defgroup RTC_AlarmDateWeekDay_Definitions + * @{ + */ +#define RTC_AlarmDateWeekDaySel_Date ((uint32_t)0x00000000) +#define RTC_AlarmDateWeekDaySel_WeekDay ((uint32_t)0x40000000) + +#define IS_RTC_ALARM_DATE_WEEKDAY_SEL(SEL) (((SEL) == RTC_AlarmDateWeekDaySel_Date) || \ + ((SEL) == RTC_AlarmDateWeekDaySel_WeekDay)) + +/** + * @} + */ + + +/** @defgroup RTC_AlarmMask_Definitions + * @{ + */ +#define RTC_AlarmMask_None ((uint32_t)0x00000000) +#define RTC_AlarmMask_DateWeekDay ((uint32_t)0x80000000) +#define RTC_AlarmMask_Hours ((uint32_t)0x00800000) +#define RTC_AlarmMask_Minutes ((uint32_t)0x00008000) +#define RTC_AlarmMask_Seconds ((uint32_t)0x00000080) +#define RTC_AlarmMask_All ((uint32_t)0x80808080) +#define IS_ALARM_MASK(MASK) (((MASK) & 0x7F7F7F7F) == (uint32_t)RESET) + +/** + * @} + */ + +/** @defgroup RTC_Alarms_Definitions + * @{ + */ +#define RTC_Alarm_A ((uint32_t)0x00000100) +#define RTC_Alarm_B ((uint32_t)0x00000200) +#define IS_RTC_ALARM(ALARM) (((ALARM) == RTC_Alarm_A) || ((ALARM) == RTC_Alarm_B)) +#define IS_RTC_CMD_ALARM(ALARM) (((ALARM) & (RTC_Alarm_A | RTC_Alarm_B)) != (uint32_t)RESET) + +/** + * @} + */ + +/** @defgroup RTC_Alarm_Sub_Seconds_Masks_Definitions + * @{ + */ +#define RTC_AlarmSubSecondMask_All ((uint32_t)0x00000000) /*!< All Alarm SS fields are masked. + There is no comparison on sub seconds + for Alarm */ +#define RTC_AlarmSubSecondMask_SS14_1 ((uint32_t)0x01000000) /*!< SS[14:1] are don't care in Alarm + comparison. Only SS[0] is compared. */ +#define RTC_AlarmSubSecondMask_SS14_2 ((uint32_t)0x02000000) /*!< SS[14:2] are don't care in Alarm + comparison. Only SS[1:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_3 ((uint32_t)0x03000000) /*!< SS[14:3] are don't care in Alarm + comparison. Only SS[2:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_4 ((uint32_t)0x04000000) /*!< SS[14:4] are don't care in Alarm + comparison. Only SS[3:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_5 ((uint32_t)0x05000000) /*!< SS[14:5] are don't care in Alarm + comparison. Only SS[4:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_6 ((uint32_t)0x06000000) /*!< SS[14:6] are don't care in Alarm + comparison. Only SS[5:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_7 ((uint32_t)0x07000000) /*!< SS[14:7] are don't care in Alarm + comparison. Only SS[6:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_8 ((uint32_t)0x08000000) /*!< SS[14:8] are don't care in Alarm + comparison. Only SS[7:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_9 ((uint32_t)0x09000000) /*!< SS[14:9] are don't care in Alarm + comparison. Only SS[8:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_10 ((uint32_t)0x0A000000) /*!< SS[14:10] are don't care in Alarm + comparison. Only SS[9:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_11 ((uint32_t)0x0B000000) /*!< SS[14:11] are don't care in Alarm + comparison. Only SS[10:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_12 ((uint32_t)0x0C000000) /*!< SS[14:12] are don't care in Alarm + comparison.Only SS[11:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14_13 ((uint32_t)0x0D000000) /*!< SS[14:13] are don't care in Alarm + comparison. Only SS[12:0] are compared */ +#define RTC_AlarmSubSecondMask_SS14 ((uint32_t)0x0E000000) /*!< SS[14] is don't care in Alarm + comparison.Only SS[13:0] are compared */ +#define RTC_AlarmSubSecondMask_None ((uint32_t)0x0F000000) /*!< SS[14:0] are compared and must match + to activate alarm. */ +#define IS_RTC_ALARM_SUB_SECOND_MASK(MASK) (((MASK) == RTC_AlarmSubSecondMask_All) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_1) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_2) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_3) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_4) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_5) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_6) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_7) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_8) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_9) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_10) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_11) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_12) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14_13) || \ + ((MASK) == RTC_AlarmSubSecondMask_SS14) || \ + ((MASK) == RTC_AlarmSubSecondMask_None)) +/** + * @} + */ + +/** @defgroup RTC_Alarm_Sub_Seconds_Value + * @{ + */ + +#define IS_RTC_ALARM_SUB_SECOND_VALUE(VALUE) ((VALUE) <= 0x00007FFF) + +/** + * @} + */ + +/** @defgroup RTC_Wakeup_Timer_Definitions + * @{ + */ +#define RTC_WakeUpClock_RTCCLK_Div16 ((uint32_t)0x00000000) +#define RTC_WakeUpClock_RTCCLK_Div8 ((uint32_t)0x00000001) +#define RTC_WakeUpClock_RTCCLK_Div4 ((uint32_t)0x00000002) +#define RTC_WakeUpClock_RTCCLK_Div2 ((uint32_t)0x00000003) +#define RTC_WakeUpClock_CK_SPRE_16bits ((uint32_t)0x00000004) +#define RTC_WakeUpClock_CK_SPRE_17bits ((uint32_t)0x00000006) +#define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WakeUpClock_RTCCLK_Div16) || \ + ((CLOCK) == RTC_WakeUpClock_RTCCLK_Div8) || \ + ((CLOCK) == RTC_WakeUpClock_RTCCLK_Div4) || \ + ((CLOCK) == RTC_WakeUpClock_RTCCLK_Div2) || \ + ((CLOCK) == RTC_WakeUpClock_CK_SPRE_16bits) || \ + ((CLOCK) == RTC_WakeUpClock_CK_SPRE_17bits)) +#define IS_RTC_WAKEUP_COUNTER(COUNTER) ((COUNTER) <= 0xFFFF) +/** + * @} + */ + +/** @defgroup RTC_Time_Stamp_Edges_definitions + * @{ + */ +#define RTC_TimeStampEdge_Rising ((uint32_t)0x00000000) +#define RTC_TimeStampEdge_Falling ((uint32_t)0x00000008) +#define IS_RTC_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TimeStampEdge_Rising) || \ + ((EDGE) == RTC_TimeStampEdge_Falling)) +/** + * @} + */ + +/** @defgroup RTC_Output_selection_Definitions + * @{ + */ +#define RTC_Output_Disable ((uint32_t)0x00000000) +#define RTC_Output_AlarmA ((uint32_t)0x00200000) +#define RTC_Output_AlarmB ((uint32_t)0x00400000) +#define RTC_Output_WakeUp ((uint32_t)0x00600000) + +#define IS_RTC_OUTPUT(OUTPUT) (((OUTPUT) == RTC_Output_Disable) || \ + ((OUTPUT) == RTC_Output_AlarmA) || \ + ((OUTPUT) == RTC_Output_AlarmB) || \ + ((OUTPUT) == RTC_Output_WakeUp)) + +/** + * @} + */ + +/** @defgroup RTC_Output_Polarity_Definitions + * @{ + */ +#define RTC_OutputPolarity_High ((uint32_t)0x00000000) +#define RTC_OutputPolarity_Low ((uint32_t)0x00100000) +#define IS_RTC_OUTPUT_POL(POL) (((POL) == RTC_OutputPolarity_High) || \ + ((POL) == RTC_OutputPolarity_Low)) +/** + * @} + */ + +/** @defgroup RTC_Digital_Calibration_Definitions + * @{ + */ +#define RTC_CalibSign_Positive ((uint32_t)0x00000000) +#define RTC_CalibSign_Negative ((uint32_t)0x00000080) +#define IS_RTC_CALIB_SIGN(SIGN) (((SIGN) == RTC_CalibSign_Positive) || \ + ((SIGN) == RTC_CalibSign_Negative)) +#define IS_RTC_CALIB_VALUE(VALUE) ((VALUE) < 0x20) + +/** + * @} + */ + + /** @defgroup RTC_Calib_Output_selection_Definitions + * @{ + */ +#define RTC_CalibOutput_512Hz ((uint32_t)0x00000000) +#define RTC_CalibOutput_1Hz ((uint32_t)0x00080000) +#define IS_RTC_CALIB_OUTPUT(OUTPUT) (((OUTPUT) == RTC_CalibOutput_512Hz) || \ + ((OUTPUT) == RTC_CalibOutput_1Hz)) +/** + * @} + */ + +/** @defgroup RTC_Smooth_calib_period_Definitions + * @{ + */ +#define RTC_SmoothCalibPeriod_32sec ((uint32_t)0x00000000) /*!< if RTCCLK = 32768 Hz, Smooth calibation + period is 32s, else 2exp20 RTCCLK seconds */ +#define RTC_SmoothCalibPeriod_16sec ((uint32_t)0x00002000) /*!< if RTCCLK = 32768 Hz, Smooth calibation + period is 16s, else 2exp19 RTCCLK seconds */ +#define RTC_SmoothCalibPeriod_8sec ((uint32_t)0x00004000) /*!< if RTCCLK = 32768 Hz, Smooth calibation + period is 8s, else 2exp18 RTCCLK seconds */ +#define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SmoothCalibPeriod_32sec) || \ + ((PERIOD) == RTC_SmoothCalibPeriod_16sec) || \ + ((PERIOD) == RTC_SmoothCalibPeriod_8sec)) + +/** + * @} + */ + +/** @defgroup RTC_Smooth_calib_Plus_pulses_Definitions + * @{ + */ +#define RTC_SmoothCalibPlusPulses_Set ((uint32_t)0x00008000) /*!< The number of RTCCLK pulses added + during a X -second window = Y - CALM[8:0]. + with Y = 512, 256, 128 when X = 32, 16, 8 */ +#define RTC_SmoothCalibPlusPulses_Reset ((uint32_t)0x00000000) /*!< The number of RTCCLK pulses subbstited + during a 32-second window = CALM[8:0]. */ +#define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SmoothCalibPlusPulses_Set) || \ + ((PLUS) == RTC_SmoothCalibPlusPulses_Reset)) + +/** + * @} + */ + +/** @defgroup RTC_Smooth_calib_Minus_pulses_Definitions + * @{ + */ +#define IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= 0x000001FF) + +/** + * @} + */ + +/** @defgroup RTC_DayLightSaving_Definitions + * @{ + */ +#define RTC_DayLightSaving_SUB1H ((uint32_t)0x00020000) +#define RTC_DayLightSaving_ADD1H ((uint32_t)0x00010000) +#define IS_RTC_DAYLIGHT_SAVING(SAVE) (((SAVE) == RTC_DayLightSaving_SUB1H) || \ + ((SAVE) == RTC_DayLightSaving_ADD1H)) + +#define RTC_StoreOperation_Reset ((uint32_t)0x00000000) +#define RTC_StoreOperation_Set ((uint32_t)0x00040000) +#define IS_RTC_STORE_OPERATION(OPERATION) (((OPERATION) == RTC_StoreOperation_Reset) || \ + ((OPERATION) == RTC_StoreOperation_Set)) +/** + * @} + */ + +/** @defgroup RTC_Tamper_Trigger_Definitions + * @{ + */ +#define RTC_TamperTrigger_RisingEdge ((uint32_t)0x00000000) +#define RTC_TamperTrigger_FallingEdge ((uint32_t)0x00000001) +#define RTC_TamperTrigger_LowLevel ((uint32_t)0x00000000) +#define RTC_TamperTrigger_HighLevel ((uint32_t)0x00000001) +#define IS_RTC_TAMPER_TRIGGER(TRIGGER) (((TRIGGER) == RTC_TamperTrigger_RisingEdge) || \ + ((TRIGGER) == RTC_TamperTrigger_FallingEdge) || \ + ((TRIGGER) == RTC_TamperTrigger_LowLevel) || \ + ((TRIGGER) == RTC_TamperTrigger_HighLevel)) + +/** + * @} + */ + +/** @defgroup RTC_Tamper_Filter_Definitions + * @{ + */ +#define RTC_TamperFilter_Disable ((uint32_t)0x00000000) /*!< Tamper filter is disabled */ + +#define RTC_TamperFilter_2Sample ((uint32_t)0x00000800) /*!< Tamper is activated after 2 + consecutive samples at the active level */ +#define RTC_TamperFilter_4Sample ((uint32_t)0x00001000) /*!< Tamper is activated after 4 + consecutive samples at the active level */ +#define RTC_TamperFilter_8Sample ((uint32_t)0x00001800) /*!< Tamper is activated after 8 + consecutive samples at the active leve. */ +#define IS_RTC_TAMPER_FILTER(FILTER) (((FILTER) == RTC_TamperFilter_Disable) || \ + ((FILTER) == RTC_TamperFilter_2Sample) || \ + ((FILTER) == RTC_TamperFilter_4Sample) || \ + ((FILTER) == RTC_TamperFilter_8Sample)) +/** + * @} + */ + +/** @defgroup RTC_Tamper_Sampling_Frequencies_Definitions + * @{ + */ +#define RTC_TamperSamplingFreq_RTCCLK_Div32768 ((uint32_t)0x00000000) /*!< Each of the tamper inputs are sampled + with a frequency = RTCCLK / 32768 */ +#define RTC_TamperSamplingFreq_RTCCLK_Div16384 ((uint32_t)0x000000100) /*!< Each of the tamper inputs are sampled + with a frequency = RTCCLK / 16384 */ +#define RTC_TamperSamplingFreq_RTCCLK_Div8192 ((uint32_t)0x00000200) /*!< Each of the tamper inputs are sampled + with a frequency = RTCCLK / 8192 */ +#define RTC_TamperSamplingFreq_RTCCLK_Div4096 ((uint32_t)0x00000300) /*!< Each of the tamper inputs are sampled + with a frequency = RTCCLK / 4096 */ +#define RTC_TamperSamplingFreq_RTCCLK_Div2048 ((uint32_t)0x00000400) /*!< Each of the tamper inputs are sampled + with a frequency = RTCCLK / 2048 */ +#define RTC_TamperSamplingFreq_RTCCLK_Div1024 ((uint32_t)0x00000500) /*!< Each of the tamper inputs are sampled + with a frequency = RTCCLK / 1024 */ +#define RTC_TamperSamplingFreq_RTCCLK_Div512 ((uint32_t)0x00000600) /*!< Each of the tamper inputs are sampled + with a frequency = RTCCLK / 512 */ +#define RTC_TamperSamplingFreq_RTCCLK_Div256 ((uint32_t)0x00000700) /*!< Each of the tamper inputs are sampled + with a frequency = RTCCLK / 256 */ +#define IS_RTC_TAMPER_SAMPLING_FREQ(FREQ) (((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div32768) || \ + ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div16384) || \ + ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div8192) || \ + ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div4096) || \ + ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div2048) || \ + ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div1024) || \ + ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div512) || \ + ((FREQ) ==RTC_TamperSamplingFreq_RTCCLK_Div256)) + +/** + * @} + */ + + /** @defgroup RTC_Tamper_Pin_Precharge_Duration_Definitions + * @{ + */ +#define RTC_TamperPrechargeDuration_1RTCCLK ((uint32_t)0x00000000) /*!< Tamper pins are pre-charged before + sampling during 1 RTCCLK cycle */ +#define RTC_TamperPrechargeDuration_2RTCCLK ((uint32_t)0x00002000) /*!< Tamper pins are pre-charged before + sampling during 2 RTCCLK cycles */ +#define RTC_TamperPrechargeDuration_4RTCCLK ((uint32_t)0x00004000) /*!< Tamper pins are pre-charged before + sampling during 4 RTCCLK cycles */ +#define RTC_TamperPrechargeDuration_8RTCCLK ((uint32_t)0x00006000) /*!< Tamper pins are pre-charged before + sampling during 8 RTCCLK cycles */ + +#define IS_RTC_TAMPER_PRECHARGE_DURATION(DURATION) (((DURATION) == RTC_TamperPrechargeDuration_1RTCCLK) || \ + ((DURATION) == RTC_TamperPrechargeDuration_2RTCCLK) || \ + ((DURATION) == RTC_TamperPrechargeDuration_4RTCCLK) || \ + ((DURATION) == RTC_TamperPrechargeDuration_8RTCCLK)) +/** + * @} + */ + +/** @defgroup RTC_Tamper_Pins_Definitions + * @{ + */ +#define RTC_Tamper_1 RTC_TAFCR_TAMP1E /*!< Tamper detection enable for + input tamper 1 */ +#define RTC_Tamper_2 RTC_TAFCR_TAMP2E /*!< Tamper detection enable for + input tamper 2 */ +#define RTC_Tamper_3 RTC_TAFCR_TAMP3E /*!< Tamper detection enable for + input tamper 3 */ + +#define IS_RTC_TAMPER(TAMPER) ((((TAMPER) & (uint32_t)0xFFFFFFD6) == 0x00) && ((TAMPER) != (uint32_t)RESET)) + + +/** + * @} + */ + +/** @defgroup RTC_Output_Type_ALARM_OUT + * @{ + */ +#define RTC_OutputType_OpenDrain ((uint32_t)0x00000000) +#define RTC_OutputType_PushPull ((uint32_t)0x00040000) +#define IS_RTC_OUTPUT_TYPE(TYPE) (((TYPE) == RTC_OutputType_OpenDrain) || \ + ((TYPE) == RTC_OutputType_PushPull)) + +/** + * @} + */ + +/** @defgroup RTC_Add_1_Second_Parameter_Definitions + * @{ + */ +#define RTC_ShiftAdd1S_Reset ((uint32_t)0x00000000) +#define RTC_ShiftAdd1S_Set ((uint32_t)0x80000000) +#define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_ShiftAdd1S_Reset) || \ + ((SEL) == RTC_ShiftAdd1S_Set)) +/** + * @} + */ + +/** @defgroup RTC_Substract_Fraction_Of_Second_Value + * @{ + */ +#define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= 0x00007FFF) + +/** + * @} + */ + +/** @defgroup RTC_Backup_Registers_Definitions + * @{ + */ + +#define RTC_BKP_DR0 ((uint32_t)0x00000000) +#define RTC_BKP_DR1 ((uint32_t)0x00000001) +#define RTC_BKP_DR2 ((uint32_t)0x00000002) +#define RTC_BKP_DR3 ((uint32_t)0x00000003) +#define RTC_BKP_DR4 ((uint32_t)0x00000004) +#define RTC_BKP_DR5 ((uint32_t)0x00000005) +#define RTC_BKP_DR6 ((uint32_t)0x00000006) +#define RTC_BKP_DR7 ((uint32_t)0x00000007) +#define RTC_BKP_DR8 ((uint32_t)0x00000008) +#define RTC_BKP_DR9 ((uint32_t)0x00000009) +#define RTC_BKP_DR10 ((uint32_t)0x0000000A) +#define RTC_BKP_DR11 ((uint32_t)0x0000000B) +#define RTC_BKP_DR12 ((uint32_t)0x0000000C) +#define RTC_BKP_DR13 ((uint32_t)0x0000000D) +#define RTC_BKP_DR14 ((uint32_t)0x0000000E) +#define RTC_BKP_DR15 ((uint32_t)0x0000000F) +#define IS_RTC_BKP(BKP) (((BKP) == RTC_BKP_DR0) || \ + ((BKP) == RTC_BKP_DR1) || \ + ((BKP) == RTC_BKP_DR2) || \ + ((BKP) == RTC_BKP_DR3) || \ + ((BKP) == RTC_BKP_DR4) || \ + ((BKP) == RTC_BKP_DR5) || \ + ((BKP) == RTC_BKP_DR6) || \ + ((BKP) == RTC_BKP_DR7) || \ + ((BKP) == RTC_BKP_DR8) || \ + ((BKP) == RTC_BKP_DR9) || \ + ((BKP) == RTC_BKP_DR10) || \ + ((BKP) == RTC_BKP_DR11) || \ + ((BKP) == RTC_BKP_DR12) || \ + ((BKP) == RTC_BKP_DR13) || \ + ((BKP) == RTC_BKP_DR14) || \ + ((BKP) == RTC_BKP_DR15)) +/** + * @} + */ + +/** @defgroup RTC_Input_parameter_format_definitions + * @{ + */ +#define RTC_Format_BIN ((uint32_t)0x000000000) +#define RTC_Format_BCD ((uint32_t)0x000000001) +#define IS_RTC_FORMAT(FORMAT) (((FORMAT) == RTC_Format_BIN) || ((FORMAT) == RTC_Format_BCD)) + +/** + * @} + */ + +/** @defgroup RTC_Flags_Definitions + * @{ + */ +#define RTC_FLAG_RECALPF ((uint32_t)0x00010000) +#define RTC_FLAG_TAMP3F ((uint32_t)0x00008000) +#define RTC_FLAG_TAMP2F ((uint32_t)0x00004000) +#define RTC_FLAG_TAMP1F ((uint32_t)0x00002000) +#define RTC_FLAG_TSOVF ((uint32_t)0x00001000) +#define RTC_FLAG_TSF ((uint32_t)0x00000800) +#define RTC_FLAG_WUTF ((uint32_t)0x00000400) +#define RTC_FLAG_ALRBF ((uint32_t)0x00000200) +#define RTC_FLAG_ALRAF ((uint32_t)0x00000100) +#define RTC_FLAG_INITF ((uint32_t)0x00000040) +#define RTC_FLAG_RSF ((uint32_t)0x00000020) +#define RTC_FLAG_INITS ((uint32_t)0x00000010) +#define RTC_FLAG_SHPF ((uint32_t)0x00000008) +#define RTC_FLAG_WUTWF ((uint32_t)0x00000004) +#define RTC_FLAG_ALRBWF ((uint32_t)0x00000002) +#define RTC_FLAG_ALRAWF ((uint32_t)0x00000001) +#define IS_RTC_GET_FLAG(FLAG) (((FLAG) == RTC_FLAG_TSOVF) || ((FLAG) == RTC_FLAG_TSF) || \ + ((FLAG) == RTC_FLAG_WUTF) || ((FLAG) == RTC_FLAG_ALRBF) || \ + ((FLAG) == RTC_FLAG_ALRAF) || ((FLAG) == RTC_FLAG_INITF) || \ + ((FLAG) == RTC_FLAG_RSF) || ((FLAG) == RTC_FLAG_WUTWF) || \ + ((FLAG) == RTC_FLAG_ALRBWF) || ((FLAG) == RTC_FLAG_ALRAWF) || \ + ((FLAG) == RTC_FLAG_TAMP1F) || ((FLAG) == RTC_FLAG_TAMP2F) || \ + ((FLAG) == RTC_FLAG_TAMP3F) || ((FLAG) == RTC_FLAG_RECALPF) || \ + ((FLAG) == RTC_FLAG_SHPF)) +#define IS_RTC_CLEAR_FLAG(FLAG) (((FLAG) != (uint32_t)RESET) && (((FLAG) & 0xFFFF00DF) == (uint32_t)RESET)) + +/** + * @} + */ + +/** @defgroup RTC_Interrupts_Definitions + * @{ + */ +#define RTC_IT_TS ((uint32_t)0x00008000) +#define RTC_IT_WUT ((uint32_t)0x00004000) +#define RTC_IT_ALRB ((uint32_t)0x00002000) +#define RTC_IT_ALRA ((uint32_t)0x00001000) +#define RTC_IT_TAMP ((uint32_t)0x00000004) /* Used only to Enable the Tamper Interrupt */ +#define RTC_IT_TAMP1 ((uint32_t)0x00020000) +#define RTC_IT_TAMP2 ((uint32_t)0x00040000) +#define RTC_IT_TAMP3 ((uint32_t)0x00080000) + + +#define IS_RTC_CONFIG_IT(IT) (((IT) != (uint32_t)RESET) && (((IT) & 0xFFFF0FFB) == (uint32_t)RESET)) +#define IS_RTC_GET_IT(IT) (((IT) == RTC_IT_TS) || ((IT) == RTC_IT_WUT) || \ + ((IT) == RTC_IT_ALRB) || ((IT) == RTC_IT_ALRA) || \ + ((IT) == RTC_IT_TAMP1) || ((IT) == RTC_IT_TAMP2) || \ + ((IT) == RTC_IT_TAMP3)) +#define IS_RTC_CLEAR_IT(IT) (((IT) != (uint32_t)RESET) && (((IT) & 0xFFF10FFF) == (uint32_t)RESET)) + +/** + * @} + */ + +/** + * @} + */ + + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Function used to set the RTC configuration to the default reset state *****/ +ErrorStatus RTC_DeInit(void); + + +/* Initialization and Configuration functions *********************************/ +ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct); +void RTC_StructInit(RTC_InitTypeDef* RTC_InitStruct); +void RTC_WriteProtectionCmd(FunctionalState NewState); +ErrorStatus RTC_EnterInitMode(void); +void RTC_ExitInitMode(void); +ErrorStatus RTC_WaitForSynchro(void); +ErrorStatus RTC_RefClockCmd(FunctionalState NewState); +void RTC_BypassShadowCmd(FunctionalState NewState); + +/* Time and Date configuration functions **************************************/ +ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct); +void RTC_TimeStructInit(RTC_TimeTypeDef* RTC_TimeStruct); +void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct); +uint32_t RTC_GetSubSecond(void); +ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct); +void RTC_DateStructInit(RTC_DateTypeDef* RTC_DateStruct); +void RTC_GetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct); + +/* Alarms (Alarm A and Alarm B) configuration functions **********************/ +void RTC_SetAlarm(uint32_t RTC_Format, uint32_t RTC_Alarm, RTC_AlarmTypeDef* RTC_AlarmStruct); +void RTC_AlarmStructInit(RTC_AlarmTypeDef* RTC_AlarmStruct); +void RTC_GetAlarm(uint32_t RTC_Format, uint32_t RTC_Alarm, RTC_AlarmTypeDef* RTC_AlarmStruct); +ErrorStatus RTC_AlarmCmd(uint32_t RTC_Alarm, FunctionalState NewState); +void RTC_AlarmSubSecondConfig(uint32_t RTC_Alarm, uint32_t RTC_AlarmSubSecondValue, uint32_t RTC_AlarmSubSecondMask); +uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm); + +/* WakeUp Timer configuration functions ***************************************/ +void RTC_WakeUpClockConfig(uint32_t RTC_WakeUpClock); +void RTC_SetWakeUpCounter(uint32_t RTC_WakeUpCounter); +uint32_t RTC_GetWakeUpCounter(void); +ErrorStatus RTC_WakeUpCmd(FunctionalState NewState); + +/* Daylight Saving configuration functions ************************************/ +void RTC_DayLightSavingConfig(uint32_t RTC_DayLightSaving, uint32_t RTC_StoreOperation); +uint32_t RTC_GetStoreOperation(void); + +/* Output pin Configuration function ******************************************/ +void RTC_OutputConfig(uint32_t RTC_Output, uint32_t RTC_OutputPolarity); + +/* Digital Calibration configuration functions ********************************/ +void RTC_CalibOutputCmd(FunctionalState NewState); +void RTC_CalibOutputConfig(uint32_t RTC_CalibOutput); +ErrorStatus RTC_SmoothCalibConfig(uint32_t RTC_SmoothCalibPeriod, + uint32_t RTC_SmoothCalibPlusPulses, + uint32_t RTC_SmouthCalibMinusPulsesValue); + +/* TimeStamp configuration functions ******************************************/ +void RTC_TimeStampCmd(uint32_t RTC_TimeStampEdge, FunctionalState NewState); +void RTC_GetTimeStamp(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_StampTimeStruct, + RTC_DateTypeDef* RTC_StampDateStruct); +uint32_t RTC_GetTimeStampSubSecond(void); + +/* Tampers configuration functions ********************************************/ +void RTC_TamperTriggerConfig(uint32_t RTC_Tamper, uint32_t RTC_TamperTrigger); +void RTC_TamperCmd(uint32_t RTC_Tamper, FunctionalState NewState); +void RTC_TamperFilterConfig(uint32_t RTC_TamperFilter); +void RTC_TamperSamplingFreqConfig(uint32_t RTC_TamperSamplingFreq); +void RTC_TamperPinsPrechargeDuration(uint32_t RTC_TamperPrechargeDuration); +void RTC_TimeStampOnTamperDetectionCmd(FunctionalState NewState); +void RTC_TamperPullUpCmd(FunctionalState NewState); + +/* Backup Data Registers configuration functions ******************************/ +void RTC_WriteBackupRegister(uint32_t RTC_BKP_DR, uint32_t Data); +uint32_t RTC_ReadBackupRegister(uint32_t RTC_BKP_DR); + +/* Output Type Config configuration functions *********************************/ +void RTC_OutputTypeConfig(uint32_t RTC_OutputType); + +/* RTC_Shift_control_synchonisation_functions *********************************/ +ErrorStatus RTC_SynchroShiftConfig(uint32_t RTC_ShiftAdd1S, uint32_t RTC_ShiftSubFS); + +/* Interrupts and flags management functions **********************************/ +void RTC_ITConfig(uint32_t RTC_IT, FunctionalState NewState); +FlagStatus RTC_GetFlagStatus(uint32_t RTC_FLAG); +void RTC_ClearFlag(uint32_t RTC_FLAG); +ITStatus RTC_GetITStatus(uint32_t RTC_IT); +void RTC_ClearITPendingBit(uint32_t RTC_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_RTC_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_spi.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,616 @@ +/** + ****************************************************************************** + * @file stm32f30x_spi.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the SPI + * firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_SPI_H +#define __STM32F30x_SPI_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup SPI + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief SPI Init structure definition + */ + +typedef struct +{ + uint16_t SPI_Direction; /*!< Specifies the SPI unidirectional or bidirectional data mode. + This parameter can be a value of @ref SPI_data_direction */ + + uint16_t SPI_Mode; /*!< Specifies the SPI mode (Master/Slave). + This parameter can be a value of @ref SPI_mode */ + + uint16_t SPI_DataSize; /*!< Specifies the SPI data size. + This parameter can be a value of @ref SPI_data_size */ + + uint16_t SPI_CPOL; /*!< Specifies the serial clock steady state. + This parameter can be a value of @ref SPI_Clock_Polarity */ + + uint16_t SPI_CPHA; /*!< Specifies the clock active edge for the bit capture. + This parameter can be a value of @ref SPI_Clock_Phase */ + + uint16_t SPI_NSS; /*!< Specifies whether the NSS signal is managed by + hardware (NSS pin) or by software using the SSI bit. + This parameter can be a value of @ref SPI_Slave_Select_management */ + + uint16_t SPI_BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be + used to configure the transmit and receive SCK clock. + This parameter can be a value of @ref SPI_BaudRate_Prescaler. + @note The communication clock is derived from the master + clock. The slave clock does not need to be set. */ + + uint16_t SPI_FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit. + This parameter can be a value of @ref SPI_MSB_LSB_transmission */ + + uint16_t SPI_CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation. */ +}SPI_InitTypeDef; + + +/** + * @brief I2S Init structure definition + */ + +typedef struct +{ + uint16_t I2S_Mode; /*!< Specifies the I2S operating mode. + This parameter can be a value of @ref I2S_Mode */ + + uint16_t I2S_Standard; /*!< Specifies the standard used for the I2S communication. + This parameter can be a value of @ref I2S_Standard */ + + uint16_t I2S_DataFormat; /*!< Specifies the data format for the I2S communication. + This parameter can be a value of @ref I2S_Data_Format */ + + uint16_t I2S_MCLKOutput; /*!< Specifies whether the I2S MCLK output is enabled or not. + This parameter can be a value of @ref I2S_MCLK_Output */ + + uint32_t I2S_AudioFreq; /*!< Specifies the frequency selected for the I2S communication. + This parameter can be a value of @ref I2S_Audio_Frequency */ + + uint16_t I2S_CPOL; /*!< Specifies the idle state of the I2S clock. + This parameter can be a value of @ref I2S_Clock_Polarity */ +}I2S_InitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup SPI_Exported_Constants + * @{ + */ + +#define IS_SPI_ALL_PERIPH(PERIPH) (((PERIPH) == SPI1) || \ + ((PERIPH) == SPI2) || \ + ((PERIPH) == SPI3)) + +#define IS_SPI_ALL_PERIPH_EXT(PERIPH) (((PERIPH) == SPI1) || \ + ((PERIPH) == SPI2) || \ + ((PERIPH) == SPI3) || \ + ((PERIPH) == I2S2ext) || \ + ((PERIPH) == I2S3ext)) + +#define IS_SPI_23_PERIPH(PERIPH) (((PERIPH) == SPI2) || \ + ((PERIPH) == SPI3)) + +#define IS_SPI_23_PERIPH_EXT(PERIPH) (((PERIPH) == SPI2) || \ + ((PERIPH) == SPI3) || \ + ((PERIPH) == I2S2ext) || \ + ((PERIPH) == I2S3ext)) + +#define IS_I2S_EXT_PERIPH(PERIPH) (((PERIPH) == I2S2ext) || \ + ((PERIPH) == I2S3ext)) + +/** @defgroup SPI_data_direction + * @{ + */ + +#define SPI_Direction_2Lines_FullDuplex ((uint16_t)0x0000) +#define SPI_Direction_2Lines_RxOnly ((uint16_t)0x0400) +#define SPI_Direction_1Line_Rx ((uint16_t)0x8000) +#define SPI_Direction_1Line_Tx ((uint16_t)0xC000) +#define IS_SPI_DIRECTION_MODE(MODE) (((MODE) == SPI_Direction_2Lines_FullDuplex) || \ + ((MODE) == SPI_Direction_2Lines_RxOnly) || \ + ((MODE) == SPI_Direction_1Line_Rx) || \ + ((MODE) == SPI_Direction_1Line_Tx)) +/** + * @} + */ + +/** @defgroup SPI_mode + * @{ + */ + +#define SPI_Mode_Master ((uint16_t)0x0104) +#define SPI_Mode_Slave ((uint16_t)0x0000) +#define IS_SPI_MODE(MODE) (((MODE) == SPI_Mode_Master) || \ + ((MODE) == SPI_Mode_Slave)) +/** + * @} + */ + +/** @defgroup SPI_data_size + * @{ + */ + +#define SPI_DataSize_4b ((uint16_t)0x0300) +#define SPI_DataSize_5b ((uint16_t)0x0400) +#define SPI_DataSize_6b ((uint16_t)0x0500) +#define SPI_DataSize_7b ((uint16_t)0x0600) +#define SPI_DataSize_8b ((uint16_t)0x0700) +#define SPI_DataSize_9b ((uint16_t)0x0800) +#define SPI_DataSize_10b ((uint16_t)0x0900) +#define SPI_DataSize_11b ((uint16_t)0x0A00) +#define SPI_DataSize_12b ((uint16_t)0x0B00) +#define SPI_DataSize_13b ((uint16_t)0x0C00) +#define SPI_DataSize_14b ((uint16_t)0x0D00) +#define SPI_DataSize_15b ((uint16_t)0x0E00) +#define SPI_DataSize_16b ((uint16_t)0x0F00) +#define IS_SPI_DATA_SIZE(SIZE) (((SIZE) == SPI_DataSize_4b) || \ + ((SIZE) == SPI_DataSize_5b) || \ + ((SIZE) == SPI_DataSize_6b) || \ + ((SIZE) == SPI_DataSize_7b) || \ + ((SIZE) == SPI_DataSize_8b) || \ + ((SIZE) == SPI_DataSize_9b) || \ + ((SIZE) == SPI_DataSize_10b) || \ + ((SIZE) == SPI_DataSize_11b) || \ + ((SIZE) == SPI_DataSize_12b) || \ + ((SIZE) == SPI_DataSize_13b) || \ + ((SIZE) == SPI_DataSize_14b) || \ + ((SIZE) == SPI_DataSize_15b) || \ + ((SIZE) == SPI_DataSize_16b)) +/** + * @} + */ + +/** @defgroup SPI_CRC_length + * @{ + */ + +#define SPI_CRCLength_8b ((uint16_t)0x0000) +#define SPI_CRCLength_16b ((uint16_t)0x0800) +#define IS_SPI_CRC_LENGTH(LENGTH) (((LENGTH) == SPI_CRCLength_8b) || \ + ((LENGTH) == SPI_CRCLength_16b)) +/** + * @} + */ + +/** @defgroup SPI_Clock_Polarity + * @{ + */ + +#define SPI_CPOL_Low ((uint16_t)0x0000) +#define SPI_CPOL_High ((uint16_t)0x0002) +#define IS_SPI_CPOL(CPOL) (((CPOL) == SPI_CPOL_Low) || \ + ((CPOL) == SPI_CPOL_High)) +/** + * @} + */ + +/** @defgroup SPI_Clock_Phase + * @{ + */ + +#define SPI_CPHA_1Edge ((uint16_t)0x0000) +#define SPI_CPHA_2Edge ((uint16_t)0x0001) +#define IS_SPI_CPHA(CPHA) (((CPHA) == SPI_CPHA_1Edge) || \ + ((CPHA) == SPI_CPHA_2Edge)) +/** + * @} + */ + +/** @defgroup SPI_Slave_Select_management + * @{ + */ + +#define SPI_NSS_Soft ((uint16_t)0x0200) +#define SPI_NSS_Hard ((uint16_t)0x0000) +#define IS_SPI_NSS(NSS) (((NSS) == SPI_NSS_Soft) || \ + ((NSS) == SPI_NSS_Hard)) +/** + * @} + */ + +/** @defgroup SPI_BaudRate_Prescaler + * @{ + */ + +#define SPI_BaudRatePrescaler_2 ((uint16_t)0x0000) +#define SPI_BaudRatePrescaler_4 ((uint16_t)0x0008) +#define SPI_BaudRatePrescaler_8 ((uint16_t)0x0010) +#define SPI_BaudRatePrescaler_16 ((uint16_t)0x0018) +#define SPI_BaudRatePrescaler_32 ((uint16_t)0x0020) +#define SPI_BaudRatePrescaler_64 ((uint16_t)0x0028) +#define SPI_BaudRatePrescaler_128 ((uint16_t)0x0030) +#define SPI_BaudRatePrescaler_256 ((uint16_t)0x0038) +#define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) (((PRESCALER) == SPI_BaudRatePrescaler_2) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_4) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_8) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_16) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_32) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_64) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_128) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_256)) +/** + * @} + */ + +/** @defgroup SPI_MSB_LSB_transmission + * @{ + */ + +#define SPI_FirstBit_MSB ((uint16_t)0x0000) +#define SPI_FirstBit_LSB ((uint16_t)0x0080) +#define IS_SPI_FIRST_BIT(BIT) (((BIT) == SPI_FirstBit_MSB) || \ + ((BIT) == SPI_FirstBit_LSB)) +/** + * @} + */ + +/** @defgroup I2S_Mode + * @{ + */ + +#define I2S_Mode_SlaveTx ((uint16_t)0x0000) +#define I2S_Mode_SlaveRx ((uint16_t)0x0100) +#define I2S_Mode_MasterTx ((uint16_t)0x0200) +#define I2S_Mode_MasterRx ((uint16_t)0x0300) +#define IS_I2S_MODE(MODE) (((MODE) == I2S_Mode_SlaveTx) || \ + ((MODE) == I2S_Mode_SlaveRx) || \ + ((MODE) == I2S_Mode_MasterTx)|| \ + ((MODE) == I2S_Mode_MasterRx)) +/** + * @} + */ + +/** @defgroup I2S_Standard + * @{ + */ + +#define I2S_Standard_Phillips ((uint16_t)0x0000) +#define I2S_Standard_MSB ((uint16_t)0x0010) +#define I2S_Standard_LSB ((uint16_t)0x0020) +#define I2S_Standard_PCMShort ((uint16_t)0x0030) +#define I2S_Standard_PCMLong ((uint16_t)0x00B0) +#define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_Standard_Phillips) || \ + ((STANDARD) == I2S_Standard_MSB) || \ + ((STANDARD) == I2S_Standard_LSB) || \ + ((STANDARD) == I2S_Standard_PCMShort) || \ + ((STANDARD) == I2S_Standard_PCMLong)) +/** + * @} + */ + +/** @defgroup I2S_Data_Format + * @{ + */ + +#define I2S_DataFormat_16b ((uint16_t)0x0000) +#define I2S_DataFormat_16bextended ((uint16_t)0x0001) +#define I2S_DataFormat_24b ((uint16_t)0x0003) +#define I2S_DataFormat_32b ((uint16_t)0x0005) +#define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DataFormat_16b) || \ + ((FORMAT) == I2S_DataFormat_16bextended) || \ + ((FORMAT) == I2S_DataFormat_24b) || \ + ((FORMAT) == I2S_DataFormat_32b)) +/** + * @} + */ + +/** @defgroup I2S_MCLK_Output + * @{ + */ + +#define I2S_MCLKOutput_Enable ((uint16_t)0x0200) +#define I2S_MCLKOutput_Disable ((uint16_t)0x0000) +#define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOutput_Enable) || \ + ((OUTPUT) == I2S_MCLKOutput_Disable)) +/** + * @} + */ + +/** @defgroup I2S_Audio_Frequency + * @{ + */ + +#define I2S_AudioFreq_192k ((uint32_t)192000) +#define I2S_AudioFreq_96k ((uint32_t)96000) +#define I2S_AudioFreq_48k ((uint32_t)48000) +#define I2S_AudioFreq_44k ((uint32_t)44100) +#define I2S_AudioFreq_32k ((uint32_t)32000) +#define I2S_AudioFreq_22k ((uint32_t)22050) +#define I2S_AudioFreq_16k ((uint32_t)16000) +#define I2S_AudioFreq_11k ((uint32_t)11025) +#define I2S_AudioFreq_8k ((uint32_t)8000) +#define I2S_AudioFreq_Default ((uint32_t)2) + +#define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AudioFreq_8k) && \ + ((FREQ) <= I2S_AudioFreq_192k)) || \ + ((FREQ) == I2S_AudioFreq_Default)) +/** + * @} + */ + +/** @defgroup I2S_Clock_Polarity + * @{ + */ + +#define I2S_CPOL_Low ((uint16_t)0x0000) +#define I2S_CPOL_High ((uint16_t)0x0008) +#define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_Low) || \ + ((CPOL) == I2S_CPOL_High)) +/** + * @} + */ + +/** @defgroup SPI_FIFO_reception_threshold + * @{ + */ + +#define SPI_RxFIFOThreshold_HF ((uint16_t)0x0000) +#define SPI_RxFIFOThreshold_QF ((uint16_t)0x1000) +#define IS_SPI_RX_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == SPI_RxFIFOThreshold_HF) || \ + ((THRESHOLD) == SPI_RxFIFOThreshold_QF)) +/** + * @} + */ + +/** @defgroup SPI_I2S_DMA_transfer_requests + * @{ + */ + +#define SPI_I2S_DMAReq_Tx ((uint16_t)0x0002) +#define SPI_I2S_DMAReq_Rx ((uint16_t)0x0001) +#define IS_SPI_I2S_DMA_REQ(REQ) ((((REQ) & (uint16_t)0xFFFC) == 0x00) && ((REQ) != 0x00)) +/** + * @} + */ + +/** @defgroup SPI_last_DMA_transfers + * @{ + */ + +#define SPI_LastDMATransfer_TxEvenRxEven ((uint16_t)0x0000) +#define SPI_LastDMATransfer_TxOddRxEven ((uint16_t)0x4000) +#define SPI_LastDMATransfer_TxEvenRxOdd ((uint16_t)0x2000) +#define SPI_LastDMATransfer_TxOddRxOdd ((uint16_t)0x6000) +#define IS_SPI_LAST_DMA_TRANSFER(TRANSFER) (((TRANSFER) == SPI_LastDMATransfer_TxEvenRxEven) || \ + ((TRANSFER) == SPI_LastDMATransfer_TxOddRxEven) || \ + ((TRANSFER) == SPI_LastDMATransfer_TxEvenRxOdd) || \ + ((TRANSFER) == SPI_LastDMATransfer_TxOddRxOdd)) +/** + * @} + */ +/** @defgroup SPI_NSS_internal_software_management + * @{ + */ + +#define SPI_NSSInternalSoft_Set ((uint16_t)0x0100) +#define SPI_NSSInternalSoft_Reset ((uint16_t)0xFEFF) +#define IS_SPI_NSS_INTERNAL(INTERNAL) (((INTERNAL) == SPI_NSSInternalSoft_Set) || \ + ((INTERNAL) == SPI_NSSInternalSoft_Reset)) +/** + * @} + */ + +/** @defgroup SPI_CRC_Transmit_Receive + * @{ + */ + +#define SPI_CRC_Tx ((uint8_t)0x00) +#define SPI_CRC_Rx ((uint8_t)0x01) +#define IS_SPI_CRC(CRC) (((CRC) == SPI_CRC_Tx) || ((CRC) == SPI_CRC_Rx)) +/** + * @} + */ + +/** @defgroup SPI_direction_transmit_receive + * @{ + */ + +#define SPI_Direction_Rx ((uint16_t)0xBFFF) +#define SPI_Direction_Tx ((uint16_t)0x4000) +#define IS_SPI_DIRECTION(DIRECTION) (((DIRECTION) == SPI_Direction_Rx) || \ + ((DIRECTION) == SPI_Direction_Tx)) +/** + * @} + */ + +/** @defgroup SPI_I2S_interrupts_definition + * @{ + */ + +#define SPI_I2S_IT_TXE ((uint8_t)0x71) +#define SPI_I2S_IT_RXNE ((uint8_t)0x60) +#define SPI_I2S_IT_ERR ((uint8_t)0x50) + +#define IS_SPI_I2S_CONFIG_IT(IT) (((IT) == SPI_I2S_IT_TXE) || \ + ((IT) == SPI_I2S_IT_RXNE) || \ + ((IT) == SPI_I2S_IT_ERR)) + +#define I2S_IT_UDR ((uint8_t)0x53) +#define SPI_IT_MODF ((uint8_t)0x55) +#define SPI_I2S_IT_OVR ((uint8_t)0x56) +#define SPI_I2S_IT_FRE ((uint8_t)0x58) + +#define IS_SPI_I2S_GET_IT(IT) (((IT) == SPI_I2S_IT_RXNE) || ((IT) == SPI_I2S_IT_TXE) || \ + ((IT) == SPI_I2S_IT_OVR) || ((IT) == SPI_IT_MODF) || \ + ((IT) == SPI_I2S_IT_FRE)|| ((IT) == I2S_IT_UDR)) +/** + * @} + */ + + +/** @defgroup SPI_transmission_fifo_status_level + * @{ + */ + +#define SPI_TransmissionFIFOStatus_Empty ((uint16_t)0x0000) +#define SPI_TransmissionFIFOStatus_1QuarterFull ((uint16_t)0x0800) +#define SPI_TransmissionFIFOStatus_HalfFull ((uint16_t)0x1000) +#define SPI_TransmissionFIFOStatus_Full ((uint16_t)0x1800) + +/** + * @} + */ + +/** @defgroup SPI_reception_fifo_status_level + * @{ + */ +#define SPI_ReceptionFIFOStatus_Empty ((uint16_t)0x0000) +#define SPI_ReceptionFIFOStatus_1QuarterFull ((uint16_t)0x0200) +#define SPI_ReceptionFIFOStatus_HalfFull ((uint16_t)0x0400) +#define SPI_ReceptionFIFOStatus_Full ((uint16_t)0x0600) + +/** + * @} + */ + + +/** @defgroup SPI_I2S_flags_definition + * @{ + */ + +#define SPI_I2S_FLAG_RXNE ((uint16_t)0x0001) +#define SPI_I2S_FLAG_TXE ((uint16_t)0x0002) +#define I2S_FLAG_CHSIDE ((uint16_t)0x0004) +#define I2S_FLAG_UDR ((uint16_t)0x0008) +#define SPI_FLAG_CRCERR ((uint16_t)0x0010) +#define SPI_FLAG_MODF ((uint16_t)0x0020) +#define SPI_I2S_FLAG_OVR ((uint16_t)0x0040) +#define SPI_I2S_FLAG_BSY ((uint16_t)0x0080) +#define SPI_I2S_FLAG_FRE ((uint16_t)0x0100) + + + +#define IS_SPI_CLEAR_FLAG(FLAG) (((FLAG) == SPI_FLAG_CRCERR)) +#define IS_SPI_I2S_GET_FLAG(FLAG) (((FLAG) == SPI_I2S_FLAG_BSY) || ((FLAG) == SPI_I2S_FLAG_OVR) || \ + ((FLAG) == SPI_FLAG_MODF) || ((FLAG) == SPI_FLAG_CRCERR) || \ + ((FLAG) == SPI_I2S_FLAG_TXE) || ((FLAG) == SPI_I2S_FLAG_RXNE)|| \ + ((FLAG) == SPI_I2S_FLAG_FRE)|| ((FLAG) == I2S_FLAG_CHSIDE)|| \ + ((FLAG) == I2S_FLAG_UDR)) +/** + * @} + */ + +/** @defgroup SPI_CRC_polynomial + * @{ + */ + +#define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) ((POLYNOMIAL) >= 0x1) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Function used to set the SPI configuration to the default reset state*******/ +void SPI_I2S_DeInit(SPI_TypeDef* SPIx); + +/* Initialization and Configuration functions *********************************/ +void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct); +void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct); +void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct); +void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct); +void SPI_TIModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void SPI_NSSPulseModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize); +void SPI_RxFIFOThresholdConfig(SPI_TypeDef* SPIx, uint16_t SPI_RxFIFOThreshold); +void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction); +void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft); +void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void I2S_FullDuplexConfig(SPI_TypeDef* I2Sxext, I2S_InitTypeDef* I2S_InitStruct); + +/* Data transfers functions ***************************************************/ +void SPI_SendData8(SPI_TypeDef* SPIx, uint8_t Data); +void SPI_I2S_SendData16(SPI_TypeDef* SPIx, uint16_t Data); +uint8_t SPI_ReceiveData8(SPI_TypeDef* SPIx); +uint16_t SPI_I2S_ReceiveData16(SPI_TypeDef* SPIx); + +/* Hardware CRC Calculation functions *****************************************/ +void SPI_CRCLengthConfig(SPI_TypeDef* SPIx, uint16_t SPI_CRCLength); +void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState); +void SPI_TransmitCRC(SPI_TypeDef* SPIx); +uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC); +uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx); + +/* DMA transfers management functions *****************************************/ +void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState); +void SPI_LastDMATransferCmd(SPI_TypeDef* SPIx, uint16_t SPI_LastDMATransfer); + +/* Interrupts and flags management functions **********************************/ +void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState); +uint16_t SPI_GetTransmissionFIFOStatus(SPI_TypeDef* SPIx); +uint16_t SPI_GetReceptionFIFOStatus(SPI_TypeDef* SPIx); +FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG); +void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG); +ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_SPI_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_syscfg.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,355 @@ +/** + ****************************************************************************** + * @file stm32f30x_syscfg.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the SYSCFG firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/*!< Define to prevent recursive inclusion -----------------------------------*/ +#ifndef __STM32F30x_SYSCFG_H +#define __STM32F30x_SYSCFG_H + +#ifdef __cplusplus + extern "C" { +#endif + +/*!< Includes ----------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup SYSCFG + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup SYSCFG_Exported_Constants + * @{ + */ + +/** @defgroup SYSCFG_EXTI_Port_Sources + * @{ + */ +#define EXTI_PortSourceGPIOA ((uint8_t)0x00) +#define EXTI_PortSourceGPIOB ((uint8_t)0x01) +#define EXTI_PortSourceGPIOC ((uint8_t)0x02) +#define EXTI_PortSourceGPIOD ((uint8_t)0x03) +#define EXTI_PortSourceGPIOE ((uint8_t)0x04) +#define EXTI_PortSourceGPIOF ((uint8_t)0x05) + +#define IS_EXTI_PORT_SOURCE(PORTSOURCE) (((PORTSOURCE) == EXTI_PortSourceGPIOA) || \ + ((PORTSOURCE) == EXTI_PortSourceGPIOB) || \ + ((PORTSOURCE) == EXTI_PortSourceGPIOC) || \ + ((PORTSOURCE) == EXTI_PortSourceGPIOD) || \ + ((PORTSOURCE) == EXTI_PortSourceGPIOE) || \ + ((PORTSOURCE) == EXTI_PortSourceGPIOF)) +/** + * @} + */ + +/** @defgroup SYSCFG_EXTI_Pin_sources + * @{ + */ +#define EXTI_PinSource0 ((uint8_t)0x00) +#define EXTI_PinSource1 ((uint8_t)0x01) +#define EXTI_PinSource2 ((uint8_t)0x02) +#define EXTI_PinSource3 ((uint8_t)0x03) +#define EXTI_PinSource4 ((uint8_t)0x04) +#define EXTI_PinSource5 ((uint8_t)0x05) +#define EXTI_PinSource6 ((uint8_t)0x06) +#define EXTI_PinSource7 ((uint8_t)0x07) +#define EXTI_PinSource8 ((uint8_t)0x08) +#define EXTI_PinSource9 ((uint8_t)0x09) +#define EXTI_PinSource10 ((uint8_t)0x0A) +#define EXTI_PinSource11 ((uint8_t)0x0B) +#define EXTI_PinSource12 ((uint8_t)0x0C) +#define EXTI_PinSource13 ((uint8_t)0x0D) +#define EXTI_PinSource14 ((uint8_t)0x0E) +#define EXTI_PinSource15 ((uint8_t)0x0F) + +#define IS_EXTI_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == EXTI_PinSource0) || \ + ((PINSOURCE) == EXTI_PinSource1) || \ + ((PINSOURCE) == EXTI_PinSource2) || \ + ((PINSOURCE) == EXTI_PinSource3) || \ + ((PINSOURCE) == EXTI_PinSource4) || \ + ((PINSOURCE) == EXTI_PinSource5) || \ + ((PINSOURCE) == EXTI_PinSource6) || \ + ((PINSOURCE) == EXTI_PinSource7) || \ + ((PINSOURCE) == EXTI_PinSource8) || \ + ((PINSOURCE) == EXTI_PinSource9) || \ + ((PINSOURCE) == EXTI_PinSource10) || \ + ((PINSOURCE) == EXTI_PinSource11) || \ + ((PINSOURCE) == EXTI_PinSource12) || \ + ((PINSOURCE) == EXTI_PinSource13) || \ + ((PINSOURCE) == EXTI_PinSource14) || \ + ((PINSOURCE) == EXTI_PinSource15)) +/** + * @} + */ + +/** @defgroup SYSCFG_Memory_Remap_Config + * @{ + */ +#define SYSCFG_MemoryRemap_Flash ((uint8_t)0x00) +#define SYSCFG_MemoryRemap_SystemMemory ((uint8_t)0x01) +#define SYSCFG_MemoryRemap_SRAM ((uint8_t)0x03) + + +#define IS_SYSCFG_MEMORY_REMAP(REMAP) (((REMAP) == SYSCFG_MemoryRemap_Flash) || \ + ((REMAP) == SYSCFG_MemoryRemap_SystemMemory) || \ + ((REMAP) == SYSCFG_MemoryRemap_SRAM)) + +/** + * @} + */ + +/** @defgroup SYSCFG_DMA_Remap_Config + * @{ + */ +#define SYSCFG_DMARemap_TIM17 SYSCFG_CFGR1_TIM17_DMA_RMP /*!< Remap TIM17 DMA requests from channel1 to channel2 */ +#define SYSCFG_DMARemap_TIM16 SYSCFG_CFGR1_TIM16_DMA_RMP /*!< Remap TIM16 DMA requests from channel3 to channel4 */ +#define SYSCFG_DMARemap_ADC2ADC4 SYSCFG_CFGR1_ADC24_DMA_RMP /*!< Remap ADC2 and ADC4 DMA requests */ + +#define SYSCFG_DMARemap_TIM6DAC1Ch1 SYSCFG_CFGR1_TIM6DAC1Ch1_DMA_RMP /* Remap TIM6/DAC1 Ch1 DMA requests */ +#define SYSCFG_DMARemap_TIM7DAC1Ch2 SYSCFG_CFGR1_TIM7DAC1Ch2_DMA_RMP /* Remap TIM7/DAC1 Ch2 DMA requests */ +#define SYSCFG_DMARemap_DAC2Ch1 SYSCFG_CFGR1_DAC2Ch1_DMA_RMP /* Remap DAC2 Ch1 DMA requests */ + +#define SYSCFG_DMARemapCh2_SPI1_RX ((uint32_t)0x80000003) /* Remap SPI1 RX DMA CH2 requests */ +#define SYSCFG_DMARemapCh4_SPI1_RX ((uint32_t)0x80000001) /* Remap SPI1 RX DMA CH4 requests */ +#define SYSCFG_DMARemapCh6_SPI1_RX ((uint32_t)0x80000002) /* Remap SPI1 RX DMA CH6 requests */ + +#define SYSCFG_DMARemapCh3_SPI1_TX ((uint32_t)0x8000000C) /* Remap SPI1 TX DMA CH2 requests */ +#define SYSCFG_DMARemapCh5_SPI1_TX ((uint32_t)0x80000004) /* Remap SPI1 TX DMA CH5 requests */ +#define SYSCFG_DMARemapCh7_SPI1_TX ((uint32_t)0x80000008) /* Remap SPI1 TX DMA CH7 requests */ + +#define SYSCFG_DMARemapCh7_I2C1_RX ((uint32_t)0x80000030) /* Remap I2C1 RX DMA CH7 requests */ +#define SYSCFG_DMARemapCh3_I2C1_RX ((uint32_t)0x80000010) /* Remap I2C1 RX DMA CH3 requests */ +#define SYSCFG_DMARemapCh5_I2C1_RX ((uint32_t)0x80000020) /* Remap I2C1 RX DMA CH5 requests */ + +#define SYSCFG_DMARemapCh6_I2C1_TX ((uint32_t)0x800000C0) /* Remap I2C1 TX DMA CH6 requests */ +#define SYSCFG_DMARemapCh2_I2C1_TX ((uint32_t)0x80000040) /* Remap I2C1 TX DMA CH2 requests */ +#define SYSCFG_DMARemapCh4_I2C1_TX ((uint32_t)0x80000080) /* Remap I2C1 TX DMA CH4 requests */ + +#define SYSCFG_DMARemapCh4_ADC2 ((uint32_t)0x80000300) /* Remap ADC2 DMA1 Ch4 requests */ +#define SYSCFG_DMARemapCh2_ADC2 ((uint32_t)0x80000200) /* Remap ADC2 DMA1 Ch2 requests */ + +/* SYSCFG_DMA_Remap_Legacy */ +#define SYSCFG_DMARemap_TIM6DAC1 SYSCFG_DMARemap_TIM6DAC1Ch1 /*!< Remap TIM6/DAC1 DMA requests */ +#define SYSCFG_DMARemap_TIM7DAC2 SYSCFG_DMARemap_TIM7DAC1Ch2 /*!< Remap TIM7/DAC2 DMA requests */ + +#define IS_SYSCFG_DMA_REMAP(REMAP) (((REMAP) == SYSCFG_DMARemap_TIM17) || \ + ((REMAP) == SYSCFG_DMARemap_TIM16) || \ + ((REMAP) == SYSCFG_DMARemap_ADC2ADC4) || \ + ((REMAP) == SYSCFG_DMARemap_TIM6DAC1Ch1) || \ + ((REMAP) == SYSCFG_DMARemap_TIM7DAC1Ch2) || \ + ((REMAP) == SYSCFG_DMARemap_DAC2Ch1) || \ + ((REMAP) == SYSCFG_DMARemapCh2_SPI1_RX) || \ + ((REMAP) == SYSCFG_DMARemapCh4_SPI1_RX) || \ + ((REMAP) == SYSCFG_DMARemapCh6_SPI1_RX) || \ + ((REMAP) == SYSCFG_DMARemapCh5_SPI1_TX) || \ + ((REMAP) == SYSCFG_DMARemapCh5_SPI1_TX) || \ + ((REMAP) == SYSCFG_DMARemapCh7_SPI1_TX) || \ + ((REMAP) == SYSCFG_DMARemapCh7_I2C1_RX) || \ + ((REMAP) == SYSCFG_DMARemapCh3_I2C1_RX) || \ + ((REMAP) == SYSCFG_DMARemapCh5_I2C1_RX) || \ + ((REMAP) == SYSCFG_DMARemapCh6_I2C1_TX) || \ + ((REMAP) == SYSCFG_DMARemapCh2_I2C1_TX) || \ + ((REMAP) == SYSCFG_DMARemapCh4_I2C1_TX) || \ + ((REMAP) == SYSCFG_DMARemapCh4_ADC2) || \ + ((REMAP) == SYSCFG_DMARemapCh2_ADC2)) + +/** + * @} + */ + +/** @defgroup SYSCFG_Trigger_Remap_Config + * @{ + */ +#define SYSCFG_TriggerRemap_DACTIM3 SYSCFG_CFGR1_DAC1_TRIG1_RMP /*!< Remap DAC trigger to TIM3 */ +#define SYSCFG_TriggerRemap_TIM1TIM17 SYSCFG_CFGR1_TIM1_ITR3_RMP /*!< Remap TIM1 ITR3 to TIM17 OC */ +#define SYSCFG_TriggerRemap_DACHRTIM1_TRIG1 ((uint32_t)0x80010000) /*!< Remap DAC trigger to HRTIM1 TRIG1 */ +#define SYSCFG_TriggerRemap_DACHRTIM1_TRIG2 ((uint32_t)0x80020000) /*!< Remap DAC trigger to HRTIM1 TRIG2 */ + +#define IS_SYSCFG_TRIGGER_REMAP(REMAP) (((REMAP) == SYSCFG_TriggerRemap_DACTIM3) || \ + ((REMAP) == SYSCFG_TriggerRemap_DACHRTIM1_TRIG1) || \ + ((REMAP) == SYSCFG_TriggerRemap_DACHRTIM1_TRIG2) || \ + ((REMAP) == SYSCFG_TriggerRemap_TIM1TIM17)) + +/** + * @} + */ + +/** @defgroup SYSCFG_EncoderRemap_Config + * @{ + */ +#define SYSCFG_EncoderRemap_No ((uint32_t)0x00000000) /*!< No redirection */ +#define SYSCFG_EncoderRemap_TIM2 SYSCFG_CFGR1_ENCODER_MODE_0 /*!< Timer 2 IC1 and IC2 connected to TIM15 IC1 and IC2 */ +#define SYSCFG_EncoderRemap_TIM3 SYSCFG_CFGR1_ENCODER_MODE_1 /*!< Timer 3 IC1 and IC2 connected to TIM15 IC1 and IC2 */ +#define SYSCFG_EncoderRemap_TIM4 SYSCFG_CFGR1_ENCODER_MODE /*!< Timer 4 IC1 and IC2 connected to TIM15 IC1 and IC2 */ + +#define IS_SYSCFG_ENCODER_REMAP(REMAP) (((REMAP) == SYSCFG_EncoderRemap_No) || \ + ((REMAP) == SYSCFG_EncoderRemap_TIM2) || \ + ((REMAP) == SYSCFG_EncoderRemap_TIM3) || \ + ((REMAP) == SYSCFG_EncoderRemap_TIM4)) + +/** + * @} + */ + +/** @defgroup SYSCFG_I2C_FastModePlus_Config + * @{ + */ +#define SYSCFG_I2CFastModePlus_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */ +#define SYSCFG_I2CFastModePlus_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */ +#define SYSCFG_I2CFastModePlus_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */ +#define SYSCFG_I2CFastModePlus_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */ +#define SYSCFG_I2CFastModePlus_I2C1 SYSCFG_CFGR1_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */ +#define SYSCFG_I2CFastModePlus_I2C2 SYSCFG_CFGR1_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */ + +#define IS_SYSCFG_I2C_FMP(PIN) (((PIN) == SYSCFG_I2CFastModePlus_PB6) || \ + ((PIN) == SYSCFG_I2CFastModePlus_PB7) || \ + ((PIN) == SYSCFG_I2CFastModePlus_PB8) || \ + ((PIN) == SYSCFG_I2CFastModePlus_PB9) || \ + ((PIN) == SYSCFG_I2CFastModePlus_I2C1) || \ + ((PIN) == SYSCFG_I2CFastModePlus_I2C2)) + +/** + * @} + */ + +/** @defgroup SYSCFG_FPU_Interrupt_Config + * @{ + */ +#define SYSCFG_IT_IXC SYSCFG_CFGR1_FPU_IE_5 /*!< Inexact Interrupt enable (interrupt disabled by default) */ +#define SYSCFG_IT_IDC SYSCFG_CFGR1_FPU_IE_4 /*!< Input denormal Interrupt enable */ +#define SYSCFG_IT_OFC SYSCFG_CFGR1_FPU_IE_3 /*!< Overflow Interrupt enable */ +#define SYSCFG_IT_UFC SYSCFG_CFGR1_FPU_IE_2 /*!< Underflow Interrupt enable */ +#define SYSCFG_IT_DZC SYSCFG_CFGR1_FPU_IE_1 /*!< Divide-by-zero Interrupt enable */ +#define SYSCFG_IT_IOC SYSCFG_CFGR1_FPU_IE_0 /*!< Invalid operation Interrupt enable */ + +#define IS_SYSCFG_IT(IT) ((((IT) & (uint32_t)0x03FFFFFF) == 0) && ((IT) != 0)) + +/** + * @} + */ + +/** @defgroup SYSCFG_Lock_Config + * @{ + */ +#define SYSCFG_Break_PVD SYSCFG_CFGR2_PVD_LOCK /*!< Enables and locks the PVD connection with TIM1/8/15/16/17 Break Input and also the PVD_EN and PVDSEL[2:0] bits of the Power Control Interface */ +#define SYSCFG_Break_SRAMParity SYSCFG_CFGR2_SRAM_PARITY_LOCK /*!< Enables and locks the SRAM_PARITY error signal with Break Input of TIM1/8/15/16/17 */ +#define SYSCFG_Break_Lockup SYSCFG_CFGR2_LOCKUP_LOCK /*!< Enables and locks the LOCKUP output of CortexM4 with Break Input of TIM1/8/15/16/17 */ + +#define IS_SYSCFG_LOCK_CONFIG(CONFIG) (((CONFIG) == SYSCFG_Break_PVD) || \ + ((CONFIG) == SYSCFG_Break_SRAMParity) || \ + ((CONFIG) == SYSCFG_Break_Lockup)) + +/** + * @} + */ + +/** @defgroup SYSCFG_SRAMWRP_Config + * @{ + */ +#define SYSCFG_SRAMWRP_Page0 SYSCFG_RCR_PAGE0 /*!< ICODE SRAM Write protection page 0 */ +#define SYSCFG_SRAMWRP_Page1 SYSCFG_RCR_PAGE1 /*!< ICODE SRAM Write protection page 1 */ +#define SYSCFG_SRAMWRP_Page2 SYSCFG_RCR_PAGE2 /*!< ICODE SRAM Write protection page 2 */ +#define SYSCFG_SRAMWRP_Page3 SYSCFG_RCR_PAGE3 /*!< ICODE SRAM Write protection page 3 */ +#define SYSCFG_SRAMWRP_Page4 SYSCFG_RCR_PAGE4 /*!< ICODE SRAM Write protection page 4 */ +#define SYSCFG_SRAMWRP_Page5 SYSCFG_RCR_PAGE5 /*!< ICODE SRAM Write protection page 5 */ +#define SYSCFG_SRAMWRP_Page6 SYSCFG_RCR_PAGE6 /*!< ICODE SRAM Write protection page 6 */ +#define SYSCFG_SRAMWRP_Page7 SYSCFG_RCR_PAGE7 /*!< ICODE SRAM Write protection page 7 */ + +#define IS_SYSCFG_PAGE(PAGE)((((PAGE) & (uint32_t)0xFFFFFF00) == 0x00000000) && ((PAGE) != 0x00000000)) + +/** + * @} + */ + +/** @defgroup SYSCFG_flags_definition + * @{ + */ + +#define SYSCFG_FLAG_PE SYSCFG_CFGR2_SRAM_PE + +#define IS_SYSCFG_FLAG(FLAG) (((FLAG) == SYSCFG_FLAG_PE)) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Function used to set the SYSCFG configuration to the default reset state **/ +void SYSCFG_DeInit(void); + +/* SYSCFG configuration functions *********************************************/ +void SYSCFG_MemoryRemapConfig(uint32_t SYSCFG_MemoryRemap); +void SYSCFG_DMAChannelRemapConfig(uint32_t SYSCFG_DMARemap, FunctionalState NewState); +void SYSCFG_TriggerRemapConfig(uint32_t SYSCFG_TriggerRemap, FunctionalState NewState); +void SYSCFG_EncoderRemapConfig(uint32_t SYSCFG_EncoderRemap); +void SYSCFG_USBInterruptLineRemapCmd(FunctionalState NewState); +void SYSCFG_I2CFastModePlusConfig(uint32_t SYSCFG_I2CFastModePlus, FunctionalState NewState); +void SYSCFG_ITConfig(uint32_t SYSCFG_IT, FunctionalState NewState); +void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex); +void SYSCFG_BreakConfig(uint32_t SYSCFG_Break); +void SYSCFG_BypassParityCheckDisable(void); +void SYSCFG_SRAMWRPEnable(uint32_t SYSCFG_SRAMWRP); +FlagStatus SYSCFG_GetFlagStatus(uint32_t SYSCFG_Flag); +void SYSCFG_ClearFlag(uint32_t SYSCFG_Flag); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_SYSCFG_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_tim.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,1344 @@ +/** + ****************************************************************************** + * @file stm32f30x_tim.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the TIM firmware + * library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_TIM_H +#define __STM32F30x_TIM_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup stm32f30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup TIM + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief TIM Time Base Init structure definition + * @note This structure is used with all TIMx except for TIM6 and TIM7. + */ + +typedef struct +{ + uint16_t TIM_Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between 0x0000 and 0xFFFF */ + + uint16_t TIM_CounterMode; /*!< Specifies the counter mode. + This parameter can be a value of @ref TIM_Counter_Mode */ + + uint32_t TIM_Period; /*!< Specifies the period value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter must be a number between 0x0000 and 0xFFFF. */ + + uint16_t TIM_ClockDivision; /*!< Specifies the clock division. + This parameter can be a value of @ref TIM_Clock_Division_CKD */ + + uint16_t TIM_RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter + reaches zero, an update event is generated and counting restarts + from the RCR value (N). + This means in PWM mode that (N+1) corresponds to: + - the number of PWM periods in edge-aligned mode + - the number of half PWM period in center-aligned mode + This parameter must be a number between 0x00 and 0xFF. + @note This parameter is valid only for TIM1 and TIM8. */ +} TIM_TimeBaseInitTypeDef; + +/** + * @brief TIM Output Compare Init structure definition + */ + +typedef struct +{ + uint32_t TIM_OCMode; /*!< Specifies the TIM mode. + This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ + + uint16_t TIM_OutputState; /*!< Specifies the TIM Output Compare state. + This parameter can be a value of @ref TIM_Output_Compare_State */ + + uint16_t TIM_OutputNState; /*!< Specifies the TIM complementary Output Compare state. + This parameter can be a value of @ref TIM_Output_Compare_N_State + @note This parameter is valid only for TIM1 and TIM8. */ + + uint32_t TIM_Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between 0x0000 and 0xFFFF */ + + uint16_t TIM_OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_Output_Compare_Polarity */ + + uint16_t TIM_OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_Output_Compare_N_Polarity + @note This parameter is valid only for TIM1 and TIM8. */ + + uint16_t TIM_OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_Idle_State + @note This parameter is valid only for TIM1 and TIM8. */ + + uint16_t TIM_OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State + @note This parameter is valid only for TIM1 and TIM8. */ +} TIM_OCInitTypeDef; + +/** + * @brief TIM Input Capture Init structure definition + */ + +typedef struct +{ + + uint16_t TIM_Channel; /*!< Specifies the TIM channel. + This parameter can be a value of @ref TIM_Channel */ + + uint16_t TIM_ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint16_t TIM_ICSelection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint16_t TIM_ICPrescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint16_t TIM_ICFilter; /*!< Specifies the input capture filter. + This parameter can be a number between 0x0 and 0xF */ +} TIM_ICInitTypeDef; + +/** + * @brief BDTR structure definition + * @note This structure is used only with TIM1 and TIM8. + */ + +typedef struct +{ + + uint16_t TIM_OSSRState; /*!< Specifies the Off-State selection used in Run mode. + This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */ + + uint16_t TIM_OSSIState; /*!< Specifies the Off-State used in Idle state. + This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */ + + uint16_t TIM_LOCKLevel; /*!< Specifies the LOCK level parameters. + This parameter can be a value of @ref TIM_Lock_level */ + + uint16_t TIM_DeadTime; /*!< Specifies the delay time between the switching-off and the + switching-on of the outputs. + This parameter can be a number between 0x00 and 0xFF */ + + uint16_t TIM_Break; /*!< Specifies whether the TIM Break input is enabled or not. + This parameter can be a value of @ref TIM_Break_Input_enable_disable */ + + uint16_t TIM_BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. + This parameter can be a value of @ref TIM_Break_Polarity */ + + uint16_t TIM_AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. + This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */ +} TIM_BDTRInitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup TIM_Exported_constants + * @{ + */ + +#define IS_TIM_ALL_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM6) || \ + ((PERIPH) == TIM7) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM15) || \ + ((PERIPH) == TIM16) || \ + ((PERIPH) == TIM17)) +/* LIST1: TIM1, TIM2, TIM3, TIM4, TIM8, TIM15, TIM16 and TIM17 */ +#define IS_TIM_LIST1_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM15) || \ + ((PERIPH) == TIM16) || \ + ((PERIPH) == TIM17)) + +/* LIST2: TIM1, TIM2, TIM3, TIM4, TIM8 and TIM15 */ +#define IS_TIM_LIST2_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM15)) +/* LIST3: TIM1, TIM2, TIM3, TIM4 and TIM8 */ +#define IS_TIM_LIST3_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM8)) +/* LIST4: TIM1 and TIM8 */ +#define IS_TIM_LIST4_PERIPH(PERIPH) (((PERIPH) == TIM1) ||\ + ((PERIPH) == TIM8)) +/* LIST5: TIM1, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7 and TIM8 */ +#define IS_TIM_LIST5_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM6) || \ + ((PERIPH) == TIM7) || \ + ((PERIPH) == TIM8)) +/* LIST6: TIM1, TIM8, TIM15, TIM16 and TIM17 */ +#define IS_TIM_LIST6_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM15) || \ + ((PERIPH) == TIM16) || \ + ((PERIPH) == TIM17)) + +/* LIST5: TIM1, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7 and TIM8 */ +#define IS_TIM_LIST7_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM6) || \ + ((PERIPH) == TIM7) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM15)) +/* LIST8: TIM16 (option register) */ +#define IS_TIM_LIST8_PERIPH(PERIPH) (((PERIPH) == TIM16)|| \ + ((PERIPH) == TIM1)||\ + ((PERIPH) == TIM8)) + +/** @defgroup TIM_Output_Compare_and_PWM_modes + * @{ + */ + +#define TIM_OCMode_Timing ((uint32_t)0x00000) +#define TIM_OCMode_Active ((uint32_t)0x00010) +#define TIM_OCMode_Inactive ((uint32_t)0x00020) +#define TIM_OCMode_Toggle ((uint32_t)0x00030) +#define TIM_OCMode_PWM1 ((uint32_t)0x00060) +#define TIM_OCMode_PWM2 ((uint32_t)0x00070) + +#define TIM_OCMode_Retrigerrable_OPM1 ((uint32_t)0x10000) +#define TIM_OCMode_Retrigerrable_OPM2 ((uint32_t)0x10010) +#define TIM_OCMode_Combined_PWM1 ((uint32_t)0x10040) +#define TIM_OCMode_Combined_PWM2 ((uint32_t)0x10050) +#define TIM_OCMode_Asymmetric_PWM1 ((uint32_t)0x10060) +#define TIM_OCMode_Asymmetric_PWM2 ((uint32_t)0x10070) + +#define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMode_Timing) || \ + ((MODE) == TIM_OCMode_Active) || \ + ((MODE) == TIM_OCMode_Inactive) || \ + ((MODE) == TIM_OCMode_Toggle)|| \ + ((MODE) == TIM_OCMode_PWM1) || \ + ((MODE) == TIM_OCMode_PWM2) || \ + ((MODE) == TIM_OCMode_Retrigerrable_OPM1) || \ + ((MODE) == TIM_OCMode_Retrigerrable_OPM2) || \ + ((MODE) == TIM_OCMode_Combined_PWM1) || \ + ((MODE) == TIM_OCMode_Combined_PWM2) || \ + ((MODE) == TIM_OCMode_Asymmetric_PWM1) || \ + ((MODE) == TIM_OCMode_Asymmetric_PWM2)) + +#define IS_TIM_OCM(MODE) (((MODE) == TIM_OCMode_Timing) || \ + ((MODE) == TIM_OCMode_Active) || \ + ((MODE) == TIM_OCMode_Inactive) || \ + ((MODE) == TIM_OCMode_Toggle)|| \ + ((MODE) == TIM_OCMode_PWM1) || \ + ((MODE) == TIM_OCMode_PWM2) || \ + ((MODE) == TIM_ForcedAction_Active) || \ + ((MODE) == TIM_ForcedAction_InActive) || \ + ((MODE) == TIM_OCMode_Retrigerrable_OPM1) || \ + ((MODE) == TIM_OCMode_Retrigerrable_OPM2) || \ + ((MODE) == TIM_OCMode_Combined_PWM1) || \ + ((MODE) == TIM_OCMode_Combined_PWM2) || \ + ((MODE) == TIM_OCMode_Asymmetric_PWM1) || \ + ((MODE) == TIM_OCMode_Asymmetric_PWM2)) +/** + * @} + */ + +/** @defgroup TIM_One_Pulse_Mode + * @{ + */ + +#define TIM_OPMode_Single ((uint16_t)0x0008) +#define TIM_OPMode_Repetitive ((uint16_t)0x0000) +#define IS_TIM_OPM_MODE(MODE) (((MODE) == TIM_OPMode_Single) || \ + ((MODE) == TIM_OPMode_Repetitive)) +/** + * @} + */ + +/** @defgroup TIM_Channel + * @{ + */ + +#define TIM_Channel_1 ((uint16_t)0x0000) +#define TIM_Channel_2 ((uint16_t)0x0004) +#define TIM_Channel_3 ((uint16_t)0x0008) +#define TIM_Channel_4 ((uint16_t)0x000C) +#define TIM_Channel_5 ((uint16_t)0x0010) +#define TIM_Channel_6 ((uint16_t)0x0014) + +#define IS_TIM_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \ + ((CHANNEL) == TIM_Channel_2) || \ + ((CHANNEL) == TIM_Channel_3) || \ + ((CHANNEL) == TIM_Channel_4)) + +#define IS_TIM_PWMI_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \ + ((CHANNEL) == TIM_Channel_2)) +#define IS_TIM_COMPLEMENTARY_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \ + ((CHANNEL) == TIM_Channel_2) || \ + ((CHANNEL) == TIM_Channel_3)) +/** + * @} + */ + +/** @defgroup TIM_Clock_Division_CKD + * @{ + */ + +#define TIM_CKD_DIV1 ((uint16_t)0x0000) +#define TIM_CKD_DIV2 ((uint16_t)0x0100) +#define TIM_CKD_DIV4 ((uint16_t)0x0200) +#define IS_TIM_CKD_DIV(DIV) (((DIV) == TIM_CKD_DIV1) || \ + ((DIV) == TIM_CKD_DIV2) || \ + ((DIV) == TIM_CKD_DIV4)) +/** + * @} + */ + +/** @defgroup TIM_Counter_Mode + * @{ + */ + +#define TIM_CounterMode_Up ((uint16_t)0x0000) +#define TIM_CounterMode_Down ((uint16_t)0x0010) +#define TIM_CounterMode_CenterAligned1 ((uint16_t)0x0020) +#define TIM_CounterMode_CenterAligned2 ((uint16_t)0x0040) +#define TIM_CounterMode_CenterAligned3 ((uint16_t)0x0060) +#define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_CounterMode_Up) || \ + ((MODE) == TIM_CounterMode_Down) || \ + ((MODE) == TIM_CounterMode_CenterAligned1) || \ + ((MODE) == TIM_CounterMode_CenterAligned2) || \ + ((MODE) == TIM_CounterMode_CenterAligned3)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Polarity + * @{ + */ + +#define TIM_OCPolarity_High ((uint16_t)0x0000) +#define TIM_OCPolarity_Low ((uint16_t)0x0002) +#define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPolarity_High) || \ + ((POLARITY) == TIM_OCPolarity_Low)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_Polarity + * @{ + */ + +#define TIM_OCNPolarity_High ((uint16_t)0x0000) +#define TIM_OCNPolarity_Low ((uint16_t)0x0008) +#define IS_TIM_OCN_POLARITY(POLARITY) (((POLARITY) == TIM_OCNPolarity_High) || \ + ((POLARITY) == TIM_OCNPolarity_Low)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_State + * @{ + */ + +#define TIM_OutputState_Disable ((uint16_t)0x0000) +#define TIM_OutputState_Enable ((uint16_t)0x0001) +#define IS_TIM_OUTPUT_STATE(STATE) (((STATE) == TIM_OutputState_Disable) || \ + ((STATE) == TIM_OutputState_Enable)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_State + * @{ + */ + +#define TIM_OutputNState_Disable ((uint16_t)0x0000) +#define TIM_OutputNState_Enable ((uint16_t)0x0004) +#define IS_TIM_OUTPUTN_STATE(STATE) (((STATE) == TIM_OutputNState_Disable) || \ + ((STATE) == TIM_OutputNState_Enable)) +/** + * @} + */ + +/** @defgroup TIM_Capture_Compare_State + * @{ + */ + +#define TIM_CCx_Enable ((uint16_t)0x0001) +#define TIM_CCx_Disable ((uint16_t)0x0000) +#define IS_TIM_CCX(CCX) (((CCX) == TIM_CCx_Enable) || \ + ((CCX) == TIM_CCx_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Capture_Compare_N_State + * @{ + */ + +#define TIM_CCxN_Enable ((uint16_t)0x0004) +#define TIM_CCxN_Disable ((uint16_t)0x0000) +#define IS_TIM_CCXN(CCXN) (((CCXN) == TIM_CCxN_Enable) || \ + ((CCXN) == TIM_CCxN_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Break_Input_enable_disable + * @{ + */ + +#define TIM_Break_Enable ((uint16_t)0x1000) +#define TIM_Break_Disable ((uint16_t)0x0000) +#define IS_TIM_BREAK_STATE(STATE) (((STATE) == TIM_Break_Enable) || \ + ((STATE) == TIM_Break_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Break1_Input_enable_disable + * @{ + */ + +#define TIM_Break1_Enable ((uint32_t)0x00001000) +#define TIM_Break1_Disable ((uint32_t)0x00000000) +#define IS_TIM_BREAK1_STATE(STATE) (((STATE) == TIM_Break1_Enable) || \ + ((STATE) == TIM_Break1_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Break2_Input_enable_disable + * @{ + */ + +#define TIM_Break2_Enable ((uint32_t)0x01000000) +#define TIM_Break2_Disable ((uint32_t)0x00000000) +#define IS_TIM_BREAK2_STATE(STATE) (((STATE) == TIM_Break2_Enable) || \ + ((STATE) == TIM_Break2_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Break_Polarity + * @{ + */ + +#define TIM_BreakPolarity_Low ((uint16_t)0x0000) +#define TIM_BreakPolarity_High ((uint16_t)0x2000) +#define IS_TIM_BREAK_POLARITY(POLARITY) (((POLARITY) == TIM_BreakPolarity_Low) || \ + ((POLARITY) == TIM_BreakPolarity_High)) +/** + * @} + */ + +/** @defgroup TIM_Break1_Polarity + * @{ + */ + +#define TIM_Break1Polarity_Low ((uint32_t)0x00000000) +#define TIM_Break1Polarity_High ((uint32_t)0x00002000) +#define IS_TIM_BREAK1_POLARITY(POLARITY) (((POLARITY) == TIM_Break1Polarity_Low) || \ + ((POLARITY) == TIM_Break1Polarity_High)) +/** + * @} + */ + +/** @defgroup TIM_Break2_Polarity + * @{ + */ + +#define TIM_Break2Polarity_Low ((uint32_t)0x00000000) +#define TIM_Break2Polarity_High ((uint32_t)0x02000000) +#define IS_TIM_BREAK2_POLARITY(POLARITY) (((POLARITY) == TIM_Break2Polarity_Low) || \ + ((POLARITY) == TIM_Break2Polarity_High)) +/** + * @} + */ + +/** @defgroup TIM_Break1_Filter + * @{ + */ + +#define IS_TIM_BREAK1_FILTER(FILTER) ((FILTER) <= 0xF) +/** + * @} + */ + +/** @defgroup TIM_Break2_Filter + * @{ + */ + +#define IS_TIM_BREAK2_FILTER(FILTER) ((FILTER) <= 0xF) +/** + * @} + */ + +/** @defgroup TIM_AOE_Bit_Set_Reset + * @{ + */ + +#define TIM_AutomaticOutput_Enable ((uint16_t)0x4000) +#define TIM_AutomaticOutput_Disable ((uint16_t)0x0000) +#define IS_TIM_AUTOMATIC_OUTPUT_STATE(STATE) (((STATE) == TIM_AutomaticOutput_Enable) || \ + ((STATE) == TIM_AutomaticOutput_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Lock_level + * @{ + */ + +#define TIM_LOCKLevel_OFF ((uint16_t)0x0000) +#define TIM_LOCKLevel_1 ((uint16_t)0x0100) +#define TIM_LOCKLevel_2 ((uint16_t)0x0200) +#define TIM_LOCKLevel_3 ((uint16_t)0x0300) +#define IS_TIM_LOCK_LEVEL(LEVEL) (((LEVEL) == TIM_LOCKLevel_OFF) || \ + ((LEVEL) == TIM_LOCKLevel_1) || \ + ((LEVEL) == TIM_LOCKLevel_2) || \ + ((LEVEL) == TIM_LOCKLevel_3)) +/** + * @} + */ + +/** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state + * @{ + */ + +#define TIM_OSSIState_Enable ((uint16_t)0x0400) +#define TIM_OSSIState_Disable ((uint16_t)0x0000) +#define IS_TIM_OSSI_STATE(STATE) (((STATE) == TIM_OSSIState_Enable) || \ + ((STATE) == TIM_OSSIState_Disable)) +/** + * @} + */ + +/** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state + * @{ + */ + +#define TIM_OSSRState_Enable ((uint16_t)0x0800) +#define TIM_OSSRState_Disable ((uint16_t)0x0000) +#define IS_TIM_OSSR_STATE(STATE) (((STATE) == TIM_OSSRState_Enable) || \ + ((STATE) == TIM_OSSRState_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Idle_State + * @{ + */ + +#define TIM_OCIdleState_Set ((uint16_t)0x0100) +#define TIM_OCIdleState_Reset ((uint16_t)0x0000) +#define IS_TIM_OCIDLE_STATE(STATE) (((STATE) == TIM_OCIdleState_Set) || \ + ((STATE) == TIM_OCIdleState_Reset)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_Idle_State + * @{ + */ + +#define TIM_OCNIdleState_Set ((uint16_t)0x0200) +#define TIM_OCNIdleState_Reset ((uint16_t)0x0000) +#define IS_TIM_OCNIDLE_STATE(STATE) (((STATE) == TIM_OCNIdleState_Set) || \ + ((STATE) == TIM_OCNIdleState_Reset)) +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Polarity + * @{ + */ + +#define TIM_ICPolarity_Rising ((uint16_t)0x0000) +#define TIM_ICPolarity_Falling ((uint16_t)0x0002) +#define TIM_ICPolarity_BothEdge ((uint16_t)0x000A) +#define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \ + ((POLARITY) == TIM_ICPolarity_Falling)|| \ + ((POLARITY) == TIM_ICPolarity_BothEdge)) +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Selection + * @{ + */ + +#define TIM_ICSelection_DirectTI ((uint16_t)0x0001) /*!< TIM Input 1, 2, 3 or 4 is selected to be + connected to IC1, IC2, IC3 or IC4, respectively */ +#define TIM_ICSelection_IndirectTI ((uint16_t)0x0002) /*!< TIM Input 1, 2, 3 or 4 is selected to be + connected to IC2, IC1, IC4 or IC3, respectively. */ +#define TIM_ICSelection_TRC ((uint16_t)0x0003) /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC. */ +#define IS_TIM_IC_SELECTION(SELECTION) (((SELECTION) == TIM_ICSelection_DirectTI) || \ + ((SELECTION) == TIM_ICSelection_IndirectTI) || \ + ((SELECTION) == TIM_ICSelection_TRC)) +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Prescaler + * @{ + */ + +#define TIM_ICPSC_DIV1 ((uint16_t)0x0000) /*!< Capture performed each time an edge is detected on the capture input. */ +#define TIM_ICPSC_DIV2 ((uint16_t)0x0004) /*!< Capture performed once every 2 events. */ +#define TIM_ICPSC_DIV4 ((uint16_t)0x0008) /*!< Capture performed once every 4 events. */ +#define TIM_ICPSC_DIV8 ((uint16_t)0x000C) /*!< Capture performed once every 8 events. */ +#define IS_TIM_IC_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ICPSC_DIV1) || \ + ((PRESCALER) == TIM_ICPSC_DIV2) || \ + ((PRESCALER) == TIM_ICPSC_DIV4) || \ + ((PRESCALER) == TIM_ICPSC_DIV8)) +/** + * @} + */ + +/** @defgroup TIM_interrupt_sources + * @{ + */ + +#define TIM_IT_Update ((uint16_t)0x0001) +#define TIM_IT_CC1 ((uint16_t)0x0002) +#define TIM_IT_CC2 ((uint16_t)0x0004) +#define TIM_IT_CC3 ((uint16_t)0x0008) +#define TIM_IT_CC4 ((uint16_t)0x0010) +#define TIM_IT_COM ((uint16_t)0x0020) +#define TIM_IT_Trigger ((uint16_t)0x0040) +#define TIM_IT_Break ((uint16_t)0x0080) +#define IS_TIM_IT(IT) ((((IT) & (uint16_t)0xFF00) == 0x0000) && ((IT) != 0x0000)) + +#define IS_TIM_GET_IT(IT) (((IT) == TIM_IT_Update) || \ + ((IT) == TIM_IT_CC1) || \ + ((IT) == TIM_IT_CC2) || \ + ((IT) == TIM_IT_CC3) || \ + ((IT) == TIM_IT_CC4) || \ + ((IT) == TIM_IT_COM) || \ + ((IT) == TIM_IT_Trigger) || \ + ((IT) == TIM_IT_Break)) +/** + * @} + */ + +/** @defgroup TIM_DMA_Base_address + * @{ + */ + +#define TIM_DMABase_CR1 ((uint16_t)0x0000) +#define TIM_DMABase_CR2 ((uint16_t)0x0001) +#define TIM_DMABase_SMCR ((uint16_t)0x0002) +#define TIM_DMABase_DIER ((uint16_t)0x0003) +#define TIM_DMABase_SR ((uint16_t)0x0004) +#define TIM_DMABase_EGR ((uint16_t)0x0005) +#define TIM_DMABase_CCMR1 ((uint16_t)0x0006) +#define TIM_DMABase_CCMR2 ((uint16_t)0x0007) +#define TIM_DMABase_CCER ((uint16_t)0x0008) +#define TIM_DMABase_CNT ((uint16_t)0x0009) +#define TIM_DMABase_PSC ((uint16_t)0x000A) +#define TIM_DMABase_ARR ((uint16_t)0x000B) +#define TIM_DMABase_RCR ((uint16_t)0x000C) +#define TIM_DMABase_CCR1 ((uint16_t)0x000D) +#define TIM_DMABase_CCR2 ((uint16_t)0x000E) +#define TIM_DMABase_CCR3 ((uint16_t)0x000F) +#define TIM_DMABase_CCR4 ((uint16_t)0x0010) +#define TIM_DMABase_BDTR ((uint16_t)0x0011) +#define TIM_DMABase_DCR ((uint16_t)0x0012) +#define TIM_DMABase_OR ((uint16_t)0x0013) +#define TIM_DMABase_CCMR3 ((uint16_t)0x0014) +#define TIM_DMABase_CCR5 ((uint16_t)0x0015) +#define TIM_DMABase_CCR6 ((uint16_t)0x0016) +#define IS_TIM_DMA_BASE(BASE) (((BASE) == TIM_DMABase_CR1) || \ + ((BASE) == TIM_DMABase_CR2) || \ + ((BASE) == TIM_DMABase_SMCR) || \ + ((BASE) == TIM_DMABase_DIER) || \ + ((BASE) == TIM_DMABase_SR) || \ + ((BASE) == TIM_DMABase_EGR) || \ + ((BASE) == TIM_DMABase_CCMR1) || \ + ((BASE) == TIM_DMABase_CCMR2) || \ + ((BASE) == TIM_DMABase_CCER) || \ + ((BASE) == TIM_DMABase_CNT) || \ + ((BASE) == TIM_DMABase_PSC) || \ + ((BASE) == TIM_DMABase_ARR) || \ + ((BASE) == TIM_DMABase_RCR) || \ + ((BASE) == TIM_DMABase_CCR1) || \ + ((BASE) == TIM_DMABase_CCR2) || \ + ((BASE) == TIM_DMABase_CCR3) || \ + ((BASE) == TIM_DMABase_CCR4) || \ + ((BASE) == TIM_DMABase_BDTR) || \ + ((BASE) == TIM_DMABase_DCR) || \ + ((BASE) == TIM_DMABase_OR) || \ + ((BASE) == TIM_DMABase_CCMR3) || \ + ((BASE) == TIM_DMABase_CCR5) || \ + ((BASE) == TIM_DMABase_CCR6)) +/** + * @} + */ + +/** @defgroup TIM_DMA_Burst_Length + * @{ + */ + +#define TIM_DMABurstLength_1Transfer ((uint16_t)0x0000) +#define TIM_DMABurstLength_2Transfers ((uint16_t)0x0100) +#define TIM_DMABurstLength_3Transfers ((uint16_t)0x0200) +#define TIM_DMABurstLength_4Transfers ((uint16_t)0x0300) +#define TIM_DMABurstLength_5Transfers ((uint16_t)0x0400) +#define TIM_DMABurstLength_6Transfers ((uint16_t)0x0500) +#define TIM_DMABurstLength_7Transfers ((uint16_t)0x0600) +#define TIM_DMABurstLength_8Transfers ((uint16_t)0x0700) +#define TIM_DMABurstLength_9Transfers ((uint16_t)0x0800) +#define TIM_DMABurstLength_10Transfers ((uint16_t)0x0900) +#define TIM_DMABurstLength_11Transfers ((uint16_t)0x0A00) +#define TIM_DMABurstLength_12Transfers ((uint16_t)0x0B00) +#define TIM_DMABurstLength_13Transfers ((uint16_t)0x0C00) +#define TIM_DMABurstLength_14Transfers ((uint16_t)0x0D00) +#define TIM_DMABurstLength_15Transfers ((uint16_t)0x0E00) +#define TIM_DMABurstLength_16Transfers ((uint16_t)0x0F00) +#define TIM_DMABurstLength_17Transfers ((uint16_t)0x1000) +#define TIM_DMABurstLength_18Transfers ((uint16_t)0x1100) +#define IS_TIM_DMA_LENGTH(LENGTH) (((LENGTH) == TIM_DMABurstLength_1Transfer) || \ + ((LENGTH) == TIM_DMABurstLength_2Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_3Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_4Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_5Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_6Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_7Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_8Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_9Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_10Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_11Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_12Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_13Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_14Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_15Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_16Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_17Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_18Transfers)) +/** + * @} + */ + +/** @defgroup TIM_DMA_sources + * @{ + */ + +#define TIM_DMA_Update ((uint16_t)0x0100) +#define TIM_DMA_CC1 ((uint16_t)0x0200) +#define TIM_DMA_CC2 ((uint16_t)0x0400) +#define TIM_DMA_CC3 ((uint16_t)0x0800) +#define TIM_DMA_CC4 ((uint16_t)0x1000) +#define TIM_DMA_COM ((uint16_t)0x2000) +#define TIM_DMA_Trigger ((uint16_t)0x4000) +#define IS_TIM_DMA_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0x80FF) == 0x0000) && ((SOURCE) != 0x0000)) + +/** + * @} + */ + +/** @defgroup TIM_External_Trigger_Prescaler + * @{ + */ + +#define TIM_ExtTRGPSC_OFF ((uint16_t)0x0000) +#define TIM_ExtTRGPSC_DIV2 ((uint16_t)0x1000) +#define TIM_ExtTRGPSC_DIV4 ((uint16_t)0x2000) +#define TIM_ExtTRGPSC_DIV8 ((uint16_t)0x3000) +#define IS_TIM_EXT_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ExtTRGPSC_OFF) || \ + ((PRESCALER) == TIM_ExtTRGPSC_DIV2) || \ + ((PRESCALER) == TIM_ExtTRGPSC_DIV4) || \ + ((PRESCALER) == TIM_ExtTRGPSC_DIV8)) +/** + * @} + */ + +/** @defgroup TIM_Internal_Trigger_Selection + * @{ + */ + +#define TIM_TS_ITR0 ((uint16_t)0x0000) +#define TIM_TS_ITR1 ((uint16_t)0x0010) +#define TIM_TS_ITR2 ((uint16_t)0x0020) +#define TIM_TS_ITR3 ((uint16_t)0x0030) +#define TIM_TS_TI1F_ED ((uint16_t)0x0040) +#define TIM_TS_TI1FP1 ((uint16_t)0x0050) +#define TIM_TS_TI2FP2 ((uint16_t)0x0060) +#define TIM_TS_ETRF ((uint16_t)0x0070) +#define IS_TIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \ + ((SELECTION) == TIM_TS_ITR1) || \ + ((SELECTION) == TIM_TS_ITR2) || \ + ((SELECTION) == TIM_TS_ITR3) || \ + ((SELECTION) == TIM_TS_TI1F_ED) || \ + ((SELECTION) == TIM_TS_TI1FP1) || \ + ((SELECTION) == TIM_TS_TI2FP2) || \ + ((SELECTION) == TIM_TS_ETRF)) +#define IS_TIM_INTERNAL_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \ + ((SELECTION) == TIM_TS_ITR1) || \ + ((SELECTION) == TIM_TS_ITR2) || \ + ((SELECTION) == TIM_TS_ITR3)) +/** + * @} + */ + +/** @defgroup TIM_TIx_External_Clock_Source + * @{ + */ + +#define TIM_TIxExternalCLK1Source_TI1 ((uint16_t)0x0050) +#define TIM_TIxExternalCLK1Source_TI2 ((uint16_t)0x0060) +#define TIM_TIxExternalCLK1Source_TI1ED ((uint16_t)0x0040) + +/** + * @} + */ + +/** @defgroup TIM_External_Trigger_Polarity + * @{ + */ +#define TIM_ExtTRGPolarity_Inverted ((uint16_t)0x8000) +#define TIM_ExtTRGPolarity_NonInverted ((uint16_t)0x0000) +#define IS_TIM_EXT_POLARITY(POLARITY) (((POLARITY) == TIM_ExtTRGPolarity_Inverted) || \ + ((POLARITY) == TIM_ExtTRGPolarity_NonInverted)) +/** + * @} + */ + +/** @defgroup TIM_Prescaler_Reload_Mode + * @{ + */ + +#define TIM_PSCReloadMode_Update ((uint16_t)0x0000) +#define TIM_PSCReloadMode_Immediate ((uint16_t)0x0001) +#define IS_TIM_PRESCALER_RELOAD(RELOAD) (((RELOAD) == TIM_PSCReloadMode_Update) || \ + ((RELOAD) == TIM_PSCReloadMode_Immediate)) +/** + * @} + */ + +/** @defgroup TIM_Forced_Action + * @{ + */ + +#define TIM_ForcedAction_Active ((uint16_t)0x0050) +#define TIM_ForcedAction_InActive ((uint16_t)0x0040) +#define IS_TIM_FORCED_ACTION(ACTION) (((ACTION) == TIM_ForcedAction_Active) || \ + ((ACTION) == TIM_ForcedAction_InActive)) +/** + * @} + */ + +/** @defgroup TIM_Encoder_Mode + * @{ + */ + +#define TIM_EncoderMode_TI1 ((uint16_t)0x0001) +#define TIM_EncoderMode_TI2 ((uint16_t)0x0002) +#define TIM_EncoderMode_TI12 ((uint16_t)0x0003) +#define IS_TIM_ENCODER_MODE(MODE) (((MODE) == TIM_EncoderMode_TI1) || \ + ((MODE) == TIM_EncoderMode_TI2) || \ + ((MODE) == TIM_EncoderMode_TI12)) +/** + * @} + */ + + +/** @defgroup TIM_Event_Source + * @{ + */ + +#define TIM_EventSource_Update ((uint16_t)0x0001) +#define TIM_EventSource_CC1 ((uint16_t)0x0002) +#define TIM_EventSource_CC2 ((uint16_t)0x0004) +#define TIM_EventSource_CC3 ((uint16_t)0x0008) +#define TIM_EventSource_CC4 ((uint16_t)0x0010) +#define TIM_EventSource_COM ((uint16_t)0x0020) +#define TIM_EventSource_Trigger ((uint16_t)0x0040) +#define TIM_EventSource_Break ((uint16_t)0x0080) +#define TIM_EventSource_Break2 ((uint16_t)0x0100) +#define IS_TIM_EVENT_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0xFE00) == 0x0000) && ((SOURCE) != 0x0000)) + +/** + * @} + */ + +/** @defgroup TIM_Update_Source + * @{ + */ + +#define TIM_UpdateSource_Global ((uint16_t)0x0000) /*!< Source of update is the counter overflow/underflow + or the setting of UG bit, or an update generation + through the slave mode controller. */ +#define TIM_UpdateSource_Regular ((uint16_t)0x0001) /*!< Source of update is counter overflow/underflow. */ +#define IS_TIM_UPDATE_SOURCE(SOURCE) (((SOURCE) == TIM_UpdateSource_Global) || \ + ((SOURCE) == TIM_UpdateSource_Regular)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Preload_State + * @{ + */ + +#define TIM_OCPreload_Enable ((uint16_t)0x0008) +#define TIM_OCPreload_Disable ((uint16_t)0x0000) +#define IS_TIM_OCPRELOAD_STATE(STATE) (((STATE) == TIM_OCPreload_Enable) || \ + ((STATE) == TIM_OCPreload_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Fast_State + * @{ + */ + +#define TIM_OCFast_Enable ((uint16_t)0x0004) +#define TIM_OCFast_Disable ((uint16_t)0x0000) +#define IS_TIM_OCFAST_STATE(STATE) (((STATE) == TIM_OCFast_Enable) || \ + ((STATE) == TIM_OCFast_Disable)) + +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Clear_State + * @{ + */ + +#define TIM_OCClear_Enable ((uint16_t)0x0080) +#define TIM_OCClear_Disable ((uint16_t)0x0000) +#define IS_TIM_OCCLEAR_STATE(STATE) (((STATE) == TIM_OCClear_Enable) || \ + ((STATE) == TIM_OCClear_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Trigger_Output_Source + * @{ + */ + +#define TIM_TRGOSource_Reset ((uint16_t)0x0000) +#define TIM_TRGOSource_Enable ((uint16_t)0x0010) +#define TIM_TRGOSource_Update ((uint16_t)0x0020) +#define TIM_TRGOSource_OC1 ((uint16_t)0x0030) +#define TIM_TRGOSource_OC1Ref ((uint16_t)0x0040) +#define TIM_TRGOSource_OC2Ref ((uint16_t)0x0050) +#define TIM_TRGOSource_OC3Ref ((uint16_t)0x0060) +#define TIM_TRGOSource_OC4Ref ((uint16_t)0x0070) +#define IS_TIM_TRGO_SOURCE(SOURCE) (((SOURCE) == TIM_TRGOSource_Reset) || \ + ((SOURCE) == TIM_TRGOSource_Enable) || \ + ((SOURCE) == TIM_TRGOSource_Update) || \ + ((SOURCE) == TIM_TRGOSource_OC1) || \ + ((SOURCE) == TIM_TRGOSource_OC1Ref) || \ + ((SOURCE) == TIM_TRGOSource_OC2Ref) || \ + ((SOURCE) == TIM_TRGOSource_OC3Ref) || \ + ((SOURCE) == TIM_TRGOSource_OC4Ref)) + + +#define TIM_TRGO2Source_Reset ((uint32_t)0x00000000) +#define TIM_TRGO2Source_Enable ((uint32_t)0x00100000) +#define TIM_TRGO2Source_Update ((uint32_t)0x00200000) +#define TIM_TRGO2Source_OC1 ((uint32_t)0x00300000) +#define TIM_TRGO2Source_OC1Ref ((uint32_t)0x00400000) +#define TIM_TRGO2Source_OC2Ref ((uint32_t)0x00500000) +#define TIM_TRGO2Source_OC3Ref ((uint32_t)0x00600000) +#define TIM_TRGO2Source_OC4Ref ((uint32_t)0x00700000) +#define TIM_TRGO2Source_OC5Ref ((uint32_t)0x00800000) +#define TIM_TRGO2Source_OC6Ref ((uint32_t)0x00900000) +#define TIM_TRGO2Source_OC4Ref_RisingFalling ((uint32_t)0x00A00000) +#define TIM_TRGO2Source_OC6Ref_RisingFalling ((uint32_t)0x00B00000) +#define TIM_TRGO2Source_OC4RefRising_OC6RefRising ((uint32_t)0x00C00000) +#define TIM_TRGO2Source_OC4RefRising_OC6RefFalling ((uint32_t)0x00D00000) +#define TIM_TRGO2Source_OC5RefRising_OC6RefRising ((uint32_t)0x00E00000) +#define TIM_TRGO2Source_OC5RefRising_OC6RefFalling ((uint32_t)0x00F00000) +#define IS_TIM_TRGO2_SOURCE(SOURCE) (((SOURCE) == TIM_TRGO2Source_Reset) || \ + ((SOURCE) == TIM_TRGO2Source_Enable) || \ + ((SOURCE) == TIM_TRGO2Source_Update) || \ + ((SOURCE) == TIM_TRGO2Source_OC1) || \ + ((SOURCE) == TIM_TRGO2Source_OC1Ref) || \ + ((SOURCE) == TIM_TRGO2Source_OC2Ref) || \ + ((SOURCE) == TIM_TRGO2Source_OC3Ref) || \ + ((SOURCE) == TIM_TRGO2Source_OC4Ref) || \ + ((SOURCE) == TIM_TRGO2Source_OC5Ref) || \ + ((SOURCE) == TIM_TRGO2Source_OC6Ref) || \ + ((SOURCE) == TIM_TRGO2Source_OC4Ref_RisingFalling) || \ + ((SOURCE) == TIM_TRGO2Source_OC6Ref_RisingFalling) || \ + ((SOURCE) == TIM_TRGO2Source_OC4RefRising_OC6RefRising) || \ + ((SOURCE) == TIM_TRGO2Source_OC4RefRising_OC6RefFalling) || \ + ((SOURCE) == TIM_TRGO2Source_OC5RefRising_OC6RefRising) || \ + ((SOURCE) == TIM_TRGO2Source_OC5RefRising_OC6RefFalling)) +/** + * @} + */ + +/** @defgroup TIM_Slave_Mode + * @{ + */ + +#define TIM_SlaveMode_Reset ((uint32_t)0x00004) +#define TIM_SlaveMode_Gated ((uint32_t)0x00005) +#define TIM_SlaveMode_Trigger ((uint32_t)0x00006) +#define TIM_SlaveMode_External1 ((uint32_t)0x00007) +#define TIM_SlaveMode_Combined_ResetTrigger ((uint32_t)0x10000) +#define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SlaveMode_Reset) || \ + ((MODE) == TIM_SlaveMode_Gated) || \ + ((MODE) == TIM_SlaveMode_Trigger) || \ + ((MODE) == TIM_SlaveMode_External1) || \ + ((MODE) == TIM_SlaveMode_Combined_ResetTrigger)) +/** + * @} + */ + +/** @defgroup TIM_Master_Slave_Mode + * @{ + */ + +#define TIM_MasterSlaveMode_Enable ((uint16_t)0x0080) +#define TIM_MasterSlaveMode_Disable ((uint16_t)0x0000) +#define IS_TIM_MSM_STATE(STATE) (((STATE) == TIM_MasterSlaveMode_Enable) || \ + ((STATE) == TIM_MasterSlaveMode_Disable)) +/** + * @} + */ +/** @defgroup TIM_Remap + * @{ + */ +#define TIM16_GPIO ((uint16_t)0x0000) +#define TIM16_RTC_CLK ((uint16_t)0x0001) +#define TIM16_HSEDiv32 ((uint16_t)0x0002) +#define TIM16_MCO ((uint16_t)0x0003) + +#define TIM1_ADC1_AWDG1 ((uint16_t)0x0001) +#define TIM1_ADC1_AWDG2 ((uint16_t)0x0002) +#define TIM1_ADC1_AWDG3 ((uint16_t)0x0003) +#define TIM1_ADC4_AWDG1 ((uint16_t)0x0004) +#define TIM1_ADC4_AWDG2 ((uint16_t)0x0008) +#define TIM1_ADC4_AWDG3 ((uint16_t)0x000C) + +#define TIM8_ADC2_AWDG1 ((uint16_t)0x0001) +#define TIM8_ADC2_AWDG2 ((uint16_t)0x0002) +#define TIM8_ADC2_AWDG3 ((uint16_t)0x0003) +#define TIM8_ADC3_AWDG1 ((uint16_t)0x0004) +#define TIM8_ADC3_AWDG2 ((uint16_t)0x0008) +#define TIM8_ADC3_AWDG3 ((uint16_t)0x000C) + +#define IS_TIM_REMAP(TIM_REMAP) (((TIM_REMAP) == TIM16_GPIO)|| \ + ((TIM_REMAP) == TIM16_RTC_CLK) || \ + ((TIM_REMAP) == TIM16_HSEDiv32) || \ + ((TIM_REMAP) == TIM16_MCO) ||\ + ((TIM_REMAP) == TIM1_ADC1_AWDG1) ||\ + ((TIM_REMAP) == TIM1_ADC1_AWDG2) ||\ + ((TIM_REMAP) == TIM1_ADC1_AWDG3) ||\ + ((TIM_REMAP) == TIM1_ADC4_AWDG1) ||\ + ((TIM_REMAP) == TIM1_ADC4_AWDG2) ||\ + ((TIM_REMAP) == TIM1_ADC4_AWDG3) ||\ + ((TIM_REMAP) == TIM8_ADC2_AWDG1) ||\ + ((TIM_REMAP) == TIM8_ADC2_AWDG2) ||\ + ((TIM_REMAP) == TIM8_ADC2_AWDG3) ||\ + ((TIM_REMAP) == TIM8_ADC3_AWDG1) ||\ + ((TIM_REMAP) == TIM8_ADC3_AWDG2) ||\ + ((TIM_REMAP) == TIM8_ADC3_AWDG3)) + +/** + * @} + */ +/** @defgroup TIM_Flags + * @{ + */ + +#define TIM_FLAG_Update ((uint32_t)0x00001) +#define TIM_FLAG_CC1 ((uint32_t)0x00002) +#define TIM_FLAG_CC2 ((uint32_t)0x00004) +#define TIM_FLAG_CC3 ((uint32_t)0x00008) +#define TIM_FLAG_CC4 ((uint32_t)0x00010) +#define TIM_FLAG_COM ((uint32_t)0x00020) +#define TIM_FLAG_Trigger ((uint32_t)0x00040) +#define TIM_FLAG_Break ((uint32_t)0x00080) +#define TIM_FLAG_Break2 ((uint32_t)0x00100) +#define TIM_FLAG_CC1OF ((uint32_t)0x00200) +#define TIM_FLAG_CC2OF ((uint32_t)0x00400) +#define TIM_FLAG_CC3OF ((uint32_t)0x00800) +#define TIM_FLAG_CC4OF ((uint32_t)0x01000) +#define TIM_FLAG_CC5 ((uint32_t)0x10000) +#define TIM_FLAG_CC6 ((uint32_t)0x20000) +#define IS_TIM_GET_FLAG(FLAG) (((FLAG) == TIM_FLAG_Update) || \ + ((FLAG) == TIM_FLAG_CC1) || \ + ((FLAG) == TIM_FLAG_CC2) || \ + ((FLAG) == TIM_FLAG_CC3) || \ + ((FLAG) == TIM_FLAG_CC4) || \ + ((FLAG) == TIM_FLAG_COM) || \ + ((FLAG) == TIM_FLAG_Trigger) || \ + ((FLAG) == TIM_FLAG_Break) || \ + ((FLAG) == TIM_FLAG_Break2) || \ + ((FLAG) == TIM_FLAG_CC1OF) || \ + ((FLAG) == TIM_FLAG_CC2OF) || \ + ((FLAG) == TIM_FLAG_CC3OF) || \ + ((FLAG) == TIM_FLAG_CC4OF) ||\ + ((FLAG) == TIM_FLAG_CC5) ||\ + ((FLAG) == TIM_FLAG_CC6)) + +#define IS_TIM_CLEAR_FLAG(TIM_FLAG) ((((TIM_FLAG) & (uint32_t)0xE000) == 0x0000) && ((TIM_FLAG) != 0x0000)) +/** + * @} + */ + +/** @defgroup TIM_OCReferenceClear + * @{ + */ +#define TIM_OCReferenceClear_ETRF ((uint16_t)0x0008) +#define TIM_OCReferenceClear_OCREFCLR ((uint16_t)0x0000) +#define TIM_OCREFERENCECECLEAR_SOURCE(SOURCE) (((SOURCE) == TIM_OCReferenceClear_ETRF) || \ + ((SOURCE) == TIM_OCReferenceClear_OCREFCLR)) + +/** @defgroup TIM_Input_Capture_Filer_Value + * @{ + */ + +#define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF) +/** + * @} + */ + +/** @defgroup TIM_External_Trigger_Filter + * @{ + */ + +#define IS_TIM_EXT_FILTER(EXTFILTER) ((EXTFILTER) <= 0xF) +/** + * @} + */ + +/** @defgroup TIM_Legacy + * @{ + */ + +#define TIM_DMABurstLength_1Byte TIM_DMABurstLength_1Transfer +#define TIM_DMABurstLength_2Bytes TIM_DMABurstLength_2Transfers +#define TIM_DMABurstLength_3Bytes TIM_DMABurstLength_3Transfers +#define TIM_DMABurstLength_4Bytes TIM_DMABurstLength_4Transfers +#define TIM_DMABurstLength_5Bytes TIM_DMABurstLength_5Transfers +#define TIM_DMABurstLength_6Bytes TIM_DMABurstLength_6Transfers +#define TIM_DMABurstLength_7Bytes TIM_DMABurstLength_7Transfers +#define TIM_DMABurstLength_8Bytes TIM_DMABurstLength_8Transfers +#define TIM_DMABurstLength_9Bytes TIM_DMABurstLength_9Transfers +#define TIM_DMABurstLength_10Bytes TIM_DMABurstLength_10Transfers +#define TIM_DMABurstLength_11Bytes TIM_DMABurstLength_11Transfers +#define TIM_DMABurstLength_12Bytes TIM_DMABurstLength_12Transfers +#define TIM_DMABurstLength_13Bytes TIM_DMABurstLength_13Transfers +#define TIM_DMABurstLength_14Bytes TIM_DMABurstLength_14Transfers +#define TIM_DMABurstLength_15Bytes TIM_DMABurstLength_15Transfers +#define TIM_DMABurstLength_16Bytes TIM_DMABurstLength_16Transfers +#define TIM_DMABurstLength_17Bytes TIM_DMABurstLength_17Transfers +#define TIM_DMABurstLength_18Bytes TIM_DMABurstLength_18Transfers +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/* TimeBase management ********************************************************/ +void TIM_DeInit(TIM_TypeDef* TIMx); +void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); +void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); +void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode); +void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode); +void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter); +void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint32_t Autoreload); +uint32_t TIM_GetCounter(TIM_TypeDef* TIMx); +uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx); +void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource); +void TIM_UIFRemap(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode); +void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD); +void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState); + +/* Output Compare management **************************************************/ +void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC5Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC6Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_SelectGC5C1(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectGC5C2(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectGC5C3(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint32_t TIM_OCMode); +void TIM_SetCompare1(TIM_TypeDef* TIMx, uint32_t Compare1); +void TIM_SetCompare2(TIM_TypeDef* TIMx, uint32_t Compare2); +void TIM_SetCompare3(TIM_TypeDef* TIMx, uint32_t Compare3); +void TIM_SetCompare4(TIM_TypeDef* TIMx, uint32_t Compare4); +void TIM_SetCompare5(TIM_TypeDef* TIMx, uint32_t Compare5); +void TIM_SetCompare6(TIM_TypeDef* TIMx, uint32_t Compare6); +void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC5Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC6Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC5PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC6PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC5Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC6Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_SelectOCREFClear(TIM_TypeDef* TIMx, uint16_t TIM_OCReferenceClear); +void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity); +void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity); +void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity); +void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC5PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC6PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx); +void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN); + +/* Input Capture management ***************************************************/ +void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct); +void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct); +void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct); +uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx); +uint32_t TIM_GetCapture2(TIM_TypeDef* TIMx); +uint32_t TIM_GetCapture3(TIM_TypeDef* TIMx); +uint32_t TIM_GetCapture4(TIM_TypeDef* TIMx); +void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); + +/* Advanced-control timers (TIM1 and TIM8) specific features ******************/ +void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct); +void TIM_Break1Config(TIM_TypeDef* TIMx, uint32_t TIM_Break1Polarity, uint8_t TIM_Break1Filter); +void TIM_Break2Config(TIM_TypeDef* TIMx, uint32_t TIM_Break2Polarity, uint8_t TIM_Break2Filter); +void TIM_Break1Cmd(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_Break2Cmd(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct); +void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState); + +/* Interrupts, DMA and flags management ***************************************/ +void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState); +void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource); +FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint32_t TIM_FLAG); +void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); +ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT); +void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT); +void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength); +void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState); +void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState); + +/* Clocks management **********************************************************/ +void TIM_InternalClockConfig(TIM_TypeDef* TIMx); +void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource); +void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource, + uint16_t TIM_ICPolarity, uint16_t ICFilter); +void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter); +void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, + uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter); + +/* Synchronization management *************************************************/ +void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource); +void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource); +void TIM_SelectOutputTrigger2(TIM_TypeDef* TIMx, uint32_t TIM_TRGO2Source); +void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint32_t TIM_SlaveMode); +void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode); +void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter); + +/* Specific interface management **********************************************/ +void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode, + uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity); +void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState); + +/* Specific remapping management **********************************************/ +void TIM_RemapConfig(TIM_TypeDef* TIMx, uint16_t TIM_Remap); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F30x_TIM_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_usart.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,617 @@ +/** + ****************************************************************************** + * @file stm32f30x_usart.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the USART + * firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_USART_H +#define __STM32F30x_USART_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup USART + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + + + +/** + * @brief USART Init Structure definition + */ + +typedef struct +{ + uint32_t USART_BaudRate; /*!< This member configures the USART communication baud rate. + The baud rate is computed using the following formula: + - IntegerDivider = ((PCLKx) / (16 * (USART_InitStruct->USART_BaudRate))) + - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */ + + uint32_t USART_WordLength; /*!< Specifies the number of data bits transmitted or received in a frame. + This parameter can be a value of @ref USART_Word_Length */ + + uint32_t USART_StopBits; /*!< Specifies the number of stop bits transmitted. + This parameter can be a value of @ref USART_Stop_Bits */ + + uint32_t USART_Parity; /*!< Specifies the parity mode. + This parameter can be a value of @ref USART_Parity + @note When parity is enabled, the computed parity is inserted + at the MSB position of the transmitted data (9th bit when + the word length is set to 9 data bits; 8th bit when the + word length is set to 8 data bits). */ + + uint32_t USART_Mode; /*!< Specifies wether the Receive or Transmit mode is enabled or disabled. + This parameter can be a value of @ref USART_Mode */ + + uint32_t USART_HardwareFlowControl; /*!< Specifies wether the hardware flow control mode is enabled + or disabled. + This parameter can be a value of @ref USART_Hardware_Flow_Control*/ +} USART_InitTypeDef; + +/** + * @brief USART Clock Init Structure definition + */ + +typedef struct +{ + uint32_t USART_Clock; /*!< Specifies whether the USART clock is enabled or disabled. + This parameter can be a value of @ref USART_Clock */ + + uint32_t USART_CPOL; /*!< Specifies the steady state of the serial clock. + This parameter can be a value of @ref USART_Clock_Polarity */ + + uint32_t USART_CPHA; /*!< Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref USART_Clock_Phase */ + + uint32_t USART_LastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitted + data bit (MSB) has to be output on the SCLK pin in synchronous mode. + This parameter can be a value of @ref USART_Last_Bit */ +} USART_ClockInitTypeDef; + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup USART_Exported_Constants + * @{ + */ + +#define IS_USART_ALL_PERIPH(PERIPH) (((PERIPH) == USART1) || \ + ((PERIPH) == USART2) || \ + ((PERIPH) == USART3) || \ + ((PERIPH) == UART4) || \ + ((PERIPH) == UART5)) + +#define IS_USART_123_PERIPH(PERIPH) (((PERIPH) == USART1) || \ + ((PERIPH) == USART2) || \ + ((PERIPH) == USART3)) + +#define IS_USART_1234_PERIPH(PERIPH) (((PERIPH) == USART1) || \ + ((PERIPH) == USART2) || \ + ((PERIPH) == USART3) || \ + ((PERIPH) == UART4)) + + +/** @defgroup USART_Word_Length + * @{ + */ + +#define USART_WordLength_8b ((uint32_t)0x00000000) +#define USART_WordLength_9b USART_CR1_M +#define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \ + ((LENGTH) == USART_WordLength_9b)) +/** + * @} + */ + +/** @defgroup USART_Stop_Bits + * @{ + */ + +#define USART_StopBits_1 ((uint32_t)0x00000000) +#define USART_StopBits_2 USART_CR2_STOP_1 +#define USART_StopBits_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) +#define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \ + ((STOPBITS) == USART_StopBits_2) || \ + ((STOPBITS) == USART_StopBits_1_5)) +/** + * @} + */ + +/** @defgroup USART_Parity + * @{ + */ + +#define USART_Parity_No ((uint32_t)0x00000000) +#define USART_Parity_Even USART_CR1_PCE +#define USART_Parity_Odd (USART_CR1_PCE | USART_CR1_PS) +#define IS_USART_PARITY(PARITY) (((PARITY) == USART_Parity_No) || \ + ((PARITY) == USART_Parity_Even) || \ + ((PARITY) == USART_Parity_Odd)) +/** + * @} + */ + +/** @defgroup USART_Mode + * @{ + */ + +#define USART_Mode_Rx USART_CR1_RE +#define USART_Mode_Tx USART_CR1_TE +#define IS_USART_MODE(MODE) ((((MODE) & (uint32_t)0xFFFFFFF3) == 0x00) && \ + ((MODE) != (uint32_t)0x00)) +/** + * @} + */ + +/** @defgroup USART_Hardware_Flow_Control + * @{ + */ + +#define USART_HardwareFlowControl_None ((uint32_t)0x00000000) +#define USART_HardwareFlowControl_RTS USART_CR3_RTSE +#define USART_HardwareFlowControl_CTS USART_CR3_CTSE +#define USART_HardwareFlowControl_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) +#define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\ + (((CONTROL) == USART_HardwareFlowControl_None) || \ + ((CONTROL) == USART_HardwareFlowControl_RTS) || \ + ((CONTROL) == USART_HardwareFlowControl_CTS) || \ + ((CONTROL) == USART_HardwareFlowControl_RTS_CTS)) +/** + * @} + */ + +/** @defgroup USART_Clock + * @{ + */ + +#define USART_Clock_Disable ((uint32_t)0x00000000) +#define USART_Clock_Enable USART_CR2_CLKEN +#define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_Clock_Disable) || \ + ((CLOCK) == USART_Clock_Enable)) +/** + * @} + */ + +/** @defgroup USART_Clock_Polarity + * @{ + */ + +#define USART_CPOL_Low ((uint32_t)0x00000000) +#define USART_CPOL_High USART_CR2_CPOL +#define IS_USART_CPOL(CPOL) (((CPOL) == USART_CPOL_Low) || ((CPOL) == USART_CPOL_High)) + +/** + * @} + */ + +/** @defgroup USART_Clock_Phase + * @{ + */ + +#define USART_CPHA_1Edge ((uint32_t)0x00000000) +#define USART_CPHA_2Edge USART_CR2_CPHA +#define IS_USART_CPHA(CPHA) (((CPHA) == USART_CPHA_1Edge) || ((CPHA) == USART_CPHA_2Edge)) + +/** + * @} + */ + +/** @defgroup USART_Last_Bit + * @{ + */ + +#define USART_LastBit_Disable ((uint32_t)0x00000000) +#define USART_LastBit_Enable USART_CR2_LBCL +#define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LastBit_Disable) || \ + ((LASTBIT) == USART_LastBit_Enable)) +/** + * @} + */ + +/** @defgroup USART_DMA_Requests + * @{ + */ + +#define USART_DMAReq_Tx USART_CR3_DMAT +#define USART_DMAReq_Rx USART_CR3_DMAR +#define IS_USART_DMAREQ(DMAREQ) ((((DMAREQ) & (uint32_t)0xFFFFFF3F) == 0x00) && \ + ((DMAREQ) != (uint32_t)0x00)) + +/** + * @} + */ + +/** @defgroup USART_DMA_Recception_Error + * @{ + */ + +#define USART_DMAOnError_Enable ((uint32_t)0x00000000) +#define USART_DMAOnError_Disable USART_CR3_DDRE +#define IS_USART_DMAONERROR(DMAERROR) (((DMAERROR) == USART_DMAOnError_Disable)|| \ + ((DMAERROR) == USART_DMAOnError_Enable)) +/** + * @} + */ + +/** @defgroup USART_MuteMode_WakeUp_methods + * @{ + */ + +#define USART_WakeUp_IdleLine ((uint32_t)0x00000000) +#define USART_WakeUp_AddressMark USART_CR1_WAKE +#define IS_USART_MUTEMODE_WAKEUP(WAKEUP) (((WAKEUP) == USART_WakeUp_IdleLine) || \ + ((WAKEUP) == USART_WakeUp_AddressMark)) +/** + * @} + */ + +/** @defgroup USART_Address_Detection + * @{ + */ + +#define USART_AddressLength_4b ((uint32_t)0x00000000) +#define USART_AddressLength_7b USART_CR2_ADDM7 +#define IS_USART_ADDRESS_DETECTION(ADDRESS) (((ADDRESS) == USART_AddressLength_4b) || \ + ((ADDRESS) == USART_AddressLength_7b)) +/** + * @} + */ + +/** @defgroup USART_StopMode_WakeUp_methods + * @{ + */ + +#define USART_WakeUpSource_AddressMatch ((uint32_t)0x00000000) +#define USART_WakeUpSource_StartBit USART_CR3_WUS_1 +#define USART_WakeUpSource_RXNE (uint32_t)(USART_CR3_WUS_0 | USART_CR3_WUS_1) +#define IS_USART_STOPMODE_WAKEUPSOURCE(SOURCE) (((SOURCE) == USART_WakeUpSource_AddressMatch) || \ + ((SOURCE) == USART_WakeUpSource_StartBit) || \ + ((SOURCE) == USART_WakeUpSource_RXNE)) +/** + * @} + */ + +/** @defgroup USART_LIN_Break_Detection_Length + * @{ + */ + +#define USART_LINBreakDetectLength_10b ((uint32_t)0x00000000) +#define USART_LINBreakDetectLength_11b USART_CR2_LBDL +#define IS_USART_LIN_BREAK_DETECT_LENGTH(LENGTH) \ + (((LENGTH) == USART_LINBreakDetectLength_10b) || \ + ((LENGTH) == USART_LINBreakDetectLength_11b)) +/** + * @} + */ + +/** @defgroup USART_IrDA_Low_Power + * @{ + */ + +#define USART_IrDAMode_LowPower USART_CR3_IRLP +#define USART_IrDAMode_Normal ((uint32_t)0x00000000) +#define IS_USART_IRDA_MODE(MODE) (((MODE) == USART_IrDAMode_LowPower) || \ + ((MODE) == USART_IrDAMode_Normal)) +/** + * @} + */ + +/** @defgroup USART_DE_Polarity + * @{ + */ + +#define USART_DEPolarity_High ((uint32_t)0x00000000) +#define USART_DEPolarity_Low USART_CR3_DEP +#define IS_USART_DE_POLARITY(POLARITY) (((POLARITY) == USART_DEPolarity_Low) || \ + ((POLARITY) == USART_DEPolarity_High)) +/** + * @} + */ + +/** @defgroup USART_Inversion_Pins + * @{ + */ + +#define USART_InvPin_Tx USART_CR2_TXINV +#define USART_InvPin_Rx USART_CR2_RXINV +#define IS_USART_INVERSTION_PIN(PIN) ((((PIN) & (uint32_t)0xFFFCFFFF) == 0x00) && \ + ((PIN) != (uint32_t)0x00)) + +/** + * @} + */ + +/** @defgroup USART_AutoBaudRate_Mode + * @{ + */ + +#define USART_AutoBaudRate_StartBit ((uint32_t)0x00000000) +#define USART_AutoBaudRate_FallingEdge USART_CR2_ABRMODE_0 +#define USART_AutoBaudRate_0x7FFrame USART_CR2_ABRMODE_1 +#define USART_AutoBaudRate_0x55Frame (USART_CR2_ABRMODE_0 | USART_CR2_ABRMODE_1) +#define IS_USART_AUTOBAUDRATE_MODE(MODE) (((MODE) == USART_AutoBaudRate_StartBit) || \ + ((MODE) == USART_AutoBaudRate_FallingEdge) || \ + ((MODE) == USART_AutoBaudRate_0x7FFrame) || \ + ((MODE) == USART_AutoBaudRate_0x55Frame)) +/** + * @} + */ + +/** @defgroup USART_OVR_DETECTION + * @{ + */ + +#define USART_OVRDetection_Enable ((uint32_t)0x00000000) +#define USART_OVRDetection_Disable USART_CR3_OVRDIS +#define IS_USART_OVRDETECTION(OVR) (((OVR) == USART_OVRDetection_Enable)|| \ + ((OVR) == USART_OVRDetection_Disable)) +/** + * @} + */ +/** @defgroup USART_Request + * @{ + */ + +#define USART_Request_ABRRQ USART_RQR_ABRRQ +#define USART_Request_SBKRQ USART_RQR_SBKRQ +#define USART_Request_MMRQ USART_RQR_MMRQ +#define USART_Request_RXFRQ USART_RQR_RXFRQ +#define USART_Request_TXFRQ USART_RQR_TXFRQ + +#define IS_USART_REQUEST(REQUEST) (((REQUEST) == USART_Request_TXFRQ) || \ + ((REQUEST) == USART_Request_RXFRQ) || \ + ((REQUEST) == USART_Request_MMRQ) || \ + ((REQUEST) == USART_Request_SBKRQ) || \ + ((REQUEST) == USART_Request_ABRRQ)) +/** + * @} + */ + +/** @defgroup USART_Flags + * @{ + */ +#define USART_FLAG_REACK USART_ISR_REACK +#define USART_FLAG_TEACK USART_ISR_TEACK +#define USART_FLAG_WU USART_ISR_WUF +#define USART_FLAG_RWU USART_ISR_RWU +#define USART_FLAG_SBK USART_ISR_SBKF +#define USART_FLAG_CM USART_ISR_CMF +#define USART_FLAG_BUSY USART_ISR_BUSY +#define USART_FLAG_ABRF USART_ISR_ABRF +#define USART_FLAG_ABRE USART_ISR_ABRE +#define USART_FLAG_EOB USART_ISR_EOBF +#define USART_FLAG_RTO USART_ISR_RTOF +#define USART_FLAG_nCTSS USART_ISR_CTS +#define USART_FLAG_CTS USART_ISR_CTSIF +#define USART_FLAG_LBD USART_ISR_LBD +#define USART_FLAG_TXE USART_ISR_TXE +#define USART_FLAG_TC USART_ISR_TC +#define USART_FLAG_RXNE USART_ISR_RXNE +#define USART_FLAG_IDLE USART_ISR_IDLE +#define USART_FLAG_ORE USART_ISR_ORE +#define USART_FLAG_NE USART_ISR_NE +#define USART_FLAG_FE USART_ISR_FE +#define USART_FLAG_PE USART_ISR_PE +#define IS_USART_FLAG(FLAG) (((FLAG) == USART_FLAG_PE) || ((FLAG) == USART_FLAG_TXE) || \ + ((FLAG) == USART_FLAG_TC) || ((FLAG) == USART_FLAG_RXNE) || \ + ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_LBD) || \ + ((FLAG) == USART_FLAG_CTS) || ((FLAG) == USART_FLAG_ORE) || \ + ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE) || \ + ((FLAG) == USART_FLAG_nCTSS) || ((FLAG) == USART_FLAG_RTO) || \ + ((FLAG) == USART_FLAG_EOB) || ((FLAG) == USART_FLAG_ABRE) || \ + ((FLAG) == USART_FLAG_ABRF) || ((FLAG) == USART_FLAG_BUSY) || \ + ((FLAG) == USART_FLAG_CM) || ((FLAG) == USART_FLAG_SBK) || \ + ((FLAG) == USART_FLAG_RWU) || ((FLAG) == USART_FLAG_WU) || \ + ((FLAG) == USART_FLAG_TEACK)|| ((FLAG) == USART_FLAG_REACK)) + +#define IS_USART_CLEAR_FLAG(FLAG) (((FLAG) == USART_FLAG_WU) || ((FLAG) == USART_FLAG_TC) || \ + ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_ORE) || \ + ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE) || \ + ((FLAG) == USART_FLAG_LBD) || ((FLAG) == USART_FLAG_CTS) || \ + ((FLAG) == USART_FLAG_RTO) || ((FLAG) == USART_FLAG_EOB) || \ + ((FLAG) == USART_FLAG_CM) || ((FLAG) == USART_FLAG_PE)) +/** + * @} + */ + +/** @defgroup USART_Interrupt_definition + * @brief USART Interrupt definition + * USART_IT possible values + * Elements values convention: 0xZZZZYYXX + * XX: Position of the corresponding Interrupt + * YY: Register index + * ZZZZ: Flag position + * @{ + */ + +#define USART_IT_WU ((uint32_t)0x00140316) +#define USART_IT_CM ((uint32_t)0x0011010E) +#define USART_IT_EOB ((uint32_t)0x000C011B) +#define USART_IT_RTO ((uint32_t)0x000B011A) +#define USART_IT_PE ((uint32_t)0x00000108) +#define USART_IT_TXE ((uint32_t)0x00070107) +#define USART_IT_TC ((uint32_t)0x00060106) +#define USART_IT_RXNE ((uint32_t)0x00050105) +#define USART_IT_IDLE ((uint32_t)0x00040104) +#define USART_IT_LBD ((uint32_t)0x00080206) +#define USART_IT_CTS ((uint32_t)0x0009030A) +#define USART_IT_ERR ((uint32_t)0x00000300) +#define USART_IT_ORE ((uint32_t)0x00030300) +#define USART_IT_NE ((uint32_t)0x00020300) +#define USART_IT_FE ((uint32_t)0x00010300) + +#define IS_USART_CONFIG_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \ + ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \ + ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \ + ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ERR) || \ + ((IT) == USART_IT_RTO) || ((IT) == USART_IT_EOB) || \ + ((IT) == USART_IT_CM) || ((IT) == USART_IT_WU)) + +#define IS_USART_GET_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \ + ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \ + ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \ + ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ORE) || \ + ((IT) == USART_IT_NE) || ((IT) == USART_IT_FE) || \ + ((IT) == USART_IT_RTO) || ((IT) == USART_IT_EOB) || \ + ((IT) == USART_IT_CM) || ((IT) == USART_IT_WU)) + +#define IS_USART_CLEAR_IT(IT) (((IT) == USART_IT_TC) || ((IT) == USART_IT_PE) || \ + ((IT) == USART_IT_FE) || ((IT) == USART_IT_NE) || \ + ((IT) == USART_IT_ORE) || ((IT) == USART_IT_IDLE) || \ + ((IT) == USART_IT_LBD) || ((IT) == USART_IT_CTS) || \ + ((IT) == USART_IT_RTO) || ((IT) == USART_IT_EOB) || \ + ((IT) == USART_IT_CM) || ((IT) == USART_IT_WU)) +/** + * @} + */ + +/** @defgroup USART_Global_definition + * @{ + */ + +#define IS_USART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 0x005B8D81)) +#define IS_USART_DE_ASSERTION_DEASSERTION_TIME(TIME) ((TIME) <= 0x1F) +#define IS_USART_AUTO_RETRY_COUNTER(COUNTER) ((COUNTER) <= 0x7) +#define IS_USART_TIMEOUT(TIMEOUT) ((TIMEOUT) <= 0x00FFFFFF) +#define IS_USART_DATA(DATA) ((DATA) <= 0x1FF) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/* Initialization and Configuration functions *********************************/ +void USART_DeInit(USART_TypeDef* USARTx); +void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct); +void USART_StructInit(USART_InitTypeDef* USART_InitStruct); +void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct); +void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct); +void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_DirectionModeCmd(USART_TypeDef* USARTx, uint32_t USART_DirectionMode, FunctionalState NewState); +void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler); +void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_MSBFirstCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_DataInvCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_InvPinCmd(USART_TypeDef* USARTx, uint32_t USART_InvPin, FunctionalState NewState); +void USART_SWAPPinCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_ReceiverTimeOutCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_SetReceiverTimeOut(USART_TypeDef* USARTx, uint32_t USART_ReceiverTimeOut); + +/* STOP Mode functions ********************************************************/ +void USART_STOPModeCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_StopModeWakeUpSourceConfig(USART_TypeDef* USARTx, uint32_t USART_WakeUpSource); + +/* AutoBaudRate functions *****************************************************/ +void USART_AutoBaudRateCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_AutoBaudRateConfig(USART_TypeDef* USARTx, uint32_t USART_AutoBaudRate); + +/* Data transfers functions ***************************************************/ +void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); +uint16_t USART_ReceiveData(USART_TypeDef* USARTx); + +/* Multi-Processor Communication functions ************************************/ +void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address); +void USART_MuteModeWakeUpConfig(USART_TypeDef* USARTx, uint32_t USART_WakeUp); +void USART_MuteModeCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_AddressDetectionConfig(USART_TypeDef* USARTx, uint32_t USART_AddressLength); +/* LIN mode functions *********************************************************/ +void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint32_t USART_LINBreakDetectLength); +void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState); + +/* Half-duplex mode function **************************************************/ +void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState); + +/* Smartcard mode functions ***************************************************/ +void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime); +void USART_SetAutoRetryCount(USART_TypeDef* USARTx, uint8_t USART_AutoCount); +void USART_SetBlockLength(USART_TypeDef* USARTx, uint8_t USART_BlockLength); + +/* IrDA mode functions ********************************************************/ +void USART_IrDAConfig(USART_TypeDef* USARTx, uint32_t USART_IrDAMode); +void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState); + +/* RS485 mode functions *******************************************************/ +void USART_DECmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_DEPolarityConfig(USART_TypeDef* USARTx, uint32_t USART_DEPolarity); +void USART_SetDEAssertionTime(USART_TypeDef* USARTx, uint32_t USART_DEAssertionTime); +void USART_SetDEDeassertionTime(USART_TypeDef* USARTx, uint32_t USART_DEDeassertionTime); + +/* DMA transfers management functions *****************************************/ +void USART_DMACmd(USART_TypeDef* USARTx, uint32_t USART_DMAReq, FunctionalState NewState); +void USART_DMAReceptionErrorConfig(USART_TypeDef* USARTx, uint32_t USART_DMAOnError); + +/* Interrupts and flags management functions **********************************/ +void USART_ITConfig(USART_TypeDef* USARTx, uint32_t USART_IT, FunctionalState NewState); +void USART_RequestCmd(USART_TypeDef* USARTx, uint32_t USART_Request, FunctionalState NewState); +void USART_OverrunDetectionConfig(USART_TypeDef* USARTx, uint32_t USART_OVRDetection); +FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint32_t USART_FLAG); +void USART_ClearFlag(USART_TypeDef* USARTx, uint32_t USART_FLAG); +ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint32_t USART_IT); +void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint32_t USART_IT); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_USART_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/stm32f30x_wwdg.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,119 @@ +/** + ****************************************************************************** + * @file stm32f30x_wwdg.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief This file contains all the functions prototypes for the WWDG + * firmware library. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F30x_WWDG_H +#define __STM32F30x_WWDG_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f30x.h" + +/** @addtogroup STM32F30x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup WWDG + * @{ + */ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup WWDG_Exported_Constants + * @{ + */ + +/** @defgroup WWDG_Prescaler + * @{ + */ + +#define WWDG_Prescaler_1 ((uint32_t)0x00000000) +#define WWDG_Prescaler_2 ((uint32_t)0x00000080) +#define WWDG_Prescaler_4 ((uint32_t)0x00000100) +#define WWDG_Prescaler_8 ((uint32_t)0x00000180) +#define IS_WWDG_PRESCALER(PRESCALER) (((PRESCALER) == WWDG_Prescaler_1) || \ + ((PRESCALER) == WWDG_Prescaler_2) || \ + ((PRESCALER) == WWDG_Prescaler_4) || \ + ((PRESCALER) == WWDG_Prescaler_8)) +#define IS_WWDG_WINDOW_VALUE(VALUE) ((VALUE) <= 0x7F) +#define IS_WWDG_COUNTER(COUNTER) (((COUNTER) >= 0x40) && ((COUNTER) <= 0x7F)) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* Function used to set the WWDG configuration to the default reset state ****/ +void WWDG_DeInit(void); + +/* Prescaler, Refresh window and Counter configuration functions **************/ +void WWDG_SetPrescaler(uint32_t WWDG_Prescaler); +void WWDG_SetWindowValue(uint8_t WindowValue); +void WWDG_EnableIT(void); +void WWDG_SetCounter(uint8_t Counter); + +/* WWDG activation functions **************************************************/ +void WWDG_Enable(uint8_t Counter); + +/* Interrupts and flags management functions **********************************/ +FlagStatus WWDG_GetFlagStatus(void); +void WWDG_ClearFlag(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F30x_WWDG_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F302R8/system_stm32f30x.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,86 @@ +/** + ****************************************************************************** + * @file system_stm32f30x.h + * @author MCD Application Team + * @version V1.1.0 + * @date 27-February-2014 + * @brief CMSIS Cortex-M4 Device System Source File for STM32F30x devices. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f30x_system + * @{ + */ + +/** + * @brief Define to prevent recursive inclusion + */ +#ifndef __SYSTEM_STM32F30X_H +#define __SYSTEM_STM32F30X_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +/** @addtogroup STM32F30x_System_Exported_Functions + * @{ + */ + +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /*__SYSTEM_STM32F30X_H */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- a/TARGET_NUCLEO_F401RE/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - ADC_1 = (int)ADC1_BASE -} ADCName; - -typedef enum { - UART_1 = (int)USART1_BASE, - UART_2 = (int)USART2_BASE, - UART_6 = (int)USART6_BASE -} UARTName; - -#define STDIO_UART_TX PA_2 -#define STDIO_UART_RX PA_3 -#define STDIO_UART UART_2 - -typedef enum { - SPI_1 = (int)SPI1_BASE, - SPI_2 = (int)SPI2_BASE, - SPI_3 = (int)SPI3_BASE -} SPIName; - -typedef enum { - I2C_1 = (int)I2C1_BASE, - I2C_2 = (int)I2C2_BASE, - I2C_3 = (int)I2C3_BASE -} I2CName; - -typedef enum { - PWM_1 = (int)TIM1_BASE, - PWM_2 = (int)TIM2_BASE, - PWM_3 = (int)TIM3_BASE, - PWM_4 = (int)TIM4_BASE, - PWM_5 = (int)TIM5_BASE, - PWM_9 = (int)TIM9_BASE, - PWM_10 = (int)TIM10_BASE, - PWM_11 = (int)TIM11_BASE -} PWMName; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F401RE/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,181 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM -#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0))) -#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F) -#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07) -#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F) -#define STM_MODE_INPUT (0) -#define STM_MODE_OUTPUT_PP (1) -#define STM_MODE_OUTPUT_OD (2) -#define STM_MODE_AF_PP (3) -#define STM_MODE_AF_OD (4) -#define STM_MODE_ANALOG (5) -#define STM_MODE_IT_RISING (6) -#define STM_MODE_IT_FALLING (7) -#define STM_MODE_IT_RISING_FALLING (8) -#define STM_MODE_EVT_RISING (9) -#define STM_MODE_EVT_FALLING (10) -#define STM_MODE_EVT_RISING_FALLING (11) - -// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H) -// Low nibble = pin number -#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF) -#define STM_PIN(X) ((uint32_t)(X) & 0xF) - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -typedef enum { - PA_0 = 0x00, - PA_1 = 0x01, - PA_2 = 0x02, - PA_3 = 0x03, - PA_4 = 0x04, - PA_5 = 0x05, - PA_6 = 0x06, - PA_7 = 0x07, - PA_8 = 0x08, - PA_9 = 0x09, - PA_10 = 0x0A, - PA_11 = 0x0B, - PA_12 = 0x0C, - PA_13 = 0x0D, - PA_14 = 0x0E, - PA_15 = 0x0F, - - PB_0 = 0x10, - PB_1 = 0x11, - PB_2 = 0x12, - PB_3 = 0x13, - PB_4 = 0x14, - PB_5 = 0x15, - PB_6 = 0x16, - PB_7 = 0x17, - PB_8 = 0x18, - PB_9 = 0x19, - PB_10 = 0x1A, - PB_12 = 0x1C, - PB_13 = 0x1D, - PB_14 = 0x1E, - PB_15 = 0x1F, - - PC_0 = 0x20, - PC_1 = 0x21, - PC_2 = 0x22, - PC_3 = 0x23, - PC_4 = 0x24, - PC_5 = 0x25, - PC_6 = 0x26, - PC_7 = 0x27, - PC_8 = 0x28, - PC_9 = 0x29, - PC_10 = 0x2A, - PC_11 = 0x2B, - PC_12 = 0x2C, - PC_13 = 0x2D, - PC_14 = 0x2E, - PC_15 = 0x2F, - - PD_2 = 0x32, - - PH_0 = 0x70, - PH_1 = 0x71, - - // Arduino connector namings - A0 = PA_0, - A1 = PA_1, - A2 = PA_4, - A3 = PB_0, - A4 = PC_1, - A5 = PC_0, - D0 = PA_3, - D1 = PA_2, - D2 = PA_10, - D3 = PB_3, - D4 = PB_5, - D5 = PB_4, - D6 = PB_10, - D7 = PA_8, - D8 = PA_9, - D9 = PC_7, - D10 = PB_6, - D11 = PA_7, - D12 = PA_6, - D13 = PA_5, - D14 = PB_9, - D15 = PB_8, - - // Generic signals namings - LED1 = PA_5, - LED2 = PA_5, - LED3 = PA_5, - LED4 = PA_5, - USER_BUTTON = PC_13, - SERIAL_TX = PA_2, - SERIAL_RX = PA_3, - USBTX = PA_2, - USBRX = PA_3, - I2C_SCL = PB_8, - I2C_SDA = PB_9, - SPI_MOSI = PA_7, - SPI_MISO = PA_6, - SPI_SCK = PA_5, - SPI_CS = PB_6, - PWM_OUT = PB_3, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -typedef enum { - PullNone = 0, - PullUp = 1, - PullDown = 2, - OpenDrain = 3, - PullDefault = PullNone -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F401RE/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PortA = 0, - PortB = 1, - PortC = 2, - PortD = 3, - PortH = 7 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F401RE/TARGET_STM/TARGET_NUCLEO_F401RE/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,80 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + ADC_1 = (int)ADC1_BASE +} ADCName; + +typedef enum { + UART_1 = (int)USART1_BASE, + UART_2 = (int)USART2_BASE, + UART_6 = (int)USART6_BASE +} UARTName; + +#define STDIO_UART_TX PA_2 +#define STDIO_UART_RX PA_3 +#define STDIO_UART UART_2 + +typedef enum { + SPI_1 = (int)SPI1_BASE, + SPI_2 = (int)SPI2_BASE, + SPI_3 = (int)SPI3_BASE +} SPIName; + +typedef enum { + I2C_1 = (int)I2C1_BASE, + I2C_2 = (int)I2C2_BASE, + I2C_3 = (int)I2C3_BASE +} I2CName; + +typedef enum { + PWM_1 = (int)TIM1_BASE, + PWM_2 = (int)TIM2_BASE, + PWM_3 = (int)TIM3_BASE, + PWM_4 = (int)TIM4_BASE, + PWM_5 = (int)TIM5_BASE, + PWM_9 = (int)TIM9_BASE, + PWM_10 = (int)TIM10_BASE, + PWM_11 = (int)TIM11_BASE +} PWMName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F401RE/TARGET_STM/TARGET_NUCLEO_F401RE/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,181 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM +#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0))) +#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F) +#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07) +#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F) +#define STM_MODE_INPUT (0) +#define STM_MODE_OUTPUT_PP (1) +#define STM_MODE_OUTPUT_OD (2) +#define STM_MODE_AF_PP (3) +#define STM_MODE_AF_OD (4) +#define STM_MODE_ANALOG (5) +#define STM_MODE_IT_RISING (6) +#define STM_MODE_IT_FALLING (7) +#define STM_MODE_IT_RISING_FALLING (8) +#define STM_MODE_EVT_RISING (9) +#define STM_MODE_EVT_FALLING (10) +#define STM_MODE_EVT_RISING_FALLING (11) + +// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H) +// Low nibble = pin number +#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF) +#define STM_PIN(X) ((uint32_t)(X) & 0xF) + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +typedef enum { + PA_0 = 0x00, + PA_1 = 0x01, + PA_2 = 0x02, + PA_3 = 0x03, + PA_4 = 0x04, + PA_5 = 0x05, + PA_6 = 0x06, + PA_7 = 0x07, + PA_8 = 0x08, + PA_9 = 0x09, + PA_10 = 0x0A, + PA_11 = 0x0B, + PA_12 = 0x0C, + PA_13 = 0x0D, + PA_14 = 0x0E, + PA_15 = 0x0F, + + PB_0 = 0x10, + PB_1 = 0x11, + PB_2 = 0x12, + PB_3 = 0x13, + PB_4 = 0x14, + PB_5 = 0x15, + PB_6 = 0x16, + PB_7 = 0x17, + PB_8 = 0x18, + PB_9 = 0x19, + PB_10 = 0x1A, + PB_12 = 0x1C, + PB_13 = 0x1D, + PB_14 = 0x1E, + PB_15 = 0x1F, + + PC_0 = 0x20, + PC_1 = 0x21, + PC_2 = 0x22, + PC_3 = 0x23, + PC_4 = 0x24, + PC_5 = 0x25, + PC_6 = 0x26, + PC_7 = 0x27, + PC_8 = 0x28, + PC_9 = 0x29, + PC_10 = 0x2A, + PC_11 = 0x2B, + PC_12 = 0x2C, + PC_13 = 0x2D, + PC_14 = 0x2E, + PC_15 = 0x2F, + + PD_2 = 0x32, + + PH_0 = 0x70, + PH_1 = 0x71, + + // Arduino connector namings + A0 = PA_0, + A1 = PA_1, + A2 = PA_4, + A3 = PB_0, + A4 = PC_1, + A5 = PC_0, + D0 = PA_3, + D1 = PA_2, + D2 = PA_10, + D3 = PB_3, + D4 = PB_5, + D5 = PB_4, + D6 = PB_10, + D7 = PA_8, + D8 = PA_9, + D9 = PC_7, + D10 = PB_6, + D11 = PA_7, + D12 = PA_6, + D13 = PA_5, + D14 = PB_9, + D15 = PB_8, + + // Generic signals namings + LED1 = PA_5, + LED2 = PA_5, + LED3 = PA_5, + LED4 = PA_5, + USER_BUTTON = PC_13, + SERIAL_TX = PA_2, + SERIAL_RX = PA_3, + USBTX = PA_2, + USBRX = PA_3, + I2C_SCL = PB_8, + I2C_SDA = PB_9, + SPI_MOSI = PA_7, + SPI_MISO = PA_6, + SPI_SCK = PA_5, + SPI_CS = PB_6, + PWM_OUT = PB_3, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullNone = 0, + PullUp = 1, + PullDown = 2, + OpenDrain = 3, + PullDefault = PullNone +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F401RE/TARGET_STM/TARGET_NUCLEO_F401RE/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PortA = 0, + PortB = 1, + PortC = 2, + PortD = 3, + PortH = 7 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F401RE/TARGET_STM/TARGET_NUCLEO_F401RE/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,70 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 // Not present on this device + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 0 // Not supported yet + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 0 // Not supported yet + +#define DEVICE_RTC 1 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SLEEP 1 + +//======================================= + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_RED 0 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F401RE/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,67 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + __IO uint32_t *reg_in; + __IO uint16_t *reg_set; + __IO uint16_t *reg_clr; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) { + *obj->reg_set = obj->mask; + } + else { + *obj->reg_clr = obj->mask; + } +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_F401RE/TARGET_STM/TARGET_NUCLEO_F401RE/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,98 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + IRQn_Type irq_n; + uint32_t irq_index; + uint32_t event; + PinName pin; +}; + +struct port_s { + PortName port; + uint32_t mask; + PinDirection direction; + __IO uint32_t *reg_in; + __IO uint32_t *reg_out; +}; + +struct analogin_s { + ADCName adc; + PinName pin; +}; + +struct serial_s { + UARTName uart; + int index; // Used by irq + uint32_t baudrate; + uint32_t databits; + uint32_t stopbits; + uint32_t parity; +}; + +struct spi_s { + SPIName spi; + uint32_t bits; + uint32_t cpol; + uint32_t cpha; + uint32_t mode; + uint32_t nss; + uint32_t br_presc; +}; + +struct i2c_s { + I2CName i2c; +}; + +struct pwmout_s { + PWMName pwm; + PinName pin; + uint32_t period; + uint32_t pulse; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/retarget.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_adc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_adc_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_can.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_cortex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_crc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_cryp.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_cryp_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_dac.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_dac_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_dcmi.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_dma.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_dma2d.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_dma_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_eth.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_flash.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_flash_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_gpio.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_hash.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_hash_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_hcd.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_i2c.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_i2c_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_i2s.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_i2s_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_irda.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_iwdg.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_ltdc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_nand.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_nor.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_pccard.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_pcd.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_pwr.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_pwr_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_rcc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_rcc_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_rng.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_rtc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_rtc_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_sai.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_sd.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_sdram.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_smartcard.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_spi.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_sram.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_tim.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_tim_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_uart.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_usart.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_hal_wwdg.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_ll_fmc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_ll_fsmc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_ll_sdmmc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/stm32f4xx_ll_usb.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/system_stm32f4xx.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_adc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_adc_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_can.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_cortex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_crc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_cryp.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_cryp_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_dac.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_dac_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_dcmi.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_dma.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_dma2d.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_dma_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_eth.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_flash.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_flash_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_gpio.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_hash.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_hash_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_hcd.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_i2c.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_i2c_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_i2s.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_i2s_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_irda.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_iwdg.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_ltdc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_nand.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_nor.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_pccard.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_pcd.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_pwr.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_pwr_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_rcc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_rcc_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_rng.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_rtc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_rtc_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_sai.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_sd.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_sdram.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_smartcard.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_spi.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_sram.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_tim.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_tim_ex.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_uart.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_usart.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_hal_wwdg.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_ll_fmc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_ll_fsmc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_ll_sdmmc.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f4xx_ll_usb.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/system_stm32f4xx.o has changed
--- a/TARGET_NUCLEO_F401RE/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 0 // Not present on this device - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 0 // Not supported yet - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 0 // Not supported yet - -#define DEVICE_RTC 1 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SLEEP 1 - -//======================================= - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 24 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -#define DEVICE_ERROR_RED 0 - -#include "objects.h" - -#endif
--- a/TARGET_NUCLEO_F401RE/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - __IO uint32_t *reg_in; - __IO uint16_t *reg_set; - __IO uint16_t *reg_clr; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) { - *obj->reg_set = obj->mask; - } - else { - *obj->reg_clr = obj->mask; - } -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_F401RE/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - IRQn_Type irq_n; - uint32_t irq_index; - uint32_t event; - PinName pin; -}; - -struct port_s { - PortName port; - uint32_t mask; - PinDirection direction; - __IO uint32_t *reg_in; - __IO uint32_t *reg_out; -}; - -struct analogin_s { - ADCName adc; - PinName pin; -}; - -struct serial_s { - UARTName uart; - int index; // Used by irq - uint32_t baudrate; - uint32_t databits; - uint32_t stopbits; - uint32_t parity; -}; - -struct spi_s { - SPIName spi; - uint32_t bits; - uint32_t cpol; - uint32_t cpha; - uint32_t mode; - uint32_t nss; - uint32_t br_presc; -}; - -struct i2c_s { - I2CName i2c; -}; - -struct pwmout_s { - PWMName pwm; - PinName pin; - uint32_t period; - uint32_t pulse; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_L152RE/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - ADC_1 = (int)ADC1_BASE, - ADC_2 = (int)ADC_BASE -} ADCName; - -typedef enum { - DAC_1 = (int)DAC_BASE -} DACName; - -typedef enum { - UART_1 = (int)USART1_BASE, - UART_2 = (int)USART2_BASE, - UART_3 = (int)USART3_BASE, - UART_4 = (int)UART4_BASE, - UART_5 = (int)UART5_BASE -} UARTName; - -#define STDIO_UART_TX PA_2 -#define STDIO_UART_RX PA_3 -#define STDIO_UART UART_2 - -typedef enum { - SPI_1 = (int)SPI1_BASE, - SPI_2 = (int)SPI2_BASE, - SPI_3 = (int)SPI3_BASE -} SPIName; - -typedef enum { - I2C_1 = (int)I2C1_BASE, - I2C_2 = (int)I2C2_BASE -} I2CName; - -typedef enum { - PWM_2 = (int)TIM2_BASE, - PWM_3 = (int)TIM3_BASE, - PWM_4 = (int)TIM4_BASE -} PWMName; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_L152RE/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,172 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// MODE (see GPIOMode_TypeDef structure) -// OTYPE (see GPIOOType_TypeDef structure) -// PUPD (see GPIOPuPd_TypeDef structure) -// AFNUM (see AF_mapping constant table, 0xFF is not used) -#define STM_PIN_DATA(MODE, OTYPE, PUPD, AFNUM) (((AFNUM)<<8)|((PUPD)<<4)|((OTYPE)<<2)|((MODE)<<0)) -#define STM_PIN_MODE(X) (((X)>>0) & 0x3) -#define STM_PIN_OTYPE(X) (((X)>>2) & 0x1) -#define STM_PIN_PUPD(X) (((X)>>4) & 0x3) -#define STM_PIN_AFNUM(X) (((X)>>8) & 0xF) - -// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H) -// Low nibble = pin number -#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF) -#define STM_PIN(X) ((uint32_t)(X) & 0xF) - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -typedef enum { - PA_0 = 0x00, - PA_1 = 0x01, - PA_2 = 0x02, - PA_3 = 0x03, - PA_4 = 0x04, - PA_5 = 0x05, - PA_6 = 0x06, - PA_7 = 0x07, - PA_8 = 0x08, - PA_9 = 0x09, - PA_10 = 0x0A, - PA_11 = 0x0B, - PA_12 = 0x0C, - PA_13 = 0x0D, - PA_14 = 0x0E, - PA_15 = 0x0F, - - PB_0 = 0x10, - PB_1 = 0x11, - PB_2 = 0x12, - PB_3 = 0x13, - PB_4 = 0x14, - PB_5 = 0x15, - PB_6 = 0x16, - PB_7 = 0x17, - PB_8 = 0x18, - PB_9 = 0x19, - PB_10 = 0x1A, - PB_11 = 0x1B, - PB_12 = 0x1C, - PB_13 = 0x1D, - PB_14 = 0x1E, - PB_15 = 0x1F, - - PC_0 = 0x20, - PC_1 = 0x21, - PC_2 = 0x22, - PC_3 = 0x23, - PC_4 = 0x24, - PC_5 = 0x25, - PC_6 = 0x26, - PC_7 = 0x27, - PC_8 = 0x28, - PC_9 = 0x29, - PC_10 = 0x2A, - PC_11 = 0x2B, - PC_12 = 0x2C, - PC_13 = 0x2D, - PC_14 = 0x2E, - PC_15 = 0x2F, - - PD_2 = 0x32, - - PH_0 = 0x70, - PH_1 = 0x71, - - // Arduino connector namings - A0 = PA_0, - A1 = PA_1, - A2 = PA_4, - A3 = PB_0, - A4 = PC_1, - A5 = PC_0, - D0 = PA_3, - D1 = PA_2, - D2 = PA_10, - D3 = PB_3, - D4 = PB_5, - D5 = PB_4, - D6 = PB_10, - D7 = PA_8, - D8 = PA_9, - D9 = PC_7, - D10 = PB_6, - D11 = PA_7, - D12 = PA_6, - D13 = PA_5, - D14 = PB_9, - D15 = PB_8, - - // Generic signals namings - LED1 = PA_5, - LED2 = PA_5, - LED3 = PA_5, - LED4 = PA_5, - USER_BUTTON = PC_13, - USBTX = PA_2, - USBRX = PA_3, - I2C_SCL = PB_8, - I2C_SDA = PB_9, - SPI_MOSI = PA_7, - SPI_MISO = PA_6, - SPI_SCK = PA_5, - SPI_CS = PB_6, - PWM_OUT = PB_3, - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -typedef enum { - PullNone = 0, - PullUp = 1, - PullDown = 2, - OpenDrain = 3, - PullDefault = PullNone -} PinMode; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_L152RE/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PortA = 0, - PortB = 1, - PortC = 2, - PortD = 3, - PortH = 7 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_L152RE/TARGET_STM/TARGET_NUCLEO_L152RE/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,84 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + ADC_1 = (int)ADC1_BASE +} ADCName; + +typedef enum { + DAC_1 = (int)DAC_BASE +} DACName; + +typedef enum { + UART_1 = (int)USART1_BASE, + UART_2 = (int)USART2_BASE, + UART_3 = (int)USART3_BASE, + UART_4 = (int)UART4_BASE, + UART_5 = (int)UART5_BASE +} UARTName; + +#define STDIO_UART_TX PA_2 +#define STDIO_UART_RX PA_3 +#define STDIO_UART UART_2 + +typedef enum { + SPI_1 = (int)SPI1_BASE, + SPI_2 = (int)SPI2_BASE, + SPI_3 = (int)SPI3_BASE +} SPIName; + +typedef enum { + I2C_1 = (int)I2C1_BASE, + I2C_2 = (int)I2C2_BASE +} I2CName; + +typedef enum { + PWM_2 = (int)TIM2_BASE, + PWM_3 = (int)TIM3_BASE, + PWM_4 = (int)TIM4_BASE, + PWM_5 = (int)TIM5_BASE, + PWM_9 = (int)TIM9_BASE, + PWM_10 = (int)TIM10_BASE, + PWM_11 = (int)TIM11_BASE +} PWMName; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_L152RE/TARGET_STM/TARGET_NUCLEO_L152RE/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,174 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// MODE (see GPIOMode_TypeDef structure) +// OTYPE (see GPIOOType_TypeDef structure) +// PUPD (see GPIOPuPd_TypeDef structure) +// AFNUM (see AF_mapping constant table, 0xFF is not used) +#define STM_PIN_DATA(MODE, OTYPE, PUPD, AFNUM) (((AFNUM)<<8)|((PUPD)<<4)|((OTYPE)<<2)|((MODE)<<0)) +#define STM_PIN_MODE(X) (((X)>>0) & 0x3) +#define STM_PIN_OTYPE(X) (((X)>>2) & 0x1) +#define STM_PIN_PUPD(X) (((X)>>4) & 0x3) +#define STM_PIN_AFNUM(X) (((X)>>8) & 0xF) + +// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H) +// Low nibble = pin number +#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF) +#define STM_PIN(X) ((uint32_t)(X) & 0xF) + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +typedef enum { + PA_0 = 0x00, + PA_1 = 0x01, + PA_2 = 0x02, + PA_3 = 0x03, + PA_4 = 0x04, + PA_5 = 0x05, + PA_6 = 0x06, + PA_7 = 0x07, + PA_8 = 0x08, + PA_9 = 0x09, + PA_10 = 0x0A, + PA_11 = 0x0B, + PA_12 = 0x0C, + PA_13 = 0x0D, + PA_14 = 0x0E, + PA_15 = 0x0F, + + PB_0 = 0x10, + PB_1 = 0x11, + PB_2 = 0x12, + PB_3 = 0x13, + PB_4 = 0x14, + PB_5 = 0x15, + PB_6 = 0x16, + PB_7 = 0x17, + PB_8 = 0x18, + PB_9 = 0x19, + PB_10 = 0x1A, + PB_11 = 0x1B, + PB_12 = 0x1C, + PB_13 = 0x1D, + PB_14 = 0x1E, + PB_15 = 0x1F, + + PC_0 = 0x20, + PC_1 = 0x21, + PC_2 = 0x22, + PC_3 = 0x23, + PC_4 = 0x24, + PC_5 = 0x25, + PC_6 = 0x26, + PC_7 = 0x27, + PC_8 = 0x28, + PC_9 = 0x29, + PC_10 = 0x2A, + PC_11 = 0x2B, + PC_12 = 0x2C, + PC_13 = 0x2D, + PC_14 = 0x2E, + PC_15 = 0x2F, + + PD_2 = 0x32, + + PH_0 = 0x70, + PH_1 = 0x71, + + // Arduino connector namings + A0 = PA_0, + A1 = PA_1, + A2 = PA_4, + A3 = PB_0, + A4 = PC_1, + A5 = PC_0, + D0 = PA_3, + D1 = PA_2, + D2 = PA_10, + D3 = PB_3, + D4 = PB_5, + D5 = PB_4, + D6 = PB_10, + D7 = PA_8, + D8 = PA_9, + D9 = PC_7, + D10 = PB_6, + D11 = PA_7, + D12 = PA_6, + D13 = PA_5, + D14 = PB_9, + D15 = PB_8, + + // Generic signals namings + LED1 = PA_5, + LED2 = PA_5, + LED3 = PA_5, + LED4 = PA_5, + USER_BUTTON = PC_13, + SERIAL_TX = PA_2, + SERIAL_RX = PA_3, + USBTX = PA_2, + USBRX = PA_3, + I2C_SCL = PB_8, + I2C_SDA = PB_9, + SPI_MOSI = PA_7, + SPI_MISO = PA_6, + SPI_SCK = PA_5, + SPI_CS = PB_6, + PWM_OUT = PB_3, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullNone = 0, + PullUp = 1, + PullDown = 2, + OpenDrain = 3, + PullDefault = PullNone +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_L152RE/TARGET_STM/TARGET_NUCLEO_L152RE/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PortA = 0, + PortB = 1, + PortC = 2, + PortD = 3, + PortH = 7 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_L152RE/TARGET_STM/TARGET_NUCLEO_L152RE/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,70 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 0 // Not yet supported + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 0 // Not yet supported + +#define DEVICE_RTC 1 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SLEEP 1 + +//======================================= + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 1 + +#define DEVICE_ERROR_RED 0 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_L152RE/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,67 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + __IO uint16_t *reg_in; + __IO uint16_t *reg_set; + __IO uint16_t *reg_clr; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) { + *obj->reg_set = obj->mask; + } + else { + *obj->reg_clr = obj->mask; + } +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_NUCLEO_L152RE/TARGET_STM/TARGET_NUCLEO_L152RE/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,102 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + IRQn_Type irq_n; + uint32_t irq_index; + uint32_t event; +}; + +struct port_s { + PortName port; + uint32_t mask; + PinDirection direction; + __IO uint16_t *reg_in; + __IO uint16_t *reg_out; +}; + +struct analogin_s { + ADCName adc; + PinName pin; +}; + +struct dac_s { + DACName dac; + PinName channel; +}; + +struct serial_s { + UARTName uart; + int index; // Used by irq + uint32_t baudrate; + uint32_t databits; + uint32_t stopbits; + uint32_t parity; +}; + +struct spi_s { + SPIName spi; + uint32_t bits; + uint32_t cpol; + uint32_t cpha; + uint32_t mode; + uint32_t nss; + uint32_t br_presc; +}; + +struct i2c_s { + I2CName i2c; +}; + +struct pwmout_s { + PWMName pwm; + PinName pin; + uint32_t period; + uint32_t pulse; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/board.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/mbed.ar has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/mbed_overrides.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/misc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/retarget.o has changed
--- a/TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx.sct Wed Mar 19 18:28:32 2014 +0000 +++ b/TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx.sct Mon Apr 07 18:28:36 2014 +0100 @@ -27,7 +27,8 @@ ; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -LR_IROM1 0x08000000 0x80000 { ; load region size_region (512 KB) +; STM32L152RE: 512KB FLASH + 80KB SRAM +LR_IROM1 0x08000000 0x80000 { ; load region size_region ER_IROM1 0x08000000 0x80000 { ; load address = execution address *.o (RESET, +First)
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_adc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_aes.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_aes_util.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_comp.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_crc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_dac.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_dbgmcu.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_dma.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_exti.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_flash.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_flash_ramfunc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_fsmc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_gpio.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_i2c.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_iwdg.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_lcd.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_opamp.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_pwr.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_rcc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_rtc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_sdio.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_spi.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_syscfg.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_tim.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_usart.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/stm32l1xx_wwdg.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/sys.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/system_stm32l1xx.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/mbed_overrides.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/misc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/retarget.o has changed
--- a/TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx.sct Wed Mar 19 18:28:32 2014 +0000 +++ b/TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx.sct Mon Apr 07 18:28:36 2014 +0100 @@ -27,7 +27,8 @@ ; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -LR_IROM1 0x08000000 0x80000 { ; load region size_region (512 KB) +; STM32L152RE: 512KB FLASH + 80KB SRAM +LR_IROM1 0x08000000 0x80000 { ; load region size_region ER_IROM1 0x08000000 0x80000 { ; load address = execution address *.o (RESET, +First)
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_adc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_aes.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_aes_util.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_comp.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_crc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_dac.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_dbgmcu.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_dma.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_exti.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_flash.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_flash_ramfunc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_fsmc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_gpio.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_i2c.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_iwdg.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_lcd.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_opamp.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_pwr.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_rcc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_rtc.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_sdio.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_spi.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_syscfg.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_tim.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_usart.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/stm32l1xx_wwdg.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_STD/system_stm32l1xx.o has changed
--- a/TARGET_NUCLEO_L152RE/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 1 - -#define DEVICE_SERIAL 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 0 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 0 - -#define DEVICE_RTC 1 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SLEEP 1 - -//======================================= - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 24 - -#define DEVICE_DEBUG_AWARENESS 0 - -#define DEVICE_STDIO_MESSAGES 1 - -//#define DEVICE_ERROR_RED 0 - -#include "objects.h" - -#endif
--- a/TARGET_NUCLEO_L152RE/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - __IO uint16_t *reg_in; - __IO uint16_t *reg_set; - __IO uint16_t *reg_clr; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) { - *obj->reg_set = obj->mask; - } - else { - *obj->reg_clr = obj->mask; - } -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_NUCLEO_L152RE/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* mbed Microcontroller Library - ******************************************************************************* - * Copyright (c) 2014, STMicroelectronics - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ******************************************************************************* - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - IRQn_Type irq_n; - uint32_t irq_index; - uint32_t event; -}; - -struct port_s { - PortName port; - uint32_t mask; - PinDirection direction; - __IO uint16_t *reg_in; - __IO uint16_t *reg_out; -}; - -struct analogin_s { - ADCName adc; - PinName pin; -}; - -struct dac_s { - DACName dac; - PinName channel; -}; - -struct serial_s { - UARTName uart; - int index; // Used by irq - uint32_t baudrate; - uint32_t databits; - uint32_t stopbits; - uint32_t parity; -}; - -struct spi_s { - SPIName spi; - uint32_t bits; - uint32_t cpol; - uint32_t cpha; - uint32_t mode; - uint32_t nss; - uint32_t br_presc; -}; - -struct i2c_s { - I2CName i2c; -}; - -struct pwmout_s { - PWMName pwm; - PinName pin; - uint32_t period; - uint32_t pulse; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_UBLOX_C027/PeripheralNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PERIPHERALNAMES_H -#define MBED_PERIPHERALNAMES_H - -#include "cmsis.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - UART_0 = (int)LPC_UART0_BASE, - UART_1 = (int)LPC_UART1_BASE, - UART_2 = (int)LPC_UART2_BASE, - UART_3 = (int)LPC_UART3_BASE -} UARTName; - -typedef enum { - ADC0_0 = 0, - ADC0_1, - ADC0_2, - ADC0_3, - ADC0_4, - ADC0_5, - ADC0_6, - ADC0_7 -} ADCName; - -typedef enum { - DAC_0 = 0 -} DACName; - -typedef enum { - SPI_0 = (int)LPC_SSP0_BASE, - SPI_1 = (int)LPC_SSP1_BASE -} SPIName; - -typedef enum { - I2C_0 = (int)LPC_I2C0_BASE, - I2C_1 = (int)LPC_I2C1_BASE, - I2C_2 = (int)LPC_I2C2_BASE -} I2CName; - -typedef enum { - PWM_1 = 1, - PWM_2, - PWM_3, - PWM_4, - PWM_5, - PWM_6 -} PWMName; - -typedef enum { - CAN_1 = (int)LPC_CAN1_BASE, - CAN_2 = (int)LPC_CAN2_BASE -} CANName; - -#define STDIO_UART_TX USBTX -#define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -// Default peripherals -#define MBED_SPI0 p5, p6, p7, p8 -#define MBED_SPI1 p11, p12, p13, p14 - -#define MBED_UART0 p9, p10 -#define MBED_UART1 p13, p14 -#define MBED_UART2 p28, p27 -#define MBED_UARTUSB USBTX, USBRX - -#define MBED_I2C0 p28, p27 -#define MBED_I2C1 p9, p10 - -#define MBED_CAN0 p30, p29 - -#define MBED_ANALOGOUT0 p18 - -#define MBED_ANALOGIN0 p15 -#define MBED_ANALOGIN1 p16 -#define MBED_ANALOGIN2 p17 -#define MBED_ANALOGIN3 p18 -#define MBED_ANALOGIN4 p19 -#define MBED_ANALOGIN5 p20 - -#define MBED_PWMOUT0 p26 -#define MBED_PWMOUT1 p25 -#define MBED_PWMOUT2 p24 -#define MBED_PWMOUT3 p23 -#define MBED_PWMOUT4 p22 -#define MBED_PWMOUT5 p21 - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_UBLOX_C027/PinNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,189 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PINNAMES_H -#define MBED_PINNAMES_H - -#include "cmsis.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PIN_INPUT, - PIN_OUTPUT -} PinDirection; - -#define PORT_SHIFT 5 - -typedef enum { - // LPC Pin Names - P0_0 = LPC_GPIO0_BASE, - P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, - P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, - P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31, - P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31, - P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31, - - // Arduino Pin Names - - // PIN header connector - // for standard-based form factor with expansion board - // ----------------------------------------------------------- - // PMW = Pulswidth Modulator - // EINT = External Interrupt - // AOUT = Analog Output - - // Analog Ports (A0-A5) - A0 = P0_23, // I2S_CLK - A1 = P0_24, // I2S_WS - A2 = P0_25, // I2S_SDA - A3 = P0_26, // AOUT - A4 = P1_30, // - A5 = P1_31, // - // Digital Port (D0-D7) - D0 = P4_29, // TXD - D1 = P4_28, // RXD - D2 = P2_13, // EINT - D3 = P2_0, // PWM - D4 = P2_12, // EINT - D5 = P2_1, // PWM - D6 = P2_2, // PWM - D7 = P2_11, // EINT - // Digital Port (D8-D13) - D8 = P2_4, // PWM - D9 = P2_3, // PWM - D10 = P1_21, // PWM SSEL - D11 = P1_24, // PWM MOSI - D12 = P1_23, // PWM MISO - D13 = P1_20, // PWM SCK - // GND - // AREF - SDA = P0_0, - D14 = SDA, - SCL = P0_1, - D15 = SCL, - - // I2C (shared with LISA/SARA) - GPSSDA = P0_27, - GPSSCL = P0_28, - // UART - GPSTXD = P0_10, - GPSRXD = P0_11, - // Control - GPSRST = P1_18, // Reset (input to GPS, active low) - GPSPPS = P1_19, // 1PPS Timepulse (output from GPS) - GPSINT = P1_22, // Interrupt (input to GPS) - GPSEN = P1_29, // Supply Control (high = enabled) - - // u-blox LISA/SARA cellular modem - // http://www.u-blox.com/wireless-modules.html - // ----------------------------------------------------------- - // UART (LPC1768 = DTE, LISA/SARA = DCE) - MDMTXD = P0_15, // Transmit Data - MDMRXD = P0_16, // Receive Data - MDMCTS = P0_17, // Clear to Send - MDMDCD = P0_18, // Data Carrier Detect - MDMDSR = P0_19, // Data Set Ready - MDMDTR = P0_20, // Data Terminal Ready (set high or use handshake) - MDMRI = P0_21, // Ring Indicator - MDMRTS = P0_22, // Request to Send (set high or use handshake) - - // USB (not available on C27-G35) - MDMUSBDP = P0_29, // USB D+ - MDMUSBDN = P0_30, // USB D- - MDMUSBCON = P2_9, // USB Connect - MDMUSBDET = P0_7, // USB Detect (n/a on REV.A board) - // Control - MDMEN = P2_5, // Supply Control (high = enabled) - MDMPWRON = P2_6, // - MDMGPIO1 = P2_7, // GPIO1, Network status - MDMRST = P2_8, // Reset (active low, set as open drain!) - MDMLVLOE = P0_9, // Serial/GPIO Level Shifter Output Enable (n/a on REV.A board) - MDMILVLOE = P0_8, // I2C Level Shifter Output Enable (n/a on REV.A board) - - // CAN (TJA1040) - // ----------------------------------------------------------- - CANRD = P0_4, - CANTD = P0_5, - CANS = P0_6, // standby (low=normal, high=standby/rxonly) - - // Ethernet (DP83848) - // ----------------------------------------------------------- - ETHTXD0 = P1_0, - ETHTXD1 = P1_1, - ETHTXEN = P1_4, - ETHCRS = P1_8, - ETHRXD0 = P1_9, - ETHRXD1 = P1_10, - ETHRXEN = P1_14, - ETHREFCLK = P1_15, - ETHMDC = P1_16, - ETHMDIO = P1_17, - ETHOSCEN = P1_27, - ETHRST = P1_28, - ETHLINK = P1_25, // LED_LINK - ETHSPEED = P1_26, // LED_SPEED - - // ISP port - // ----------------------------------------------------------- - ISP = P2_10, - - // Other mbed Pin Names - LED = P3_25, - LED1 = LED, - LED_RED = LED, - - // mbed / debug IF (LPC11) - // ----------------------------------------------------------- - // Serial Port - USBTX = P0_2, - USBRX = P0_3, - USBTXD = USBTX, // identical USBTX - USBRXD = USBRX, // identical USBRX - - // Not connected - NC = (int)0xFFFFFFFF -} PinName; - -typedef enum { - PullUp = 0, - PullDown = 3, - PullNone = 2, - OpenDrain = 4, - PullDefault = PullDown -} PinMode; - -// version of PINCON_TypeDef using register arrays -typedef struct { - __IO uint32_t PINSEL[11]; - uint32_t RESERVED0[5]; - __IO uint32_t PINMODE[10]; - __IO uint32_t PINMODE_OD[5]; -} PINCONARRAY_TypeDef; - -#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE) - -//Additional C027 stuff -#define GPSADR (66<<1) // GPS I2C Address -#define GPSBAUD 9600 // Default GPS Baud Rate -#define MDMBAUD 115200 // Default Modem Baud Rate - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_UBLOX_C027/PortNames.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_PORTNAMES_H -#define MBED_PORTNAMES_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - Port0 = 0, - Port1 = 1, - Port2 = 2, - Port3 = 3, - Port4 = 4 -} PortName; - -#ifdef __cplusplus -} -#endif -#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_UBLOX_C027/TARGET_NXP/TARGET_LPC176X/PeripheralNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,111 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PERIPHERALNAMES_H +#define MBED_PERIPHERALNAMES_H + +#include "cmsis.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + UART_0 = (int)LPC_UART0_BASE, + UART_1 = (int)LPC_UART1_BASE, + UART_2 = (int)LPC_UART2_BASE, + UART_3 = (int)LPC_UART3_BASE +} UARTName; + +typedef enum { + ADC0_0 = 0, + ADC0_1, + ADC0_2, + ADC0_3, + ADC0_4, + ADC0_5, + ADC0_6, + ADC0_7 +} ADCName; + +typedef enum { + DAC_0 = 0 +} DACName; + +typedef enum { + SPI_0 = (int)LPC_SSP0_BASE, + SPI_1 = (int)LPC_SSP1_BASE +} SPIName; + +typedef enum { + I2C_0 = (int)LPC_I2C0_BASE, + I2C_1 = (int)LPC_I2C1_BASE, + I2C_2 = (int)LPC_I2C2_BASE +} I2CName; + +typedef enum { + PWM_1 = 1, + PWM_2, + PWM_3, + PWM_4, + PWM_5, + PWM_6 +} PWMName; + +typedef enum { + CAN_1 = (int)LPC_CAN1_BASE, + CAN_2 = (int)LPC_CAN2_BASE +} CANName; + +#define STDIO_UART_TX USBTX +#define STDIO_UART_RX USBRX +#define STDIO_UART UART_0 + +// Default peripherals +#define MBED_SPI0 p5, p6, p7, p8 +#define MBED_SPI1 p11, p12, p13, p14 + +#define MBED_UART0 p9, p10 +#define MBED_UART1 p13, p14 +#define MBED_UART2 p28, p27 +#define MBED_UARTUSB USBTX, USBRX + +#define MBED_I2C0 p28, p27 +#define MBED_I2C1 p9, p10 + +#define MBED_CAN0 p30, p29 + +#define MBED_ANALOGOUT0 p18 + +#define MBED_ANALOGIN0 p15 +#define MBED_ANALOGIN1 p16 +#define MBED_ANALOGIN2 p17 +#define MBED_ANALOGIN3 p18 +#define MBED_ANALOGIN4 p19 +#define MBED_ANALOGIN5 p20 + +#define MBED_PWMOUT0 p26 +#define MBED_PWMOUT1 p25 +#define MBED_PWMOUT2 p24 +#define MBED_PWMOUT3 p23 +#define MBED_PWMOUT4 p22 +#define MBED_PWMOUT5 p21 + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_UBLOX_C027/TARGET_NXP/TARGET_LPC176X/PortNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,34 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTNAMES_H +#define MBED_PORTNAMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Port0 = 0, + Port1 = 1, + Port2 = 2, + Port3 = 3, + Port4 = 4 +} PortName; + +#ifdef __cplusplus +} +#endif +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_UBLOX_C027/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/PinNames.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,189 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 5 + +typedef enum { + // LPC Pin Names + P0_0 = LPC_GPIO0_BASE, + P0_1, P0_2, P0_3, P0_4, P0_5, P0_6, P0_7, P0_8, P0_9, P0_10, P0_11, P0_12, P0_13, P0_14, P0_15, P0_16, P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P0_31, + P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P1_6, P1_7, P1_8, P1_9, P1_10, P1_11, P1_12, P1_13, P1_14, P1_15, P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23, P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31, + P2_0, P2_1, P2_2, P2_3, P2_4, P2_5, P2_6, P2_7, P2_8, P2_9, P2_10, P2_11, P2_12, P2_13, P2_14, P2_15, P2_16, P2_17, P2_18, P2_19, P2_20, P2_21, P2_22, P2_23, P2_24, P2_25, P2_26, P2_27, P2_28, P2_29, P2_30, P2_31, + P3_0, P3_1, P3_2, P3_3, P3_4, P3_5, P3_6, P3_7, P3_8, P3_9, P3_10, P3_11, P3_12, P3_13, P3_14, P3_15, P3_16, P3_17, P3_18, P3_19, P3_20, P3_21, P3_22, P3_23, P3_24, P3_25, P3_26, P3_27, P3_28, P3_29, P3_30, P3_31, + P4_0, P4_1, P4_2, P4_3, P4_4, P4_5, P4_6, P4_7, P4_8, P4_9, P4_10, P4_11, P4_12, P4_13, P4_14, P4_15, P4_16, P4_17, P4_18, P4_19, P4_20, P4_21, P4_22, P4_23, P4_24, P4_25, P4_26, P4_27, P4_28, P4_29, P4_30, P4_31, + + // Arduino Pin Names + + // PIN header connector + // for standard-based form factor with expansion board + // ----------------------------------------------------------- + // PMW = Pulswidth Modulator + // EINT = External Interrupt + // AOUT = Analog Output + + // Analog Ports (A0-A5) + A0 = P0_23, // I2S_CLK + A1 = P0_24, // I2S_WS + A2 = P0_25, // I2S_SDA + A3 = P0_26, // AOUT + A4 = P1_30, // + A5 = P1_31, // + // Digital Port (D0-D7) + D0 = P4_29, // TXD + D1 = P4_28, // RXD + D2 = P2_13, // EINT + D3 = P2_0, // PWM + D4 = P2_12, // EINT + D5 = P2_1, // PWM + D6 = P2_2, // PWM + D7 = P2_11, // EINT + // Digital Port (D8-D13) + D8 = P2_4, // PWM + D9 = P2_3, // PWM + D10 = P1_21, // PWM SSEL + D11 = P1_24, // PWM MOSI + D12 = P1_23, // PWM MISO + D13 = P1_20, // PWM SCK + // GND + // AREF + SDA = P0_0, + D14 = SDA, + SCL = P0_1, + D15 = SCL, + + // I2C (shared with LISA/SARA) + GPSSDA = P0_27, + GPSSCL = P0_28, + // UART + GPSTXD = P0_10, + GPSRXD = P0_11, + // Control + GPSRST = P1_18, // Reset (input to GPS, active low) + GPSPPS = P1_19, // 1PPS Timepulse (output from GPS) + GPSINT = P1_22, // Interrupt (input to GPS) + GPSEN = P1_29, // Supply Control (high = enabled) + + // u-blox LISA/SARA cellular modem + // http://www.u-blox.com/wireless-modules.html + // ----------------------------------------------------------- + // UART (LPC1768 = DTE, LISA/SARA = DCE) + MDMTXD = P0_15, // Transmit Data + MDMRXD = P0_16, // Receive Data + MDMCTS = P0_17, // Clear to Send + MDMDCD = P0_18, // Data Carrier Detect + MDMDSR = P0_19, // Data Set Ready + MDMDTR = P0_20, // Data Terminal Ready (set high or use handshake) + MDMRI = P0_21, // Ring Indicator + MDMRTS = P0_22, // Request to Send (set high or use handshake) + + // USB (not available on C27-G35) + MDMUSBDP = P0_29, // USB D+ + MDMUSBDN = P0_30, // USB D- + MDMUSBCON = P2_9, // USB Connect + MDMUSBDET = P0_7, // USB Detect (n/a on REV.A board) + // Control + MDMEN = P2_5, // Supply Control (high = enabled) + MDMPWRON = P2_6, // + MDMGPIO1 = P2_7, // GPIO1, Network status + MDMRST = P2_8, // Reset (active low, set as open drain!) + MDMLVLOE = P0_9, // Serial/GPIO Level Shifter Output Enable (n/a on REV.A board) + MDMILVLOE = P0_8, // I2C Level Shifter Output Enable (n/a on REV.A board) + + // CAN (TJA1040) + // ----------------------------------------------------------- + CANRD = P0_4, + CANTD = P0_5, + CANS = P0_6, // standby (low=normal, high=standby/rxonly) + + // Ethernet (DP83848) + // ----------------------------------------------------------- + ETHTXD0 = P1_0, + ETHTXD1 = P1_1, + ETHTXEN = P1_4, + ETHCRS = P1_8, + ETHRXD0 = P1_9, + ETHRXD1 = P1_10, + ETHRXEN = P1_14, + ETHREFCLK = P1_15, + ETHMDC = P1_16, + ETHMDIO = P1_17, + ETHOSCEN = P1_27, + ETHRST = P1_28, + ETHLINK = P1_25, // LED_LINK + ETHSPEED = P1_26, // LED_SPEED + + // ISP port + // ----------------------------------------------------------- + ISP = P2_10, + + // Other mbed Pin Names + LED = P3_25, + LED1 = LED, + LED_RED = LED, + + // mbed / debug IF (LPC11) + // ----------------------------------------------------------- + // Serial Port + USBTX = P0_2, + USBRX = P0_3, + USBTXD = USBTX, // identical USBTX + USBRXD = USBRX, // identical USBRX + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +typedef enum { + PullUp = 0, + PullDown = 3, + PullNone = 2, + OpenDrain = 4, + PullDefault = PullDown +} PinMode; + +// version of PINCON_TypeDef using register arrays +typedef struct { + __IO uint32_t PINSEL[11]; + uint32_t RESERVED0[5]; + __IO uint32_t PINMODE[10]; + __IO uint32_t PINMODE_OD[5]; +} PINCONARRAY_TypeDef; + +#define PINCONARRAY ((PINCONARRAY_TypeDef *)LPC_PINCON_BASE) + +//Additional C027 stuff +#define GPSADR (66<<1) // GPS I2C Address +#define GPSBAUD 9600 // Default GPS Baud Rate +#define MDMBAUD 115200 // Default Modem Baud Rate + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_UBLOX_C027/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/device.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,62 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 1 + +#define DEVICE_SERIAL 1 +#define DEVICE_SERIAL_FC 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 1 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 1 + +#define DEVICE_RTC 1 + +#define DEVICE_ETHERNET 1 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 0 +#define DEVICE_MAC_OFFSET 0 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 1 + +#define DEVICE_STDIO_MESSAGES 1 + +// should only enable one or the other, not both +#define DEVICE_ERROR_PATTERN 0 +#define DEVICE_ERROR_RED 1 + +#include "objects.h" + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_UBLOX_C027/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/reserved_pins.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,8 @@ +// List of reserved pins for C027 LPC1768 + +#ifndef RESERVED_PINS_H +#define RESERVED_PINS_H + +#define TARGET_RESERVED_PINS {P3_26} + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_UBLOX_C027/TARGET_NXP/TARGET_LPC176X/gpio_object.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,48 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_UBLOX_C027/TARGET_NXP/TARGET_LPC176X/objects.h Mon Apr 07 18:28:36 2014 +0100 @@ -0,0 +1,78 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" +#include "gpio_object.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t port; + uint32_t pin; + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_out; + __I uint32_t *reg_in; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + __IO uint32_t *MR; + PWMName pwm; +}; + +struct serial_s { + LPC_UART_TypeDef *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct dac_s { + DACName dac; +}; + +struct can_s { + LPC_CAN_TypeDef *dev; + int index; +}; + +struct i2c_s { + LPC_I2C_TypeDef *i2c; +}; + +struct spi_s { + LPC_SSP_TypeDef *spi; +}; + +#ifdef __cplusplus +} +#endif + +#endif
Binary file TARGET_UBLOX_C027/TOOLCHAIN_ARM_STD/board.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_ARM_STD/cmsis_nvic.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_ARM_STD/mbed.ar has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_ARM_STD/mbed_overrides.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_ARM_STD/retarget.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_ARM_STD/sys.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_ARM_STD/system_LPC17xx.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_ARM/board.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_ARM/libmbed.a has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_ARM/mbed_overrides.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_ARM/retarget.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_CR/board.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_CR/libmbed.a has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_CR/mbed_overrides.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_CR/retarget.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_CS/board.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_CS/libmbed.a has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_CS/mbed_overrides.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_GCC_CS/retarget.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_IAR/board.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_IAR/cmsis_nvic.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_IAR/mbed.a has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_IAR/mbed_overrides.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_IAR/retarget.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_IAR/startup_LPC17xx.o has changed
Binary file TARGET_UBLOX_C027/TOOLCHAIN_IAR/system_LPC17xx.o has changed
--- a/TARGET_UBLOX_C027/device.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_DEVICE_H -#define MBED_DEVICE_H - -#define DEVICE_PORTIN 1 -#define DEVICE_PORTOUT 1 -#define DEVICE_PORTINOUT 1 - -#define DEVICE_INTERRUPTIN 1 - -#define DEVICE_ANALOGIN 1 -#define DEVICE_ANALOGOUT 1 - -#define DEVICE_SERIAL 1 -#define DEVICE_SERIAL_FC 1 - -#define DEVICE_I2C 1 -#define DEVICE_I2CSLAVE 1 - -#define DEVICE_SPI 1 -#define DEVICE_SPISLAVE 1 - -#define DEVICE_CAN 1 - -#define DEVICE_RTC 1 - -#define DEVICE_ETHERNET 1 - -#define DEVICE_PWMOUT 1 - -#define DEVICE_SEMIHOST 0 -#define DEVICE_LOCALFILESYSTEM 0 -#define DEVICE_ID_LENGTH 0 -#define DEVICE_MAC_OFFSET 0 - -#define DEVICE_SLEEP 1 - -#define DEVICE_DEBUG_AWARENESS 1 - -#define DEVICE_STDIO_MESSAGES 1 - -// should only enable one or the other, not both -#define DEVICE_ERROR_PATTERN 0 -#define DEVICE_ERROR_RED 1 - -#include "objects.h" - -#endif
--- a/TARGET_UBLOX_C027/gpio_object.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_t; - -static inline void gpio_write(gpio_t *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_t *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_UBLOX_C027/objects.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" -#include "gpio_object.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_s { - uint32_t port; - uint32_t pin; - uint32_t ch; -}; - -struct port_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_out; - __I uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct pwmout_s { - __IO uint32_t *MR; - PWMName pwm; -}; - -struct serial_s { - LPC_UART_TypeDef *uart; - int index; -}; - -struct analogin_s { - ADCName adc; -}; - -struct dac_s { - DACName dac; -}; - -struct can_s { - LPC_CAN_TypeDef *dev; - int index; -}; - -struct i2c_s { - LPC_I2C_TypeDef *i2c; -}; - -struct spi_s { - LPC_SSP_TypeDef *spi; -}; - -#ifdef __cplusplus -} -#endif - -#endif
--- a/TARGET_UBLOX_C027/reserved_pins.h Wed Mar 19 18:28:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -// List of reserved pins for C027 LPC1768 - -#ifndef RESERVED_PINS_H -#define RESERVED_PINS_H - -#define TARGET_RESERVED_PINS {P3_26} - -#endif
--- a/error.h Wed Mar 19 18:28:32 2014 +0000 +++ b/error.h Mon Apr 07 18:28:36 2014 +0100 @@ -53,14 +53,16 @@ * #endcode */ -#include <stdlib.h> -#include "device.h" +#include "toolchain.h" -#if DEVICE_STDIO_MESSAGES - #include <stdio.h> - #define error(...) (fprintf(stderr, __VA_ARGS__), exit(1)) -#else - #define error(...) (exit(1)) +#ifdef __cplusplus +extern "C" { +#endif + +void error(const char* format, ...); + +#ifdef __cplusplus +} #endif #endif